mirror of
https://github.com/opnsense/src.git
synced 2026-02-20 00:11:07 -05:00
ena: Add missing statistics
Provide the following sysctl statistics in order to stay aligned with the Linux driver: * rx_ring.csum_good * tx_ring.unmask_interrupt_num Also rename the 'bad_csum' statistic name to 'csum_bad' for alignment. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc.
This commit is contained in:
parent
07aff471c0
commit
223c8cb12e
4 changed files with 19 additions and 5 deletions
|
|
@ -1874,6 +1874,7 @@ ena_unmask_all_io_irqs(struct ena_adapter *adapter)
|
|||
{
|
||||
struct ena_com_io_cq* io_cq;
|
||||
struct ena_eth_io_intr_reg intr_reg;
|
||||
struct ena_ring *tx_ring;
|
||||
uint16_t ena_qid;
|
||||
int i;
|
||||
|
||||
|
|
@ -1882,6 +1883,8 @@ ena_unmask_all_io_irqs(struct ena_adapter *adapter)
|
|||
ena_qid = ENA_IO_TXQ_IDX(i);
|
||||
io_cq = &adapter->ena_dev->io_cq_queues[ena_qid];
|
||||
ena_com_update_intr_reg(&intr_reg, 0, 0, true);
|
||||
tx_ring = &adapter->tx_ring[i];
|
||||
counter_u64_add(tx_ring->tx_stats.unmask_interrupt_num, 1);
|
||||
ena_com_unmask_intr(io_cq, &intr_reg);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -280,19 +280,21 @@ struct ena_stats_tx {
|
|||
counter_u64_t queue_wakeup;
|
||||
counter_u64_t queue_stop;
|
||||
counter_u64_t llq_buffer_copy;
|
||||
counter_u64_t unmask_interrupt_num;
|
||||
};
|
||||
|
||||
struct ena_stats_rx {
|
||||
counter_u64_t cnt;
|
||||
counter_u64_t bytes;
|
||||
counter_u64_t refil_partial;
|
||||
counter_u64_t bad_csum;
|
||||
counter_u64_t csum_bad;
|
||||
counter_u64_t mjum_alloc_fail;
|
||||
counter_u64_t mbuf_alloc_fail;
|
||||
counter_u64_t dma_mapping_err;
|
||||
counter_u64_t bad_desc_num;
|
||||
counter_u64_t bad_req_id;
|
||||
counter_u64_t empty_rx_ring;
|
||||
counter_u64_t csum_good;
|
||||
};
|
||||
|
||||
struct ena_ring {
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ ena_cleanup(void *arg, int pending)
|
|||
RX_IRQ_INTERVAL,
|
||||
TX_IRQ_INTERVAL,
|
||||
true);
|
||||
counter_u64_add(tx_ring->tx_stats.unmask_interrupt_num, 1);
|
||||
ena_com_unmask_intr(io_cq, &intr_reg);
|
||||
}
|
||||
|
||||
|
|
@ -516,7 +517,7 @@ ena_rx_checksum(struct ena_ring *rx_ring, struct ena_com_rx_ctx *ena_rx_ctx,
|
|||
ena_rx_ctx->l3_csum_err)) {
|
||||
/* ipv4 checksum error */
|
||||
mbuf->m_pkthdr.csum_flags = 0;
|
||||
counter_u64_add(rx_ring->rx_stats.bad_csum, 1);
|
||||
counter_u64_add(rx_ring->rx_stats.csum_bad, 1);
|
||||
ena_log_io(pdev, DBG, "RX IPv4 header checksum error\n");
|
||||
return;
|
||||
}
|
||||
|
|
@ -527,11 +528,12 @@ ena_rx_checksum(struct ena_ring *rx_ring, struct ena_com_rx_ctx *ena_rx_ctx,
|
|||
if (ena_rx_ctx->l4_csum_err) {
|
||||
/* TCP/UDP checksum error */
|
||||
mbuf->m_pkthdr.csum_flags = 0;
|
||||
counter_u64_add(rx_ring->rx_stats.bad_csum, 1);
|
||||
counter_u64_add(rx_ring->rx_stats.csum_bad, 1);
|
||||
ena_log_io(pdev, DBG, "RX L4 checksum error\n");
|
||||
} else {
|
||||
mbuf->m_pkthdr.csum_flags = CSUM_IP_CHECKED;
|
||||
mbuf->m_pkthdr.csum_flags |= CSUM_IP_VALID;
|
||||
counter_u64_add(rx_ring->rx_stats.csum_good, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -238,6 +238,10 @@ ena_sysctl_add_stats(struct ena_adapter *adapter)
|
|||
"llq_buffer_copy", CTLFLAG_RD,
|
||||
&tx_stats->llq_buffer_copy,
|
||||
"Header copies for llq transaction");
|
||||
SYSCTL_ADD_COUNTER_U64(ctx, tx_list, OID_AUTO,
|
||||
"unmask_interrupt_num", CTLFLAG_RD,
|
||||
&tx_stats->unmask_interrupt_num,
|
||||
"Unmasked interrupt count");
|
||||
|
||||
/* RX specific stats */
|
||||
rx_node = SYSCTL_ADD_NODE(ctx, queue_list, OID_AUTO,
|
||||
|
|
@ -256,8 +260,8 @@ ena_sysctl_add_stats(struct ena_adapter *adapter)
|
|||
"refil_partial", CTLFLAG_RD,
|
||||
&rx_stats->refil_partial, "Partial refilled mbufs");
|
||||
SYSCTL_ADD_COUNTER_U64(ctx, rx_list, OID_AUTO,
|
||||
"bad_csum", CTLFLAG_RD,
|
||||
&rx_stats->bad_csum, "Bad RX checksum");
|
||||
"csum_bad", CTLFLAG_RD,
|
||||
&rx_stats->csum_bad, "Bad RX checksum");
|
||||
SYSCTL_ADD_COUNTER_U64(ctx, rx_list, OID_AUTO,
|
||||
"mbuf_alloc_fail", CTLFLAG_RD,
|
||||
&rx_stats->mbuf_alloc_fail, "Failed mbuf allocs");
|
||||
|
|
@ -276,6 +280,9 @@ ena_sysctl_add_stats(struct ena_adapter *adapter)
|
|||
SYSCTL_ADD_COUNTER_U64(ctx, rx_list, OID_AUTO,
|
||||
"empty_rx_ring", CTLFLAG_RD,
|
||||
&rx_stats->empty_rx_ring, "RX descriptors depletion count");
|
||||
SYSCTL_ADD_COUNTER_U64(ctx, rx_list, OID_AUTO,
|
||||
"csum_good", CTLFLAG_RD,
|
||||
&rx_stats->csum_good, "Valid RX checksum calculations");
|
||||
}
|
||||
|
||||
/* Stats read from device */
|
||||
|
|
|
|||
Loading…
Reference in a new issue