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 961D4468C4 for ; Tue, 10 Jun 2025 11:21:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3BA4D42E7C; Tue, 10 Jun 2025 11:21:56 +0200 (CEST) Received: from smtpbg154.qq.com (smtpbg154.qq.com [15.184.224.54]) by mails.dpdk.org (Postfix) with ESMTP id 5D3A142E7C for ; Tue, 10 Jun 2025 11:21:54 +0200 (CEST) X-QQ-mid: esmtpgz11t1749547310t8b789767 X-QQ-Originating-IP: bA/B5ggNptyVlzrQKQJEYt9DFRaAe80J/oCI5IifIMw= Received: from lap-jiawenwu.trustnetic.com ( [36.20.60.58]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 10 Jun 2025 17:21:49 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 13579716122826050304 EX-QQ-RecipientCnt: 3 From: Jiawen Wu To: mengyuanlou@net-swift.com Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 11/12] net/ngbe: restrict VLAN strip configuration on VF Date: Tue, 10 Jun 2025 17:21:25 +0800 Message-Id: <20250610092126.51960-12-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20250610092126.51960-1-jiawenwu@trustnetic.com> References: <20250610092126.51960-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: N/DcPz7jUYXlofyMUST0bhmAtqrLkFtYkzqa9mzX/1QSyj1bzw9pmYF1 5CXoVUj0GMOtC7IspoFKYqfgN6BX55tai6/lG97sefxo0dwu2mnmiYdM0m2J2cSNgNqU0lJ Q/DT4nxM/AkbSj5jhH0MVWvKikiXkj04L3/CfYCvX+UvP2zVzJeaeqV9HRXo2UPIguLB+jC gICPaghGaIP1vukt5ZzOrt8Od4Fa3SmV8Zvx5P+vhwiplYRB0Oy+hXfDdyKSbiErVpAJ4DC OaKGgl5LkXmEAi4XiOLdFcybFqdWqKwcGkJ5PfGhIPychB5Yl8oMwEwFlG5TZ/rXnXD9vRo lhmi7dV+jSnJibGEE/rJPLupK1bk3rVDu6lCL4rRuS4RCjjTEv/+auisNnN1dXlum9fFBQo n+HXJeIbL8zgFx5RzDDKCdwNNjW1+fyqqwmfj9oYbnIcmOvs4w+fzJVXDtGkh/JJTHljv+u uwdZrRR384I1ckzNXzZ1CgKfCZPpFpCFs9Zivrib+2GOuofo/PZCe5k42XexH/h7L+otAWu g0nRxgPPRDUEzHFKgt1Z9ecg+dB6+2qqLwQAuMaYLXjcvuAgWDh2yr+Me+SdA/EKEzSDsS0 gkO95ACVMGKJA9mV5N8waflN6Pul2GwA0Btw4RXZvCN6AgByP6fl6dd1/OiNevNwS1CGkHR lxJ9NOBP/hCLzVwFpse1k/LdS+mz733VFMfNxk9DuHCu3tMz6ROZPguXbvmn8nIlKZHCOwb kgxrUWN168vri/bLQ0lu/7k2U8ZSL630sZ/4+D3jCAmcZEqk76wGcozrQjcCElNNcadeE3j upc37VFRmE7OJ2hi8i2XhCdiNXIeSQeHyNbyId8C9emWlZovmI/iJfaQQAn6vxbBn39ZEk0 eErDtQDf7C6czg6HoWlS8twRvN8RKe3Dnd4+PKMavQ++Rw7n/hBCQbGYYA5FwGxAFzApdFj k7BmAKZvZzw4srWqdsaEwbJzlX9jjMZfoDhuBxfqn0WQtCH7tVX9j8LesfaSxNjvob2hY3N WPHkCjqzLy2RoUhkrLF1YH2uAz6MEN872uK7aAKGtWyUCzbsM0qrpFNAfltm0osCcZxy/+1 w== X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= 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 baca8ec066dc ("net/ngbe: 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: f47dc03c706f ("net/ngbe: add VLAN ops for VF device") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev_vf.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/net/ngbe/ngbe_ethdev_vf.c b/drivers/net/ngbe/ngbe_ethdev_vf.c index 5d68f1602d..846bc981f6 100644 --- a/drivers/net/ngbe/ngbe_ethdev_vf.c +++ b/drivers/net/ngbe/ngbe_ethdev_vf.c @@ -828,7 +828,7 @@ ngbevf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) } static void -ngbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) +ngbevf_vlan_strip_q_set(struct rte_eth_dev *dev, uint16_t queue, int on) { struct ngbe_hw *hw = ngbe_dev_hw(dev); uint32_t ctrl; @@ -848,6 +848,19 @@ ngbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) ngbe_vlan_hw_strip_bitmap_set(dev, queue, on); } +static void +ngbevf_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) +{ + struct ngbe_hw *hw = ngbe_dev_hw(dev); + + if (!hw->adapter_stopped) { + PMD_DRV_LOG(ERR, "Please stop port first"); + return; + } + + ngbevf_vlan_strip_q_set(dev, queue, on); +} + static int ngbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask) { @@ -860,7 +873,7 @@ ngbevf_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); - ngbevf_vlan_strip_queue_set(dev, i, on); + ngbevf_vlan_strip_q_set(dev, i, on); } } @@ -870,6 +883,13 @@ ngbevf_vlan_offload_config(struct rte_eth_dev *dev, int mask) static int ngbevf_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); ngbevf_vlan_offload_config(dev, mask); -- 2.48.1