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.



Reply via email to