From patchwork Wed Oct 23 06:48:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146841 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 428F245BAC; Wed, 23 Oct 2024 08:28:19 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E31140E21; Wed, 23 Oct 2024 08:28:15 +0200 (CEST) Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by mails.dpdk.org (Postfix) with ESMTP id 01C8240E01; Wed, 23 Oct 2024 08:28:11 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664889t53722r X-QQ-Originating-IP: oCA4IFe+jX17aU1Qxklw8ScmtdZVvrtxHRUO7uc7YTY= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:08 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 4648927125785997218 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 01/13] net/txgbe: fix swfw mbox failure Date: Wed, 23 Oct 2024 14:48:24 +0800 Message-Id: <20241023064836.2017879-2-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: Nl7eTg5yGHnwQMY9YkxAIMR8GyvAT+/wdXPzgVIeno+4C85z5Rh5CFJr Vu5JhhV/XpvZlzrddZvLsimPF+Zh5FpfUJATbQjmE0S3hRX+edeQXxaSa2hiyW050rkEP0+ iKSdij7+OPpRNee6EVqKcLL57dha0tohFJqgoe8wyTbPtSKlhQQaTQWu8nSOOqBlZIHfaYD 9aCg3zT0P11iFwJkjj65taidp4qhO/PdpvPHyyc45vhwnbI6VfYyXr1VuqIAY0hKOpY4tXr TKPrz0VenzX4Cs4HjbWiyMVS1PY9Z2eW+sGJm9jswHff/cW+zHa3CllM6mXHr3nA/mEQClJ /2DVd2bFluUt0TB/O83C5bYDHrpafOWDM3Uq/TZy+ifcshvvHhVbD2yYW9z+EVUTznJssLf CGLto22/Dwatgtz1e/pfiTLh0PlVAyBtmNyDP9ia5R+bLvcX9sTCOPM6ZV1j8S6FLTKev9V leUroN3rqdZrU1EnJ05T8CoFFM2qI1X5l5mafo/5ZKLxzVo+PQU/aELyos2DBGdJ8Uh6Lac 65MrxhMcLRJ4Zfk96sHI4HKeGmDWt3L8M7k/PtAtTGRX3qOijaJwgMsacK7x0dhMEvth0G2 iG+YPNrv0etzI+OOc4FX5tkd4g4IDgVhJtMUyP9VAg1Dv9N9C1VqcnB+2ncSYq07UpHgBti 6UzjL9HbcYV6D8z+MsOxUCIsKlJjrLfe/p0ALuKMbf1+cUooz4cCkPnCHHOLgLUtCurmEWk 2xyFxwGQWSQPwWTB3eitXhTZ5oX+8Awf9vsvTgjfq5I/e3NxVz/rBrzc0YvztWA3zpk6YSA 9cX0uU1+MlqaVg+QiYxZp95nVUymQQDpWcDkD4PVikLc3PfzridkU46G7XIBfkf/FbV46Nd SNk3LTGI1gUe+7NhDdW6Y8gSev3y+t/UOZX88cqm26hSYgHcwWuO5r8/nZIGfCf4 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 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 Wed Oct 23 06:48:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146842 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 3904945BAC; Wed, 23 Oct 2024 08:28:26 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1A21040E3E; Wed, 23 Oct 2024 08:28:18 +0200 (CEST) Received: from smtpbg150.qq.com (smtpbg150.qq.com [18.132.163.193]) by mails.dpdk.org (Postfix) with ESMTP id BD80840DCD; Wed, 23 Oct 2024 08:28:13 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664891t218m0n X-QQ-Originating-IP: ZUkuZm6dp+93KEXv147etS0DdNxqTPmcTXFHbbknSvE= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:10 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 16689080069762467814 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 02/13] net/txgbe: fix VF-PF mbox interrupt Date: Wed, 23 Oct 2024 14:48:25 +0800 Message-Id: <20241023064836.2017879-3-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: Mn6sU2dhbGGPEkp2EmQrTFa7l1Dky2gxV+tnqGRjZ2vUiWMrjy9FIWXq 4Buf1wrWMQidLxW0NhfBKNmJaoICXwUy+/u3wLRx99hYQvQt1ttUnouMd/UDih+9wMsiYui whmB4DJdoTBgI0NDyTXrxiw5rUOfVC9FSMNPQDkuOsSNCM0ysv5GnS2MUNkcXJ6AdZrZeEs BP8ucHG4gNEpcUcytRedENVPmBn6atPOpjQpJpmHN4ykVdIcdJRp9adzh7MvJFX2okNydES w7MOgmaQYZkfZbsCK+naeXHsiag8Gt0hZY8uSAmS+1jI9BDxiNg/n+VKUXfeIDFBZhFIPBx e7TjLS0PL7MmISLctGDHr/J4MkXPf1qe3i5gBRLHIEgL4kawCXP173gJqWTzXaJrqalMax4 Dv5QWCnmbXVtIUK7mqQ0curau7W2fv83tdHqe8qh7RHz9Em+b1dp97Yh/8hbixoNbBe7+BR zcZxmTTQW9eAWVl/60p2xazd4BlgopvrBrqh9/V+w/DULjCHBxm6a+q7PvoeJhVA2qFlwqQ Qzy9ahKprbh6a124vlWor+dC3hZUJP1BVXBQ0Nc1cpfIS8VnscsPx7ZyfH5v/di6Mnb0lgQ R3kAgVQe3CNZLVVHP+nQe6oaQFQXo36KIHC6Y9nMDkJ7cTpDUT2OHweXfuKMRwiDj9hJPK8 OPqxy4Hr4J+a7A1Wivi0ShA1XslDERukf/YBFtDolbrlAWv9+lbL5jEp49EYAGl3k63j2vw TtfuuHgO4jfb4PMCk+5BydQKloIMD6WZvQ63EmfK7lL5tzE5VnEaKtQYfOdw1lBvZXQguVR xM7dgPFWmGP6BcUc/kk94TfH2jHk9EQfWb2dWvkNJTC9+D/oqy9XEm0oW2laHI8+nR7gWO+ E0BJtJIqmnixhNUoiqGvvyBDz4ZDqilKWg8oIrYJldpMtCBwn+E5H5ssG7rc7GI+H4NRjVf NKZ4+bCcpO7kVLQ== X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= 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 Wed Oct 23 06:48:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146843 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 B559745BAC; Wed, 23 Oct 2024 08:28:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4D26A40E0C; Wed, 23 Oct 2024 08:28:20 +0200 (CEST) Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by mails.dpdk.org (Postfix) with ESMTP id 83B7C40E27; Wed, 23 Oct 2024 08:28:16 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664893t4fksa5 X-QQ-Originating-IP: 0nEujmKGY81NtUVizeO9W+HdJhN1w7BXDl7bRi7yZ4M= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:12 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 4640885690338947477 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 03/13] net/txgbe: remove outer UDP checksum capability Date: Wed, 23 Oct 2024 14:48:26 +0800 Message-Id: <20241023064836.2017879-4-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: N0jQ/i/W/QNThG0MnRzYybwuldzLObpSU2Jlc4aRGSGIaV0ORRwme5Ec YVdb4F3TW/TKKlWSKo3xvxH9bZlrpyBkqTU44r0nDVQGABqS/hGlpMDhme2WNvlLqkwmVmF 4592lVxVEYRagRAiBUsQfb5cg+WhXA4tFiCyw1J7yOW6GAjQXL5Pvbo1M3SDQQzRnGA1qVp gSQZoohrxb2aN98/f6cQ4SlSCgDayj3eZ+XAWIAOup4XL7KHsAFNl/lwGJHbejYWyHe/Or4 ENKoGC8lEDidDlVST28TJfpEjfMJtqQBMNeKnzNHDi381OJhzNuWdOqt36+nhymJ/QwP2Mt EoLZ/K31z6OUVCEhbF8cbAuEoElwO4F+COLx2+G3XZIT8SuWzSueJPMoRuqDxErVMItsRhp a2lYNyiMKVim/Brm+JmlkZZWNiqjrQLvNLcqBNuHLQ0Wi2rInB9MsBmYG/gzZ+L4zk4Rzab rfDwDkHKrXD+CCNQqfVmXwE9Vj9Y+5Pr/mRmDEwmchVn0MZ+DtNZFaYaw9j7qCuEbAmD2oT 6I8loBjhvBpTXVpP05OD6efufUWQRW36cTXbUOvTLQEYWNItppp9gUkQ9WCG5GDhgJo2ZC+ 7PI7tyXGSWVrMDE/RKiHp57Sgmvw6ZtaTC+tnd3veg65Uit6vBJD2pXglCYPod6vp/+gnID SRYKPmiIkYvRO9tjXPW7M/NzoAnGPr10XXPFQAzWXdsdCeXhnu8wdBaprR4Bm3xMrTb6klP ZO8gUnKP2VIAVKEBtjfHUwscK7o2fw8T6CGkaM9egFgDQqzl54kI0OX635EANdqsj7NgoV3 vfbDMLC2c+4eDm2qTbSxXjcXpW1TsGOMkDpAeCSs8Z+JxNpt/KbTq6cQI+JIPFMgdCClVXI srfB9iqDmfO+9diOTsL2xxJN2s1Kj7fAbTMbTnDt9+FdwXpfy3M8Oz9rAtEelPBl6PRK63Y UIZJ5gn+P672wvixJtXlW60Nt+cyRszU3D98= 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 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 Wed Oct 23 06:48:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146844 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 D2B5745BAC; Wed, 23 Oct 2024 08:28:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A65E240E4C; Wed, 23 Oct 2024 08:28:22 +0200 (CEST) Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by mails.dpdk.org (Postfix) with ESMTP id ABDB740E44; Wed, 23 Oct 2024 08:28:18 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664896t590y2x X-QQ-Originating-IP: Yx56wH5wBlJTOXAyW1BKuKi4pv1VTJP6AMYKEkFFaLI= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:14 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14928773688920118237 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 04/13] net/txgbe: fix driver load bit to inform firmware Date: Wed, 23 Oct 2024 14:48:27 +0800 Message-Id: <20241023064836.2017879-5-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: MBREESna/OUiXkaDSI6/oSAztDnjeCBFANc7jsxyLxuPczST2eaHv+Wb tneuNgqx04u/eL0vlO8BtjZmKsvdPPW3v487gAGHOXomxMy2ksiP6ObKBD5/B4AJTJB4jTV 0Zqlt3pOdkop+c4uOkKp4cRVpQi/PDtpLDgZhZwSZOG1oy8l8kZYSQ0CZ86tpQNiHBRH++4 BHlKn3WRHzI1lk61RdRfLstcgHRnZ31cbo6Q3dUaWW25SVv4sLb//haocssWiPrA/giV31p NptsedenyWvV3mkApy1qylSIOxaAtSwmDs31j0ZRy0rTGdnJhfc5iY0zpBO82rTBDPn/SrI iVPjiOV3s4KP62URS8R9l4DthhdGtAtE62qtONlTwyaXOrtI0gQfVVMa7maj3JDEH2csutE Zarj2L40IOm8EP8L/2HEHtbPNUqclhIrVk9r790/d8BQdRTxOlkdaOfPk0+RTalYtNTZwED CSKt3X6maYJNX/LeU02txkCu3dj17mOT6TgYgSG2FqhqjQLhLZbV8C6lE6UrsOrONtmJflQ O1hYoGT/V+QonV3w9W0jrQLEy8xax2KnvboDHQDVTr0caYhIXjv4+BsxufGjUmLC427CQbQ BGaaJOMExHCZEGdBeRorCfdJ3wA6D7/oNYiuKJ04GSBSrybXA9MZLdEb4P69Ab3w0n1lPtd tyvgxaMWL0kxqe7nMK1LUvFOWb3pn7IMZp/Dfd4XijKcdVU1lcKjPtv3nSDkUBqUMLxupuy e19MxKkTKXC1qBospBLCEc2bLQAU2oZEcWdvfVik+mkOE1cjq4VyC/PAlW4kB/PJo4YuqkH WCoMiD9jUHe1PsXL+qOnvMxezDN04V3rURior4x+sbZ3uQYJIIDiU/fQCclW1ipYEE0yGQM uuf6ZJRUbwxVmzf+fD/8Bz1o5ZyY/seV7E7kPnuIk7ZjiiNBFhF1meAVJei5q4ITPBpoXqy 8dk9lPUOr0mw0D9mj8NpKgVQ0CzqfbdYHandE/zjeTFEE0/wMzZ60Or6+ X-QQ-XMRINFO: NyFYKkN4Ny6FSmKK/uo/jdU= 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 Wed Oct 23 06:48:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146846 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 97CC845BAC; Wed, 23 Oct 2024 08:28:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C67C640ED3; Wed, 23 Oct 2024 08:28:33 +0200 (CEST) Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by mails.dpdk.org (Postfix) with ESMTP id 0BA4A40ED8 for ; Wed, 23 Oct 2024 08:28:22 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664898t8ubu24 X-QQ-Originating-IP: 8egFJLCNtJnfHMO4lkd+ARicvOR4b1D02jg5c7ZxVJc= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:17 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11849800435508896640 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 05/13] net/txgbe: enable Tx descriptor error interrupt Date: Wed, 23 Oct 2024 14:48:28 +0800 Message-Id: <20241023064836.2017879-6-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: OMxr5LZhXS0MQqzLzCb16cE09k0DhgRqMD551tjuda7CiOHS/WjrtjjP X0VNi3jLET+8cubreEu/4tZoHrvb/vKw4wF2iatROzp/wZXoFjDQkQVImLkkcopE1Qc5Baw bOTn9I/0dq/54QYC4sGwIAZnYvCVH98p7ZWisH5SqvX48JAoiNVW9uV0t9Q0uXHTpgrEQ0/ op9ibJIq10dIS4GV2Hfxdlk6m/09zWwW7o4d8nSYmrGGEeFySfXI6UMCSpJaR8AaXIcSHx3 3q22kzwcHn9uWhL50txJdlXTSvdtDz90Wz2nBkT2g9WV90NukTbpeUCZcstDLsux403cZCs wW7B3QgROu0CiZ44RSjTBXwUsUCINvwc4LhyvJDqZCTJMfql9g18yJRo1YhLGuqy7Devg9d dCihYAUJCf9FhmGIg5VFfbrjgAk8w9PuI8Q6XqmD0T1zkZHwNNVyaE0Jn41YLSQByD4F1R7 PObC03s4K1Kyh5KW6d91QiTiCZhZGfUn4MEWVVMq6ohD4R1Gm7NDWPGLB19O5Bg3HnEpdcr r0/2HFQl7lo5P93YFv/Vbo+m7EP8ZfRBV3pZdfJ4Uvt1Xpxh6PyyAR4BrD3V0etBsK7c1vo LZHTNleXB8j7XAs/L4i5+mqAwzN+4yedl60qSoJfWVoaUodaKhzFqDlaXiPX1o9ikBEe1h7 5m0GJFAhVjciqYpzgQYA4N0jKLZ2b3dL7gbmYgeFVU0v9L+Q/jaxR3Yn6XXKjFuRR0fuohB Vvlgcbb6UImDaQuTqy1Jw43RdnPEi0swrnUum/C3rXcTjI4wD3L7S2FSD6hOT437whuJP5E 8FojMdD0IGJJPaksyTm4R7FI+QBJhQOTanazG6deBenJkORmRMzPb3CoosjcZPJLLo5jSbl a7Mxv0Yr8E8kFbqCIFeCqULZHxm10f2fx7ThBuIEyOl5kIC3Gd+rl0gzymdCMGSUzcwbeCv YLdGk8vzKsnp6j7PNyjvTulENMRY+7ZK2onM= 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 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 Wed Oct 23 06:48:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146845 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 B1EAE45BAC; Wed, 23 Oct 2024 08:28:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B6AE140E48; Wed, 23 Oct 2024 08:28:32 +0200 (CEST) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id E805040EAB for ; Wed, 23 Oct 2024 08:28:22 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664900t90be8s X-QQ-Originating-IP: O8pLusyTCp2g6UaUDGStZUehezqvjJG7F0WvKfpdpNE= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:19 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11026731863707986185 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 06/13] net/txgbe: check length of Tx packets Date: Wed, 23 Oct 2024 14:48:29 +0800 Message-Id: <20241023064836.2017879-7-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NkLA2q2LD229F9bTKGFzFMMeY3v46guvgIYgVLmMFJaZnSjqjp/e+sFv yElWx2F/9e9FexR/x1JGl+ye2t9bOqHeEqJoPuidiLD414x2jbqNjHGPcC86RZOn0Z8oM8y QHJeKQAlvbC4ILAC8UEVvZ4U4sXDRcDKEvgbk8S34RJ/7t0/0IktlZGrkAHqh/LTGxr+CAA ouAsFjAnXBJvA+teL8wTAO514KzSls6lg4WfR+QcJqUC8E2lh8lIQuRyHaRTGMYZzlBKYZ4 Gkxo6mquQHupKhpvr82yENCCLXKvZpdmpxQ6rWfwOapxWn+yEyDP/f2fqyXLQbFQpFYUuyc a8Ix0KNyX6EoKIyt8uUTIq3d69HV0mFB0RtfU5aUzJagSXE4z4gCJezuE+hkdvsw0PMcWIK ur1HIf1qGHp+xwQpqswid+QI5sRa+dH0XqmUubUBg6F0s8z8wlkUsPwAGX+nBN5+MhjoGUF BBhMDMfshB5FEZl9ohNZ4viK79eFujvpoOnVIC7F1KqhxlD22GUHIM5QQVk1LDsJhdSOIv4 Np7JgMM8bDOU7VB4zZJOaGHw30FBoc1hlBvzJYTc2Prerr6XYmUHQfNNFe7AUb15LDWxwX/ 3EYYLC8FBQF7szSVxbcDckg8eQKkG7rHdZt9C3gNv6E+v9+t2qWWo7Yv7Ab+pQQBv0wKDyn r7GZrupQzutY9jaB6tkvEwn3LrTvqZeyi1ZWmcRR3vnUjpgZd2w1xjNpqlstxy98FSXrNUL iqFVDqQ30qUR7w1sqGiqFcmgEWTERaR4OMcMU9mGStfepuFHuI8TkUKSmWaryn4dyUPaPTq G90QGLUn1KAF28uma+JnNwAp3zUxerb+S+92aRYsuMzC01W3nwYuoZ1YlW1KWuNX0eex6ns aggYGGrkb1Vz5NnZIObdV9hHFF9LVxxavXFzKvpvSjOzrPEnPnAJFTGozuJTtT2+e3bWd5l wumEL+CbIVINZN1m11Azo2L80 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. Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_rxtx.c | 33 +++++++++++++++++++++++++ drivers/net/txgbe/txgbe_rxtx_vec_neon.c | 11 ++++++--- drivers/net/txgbe/txgbe_rxtx_vec_sse.c | 11 ++++++--- 3 files changed, 49 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..14be7886ef 100644 --- a/drivers/net/txgbe/txgbe_rxtx_vec_neon.c +++ b/drivers/net/txgbe/txgbe_rxtx_vec_neon.c @@ -476,9 +476,14 @@ 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; + uint64x2_t descriptor; + + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = TXGBE_FRAME_SIZE_DFT; + + 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 Wed Oct 23 06:48:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146847 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 4C32645BAC; Wed, 23 Oct 2024 08:28:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E5C6C40EE1; Wed, 23 Oct 2024 08:28:34 +0200 (CEST) Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by mails.dpdk.org (Postfix) with ESMTP id 27E8C40E44 for ; Wed, 23 Oct 2024 08:28:24 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664902t2fcqpr X-QQ-Originating-IP: iuIuRNZYrIsyFvCzlxJJZcVq5UEdNf6iBmSPosXjHYE= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:21 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 13443699343871972369 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 07/13] net/txgbe: add Tx descriptor error statistics Date: Wed, 23 Oct 2024 14:48:30 +0800 Message-Id: <20241023064836.2017879-8-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: New1l5u9k9F/Vr7RME7rxy4Ngxoap6K4Vw5OxGvICEv+DlgxluBnBmO+ 6wGc8EhaETY1SIxFLZBLF/dXAOZ1/6lDColKXkAKWIsI48kMpyPi2E6lf6smE2TT13MBwTz kxoTsxVwDl4/iq5lxlbj9b7Mm9K+RXF+fboQPlLabB+tQGmi5i9TGFxZLicoQ+8j/C/4A0Q bxByCPxodyvbjgeRh+/wbf3Mccd5cf+Ud5uo8W1+tPb19mNZBabuoc90ZmhRDai10fii7FH 3RHBnrxLaj5VRrHK6XU6jayK/tOZp9I35BBfwbBtIHxymoUOVub+c3xj51dzKPjgd4EB6Yr y2svMTzGZK1o8T0rdldc5c146Pnzasru+l5Jm59dFObdSIpUBSyv6yQJPy6ZdA1aNWtlRMd yFfg95wI601WYz+pt6P5tZqJLcp8L+2ORuVi5MdiXiMJTGlCz30oNIA4+eVUQJo+vsgeZc3 FefSOYQeVVm8yAJ7n1rJza+hc7viybLv6DZ82ThEhLdR4szLH4moI28NEYZ2+k1nM5lh9lg p8YBdrmZ7pJLXs6V/EvHiJh4l3xjyfR+b4/2RhqcZPMZNhvqlY2di1xHG3kX8EhZw2E5w+Z 1qfwjbLbGrznOmDDSthPlUwrhFX2p4XkNUtK+FIt1ARvdVfBrJwZb1vfOSqzcghvpSHS4Sn IB4+p8CpoALrasy/ZUYNcFZc1MiIxSkEmN0wkVS4pbKyWir6L2t+NVTIoduItQcTEGvqNbV 8nodKHQs5XipRVAZqGlQYUhTNBWdogNKYM9a0PJaU2KL/TO83/FjLydr4KJSnPKKNl56Pxl XRlhynrwoPa/NaSb3yO/zlEZ0zVReP6JhY6LQWc7YstgFJozyk5nkGKqPDimAn9nEqqM1Hx ZfW9VXYYPVyKhsN9pHWUN84biKLzxb1SRJdYwQxRgxjCNsX08abu+mvMcHaOCM40wGMuPVA cfO01sDxtHwrG/xZ6w/o9AgXzV2yiIdizPZM= 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 Count the number of packets not sent due to Tx descriptor error. Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 6 ++++++ drivers/net/txgbe/txgbe_rxtx.c | 3 +++ drivers/net/txgbe/txgbe_rxtx.h | 1 + 3 files changed, 10 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index bafa9cf829..0c76e986f4 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; } diff --git a/drivers/net/txgbe/txgbe_rxtx.c b/drivers/net/txgbe/txgbe_rxtx.c index 06acbd0881..fc9e7b14f5 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,7 @@ txgbe_tx_queue_clear_error(void *param) if (!txq->resetting) continue; + 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 Wed Oct 23 06:48:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146848 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 3109045BAC; Wed, 23 Oct 2024 08:29:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6D46840EDF; Wed, 23 Oct 2024 08:28:41 +0200 (CEST) Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by mails.dpdk.org (Postfix) with ESMTP id 35B7C40DD3 for ; Wed, 23 Oct 2024 08:28:27 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664904tyyf7qc X-QQ-Originating-IP: q5HmkBw8siforKDt4zcOH9qzBxz3Zylhix4H+XWgPPg= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:23 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 3555265207022657793 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 08/13] net/ngbe: check length of Tx packets Date: Wed, 23 Oct 2024 14:48:31 +0800 Message-Id: <20241023064836.2017879-9-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: Nh77ezimFp1ij5EcLLRuS8OBJCInFO2SrqArfS6nWaaiSCmRhpH30B46 usWFH08KCf0s7+j7SHy4wjQn/0rMCRgYAtZ8NdJ5M0SB51mHG4gzrQzCKZH7IDEWx2mHuLS rAlb1At05ebkq6xAJ6OzPfwIFD7Zm+kB5R+M9J+DYOUsi8mvP+o4wolLXvuy63l/rQl3m8Y 4uhgmPQep6K0kif03abvvVWsRqS+IrWu2zHXxzoMO9UgvF5aNMrEiBOVmoTuR+/5xcxQKeb 1/+zxGHz1KFSlNjvvRbZ5X9b0+/6guNMwCL3qZ2eYCscFy9RMEg8u0PwvPz25YtK0KfyluM 7bgDIcjW8PC1OEAsi0PJSG5l3vYui5lGuw5Px224KQ2P3i+pdetvF8IQulL/yZi8ySMpkGw YANTXG8TwHUt+NT6bA09SzDUyPW8mJcOI4DcJ2Qybepnz0yJYtE3Al4Ik4JroTg2lfo2bl8 y/vSblLun9whB34O6L3Vq088UBPuvTxd60b7HfCWsz1/nYAaD2nTWZEc6cy+auTpv1n/hMs +uY+IkEgt1dzwUhR+DM523nCx06E1ccbAcls3JpVzsX4hqLhJ2jxx6d+03xbH7H8mTV02y4 lvH5rbnZUr1MRkZdgu0Nrs4AjhDb1oCMQXQKUkFEngW+bkNlf4VZXziBZ13zvpK4gRygFv6 qhxqUEqVwRuBcF0sFEmc1c7iCksGsjvRxUWf0v2LdlOi5yidKh/aNLs23YFcMNhk8rWD9MH wfhqUxsr8qiDuIZuygA29pn3WO6wn8o1IJTYJYaB4ZrOxhxtDf7QKVdqG+CA5waHhFIJfhI 8wnJ5yqy/nuTRlQzLpcHpWIDAlYmmua4ABmXsBUZcvcM4z5svyOsrorkzI3cr0yT6Ul6qwt hZ4gm9PPwTe962VWJeBk8nJt5GgL5wZg1AYfXKbgZaSpzP1NVjjFi/pADSuvif6clm0C5z4 6u3/v4wrKuvZcnIb+BKtuGjpcoLKDboVf0qPVwqJ+D3+W+Q== 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 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 | 11 ++++++--- drivers/net/ngbe/ngbe_rxtx_vec_sse.c | 11 ++++++--- 3 files changed, 49 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..d870191792 100644 --- a/drivers/net/ngbe/ngbe_rxtx_vec_neon.c +++ b/drivers/net/ngbe/ngbe_rxtx_vec_neon.c @@ -476,9 +476,14 @@ 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; + uint64x2_t descriptor; + + if (pkt_len < RTE_ETHER_HDR_LEN) + pkt_len = NGBE_FRAME_SIZE_DFT; + + 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 Wed Oct 23 06:48:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146849 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 B71CB45BAC; Wed, 23 Oct 2024 08:29:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9690D40ED6; Wed, 23 Oct 2024 08:28:42 +0200 (CEST) Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by mails.dpdk.org (Postfix) with ESMTP id D6B9240E3B for ; Wed, 23 Oct 2024 08:28:28 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664906ty5gddj X-QQ-Originating-IP: aWFRJhL762djKg1ndF/idfr2z98ZMme8dSzfvIUPSdo= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:25 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8938348752206542135 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu Subject: [PATCH 09/13] net/ngbe: add Tx descriptor error statistics Date: Wed, 23 Oct 2024 14:48:32 +0800 Message-Id: <20241023064836.2017879-10-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: M2pBd1R7V2XaPrY1DGKw+YzTcqYMavkEFh+hSlxa/fLRlIwcTkdlLoQA ShIrS5/gHkaWrX/YQwt+efItsD1Q0pMvcTWTzRks89rtt9M6ym/i3fr+50OWZa0t5+gtPHw jpr4Y+juynkHAPuEaR+3TvgBPLPkD5oWl0WI6W4R6XCPAwD9dABIrchii/9oJVmhg8tlx7u gBahYmNYLmiRZBkctd5Pal8qWQviXEg7tcg2XaToNxeGYDjxp8a8kak39AGMZDVD8X8wifx s521YsxUjCLfw20Yhne6BifCNcSi4q6pGEKjaeiA1q/DVwIo+JLeaXuHfMrcYjUDXe1gF01 XaeFz6xBSxoVVfCpinaG+hE5Y6L2z/V5vfZJF/CdrU1q+7uAK7oREEiIQHPK74IOFL21lYY ra2M7pr5vBOjeh+hiQa4RoIS3Bo7BFJUR1hi2eTXaaOw5Je9iLOs3hHWwmMtj/Y34STBCyr +VYpuhveD4tqFj3/a8n8HOsMLqHni0RqQC6UbLDapqZa72iaR9q4m9tGpGcObmRqSsHQhcL 21EMbcFrYV9J+PyeQR1T6uEiRdB0eQbW5jpRR2Wft4PBx8WfHNgall7VOy3Sy5WmjZr6ekC I6EuOpontWWM4071fa0SA6ejl2QcX6xgPm+tVj7nfG4Z3MTM9HyJXJK9E+Vqz+xmDmGrR5M 9sIfaoxIRTxrx+7HrM547s45+3f7O5XUQZLplEQ/M7UX/TypZVjtqlmrcZwhrwhBGTheYNV sont6g/tgxs6nUlPlfl1j5olRndGO3OjS2/xgO/JEsEi+6yVFV/WHKRQrWY/L4lw+uwZmSE 93TqatCjtkzWowpfPLUM4V8nGJvxUVp3QFpqeSElQLBkplZKW0oYt5CvvYxqjDOT7VyuAeg g5kofYMmhenLO6N1523SDIuczwNeXpbUHI2uoEWlbWqCktagIB98R4qfw9lPOIl/5YUUhqE p5Np60AQIHSXhLr2sCGlE9zEB X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= 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 | 6 ++++++ drivers/net/ngbe/ngbe_rxtx.c | 2 ++ drivers/net/ngbe/ngbe_rxtx.h | 1 + 3 files changed, 9 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 6c45ffaad3..d9d2daf656 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; } 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 Wed Oct 23 06:48:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146850 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 D8C2A45BAC; Wed, 23 Oct 2024 08:29:15 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CBB9B410D4; Wed, 23 Oct 2024 08:28:43 +0200 (CEST) Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by mails.dpdk.org (Postfix) with ESMTP id 57C0040E2C; Wed, 23 Oct 2024 08:28:31 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664908tyxlgph X-QQ-Originating-IP: OU42lSHJJz2hVkt3c3kKFeB+uEFmDnJNFWWHbR2sLmU= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:27 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 10229214710977705103 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 10/13] net/ngbe: fix driver load bit to inform firmware Date: Wed, 23 Oct 2024 14:48:33 +0800 Message-Id: <20241023064836.2017879-11-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NrxvMG+AXCyERbn9vmR4pzf73BfHVJ0yscKPaPVml64wYxeKM6MwBPTj raksWnOY1SgSVPX6gmNPae9y8nyjR31qQqbPaw4RooRy2jQ1BAsKdKwPBWMO99OSyVyMpcl acrIqAzvL5bddqqUUrLQ5xwmLxpd3+a9qldosWnQP06vcmP+zys3fMl2FDIPY3/z5nNLRdz 4soCLHUf8W4ouiKuPtN97zf3YOg16Msz2Lv7V6gFmYHxcFmdd0CR5aDE3E6L3+1M4XuT64Z yC16eFTqYY2Z5QIeazL1lgPgkbPuYcuDHNIq8EopFaptEoMcttPJhL+Znd+Wg3GIZymcan0 BSWAPQkqZBcHFFGZau33IeST5FR5zuu1WboeNBLGnFkDpxEYhXdie0T68ShsXIRargmZ9mO h5KvNUTDaDyqXgtUysjyC8jGs0KROw/PprFYz3ypS0rxwOKdLqKg/lYKudXEHn7ZMqfUP5d aLK8JBNSwVU2L1i1NncGD8jRxIr3Q/x1Kz2mF7iiQkbviJMrxQdwjYUbeGWMwIR2QU7s3Vw 5ue27x5CS8nPyOCnQTJjT1tsb6dIPNkw+k7svT8qjmCgBFW5pxsozGu8YxdPmuOxhtpQcj3 t5Rcj31J2v0PNWSQcTjwToJaC0opXIi22ZpQcLCp47qu24YzxmJHe8rsGkKSwZJrs2NbNDw LP9eODwUkZUVqzJEsuJsz3Tj4uO8/4wI++jFuVSm/jNnrwntniHa921oYwVnLuPt8Bd7Cxu wWOn2EB0MSPSszkVwo/GlcPOWH4hmyuAVNwY3f7jjNtO8I3ZbWV9iXcC1xDYL+joHjtOBGb V2iI/zwzen5uLjiPoNze2fmaOml78Kc4yMfypMsnlR3V+NmrCEj25k3E1H8x7PiqHykGoLY Nq2A1dng6fe49kZwrwyNNZMKXjoKmpGBElAkj+CrgFqngEXTJBJ6S3LS6eaAYw8ysTgwrzS eJTL5kmGAw97ushfehS2DmPxqXI9D3kwY1h/roWQd4c6ECaaUZplKg57KFHsro5TDHebFQy j466ZcouN2MD12PNQG X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= 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 d9d2daf656..ba46dcf2a5 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 Wed Oct 23 06:48:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146851 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 D95DF45BAC; Wed, 23 Oct 2024 08:29:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 24F7D40E96; Wed, 23 Oct 2024 08:28:53 +0200 (CEST) Received: from smtpbgsg1.qq.com (smtpbgsg1.qq.com [54.254.200.92]) by mails.dpdk.org (Postfix) with ESMTP id 5244740E2C; Wed, 23 Oct 2024 08:28:33 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664911t0f1z27 X-QQ-Originating-IP: dM3SmmuEKJ45d421//YL1zXsl+FqVeAojQlyrGpVA7g= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:30 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 5996620260891551480 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 11/13] net/ngbe: reconfigure more MAC Rx registers Date: Wed, 23 Oct 2024 14:48:34 +0800 Message-Id: <20241023064836.2017879-12-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: MR/iVh5QLeieXNwzqTzvogcKeyvoPyXRXHw/5S/AwLrxBc1kW162Wp+g p1qKS8xqO4R4obESrlXqW7xd7S+YYCc1qOA4w61F8lnmr3qdR9YqDRaJ7sWD8CKUytN6Wnf JmOEixEnPuKQ+1aBBt4PtD/aRNMmZxpe8ZKOmrQZnOD9DUCQj15gQeEyBvfhRVNTh42Uy87 0mY7NPYuPk3JmPgCInsslzJ0oj6sZwYfbkcBMYLFzuQuSiujnk8DAE6VKVzDenbFu0ks+u3 s+IYiQWejydEBLbnNkXR6xyCk1v8pv7/v+j6gknSWNUIHIH+7np/wFEEFtuEW1O7Xrc5Ez0 g9LQThRmRfAKlQVXW00wdvVVwb8aDCor4mpZ2AtqUYZ64fmePh6g9YIHDKRtZzWVHqWMvK6 h1DrfCozwvQp3JAv3t+u/THekly3HIl34geTSmXjl6fovam07eomVSj16t+LTLIH041Ij80 2qCqWe7zUg/vd2sq0T5Xeoeylo258vw3XMx2547d9NEPPB5l8mz/9+wY5tZ9Z3kGNViwGGD BSFocXwZnKXP5wW4ENfCJg9LNsyoaFDdItGY67sSSo7szCxzMqbJU4ixRBo1ZtkN20XZp+q ZdEAsJkgHioTERoi7TuDiheHkGEKGXhWX1aNzxcHrGcdqoN/vLmBr3awCZlHDaMgugwPhjm 01w9kz2kNFrJtQNgvyiZ3yhs//Wl2WXrPXxJsuQa20yFIs381IHl8y40SjhHLw32PtPbhFx elf7M6Isden8Xu1eX6Uz+cnRKozphlGtUi714J/xfqtUoDroirggVUHg5Kp3S2cNzQ3nfsG KjWITySZWDiygtaofQRPAzO3e1OjPivRxJ+nijiAJEojRt9MLPRrwx08lK5J33RC/frnm29 x1AvM7Xj+6Q/yZm41wKDQx3SoVtidr6ljaRt/tTi1mLTZam7gxwjo/nmeW7LVIBY9URWGcZ SYihyYmHPN93YUYEDrFLIlgAmKy3m/8oFWEU7lywCh/iDVu7ElM32SNpi X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= 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 ba46dcf2a5..3ea7ed43ff 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1934,6 +1934,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; @@ -1991,8 +1992,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 Wed Oct 23 06:48:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146852 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 3D2CA45BAC; Wed, 23 Oct 2024 08:29:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 48E0C40E3B; Wed, 23 Oct 2024 08:29:00 +0200 (CEST) Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by mails.dpdk.org (Postfix) with ESMTP id 5736740EDB; Wed, 23 Oct 2024 08:28:36 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664913t0kgzyq X-QQ-Originating-IP: qNu6UhmryBp8FDpYGmogZ9q3SyxuZcTiPMmxspitQ4g= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:32 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14817680273175321099 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 12/13] net/ngbe: fix interrupt lost in legacy or MSI mode Date: Wed, 23 Oct 2024 14:48:35 +0800 Message-Id: <20241023064836.2017879-13-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NQR8mRxMnur9GPkA9zCMu1emP7jsaCZ6eTPvTRHWyXylqbofHVuts7ih u+8Eu0SXTKXK2SjUG4cYBQcfQMN1pZv8z0Np57F03mtudtNYG0LsMPwjDKF0mhimaAqrniQ IGpIEf0AFo7JjjINeral2utZ0XlotQJDMeSr4k3+htgexf5Cpqx/2dCECMMcprP8fYwzj3p AmvuUJDk3VUbE1lnD9t7fOZ1GuvoiYMKSqE0dh/BPakaaS5DREXAxarhE4QgoiQ4ZyoiddE g/RiDTqwX9RA7bwqpWsArP+erQG8UkoCmRciuSl/DNhOoFKYiFp6D7WQtKoTCjYqS3zBMVc 57UZzq/9+6uOdnHfTV0s6kLTtb1MKNuf0+pan0glCcgIte/sdBKnfK+rK0bjFPKWF0zlghU hhG2p16dzapJEhuEjlDuz2MvS1q7BsfPQIvQyjs0OJ0zOJbcjui7zAF7xydqRFyBhRrHOFE ENSutnYx65kmEGNHhB1BCkJaa6dtoUYdZN0fRvdLp0OLtSMayoPLUArhNC2HmRhsMK71NI0 w6H17QmIfImeXI8O+B8EoFlO2Lgir4tDdwHFz9SFX2wcxvCr/iOZo+HN5jevBNBgnOXqe4p Kv3HmKN/6j6OGG66bfUwot3jQiPtC7HMrtU4/XRNBaeDTnyTR9ZXU6D1O0IJPMGvoR8fOHd mqyai62Ey3XOIM9A6zBPTBbNjFCTKSjjZ11CjbWVDY2lgrrJnCFw18DkxAwOQGsxEitO8us 7f08Hq4Ip0pSl3fcZUFg/gBGa5WcBLRt4mRxAEid1W3IDKxLriVfZBUMbzHWgvPOhXz5tsv lGPrEh4wJOHuB6/oBBXomGnKuOuZYJsyXQgGX+SboG7FQRFFdyevPu7pmYklzJ6k3CkAXBN ITRERJyDHMPN/TZigtUENTN1yAFPMyqyiSWGsFTB0eEmlAFz3z4NgkDXmAOq+Tldc5GS8yN OUw3QQljoeTnQyMsqpT977L4shadtc1y7jOZOy4lbCYy/j1GJx2B9kOEhWKq4LFzrTVU= 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 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 3ea7ed43ff..e7dc1c0f94 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -2186,6 +2186,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 Wed Oct 23 06:48:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 146853 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 7879045BAC; Wed, 23 Oct 2024 08:29:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B0EA341133; Wed, 23 Oct 2024 08:29:01 +0200 (CEST) Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by mails.dpdk.org (Postfix) with ESMTP id E800840ED0; Wed, 23 Oct 2024 08:28:38 +0200 (CEST) X-QQ-mid: bizesmtpsz8t1729664915t49j3k4 X-QQ-Originating-IP: BFN8/UDStL4e9wDtRLzOCcyn19oJEpDCrCqV6tVlU7I= Received: from wxdbg.localdomain.com ( [125.122.84.15]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 23 Oct 2024 14:28:34 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14610095478260556500 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 13/13] net/ngbe: restrict configuration of VLAN strip offload Date: Wed, 23 Oct 2024 14:48:36 +0800 Message-Id: <20241023064836.2017879-14-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20241023064836.2017879-1-jiawenwu@trustnetic.com> References: <20241023064836.2017879-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtpsz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: N3l5ASPewLWqlCkbh3OTYV7i2rqU44sovjS1mXFShElSzpSuc6nwM2Md RG0Hdpk01H7lVukjeNVGKcPwprVYnkX7rgOaWY27H9gMLgex47meoByXN/d9aJ61rGiG2RA nOAN1qiEHeK/j+X4Ai37DFYLtVMXEZcsAxd9OPYuXJAx0rKMTYLI/SiCaGh/Kan6naWlr0q c8BeEmojFCmJeC6lNS93ZNvZH/ki2VN2ofLRQGrhcemp6okVLC5VKfXs6SCENLwxeSuUaUO YfkEoB8AO44oIKbjzXbODw+/+uEOqHtxL1eSjy4foNvIIXJtNDK7QbhYOTaojCOqGgDrkM2 e9PaWs6vpizGCK1ObAzVrQbb/ECyKs0K1juRll32XCobC+My/DIRh1+gb80VheirXRDhPTW EeYLNE4i4zi31yU2C5bbP7QBzLUTTPNEX5GuEsG5m6uD/ayJRm/MzC5Tvajz0odHkEoTQOH SPiNpPoNjPEuHTwGFrey5sfQd0zGg01NQU9J/1KgyzenI9Sm2z/qq9gJKkRTNJ9ggQfUBQ3 6psbfXTz3NOX0nR4ESv5CjKgCWXG8g+5eUodbSn0jLg16eWl+G0R8KnBAACTovTpQ1oqH38 Qz2ET56u6Q/tb8jmGGI6Ax6MhNbJL2lKBFJBqI9NSs7FzmZ3idcz4V402LcwyHpMstzKXBf jXefXYIBRNuC6a4BqriCjQ9rxLH7qaST882EQIaPhJEqvNgp/BagomVun8FlPPMXN1kkheq CCiXk5SQCiZ8HL8WlU/eiAjU0K5kKqV1hXDw60+bbVUMxlwpOpkYN/zlnFhtP1xoUN0NGKJ 8GuKcL5RgQL2wVCHL4qdRtbWmMnOcTBtLwQDwswlHetEwWQm506jgQnqxDzEnkU5CSs0IDW LQR+IjD71PbrQ7DKMuMcckNBOdO5HukLPmGa++UWbfNg0v/NHt7a+U0BVH+yqz2ZW/UYyJL xVXUlVft1LH4I/9buxBGJsNc6ZvdKUtJqxBRxSzGt7Sj7GXp/pSDqusmV 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 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 e7dc1c0f94..eef31af233 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);