net/qede/base: fix for adapter specific stats
Handle different MAC statistic fields between two chip variants by
reading the MAC counters from the adapter suitable statistics bins.
Fixes: ec94dbc573
("qede: add base driver")
Cc: stable@dpdk.org
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
This commit is contained in:
parent
a68a9adf32
commit
9c1aa3e1c2
@ -249,8 +249,11 @@ qede_get_mcp_proto_stats(struct ecore_dev *edev,
|
||||
|
||||
if (type == ECORE_MCP_LAN_STATS) {
|
||||
ecore_get_vport_stats(edev, &lan_stats);
|
||||
stats->lan_stats.ucast_rx_pkts = lan_stats.rx_ucast_pkts;
|
||||
stats->lan_stats.ucast_tx_pkts = lan_stats.tx_ucast_pkts;
|
||||
|
||||
/* @DPDK */
|
||||
stats->lan_stats.ucast_rx_pkts = lan_stats.common.rx_ucast_pkts;
|
||||
stats->lan_stats.ucast_tx_pkts = lan_stats.common.tx_ucast_pkts;
|
||||
|
||||
stats->lan_stats.fcs_err = -1;
|
||||
} else {
|
||||
DP_INFO(edev, "Statistics request type %d not supported\n",
|
||||
|
@ -241,7 +241,7 @@ void ecore_ptt_release(struct ecore_hwfn *p_hwfn,
|
||||
struct ecore_ptt *p_ptt);
|
||||
|
||||
#ifndef __EXTRACT__LINUX__
|
||||
struct ecore_eth_stats {
|
||||
struct ecore_eth_stats_common {
|
||||
u64 no_buff_discards;
|
||||
u64 packet_too_big_discard;
|
||||
u64 ttl0_discard;
|
||||
@ -273,11 +273,6 @@ struct ecore_eth_stats {
|
||||
u64 rx_256_to_511_byte_packets;
|
||||
u64 rx_512_to_1023_byte_packets;
|
||||
u64 rx_1024_to_1518_byte_packets;
|
||||
u64 rx_1519_to_1522_byte_packets;
|
||||
u64 rx_1519_to_2047_byte_packets;
|
||||
u64 rx_2048_to_4095_byte_packets;
|
||||
u64 rx_4096_to_9216_byte_packets;
|
||||
u64 rx_9217_to_16383_byte_packets;
|
||||
u64 rx_crc_errors;
|
||||
u64 rx_mac_crtl_frames;
|
||||
u64 rx_pause_frames;
|
||||
@ -294,14 +289,8 @@ struct ecore_eth_stats {
|
||||
u64 tx_256_to_511_byte_packets;
|
||||
u64 tx_512_to_1023_byte_packets;
|
||||
u64 tx_1024_to_1518_byte_packets;
|
||||
u64 tx_1519_to_2047_byte_packets;
|
||||
u64 tx_2048_to_4095_byte_packets;
|
||||
u64 tx_4096_to_9216_byte_packets;
|
||||
u64 tx_9217_to_16383_byte_packets;
|
||||
u64 tx_pause_frames;
|
||||
u64 tx_pfc_frames;
|
||||
u64 tx_lpi_entry_count;
|
||||
u64 tx_total_collisions;
|
||||
u64 brb_truncates;
|
||||
u64 brb_discards;
|
||||
u64 rx_mac_bytes;
|
||||
@ -315,6 +304,33 @@ struct ecore_eth_stats {
|
||||
u64 tx_mac_bc_packets;
|
||||
u64 tx_mac_ctrl_frames;
|
||||
};
|
||||
|
||||
struct ecore_eth_stats_bb {
|
||||
u64 rx_1519_to_1522_byte_packets;
|
||||
u64 rx_1519_to_2047_byte_packets;
|
||||
u64 rx_2048_to_4095_byte_packets;
|
||||
u64 rx_4096_to_9216_byte_packets;
|
||||
u64 rx_9217_to_16383_byte_packets;
|
||||
u64 tx_1519_to_2047_byte_packets;
|
||||
u64 tx_2048_to_4095_byte_packets;
|
||||
u64 tx_4096_to_9216_byte_packets;
|
||||
u64 tx_9217_to_16383_byte_packets;
|
||||
u64 tx_lpi_entry_count;
|
||||
u64 tx_total_collisions;
|
||||
};
|
||||
|
||||
struct ecore_eth_stats_ah {
|
||||
u64 rx_1519_to_max_byte_packets;
|
||||
u64 tx_1519_to_max_byte_packets;
|
||||
};
|
||||
|
||||
struct ecore_eth_stats {
|
||||
struct ecore_eth_stats_common common;
|
||||
union {
|
||||
struct ecore_eth_stats_bb bb;
|
||||
struct ecore_eth_stats_ah ah;
|
||||
};
|
||||
};
|
||||
#endif
|
||||
|
||||
enum ecore_dmae_address_type_t {
|
||||
|
@ -1714,13 +1714,20 @@ static void __ecore_get_vport_pstats(struct ecore_hwfn *p_hwfn,
|
||||
OSAL_MEMSET(&pstats, 0, sizeof(pstats));
|
||||
ecore_memcpy_from(p_hwfn, p_ptt, &pstats, pstats_addr, pstats_len);
|
||||
|
||||
p_stats->tx_ucast_bytes += HILO_64_REGPAIR(pstats.sent_ucast_bytes);
|
||||
p_stats->tx_mcast_bytes += HILO_64_REGPAIR(pstats.sent_mcast_bytes);
|
||||
p_stats->tx_bcast_bytes += HILO_64_REGPAIR(pstats.sent_bcast_bytes);
|
||||
p_stats->tx_ucast_pkts += HILO_64_REGPAIR(pstats.sent_ucast_pkts);
|
||||
p_stats->tx_mcast_pkts += HILO_64_REGPAIR(pstats.sent_mcast_pkts);
|
||||
p_stats->tx_bcast_pkts += HILO_64_REGPAIR(pstats.sent_bcast_pkts);
|
||||
p_stats->tx_err_drop_pkts += HILO_64_REGPAIR(pstats.error_drop_pkts);
|
||||
p_stats->common.tx_ucast_bytes +=
|
||||
HILO_64_REGPAIR(pstats.sent_ucast_bytes);
|
||||
p_stats->common.tx_mcast_bytes +=
|
||||
HILO_64_REGPAIR(pstats.sent_mcast_bytes);
|
||||
p_stats->common.tx_bcast_bytes +=
|
||||
HILO_64_REGPAIR(pstats.sent_bcast_bytes);
|
||||
p_stats->common.tx_ucast_pkts +=
|
||||
HILO_64_REGPAIR(pstats.sent_ucast_pkts);
|
||||
p_stats->common.tx_mcast_pkts +=
|
||||
HILO_64_REGPAIR(pstats.sent_mcast_pkts);
|
||||
p_stats->common.tx_bcast_pkts +=
|
||||
HILO_64_REGPAIR(pstats.sent_bcast_pkts);
|
||||
p_stats->common.tx_err_drop_pkts +=
|
||||
HILO_64_REGPAIR(pstats.error_drop_pkts);
|
||||
}
|
||||
|
||||
static void __ecore_get_vport_tstats(struct ecore_hwfn *p_hwfn,
|
||||
@ -1746,10 +1753,10 @@ static void __ecore_get_vport_tstats(struct ecore_hwfn *p_hwfn,
|
||||
OSAL_MEMSET(&tstats, 0, sizeof(tstats));
|
||||
ecore_memcpy_from(p_hwfn, p_ptt, &tstats, tstats_addr, tstats_len);
|
||||
|
||||
p_stats->mftag_filter_discards +=
|
||||
HILO_64_REGPAIR(tstats.mftag_filter_discard);
|
||||
p_stats->mac_filter_discards +=
|
||||
HILO_64_REGPAIR(tstats.eth_mac_filter_discard);
|
||||
p_stats->common.mftag_filter_discards +=
|
||||
HILO_64_REGPAIR(tstats.mftag_filter_discard);
|
||||
p_stats->common.mac_filter_discards +=
|
||||
HILO_64_REGPAIR(tstats.eth_mac_filter_discard);
|
||||
}
|
||||
|
||||
static void __ecore_get_vport_ustats_addrlen(struct ecore_hwfn *p_hwfn,
|
||||
@ -1783,12 +1790,18 @@ static void __ecore_get_vport_ustats(struct ecore_hwfn *p_hwfn,
|
||||
OSAL_MEMSET(&ustats, 0, sizeof(ustats));
|
||||
ecore_memcpy_from(p_hwfn, p_ptt, &ustats, ustats_addr, ustats_len);
|
||||
|
||||
p_stats->rx_ucast_bytes += HILO_64_REGPAIR(ustats.rcv_ucast_bytes);
|
||||
p_stats->rx_mcast_bytes += HILO_64_REGPAIR(ustats.rcv_mcast_bytes);
|
||||
p_stats->rx_bcast_bytes += HILO_64_REGPAIR(ustats.rcv_bcast_bytes);
|
||||
p_stats->rx_ucast_pkts += HILO_64_REGPAIR(ustats.rcv_ucast_pkts);
|
||||
p_stats->rx_mcast_pkts += HILO_64_REGPAIR(ustats.rcv_mcast_pkts);
|
||||
p_stats->rx_bcast_pkts += HILO_64_REGPAIR(ustats.rcv_bcast_pkts);
|
||||
p_stats->common.rx_ucast_bytes +=
|
||||
HILO_64_REGPAIR(ustats.rcv_ucast_bytes);
|
||||
p_stats->common.rx_mcast_bytes +=
|
||||
HILO_64_REGPAIR(ustats.rcv_mcast_bytes);
|
||||
p_stats->common.rx_bcast_bytes +=
|
||||
HILO_64_REGPAIR(ustats.rcv_bcast_bytes);
|
||||
p_stats->common.rx_ucast_pkts +=
|
||||
HILO_64_REGPAIR(ustats.rcv_ucast_pkts);
|
||||
p_stats->common.rx_mcast_pkts +=
|
||||
HILO_64_REGPAIR(ustats.rcv_mcast_pkts);
|
||||
p_stats->common.rx_bcast_pkts +=
|
||||
HILO_64_REGPAIR(ustats.rcv_bcast_pkts);
|
||||
}
|
||||
|
||||
static void __ecore_get_vport_mstats_addrlen(struct ecore_hwfn *p_hwfn,
|
||||
@ -1822,23 +1835,27 @@ static void __ecore_get_vport_mstats(struct ecore_hwfn *p_hwfn,
|
||||
OSAL_MEMSET(&mstats, 0, sizeof(mstats));
|
||||
ecore_memcpy_from(p_hwfn, p_ptt, &mstats, mstats_addr, mstats_len);
|
||||
|
||||
p_stats->no_buff_discards += HILO_64_REGPAIR(mstats.no_buff_discard);
|
||||
p_stats->packet_too_big_discard +=
|
||||
HILO_64_REGPAIR(mstats.packet_too_big_discard);
|
||||
p_stats->ttl0_discard += HILO_64_REGPAIR(mstats.ttl0_discard);
|
||||
p_stats->tpa_coalesced_pkts +=
|
||||
HILO_64_REGPAIR(mstats.tpa_coalesced_pkts);
|
||||
p_stats->tpa_coalesced_events +=
|
||||
HILO_64_REGPAIR(mstats.tpa_coalesced_events);
|
||||
p_stats->tpa_aborts_num += HILO_64_REGPAIR(mstats.tpa_aborts_num);
|
||||
p_stats->tpa_coalesced_bytes +=
|
||||
HILO_64_REGPAIR(mstats.tpa_coalesced_bytes);
|
||||
p_stats->common.no_buff_discards +=
|
||||
HILO_64_REGPAIR(mstats.no_buff_discard);
|
||||
p_stats->common.packet_too_big_discard +=
|
||||
HILO_64_REGPAIR(mstats.packet_too_big_discard);
|
||||
p_stats->common.ttl0_discard +=
|
||||
HILO_64_REGPAIR(mstats.ttl0_discard);
|
||||
p_stats->common.tpa_coalesced_pkts +=
|
||||
HILO_64_REGPAIR(mstats.tpa_coalesced_pkts);
|
||||
p_stats->common.tpa_coalesced_events +=
|
||||
HILO_64_REGPAIR(mstats.tpa_coalesced_events);
|
||||
p_stats->common.tpa_aborts_num +=
|
||||
HILO_64_REGPAIR(mstats.tpa_aborts_num);
|
||||
p_stats->common.tpa_coalesced_bytes +=
|
||||
HILO_64_REGPAIR(mstats.tpa_coalesced_bytes);
|
||||
}
|
||||
|
||||
static void __ecore_get_vport_port_stats(struct ecore_hwfn *p_hwfn,
|
||||
struct ecore_ptt *p_ptt,
|
||||
struct ecore_eth_stats *p_stats)
|
||||
{
|
||||
struct ecore_eth_stats_common *p_common = &p_stats->common;
|
||||
struct port_stats port_stats;
|
||||
int j;
|
||||
|
||||
@ -1849,54 +1866,75 @@ static void __ecore_get_vport_port_stats(struct ecore_hwfn *p_hwfn,
|
||||
OFFSETOF(struct public_port, stats),
|
||||
sizeof(port_stats));
|
||||
|
||||
p_stats->rx_64_byte_packets += port_stats.eth.r64;
|
||||
p_stats->rx_65_to_127_byte_packets += port_stats.eth.r127;
|
||||
p_stats->rx_128_to_255_byte_packets += port_stats.eth.r255;
|
||||
p_stats->rx_256_to_511_byte_packets += port_stats.eth.r511;
|
||||
p_stats->rx_512_to_1023_byte_packets += port_stats.eth.r1023;
|
||||
p_stats->rx_1024_to_1518_byte_packets += port_stats.eth.r1518;
|
||||
p_stats->rx_1519_to_1522_byte_packets += port_stats.eth.r1522;
|
||||
p_stats->rx_1519_to_2047_byte_packets += port_stats.eth.r2047;
|
||||
p_stats->rx_2048_to_4095_byte_packets += port_stats.eth.r4095;
|
||||
p_stats->rx_4096_to_9216_byte_packets += port_stats.eth.r9216;
|
||||
p_stats->rx_9217_to_16383_byte_packets += port_stats.eth.r16383;
|
||||
p_stats->rx_crc_errors += port_stats.eth.rfcs;
|
||||
p_stats->rx_mac_crtl_frames += port_stats.eth.rxcf;
|
||||
p_stats->rx_pause_frames += port_stats.eth.rxpf;
|
||||
p_stats->rx_pfc_frames += port_stats.eth.rxpp;
|
||||
p_stats->rx_align_errors += port_stats.eth.raln;
|
||||
p_stats->rx_carrier_errors += port_stats.eth.rfcr;
|
||||
p_stats->rx_oversize_packets += port_stats.eth.rovr;
|
||||
p_stats->rx_jabbers += port_stats.eth.rjbr;
|
||||
p_stats->rx_undersize_packets += port_stats.eth.rund;
|
||||
p_stats->rx_fragments += port_stats.eth.rfrg;
|
||||
p_stats->tx_64_byte_packets += port_stats.eth.t64;
|
||||
p_stats->tx_65_to_127_byte_packets += port_stats.eth.t127;
|
||||
p_stats->tx_128_to_255_byte_packets += port_stats.eth.t255;
|
||||
p_stats->tx_256_to_511_byte_packets += port_stats.eth.t511;
|
||||
p_stats->tx_512_to_1023_byte_packets += port_stats.eth.t1023;
|
||||
p_stats->tx_1024_to_1518_byte_packets += port_stats.eth.t1518;
|
||||
p_stats->tx_1519_to_2047_byte_packets += port_stats.eth.t2047;
|
||||
p_stats->tx_2048_to_4095_byte_packets += port_stats.eth.t4095;
|
||||
p_stats->tx_4096_to_9216_byte_packets += port_stats.eth.t9216;
|
||||
p_stats->tx_9217_to_16383_byte_packets += port_stats.eth.t16383;
|
||||
p_stats->tx_pause_frames += port_stats.eth.txpf;
|
||||
p_stats->tx_pfc_frames += port_stats.eth.txpp;
|
||||
p_stats->tx_lpi_entry_count += port_stats.eth.tlpiec;
|
||||
p_stats->tx_total_collisions += port_stats.eth.tncl;
|
||||
p_stats->rx_mac_bytes += port_stats.eth.rbyte;
|
||||
p_stats->rx_mac_uc_packets += port_stats.eth.rxuca;
|
||||
p_stats->rx_mac_mc_packets += port_stats.eth.rxmca;
|
||||
p_stats->rx_mac_bc_packets += port_stats.eth.rxbca;
|
||||
p_stats->rx_mac_frames_ok += port_stats.eth.rxpok;
|
||||
p_stats->tx_mac_bytes += port_stats.eth.tbyte;
|
||||
p_stats->tx_mac_uc_packets += port_stats.eth.txuca;
|
||||
p_stats->tx_mac_mc_packets += port_stats.eth.txmca;
|
||||
p_stats->tx_mac_bc_packets += port_stats.eth.txbca;
|
||||
p_stats->tx_mac_ctrl_frames += port_stats.eth.txcf;
|
||||
p_common->rx_64_byte_packets += port_stats.eth.r64;
|
||||
p_common->rx_65_to_127_byte_packets += port_stats.eth.r127;
|
||||
p_common->rx_128_to_255_byte_packets += port_stats.eth.r255;
|
||||
p_common->rx_256_to_511_byte_packets += port_stats.eth.r511;
|
||||
p_common->rx_512_to_1023_byte_packets += port_stats.eth.r1023;
|
||||
p_common->rx_1024_to_1518_byte_packets += port_stats.eth.r1518;
|
||||
p_common->rx_crc_errors += port_stats.eth.rfcs;
|
||||
p_common->rx_mac_crtl_frames += port_stats.eth.rxcf;
|
||||
p_common->rx_pause_frames += port_stats.eth.rxpf;
|
||||
p_common->rx_pfc_frames += port_stats.eth.rxpp;
|
||||
p_common->rx_align_errors += port_stats.eth.raln;
|
||||
p_common->rx_carrier_errors += port_stats.eth.rfcr;
|
||||
p_common->rx_oversize_packets += port_stats.eth.rovr;
|
||||
p_common->rx_jabbers += port_stats.eth.rjbr;
|
||||
p_common->rx_undersize_packets += port_stats.eth.rund;
|
||||
p_common->rx_fragments += port_stats.eth.rfrg;
|
||||
p_common->tx_64_byte_packets += port_stats.eth.t64;
|
||||
p_common->tx_65_to_127_byte_packets += port_stats.eth.t127;
|
||||
p_common->tx_128_to_255_byte_packets += port_stats.eth.t255;
|
||||
p_common->tx_256_to_511_byte_packets += port_stats.eth.t511;
|
||||
p_common->tx_512_to_1023_byte_packets += port_stats.eth.t1023;
|
||||
p_common->tx_1024_to_1518_byte_packets += port_stats.eth.t1518;
|
||||
p_common->tx_pause_frames += port_stats.eth.txpf;
|
||||
p_common->tx_pfc_frames += port_stats.eth.txpp;
|
||||
p_common->rx_mac_bytes += port_stats.eth.rbyte;
|
||||
p_common->rx_mac_uc_packets += port_stats.eth.rxuca;
|
||||
p_common->rx_mac_mc_packets += port_stats.eth.rxmca;
|
||||
p_common->rx_mac_bc_packets += port_stats.eth.rxbca;
|
||||
p_common->rx_mac_frames_ok += port_stats.eth.rxpok;
|
||||
p_common->tx_mac_bytes += port_stats.eth.tbyte;
|
||||
p_common->tx_mac_uc_packets += port_stats.eth.txuca;
|
||||
p_common->tx_mac_mc_packets += port_stats.eth.txmca;
|
||||
p_common->tx_mac_bc_packets += port_stats.eth.txbca;
|
||||
p_common->tx_mac_ctrl_frames += port_stats.eth.txcf;
|
||||
for (j = 0; j < 8; j++) {
|
||||
p_stats->brb_truncates += port_stats.brb.brb_truncate[j];
|
||||
p_stats->brb_discards += port_stats.brb.brb_discard[j];
|
||||
p_common->brb_truncates += port_stats.brb.brb_truncate[j];
|
||||
p_common->brb_discards += port_stats.brb.brb_discard[j];
|
||||
}
|
||||
|
||||
if (ECORE_IS_BB(p_hwfn->p_dev)) {
|
||||
struct ecore_eth_stats_bb *p_bb = &p_stats->bb;
|
||||
|
||||
p_bb->rx_1519_to_1522_byte_packets +=
|
||||
port_stats.eth.u0.bb0.r1522;
|
||||
p_bb->rx_1519_to_2047_byte_packets +=
|
||||
port_stats.eth.u0.bb0.r2047;
|
||||
p_bb->rx_2048_to_4095_byte_packets +=
|
||||
port_stats.eth.u0.bb0.r4095;
|
||||
p_bb->rx_4096_to_9216_byte_packets +=
|
||||
port_stats.eth.u0.bb0.r9216;
|
||||
p_bb->rx_9217_to_16383_byte_packets +=
|
||||
port_stats.eth.u0.bb0.r16383;
|
||||
p_bb->tx_1519_to_2047_byte_packets +=
|
||||
port_stats.eth.u1.bb1.t2047;
|
||||
p_bb->tx_2048_to_4095_byte_packets +=
|
||||
port_stats.eth.u1.bb1.t4095;
|
||||
p_bb->tx_4096_to_9216_byte_packets +=
|
||||
port_stats.eth.u1.bb1.t9216;
|
||||
p_bb->tx_9217_to_16383_byte_packets +=
|
||||
port_stats.eth.u1.bb1.t16383;
|
||||
p_bb->tx_lpi_entry_count += port_stats.eth.u2.bb2.tlpiec;
|
||||
p_bb->tx_total_collisions += port_stats.eth.u2.bb2.tncl;
|
||||
} else {
|
||||
struct ecore_eth_stats_ah *p_ah = &p_stats->ah;
|
||||
|
||||
p_ah->rx_1519_to_max_byte_packets +=
|
||||
port_stats.eth.u0.ah0.r1519_to_max;
|
||||
p_ah->tx_1519_to_max_byte_packets =
|
||||
port_stats.eth.u1.ah1.t1519_to_max;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,13 +132,28 @@ struct eth_stats {
|
||||
u64 r1023; /* 0x04 (Offset 0x20 ) RX 512 to 1023 byte frame counter*/
|
||||
/* 0x05 (Offset 0x28 ) RX 1024 to 1518 byte frame counter */
|
||||
u64 r1518;
|
||||
union {
|
||||
struct { /* bb */
|
||||
/* 0x06 (Offset 0x30 ) RX 1519 to 1522 byte VLAN-tagged frame counter */
|
||||
u64 r1522;
|
||||
u64 r2047; /* 0x07 (Offset 0x38 ) RX 1519 to 2047 byte frame counter*/
|
||||
u64 r4095; /* 0x08 (Offset 0x40 ) RX 2048 to 4095 byte frame counter*/
|
||||
u64 r9216; /* 0x09 (Offset 0x48 ) RX 4096 to 9216 byte frame counter*/
|
||||
u64 r1522;
|
||||
/* 0x07 (Offset 0x38 ) RX 1519 to 2047 byte frame counter*/
|
||||
u64 r2047;
|
||||
/* 0x08 (Offset 0x40 ) RX 2048 to 4095 byte frame counter*/
|
||||
u64 r4095;
|
||||
/* 0x09 (Offset 0x48 ) RX 4096 to 9216 byte frame counter*/
|
||||
u64 r9216;
|
||||
/* 0x0A (Offset 0x50 ) RX 9217 to 16383 byte frame counter */
|
||||
u64 r16383;
|
||||
u64 r16383;
|
||||
} bb0;
|
||||
struct { /* ah */
|
||||
u64 unused1;
|
||||
/* 0x07 (Offset 0x38 ) RX 1519 to max byte frame counter*/
|
||||
u64 r1519_to_max;
|
||||
u64 unused2;
|
||||
u64 unused3;
|
||||
u64 unused4;
|
||||
} ah0;
|
||||
} u0;
|
||||
u64 rfcs; /* 0x0F (Offset 0x58 ) RX FCS error frame counter*/
|
||||
u64 rxcf; /* 0x10 (Offset 0x60 ) RX control frame counter*/
|
||||
u64 rxpf; /* 0x11 (Offset 0x68 ) RX pause frame counter*/
|
||||
@ -156,19 +171,40 @@ struct eth_stats {
|
||||
u64 t1023; /* 0x44 (Offset 0xc8 ) TX 512 to 1023 byte frame counter*/
|
||||
/* 0x45 (Offset 0xd0 ) TX 1024 to 1518 byte frame counter */
|
||||
u64 t1518;
|
||||
union {
|
||||
struct { /* bb */
|
||||
/* 0x47 (Offset 0xd8 ) TX 1519 to 2047 byte frame counter */
|
||||
u64 t2047;
|
||||
u64 t2047;
|
||||
/* 0x48 (Offset 0xe0 ) TX 2048 to 4095 byte frame counter */
|
||||
u64 t4095;
|
||||
u64 t4095;
|
||||
/* 0x49 (Offset 0xe8 ) TX 4096 to 9216 byte frame counter */
|
||||
u64 t9216;
|
||||
u64 t9216;
|
||||
/* 0x4A (Offset 0xf0 ) TX 9217 to 16383 byte frame counter */
|
||||
u64 t16383;
|
||||
u64 t16383;
|
||||
} bb1;
|
||||
struct { /* ah */
|
||||
/* 0x47 (Offset 0xd8 ) TX 1519 to max byte frame counter */
|
||||
u64 t1519_to_max;
|
||||
u64 unused6;
|
||||
u64 unused7;
|
||||
u64 unused8;
|
||||
} ah1;
|
||||
} u1;
|
||||
u64 txpf; /* 0x50 (Offset 0xf8 ) TX pause frame counter */
|
||||
u64 txpp; /* 0x51 (Offset 0x100) TX PFC frame counter */
|
||||
/* 0x6C (Offset 0x108) Transmit Logical Type LLFC message counter */
|
||||
u64 tlpiec;
|
||||
u64 tncl; /* 0x6E (Offset 0x110) Transmit Total Collision Counter */
|
||||
union {
|
||||
struct { /* bb */
|
||||
/* 0x6C (Offset 0x108) Transmit Logical Type LLFC message counter */
|
||||
u64 tlpiec;
|
||||
/* 0x6E (Offset 0x110) Transmit Total Collision Counter */
|
||||
u64 tncl;
|
||||
} bb2;
|
||||
struct { /* ah */
|
||||
u64 unused9;
|
||||
u64 unused10;
|
||||
} ah2;
|
||||
} u2;
|
||||
u64 rbyte; /* 0x3d (Offset 0x118) RX byte counter */
|
||||
u64 rxuca; /* 0x0c (Offset 0x120) RX UC frame counter */
|
||||
u64 rxmca; /* 0x0d (Offset 0x128) RX MC frame counter */
|
||||
|
@ -125,143 +125,199 @@ struct rte_qede_xstats_name_off {
|
||||
};
|
||||
|
||||
static const struct rte_qede_xstats_name_off qede_xstats_strings[] = {
|
||||
{"rx_unicast_bytes", offsetof(struct ecore_eth_stats, rx_ucast_bytes)},
|
||||
{"rx_unicast_bytes",
|
||||
offsetof(struct ecore_eth_stats_common, rx_ucast_bytes)},
|
||||
{"rx_multicast_bytes",
|
||||
offsetof(struct ecore_eth_stats, rx_mcast_bytes)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mcast_bytes)},
|
||||
{"rx_broadcast_bytes",
|
||||
offsetof(struct ecore_eth_stats, rx_bcast_bytes)},
|
||||
{"rx_unicast_packets", offsetof(struct ecore_eth_stats, rx_ucast_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_bcast_bytes)},
|
||||
{"rx_unicast_packets",
|
||||
offsetof(struct ecore_eth_stats_common, rx_ucast_pkts)},
|
||||
{"rx_multicast_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_mcast_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mcast_pkts)},
|
||||
{"rx_broadcast_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_bcast_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_bcast_pkts)},
|
||||
|
||||
{"tx_unicast_bytes", offsetof(struct ecore_eth_stats, tx_ucast_bytes)},
|
||||
{"tx_unicast_bytes",
|
||||
offsetof(struct ecore_eth_stats_common, tx_ucast_bytes)},
|
||||
{"tx_multicast_bytes",
|
||||
offsetof(struct ecore_eth_stats, tx_mcast_bytes)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_mcast_bytes)},
|
||||
{"tx_broadcast_bytes",
|
||||
offsetof(struct ecore_eth_stats, tx_bcast_bytes)},
|
||||
{"tx_unicast_packets", offsetof(struct ecore_eth_stats, tx_ucast_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_bcast_bytes)},
|
||||
{"tx_unicast_packets",
|
||||
offsetof(struct ecore_eth_stats_common, tx_ucast_pkts)},
|
||||
{"tx_multicast_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_mcast_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_mcast_pkts)},
|
||||
{"tx_broadcast_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_bcast_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_bcast_pkts)},
|
||||
|
||||
{"rx_64_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_64_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_64_byte_packets)},
|
||||
{"rx_65_to_127_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_65_to_127_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
rx_65_to_127_byte_packets)},
|
||||
{"rx_128_to_255_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_128_to_255_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
rx_128_to_255_byte_packets)},
|
||||
{"rx_256_to_511_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_256_to_511_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
rx_256_to_511_byte_packets)},
|
||||
{"rx_512_to_1023_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_512_to_1023_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
rx_512_to_1023_byte_packets)},
|
||||
{"rx_1024_to_1518_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_1024_to_1518_byte_packets)},
|
||||
{"rx_1519_to_1522_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_1519_to_1522_byte_packets)},
|
||||
{"rx_1519_to_2047_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_1519_to_2047_byte_packets)},
|
||||
{"rx_2048_to_4095_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_2048_to_4095_byte_packets)},
|
||||
{"rx_4096_to_9216_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_4096_to_9216_byte_packets)},
|
||||
{"rx_9217_to_16383_byte_packets",
|
||||
offsetof(struct ecore_eth_stats,
|
||||
rx_9217_to_16383_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
rx_1024_to_1518_byte_packets)},
|
||||
{"tx_64_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_64_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_64_byte_packets)},
|
||||
{"tx_65_to_127_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_65_to_127_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tx_65_to_127_byte_packets)},
|
||||
{"tx_128_to_255_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_128_to_255_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tx_128_to_255_byte_packets)},
|
||||
{"tx_256_to_511_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_256_to_511_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tx_256_to_511_byte_packets)},
|
||||
{"tx_512_to_1023_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_512_to_1023_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tx_512_to_1023_byte_packets)},
|
||||
{"tx_1024_to_1518_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_1024_to_1518_byte_packets)},
|
||||
{"trx_1519_to_1522_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_1519_to_2047_byte_packets)},
|
||||
{"tx_2048_to_4095_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_2048_to_4095_byte_packets)},
|
||||
{"tx_4096_to_9216_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_4096_to_9216_byte_packets)},
|
||||
{"tx_9217_to_16383_byte_packets",
|
||||
offsetof(struct ecore_eth_stats,
|
||||
tx_9217_to_16383_byte_packets)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tx_1024_to_1518_byte_packets)},
|
||||
|
||||
{"rx_mac_crtl_frames",
|
||||
offsetof(struct ecore_eth_stats, rx_mac_crtl_frames)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mac_crtl_frames)},
|
||||
{"tx_mac_control_frames",
|
||||
offsetof(struct ecore_eth_stats, tx_mac_ctrl_frames)},
|
||||
{"rx_pause_frames", offsetof(struct ecore_eth_stats, rx_pause_frames)},
|
||||
{"tx_pause_frames", offsetof(struct ecore_eth_stats, tx_pause_frames)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_mac_ctrl_frames)},
|
||||
{"rx_pause_frames",
|
||||
offsetof(struct ecore_eth_stats_common, rx_pause_frames)},
|
||||
{"tx_pause_frames",
|
||||
offsetof(struct ecore_eth_stats_common, tx_pause_frames)},
|
||||
{"rx_priority_flow_control_frames",
|
||||
offsetof(struct ecore_eth_stats, rx_pfc_frames)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_pfc_frames)},
|
||||
{"tx_priority_flow_control_frames",
|
||||
offsetof(struct ecore_eth_stats, tx_pfc_frames)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_pfc_frames)},
|
||||
|
||||
{"rx_crc_errors", offsetof(struct ecore_eth_stats, rx_crc_errors)},
|
||||
{"rx_align_errors", offsetof(struct ecore_eth_stats, rx_align_errors)},
|
||||
{"rx_crc_errors",
|
||||
offsetof(struct ecore_eth_stats_common, rx_crc_errors)},
|
||||
{"rx_align_errors",
|
||||
offsetof(struct ecore_eth_stats_common, rx_align_errors)},
|
||||
{"rx_carrier_errors",
|
||||
offsetof(struct ecore_eth_stats, rx_carrier_errors)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_carrier_errors)},
|
||||
{"rx_oversize_packet_errors",
|
||||
offsetof(struct ecore_eth_stats, rx_oversize_packets)},
|
||||
{"rx_jabber_errors", offsetof(struct ecore_eth_stats, rx_jabbers)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_oversize_packets)},
|
||||
{"rx_jabber_errors",
|
||||
offsetof(struct ecore_eth_stats_common, rx_jabbers)},
|
||||
{"rx_undersize_packet_errors",
|
||||
offsetof(struct ecore_eth_stats, rx_undersize_packets)},
|
||||
{"rx_fragments", offsetof(struct ecore_eth_stats, rx_fragments)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_undersize_packets)},
|
||||
{"rx_fragments", offsetof(struct ecore_eth_stats_common, rx_fragments)},
|
||||
{"rx_host_buffer_not_available",
|
||||
offsetof(struct ecore_eth_stats, no_buff_discards)},
|
||||
offsetof(struct ecore_eth_stats_common, no_buff_discards)},
|
||||
/* Number of packets discarded because they are bigger than MTU */
|
||||
{"rx_packet_too_big_discards",
|
||||
offsetof(struct ecore_eth_stats, packet_too_big_discard)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
packet_too_big_discard)},
|
||||
{"rx_ttl_zero_discards",
|
||||
offsetof(struct ecore_eth_stats, ttl0_discard)},
|
||||
offsetof(struct ecore_eth_stats_common, ttl0_discard)},
|
||||
{"rx_multi_function_tag_filter_discards",
|
||||
offsetof(struct ecore_eth_stats, mftag_filter_discards)},
|
||||
offsetof(struct ecore_eth_stats_common, mftag_filter_discards)},
|
||||
{"rx_mac_filter_discards",
|
||||
offsetof(struct ecore_eth_stats, mac_filter_discards)},
|
||||
offsetof(struct ecore_eth_stats_common, mac_filter_discards)},
|
||||
{"rx_hw_buffer_truncates",
|
||||
offsetof(struct ecore_eth_stats, brb_truncates)},
|
||||
offsetof(struct ecore_eth_stats_common, brb_truncates)},
|
||||
{"rx_hw_buffer_discards",
|
||||
offsetof(struct ecore_eth_stats, brb_discards)},
|
||||
{"tx_lpi_entry_count",
|
||||
offsetof(struct ecore_eth_stats, tx_lpi_entry_count)},
|
||||
{"tx_total_collisions",
|
||||
offsetof(struct ecore_eth_stats, tx_total_collisions)},
|
||||
offsetof(struct ecore_eth_stats_common, brb_discards)},
|
||||
{"tx_error_drop_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_err_drop_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_err_drop_pkts)},
|
||||
|
||||
{"rx_mac_bytes", offsetof(struct ecore_eth_stats, rx_mac_bytes)},
|
||||
{"rx_mac_bytes", offsetof(struct ecore_eth_stats_common, rx_mac_bytes)},
|
||||
{"rx_mac_unicast_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_mac_uc_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mac_uc_packets)},
|
||||
{"rx_mac_multicast_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_mac_mc_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mac_mc_packets)},
|
||||
{"rx_mac_broadcast_packets",
|
||||
offsetof(struct ecore_eth_stats, rx_mac_bc_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mac_bc_packets)},
|
||||
{"rx_mac_frames_ok",
|
||||
offsetof(struct ecore_eth_stats, rx_mac_frames_ok)},
|
||||
{"tx_mac_bytes", offsetof(struct ecore_eth_stats, tx_mac_bytes)},
|
||||
offsetof(struct ecore_eth_stats_common, rx_mac_frames_ok)},
|
||||
{"tx_mac_bytes", offsetof(struct ecore_eth_stats_common, tx_mac_bytes)},
|
||||
{"tx_mac_unicast_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_mac_uc_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_mac_uc_packets)},
|
||||
{"tx_mac_multicast_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_mac_mc_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_mac_mc_packets)},
|
||||
{"tx_mac_broadcast_packets",
|
||||
offsetof(struct ecore_eth_stats, tx_mac_bc_packets)},
|
||||
offsetof(struct ecore_eth_stats_common, tx_mac_bc_packets)},
|
||||
|
||||
{"lro_coalesced_packets",
|
||||
offsetof(struct ecore_eth_stats, tpa_coalesced_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common, tpa_coalesced_pkts)},
|
||||
{"lro_coalesced_events",
|
||||
offsetof(struct ecore_eth_stats, tpa_coalesced_events)},
|
||||
offsetof(struct ecore_eth_stats_common, tpa_coalesced_events)},
|
||||
{"lro_aborts_num",
|
||||
offsetof(struct ecore_eth_stats, tpa_aborts_num)},
|
||||
offsetof(struct ecore_eth_stats_common, tpa_aborts_num)},
|
||||
{"lro_not_coalesced_packets",
|
||||
offsetof(struct ecore_eth_stats, tpa_not_coalesced_pkts)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tpa_not_coalesced_pkts)},
|
||||
{"lro_coalesced_bytes",
|
||||
offsetof(struct ecore_eth_stats, tpa_coalesced_bytes)},
|
||||
offsetof(struct ecore_eth_stats_common,
|
||||
tpa_coalesced_bytes)},
|
||||
};
|
||||
|
||||
static const struct rte_qede_xstats_name_off qede_bb_xstats_strings[] = {
|
||||
{"rx_1519_to_1522_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
rx_1519_to_1522_byte_packets)},
|
||||
{"rx_1519_to_2047_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
rx_1519_to_2047_byte_packets)},
|
||||
{"rx_2048_to_4095_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
rx_2048_to_4095_byte_packets)},
|
||||
{"rx_4096_to_9216_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
rx_4096_to_9216_byte_packets)},
|
||||
{"rx_9217_to_16383_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
rx_9217_to_16383_byte_packets)},
|
||||
|
||||
{"tx_1519_to_2047_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
tx_1519_to_2047_byte_packets)},
|
||||
{"tx_2048_to_4095_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
tx_2048_to_4095_byte_packets)},
|
||||
{"tx_4096_to_9216_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
tx_4096_to_9216_byte_packets)},
|
||||
{"tx_9217_to_16383_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb,
|
||||
tx_9217_to_16383_byte_packets)},
|
||||
|
||||
{"tx_lpi_entry_count",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb, tx_lpi_entry_count)},
|
||||
{"tx_total_collisions",
|
||||
offsetof(struct ecore_eth_stats, bb) +
|
||||
offsetof(struct ecore_eth_stats_bb, tx_total_collisions)},
|
||||
};
|
||||
|
||||
static const struct rte_qede_xstats_name_off qede_ah_xstats_strings[] = {
|
||||
{"rx_1519_to_max_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, ah) +
|
||||
offsetof(struct ecore_eth_stats_ah,
|
||||
rx_1519_to_max_byte_packets)},
|
||||
{"tx_1519_to_max_byte_packets",
|
||||
offsetof(struct ecore_eth_stats, ah) +
|
||||
offsetof(struct ecore_eth_stats_ah,
|
||||
tx_1519_to_max_byte_packets)},
|
||||
};
|
||||
|
||||
static const struct rte_qede_xstats_name_off qede_rxq_xstats_strings[] = {
|
||||
@ -1416,32 +1472,33 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
|
||||
ecore_get_vport_stats(edev, &stats);
|
||||
|
||||
/* RX Stats */
|
||||
eth_stats->ipackets = stats.rx_ucast_pkts +
|
||||
stats.rx_mcast_pkts + stats.rx_bcast_pkts;
|
||||
eth_stats->ipackets = stats.common.rx_ucast_pkts +
|
||||
stats.common.rx_mcast_pkts + stats.common.rx_bcast_pkts;
|
||||
|
||||
eth_stats->ibytes = stats.rx_ucast_bytes +
|
||||
stats.rx_mcast_bytes + stats.rx_bcast_bytes;
|
||||
eth_stats->ibytes = stats.common.rx_ucast_bytes +
|
||||
stats.common.rx_mcast_bytes + stats.common.rx_bcast_bytes;
|
||||
|
||||
eth_stats->ierrors = stats.rx_crc_errors +
|
||||
stats.rx_align_errors +
|
||||
stats.rx_carrier_errors +
|
||||
stats.rx_oversize_packets +
|
||||
stats.rx_jabbers + stats.rx_undersize_packets;
|
||||
eth_stats->ierrors = stats.common.rx_crc_errors +
|
||||
stats.common.rx_align_errors +
|
||||
stats.common.rx_carrier_errors +
|
||||
stats.common.rx_oversize_packets +
|
||||
stats.common.rx_jabbers + stats.common.rx_undersize_packets;
|
||||
|
||||
eth_stats->rx_nombuf = stats.no_buff_discards;
|
||||
eth_stats->rx_nombuf = stats.common.no_buff_discards;
|
||||
|
||||
eth_stats->imissed = stats.mftag_filter_discards +
|
||||
stats.mac_filter_discards +
|
||||
stats.no_buff_discards + stats.brb_truncates + stats.brb_discards;
|
||||
eth_stats->imissed = stats.common.mftag_filter_discards +
|
||||
stats.common.mac_filter_discards +
|
||||
stats.common.no_buff_discards +
|
||||
stats.common.brb_truncates + stats.common.brb_discards;
|
||||
|
||||
/* TX stats */
|
||||
eth_stats->opackets = stats.tx_ucast_pkts +
|
||||
stats.tx_mcast_pkts + stats.tx_bcast_pkts;
|
||||
eth_stats->opackets = stats.common.tx_ucast_pkts +
|
||||
stats.common.tx_mcast_pkts + stats.common.tx_bcast_pkts;
|
||||
|
||||
eth_stats->obytes = stats.tx_ucast_bytes +
|
||||
stats.tx_mcast_bytes + stats.tx_bcast_bytes;
|
||||
eth_stats->obytes = stats.common.tx_ucast_bytes +
|
||||
stats.common.tx_mcast_bytes + stats.common.tx_bcast_bytes;
|
||||
|
||||
eth_stats->oerrors = stats.tx_err_drop_pkts;
|
||||
eth_stats->oerrors = stats.common.tx_err_drop_pkts;
|
||||
|
||||
/* Queue stats */
|
||||
rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
|
||||
@ -1490,10 +1547,18 @@ qede_get_stats(struct rte_eth_dev *eth_dev, struct rte_eth_stats *eth_stats)
|
||||
|
||||
static unsigned
|
||||
qede_get_xstats_count(struct qede_dev *qdev) {
|
||||
return RTE_DIM(qede_xstats_strings) +
|
||||
(RTE_DIM(qede_rxq_xstats_strings) *
|
||||
RTE_MIN(QEDE_RSS_COUNT(qdev),
|
||||
RTE_ETHDEV_QUEUE_STAT_CNTRS));
|
||||
if (ECORE_IS_BB(&qdev->edev))
|
||||
return RTE_DIM(qede_xstats_strings) +
|
||||
RTE_DIM(qede_bb_xstats_strings) +
|
||||
(RTE_DIM(qede_rxq_xstats_strings) *
|
||||
RTE_MIN(QEDE_RSS_COUNT(qdev),
|
||||
RTE_ETHDEV_QUEUE_STAT_CNTRS));
|
||||
else
|
||||
return RTE_DIM(qede_xstats_strings) +
|
||||
RTE_DIM(qede_ah_xstats_strings) +
|
||||
(RTE_DIM(qede_rxq_xstats_strings) *
|
||||
RTE_MIN(QEDE_RSS_COUNT(qdev),
|
||||
RTE_ETHDEV_QUEUE_STAT_CNTRS));
|
||||
}
|
||||
|
||||
static int
|
||||
@ -1502,6 +1567,7 @@ qede_get_xstats_names(struct rte_eth_dev *dev,
|
||||
__rte_unused unsigned int limit)
|
||||
{
|
||||
struct qede_dev *qdev = dev->data->dev_private;
|
||||
struct ecore_dev *edev = &qdev->edev;
|
||||
const unsigned int stat_cnt = qede_get_xstats_count(qdev);
|
||||
unsigned int i, qid, stat_idx = 0;
|
||||
unsigned int rxq_stat_cntrs;
|
||||
@ -1515,6 +1581,24 @@ qede_get_xstats_names(struct rte_eth_dev *dev,
|
||||
stat_idx++;
|
||||
}
|
||||
|
||||
if (ECORE_IS_BB(edev)) {
|
||||
for (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) {
|
||||
snprintf(xstats_names[stat_idx].name,
|
||||
sizeof(xstats_names[stat_idx].name),
|
||||
"%s",
|
||||
qede_bb_xstats_strings[i].name);
|
||||
stat_idx++;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) {
|
||||
snprintf(xstats_names[stat_idx].name,
|
||||
sizeof(xstats_names[stat_idx].name),
|
||||
"%s",
|
||||
qede_ah_xstats_strings[i].name);
|
||||
stat_idx++;
|
||||
}
|
||||
}
|
||||
|
||||
rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
|
||||
RTE_ETHDEV_QUEUE_STAT_CNTRS);
|
||||
for (qid = 0; qid < rxq_stat_cntrs; qid++) {
|
||||
@ -1555,6 +1639,24 @@ qede_get_xstats(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
|
||||
stat_idx++;
|
||||
}
|
||||
|
||||
if (ECORE_IS_BB(edev)) {
|
||||
for (i = 0; i < RTE_DIM(qede_bb_xstats_strings); i++) {
|
||||
xstats[stat_idx].value =
|
||||
*(uint64_t *)(((char *)&stats) +
|
||||
qede_bb_xstats_strings[i].offset);
|
||||
xstats[stat_idx].id = stat_idx;
|
||||
stat_idx++;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < RTE_DIM(qede_ah_xstats_strings); i++) {
|
||||
xstats[stat_idx].value =
|
||||
*(uint64_t *)(((char *)&stats) +
|
||||
qede_ah_xstats_strings[i].offset);
|
||||
xstats[stat_idx].id = stat_idx;
|
||||
stat_idx++;
|
||||
}
|
||||
}
|
||||
|
||||
rxq_stat_cntrs = RTE_MIN(QEDE_RSS_COUNT(qdev),
|
||||
RTE_ETHDEV_QUEUE_STAT_CNTRS);
|
||||
for (qid = 0; qid < rxq_stat_cntrs; qid++) {
|
||||
|
Loading…
Reference in New Issue
Block a user