DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev]  [PATCH 0/2] bnxt bug fixes
@ 2020-05-22 17:32 Kalesh A P
  2020-05-22 17:32 ` [dpdk-dev] [PATCH 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
  2020-05-22 17:32 ` [dpdk-dev] [PATCH 2/2] net/bnxt: performance fix for ARM Kalesh A P
  0 siblings, 2 replies; 7+ messages in thread
From: Kalesh A P @ 2020-05-22 17:32 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, ajit.khaparde

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 576 bytes --]

From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>

These are two bug fixes observed during regression testing
with DPDK 20.05-rc3.

Please apply.

Kalesh AP (1):
  net/bnxt: fix the check for validating link speed

Rahul Gupta (1):
  net/bnxt: performance fix for Arm

 drivers/net/bnxt/bnxt.h        |  1 +
 drivers/net/bnxt/bnxt_cpr.h    |  6 +++---
 drivers/net/bnxt/bnxt_ethdev.c |  2 +-
 drivers/net/bnxt/bnxt_hwrm.c   | 14 +++++++++-----
 drivers/net/bnxt/bnxt_ring.h   | 24 +++++++++++++-----------
 5 files changed, 27 insertions(+), 20 deletions(-)

-- 
2.10.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [dpdk-dev]  [PATCH 1/2] net/bnxt: fix the check for validating link speed
  2020-05-22 17:32 [dpdk-dev] [PATCH 0/2] bnxt bug fixes Kalesh A P
@ 2020-05-22 17:32 ` Kalesh A P
  2020-05-22 17:42   ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Kalesh A P
  2020-05-22 17:32 ` [dpdk-dev] [PATCH 2/2] net/bnxt: performance fix for ARM Kalesh A P
  1 sibling, 1 reply; 7+ messages in thread
From: Kalesh A P @ 2020-05-22 17:32 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, ajit.khaparde

From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>

bnxt PMD uses the macro BNXT_SUPPORTED_SPEEDS to validate
the user requested speed. But this has all the speed values
supported by the PMD and is not chip specific.

The check against this macro returns success when the user
tries set the speed to 100G on a port even if the chip does
not support 100G speed.

Fixed it to use bnxt_get_speed_capabilities() to check the
supported speeds by the chip.

Fixes: 1d0704f4d793 ("net/bnxt: add device configure operation")
Cc: stable@dpdk.org

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        |  1 +
 drivers/net/bnxt/bnxt_ethdev.c |  2 +-
 drivers/net/bnxt/bnxt_hwrm.c   | 14 +++++++++-----
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 446764c..2c3aef6 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -780,4 +780,5 @@ void bnxt_cancel_fc_thread(struct bnxt *bp);
 void bnxt_flow_cnt_alarm_cb(void *arg);
 int bnxt_flow_stats_req(struct bnxt *bp);
 int bnxt_flow_stats_cnt(struct bnxt *bp);
+uint32_t bnxt_get_speed_capabilities(struct bnxt *bp);
 #endif
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index ae495da..e635781 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -778,7 +778,7 @@ static int bnxt_shutdown_nic(struct bnxt *bp)
  * Device configuration and status function
  */
 
-static uint32_t bnxt_get_speed_capabilities(struct bnxt *bp)
+uint32_t bnxt_get_speed_capabilities(struct bnxt *bp)
 {
 	uint32_t link_speed = bp->link_info->support_speeds;
 	uint32_t speed_capa = 0;
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index c1798b5..945bc90 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -2788,13 +2788,18 @@ static uint16_t bnxt_parse_eth_link_speed(uint32_t conf_link_speed)
 		ETH_LINK_SPEED_40G | ETH_LINK_SPEED_50G | \
 		ETH_LINK_SPEED_100G | ETH_LINK_SPEED_200G)
 
