All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chaoyong He <chaoyong.he@corigine.com>
To: dev@dpdk.org
Cc: "Chaoyong He" <chaoyong.he@corigine.com>,
	"Niklas Söderlund" <niklas.soderlund@corigine.com>
Subject: [PATCH v4 14/26] net/nfp: refact the rtsym module
Date: Mon, 18 Sep 2023 10:46:00 +0800	[thread overview]
Message-ID: <20230918024612.1600536-15-chaoyong.he@corigine.com> (raw)
In-Reply-To: <20230918024612.1600536-1-chaoyong.he@corigine.com>

Add several read/write APIs and remove the unneeded header file
include statements.

Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>
---
 drivers/net/nfp/nfpcore/nfp_rtsym.c | 305 +++++++++++++++++++++++++---
 drivers/net/nfp/nfpcore/nfp_rtsym.h |  53 ++---
 2 files changed, 299 insertions(+), 59 deletions(-)

diff --git a/drivers/net/nfp/nfpcore/nfp_rtsym.c b/drivers/net/nfp/nfpcore/nfp_rtsym.c
index 37811ceaeb..2d4100dda2 100644
--- a/drivers/net/nfp/nfpcore/nfp_rtsym.c
+++ b/drivers/net/nfp/nfpcore/nfp_rtsym.c
@@ -8,14 +8,25 @@
  * Interface for accessing run-time symbol table
  */
 
-#include <stdio.h>
+#include "nfp_rtsym.h"
+
 #include <rte_byteorder.h>
-#include "nfp_cpp.h"
+
 #include "nfp_logs.h"
 #include "nfp_mip.h"
-#include "nfp_rtsym.h"
 #include "nfp6000/nfp6000.h"
 
+enum nfp_rtsym_type {
+	NFP_RTSYM_TYPE_NONE,
+	NFP_RTSYM_TYPE_OBJECT,
+	NFP_RTSYM_TYPE_FUNCTION,
+	NFP_RTSYM_TYPE_ABS,
+};
+
+#define NFP_RTSYM_TARGET_NONE           0
+#define NFP_RTSYM_TARGET_LMEM           -1
+#define NFP_RTSYM_TARGET_EMU_CACHE      -7
+
 /* These need to match the linker */
 #define SYM_TGT_LMEM            0
 #define SYM_TGT_EMU_CACHE       0x17
@@ -32,6 +43,30 @@ struct nfp_rtsym_entry {
 	uint32_t size_lo;
 };
 
