[dpdk-stable] patch 'net/bnxt: check FW capability for VLAN offloads' has been queued to stable release 20.11.4
Xueming Li
xuemingl at nvidia.com
Wed Nov 10 07:28:32 CET 2021
Hi,
FYI, your patch has been queued to stable release 20.11.4
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/12/21. 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.
Queued patches are on a temporary branch at:
https://github.com/steevenlee/dpdk
This queued commit can be viewed at:
https://github.com/steevenlee/dpdk/commit/ddc5464088dc5090935ecbde16cdede63867b418
Thanks.
Xueming Li <xuemingl at nvidia.com>
---
>From ddc5464088dc5090935ecbde16cdede63867b418 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Date: Mon, 23 Aug 2021 13:42:13 +0530
Subject: [PATCH] net/bnxt: check FW capability for VLAN offloads
Cc: Xueming Li <xuemingl at nvidia.com>
[ upstream commit baedf29794aa7cf8527d6362af17dce5046b1f51 ]
VLAN offload capability may be disabled in the FW. The driver
should not attempt to override or utilize this feature in such
scenarios since it will not work as expected.
Fixes: 0a6d2a720078 ("net/bnxt: get device infos")
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur at broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson at broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
---
drivers/net/bnxt/bnxt.h | 6 +++---
drivers/net/bnxt/bnxt_ethdev.c | 4 ++++
drivers/net/bnxt/bnxt_hwrm.c | 9 +++++++++
3 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index f85409878c..c8c6dc4e83 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -567,8 +567,7 @@ struct bnxt_rep_info {
ETH_RSS_NONFRAG_IPV6_UDP | \
ETH_RSS_LEVEL_MASK)
-#define BNXT_DEV_TX_OFFLOAD_SUPPORT (DEV_TX_OFFLOAD_VLAN_INSERT | \
- DEV_TX_OFFLOAD_IPV4_CKSUM | \
+#define BNXT_DEV_TX_OFFLOAD_SUPPORT (DEV_TX_OFFLOAD_IPV4_CKSUM | \
DEV_TX_OFFLOAD_TCP_CKSUM | \
DEV_TX_OFFLOAD_UDP_CKSUM | \
DEV_TX_OFFLOAD_TCP_TSO | \
@@ -581,7 +580,6 @@ struct bnxt_rep_info {
DEV_TX_OFFLOAD_MULTI_SEGS)
#define BNXT_DEV_RX_OFFLOAD_SUPPORT (DEV_RX_OFFLOAD_VLAN_FILTER | \
- DEV_RX_OFFLOAD_VLAN_STRIP | \
DEV_RX_OFFLOAD_IPV4_CKSUM | \
DEV_RX_OFFLOAD_UDP_CKSUM | \
DEV_RX_OFFLOAD_TCP_CKSUM | \
@@ -715,12 +713,14 @@ struct bnxt {
#define BNXT_FW_CAP_ADV_FLOW_MGMT BIT(5)
#define BNXT_FW_CAP_ADV_FLOW_COUNTERS BIT(6)
#define BNXT_FW_CAP_LINK_ADMIN BIT(7)
+#define BNXT_FW_CAP_VLAN_TX_INSERT BIT(9)
pthread_mutex_t flow_lock;
uint32_t vnic_cap_flags;
#define BNXT_VNIC_CAP_COS_CLASSIFY BIT(0)
#define BNXT_VNIC_CAP_OUTER_RSS BIT(1)
+#define BNXT_VNIC_CAP_VLAN_RX_STRIP BIT(3)
unsigned int rx_nr_rings;
unsigned int rx_cp_nr_rings;
unsigned int rx_num_qs_per_vnic;
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 8afe72bd96..a563c2275f 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -980,9 +980,13 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
dev_info->rx_offload_capa = BNXT_DEV_RX_OFFLOAD_SUPPORT;
if (bp->flags & BNXT_FLAG_PTP_SUPPORTED)
dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_TIMESTAMP;
+ if (bp->vnic_cap_flags & BNXT_VNIC_CAP_VLAN_RX_STRIP)
+ dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_VLAN_STRIP;
dev_info->tx_queue_offload_capa = DEV_TX_OFFLOAD_MBUF_FAST_FREE;
dev_info->tx_offload_capa = BNXT_DEV_TX_OFFLOAD_SUPPORT |
dev_info->tx_queue_offload_capa;
+ if (bp->fw_cap & BNXT_FW_CAP_VLAN_TX_INSERT)
+ dev_info->tx_offload_capa |= DEV_TX_OFFLOAD_VLAN_INSERT;
dev_info->flow_type_rss_offloads = BNXT_ETH_RSS_SUPPORT;
dev_info->speed_capa = bnxt_get_speed_capabilities(bp);
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index d8b46f932a..7d9939d1af 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -826,6 +826,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
if (flags & HWRM_FUNC_QCAPS_OUTPUT_FLAGS_LINK_ADMIN_STATUS_SUPPORTED)
bp->fw_cap |= BNXT_FW_CAP_LINK_ADMIN;
+ if (!(flags & HWRM_FUNC_QCAPS_OUTPUT_FLAGS_VLAN_ACCELERATION_TX_DISABLED)) {
+ bp->fw_cap |= BNXT_FW_CAP_VLAN_TX_INSERT;
+ PMD_DRV_LOG(DEBUG, "VLAN acceleration for TX is enabled\n");
+ }
unlock:
HWRM_UNLOCK();
@@ -883,6 +887,11 @@ int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
if (flags & HWRM_VNIC_QCAPS_OUTPUT_FLAGS_OUTERMOST_RSS_CAP)
bp->vnic_cap_flags |= BNXT_VNIC_CAP_OUTER_RSS;
+
+ if (flags & HWRM_VNIC_QCAPS_OUTPUT_FLAGS_VLAN_STRIP_CAP) {
+ bp->vnic_cap_flags |= BNXT_VNIC_CAP_VLAN_RX_STRIP;
+ PMD_DRV_LOG(DEBUG, "Rx VLAN strip capability enabled\n");
+ }
bp->max_tpa_v2 = rte_le_to_cpu_16(resp->max_aggs_supported);
HWRM_UNLOCK();
--
2.33.0
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2021-11-10 14:17:03.369223940 +0800
+++ 0028-net-bnxt-check-FW-capability-for-VLAN-offloads.patch 2021-11-10 14:17:01.774080215 +0800
@@ -1 +1 @@
-From baedf29794aa7cf8527d6362af17dce5046b1f51 Mon Sep 17 00:00:00 2001
+From ddc5464088dc5090935ecbde16cdede63867b418 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl at nvidia.com>
+
+[ upstream commit baedf29794aa7cf8527d6362af17dce5046b1f51 ]
@@ -11 +13,0 @@
-Cc: stable at dpdk.org
@@ -24 +26 @@
-index 494a1eff37..3ccc06c37c 100644
+index f85409878c..c8c6dc4e83 100644
@@ -27 +29 @@
-@@ -577,8 +577,7 @@ struct bnxt_rep_info {
+@@ -567,8 +567,7 @@ struct bnxt_rep_info {
@@ -37 +39 @@
-@@ -591,7 +590,6 @@ struct bnxt_rep_info {
+@@ -581,7 +580,6 @@ struct bnxt_rep_info {
@@ -45 +47,2 @@
-@@ -737,6 +735,7 @@ struct bnxt {
+@@ -715,12 +713,14 @@ struct bnxt {
+ #define BNXT_FW_CAP_ADV_FLOW_MGMT BIT(5)
@@ -48 +50,0 @@
- #define BNXT_FW_CAP_TRUFLOW_EN BIT(8)
@@ -50 +51,0 @@
- #define BNXT_TRUFLOW_EN(bp) ((bp)->fw_cap & BNXT_FW_CAP_TRUFLOW_EN)
@@ -53 +54,2 @@
-@@ -745,6 +744,7 @@ struct bnxt {
+
+ uint32_t vnic_cap_flags;
@@ -56 +57,0 @@
- #define BNXT_VNIC_CAP_RX_CMPL_V2 BIT(2)
@@ -62 +63 @@
-index de34a2f0bb..e072771d14 100644
+index 8afe72bd96..a563c2275f 100644
@@ -65 +66 @@
-@@ -981,9 +981,13 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
+@@ -980,9 +980,13 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
@@ -80 +81 @@
-index f29d574235..02613bd00b 100644
+index d8b46f932a..7d9939d1af 100644
@@ -83 +84 @@
-@@ -941,6 +941,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
+@@ -826,6 +826,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp)
@@ -94,3 +95,3 @@
-@@ -1001,6 +1005,11 @@ int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
- if (flags & HWRM_VNIC_QCAPS_OUTPUT_FLAGS_RX_CMPL_V2_CAP)
- bp->vnic_cap_flags |= BNXT_VNIC_CAP_RX_CMPL_V2;
+@@ -883,6 +887,11 @@ int bnxt_hwrm_vnic_qcaps(struct bnxt *bp)
+ if (flags & HWRM_VNIC_QCAPS_OUTPUT_FLAGS_OUTERMOST_RSS_CAP)
+ bp->vnic_cap_flags |= BNXT_VNIC_CAP_OUTER_RSS;
@@ -97,0 +99 @@
++
@@ -102 +103,0 @@
-+
More information about the stable
mailing list