-static int bnxt_valid_link_speed(uint32_t link_speed, uint16_t port_id)
+static int bnxt_validate_link_speed(struct bnxt *bp)
 {
+	uint32_t link_speed = bp->eth_dev->data->dev_conf.link_speeds;
+	uint16_t port_id = bp->eth_dev->data->port_id;
+	uint32_t link_speed_capa;
 	uint32_t one_speed;
 
 	if (link_speed == ETH_LINK_SPEED_AUTONEG)
 		return 0;
 
+	link_speed_capa = bnxt_get_speed_capabilities(bp);
+
 	if (link_speed & ETH_LINK_SPEED_FIXED) {
 		one_speed = link_speed & ~ETH_LINK_SPEED_FIXED;
 
@@ -2804,14 +2809,14 @@ static int bnxt_valid_link_speed(uint32_t link_speed, uint16_t port_id)
 				link_speed, port_id);
 			return -EINVAL;
 		}
-		if ((one_speed & BNXT_SUPPORTED_SPEEDS) != one_speed) {
+		if ((one_speed & link_speed_capa) != one_speed) {
 			PMD_DRV_LOG(ERR,
 				"Unsupported advertised speed (%u) for port %u\n",
 				link_speed, port_id);
 			return -EINVAL;
 		}
 	} else {
-		if (!(link_speed & BNXT_SUPPORTED_SPEEDS)) {
+		if (!(link_speed & link_speed_capa)) {
 			PMD_DRV_LOG(ERR,
 				"Unsupported advertised speeds (%u) for port %u\n",
 				link_speed, port_id);
@@ -2957,8 +2962,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up)
 	if (!BNXT_SINGLE_PF(bp) || BNXT_VF(bp))
 		return 0;
 
-	rc = bnxt_valid_link_speed(dev_conf->link_speeds,
-			bp->eth_dev->data->port_id);
+	rc = bnxt_validate_link_speed(bp);
 	if (rc)
 		goto error;
 
-- 
2.10.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [dpdk-dev]  [PATCH 2/2] net/bnxt: performance fix for ARM
  2020-05-22 17:32 [dpdk-dev] [PATCH 0/2] bnxt bug fixes Kalesh A P
  2020-05-22 17:32 ` [dpdk-dev] [PATCH 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
@ 2020-05-22 17:32 ` Kalesh A P
  1 sibling, 0 replies; 7+ messages in thread
From: Kalesh A P @ 2020-05-22 17:32 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, ajit.khaparde

From: Rahul Gupta <rahul.gupta@broadcom.com>

Eliminate unnecessary rte_smp_wmb() before writing to request/completion
doorbells. Use rte_cio_wmb() memory barrier instead of rte_io_wmb() before
writing to tx/rx request queue doorbells and use rte_compiler_barrier()
before writing to tx/rx completion queue doorbells.

Fixes: 4af9d0c72941 ("net/bnxt: cleanup NQ doorbell")
Fixes: f8168ca0e690 ("net/bnxt: support thor controller")
Cc: stable@dpdk.org

Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
---
 drivers/net/bnxt/bnxt_cpr.h  |  6 +++---
 drivers/net/bnxt/bnxt_ring.h | 24 +++++++++++++-----------
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_cpr.h b/drivers/net/bnxt/bnxt_cpr.h
index c288078..cccd6cd 100644
--- a/drivers/net/bnxt/bnxt_cpr.h
+++ b/drivers/net/bnxt/bnxt_cpr.h
@@ -64,9 +64,9 @@ struct bnxt_db_info;
 				(cons));				\
 } while (0)
 #define B_CP_DIS_DB(cpr, raw_cons)					\
