summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLincoln Ramsay <lincoln.ramsay@opengear.com>2020-11-23 21:40:43 +0000
committerJakub Kicinski <kuba@kernel.org>2020-11-24 10:59:17 -0800
commit9bd2702d292cb7b565b09e949d30288ab7a26d51 (patch)
treee2f700bef5ddf981a58bd53a4cfd55b955a4d782 /kernel
parentd549699048b4b5c22dd710455bcdb76966e55aa3 (diff)
downloadlinux-stable-9bd2702d292cb7b565b09e949d30288ab7a26d51.tar.gz
linux-stable-9bd2702d292cb7b565b09e949d30288ab7a26d51.tar.bz2
linux-stable-9bd2702d292cb7b565b09e949d30288ab7a26d51.zip
aquantia: Remove the build_skb path
When performing IPv6 forwarding, there is an expectation that SKBs will have some headroom. When forwarding a packet from the aquantia driver, this does not always happen, triggering a kernel warning. aq_ring.c has this code (edited slightly for brevity): if (buff->is_eop && buff->len <= AQ_CFG_RX_FRAME_MAX - AQ_SKB_ALIGN) { skb = build_skb(aq_buf_vaddr(&buff->rxdata), AQ_CFG_RX_FRAME_MAX); } else { skb = napi_alloc_skb(napi, AQ_CFG_RX_HDR_SIZE); There is a significant difference between the SKB produced by these 2 code paths. When napi_alloc_skb creates an SKB, there is a certain amount of headroom reserved. However, this is not done in the build_skb codepath. As the hardware buffer that build_skb is built around does not handle the presence of the SKB header, this code path is being removed and the napi_alloc_skb path will always be used. This code path does have to copy the packet header into the SKB, but it adds the packet data as a frag. Fixes: 018423e90bee ("net: ethernet: aquantia: Add ring support code") Signed-off-by: Lincoln Ramsay <lincoln.ramsay@opengear.com> Link: https://lore.kernel.org/r/MWHPR1001MB23184F3EAFA413E0D1910EC9E8FC0@MWHPR1001MB2318.namprd10.prod.outlook.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions