From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D3C8AA0093 for ; Tue, 19 May 2020 15:09:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C86B91D6C9; Tue, 19 May 2020 15:09:57 +0200 (CEST) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id C95241D6C9 for ; Tue, 19 May 2020 15:09:56 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id s8so15838942wrt.9 for ; Tue, 19 May 2020 06:09:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=t3zZR30nUPNj9+2n0CvakZsdjJ3ualra3CQ5rRPtCkY=; b=fjesbtfOBVKNhDPFmHt9PLjvPnH6iyMotdveZ8c43ZDBkrhl/BUSwQyXXjUIfEMGKy 9tDi2YcMS/I1MXJWjHoVfWlf9/nUInnB/pXSnru4Y9FxnMOA3w0PKongEGC9xqmTMrZl v47uAm1c6ZLEX/2nPT9/PhRtr1DeAezMeqIvyBa07CMtLU2IlqN70YAloDSfIDlRnsj9 Uu/Xz+NrqVeU8VG7nOt0PrL9dCwHgDYCclmxtRR8y9cxGuy7oz/sW7VF3g5jxc4FW4E9 qvdHWGTAseaChAXLuomxXZdYUNtz2KxXKYNZgMWlIDo58TmDai7i61GVY86HdpLyh/jH 2c4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=t3zZR30nUPNj9+2n0CvakZsdjJ3ualra3CQ5rRPtCkY=; b=Gg+mKCSIWNvYTJpbCvouy2uZGuEqZeM/HSE5V2aq1BJoUvtJY1vMPCGcFrGFAwMabI GERQjDm04HScFveAVnoswiskh3FAoNGGcBOIyGHs5MKg2NzZvabcmHL4rr1/vI+z+0EV eoE5t+tOZwveSVb+rRe4NPrZc5k3n3vB3AbhoTF9eHqTV7K2dGvniSVaaETQeKlPuu00 6NvLFEIqT76JYzZPbT3wJ2aHy1aErhzkpcVXsDMduHXLB9YSTdAIblqvG4QCDswt2Tjc pOaP5q5reP9/wuncXigfzBazr6/Quf66PyRmXwkc9gm4/z5wWLt40czs7Bvi9oqr4YYw aGNQ== X-Gm-Message-State: AOAM533q+0mwJc3q8m6ICA0SCEmgq6RuIxmdtO0TtJIVLgAjHy7cj7L8 Gw3s7zg/cGPZYo6U9syaS2ux5010pN/5BCJE X-Google-Smtp-Source: ABdhPJxRbzIpKTwXoaZ+hpDFloetyBPFY6qaUCxoGUuvPjYc9XuYVDyhAyhw5phDxLq0Pu+wZsukrA== X-Received: by 2002:adf:e449:: with SMTP id t9mr25744027wrm.108.1589893796444; Tue, 19 May 2020 06:09:56 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id t71sm4036287wmt.31.2020.05.19.06.09.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:09:55 -0700 (PDT) From: luca.boccassi@gmail.com To: Chengchang Tang Cc: Wei Hu , dpdk stable Date: Tue, 19 May 2020 14:03:32 +0100 Message-Id: <20200519130549.112823-77-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com> References: <20200519125804.104349-1-luca.boccassi@gmail.com> <20200519130549.112823-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/hns3: fix default VLAN filter configuration for PF' has been queued to stable release 19.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/21/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From c6f7d7594934cd5e12d140be110dc23575f3d919 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 10 Apr 2020 19:09:29 +0800 Subject: [PATCH] net/hns3: fix default VLAN filter configuration for PF [ upstream commit b02e982743211ecac1e8e96399f7088265ad448a ] Currently, By default VLAN filter is enabled during initialization and couldn't be turned off based on hns3 PF device. If upper applications don't call rte_eth_dev_vlan_filter API function to set vlan based on hns3 PF device, hns3 PF PMD driver will can't receive the packets with vlan tag. It will leads to some compatibility issues, the behaviors of using hns3 network engine and other NICs are different. This patch disables the VLAN filter during initialization and allows the upper level applications to enable or disable the VLAN filter. Fixes: 411d23b9eafb ("net/hns3: support VLAN") Signed-off-by: Chengchang Tang Signed-off-by: Wei Hu (Xavier) --- drivers/net/hns3/hns3_ethdev.c | 65 ++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 0ce5459389..b6fac3e378 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -550,7 +550,7 @@ hns3_set_vlan_filter_ctrl(struct hns3_hw *hw, uint8_t vlan_type, } static int -hns3_enable_vlan_filter(struct hns3_adapter *hns, bool enable) +hns3_vlan_filter_init(struct hns3_adapter *hns) { struct hns3_hw *hw = &hns->hw; int ret; @@ -558,14 +558,29 @@ hns3_enable_vlan_filter(struct hns3_adapter *hns, bool enable) ret = hns3_set_vlan_filter_ctrl(hw, HNS3_FILTER_TYPE_VF, HNS3_FILTER_FE_EGRESS, false, 0); if (ret) { - hns3_err(hw, "hns3 enable filter fail, ret =%d", ret); + hns3_err(hw, "failed to init vf vlan filter, ret = %d", ret); return ret; } + ret = hns3_set_vlan_filter_ctrl(hw, HNS3_FILTER_TYPE_PORT, + HNS3_FILTER_FE_INGRESS, false, 0); + if (ret) + hns3_err(hw, "failed to init port vlan filter, ret = %d", ret); + + return ret; +} + +static int +hns3_enable_vlan_filter(struct hns3_adapter *hns, bool enable) +{ + struct hns3_hw *hw = &hns->hw; + int ret; + ret = hns3_set_vlan_filter_ctrl(hw, HNS3_FILTER_TYPE_PORT, HNS3_FILTER_FE_INGRESS, enable, 0); if (ret) - hns3_err(hw, "hns3 enable filter fail, ret =%d", ret); + hns3_err(hw, "failed to %s port vlan filter, ret = %d", + enable ? "enable" : "disable", ret); return ret; } @@ -583,6 +598,20 @@ hns3_vlan_offload_set(struct rte_eth_dev *dev, int mask) rte_spinlock_lock(&hw->lock); rxmode = &dev->data->dev_conf.rxmode; tmp_mask = (unsigned int)mask; + if (tmp_mask & ETH_VLAN_FILTER_MASK) { + /* Enable or disable VLAN filter */ + enable = rxmode->offloads & DEV_RX_OFFLOAD_VLAN_FILTER ? + true : false; + + ret = hns3_enable_vlan_filter(hns, enable); + if (ret) { + rte_spinlock_unlock(&hw->lock); + hns3_err(hw, "failed to %s rx filter, ret = %d", + enable ? "enable" : "disable", ret); + return ret; + } + } + if (tmp_mask & ETH_VLAN_STRIP_MASK) { /* Enable or disable VLAN stripping */ enable = rxmode->offloads & DEV_RX_OFFLOAD_VLAN_STRIP ? @@ -591,7 +620,8 @@ hns3_vlan_offload_set(struct rte_eth_dev *dev, int mask) ret = hns3_en_hw_strip_rxvtag(hns, enable); if (ret) { rte_spinlock_unlock(&hw->lock); - hns3_err(hw, "failed to enable rx strip, ret =%d", ret); + hns3_err(hw, "failed to %s rx strip, ret = %d", + enable ? "enable" : "disable", ret); return ret; } } @@ -918,7 +948,7 @@ hns3_init_vlan_config(struct hns3_adapter *hns) if (rte_atomic16_read(&hw->reset.resetting) == 0) init_port_base_vlan_info(hw); - ret = hns3_enable_vlan_filter(hns, true); + ret = hns3_vlan_filter_init(hns); if (ret) { hns3_err(hw, "vlan init fail in pf, ret =%d", ret); return ret; @@ -960,17 +990,29 @@ hns3_restore_vlan_conf(struct hns3_adapter *hns) { struct hns3_pf *pf = &hns->pf; struct hns3_hw *hw = &hns->hw; + uint64_t offloads; + bool enable; int ret; + /* restore vlan filter states */ + offloads = hw->data->dev_conf.rxmode.offloads; + enable = offloads & DEV_RX_OFFLOAD_VLAN_FILTER ? true : false; + ret = hns3_enable_vlan_filter(hns, enable); + if (ret) { + hns3_err(hw, "failed to restore vlan rx filter conf, ret = %d", + ret); + return ret; + } + ret = hns3_set_vlan_rx_offload_cfg(hns, &pf->vtag_config.rx_vcfg); if (ret) { - hns3_err(hw, "hns3 restore vlan rx conf fail, ret =%d", ret); + hns3_err(hw, "failed to restore vlan rx conf, ret = %d", ret); return ret; } ret = hns3_set_vlan_tx_offload_cfg(hns, &pf->vtag_config.tx_vcfg); if (ret) - hns3_err(hw, "hns3 restore vlan tx conf fail, ret =%d", ret); + hns3_err(hw, "failed to restore vlan tx conf, ret = %d", ret); return ret; } @@ -982,6 +1024,7 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) struct rte_eth_dev_data *data = dev->data; struct rte_eth_txmode *txmode; struct hns3_hw *hw = &hns->hw; + int mask; int ret; txmode = &data->dev_conf.txmode; @@ -995,9 +1038,11 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) txmode->hw_vlan_reject_untagged); /* Apply vlan offload setting */ - ret = hns3_vlan_offload_set(dev, ETH_VLAN_STRIP_MASK); + mask = ETH_VLAN_STRIP_MASK | ETH_VLAN_FILTER_MASK; + ret = hns3_vlan_offload_set(dev, mask); if (ret) { - hns3_err(hw, "dev config vlan Strip failed, ret =%d", ret); + hns3_err(hw, "dev config rx vlan offload failed, ret = %d", + ret); return ret; } @@ -1005,7 +1050,7 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) ret = hns3_vlan_pvid_set(dev, txmode->pvid, txmode->hw_vlan_insert_pvid); if (ret) - hns3_err(hw, "dev config vlan pvid(%d) failed, ret =%d", + hns3_err(hw, "dev config vlan pvid(%d) failed, ret = %d", txmode->pvid, ret); return ret; -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-19 14:04:47.597371394 +0100 +++ 0077-net-hns3-fix-default-VLAN-filter-configuration-for-P.patch 2020-05-19 14:04:44.244648880 +0100 @@ -1,8 +1,10 @@ -From b02e982743211ecac1e8e96399f7088265ad448a Mon Sep 17 00:00:00 2001 +From c6f7d7594934cd5e12d140be110dc23575f3d919 Mon Sep 17 00:00:00 2001 From: Chengchang Tang Date: Fri, 10 Apr 2020 19:09:29 +0800 Subject: [PATCH] net/hns3: fix default VLAN filter configuration for PF +[ upstream commit b02e982743211ecac1e8e96399f7088265ad448a ] + Currently, By default VLAN filter is enabled during initialization and couldn't be turned off based on hns3 PF device. If upper applications don't call rte_eth_dev_vlan_filter API function to set vlan based on @@ -14,7 +16,6 @@ upper level applications to enable or disable the VLAN filter. Fixes: 411d23b9eafb ("net/hns3: support VLAN") -Cc: stable@dpdk.org Signed-off-by: Chengchang Tang Signed-off-by: Wei Hu (Xavier) @@ -23,10 +24,10 @@ 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c -index 0b8fa0e7fc..bab4312b39 100644 +index 0ce5459389..b6fac3e378 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c -@@ -558,7 +558,7 @@ hns3_set_vlan_filter_ctrl(struct hns3_hw *hw, uint8_t vlan_type, +@@ -550,7 +550,7 @@ hns3_set_vlan_filter_ctrl(struct hns3_hw *hw, uint8_t vlan_type, } static int @@ -35,7 +36,7 @@ { struct hns3_hw *hw = &hns->hw; int ret; -@@ -566,14 +566,29 @@ hns3_enable_vlan_filter(struct hns3_adapter *hns, bool enable) +@@ -558,14 +558,29 @@ hns3_enable_vlan_filter(struct hns3_adapter *hns, bool enable) ret = hns3_set_vlan_filter_ctrl(hw, HNS3_FILTER_TYPE_VF, HNS3_FILTER_FE_EGRESS, false, 0); if (ret) { @@ -67,7 +68,7 @@ return ret; } -@@ -591,6 +606,20 @@ hns3_vlan_offload_set(struct rte_eth_dev *dev, int mask) +@@ -583,6 +598,20 @@ hns3_vlan_offload_set(struct rte_eth_dev *dev, int mask) rte_spinlock_lock(&hw->lock); rxmode = &dev->data->dev_conf.rxmode; tmp_mask = (unsigned int)mask; @@ -88,7 +89,7 @@ if (tmp_mask & ETH_VLAN_STRIP_MASK) { /* Enable or disable VLAN stripping */ enable = rxmode->offloads & DEV_RX_OFFLOAD_VLAN_STRIP ? -@@ -599,7 +628,8 @@ hns3_vlan_offload_set(struct rte_eth_dev *dev, int mask) +@@ -591,7 +620,8 @@ hns3_vlan_offload_set(struct rte_eth_dev *dev, int mask) ret = hns3_en_hw_strip_rxvtag(hns, enable); if (ret) { rte_spinlock_unlock(&hw->lock); @@ -98,7 +99,7 @@ return ret; } } -@@ -926,7 +956,7 @@ hns3_init_vlan_config(struct hns3_adapter *hns) +@@ -918,7 +948,7 @@ hns3_init_vlan_config(struct hns3_adapter *hns) if (rte_atomic16_read(&hw->reset.resetting) == 0) init_port_base_vlan_info(hw); @@ -107,7 +108,7 @@ if (ret) { hns3_err(hw, "vlan init fail in pf, ret =%d", ret); return ret; -@@ -968,17 +998,29 @@ hns3_restore_vlan_conf(struct hns3_adapter *hns) +@@ -960,17 +990,29 @@ hns3_restore_vlan_conf(struct hns3_adapter *hns) { struct hns3_pf *pf = &hns->pf; struct hns3_hw *hw = &hns->hw; @@ -139,7 +140,7 @@ return ret; } -@@ -990,6 +1032,7 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) +@@ -982,6 +1024,7 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) struct rte_eth_dev_data *data = dev->data; struct rte_eth_txmode *txmode; struct hns3_hw *hw = &hns->hw; @@ -147,7 +148,7 @@ int ret; txmode = &data->dev_conf.txmode; -@@ -1003,9 +1046,11 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) +@@ -995,9 +1038,11 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) txmode->hw_vlan_reject_untagged); /* Apply vlan offload setting */ @@ -161,7 +162,7 @@ return ret; } -@@ -1013,7 +1058,7 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) +@@ -1005,7 +1050,7 @@ hns3_dev_configure_vlan(struct rte_eth_dev *dev) ret = hns3_vlan_pvid_set(dev, txmode->pvid, txmode->hw_vlan_insert_pvid); if (ret)