From patchwork Mon Nov 4 02:29:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147888 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id F277745C57; Mon, 4 Nov 2024 03:07:21 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C71E640A72; Mon, 4 Nov 2024 03:07:08 +0100 (CET) Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by mails.dpdk.org (Postfix) with ESMTP id CCA134021F; Mon, 4 Nov 2024 03:07:02 +0100 (CET) X-QQ-mid: bizesmtp91t1730686017tzp0see1 X-QQ-Originating-IP: BC8oYEk1RZjHCy/kfkwbX6DTfdX51JpXQs4ZzdscpGc= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:06:56 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14898314101884142409 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 01/13] net/txgbe: fix swfw mbox failure Date: Mon, 4 Nov 2024 10:29:55 +0800 Message-Id: <20241104023007.782475-2-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NtSAiPg0gWU5C/+MDJ2UDRbIgQpSJ+F2jHCBv1zfsG6gmgjuIVi5++3r X86PTELAeOi6w8FtA7xbn4iNWoreh7oTOUe5r+mTVuIM+ZUAA1RYHycc4vSSretHjc5l5rL LyqEebvL5SfvLTz8qqTIgFwkKHSXPfUVXzFQlb4oyMzQPyhyLH7EQeVqKhV7rVvZJStEg9P uEEOx87StwBB76gBO9wYIZfDfR8dvIngz0XtTVsJgIyI6j7SLxXCK54T70HdiCHXUQscIQ3 M7Qyo1Ki63o4k5eglyvl26ICOTGcHiqWxNXchWyU67koS7zAjUCzZp9mJSn6wrYjKlm6g+7 FWNOQGgyB/F6+xa1KAUyxuR7CO2/Lcr3/5/k4jPOgQDVjST9ql6ilS0Ob7UAW/pdWBkkEUz DGOyk2TedmqYJHv3TvS7v8euIlGAqhgqWqgKrWl/3chaDMRvD0O+ukoW6gdHjLOrLSwiIER EA/MsdVhG2Y1qlM71XljvZjb4ADxZCxXFHJbKciKR+s2/Ro1ddIH9+/AGfnXXaOoU/BpzQo V/1rzwyrgDteIVWlpc+qV9EQYwWjU6Ew3VcLqodd8C427KaQ6iYGYrdFIfdi2yUHqlnacT2 4Rt4JrCM6wWz0wvuvkSLccNwm5o4s9WmCD50Z0v7d1MUVKnOVMpGsQSSEkoi78/U/alGq3q 0H9nIJM1ZpXzvHsKaMUHyeXHvvU6bob1CtozGumIEle6Sh5sAM6X9tiozlRrhMuDFW2lcC8 Hr/Eq8neDLZTsot6NhBjiv5oPIXdwUcs5k/NjO8CwN/qYq/Vos6w5CYG46vXWUTz7eTz/Rp V6Kiiy839ULfPmZmfmZ5jQWNG+5bnSwSgo1Hh6I+02ViUwvEvSCZbFrRubn0lsMVRv/Ns1I IFRG9GeKN49e5xZ7EX53KIPQHlWorBCZTWoFFDSWArkSz2ylXDL0QRqmnBx1E38TEPb219e PDIkWT5XrVb8rbQ== X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There is a unknown bug that the register TXGBE_MNGMBX cannot be written in the loop, when DPDK is built with GCC high version. Access any register before write TXGBE_MNGMBX can fix it. Bugzilla ID: 1531 Fixes: 35c90ecccfd4 ("net/txgbe: add EEPROM functions") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/base/txgbe_mng.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/txgbe/base/txgbe_mng.c b/drivers/net/txgbe/base/txgbe_mng.c index 20db982891..7dc8f21183 100644 --- a/drivers/net/txgbe/base/txgbe_mng.c +++ b/drivers/net/txgbe/base/txgbe_mng.c @@ -58,6 +58,7 @@ txgbe_hic_unlocked(struct txgbe_hw *hw, u32 *buffer, u32 length, u32 timeout) dword_len = length >> 2; + txgbe_flush(hw); /* The device driver writes the relevant command block * into the ram area. */ From patchwork Mon Nov 4 02:29:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147886 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BB5E745C2A; Mon, 4 Nov 2024 03:07:05 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A6185406A2; Mon, 4 Nov 2024 03:07:05 +0100 (CET) Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by mails.dpdk.org (Postfix) with ESMTP id EE7354068E; Mon, 4 Nov 2024 03:07:01 +0100 (CET) X-QQ-mid: bizesmtp91t1730686018tu9ezqbp X-QQ-Originating-IP: 0D7KSTcsBpL04s1b8FrIesz/mBs1gFyLqzryv1zOfl4= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:06:57 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 2683516194218546617 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 02/13] net/txgbe: fix VF-PF mbox interrupt Date: Mon, 4 Nov 2024 10:29:56 +0800 Message-Id: <20241104023007.782475-3-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: M182XWJxg1fqXAY8pIqmiIJHp3H7yuEbb1fvIJH+Got1O/67TVBRk6/4 ahZymdyw7ksU8v2RzdwrPHYvh7AP1iYava6PNQlq6QQhlf2/YEJF1LwruXm97tjh/XmcdVu w2SJ7MDC3oRJ+WpziRGsYyo+FoYhuM2uVm5JOQBKKJV+UIXW+76bz11DsQTEmkv7go/3yU9 mxl4Ey2Royh3lgFoYbhKmcWMzPrPRUY8disWKAvuBh3+HS01R2NIwhZNy5vB/38dgtVWjKs l7/lr//VHyKw1niL0muVaTKsdwgNPGzkdOqslRmYFWxNsGLaXtt30cfeC5A8bI1GSUcdHHU Nklw1nugBKc/PQfCnklwYwJXXb5Qn5U67AdY3gy3M3E161kmFFejuCCqFCyDdUQKRuPcaWA iQncSUSUaZNLPWjb+oWGgrY2uV4MOZnC8DQygeofTzd3/OlH3CatLvQw4m5qiaX1d1qyH9N Hq7Fi1dvCgG2bPPvjkGY8e/JcBHDJbWbP2Y0dfRGsDZ06hT4jwbxSffeFJ71yxtu9YMFFPE oc5KnWssK2ZYIhgIxc1Tj67+7y041AZgLY+wHcvSSE7ESI6XZo/emGOYqyH0rM3lHuFMniV yaMCJyoieO1K3m7m9+SemJF3PJNQMWsRdofTMJmLvQBpUeQJaXe96Tf5oUc9c0aiAtXob9K zXmO2vp8uHLl1q90jLlhl75DXu1yAZXR27DC3HyrO7p7HXcsgD14ihTfp2na1HSAvc2Kx5d raYpds15GS5aMh7GeXmftABgj601jvCygL5YYLsZqg5IEXUYLMiQrsGazLgca6h6ghv7cuY H7eNptg3tIVi5EzQ0fRgTkY+I55dZhpm+jkm0EWbfopflFUVjcihlBLWFJZzG8725uGlWbc 8Ok6iXtusKmQp4dY+5BREQKo7+vquMNedULZSoRjSFCr4/glTEPM9MXktiPbbVlOy9JTa+7 watILxD3rgkXOEnxSF/XkuS6Wa5p7kexmfDc= X-QQ-XMRINFO: M/715EihBoGSf6IYSX1iLFg= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There was a incorrect bit to define TXGBE_ICRMISC_VFMBX that prevents the interrupt from being handled correctly. Fixes: a6712cd029a4 ("net/txgbe: add PF module init and uninit for SRIOV") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/base/txgbe_regs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/txgbe/base/txgbe_regs.h b/drivers/net/txgbe/base/txgbe_regs.h index 4ea4a2e3d8..b46d65331e 100644 --- a/drivers/net/txgbe/base/txgbe_regs.h +++ b/drivers/net/txgbe/base/txgbe_regs.h @@ -1197,7 +1197,7 @@ enum txgbe_5tuple_protocol { #define TXGBE_ICRMISC_ANDONE MS(19, 0x1) /* link auto-nego done */ #define TXGBE_ICRMISC_ERRIG MS(20, 0x1) /* integrity error */ #define TXGBE_ICRMISC_SPI MS(21, 0x1) /* SPI interface */ -#define TXGBE_ICRMISC_VFMBX MS(22, 0x1) /* VF-PF message box */ +#define TXGBE_ICRMISC_VFMBX MS(23, 0x1) /* VF-PF message box */ #define TXGBE_ICRMISC_GPIO MS(26, 0x1) /* GPIO interrupt */ #define TXGBE_ICRMISC_ERRPCI MS(27, 0x1) /* pcie request error */ #define TXGBE_ICRMISC_HEAT MS(28, 0x1) /* overheat detection */ From patchwork Mon Nov 4 02:29:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147887 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5DF1B45C2A; Mon, 4 Nov 2024 03:07:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 10DD840A6F; Mon, 4 Nov 2024 03:07:07 +0100 (CET) Received: from smtpbguseast2.qq.com (smtpbguseast2.qq.com [54.204.34.130]) by mails.dpdk.org (Postfix) with ESMTP id F183240687; Mon, 4 Nov 2024 03:07:02 +0100 (CET) X-QQ-mid: bizesmtp91t1730686020t8d54akq X-QQ-Originating-IP: e2Y6My8n5nvzWAZUPoN86re9J7dISClJZya+hth2HiM= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:06:59 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 16269965209426105867 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 03/13] net/txgbe: remove outer UDP checksum capability Date: Mon, 4 Nov 2024 10:29:57 +0800 Message-Id: <20241104023007.782475-4-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NvWYEgjCCjcVm4VX8D/7bIsv3GlEMFUGNMHdRVX42TmUIewruxLH+u4h xaXNFUZQwu4GrgYcRS298INE6hodhA4iXzBIf3/uRe4C0o+rBTayM5uorq1P5XU74XynFXs mE9tXWOYs1/SfnJJ+moNhAt83avciWU2TI57NYiOsQkk2+G8raOxvFsMfEWxVQW8kKCJjpP 1bVdBsuKd3thdUL9Nh+5igj4OcjQlxZgdbPnkJSq+VvXQh7ILdf85Ro9G9lXL/gyw+dnmsG E3xAcdgh8lejPe5cTrf3Q18+R9DvpYVGUA33QSTSrIe+g9MOmjugeWgVqhzUcf0rr3M3dm+ lva40sFscWwXoso4dLmnC7IxAFNovZ39E60mZvP1aQC6ItxdHvtWNsO7ZOsbsqx3wICn1yO zqLOmWCMkQJMMdOeiTicAjY8LcslCM9/EV5ADvkCNfeDHdRa/UL+b9Ndy0ZOwj4NbV+mbzD pRrzsw8+Ur7iCD8szSfi3qrAYCF5Ac39kkdvllcB2DXIGKDPugMEhN8ljr4sac6Y0xIMRHi 7Zvyzh4UnrZtElXXPDOxH0Nce/4D5U04fE/aIZDLeVco9TQdSKe4TWGvLcRGrwMIBcHtWCY qHVuYL+01IrD+pDFKnq6VQJmLdnFUGFe4AykVH5/Fs/+SS+Akoyuw+58b3IqXEBazCpmyYK qfkxOPYZydaE2CswOVSCnjU0+rrscBEj/BWYIlHKvMaI9vBIFV5u62ofF2DLGym1xyLa0JE d0JtPfspneiYFr/sq+YgaeialQdhts4lkQ8HT8OWgHlBgrxTgU95Zxjj+Kg+onuWnn44wlA HW/27h3Z4RmkjSaRX/oeIsuoMqy12d7Mzy/dJ+TEGFc14VfpenZBOKCkMsSyxrudbotGgtp E0mjByHftBurLeAujtkglUIkMsuTv6opA5DA9temzo/cI3tFdjcwB6yQDv8wTweWcPCk+PB +ytAoGoM2VAJ8ReAwfrGsS9ATZlu3jkpyjOr4hBaQZCnQs+5/3SkbZhe4 X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The hardware does not support outer UDP checksum for tunnel packets. It's wrong to claim this Tx offload capability, so fix it. Bugzilla ID: 1529 Fixes: b950203be7f1 ("net/txgbe: support VXLAN-GPE") Fixes: 295968d17407 ("ethdev: add namespace") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_rxtx.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 5bc0f8772f..c12726553c 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -2284,8 +2284,7 @@ txgbe_get_tx_port_offloads(struct rte_eth_dev *dev) tx_offload_capa |= RTE_ETH_TX_OFFLOAD_MACSEC_INSERT; - tx_offload_capa |= RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM | - RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM; + tx_offload_capa |= RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM; #ifdef RTE_LIB_SECURITY if (dev->security_ctx) From patchwork Mon Nov 4 02:29:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147889 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2E7CE45C2A; Mon, 4 Nov 2024 03:07:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 728F340A89; Mon, 4 Nov 2024 03:07:11 +0100 (CET) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id 6893F4068E; Mon, 4 Nov 2024 03:07:04 +0100 (CET) X-QQ-mid: bizesmtp91t1730686022t8d138sv X-QQ-Originating-IP: 0Iuf0vKWakKfNbf0XExkteR0R2IN19sem1eUn2R75c8= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:01 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 9012053615565657481 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 04/13] net/txgbe: fix driver load bit to inform firmware Date: Mon, 4 Nov 2024 10:29:58 +0800 Message-Id: <20241104023007.782475-5-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: OUyKUPM3d6L7QNZhMKMpLz0ss7DIagmQEqPqUsPVHwqi5qgolud1ndIo lqpKwvpMNHspLfFhD37Pswa+QAKLaX8w4Dg1ga/HHHImyUtHf8GVH4MOywxdNVe6k3uE7ic mFKkrs+6ivinShc1jGXMG8iU4Fl3c+l9ebeDqwQFyrt/NV/fhqf4lXDshZDqK+qd6PmDpfY 2yDQfcRd4Lur4Ijplq9uuA0JO/B/CHcEhoq8jDKEKq+0Rzw1thVU9k/k7o29zdiJCAaWjMt HjXy7iaWF9/t90E/vQP1BZMvpr+0quB6wIs8qwhLnUteBArNUo6wdKAmcHpMwUNWWiFTpxq 2q6vM1Tk/bxf1ChuPcDExY0gJsqyTPKbM1AxRxsGH2FuHxGvMVPkjQaGBiK9nPqiUS8sqOs vRNyxdEIIIa62d99BlIWpYU0LgnZ8rQUQLJH2fiWRF+opMQnSBCHjvxbG21LuTPwGGn+ayZ FvqKub3EM0PzSK4+UQaliT7VqouP5HDGaRemlbASSA36dvMi03p+cHvc3fMg3+DGh3tH1IE pP3rtwbLTQ/MNtJhq2Ebb0s/QLn6APtFwqJ07luzPdeiDpbG97L773MjRB0YkR50fPKIDIz zJ2ZlY6Nx556Hdy5vlZGvPe7aGnoupddO9zy1AyEPx6qsr9lnASco5GOoIRLDHH8nRzspqk rxYw1qwlDmnPxn8jV+zLgw9g9FiUH7ctZMlW8lPih4RNOs8E41a+trr8ny5vYjjIMHyVMn5 7ryRcwnIBpKbeR0IQ/TuP2Yb2omByE1MkBZOdwojvgYFX9ITNCAzsBQnlzIQVEClpGECn70 VgbEeZhS+zUyd66OOxwJG80E2fRezgyuUZQwqXcPaht+HFWy51OHh8QEg2O764zSZxkv2rz 6rjbqG+1Gmj7XAanQCcgKjUyHOQffrxhjzQ4QD4FUi4bE/TMP90/n1RGgzpLb/bryT+tpjA F1PXDRF/qsLvvOMjKjjb5n6U6k2HhL4ERV6/fnUSLIJlwq0XXChBcePu7k94cqFnWD1fC2X VAiRhT3A== X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Drv_load bit will be reset to default 0 after hardware LAN reset, reconfigure it to inform firmware that driver is loaded. And set it to 0 when device is closed. Fixes: b1f596677d8e ("net/txgbe: support device start") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 2834468764..4aa3bfd0bc 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -331,6 +331,8 @@ txgbe_pf_reset_hw(struct txgbe_hw *hw) status = hw->mac.reset_hw(hw); ctrl_ext = rd32(hw, TXGBE_PORTCTL); + /* let hardware know driver is loaded */ + ctrl_ext |= TXGBE_PORTCTL_DRVLOAD; /* Set PF Reset Done bit so PF/VF Mail Ops can work */ ctrl_ext |= TXGBE_PORTCTL_RSTDONE; wr32(hw, TXGBE_PORTCTL, ctrl_ext); @@ -2061,6 +2063,9 @@ txgbe_dev_close(struct rte_eth_dev *dev) ret = txgbe_dev_stop(dev); + /* Let firmware take over control of hardware */ + wr32m(hw, TXGBE_PORTCTL, TXGBE_PORTCTL_DRVLOAD, 0); + txgbe_dev_free_queues(dev); txgbe_set_pcie_master(hw, false); From patchwork Mon Nov 4 02:29:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147890 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2881145C2A; Mon, 4 Nov 2024 03:07:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E2DA240B95; Mon, 4 Nov 2024 03:07:12 +0100 (CET) Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by mails.dpdk.org (Postfix) with ESMTP id 603E0406BA for ; Mon, 4 Nov 2024 03:07:06 +0100 (CET) X-QQ-mid: bizesmtp91t1730686023tzse9ryy X-QQ-Originating-IP: yukwwX/fg4nBGtRKZ4Aznlv+h5tFd+W/ZPQCubiHVGo= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:02 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 16397226235178516704 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH v3 05/13] net/txgbe: enable Tx descriptor error interrupt Date: Mon, 4 Nov 2024 10:29:59 +0800 Message-Id: <20241104023007.782475-6-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: N/Ph2bJENH2/S5kIOTYQ0CcZ8nkj9QSkAMLnEhG99aPdGxceROFIaaqW JbCEwxClpV7iDFnYG9UdeRPljYfjx/CnG8Sl/A7KJv5GrrkIsVNwTrIKPmEvnd0U28N5rmy /fNpiNaJGMFIU8Cu48FGNxTe3dBNZlsxNU+M8roj4QHVScZoQ3Rj0Q/CDf4Kg6H98q310qE vB4qXm0kuaIlVlLvYcOJvl6YoPEsoAdKiJHSoxW2VDrPcoRdd6CdbEsV5sVqvdo2/VyeZQ4 WxnI6ptfDCKCBxktHn3XOaNv5pyT1wmJ/gGnKGtEWRUmBmsJnHLIt6paQQ1dZefxPBXhUs9 cnaw/LYbOaKAFxJVU/czsW3+WY2VAUMen12EGRfBwIenWz42UjexWQeLxQhKmJj4llrw20n 7ktJy49s3AISxrhcXngXy3IJVwzeoBryGOLfS7NAn9ei5HCT0B8y4kzeNX/Z1TuvK28ieYQ ac19fySThpY8ELMgVokucuh6XDeJgGKT8gpBAB3UE4xLQPI/T2I79+nuCJpMDTX2eWbtsaG NZe8LCp1atpLgX/WE1a0Tor4csWOj1GxHa+9BKSioyoWS24vHlMt1ZosqoPvl+y89i0w0BP NXnqcFDRX9CbD1tR64XO762RUW7IaqoR1wrJyqq3wFtLygrXWCjA5dpYiFZaQe/XoWWjHSf YYCGGS+zzyubGgv276qN/p0ty+22dnyBN4foS46p/0Bblye5kLe+/CaKgKFkwokty6jUnBX 8BNtVUDZ1B0RfwDjaRvgrwK+20mPAAudB9156OjyM2mEwjF/AB0eZP9QRMAyMaLijghyyir 0pLZWgqB7zQ9ogAlYPqzgE73ePuoJrli5aw4NVYRdndBjq2IHqPMYIdSQM4VF1uJNdREjGA NHlpR6fQH4Y9HSHnMFFjsKiZdCeFW+0Bx3+l4rberqPqQgyFX7mxwLCRAXcen7vVV3hFDos rsHAo2VOI9YvjME4JxUP6CRJG33jprrcx4FeUmw79EG8XfA== X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Enable Tdm_desc_chk then handle the interrupt of TDM desc error. If it's a non-fatal error, clear the error to reset the queue. If it's a fatal error, require users to manually restart the port. This flow prevents the hardware from PCIe pending due to Tx hang, resulting in a reboot to recover. But remarkably, when packet layer length does not match the packet type in TX descriptor, it will cause non-fatal error if Tdm_desc_chk is enabled. But it can be transmitted normally if Tdm_desc_chk is disabled. So in order to prevent hardware over check, fix the layer length on the basis of packet type. Signed-off-by: Jiawen Wu --- drivers/net/txgbe/base/txgbe_regs.h | 6 ++ drivers/net/txgbe/txgbe_ethdev.c | 64 ++++++++++++++++++ drivers/net/txgbe/txgbe_ethdev.h | 3 + drivers/net/txgbe/txgbe_rxtx.c | 100 ++++++++++++++++++++++++++++ drivers/net/txgbe/txgbe_rxtx.h | 1 + 5 files changed, 174 insertions(+) diff --git a/drivers/net/txgbe/base/txgbe_regs.h b/drivers/net/txgbe/base/txgbe_regs.h index b46d65331e..7a9ba6976f 100644 --- a/drivers/net/txgbe/base/txgbe_regs.h +++ b/drivers/net/txgbe/base/txgbe_regs.h @@ -1197,6 +1197,7 @@ enum txgbe_5tuple_protocol { #define TXGBE_ICRMISC_ANDONE MS(19, 0x1) /* link auto-nego done */ #define TXGBE_ICRMISC_ERRIG MS(20, 0x1) /* integrity error */ #define TXGBE_ICRMISC_SPI MS(21, 0x1) /* SPI interface */ +#define TXGBE_ICRMISC_TXDESC MS(22, 0x1) /* TDM desc error */ #define TXGBE_ICRMISC_VFMBX MS(23, 0x1) /* VF-PF message box */ #define TXGBE_ICRMISC_GPIO MS(26, 0x1) /* GPIO interrupt */ #define TXGBE_ICRMISC_ERRPCI MS(27, 0x1) /* pcie request error */ @@ -1382,6 +1383,11 @@ enum txgbe_5tuple_protocol { #define TXGBE_TXCFG_WTHRESH(v) LS(v, 16, 0x7F) #define TXGBE_TXCFG_FLUSH MS(26, 0x1) +#define TXGBE_TDM_DESC_CHK(i) (0x0180B0 + (i) * 4) /*0-3*/ +#define TXGBE_TDM_DESC_NONFATAL(i) (0x0180C0 + (i) * 4) /*0-3*/ +#define TXGBE_TDM_DESC_FATAL(i) (0x0180D0 + (i) * 4) /*0-3*/ +#define TXGBE_TDM_DESC_MASK(v) MS(v, 0x1) + /* interrupt registers */ #define TXGBE_ITRI 0x000180 #define TXGBE_ITR(i) (0x000200 + 4 * (i)) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 4aa3bfd0bc..bafa9cf829 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -1936,6 +1936,7 @@ txgbe_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); rte_eal_alarm_cancel(txgbe_dev_detect_sfp, dev); + rte_eal_alarm_cancel(txgbe_tx_queue_clear_error, dev); txgbe_dev_wait_setup_link_complete(dev, 0); /* disable interrupts */ @@ -2838,6 +2839,60 @@ txgbe_dev_setup_link_alarm_handler(void *param) intr->flags &= ~TXGBE_FLAG_NEED_LINK_CONFIG; } +static void +txgbe_do_reset(struct rte_eth_dev *dev) +{ + struct txgbe_hw *hw = TXGBE_DEV_HW(dev); + struct txgbe_tx_queue *txq; + u32 i; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + txq = dev->data->tx_queues[i]; + txq->resetting = true; + } + + rte_delay_ms(1); + wr32(hw, TXGBE_RST, TXGBE_RST_LAN(hw->bus.lan_id)); + txgbe_flush(hw); + + PMD_DRV_LOG(ERR, "Please manually restart the port %d", + dev->data->port_id); +} + +static void +txgbe_tx_ring_recovery(struct rte_eth_dev *dev) +{ + struct txgbe_hw *hw = TXGBE_DEV_HW(dev); + u32 desc_error[4] = {0, 0, 0, 0}; + struct txgbe_tx_queue *txq; + u32 i; + + /* check tdm fatal error */ + for (i = 0; i < 4; i++) { + desc_error[i] = rd32(hw, TXGBE_TDM_DESC_FATAL(i)); + if (desc_error[i] != 0) { + PMD_DRV_LOG(ERR, "TDM fatal error reg[%d]: 0x%x", i, desc_error[i]); + txgbe_do_reset(dev); + return; + } + } + + /* check tdm non-fatal error */ + for (i = 0; i < 4; i++) + desc_error[i] = rd32(hw, TXGBE_TDM_DESC_NONFATAL(i)); + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + if (desc_error[i / 32] & (1 << i % 32)) { + PMD_DRV_LOG(ERR, "TDM non-fatal error, reset port[%d] queue[%d]", + dev->data->port_id, i); + dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED; + txq = dev->data->tx_queues[i]; + txq->resetting = true; + rte_eal_alarm_set(1000, txgbe_tx_queue_clear_error, (void *)dev); + } + } +} + /* * If @timeout_ms was 0, it means that it will not return until link complete. * It returns 1 on complete, return 0 on timeout. @@ -3096,6 +3151,7 @@ txgbe_dev_misc_interrupt_setup(struct rte_eth_dev *dev) intr->mask |= mask; intr->mask_misc |= TXGBE_ICRMISC_GPIO; intr->mask_misc |= TXGBE_ICRMISC_ANDONE; + intr->mask_misc |= TXGBE_ICRMISC_TXDESC; return 0; } @@ -3191,6 +3247,9 @@ txgbe_dev_interrupt_get_status(struct rte_eth_dev *dev, if (eicr & TXGBE_ICRMISC_HEAT) intr->flags |= TXGBE_FLAG_OVERHEAT; + if (eicr & TXGBE_ICRMISC_TXDESC) + intr->flags |= TXGBE_FLAG_TX_DESC_ERR; + ((u32 *)hw->isb_mem)[TXGBE_ISB_MISC] = 0; return 0; @@ -3310,6 +3369,11 @@ txgbe_dev_interrupt_action(struct rte_eth_dev *dev, intr->flags &= ~TXGBE_FLAG_OVERHEAT; } + if (intr->flags & TXGBE_FLAG_TX_DESC_ERR) { + txgbe_tx_ring_recovery(dev); + intr->flags &= ~TXGBE_FLAG_TX_DESC_ERR; + } + PMD_DRV_LOG(DEBUG, "enable intr immediately"); txgbe_enable_intr(dev); rte_intr_enable(intr_handle); diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h index f0f4ced5b0..302ea9f037 100644 --- a/drivers/net/txgbe/txgbe_ethdev.h +++ b/drivers/net/txgbe/txgbe_ethdev.h @@ -31,6 +31,7 @@ #define TXGBE_FLAG_NEED_LINK_CONFIG (uint32_t)(1 << 4) #define TXGBE_FLAG_NEED_AN_CONFIG (uint32_t)(1 << 5) #define TXGBE_FLAG_OVERHEAT (uint32_t)(1 << 6) +#define TXGBE_FLAG_TX_DESC_ERR (uint32_t)(1 << 7) /* * Defines that were not part of txgbe_type.h as they are not used by the @@ -474,6 +475,8 @@ int txgbe_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id); int txgbe_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id); +void txgbe_tx_queue_clear_error(void *param); + void txgbe_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, struct rte_eth_rxq_info *qinfo); diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index c12726553c..2d2b437643 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -728,6 +728,66 @@ txgbe_get_tun_len(struct rte_mbuf *mbuf) return tun_len; } +static inline void +txgbe_fix_offload_len(union txgbe_tx_offload *ol) +{ + uint8_t ptid = ol->ptid; + + if (ptid & TXGBE_PTID_PKT_TUN) { + if (ol->outer_l2_len == 0) + ol->outer_l2_len = sizeof(struct rte_ether_hdr); + if (ol->outer_l3_len == 0) { + if (ptid & TXGBE_PTID_TUN_IPV6) + ol->outer_l3_len = sizeof(struct rte_ipv6_hdr); + else + ol->outer_l3_len = sizeof(struct rte_ipv4_hdr); + } + if ((ptid & 0xF) == 0) { + ol->l3_len = 0; + ol->l4_len = 0; + } else { + goto inner; + } + } + + if ((ptid & 0xF0) == TXGBE_PTID_PKT_MAC) { + if (ol->l2_len == 0) + ol->l2_len = sizeof(struct rte_ether_hdr); + ol->l3_len = 0; + ol->l4_len = 0; + } else if ((ptid & 0xF0) == TXGBE_PTID_PKT_IP) { + if (ol->l2_len == 0) + ol->l2_len = sizeof(struct rte_ether_hdr); +inner: + if (ol->l3_len == 0) { + if (ptid & TXGBE_PTID_PKT_IPV6) + ol->l3_len = sizeof(struct rte_ipv6_hdr); + else + ol->l3_len = sizeof(struct rte_ipv4_hdr); + } + switch (ptid & 0x7) { + case 0x1: + case 0x2: + ol->l4_len = 0; + break; + case 0x3: + if (ol->l4_len == 0) + ol->l4_len = sizeof(struct rte_udp_hdr); + break; + case 0x4: + if (ol->l4_len == 0) + ol->l4_len = sizeof(struct rte_tcp_hdr); + break; + case 0x5: + if (ol->l4_len == 0) + ol->l4_len = sizeof(struct rte_sctp_hdr); + break; + default: + break; + } + } +} + static inline uint8_t txgbe_parse_tun_ptid(struct rte_mbuf *tx_pkt, uint8_t tun_len) { @@ -782,6 +842,10 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint8_t use_ipsec; #endif + txq = tx_queue; + if (txq->resetting) + return 0; + tx_offload.data[0] = 0; tx_offload.data[1] = 0; txq = tx_queue; @@ -826,6 +890,7 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, if (tx_offload.ptid & TXGBE_PTID_PKT_TUN) tx_offload.ptid |= txgbe_parse_tun_ptid(tx_pkt, tx_offload.outer_tun_len); + txgbe_fix_offload_len(&tx_offload); #ifdef RTE_LIB_SECURITY if (use_ipsec) { @@ -4570,6 +4635,11 @@ txgbe_dev_tx_init(struct rte_eth_dev *dev) wr32(hw, TXGBE_TXWP(txq->reg_idx), 0); } +#ifndef RTE_LIB_SECURITY + for (i = 0; i < 4; i++) + wr32(hw, TXGBE_TDM_DESC_CHK(i), 0xFFFFFFFF); +#endif + /* Device configured with multiple TX queues. */ txgbe_dev_mq_tx_configure(dev); } @@ -4806,6 +4876,7 @@ txgbe_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id) rte_wmb(); wr32(hw, TXGBE_TXWP(txq->reg_idx), txq->tx_tail); dev->data->tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED; + txq->resetting = false; return 0; } @@ -4863,6 +4934,35 @@ txgbe_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id) return 0; } +void +txgbe_tx_queue_clear_error(void *param) +{ + struct rte_eth_dev *dev = (struct rte_eth_dev *)param; + struct txgbe_hw *hw = TXGBE_DEV_HW(dev); + struct txgbe_tx_queue *txq; + u32 i; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + txq = dev->data->tx_queues[i]; + if (!txq->resetting) + continue; + + txgbe_dev_save_tx_queue(hw, i); + + /* tx ring reset */ + wr32(hw, TXGBE_TDM_DESC_NONFATAL(i / 32), + TXGBE_TDM_DESC_MASK(i % 32)); + + if (txq->ops != NULL) { + txq->ops->release_mbufs(txq); + txq->ops->reset(txq); + } + + txgbe_dev_store_tx_queue(hw, i); + txgbe_dev_tx_queue_start(dev, i); + } +} + void txgbe_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id, struct rte_eth_rxq_info *qinfo) diff --git a/drivers/net/txgbe/txgbe_rxtx.h b/drivers/net/txgbe/txgbe_rxtx.h index 9155eb1f70..e668b60b1e 100644 --- a/drivers/net/txgbe/txgbe_rxtx.h +++ b/drivers/net/txgbe/txgbe_rxtx.h @@ -412,6 +412,7 @@ struct txgbe_tx_queue { /**< indicates that IPsec TX feature is in use */ #endif const struct rte_memzone *mz; + bool resetting; }; struct txgbe_txq_ops { From patchwork Mon Nov 4 02:30:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147898 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 42DC845C2A; Mon, 4 Nov 2024 03:08:33 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1C9B340B94; Mon, 4 Nov 2024 03:07:27 +0100 (CET) Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by mails.dpdk.org (Postfix) with ESMTP id 1DED940E0A for ; Mon, 4 Nov 2024 03:07:24 +0100 (CET) X-QQ-mid: bizesmtp91t1730686025t2s1kh09 X-QQ-Originating-IP: CjhOnQJGEw8Un9ThHz6QuVAemQDW6pQ+DoBHtFiytqk= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:04 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 480921539816169209 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH v3 06/13] net/txgbe: check length of Tx packets Date: Mon, 4 Nov 2024 10:30:00 +0800 Message-Id: <20241104023007.782475-7-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: MYcyYH/A/+tCJCme9xpGNsTOqfGQ86mFOLimXtBXuvLg/3NL0NqyGeW4 CKjsiNX+R9Wq/msGRE2v7JvSn3lWMIxvb/sGpAOnAKs0NkA2AUFhpd7DPsgJMB3fRgcBO2a gWpLGR6J/EUQhSjS6rBG01Bmv0Eh9s+yqfZ6ozGbUrTTtntjdpWX1fcCwv62IKHKv16cw/Y QQlm2e2dJRVO0EYyvlLANn/FFxSqSwaT+L66eK7ZdeQ219vxCBEzNqtc2zm9dOXb8evbhYd PNsSONyLwuhQJ1Hw2nhe3UxwBRDCLsw9DENFb3gJp+BwWDRUK1YgOpRpKa9rS0vP9/mZr+S LKwg+o5zD61dl/BDi3XQfLyY9C9Esn4JNRjMw2aqKiBuIutYf/xNUsFZWJ38Zthw9HCgqMI Aa2eI/0+7+socJDumieUM+3h1cpNRSzbH0zcVBkye4uDweiuBOy3K+EKGAX9dhvGRStZ/1S U+oLVoA8vRew8DMIUqUNK8vVZqOFU8jmq7wjNQRp34zwFPGVVA1s1QvS2kSB7+HryUmAW/T A93ECOx4ceRhkrR9ptmhWyY+hneljcKk3LTuTK12lRve4uzn0yjPqf+Oij5eD0SNLXAdmkU AVqRvWocNPUCXTy12PiAsg1CaWmYAITljsYk4bsnRIWjGFfqPRC0BAUwIKXSE6u+c3n6Sh0 1gD2NGu04BbwHl0StwITZeK9Q6ymSyHvXp/HzKkin8Eoxn3GwsxutKoeMtXLoojI4E/x40C ZqzhAkJn1n0EPS3U06sQ/e2fth9Oqy1L/yG5htUrVrrQgByXEs+IHQ1+IT7gkZ80lksE6cc +pBM4tZ98AqIKDmWZNpcZrZa44uEGaWhkrYHsOau2lDAANgB1clYQbrYPl137rZHciAedPt f0cBlnAkFRYHnCjbYXaknoW/PMJktxJNcbqFzm3fcGFVqRUmFNzGX3XVvAUEZMLHnAlyuf7 FNY+ew2rBGzLnJcDCaxnoXgt+ng46PPvJfLEw44h+F004xLOGUoA2bgXc6ngj4053538= X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add checking of the Tx packet length to avoid TDM fatal error as far as possible. Set the pkt_len=1518 for invalid packet in simple Tx code path, and drop it directly in featured Tx code path. Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_rxtx.c | 33 +++++++++++++++++++++++++ drivers/net/txgbe/txgbe_rxtx_vec_neon.c | 10 +++++--- drivers/net/txgbe/txgbe_rxtx_vec_sse.c | 11 ++++++--- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 2d2b437643..06acbd0881 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -160,6 +160,8 @@ tx4(volatile struct txgbe_tx_desc *txdp, struct rte_mbuf **pkts) for (i = 0; i < 4; ++i, ++txdp, ++pkts) { buf_dma_addr = rte_mbuf_data_iova(*pkts); pkt_len = (*pkts)->data_len; + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = TXGBE_FRAME_SIZE_DFT; /* write data to descriptor */ txdp->qw0 = rte_cpu_to_le_64(buf_dma_addr); @@ -180,6 +182,8 @@ tx1(volatile struct txgbe_tx_desc *txdp, struct rte_mbuf **pkts) buf_dma_addr = rte_mbuf_data_iova(*pkts); pkt_len = (*pkts)->data_len; + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = TXGBE_FRAME_SIZE_DFT; /* write data to descriptor */ txdp->qw0 = cpu_to_le64(buf_dma_addr); @@ -813,6 +817,30 @@ txgbe_parse_tun_ptid(struct rte_mbuf *tx_pkt, uint8_t tun_len) return ptid; } +static inline bool +txgbe_check_pkt_err(struct rte_mbuf *tx_pkt) +{ + uint32_t total_len = 0, nb_seg = 0; + struct rte_mbuf *mseg; + + mseg = tx_pkt; + do { + if (mseg->data_len == 0) + return true; + total_len += mseg->data_len; + nb_seg++; + mseg = mseg->next; + } while (mseg != NULL); + + if (tx_pkt->pkt_len != total_len || tx_pkt->pkt_len == 0) + return true; + + if (tx_pkt->nb_segs != nb_seg || tx_pkt->nb_segs > 64) + return true; + + return false; +} + uint16_t txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) @@ -864,6 +892,11 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, for (nb_tx = 0; nb_tx < nb_pkts; nb_tx++) { new_ctx = 0; tx_pkt = *tx_pkts++; + if (txgbe_check_pkt_err(tx_pkt)) { + rte_pktmbuf_free(tx_pkt); + continue; + } + pkt_len = tx_pkt->pkt_len; /* diff --git a/drivers/net/txgbe/txgbe_rxtx_vec_neon.c b/drivers/net/txgbe/txgbe_rxtx_vec_neon.c index a96baf9b1d..d4d647fab5 100644 --- a/drivers/net/txgbe/txgbe_rxtx_vec_neon.c +++ b/drivers/net/txgbe/txgbe_rxtx_vec_neon.c @@ -476,9 +476,13 @@ static inline void vtx1(volatile struct txgbe_tx_desc *txdp, struct rte_mbuf *pkt, uint64_t flags) { - uint64x2_t descriptor = { - pkt->buf_iova + pkt->data_off, - (uint64_t)pkt->pkt_len << 45 | flags | pkt->data_len}; + uint16_t pkt_len = pkt->data_len; + + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = TXGBE_FRAME_SIZE_DFT; + + uint64x2_t descriptor = {pkt->buf_iova + pkt->data_off, + (uint64_t)pkt_len << 45 | flags | pkt_len}; vst1q_u64((uint64_t *)(uintptr_t)txdp, descriptor); } diff --git a/drivers/net/txgbe/txgbe_rxtx_vec_sse.c b/drivers/net/txgbe/txgbe_rxtx_vec_sse.c index 1a3f2ce3cd..8ecce33471 100644 --- a/drivers/net/txgbe/txgbe_rxtx_vec_sse.c +++ b/drivers/net/txgbe/txgbe_rxtx_vec_sse.c @@ -607,9 +607,14 @@ static inline void vtx1(volatile struct txgbe_tx_desc *txdp, struct rte_mbuf *pkt, uint64_t flags) { - __m128i descriptor = _mm_set_epi64x((uint64_t)pkt->pkt_len << 45 | - flags | pkt->data_len, - pkt->buf_iova + pkt->data_off); + uint16_t pkt_len = pkt->data_len; + __m128i descriptor; + + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = TXGBE_FRAME_SIZE_DFT; + + descriptor = _mm_set_epi64x((uint64_t)pkt_len << 45 | flags | pkt_len, + pkt->buf_iova + pkt->data_off); _mm_store_si128((__m128i *)(uintptr_t)txdp, descriptor); } From patchwork Mon Nov 4 02:30:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147891 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C644845C2A; Mon, 4 Nov 2024 03:07:45 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 25AF440B99; Mon, 4 Nov 2024 03:07:14 +0100 (CET) Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by mails.dpdk.org (Postfix) with ESMTP id E0B7840A7F for ; Mon, 4 Nov 2024 03:07:09 +0100 (CET) X-QQ-mid: bizesmtp91t1730686026t9xlqss9 X-QQ-Originating-IP: ToKNPSa4OWD0g4hRjqo0ygS7pNmYrUqGuxF61KorTsI= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:06 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 7703180126434702021 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH v3 07/13] net/txgbe: add Tx descriptor error statistics Date: Mon, 4 Nov 2024 10:30:01 +0800 Message-Id: <20241104023007.782475-8-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: Ngk7ShESHkQuxvIAJqJldfrBpXULt9NRprrjIocvLLwzhJaAEObPH9cQ X1YEEtv9EfX1qsI+NYOjpyZDaAHWpiW5VmyIWJQMkNILWTZX1GIFpMtCG9pKq5Cvzf8j/Cq BUxa49iaed0CnXfoFgHbf0Vd4e8wfSmiLKopY24/ICfc+p8oW2guc2LFSvIsEHLOvlaA3xn iMBC00+7uoXtQM6FsO16raF96yqQyGNUueBU5/Q2v/w5Y8pnMbX2/e6ben9pnYhRQOp7ToW LKSu+E1Wva22w+0VILNApKaOv97l1OwVHuHERHC2l7GZ7HkGYzhWfkhRWYF1DaiEMXTJWDp X5ZVoM6Ta/WVvhnDHsZdOJbirv5BELs0tfBvw9d3CR7zBEWQ1vVLSDMMilpnytV4wOuyAP2 rDrJOjwzB386DK9z0MA6s5srnGl2Y86xZxx6GlW51jjK0qNV+oCcjEOBkL403syd4w795OE 2QCXphI+d96EA9v/240cjSov8GAidW3CrAwXpzztrDCVww2mtdU8qqys3gWMdFI6gFQQreF 6hFYPk0e+da0JyqMVay9KOjq4hTfsE2if6scFsOT4K1mQ3FPm4Zqt092V1vJpKz35eKkDxf e9CfhX/P8cik9gcfnQ6t5meJMPRCVfIRWaVZn5oq+881KBVKauzHMhRRNLc88rXHpO18p1T LBjVGDqPy/3x1mKfF1orCwo2xKK0nKRrHre8DhbexZaSLGJ6j/92hkMtSFwtscui6xnYyWf m8k2NiWqEy46j4Q/NVEYx0mc2nT2SCHwkp2gTnhTHLMoQth1Ph8COt8MxhUDxZV+/N1ol1L tBl51DR//UdHCikAqb94Vd4e4KOizV96BYDKkaZoAO9sTBkpU5WO7fM94FiduVTjFlKCXI3 agZ9+YFzhm/jBtjaTaaB4/E+MDbgqKGuIQQp0yB9O8mr4f22DBGj4rUHvFfSflN55r52HUw H/wXqUX6L7n4cw7TFtc16jv+17bWiZ7yKN5I= X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Count the number of packets not sent due to Tx descriptor error. Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 13 +++++++++++++ drivers/net/txgbe/txgbe_rxtx.c | 6 ++++++ drivers/net/txgbe/txgbe_rxtx.h | 1 + 3 files changed, 20 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index bafa9cf829..a956216abb 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -2344,6 +2344,7 @@ txgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) struct txgbe_hw_stats *hw_stats = TXGBE_DEV_STATS(dev); struct txgbe_stat_mappings *stat_mappings = TXGBE_DEV_STAT_MAPPINGS(dev); + struct txgbe_tx_queue *txq; uint32_t i, j; txgbe_read_stats_registers(hw, hw_stats); @@ -2398,6 +2399,11 @@ txgbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) /* Tx Errors */ stats->oerrors = 0; + for (i = 0; i < dev->data->nb_tx_queues; i++) { + txq = dev->data->tx_queues[i]; + stats->oerrors += txq->desc_error; + } + return 0; } @@ -2406,6 +2412,13 @@ txgbe_dev_stats_reset(struct rte_eth_dev *dev) { struct txgbe_hw *hw = TXGBE_DEV_HW(dev); struct txgbe_hw_stats *hw_stats = TXGBE_DEV_STATS(dev); + struct txgbe_tx_queue *txq; + uint32_t i; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + txq = dev->data->tx_queues[i]; + txq->desc_error = 0; + } /* HW registers are cleared on read */ hw->offset_loaded = 0; diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 06acbd0881..4e4b78fb43 100644 --- a/drivers/net/txgbe/txgbe_rxtx.c +++ b/drivers/net/txgbe/txgbe_rxtx.c @@ -894,6 +894,7 @@ txgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, tx_pkt = *tx_pkts++; if (txgbe_check_pkt_err(tx_pkt)) { rte_pktmbuf_free(tx_pkt); + txq->desc_error++; continue; } @@ -2523,6 +2524,7 @@ txgbe_dev_tx_queue_setup(struct rte_eth_dev *dev, txgbe_set_tx_function(dev, txq); txq->ops->reset(txq); + txq->desc_error = 0; dev->data->tx_queues[queue_idx] = txq; @@ -4980,6 +4982,10 @@ txgbe_tx_queue_clear_error(void *param) if (!txq->resetting) continue; + /* Increase the count of Tx desc error since + * it causes the queue reset. + */ + txq->desc_error++; txgbe_dev_save_tx_queue(hw, i); /* tx ring reset */ diff --git a/drivers/net/txgbe/txgbe_rxtx.h b/drivers/net/txgbe/txgbe_rxtx.h index e668b60b1e..622a0d3981 100644 --- a/drivers/net/txgbe/txgbe_rxtx.h +++ b/drivers/net/txgbe/txgbe_rxtx.h @@ -412,6 +412,7 @@ struct txgbe_tx_queue { /**< indicates that IPsec TX feature is in use */ #endif const struct rte_memzone *mz; + uint64_t desc_error; bool resetting; }; From patchwork Mon Nov 4 02:30:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147893 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E584D45C2A; Mon, 4 Nov 2024 03:08:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 42B0840B9F; Mon, 4 Nov 2024 03:07:17 +0100 (CET) Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by mails.dpdk.org (Postfix) with ESMTP id C80E340B92 for ; Mon, 4 Nov 2024 03:07:12 +0100 (CET) X-QQ-mid: bizesmtp91t1730686028tsbdj8oc X-QQ-Originating-IP: qcQ+8S6dhf4pu2Ku40n0MJIowbsME4LDXQcQrvNPFQk= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:07 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 5599369443922883895 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH v3 08/13] net/ngbe: check length of Tx packets Date: Mon, 4 Nov 2024 10:30:02 +0800 Message-Id: <20241104023007.782475-9-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NbAPtA/4PVzShXRnKwgiEmzytLx23kd1cf5nDyEmLo7GhZt4xoOLAZLN 4DLhbnjo8ZrwVPRKechFBW68eyIHy6rw7DYGEws9379hxF880w1EHVeJFSqu44Unft++sXX sybkg1NJQeoO2dMmPaJVKvdR1A8taCo90kkCmvxQQtwXT1fPL/IPidMwG7Pi8O1965uKhJo 33jtEGkwi1VM5a0ytfY/AwhL80ZvACrCAD0xhTrI2oRb04+Ui+6Jh9phA/3Qv/pup6c4Q0L xLS1IaBgYOkHY9w180+dqvcatPhe8H5Kr9+9tbmgr3vC7wLNY6Dx1RNoH4aYubryT6a9XXh AQu4pANHLWknDLF28KVXYjDqnm8RPVONTw/KDfD+o7I2erYIi04LbuWHQ8W4aDCRsWDKYyx ifS2BR8S/bGO//ca3WFUKqokVvISQqhzUw203Na4Gvc9aO7J+GGQarGh2U8W/r9NjNIEiGU 643u2wzcgvPqnWB7YA40Lttv1OovsgSVb0bRKIzZ3TjENeP2FCiBNNyBaaVKST8nkr8INRj UNgeWuwBdUEJyTYlJXP3dKEORERRrxDkXGfifM+fR8SUovdl7YrtXjCyUWoPFIeptofpCGe Y+FZHd2HOT8YbxBu9fZ9HXY9OUuN+C7tKjmzNvzaTqBojPwhXGmPXoWV3vo/S2t4ipzO2CC 2T756kHsDetGLUvnB0qxrrxkEsJorSj3SCZ1xPRtax+fo3v74uvxqo1CnPzdgfszLwNzhaZ AjEKY3sG6dozzS7JyWBdC+CEOqCZZlUlnb3Dww6HrbKw6sgRfrODBAL/izdqS2HxwPUyBSr vSbfSx4SnHXeNfQYgMO8wTcqNC3OnvP2oeJIPxbEWTVe0aMNCH2S6hTyTjlnXUQW4j5JSAB 5285zIfBlGWIiQrReBm1RvONwCsYyczXEvsa5WLs43KW885WdDioHEWWNJ5IS0Z95fYcrLu C2cSymtKlkTFZHMFw0bYz+9GZHS9SIP+BhC/y92HZ/+TfXk7TXtUw1LfzOBGJ3aqfzXvWd3 Np6QEBeAUgdn3U5YOYyodjwxzup5t5xZDFXSlkTg== X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Add checking of the Tx packet length to avoid TDM fatal error as far as possible. Set the pkt_len=1518 for invalid packet in simple Tx code path, and drop it directly in featured Tx code path. Althrough the hardware does not support TDM desc check. Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_rxtx.c | 33 +++++++++++++++++++++++++++ drivers/net/ngbe/ngbe_rxtx_vec_neon.c | 10 +++++--- drivers/net/ngbe/ngbe_rxtx_vec_sse.c | 11 ++++++--- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c index f3eb797d0c..25a314f10a 100644 --- a/drivers/net/ngbe/ngbe_rxtx.c +++ b/drivers/net/ngbe/ngbe_rxtx.c @@ -113,6 +113,8 @@ tx4(volatile struct ngbe_tx_desc *txdp, struct rte_mbuf **pkts) for (i = 0; i < 4; ++i, ++txdp, ++pkts) { buf_dma_addr = rte_mbuf_data_iova(*pkts); pkt_len = (*pkts)->data_len; + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = NGBE_FRAME_SIZE_DFT; /* write data to descriptor */ txdp->qw0 = rte_cpu_to_le_64(buf_dma_addr); @@ -133,6 +135,8 @@ tx1(volatile struct ngbe_tx_desc *txdp, struct rte_mbuf **pkts) buf_dma_addr = rte_mbuf_data_iova(*pkts); pkt_len = (*pkts)->data_len; + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = NGBE_FRAME_SIZE_DFT; /* write data to descriptor */ txdp->qw0 = cpu_to_le64(buf_dma_addr); @@ -555,6 +559,30 @@ ngbe_xmit_cleanup(struct ngbe_tx_queue *txq) return 0; } +static inline bool +ngbe_check_pkt_err(struct rte_mbuf *tx_pkt) +{ + uint32_t total_len = 0, nb_seg = 0; + struct rte_mbuf *mseg; + + mseg = tx_pkt; + do { + if (mseg->data_len == 0) + return true; + total_len += mseg->data_len; + nb_seg++; + mseg = mseg->next; + } while (mseg != NULL); + + if (tx_pkt->pkt_len != total_len || tx_pkt->pkt_len == 0) + return true; + + if (tx_pkt->nb_segs != nb_seg || tx_pkt->nb_segs > 64) + return true; + + return false; +} + uint16_t ngbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) @@ -599,6 +627,11 @@ ngbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, for (nb_tx = 0; nb_tx < nb_pkts; nb_tx++) { new_ctx = 0; tx_pkt = *tx_pkts++; + if (ngbe_check_pkt_err(tx_pkt)) { + rte_pktmbuf_free(tx_pkt); + continue; + } + pkt_len = tx_pkt->pkt_len; /* diff --git a/drivers/net/ngbe/ngbe_rxtx_vec_neon.c b/drivers/net/ngbe/ngbe_rxtx_vec_neon.c index dcf12b7070..37075ea5e7 100644 --- a/drivers/net/ngbe/ngbe_rxtx_vec_neon.c +++ b/drivers/net/ngbe/ngbe_rxtx_vec_neon.c @@ -476,9 +476,13 @@ static inline void vtx1(volatile struct ngbe_tx_desc *txdp, struct rte_mbuf *pkt, uint64_t flags) { - uint64x2_t descriptor = { - pkt->buf_iova + pkt->data_off, - (uint64_t)pkt->pkt_len << 45 | flags | pkt->data_len}; + uint16_t pkt_len = pkt->data_len; + + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = NGBE_FRAME_SIZE_DFT; + + uint64x2_t descriptor = {pkt->buf_iova + pkt->data_off, + (uint64_t)pkt_len << 45 | flags | pkt_len}; vst1q_u64((uint64_t *)(uintptr_t)txdp, descriptor); } diff --git a/drivers/net/ngbe/ngbe_rxtx_vec_sse.c b/drivers/net/ngbe/ngbe_rxtx_vec_sse.c index b128bd3a67..19c69cdfa6 100644 --- a/drivers/net/ngbe/ngbe_rxtx_vec_sse.c +++ b/drivers/net/ngbe/ngbe_rxtx_vec_sse.c @@ -563,9 +563,14 @@ static inline void vtx1(volatile struct ngbe_tx_desc *txdp, struct rte_mbuf *pkt, uint64_t flags) { - __m128i descriptor = _mm_set_epi64x((uint64_t)pkt->pkt_len << 45 | - flags | pkt->data_len, - pkt->buf_iova + pkt->data_off); + uint16_t pkt_len = pkt->data_len; + __m128i descriptor; + + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = NGBE_FRAME_SIZE_DFT; + + descriptor = _mm_set_epi64x((uint64_t)pkt_len << 45 | flags | pkt_len, + pkt->buf_iova + pkt->data_off); _mm_store_si128((__m128i *)(uintptr_t)txdp, descriptor); } From patchwork Mon Nov 4 02:30:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147892 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5EC745C2A; Mon, 4 Nov 2024 03:07:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5DC8A40B9B; Mon, 4 Nov 2024 03:07:15 +0100 (CET) Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by mails.dpdk.org (Postfix) with ESMTP id 66ADB40B8C for ; Mon, 4 Nov 2024 03:07:12 +0100 (CET) X-QQ-mid: bizesmtp91t1730686030ts32ie2v X-QQ-Originating-IP: A6wV01IvnRzxFvU7QCRgRZaRMLCvH/2DjPYCcFggjXQ= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:09 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 2134030159480825671 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH v3 09/13] net/ngbe: add Tx descriptor error statistics Date: Mon, 4 Nov 2024 10:30:03 +0800 Message-Id: <20241104023007.782475-10-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NKv2G1wnhDBnpJadz4t8rTaccL3xnyJNDPYfjSIew0OTuya8Dls/pjxY 3av5sBsapttYi8Rf51B+UiXYWSdoAuaFALJq8VvZHu9WD+e/fX9sXs58oTEN/VpB8+um4wk gGh+XWvD7YS2h0Ab1x/l4M7POOKTIoLgWeoG27LZbkYVZHoBBO91dnPIwxR/ubDaGv9VRcr EA5b6nL2eeWUUtRgncEJBj/d3bZ5b4/QHxeGjiI2N8CIt49ltY2UmsP6GOWa7fKffpBJMXj nis5eEo7jQ0T2BpizgCfwVuginwMSvgKBoD9coWVcUZ6pXowk6H+QJYTW0hz72uVgjc6iPQ F0Xfsb+MBL5p9Vknwo1mOcVyI/s8mVnUk13jJ3vrluNa4sKVGwqmce6Fz8vJOH2/5+/irf1 p9nb2KN+x3xPwGUURl5LskZ8nyu5ia6Aq/67A7Y3tpSocelYmFeDuD1L01+ZkcTTgDJ0+4M TdJVeG61uosMmAAohqGFb8S2wHHJILoIw6+rPOh4+0GGFOMXx3HyXeJ9TVyA9fjOvv6qLE0 MXHqhjAbdbmbnTSci0MR4B+1geWMI32ueLrnX67t1tFtOq0gCwOOqRcYGfcez3oGzHsX5eO hTBrSfAOXFSf810BqJAattQvqWIH5G7c972Yhoehp1XbXnSfBRreHWKbHS8c7zAM+LehtyZ VpaOQa5yoPzhimkXFntxmcedNUpjdPcA+1MpyuO7RLffM/C3DmxswDEXv8KuGaFHtw9B5cv /7Rjrn0GLrN5PM1bLxRyPpbmHY/r7IUmYamZvYR/EOhl/to6eAoxbgiG8/GEc6w/TvmBlrx 0T7GOtyyn12A9lYpcd6twVrxWy83FUMCNgGF7yG1nKZEGgEKMRiDj7LmmQgbfOArNSxfmuu B+ObmbCC7kW9D1XhfBvE3etfuRgIJwjAq61T5eK+RqSk2p+Iqu/QA5vWt9dWoVFyW3xO9iO g3QpQz+WG0VVIrGSElDSXU93PcxtzfWAAlST3ID25lvIA1g== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Count the number of packets not sent due to Tx descriptor error. Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 13 +++++++++++++ drivers/net/ngbe/ngbe_rxtx.c | 2 ++ drivers/net/ngbe/ngbe_rxtx.h | 1 + 3 files changed, 16 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 6c45ffaad3..353d17acc8 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1507,6 +1507,7 @@ ngbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) struct ngbe_hw_stats *hw_stats = NGBE_DEV_STATS(dev); struct ngbe_stat_mappings *stat_mappings = NGBE_DEV_STAT_MAPPINGS(dev); + struct ngbe_tx_queue *txq; uint32_t i, j; ngbe_read_stats_registers(hw, hw_stats); @@ -1559,6 +1560,11 @@ ngbe_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) /* Tx Errors */ stats->oerrors = 0; + for (i = 0; i < dev->data->nb_tx_queues; i++) { + txq = dev->data->tx_queues[i]; + stats->oerrors += txq->desc_error; + } + return 0; } @@ -1567,6 +1573,13 @@ ngbe_dev_stats_reset(struct rte_eth_dev *dev) { struct ngbe_hw *hw = ngbe_dev_hw(dev); struct ngbe_hw_stats *hw_stats = NGBE_DEV_STATS(dev); + struct ngbe_tx_queue *txq; + uint32_t i; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + txq = dev->data->tx_queues[i]; + txq->desc_error = 0; + } /* HW registers are cleared on read */ hw->offset_loaded = 0; diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c index 25a314f10a..8d31d47de9 100644 --- a/drivers/net/ngbe/ngbe_rxtx.c +++ b/drivers/net/ngbe/ngbe_rxtx.c @@ -629,6 +629,7 @@ ngbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, tx_pkt = *tx_pkts++; if (ngbe_check_pkt_err(tx_pkt)) { rte_pktmbuf_free(tx_pkt); + txq->desc_error++; continue; } @@ -2100,6 +2101,7 @@ ngbe_dev_tx_queue_setup(struct rte_eth_dev *dev, ngbe_set_tx_function(dev, txq); txq->ops->reset(txq); + txq->desc_error = 0; dev->data->tx_queues[queue_idx] = txq; diff --git a/drivers/net/ngbe/ngbe_rxtx.h b/drivers/net/ngbe/ngbe_rxtx.h index 7574db32d8..8534ec123a 100644 --- a/drivers/net/ngbe/ngbe_rxtx.h +++ b/drivers/net/ngbe/ngbe_rxtx.h @@ -375,6 +375,7 @@ struct ngbe_tx_queue { const struct ngbe_txq_ops *ops; /**< txq ops */ const struct rte_memzone *mz; + uint64_t desc_error; }; struct ngbe_txq_ops { From patchwork Mon Nov 4 02:30:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147895 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 003F645C2A; Mon, 4 Nov 2024 03:08:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1E0D440DDA; Mon, 4 Nov 2024 03:07:20 +0100 (CET) Received: from smtpbg150.qq.com (smtpbg150.qq.com [18.132.163.193]) by mails.dpdk.org (Postfix) with ESMTP id 8C02440B9F; Mon, 4 Nov 2024 03:07:15 +0100 (CET) X-QQ-mid: bizesmtp91t1730686031tzpn4jsm X-QQ-Originating-IP: FmRB2qhZcyqnGfKNcNJZhRsMGdrerNm50ui8F0fLbqE= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:11 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 4281527610238001315 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 10/13] net/ngbe: fix driver load bit to inform firmware Date: Mon, 4 Nov 2024 10:30:04 +0800 Message-Id: <20241104023007.782475-11-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: MQeLyr+N5AxPYh7JEPjI60To/pqDlDv6QS1HC+X6oRcKSlR9zB6rDv2x l4bxBEYZmT/bNFhsoEUtGoMHAstqw7AY/c5dNVcyknz4gaofhH1mP4Qky+V4t/3s91tCBIh CTIqyUKAZJM/OC0BW6WicQ7RJquFznCa83engiiFiz7xUt3G+vnaRlAlUNWQTWXSz69Zq+t b8tMwS4yAt62S8sr9fpmW2wVAn4iFy5nV6X9E6aiCQ60seEEyp446WSY2yM+QH/BZmRFkEf Q9iiR3m1kJ8u7zX881m49lmoVD9b8u44ilSzxbFxYZDINmxzSRWv24LSWikYNGmiUo4Zhoc 5L8iGx87nxFGd/uf/STgB2wg33+8xsZzmfIwbSmJhYdo3i1Vhq+c1HiSbOJo1VHRRuMbR/e tD0VOJ20A6RHOLU0ZVzd18S3bV6hrjz9r92tp8gUXxWMvGOfnqROExTh5bsw1r3Pp0UTy4G r/MTwLhKGbpPQdrrB1KSxgndyuSYAVbW8sIb6yyHIRPfXF4mBwt3t5ovsrA51DCrwWa6Wst Cu+GqLmilBT4VdvcNd5OxgVwRQ0aiFO+2qKLpFTLt7cu9FtAWReHIxoxASz8gVjmtKm1ZP6 sjYNqtaNgt1gGsKYMV1loPsXPV2ZFV2u+ginZaG5lv4lVHs6487MdgxycBtoaV8jmMJn5HY sIzde6LWLO0pvGQpoul5XQ6dpVJ8X0d4k9i2GRiHm913sOhZa1SK+H6NpKud3gTqUX4Kij3 7MonUiLJ/4LgeZYiMq1jguJEMW0mnbnauoKWKxUuwdTbCNFSc8iXgjTXpwoIWw2C1Ic1mF/ 1wU7q+tHUtzaK1gJxLgvh+aBNHbSocYUnMwX4iJfFGvJvm8uYxctsyatl+etF7kTo/1jGvV W1igXa8m00waYxmABCbYxlYzC50YSQbFOxgDfM4wHU4Qa8wG0YCRbMjxukcMc3b0nhAT/YG SXBBhIaSt3Sty7mkNmpUqgw1JY6JDuDhewsIckPl4D1SZEp0xjXAyaVTYCcGIwh6MVPDMWY OytvztqdxJp56ZutvPqhdyJQ8sTAcwu22PAtC6Zg== X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Drv_load bit will be reset to default 0 after hardware LAN reset, reconfigure it to inform firmware that driver is loaded. And set it to 0 when device is closed. Fixes: 3518df5774c7 ("net/ngbe: support device start/stop") Fixes: cc63194e89cb ("net/ngbe: support close and reset device") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 353d17acc8..238533f2b8 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -263,6 +263,8 @@ ngbe_pf_reset_hw(struct ngbe_hw *hw) status = hw->mac.reset_hw(hw); ctrl_ext = rd32(hw, NGBE_PORTCTL); + /* let hardware know driver is loaded */ + ctrl_ext |= NGBE_PORTCTL_DRVLOAD; /* Set PF Reset Done bit so PF/VF Mail Ops can work */ ctrl_ext |= NGBE_PORTCTL_RSTDONE; wr32(hw, NGBE_PORTCTL, ctrl_ext); @@ -1277,6 +1279,9 @@ ngbe_dev_close(struct rte_eth_dev *dev) ngbe_dev_stop(dev); + /* Let firmware take over control of hardware */ + wr32m(hw, NGBE_PORTCTL, NGBE_PORTCTL_DRVLOAD, 0); + ngbe_dev_free_queues(dev); ngbe_set_pcie_master(hw, false); From patchwork Mon Nov 4 02:30:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147894 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A442945C2A; Mon, 4 Nov 2024 03:08:08 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B58B440DD1; Mon, 4 Nov 2024 03:07:18 +0100 (CET) Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by mails.dpdk.org (Postfix) with ESMTP id 6392F40B9C; Mon, 4 Nov 2024 03:07:15 +0100 (CET) X-QQ-mid: bizesmtp91t1730686033tqud107y X-QQ-Originating-IP: g/+NaELzUCpW4ZO1XagA8y/OqOgzEmb4+1wr/9Uh3Mc= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:12 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8001140337641018006 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 11/13] net/ngbe: reconfigure more MAC Rx registers Date: Mon, 4 Nov 2024 10:30:05 +0800 Message-Id: <20241104023007.782475-12-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NojR6Ao/DkEDck1FqqOMSUTFNy73tzlDV/AmhUcJMtP4AC7G3gnFXUFh Y2fxfmYxuuAlGIV/3hRZt0fsorhNiXwmUnmBsbRqaqD3E28i0PCAc02nRit+qcZ4jPDIW31 Wsq70pemm9DGy+jTFBh+HdiyWCwjk90Yxp8bi/BMR9eYMtIRoESVQ36xbJ6A66xQ1v2frdt BwCKbE40B5OIxXw6ns2xDSiRuVRYoLHohCfvx6hKtg5cdkV8QffRs3labycQuH7KoB+9Uw3 GNVz5353P5iXsq4rHGnsUQ3M2PMu5B6ZpS5JUwa04ZTSSOVgRSiVIdpgb+IWStDSvzIVle8 NSBuYcV7rRForHA/oz5XkzMNSoGyvrkTXBCUxP1bjIFJ/V6HR/HQ0XtSsHmZ84daWiEJVfQ UtPllzQFrCpcxK8TIwPLKndkdqpxymF2MBfM8t6VN75XuCmS1vHjUtuE1uobVQLRNScsFAd tJ6GtNNlPqlpJSKgb4MMIMAo/aA/sOF9yxb/0vJUvyq/rFEf/R25G8t4IBNikABMUUQvOPw Ih0uyCyj3UormCoGYz7qkKckZ+mbeFt9ua4b+N1krLW5TanMUFnjrBrADJ3tUfbsa5ghPGZ bw2AXBaQj08s1P3d+lCmqrbTU+zt9hflFkddJ4FLaiEIoGeRc8TX6N6ODSNRN3VWE18jSVD jdf4WQlZ6WaICJAVSt/qb8A8li8I9Vrouufmly9ATihdor7G7qvk9mtQyvsJs/M8O5mi+Mw YZtsWofzpP/0ujWIp241b0kaYfe2Fs3/008KODjtQARBTzOrmJjCWN6+CPkJqsgA1NPLP5Y qKwGgoeqjkb45yrOrxw7VeUZpw1A5neac7WcOR1wnvrhtSQ+ptzo34Lf1NPAFHb9x7Eyh2m MuZGk5tJEO/0Sr816Dfnaepny4kxP9fO8wafPzHIQZsb5XySB6LkKm2GCNtp5HuPCYiYsC/ Ec9eFpWHsBwQ0S9XBuuiR6QsxTB31v0o43XcM0EFt65DpdpAgtI1hDt1T X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org When link status changes, there is a probability that no more packets can be received on the port, due to hardware defects. These MAC Rx registers should be reconfigured to fix this problem. Fixes: b9246b8fa280 ("net/ngbe: support link update") Fixes: a7c5f95ed9c2 ("net/ngbe: reconfigure MAC Rx when link update") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/base/ngbe_regs.h | 2 ++ drivers/net/ngbe/ngbe_ethdev.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/drivers/net/ngbe/base/ngbe_regs.h b/drivers/net/ngbe/base/ngbe_regs.h index 8a6776b0e6..b1295280a7 100644 --- a/drivers/net/ngbe/base/ngbe_regs.h +++ b/drivers/net/ngbe/base/ngbe_regs.h @@ -712,6 +712,8 @@ enum ngbe_5tuple_protocol { #define NGBE_MACRXFLT_CTL_PASS LS(3, 6, 0x3) #define NGBE_MACRXFLT_RXALL MS(31, 0x1) +#define NGBE_MAC_WDG_TIMEOUT 0x01100C + /****************************************************************************** * Statistic Registers ******************************************************************************/ diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 238533f2b8..c372fd928c 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1941,6 +1941,7 @@ ngbe_dev_link_update_share(struct rte_eth_dev *dev, bool link_up; int err; int wait = 1; + u32 reg; memset(&link, 0, sizeof(link)); link.link_status = RTE_ETH_LINK_DOWN; @@ -1998,8 +1999,13 @@ ngbe_dev_link_update_share(struct rte_eth_dev *dev, wr32m(hw, NGBE_MACTXCFG, NGBE_MACTXCFG_SPEED_MASK, NGBE_MACTXCFG_SPEED_1G | NGBE_MACTXCFG_TE); } + /* Re configure MAC RX */ + reg = rd32(hw, NGBE_MACRXCFG); + wr32(hw, NGBE_MACRXCFG, reg); wr32m(hw, NGBE_MACRXFLT, NGBE_MACRXFLT_PROMISC, NGBE_MACRXFLT_PROMISC); + reg = rd32(hw, NGBE_MAC_WDG_TIMEOUT); + wr32(hw, NGBE_MAC_WDG_TIMEOUT, reg); } return rte_eth_linkstatus_set(dev, &link); From patchwork Mon Nov 4 02:30:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147896 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CE1B545C57; Mon, 4 Nov 2024 03:08:19 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 70FDC40DF5; Mon, 4 Nov 2024 03:07:21 +0100 (CET) Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by mails.dpdk.org (Postfix) with ESMTP id F0E4B40BA0; Mon, 4 Nov 2024 03:07:16 +0100 (CET) X-QQ-mid: bizesmtp91t1730686035t673ed1e X-QQ-Originating-IP: wO7iKaH+Jwbg4Ti8gaKsFN4Y9qNlnvTIqoOoSU3vDXE= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:14 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6123460964142754284 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 12/13] net/ngbe: fix interrupt lost in legacy or MSI mode Date: Mon, 4 Nov 2024 10:30:06 +0800 Message-Id: <20241104023007.782475-13-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: OGzNw3ivHO9Cxx2zsUcXC/gPctwaghGz3jQzLPG8Ar0A+I4M96HHFwIx 6dxkpKKv7Ku942XZNbcsqrlsaCV/uHnoYUugtsbOfiOpKIYDZkNvOaz7ETBrCfStiUbOnXF 8RzcIzItDbDUR6k2adUkbqFS/NpttvmWS9ahNvet/NFEjqTFXHwVXgYskpPmOOv2COrX8f5 9L/RQmVLcvR5BepvqNBBcF1qZKoEsOh7u7hdZ/dyTaytDEbeVxmokPLLA2+PHG32YzW1gBz xv1qG6kNt2dw3tI1KB6NTXjrLKiy1X6I6yU+9AJGTAhuXapAssa0NX903V5OuOyZZUYoRRJ J5M/PPSEx7nzDm+5wTWmuiXuOjhh+caoYxerICBsmKN/jdmRMyyzl6EV3AyYP/861Zb8zaw dr3EmLtIiuhu/Hlh5wsJBYr9vMwT+CHXKSRrqZ5Coprv7AMRrEuzdbI5fPNNKlIygPWhoMi TiMnOnIbYtSEWTy4lLYJujhxaQMJRAWSZygfue8K9fNvrrvXUHjicqFmlBvuv++GuQhTQwU pYEl+cY3IWP1DgGlDy5OwJz+U1W+gKkNX3/l4B4XP3bzYlDR5nlquX5plR9JKG0kKrieEHU aLCzCc1AAfvDtQNUeESldMQ5lirSXzwLr7StSc7Hgbrxw8AHURdnrvn8/b7cbnWaj9hdBZh IyZWG3OWUrYaWO32n1homYyzNu1Y9LctZIokXvnCW1Js7eh3fBjUYwYAO5VVIio9CRnylRC TbhEu9VVbM2VNSq17EOf0C2xeRo1iqPChRHKHf4KkKk0NBedkIqJfi/KnRsPcRzX7p7/zfW sHPu7sPoR3AGJXIqbvtdL2Yam2MfZ3GTu0PrvIEMaMkJcpSj5ho6qrXHbUnavvUwR/cmshI SsUV2kZu2xNKR6TcOxbzo/zeHkwt3UzYl5Y9tHgvMNmtqDa+yUmqcvJ/dR8rPeWZR4bWc+s +34wK/S9WZRYdZ4hJqSg415mDR7vF5Ab4PaVKa5r+11CdZGWva/FjQtZshluH83TNolRq4E oE3JOTVQ== X-QQ-XMRINFO: M/715EihBoGSf6IYSX1iLFg= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org When interrupt is legacy or MSI mode, shared interrupt may cause the interrupt cannot be re-enabled. So fix to read the shared interrupt. Fixes: b9246b8fa280 ("net/ngbe: support link update") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index c372fd928c..325a9d1eaf 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -2193,6 +2193,19 @@ ngbe_dev_interrupt_get_status(struct rte_eth_dev *dev) struct ngbe_hw *hw = ngbe_dev_hw(dev); struct ngbe_interrupt *intr = ngbe_dev_intr(dev); + eicr = ((u32 *)hw->isb_mem)[NGBE_ISB_VEC0]; + if (!eicr) { + /* + * shared interrupt alert! + * make sure interrupts are enabled because the read will + * have disabled interrupts. + */ + if (!hw->adapter_stopped) + ngbe_enable_intr(dev); + return 0; + } + ((u32 *)hw->isb_mem)[NGBE_ISB_VEC0] = 0; + /* read-on-clear nic registers here */ eicr = ((u32 *)hw->isb_mem)[NGBE_ISB_MISC]; PMD_DRV_LOG(DEBUG, "eicr %x", eicr); From patchwork Mon Nov 4 02:30:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 147897 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ADB8F45C2A; Mon, 4 Nov 2024 03:08:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B199740DD5; Mon, 4 Nov 2024 03:07:23 +0100 (CET) Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by mails.dpdk.org (Postfix) with ESMTP id DC47240DC9; Mon, 4 Nov 2024 03:07:18 +0100 (CET) X-QQ-mid: bizesmtp91t1730686036tamijilf X-QQ-Originating-IP: ymfqwCqx93hPgVjJPI0Y3iC9ohClLKYKmj+R1nQXluI= Received: from wxdbg.localdomain.com ( [60.186.23.108]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 04 Nov 2024 10:07:16 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14378646305265298822 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH v3 13/13] net/ngbe: restrict configuration of VLAN strip offload Date: Mon, 4 Nov 2024 10:30:07 +0800 Message-Id: <20241104023007.782475-14-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241104023007.782475-1-jiawenwu@trustnetic.com> References: <20241028023147.60157-1-jiawenwu@trustnetic.com> <20241104023007.782475-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: ND6R2T5QMWLZT8WZEp4z+JvPciz7QwBGIhykWrajyUBiMo3IoIOr134t JO2IevgkNOpTpn5cMvpd48EmEML6O6PlnHOhopAxsCXzUEKHpfIaUFmTawJR/Y7p/S6+dWR ry3etAzgljxT6hjSbDWXlUAnklCKU2Af1TGm5+BRKl9ZiE6E4cFxhZGmV1YTfSSP2CIgWD2 aggHN94g6d1cvFXIbLAeyeOJ7BAEYaCrTUI5wFkxtBEquInXFCY1Q2QlGzI1RhxUahbkkQp BLAWaUeAo7U4wVDXq3BNtRbfNBNkOmQHcP8+BlWcY7UvtZYfOfHsz2jzIPiX80TEUuNTwha 9zq6WhHSrtiBiAGE76qfHMN1MZc7pVhm1bslbm4mrWn9WcsEwhI0ShaSYywmx1Hlp8kRz5+ GSlVzp3SZeZE7IHU9JdeMZgE+33+MEtwB5Hl184wjdsHNXbGmpp+h52fINViJmBthqxMRNj yOJN8lMy1ZDNZuiANwnpn59II9+J2PRn2BPsbTnTPBt6XycEvZotA9R3SKVhKMpld6E3N53 kPTqGG5YunmXSmh/J5HZHSbCd8jt0tIt6eRw+5DsKUvD2D5yncwFt4G+TM4yNh+1UpEqYvX R9BNzncHklTVUqr7RFY/AMUI4Q9VVCgWkmCuzfyrETY6GbVS0ggLQmuf+Kcgw4pJ+0cf+1m hdHIV4eBknNZrHWKThxlSTQpwxLMWaQEKoHOJG1Ru0zzjgmGCbC5UvQKTeRQgHxFYlO5h+m dYrdM6XSwfmF1jmeQAd9AAQ7Gur06ezu2Py/yTLtQ9gUqH7QYtFxVPDRIHXIlwfo7NNrFFZ IyTgQQHkk7oDb8pYT9lwLP9sPITryQUyzsaCQMZc1253r82dhDZcvIB3AD/debTIePlUbq7 L+B4Odr4GQzvA/t9E7e/sx5JNu6WPyByghVo5Lh153UwQu3QlaKAxBX/KgUhhCv5nwHIYdn pwfq7ZjCXUWQtPD8upnfoFq7drUlgmdxzTlv6O55mkMRU0ykpkf1sONs1Ej+GG3zboQg= X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= X-QQ-RECHKSPAM: 0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There is a hardware limitation that Rx ring config register is not writable when Rx ring is enabled, i.e. the NGBE_RXCFG_ENA bit is set. But disabling the ring when there is traffic will cause ring get stuck. So restrict the configuration of VLAN strip offload only if device is started. Fixes: 59b46438fdaa ("net/ngbe: support VLAN offload and VLAN filter") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 49 ++++++++++++++-------------------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 325a9d1eaf..08e87471f6 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -586,41 +586,25 @@ ngbe_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) } static void -ngbe_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) +ngbe_vlan_strip_q_set(struct rte_eth_dev *dev, uint16_t queue, int on) { - struct ngbe_hw *hw = ngbe_dev_hw(dev); - struct ngbe_rx_queue *rxq; - bool restart; - uint32_t rxcfg, rxbal, rxbah; - if (on) ngbe_vlan_hw_strip_enable(dev, queue); else ngbe_vlan_hw_strip_disable(dev, queue); +} - rxq = dev->data->rx_queues[queue]; - rxbal = rd32(hw, NGBE_RXBAL(rxq->reg_idx)); - rxbah = rd32(hw, NGBE_RXBAH(rxq->reg_idx)); - rxcfg = rd32(hw, NGBE_RXCFG(rxq->reg_idx)); - if (rxq->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP) { - restart = (rxcfg & NGBE_RXCFG_ENA) && - !(rxcfg & NGBE_RXCFG_VLAN); - rxcfg |= NGBE_RXCFG_VLAN; - } else { - restart = (rxcfg & NGBE_RXCFG_ENA) && - (rxcfg & NGBE_RXCFG_VLAN); - rxcfg &= ~NGBE_RXCFG_VLAN; - } - rxcfg &= ~NGBE_RXCFG_ENA; +static void +ngbe_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) +{ + struct ngbe_hw *hw = ngbe_dev_hw(dev); - if (restart) { - /* set vlan strip for ring */ - ngbe_dev_rx_queue_stop(dev, queue); - wr32(hw, NGBE_RXBAL(rxq->reg_idx), rxbal); - wr32(hw, NGBE_RXBAH(rxq->reg_idx), rxbah); - wr32(hw, NGBE_RXCFG(rxq->reg_idx), rxcfg); - ngbe_dev_rx_queue_start(dev, queue); + if (!hw->adapter_stopped) { + PMD_DRV_LOG(ERR, "Please stop port first"); + return; } + + ngbe_vlan_strip_q_set(dev, queue, on); } static int @@ -846,9 +830,9 @@ ngbe_vlan_hw_strip_config(struct rte_eth_dev *dev) rxq = dev->data->rx_queues[i]; if (rxq->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP) - ngbe_vlan_hw_strip_enable(dev, i); + ngbe_vlan_strip_q_set(dev, i, 1); else - ngbe_vlan_hw_strip_disable(dev, i); + ngbe_vlan_strip_q_set(dev, i, 0); } } @@ -910,6 +894,13 @@ ngbe_vlan_offload_config(struct rte_eth_dev *dev, int mask) static int ngbe_vlan_offload_set(struct rte_eth_dev *dev, int mask) { + struct ngbe_hw *hw = ngbe_dev_hw(dev); + + if (!hw->adapter_stopped && (mask & RTE_ETH_VLAN_STRIP_MASK)) { + PMD_DRV_LOG(ERR, "Please stop port first"); + return -EPERM; + } + ngbe_config_vlan_strip_on_all_queues(dev, mask); ngbe_vlan_offload_config(dev, mask);