[PATCH v7] net/nfp: fix the promiscuous mode functions
Chaoyong He
chaoyong.he at corigine.com
Sat Oct 22 10:11:48 CEST 2022
The original functions of promiscuous mode can't process the
representor port rightly, revise the logic to do that.
Fixes: e1124c4f8a45 ("net/nfp: add flower representor framework")
Signed-off-by: Chaoyong He <chaoyong.he at corigine.com>
---
drivers/net/nfp/flower/nfp_flower.h | 2 ++
drivers/net/nfp/flower/nfp_flower_representor.c | 47 +++----------------------
drivers/net/nfp/flower/nfp_flower_representor.h | 2 ++
drivers/net/nfp/nfp_common.c | 10 +++++-
4 files changed, 17 insertions(+), 44 deletions(-)
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index 12a0fb5..f199741 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -6,6 +6,8 @@
#ifndef _NFP_FLOWER_H_
#define _NFP_FLOWER_H_
+#include "../nfp_common.h"
+
/*
* Flower fallback and ctrl path always adds and removes
* 8 bytes of prepended data. Tx descriptors must point
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index f1cd298..5809c83 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -414,45 +414,6 @@
}
static int
-nfp_flower_repr_promiscuous_enable(struct rte_eth_dev *dev)
-{
- struct nfp_net_hw *pf_hw;
- struct nfp_flower_representor *repr;
-
- repr = (struct nfp_flower_representor *)dev->data->dev_private;
- pf_hw = repr->app_fw_flower->pf_hw;
-
- if (!(pf_hw->cap & NFP_NET_CFG_CTRL_PROMISC)) {
- PMD_DRV_LOG(INFO, "Promiscuous mode not supported");
- return -ENOTSUP;
- }
-
- if (pf_hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) {
- PMD_DRV_LOG(INFO, "Promiscuous mode already enabled");
- return 0;
- }
-
- return nfp_net_promisc_enable(pf_hw->eth_dev);
-}
-
-static int
-nfp_flower_repr_promiscuous_disable(struct rte_eth_dev *dev)
-{
- struct nfp_net_hw *pf_hw;
- struct nfp_flower_representor *repr;
-
- repr = (struct nfp_flower_representor *)dev->data->dev_private;
- pf_hw = repr->app_fw_flower->pf_hw;
-
- if ((pf_hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {
- PMD_DRV_LOG(INFO, "Promiscuous mode already disabled");
- return 0;
- }
-
- return nfp_net_promisc_disable(pf_hw->eth_dev);
-}
-
-static int
nfp_flower_repr_mac_addr_set(struct rte_eth_dev *ethdev,
struct rte_ether_addr *mac_addr)
{
@@ -566,8 +527,8 @@
.stats_get = nfp_flower_repr_stats_get,
.stats_reset = nfp_flower_repr_stats_reset,
- .promiscuous_enable = nfp_flower_repr_promiscuous_enable,
- .promiscuous_disable = nfp_flower_repr_promiscuous_disable,
+ .promiscuous_enable = nfp_net_promisc_enable,
+ .promiscuous_disable = nfp_net_promisc_enable,
.mac_addr_set = nfp_flower_repr_mac_addr_set,
};
@@ -587,8 +548,8 @@
.stats_get = nfp_flower_repr_stats_get,
.stats_reset = nfp_flower_repr_stats_reset,
- .promiscuous_enable = nfp_flower_repr_promiscuous_enable,
- .promiscuous_disable = nfp_flower_repr_promiscuous_disable,
+ .promiscuous_enable = nfp_net_promisc_enable,
+ .promiscuous_disable = nfp_net_promisc_enable,
.mac_addr_set = nfp_flower_repr_mac_addr_set,
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h
index af44ef3..685cbe4 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.h
+++ b/drivers/net/nfp/flower/nfp_flower_representor.h
@@ -6,6 +6,8 @@
#ifndef _NFP_FLOWER_REPRESENTOR_H_
#define _NFP_FLOWER_REPRESENTOR_H_
+#include "nfp_flower.h"
+
/*
* enum nfp_repr_type - type of representor
* @NFP_REPR_TYPE_PHYS_PORT: external NIC port
diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c
index 277ea23..463eb64 100644
--- a/drivers/net/nfp/nfp_common.c
+++ b/drivers/net/nfp/nfp_common.c
@@ -37,6 +37,8 @@
#include "nfpcore/nfp_rtsym.h"
#include "nfpcore/nfp_nsp.h"
+#include "flower/nfp_flower_representor.h"
+
#include "nfp_common.h"
#include "nfp_ctrl.h"
#include "nfp_rxtx.h"
@@ -412,10 +414,16 @@
uint32_t new_ctrl, update = 0;
struct nfp_net_hw *hw;
int ret;
+ struct nfp_flower_representor *repr;
PMD_DRV_LOG(DEBUG, "Promiscuous mode enable");
- hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
+ repr = dev->data->dev_private;
+ hw = repr->app_fw_flower->pf_hw;
+ } else {
+ hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+ }
if (!(hw->cap & NFP_NET_CFG_CTRL_PROMISC)) {
PMD_INIT_LOG(INFO, "Promiscuous mode not supported");
--
1.8.3.1
More information about the dev
mailing list