Message ID | 1372852942.4979.67.camel@edumazet-glaptop |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, Jul 3, 2013 at 5:02 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote: > From: Eric Dumazet <edumazet@google.com> > > commit eea86af6b1e18d ("net: sock: adapt SOCK_MIN_RCVBUF and > SOCK_MIN_SNDBUF") forgot the sk_buff alignment taken into account > in __alloc_skb() : skb->truesize = SKB_TRUESIZE(size); > > While above commit fixed the sender issue, the receiver is still > dropping the second packet (on loopback device), because the receiver > socket can not really hold two skbs : > First packet truesize already is above sk_rcvbuf, so even TCP coalescing > cannot help. > > On a typical 64bit build, each tcp skb truesize is 2304, instead of 2272 > > Signed-off-by: Eric Dumazet <edumazet@google.com> > Cc: Daniel Borkmann <dborkman@redhat.com> > Cc: Neal Cardwell <ncardwell@google.com> > --- Acked-by: Neal Cardwell <ncardwell@google.com> Tested-by: Neal Cardwell <ncardwell@google.com> neal -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Wed, 03 Jul 2013 05:02:22 -0700 > From: Eric Dumazet <edumazet@google.com> > > commit eea86af6b1e18d ("net: sock: adapt SOCK_MIN_RCVBUF and > SOCK_MIN_SNDBUF") forgot the sk_buff alignment taken into account > in __alloc_skb() : skb->truesize = SKB_TRUESIZE(size); > > While above commit fixed the sender issue, the receiver is still > dropping the second packet (on loopback device), because the receiver > socket can not really hold two skbs : > First packet truesize already is above sk_rcvbuf, so even TCP coalescing > cannot help. > > On a typical 64bit build, each tcp skb truesize is 2304, instead of 2272 > > Signed-off-by: Eric Dumazet <edumazet@google.com> Applied. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/include/net/sock.h b/include/net/sock.h index ea6206c..95a5a2c 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -2052,7 +2052,7 @@ static inline void sk_wake_async(struct sock *sk, int how, int band) * Note: for send buffers, TCP works better if we can build two skbs at * minimum. */ -#define TCP_SKB_MIN_TRUESIZE (2048 + sizeof(struct sk_buff)) +#define TCP_SKB_MIN_TRUESIZE (2048 + SKB_DATA_ALIGN(sizeof(struct sk_buff))) #define SOCK_MIN_SNDBUF (TCP_SKB_MIN_TRUESIZE * 2) #define SOCK_MIN_RCVBUF TCP_SKB_MIN_TRUESIZE