Commit 0be534f5 authored by Paolo Abeni's avatar Paolo Abeni Committed by David S. Miller
Browse files

mptcp: rename fourth ack field



The name is misleading, it actually tracks the 'fully established'
status.

Reviewed-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 79e28519
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -259,11 +259,11 @@ static bool mptcp_established_options_mp(struct sock *sk, struct sk_buff *skb,
	struct mptcp_ext *mpext;
	unsigned int data_len;

	pr_debug("subflow=%p fourth_ack=%d seq=%x:%x remaining=%d", subflow,
		 subflow->fourth_ack, subflow->snd_isn,
	pr_debug("subflow=%p fully established=%d seq=%x:%x remaining=%d",
		 subflow, subflow->fully_established, subflow->snd_isn,
		 skb ? TCP_SKB_CB(skb)->seq : 0, remaining);

	if (subflow->mp_capable && !subflow->fourth_ack && skb &&
	if (subflow->mp_capable && !subflow->fully_established && skb &&
	    subflow->snd_isn == TCP_SKB_CB(skb)->seq) {
		/* When skb is not available, we better over-estimate the
		 * emitted options len. A full DSS option is longer than
@@ -429,19 +429,19 @@ bool mptcp_synack_options(const struct request_sock *req, unsigned int *size,
	return false;
}

static bool check_fourth_ack(struct mptcp_subflow_context *subflow,
static bool check_fully_established(struct mptcp_subflow_context *subflow,
				    struct sk_buff *skb,
				    struct mptcp_options_received *mp_opt)
{
	/* here we can process OoO, in-window pkts, only in-sequence 4th ack
	 * are relevant
	 */
	if (likely(subflow->fourth_ack ||
	if (likely(subflow->fully_established ||
		   TCP_SKB_CB(skb)->seq != subflow->ssn_offset + 1))
		return true;

	if (mp_opt->use_ack)
		subflow->fourth_ack = 1;
		subflow->fully_established = 1;

	if (subflow->can_ack)
		return true;
@@ -467,7 +467,7 @@ void mptcp_incoming_options(struct sock *sk, struct sk_buff *skb,
	struct mptcp_ext *mpext;

	mp_opt = &opt_rx->mptcp;
	if (!check_fourth_ack(subflow, skb, mp_opt))
	if (!check_fully_established(subflow, skb, mp_opt))
		return;

	if (!mp_opt->dss)
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ struct mptcp_subflow_context {
	u32	map_data_len;
	u32	request_mptcp : 1,  /* send MP_CAPABLE */
		mp_capable : 1,	    /* remote is MPTCP capable */
		fourth_ack : 1,	    /* send initial DSS */
		fully_established : 1,	    /* path validated */
		conn_finished : 1,
		map_valid : 1,
		mpc_map : 1,
+1 −1
Original line number Diff line number Diff line
@@ -802,7 +802,7 @@ static void subflow_ulp_clone(const struct request_sock *req,
	new_ctx->tcp_sock = newsk;

	new_ctx->mp_capable = 1;
	new_ctx->fourth_ack = subflow_req->remote_key_valid;
	new_ctx->fully_established = subflow_req->remote_key_valid;
	new_ctx->can_ack = subflow_req->remote_key_valid;
	new_ctx->remote_key = subflow_req->remote_key;
	new_ctx->local_key = subflow_req->local_key;