DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH 00/11] Clean up NFP PMD
@ 2023-10-28  6:15 Chaoyong He
  2023-10-28  6:15 ` [PATCH 01/11] net/nfp: use the suitable helper macro Chaoyong He
                   ` (11 more replies)
  0 siblings, 12 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

This patch series clean up the NFP PMD, by:
- Using the DPDK macro and API to replace the user defined ones.
- Remove the unneeded macro and logic.
- Remove the duplicated logic.

Chaoyong He (11):
  net/nfp: use the suitable helper macro
  net/nfp: remove the unneeded call of underlying API
  net/nfp: remove the unneeded check of process type
  net/nfp: remove the unneeded data abstraction
  net/nfp: remove the redundancy macro
  net/nfp: remove redundancy logic of init control BAR
  net/nfp: use the DPDK defined function
  net/nfp: replace hard coded value
  net/nfp: unify the PMD name with macro
  net/nfp: extract a helper function
  net/nfp: remove the redundancy logic of representor port

 drivers/common/nfp/nfp_common_ctrl.h          |  17 --
 drivers/net/nfp/flower/nfp_flower.c           | 111 +-------
 drivers/net/nfp/flower/nfp_flower.h           |   4 +-
 drivers/net/nfp/flower/nfp_flower_cmsg.c      |   3 +-
 drivers/net/nfp/flower/nfp_flower_ctrl.c      |   6 +-
 .../net/nfp/flower/nfp_flower_representor.c   | 253 +-----------------
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c            |   2 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c            |   2 +-
 drivers/net/nfp/nfp_ethdev.c                  |  88 +++---
 drivers/net/nfp/nfp_ethdev_vf.c               |  28 +-
 drivers/net/nfp/nfp_ipsec.c                   |  18 +-
 drivers/net/nfp/nfp_net_common.c              | 203 ++++++++------
 drivers/net/nfp/nfp_net_common.h              |  13 +-
 drivers/net/nfp/nfp_net_ctrl.c                |   2 +-
 drivers/net/nfp/nfp_rxtx.c                    |  11 +-
 drivers/net/nfp/nfp_rxtx.h                    |   6 -
 16 files changed, 203 insertions(+), 564 deletions(-)

-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 01/11] net/nfp: use the suitable helper macro
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 02/11] net/nfp: remove the unneeded call of underlying API Chaoyong He
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Replace the `rte_pktmbuf_mtod()` macro to with the more suitable
`rte_pktmbuf_mtod_offset()`.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_cmsg.c | 2 +-
 drivers/net/nfp/flower/nfp_flower_ctrl.c | 4 ++--
 drivers/net/nfp/nfp_rxtx.c               | 3 +--
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 2ec9498d22..4013b32fd0 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -13,7 +13,7 @@
 static char*
 nfp_flower_cmsg_get_data(struct rte_mbuf *m)
 {
-	return rte_pktmbuf_mtod(m, char *) + 4 + 4 + NFP_FLOWER_CMSG_HLEN;
+	return rte_pktmbuf_mtod_offset(m, char *, 4 + 4 + NFP_FLOWER_CMSG_HLEN);
 }
 
 static void *
diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index b4be28ccdf..d19b60bc69 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -375,7 +375,7 @@ nfp_flower_cmsg_rx_stats(struct nfp_flow_priv *flow_priv,
 	uint32_t ctx_id;
 	struct nfp_flower_stats_frame *stats;
 
-	msg = rte_pktmbuf_mtod(mbuf, char *) + NFP_FLOWER_CMSG_HLEN;
+	msg = rte_pktmbuf_mtod_offset(mbuf, char *, NFP_FLOWER_CMSG_HLEN);
 	msg_len = mbuf->data_len - NFP_FLOWER_CMSG_HLEN;
 	count = msg_len / sizeof(struct nfp_flower_stats_frame);
 
@@ -398,7 +398,7 @@ nfp_flower_cmsg_rx_qos_stats(struct nfp_mtr_priv *mtr_priv,
 	struct nfp_mtr *mtr;
 	struct nfp_mtr_stats_reply *mtr_stats;
 
-	msg = rte_pktmbuf_mtod(mbuf, char *) + NFP_FLOWER_CMSG_HLEN;
+	msg = rte_pktmbuf_mtod_offset(mbuf, char *, NFP_FLOWER_CMSG_HLEN);
 
 	mtr_stats = (struct nfp_mtr_stats_reply *)msg;
 	profile_id = rte_be_to_cpu_32(mtr_stats->head.profile_id);
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index fc94e5f0b9..644be2700e 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -448,8 +448,7 @@ nfp_net_parse_meta(struct nfp_net_rx_desc *rxds,
 	if (unlikely(NFP_DESC_META_LEN(rxds) == 0))
 		return;
 
-	meta_base = rte_pktmbuf_mtod(mb, uint8_t *);
-	meta_base -= NFP_DESC_META_LEN(rxds);
+	meta_base = rte_pktmbuf_mtod_offset(mb, uint8_t *, -NFP_DESC_META_LEN(rxds));
 	meta_header = *(rte_be32_t *)meta_base;
 
 	switch (hw->meta_format) {
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 02/11] net/nfp: remove the unneeded call of underlying API
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
  2023-10-28  6:15 ` [PATCH 01/11] net/nfp: use the suitable helper macro Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 03/11] net/nfp: remove the unneeded check of process type Chaoyong He
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Remove the unneeded call of underlying API in function
'nfp_net_pf_read_mac()`, because we already store the result of it in
data structure.

Also change the return type of this function to 'void' as there is no
abnormal exit logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 76317925ec..0fed0ef72d 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -21,7 +21,7 @@
 #include "nfp_ipsec.h"
 #include "nfp_logs.h"
 
-static int
+static void
 nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic,
 		uint16_t port)
 {
@@ -31,13 +31,9 @@ nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic,
 	/* Grab a pointer to the correct physical port */
 	hw = app_fw_nic->ports[port];
 
-	nfp_eth_table = nfp_eth_read_ports(app_fw_nic->pf_dev->cpp);
+	nfp_eth_table = app_fw_nic->pf_dev->nfp_eth_table;
 
 	rte_ether_addr_copy(&nfp_eth_table->ports[port].mac_addr, &hw->super.mac_addr);
-
-	free(nfp_eth_table);
-
-	return 0;
 }
 
 static int
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 03/11] net/nfp: remove the unneeded check of process type
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
  2023-10-28  6:15 ` [PATCH 01/11] net/nfp: use the suitable helper macro Chaoyong He
  2023-10-28  6:15 ` [PATCH 02/11] net/nfp: remove the unneeded call of underlying API Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Remove the unneeded secondary call of 'rte_eal_process_type()' in
'nfp_netvf_init()', because the first call of it already make sure only
the primary process can continue run the rest logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev_vf.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index b9cfb48021..e24fec861d 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -344,15 +344,13 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 			pci_dev->id.device_id,
 			RTE_ETHER_ADDR_BYTES(&hw->mac_addr));
 
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
-		/* Registering LSC interrupt handler */
-		rte_intr_callback_register(pci_dev->intr_handle,
-				nfp_net_dev_interrupt_handler, (void *)eth_dev);
-		/* Telling the firmware about the LSC interrupt entry */
-		nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX);
-		/* Recording current stats counters values */
-		nfp_net_stats_reset(eth_dev);
-	}
+	/* Registering LSC interrupt handler */
+	rte_intr_callback_register(pci_dev->intr_handle,
+			nfp_net_dev_interrupt_handler, (void *)eth_dev);
+	/* Telling the firmware about the LSC interrupt entry */
+	nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX);
+	/* Recording current stats counters values */
+	nfp_net_stats_reset(eth_dev);
 
 	return 0;
 
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 04/11] net/nfp: remove the unneeded data abstraction
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (2 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 03/11] net/nfp: remove the unneeded check of process type Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 05/11] net/nfp: remove the redundancy macro Chaoyong He
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

The data structure 'struct nfp_net_adapter' has only one data field and
we won't extend it in the future, which makes this abstraction unneeded,
so remove this data structure and the related macro
'NFP_NET_DEV_PRIVATE_TO_HW'.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c |  2 +-
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c  |  2 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c  |  2 +-
 drivers/net/nfp/nfp_ethdev.c        | 18 +++++-----
 drivers/net/nfp/nfp_ethdev_vf.c     |  6 ++--
 drivers/net/nfp/nfp_ipsec.c         | 18 +++++-----
 drivers/net/nfp/nfp_net_common.c    | 55 ++++++++++++++---------------
 drivers/net/nfp/nfp_net_common.h    |  3 --
 drivers/net/nfp/nfp_net_ctrl.c      |  2 +-
 drivers/net/nfp/nfp_rxtx.c          |  4 +--
 10 files changed, 54 insertions(+), 58 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index f3fedbf7e5..246dd2d454 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -848,7 +848,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,
 	}
 
 	/* Allocate memory for the PF AND ctrl vNIC here (hence the * 2) */
