[dpdk-test-report] |WARNING| pw95583 [PATCH] net/bnxt: fix missing barriers in completion handling

dpdklab at iol.unh.edu dpdklab at iol.unh.edu
Thu Jul 8 21:28:56 CEST 2021


Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/95583

_apply patch failure_

Submitter: Lance Richardson <lance.richardson at broadcom.com>
Date: Thursday, July 08 2021 19:15:01 
Applied on: CommitID:175af25734f295874e31b33ccd0879e69fd152a9
Apply patch set 95583 failed:

Checking patch drivers/net/bnxt/bnxt_cpr.h...
error: while searching for:
#include <stdbool.h>

#include <rte_io.h>

struct bnxt_db_info;

#define CMP_VALID(cmp, raw_cons, ring)					\
	(!!(rte_le_to_cpu_32(((struct cmpl_base *)(cmp))->info3_v) &	\
	    CMPL_BASE_V) == !((raw_cons) & ((ring)->ring_size)))

#define CMP_TYPE(cmp)						\
	(((struct cmpl_base *)cmp)->type & CMPL_BASE_TYPE_MASK)


error: patch failed: drivers/net/bnxt/bnxt_cpr.h:8
Hunk #2 succeeded at 138 (offset 20 lines).
Checking patch drivers/net/bnxt/bnxt_ethdev.c...
Hunk #1 succeeded at 3038 (offset -88 lines).
Hunk #2 succeeded at 3050 (offset -88 lines).
Hunk #3 succeeded at 3158 (offset 12 lines).
Hunk #4 succeeded at 3102 (offset -88 lines).
Hunk #5 succeeded at 3116 (offset -88 lines).
Hunk #6 succeeded at 3133 (offset -88 lines).
Hunk #7 succeeded at 3058 (offset -189 lines).
error: while searching for:
	struct bnxt_tx_queue *txq = (struct bnxt_tx_queue *)tx_queue;
	struct bnxt_cp_ring_info *cpr = txq->cp_ring;
	uint32_t ring_mask, raw_cons, nb_tx_pkts = 0;
	struct bnxt_ring *cp_ring_struct;
	struct cmpl_base *cp_desc_ring;
	int rc;


error: patch failed: drivers/net/bnxt/bnxt_ethdev.c:3299
error: while searching for:

	raw_cons = cpr->cp_raw_cons;
	cp_desc_ring = cpr->cp_desc_ring;
	cp_ring_struct = cpr->cp_ring_struct;
	ring_mask = cpr->cp_ring_struct->ring_mask;

	/* Check to see if hw has posted a completion for the descriptor. */

error: patch failed: drivers/net/bnxt/bnxt_ethdev.c:3316
error: while searching for:
		cons = RING_CMPL(ring_mask, raw_cons);
		txcmp = (struct tx_cmpl *)&cp_desc_ring[cons];

		if (!CMP_VALID(txcmp, raw_cons, cp_ring_struct))
			break;

		if (CMP_TYPE(txcmp) == TX_CMPL_TYPE_TX_L2)

error: patch failed: drivers/net/bnxt/bnxt_ethdev.c:3327
Checking patch drivers/net/bnxt/bnxt_irq.c...
error: while searching for:
{
	struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;
	struct bnxt *bp = eth_dev->data->dev_private;
	struct bnxt_cp_ring_info *cpr;
	struct cmpl_base *cmp;
	uint32_t raw_cons;
	uint32_t cons;

	if (bp == NULL)
		return;

error: patch failed: drivers/net/bnxt/bnxt_irq.c:21
Hunk #2 succeeded at 30 (offset -3 lines).
Hunk #3 succeeded at 46 (offset -3 lines).
Checking patch drivers/net/bnxt/bnxt_rxr.c...
error: while searching for:
	raw_cp_cons = ADV_RAW_CMP(raw_cp_cons, agg_bufs);
	last_cp_cons = RING_CMP(cpr->cp_ring_struct, raw_cp_cons);
	agg_cmpl = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[last_cp_cons];
	return CMP_VALID(agg_cmpl, raw_cp_cons, cpr->cp_ring_struct);
}

/* TPA consume agg buffer out of order, allocate connected data only */

