From: dpdklab@iol.unh.edu
To: test-report@dpdk.org
Cc: dpdk-test-reports@iol.unh.edu
Subject: |WARNING| pw122600 [PATCH] net/mlx5: ignore non-critical syndromes for Rx queue
Date: Thu, 26 Jan 2023 22:48:04 -0500 (EST) [thread overview]
Message-ID: <20230127034804.576A545F@noxus.dpdklab.iol.unh.edu> (raw)
[-- Attachment #1: Type: text/plain, Size: 7306 bytes --]
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/122600
_apply patch failure_
Submitter: Alexander Kozyrev <akozyrev@nvidia.com>
Date: Friday, January 27 2023 03:22:43
Applied on: CommitID:2a211079a92e962bbd0ec81e425a6ffc32890e67
Apply patch set 122600 failed:
Checking patch drivers/net/mlx5/mlx5_rx.c...
error: while searching for:
* Number of CQEs to check for an error.
*
* @return
* MLX5_RECOVERY_ERROR_RET in case of recovery error, otherwise the CQE status.
*/
int
mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec, uint16_t err_n)
{
const uint16_t cqe_n = 1 << rxq->cqe_n;
const uint16_t cqe_mask = cqe_n - 1;
error: patch failed: drivers/net/mlx5/mlx5_rx.c:429
error: while searching for:
.cqe = &(*rxq->cqes)[(rxq->cq_ci - vec) & cqe_mask],
};
struct mlx5_mp_arg_queue_state_modify sm;
int ret, i;
switch (rxq->err_state) {
case MLX5_RXQ_ERR_STATE_NO_ERROR:
for (i = 0; i < (int)err_n; i++) {
u.cqe = &(*rxq->cqes)[(rxq->cq_ci - vec - i) & cqe_mask];
if (MLX5_CQE_OPCODE(u.cqe->op_own) == MLX5_CQE_RESP_ERR)
break;
}
rxq->err_state = MLX5_RXQ_ERR_STATE_NEED_RESET;
/* Fall-through */
error: patch failed: drivers/net/mlx5/mlx5_rx.c:447
Hunk #5 succeeded at 545 (offset -31 lines).
Hunk #6 succeeded at 565 (offset -31 lines).
Hunk #7 succeeded at 631 (offset -31 lines).
error: while searching for:
if (unlikely(ret != MLX5_CQE_STATUS_SW_OWN)) {
if (unlikely(ret == MLX5_CQE_STATUS_ERR ||
rxq->err_state)) {
ret = mlx5_rx_err_handle(rxq, 0, 1);
if (ret == MLX5_CQE_STATUS_HW_OWN ||
ret == MLX5_RECOVERY_ERROR_RET)
return MLX5_ERROR_CQE_RET;
} else {
return 0;
}
error: patch failed: drivers/net/mlx5/mlx5_rx.c:634
Hunk #9 succeeded at 694 (offset -33 lines).
Hunk #10 succeeded at 854 (offset -33 lines).
Hunk #11 succeeded at 893 (offset -33 lines).
Hunk #12 succeeded at 1120 (offset -33 lines).
Hunk #13 succeeded at 1133 (offset -33 lines).
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: while searching for:
uint16_t mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n);
void mlx5_rxq_initialize(struct mlx5_rxq_data *rxq);
__rte_noinline int mlx5_rx_err_handle(struct mlx5_rxq_data *rxq,
uint8_t vec, uint16_t err_n);
void mlx5_mprq_buf_free(struct mlx5_mprq_buf *buf);
uint16_t mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts,
uint16_t pkts_n);
error: patch failed: drivers/net/mlx5/mlx5_rx.h:286
Checking patch drivers/net/mlx5/mlx5_rxtx_vec.c...
error: while searching for:
rxq->stats.ipackets -= (pkts_n - n);
rxq->stats.ibytes -= err_bytes;
#endif
mlx5_rx_err_handle(rxq, 1, pkts_n);
return n;
}
error: patch failed: drivers/net/mlx5/mlx5_rxtx_vec.c:74
Applying patch drivers/net/mlx5/mlx5_rx.c with 3 rejects...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Rejected hunk #3.
Rejected hunk #4.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Hunk #7 applied cleanly.
Rejected hunk #8.
Hunk #9 applied cleanly.
Hunk #10 applied cleanly.
Hunk #11 applied cleanly.
Hunk #12 applied cleanly.
Hunk #13 applied cleanly.
Applying patch drivers/net/mlx5/mlx5_rx.h with 1 reject...
Hunk #1 applied cleanly.
Rejected hunk #2.
Applying patch drivers/net/mlx5/mlx5_rxtx_vec.c with 1 reject...
Hunk #1 applied cleanly.
Rejected hunk #2.
diff a/drivers/net/mlx5/mlx5_rx.c b/drivers/net/mlx5/mlx5_rx.c (rejected hunks)
@@ -429,10 +434,14 @@ mlx5_rxq_initialize(struct mlx5_rxq_data *rxq)
* Number of CQEs to check for an error.
*
* @return
- * MLX5_RECOVERY_ERROR_RET in case of recovery error, otherwise the CQE status.
+ * MLX5_RECOVERY_ERROR_RET in case of recovery error,
+ * MLX5_RECOVERY_IGNORE_RET in case of non-critical error syndrome,
+ * MLX5_RECOVERY_COMPLETED_RET in case of recovery is completed,
+ * otherwise the CQE status after ignored error syndrome or queue reset.
*/
int
-mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec, uint16_t err_n)
+mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
+ uint16_t err_n, uint16_t *skip_cnt)
{
const uint16_t cqe_n = 1 << rxq->cqe_n;
const uint16_t cqe_mask = cqe_n - 1;
@@ -447,14 +456,35 @@ mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec, uint16_t err_n)
.cqe = &(*rxq->cqes)[(rxq->cq_ci - vec) & cqe_mask],
};
struct mlx5_mp_arg_queue_state_modify sm;
+ bool critical_syndrome = false;
int ret, i;
switch (rxq->err_state) {
+ case MLX5_RXQ_ERR_STATE_IGNORE:
+ ret = check_cqe(u.cqe, cqe_n, rxq->cq_ci - vec);
+ if (ret != MLX5_CQE_STATUS_ERR) {
+ rxq->err_state = MLX5_RXQ_ERR_STATE_NO_ERROR;
+ return ret;
+ }
+ /* Fall-through */
case MLX5_RXQ_ERR_STATE_NO_ERROR:
for (i = 0; i < (int)err_n; i++) {
u.cqe = &(*rxq->cqes)[(rxq->cq_ci - vec - i) & cqe_mask];
- if (MLX5_CQE_OPCODE(u.cqe->op_own) == MLX5_CQE_RESP_ERR)
+ if (MLX5_CQE_OPCODE(u.cqe->op_own) == MLX5_CQE_RESP_ERR) {
+ if (u.err_cqe->syndrome == MLX5_CQE_SYNDROME_LOCAL_QP_OP_ERR ||
+ u.err_cqe->syndrome == MLX5_CQE_SYNDROME_LOCAL_PROT_ERR ||
+ u.err_cqe->syndrome == MLX5_CQE_SYNDROME_WR_FLUSH_ERR)
+ critical_syndrome = true;
break;
+ }
+ }
+ if (!critical_syndrome) {
+ if (rxq->err_state == MLX5_RXQ_ERR_STATE_NO_ERROR) {
+ *skip_cnt = 0;
+ if (i == err_n)
+ rxq->err_state = MLX5_RXQ_ERR_STATE_IGNORE;
+ }
+ return MLX5_RECOVERY_IGNORE_RET;
}
rxq->err_state = MLX5_RXQ_ERR_STATE_NEED_RESET;
/* Fall-through */
@@ -634,10 +669,12 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cqe,
if (unlikely(ret != MLX5_CQE_STATUS_SW_OWN)) {
if (unlikely(ret == MLX5_CQE_STATUS_ERR ||
rxq->err_state)) {
- ret = mlx5_rx_err_handle(rxq, 0, 1);
- if (ret == MLX5_CQE_STATUS_HW_OWN ||
- ret == MLX5_RECOVERY_ERROR_RET)
- return MLX5_ERROR_CQE_RET;
+ ret = mlx5_rx_err_handle(rxq, 0, 1, skip_cnt);
+ if (ret == MLX5_CQE_STATUS_HW_OWN)
+ return MLX5_ERROR_CQE_MASK;
+ if (ret == MLX5_RECOVERY_ERROR_RET ||
+ ret == MLX5_RECOVERY_COMPLETED_RET)
+ return MLX5_CRITICAL_ERROR_CQE_RET;
} else {
return 0;
}
diff a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h (rejected hunks)
@@ -286,8 +287,8 @@ int mlx5_hrxq_modify(struct rte_eth_dev *dev, uint32_t hxrq_idx,
uint16_t mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n);
void mlx5_rxq_initialize(struct mlx5_rxq_data *rxq);
-__rte_noinline int mlx5_rx_err_handle(struct mlx5_rxq_data *rxq,
- uint8_t vec, uint16_t err_n);
+__rte_noinline int mlx5_rx_err_handle(struct mlx5_rxq_data *rxq, uint8_t vec,
+ uint16_t err_n, uint16_t *skip_cnt);
void mlx5_mprq_buf_free(struct mlx5_mprq_buf *buf);
uint16_t mlx5_rx_burst_mprq(void *dpdk_rxq, struct rte_mbuf **pkts,
uint16_t pkts_n);
diff a/drivers/net/mlx5/mlx5_rxtx_vec.c b/drivers/net/mlx5/mlx5_rxtx_vec.c (rejected hunks)
@@ -74,7 +75,7 @@ rxq_handle_pending_error(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts,
rxq->stats.ipackets -= (pkts_n - n);
rxq->stats.ibytes -= err_bytes;
#endif
- mlx5_rx_err_handle(rxq, 1, pkts_n);
+ mlx5_rx_err_handle(rxq, 1, pkts_n, &skip_cnt);
return n;
}
https://lab.dpdk.org/results/dashboard/patchsets/25096/
UNH-IOL DPDK Community Lab
next reply other threads:[~2023-01-27 3:48 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-27 3:48 dpdklab [this message]
[not found] <20230127032243.3990099-1-akozyrev@nvidia.com>
2023-01-27 3:25 ` qemudev
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=20230127034804.576A545F@noxus.dpdklab.iol.unh.edu \
--to=dpdklab@iol.unh.edu \
--cc=dpdk-test-reports@iol.unh.edu \
--cc=test-report@dpdk.org \
/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).