From: Chaoyong He <chaoyong.he@corigine.com>
To: dev@dpdk.org
Cc: oss-drivers@corigine.com,
"Chaoyong He" <chaoyong.he@corigine.com>,
"Niklas Söderlund" <niklas.soderlund@corigine.com>
Subject: [PATCH v3 26/27] net/nfp: refact the cppcore and PCIe module
Date: Fri, 15 Sep 2023 17:15:50 +0800 [thread overview]
Message-ID: <20230915091551.1459606-27-chaoyong.he@corigine.com> (raw)
In-Reply-To: <20230915091551.1459606-1-chaoyong.he@corigine.com>
Sync the logic from kernel driver, use the new entry function from the
PCIe module instead of the cppcore module.
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>
---
drivers/net/nfp/nfp_ethdev.c | 9 +-
drivers/net/nfp/nfpcore/nfp6000_pcie.c | 197 ++++++++++---------------
drivers/net/nfp/nfpcore/nfp6000_pcie.h | 6 +
drivers/net/nfp/nfpcore/nfp_cpp.h | 36 +----
drivers/net/nfp/nfpcore/nfp_cppcore.c | 68 ++++++---
5 files changed, 141 insertions(+), 175 deletions(-)
diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c
index 5d129d0ad3..6eefec3836 100644
--- a/drivers/net/nfp/nfp_ethdev.c
+++ b/drivers/net/nfp/nfp_ethdev.c
@@ -23,6 +23,7 @@
#include "nfpcore/nfp_mip.h"
#include "nfpcore/nfp_rtsym.h"
#include "nfpcore/nfp_nsp.h"
+#include "nfpcore/nfp6000_pcie.h"
#include "nfp_common.h"
#include "nfp_ctrl.h"
@@ -917,9 +918,9 @@ nfp_pf_init(struct rte_pci_device *pci_dev)
* use a lock file if UIO is being used.
*/
if (pci_dev->kdrv == RTE_PCI_KDRV_VFIO)
- cpp = nfp_cpp_from_device_name(pci_dev, 0);
+ cpp = nfp_cpp_from_nfp6000_pcie(pci_dev, false);
else
- cpp = nfp_cpp_from_device_name(pci_dev, 1);
+ cpp = nfp_cpp_from_nfp6000_pcie(pci_dev, true);
if (cpp == NULL) {
PMD_INIT_LOG(ERR, "A CPP handle can not be obtained");
@@ -1120,9 +1121,9 @@ nfp_pf_secondary_init(struct rte_pci_device *pci_dev)
* use a lock file if UIO is being used.
*/
if (pci_dev->kdrv == RTE_PCI_KDRV_VFIO)
- cpp = nfp_cpp_from_device_name(pci_dev, 0);
+ cpp = nfp_cpp_from_nfp6000_pcie(pci_dev, false);
else
- cpp = nfp_cpp_from_device_name(pci_dev, 1);
+ cpp = nfp_cpp_from_nfp6000_pcie(pci_dev, true);
if (cpp == NULL) {
PMD_INIT_LOG(ERR, "A CPP handle can not be obtained");
diff --git a/drivers/net/nfp/nfpcore/nfp6000_pcie.c b/drivers/net/nfp/nfpcore/nfp6000_pcie.c
index 4f453f19a9..e32ac1107c 100644
--- a/drivers/net/nfp/nfpcore/nfp6000_pcie.c
+++ b/drivers/net/nfp/nfpcore/nfp6000_pcie.c
@@ -98,6 +98,24 @@ struct nfp_pcie_user {
char *cfg;
};
+/* Generic CPP bus access interface. */
+struct nfp6000_area_priv {
+ struct nfp_bar *bar;
+ uint32_t bar_offset;
+
+ int target;
+ int action;
+ int token;
+ uint64_t offset;
+ struct {
+ int read;
+ int write;
+ int bar;
+ } width;
+ size_t size;
+ char *iomem;
+};
+
static uint32_t
nfp_bar_maptype(struct nfp_bar *bar)
{
@@ -334,24 +352,6 @@ nfp_disable_bars(struct nfp_pcie_user *nfp)
}
}
-/* Generic CPP bus access interface. */
-struct nfp6000_area_priv {
- struct nfp_bar *bar;
- uint32_t bar_offset;
-
- uint32_t target;
- uint32_t action;
- uint32_t token;
- uint64_t offset;
- struct {
- int read;
- int write;
- int bar;
- } width;
- size_t size;
- char *iomem;
-};
-
static int
nfp6000_area_init(struct nfp_cpp_area *area,
uint32_t dest,
@@ -624,87 +624,6 @@ nfp_acquire_process_lock(struct nfp_pcie_user *desc)
return 0;
}
-static int
-nfp6000_set_model(struct rte_pci_device *dev,
- struct nfp_cpp *cpp)
-{
- uint32_t model;
-
- if (rte_pci_read_config(dev, &model, 4, 0x2e) < 0) {
- PMD_DRV_LOG(ERR, "nfp set model failed");
- return -1;
- }
-
- model = model << 16;
- nfp_cpp_model_set(cpp, model);
-
- return 0;
-}
-
-static int
-nfp6000_set_interface(struct rte_pci_device *dev,
- struct nfp_cpp *cpp)
-{
- uint16_t interface;
-
- if (rte_pci_read_config(dev, &interface, 2, 0x154) < 0) {
- PMD_DRV_LOG(ERR, "nfp set interface failed");
- return -1;
- }
-
- nfp_cpp_interface_set(cpp, interface);
-
- return 0;
-}
-
-static int
-nfp6000_set_serial(struct rte_pci_device *dev,
- struct nfp_cpp *cpp)
-{
- off_t pos;
- uint16_t tmp;
- uint8_t serial[6];
- int serial_len = 6;
-
- pos = rte_pci_find_ext_capability(dev, RTE_PCI_EXT_CAP_ID_DSN);
- if (pos <= 0) {
- PMD_DRV_LOG(ERR, "PCI_EXT_CAP_ID_DSN not found. nfp set serial failed");
- return -1;
- } else {
- pos += 6;
- }
-
- if (rte_pci_read_config(dev, &tmp, 2, pos) < 0) {
- PMD_DRV_LOG(ERR, "nfp set serial failed");
- return -1;
- }
-
- serial[4] = (uint8_t)((tmp >> 8) & 0xff);
- serial[5] = (uint8_t)(tmp & 0xff);
-
- pos += 2;
- if (rte_pci_read_config(dev, &tmp, 2, pos) < 0) {
- PMD_DRV_LOG(ERR, "nfp set serial failed");
- return -1;
- }
-
- serial[2] = (uint8_t)((tmp >> 8) & 0xff);
- serial[3] = (uint8_t)(tmp & 0xff);
-
- pos += 2;
- if (rte_pci_read_config(dev, &tmp, 2, pos) < 0) {
- PMD_DRV_LOG(ERR, "nfp set serial failed");
- return -1;
- }
-
- serial[0] = (uint8_t)((tmp >> 8) & 0xff);
- serial[1] = (uint8_t)(tmp & 0xff);
-
- nfp_cpp_serial_set(cpp, serial, serial_len);
-
- return 0;
-}
-
static int
nfp6000_get_dsn(struct rte_pci_device *pci_dev,
uint64_t *dsn)
@@ -795,12 +714,7 @@ nfp6000_init(struct nfp_cpp *cpp,
struct rte_pci_device *dev)
{
int ret = 0;
- struct nfp_pcie_user *desc;
-
- desc = malloc(sizeof(*desc));
- if (desc == NULL)
- return -1;
-
+ struct nfp_pcie_user *desc = nfp_cpp_priv(cpp);
memset(desc->busdev, 0, BUSDEV_SZ);
strlcpy(desc->busdev, dev->device.name, sizeof(desc->busdev));
@@ -809,17 +723,11 @@ nfp6000_init(struct nfp_cpp *cpp,
nfp_cpp_driver_need_lock(cpp)) {
ret = nfp_acquire_process_lock(desc);
if (ret != 0)
- goto error;
+ return -1;
}
- if (nfp6000_set_model(dev, cpp) < 0)
- goto error;
- if (nfp6000_set_interface(dev, cpp) < 0)
- goto error;
- if (nfp6000_set_serial(dev, cpp) < 0)
- goto error;
if (nfp6000_set_barsz(dev, desc) < 0)
- goto error;
+ return -1;
desc->cfg = dev->mem_resource[0].addr;
desc->dev_id = dev->addr.function & 0x7;
@@ -830,13 +738,7 @@ nfp6000_init(struct nfp_cpp *cpp,
return -1;
}
- nfp_cpp_priv_set(cpp, desc);
-
return 0;
-
-error:
- free(desc);
- return -1;
}
static void
@@ -848,7 +750,7 @@ nfp6000_free(struct nfp_cpp *cpp)
if (nfp_cpp_driver_need_lock(cpp))
close(desc->lock);
close(desc->device);
- free(desc);
+ rte_free(desc);
}
static const struct nfp_cpp_operations nfp6000_pcie_ops = {
@@ -873,3 +775,58 @@ nfp_cpp_operations *nfp_cpp_transport_operations(void)
{
return &nfp6000_pcie_ops;
}
+
+/**
+ * Build a NFP CPP bus from a NFP6000 PCI device
+ *
+ * @param pdev
+ * NFP6000 PCI device
+ * @param driver_lock_needed
+ * driver lock flag
+ *
+ * @return
+ * NFP CPP handle or NULL
+ */
+struct nfp_cpp *
+nfp_cpp_from_nfp6000_pcie(struct rte_pci_device *pci_dev,
+ bool driver_lock_needed)
+{
+ int ret;
+ struct nfp_cpp *cpp;
+ uint16_t interface = 0;
+ struct nfp_pcie_user *nfp;
+
+ nfp = rte_zmalloc(NULL, sizeof(*nfp), 0);
+ if (nfp == NULL)
+ return NULL;
+
+ ret = nfp6000_get_interface(pci_dev, &interface);
+ if (ret != 0) {
+ PMD_DRV_LOG(ERR, "Get interface failed.");
+ rte_free(nfp);
+ return NULL;
+ }
+
+ if (NFP_CPP_INTERFACE_TYPE_of(interface) != NFP_CPP_INTERFACE_TYPE_PCI) {
+ PMD_DRV_LOG(ERR, "Interface type is not right.");
+ rte_free(nfp);
+ return NULL;
+ }
+
+ if (NFP_CPP_INTERFACE_CHANNEL_of(interface) !=
+ NFP_CPP_INTERFACE_CHANNEL_PEROPENER) {
+ PMD_DRV_LOG(ERR, "Interface channel is not right");
+ rte_free(nfp);
+ return NULL;
+ }
+
+ /* Probe for all the common NFP devices */
+ cpp = nfp_cpp_from_device_name(pci_dev, nfp, driver_lock_needed);
+ if (cpp == NULL) {
+ PMD_DRV_LOG(ERR, "Get cpp from operation failed");
+ rte_free(nfp);
+ return NULL;
+ }
+
+ return cpp;
+}
diff --git a/drivers/net/nfp/nfpcore/nfp6000_pcie.h b/drivers/net/nfp/nfpcore/nfp6000_pcie.h
index e126457d45..8847f6f946 100644
--- a/drivers/net/nfp/nfpcore/nfp6000_pcie.h
+++ b/drivers/net/nfp/nfpcore/nfp6000_pcie.h
@@ -6,8 +6,14 @@
#ifndef __NFP6000_PCIE_H__
#define __NFP6000_PCIE_H__
+#include <ethdev_pci.h>
+
#include "nfp_cpp.h"
+#include "nfp_dev.h"
const struct nfp_cpp_operations *nfp_cpp_transport_operations(void);
+struct nfp_cpp *nfp_cpp_from_nfp6000_pcie(struct rte_pci_device *pci_dev,
+ bool driver_lock_needed);
+
#endif /* __NFP6000_PCIE_H__ */
diff --git a/drivers/net/nfp/nfpcore/nfp_cpp.h b/drivers/net/nfp/nfpcore/nfp_cpp.h
index 0f36ba0b50..e879c7c920 100644
--- a/drivers/net/nfp/nfpcore/nfp_cpp.h
+++ b/drivers/net/nfp/nfpcore/nfp_cpp.h
@@ -226,40 +226,12 @@ uint32_t nfp_cpp_model_autodetect(struct nfp_cpp *cpp, uint32_t *model);
/* NFP CPP core interface for CPP clients */
struct nfp_cpp *nfp_cpp_from_device_name(struct rte_pci_device *dev,
- int driver_lock_needed);
+ void *priv, bool driver_lock_needed);
void nfp_cpp_free(struct nfp_cpp *cpp);
#define NFP_CPP_MODEL_INVALID 0xffffffff
-/**
- * Retrieve the chip ID from the model ID
- *
- * The chip ID is a 16-bit BCD+A-F encoding for the chip type.
- *
- * @param model
- * NFP CPP model id
- *
- * @return
- * NFP CPP chip id
- */
-#define NFP_CPP_MODEL_CHIP_of(model) (((model) >> 16) & 0xffff)
-
-/**
- * Check for the NFP6000 family of devices
- *
- * NOTE: The NFP4000 series is considered as a NFP6000 series variant.
- *
- * @param model
- * NFP CPP model id
- *
- * @return
- * true if model is in the NFP6000 family, false otherwise.
- */
-#define NFP_CPP_MODEL_IS_6000(model) \
- ((NFP_CPP_MODEL_CHIP_of(model) >= 0x3800) && \
- (NFP_CPP_MODEL_CHIP_of(model) < 0x7000))
-
uint32_t nfp_cpp_model(struct nfp_cpp *cpp);
/*
@@ -330,6 +302,12 @@ uint32_t nfp_cpp_model(struct nfp_cpp *cpp);
*/
#define NFP_CPP_INTERFACE_CHANNEL_of(interface) (((interface) >> 0) & 0xff)
+/*
+ * Use this channel ID for multiple virtual channel interfaces
+ * (ie ARM and PCIe) when setting up the interface field.
+ */
+#define NFP_CPP_INTERFACE_CHANNEL_PEROPENER 255
+
uint16_t nfp_cpp_interface(struct nfp_cpp *cpp);
uint32_t nfp_cpp_serial(struct nfp_cpp *cpp, const uint8_t **serial);
diff --git a/drivers/net/nfp/nfpcore/nfp_cppcore.c b/drivers/net/nfp/nfpcore/nfp_cppcore.c
index 0c1a03b0ab..d70c8cd44a 100644
--- a/drivers/net/nfp/nfpcore/nfp_cppcore.c
+++ b/drivers/net/nfp/nfpcore/nfp_cppcore.c
@@ -909,10 +909,13 @@ nfp_xpb_readl(struct nfp_cpp *cpp,
}
static struct nfp_cpp *
-nfp_cpp_alloc(struct rte_pci_device *dev,
- int driver_lock_needed)
+nfp_cpp_alloc(struct rte_pci_device *pci_dev,
+ void *priv,
+ bool driver_lock_needed)
{
int err;
+ size_t target;
+ uint32_t xpb_addr;
struct nfp_cpp *cpp;
const struct nfp_cpp_operations *ops;
@@ -925,32 +928,50 @@ nfp_cpp_alloc(struct rte_pci_device *dev,
return NULL;
cpp->op = ops;
+ cpp->priv = priv;
cpp->driver_lock_needed = driver_lock_needed;
- if (cpp->op->init) {
- err = cpp->op->init(cpp, dev);
+ err = ops->get_interface(pci_dev, &cpp->interface);
+ if (err != 0) {
+ rte_free(cpp);
+ return NULL;
+ }
+
+ err = ops->get_serial(pci_dev, cpp->serial, NFP_SERIAL_LEN);
+ if (err != 0) {
+ rte_free(cpp);
+ return NULL;
+ }
+
+ /*
+ * NOTE: cpp_lock is NOT locked for op->init,
+ * since it may call NFP CPP API operations
+ */
+ err = cpp->op->init(cpp, pci_dev);
+ if (err < 0) {
+ PMD_DRV_LOG(ERR, "NFP interface initialization failed");
+ rte_free(cpp);
+ return NULL;
+ }
+
+ err = nfp_cpp_model_autodetect(cpp, &cpp->model);
+ if (err < 0) {
+ PMD_DRV_LOG(ERR, "NFP model detection failed");
+ rte_free(cpp);
+ return NULL;
+ }
+
+ for (target = 0; target < RTE_DIM(cpp->imb_cat_table); target++) {
+ /* Hardcoded XPB IMB Base, island 0 */
+ xpb_addr = 0x000a0000 + (target * 4);
+ err = nfp_xpb_readl(cpp, xpb_addr, &cpp->imb_cat_table[target]);
if (err < 0) {
+ PMD_DRV_LOG(ERR, "Can't read CPP mapping from device");
rte_free(cpp);
return NULL;
}
}
- if (NFP_CPP_MODEL_IS_6000(nfp_cpp_model(cpp))) {
- uint32_t xpb_addr;
- size_t target;
-
- for (target = 0; target < RTE_DIM(cpp->imb_cat_table); target++) {
- /* Hardcoded XPB IMB Base, island 0 */
- xpb_addr = 0x000a0000 + (target * 4);
- err = nfp_xpb_readl(cpp, xpb_addr,
- (uint32_t *)&cpp->imb_cat_table[target]);
- if (err < 0) {
- rte_free(cpp);
- return NULL;
- }
- }
- }
-
err = nfp_cpp_set_mu_locality_lsb(cpp);
if (err < 0) {
PMD_DRV_LOG(ERR, "Can't calculate MU locality bit offset");
@@ -981,6 +1002,8 @@ nfp_cpp_free(struct nfp_cpp *cpp)
*
* @param dev
* PCI device
+ * @param priv
+ * Private data of low-level implementation
* @param driver_lock_needed
* Driver lock flag
*
@@ -991,9 +1014,10 @@ nfp_cpp_free(struct nfp_cpp *cpp)
*/
struct nfp_cpp *
nfp_cpp_from_device_name(struct rte_pci_device *dev,
- int driver_lock_needed)
+ void *priv,
+ bool driver_lock_needed)
{
- return nfp_cpp_alloc(dev, driver_lock_needed);
+ return nfp_cpp_alloc(dev, priv, driver_lock_needed);
}
/**
--
2.39.1
next prev parent reply other threads:[~2023-09-15 9:19 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 ` Chaoyong He [this message]
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 ` [PATCH v5 21/26] net/nfp: add the dev module Chaoyong He
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=20230915091551.1459606-27-chaoyong.he@corigine.com \
--to=chaoyong.he@corigine.com \
--cc=dev@dpdk.org \
--cc=niklas.soderlund@corigine.com \
--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).