Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2205088/?format=api
{ "id": 2205088, "url": "http://patchwork.ozlabs.org/api/patches/2205088/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260304160345.1340940-6-larysa.zaremba@intel.com/", "project": { "id": 46, "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api", "name": "Intel Wired Ethernet development", "link_name": "intel-wired-lan", "list_id": "intel-wired-lan.osuosl.org", "list_email": "intel-wired-lan@osuosl.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260304160345.1340940-6-larysa.zaremba@intel.com>", "list_archive_url": null, "date": "2026-03-04T16:03:37", "name": "[iwl-next,v3,05/10] ixgbevf: support XDP multi-buffer on Rx path", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "901f0de295f58e97ea908a734bc251e3d2dd3d95", "submitter": { "id": 84900, "url": "http://patchwork.ozlabs.org/api/people/84900/?format=api", "name": "Larysa Zaremba", "email": "larysa.zaremba@intel.com" }, "delegate": { "id": 109701, "url": "http://patchwork.ozlabs.org/api/users/109701/?format=api", "username": "anguy11", "first_name": "Anthony", "last_name": "Nguyen", "email": "anthony.l.nguyen@intel.com" }, "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20260304160345.1340940-6-larysa.zaremba@intel.com/mbox/", "series": [ { "id": 494412, "url": "http://patchwork.ozlabs.org/api/series/494412/?format=api", "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=494412", "date": "2026-03-04T16:03:32", "name": "libeth and full XDP for ixgbevf", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/494412/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2205088/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2205088/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<intel-wired-lan-bounces@osuosl.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "intel-wired-lan@lists.osuosl.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=osuosl.org header.i=@osuosl.org header.a=rsa-sha256\n header.s=default header.b=mBTVF3vX;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fQywb2n8xz1xws\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 05 Mar 2026 03:36:15 +1100 (AEDT)", "from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id B4BDE81362;\n\tWed, 4 Mar 2026 16:36:11 +0000 (UTC)", "from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id YOc_dyOcnbxz; Wed, 4 Mar 2026 16:36:10 +0000 (UTC)", "from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id DAE0E81341;\n\tWed, 4 Mar 2026 16:36:10 +0000 (UTC)", "from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n by lists1.osuosl.org (Postfix) with ESMTP id CB7701EB\n for <intel-wired-lan@lists.osuosl.org>; Wed, 4 Mar 2026 16:36:08 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n by smtp3.osuosl.org (Postfix) with ESMTP id B1F8860870\n for <intel-wired-lan@lists.osuosl.org>; Wed, 4 Mar 2026 16:36:08 +0000 (UTC)", "from smtp3.osuosl.org ([127.0.0.1])\n by localhost (smtp3.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id uBtmeQy_L1jx for <intel-wired-lan@lists.osuosl.org>;\n Wed, 4 Mar 2026 16:36:08 +0000 (UTC)", "from mgamail.intel.com (mgamail.intel.com [192.198.163.18])\n by smtp3.osuosl.org (Postfix) with ESMTPS id B2EB66086D\n for <intel-wired-lan@lists.osuosl.org>; Wed, 4 Mar 2026 16:36:07 +0000 (UTC)", "from fmviesa002.fm.intel.com ([10.60.135.142])\n by fmvoesa112.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 04 Mar 2026 08:36:06 -0800", "from irvmail002.ir.intel.com ([10.43.11.120])\n by fmviesa002.fm.intel.com with ESMTP; 04 Mar 2026 08:36:01 -0800", "from lincoln.igk.intel.com (lincoln.igk.intel.com [10.102.21.235])\n by irvmail002.ir.intel.com (Postfix) with ESMTP id 8B336312C7;\n Wed, 4 Mar 2026 16:35:59 +0000 (GMT)" ], "X-Virus-Scanned": [ "amavis at osuosl.org", "amavis at osuosl.org" ], "X-Comment": "SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=intel-wired-lan-bounces@osuosl.org;\n receiver=<UNKNOWN> ", "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 smtp1.osuosl.org DAE0E81341", "OpenDKIM Filter v2.11.0 smtp3.osuosl.org B2EB66086D" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=osuosl.org;\n\ts=default; t=1772642170;\n\tbh=Eeci4/NjcuJO1xnb51AOgg4Su0a2a2qP5jo787MASMs=;\n\th=From:To:Cc:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t From;\n\tb=mBTVF3vXNhbQ35WAPFshsHSGD7QsNbjuQShnX252WCrjGH9GbbBR3I17Yi8WcBCdB\n\t SSRDm1srqeVpcile10X/s1k5R/Ewa4MTRanWhUePnb3rqMAlncTZql0Zj1xGtr0S2P\n\t SHzDGOv0zngoO9WAgmLJGmY4mq/7L+8CpqLrbsTh/4bMou7/G7ZOXlHxNty+MSFv9d\n\t Ud+iwB9H/cgESVY20ETjHABUMpNGtEyLaKpUZIEw6UNefLoOI00Uprh4J2TvNyL41n\n\t KZSdCoax52I2S5Nuu9bs+soq0JRjIdLmPsrdGv0zm6v2lyMhQ7xF7krI8bG7tp0wOG\n\t mbx1L5IR42Jpw==", "Received-SPF": "Pass (mailfrom) identity=mailfrom; client-ip=192.198.163.18;\n helo=mgamail.intel.com; envelope-from=larysa.zaremba@intel.com;\n receiver=<UNKNOWN>", "DMARC-Filter": "OpenDMARC Filter v1.4.2 smtp3.osuosl.org B2EB66086D", "X-CSE-ConnectionGUID": [ "t5Ir4OkuS+SMwxYpXgFbtA==", "e9NrnV7lSoS+nIqr1WzVkQ==" ], "X-CSE-MsgGUID": [ "1Q8KFMkMRgKlMpBGWeSjHw==", "L56cQVvBTNGKibBzxCCTSg==" ], "X-IronPort-AV": [ "E=McAfee;i=\"6800,10657,11719\"; a=\"72906374\"", "E=Sophos;i=\"6.21,324,1763452800\"; d=\"scan'208\";a=\"72906374\"", "E=Sophos;i=\"6.21,324,1763452800\"; d=\"scan'208\";a=\"241404952\"" ], "X-ExtLoop1": "1", "From": "Larysa Zaremba <larysa.zaremba@intel.com>", "To": "Tony Nguyen <anthony.l.nguyen@intel.com>, intel-wired-lan@lists.osuosl.org", "Cc": "Larysa Zaremba <larysa.zaremba@intel.com>,\n Przemek Kitszel <przemyslaw.kitszel@intel.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>,\n \"David S. Miller\" <davem@davemloft.net>,\n Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>,\n Paolo Abeni <pabeni@redhat.com>,\n Alexander Lobakin <aleksander.lobakin@intel.com>,\n Simon Horman <horms@kernel.org>, Alexei Starovoitov <ast@kernel.org>,\n Daniel Borkmann <daniel@iogearbox.net>,\n Jesper Dangaard Brouer <hawk@kernel.org>,\n John Fastabend <john.fastabend@gmail.com>,\n Stanislav Fomichev <sdf@fomichev.me>,\n Aleksandr Loktionov <aleksandr.loktionov@intel.com>,\n Natalia Wochtman <natalia.wochtman@intel.com>, netdev@vger.kernel.org,\n linux-kernel@vger.kernel.org, bpf@vger.kernel.org", "Date": "Wed, 4 Mar 2026 17:03:37 +0100", "Message-ID": "<20260304160345.1340940-6-larysa.zaremba@intel.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260304160345.1340940-1-larysa.zaremba@intel.com>", "References": "<20260304160345.1340940-1-larysa.zaremba@intel.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Mailman-Original-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1772642168; x=1804178168;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=pyIxAVU4+7JwM6Zbitl8fZ5LMUpwvLy2X0rNevCd3u4=;\n b=K4qs3NQZxMiBKP5pyyVKZae+kyi1YB+4oouMLEnKxftJrdjWuQ5010hE\n EWYAWWsq+Fax/fD6uMSrMBLA+cpe+XC5FOk7W1M+AHF0GxAE/clDatwj1\n GrqycXEWeqYdXT+HYUqasik3aPRWOqgn1P1LPaWbWdz6MZRCnG3UeNffS\n cSZmDv+QgSf7zbnOU81FjGZp9xxedBPdQ5wtj6RwR5sijlun4+4FeKQtP\n OKmyPHzUk+0iLQlq1umiI6d/QBot4BsgwioEqOeP9B7Lqx58XYHD7E2Ra\n H4TfGMYH9sepffhK6J50UZ3ohSwqdQvxlaYEMLjSRHiUPbTF2LFW42JNj\n Q==;", "X-Mailman-Original-Authentication-Results": [ "smtp3.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=intel.com", "smtp3.osuosl.org;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.a=rsa-sha256 header.s=Intel header.b=K4qs3NQZ" ], "Subject": "[Intel-wired-lan] [PATCH iwl-next v3 05/10] ixgbevf: support XDP\n multi-buffer on Rx path", "X-BeenThere": "intel-wired-lan@osuosl.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n <intel-wired-lan.osuosl.org>", "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>", "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>", "List-Post": "<mailto:intel-wired-lan@osuosl.org>", "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>", "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>,\n <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>", "Errors-To": "intel-wired-lan-bounces@osuosl.org", "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>" }, "content": "Implement XDP support for received fragmented packets, this requires using\nsome helpers from libeth_xdp.\n\nReviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>\nSigned-off-by: Larysa Zaremba <larysa.zaremba@intel.com>\n---\n drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 3 +-\n .../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 90 +++++++------------\n 2 files changed, 32 insertions(+), 61 deletions(-)", "diff": "diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h\nindex ebf771f0caa4..2626af039361 100644\n--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h\n+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h\n@@ -11,6 +11,7 @@\n #include <linux/netdevice.h>\n #include <linux/if_vlan.h>\n #include <linux/u64_stats_sync.h>\n+#include <net/libeth/types.h>\n #include <net/xdp.h>\n \n #include \"vf.h\"\n@@ -105,7 +106,6 @@ struct ixgbevf_ring {\n \tstruct xdp_rxq_info xdp_rxq;\n \tu64 hw_csum_rx_error;\n \tu8 __iomem *tail;\n-\tstruct sk_buff *skb;\n \n \t/* holds the special value that gets the hardware register offset\n \t * associated with this ring, which is different for DCB and RSS modes\n@@ -113,6 +113,7 @@ struct ixgbevf_ring {\n \tu16 reg_idx;\n \tint queue_index; /* needed for multiqueue queue management */\n \tu32 rx_buf_len;\n+\tstruct libeth_xdp_buff_stash xdp_stash;\n } ____cacheline_internodealigned_in_smp;\n \n /* How many Rx Buffers do we bundle into one write to the hardware ? */\ndiff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c\nindex 4619f2bea1ab..27cab542d3bb 100644\n--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c\n+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c\n@@ -84,6 +84,7 @@ MODULE_DEVICE_TABLE(pci, ixgbevf_pci_tbl);\n \n MODULE_DESCRIPTION(\"Intel(R) 10 Gigabit Virtual Function Network Driver\");\n MODULE_IMPORT_NS(\"LIBETH\");\n+MODULE_IMPORT_NS(\"LIBETH_XDP\");\n MODULE_LICENSE(\"GPL v2\");\n \n #define DEFAULT_MSG_ENABLE (NETIF_MSG_DRV|NETIF_MSG_PROBE|NETIF_MSG_LINK)\n@@ -647,26 +648,6 @@ static bool ixgbevf_cleanup_headers(struct ixgbevf_ring *rx_ring,\n \treturn false;\n }\n \n-/**\n- * ixgbevf_add_rx_frag - Add contents of Rx buffer to sk_buff\n- * @rx_ring: rx descriptor ring to transact packets on\n- * @rx_buffer: buffer containing page to add\n- * @skb: sk_buff to place the data into\n- * @size: size of buffer to be added\n- *\n- * This function will add the data contained in rx_buffer->page to the skb.\n- **/\n-static void ixgbevf_add_rx_frag(const struct libeth_fqe *rx_buffer,\n-\t\t\t\tstruct sk_buff *skb,\n-\t\t\t\tunsigned int size)\n-{\n-\tu32 hr = netmem_get_pp(rx_buffer->netmem)->p.offset;\n-\n-\tskb_add_rx_frag_netmem(skb, skb_shinfo(skb)->nr_frags,\n-\t\t\t rx_buffer->netmem, rx_buffer->offset + hr,\n-\t\t\t size, rx_buffer->truesize);\n-}\n-\n static inline void ixgbevf_irq_enable_queues(struct ixgbevf_adapter *adapter,\n \t\t\t\t\t u32 qmask)\n {\n@@ -803,16 +784,16 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,\n \tunsigned int total_rx_bytes = 0, total_rx_packets = 0;\n \tstruct ixgbevf_adapter *adapter = q_vector->adapter;\n \tu16 cleaned_count = ixgbevf_desc_unused(rx_ring);\n-\tstruct sk_buff *skb = rx_ring->skb;\n \tLIBETH_XDP_ONSTACK_BUFF(xdp);\n \tbool xdp_xmit = false;\n \tint xdp_res = 0;\n \n-\txdp->base.rxq = &rx_ring->xdp_rxq;\n+\tlibeth_xdp_init_buff(xdp, &rx_ring->xdp_stash, &rx_ring->xdp_rxq);\n \n \twhile (likely(total_rx_packets < budget)) {\n \t\tunion ixgbe_adv_rx_desc *rx_desc;\n \t\tstruct libeth_fqe *rx_buffer;\n+\t\tstruct sk_buff *skb;\n \t\tunsigned int size;\n \n \t\t/* return some buffers to hardware, one at a time is too slow */\n@@ -833,42 +814,34 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,\n \t\trmb();\n \n \t\trx_buffer = &rx_ring->rx_fqes[rx_ring->next_to_clean];\n-\t\tlibeth_rx_sync_for_cpu(rx_buffer, size);\n+\t\tlibeth_xdp_process_buff(xdp, rx_buffer, size);\n \n-\t\t/* retrieve a buffer from the ring */\n-\t\tif (!skb) {\n-\t\t\tlibeth_xdp_prepare_buff(xdp, rx_buffer, size);\n-\t\t\tprefetch(xdp->data);\n-\t\t\txdp_res = ixgbevf_run_xdp(adapter, rx_ring, xdp);\n-\t\t}\n+\t\tcleaned_count++;\n+\t\t/* fetch next buffer in frame if non-eop */\n+\t\tif (ixgbevf_is_non_eop(rx_ring, rx_desc))\n+\t\t\tcontinue;\n \n+\t\txdp_res = ixgbevf_run_xdp(adapter, rx_ring, xdp);\n \t\tif (xdp_res) {\n \t\t\tif (xdp_res == IXGBEVF_XDP_TX)\n \t\t\t\txdp_xmit = true;\n \n \t\t\ttotal_rx_packets++;\n-\t\t\ttotal_rx_bytes += size;\n-\t\t} else if (skb) {\n-\t\t\tixgbevf_add_rx_frag(rx_buffer, skb, size);\n-\t\t} else {\n-\t\t\tskb = xdp_build_skb_from_buff(&xdp->base);\n+\t\t\ttotal_rx_bytes += xdp_get_buff_len(&xdp->base);\n+\t\t\tcontinue;\n \t\t}\n \n+\t\tskb = xdp_build_skb_from_buff(&xdp->base);\n+\t\txdp->data = NULL;\n+\n \t\t/* exit if we failed to retrieve a buffer */\n-\t\tif (unlikely(!xdp_res && !skb)) {\n+\t\tif (unlikely(!skb)) {\n \t\t\trx_ring->rx_stats.alloc_rx_buff_failed++;\n \t\t\tbreak;\n \t\t}\n \n-\t\tcleaned_count++;\n-\n-\t\t/* fetch next buffer in frame if non-eop */\n-\t\tif (ixgbevf_is_non_eop(rx_ring, rx_desc))\n-\t\t\tcontinue;\n-\n \t\t/* verify the packet layout is correct */\n-\t\tif (xdp_res ||\n-\t\t unlikely(ixgbevf_cleanup_headers(rx_ring, rx_desc, skb))) {\n+\t\tif (unlikely(ixgbevf_cleanup_headers(rx_ring, rx_desc, skb))) {\n \t\t\tskb = NULL;\n \t\t\tcontinue;\n \t\t}\n@@ -892,13 +865,10 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,\n \t\ttotal_rx_packets++;\n \n \t\tixgbevf_rx_skb(q_vector, skb);\n-\n-\t\t/* reset skb pointer */\n-\t\tskb = NULL;\n \t}\n \n \t/* place incomplete frames back on ring for completion */\n-\trx_ring->skb = skb;\n+\tlibeth_xdp_save_buff(&rx_ring->xdp_stash, xdp);\n \n \tif (xdp_xmit) {\n \t\tstruct ixgbevf_ring *xdp_ring =\n@@ -2018,10 +1988,7 @@ void ixgbevf_up(struct ixgbevf_adapter *adapter)\n static void ixgbevf_clean_rx_ring(struct ixgbevf_ring *rx_ring)\n {\n \t/* Free Rx ring sk_buff */\n-\tif (rx_ring->skb) {\n-\t\tdev_kfree_skb(rx_ring->skb);\n-\t\trx_ring->skb = NULL;\n-\t}\n+\tlibeth_xdp_return_stash(&rx_ring->xdp_stash);\n \n \t/* Free all the Rx ring pages */\n \tfor (u32 i = rx_ring->next_to_clean; i != rx_ring->next_to_use; ) {\n@@ -4103,16 +4070,19 @@ ixgbevf_features_check(struct sk_buff *skb, struct net_device *dev,\n \treturn features;\n }\n \n-static int ixgbevf_xdp_setup(struct net_device *dev, struct bpf_prog *prog)\n+static int ixgbevf_xdp_setup(struct net_device *dev, struct bpf_prog *prog,\n+\t\t\t struct netlink_ext_ack *extack)\n {\n-\tint i, frame_size = dev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN;\n+\tu32 frame_size = READ_ONCE(dev->mtu) + LIBETH_RX_LL_LEN;\n \tstruct ixgbevf_adapter *adapter = netdev_priv(dev);\n \tstruct bpf_prog *old_prog;\n+\tbool requires_mbuf;\n \n-\t/* verify ixgbevf ring attributes are sufficient for XDP */\n-\tfor (i = 0; i < adapter->num_rx_queues; i++) {\n-\t\tif (frame_size > IXGBEVF_RXBUFFER_3072)\n-\t\t\treturn -EINVAL;\n+\trequires_mbuf = frame_size > IXGBEVF_RX_PAGE_LEN(LIBETH_XDP_HEADROOM);\n+\tif (prog && !prog->aux->xdp_has_frags && requires_mbuf) {\n+\t\tNL_SET_ERR_MSG_MOD(extack,\n+\t\t\t\t \"Configured MTU requires non-linear frames and XDP prog does not support frags\");\n+\t\treturn -EOPNOTSUPP;\n \t}\n \n \told_prog = xchg(&adapter->xdp_prog, prog);\n@@ -4132,7 +4102,7 @@ static int ixgbevf_xdp_setup(struct net_device *dev, struct bpf_prog *prog)\n \t\tif (netif_running(dev))\n \t\t\tixgbevf_open(dev);\n \t} else {\n-\t\tfor (i = 0; i < adapter->num_rx_queues; i++)\n+\t\tfor (int i = 0; i < adapter->num_rx_queues; i++)\n \t\t\txchg(&adapter->rx_ring[i]->xdp_prog, adapter->xdp_prog);\n \t}\n \n@@ -4146,7 +4116,7 @@ static int ixgbevf_xdp(struct net_device *dev, struct netdev_bpf *xdp)\n {\n \tswitch (xdp->command) {\n \tcase XDP_SETUP_PROG:\n-\t\treturn ixgbevf_xdp_setup(dev, xdp->prog);\n+\t\treturn ixgbevf_xdp_setup(dev, xdp->prog, xdp->extack);\n \tdefault:\n \t\treturn -EINVAL;\n \t}\n@@ -4298,7 +4268,7 @@ static int ixgbevf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)\n \t\t\t NETIF_F_HW_VLAN_CTAG_TX;\n \n \tnetdev->priv_flags |= IFF_UNICAST_FLT;\n-\tnetdev->xdp_features = NETDEV_XDP_ACT_BASIC;\n+\tnetdev->xdp_features = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_RX_SG;\n \n \t/* MTU range: 68 - 1504 or 9710 */\n \tnetdev->min_mtu = ETH_MIN_MTU;\n", "prefixes": [ "iwl-next", "v3", "05/10" ] }