DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: dev@dpdk.org
Cc: "Mattias Rönnblom" <mattias.ronnblom@ericsson.com>,
	"Morten Brørup" <mb@smartsharesystems.com>,
	"Abdullah Sevincer" <abdullah.sevincer@intel.com>,
	"Ajit Khaparde" <ajit.khaparde@broadcom.com>,
	"Alok Prasad" <palok@marvell.com>,
	"Anatoly Burakov" <anatoly.burakov@intel.com>,
	"Andrew Rybchenko" <andrew.rybchenko@oktetlabs.ru>,
	"Anoob Joseph" <anoobj@marvell.com>,
	"Bruce Richardson" <bruce.richardson@intel.com>,
	"Byron Marohn" <byron.marohn@intel.com>,
	"Chenbo Xia" <chenbox@nvidia.com>,
	"Chengwen Feng" <fengchengwen@huawei.com>,
	"Ciara Loftus" <ciara.loftus@intel.com>,
	"Ciara Power" <ciara.power@intel.com>,
	"Dariusz Sosnowski" <dsosnowski@nvidia.com>,
	"David Hunt" <david.hunt@intel.com>,
	"Devendra Singh Rawat" <dsinghrawat@marvell.com>,
	"Erik Gabriel Carrillo" <erik.g.carrillo@intel.com>,
	"Guoyang Zhou" <zhouguoyang@huawei.com>,
	"Harman Kalra" <hkalra@marvell.com>,
	"Harry van Haaren" <harry.van.haaren@intel.com>,
	"Honnappa Nagarahalli" <honnappa.nagarahalli@arm.com>,
	"Jakub Grajciar" <jgrajcia@cisco.com>,
	"Jerin Jacob" <jerinj@marvell.com>,
	"Jeroen de Borst" <jeroendb@google.com>,
	"Jian Wang" <jianwang@trustnetic.com>,
	"Jiawen Wu" <jiawenwu@trustnetic.com>,
	"Jie Hai" <haijie1@huawei.com>,
	"Jingjing Wu" <jingjing.wu@intel.com>,
	"Joshua Washington" <joshwash@google.com>,
	"Joyce Kong" <joyce.kong@arm.com>,
	"Junfeng Guo" <junfeng.guo@intel.com>,
	"Kevin Laatz" <kevin.laatz@intel.com>,
	"Konstantin Ananyev" <konstantin.v.ananyev@yandex.ru>,
	"Liang Ma" <liangma@liangbit.com>,
	"Long Li" <longli@microsoft.com>,
	"Maciej Czekaj" <mczekaj@marvell.com>,
	"Matan Azrad" <matan@nvidia.com>,
	"Maxime Coquelin" <maxime.coquelin@redhat.com>,
	"Nicolas Chautru" <nicolas.chautru@intel.com>,
	"Ori Kam" <orika@nvidia.com>,
	"Pavan Nikhilesh" <pbhagavatula@marvell.com>,
	"Peter Mccarthy" <peter.mccarthy@intel.com>,
	"Rahul Lakkireddy" <rahul.lakkireddy@chelsio.com>,
	"Reshma Pattan" <reshma.pattan@intel.com>,
	"Rosen Xu" <rosen.xu@intel.com>,
	"Ruifeng Wang" <ruifeng.wang@arm.com>,
	"Rushil Gupta" <rushilg@google.com>,
	"Sameh Gobriel" <sameh.gobriel@intel.com>,
	"Sivaprasad Tummala" <sivaprasad.tummala@amd.com>,
	"Somnath Kotur" <somnath.kotur@broadcom.com>,
	"Stephen Hemminger" <stephen@networkplumber.org>,
	"Suanming Mou" <suanmingm@nvidia.com>,
	"Sunil Kumar Kori" <skori@marvell.com>,
	"Sunil Uttarwar" <sunilprakashrao.uttarwar@amd.com>,
	"Tetsuya Mukawa" <mtetsuyah@gmail.com>,
	"Vamsi Attunuru" <vattunuru@marvell.com>,
	"Viacheslav Ovsiienko" <viacheslavo@nvidia.com>,
	"Vladimir Medvedkin" <vladimir.medvedkin@intel.com>,
	"Xiaoyun Wang" <cloud.wangxiaoyun@huawei.com>,
	"Yipeng Wang" <yipeng1.wang@intel.com>,
	"Yisen Zhuang" <yisen.zhuang@huawei.com>,
	"Yuying Zhang" <Yuying.Zhang@intel.com>,
	"Yuying Zhang" <yuying.zhang@intel.com>,
	"Ziyang Xuan" <xuanziyang2@huawei.com>,
	"Tyler Retzlaff" <roretzla@linux.microsoft.com>
