diff --git a/sys/dev/mana/mana.h b/sys/dev/mana/mana.h index ab394f3203a..906b28eb56b 100644 --- a/sys/dev/mana/mana.h +++ b/sys/dev/mana/mana.h @@ -137,6 +137,8 @@ struct mana_stats { counter_u64_t mbuf_alloc_fail; /* rx */ counter_u64_t alt_chg; /* tx */ counter_u64_t alt_reset; /* tx */ + counter_u64_t cqe_err; /* tx */ + counter_u64_t cqe_unknown_type; /* tx */ }; struct mana_txq { diff --git a/sys/dev/mana/mana_en.c b/sys/dev/mana/mana_en.c index 812a42e51df..09de49a1101 100644 --- a/sys/dev/mana/mana_en.c +++ b/sys/dev/mana/mana_en.c @@ -1487,21 +1487,23 @@ mana_poll_tx_cq(struct mana_cq *cq) case CQE_TX_VPORT_DISABLED: case CQE_TX_VLAN_TAGGING_VIOLATION: sa_drop ++; - mana_err(NULL, + mana_dbg(NULL, "TX: txq %d CQE error %d, ntc = %d, " "pending sends = %d: err ignored.\n", txq_idx, cqe_oob->cqe_hdr.cqe_type, next_to_complete, txq->pending_sends); + counter_u64_add(txq->stats.cqe_err, 1); break; default: - /* If the CQE type is unexpected, log an error, - * and go through the error path. + /* If the CQE type is unknown, log a debug msg, + * and still free the mbuf, etc. */ - mana_err(NULL, - "ERROR: TX: Unexpected CQE type %d: HW BUG?\n", + mana_dbg(NULL, + "ERROR: TX: Unknown CQE type %d\n", cqe_oob->cqe_hdr.cqe_type); - return; + counter_u64_add(txq->stats.cqe_unknown_type, 1); + break; } if (txq->gdma_txq_id != completions[i].wq_num) { mana_dbg(NULL, diff --git a/sys/dev/mana/mana_sysctl.c b/sys/dev/mana/mana_sysctl.c index d03ebe44ab3..844a0504059 100644 --- a/sys/dev/mana/mana_sysctl.c +++ b/sys/dev/mana/mana_sysctl.c @@ -292,6 +292,12 @@ mana_sysctl_add_queues(struct mana_port_context *apc) SYSCTL_ADD_COUNTER_U64(ctx, tx_list, OID_AUTO, "alt_reset", CTLFLAG_RD, &tx_stats->alt_reset, "Reset to self txq"); + SYSCTL_ADD_COUNTER_U64(ctx, tx_list, OID_AUTO, + "cqe_err", CTLFLAG_RD, + &tx_stats->cqe_err, "Error CQE count"); + SYSCTL_ADD_COUNTER_U64(ctx, tx_list, OID_AUTO, + "cqe_unknown_type", CTLFLAG_RD, + &tx_stats->cqe_unknown_type, "Unknown CQE count"); /* RX stats */ rx_node = SYSCTL_ADD_NODE(ctx, queue_list, OID_AUTO,