patch 'net/bnxt: fix handling of VF configuration change' has been queued to stable release 21.11.1
Kevin Traynor
ktraynor at redhat.com
Mon Feb 21 16:34:09 CET 2022
Hi,
FYI, your patch has been queued to stable release 21.11.1
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 02/26/22. 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/kevintraynor/dpdk-stable
This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/f2c08d53a10b517ed5fd0a92146c770dd09a6938
Thanks.
Kevin
---
>From f2c08d53a10b517ed5fd0a92146c770dd09a6938 Mon Sep 17 00:00:00 2001
From: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Date: Tue, 4 Jan 2022 14:08:19 +0530
Subject: [PATCH] net/bnxt: fix handling of VF configuration change
[ upstream commit 6c63f3495e3563869461ec523d13cbb7fcf67d82 ]
When there is a change in the default VLAN of the VF,
FW sends the VF_CFG_CHANGE async event to the driver.
Upon receiving this async event, driver currently only queries
the FW using HWRM_FUNC_QCFG. But this is not enough.
Driver has to clean up the existing filter and recreate filters
so the FW can apply the default VLAN to the filter.
Fixes: 12213821a8a3 ("net/bnxt: register for more async events")
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur at broadcom.com>
---
drivers/net/bnxt/bnxt.h | 3 +++
drivers/net/bnxt/bnxt_cpr.c | 25 ++++++++++++++++++++++++-
drivers/net/bnxt/bnxt_ethdev.c | 5 +++--
3 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 64866de319..9c0dbc6af4 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -1069,4 +1069,7 @@ uint32_t bnxt_get_speed_capabilities(struct bnxt *bp);
int bnxt_flow_ops_get_op(struct rte_eth_dev *dev,
const struct rte_flow_ops **ops);
+int bnxt_dev_start_op(struct rte_eth_dev *eth_dev);
+int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev);
+void bnxt_handle_vf_cfg_change(void *arg);
#endif
diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
index a43b22a8f8..e1dcf3ac2f 100644
--- a/drivers/net/bnxt/bnxt_cpr.c
+++ b/drivers/net/bnxt/bnxt_cpr.c
@@ -108,4 +108,24 @@ static void bnxt_handle_event_error_report(struct bnxt *bp,
}
+void bnxt_handle_vf_cfg_change(void *arg)
+{
+ struct bnxt *bp = arg;
+ struct rte_eth_dev *eth_dev = bp->eth_dev;
+ int rc;
+
+ /* Free and recreate filters with default VLAN */
+ if (eth_dev->data->dev_started) {
+ rc = bnxt_dev_stop_op(eth_dev);
+ if (rc != 0) {
+ PMD_DRV_LOG(ERR, "Failed to stop Port:%u\n", eth_dev->data->port_id);
+ return;
+ }
+
+ rc = bnxt_dev_start_op(eth_dev);
+ if (rc != 0)
+ PMD_DRV_LOG(ERR, "Failed to start Port:%u\n", eth_dev->data->port_id);
+ }
+}
+
/*
* Async event handling
@@ -139,6 +159,9 @@ void bnxt_handle_async_event(struct bnxt *bp,
break;
case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE:
- PMD_DRV_LOG(INFO, "Async event: VF config changed\n");
+ PMD_DRV_LOG(INFO, "Port %u: VF config change async event\n", port_id);
+ PMD_DRV_LOG(INFO, "event: data1 %#x data2 %#x\n", data1, data2);
bnxt_hwrm_func_qcfg(bp, NULL);
+ if (BNXT_VF(bp))
+ rte_eal_alarm_set(1, bnxt_handle_vf_cfg_change, (void *)bp);
break;
case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED:
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 83fb3861c3..4dc9cd9598 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -1532,5 +1532,5 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev)
/* Unload the driver, release resources */
-static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
+int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
{
struct bnxt *bp = eth_dev->data->dev_private;
@@ -1548,5 +1548,5 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
}
-static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
+int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)
{
struct bnxt *bp = eth_dev->data->dev_private;
@@ -1680,4 +1680,5 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
rte_eal_alarm_cancel(bnxt_dev_recover, (void *)bp);
bnxt_cancel_fc_thread(bp);
+ rte_eal_alarm_cancel(bnxt_handle_vf_cfg_change, (void *)bp);
if (eth_dev->data->dev_started)
--
2.34.1
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2022-02-21 15:22:45.965975762 +0000
+++ 0060-net-bnxt-fix-handling-of-VF-configuration-change.patch 2022-02-21 15:22:44.139704234 +0000
@@ -1 +1 @@
-From 6c63f3495e3563869461ec523d13cbb7fcf67d82 Mon Sep 17 00:00:00 2001
+From f2c08d53a10b517ed5fd0a92146c770dd09a6938 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 6c63f3495e3563869461ec523d13cbb7fcf67d82 ]
+
@@ -15 +16,0 @@
-Cc: stable at dpdk.org
@@ -39 +40 @@
-index 593eebfb9a..9b9285b799 100644
+index a43b22a8f8..e1dcf3ac2f 100644
@@ -79 +80 @@
-index cf3bd77035..999a9a5103 100644
+index 83fb3861c3..4dc9cd9598 100644
@@ -82 +83 @@
-@@ -1531,5 +1531,5 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev)
+@@ -1532,5 +1532,5 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev)
@@ -89 +90 @@
-@@ -1547,5 +1547,5 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
+@@ -1548,5 +1548,5 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
@@ -96 +97 @@
-@@ -1679,4 +1679,5 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
+@@ -1680,4 +1680,5 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
More information about the stable
mailing list