IPoIB: fix skb truesize underestimatiom
authorEric Dumazet <edumazet@google.com>
Tue, 10 Jul 2012 10:03:41 +0000 (10:03 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Jul 2012 06:33:12 +0000 (23:33 -0700)
commitb28ba72665356438e3a6e3be365c3c3071496840
tree2cf9ff84993f821cd4819db7dd609db1ccbf38f6
parentefc73f4bbc238d4f579fb612c04c8e1dd8a82979
IPoIB: fix skb truesize underestimatiom

Or Gerlitz reported triggering of WARN_ON_ONCE(delta < len); in
skb_try_coalesce()
This warning tracks drivers that incorrectly set skb->truesize

IPoIB indeed allocates a full page to store a fragment, but only
accounts in skb->truesize the used part of the page (frame length)

This patch fixes skb truesize underestimation, and
also fixes a performance issue, because RX skbs have not enough tailroom
to allow IP and TCP stacks to pull their header in skb linear part
without an expensive call to pskb_expand_head()

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
Cc: Erez Shitrit <erezsh@mellanox.com>
Cc: Shlomo Pongartz <shlomop@mellanox.com>
Cc: Roland Dreier <roland@purestorage.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/ulp/ipoib/ipoib_ib.c