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 19/26] net/nfp: refact the mutex module
Date: Tue, 19 Sep 2023 17:54:33 +0800 [thread overview]
Message-ID: <20230919095440.45445-20-chaoyong.he@corigine.com> (raw)
In-Reply-To: <20230919095440.45445-1-chaoyong.he@corigine.com>
Add a header file to holds the API declarations of this module.
Also sync the logic from kernel driver and remove the unneeded header
file include statements.
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
---
drivers/net/nfp/nfpcore/nfp_cpp.h | 16 --
drivers/net/nfp/nfpcore/nfp_mutex.c | 205 ++++++++++++++-----------
drivers/net/nfp/nfpcore/nfp_mutex.h | 25 +++
drivers/net/nfp/nfpcore/nfp_resource.c | 1 +
4 files changed, 138 insertions(+), 109 deletions(-)
create mode 100644 drivers/net/nfp/nfpcore/nfp_mutex.h
diff --git a/drivers/net/nfp/nfpcore/nfp_cpp.h b/drivers/net/nfp/nfpcore/nfp_cpp.h
index be7ae1d919..42c4df5fdd 100644
--- a/drivers/net/nfp/nfpcore/nfp_cpp.h
+++ b/drivers/net/nfp/nfpcore/nfp_cpp.h
@@ -8,8 +8,6 @@
#include <ethdev_pci.h>
-struct nfp_cpp_mutex;
-
/* NFP CPP handle */
struct nfp_cpp {
uint32_t model;
@@ -426,20 +424,6 @@ int nfp_cpp_readq(struct nfp_cpp *cpp, uint32_t cpp_id,
int nfp_cpp_writeq(struct nfp_cpp *cpp, uint32_t cpp_id,
uint64_t address, uint64_t value);
-int nfp_cpp_mutex_init(struct nfp_cpp *cpp, int target,
- uint64_t address, uint32_t key_id);
-
-struct nfp_cpp_mutex *nfp_cpp_mutex_alloc(struct nfp_cpp *cpp, int target,
- uint64_t address, uint32_t key_id);
-
-void nfp_cpp_mutex_free(struct nfp_cpp_mutex *mutex);
-
-int nfp_cpp_mutex_lock(struct nfp_cpp_mutex *mutex);
-
-int nfp_cpp_mutex_unlock(struct nfp_cpp_mutex *mutex);
-
-int nfp_cpp_mutex_trylock(struct nfp_cpp_mutex *mutex);
-
uint32_t nfp_cpp_mu_locality_lsb(struct nfp_cpp *cpp);
#endif /* __NFP_CPP_H__ */
diff --git a/drivers/net/nfp/nfpcore/nfp_mutex.c b/drivers/net/nfp/nfpcore/nfp_mutex.c
index 96ba60697c..3c10c7a090 100644
--- a/drivers/net/nfp/nfpcore/nfp_mutex.c
+++ b/drivers/net/nfp/nfpcore/nfp_mutex.c
@@ -3,21 +3,13 @@
* All rights reserved.
*/
-#include <malloc.h>
-#include <time.h>
+#include "nfp_mutex.h"
+
#include <sched.h>
-#include "nfp_cpp.h"
#include "nfp_logs.h"
#include "nfp_target.h"
-#define MUTEX_LOCKED(interface) ((((uint32_t)(interface)) << 16) | 0x000f)
-#define MUTEX_UNLOCK(interface) (0 | 0x0000)
-
-#define MUTEX_IS_LOCKED(value) (((value) & 0xffff) == 0x000f)
-#define MUTEX_IS_UNLOCKED(value) (((value) & 0xffff) == 0x0000)
-#define MUTEX_INTERFACE(value) (((value) >> 16) & 0xffff)
-
/*
* If you need more than 65536 recursive locks, please
* rethink your code.
@@ -34,21 +26,51 @@ struct nfp_cpp_mutex {
struct nfp_cpp_mutex *prev, *next;
};
+static inline uint32_t
+nfp_mutex_locked(uint16_t interface)
+{
+ return (uint32_t)interface << 16 | 0x000f;
+}
+
+static inline uint32_t
+nfp_mutex_unlocked(uint16_t interface)
+{
+ return (uint32_t)interface << 16 | 0x0000;
+}
+
+static inline uint16_t
+nfp_mutex_owner(uint32_t val)
+{
+ return (val >> 16) & 0xffff;
+}
+
+static inline bool
+nfp_mutex_is_locked(uint32_t val)
+{
+ return (val & 0xffff) == 0x000f;
+}
+
+static inline bool
+nfp_mutex_is_unlocked(uint32_t val)
+{
+ return (val & 0xffff) == 0;
+}
+
static int
-nfp_cpp_mutex_validate(uint32_t model,
+nfp_cpp_mutex_validate(uint16_t interface,
int *target,
uint64_t address)
{
+ /* Not permitted on invalid interfaces */
+ if (NFP_CPP_INTERFACE_TYPE_of(interface) == NFP_CPP_INTERFACE_TYPE_INVALID)
+ return -EINVAL;
+
/* Address must be 64-bit aligned */
if ((address & 7) != 0)
return -EINVAL;
- if (NFP_CPP_MODEL_IS_6000(model)) {
- if (*target != NFP_CPP_TARGET_MU)
- return -EINVAL;
- } else {
+ if (*target != NFP_CPP_TARGET_MU)
return -EINVAL;
- }
return 0;
}
@@ -84,10 +106,10 @@ nfp_cpp_mutex_init(struct nfp_cpp *cpp,
uint32_t key)
{
int err;
- uint32_t model = nfp_cpp_model(cpp);
uint32_t muw = NFP_CPP_ID(target, 4, 0); /* atomic_write */
+ uint16_t interface = nfp_cpp_interface(cpp);
- err = nfp_cpp_mutex_validate(model, &target, address);
+ err = nfp_cpp_mutex_validate(interface, &target, address);
if (err < 0)
return err;
@@ -95,8 +117,7 @@ nfp_cpp_mutex_init(struct nfp_cpp *cpp,
if (err < 0)
return err;
- err = nfp_cpp_writel(cpp, muw, address + 0,
- MUTEX_LOCKED(nfp_cpp_interface(cpp)));
+ err = nfp_cpp_writel(cpp, muw, address, nfp_mutex_locked(interface));
if (err < 0)
return err;
@@ -133,26 +154,10 @@ nfp_cpp_mutex_alloc(struct nfp_cpp *cpp,
int err;
uint32_t tmp;
struct nfp_cpp_mutex *mutex;
- uint32_t model = nfp_cpp_model(cpp);
uint32_t mur = NFP_CPP_ID(target, 3, 0); /* atomic_read */
+ uint16_t interface = nfp_cpp_interface(cpp);
- /* Look for cached mutex */
- for (mutex = cpp->mutex_cache; mutex; mutex = mutex->next) {
- if (mutex->target == target && mutex->address == address)
- break;
- }
-
- if (mutex) {
- if (mutex->key == key) {
- mutex->usage++;
- return mutex;
- }
-
- /* If the key doesn't match... */
- return NULL;
- }
-
- err = nfp_cpp_mutex_validate(model, &target, address);
+ err = nfp_cpp_mutex_validate(interface, &target, address);
if (err < 0)
return NULL;
@@ -172,16 +177,6 @@ nfp_cpp_mutex_alloc(struct nfp_cpp *cpp,
mutex->address = address;
mutex->key = key;
mutex->depth = 0;
- mutex->usage = 1;
-
- /* Add mutex to the cache */
- if (cpp->mutex_cache) {
- cpp->mutex_cache->prev = mutex;
- mutex->next = cpp->mutex_cache;
- cpp->mutex_cache = mutex;
- } else {
- cpp->mutex_cache = mutex;
- }
return mutex;
}
@@ -195,20 +190,6 @@ nfp_cpp_mutex_alloc(struct nfp_cpp *cpp,
void
nfp_cpp_mutex_free(struct nfp_cpp_mutex *mutex)
{
- mutex->usage--;
- if (mutex->usage > 0)
- return;
-
- /* Remove mutex from the cache */
- if (mutex->next)
- mutex->next->prev = mutex->prev;
- if (mutex->prev)
- mutex->prev->next = mutex->next;
-
- /* If mutex->cpp == NULL, something broke */
- if (mutex->cpp && mutex == mutex->cpp->mutex_cache)
- mutex->cpp->mutex_cache = mutex->next;
-
free(mutex);
}
@@ -268,32 +249,28 @@ nfp_cpp_mutex_unlock(struct nfp_cpp_mutex *mutex)
return 0;
}
- err = nfp_cpp_readl(mutex->cpp, mur, mutex->address, &value);
- if (err < 0)
- goto exit;
-
err = nfp_cpp_readl(mutex->cpp, mur, mutex->address + 4, &key);
if (err < 0)
- goto exit;
+ return err;
- if (key != mutex->key) {
- err = -EPERM;
- goto exit;
- }
+ if (key != mutex->key)
+ return -EPERM;
- if (value != MUTEX_LOCKED(interface)) {
- err = -EACCES;
- goto exit;
- }
+ err = nfp_cpp_readl(mutex->cpp, mur, mutex->address, &value);
+ if (err < 0)
+ return err;
+
+ if (value != nfp_mutex_locked(interface))
+ return -EACCES;
- err = nfp_cpp_writel(cpp, muw, mutex->address, MUTEX_UNLOCK(interface));
+ err = nfp_cpp_writel(cpp, muw, mutex->address,
+ nfp_mutex_unlocked(interface));
if (err < 0)
- goto exit;
+ return err;
mutex->depth = 0;
-exit:
- return err;
+ return 0;
}
/**
@@ -332,19 +309,17 @@ nfp_cpp_mutex_trylock(struct nfp_cpp_mutex *mutex)
/* Verify that the lock marker is not damaged */
err = nfp_cpp_readl(cpp, mur, mutex->address + 4, &key);
if (err < 0)
- goto exit;
+ return err;
- if (key != mutex->key) {
- err = -EPERM;
- goto exit;
- }
+ if (key != mutex->key)
+ return -EPERM;
/*
* Compare against the unlocked state, and if true,
* write the interface id into the top 16 bits, and
* mark as locked.
*/
- value = MUTEX_LOCKED(nfp_cpp_interface(cpp));
+ value = nfp_mutex_locked(nfp_cpp_interface(cpp));
/*
* We use test_set_imm here, as it implies a read
@@ -361,10 +336,10 @@ nfp_cpp_mutex_trylock(struct nfp_cpp_mutex *mutex)
*/
err = nfp_cpp_readl(cpp, mus, mutex->address, &tmp);
if (err < 0)
- goto exit;
+ return err;
/* Was it unlocked? */
- if (MUTEX_IS_UNLOCKED(tmp)) {
+ if (nfp_mutex_is_unlocked(tmp)) {
/*
* The read value can only be 0x....0000 in the unlocked state.
* If there was another contending for this lock, then
@@ -376,20 +351,64 @@ nfp_cpp_mutex_trylock(struct nfp_cpp_mutex *mutex)
*/
err = nfp_cpp_writel(cpp, muw, mutex->address, value);
if (err < 0)
- goto exit;
+ return err;
mutex->depth = 1;
- goto exit;
+ return 0;
}
/* Already locked by us? Success! */
if (tmp == value) {
mutex->depth = 1;
- goto exit;
+ return 0;
}
- err = MUTEX_IS_LOCKED(tmp) ? -EBUSY : -EINVAL;
+ return nfp_mutex_is_locked(tmp) ? -EBUSY : -EINVAL;
+}
+
+/**
+ * Release lock if held by local system.
+ * Extreme care is advised, call only when no local lock users can exist.
+ *
+ * @param cpp
+ * NFP CPP handle
+ * @param target
+ * NFP CPP target ID (ie NFP_CPP_TARGET_CLS or NFP_CPP_TARGET_MU)
+ * @param address
+ * Offset into the address space of the NFP CPP target ID
+ *
+ * @return
+ * - (0) if the lock was OK
+ * - (1) if locked by us
+ * - (-errno) on invalid mutex
+ */
+int
+nfp_cpp_mutex_reclaim(struct nfp_cpp *cpp,
+ int target,
+ uint64_t address)
+{
+ int err;
+ uint32_t tmp;
+ uint16_t interface = nfp_cpp_interface(cpp);
+ const uint32_t mur = NFP_CPP_ID(target, 3, 0); /* atomic_read */
+ const uint32_t muw = NFP_CPP_ID(target, 4, 0); /* atomic_write */
+
+ err = nfp_cpp_mutex_validate(interface, &target, address);
+ if (err != 0)
+ return err;
+
+ /* Check lock */
+ err = nfp_cpp_readl(cpp, mur, address, &tmp);
+ if (err < 0)
+ return err;
+
+ if (nfp_mutex_is_unlocked(tmp) || nfp_mutex_owner(tmp) != interface)
+ return 0;
+
+ /* Bust the lock */
+ err = nfp_cpp_writel(cpp, muw, address, nfp_mutex_unlocked(interface));
+ if (err < 0)
+ return err;
-exit:
- return err;
+ return 1;
}
diff --git a/drivers/net/nfp/nfpcore/nfp_mutex.h b/drivers/net/nfp/nfpcore/nfp_mutex.h
new file mode 100644
index 0000000000..a79490b4d6
--- /dev/null
+++ b/drivers/net/nfp/nfpcore/nfp_mutex.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2023 Corigine, Inc.
+ * All rights reserved.
+ */
+
+#ifndef __NFP_MUTEX_H__
+#define __NFP_MUTEX_H__
+
+#include "nfp_cpp.h"
+
+struct nfp_cpp_mutex;
+
+int nfp_cpp_mutex_init(struct nfp_cpp *cpp, int target,
+ uint64_t address, uint32_t key_id);
+
+struct nfp_cpp_mutex *nfp_cpp_mutex_alloc(struct nfp_cpp *cpp, int target,
+ uint64_t address, uint32_t key_id);
+
+void nfp_cpp_mutex_free(struct nfp_cpp_mutex *mutex);
+int nfp_cpp_mutex_lock(struct nfp_cpp_mutex *mutex);
+int nfp_cpp_mutex_unlock(struct nfp_cpp_mutex *mutex);
+int nfp_cpp_mutex_trylock(struct nfp_cpp_mutex *mutex);
+int nfp_cpp_mutex_reclaim(struct nfp_cpp *cpp, int target, uint64_t address);
+
+#endif /* __NFP_MUTEX_H__ */
diff --git a/drivers/net/nfp/nfpcore/nfp_resource.c b/drivers/net/nfp/nfpcore/nfp_resource.c
index 539eb69680..d59d2d6c1e 100644
--- a/drivers/net/nfp/nfpcore/nfp_resource.c
+++ b/drivers/net/nfp/nfpcore/nfp_resource.c
@@ -7,6 +7,7 @@
#include "nfp_crc.h"
#include "nfp_logs.h"
+#include "nfp_mutex.h"
#include "nfp_target.h"
#define NFP_RESOURCE_TBL_TARGET NFP_CPP_TARGET_MU
--
2.39.1
next prev parent reply other threads:[~2023-09-19 9:57 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 ` Chaoyong He [this message]
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=20230919095440.45445-20-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).