From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 26B7C468C4 for ; Tue, 10 Jun 2025 11:23:07 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1E0CF42E69; Tue, 10 Jun 2025 11:23:07 +0200 (CEST) Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by mails.dpdk.org (Postfix) with ESMTP id 2168942E70 for ; Tue, 10 Jun 2025 11:23:04 +0200 (CEST) X-QQ-mid: esmtpgz12t1749547383t7f36af83 X-QQ-Originating-IP: 9/g3eLVz5es7+B+irhIpWAN6BlQ9tCQvxs4H8Zbv6kE= Received: from w-MS-7E16.trustnetic.com ( [36.20.60.58]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 10 Jun 2025 17:23:01 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 4193623641064204038 EX-QQ-RecipientCnt: 3 From: Jiawen Wu To: mengyuanlou@net-swift.com Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 10/12] net/txgbe: restrict VLAN strip configuration on VF Date: Tue, 10 Jun 2025 17:22:35 +0800 Message-ID: <39C59FE6B7B744C9+20250610092237.232224-11-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250610092237.232224-1-jiawenwu@trustnetic.com> References: <20250610092237.232224-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz8a-1 X-QQ-XMAILINFO: NhvpCzAv3WKALJVo3WB1Ri87c7+W3HZJH15arbAKz/cmWSEkxDj91dgG VUm0tFHH0/+vpjmbBf6BGnpjcqqOLQBZv5bVumjFsyYdNiyz9PY44kFsQRMQi1Tg432q2dN qfOQE3zWJhQiEvnuoDYy12vzwRr59A7NLDoNj9dwLwCBJ2i72Y71YQbavSWKdFT/WZ8m2zq fXO0886wxkiWZIwaNnRQ+olsnzCQbJzBB8qa3Xltw0uXGocacy+jiA4jvrpoV/Wxt8mnSh/ 2fiFU4s9z1egQePHH9Z/U5tkl9hECmB0gE2lU9o3cGiqyyYDPc35k2ehiTodEVthj+WbF4E nzDjYjZ/aEAIpoNKD6lhwoVP5EZv7iR9rt/oT7AJQXJafxOs3suhSiSYTAQisW9d9M/O5GQ UJ1EAmpwBmepxzg0dJsPi/H7LQ6BtPDVUcE2pm4JONHE8lp5jzEquVENsGRXYj0F4u5o8kX HqR0M1pUB0zX2+vLq8kDAGDOjo6VuXIpdpoo5/nRJjTAzigKhs3/irRrb/Y/S7TS+zAh7/4 aKmmeydQh6/OqsC8RYCQQ+TjIzvd+IMsxN45Ea27GrYD2cUmOfVuu5Mm72N+larTVVk31UB Poq3dJjnDUacbVLiLlOsENILKNZRZmLKzDR/a32D6Vmg6s2Gsi/Hqipsm2VRcIIr2KXi5AH EAaSwSGrjZVGK0OwQTJYQ4hJJR4n5cUJOQY/+B9pEjQu+mdXjh4CiKwdiWe+K1EFynA6Mn1 wJlrIbDgFHV8rv0NQAfNAFhD2gYwCJG2MpguAAT7XgxBdnWQHabV9g99VF4NVonk9erwL1H ME7FQbhmx3weKj0kKXKGKCqDaMVbSyMA2zl00sGQ1pJOC9ddvDqJCWkHCBmJELTCdCHIFKU fQfvAOz/TdQ5Kgax91qIWlwdHpp4K2yZlVN3Jwdjfv/2rT2jvrKle7OBQpqkrRoBFn4vBNm 2d4egmtYurtmASy2NHat7XvUe9LWLM18F0JqYWOC1U1N0wnoVuYoloHRpue0JrCzSRb8pX3 gN/i7RG2DY7PMUmirnZy4zY6A12kxjiWFWon6bwicbIZVJRjFusZrCrMhe2Sdga1ph69kWn ShdO7DjwZgKAehnjLQDjq0/0xjIJIq8eipuRKHYkv3E X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= X-QQ-RECHKSPAM: 0 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Fix the same issue as PF in commit 66364efcf958 ("net/txgbe: restrict configuration of VLAN strip offload"). There is a hardware limitation that Rx ring config register is not writable when Rx ring is enabled, i.e. the TXGBE_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: aa1ae7941e71 ("net/txgbe: support VF VLAN") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev_vf.c | 31 +++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/drivers/net/txgbe/txgbe_ethdev_vf.c b/drivers/net/txgbe/txgbe_ethdev_vf.c index c0d8aa15b2..847febf8c3 100644 --- a/drivers/net/txgbe/txgbe_ethdev_vf.c +++ b/drivers/net/txgbe/txgbe_ethdev_vf.c @@ -935,7 +935,7 @@ txgbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) } static void -txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) +txgbevf_vlan_strip_q_set(struct rte_eth_dev *dev, uint16_t queue, int on) { struct txgbe_hw *hw = TXGBE_DEV_HW(dev); uint32_t ctrl; @@ -946,20 +946,28 @@ txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) return; ctrl = rd32(hw, TXGBE_RXCFG(queue)); - txgbe_dev_save_rx_queue(hw, queue); if (on) ctrl |= TXGBE_RXCFG_VLAN; else ctrl &= ~TXGBE_RXCFG_VLAN; - wr32(hw, TXGBE_RXCFG(queue), 0); - msec_delay(100); - txgbe_dev_store_rx_queue(hw, queue); - wr32m(hw, TXGBE_RXCFG(queue), - TXGBE_RXCFG_VLAN | TXGBE_RXCFG_ENA, ctrl); + wr32(hw, TXGBE_RXCFG(queue), ctrl); txgbe_vlan_hw_strip_bitmap_set(dev, queue, on); } +static void +txgbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) +{ + struct txgbe_hw *hw = TXGBE_DEV_HW(dev); + + if (!hw->adapter_stopped) { + PMD_DRV_LOG(ERR, "Please stop port first"); + return; + } + + txgbevf_vlan_strip_q_set(dev, queue, on); +} + static int txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask) { @@ -972,7 +980,7 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask) for (i = 0; i < dev->data->nb_rx_queues; i++) { rxq = dev->data->rx_queues[i]; on = !!(rxq->offloads & RTE_ETH_RX_OFFLOAD_VLAN_STRIP); - txgbevf_vlan_strip_queue_set(dev, i, on); + txgbevf_vlan_strip_q_set(dev, i, on); } } @@ -982,6 +990,13 @@ txgbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask) static int txgbevf_vlan_offload_set(struct rte_eth_dev *dev, int mask) { + struct txgbe_hw *hw = TXGBE_DEV_HW(dev); + + if (!hw->adapter_stopped && (mask & RTE_ETH_VLAN_STRIP_MASK)) { + PMD_DRV_LOG(ERR, "Please stop port first"); + return -EPERM; + } + txgbe_config_vlan_strip_on_all_queues(dev, mask); txgbevf_vlan_offload_config(dev, mask); -- 2.48.1