-	rte_write32((DB_CP_FLAGS |					\
-		    RING_CMP(((cpr)->cp_ring_struct), raw_cons)),	\
-		    ((cpr)->cp_db.doorbell))
+	rte_write32_relaxed((DB_CP_FLAGS |				\
+			    RING_CMP(((cpr)->cp_ring_struct), raw_cons)), \
+			    ((cpr)->cp_db.doorbell))
 
 #define B_CP_DB(cpr, raw_cons, ring_mask)				\
 	rte_write32((DB_CP_FLAGS |					\
diff --git a/drivers/net/bnxt/bnxt_ring.h b/drivers/net/bnxt/bnxt_ring.h
index 48a39d7..9913aed 100644
--- a/drivers/net/bnxt/bnxt_ring.h
+++ b/drivers/net/bnxt/bnxt_ring.h
@@ -82,10 +82,12 @@ void bnxt_free_rxtx_nq_ring(struct bnxt *bp);
 
 static inline void bnxt_db_write(struct bnxt_db_info *db, uint32_t idx)
 {
+	rte_cio_wmb();
+
 	if (db->db_64)
 		rte_write64_relaxed(db->db_key64 | idx, db->doorbell);
 	else
-		rte_write32(db->db_key32 | idx, db->doorbell);
+		rte_write32_relaxed(db->db_key32 | idx, db->doorbell);
 }
 
 /* Ring an NQ doorbell and disable interrupts for the ring. */
@@ -94,10 +96,10 @@ static inline void bnxt_db_nq(struct bnxt_cp_ring_info *cpr)
 	if (unlikely(!cpr->cp_db.db_64))
 		return;
 
-	rte_smp_wmb();
-	rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ |
-		    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
-		    cpr->cp_db.doorbell);
+	rte_cio_wmb();
+	rte_write64_relaxed(cpr->cp_db.db_key64 | DBR_TYPE_NQ |
+			    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
+			    cpr->cp_db.doorbell);
 }
 
 /* Ring an NQ doorbell and enable interrupts for the ring. */
@@ -106,10 +108,10 @@ static inline void bnxt_db_nq_arm(struct bnxt_cp_ring_info *cpr)
 	if (unlikely(!cpr->cp_db.db_64))
 		return;
 
-	rte_smp_wmb();
-	rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM |
-		    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
-		    cpr->cp_db.doorbell);
+	rte_cio_wmb();
+	rte_write64_relaxed(cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM |
+			    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
+			    cpr->cp_db.doorbell);
 }
 
 static inline void bnxt_db_cq(struct bnxt_cp_ring_info *cpr)
@@ -117,9 +119,9 @@ static inline void bnxt_db_cq(struct bnxt_cp_ring_info *cpr)
 	struct bnxt_db_info *db = &cpr->cp_db;
 	uint32_t idx = RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons);
 
-	rte_smp_wmb();
+	rte_compiler_barrier();
 	if (db->db_64)
-		rte_write64(db->db_key64 | idx, db->doorbell);
+		rte_write64_relaxed(db->db_key64 | idx, db->doorbell);
 	else
 		B_CP_DIS_DB(cpr, cpr->cp_raw_cons);
 }
-- 
2.10.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [dpdk-dev]  [PATCH v2 0/2] bnxt fixes
  2020-05-22 17:32 ` [dpdk-dev] [PATCH 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
@ 2020-05-22 17:42   ` Kalesh A P
  2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
                       ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Kalesh A P @ 2020-05-22 17:42 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, ajit.khaparde

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 629 bytes --]

From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>

These are two bug fixes observed during regression testing
with DPDK 20.05-rc3.

Please apply.

V2: fixed commit message and added Reviewed-by tag.

Kalesh AP (1):
  net/bnxt: fix the check for validating link speed

Rahul Gupta (1):
  net/bnxt: performance fix for Arm

 drivers/net/bnxt/bnxt.h        |  1 +
 drivers/net/bnxt/bnxt_cpr.h    |  6 +++---
 drivers/net/bnxt/bnxt_ethdev.c |  2 +-
 drivers/net/bnxt/bnxt_hwrm.c   | 14 +++++++++-----
 drivers/net/bnxt/bnxt_ring.h   | 24 +++++++++++++-----------
 5 files changed, 27 insertions(+), 20 deletions(-)

