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

Commit 0e7b1368 authored by John Heffner's avatar John Heffner Committed by David S. Miller
Browse files

[TCP] mtu probing: move tcp-specific data out of inet_connection_sock



This moves some TCP-specific MTU probing state out of
inet_connection_sock back to tcp_sock.

Signed-off-by: default avatarJohn Heffner <jheffner@psc.edu>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1d541ddd
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -343,6 +343,12 @@ struct tcp_sock {
		__u32	seq;
		__u32	time;
	} rcvq_space;

/* TCP-specific MTU probe information. */
	struct {
		__u32		  probe_seq_start;
		__u32		  probe_seq_end;
	} mtu_probe;
};

static inline struct tcp_sock *tcp_sk(const struct sock *sk)
+0 −2
Original line number Diff line number Diff line
@@ -114,8 +114,6 @@ struct inet_connection_sock {

		/* Information on the current probe. */
		int		  probe_size;
		__u32		  probe_seq_start;
		__u32		  probe_seq_end;
	} icsk_mtup;
	u32			  icsk_ca_priv[16];
#define ICSK_CA_PRIV_SIZE	(16 * sizeof(u32))
+2 −2
Original line number Diff line number Diff line
@@ -2054,7 +2054,7 @@ tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una,
		/* MTU probe failure: don't reduce cwnd */
		if (icsk->icsk_ca_state < TCP_CA_CWR &&
		    icsk->icsk_mtup.probe_size &&
		    tp->snd_una == icsk->icsk_mtup.probe_seq_start) {
		    tp->snd_una == tp->mtu_probe.probe_seq_start) {
			tcp_mtup_probe_failed(sk);
			/* Restores the reduction we did in tcp_mtup_probe() */
			tp->snd_cwnd++;
@@ -2284,7 +2284,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p)

		/* MTU probing checks */
		if (icsk->icsk_mtup.probe_size) {
			if (!after(icsk->icsk_mtup.probe_seq_end, TCP_SKB_CB(skb)->end_seq)) {
			if (!after(tp->mtu_probe.probe_seq_end, TCP_SKB_CB(skb)->end_seq)) {
				tcp_mtup_probe_success(sk, skb);
			}
		}
+2 −2
Original line number Diff line number Diff line
@@ -1238,8 +1238,8 @@ static int tcp_mtu_probe(struct sock *sk)
		update_send_head(sk, tp, nskb);

		icsk->icsk_mtup.probe_size = tcp_mss_to_mtu(sk, nskb->len);
		icsk->icsk_mtup.probe_seq_start = TCP_SKB_CB(nskb)->seq;
		icsk->icsk_mtup.probe_seq_end = TCP_SKB_CB(nskb)->end_seq;
		tp->mtu_probe.probe_seq_start = TCP_SKB_CB(nskb)->seq;
		tp->mtu_probe.probe_seq_end = TCP_SKB_CB(nskb)->end_seq;

		return 1;
	}