error: patch failed: drivers/net/bnxt/bnxt_rxr.c:297
error: while searching for:
	cp_cons = RING_CMP(cpr->cp_ring_struct, tmp_raw_cons);
	rxcmp1 = (struct rx_pkt_cmpl_hi *)&cpr->cp_desc_ring[cp_cons];

	if (!CMP_VALID(rxcmp1, tmp_raw_cons, cpr->cp_ring_struct))
		return -EBUSY;

	if (cmp_type == RX_TPA_START_CMPL_TYPE_RX_TPA_START ||

error: patch failed: drivers/net/bnxt/bnxt_rxr.c:892
error: while searching for:
		cons = RING_CMP(cpr->cp_ring_struct, raw_cons);
		rxcmp = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[cons];

		if (!CMP_VALID(rxcmp, raw_cons, cpr->cp_ring_struct))
			break;
		if (CMP_TYPE(rxcmp) == CMPL_BASE_TYPE_HWRM_DONE) {
			PMD_DRV_LOG(ERR, "Rx flush done\n");

error: patch failed: drivers/net/bnxt/bnxt_rxr.c:1077
Checking patch drivers/net/bnxt/bnxt_rxtx_vec_avx2.c...
error: drivers/net/bnxt/bnxt_rxtx_vec_avx2.c: does not exist in index
Checking patch drivers/net/bnxt/bnxt_rxtx_vec_neon.c...
Hunk #1 succeeded at 314 (offset -25 lines).
Checking patch drivers/net/bnxt/bnxt_rxtx_vec_sse.c...
Hunk #1 succeeded at 296 (offset -24 lines).
Checking patch drivers/net/bnxt/bnxt_txr.c...
error: while searching for:
		cons = RING_CMPL(ring_mask, raw_cons);
		txcmp = (struct tx_cmpl *)&cpr->cp_desc_ring[cons];

		if (!CMP_VALID(txcmp, raw_cons, cp_ring_struct))
			break;

		opaque = rte_le_to_cpu_32(txcmp->opaque);

error: patch failed: drivers/net/bnxt/bnxt_txr.c:461
Applying patch drivers/net/bnxt/bnxt_cpr.h with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
Applying patch drivers/net/bnxt/bnxt_ethdev.c with 3 rejects...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Hunk #7 applied cleanly.
Rejected hunk #8.
Rejected hunk #9.
Rejected hunk #10.
Applying patch drivers/net/bnxt/bnxt_irq.c with 1 reject...
Rejected hunk #1.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Applying patch drivers/net/bnxt/bnxt_rxr.c with 3 rejects...
Rejected hunk #1.
Rejected hunk #2.
Rejected hunk #3.
Applied patch drivers/net/bnxt/bnxt_rxtx_vec_neon.c cleanly.
Applied patch drivers/net/bnxt/bnxt_rxtx_vec_sse.c cleanly.
Applying patch drivers/net/bnxt/bnxt_txr.c with 1 reject...
Rejected hunk #1.
diff a/drivers/net/bnxt/bnxt_cpr.h b/drivers/net/bnxt/bnxt_cpr.h	(rejected hunks)
@@ -8,13 +8,10 @@
 #include <stdbool.h>
 
 #include <rte_io.h>
+#include "hsi_struct_def_dpdk.h"
 
 struct bnxt_db_info;
 
-#define CMP_VALID(cmp, raw_cons, ring)					\
-	(!!(rte_le_to_cpu_32(((struct cmpl_base *)(cmp))->info3_v) &	\
-	    CMPL_BASE_V) == !((raw_cons) & ((ring)->ring_size)))
-
 #define CMP_TYPE(cmp)						\
 	(((struct cmpl_base *)cmp)->type & CMPL_BASE_TYPE_MASK)
 
diff a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c	(rejected hunks)
@@ -3299,7 +3301,6 @@ bnxt_tx_descriptor_status_op(void *tx_queue, uint16_t offset)
 	struct bnxt_tx_queue *txq = (struct bnxt_tx_queue *)tx_queue;
 	struct bnxt_cp_ring_info *cpr = txq->cp_ring;
 	uint32_t ring_mask, raw_cons, nb_tx_pkts = 0;
-	struct bnxt_ring *cp_ring_struct;
 	struct cmpl_base *cp_desc_ring;
 	int rc;
 
@@ -3316,7 +3317,6 @@ bnxt_tx_descriptor_status_op(void *tx_queue, uint16_t offset)
 
 	raw_cons = cpr->cp_raw_cons;
 	cp_desc_ring = cpr->cp_desc_ring;
-	cp_ring_struct = cpr->cp_ring_struct;
 	ring_mask = cpr->cp_ring_struct->ring_mask;
 
 	/* Check to see if hw has posted a completion for the descriptor. */
@@ -3327,7 +3327,7 @@ bnxt_tx_descriptor_status_op(void *tx_queue, uint16_t offset)
 		cons = RING_CMPL(ring_mask, raw_cons);
 		txcmp = (struct tx_cmpl *)&cp_desc_ring[cons];
 
-		if (!CMP_VALID(txcmp, raw_cons, cp_ring_struct))
+		if (!bnxt_cpr_cmp_valid(txcmp, raw_cons, ring_mask + 1))
 			break;
 
 		if (CMP_TYPE(txcmp) == TX_CMPL_TYPE_TX_L2)
diff a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c	(rejected hunks)
@@ -21,10 +21,10 @@ void bnxt_int_handler(void *param)
 {
 	struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;
 	struct bnxt *bp = eth_dev->data->dev_private;
+	uint32_t cons, raw_cons, cp_ring_size;
 	struct bnxt_cp_ring_info *cpr;
 	struct cmpl_base *cmp;
-	uint32_t raw_cons;
-	uint32_t cons;
+
 
 	if (bp == NULL)
 		return;
diff a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c	(rejected hunks)
@@ -297,7 +297,8 @@ static int bnxt_agg_bufs_valid(struct bnxt_cp_ring_info *cpr,
 	raw_cp_cons = ADV_RAW_CMP(raw_cp_cons, agg_bufs);
 	last_cp_cons = RING_CMP(cpr->cp_ring_struct, raw_cp_cons);
 	agg_cmpl = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[last_cp_cons];
-	return CMP_VALID(agg_cmpl, raw_cp_cons, cpr->cp_ring_struct);
+	return bnxt_cpr_cmp_valid(agg_cmpl, raw_cp_cons,
+				  cpr->cp_ring_struct->ring_size);
 }
 
 /* TPA consume agg buffer out of order, allocate connected data only */
@@ -892,7 +893,8 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt,
 	cp_cons = RING_CMP(cpr->cp_ring_struct, tmp_raw_cons);
 	rxcmp1 = (struct rx_pkt_cmpl_hi *)&cpr->cp_desc_ring[cp_cons];
 
-	if (!CMP_VALID(rxcmp1, tmp_raw_cons, cpr->cp_ring_struct))
+	if (!bnxt_cpr_cmp_valid(rxcmp1, tmp_raw_cons,
+				cpr->cp_ring_struct->ring_size))
 		return -EBUSY;
 
 	if (cmp_type == RX_TPA_START_CMPL_TYPE_RX_TPA_START ||
@@ -1077,7 +1079,8 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 		cons = RING_CMP(cpr->cp_ring_struct, raw_cons);
 		rxcmp = (struct rx_pkt_cmpl *)&cpr->cp_desc_ring[cons];
 
-		if (!CMP_VALID(rxcmp, raw_cons, cpr->cp_ring_struct))
+		if (!bnxt_cpr_cmp_valid(rxcmp, raw_cons,
+					cpr->cp_ring_struct->ring_size))
 			break;
 		if (CMP_TYPE(rxcmp) == CMPL_BASE_TYPE_HWRM_DONE) {
 			PMD_DRV_LOG(ERR, "Rx flush done\n");
diff a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c	(rejected hunks)
@@ -461,7 +461,7 @@ static int bnxt_handle_tx_cp(struct bnxt_tx_queue *txq)
 		cons = RING_CMPL(ring_mask, raw_cons);
 		txcmp = (struct tx_cmpl *)&cpr->cp_desc_ring[cons];
 
-		if (!CMP_VALID(txcmp, raw_cons, cp_ring_struct))
+		if (!bnxt_cpr_cmp_valid(txcmp, raw_cons, ring_mask + 1))
 			break;
 
 		opaque = rte_le_to_cpu_32(txcmp->opaque);

https://lab.dpdk.org/results/dashboard/patchsets/17737/

UNH-IOL DPDK Community Lab


More information about the test-report mailing list