-- 
2.10.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [dpdk-dev]  [PATCH v2 1/2] net/bnxt: fix the check for validating link speed
  2020-05-22 17:42   ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Kalesh A P
@ 2020-05-22 17:42     ` Kalesh A P
  2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 2/2] net/bnxt: performance fix for Arm Kalesh A P
  2020-05-22 21:22     ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Ajit Khaparde
  2 siblings, 0 replies; 7+ messages in thread
From: Kalesh A P @ 2020-05-22 17:42 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, ajit.khaparde

From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>

bnxt PMD uses the macro BNXT_SUPPORTED_SPEEDS to validate
the user requested speed. But this has all the speed values
supported by the PMD and is not chip specific.

The check against this macro returns success when the user
tries set the speed to 100G on a port even if the chip does
not support 100G speed.

Fixed it to use bnxt_get_speed_capabilities() to check the
supported speeds by the chip.

Fixes: 1d0704f4d793 ("net/bnxt: add device configure operation")
Cc: stable@dpdk.org

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        |  1 +
 drivers/net/bnxt/bnxt_ethdev.c |  2 +-
 drivers/net/bnxt/bnxt_hwrm.c   | 14 +++++++++-----
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 446764c..2c3aef6 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -780,4 +780,5 @@ void bnxt_cancel_fc_thread(struct bnxt *bp);
 void bnxt_flow_cnt_alarm_cb(void *arg);
 int bnxt_flow_stats_req(struct bnxt *bp);
 int bnxt_flow_stats_cnt(struct bnxt *bp);
+uint32_t bnxt_get_speed_capabilities(struct bnxt *bp);
 #endif
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index ae495da..e635781 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -778,7 +778,7 @@ static int bnxt_shutdown_nic(struct bnxt *bp)
  * Device configuration and status function
  */
 
-static uint32_t bnxt_get_speed_capabilities(struct bnxt *bp)
+uint32_t bnxt_get_speed_capabilities(struct bnxt *bp)
 {
 	uint32_t link_speed = bp->link_info->support_speeds;
 	uint32_t speed_capa = 0;
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index c1798b5..945bc90 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -2788,13 +2788,18 @@ static uint16_t bnxt_parse_eth_link_speed(uint32_t conf_link_speed)
 		ETH_LINK_SPEED_40G | ETH_LINK_SPEED_50G | \
 		ETH_LINK_SPEED_100G | ETH_LINK_SPEED_200G)
 
-static int bnxt_valid_link_speed(uint32_t link_speed, uint16_t port_id)
+static int bnxt_validate_link_speed(struct bnxt *bp)
 {
+	uint32_t link_speed = bp->eth_dev->data->dev_conf.link_speeds;
+	uint16_t port_id = bp->eth_dev->data->port_id;
+	uint32_t link_speed_capa;
 	uint32_t one_speed;
 
 	if (link_speed == ETH_LINK_SPEED_AUTONEG)
 		return 0;
 
+	link_speed_capa = bnxt_get_speed_capabilities(bp);
+
 	if (link_speed & ETH_LINK_SPEED_FIXED) {
 		one_speed = link_speed & ~ETH_LINK_SPEED_FIXED;
 
@@ -2804,14 +2809,14 @@ static int bnxt_valid_link_speed(uint32_t link_speed, uint16_t port_id)
 				link_speed, port_id);
 			return -EINVAL;
 		}
-		if ((one_speed & BNXT_SUPPORTED_SPEEDS) != one_speed) {
+		if ((one_speed & link_speed_capa) != one_speed) {
 			PMD_DRV_LOG(ERR,
 				"Unsupported advertised speed (%u) for port %u\n",
 				link_speed, port_id);
 			return -EINVAL;
 		}
 	} else {
-		if (!(link_speed & BNXT_SUPPORTED_SPEEDS)) {
+		if (!(link_speed & link_speed_capa)) {
 			PMD_DRV_LOG(ERR,
 				"Unsupported advertised speeds (%u) for port %u\n",
 				link_speed, port_id);
@@ -2957,8 +2962,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up)
 	if (!BNXT_SINGLE_PF(bp) || BNXT_VF(bp))
 		return 0;
 
-	rc = bnxt_valid_link_speed(dev_conf->link_speeds,
-			bp->eth_dev->data->port_id);
+	rc = bnxt_validate_link_speed(bp);
 	if (rc)
 		goto error;
 
-- 
2.10.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [dpdk-dev]  [PATCH v2 2/2] net/bnxt: performance fix for Arm
  2020-05-22 17:42   ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Kalesh A P
  2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
@ 2020-05-22 17:42     ` Kalesh A P
  2020-05-22 21:22     ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Ajit Khaparde
  2 siblings, 0 replies; 7+ messages in thread
