Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 507d37cf authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

[CCID] Only call the HC insert_options methods when requested

parent 0ba7a3ba
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -433,6 +433,8 @@ struct dccp_sock {
	struct ccid			*dccps_hc_tx_ccid;
	struct dccp_options_received	dccps_options_received;
	enum dccp_role			dccps_role:2;
	__u8				dccps_hc_rx_insert_options:1;
	__u8				dccps_hc_tx_insert_options:1;
};
 
static inline struct dccp_sock *dccp_sk(const struct sock *sk)
+4 −1
Original line number Diff line number Diff line
@@ -358,10 +358,12 @@ static int ccid3_hc_tx_send_packet(struct sock *sk,
	}

	/* Can we send? if so add options and add to packet history */
	if (rc == 0)
	if (rc == 0) {
		dp->dccps_hc_tx_insert_options = 1;
		new_packet->dccphtx_ccval =
			DCCP_SKB_CB(skb)->dccpd_ccval =
				hctx->ccid3hctx_last_win_count;
	}
out:
	return rc;
}
@@ -811,6 +813,7 @@ static void ccid3_hc_rx_send_feedback(struct sock *sk)
		hcrx->ccid3hcrx_pinv = ~0;
	else
		hcrx->ccid3hcrx_pinv = 1000000 / hcrx->ccid3hcrx_p;
	dp->dccps_hc_rx_insert_options = 1;
	dccp_send_ack(sk);
}

+8 −3
Original line number Diff line number Diff line
@@ -505,13 +505,18 @@ void dccp_insert_options(struct sock *sk, struct sk_buff *skb)
		    (dp->dccps_hc_rx_ackpkts->dccpap_buf_ackno !=
		     DCCP_MAX_SEQNO + 1))
			dccp_insert_option_ack_vector(sk, skb);

		if (dp->dccps_timestamp_echo != 0)
			dccp_insert_option_timestamp_echo(sk, skb);
	}

	if (dp->dccps_hc_rx_insert_options) {
		ccid_hc_rx_insert_options(dp->dccps_hc_rx_ccid, sk, skb);
		dp->dccps_hc_rx_insert_options = 0;
	}
	if (dp->dccps_hc_tx_insert_options) {
		ccid_hc_tx_insert_options(dp->dccps_hc_tx_ccid, sk, skb);
		dp->dccps_hc_tx_insert_options = 0;
	}

	/* XXX: insert other options when appropriate */