-	pf_hw = rte_zmalloc_socket("nfp_pf_vnic", 2 * sizeof(struct nfp_net_adapter),
+	pf_hw = rte_zmalloc_socket("nfp_pf_vnic", 2 * sizeof(struct nfp_net_hw),
 			RTE_CACHE_LINE_SIZE, numa_node);
 	if (pf_hw == NULL) {
 		PMD_INIT_LOG(ERR, "Could not malloc nfp pf vnic");
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index c85fadc80d..3f9909c6e0 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -377,7 +377,7 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev,
 	uint16_t tx_free_thresh;
 	const struct rte_memzone *tz;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index 10e6982c95..fe87ea3e25 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -454,7 +454,7 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_txq *txq;
 	const struct rte_memzone *tz;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 0fed0ef72d..8e69fa67b2 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -55,7 +55,7 @@ nfp_net_start(struct rte_eth_dev *dev)
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 	hw = &net_hw->super;
@@ -201,7 +201,7 @@ nfp_net_stop(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_disable_queues(dev);
 
@@ -224,7 +224,7 @@ nfp_net_set_link_up(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
 		/* Configure the physical port down */
@@ -239,7 +239,7 @@ nfp_net_set_link_down(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
 		/* Configure the physical port down */
@@ -262,7 +262,7 @@ nfp_net_close(struct rte_eth_dev *dev)
 		return 0;
 
 	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 
@@ -350,7 +350,7 @@ nfp_udp_tunnel_port_add(struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	enum rte_eth_tunnel_type tnl_type;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	vxlan_port = tunnel_udp->udp_port;
 	tnl_type   = tunnel_udp->prot_type;
 
@@ -388,7 +388,7 @@ nfp_udp_tunnel_port_del(struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	enum rte_eth_tunnel_type tnl_type;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	vxlan_port = tunnel_udp->udp_port;
 	tnl_type   = tunnel_udp->prot_type;
 
@@ -828,7 +828,7 @@ nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev,
 			goto port_cleanup;
 		}
 
-		hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+		hw = eth_dev->data->dev_private;
 
 		/* Add this device to the PF's array of physical ports */
 		app_fw_nic->ports[i] = hw;
@@ -1067,7 +1067,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,
 		}
 
 		eth_dev->process_private = cpp;
-		hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+		hw = eth_dev->data->dev_private;
 		nfp_net_ethdev_ops_mount(hw, eth_dev);
 
 		rte_eth_dev_probing_finish(eth_dev);
diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index e24fec861d..cb8a37bce7 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -66,7 +66,7 @@ nfp_netvf_start(struct rte_eth_dev *dev)
 	new_ctrl = nfp_check_offloads(dev);
 
 	/* Writing configuration parameters in the device */
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 	nfp_net_params_setup(net_hw);
 
@@ -258,7 +258,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 		return -ENODEV;
 	}
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	net_hw->dev_info = dev_info;
 	hw = &net_hw->super;
 
@@ -393,7 +393,7 @@ static int
 nfp_vf_pci_probe(struct rte_pci_device *pci_dev)
 {
 	return rte_eth_dev_pci_generic_probe(pci_dev,
-			sizeof(struct nfp_net_adapter), nfp_netvf_init);
+			sizeof(struct nfp_net_hw), nfp_netvf_init);
 }
 
 static int
diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c
index 7e26977dc1..9a0ae89af3 100644
--- a/drivers/net/nfp/nfp_ipsec.c
+++ b/drivers/net/nfp/nfp_ipsec.c
@@ -579,7 +579,7 @@ nfp_aead_map(struct rte_eth_dev *eth_dev,
 	const uint32_t *key;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	device_id = net_hw->device_id;
 	offset = 0;
 
@@ -667,7 +667,7 @@ nfp_cipher_map(struct rte_eth_dev *eth_dev,
 	const uint32_t *key;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	device_id = net_hw->device_id;
 
 	switch (cipher->algo) {
@@ -808,7 +808,7 @@ nfp_auth_map(struct rte_eth_dev *eth_dev,
 		return -EINVAL;
 	}
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	device_id = net_hw->device_id;
 	digest_length = digest_length << 3;
 
@@ -1082,7 +1082,7 @@ nfp_crypto_create_session(void *device,
 	sa_idx = -1;
 	eth_dev = device;
 	priv_session = SECURITY_GET_SESS_PRIV(session);
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	if (net_hw->ipsec_data->sa_free_cnt == 0) {
 		PMD_DRV_LOG(ERR, "No space in SA table, spi: %d", conf->ipsec.spi);
@@ -1163,7 +1163,7 @@ nfp_security_set_pkt_metadata(void *device,
 	sqn = params;
 	eth_dev = device;
 	priv_session = SECURITY_GET_SESS_PRIV(session);
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	if (priv_session->ipsec.direction == RTE_SECURITY_IPSEC_SA_DIR_EGRESS) {
 		struct nfp_tx_ipsec_desc_msg *desc_md;
@@ -1236,7 +1236,7 @@ nfp_security_session_get_stats(void *device,
 	memset(&msg, 0, sizeof(msg));
 	msg.cmd = NFP_IPSEC_CFG_MSG_GET_SA_STATS;
 	msg.sa_idx = priv_session->sa_index;
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	ret = nfp_ipsec_cfg_cmd_issue(net_hw, &msg);
 	if (ret < 0) {
@@ -1288,7 +1288,7 @@ nfp_crypto_remove_sa(struct rte_eth_dev *eth_dev,
 	struct nfp_ipsec_msg cfg;
 
 	sa_index = priv_session->sa_index;
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	cfg.cmd = NFP_IPSEC_CFG_MSG_INV_SA;
 	cfg.sa_idx = sa_index;
@@ -1380,7 +1380,7 @@ nfp_ipsec_init(struct rte_eth_dev *dev)
 	struct nfp_net_hw *net_hw;
 	struct nfp_net_ipsec_data *data;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 
 	cap_extend = net_hw->super.cap_ext;
 	if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) {
@@ -1427,7 +1427,7 @@ nfp_ipsec_uninit(struct rte_eth_dev *dev)
 	struct nfp_net_hw *net_hw;
 	struct nfp_ipsec_session *priv_session;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 
 	cap_extend = net_hw->super.cap_ext;
 	if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) {
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index ac97e3bed5..1260b9a3b1 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -252,7 +252,7 @@ nfp_net_configure(struct rte_eth_dev *dev)
 	struct rte_eth_rxmode *rxmode;
 	struct rte_eth_txmode *txmode;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	dev_conf = &dev->data->dev_conf;
 	rxmode = &dev_conf->rxmode;
 	txmode = &dev_conf->txmode;
@@ -329,7 +329,7 @@ nfp_net_enable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_enable_queues(&hw->super, dev->data->nb_rx_queues,
 			dev->data->nb_tx_queues);
@@ -340,7 +340,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 
 	nfp_disable_queues(&net_hw->super);
 }
@@ -367,7 +367,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 &&
 			(hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) {
@@ -407,7 +407,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 		return -ENOMEM;
 	}
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) {
 		PMD_DRV_LOG(INFO, "VF: enabling RX interrupt with UIO");
@@ -443,7 +443,7 @@ nfp_check_offloads(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_eth_conf *dev_conf;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	cap = hw->super.cap;
 
 	dev_conf = &dev->data->dev_conf;
@@ -516,7 +516,7 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev)
 		repr = dev->data->dev_private;
 		net_hw = repr->app_fw_flower->pf_hw;
 	} else {
-		net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+		net_hw = dev->data->dev_private;
 	}
 
 	hw = &net_hw->super;
@@ -551,7 +551,7 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {
@@ -588,7 +588,7 @@ nfp_net_link_update(struct rte_eth_dev *dev,
 	struct rte_eth_link link;
 	struct nfp_eth_table *nfp_eth_table;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	memset(&link, 0, sizeof(struct rte_eth_link));
 
@@ -654,7 +654,7 @@ nfp_net_stats_get(struct rte_eth_dev *dev,
 	if (stats == NULL)
 		return -EINVAL;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	memset(&nfp_dev_stats, 0, sizeof(nfp_dev_stats));
 
@@ -732,7 +732,7 @@ nfp_net_stats_reset(struct rte_eth_dev *dev)
 	uint16_t i;
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	/* Reading per RX ring stats */
 	for (i = 0; i < dev->data->nb_rx_queues; i++) {
@@ -794,7 +794,7 @@ nfp_net_xstats_size(const struct rte_eth_dev *dev)
 	const uint32_t size = RTE_DIM(nfp_net_xstats);
 
 	/* If the device is a VF, then there will be no MAC stats */
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	if (hw->mac_stats == NULL) {
 		for (count = 0; count < size; count++) {
 			if (nfp_net_xstats[count].group == NFP_XSTAT_GROUP_MAC)
@@ -828,7 +828,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	struct nfp_xstat xstat;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	xstat = nfp_net_xstats[index];
 
 	if (xstat.group == NFP_XSTAT_GROUP_MAC)
@@ -967,7 +967,7 @@ nfp_net_xstats_reset(struct rte_eth_dev *dev)
 	uint32_t read_size;
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	read_size = nfp_net_xstats_size(dev);
 
 	for (id = 0; id < read_size; id++) {
@@ -1015,7 +1015,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	uint16_t max_tx_desc;
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
@@ -1242,7 +1242,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id),
 			NFP_NET_CFG_ICR_UNMASKED);
 	return 0;
@@ -1263,7 +1263,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX);
 
 	return 0;
@@ -1301,7 +1301,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_pci_device *pci_dev;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 
 	/* Make sure all updates are written before un-masking */
@@ -1376,7 +1376,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	/* MTU setting is forbidden if port is started */
 	if (dev->data->dev_started) {
@@ -1412,9 +1412,8 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t rxvlan_ctrl = 0;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
-
 	rx_offload = dev->data->dev_conf.rxmode.offloads;
 	new_ctrl = hw->ctrl;
 
@@ -1463,7 +1462,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) {
@@ -1519,7 +1518,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1552,7 +1551,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1602,7 +1601,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t cfg_rss_ctrl = 0;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	/* Writing the key byte by byte */
@@ -1658,7 +1657,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	rss_hf = rss_conf->rss_hf;
@@ -1699,7 +1698,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,
 	uint32_t cfg_rss_ctrl;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1987,7 +1986,7 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev,
 	if (fw_size < FW_VER_LEN)
 		return FW_VER_LEN;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d",
 			hw->ver.extend, hw->ver.class,
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index 6607175460..a23b5be968 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -238,9 +238,6 @@ int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size
 int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
 
-#define NFP_NET_DEV_PRIVATE_TO_HW(adapter)\
-	(&((struct nfp_net_adapter *)adapter)->hw)
-
 #define NFP_NET_DEV_PRIVATE_TO_PF(dev_priv)\
 	(((struct nfp_net_hw *)dev_priv)->pf_dev)
 
diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c
index 5135a1ad27..ea14b98924 100644
--- a/drivers/net/nfp/nfp_net_ctrl.c
+++ b/drivers/net/nfp/nfp_net_ctrl.c
@@ -31,7 +31,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev)
 	struct nfp_net_hw *net_hw;
 	struct nfp_net_tlv_caps *caps;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	caps = &net_hw->tlv_caps;
 	nfp_net_tlv_caps_reset(caps);
 
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 644be2700e..38ce83aa46 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -840,7 +840,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_rxq *rxq;
 	const struct rte_memzone *tz;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 
@@ -1067,7 +1067,7 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (hw->ver.extend == NFP_NET_CFG_VERSION_DP_NFD3)
 		return nfp_net_nfd3_tx_queue_setup(dev, queue_idx,
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 05/11] net/nfp: remove the redundancy macro
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (3 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 06/11] net/nfp: remove redundancy logic of init control BAR Chaoyong He
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Macro 'NFP_HASH_OFFSET' and 'NFP_HASH_TYPE_OFFSET' are unused, so remove
them.
Macro 'NFP_MAX_PHYPORTS' and 'MAX_FLOWER_PHYPORTS' are redundancy, so
just keep the first one.
Macro 'NFP_NET_CFG_SPARE_ADDR', 'NFP_NET_CFG_RX_OFFSET_ADDR' and
'NFP_NET_CFG_RX_OFFSET' are redundancy, we just keep the final one.
Remove the unneeded macro 'NFP_NET_DEV_PRIVATE_TO_PF', and adjust the
related logic, to make it easier to read.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/common/nfp/nfp_common_ctrl.h | 17 -----------------
 drivers/net/nfp/flower/nfp_flower.h  |  3 +--
 drivers/net/nfp/nfp_ethdev.c         | 12 ++++--------
 drivers/net/nfp/nfp_net_common.c     |  2 +-
 drivers/net/nfp/nfp_net_common.h     |  3 ---
 drivers/net/nfp/nfp_rxtx.h           |  3 ---
 6 files changed, 6 insertions(+), 34 deletions(-)

diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h
index f92ce50fc0..7033c8ea00 100644
--- a/drivers/common/nfp/nfp_common_ctrl.h
+++ b/drivers/common/nfp/nfp_common_ctrl.h
@@ -196,11 +196,6 @@ struct nfp_net_fw_ver {
 #define NFP_NET_CFG_START_TXQ           0x0048
 #define NFP_NET_CFG_START_RXQ           0x004c
 
-/*
- * NFP-3200 workaround (0x0050 - 0x0058)
- * @NFP_NET_CFG_SPARE_ADDR:  DMA address for ME code to use (e.g. YDS-155 fix)
- */
-#define NFP_NET_CFG_SPARE_ADDR          0x0050
 /*
  * NFP6000/NFP4000 - Prepend configuration
  */
@@ -210,18 +205,6 @@ struct nfp_net_fw_ver {
 /* Start anchor of the TLV area */
 #define NFP_NET_CFG_TLV_BASE            0x0058
 
-/**
- * Reuse spare address to contain the offset from the start of
- * the host buffer where the first byte of the received frame
- * will land.  Any metadata will come prior to that offset.  If the
- * value in this field is 0, it means that the metadata will
- * always land starting at the first byte of the host buffer and
- * packet data will immediately follow the metadata.  As always,
- * the RX descriptor indicates the presence or absence of metadata
- * along with the length thereof.
- */
-#define NFP_NET_CFG_RX_OFFSET_ADDR      0x0050
-
 #define NFP_NET_CFG_VXLAN_PORT          0x0060
 #define NFP_NET_CFG_VXLAN_SZ            0x0008
 
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index 7d442e3cb2..a989c4a8b8 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -31,7 +31,6 @@
  */
 #define FLOWER_PKT_DATA_OFFSET (NFP_NET_META_HEADER_SIZE + NFP_NET_META_FIELD_SIZE)
 
-#define MAX_FLOWER_PHYPORTS 8
 #define MAX_FLOWER_VFS 64
 
 /* Forward declaration */
@@ -78,7 +77,7 @@ struct nfp_app_fw_flower {
 	uint64_t ctrl_vnic_tx_count;
 
 	/** Array of phyport representors */
-	struct nfp_flower_representor *phy_reprs[MAX_FLOWER_PHYPORTS];
+	struct nfp_flower_representor *phy_reprs[NFP_MAX_PHYPORTS];
 
 	/** Array of VF representors */
 	struct nfp_flower_representor *vf_reprs[MAX_FLOWER_VFS];
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 8e69fa67b2..7c5b780e82 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -56,7 +56,7 @@ nfp_net_start(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
 
 	net_hw = dev->data->dev_private;
-	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	pf_dev = net_hw->pf_dev;
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 	hw = &net_hw->super;
 
@@ -261,8 +261,8 @@ nfp_net_close(struct rte_eth_dev *dev)
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
 		return 0;
 
-	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	hw = dev->data->dev_private;
+	pf_dev = hw->pf_dev;
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 
@@ -482,9 +482,10 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 	struct nfp_app_fw_nic *app_fw_nic;
 
 	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
+	net_hw = eth_dev->data->dev_private;
 
 	/* Use backpointer here to the PF of this eth_dev */
-	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(eth_dev->data->dev_private);
+	pf_dev = net_hw->pf_dev;
 
 	/* Use backpointer to the CoreNIC app struct */
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
@@ -495,11 +496,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 		return -ENODEV;
 	}
 
-	/*
-	 * Use PF array of physical ports to get pointer to
-	 * this specific port.
-	 */
-	net_hw = app_fw_nic->ports[port];
 	hw = &net_hw->super;
 
 	PMD_INIT_LOG(DEBUG, "Working with physical port number: %hu, "
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index 1260b9a3b1..e3c3fa9985 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -1172,7 +1172,7 @@ nfp_net_common_init(struct rte_pci_device *pci_dev,
 	if (hw->ver.major < 2)
 		hw->rx_offset = NFP_NET_RX_OFFSET;
 	else
-		hw->rx_offset = nn_cfg_readl(&hw->super, NFP_NET_CFG_RX_OFFSET_ADDR);
+		hw->rx_offset = nn_cfg_readl(&hw->super, NFP_NET_CFG_RX_OFFSET);
 
 	hw->super.ctrl = 0;
 	hw->stride_rx = stride;
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index a23b5be968..829e9c5333 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -238,9 +238,6 @@ int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size
 int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
 
-#define NFP_NET_DEV_PRIVATE_TO_PF(dev_priv)\
-	(((struct nfp_net_hw *)dev_priv)->pf_dev)
-
 #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\
 	((struct nfp_app_fw_nic *)app_fw_priv)
 
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index 956cc7a0d2..ff1019b690 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -10,9 +10,6 @@
 
 #define NFP_DESC_META_LEN(d) ((d)->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK)
 
-#define NFP_HASH_OFFSET      ((uint8_t *)mbuf->buf_addr + mbuf->data_off - 4)
-#define NFP_HASH_TYPE_OFFSET ((uint8_t *)mbuf->buf_addr + mbuf->data_off - 8)
-
 #define RTE_MBUF_DMA_ADDR_DEFAULT(mb) \
 	((uint64_t)((mb)->buf_iova + RTE_PKTMBUF_HEADROOM))
 
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 06/11] net/nfp: remove redundancy logic of init control BAR
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (4 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 05/11] net/nfp: remove the redundancy macro Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 07/11] net/nfp: use the DPDK defined function Chaoyong He
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

There are two initialize statements of control BAR in 'nfp_net_init()'
and the first one is unneeded, and what it really use is the check of
NULL value of the 'mem_resource'. So we move the check of 'mem_resource'
to the start of probe logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 7c5b780e82..8057452799 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -503,12 +503,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 
 	rte_eth_copy_pci_info(eth_dev, pci_dev);
 
-	hw->ctrl_bar = pci_dev->mem_resource[0].addr;
-	if (hw->ctrl_bar == NULL) {
-		PMD_DRV_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured");
-		return -ENODEV;
-	}
-
 	if (port == 0) {
 		uint32_t min_size;
 
@@ -890,6 +884,11 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
 	if (pci_dev == NULL)
 		return -ENODEV;
 
+	if (pci_dev->mem_resource[0].addr == NULL) {
+		PMD_INIT_LOG(ERR, "The address of BAR0 is NULL.");
+		return -ENODEV;
+	}
+
 	dev_info = nfp_dev_info_get(pci_dev->id.device_id);
 	if (dev_info == NULL) {
 		PMD_INIT_LOG(ERR, "Not supported device ID");
@@ -1089,6 +1088,11 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)
 	if (pci_dev == NULL)
 		return -ENODEV;
 
+	if (pci_dev->mem_resource[0].addr == NULL) {
+		PMD_INIT_LOG(ERR, "The address of BAR0 is NULL.");
+		return -ENODEV;
+	}
+
 	dev_info = nfp_dev_info_get(pci_dev->id.device_id);
 	if (dev_info == NULL) {
 		PMD_INIT_LOG(ERR, "Not supported device ID");
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 07/11] net/nfp: use the DPDK defined function
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (5 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 06/11] net/nfp: remove redundancy logic of init control BAR Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 08/11] net/nfp: replace hard coded value Chaoyong He
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Use the DPDK defined function to replace the user defined macro, to make
the logic more standard.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_ctrl.c | 2 +-
 drivers/net/nfp/nfp_rxtx.c               | 4 ++--
 drivers/net/nfp/nfp_rxtx.h               | 3 ---
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index d19b60bc69..c25487c277 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -109,7 +109,7 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue,
 		/* Now resetting and updating the descriptor */
 		rxds->vals[0] = 0;
 		rxds->vals[1] = 0;
-		dma_addr = rte_cpu_to_le_64(RTE_MBUF_DMA_ADDR_DEFAULT(new_mb));
+		dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb));
 		rxds->fld.dd = 0;
 		rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
 		rxds->fld.dma_addr_lo = dma_addr & 0xffffffff;
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 38ce83aa46..be1ac32c73 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -184,7 +184,7 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
 			return -ENOMEM;
 		}
 
-		dma_addr = rte_cpu_to_le_64(RTE_MBUF_DMA_ADDR_DEFAULT(mbuf));
+		dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(mbuf));
 
 		rxd = &rxq->rxds[i];
 		rxd->fld.dd = 0;
@@ -752,7 +752,7 @@ nfp_net_recv_pkts(void *rx_queue,
 		/* Now resetting and updating the descriptor */
 		rxds->vals[0] = 0;
 		rxds->vals[1] = 0;
-		dma_addr = rte_cpu_to_le_64(RTE_MBUF_DMA_ADDR_DEFAULT(new_mb));
+		dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb));
 		rxds->fld.dd = 0;
 		rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
 		rxds->fld.dma_addr_lo = dma_addr & 0xffffffff;
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index ff1019b690..5695a31636 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -10,9 +10,6 @@
 
 #define NFP_DESC_META_LEN(d) ((d)->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK)
 
-#define RTE_MBUF_DMA_ADDR_DEFAULT(mb) \
-	((uint64_t)((mb)->buf_iova + RTE_PKTMBUF_HEADROOM))
-
 /* Maximum number of NFP packet metadata fields. */
 #define NFP_META_MAX_FIELDS      8
 
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 08/11] net/nfp: replace hard coded value
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (6 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 07/11] net/nfp: use the DPDK defined function Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 09/11] net/nfp: unify the PMD name with macro Chaoyong He
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Replace the hard coded value with meaningful macro to make it more
readable.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_cmsg.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 4013b32fd0..8effe9474d 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -13,7 +13,8 @@
 static char*
 nfp_flower_cmsg_get_data(struct rte_mbuf *m)
 {
-	return rte_pktmbuf_mtod_offset(m, char *, 4 + 4 + NFP_FLOWER_CMSG_HLEN);
+	return rte_pktmbuf_mtod_offset(m, char *, NFP_NET_META_HEADER_SIZE +
+			NFP_NET_META_FIELD_SIZE + NFP_FLOWER_CMSG_HLEN);
 }
 
 static void *
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 09/11] net/nfp: unify the PMD name with macro
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (7 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 08/11] net/nfp: replace hard coded value Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 10/11] net/nfp: extract a helper function Chaoyong He
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Unify the PMD name with a string macro, make it more extendable.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev.c    | 8 +++++---
 drivers/net/nfp/nfp_ethdev_vf.c | 6 ++++--
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 8057452799..c4a36027b9 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -21,6 +21,8 @@
 #include "nfp_ipsec.h"
 #include "nfp_logs.h"
 
+#define NFP_PF_DRIVER_NAME net_nfp_pf
+
 static void
 nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic,
 		uint16_t port)
@@ -1233,6 +1235,6 @@ static struct rte_pci_driver rte_nfp_net_pf_pmd = {
 	.remove = eth_nfp_pci_remove,
 };
 
-RTE_PMD_REGISTER_PCI(net_nfp_pf, rte_nfp_net_pf_pmd);
-RTE_PMD_REGISTER_PCI_TABLE(net_nfp_pf, pci_id_nfp_pf_net_map);
-RTE_PMD_REGISTER_KMOD_DEP(net_nfp_pf, "* igb_uio | uio_pci_generic | vfio");
+RTE_PMD_REGISTER_PCI(NFP_PF_DRIVER_NAME, rte_nfp_net_pf_pmd);
+RTE_PMD_REGISTER_PCI_TABLE(NFP_PF_DRIVER_NAME, pci_id_nfp_pf_net_map);
+RTE_PMD_REGISTER_KMOD_DEP(NFP_PF_DRIVER_NAME, "* igb_uio | uio_pci_generic | vfio");
diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index cb8a37bce7..d0834ccb3e 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -15,6 +15,8 @@
 #include "nfp_logs.h"
 #include "nfp_net_common.h"
 
+#define NFP_VF_DRIVER_NAME net_nfp_vf
+
 static int
 nfp_netvf_start(struct rte_eth_dev *dev)
 {
@@ -416,5 +418,5 @@ RTE_INIT(rte_nfp_vf_pmd_init)
 	nfp_class_driver_register(&rte_nfp_net_vf_pmd);
 }
 
-RTE_PMD_REGISTER_PCI_TABLE(net_nfp_vf, pci_id_nfp_vf_net_map);
-RTE_PMD_REGISTER_KMOD_DEP(net_nfp_vf, "* igb_uio | uio_pci_generic | vfio");
+RTE_PMD_REGISTER_PCI_TABLE(NFP_VF_DRIVER_NAME, pci_id_nfp_vf_net_map);
+RTE_PMD_REGISTER_KMOD_DEP(NFP_VF_DRIVER_NAME, "* igb_uio | uio_pci_generic | vfio");
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 10/11] net/nfp: extract a helper function
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (8 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 09/11] net/nfp: unify the PMD name with macro Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:15 ` [PATCH 11/11] net/nfp: remove the redundancy logic of representor port Chaoyong He
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Extract a helper function to get the pointer of 'struct nfp_net_hw' for
both normal port and representor pot, this will make the operation
function can be used for both type port.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c | 64 ++-----------------------
 drivers/net/nfp/nfp_net_common.c    | 74 ++++++++++++++++-------------
 drivers/net/nfp/nfp_net_common.h    |  1 +
 3 files changed, 47 insertions(+), 92 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index 246dd2d454..0727e7fd9f 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -21,62 +21,6 @@
 
 #define CTRL_VNIC_NB_DESC 512
 
-static void
-nfp_pf_repr_enable_queues(struct rte_eth_dev *dev)
-{
-	uint16_t i;
-	struct nfp_hw *hw;
-	uint64_t enabled_queues = 0;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = &repr->app_fw_flower->pf_hw->super;
-
-	/* Enabling the required TX queues in the device */
-	for (i = 0; i < dev->data->nb_tx_queues; i++)
-		enabled_queues |= (1 << i);
-
-	nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues);
-
-	enabled_queues = 0;
-
-	/* Enabling the required RX queues in the device */
-	for (i = 0; i < dev->data->nb_rx_queues; i++)
-		enabled_queues |= (1 << i);
-
-	nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues);
-}
-
-static void
-nfp_pf_repr_disable_queues(struct rte_eth_dev *dev)
-{
-	uint32_t update;
-	uint32_t new_ctrl;
-	struct nfp_hw *hw;
-	struct nfp_net_hw *net_hw;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	net_hw = repr->app_fw_flower->pf_hw;
-	hw = &net_hw->super;
-
-	nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0);
-	nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0);
-
-	new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE;
-	update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING |
-			NFP_NET_CFG_UPDATE_MSIX;
-
-	if (hw->cap & NFP_NET_CFG_CTRL_RINGCFG)
-		new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG;
-
-	/* If an error when reconfig we avoid to change hw state */
-	if (nfp_reconfig(hw, new_ctrl, update) < 0)
-		return;
-
-	hw->ctrl = new_ctrl;
-}
-
 int
 nfp_flower_pf_start(struct rte_eth_dev *dev)
 {
@@ -93,10 +37,10 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	hw = &net_hw->super;
 
 	/* Disabling queues just in case... */
-	nfp_pf_repr_disable_queues(dev);
+	nfp_net_disable_queues(dev);
 
 	/* Enabling the required queues in the device */
-	nfp_pf_repr_enable_queues(dev);
+	nfp_net_enable_queues(dev);
 
 	new_ctrl = nfp_check_offloads(dev);
 
@@ -157,7 +101,7 @@ nfp_flower_pf_stop(struct rte_eth_dev *dev)
 	repr = dev->data->dev_private;
 	hw = repr->app_fw_flower->pf_hw;
 
-	nfp_pf_repr_disable_queues(dev);
+	nfp_net_disable_queues(dev);
 
 	/* Clear queues */
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -207,7 +151,7 @@ nfp_flower_pf_close(struct rte_eth_dev *dev)
 	 * We assume that the DPDK application is stopping all the
 	 * threads/queues before calling the device close function.
 	 */
-	nfp_pf_repr_disable_queues(dev);
+	nfp_net_disable_queues(dev);
 
 	/* Clear queues */
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index e3c3fa9985..6abd91965c 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -233,6 +233,22 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *net_hw,
 	return nn_cfg_readl(&net_hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET);
 }
 
+struct nfp_net_hw *
+nfp_net_get_hw(const struct rte_eth_dev *dev)
+{
+	struct nfp_net_hw *hw;
+
+	if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
+		struct nfp_flower_representor *repr;
+		repr = dev->data->dev_private;
+		hw = repr->app_fw_flower->pf_hw;
+	} else {
+		hw = dev->data->dev_private;
+	}
+
+	return hw;
+}
+
 /*
  * Configure an Ethernet device.
  *
@@ -252,7 +268,7 @@ nfp_net_configure(struct rte_eth_dev *dev)
 	struct rte_eth_rxmode *rxmode;
 	struct rte_eth_txmode *txmode;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	dev_conf = &dev->data->dev_conf;
 	rxmode = &dev_conf->rxmode;
 	txmode = &dev_conf->txmode;
@@ -329,7 +345,7 @@ nfp_net_enable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_enable_queues(&hw->super, dev->data->nb_rx_queues,
 			dev->data->nb_tx_queues);
@@ -340,7 +356,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 
 	nfp_disable_queues(&net_hw->super);
 }
@@ -367,7 +383,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 &&
 			(hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) {
@@ -407,7 +423,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 		return -ENOMEM;
 	}
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) {
 		PMD_DRV_LOG(INFO, "VF: enabling RX interrupt with UIO");
@@ -443,7 +459,7 @@ nfp_check_offloads(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_eth_conf *dev_conf;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	cap = hw->super.cap;
 
 	dev_conf = &dev->data->dev_conf;
@@ -510,14 +526,8 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev)
 	uint32_t new_ctrl;
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
-	struct nfp_flower_representor *repr;
 
-	if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
-		repr = dev->data->dev_private;
-		net_hw = repr->app_fw_flower->pf_hw;
-	} else {
-		net_hw = dev->data->dev_private;
-	}
+	net_hw = nfp_net_get_hw(dev);
 
 	hw = &net_hw->super;
 	if ((hw->cap & NFP_NET_CFG_CTRL_PROMISC) == 0) {
@@ -551,7 +561,7 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {
@@ -588,7 +598,7 @@ nfp_net_link_update(struct rte_eth_dev *dev,
 	struct rte_eth_link link;
 	struct nfp_eth_table *nfp_eth_table;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	memset(&link, 0, sizeof(struct rte_eth_link));
 
@@ -654,7 +664,7 @@ nfp_net_stats_get(struct rte_eth_dev *dev,
 	if (stats == NULL)
 		return -EINVAL;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	memset(&nfp_dev_stats, 0, sizeof(nfp_dev_stats));
 
@@ -732,7 +742,7 @@ nfp_net_stats_reset(struct rte_eth_dev *dev)
 	uint16_t i;
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	/* Reading per RX ring stats */
 	for (i = 0; i < dev->data->nb_rx_queues; i++) {
@@ -794,7 +804,7 @@ nfp_net_xstats_size(const struct rte_eth_dev *dev)
 	const uint32_t size = RTE_DIM(nfp_net_xstats);
 
 	/* If the device is a VF, then there will be no MAC stats */
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	if (hw->mac_stats == NULL) {
 		for (count = 0; count < size; count++) {
 			if (nfp_net_xstats[count].group == NFP_XSTAT_GROUP_MAC)
@@ -828,7 +838,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	struct nfp_xstat xstat;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	xstat = nfp_net_xstats[index];
 
 	if (xstat.group == NFP_XSTAT_GROUP_MAC)
@@ -967,7 +977,7 @@ nfp_net_xstats_reset(struct rte_eth_dev *dev)
 	uint32_t read_size;
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	read_size = nfp_net_xstats_size(dev);
 
 	for (id = 0; id < read_size; id++) {
@@ -1015,7 +1025,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	uint16_t max_tx_desc;
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
@@ -1242,7 +1252,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id),
 			NFP_NET_CFG_ICR_UNMASKED);
 	return 0;
@@ -1263,7 +1273,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX);
 
 	return 0;
@@ -1301,7 +1311,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_pci_device *pci_dev;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 
 	/* Make sure all updates are written before un-masking */
@@ -1376,7 +1386,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	/* MTU setting is forbidden if port is started */
 	if (dev->data->dev_started) {
@@ -1412,7 +1422,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t rxvlan_ctrl = 0;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 	rx_offload = dev->data->dev_conf.rxmode.offloads;
 	new_ctrl = hw->ctrl;
@@ -1462,7 +1472,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) {
@@ -1518,7 +1528,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1551,7 +1561,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1601,7 +1611,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t cfg_rss_ctrl = 0;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	/* Writing the key byte by byte */
@@ -1657,7 +1667,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	rss_hf = rss_conf->rss_hf;
@@ -1698,7 +1708,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,
 	uint32_t cfg_rss_ctrl;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index 829e9c5333..e242251bc2 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -237,6 +237,7 @@ void nfp_net_cfg_read_version(struct nfp_net_hw *hw);
 int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
+struct nfp_net_hw *nfp_net_get_hw(const struct rte_eth_dev *dev);
 
 #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\
 	((struct nfp_app_fw_nic *)app_fw_priv)
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH 11/11] net/nfp: remove the redundancy logic of representor port
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (9 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 10/11] net/nfp: extract a helper function Chaoyong He
@ 2023-10-28  6:15 ` Chaoyong He
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:15 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Using the helper function, we can remove some redundancy logic of
representor port by reusing the functions in common module.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c           |  47 +---
 drivers/net/nfp/flower/nfp_flower.h           |   1 -
 .../net/nfp/flower/nfp_flower_representor.c   | 253 +-----------------
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c            |   2 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c            |   2 +-
 drivers/net/nfp/nfp_ethdev.c                  |  28 +-
 drivers/net/nfp/nfp_net_common.c              | 128 +++++----
 drivers/net/nfp/nfp_net_common.h              |   6 +-
 drivers/net/nfp/nfp_rxtx.c                    |   4 +-
 9 files changed, 94 insertions(+), 377 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index 0727e7fd9f..f2e6eb6a6f 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -48,11 +48,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	nfp_net_params_setup(net_hw);
 
 	update |= NFP_NET_CFG_UPDATE_RSS;
-
-	if ((hw->cap & NFP_NET_CFG_CTRL_RSS2) != 0)
-		new_ctrl |= NFP_NET_CFG_CTRL_RSS2;
-	else
-		new_ctrl |= NFP_NET_CFG_CTRL_RSS;
+	new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap);
 
 	/* Enable device */
 	new_ctrl |= NFP_NET_CFG_CTRL_ENABLE;
@@ -62,8 +58,6 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0)
 		new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG;
 
-	nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl);
-
 	/* If an error when reconfig we avoid to change hw state */
 	ret = nfp_reconfig(hw, new_ctrl, update);
 	if (ret != 0) {
@@ -88,43 +82,6 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	return 0;
 }
 
-/* Stop device: disable rx and tx functions to allow for reconfiguring. */
-int
-nfp_flower_pf_stop(struct rte_eth_dev *dev)
-{
-	uint16_t i;
-	struct nfp_net_hw *hw;
-	struct nfp_net_txq *this_tx_q;
-	struct nfp_net_rxq *this_rx_q;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	nfp_net_disable_queues(dev);
-
-	/* Clear queues */
-	for (i = 0; i < dev->data->nb_tx_queues; i++) {
-		this_tx_q = dev->data->tx_queues[i];
-		nfp_net_reset_tx_queue(this_tx_q);
-		dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;
-	}
-
-	for (i = 0; i < dev->data->nb_rx_queues; i++) {
-		this_rx_q = dev->data->rx_queues[i];
-		nfp_net_reset_rx_queue(this_rx_q);
-		dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;
-	}
-
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
-		/* Configure the physical port down */
-		nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);
-	else
-		nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);
-
-	return 0;
-}
-
 /* Reset and stop device. The device can not be restarted. */
 static int
 nfp_flower_pf_close(struct rte_eth_dev *dev)
@@ -188,7 +145,7 @@ static const struct eth_dev_ops nfp_flower_pf_vnic_ops = {
 	.dev_configure          = nfp_net_configure,
 
 	.dev_start              = nfp_flower_pf_start,
-	.dev_stop               = nfp_flower_pf_stop,
+	.dev_stop               = nfp_net_stop,
 	.dev_close              = nfp_flower_pf_close,
 };
 
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index a989c4a8b8..220b714018 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -113,7 +113,6 @@ bool nfp_flower_pf_dispatch_pkts(struct nfp_net_hw *hw,
 uint16_t nfp_flower_pf_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 		uint16_t nb_pkts);
 int nfp_flower_pf_start(struct rte_eth_dev *dev);
-int nfp_flower_pf_stop(struct rte_eth_dev *dev);
 uint32_t nfp_flower_pkt_add_metadata(struct nfp_app_fw_flower *app_fw_flower,
 		struct rte_mbuf *mbuf, uint32_t port_id);
 
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index b52c6f514a..0f0e63aae0 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -18,232 +18,23 @@ enum nfp_repr_type {
 	NFP_REPR_TYPE_MAX,          /*<< Number of representor types */
 };
 
-static int
-nfp_pf_repr_rx_queue_setup(struct rte_eth_dev *dev,
-		uint16_t queue_idx,
-		uint16_t nb_desc,
-		unsigned int socket_id,
-		const struct rte_eth_rxconf *rx_conf,
-		struct rte_mempool *mp)
-{
-	struct nfp_net_hw *hw;
-	struct nfp_net_rxq *rxq;
-	const struct rte_memzone *tz;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	/* Allocating rx queue data structure */
-	rxq = rte_zmalloc_socket("ethdev RX queue", sizeof(struct nfp_net_rxq),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (rxq == NULL)
-		return -ENOMEM;
-
-	dev->data->rx_queues[queue_idx] = rxq;
-
-	/* Hw queues mapping based on firmware configuration */
-	rxq->qidx = queue_idx;
-	rxq->fl_qcidx = queue_idx * hw->stride_rx;
-	rxq->qcp_fl = hw->rx_bar + NFP_QCP_QUEUE_OFF(rxq->fl_qcidx);
-
-	/*
-	 * Tracking mbuf size for detecting a potential mbuf overflow due to
-	 * RX offset.
-	 */
-	rxq->mem_pool = mp;
-	rxq->mbuf_size = rxq->mem_pool->elt_size;
-	rxq->mbuf_size -= (sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM);
-	hw->flbufsz = rxq->mbuf_size;
-
-	rxq->rx_count = nb_desc;
-	rxq->port_id = dev->data->port_id;
-	rxq->rx_free_thresh = rx_conf->rx_free_thresh;
-
-	/*
-	 * Allocate RX ring hardware descriptors. A memzone large enough to
-	 * handle the maximum ring size is allocated in order to allow for
-	 * resizing in later calls to the queue setup function.
-	 */
-	tz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx,
-			sizeof(struct nfp_net_rx_desc) *
-			hw->dev_info->max_qc_size,
-			NFP_MEMZONE_ALIGN, socket_id);
-	if (tz == NULL) {
-		PMD_DRV_LOG(ERR, "Error allocating rx dma");
-		nfp_net_rx_queue_release(dev, queue_idx);
-		dev->data->rx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	/* Saving physical and virtual addresses for the RX ring */
-	rxq->dma = (uint64_t)tz->iova;
-	rxq->rxds = tz->addr;
-
-	/* Mbuf pointers array for referencing mbufs linked to RX descriptors */
-	rxq->rxbufs = rte_zmalloc_socket("rxq->rxbufs",
-			sizeof(*rxq->rxbufs) * nb_desc,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (rxq->rxbufs == NULL) {
-		nfp_net_rx_queue_release(dev, queue_idx);
-		dev->data->rx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	nfp_net_reset_rx_queue(rxq);
-	rxq->hw = hw;
-
-	/*
-	 * Telling the HW about the physical address of the RX ring and number
-	 * of descriptors in log2 format.
-	 */
-	nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma);
-	nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc));
-
-	return 0;
-}
-
-static int
-nfp_pf_repr_tx_queue_setup(struct rte_eth_dev *dev,
-		uint16_t queue_idx,
-		uint16_t nb_desc,
-		unsigned int socket_id,
-		const struct rte_eth_txconf *tx_conf)
-{
-	struct nfp_net_hw *hw;
-	struct nfp_net_txq *txq;
-	uint16_t tx_free_thresh;
-	const struct rte_memzone *tz;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	tx_free_thresh = (tx_conf->tx_free_thresh) ? tx_conf->tx_free_thresh :
-			DEFAULT_TX_FREE_THRESH;
-	if (tx_free_thresh > nb_desc)
-		return -EINVAL;
-
-	/* Allocating tx queue data structure */
-	txq = rte_zmalloc_socket("ethdev TX queue", sizeof(struct nfp_net_txq),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (txq == NULL) {
-		PMD_DRV_LOG(ERR, "Error allocating tx dma");
-		return -ENOMEM;
-	}
-
-	dev->data->tx_queues[queue_idx] = txq;
-
-	/*
-	 * Allocate TX ring hardware descriptors. A memzone large enough to
-	 * handle the maximum ring size is allocated in order to allow for
-	 * resizing in later calls to the queue setup function.
-	 */
-	tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx,
-			sizeof(struct nfp_net_nfd3_tx_desc) *
-			hw->dev_info->max_qc_size,
-			NFP_MEMZONE_ALIGN, socket_id);
-	if (tz == NULL) {
-		PMD_DRV_LOG(ERR, "Error allocating tx dma");
-		nfp_net_tx_queue_release(dev, queue_idx);
-		dev->data->tx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	txq->tx_count = nb_desc;
-	txq->tx_free_thresh = tx_free_thresh;
-
-	/* Queue mapping based on firmware configuration */
-	txq->qidx = queue_idx;
-	txq->tx_qcidx = queue_idx * hw->stride_tx;
-	txq->qcp_q = hw->tx_bar + NFP_QCP_QUEUE_OFF(txq->tx_qcidx);
-
-	txq->port_id = dev->data->port_id;
-
-	/* Saving physical and virtual addresses for the TX ring */
-	txq->dma = (uint64_t)tz->iova;
-	txq->txds = tz->addr;
-
-	/* Mbuf pointers array for referencing mbufs linked to TX descriptors */
-	txq->txbufs = rte_zmalloc_socket("txq->txbufs",
-			sizeof(*txq->txbufs) * nb_desc,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (txq->txbufs == NULL) {
-		nfp_net_tx_queue_release(dev, queue_idx);
-		dev->data->tx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	nfp_net_reset_tx_queue(txq);
-	txq->hw = hw;
-
-	/*
-	 * Telling the HW about the physical address of the TX ring and number
-	 * of descriptors in log2 format.
-	 */
-	nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma);
-	nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc));
-
-	return 0;
-}
-
 static int
 nfp_flower_repr_link_update(struct rte_eth_dev *dev,
 		__rte_unused int wait_to_complete)
 {
 	int ret;
-	uint32_t i;
 	uint32_t nn_link_status;
 	struct nfp_net_hw *pf_hw;
 	struct rte_eth_link *link;
-	struct nfp_eth_table *nfp_eth_table;
 	struct nfp_flower_representor *repr;
 
-	static const uint32_t ls_to_ethtool[] = {
-		[NFP_NET_CFG_STS_LINK_RATE_UNSUPPORTED] = RTE_ETH_SPEED_NUM_NONE,
-		[NFP_NET_CFG_STS_LINK_RATE_UNKNOWN]     = RTE_ETH_SPEED_NUM_NONE,
-		[NFP_NET_CFG_STS_LINK_RATE_1G]          = RTE_ETH_SPEED_NUM_1G,
-		[NFP_NET_CFG_STS_LINK_RATE_10G]         = RTE_ETH_SPEED_NUM_10G,
-		[NFP_NET_CFG_STS_LINK_RATE_25G]         = RTE_ETH_SPEED_NUM_25G,
-		[NFP_NET_CFG_STS_LINK_RATE_40G]         = RTE_ETH_SPEED_NUM_40G,
-		[NFP_NET_CFG_STS_LINK_RATE_50G]         = RTE_ETH_SPEED_NUM_50G,
-		[NFP_NET_CFG_STS_LINK_RATE_100G]        = RTE_ETH_SPEED_NUM_100G,
-	};
-
 	repr = dev->data->dev_private;
 	link = &repr->link;
-	link->link_speed = RTE_ETH_SPEED_NUM_NONE;
-	pf_hw = repr->app_fw_flower->pf_hw;
 
-	if (link->link_status == RTE_ETH_LINK_UP) {
-		if (pf_hw->pf_dev != NULL) {
-			nfp_eth_table = pf_hw->pf_dev->nfp_eth_table;
-			if (nfp_eth_table != NULL) {
-				uint32_t speed = nfp_eth_table->ports[pf_hw->idx].speed;
-				for (i = 0; i < RTE_DIM(ls_to_ethtool); i++) {
-					if (ls_to_ethtool[i] == speed) {
-						link->link_speed = speed;
-						break;
-					}
-				}
-			}
-		} else {
-			nn_link_status = nn_cfg_readw(&pf_hw->super, NFP_NET_CFG_STS);
-			nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) &
-					NFP_NET_CFG_STS_LINK_RATE_MASK;
-
-			if (nn_link_status < RTE_DIM(ls_to_ethtool))
-				link->link_speed = ls_to_ethtool[nn_link_status];
-		}
-	}
+	pf_hw = repr->app_fw_flower->pf_hw;
+	nn_link_status = nn_cfg_readw(&pf_hw->super, NFP_NET_CFG_STS);
 
-	ret = rte_eth_linkstatus_set(dev, link);
-	if (ret == 0) {
-		if (link->link_status)
-			PMD_DRV_LOG(INFO, "NIC Link is Up");
-		else
-			PMD_DRV_LOG(INFO, "NIC Link is Down");
-	}
+	ret = nfp_net_link_update_common(dev, pf_hw, link, nn_link_status);
 
 	return ret;
 }
@@ -275,30 +66,6 @@ nfp_flower_repr_dev_infos_get(__rte_unused struct rte_eth_dev *dev,
 	return 0;
 }
 
-static int
-nfp_flower_repr_dev_configure(struct rte_eth_dev *dev)
-{
-	struct nfp_net_hw *pf_hw;
-	struct rte_eth_conf *dev_conf;
-	struct rte_eth_rxmode *rxmode;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	pf_hw = repr->app_fw_flower->pf_hw;
-
-	dev_conf = &dev->data->dev_conf;
-	rxmode = &dev_conf->rxmode;
-
-	/* Checking MTU set */
-	if (rxmode->mtu > pf_hw->flbufsz) {
-		PMD_DRV_LOG(INFO, "MTU (%u) larger then current mbufsize (%u) not supported",
-				rxmode->mtu, pf_hw->flbufsz);
-		return -ERANGE;
-	}
-
-	return 0;
-}
-
 static int
 nfp_flower_repr_dev_start(struct rte_eth_dev *dev)
 {
@@ -528,11 +295,11 @@ static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = {
 	.dev_infos_get        = nfp_flower_repr_dev_infos_get,
 
 	.dev_start            = nfp_flower_pf_start,
-	.dev_configure        = nfp_flower_repr_dev_configure,
-	.dev_stop             = nfp_flower_pf_stop,
+	.dev_configure        = nfp_net_configure,
+	.dev_stop             = nfp_net_stop,
 
-	.rx_queue_setup       = nfp_pf_repr_rx_queue_setup,
-	.tx_queue_setup       = nfp_pf_repr_tx_queue_setup,
+	.rx_queue_setup       = nfp_net_rx_queue_setup,
+	.tx_queue_setup       = nfp_net_tx_queue_setup,
 
 	.link_update          = nfp_flower_repr_link_update,
 
@@ -543,14 +310,14 @@ static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = {
 	.promiscuous_disable  = nfp_net_promisc_disable,
 
 	.mac_addr_set         = nfp_flower_repr_mac_addr_set,
-	.fw_version_get       = nfp_repr_firmware_version_get,
+	.fw_version_get       = nfp_net_firmware_version_get,
 };
 
 static const struct eth_dev_ops nfp_flower_repr_dev_ops = {
 	.dev_infos_get        = nfp_flower_repr_dev_infos_get,
 
 	.dev_start            = nfp_flower_repr_dev_start,
-	.dev_configure        = nfp_flower_repr_dev_configure,
+	.dev_configure        = nfp_net_configure,
 	.dev_stop             = nfp_flower_repr_dev_stop,
 
 	.rx_queue_setup       = nfp_flower_repr_rx_queue_setup,
@@ -565,7 +332,7 @@ static const struct eth_dev_ops nfp_flower_repr_dev_ops = {
 	.promiscuous_disable  = nfp_net_promisc_disable,
 
 	.mac_addr_set         = nfp_flower_repr_mac_addr_set,
-	.fw_version_get       = nfp_repr_firmware_version_get,
+	.fw_version_get       = nfp_net_firmware_version_get,
 
 	.flow_ops_get         = nfp_net_flow_ops_get,
 	.mtr_ops_get          = nfp_net_mtr_ops_get,
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index 3f9909c6e0..ff9b10f046 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -377,7 +377,7 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev,
 	uint16_t tx_free_thresh;
 	const struct rte_memzone *tz;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index fe87ea3e25..1f330b7bb6 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -454,7 +454,7 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_txq *txq;
 	const struct rte_memzone *tz;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index c4a36027b9..69050e03f5 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -51,7 +51,6 @@ nfp_net_start(struct rte_eth_dev *dev)
 	uint32_t ctrl_extend = 0;
 	struct nfp_net_hw *net_hw;
 	struct nfp_pf_dev *pf_dev;
-	struct rte_eth_conf *dev_conf;
 	struct rte_eth_rxmode *rxmode;
 	struct nfp_app_fw_nic *app_fw_nic;
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
@@ -113,9 +112,7 @@ nfp_net_start(struct rte_eth_dev *dev)
 	/* Writing configuration parameters in the device */
 	nfp_net_params_setup(net_hw);
 
-	dev_conf = &dev->data->dev_conf;
-	rxmode = &dev_conf->rxmode;
-
+	rxmode = &dev->data->dev_conf.rxmode;
 	if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) != 0) {
 		nfp_net_rss_config_default(dev);
 		update |= NFP_NET_CFG_UPDATE_RSS;
@@ -197,29 +194,6 @@ nfp_net_start(struct rte_eth_dev *dev)
 	return ret;
 }
 
-/* Stop device: disable rx and tx functions to allow for reconfiguring. */
-static int
-nfp_net_stop(struct rte_eth_dev *dev)
-{
-	struct nfp_net_hw *hw;
-
-	hw = dev->data->dev_private;
-
-	nfp_net_disable_queues(dev);
-
-	/* Clear queues */
-	nfp_net_stop_tx_queue(dev);
-	nfp_net_stop_rx_queue(dev);
-
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
-		/* Configure the physical port down */
-		nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);
-	else
-		nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);
-
-	return 0;
-}
-
 /* Set the link up. */
 static int
 nfp_net_set_link_up(struct rte_eth_dev *dev)
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index 6abd91965c..13dd952754 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -581,43 +581,27 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)
 	return 0;
 }
 
-/*
- * Return 0 means link status changed, -1 means not changed
- *
- * Wait to complete is needed as it can take up to 9 seconds to get the Link
- * status.
- */
 int
-nfp_net_link_update(struct rte_eth_dev *dev,
-		__rte_unused int wait_to_complete)
+nfp_net_link_update_common(struct rte_eth_dev *dev,
+		struct nfp_net_hw *hw,
+		struct rte_eth_link *link,
+		uint32_t link_status)
 {
 	int ret;
 	uint32_t i;
-	struct nfp_net_hw *hw;
 	uint32_t nn_link_status;
-	struct rte_eth_link link;
 	struct nfp_eth_table *nfp_eth_table;
 
-	hw = nfp_net_get_hw(dev);
-
-	memset(&link, 0, sizeof(struct rte_eth_link));
+	link->link_speed = RTE_ETH_SPEED_NUM_NONE;
 
-	/* Read link status */
-	nn_link_status = nn_cfg_readw(&hw->super, NFP_NET_CFG_STS);
-	if ((nn_link_status & NFP_NET_CFG_STS_LINK) != 0)
-		link.link_status = RTE_ETH_LINK_UP;
-
-	link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
-	link.link_speed = RTE_ETH_SPEED_NUM_NONE;
-
-	if (link.link_status == RTE_ETH_LINK_UP) {
+	if (link->link_status == RTE_ETH_LINK_UP) {
 		if (hw->pf_dev != NULL) {
 			nfp_eth_table = hw->pf_dev->nfp_eth_table;
 			if (nfp_eth_table != NULL) {
 				uint32_t speed = nfp_eth_table->ports[hw->idx].speed;
 				for (i = 0; i < RTE_DIM(nfp_net_link_speed_nfp2rte); i++) {
 					if (nfp_net_link_speed_nfp2rte[i] == speed) {
-						link.link_speed = speed;
+						link->link_speed = speed;
 						break;
 					}
 				}
@@ -627,21 +611,52 @@ nfp_net_link_update(struct rte_eth_dev *dev,
 			 * Shift and mask nn_link_status so that it is effectively the value
 			 * at offset NFP_NET_CFG_STS_NSP_LINK_RATE.
 			 */
-			nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) &
+			nn_link_status = (link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) &
 					NFP_NET_CFG_STS_LINK_RATE_MASK;
 			if (nn_link_status < RTE_DIM(nfp_net_link_speed_nfp2rte))
-				link.link_speed = nfp_net_link_speed_nfp2rte[nn_link_status];
+				link->link_speed = nfp_net_link_speed_nfp2rte[nn_link_status];
 		}
 	}
 
-	ret = rte_eth_linkstatus_set(dev, &link);
+	ret = rte_eth_linkstatus_set(dev, link);
 	if (ret == 0) {
-		if (link.link_status != 0)
+		if (link->link_status != 0)
 			PMD_DRV_LOG(INFO, "NIC Link is Up");
 		else
 			PMD_DRV_LOG(INFO, "NIC Link is Down");
 	}
 
+	return ret;
+}
+
+/*
+ * Return 0 means link status changed, -1 means not changed
+ *
+ * Wait to complete is needed as it can take up to 9 seconds to get the Link
+ * status.
+ */
+int
+nfp_net_link_update(struct rte_eth_dev *dev,
+		__rte_unused int wait_to_complete)
+{
+	int ret;
+	struct nfp_net_hw *hw;
+	uint32_t nn_link_status;
+	struct rte_eth_link link;
+
+	hw = nfp_net_get_hw(dev);
+
+	memset(&link, 0, sizeof(struct rte_eth_link));
+
+	/* Read link status */
+	nn_link_status = nn_cfg_readw(&hw->super, NFP_NET_CFG_STS);
+	if ((nn_link_status & NFP_NET_CFG_STS_LINK) != 0)
+		link.link_status = RTE_ETH_LINK_UP;
+
+	link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
+
+	ret = nfp_net_link_update_common(dev, hw, &link, nn_link_status);
+
 	/*
 	 * Notify the port to update the speed value in the CTRL BAR from NSP.
 	 * Not applicable for VFs as the associated PF is still attached to the
@@ -1996,11 +2011,16 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev,
 	if (fw_size < FW_VER_LEN)
 		return FW_VER_LEN;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
-	snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d",
+	
+	if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
+		snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d",
 			hw->ver.extend, hw->ver.class,
 			hw->ver.major, hw->ver.minor);
+	} else {
+		snprintf(vnic_version, FW_VER_LEN, "*");
+	}
 
 	nfp_net_get_nsp_info(hw, nsp_version);
 	nfp_net_get_mip_name(hw, mip_name);
@@ -2012,33 +2032,6 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev,
 	return 0;
 }
 
-int
-nfp_repr_firmware_version_get(struct rte_eth_dev *dev,
-		char *fw_version,
-		size_t fw_size)
-{
-	struct nfp_net_hw *hw;
-	char mip_name[FW_VER_LEN];
-	char app_name[FW_VER_LEN];
-	char nsp_version[FW_VER_LEN];
-	struct nfp_flower_representor *repr;
-
-	if (fw_size < FW_VER_LEN)
-		return FW_VER_LEN;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	nfp_net_get_nsp_info(hw, nsp_version);
-	nfp_net_get_mip_name(hw, mip_name);
-	nfp_net_get_app_name(hw, app_name);
-
-	snprintf(fw_version, FW_VER_LEN, "* %s %s %s",
-			nsp_version, mip_name, app_name);
-
-	return 0;
-}
-
 bool
 nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version)
 {
@@ -2059,3 +2052,26 @@ nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version)
 
 	return false;
 }
+
+/* Disable rx and tx functions to allow for reconfiguring. */
+int
+nfp_net_stop(struct rte_eth_dev *dev)
+{
+	struct nfp_net_hw *hw;
+
+	hw = nfp_net_get_hw(dev);
+
+	nfp_net_disable_queues(dev);
+
+	/* Clear queues */
+	nfp_net_stop_tx_queue(dev);
+	nfp_net_stop_rx_queue(dev);
+
+	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+		/* Configure the physical port down */
+		nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);
+	else
+		nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);
+
+	return 0;
+}
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index e242251bc2..af8f8d15ae 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -178,6 +178,10 @@ int nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 uint32_t nfp_check_offloads(struct rte_eth_dev *dev);
 int nfp_net_promisc_enable(struct rte_eth_dev *dev);
 int nfp_net_promisc_disable(struct rte_eth_dev *dev);
+int nfp_net_link_update_common(struct rte_eth_dev *dev,
+		struct nfp_net_hw *hw,
+		struct rte_eth_link *link,
+		uint32_t link_status);
 int nfp_net_link_update(struct rte_eth_dev *dev,
 		__rte_unused int wait_to_complete);
 int nfp_net_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats);
@@ -235,9 +239,9 @@ int nfp_net_check_dma_mask(struct nfp_net_hw *hw, char *name);
 void nfp_net_init_metadata_format(struct nfp_net_hw *hw);
 void nfp_net_cfg_read_version(struct nfp_net_hw *hw);
 int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
-int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
 struct nfp_net_hw *nfp_net_get_hw(const struct rte_eth_dev *dev);
+int nfp_net_stop(struct rte_eth_dev *dev);
 
 #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\
 	((struct nfp_app_fw_nic *)app_fw_priv)
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index be1ac32c73..b2a9ba6875 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -840,7 +840,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_rxq *rxq;
 	const struct rte_memzone *tz;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 
@@ -1067,7 +1067,7 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	if (hw->ver.extend == NFP_NET_CFG_VERSION_DP_NFD3)
 		return nfp_net_nfd3_tx_queue_setup(dev, queue_idx,
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 00/11] Clean up NFP PMD
  2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
                   ` (10 preceding siblings ...)
  2023-10-28  6:15 ` [PATCH 11/11] net/nfp: remove the redundancy logic of representor port Chaoyong He
@ 2023-10-28  6:53 ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 01/11] net/nfp: use the suitable helper macro Chaoyong He
                     ` (11 more replies)
  11 siblings, 12 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He

This patch series clean up the NFP PMD, by:
- Using the DPDK macro and API to replace the user defined ones.
- Remove the unneeded macro and logic.
- Remove the duplicated logic.

---
v2:
* Fix the compile error.
* Fix one check script warning.
---

Chaoyong He (11):
  net/nfp: use the suitable helper macro
  net/nfp: remove the unneeded call of underlying API
  net/nfp: remove the unneeded check of process type
  net/nfp: remove the unneeded data abstraction
  net/nfp: remove the redundancy macro
  net/nfp: remove redundancy logic of init control BAR
  net/nfp: use the DPDK defined function
  net/nfp: replace hard coded value
  net/nfp: unify the PMD name with macro
  net/nfp: extract a helper function
  net/nfp: remove the redundancy logic of representor port

 drivers/common/nfp/nfp_common_ctrl.h          |  17 --
 drivers/net/nfp/flower/nfp_flower.c           | 111 +-------
 drivers/net/nfp/flower/nfp_flower.h           |   4 +-
 drivers/net/nfp/flower/nfp_flower_cmsg.c      |   3 +-
 drivers/net/nfp/flower/nfp_flower_ctrl.c      |   6 +-
 .../net/nfp/flower/nfp_flower_representor.c   | 253 +-----------------
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c            |   2 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c            |   2 +-
 drivers/net/nfp/nfp_ethdev.c                  |  88 +++---
 drivers/net/nfp/nfp_ethdev_vf.c               |  28 +-
 drivers/net/nfp/nfp_ipsec.c                   |  18 +-
 drivers/net/nfp/nfp_net_common.c              | 204 +++++++-------
 drivers/net/nfp/nfp_net_common.h              |  13 +-
 drivers/net/nfp/nfp_net_ctrl.c                |   2 +-
 drivers/net/nfp/nfp_rxtx.c                    |  11 +-
 drivers/net/nfp/nfp_rxtx.h                    |   6 -
 16 files changed, 203 insertions(+), 565 deletions(-)

-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 01/11] net/nfp: use the suitable helper macro
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 02/11] net/nfp: remove the unneeded call of underlying API Chaoyong He
                     ` (10 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Replace the `rte_pktmbuf_mtod()` macro to with the more suitable
`rte_pktmbuf_mtod_offset()`.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_cmsg.c | 2 +-
 drivers/net/nfp/flower/nfp_flower_ctrl.c | 4 ++--
 drivers/net/nfp/nfp_rxtx.c               | 3 +--
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 2ec9498d22..4013b32fd0 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -13,7 +13,7 @@
 static char*
 nfp_flower_cmsg_get_data(struct rte_mbuf *m)
 {
-	return rte_pktmbuf_mtod(m, char *) + 4 + 4 + NFP_FLOWER_CMSG_HLEN;
+	return rte_pktmbuf_mtod_offset(m, char *, 4 + 4 + NFP_FLOWER_CMSG_HLEN);
 }
 
 static void *
diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index b4be28ccdf..d19b60bc69 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -375,7 +375,7 @@ nfp_flower_cmsg_rx_stats(struct nfp_flow_priv *flow_priv,
 	uint32_t ctx_id;
 	struct nfp_flower_stats_frame *stats;
 
-	msg = rte_pktmbuf_mtod(mbuf, char *) + NFP_FLOWER_CMSG_HLEN;
+	msg = rte_pktmbuf_mtod_offset(mbuf, char *, NFP_FLOWER_CMSG_HLEN);
 	msg_len = mbuf->data_len - NFP_FLOWER_CMSG_HLEN;
 	count = msg_len / sizeof(struct nfp_flower_stats_frame);
 
@@ -398,7 +398,7 @@ nfp_flower_cmsg_rx_qos_stats(struct nfp_mtr_priv *mtr_priv,
 	struct nfp_mtr *mtr;
 	struct nfp_mtr_stats_reply *mtr_stats;
 
-	msg = rte_pktmbuf_mtod(mbuf, char *) + NFP_FLOWER_CMSG_HLEN;
+	msg = rte_pktmbuf_mtod_offset(mbuf, char *, NFP_FLOWER_CMSG_HLEN);
 
 	mtr_stats = (struct nfp_mtr_stats_reply *)msg;
 	profile_id = rte_be_to_cpu_32(mtr_stats->head.profile_id);
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index fc94e5f0b9..644be2700e 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -448,8 +448,7 @@ nfp_net_parse_meta(struct nfp_net_rx_desc *rxds,
 	if (unlikely(NFP_DESC_META_LEN(rxds) == 0))
 		return;
 
-	meta_base = rte_pktmbuf_mtod(mb, uint8_t *);
-	meta_base -= NFP_DESC_META_LEN(rxds);
+	meta_base = rte_pktmbuf_mtod_offset(mb, uint8_t *, -NFP_DESC_META_LEN(rxds));
 	meta_header = *(rte_be32_t *)meta_base;
 
 	switch (hw->meta_format) {
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 02/11] net/nfp: remove the unneeded call of underlying API
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 01/11] net/nfp: use the suitable helper macro Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 03/11] net/nfp: remove the unneeded check of process type Chaoyong He
                     ` (9 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Remove the unneeded call of underlying API in function
'nfp_net_pf_read_mac()`, because we already store the result of it in
data structure.

Also change the return type of this function to 'void' as there is no
abnormal exit logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 76317925ec..0fed0ef72d 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -21,7 +21,7 @@
 #include "nfp_ipsec.h"
 #include "nfp_logs.h"
 
-static int
+static void
 nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic,
 		uint16_t port)
 {
@@ -31,13 +31,9 @@ nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic,
 	/* Grab a pointer to the correct physical port */
 	hw = app_fw_nic->ports[port];
 
-	nfp_eth_table = nfp_eth_read_ports(app_fw_nic->pf_dev->cpp);
+	nfp_eth_table = app_fw_nic->pf_dev->nfp_eth_table;
 
 	rte_ether_addr_copy(&nfp_eth_table->ports[port].mac_addr, &hw->super.mac_addr);
-
-	free(nfp_eth_table);
-
-	return 0;
 }
 
 static int
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 03/11] net/nfp: remove the unneeded check of process type
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 01/11] net/nfp: use the suitable helper macro Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 02/11] net/nfp: remove the unneeded call of underlying API Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
                     ` (8 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Remove the unneeded secondary call of 'rte_eal_process_type()' in
'nfp_netvf_init()', because the first call of it already make sure only
the primary process can continue run the rest logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev_vf.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index b9cfb48021..e24fec861d 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -344,15 +344,13 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 			pci_dev->id.device_id,
 			RTE_ETHER_ADDR_BYTES(&hw->mac_addr));
 
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
-		/* Registering LSC interrupt handler */
-		rte_intr_callback_register(pci_dev->intr_handle,
-				nfp_net_dev_interrupt_handler, (void *)eth_dev);
-		/* Telling the firmware about the LSC interrupt entry */
-		nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX);
-		/* Recording current stats counters values */
-		nfp_net_stats_reset(eth_dev);
-	}
+	/* Registering LSC interrupt handler */
+	rte_intr_callback_register(pci_dev->intr_handle,
+			nfp_net_dev_interrupt_handler, (void *)eth_dev);
+	/* Telling the firmware about the LSC interrupt entry */
+	nn_cfg_writeb(hw, NFP_NET_CFG_LSC, NFP_NET_IRQ_LSC_IDX);
+	/* Recording current stats counters values */
+	nfp_net_stats_reset(eth_dev);
 
 	return 0;
 
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (2 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 03/11] net/nfp: remove the unneeded check of process type Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-11-01 17:57     ` Ferruh Yigit
  2023-10-28  6:53   ` [PATCH v2 05/11] net/nfp: remove the redundancy macro Chaoyong He
                     ` (7 subsequent siblings)
  11 siblings, 1 reply; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

The data structure 'struct nfp_net_adapter' has only one data field and
we won't extend it in the future, which makes this abstraction unneeded,
so remove this data structure and the related macro
'NFP_NET_DEV_PRIVATE_TO_HW'.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c |  2 +-
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c  |  2 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c  |  2 +-
 drivers/net/nfp/nfp_ethdev.c        | 18 ++++-----
 drivers/net/nfp/nfp_ethdev_vf.c     |  6 +--
 drivers/net/nfp/nfp_ipsec.c         | 18 ++++-----
 drivers/net/nfp/nfp_net_common.c    | 57 ++++++++++++++---------------
 drivers/net/nfp/nfp_net_common.h    |  3 --
 drivers/net/nfp/nfp_net_ctrl.c      |  2 +-
 drivers/net/nfp/nfp_rxtx.c          |  4 +-
 10 files changed, 55 insertions(+), 59 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index f3fedbf7e5..246dd2d454 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -848,7 +848,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,
 	}
 
 	/* Allocate memory for the PF AND ctrl vNIC here (hence the * 2) */
-	pf_hw = rte_zmalloc_socket("nfp_pf_vnic", 2 * sizeof(struct nfp_net_adapter),
+	pf_hw = rte_zmalloc_socket("nfp_pf_vnic", 2 * sizeof(struct nfp_net_hw),
 			RTE_CACHE_LINE_SIZE, numa_node);
 	if (pf_hw == NULL) {
 		PMD_INIT_LOG(ERR, "Could not malloc nfp pf vnic");
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index c85fadc80d..3f9909c6e0 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -377,7 +377,7 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev,
 	uint16_t tx_free_thresh;
 	const struct rte_memzone *tz;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index 10e6982c95..fe87ea3e25 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -454,7 +454,7 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_txq *txq;
 	const struct rte_memzone *tz;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 0fed0ef72d..8e69fa67b2 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -55,7 +55,7 @@ nfp_net_start(struct rte_eth_dev *dev)
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 	hw = &net_hw->super;
@@ -201,7 +201,7 @@ nfp_net_stop(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_disable_queues(dev);
 
@@ -224,7 +224,7 @@ nfp_net_set_link_up(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
 		/* Configure the physical port down */
@@ -239,7 +239,7 @@ nfp_net_set_link_down(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
 		/* Configure the physical port down */
@@ -262,7 +262,7 @@ nfp_net_close(struct rte_eth_dev *dev)
 		return 0;
 
 	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 
@@ -350,7 +350,7 @@ nfp_udp_tunnel_port_add(struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	enum rte_eth_tunnel_type tnl_type;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	vxlan_port = tunnel_udp->udp_port;
 	tnl_type   = tunnel_udp->prot_type;
 
@@ -388,7 +388,7 @@ nfp_udp_tunnel_port_del(struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	enum rte_eth_tunnel_type tnl_type;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	vxlan_port = tunnel_udp->udp_port;
 	tnl_type   = tunnel_udp->prot_type;
 
@@ -828,7 +828,7 @@ nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev,
 			goto port_cleanup;
 		}
 
-		hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+		hw = eth_dev->data->dev_private;
 
 		/* Add this device to the PF's array of physical ports */
 		app_fw_nic->ports[i] = hw;
@@ -1067,7 +1067,7 @@ nfp_secondary_init_app_fw_nic(struct rte_pci_device *pci_dev,
 		}
 
 		eth_dev->process_private = cpp;
-		hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+		hw = eth_dev->data->dev_private;
 		nfp_net_ethdev_ops_mount(hw, eth_dev);
 
 		rte_eth_dev_probing_finish(eth_dev);
diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index e24fec861d..cb8a37bce7 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -66,7 +66,7 @@ nfp_netvf_start(struct rte_eth_dev *dev)
 	new_ctrl = nfp_check_offloads(dev);
 
 	/* Writing configuration parameters in the device */
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 	nfp_net_params_setup(net_hw);
 
@@ -258,7 +258,7 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 		return -ENODEV;
 	}
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	net_hw->dev_info = dev_info;
 	hw = &net_hw->super;
 
@@ -393,7 +393,7 @@ static int
 nfp_vf_pci_probe(struct rte_pci_device *pci_dev)
 {
 	return rte_eth_dev_pci_generic_probe(pci_dev,
-			sizeof(struct nfp_net_adapter), nfp_netvf_init);
+			sizeof(struct nfp_net_hw), nfp_netvf_init);
 }
 
 static int
diff --git a/drivers/net/nfp/nfp_ipsec.c b/drivers/net/nfp/nfp_ipsec.c
index 7e26977dc1..9a0ae89af3 100644
--- a/drivers/net/nfp/nfp_ipsec.c
+++ b/drivers/net/nfp/nfp_ipsec.c
@@ -579,7 +579,7 @@ nfp_aead_map(struct rte_eth_dev *eth_dev,
 	const uint32_t *key;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	device_id = net_hw->device_id;
 	offset = 0;
 
@@ -667,7 +667,7 @@ nfp_cipher_map(struct rte_eth_dev *eth_dev,
 	const uint32_t *key;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	device_id = net_hw->device_id;
 
 	switch (cipher->algo) {
@@ -808,7 +808,7 @@ nfp_auth_map(struct rte_eth_dev *eth_dev,
 		return -EINVAL;
 	}
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 	device_id = net_hw->device_id;
 	digest_length = digest_length << 3;
 
@@ -1082,7 +1082,7 @@ nfp_crypto_create_session(void *device,
 	sa_idx = -1;
 	eth_dev = device;
 	priv_session = SECURITY_GET_SESS_PRIV(session);
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	if (net_hw->ipsec_data->sa_free_cnt == 0) {
 		PMD_DRV_LOG(ERR, "No space in SA table, spi: %d", conf->ipsec.spi);
@@ -1163,7 +1163,7 @@ nfp_security_set_pkt_metadata(void *device,
 	sqn = params;
 	eth_dev = device;
 	priv_session = SECURITY_GET_SESS_PRIV(session);
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	if (priv_session->ipsec.direction == RTE_SECURITY_IPSEC_SA_DIR_EGRESS) {
 		struct nfp_tx_ipsec_desc_msg *desc_md;
@@ -1236,7 +1236,7 @@ nfp_security_session_get_stats(void *device,
 	memset(&msg, 0, sizeof(msg));
 	msg.cmd = NFP_IPSEC_CFG_MSG_GET_SA_STATS;
 	msg.sa_idx = priv_session->sa_index;
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	ret = nfp_ipsec_cfg_cmd_issue(net_hw, &msg);
 	if (ret < 0) {
@@ -1288,7 +1288,7 @@ nfp_crypto_remove_sa(struct rte_eth_dev *eth_dev,
 	struct nfp_ipsec_msg cfg;
 
 	sa_index = priv_session->sa_index;
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	net_hw = eth_dev->data->dev_private;
 
 	cfg.cmd = NFP_IPSEC_CFG_MSG_INV_SA;
 	cfg.sa_idx = sa_index;
@@ -1380,7 +1380,7 @@ nfp_ipsec_init(struct rte_eth_dev *dev)
 	struct nfp_net_hw *net_hw;
 	struct nfp_net_ipsec_data *data;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 
 	cap_extend = net_hw->super.cap_ext;
 	if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) {
@@ -1427,7 +1427,7 @@ nfp_ipsec_uninit(struct rte_eth_dev *dev)
 	struct nfp_net_hw *net_hw;
 	struct nfp_ipsec_session *priv_session;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 
 	cap_extend = net_hw->super.cap_ext;
 	if ((cap_extend & NFP_NET_CFG_CTRL_IPSEC) == 0) {
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index ac97e3bed5..10f6298f74 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -252,7 +252,7 @@ nfp_net_configure(struct rte_eth_dev *dev)
 	struct rte_eth_rxmode *rxmode;
 	struct rte_eth_txmode *txmode;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	dev_conf = &dev->data->dev_conf;
 	rxmode = &dev_conf->rxmode;
 	txmode = &dev_conf->txmode;
@@ -329,7 +329,7 @@ nfp_net_enable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_enable_queues(&hw->super, dev->data->nb_rx_queues,
 			dev->data->nb_tx_queues);
@@ -340,7 +340,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 
 	nfp_disable_queues(&net_hw->super);
 }
@@ -367,7 +367,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 &&
 			(hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) {
@@ -407,7 +407,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 		return -ENOMEM;
 	}
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) {
 		PMD_DRV_LOG(INFO, "VF: enabling RX interrupt with UIO");
@@ -443,7 +443,7 @@ nfp_check_offloads(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_eth_conf *dev_conf;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	cap = hw->super.cap;
 
 	dev_conf = &dev->data->dev_conf;
@@ -516,7 +516,7 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev)
 		repr = dev->data->dev_private;
 		net_hw = repr->app_fw_flower->pf_hw;
 	} else {
-		net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+		net_hw = dev->data->dev_private;
 	}
 
 	hw = &net_hw->super;
@@ -551,7 +551,7 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {
@@ -588,7 +588,7 @@ nfp_net_link_update(struct rte_eth_dev *dev,
 	struct rte_eth_link link;
 	struct nfp_eth_table *nfp_eth_table;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	memset(&link, 0, sizeof(struct rte_eth_link));
 
@@ -654,7 +654,7 @@ nfp_net_stats_get(struct rte_eth_dev *dev,
 	if (stats == NULL)
 		return -EINVAL;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	memset(&nfp_dev_stats, 0, sizeof(nfp_dev_stats));
 
@@ -732,7 +732,7 @@ nfp_net_stats_reset(struct rte_eth_dev *dev)
 	uint16_t i;
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	/* Reading per RX ring stats */
 	for (i = 0; i < dev->data->nb_rx_queues; i++) {
@@ -794,7 +794,7 @@ nfp_net_xstats_size(const struct rte_eth_dev *dev)
 	const uint32_t size = RTE_DIM(nfp_net_xstats);
 
 	/* If the device is a VF, then there will be no MAC stats */
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	if (hw->mac_stats == NULL) {
 		for (count = 0; count < size; count++) {
 			if (nfp_net_xstats[count].group == NFP_XSTAT_GROUP_MAC)
@@ -828,7 +828,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	struct nfp_xstat xstat;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	xstat = nfp_net_xstats[index];
 
 	if (xstat.group == NFP_XSTAT_GROUP_MAC)
@@ -967,7 +967,7 @@ nfp_net_xstats_reset(struct rte_eth_dev *dev)
 	uint32_t read_size;
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	read_size = nfp_net_xstats_size(dev);
 
 	for (id = 0; id < read_size; id++) {
@@ -1015,7 +1015,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	uint16_t max_tx_desc;
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
@@ -1220,7 +1220,7 @@ nfp_net_supported_ptypes_get(struct rte_eth_dev *dev)
 	if (dev->rx_pkt_burst != nfp_net_recv_pkts)
 		return NULL;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	if ((net_hw->super.cap_ext & NFP_NET_CFG_CTRL_PKT_TYPE) == 0)
 		return NULL;
 
@@ -1242,7 +1242,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id),
 			NFP_NET_CFG_ICR_UNMASKED);
 	return 0;
@@ -1263,7 +1263,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX);
 
 	return 0;
@@ -1301,7 +1301,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_pci_device *pci_dev;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 
 	/* Make sure all updates are written before un-masking */
@@ -1376,7 +1376,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	/* MTU setting is forbidden if port is started */
 	if (dev->data->dev_started) {
@@ -1412,9 +1412,8 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t rxvlan_ctrl = 0;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
-
 	rx_offload = dev->data->dev_conf.rxmode.offloads;
 	new_ctrl = hw->ctrl;
 
@@ -1463,7 +1462,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) {
@@ -1519,7 +1518,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1552,7 +1551,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1602,7 +1601,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t cfg_rss_ctrl = 0;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	/* Writing the key byte by byte */
@@ -1658,7 +1657,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	rss_hf = rss_conf->rss_hf;
@@ -1699,7 +1698,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,
 	uint32_t cfg_rss_ctrl;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1987,7 +1986,7 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev,
 	if (fw_size < FW_VER_LEN)
 		return FW_VER_LEN;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d",
 			hw->ver.extend, hw->ver.class,
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index 6607175460..a23b5be968 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -238,9 +238,6 @@ int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size
 int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
 
-#define NFP_NET_DEV_PRIVATE_TO_HW(adapter)\
-	(&((struct nfp_net_adapter *)adapter)->hw)
-
 #define NFP_NET_DEV_PRIVATE_TO_PF(dev_priv)\
 	(((struct nfp_net_hw *)dev_priv)->pf_dev)
 
diff --git a/drivers/net/nfp/nfp_net_ctrl.c b/drivers/net/nfp/nfp_net_ctrl.c
index 5135a1ad27..ea14b98924 100644
--- a/drivers/net/nfp/nfp_net_ctrl.c
+++ b/drivers/net/nfp/nfp_net_ctrl.c
@@ -31,7 +31,7 @@ nfp_net_tlv_caps_parse(struct rte_eth_dev *dev)
 	struct nfp_net_hw *net_hw;
 	struct nfp_net_tlv_caps *caps;
 
-	net_hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	net_hw = dev->data->dev_private;
 	caps = &net_hw->tlv_caps;
 	nfp_net_tlv_caps_reset(caps);
 
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 644be2700e..38ce83aa46 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -840,7 +840,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_rxq *rxq;
 	const struct rte_memzone *tz;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 
@@ -1067,7 +1067,7 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	hw = dev->data->dev_private;
 
 	if (hw->ver.extend == NFP_NET_CFG_VERSION_DP_NFD3)
 		return nfp_net_nfd3_tx_queue_setup(dev, queue_idx,
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 05/11] net/nfp: remove the redundancy macro
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (3 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 06/11] net/nfp: remove redundancy logic of init control BAR Chaoyong He
                     ` (6 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Macro 'NFP_HASH_OFFSET' and 'NFP_HASH_TYPE_OFFSET' are unused, so remove
them.
Macro 'NFP_MAX_PHYPORTS' and 'MAX_FLOWER_PHYPORTS' are redundancy, so
just keep the first one.
Macro 'NFP_NET_CFG_SPARE_ADDR', 'NFP_NET_CFG_RX_OFFSET_ADDR' and
'NFP_NET_CFG_RX_OFFSET' are redundancy, we just keep the final one.
Remove the unneeded macro 'NFP_NET_DEV_PRIVATE_TO_PF', and adjust the
related logic, to make it easier to read.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/common/nfp/nfp_common_ctrl.h | 17 -----------------
 drivers/net/nfp/flower/nfp_flower.h  |  3 +--
 drivers/net/nfp/nfp_ethdev.c         | 12 ++++--------
 drivers/net/nfp/nfp_net_common.c     |  2 +-
 drivers/net/nfp/nfp_net_common.h     |  3 ---
 drivers/net/nfp/nfp_rxtx.h           |  3 ---
 6 files changed, 6 insertions(+), 34 deletions(-)

diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h
index f92ce50fc0..7033c8ea00 100644
--- a/drivers/common/nfp/nfp_common_ctrl.h
+++ b/drivers/common/nfp/nfp_common_ctrl.h
@@ -196,11 +196,6 @@ struct nfp_net_fw_ver {
 #define NFP_NET_CFG_START_TXQ           0x0048
 #define NFP_NET_CFG_START_RXQ           0x004c
 
-/*
- * NFP-3200 workaround (0x0050 - 0x0058)
- * @NFP_NET_CFG_SPARE_ADDR:  DMA address for ME code to use (e.g. YDS-155 fix)
- */
-#define NFP_NET_CFG_SPARE_ADDR          0x0050
 /*
  * NFP6000/NFP4000 - Prepend configuration
  */
@@ -210,18 +205,6 @@ struct nfp_net_fw_ver {
 /* Start anchor of the TLV area */
 #define NFP_NET_CFG_TLV_BASE            0x0058
 
-/**
- * Reuse spare address to contain the offset from the start of
- * the host buffer where the first byte of the received frame
- * will land.  Any metadata will come prior to that offset.  If the
- * value in this field is 0, it means that the metadata will
- * always land starting at the first byte of the host buffer and
- * packet data will immediately follow the metadata.  As always,
- * the RX descriptor indicates the presence or absence of metadata
- * along with the length thereof.
- */
-#define NFP_NET_CFG_RX_OFFSET_ADDR      0x0050
-
 #define NFP_NET_CFG_VXLAN_PORT          0x0060
 #define NFP_NET_CFG_VXLAN_SZ            0x0008
 
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index 7d442e3cb2..a989c4a8b8 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -31,7 +31,6 @@
  */
 #define FLOWER_PKT_DATA_OFFSET (NFP_NET_META_HEADER_SIZE + NFP_NET_META_FIELD_SIZE)
 
-#define MAX_FLOWER_PHYPORTS 8
 #define MAX_FLOWER_VFS 64
 
 /* Forward declaration */
@@ -78,7 +77,7 @@ struct nfp_app_fw_flower {
 	uint64_t ctrl_vnic_tx_count;
 
 	/** Array of phyport representors */
-	struct nfp_flower_representor *phy_reprs[MAX_FLOWER_PHYPORTS];
+	struct nfp_flower_representor *phy_reprs[NFP_MAX_PHYPORTS];
 
 	/** Array of VF representors */
 	struct nfp_flower_representor *vf_reprs[MAX_FLOWER_VFS];
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 8e69fa67b2..7c5b780e82 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -56,7 +56,7 @@ nfp_net_start(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle = pci_dev->intr_handle;
 
 	net_hw = dev->data->dev_private;
-	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	pf_dev = net_hw->pf_dev;
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 	hw = &net_hw->super;
 
@@ -261,8 +261,8 @@ nfp_net_close(struct rte_eth_dev *dev)
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
 		return 0;
 
-	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(dev->data->dev_private);
 	hw = dev->data->dev_private;
+	pf_dev = hw->pf_dev;
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
 
@@ -482,9 +482,10 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 	struct nfp_app_fw_nic *app_fw_nic;
 
 	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
+	net_hw = eth_dev->data->dev_private;
 
 	/* Use backpointer here to the PF of this eth_dev */
-	pf_dev = NFP_NET_DEV_PRIVATE_TO_PF(eth_dev->data->dev_private);
+	pf_dev = net_hw->pf_dev;
 
 	/* Use backpointer to the CoreNIC app struct */
 	app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv);
@@ -495,11 +496,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 		return -ENODEV;
 	}
 
-	/*
-	 * Use PF array of physical ports to get pointer to
-	 * this specific port.
-	 */
-	net_hw = app_fw_nic->ports[port];
 	hw = &net_hw->super;
 
 	PMD_INIT_LOG(DEBUG, "Working with physical port number: %hu, "
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index 10f6298f74..d43a071a42 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -1172,7 +1172,7 @@ nfp_net_common_init(struct rte_pci_device *pci_dev,
 	if (hw->ver.major < 2)
 		hw->rx_offset = NFP_NET_RX_OFFSET;
 	else
-		hw->rx_offset = nn_cfg_readl(&hw->super, NFP_NET_CFG_RX_OFFSET_ADDR);
+		hw->rx_offset = nn_cfg_readl(&hw->super, NFP_NET_CFG_RX_OFFSET);
 
 	hw->super.ctrl = 0;
 	hw->stride_rx = stride;
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index a23b5be968..829e9c5333 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -238,9 +238,6 @@ int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size
 int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
 
-#define NFP_NET_DEV_PRIVATE_TO_PF(dev_priv)\
-	(((struct nfp_net_hw *)dev_priv)->pf_dev)
-
 #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\
 	((struct nfp_app_fw_nic *)app_fw_priv)
 
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index 956cc7a0d2..ff1019b690 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -10,9 +10,6 @@
 
 #define NFP_DESC_META_LEN(d) ((d)->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK)
 
-#define NFP_HASH_OFFSET      ((uint8_t *)mbuf->buf_addr + mbuf->data_off - 4)
-#define NFP_HASH_TYPE_OFFSET ((uint8_t *)mbuf->buf_addr + mbuf->data_off - 8)
-
 #define RTE_MBUF_DMA_ADDR_DEFAULT(mb) \
 	((uint64_t)((mb)->buf_iova + RTE_PKTMBUF_HEADROOM))
 
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 06/11] net/nfp: remove redundancy logic of init control BAR
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (4 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 05/11] net/nfp: remove the redundancy macro Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 07/11] net/nfp: use the DPDK defined function Chaoyong He
                     ` (5 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

There are two initialize statements of control BAR in 'nfp_net_init()'
and the first one is unneeded, and what it really use is the check of
NULL value of the 'mem_resource'. So we move the check of 'mem_resource'
to the start of probe logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 7c5b780e82..8057452799 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -503,12 +503,6 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 
 	rte_eth_copy_pci_info(eth_dev, pci_dev);
 
-	hw->ctrl_bar = pci_dev->mem_resource[0].addr;
-	if (hw->ctrl_bar == NULL) {
-		PMD_DRV_LOG(ERR, "hw->ctrl_bar is NULL. BAR0 not configured");
-		return -ENODEV;
-	}
-
 	if (port == 0) {
 		uint32_t min_size;
 
@@ -890,6 +884,11 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
 	if (pci_dev == NULL)
 		return -ENODEV;
 
+	if (pci_dev->mem_resource[0].addr == NULL) {
+		PMD_INIT_LOG(ERR, "The address of BAR0 is NULL.");
+		return -ENODEV;
+	}
+
 	dev_info = nfp_dev_info_get(pci_dev->id.device_id);
 	if (dev_info == NULL) {
 		PMD_INIT_LOG(ERR, "Not supported device ID");
@@ -1089,6 +1088,11 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)
 	if (pci_dev == NULL)
 		return -ENODEV;
 
+	if (pci_dev->mem_resource[0].addr == NULL) {
+		PMD_INIT_LOG(ERR, "The address of BAR0 is NULL.");
+		return -ENODEV;
+	}
+
 	dev_info = nfp_dev_info_get(pci_dev->id.device_id);
 	if (dev_info == NULL) {
 		PMD_INIT_LOG(ERR, "Not supported device ID");
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 07/11] net/nfp: use the DPDK defined function
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (5 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 06/11] net/nfp: remove redundancy logic of init control BAR Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 08/11] net/nfp: replace hard coded value Chaoyong He
                     ` (4 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Use the DPDK defined function to replace the user defined macro, to make
the logic more standard.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_ctrl.c | 2 +-
 drivers/net/nfp/nfp_rxtx.c               | 4 ++--
 drivers/net/nfp/nfp_rxtx.h               | 3 ---
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c
index d19b60bc69..c25487c277 100644
--- a/drivers/net/nfp/flower/nfp_flower_ctrl.c
+++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c
@@ -109,7 +109,7 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue,
 		/* Now resetting and updating the descriptor */
 		rxds->vals[0] = 0;
 		rxds->vals[1] = 0;
-		dma_addr = rte_cpu_to_le_64(RTE_MBUF_DMA_ADDR_DEFAULT(new_mb));
+		dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb));
 		rxds->fld.dd = 0;
 		rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
 		rxds->fld.dma_addr_lo = dma_addr & 0xffffffff;
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index 38ce83aa46..be1ac32c73 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -184,7 +184,7 @@ nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
 			return -ENOMEM;
 		}
 
-		dma_addr = rte_cpu_to_le_64(RTE_MBUF_DMA_ADDR_DEFAULT(mbuf));
+		dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(mbuf));
 
 		rxd = &rxq->rxds[i];
 		rxd->fld.dd = 0;
@@ -752,7 +752,7 @@ nfp_net_recv_pkts(void *rx_queue,
 		/* Now resetting and updating the descriptor */
 		rxds->vals[0] = 0;
 		rxds->vals[1] = 0;
-		dma_addr = rte_cpu_to_le_64(RTE_MBUF_DMA_ADDR_DEFAULT(new_mb));
+		dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(new_mb));
 		rxds->fld.dd = 0;
 		rxds->fld.dma_addr_hi = (dma_addr >> 32) & 0xffff;
 		rxds->fld.dma_addr_lo = dma_addr & 0xffffffff;
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index ff1019b690..5695a31636 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -10,9 +10,6 @@
 
 #define NFP_DESC_META_LEN(d) ((d)->rxd.meta_len_dd & PCIE_DESC_RX_META_LEN_MASK)
 
-#define RTE_MBUF_DMA_ADDR_DEFAULT(mb) \
-	((uint64_t)((mb)->buf_iova + RTE_PKTMBUF_HEADROOM))
-
 /* Maximum number of NFP packet metadata fields. */
 #define NFP_META_MAX_FIELDS      8
 
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 08/11] net/nfp: replace hard coded value
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (6 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 07/11] net/nfp: use the DPDK defined function Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 09/11] net/nfp: unify the PMD name with macro Chaoyong He
                     ` (3 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Replace the hard coded value with meaningful macro to make it more
readable.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower_cmsg.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c
index 4013b32fd0..8effe9474d 100644
--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c
+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c
@@ -13,7 +13,8 @@
 static char*
 nfp_flower_cmsg_get_data(struct rte_mbuf *m)
 {
-	return rte_pktmbuf_mtod_offset(m, char *, 4 + 4 + NFP_FLOWER_CMSG_HLEN);
+	return rte_pktmbuf_mtod_offset(m, char *, NFP_NET_META_HEADER_SIZE +
+			NFP_NET_META_FIELD_SIZE + NFP_FLOWER_CMSG_HLEN);
 }
 
 static void *
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 09/11] net/nfp: unify the PMD name with macro
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (7 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 08/11] net/nfp: replace hard coded value Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 10/11] net/nfp: extract a helper function Chaoyong He
                     ` (2 subsequent siblings)
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Unify the PMD name with a string macro, make it more extendable.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/nfp_ethdev.c    | 8 +++++---
 drivers/net/nfp/nfp_ethdev_vf.c | 6 ++++--
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 8057452799..c4a36027b9 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -21,6 +21,8 @@
 #include "nfp_ipsec.h"
 #include "nfp_logs.h"
 
+#define NFP_PF_DRIVER_NAME net_nfp_pf
+
 static void
 nfp_net_pf_read_mac(struct nfp_app_fw_nic *app_fw_nic,
 		uint16_t port)
@@ -1233,6 +1235,6 @@ static struct rte_pci_driver rte_nfp_net_pf_pmd = {
 	.remove = eth_nfp_pci_remove,
 };
 
-RTE_PMD_REGISTER_PCI(net_nfp_pf, rte_nfp_net_pf_pmd);
-RTE_PMD_REGISTER_PCI_TABLE(net_nfp_pf, pci_id_nfp_pf_net_map);
-RTE_PMD_REGISTER_KMOD_DEP(net_nfp_pf, "* igb_uio | uio_pci_generic | vfio");
+RTE_PMD_REGISTER_PCI(NFP_PF_DRIVER_NAME, rte_nfp_net_pf_pmd);
+RTE_PMD_REGISTER_PCI_TABLE(NFP_PF_DRIVER_NAME, pci_id_nfp_pf_net_map);
+RTE_PMD_REGISTER_KMOD_DEP(NFP_PF_DRIVER_NAME, "* igb_uio | uio_pci_generic | vfio");
diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index cb8a37bce7..d0834ccb3e 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -15,6 +15,8 @@
 #include "nfp_logs.h"
 #include "nfp_net_common.h"
 
+#define NFP_VF_DRIVER_NAME net_nfp_vf
+
 static int
 nfp_netvf_start(struct rte_eth_dev *dev)
 {
@@ -416,5 +418,5 @@ RTE_INIT(rte_nfp_vf_pmd_init)
 	nfp_class_driver_register(&rte_nfp_net_vf_pmd);
 }
 
-RTE_PMD_REGISTER_PCI_TABLE(net_nfp_vf, pci_id_nfp_vf_net_map);
-RTE_PMD_REGISTER_KMOD_DEP(net_nfp_vf, "* igb_uio | uio_pci_generic | vfio");
+RTE_PMD_REGISTER_PCI_TABLE(NFP_VF_DRIVER_NAME, pci_id_nfp_vf_net_map);
+RTE_PMD_REGISTER_KMOD_DEP(NFP_VF_DRIVER_NAME, "* igb_uio | uio_pci_generic | vfio");
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 10/11] net/nfp: extract a helper function
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (8 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 09/11] net/nfp: unify the PMD name with macro Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-10-28  6:53   ` [PATCH v2 11/11] net/nfp: remove the redundancy logic of representor port Chaoyong He
  2023-11-01 18:33   ` [PATCH v2 00/11] Clean up NFP PMD Ferruh Yigit
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Extract a helper function to get the pointer of 'struct nfp_net_hw' for
both normal port and representor pot, this will make the operation
function can be used for both type port.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c | 64 ++-----------------------
 drivers/net/nfp/nfp_net_common.c    | 74 ++++++++++++++++-------------
 drivers/net/nfp/nfp_net_common.h    |  1 +
 3 files changed, 47 insertions(+), 92 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index 246dd2d454..0727e7fd9f 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -21,62 +21,6 @@
 
 #define CTRL_VNIC_NB_DESC 512
 
-static void
-nfp_pf_repr_enable_queues(struct rte_eth_dev *dev)
-{
-	uint16_t i;
-	struct nfp_hw *hw;
-	uint64_t enabled_queues = 0;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = &repr->app_fw_flower->pf_hw->super;
-
-	/* Enabling the required TX queues in the device */
-	for (i = 0; i < dev->data->nb_tx_queues; i++)
-		enabled_queues |= (1 << i);
-
-	nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, enabled_queues);
-
-	enabled_queues = 0;
-
-	/* Enabling the required RX queues in the device */
-	for (i = 0; i < dev->data->nb_rx_queues; i++)
-		enabled_queues |= (1 << i);
-
-	nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, enabled_queues);
-}
-
-static void
-nfp_pf_repr_disable_queues(struct rte_eth_dev *dev)
-{
-	uint32_t update;
-	uint32_t new_ctrl;
-	struct nfp_hw *hw;
-	struct nfp_net_hw *net_hw;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	net_hw = repr->app_fw_flower->pf_hw;
-	hw = &net_hw->super;
-
-	nn_cfg_writeq(hw, NFP_NET_CFG_TXRS_ENABLE, 0);
-	nn_cfg_writeq(hw, NFP_NET_CFG_RXRS_ENABLE, 0);
-
-	new_ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_ENABLE;
-	update = NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING |
-			NFP_NET_CFG_UPDATE_MSIX;
-
-	if (hw->cap & NFP_NET_CFG_CTRL_RINGCFG)
-		new_ctrl &= ~NFP_NET_CFG_CTRL_RINGCFG;
-
-	/* If an error when reconfig we avoid to change hw state */
-	if (nfp_reconfig(hw, new_ctrl, update) < 0)
-		return;
-
-	hw->ctrl = new_ctrl;
-}
-
 int
 nfp_flower_pf_start(struct rte_eth_dev *dev)
 {
@@ -93,10 +37,10 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	hw = &net_hw->super;
 
 	/* Disabling queues just in case... */
-	nfp_pf_repr_disable_queues(dev);
+	nfp_net_disable_queues(dev);
 
 	/* Enabling the required queues in the device */
-	nfp_pf_repr_enable_queues(dev);
+	nfp_net_enable_queues(dev);
 
 	new_ctrl = nfp_check_offloads(dev);
 
@@ -157,7 +101,7 @@ nfp_flower_pf_stop(struct rte_eth_dev *dev)
 	repr = dev->data->dev_private;
 	hw = repr->app_fw_flower->pf_hw;
 
-	nfp_pf_repr_disable_queues(dev);
+	nfp_net_disable_queues(dev);
 
 	/* Clear queues */
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -207,7 +151,7 @@ nfp_flower_pf_close(struct rte_eth_dev *dev)
 	 * We assume that the DPDK application is stopping all the
 	 * threads/queues before calling the device close function.
 	 */
-	nfp_pf_repr_disable_queues(dev);
+	nfp_net_disable_queues(dev);
 
 	/* Clear queues */
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index d43a071a42..1be0d7d060 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -233,6 +233,22 @@ nfp_net_mbox_reconfig(struct nfp_net_hw *net_hw,
 	return nn_cfg_readl(&net_hw->super, mbox + NFP_NET_CFG_MBOX_SIMPLE_RET);
 }
 
+struct nfp_net_hw *
+nfp_net_get_hw(const struct rte_eth_dev *dev)
+{
+	struct nfp_net_hw *hw;
+
+	if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
+		struct nfp_flower_representor *repr;
+		repr = dev->data->dev_private;
+		hw = repr->app_fw_flower->pf_hw;
+	} else {
+		hw = dev->data->dev_private;
+	}
+
+	return hw;
+}
+
 /*
  * Configure an Ethernet device.
  *
@@ -252,7 +268,7 @@ nfp_net_configure(struct rte_eth_dev *dev)
 	struct rte_eth_rxmode *rxmode;
 	struct rte_eth_txmode *txmode;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	dev_conf = &dev->data->dev_conf;
 	rxmode = &dev_conf->rxmode;
 	txmode = &dev_conf->txmode;
@@ -329,7 +345,7 @@ nfp_net_enable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_enable_queues(&hw->super, dev->data->nb_rx_queues,
 			dev->data->nb_tx_queues);
@@ -340,7 +356,7 @@ nfp_net_disable_queues(struct rte_eth_dev *dev)
 {
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 
 	nfp_disable_queues(&net_hw->super);
 }
@@ -367,7 +383,7 @@ nfp_net_set_mac_addr(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) != 0 &&
 			(hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR) == 0) {
@@ -407,7 +423,7 @@ nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 		return -ENOMEM;
 	}
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	if (rte_intr_type_get(intr_handle) == RTE_INTR_HANDLE_UIO) {
 		PMD_DRV_LOG(INFO, "VF: enabling RX interrupt with UIO");
@@ -443,7 +459,7 @@ nfp_check_offloads(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_eth_conf *dev_conf;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	cap = hw->super.cap;
 
 	dev_conf = &dev->data->dev_conf;
@@ -510,14 +526,8 @@ nfp_net_promisc_enable(struct rte_eth_dev *dev)
 	uint32_t new_ctrl;
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
-	struct nfp_flower_representor *repr;
 
-	if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
-		repr = dev->data->dev_private;
-		net_hw = repr->app_fw_flower->pf_hw;
-	} else {
-		net_hw = dev->data->dev_private;
-	}
+	net_hw = nfp_net_get_hw(dev);
 
 	hw = &net_hw->super;
 	if ((hw->cap & NFP_NET_CFG_CTRL_PROMISC) == 0) {
@@ -551,7 +561,7 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_PROMISC) == 0) {
@@ -588,7 +598,7 @@ nfp_net_link_update(struct rte_eth_dev *dev,
 	struct rte_eth_link link;
 	struct nfp_eth_table *nfp_eth_table;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	memset(&link, 0, sizeof(struct rte_eth_link));
 
@@ -654,7 +664,7 @@ nfp_net_stats_get(struct rte_eth_dev *dev,
 	if (stats == NULL)
 		return -EINVAL;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	memset(&nfp_dev_stats, 0, sizeof(nfp_dev_stats));
 
@@ -732,7 +742,7 @@ nfp_net_stats_reset(struct rte_eth_dev *dev)
 	uint16_t i;
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	/* Reading per RX ring stats */
 	for (i = 0; i < dev->data->nb_rx_queues; i++) {
@@ -794,7 +804,7 @@ nfp_net_xstats_size(const struct rte_eth_dev *dev)
 	const uint32_t size = RTE_DIM(nfp_net_xstats);
 
 	/* If the device is a VF, then there will be no MAC stats */
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	if (hw->mac_stats == NULL) {
 		for (count = 0; count < size; count++) {
 			if (nfp_net_xstats[count].group == NFP_XSTAT_GROUP_MAC)
@@ -828,7 +838,7 @@ nfp_net_xstats_value(const struct rte_eth_dev *dev,
 	struct nfp_net_hw *hw;
 	struct nfp_xstat xstat;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	xstat = nfp_net_xstats[index];
 
 	if (xstat.group == NFP_XSTAT_GROUP_MAC)
@@ -967,7 +977,7 @@ nfp_net_xstats_reset(struct rte_eth_dev *dev)
 	uint32_t read_size;
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	read_size = nfp_net_xstats_size(dev);
 
 	for (id = 0; id < read_size; id++) {
@@ -1015,7 +1025,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	uint16_t max_tx_desc;
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
@@ -1242,7 +1252,7 @@ nfp_rx_queue_intr_enable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id),
 			NFP_NET_CFG_ICR_UNMASKED);
 	return 0;
@@ -1263,7 +1273,7 @@ nfp_rx_queue_intr_disable(struct rte_eth_dev *dev,
 	/* Make sure all updates are written before un-masking */
 	rte_wmb();
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	nn_cfg_writeb(&hw->super, NFP_NET_CFG_ICR(base + queue_id), NFP_NET_CFG_ICR_RXTX);
 
 	return 0;
@@ -1301,7 +1311,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev)
 	struct nfp_net_hw *hw;
 	struct rte_pci_device *pci_dev;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 
 	/* Make sure all updates are written before un-masking */
@@ -1376,7 +1386,7 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	/* MTU setting is forbidden if port is started */
 	if (dev->data->dev_started) {
@@ -1412,7 +1422,7 @@ nfp_net_vlan_offload_set(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t rxvlan_ctrl = 0;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 	rx_offload = dev->data->dev_conf.rxmode.offloads;
 	new_ctrl = hw->ctrl;
@@ -1462,7 +1472,7 @@ nfp_net_rss_reta_write(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if (reta_size != NFP_NET_CFG_RSS_ITBL_SZ) {
@@ -1518,7 +1528,7 @@ nfp_net_reta_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1551,7 +1561,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
@@ -1601,7 +1611,7 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
 	struct nfp_net_hw *net_hw;
 	uint32_t cfg_rss_ctrl = 0;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	/* Writing the key byte by byte */
@@ -1657,7 +1667,7 @@ nfp_net_rss_hash_update(struct rte_eth_dev *dev,
 	struct nfp_hw *hw;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	rss_hf = rss_conf->rss_hf;
@@ -1698,7 +1708,7 @@ nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev,
 	uint32_t cfg_rss_ctrl;
 	struct nfp_net_hw *net_hw;
 
-	net_hw = dev->data->dev_private;
+	net_hw = nfp_net_get_hw(dev);
 	hw = &net_hw->super;
 
 	if ((hw->ctrl & NFP_NET_CFG_CTRL_RSS_ANY) == 0)
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index 829e9c5333..e242251bc2 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -237,6 +237,7 @@ void nfp_net_cfg_read_version(struct nfp_net_hw *hw);
 int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
+struct nfp_net_hw *nfp_net_get_hw(const struct rte_eth_dev *dev);
 
 #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\
 	((struct nfp_app_fw_nic *)app_fw_priv)
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* [PATCH v2 11/11] net/nfp: remove the redundancy logic of representor port
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (9 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 10/11] net/nfp: extract a helper function Chaoyong He
@ 2023-10-28  6:53   ` Chaoyong He
  2023-11-01 18:33   ` [PATCH v2 00/11] Clean up NFP PMD Ferruh Yigit
  11 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-10-28  6:53 UTC (permalink / raw)
  To: dev; +Cc: oss-drivers, Chaoyong He, Peng Zhang

Using the helper function, we can remove some redundancy logic of
representor port by reusing the functions in common module.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Peng Zhang <peng.zhang@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c           |  47 +---
 drivers/net/nfp/flower/nfp_flower.h           |   1 -
 .../net/nfp/flower/nfp_flower_representor.c   | 253 +-----------------
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c            |   2 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c            |   2 +-
 drivers/net/nfp/nfp_ethdev.c                  |  28 +-
 drivers/net/nfp/nfp_net_common.c              | 127 +++++----
 drivers/net/nfp/nfp_net_common.h              |   6 +-
 drivers/net/nfp/nfp_rxtx.c                    |   4 +-
 9 files changed, 93 insertions(+), 377 deletions(-)

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index 0727e7fd9f..f2e6eb6a6f 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -48,11 +48,7 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	nfp_net_params_setup(net_hw);
 
 	update |= NFP_NET_CFG_UPDATE_RSS;
-
-	if ((hw->cap & NFP_NET_CFG_CTRL_RSS2) != 0)
-		new_ctrl |= NFP_NET_CFG_CTRL_RSS2;
-	else
-		new_ctrl |= NFP_NET_CFG_CTRL_RSS;
+	new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap);
 
 	/* Enable device */
 	new_ctrl |= NFP_NET_CFG_CTRL_ENABLE;
@@ -62,8 +58,6 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0)
 		new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG;
 
-	nn_cfg_writel(hw, NFP_NET_CFG_CTRL, new_ctrl);
-
 	/* If an error when reconfig we avoid to change hw state */
 	ret = nfp_reconfig(hw, new_ctrl, update);
 	if (ret != 0) {
@@ -88,43 +82,6 @@ nfp_flower_pf_start(struct rte_eth_dev *dev)
 	return 0;
 }
 
-/* Stop device: disable rx and tx functions to allow for reconfiguring. */
-int
-nfp_flower_pf_stop(struct rte_eth_dev *dev)
-{
-	uint16_t i;
-	struct nfp_net_hw *hw;
-	struct nfp_net_txq *this_tx_q;
-	struct nfp_net_rxq *this_rx_q;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	nfp_net_disable_queues(dev);
-
-	/* Clear queues */
-	for (i = 0; i < dev->data->nb_tx_queues; i++) {
-		this_tx_q = dev->data->tx_queues[i];
-		nfp_net_reset_tx_queue(this_tx_q);
-		dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;
-	}
-
-	for (i = 0; i < dev->data->nb_rx_queues; i++) {
-		this_rx_q = dev->data->rx_queues[i];
-		nfp_net_reset_rx_queue(this_rx_q);
-		dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;
-	}
-
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
-		/* Configure the physical port down */
-		nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);
-	else
-		nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);
-
-	return 0;
-}
-
 /* Reset and stop device. The device can not be restarted. */
 static int
 nfp_flower_pf_close(struct rte_eth_dev *dev)
@@ -188,7 +145,7 @@ static const struct eth_dev_ops nfp_flower_pf_vnic_ops = {
 	.dev_configure          = nfp_net_configure,
 
 	.dev_start              = nfp_flower_pf_start,
-	.dev_stop               = nfp_flower_pf_stop,
+	.dev_stop               = nfp_net_stop,
 	.dev_close              = nfp_flower_pf_close,
 };
 
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index a989c4a8b8..220b714018 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -113,7 +113,6 @@ bool nfp_flower_pf_dispatch_pkts(struct nfp_net_hw *hw,
 uint16_t nfp_flower_pf_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 		uint16_t nb_pkts);
 int nfp_flower_pf_start(struct rte_eth_dev *dev);
-int nfp_flower_pf_stop(struct rte_eth_dev *dev);
 uint32_t nfp_flower_pkt_add_metadata(struct nfp_app_fw_flower *app_fw_flower,
 		struct rte_mbuf *mbuf, uint32_t port_id);
 
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index b52c6f514a..0f0e63aae0 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -18,232 +18,23 @@ enum nfp_repr_type {
 	NFP_REPR_TYPE_MAX,          /*<< Number of representor types */
 };
 
-static int
-nfp_pf_repr_rx_queue_setup(struct rte_eth_dev *dev,
-		uint16_t queue_idx,
-		uint16_t nb_desc,
-		unsigned int socket_id,
-		const struct rte_eth_rxconf *rx_conf,
-		struct rte_mempool *mp)
-{
-	struct nfp_net_hw *hw;
-	struct nfp_net_rxq *rxq;
-	const struct rte_memzone *tz;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	/* Allocating rx queue data structure */
-	rxq = rte_zmalloc_socket("ethdev RX queue", sizeof(struct nfp_net_rxq),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (rxq == NULL)
-		return -ENOMEM;
-
-	dev->data->rx_queues[queue_idx] = rxq;
-
-	/* Hw queues mapping based on firmware configuration */
-	rxq->qidx = queue_idx;
-	rxq->fl_qcidx = queue_idx * hw->stride_rx;
-	rxq->qcp_fl = hw->rx_bar + NFP_QCP_QUEUE_OFF(rxq->fl_qcidx);
-
-	/*
-	 * Tracking mbuf size for detecting a potential mbuf overflow due to
-	 * RX offset.
-	 */
-	rxq->mem_pool = mp;
-	rxq->mbuf_size = rxq->mem_pool->elt_size;
-	rxq->mbuf_size -= (sizeof(struct rte_mbuf) + RTE_PKTMBUF_HEADROOM);
-	hw->flbufsz = rxq->mbuf_size;
-
-	rxq->rx_count = nb_desc;
-	rxq->port_id = dev->data->port_id;
-	rxq->rx_free_thresh = rx_conf->rx_free_thresh;
-
-	/*
-	 * Allocate RX ring hardware descriptors. A memzone large enough to
-	 * handle the maximum ring size is allocated in order to allow for
-	 * resizing in later calls to the queue setup function.
-	 */
-	tz = rte_eth_dma_zone_reserve(dev, "rx_ring", queue_idx,
-			sizeof(struct nfp_net_rx_desc) *
-			hw->dev_info->max_qc_size,
-			NFP_MEMZONE_ALIGN, socket_id);
-	if (tz == NULL) {
-		PMD_DRV_LOG(ERR, "Error allocating rx dma");
-		nfp_net_rx_queue_release(dev, queue_idx);
-		dev->data->rx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	/* Saving physical and virtual addresses for the RX ring */
-	rxq->dma = (uint64_t)tz->iova;
-	rxq->rxds = tz->addr;
-
-	/* Mbuf pointers array for referencing mbufs linked to RX descriptors */
-	rxq->rxbufs = rte_zmalloc_socket("rxq->rxbufs",
-			sizeof(*rxq->rxbufs) * nb_desc,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (rxq->rxbufs == NULL) {
-		nfp_net_rx_queue_release(dev, queue_idx);
-		dev->data->rx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	nfp_net_reset_rx_queue(rxq);
-	rxq->hw = hw;
-
-	/*
-	 * Telling the HW about the physical address of the RX ring and number
-	 * of descriptors in log2 format.
-	 */
-	nn_cfg_writeq(&hw->super, NFP_NET_CFG_RXR_ADDR(queue_idx), rxq->dma);
-	nn_cfg_writeb(&hw->super, NFP_NET_CFG_RXR_SZ(queue_idx), rte_log2_u32(nb_desc));
-
-	return 0;
-}
-
-static int
-nfp_pf_repr_tx_queue_setup(struct rte_eth_dev *dev,
-		uint16_t queue_idx,
-		uint16_t nb_desc,
-		unsigned int socket_id,
-		const struct rte_eth_txconf *tx_conf)
-{
-	struct nfp_net_hw *hw;
-	struct nfp_net_txq *txq;
-	uint16_t tx_free_thresh;
-	const struct rte_memzone *tz;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	tx_free_thresh = (tx_conf->tx_free_thresh) ? tx_conf->tx_free_thresh :
-			DEFAULT_TX_FREE_THRESH;
-	if (tx_free_thresh > nb_desc)
-		return -EINVAL;
-
-	/* Allocating tx queue data structure */
-	txq = rte_zmalloc_socket("ethdev TX queue", sizeof(struct nfp_net_txq),
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (txq == NULL) {
-		PMD_DRV_LOG(ERR, "Error allocating tx dma");
-		return -ENOMEM;
-	}
-
-	dev->data->tx_queues[queue_idx] = txq;
-
-	/*
-	 * Allocate TX ring hardware descriptors. A memzone large enough to
-	 * handle the maximum ring size is allocated in order to allow for
-	 * resizing in later calls to the queue setup function.
-	 */
-	tz = rte_eth_dma_zone_reserve(dev, "tx_ring", queue_idx,
-			sizeof(struct nfp_net_nfd3_tx_desc) *
-			hw->dev_info->max_qc_size,
-			NFP_MEMZONE_ALIGN, socket_id);
-	if (tz == NULL) {
-		PMD_DRV_LOG(ERR, "Error allocating tx dma");
-		nfp_net_tx_queue_release(dev, queue_idx);
-		dev->data->tx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	txq->tx_count = nb_desc;
-	txq->tx_free_thresh = tx_free_thresh;
-
-	/* Queue mapping based on firmware configuration */
-	txq->qidx = queue_idx;
-	txq->tx_qcidx = queue_idx * hw->stride_tx;
-	txq->qcp_q = hw->tx_bar + NFP_QCP_QUEUE_OFF(txq->tx_qcidx);
-
-	txq->port_id = dev->data->port_id;
-
-	/* Saving physical and virtual addresses for the TX ring */
-	txq->dma = (uint64_t)tz->iova;
-	txq->txds = tz->addr;
-
-	/* Mbuf pointers array for referencing mbufs linked to TX descriptors */
-	txq->txbufs = rte_zmalloc_socket("txq->txbufs",
-			sizeof(*txq->txbufs) * nb_desc,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (txq->txbufs == NULL) {
-		nfp_net_tx_queue_release(dev, queue_idx);
-		dev->data->tx_queues[queue_idx] = NULL;
-		return -ENOMEM;
-	}
-
-	nfp_net_reset_tx_queue(txq);
-	txq->hw = hw;
-
-	/*
-	 * Telling the HW about the physical address of the TX ring and number
-	 * of descriptors in log2 format.
-	 */
-	nn_cfg_writeq(&hw->super, NFP_NET_CFG_TXR_ADDR(queue_idx), txq->dma);
-	nn_cfg_writeb(&hw->super, NFP_NET_CFG_TXR_SZ(queue_idx), rte_log2_u32(nb_desc));
-
-	return 0;
-}
-
 static int
 nfp_flower_repr_link_update(struct rte_eth_dev *dev,
 		__rte_unused int wait_to_complete)
 {
 	int ret;
-	uint32_t i;
 	uint32_t nn_link_status;
 	struct nfp_net_hw *pf_hw;
 	struct rte_eth_link *link;
-	struct nfp_eth_table *nfp_eth_table;
 	struct nfp_flower_representor *repr;
 
-	static const uint32_t ls_to_ethtool[] = {
-		[NFP_NET_CFG_STS_LINK_RATE_UNSUPPORTED] = RTE_ETH_SPEED_NUM_NONE,
-		[NFP_NET_CFG_STS_LINK_RATE_UNKNOWN]     = RTE_ETH_SPEED_NUM_NONE,
-		[NFP_NET_CFG_STS_LINK_RATE_1G]          = RTE_ETH_SPEED_NUM_1G,
-		[NFP_NET_CFG_STS_LINK_RATE_10G]         = RTE_ETH_SPEED_NUM_10G,
-		[NFP_NET_CFG_STS_LINK_RATE_25G]         = RTE_ETH_SPEED_NUM_25G,
-		[NFP_NET_CFG_STS_LINK_RATE_40G]         = RTE_ETH_SPEED_NUM_40G,
-		[NFP_NET_CFG_STS_LINK_RATE_50G]         = RTE_ETH_SPEED_NUM_50G,
-		[NFP_NET_CFG_STS_LINK_RATE_100G]        = RTE_ETH_SPEED_NUM_100G,
-	};
-
 	repr = dev->data->dev_private;
 	link = &repr->link;
-	link->link_speed = RTE_ETH_SPEED_NUM_NONE;
-	pf_hw = repr->app_fw_flower->pf_hw;
 
-	if (link->link_status == RTE_ETH_LINK_UP) {
-		if (pf_hw->pf_dev != NULL) {
-			nfp_eth_table = pf_hw->pf_dev->nfp_eth_table;
-			if (nfp_eth_table != NULL) {
-				uint32_t speed = nfp_eth_table->ports[pf_hw->idx].speed;
-				for (i = 0; i < RTE_DIM(ls_to_ethtool); i++) {
-					if (ls_to_ethtool[i] == speed) {
-						link->link_speed = speed;
-						break;
-					}
-				}
-			}
-		} else {
-			nn_link_status = nn_cfg_readw(&pf_hw->super, NFP_NET_CFG_STS);
-			nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) &
-					NFP_NET_CFG_STS_LINK_RATE_MASK;
-
-			if (nn_link_status < RTE_DIM(ls_to_ethtool))
-				link->link_speed = ls_to_ethtool[nn_link_status];
-		}
-	}
+	pf_hw = repr->app_fw_flower->pf_hw;
+	nn_link_status = nn_cfg_readw(&pf_hw->super, NFP_NET_CFG_STS);
 
-	ret = rte_eth_linkstatus_set(dev, link);
-	if (ret == 0) {
-		if (link->link_status)
-			PMD_DRV_LOG(INFO, "NIC Link is Up");
-		else
-			PMD_DRV_LOG(INFO, "NIC Link is Down");
-	}
+	ret = nfp_net_link_update_common(dev, pf_hw, link, nn_link_status);
 
 	return ret;
 }
@@ -275,30 +66,6 @@ nfp_flower_repr_dev_infos_get(__rte_unused struct rte_eth_dev *dev,
 	return 0;
 }
 
-static int
-nfp_flower_repr_dev_configure(struct rte_eth_dev *dev)
-{
-	struct nfp_net_hw *pf_hw;
-	struct rte_eth_conf *dev_conf;
-	struct rte_eth_rxmode *rxmode;
-	struct nfp_flower_representor *repr;
-
-	repr = dev->data->dev_private;
-	pf_hw = repr->app_fw_flower->pf_hw;
-
-	dev_conf = &dev->data->dev_conf;
-	rxmode = &dev_conf->rxmode;
-
-	/* Checking MTU set */
-	if (rxmode->mtu > pf_hw->flbufsz) {
-		PMD_DRV_LOG(INFO, "MTU (%u) larger then current mbufsize (%u) not supported",
-				rxmode->mtu, pf_hw->flbufsz);
-		return -ERANGE;
-	}
-
-	return 0;
-}
-
 static int
 nfp_flower_repr_dev_start(struct rte_eth_dev *dev)
 {
@@ -528,11 +295,11 @@ static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = {
 	.dev_infos_get        = nfp_flower_repr_dev_infos_get,
 
 	.dev_start            = nfp_flower_pf_start,
-	.dev_configure        = nfp_flower_repr_dev_configure,
-	.dev_stop             = nfp_flower_pf_stop,
+	.dev_configure        = nfp_net_configure,
+	.dev_stop             = nfp_net_stop,
 
-	.rx_queue_setup       = nfp_pf_repr_rx_queue_setup,
-	.tx_queue_setup       = nfp_pf_repr_tx_queue_setup,
+	.rx_queue_setup       = nfp_net_rx_queue_setup,
+	.tx_queue_setup       = nfp_net_tx_queue_setup,
 
 	.link_update          = nfp_flower_repr_link_update,
 
@@ -543,14 +310,14 @@ static const struct eth_dev_ops nfp_flower_pf_repr_dev_ops = {
 	.promiscuous_disable  = nfp_net_promisc_disable,
 
 	.mac_addr_set         = nfp_flower_repr_mac_addr_set,
-	.fw_version_get       = nfp_repr_firmware_version_get,
+	.fw_version_get       = nfp_net_firmware_version_get,
 };
 
 static const struct eth_dev_ops nfp_flower_repr_dev_ops = {
 	.dev_infos_get        = nfp_flower_repr_dev_infos_get,
 
 	.dev_start            = nfp_flower_repr_dev_start,
-	.dev_configure        = nfp_flower_repr_dev_configure,
+	.dev_configure        = nfp_net_configure,
 	.dev_stop             = nfp_flower_repr_dev_stop,
 
 	.rx_queue_setup       = nfp_flower_repr_rx_queue_setup,
@@ -565,7 +332,7 @@ static const struct eth_dev_ops nfp_flower_repr_dev_ops = {
 	.promiscuous_disable  = nfp_net_promisc_disable,
 
 	.mac_addr_set         = nfp_flower_repr_mac_addr_set,
-	.fw_version_get       = nfp_repr_firmware_version_get,
+	.fw_version_get       = nfp_net_firmware_version_get,
 
 	.flow_ops_get         = nfp_net_flow_ops_get,
 	.mtr_ops_get          = nfp_net_mtr_ops_get,
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index 3f9909c6e0..ff9b10f046 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -377,7 +377,7 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev,
 	uint16_t tx_free_thresh;
 	const struct rte_memzone *tz;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index fe87ea3e25..1f330b7bb6 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -454,7 +454,7 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_txq *txq;
 	const struct rte_memzone *tz;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index c4a36027b9..69050e03f5 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -51,7 +51,6 @@ nfp_net_start(struct rte_eth_dev *dev)
 	uint32_t ctrl_extend = 0;
 	struct nfp_net_hw *net_hw;
 	struct nfp_pf_dev *pf_dev;
-	struct rte_eth_conf *dev_conf;
 	struct rte_eth_rxmode *rxmode;
 	struct nfp_app_fw_nic *app_fw_nic;
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
@@ -113,9 +112,7 @@ nfp_net_start(struct rte_eth_dev *dev)
 	/* Writing configuration parameters in the device */
 	nfp_net_params_setup(net_hw);
 
-	dev_conf = &dev->data->dev_conf;
-	rxmode = &dev_conf->rxmode;
-
+	rxmode = &dev->data->dev_conf.rxmode;
 	if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS) != 0) {
 		nfp_net_rss_config_default(dev);
 		update |= NFP_NET_CFG_UPDATE_RSS;
@@ -197,29 +194,6 @@ nfp_net_start(struct rte_eth_dev *dev)
 	return ret;
 }
 
-/* Stop device: disable rx and tx functions to allow for reconfiguring. */
-static int
-nfp_net_stop(struct rte_eth_dev *dev)
-{
-	struct nfp_net_hw *hw;
-
-	hw = dev->data->dev_private;
-
-	nfp_net_disable_queues(dev);
-
-	/* Clear queues */
-	nfp_net_stop_tx_queue(dev);
-	nfp_net_stop_rx_queue(dev);
-
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
-		/* Configure the physical port down */
-		nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);
-	else
-		nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);
-
-	return 0;
-}
-
 /* Set the link up. */
 static int
 nfp_net_set_link_up(struct rte_eth_dev *dev)
diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c
index 1be0d7d060..76b1de0e49 100644
--- a/drivers/net/nfp/nfp_net_common.c
+++ b/drivers/net/nfp/nfp_net_common.c
@@ -581,43 +581,27 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev)
 	return 0;
 }
 
-/*
- * Return 0 means link status changed, -1 means not changed
- *
- * Wait to complete is needed as it can take up to 9 seconds to get the Link
- * status.
- */
 int
-nfp_net_link_update(struct rte_eth_dev *dev,
-		__rte_unused int wait_to_complete)
+nfp_net_link_update_common(struct rte_eth_dev *dev,
+		struct nfp_net_hw *hw,
+		struct rte_eth_link *link,
+		uint32_t link_status)
 {
 	int ret;
 	uint32_t i;
-	struct nfp_net_hw *hw;
 	uint32_t nn_link_status;
-	struct rte_eth_link link;
 	struct nfp_eth_table *nfp_eth_table;
 
-	hw = nfp_net_get_hw(dev);
-
-	memset(&link, 0, sizeof(struct rte_eth_link));
+	link->link_speed = RTE_ETH_SPEED_NUM_NONE;
 
-	/* Read link status */
-	nn_link_status = nn_cfg_readw(&hw->super, NFP_NET_CFG_STS);
-	if ((nn_link_status & NFP_NET_CFG_STS_LINK) != 0)
-		link.link_status = RTE_ETH_LINK_UP;
-
-	link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
-	link.link_speed = RTE_ETH_SPEED_NUM_NONE;
-
-	if (link.link_status == RTE_ETH_LINK_UP) {
+	if (link->link_status == RTE_ETH_LINK_UP) {
 		if (hw->pf_dev != NULL) {
 			nfp_eth_table = hw->pf_dev->nfp_eth_table;
 			if (nfp_eth_table != NULL) {
 				uint32_t speed = nfp_eth_table->ports[hw->idx].speed;
 				for (i = 0; i < RTE_DIM(nfp_net_link_speed_nfp2rte); i++) {
 					if (nfp_net_link_speed_nfp2rte[i] == speed) {
-						link.link_speed = speed;
+						link->link_speed = speed;
 						break;
 					}
 				}
@@ -627,21 +611,52 @@ nfp_net_link_update(struct rte_eth_dev *dev,
 			 * Shift and mask nn_link_status so that it is effectively the value
 			 * at offset NFP_NET_CFG_STS_NSP_LINK_RATE.
 			 */
-			nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) &
+			nn_link_status = (link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) &
 					NFP_NET_CFG_STS_LINK_RATE_MASK;
 			if (nn_link_status < RTE_DIM(nfp_net_link_speed_nfp2rte))
-				link.link_speed = nfp_net_link_speed_nfp2rte[nn_link_status];
+				link->link_speed = nfp_net_link_speed_nfp2rte[nn_link_status];
 		}
 	}
 
-	ret = rte_eth_linkstatus_set(dev, &link);
+	ret = rte_eth_linkstatus_set(dev, link);
 	if (ret == 0) {
-		if (link.link_status != 0)
+		if (link->link_status != 0)
 			PMD_DRV_LOG(INFO, "NIC Link is Up");
 		else
 			PMD_DRV_LOG(INFO, "NIC Link is Down");
 	}
 
+	return ret;
+}
+
+/*
+ * Return 0 means link status changed, -1 means not changed
+ *
+ * Wait to complete is needed as it can take up to 9 seconds to get the Link
+ * status.
+ */
+int
+nfp_net_link_update(struct rte_eth_dev *dev,
+		__rte_unused int wait_to_complete)
+{
+	int ret;
+	struct nfp_net_hw *hw;
+	uint32_t nn_link_status;
+	struct rte_eth_link link;
+
+	hw = nfp_net_get_hw(dev);
+
+	memset(&link, 0, sizeof(struct rte_eth_link));
+
+	/* Read link status */
+	nn_link_status = nn_cfg_readw(&hw->super, NFP_NET_CFG_STS);
+	if ((nn_link_status & NFP_NET_CFG_STS_LINK) != 0)
+		link.link_status = RTE_ETH_LINK_UP;
+
+	link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
+
+	ret = nfp_net_link_update_common(dev, hw, &link, nn_link_status);
+
 	/*
 	 * Notify the port to update the speed value in the CTRL BAR from NSP.
 	 * Not applicable for VFs as the associated PF is still attached to the
@@ -1996,11 +2011,15 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev,
 	if (fw_size < FW_VER_LEN)
 		return FW_VER_LEN;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
-	snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d",
+	if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) {
+		snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d",
 			hw->ver.extend, hw->ver.class,
 			hw->ver.major, hw->ver.minor);
+	} else {
+		snprintf(vnic_version, FW_VER_LEN, "*");
+	}
 
 	nfp_net_get_nsp_info(hw, nsp_version);
 	nfp_net_get_mip_name(hw, mip_name);
@@ -2012,33 +2031,6 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev,
 	return 0;
 }
 
-int
-nfp_repr_firmware_version_get(struct rte_eth_dev *dev,
-		char *fw_version,
-		size_t fw_size)
-{
-	struct nfp_net_hw *hw;
-	char mip_name[FW_VER_LEN];
-	char app_name[FW_VER_LEN];
-	char nsp_version[FW_VER_LEN];
-	struct nfp_flower_representor *repr;
-
-	if (fw_size < FW_VER_LEN)
-		return FW_VER_LEN;
-
-	repr = dev->data->dev_private;
-	hw = repr->app_fw_flower->pf_hw;
-
-	nfp_net_get_nsp_info(hw, nsp_version);
-	nfp_net_get_mip_name(hw, mip_name);
-	nfp_net_get_app_name(hw, app_name);
-
-	snprintf(fw_version, FW_VER_LEN, "* %s %s %s",
-			nsp_version, mip_name, app_name);
-
-	return 0;
-}
-
 bool
 nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version)
 {
@@ -2059,3 +2051,26 @@ nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version)
 
 	return false;
 }
+
+/* Disable rx and tx functions to allow for reconfiguring. */
+int
+nfp_net_stop(struct rte_eth_dev *dev)
+{
+	struct nfp_net_hw *hw;
+
+	hw = nfp_net_get_hw(dev);
+
+	nfp_net_disable_queues(dev);
+
+	/* Clear queues */
+	nfp_net_stop_tx_queue(dev);
+	nfp_net_stop_rx_queue(dev);
+
+	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+		/* Configure the physical port down */
+		nfp_eth_set_configured(hw->cpp, hw->nfp_idx, 0);
+	else
+		nfp_eth_set_configured(dev->process_private, hw->nfp_idx, 0);
+
+	return 0;
+}
diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h
index e242251bc2..af8f8d15ae 100644
--- a/drivers/net/nfp/nfp_net_common.h
+++ b/drivers/net/nfp/nfp_net_common.h
@@ -178,6 +178,10 @@ int nfp_configure_rx_interrupt(struct rte_eth_dev *dev,
 uint32_t nfp_check_offloads(struct rte_eth_dev *dev);
 int nfp_net_promisc_enable(struct rte_eth_dev *dev);
 int nfp_net_promisc_disable(struct rte_eth_dev *dev);
+int nfp_net_link_update_common(struct rte_eth_dev *dev,
+		struct nfp_net_hw *hw,
+		struct rte_eth_link *link,
+		uint32_t link_status);
 int nfp_net_link_update(struct rte_eth_dev *dev,
 		__rte_unused int wait_to_complete);
 int nfp_net_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats);
@@ -235,9 +239,9 @@ int nfp_net_check_dma_mask(struct nfp_net_hw *hw, char *name);
 void nfp_net_init_metadata_format(struct nfp_net_hw *hw);
 void nfp_net_cfg_read_version(struct nfp_net_hw *hw);
 int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
-int nfp_repr_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size);
 bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version);
 struct nfp_net_hw *nfp_net_get_hw(const struct rte_eth_dev *dev);
+int nfp_net_stop(struct rte_eth_dev *dev);
 
 #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\
 	((struct nfp_app_fw_nic *)app_fw_priv)
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index be1ac32c73..b2a9ba6875 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -840,7 +840,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 	struct nfp_net_rxq *rxq;
 	const struct rte_memzone *tz;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 
@@ -1067,7 +1067,7 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct nfp_net_hw *hw;
 
-	hw = dev->data->dev_private;
+	hw = nfp_net_get_hw(dev);
 
 	if (hw->ver.extend == NFP_NET_CFG_VERSION_DP_NFD3)
 		return nfp_net_nfd3_tx_queue_setup(dev, queue_idx,
-- 
2.39.1


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction
  2023-10-28  6:53   ` [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
@ 2023-11-01 17:57     ` Ferruh Yigit
  2023-11-02  1:25       ` Chaoyong He
  0 siblings, 1 reply; 27+ messages in thread
From: Ferruh Yigit @ 2023-11-01 17:57 UTC (permalink / raw)
  To: Chaoyong He, dev; +Cc: oss-drivers, Peng Zhang

On 10/28/2023 7:53 AM, Chaoyong He wrote:
> The data structure 'struct nfp_net_adapter' has only one data field and
> we won't extend it in the future, which makes this abstraction unneeded,
> so remove this data structure and the related macro
> 'NFP_NET_DEV_PRIVATE_TO_HW'.
> 

Mentioned abstract struct, 'struct nfp_net_adapter', is not removed in
this patch, although mentioned macro removed.

Since there is not user of the struct after this patch, I guess
intention was to remove the struct, so if there is no other issue I can
remove the struct while merging.


> Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
> Reviewed-by: Peng Zhang <peng.zhang@corigine.com>


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: [PATCH v2 00/11] Clean up NFP PMD
  2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
                     ` (10 preceding siblings ...)
  2023-10-28  6:53   ` [PATCH v2 11/11] net/nfp: remove the redundancy logic of representor port Chaoyong He
@ 2023-11-01 18:33   ` Ferruh Yigit
  11 siblings, 0 replies; 27+ messages in thread
From: Ferruh Yigit @ 2023-11-01 18:33 UTC (permalink / raw)
  To: Chaoyong He, dev; +Cc: oss-drivers

On 10/28/2023 7:53 AM, Chaoyong He wrote:
> This patch series clean up the NFP PMD, by:
> - Using the DPDK macro and API to replace the user defined ones.
> - Remove the unneeded macro and logic.
> - Remove the duplicated logic.
> 
> ---
> v2:
> * Fix the compile error.
> * Fix one check script warning.
> ---
> 
> Chaoyong He (11):
>   net/nfp: use the suitable helper macro
>   net/nfp: remove the unneeded call of underlying API
>   net/nfp: remove the unneeded check of process type
>   net/nfp: remove the unneeded data abstraction
>   net/nfp: remove the redundancy macro
>   net/nfp: remove redundancy logic of init control BAR
>   net/nfp: use the DPDK defined function
>   net/nfp: replace hard coded value
>   net/nfp: unify the PMD name with macro
>   net/nfp: extract a helper function
>   net/nfp: remove the redundancy logic of representor port
> 


'struct nfp_net_adapter' removed in 4/11.

Series applied to dpdk-next-net/main, thanks.


^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction
  2023-11-01 17:57     ` Ferruh Yigit
@ 2023-11-02  1:25       ` Chaoyong He
  0 siblings, 0 replies; 27+ messages in thread
From: Chaoyong He @ 2023-11-02  1:25 UTC (permalink / raw)
  To: Ferruh Yigit, dev; +Cc: oss-drivers, Nole Zhang

> On 10/28/2023 7:53 AM, Chaoyong He wrote:
> > The data structure 'struct nfp_net_adapter' has only one data field
> > and we won't extend it in the future, which makes this abstraction
> > unneeded, so remove this data structure and the related macro
> > 'NFP_NET_DEV_PRIVATE_TO_HW'.
> >
> 
> Mentioned abstract struct, 'struct nfp_net_adapter', is not removed in this
> patch, although mentioned macro removed.

Oh, It should be missed when I do rebase, sorry about it.

> 
> Since there is not user of the struct after this patch, I guess intention was to
> remove the struct, so if there is no other issue I can remove the struct while
> merging.

It's nice, thank you very much!

> 
> 
> > Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
> > Reviewed-by: Peng Zhang <peng.zhang@corigine.com>


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2023-11-02  1:25 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-28  6:15 [PATCH 00/11] Clean up NFP PMD Chaoyong He
2023-10-28  6:15 ` [PATCH 01/11] net/nfp: use the suitable helper macro Chaoyong He
2023-10-28  6:15 ` [PATCH 02/11] net/nfp: remove the unneeded call of underlying API Chaoyong He
2023-10-28  6:15 ` [PATCH 03/11] net/nfp: remove the unneeded check of process type Chaoyong He
2023-10-28  6:15 ` [PATCH 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
2023-10-28  6:15 ` [PATCH 05/11] net/nfp: remove the redundancy macro Chaoyong He
2023-10-28  6:15 ` [PATCH 06/11] net/nfp: remove redundancy logic of init control BAR Chaoyong He
2023-10-28  6:15 ` [PATCH 07/11] net/nfp: use the DPDK defined function Chaoyong He
2023-10-28  6:15 ` [PATCH 08/11] net/nfp: replace hard coded value Chaoyong He
2023-10-28  6:15 ` [PATCH 09/11] net/nfp: unify the PMD name with macro Chaoyong He
2023-10-28  6:15 ` [PATCH 10/11] net/nfp: extract a helper function Chaoyong He
2023-10-28  6:15 ` [PATCH 11/11] net/nfp: remove the redundancy logic of representor port Chaoyong He
2023-10-28  6:53 ` [PATCH v2 00/11] Clean up NFP PMD Chaoyong He
2023-10-28  6:53   ` [PATCH v2 01/11] net/nfp: use the suitable helper macro Chaoyong He
2023-10-28  6:53   ` [PATCH v2 02/11] net/nfp: remove the unneeded call of underlying API Chaoyong He
2023-10-28  6:53   ` [PATCH v2 03/11] net/nfp: remove the unneeded check of process type Chaoyong He
2023-10-28  6:53   ` [PATCH v2 04/11] net/nfp: remove the unneeded data abstraction Chaoyong He
2023-11-01 17:57     ` Ferruh Yigit
2023-11-02  1:25       ` Chaoyong He
2023-10-28  6:53   ` [PATCH v2 05/11] net/nfp: remove the redundancy macro Chaoyong He
2023-10-28  6:53   ` [PATCH v2 06/11] net/nfp: remove redundancy logic of init control BAR Chaoyong He
2023-10-28  6:53   ` [PATCH v2 07/11] net/nfp: use the DPDK defined function Chaoyong He
2023-10-28  6:53   ` [PATCH v2 08/11] net/nfp: replace hard coded value Chaoyong He
2023-10-28  6:53   ` [PATCH v2 09/11] net/nfp: unify the PMD name with macro Chaoyong He
2023-10-28  6:53   ` [PATCH v2 10/11] net/nfp: extract a helper function Chaoyong He
2023-10-28  6:53   ` [PATCH v2 11/11] net/nfp: remove the redundancy logic of representor port Chaoyong He
2023-11-01 18:33   ` [PATCH v2 00/11] Clean up NFP PMD Ferruh Yigit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).