diff options
author | Lincoln Ramsay <lincoln.ramsay@opengear.com> | 2020-11-23 21:40:43 +0000 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-11-24 10:59:17 -0800 |
commit | 9bd2702d292cb7b565b09e949d30288ab7a26d51 (patch) | |
tree | e2f700bef5ddf981a58bd53a4cfd55b955a4d782 /kernel | |
parent | d549699048b4b5c22dd710455bcdb76966e55aa3 (diff) | |
download | linux-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