mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-05 08:26:59 +00:00
[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: John Heffner <jheffner@psc.edu> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1d541ddd74
commit
0e7b13685f
4 changed files with 10 additions and 6 deletions
|
@ -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 {
|
||||||
|
|
||||||
/* 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,
|
||||||
/* 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)
|
||||||
|
|
||||||
/* 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)
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue