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

[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
...@@ -343,6 +343,12 @@ struct tcp_sock { ...@@ -343,6 +343,12 @@ struct tcp_sock {
__u32 seq; __u32 seq;
__u32 time; __u32 time;
} rcvq_space; } 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) static inline struct tcp_sock *tcp_sk(const struct sock *sk)
......
...@@ -114,8 +114,6 @@ struct inet_connection_sock { ...@@ -114,8 +114,6 @@ struct inet_connection_sock {
/* Information on the current probe. */ /* Information on the current probe. */
int probe_size; int probe_size;
__u32 probe_seq_start;
__u32 probe_seq_end;
} icsk_mtup; } icsk_mtup;
u32 icsk_ca_priv[16]; u32 icsk_ca_priv[16];
#define ICSK_CA_PRIV_SIZE (16 * sizeof(u32)) #define ICSK_CA_PRIV_SIZE (16 * sizeof(u32))
......
...@@ -2054,7 +2054,7 @@ tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una, ...@@ -2054,7 +2054,7 @@ tcp_fastretrans_alert(struct sock *sk, u32 prior_snd_una,
/* MTU probe failure: don't reduce cwnd */ /* MTU probe failure: don't reduce cwnd */
if (icsk->icsk_ca_state < TCP_CA_CWR && if (icsk->icsk_ca_state < TCP_CA_CWR &&
icsk->icsk_mtup.probe_size && 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); tcp_mtup_probe_failed(sk);
/* Restores the reduction we did in tcp_mtup_probe() */ /* Restores the reduction we did in tcp_mtup_probe() */
tp->snd_cwnd++; tp->snd_cwnd++;
...@@ -2284,7 +2284,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p) ...@@ -2284,7 +2284,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, __s32 *seq_rtt_p)
/* MTU probing checks */ /* MTU probing checks */
if (icsk->icsk_mtup.probe_size) { 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); tcp_mtup_probe_success(sk, skb);
} }
} }
......
...@@ -1238,8 +1238,8 @@ static int tcp_mtu_probe(struct sock *sk) ...@@ -1238,8 +1238,8 @@ static int tcp_mtu_probe(struct sock *sk)
update_send_head(sk, tp, nskb); update_send_head(sk, tp, nskb);
icsk->icsk_mtup.probe_size = tcp_mss_to_mtu(sk, nskb->len); icsk->icsk_mtup.probe_size = tcp_mss_to_mtu(sk, nskb->len);
icsk->icsk_mtup.probe_seq_start = TCP_SKB_CB(nskb)->seq; tp->mtu_probe.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_end = TCP_SKB_CB(nskb)->end_seq;
return 1; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment