DPDK patches and discussions
 help / color / mirror / Atom feed
From: Chaoyong He <chaoyong.he@corigine.com>
To: dev@dpdk.org
Cc: oss-drivers@corigine.com, Chaoyong He <chaoyong.he@corigine.com>
Subject: [PATCH v5 21/26] net/nfp: add the dev module
Date: Tue, 19 Sep 2023 17:54:35 +0800	[thread overview]
Message-ID: <20230919095440.45445-22-chaoyong.he@corigine.com> (raw)
In-Reply-To: <20230919095440.45445-1-chaoyong.he@corigine.com>

Add the nfp_dev module to simplify the logic.

The data structure we import can gather and replace several macro
which scatter everywhere. Which also make the logic of choose value
for different devices unnecessary and so eliminate such logic.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
 drivers/net/nfp/flower/nfp_flower.c           | 11 ++-
 drivers/net/nfp/flower/nfp_flower.h           |  3 +-
 .../net/nfp/flower/nfp_flower_representor.c   |  6 +-
 drivers/net/nfp/meson.build                   |  1 +
 drivers/net/nfp/nfd3/nfp_nfd3_dp.c            |  5 +-
 drivers/net/nfp/nfdk/nfp_nfdk_dp.c            |  5 +-
 drivers/net/nfp/nfp_common.c                  | 50 ++----------
 drivers/net/nfp/nfp_common.h                  | 48 +++--------
 drivers/net/nfp/nfp_ethdev.c                  | 71 +++++++---------
 drivers/net/nfp/nfp_ethdev_vf.c               | 25 +++---
 drivers/net/nfp/nfp_rxtx.c                    |  5 +-
 drivers/net/nfp/nfp_rxtx.h                    | 12 ---
 drivers/net/nfp/nfpcore/nfp_dev.c             | 81 +++++++++++++++++++
 drivers/net/nfp/nfpcore/nfp_dev.h             | 44 ++++++++++
 14 files changed, 203 insertions(+), 164 deletions(-)
 create mode 100644 drivers/net/nfp/nfpcore/nfp_dev.c
 create mode 100644 drivers/net/nfp/nfpcore/nfp_dev.h

diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c
index fead917599..bbcfa6e66a 100644
--- a/drivers/net/nfp/flower/nfp_flower.c
+++ b/drivers/net/nfp/flower/nfp_flower.c
@@ -503,7 +503,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw)
 		 * resizing in later calls to the queue setup function.
 		 */
 		tz = rte_eth_dma_zone_reserve(eth_dev, "ctrl_rx_ring", i,
-				sizeof(struct nfp_net_rx_desc) * NFP_NET_MAX_RX_DESC,
+				sizeof(struct nfp_net_rx_desc) *
+				hw->dev_info->max_qc_size,
 				NFP_MEMZONE_ALIGN, numa_node);
 		if (tz == NULL) {
 			PMD_DRV_LOG(ERR, "Error allocating rx dma");
@@ -558,7 +559,8 @@ nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw)
 		 * resizing in later calls to the queue setup function.
 		 */
 		tz = rte_eth_dma_zone_reserve(eth_dev, "ctrl_tx_ring", i,
-				sizeof(struct nfp_net_nfd3_tx_desc) * NFP_NET_MAX_TX_DESC,
+				sizeof(struct nfp_net_nfd3_tx_desc) *
+				hw->dev_info->max_qc_size,
 				NFP_MEMZONE_ALIGN, numa_node);
 		if (tz == NULL) {
 			PMD_DRV_LOG(ERR, "Error allocating tx dma");
@@ -789,7 +791,8 @@ nfp_flower_nfd_func_register(struct nfp_app_fw_flower *app_fw_flower)
 }
 
 int
-nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev)
+nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,
+		const struct nfp_dev_info *dev_info)
 {
 	int ret;
 	int err;
@@ -858,6 +861,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev)
 	pf_hw->ctrl_bar = pf_dev->ctrl_bar;
 	pf_hw->pf_dev = pf_dev;
 	pf_hw->cpp = pf_dev->cpp;
+	pf_hw->dev_info = dev_info;
 
 	ret = nfp_flower_init_vnic_common(app_fw_flower->pf_hw, "pf_vnic");
 	if (ret != 0) {
@@ -883,6 +887,7 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev)
 	/* Now populate the ctrl vNIC */
 	ctrl_hw->pf_dev = pf_dev;
 	ctrl_hw->cpp = pf_dev->cpp;
+	ctrl_hw->dev_info = dev_info;
 
 	ret = nfp_flower_init_ctrl_vnic(app_fw_flower->ctrl_hw);
 	if (ret != 0) {
diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h
index 34092cd4b4..e8df8b1769 100644
--- a/drivers/net/nfp/flower/nfp_flower.h
+++ b/drivers/net/nfp/flower/nfp_flower.h
@@ -103,7 +103,8 @@ nfp_flower_support_decap_v2(const struct nfp_app_fw_flower *app_fw_flower)
 	return app_fw_flower->ext_features & NFP_FL_FEATS_DECAP_V2;
 }
 
-int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev);
+int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,
+		const struct nfp_dev_info *dev_info);
 int nfp_secondary_init_app_fw_flower(struct nfp_cpp *cpp);
 bool nfp_flower_pf_dispatch_pkts(struct nfp_net_hw *hw,
 		struct rte_mbuf *mbuf,
diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c
index 5f94d20f1b..48c3b3f844 100644
--- a/drivers/net/nfp/flower/nfp_flower_representor.c
+++ b/drivers/net/nfp/flower/nfp_flower_representor.c
@@ -67,7 +67,8 @@ nfp_pf_repr_rx_queue_setup(struct rte_eth_dev *dev,
 	 * 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) * NFP_NET_MAX_RX_DESC,
+			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");
@@ -140,7 +141,8 @@ nfp_pf_repr_tx_queue_setup(struct rte_eth_dev *dev,
 	 * 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) * NFP_NET_MAX_TX_DESC,
+			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");
diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build
index 93c708959c..580a478cd6 100644
--- a/drivers/net/nfp/meson.build
+++ b/drivers/net/nfp/meson.build
@@ -21,6 +21,7 @@ sources = files(
         'nfpcore/nfp_rtsym.c',
         'nfpcore/nfp_nsp_cmds.c',
         'nfpcore/nfp_crc.c',
+        'nfpcore/nfp_dev.c',
         'nfpcore/nfp_mutex.c',
         'nfpcore/nfp_nsp_eth.c',
         'nfpcore/nfp_hwinfo.c',
diff --git a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
index ee39686329..79e1e1041c 100644
--- a/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
+++ b/drivers/net/nfp/nfd3/nfp_nfd3_dp.c
@@ -262,7 +262,6 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev,
 		unsigned int socket_id,
 		const struct rte_eth_txconf *tx_conf)
 {
-	int ret;
 	size_t size;
 	uint32_t tx_desc_sz;
 	uint16_t min_tx_desc;
@@ -276,9 +275,7 @@ nfp_net_nfd3_tx_queue_setup(struct rte_eth_dev *dev,
 
 	PMD_INIT_FUNC_TRACE();
 
-	ret = nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
-	if (ret != 0)
-		return ret;
+	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
 	/* Validating number of descriptors */
 	tx_desc_sz = nb_desc * sizeof(struct nfp_net_nfd3_tx_desc);
diff --git a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
index f66802211f..48a74d109a 100644
--- a/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
+++ b/drivers/net/nfp/nfdk/nfp_nfdk_dp.c
@@ -357,7 +357,6 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,
 		unsigned int socket_id,
 		const struct rte_eth_txconf *tx_conf)
 {
-	int ret;
 	size_t size;
 	uint32_t tx_desc_sz;
 	uint16_t min_tx_desc;
@@ -371,9 +370,7 @@ nfp_net_nfdk_tx_queue_setup(struct rte_eth_dev *dev,
 
 	PMD_INIT_FUNC_TRACE();
 
-	ret = nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
-	if (ret != 0)
-		return ret;
+	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
 	/* Validating number of descriptors */
 	tx_desc_sz = nb_desc * sizeof(struct nfp_net_nfdk_tx_desc);
diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c
index 5092e5869d..160df27c94 100644
--- a/drivers/net/nfp/nfp_common.c
+++ b/drivers/net/nfp/nfp_common.c
@@ -1146,30 +1146,16 @@ nfp_net_xstats_reset(struct rte_eth_dev *dev)
 	return nfp_net_stats_reset(dev);
 }
 
-int
+void
 nfp_net_rx_desc_limits(struct nfp_net_hw *hw,
 		uint16_t *min_rx_desc,
 		uint16_t *max_rx_desc)
 {
-	*max_rx_desc = NFP_NET_MAX_RX_DESC;
-
-	switch (hw->device_id) {
-	case PCI_DEVICE_ID_NFP3800_PF_NIC:
-	case PCI_DEVICE_ID_NFP3800_VF_NIC:
-		*min_rx_desc = NFP3800_NET_MIN_RX_DESC;
-		return 0;
-	case PCI_DEVICE_ID_NFP4000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_VF_NIC:
-		*min_rx_desc = NFP_NET_MIN_RX_DESC;
-		return 0;
-	default:
-		PMD_DRV_LOG(ERR, "Unknown NFP device id.");
-		return -EINVAL;
-	}
+	*max_rx_desc = hw->dev_info->max_qc_size;
+	*min_rx_desc = hw->dev_info->min_qc_size;
 }
 
-int
+void
 nfp_net_tx_desc_limits(struct nfp_net_hw *hw,
 		uint16_t *min_tx_desc,
 		uint16_t *max_tx_desc)
@@ -1181,28 +1167,13 @@ nfp_net_tx_desc_limits(struct nfp_net_hw *hw,
 	else
 		tx_dpp = NFDK_TX_DESC_PER_SIMPLE_PKT;
 
-	*max_tx_desc = NFP_NET_MAX_TX_DESC / tx_dpp;
-
-	switch (hw->device_id) {
-	case PCI_DEVICE_ID_NFP3800_PF_NIC:
-	case PCI_DEVICE_ID_NFP3800_VF_NIC:
-		*min_tx_desc = NFP3800_NET_MIN_TX_DESC / tx_dpp;
-		return 0;
-	case PCI_DEVICE_ID_NFP4000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_VF_NIC:
-		*min_tx_desc = NFP_NET_MIN_TX_DESC / tx_dpp;
-		return 0;
-	default:
-		PMD_DRV_LOG(ERR, "Unknown NFP device id.");
-		return -EINVAL;
-	}
+	*max_tx_desc = hw->dev_info->max_qc_size / tx_dpp;
+	*min_tx_desc = hw->dev_info->min_qc_size / tx_dpp;
 }
 
 int
 nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 {
-	int ret;
 	uint16_t min_rx_desc;
 	uint16_t max_rx_desc;
 	uint16_t min_tx_desc;
@@ -1211,13 +1182,8 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 
 	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 
-	ret = nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
-	if (ret != 0)
-		return ret;
-
-	ret = nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
-	if (ret != 0)
-		return ret;
+	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
+	nfp_net_tx_desc_limits(hw, &min_tx_desc, &max_tx_desc);
 
 	dev_info->max_rx_queues = (uint16_t)hw->max_rx_queues;
 	dev_info->max_tx_queues = (uint16_t)hw->max_tx_queues;
diff --git a/drivers/net/nfp/nfp_common.h b/drivers/net/nfp/nfp_common.h
index 86c4e10040..36ad4e1d32 100644
--- a/drivers/net/nfp/nfp_common.h
+++ b/drivers/net/nfp/nfp_common.h
@@ -7,16 +7,9 @@
 #define _NFP_COMMON_H_
 
 #include "nfp_ctrl.h"
+#include "nfpcore/nfp_dev.h"
 
 #define NFP_NET_PMD_VERSION "0.1"
-#define PCI_VENDOR_ID_NETRONOME         0x19ee
-#define PCI_VENDOR_ID_CORIGINE          0x1da8
-
-#define PCI_DEVICE_ID_NFP3800_PF_NIC    0x3800
-#define PCI_DEVICE_ID_NFP3800_VF_NIC    0x3803
-#define PCI_DEVICE_ID_NFP4000_PF_NIC    0x4000
-#define PCI_DEVICE_ID_NFP6000_PF_NIC    0x6000
-#define PCI_DEVICE_ID_NFP6000_VF_NIC    0x6003  /* Include NFP4000VF */
 
 /* Forward declaration */
 struct nfp_net_adapter;
@@ -28,7 +21,6 @@ struct nfp_net_adapter;
 #define NFP_NET_CRTL_BAR        0
 #define NFP_NET_TX_BAR          2
 #define NFP_NET_RX_BAR          2
-#define NFP_QCP_QUEUE_AREA_SZ			0x80000
 
 /* Macros for accessing the Queue Controller Peripheral 'CSRs' */
 #define NFP_QCP_QUEUE_OFF(_x)                 ((_x) * 0x800)
@@ -39,17 +31,6 @@ struct nfp_net_adapter;
 #define NFP_QCP_QUEUE_STS_HI                    0x000c
 #define NFP_QCP_QUEUE_STS_HI_WRITEPTR_mask    (0x3ffff)
 
-#define NFP_PCIE_QCP_NFP3800_OFFSET            0x400000
-#define NFP_PCIE_QCP_NFP6000_OFFSET            0x80000
-#define NFP_PCIE_QUEUE_NFP3800_MASK            0x1ff
-#define NFP_PCIE_QUEUE_NFP6000_MASK            0xff
-#define NFP_PCIE_QCP_PF_OFFSET                 0x0
-#define NFP_PCIE_QCP_VF_OFFSET                 0x0
-
-/* The offset of the queue controller queues in the PCIe Target */
-#define NFP_PCIE_QUEUE(_offset, _q, _mask)    \
-		((_offset) + (NFP_QCP_QUEUE_ADDR_SZ * ((_q) & (_mask))))
-
 /* Interrupt definitions */
 #define NFP_NET_IRQ_LSC_IDX             0
 
@@ -163,6 +144,9 @@ struct nfp_net_hw {
 	uint32_t rx_offset;
 	enum nfp_net_meta_format meta_format;
 
+	/** NFP ASIC params */
+	const struct nfp_dev_info *dev_info;
+
 	/* Current values for control */
 	uint32_t ctrl;
 
@@ -352,23 +336,11 @@ nfp_qcp_read(uint8_t *q, enum nfp_qcp_ptr ptr)
 }
 
 static inline uint32_t
-nfp_pci_queue(struct rte_pci_device *pdev, uint16_t queue)
+nfp_qcp_queue_offset(const struct nfp_dev_info *dev_info,
+		uint16_t queue)
 {
-	switch (pdev->id.device_id) {
-	case PCI_DEVICE_ID_NFP4000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_PF_NIC:
-		return NFP_PCIE_QUEUE(NFP_PCIE_QCP_PF_OFFSET, queue,
-				NFP_PCIE_QUEUE_NFP6000_MASK);
-	case PCI_DEVICE_ID_NFP3800_VF_NIC:
-		return NFP_PCIE_QUEUE(NFP_PCIE_QCP_VF_OFFSET, queue,
-				NFP_PCIE_QUEUE_NFP3800_MASK);
-	case PCI_DEVICE_ID_NFP6000_VF_NIC:
-		return NFP_PCIE_QUEUE(NFP_PCIE_QCP_VF_OFFSET, queue,
-				NFP_PCIE_QUEUE_NFP6000_MASK);
-	default:
-		return NFP_PCIE_QUEUE(NFP_PCIE_QCP_PF_OFFSET, queue,
-				NFP_PCIE_QUEUE_NFP3800_MASK);
-	}
+	return dev_info->qc_addr_offset + NFP_QCP_QUEUE_ADDR_SZ *
+			(queue & dev_info->qc_idx_mask);
 }
 
 /* Prototypes for common NFP functions */
@@ -434,10 +406,10 @@ void nfp_net_close_rx_queue(struct rte_eth_dev *dev);
 void nfp_net_stop_tx_queue(struct rte_eth_dev *dev);
 void nfp_net_close_tx_queue(struct rte_eth_dev *dev);
 int nfp_net_set_vxlan_port(struct nfp_net_hw *hw, size_t idx, uint16_t port);
-int nfp_net_rx_desc_limits(struct nfp_net_hw *hw,
+void nfp_net_rx_desc_limits(struct nfp_net_hw *hw,
 		uint16_t *min_rx_desc,
 		uint16_t *max_rx_desc);
-int nfp_net_tx_desc_limits(struct nfp_net_hw *hw,
+void nfp_net_tx_desc_limits(struct nfp_net_hw *hw,
 		uint16_t *min_tx_desc,
 		uint16_t *max_tx_desc);
 int nfp_net_check_dma_mask(struct nfp_net_hw *hw, char *name);
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 899d4dd253..8ddce1e5b2 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -496,9 +496,8 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 	struct nfp_app_fw_nic *app_fw_nic;
 	struct nfp_net_hw *hw;
 	struct rte_ether_addr *tmp_ether_addr;
-	uint64_t rx_bar_off = 0;
-	uint64_t tx_bar_off = 0;
-	uint32_t start_q;
+	uint64_t rx_base;
+	uint64_t tx_base;
 	int port = 0;
 	int err;
 
@@ -576,25 +575,14 @@ nfp_net_init(struct rte_eth_dev *eth_dev)
 
 
 	/* Work out where in the BAR the queues start. */
-	switch (pci_dev->id.device_id) {
-	case PCI_DEVICE_ID_NFP3800_PF_NIC:
-	case PCI_DEVICE_ID_NFP4000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_PF_NIC:
-		start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ);
-		tx_bar_off = nfp_pci_queue(pci_dev, start_q);
-		start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ);
-		rx_bar_off = nfp_pci_queue(pci_dev, start_q);
-		break;
-	default:
-		PMD_DRV_LOG(ERR, "nfp_net: no device ID matching");
-		return -ENODEV;
-	}
+	tx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ);
+	rx_base = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ);
 
-	PMD_INIT_LOG(DEBUG, "tx_bar_off: 0x%" PRIx64 "", tx_bar_off);
-	PMD_INIT_LOG(DEBUG, "rx_bar_off: 0x%" PRIx64 "", rx_bar_off);
+	PMD_INIT_LOG(DEBUG, "tx_base: 0x%" PRIx64 "", tx_base);
+	PMD_INIT_LOG(DEBUG, "rx_base: 0x%" PRIx64 "", rx_base);
 
-	hw->tx_bar = pf_dev->qc_bar + tx_bar_off;
-	hw->rx_bar = pf_dev->qc_bar + rx_bar_off;
+	hw->tx_bar = pf_dev->qc_bar + tx_base * NFP_QCP_QUEUE_ADDR_SZ;
+	hw->rx_bar = pf_dev->qc_bar + rx_base * NFP_QCP_QUEUE_ADDR_SZ;
 	eth_dev->data->dev_private = hw;
 
 	PMD_INIT_LOG(DEBUG, "ctrl_bar: %p, tx_bar: %p, rx_bar: %p",
@@ -761,7 +749,8 @@ nfp_fw_setup(struct rte_pci_device *dev,
 }
 
 static int
-nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev)
+nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev,
+		const struct nfp_dev_info *dev_info)
 {
 	int i;
 	int ret;
@@ -849,6 +838,7 @@ nfp_init_app_fw_nic(struct nfp_pf_dev *pf_dev)
 		/* Add this device to the PF's array of physical ports */
 		app_fw_nic->ports[i] = hw;
 
+		hw->dev_info = dev_info;
 		hw->pf_dev = pf_dev;
 		hw->cpp = pf_dev->cpp;
 		hw->eth_dev = eth_dev;
@@ -902,10 +892,17 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
 	char name[RTE_ETH_NAME_MAX_LEN];
 	struct nfp_rtsym_table *sym_tbl;
 	struct nfp_eth_table *nfp_eth_table;
+	const struct nfp_dev_info *dev_info;
 
 	if (pci_dev == 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");
+		return -ENODEV;
+	}
+
 	/*
 	 * When device bound to UIO, the device could be used, by mistake,
 	 * by two DPDK apps, and the UIO driver does not avoid it. This
@@ -978,26 +975,11 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
 	pf_dev->nfp_eth_table = nfp_eth_table;
 
 	/* configure access to tx/rx vNIC BARs */
-	switch (pci_dev->id.device_id) {
-	case PCI_DEVICE_ID_NFP3800_PF_NIC:
-		addr = NFP_PCIE_QUEUE(NFP_PCIE_QCP_NFP3800_OFFSET,
-					0, NFP_PCIE_QUEUE_NFP3800_MASK);
-		break;
-	case PCI_DEVICE_ID_NFP4000_PF_NIC:
-	case PCI_DEVICE_ID_NFP6000_PF_NIC:
-		addr = NFP_PCIE_QUEUE(NFP_PCIE_QCP_NFP6000_OFFSET,
-					0, NFP_PCIE_QUEUE_NFP6000_MASK);
-		break;
-	default:
-		PMD_INIT_LOG(ERR, "nfp_net: no device ID matching");
-		ret = -ENODEV;
-		goto pf_cleanup;
-	}
-
+	addr = nfp_qcp_queue_offset(dev_info, 0);
 	cpp_id = NFP_CPP_ISLAND_ID(0, NFP_CPP_ACTION_RW, 0, 0);
+
 	pf_dev->qc_bar = nfp_cpp_map_area(pf_dev->cpp, cpp_id,
-			addr, NFP_QCP_QUEUE_AREA_SZ,
-			&pf_dev->qc_area);
+			addr, dev_info->qc_area_sz, &pf_dev->qc_area);
 	if (pf_dev->qc_bar == NULL) {
 		PMD_INIT_LOG(ERR, "nfp_rtsym_map fails for net.qc");
 		ret = -EIO;
@@ -1013,7 +995,7 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
 	switch (pf_dev->app_fw_id) {
 	case NFP_APP_FW_CORE_NIC:
 		PMD_INIT_LOG(INFO, "Initializing coreNIC");
-		ret = nfp_init_app_fw_nic(pf_dev);
+		ret = nfp_init_app_fw_nic(pf_dev, dev_info);
 		if (ret != 0) {
 			PMD_INIT_LOG(ERR, "Could not initialize coreNIC!");
 			goto hwqueues_cleanup;
@@ -1021,7 +1003,7 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
 		break;
 	case NFP_APP_FW_FLOWER_NIC:
 		PMD_INIT_LOG(INFO, "Initializing Flower");
-		ret = nfp_init_app_fw_flower(pf_dev);
+		ret = nfp_init_app_fw_flower(pf_dev, dev_info);
 		if (ret != 0) {
 			PMD_INIT_LOG(ERR, "Could not initialize Flower!");
 			goto hwqueues_cleanup;
@@ -1111,10 +1093,17 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)
 	struct nfp_cpp *cpp;
 	enum nfp_app_fw_id app_fw_id;
 	struct nfp_rtsym_table *sym_tbl;
+	const struct nfp_dev_info *dev_info;
 
 	if (pci_dev == 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");
+		return -ENODEV;
+	}
+
 	/*
 	 * When device bound to UIO, the device could be used, by mistake,
 	 * by two DPDK apps, and the UIO driver does not avoid it. This
diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c
index eaf815d06d..1a02a857ea 100644
--- a/drivers/net/nfp/nfp_ethdev_vf.c
+++ b/drivers/net/nfp/nfp_ethdev_vf.c
@@ -268,12 +268,20 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 	uint32_t start_q;
 	int port = 0;
 	int err;
+	const struct nfp_dev_info *dev_info;
 
 	PMD_INIT_FUNC_TRACE();
 
 	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
 
+	dev_info = nfp_dev_info_get(pci_dev->id.device_id);
+	if (dev_info == NULL) {
+		PMD_INIT_LOG(ERR, "Not supported device ID");
+		return -ENODEV;
+	}
+
 	hw = NFP_NET_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	hw->dev_info = dev_info;
 
 	hw->ctrl_bar = pci_dev->mem_resource[0].addr;
 	if (hw->ctrl_bar == NULL) {
@@ -305,19 +313,10 @@ nfp_netvf_init(struct rte_eth_dev *eth_dev)
 	}
 
 	/* Work out where in the BAR the queues start. */
-	switch (pci_dev->id.device_id) {
-	case PCI_DEVICE_ID_NFP3800_VF_NIC:
-	case PCI_DEVICE_ID_NFP6000_VF_NIC:
-		start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ);
-		tx_bar_off = nfp_pci_queue(pci_dev, start_q);
-		start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ);
-		rx_bar_off = nfp_pci_queue(pci_dev, start_q);
-		break;
-	default:
-		PMD_DRV_LOG(ERR, "nfp_net: no device ID matching");
-		err = -ENODEV;
-		goto dev_err_ctrl_map;
-	}
+	start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ);
+	tx_bar_off = nfp_qcp_queue_offset(dev_info, start_q);
+	start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ);
+	rx_bar_off = nfp_qcp_queue_offset(dev_info, start_q);
 
 	PMD_INIT_LOG(DEBUG, "tx_bar_off: 0x%" PRIx64 "", tx_bar_off);
 	PMD_INIT_LOG(DEBUG, "rx_bar_off: 0x%" PRIx64 "", rx_bar_off);
diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c
index f0c371ea2b..1b8bb3471d 100644
--- a/drivers/net/nfp/nfp_rxtx.c
+++ b/drivers/net/nfp/nfp_rxtx.c
@@ -677,7 +677,6 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 		       const struct rte_eth_rxconf *rx_conf,
 		       struct rte_mempool *mp)
 {
-	int ret;
 	uint16_t min_rx_desc;
 	uint16_t max_rx_desc;
 	const struct rte_memzone *tz;
@@ -689,9 +688,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 
 	PMD_INIT_FUNC_TRACE();
 
-	ret = nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
-	if (ret != 0)
-		return ret;
+	nfp_net_rx_desc_limits(hw, &min_rx_desc, &max_rx_desc);
 
 	/* Validating number of descriptors */
 	rx_desc_sz = nb_desc * sizeof(struct nfp_net_rx_desc);
diff --git a/drivers/net/nfp/nfp_rxtx.h b/drivers/net/nfp/nfp_rxtx.h
index 48e548b02d..6d1c8e4605 100644
--- a/drivers/net/nfp/nfp_rxtx.h
+++ b/drivers/net/nfp/nfp_rxtx.h
@@ -74,18 +74,6 @@ struct nfp_meta_parsed {
 	} vlan[NFP_META_MAX_VLANS];
 };
 
-/*
- * The maximum number of descriptors is limited by design as
- * DPDK uses uint16_t variables for these values
- */
-#define NFP_NET_MAX_TX_DESC (32 * 1024)
-#define NFP_NET_MIN_TX_DESC 256
-#define NFP3800_NET_MIN_TX_DESC 512
-
-#define NFP_NET_MAX_RX_DESC (32 * 1024)
-#define NFP_NET_MIN_RX_DESC 256
-#define NFP3800_NET_MIN_RX_DESC 512
-
 /* Descriptor alignment */
 #define NFP_ALIGN_RING_DESC 128
 
diff --git a/drivers/net/nfp/nfpcore/nfp_dev.c b/drivers/net/nfp/nfpcore/nfp_dev.c
new file mode 100644
index 0000000000..7799fa699a
--- /dev/null
+++ b/drivers/net/nfp/nfpcore/nfp_dev.c
@@ -0,0 +1,81 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2023 Corigine, Inc.
+ * All rights reserved.
+ */
+
+#include "nfp_dev.h"
+
+#include <rte_bitops.h>
+
+#include "nfp_platform.h"
+
+/*
+ * Note: The value of 'max_qc_size' is different from kernel driver,
+ * because DPDK use 'uint16_t' as the data type.
+ */
+const struct nfp_dev_info nfp_dev_info[NFP_DEV_CNT] = {
+	[NFP_DEV_NFP3800] = {
+		.qc_idx_mask            = GENMASK(8, 0),
+		.qc_addr_offset         = 0x400000,
+		.min_qc_size            = 512,
+		.max_qc_size            = RTE_BIT32(15),    /**< 32K */
+
+		.chip_names             = "NFP3800",
+		.pcie_cfg_expbar_offset = 0x0a00,
+		.qc_area_sz             = 0x100000,
+		.pf_num_per_unit        = 4,
+	},
+	[NFP_DEV_NFP3800_VF] = {
+		.qc_idx_mask            = GENMASK(8, 0),
+		.qc_addr_offset         = 0,
+		.min_qc_size            = 512,
+		.max_qc_size            = RTE_BIT32(15),    /**< 32K */
+	},
+	[NFP_DEV_NFP6000] = {
+		.qc_idx_mask            = GENMASK(7, 0),
+		.qc_addr_offset         = 0x80000,
+		.min_qc_size            = 256,
+		.max_qc_size            = RTE_BIT32(15),    /**< 32K */
+
+		.chip_names             = "NFP4000/NFP6000",
+		.pcie_cfg_expbar_offset = 0x0400,
+		.qc_area_sz             = 0x80000,
+		.pf_num_per_unit        = 1,
+	},
+	[NFP_DEV_NFP6000_VF] = {
+		.qc_idx_mask            = GENMASK(7, 0),
+		.qc_addr_offset         = 0,
+		.min_qc_size            = 256,
+		.max_qc_size            = RTE_BIT32(15),    /**< 32K */
+	},
+};
+
+const struct nfp_dev_info *
+nfp_dev_info_get(uint16_t device_id)
+{
+	enum nfp_dev_id id;
+
+	switch (device_id) {
+	case PCI_DEVICE_ID_NFP3800_PF_NIC:
+		id = NFP_DEV_NFP3800;
+		break;
+	case PCI_DEVICE_ID_NFP3800_VF_NIC:
+		id = NFP_DEV_NFP3800_VF;
+		break;
+	case PCI_DEVICE_ID_NFP4000_PF_NIC:
+	case PCI_DEVICE_ID_NFP6000_PF_NIC:
+		id = NFP_DEV_NFP6000;
+		break;
+	case PCI_DEVICE_ID_NFP6000_VF_NIC:
+		id = NFP_DEV_NFP6000_VF;
+		break;
+	default:
+		id = NFP_DEV_CNT;
+		break;
+	}
+
+	if (id >= NFP_DEV_CNT)
+		return NULL;
+
+	return &nfp_dev_info[id];
+}
diff --git a/drivers/net/nfp/nfpcore/nfp_dev.h b/drivers/net/nfp/nfpcore/nfp_dev.h
new file mode 100644
index 0000000000..b0fffff619
--- /dev/null
+++ b/drivers/net/nfp/nfpcore/nfp_dev.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2023 Corigine, Inc.
+ * All rights reserved.
+ */
+
+#ifndef __NFP_DEV_H__
+#define __NFP_DEV_H__
+
+#include <stdint.h>
+
+#define PCI_VENDOR_ID_NETRONOME         0x19ee
+#define PCI_VENDOR_ID_CORIGINE          0x1da8
+
+#define PCI_DEVICE_ID_NFP3800_PF_NIC    0x3800
+#define PCI_DEVICE_ID_NFP3800_VF_NIC    0x3803
+#define PCI_DEVICE_ID_NFP4000_PF_NIC    0x4000
+#define PCI_DEVICE_ID_NFP6000_PF_NIC    0x6000
+#define PCI_DEVICE_ID_NFP6000_VF_NIC    0x6003  /* Include NFP4000VF */
+
+enum nfp_dev_id {
+	NFP_DEV_NFP3800,
+	NFP_DEV_NFP3800_VF,
+	NFP_DEV_NFP6000,
+	NFP_DEV_NFP6000_VF,
+	NFP_DEV_CNT,
+};
+
+struct nfp_dev_info {
+	/* Required fields */
+	uint32_t qc_idx_mask;
+	uint32_t qc_addr_offset;
+	uint32_t min_qc_size;
+	uint32_t max_qc_size;
+
+	/* PF-only fields */
+	const char *chip_names;
+	uint32_t pcie_cfg_expbar_offset;
+	uint32_t qc_area_sz;
+	uint8_t pf_num_per_unit;
+};
+
+const struct nfp_dev_info *nfp_dev_info_get(uint16_t device_id);
+
+#endif /* __NFP_DEV_H__ */
-- 
2.39.1


  parent reply	other threads:[~2023-09-19  9:58 UTC|newest]

Thread overview: 159+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-24 11:09 [PATCH 00/27] refact the nfpcore module Chaoyong He
2023-08-24 11:09 ` [PATCH 01/27] net/nfp: explicitly compare to null and 0 Chaoyong He
2023-08-24 11:09 ` [PATCH 02/27] net/nfp: unify the indent coding style Chaoyong He
2023-08-24 11:09 ` [PATCH 03/27] net/nfp: unify the type of integer variable Chaoyong He
2023-08-24 11:09 ` [PATCH 04/27] net/nfp: remove the unneeded logic Chaoyong He
2023-08-24 11:09 ` [PATCH 05/27] net/nfp: standard the local variable coding style Chaoyong He
2023-08-24 11:09 ` [PATCH 06/27] net/nfp: adjust the log statement Chaoyong He
2023-08-24 11:09 ` [PATCH 07/27] net/nfp: standard the comment style Chaoyong He
2023-08-24 11:09 ` [PATCH 08/27] net/nfp: using the DPDK memory management API Chaoyong He
2023-08-24 11:09 ` [PATCH 09/27] net/nfp: standard the blank character Chaoyong He
2023-08-24 11:09 ` [PATCH 10/27] net/nfp: unify the guide line of header file Chaoyong He
2023-08-24 11:09 ` [PATCH 11/27] net/nfp: rename some parameter and variable Chaoyong He
2023-08-24 11:09 ` [PATCH 12/27] net/nfp: refact the hwinfo module Chaoyong He
2023-08-24 11:09 ` [PATCH 13/27] net/nfp: refact the nffw module Chaoyong He
2023-08-24 11:09 ` [PATCH 14/27] net/nfp: refact the mip module Chaoyong He
2023-08-24 11:09 ` [PATCH 15/27] net/nfp: refact the rtsym module Chaoyong He
2023-08-24 11:09 ` [PATCH 16/27] net/nfp: refact the resource module Chaoyong He
2023-08-24 11:09 ` [PATCH 17/27] net/nfp: refact the target module Chaoyong He
2023-08-24 11:09 ` [PATCH 18/27] net/nfp: add a new header file Chaoyong He
2023-08-24 11:09 ` [PATCH 19/27] net/nfp: refact the nsp module Chaoyong He
2023-08-24 11:09 ` [PATCH 20/27] net/nfp: refact the mutex module Chaoyong He
2023-08-24 11:09 ` [PATCH 21/27] net/nfp: rename data field to sync with kernel driver Chaoyong He
2023-08-24 11:09 ` [PATCH 22/27] net/nfp: add the dev module Chaoyong He
2023-08-24 11:09 ` [PATCH 23/27] net/nfp: add header file for PCIe module Chaoyong He
2023-08-24 11:09 ` [PATCH 24/27] net/nfp: refact the cppcore module Chaoyong He
2023-08-24 11:09 ` [PATCH 25/27] net/nfp: refact the PCIe module Chaoyong He
2023-08-24 11:09 ` [PATCH 26/27] net/nfp: refact the cppcore and " Chaoyong He
2023-08-24 11:09 ` [PATCH 27/27] net/nfp: extend the usage of nfp BAR from 8 to 24 Chaoyong He
2023-08-30  2:14 ` [PATCH v2 00/27] refact the nfpcore module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 01/27] net/nfp: explicitly compare to null and 0 Chaoyong He
2023-08-30  2:14   ` [PATCH v2 02/27] net/nfp: unify the indent coding style Chaoyong He
2023-08-30  2:14   ` [PATCH v2 03/27] net/nfp: unify the type of integer variable Chaoyong He
2023-08-30  2:14   ` [PATCH v2 04/27] net/nfp: remove the unneeded logic Chaoyong He
2023-08-30  2:14   ` [PATCH v2 05/27] net/nfp: standard the local variable coding style Chaoyong He
2023-08-30  2:14   ` [PATCH v2 06/27] net/nfp: adjust the log statement Chaoyong He
2023-08-30  2:14   ` [PATCH v2 07/27] net/nfp: standard the comment style Chaoyong He
2023-08-30  2:14   ` [PATCH v2 08/27] net/nfp: using the DPDK memory management API Chaoyong He
2023-08-30  2:14   ` [PATCH v2 09/27] net/nfp: standard the blank character Chaoyong He
2023-08-30  2:14   ` [PATCH v2 10/27] net/nfp: unify the guide line of header file Chaoyong He
2023-08-30  2:14   ` [PATCH v2 11/27] net/nfp: rename some parameter and variable Chaoyong He
2023-08-30  2:14   ` [PATCH v2 12/27] net/nfp: refact the hwinfo module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 13/27] net/nfp: refact the nffw module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 14/27] net/nfp: refact the mip module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 15/27] net/nfp: refact the rtsym module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 16/27] net/nfp: refact the resource module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 17/27] net/nfp: refact the target module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 18/27] net/nfp: add a new header file Chaoyong He
2023-08-30  2:14   ` [PATCH v2 19/27] net/nfp: refact the nsp module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 20/27] net/nfp: refact the mutex module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 21/27] net/nfp: rename data field to sync with kernel driver Chaoyong He
2023-08-30  2:14   ` [PATCH v2 22/27] net/nfp: add the dev module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 23/27] net/nfp: add header file for PCIe module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 24/27] net/nfp: refact the cppcore module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 25/27] net/nfp: refact the PCIe module Chaoyong He
2023-08-30  2:14   ` [PATCH v2 26/27] net/nfp: refact the cppcore and " Chaoyong He
2023-08-30  2:14   ` [PATCH v2 27/27] net/nfp: extend the usage of nfp BAR from 8 to 24 Chaoyong He
2023-09-15  9:15   ` [PATCH v3 00/27] refact the nfpcore module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 01/27] net/nfp: explicitly compare to null and 0 Chaoyong He
2023-09-15  9:15     ` [PATCH v3 02/27] net/nfp: unify the indent coding style Chaoyong He
2023-09-15 13:40       ` Ferruh Yigit
2023-09-18  1:25         ` Chaoyong He
2023-09-18  2:22           ` Stephen Hemminger
2023-09-15  9:15     ` [PATCH v3 03/27] net/nfp: unify the type of integer variable Chaoyong He
2023-09-15 13:42       ` Ferruh Yigit
2023-09-18  1:26         ` Chaoyong He
2023-09-15  9:15     ` [PATCH v3 04/27] net/nfp: remove the unneeded logic Chaoyong He
2023-09-15  9:15     ` [PATCH v3 05/27] net/nfp: standard the local variable coding style Chaoyong He
2023-09-15  9:15     ` [PATCH v3 06/27] net/nfp: adjust the log statement Chaoyong He
2023-09-15  9:15     ` [PATCH v3 07/27] net/nfp: standard the comment style Chaoyong He
2023-09-15 13:44       ` Ferruh Yigit
2023-09-18  1:28         ` Chaoyong He
2023-09-18  2:08         ` Chaoyong He
2023-09-15  9:15     ` [PATCH v3 08/27] net/nfp: using the DPDK memory management API Chaoyong He
2023-09-15 13:45       ` Ferruh Yigit
2023-09-18  1:29         ` Chaoyong He
2023-09-15  9:15     ` [PATCH v3 09/27] net/nfp: standard the blank character Chaoyong He
2023-09-15  9:15     ` [PATCH v3 10/27] net/nfp: unify the guide line of header file Chaoyong He
2023-09-15  9:15     ` [PATCH v3 11/27] net/nfp: rename some parameter and variable Chaoyong He
2023-09-15  9:15     ` [PATCH v3 12/27] net/nfp: refact the hwinfo module Chaoyong He
2023-09-15 13:46       ` Ferruh Yigit
2023-09-18  1:39         ` Chaoyong He
2023-09-18 11:01           ` Ferruh Yigit
2023-09-15  9:15     ` [PATCH v3 13/27] net/nfp: refact the nffw module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 14/27] net/nfp: refact the mip module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 15/27] net/nfp: refact the rtsym module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 16/27] net/nfp: refact the resource module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 17/27] net/nfp: refact the target module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 18/27] net/nfp: add a new header file Chaoyong He
2023-09-15  9:15     ` [PATCH v3 19/27] net/nfp: refact the nsp module Chaoyong He
2023-09-18 12:31       ` Ferruh Yigit
2023-09-18 12:36         ` Ferruh Yigit
2023-09-15  9:15     ` [PATCH v3 20/27] net/nfp: refact the mutex module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 21/27] net/nfp: rename data field to sync with kernel driver Chaoyong He
2023-09-15  9:15     ` [PATCH v3 22/27] net/nfp: add the dev module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 23/27] net/nfp: add header file for PCIe module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 24/27] net/nfp: refact the cppcore module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 25/27] net/nfp: refact the PCIe module Chaoyong He
2023-09-15  9:15     ` [PATCH v3 26/27] net/nfp: refact the cppcore and " Chaoyong He
2023-09-15  9:15     ` [PATCH v3 27/27] net/nfp: extend the usage of nfp BAR from 8 to 24 Chaoyong He
2023-09-15 13:49     ` [PATCH v3 00/27] refact the nfpcore module Ferruh Yigit
2023-09-18  2:45     ` [PATCH v4 00/26] " Chaoyong He
2023-09-18  2:45       ` [PATCH v4 01/26] net/nfp: explicitly compare to null and 0 Chaoyong He
2023-09-18  2:45       ` [PATCH v4 02/26] net/nfp: unify the indent coding style Chaoyong He
2023-09-18 11:53         ` Niklas Söderlund
2023-09-18  2:45       ` [PATCH v4 03/26] net/nfp: unify the type of integer variable Chaoyong He
2023-09-18  2:45       ` [PATCH v4 04/26] net/nfp: remove the unneeded logic Chaoyong He
2023-09-18  2:45       ` [PATCH v4 05/26] net/nfp: standard the local variable coding style Chaoyong He
2023-09-18  2:45       ` [PATCH v4 06/26] net/nfp: adjust the log statement Chaoyong He
2023-09-18  2:45       ` [PATCH v4 07/26] net/nfp: standard the comment style Chaoyong He
2023-09-18  2:45       ` [PATCH v4 08/26] net/nfp: standard the blank character Chaoyong He
2023-09-18  2:45       ` [PATCH v4 09/26] net/nfp: unify the guide line of header file Chaoyong He
2023-09-18  2:45       ` [PATCH v4 10/26] net/nfp: rename some parameter and variable Chaoyong He
2023-09-18  2:45       ` [PATCH v4 11/26] net/nfp: refact the hwinfo module Chaoyong He
2023-09-18  2:45       ` [PATCH v4 12/26] net/nfp: refact the nffw module Chaoyong He
2023-09-18  2:45       ` [PATCH v4 13/26] net/nfp: refact the mip module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 14/26] net/nfp: refact the rtsym module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 15/26] net/nfp: refact the resource module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 16/26] net/nfp: refact the target module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 17/26] net/nfp: add a new header file Chaoyong He
2023-09-18  2:46       ` [PATCH v4 18/26] net/nfp: refact the nsp module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 19/26] net/nfp: refact the mutex module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 20/26] net/nfp: rename data field to sync with kernel driver Chaoyong He
2023-09-18  2:46       ` [PATCH v4 21/26] net/nfp: add the dev module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 22/26] net/nfp: add header file for PCIe module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 23/26] net/nfp: refact the cppcore module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 24/26] net/nfp: refact the PCIe module Chaoyong He
2023-09-18  2:46       ` [PATCH v4 25/26] net/nfp: refact the cppcore and " Chaoyong He
2023-09-18  2:46       ` [PATCH v4 26/26] net/nfp: extend the usage of nfp BAR from 8 to 24 Chaoyong He
2023-09-19  9:54       ` [PATCH v5 00/26] refact the nfpcore module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 01/26] net/nfp: explicitly compare to null and 0 Chaoyong He
2023-09-19  9:54         ` [PATCH v5 02/26] net/nfp: unify the indent coding style Chaoyong He
2023-09-19  9:54         ` [PATCH v5 03/26] net/nfp: unify the type of integer variable Chaoyong He
2023-09-19  9:54         ` [PATCH v5 04/26] net/nfp: remove the unneeded logic Chaoyong He
2023-09-19  9:54         ` [PATCH v5 05/26] net/nfp: standard the local variable coding style Chaoyong He
2023-09-19  9:54         ` [PATCH v5 06/26] net/nfp: adjust the log statement Chaoyong He
2023-09-19  9:54         ` [PATCH v5 07/26] net/nfp: standard the comment style Chaoyong He
2023-09-19  9:54         ` [PATCH v5 08/26] net/nfp: standard the blank character Chaoyong He
2023-09-19  9:54         ` [PATCH v5 09/26] net/nfp: unify the guide line of header file Chaoyong He
2023-09-19  9:54         ` [PATCH v5 10/26] net/nfp: rename some parameter and variable Chaoyong He
2023-09-19  9:54         ` [PATCH v5 11/26] net/nfp: refact the hwinfo module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 12/26] net/nfp: refact the nffw module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 13/26] net/nfp: refact the mip module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 14/26] net/nfp: refact the rtsym module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 15/26] net/nfp: refact the resource module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 16/26] net/nfp: refact the target module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 17/26] net/nfp: add a new header file Chaoyong He
2023-09-19  9:54         ` [PATCH v5 18/26] net/nfp: refact the nsp module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 19/26] net/nfp: refact the mutex module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 20/26] net/nfp: rename data field to sync with kernel driver Chaoyong He
2023-09-19  9:54         ` Chaoyong He [this message]
2023-09-19  9:54         ` [PATCH v5 22/26] net/nfp: add header file for PCIe module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 23/26] net/nfp: refact the cppcore module Chaoyong He
2023-09-19  9:54         ` [PATCH v5 24/26] net/nfp: refact the PCIe module Chaoyong He
2023-09-19 21:18         ` [PATCH v5 00/26] refact the nfpcore module Ferruh Yigit
2023-09-20  1:55           ` Chaoyong He
2023-09-20  8:54             ` Ferruh Yigit
2023-09-20  9:59         ` Ferruh Yigit
2023-09-20  1:28       ` [PATCH v5 25/26] net/nfp: refact the cppcore and PCIe module Chaoyong He
2023-09-20  1:29       ` [PATCH v5 26/26] net/nfp: extend the usage of nfp BAR from 8 to 24 Chaoyong He

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230919095440.45445-22-chaoyong.he@corigine.com \
    --to=chaoyong.he@corigine.com \
    --cc=dev@dpdk.org \
    --cc=oss-drivers@corigine.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).