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

Signed-off-by: John Heffner <[EMAIL PROTECTED]>


diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index f2bb239..542d395 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -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)
diff --git a/include/net/inet_connection_sock.h 
b/include/net/inet_connection_sock.h
index 103e9a1..c0a4d3c 100644
--- a/include/net/inet_connection_sock.h
+++ b/include/net/inet_connection_sock.h
@@ -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))
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 7b1a695..a85969b 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2053,7 +2053,7 @@ tcp_fastretrans_alert(struct sock *sk, u
                /* 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++;
@@ -2283,7 +2283,7 @@ static int tcp_clean_rtx_queue(struct so
                
                /* 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);
                        }
                }
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index bd7e996..33591cf 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1234,8 +1234,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;
        }

Reply via email to