From: Kalesh A P @ 2020-05-22 17:42 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, ajit.khaparde

From: Rahul Gupta <rahul.gupta@broadcom.com>

Eliminate unnecessary rte_smp_wmb() before writing to request/completion
doorbells. Use rte_cio_wmb() memory barrier instead of rte_io_wmb() before
writing to tx/rx request queue doorbells and use rte_compiler_barrier()
before writing to tx/rx completion queue doorbells.

Fixes: 4af9d0c72941 ("net/bnxt: cleanup NQ doorbell")
Fixes: f8168ca0e690 ("net/bnxt: support thor controller")
Cc: stable@dpdk.org

Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
---
 drivers/net/bnxt/bnxt_cpr.h  |  6 +++---
 drivers/net/bnxt/bnxt_ring.h | 24 +++++++++++++-----------
 2 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_cpr.h b/drivers/net/bnxt/bnxt_cpr.h
index c288078..cccd6cd 100644
--- a/drivers/net/bnxt/bnxt_cpr.h
+++ b/drivers/net/bnxt/bnxt_cpr.h
@@ -64,9 +64,9 @@ struct bnxt_db_info;
 				(cons));				\
 } while (0)
 #define B_CP_DIS_DB(cpr, raw_cons)					\
-	rte_write32((DB_CP_FLAGS |					\
-		    RING_CMP(((cpr)->cp_ring_struct), raw_cons)),	\
-		    ((cpr)->cp_db.doorbell))
+	rte_write32_relaxed((DB_CP_FLAGS |				\
+			    RING_CMP(((cpr)->cp_ring_struct), raw_cons)), \
+			    ((cpr)->cp_db.doorbell))
 
 #define B_CP_DB(cpr, raw_cons, ring_mask)				\
 	rte_write32((DB_CP_FLAGS |					\
diff --git a/drivers/net/bnxt/bnxt_ring.h b/drivers/net/bnxt/bnxt_ring.h
index 48a39d7..9913aed 100644
--- a/drivers/net/bnxt/bnxt_ring.h
+++ b/drivers/net/bnxt/bnxt_ring.h
@@ -82,10 +82,12 @@ void bnxt_free_rxtx_nq_ring(struct bnxt *bp);
 
 static inline void bnxt_db_write(struct bnxt_db_info *db, uint32_t idx)
 {
+	rte_cio_wmb();
+
 	if (db->db_64)
 		rte_write64_relaxed(db->db_key64 | idx, db->doorbell);
 	else
-		rte_write32(db->db_key32 | idx, db->doorbell);
+		rte_write32_relaxed(db->db_key32 | idx, db->doorbell);
 }
 
 /* Ring an NQ doorbell and disable interrupts for the ring. */
@@ -94,10 +96,10 @@ static inline void bnxt_db_nq(struct bnxt_cp_ring_info *cpr)
 	if (unlikely(!cpr->cp_db.db_64))
 		return;
 
-	rte_smp_wmb();
-	rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ |
-		    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
-		    cpr->cp_db.doorbell);
+	rte_cio_wmb();
+	rte_write64_relaxed(cpr->cp_db.db_key64 | DBR_TYPE_NQ |
+			    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
+			    cpr->cp_db.doorbell);
 }
 
 /* Ring an NQ doorbell and enable interrupts for the ring. */