Subject: [PATCH v3 12/45] net/cxgbe: use rte stdatomic API
Date: Wed, 27 Mar 2024 15:37:25 -0700	[thread overview]
Message-ID: <1711579078-10624-13-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1711579078-10624-1-git-send-email-roretzla@linux.microsoft.com>

Replace the use of gcc builtin __atomic_xxx intrinsics with
corresponding rte_atomic_xxx optional rte stdatomic API.

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
 drivers/net/cxgbe/clip_tbl.c   | 12 ++++++------
 drivers/net/cxgbe/clip_tbl.h   |  2 +-
 drivers/net/cxgbe/cxgbe_main.c | 20 ++++++++++----------
 drivers/net/cxgbe/cxgbe_ofld.h |  6 +++---
 drivers/net/cxgbe/l2t.c        | 12 ++++++------
 drivers/net/cxgbe/l2t.h        |  2 +-
 drivers/net/cxgbe/mps_tcam.c   | 21 +++++++++++----------
 drivers/net/cxgbe/mps_tcam.h   |  2 +-
 drivers/net/cxgbe/smt.c        | 12 ++++++------
 drivers/net/cxgbe/smt.h        |  2 +-
 10 files changed, 46 insertions(+), 45 deletions(-)

diff --git a/drivers/net/cxgbe/clip_tbl.c b/drivers/net/cxgbe/clip_tbl.c
index b709e26..8588b88 100644
--- a/drivers/net/cxgbe/clip_tbl.c
+++ b/drivers/net/cxgbe/clip_tbl.c
@@ -55,7 +55,7 @@ void cxgbe_clip_release(struct rte_eth_dev *dev, struct clip_entry *ce)
 	int ret;
 
 	t4_os_lock(&ce->lock);
