Message ID | 1486042270.13103.26.camel@edumazet-glaptop3.roam.corp.google.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 2017-02-02 at 05:31 -0800, Eric Dumazet wrote: > Anyway, I suspect the test is simply buggy ;) > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index 41dcbd568cbe2403f2a9e659669afe462a42e228..5394a39fcce964a7fe7075b1531a8a1e05550a54 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -164,7 +164,7 @@ static void tcp_measure_rcv_mss(struct sock *sk, const struct sk_buff *skb) > if (len >= icsk->icsk_ack.rcv_mss) { > icsk->icsk_ack.rcv_mss = min_t(unsigned int, len, > tcp_sk(sk)->advmss); > - if (unlikely(icsk->icsk_ack.rcv_mss != len)) > + if (unlikely(icsk->icsk_ack.rcv_mss != len && skb_is_gso(skb))) > tcp_gro_dev_warn(sk, skb); > } else { > /* Otherwise, we make more careful check taking into account, This wont really help. Our tcp_sk(sk)->advmss can be lower than the MSS used by the remote peer. ip ro add .... advmss 512 So the test is not universal.
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 41dcbd568cbe2403f2a9e659669afe462a42e228..5394a39fcce964a7fe7075b1531a8a1e05550a54 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -164,7 +164,7 @@ static void tcp_measure_rcv_mss(struct sock *sk, const struct sk_buff *skb) if (len >= icsk->icsk_ack.rcv_mss) { icsk->icsk_ack.rcv_mss = min_t(unsigned int, len, tcp_sk(sk)->advmss); - if (unlikely(icsk->icsk_ack.rcv_mss != len)) + if (unlikely(icsk->icsk_ack.rcv_mss != len && skb_is_gso(skb))) tcp_gro_dev_warn(sk, skb); } else { /* Otherwise, we make more careful check taking into account,