@@ -106,10 +108,10 @@ static inline void bnxt_db_nq_arm(struct bnxt_cp_ring_info *cpr)
 	if (unlikely(!cpr->cp_db.db_64))
 		return;
 
-	rte_smp_wmb();
-	rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM |
-		    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
-		    cpr->cp_db.doorbell);
+	rte_cio_wmb();
+	rte_write64_relaxed(cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM |
+			    RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons),
+			    cpr->cp_db.doorbell);
 }
 
 static inline void bnxt_db_cq(struct bnxt_cp_ring_info *cpr)
@@ -117,9 +119,9 @@ static inline void bnxt_db_cq(struct bnxt_cp_ring_info *cpr)
 	struct bnxt_db_info *db = &cpr->cp_db;
 	uint32_t idx = RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons);
 
-	rte_smp_wmb();
+	rte_compiler_barrier();
 	if (db->db_64)
-		rte_write64(db->db_key64 | idx, db->doorbell);
+		rte_write64_relaxed(db->db_key64 | idx, db->doorbell);
 	else
 		B_CP_DIS_DB(cpr, cpr->cp_raw_cons);
 }
-- 
2.10.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/2] bnxt fixes
  2020-05-22 17:42   ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Kalesh A P
  2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
  2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 2/2] net/bnxt: performance fix for Arm Kalesh A P
@ 2020-05-22 21:22     ` Ajit Khaparde
  2 siblings, 0 replies; 7+ messages in thread
From: Ajit Khaparde @ 2020-05-22 21:22 UTC (permalink / raw)
  To: Kalesh A P; +Cc: dpdk-dev, Ferruh Yigit

On Fri, May 22, 2020 at 10:26 AM Kalesh A P <
kalesh-anakkur.purayil@broadcom.com> wrote:

> From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
>
> These are two bug fixes observed during regression testing
> with DPDK 20.05-rc3.
>
> Please apply.
>
Patches applied to dpdk-next-net-brcm. Thanks


>
> V2: fixed commit message and added Reviewed-by tag.
>
> Kalesh AP (1):
>   net/bnxt: fix the check for validating link speed
>
> Rahul Gupta (1):
>   net/bnxt: performance fix for Arm
>
>  drivers/net/bnxt/bnxt.h        |  1 +
>  drivers/net/bnxt/bnxt_cpr.h    |  6 +++---
>  drivers/net/bnxt/bnxt_ethdev.c |  2 +-
>  drivers/net/bnxt/bnxt_hwrm.c   | 14 +++++++++-----
>  drivers/net/bnxt/bnxt_ring.h   | 24 +++++++++++++-----------
>  5 files changed, 27 insertions(+), 20 deletions(-)
>
> --
> 2.10.1
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-05-22 21:22 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-22 17:32 [dpdk-dev] [PATCH 0/2] bnxt bug fixes Kalesh A P
2020-05-22 17:32 ` [dpdk-dev] [PATCH 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
2020-05-22 17:42   ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Kalesh A P
2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 1/2] net/bnxt: fix the check for validating link speed Kalesh A P
2020-05-22 17:42     ` [dpdk-dev] [PATCH v2 2/2] net/bnxt: performance fix for Arm Kalesh A P
2020-05-22 21:22     ` [dpdk-dev] [PATCH v2 0/2] bnxt fixes Ajit Khaparde
2020-05-22 17:32 ` [dpdk-dev] [PATCH 2/2] net/bnxt: performance fix for ARM Kalesh A P

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git