+/*
+ * Structure describing a run-time NFP symbol.
+ *
+ * The memory target of the symbol is generally the CPP target number and can be
+ * used directly by the nfp_cpp API calls.  However, in some cases (i.e., for
+ * local memory or control store) the target is encoded using a negative number.
+ *
+ * When the target type can not be used to fully describe the location of a
+ * symbol the domain field is used to further specify the location (i.e., the
+ * specific ME or island number).
+ *
+ * For ME target resources, 'domain' is an MEID.
+ * For Island target resources, 'domain' is an island ID, with the one exception
+ * of "sram" symbols for backward compatibility, which are viewed as global.
+ */
+struct nfp_rtsym {
+	const char *name;  /**< Symbol name */
+	uint64_t addr;     /**< Address in the domain/target's address space */
+	uint64_t size;     /**< Size (in bytes) of the symbol */
+	enum nfp_rtsym_type type; /**< NFP_RTSYM_TYPE_* of the symbol */
+	int target;        /**< CPP target identifier, or NFP_RTSYM_TARGET_* */
+	int domain;        /**< CPP target domain */
+};
+
 struct nfp_rtsym_table {
 	struct nfp_cpp *cpp;
 	int num;
@@ -80,21 +115,8 @@ nfp_rtsym_sw_entry_init(struct nfp_rtsym_table *cache,
 		sw->domain = -1;
 }
 
-struct nfp_rtsym_table *
-nfp_rtsym_table_read(struct nfp_cpp *cpp)
-{
-	struct nfp_mip *mip;
-	struct nfp_rtsym_table *rtbl;
-
-	mip = nfp_mip_open(cpp);
-	rtbl = __nfp_rtsym_table_read(cpp, mip);
-	nfp_mip_close(mip);
-
-	return rtbl;
-}
-
-struct nfp_rtsym_table *
-__nfp_rtsym_table_read(struct nfp_cpp *cpp,
+static struct nfp_rtsym_table *
+nfp_rtsym_table_read_real(struct nfp_cpp *cpp,
 		const struct nfp_mip *mip)
 {
 	int n;
@@ -162,6 +184,19 @@ __nfp_rtsym_table_read(struct nfp_cpp *cpp,
 	return NULL;
 }
 
+struct nfp_rtsym_table *
+nfp_rtsym_table_read(struct nfp_cpp *cpp)
+{
+	struct nfp_mip *mip;
+	struct nfp_rtsym_table *rtbl;
+
+	mip = nfp_mip_open(cpp);
+	rtbl = nfp_rtsym_table_read_real(cpp, mip);
+	nfp_mip_close(mip);
+
+	return rtbl;
+}
+
 /**
  * Get the number of RTSYM descriptors
  *
@@ -287,7 +322,59 @@ nfp_rtsym_to_dest(struct nfp_cpp *cpp,
 }
 
 static int
-nfp_rtsym_readl(struct nfp_cpp *cpp,
+nfp_rtsym_read_real(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint8_t action,
+		uint8_t token,
+		uint64_t offset,
+		void *buf,
+		size_t len)
+{
+	int err;
+	uint64_t addr;
+	uint32_t cpp_id;
+	size_t length = len;
+	uint64_t sym_size = nfp_rtsym_size(sym);
+
+	if (offset > sym_size) {
+		PMD_DRV_LOG(ERR, "rtsym '%s' read out of bounds", sym->name);
+		return -ENXIO;
+	}
+
+	if (length > sym_size - offset)
+		length = sym_size - offset;
+
+	if (sym->type == NFP_RTSYM_TYPE_ABS) {
+		union {
+			uint64_t value_64;
+			uint8_t value_8[8];
+		} tmp;
+
+		tmp.value_64 = sym->addr;
+		memcpy(buf, &tmp.value_8[offset], length);
+
+		return length;
+	}
+
+	err = nfp_rtsym_to_dest(cpp, sym, action, token, offset, &cpp_id, &addr);
+	if (err != 0)
+		return err;
+
+	return nfp_cpp_read(cpp, cpp_id, addr, buf, length);
+}
+
+int
+nfp_rtsym_read(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint64_t offset,
+		void *buf,
+		size_t len)
+{
+	return nfp_rtsym_read_real(cpp, sym, NFP_CPP_ACTION_RW, 0, offset, buf, len);
+}
+
+static int
+nfp_rtsym_readl_real(struct nfp_cpp *cpp,
 		const struct nfp_rtsym *sym,
 		uint8_t action,
 		uint8_t token,
@@ -310,8 +397,17 @@ nfp_rtsym_readl(struct nfp_cpp *cpp,
 	return nfp_cpp_readl(cpp, cpp_id, addr, value);
 }
 
+int
+nfp_rtsym_readl(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint64_t offset,
+		uint32_t *value)
+{
+	return nfp_rtsym_readl_real(cpp, sym, NFP_CPP_ACTION_RW, 0, offset, value);
+}
+
 static int
-nfp_rtsym_readq(struct nfp_cpp *cpp,
+nfp_rtsym_readq_real(struct nfp_cpp *cpp,
 		const struct nfp_rtsym *sym,
 		uint8_t action,
 		uint8_t token,
@@ -339,6 +435,121 @@ nfp_rtsym_readq(struct nfp_cpp *cpp,
 	return nfp_cpp_readq(cpp, cpp_id, addr, value);
 }
 
+int
+nfp_rtsym_readq(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint64_t offset,
+		uint64_t *value)
+{
+	return nfp_rtsym_readq_real(cpp, sym, NFP_CPP_ACTION_RW, 0, offset, value);
+}
+
+static int
+nfp_rtsym_write_real(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint8_t action,
+		uint8_t token,
+		uint64_t offset,
+		void *buf,
+		size_t len)
+{
+	int err;
+	uint64_t addr;
+	uint32_t cpp_id;
+	size_t length = len;
+	uint64_t sym_size = nfp_rtsym_size(sym);
+
+	if (offset > sym_size) {
+		PMD_DRV_LOG(ERR, "rtsym '%s' write out of bounds", sym->name);
+		return -ENXIO;
+	}
+
+	if (length > sym_size - offset)
+		length = sym_size - offset;
+
+	err = nfp_rtsym_to_dest(cpp, sym, action, token, offset, &cpp_id, &addr);
+	if (err != 0)
+		return err;
+
+	return nfp_cpp_write(cpp, cpp_id, addr, buf, length);
+}
+
+int
+nfp_rtsym_write(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint64_t offset,
+		void *buf,
+		size_t len)
+{
+	return nfp_rtsym_write_real(cpp, sym, NFP_CPP_ACTION_RW, 0, offset, buf, len);
+}
+
+static int
+nfp_rtsym_writel_real(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint8_t action,
+		uint8_t token,
+		uint64_t offset,
+		uint32_t value)
+{
+	int err;
+	uint64_t addr;
+	uint32_t cpp_id;
+
+	if (offset + 4 > nfp_rtsym_size(sym)) {
+		PMD_DRV_LOG(ERR, "rtsym '%s' write out of bounds", sym->name);
+		return -ENXIO;
+	}
+
+	err = nfp_rtsym_to_dest(cpp, sym, action, token, offset, &cpp_id, &addr);
+	if (err != 0)
+		return err;
+
+	return nfp_cpp_writel(cpp, cpp_id, addr, value);
+}
+
+int
+nfp_rtsym_writel(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint64_t offset,
+		uint32_t value)
+{
+	return nfp_rtsym_writel_real(cpp, sym, NFP_CPP_ACTION_RW, 0, offset, value);
+}
+
+static int
+nfp_rtsym_writeq_real(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint8_t action,
+		uint8_t token,
+		uint64_t offset,
+		uint64_t value)
+{
+	int err;
+	uint64_t addr;
+	uint32_t cpp_id;
+
+	if (offset + 8 > nfp_rtsym_size(sym)) {
+		PMD_DRV_LOG(ERR, "rtsym '%s' write out of bounds", sym->name);
+		return -ENXIO;
+	}
+
+	err = nfp_rtsym_to_dest(cpp, sym, action, token, offset, &cpp_id, &addr);
+	if (err != 0)
+		return err;
+
+	return nfp_cpp_writeq(cpp, cpp_id, addr, value);
+}
+
+int
+nfp_rtsym_writeq(struct nfp_cpp *cpp,
+		const struct nfp_rtsym *sym,
+		uint64_t offset,
+		uint64_t value)
+{
+	return nfp_rtsym_writeq_real(cpp, sym, NFP_CPP_ACTION_RW, 0, offset, value);
+}
+
 /**
  * Read a simple unsigned scalar value from symbol
  *
@@ -374,11 +585,11 @@ nfp_rtsym_read_le(struct nfp_rtsym_table *rtbl,
 
 	switch (sym->size) {
 	case 4:
-		err = nfp_rtsym_readl(rtbl->cpp, sym, NFP_CPP_ACTION_RW, 0, 0, &val32);
+		err = nfp_rtsym_readl(rtbl->cpp, sym, 0, &val32);
 		val = val32;
 		break;
 	case 8:
-		err = nfp_rtsym_readq(rtbl->cpp, sym, NFP_CPP_ACTION_RW, 0, 0, &val);
+		err = nfp_rtsym_readq(rtbl->cpp, sym, 0, &val);
 		break;
 	default:
 		PMD_DRV_LOG(ERR, "rtsym '%s' unsupported size: %#lx",
@@ -387,8 +598,6 @@ nfp_rtsym_read_le(struct nfp_rtsym_table *rtbl,
 		break;
 	}
 
-	if (err)
-		err = -EIO;
 exit:
 	if (error != NULL)
 		*error = err;
@@ -399,6 +608,54 @@ nfp_rtsym_read_le(struct nfp_rtsym_table *rtbl,
 	return val;
 }
 
+/**
+ * Write an unsigned scalar value to a symbol
+ *
+ * Lookup a symbol and write a value to it. Symbol can be 4 or 8 bytes in size.
+ * If 4 bytes then the lower 32-bits of 'value' are used. Value will be
+ * written as simple little-endian unsigned value.
+ *
+ * @param rtbl
+ *   NFP RTSYM table
+ * @param name
+ *   Symbol name
+ * @param value
+ *   Value to write
+ *
+ * @return
+ *   0 on success or error code.
+ */
+int
+nfp_rtsym_write_le(struct nfp_rtsym_table *rtbl,
+		const char *name,
+		uint64_t value)
+{
+	int err;
+	uint64_t sym_size;
+	const struct nfp_rtsym *sym;
+
+	sym = nfp_rtsym_lookup(rtbl, name);
+	if (sym == NULL)
+		return -ENOENT;
+
+	sym_size = nfp_rtsym_size(sym);
+	switch (sym_size) {
+	case 4:
+		err = nfp_rtsym_writel(rtbl->cpp, sym, 0, value);
+		break;
+	case 8:
+		err = nfp_rtsym_writeq(rtbl->cpp, sym, 0, value);
+		break;
+	default:
+		PMD_DRV_LOG(ERR, "rtsym '%s' unsupported size: %#lx",
+				name, sym_size);
+		err = -EINVAL;
+		break;
+	}
+
+	return err;
+}
+
 uint8_t *
 nfp_rtsym_map(struct nfp_rtsym_table *rtbl,
 		const char *name,
diff --git a/drivers/net/nfp/nfpcore/nfp_rtsym.h b/drivers/net/nfp/nfpcore/nfp_rtsym.h
index fdde1eb75b..f79637ac50 100644
--- a/drivers/net/nfp/nfpcore/nfp_rtsym.h
+++ b/drivers/net/nfp/nfpcore/nfp_rtsym.h
@@ -6,46 +6,13 @@
 #ifndef __NFP_RTSYM_H__
 #define __NFP_RTSYM_H__
 
-#define NFP_RTSYM_TYPE_NONE             0
-#define NFP_RTSYM_TYPE_OBJECT           1
-#define NFP_RTSYM_TYPE_FUNCTION         2
-#define NFP_RTSYM_TYPE_ABS              3
-
-#define NFP_RTSYM_TARGET_NONE           0
-#define NFP_RTSYM_TARGET_LMEM           -1
-#define NFP_RTSYM_TARGET_EMU_CACHE      -7
-
-/*
- * Structure describing a run-time NFP symbol.
- *
- * The memory target of the symbol is generally the CPP target number and can be
- * used directly by the nfp_cpp API calls.  However, in some cases (i.e., for
- * local memory or control store) the target is encoded using a negative number.
- *
- * When the target type can not be used to fully describe the location of a
- * symbol the domain field is used to further specify the location (i.e., the
- * specific ME or island number).
- *
- * For ME target resources, 'domain' is an MEID.
- * For Island target resources, 'domain' is an island ID, with the one exception
- * of "sram" symbols for backward compatibility, which are viewed as global.
- */
-struct nfp_rtsym {
-	const char *name;  /**< Symbol name */
-	uint64_t addr;     /**< Address in the domain/target's address space */
-	uint64_t size;     /**< Size (in bytes) of the symbol */
-	int type;          /**< NFP_RTSYM_TYPE_* of the symbol */
-	int target;        /**< CPP target identifier, or NFP_RTSYM_TARGET_* */
-	int domain;        /**< CPP target domain */
-};
+#include "nfp_cpp.h"
 
+struct nfp_rtsym;
 struct nfp_rtsym_table;
 
 struct nfp_rtsym_table *nfp_rtsym_table_read(struct nfp_cpp *cpp);
 
-struct nfp_rtsym_table *__nfp_rtsym_table_read(struct nfp_cpp *cpp,
-		const struct nfp_mip *mip);
-
 int nfp_rtsym_count(struct nfp_rtsym_table *rtbl);
 
 const struct nfp_rtsym *nfp_rtsym_get(struct nfp_rtsym_table *rtbl, int idx);
@@ -53,8 +20,24 @@ const struct nfp_rtsym *nfp_rtsym_get(struct nfp_rtsym_table *rtbl, int idx);
 const struct nfp_rtsym *nfp_rtsym_lookup(struct nfp_rtsym_table *rtbl,
 		const char *name);
 
+int nfp_rtsym_read(struct nfp_cpp *cpp, const struct nfp_rtsym *sym,
+		uint64_t offset, void *buf, size_t len);
+int nfp_rtsym_readl(struct nfp_cpp *cpp, const struct nfp_rtsym *sym,
+		uint64_t offset, uint32_t *value);
+int nfp_rtsym_readq(struct nfp_cpp *cpp, const struct nfp_rtsym *sym,
+		uint64_t offset, uint64_t *value);
+
+int nfp_rtsym_write(struct nfp_cpp *cpp, const struct nfp_rtsym *sym,
+		uint64_t offset, void *buf, size_t len);
+int nfp_rtsym_writel(struct nfp_cpp *cpp, const struct nfp_rtsym *sym,
+		uint64_t offset, uint32_t value);
+int nfp_rtsym_writeq(struct nfp_cpp *cpp, const struct nfp_rtsym *sym,
+		uint64_t offset, uint64_t value);
+
 uint64_t nfp_rtsym_read_le(struct nfp_rtsym_table *rtbl, const char *name,
 		int *error);
+int nfp_rtsym_write_le(struct nfp_rtsym_table *rtbl, const char *name,
+		uint64_t value);
 uint8_t *nfp_rtsym_map(struct nfp_rtsym_table *rtbl, const char *name,
 		uint32_t min_size, struct nfp_cpp_area **area);
 
-- 
2.39.1


  parent reply	other threads:[~2023-09-18  2:49 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       ` Chaoyong He [this message]
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=20230918024612.1600536-15-chaoyong.he@corigine.com \
    --to=chaoyong.he@corigine.com \
    --cc=dev@dpdk.org \
    --cc=niklas.soderlund@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.