-	if (__atomic_fetch_sub(&ce->refcnt, 1, __ATOMIC_RELAXED) - 1 == 0) {
+	if (rte_atomic_fetch_sub_explicit(&ce->refcnt, 1, rte_memory_order_relaxed) - 1 == 0) {
 		ret = clip6_release_mbox(dev, ce->addr);
 		if (ret)
 			dev_debug(adap, "CLIP FW DEL CMD failed: %d", ret);
@@ -79,7 +79,7 @@ static struct clip_entry *find_or_alloc_clipe(struct clip_tbl *c,
 	unsigned int clipt_size = c->clipt_size;
 
 	for (e = &c->cl_list[0], end = &c->cl_list[clipt_size]; e != end; ++e) {
-		if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) == 0) {
+		if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) == 0) {
 			if (!first_free)
 				first_free = e;
 		} else {
@@ -114,12 +114,12 @@ static struct clip_entry *t4_clip_alloc(struct rte_eth_dev *dev,
 	ce = find_or_alloc_clipe(ctbl, lip);
 	if (ce) {
 		t4_os_lock(&ce->lock);
-		if (__atomic_load_n(&ce->refcnt, __ATOMIC_RELAXED) == 0) {
+		if (rte_atomic_load_explicit(&ce->refcnt, rte_memory_order_relaxed) == 0) {
 			rte_memcpy(ce->addr, lip, sizeof(ce->addr));
 			if (v6) {
 				ce->type = FILTER_TYPE_IPV6;
-				__atomic_store_n(&ce->refcnt, 1,
-						 __ATOMIC_RELAXED);
+				rte_atomic_store_explicit(&ce->refcnt, 1,
+						 rte_memory_order_relaxed);
 				ret = clip6_get_mbox(dev, lip);
 				if (ret)
 					dev_debug(adap,
@@ -129,7 +129,7 @@ static struct clip_entry *t4_clip_alloc(struct rte_eth_dev *dev,
 				ce->type = FILTER_TYPE_IPV4;
 			}
 		} else {
-			__atomic_fetch_add(&ce->refcnt, 1, __ATOMIC_RELAXED);
+			rte_atomic_fetch_add_explicit(&ce->refcnt, 1, rte_memory_order_relaxed);
 		}
 		t4_os_unlock(&ce->lock);
 	}
diff --git a/drivers/net/cxgbe/clip_tbl.h b/drivers/net/cxgbe/clip_tbl.h
index 3b2be66..439fcf6 100644
--- a/drivers/net/cxgbe/clip_tbl.h
+++ b/drivers/net/cxgbe/clip_tbl.h
@@ -13,7 +13,7 @@ struct clip_entry {
 	enum filter_type type;       /* entry type */
 	u32 addr[4];                 /* IPV4 or IPV6 address */
 	rte_spinlock_t lock;         /* entry lock */
-	u32 refcnt;                  /* entry reference count */
+	RTE_ATOMIC(u32) refcnt;                  /* entry reference count */
 };
 
 struct clip_tbl {
diff --git a/drivers/net/cxgbe/cxgbe_main.c b/drivers/net/cxgbe/cxgbe_main.c
index c479454..2ed21f2 100644
--- a/drivers/net/cxgbe/cxgbe_main.c
+++ b/drivers/net/cxgbe/cxgbe_main.c
@@ -418,15 +418,15 @@ void cxgbe_remove_tid(struct tid_info *t, unsigned int chan, unsigned int tid,
 
 	if (t->tid_tab[tid]) {
 		t->tid_tab[tid] = NULL;
-		__atomic_fetch_sub(&t->conns_in_use, 1, __ATOMIC_RELAXED);
+		rte_atomic_fetch_sub_explicit(&t->conns_in_use, 1, rte_memory_order_relaxed);
 		if (t->hash_base && tid >= t->hash_base) {
 			if (family == FILTER_TYPE_IPV4)
-				__atomic_fetch_sub(&t->hash_tids_in_use, 1,
-						   __ATOMIC_RELAXED);
+				rte_atomic_fetch_sub_explicit(&t->hash_tids_in_use, 1,
+						   rte_memory_order_relaxed);
 		} else {
 			if (family == FILTER_TYPE_IPV4)
-				__atomic_fetch_sub(&t->tids_in_use, 1,
-						   __ATOMIC_RELAXED);
+				rte_atomic_fetch_sub_explicit(&t->tids_in_use, 1,
+						   rte_memory_order_relaxed);
 		}
 	}
 
@@ -448,15 +448,15 @@ void cxgbe_insert_tid(struct tid_info *t, void *data, unsigned int tid,
 	t->tid_tab[tid] = data;
 	if (t->hash_base && tid >= t->hash_base) {
 		if (family == FILTER_TYPE_IPV4)
-			__atomic_fetch_add(&t->hash_tids_in_use, 1,
-					   __ATOMIC_RELAXED);
+			rte_atomic_fetch_add_explicit(&t->hash_tids_in_use, 1,
+					   rte_memory_order_relaxed);
 	} else {
 		if (family == FILTER_TYPE_IPV4)
-			__atomic_fetch_add(&t->tids_in_use, 1,
-					   __ATOMIC_RELAXED);
+			rte_atomic_fetch_add_explicit(&t->tids_in_use, 1,
+					   rte_memory_order_relaxed);
 	}
 
-	__atomic_fetch_add(&t->conns_in_use, 1, __ATOMIC_RELAXED);
+	rte_atomic_fetch_add_explicit(&t->conns_in_use, 1, rte_memory_order_relaxed);
 }
 
 /**
diff --git a/drivers/net/cxgbe/cxgbe_ofld.h b/drivers/net/cxgbe/cxgbe_ofld.h
index 33697c7..48a5ec0 100644
--- a/drivers/net/cxgbe/cxgbe_ofld.h
+++ b/drivers/net/cxgbe/cxgbe_ofld.h
@@ -60,10 +60,10 @@ struct tid_info {
 	unsigned int atids_in_use;
 
 	/* TIDs in the TCAM */
-	u32 tids_in_use;
+	RTE_ATOMIC(u32) tids_in_use;
 	/* TIDs in the HASH */
-	u32 hash_tids_in_use;
-	u32 conns_in_use;
+	RTE_ATOMIC(u32) hash_tids_in_use;
+	RTE_ATOMIC(u32) conns_in_use;
 
 	rte_spinlock_t atid_lock __rte_cache_aligned;
 	rte_spinlock_t ftid_lock;
diff --git a/drivers/net/cxgbe/l2t.c b/drivers/net/cxgbe/l2t.c
index 21f4019..ecb5fec 100644
--- a/drivers/net/cxgbe/l2t.c
+++ b/drivers/net/cxgbe/l2t.c
@@ -14,8 +14,8 @@
  */
 void cxgbe_l2t_release(struct l2t_entry *e)
 {
-	if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) != 0)
-		__atomic_fetch_sub(&e->refcnt, 1, __ATOMIC_RELAXED);
+	if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) != 0)
+		rte_atomic_fetch_sub_explicit(&e->refcnt, 1, rte_memory_order_relaxed);
 }
 
 /**
@@ -112,7 +112,7 @@ static struct l2t_entry *find_or_alloc_l2e(struct l2t_data *d, u16 vlan,
 	struct l2t_entry *first_free = NULL;
 
 	for (e = &d->l2tab[0], end = &d->l2tab[d->l2t_size]; e != end; ++e) {
-		if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) == 0) {
+		if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) == 0) {
 			if (!first_free)
 				first_free = e;
 		} else {
@@ -151,18 +151,18 @@ static struct l2t_entry *t4_l2t_alloc_switching(struct rte_eth_dev *dev,
 	e = find_or_alloc_l2e(d, vlan, port, eth_addr);
 	if (e) {
 		t4_os_lock(&e->lock);
-		if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) == 0) {
+		if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) == 0) {
 			e->state = L2T_STATE_SWITCHING;
 			e->vlan = vlan;
 			e->lport = port;
 			rte_memcpy(e->dmac, eth_addr, RTE_ETHER_ADDR_LEN);
-			__atomic_store_n(&e->refcnt, 1, __ATOMIC_RELAXED);
+			rte_atomic_store_explicit(&e->refcnt, 1, rte_memory_order_relaxed);
 			ret = write_l2e(dev, e, 0, !L2T_LPBK, !L2T_ARPMISS);
 			if (ret < 0)
 				dev_debug(adap, "Failed to write L2T entry: %d",
 					  ret);
 		} else {
-			__atomic_fetch_add(&e->refcnt, 1, __ATOMIC_RELAXED);
+			rte_atomic_fetch_add_explicit(&e->refcnt, 1, rte_memory_order_relaxed);
 		}
 		t4_os_unlock(&e->lock);
 	}
diff --git a/drivers/net/cxgbe/l2t.h b/drivers/net/cxgbe/l2t.h
index e4c0ebe..67d0197 100644
--- a/drivers/net/cxgbe/l2t.h
+++ b/drivers/net/cxgbe/l2t.h
@@ -30,7 +30,7 @@ struct l2t_entry {
 	u8  lport;                  /* destination port */
 	u8  dmac[RTE_ETHER_ADDR_LEN];   /* destination MAC address */
 	rte_spinlock_t lock;        /* entry lock */
-	u32 refcnt;                 /* entry reference count */
+	RTE_ATOMIC(u32) refcnt;                 /* entry reference count */
 };
 
 struct l2t_data {
diff --git a/drivers/net/cxgbe/mps_tcam.c b/drivers/net/cxgbe/mps_tcam.c
index 8e0da9c..79a7daa 100644
--- a/drivers/net/cxgbe/mps_tcam.c
+++ b/drivers/net/cxgbe/mps_tcam.c
@@ -76,7 +76,7 @@ int cxgbe_mpstcam_alloc(struct port_info *pi, const u8 *eth_addr,
 	t4_os_write_lock(&mpstcam->lock);
 	entry = cxgbe_mpstcam_lookup(adap->mpstcam, eth_addr, mask);
 	if (entry) {
-		__atomic_fetch_add(&entry->refcnt, 1, __ATOMIC_RELAXED);
+		rte_atomic_fetch_add_explicit(&entry->refcnt, 1, rte_memory_order_relaxed);
 		t4_os_write_unlock(&mpstcam->lock);
 		return entry->idx;
 	}
@@ -98,7 +98,7 @@ int cxgbe_mpstcam_alloc(struct port_info *pi, const u8 *eth_addr,
 	entry = &mpstcam->entry[ret];
 	memcpy(entry->eth_addr, eth_addr, RTE_ETHER_ADDR_LEN);
 	memcpy(entry->mask, mask, RTE_ETHER_ADDR_LEN);
-	__atomic_store_n(&entry->refcnt, 1, __ATOMIC_RELAXED);
+	rte_atomic_store_explicit(&entry->refcnt, 1, rte_memory_order_relaxed);
 	entry->state = MPS_ENTRY_USED;
 
 	if (cxgbe_update_free_idx(mpstcam))
@@ -147,7 +147,7 @@ int cxgbe_mpstcam_modify(struct port_info *pi, int idx, const u8 *addr)
 	 * provided value is -1
 	 */
 	if (entry->state == MPS_ENTRY_UNUSED) {
-		__atomic_store_n(&entry->refcnt, 1, __ATOMIC_RELAXED);
+		rte_atomic_store_explicit(&entry->refcnt, 1, rte_memory_order_relaxed);
 		entry->state = MPS_ENTRY_USED;
 	}
 
@@ -165,7 +165,7 @@ static inline void reset_mpstcam_entry(struct mps_tcam_entry *entry)
 {
 	memset(entry->eth_addr, 0, RTE_ETHER_ADDR_LEN);
 	memset(entry->mask, 0, RTE_ETHER_ADDR_LEN);
-	__atomic_store_n(&entry->refcnt, 0, __ATOMIC_RELAXED);
+	rte_atomic_store_explicit(&entry->refcnt, 0, rte_memory_order_relaxed);
 	entry->state = MPS_ENTRY_UNUSED;
 }
 
@@ -190,12 +190,13 @@ int cxgbe_mpstcam_remove(struct port_info *pi, u16 idx)
 		return -EINVAL;
 	}
 
-	if (__atomic_load_n(&entry->refcnt, __ATOMIC_RELAXED) == 1)
+	if (rte_atomic_load_explicit(&entry->refcnt, rte_memory_order_relaxed) == 1)
 		ret = t4_free_raw_mac_filt(adap, pi->viid, entry->eth_addr,
 					   entry->mask, idx, 1, pi->port_id,
 					   false);
 	else
-		ret = __atomic_fetch_sub(&entry->refcnt, 1, __ATOMIC_RELAXED) - 1;
+		ret = rte_atomic_fetch_sub_explicit(&entry->refcnt, 1,
+		    rte_memory_order_relaxed) - 1;
 
 	if (ret == 0) {
 		reset_mpstcam_entry(entry);
@@ -222,7 +223,7 @@ int cxgbe_mpstcam_rawf_enable(struct port_info *pi)
 	t4_os_write_lock(&t->lock);
 	rawf_idx = adap->params.rawf_start + pi->port_id;
 	entry = &t->entry[rawf_idx];
-	if (__atomic_load_n(&entry->refcnt, __ATOMIC_RELAXED) == 1)
+	if (rte_atomic_load_explicit(&entry->refcnt, rte_memory_order_relaxed) == 1)
 		goto out_unlock;
 
 	ret = t4_alloc_raw_mac_filt(adap, pi->viid, entry->eth_addr,
@@ -231,7 +232,7 @@ int cxgbe_mpstcam_rawf_enable(struct port_info *pi)
 	if (ret < 0)
 		goto out_unlock;
 
-	__atomic_store_n(&entry->refcnt, 1, __ATOMIC_RELAXED);
+	rte_atomic_store_explicit(&entry->refcnt, 1, rte_memory_order_relaxed);
 
 out_unlock:
 	t4_os_write_unlock(&t->lock);
@@ -253,7 +254,7 @@ int cxgbe_mpstcam_rawf_disable(struct port_info *pi)
 	t4_os_write_lock(&t->lock);
 	rawf_idx = adap->params.rawf_start + pi->port_id;
 	entry = &t->entry[rawf_idx];
-	if (__atomic_load_n(&entry->refcnt, __ATOMIC_RELAXED) != 1)
+	if (rte_atomic_load_explicit(&entry->refcnt, rte_memory_order_relaxed) != 1)
 		goto out_unlock;
 
 	ret = t4_free_raw_mac_filt(adap, pi->viid, entry->eth_addr,
@@ -262,7 +263,7 @@ int cxgbe_mpstcam_rawf_disable(struct port_info *pi)
 	if (ret < 0)
 		goto out_unlock;
 
-	__atomic_store_n(&entry->refcnt, 0, __ATOMIC_RELAXED);
+	rte_atomic_store_explicit(&entry->refcnt, 0, rte_memory_order_relaxed);
 
 out_unlock:
 	t4_os_write_unlock(&t->lock);
diff --git a/drivers/net/cxgbe/mps_tcam.h b/drivers/net/cxgbe/mps_tcam.h
index 363786b..4b421f7 100644
--- a/drivers/net/cxgbe/mps_tcam.h
+++ b/drivers/net/cxgbe/mps_tcam.h
@@ -29,7 +29,7 @@ struct mps_tcam_entry {
 	u8 mask[RTE_ETHER_ADDR_LEN];
 
 	struct mpstcam_table *mpstcam; /* backptr */
-	u32 refcnt;
+	RTE_ATOMIC(u32) refcnt;
 };
 
 struct mpstcam_table {
diff --git a/drivers/net/cxgbe/smt.c b/drivers/net/cxgbe/smt.c
index 4e14a73..2f961c1 100644
--- a/drivers/net/cxgbe/smt.c
+++ b/drivers/net/cxgbe/smt.c
@@ -119,7 +119,7 @@ static struct smt_entry *find_or_alloc_smte(struct smt_data *s, u8 *smac)
 	struct smt_entry *e, *end, *first_free = NULL;
 
 	for (e = &s->smtab[0], end = &s->smtab[s->smt_size]; e != end; ++e) {
-		if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) == 0) {
+		if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) == 0) {
 			if (!first_free)
 				first_free = e;
 		} else {
@@ -156,7 +156,7 @@ static struct smt_entry *t4_smt_alloc_switching(struct rte_eth_dev *dev,
 	e = find_or_alloc_smte(s, smac);
 	if (e) {
 		t4_os_lock(&e->lock);
-		if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) == 0) {
+		if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) == 0) {
 			e->pfvf = pfvf;
 			rte_memcpy(e->src_mac, smac, RTE_ETHER_ADDR_LEN);
 			ret = write_smt_entry(dev, e);
@@ -168,9 +168,9 @@ static struct smt_entry *t4_smt_alloc_switching(struct rte_eth_dev *dev,
 				goto out_write_unlock;
 			}
 			e->state = SMT_STATE_SWITCHING;
-			__atomic_store_n(&e->refcnt, 1, __ATOMIC_RELAXED);
+			rte_atomic_store_explicit(&e->refcnt, 1, rte_memory_order_relaxed);
 		} else {
-			__atomic_fetch_add(&e->refcnt, 1, __ATOMIC_RELAXED);
+			rte_atomic_fetch_add_explicit(&e->refcnt, 1, rte_memory_order_relaxed);
 		}
 		t4_os_unlock(&e->lock);
 	}
@@ -195,8 +195,8 @@ struct smt_entry *cxgbe_smt_alloc_switching(struct rte_eth_dev *dev, u8 *smac)
 
 void cxgbe_smt_release(struct smt_entry *e)
 {
-	if (__atomic_load_n(&e->refcnt, __ATOMIC_RELAXED) != 0)
-		__atomic_fetch_sub(&e->refcnt, 1, __ATOMIC_RELAXED);
+	if (rte_atomic_load_explicit(&e->refcnt, rte_memory_order_relaxed) != 0)
+		rte_atomic_fetch_sub_explicit(&e->refcnt, 1, rte_memory_order_relaxed);
 }
 
 /**
diff --git a/drivers/net/cxgbe/smt.h b/drivers/net/cxgbe/smt.h
index 531810e..8b378ae 100644
--- a/drivers/net/cxgbe/smt.h
+++ b/drivers/net/cxgbe/smt.h
@@ -23,7 +23,7 @@ struct smt_entry {
 	u16 pfvf;
 	u16 hw_idx;
 	u8 src_mac[RTE_ETHER_ADDR_LEN];
-	u32 refcnt;
+	RTE_ATOMIC(u32) refcnt;
 	rte_spinlock_t lock;
 };
 
-- 
1.8.3.1


  parent reply	other threads:[~2024-03-27 22:39 UTC|newest]

Thread overview: 200+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-20 20:50 [PATCH 00/46] use " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 01/46] net/mlx5: use rte " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 02/46] net/ixgbe: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 03/46] net/iavf: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 04/46] net/ice: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 05/46] net/i40e: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 06/46] net/hns3: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 07/46] net/bnxt: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 08/46] net/cpfl: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 09/46] net/af_xdp: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 10/46] net/octeon_ep: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 11/46] net/octeontx: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 12/46] net/cxgbe: " Tyler Retzlaff
2024-03-20 20:50 ` [PATCH 13/46] net/gve: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 14/46] net/memif: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 15/46] net/sfc: " Tyler Retzlaff
2024-03-21 18:11   ` Aaron Conole
2024-03-21 18:15     ` Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 16/46] net/thunderx: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 17/46] net/virtio: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 18/46] net/hinic: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 19/46] net/idpf: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 20/46] net/qede: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 21/46] net/ring: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 22/46] vdpa/mlx5: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 23/46] raw/ifpga: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 24/46] event/opdl: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 25/46] event/octeontx: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 26/46] event/dsw: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 27/46] dma/skeleton: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 28/46] crypto/octeontx: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 29/46] common/mlx5: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 30/46] common/idpf: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 31/46] common/iavf: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 32/46] baseband/acc: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 33/46] net/txgbe: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 34/46] net/null: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 35/46] event/dlb2: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 36/46] dma/idxd: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 37/46] crypto/ccp: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 38/46] common/cpt: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 39/46] bus/vmbus: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 40/46] examples: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 41/46] app/dumpcap: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 42/46] app/test: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 43/46] app/test-eventdev: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 44/46] app/test-crypto-perf: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 45/46] app/test-compress-perf: " Tyler Retzlaff
2024-03-20 20:51 ` [PATCH 46/46] app/test-bbdev: " Tyler Retzlaff
2024-03-21 15:33 ` [PATCH 00/46] use " Stephen Hemminger
2024-03-21 16:22   ` Tyler Retzlaff
2024-03-21 19:16 ` [PATCH v2 00/45] " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 01/45] net/mlx5: use rte " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 02/45] net/ixgbe: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 03/45] net/iavf: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 04/45] net/ice: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 05/45] net/i40e: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 06/45] net/hns3: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 07/45] net/bnxt: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 08/45] net/cpfl: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 09/45] net/af_xdp: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 10/45] net/octeon_ep: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 11/45] net/octeontx: " Tyler Retzlaff
2024-03-21 19:16   ` [PATCH v2 12/45] net/cxgbe: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 13/45] net/gve: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 14/45] net/memif: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 15/45] net/thunderx: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 16/45] net/virtio: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 17/45] net/hinic: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 18/45] net/idpf: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 19/45] net/qede: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 20/45] net/ring: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 21/45] vdpa/mlx5: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 22/45] raw/ifpga: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 23/45] event/opdl: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 24/45] event/octeontx: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 25/45] event/dsw: " Tyler Retzlaff
2024-03-21 20:51     ` Mattias Rönnblom
2024-03-21 19:17   ` [PATCH v2 26/45] dma/skeleton: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 27/45] crypto/octeontx: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 28/45] common/mlx5: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 29/45] common/idpf: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 30/45] common/iavf: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 31/45] baseband/acc: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 32/45] net/txgbe: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 33/45] net/null: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 34/45] event/dlb2: " Tyler Retzlaff
2024-03-21 21:03     ` Mattias Rönnblom
2024-04-09 19:31       ` Sevincer, Abdullah
2024-03-21 19:17   ` [PATCH v2 35/45] dma/idxd: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 36/45] crypto/ccp: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 37/45] common/cpt: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 38/45] bus/vmbus: " Tyler Retzlaff
2024-03-21 21:12     ` Mattias Rönnblom
2024-03-21 21:34       ` Long Li
2024-03-22  7:04         ` Mattias Rönnblom
2024-03-22 19:32           ` Long Li
2024-03-22 19:34     ` Long Li
2024-03-25 16:41       ` Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 39/45] examples: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 40/45] app/dumpcap: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 41/45] app/test: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 42/45] app/test-eventdev: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 43/45] app/test-crypto-perf: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 44/45] app/test-compress-perf: " Tyler Retzlaff
2024-03-21 19:17   ` [PATCH v2 45/45] app/test-bbdev: " Tyler Retzlaff
2024-03-27 22:37 ` [PATCH v3 00/45] use " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 01/45] net/mlx5: use rte " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 02/45] net/ixgbe: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 03/45] net/iavf: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 04/45] net/ice: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 05/45] net/i40e: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 06/45] net/hns3: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 07/45] net/bnxt: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 08/45] net/cpfl: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 09/45] net/af_xdp: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 10/45] net/octeon_ep: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 11/45] net/octeontx: " Tyler Retzlaff
2024-03-27 22:37   ` Tyler Retzlaff [this message]
2024-03-27 22:37   ` [PATCH v3 13/45] net/gve: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 14/45] net/memif: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 15/45] net/thunderx: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 16/45] net/virtio: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 17/45] net/hinic: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 18/45] net/idpf: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 19/45] net/qede: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 20/45] net/ring: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 21/45] vdpa/mlx5: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 22/45] raw/ifpga: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 23/45] event/opdl: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 24/45] event/octeontx: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 25/45] event/dsw: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 26/45] dma/skeleton: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 27/45] crypto/octeontx: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 28/45] common/mlx5: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 29/45] common/idpf: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 30/45] common/iavf: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 31/45] baseband/acc: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 32/45] net/txgbe: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 33/45] net/null: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 34/45] event/dlb2: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 35/45] dma/idxd: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 36/45] crypto/ccp: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 37/45] common/cpt: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 38/45] bus/vmbus: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 39/45] examples: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 40/45] app/dumpcap: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 41/45] app/test: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 42/45] app/test-eventdev: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 43/45] app/test-crypto-perf: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 44/45] app/test-compress-perf: " Tyler Retzlaff
2024-03-27 22:37   ` [PATCH v3 45/45] app/test-bbdev: " Tyler Retzlaff
2024-03-29  2:07   ` [PATCH v3 00/45] use " Tyler Retzlaff
2024-04-19 23:05 ` [PATCH v4 " Tyler Retzlaff
2024-04-19 23:05   ` [PATCH v4 01/45] net/mlx5: use rte " Tyler Retzlaff
2024-04-20  8:03     ` Morten Brørup
2024-04-19 23:06   ` [PATCH v4 02/45] net/ixgbe: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 03/45] net/iavf: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 04/45] net/ice: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 05/45] net/i40e: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 06/45] net/hns3: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 07/45] net/bnxt: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 08/45] net/cpfl: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 09/45] net/af_xdp: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 10/45] net/octeon_ep: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 11/45] net/octeontx: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 12/45] net/cxgbe: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 13/45] net/gve: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 14/45] net/memif: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 15/45] net/thunderx: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 16/45] net/virtio: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 17/45] net/hinic: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 18/45] net/idpf: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 19/45] net/qede: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 20/45] net/ring: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 21/45] vdpa/mlx5: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 22/45] raw/ifpga: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 23/45] event/opdl: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 24/45] event/octeontx: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 25/45] event/dsw: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 26/45] dma/skeleton: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 27/45] crypto/octeontx: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 28/45] common/mlx5: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 29/45] common/idpf: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 30/45] common/iavf: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 31/45] baseband/acc: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 32/45] net/txgbe: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 33/45] net/null: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 34/45] event/dlb2: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 35/45] dma/idxd: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 36/45] crypto/ccp: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 37/45] common/cpt: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 38/45] bus/vmbus: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 39/45] examples: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 40/45] app/dumpcap: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 41/45] app/test: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 42/45] app/test-eventdev: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 43/45] app/test-crypto-perf: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 44/45] app/test-compress-perf: " Tyler Retzlaff
2024-04-19 23:06   ` [PATCH v4 45/45] app/test-bbdev: " Tyler Retzlaff

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=1711579078-10624-13-git-send-email-roretzla@linux.microsoft.com \
    --to=roretzla@linux.microsoft.com \
    --cc=Yuying.Zhang@intel.com \
    --cc=abdullah.sevincer@intel.com \
    --cc=ajit.khaparde@broadcom.com \
    --cc=anatoly.burakov@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=anoobj@marvell.com \
    --cc=bruce.richardson@intel.com \
    --cc=byron.marohn@intel.com \
    --cc=chenbox@nvidia.com \
    --cc=ciara.loftus@intel.com \
    --cc=ciara.power@intel.com \
    --cc=cloud.wangxiaoyun@huawei.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=dsinghrawat@marvell.com \
    --cc=dsosnowski@nvidia.com \
    --cc=erik.g.carrillo@intel.com \
    --cc=fengchengwen@huawei.com \
    --cc=haijie1@huawei.com \
    --cc=harry.van.haaren@intel.com \
    --cc=hkalra@marvell.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jerinj@marvell.com \
    --cc=jeroendb@google.com \
    --cc=jgrajcia@cisco.com \
    --cc=jianwang@trustnetic.com \
    --cc=jiawenwu@trustnetic.com \
    --cc=jingjing.wu@intel.com \
    --cc=joshwash@google.com \
    --cc=joyce.kong@arm.com \
    --cc=junfeng.guo@intel.com \
    --cc=kevin.laatz@intel.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=liangma@liangbit.com \
    --cc=longli@microsoft.com \
    --cc=matan@nvidia.com \
    --cc=mattias.ronnblom@ericsson.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mb@smartsharesystems.com \
    --cc=mczekaj@marvell.com \
    --cc=mtetsuyah@gmail.com \
    --cc=nicolas.chautru@intel.com \
    --cc=orika@nvidia.com \
    --cc=palok@marvell.com \
    --cc=pbhagavatula@marvell.com \
    --cc=peter.mccarthy@intel.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=reshma.pattan@intel.com \
    --cc=rosen.xu@intel.com \
    --cc=ruifeng.wang@arm.com \
    --cc=rushilg@google.com \
    --cc=sameh.gobriel@intel.com \
    --cc=sivaprasad.tummala@amd.com \
    --cc=skori@marvell.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=stephen@networkplumber.org \
    --cc=suanmingm@nvidia.com \
    --cc=sunilprakashrao.uttarwar@amd.com \
    --cc=vattunuru@marvell.com \
    --cc=viacheslavo@nvidia.com \
    --cc=vladimir.medvedkin@intel.com \
    --cc=xuanziyang2@huawei.com \
    --cc=yipeng1.wang@intel.com \
    --cc=yisen.zhuang@huawei.com \
    --cc=zhouguoyang@huawei.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).