MFC r294092
sfxge: rename Huntington MAC methods to EF10 and use for Medford Submitted by: Mark Spender <mspender at solarflare.com> Reviewed by: gnn Sponsored by: Solarflare Communications, Inc.
This commit is contained in:
parent
b93db4d029
commit
75532d9d50
sys/dev/sfxge/common
@ -97,6 +97,7 @@ typedef enum efx_mac_type_e {
|
||||
EFX_MAC_FALCON_XMAC,
|
||||
EFX_MAC_SIENA,
|
||||
EFX_MAC_HUNTINGTON,
|
||||
EFX_MAC_MEDFORD,
|
||||
EFX_MAC_NTYPES
|
||||
} efx_mac_type_t;
|
||||
|
||||
|
@ -113,27 +113,27 @@ static efx_mac_ops_t __efx_siena_mac_ops = {
|
||||
};
|
||||
#endif /* EFSYS_OPT_SIENA */
|
||||
|
||||
#if EFSYS_OPT_HUNTINGTON
|
||||
static efx_mac_ops_t __efx_hunt_mac_ops = {
|
||||
#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
|
||||
static efx_mac_ops_t __efx_ef10_mac_ops = {
|
||||
NULL, /* emo_reset */
|
||||
hunt_mac_poll, /* emo_poll */
|
||||
hunt_mac_up, /* emo_up */
|
||||
hunt_mac_addr_set, /* emo_addr_set */
|
||||
hunt_mac_reconfigure, /* emo_reconfigure */
|
||||
hunt_mac_multicast_list_set, /* emo_multicast_list_set */
|
||||
hunt_mac_filter_default_rxq_set, /* emo_filter_default_rxq_set */
|
||||
hunt_mac_filter_default_rxq_clear,
|
||||
ef10_mac_poll, /* emo_poll */
|
||||
ef10_mac_up, /* emo_up */
|
||||
ef10_mac_addr_set, /* emo_addr_set */
|
||||
ef10_mac_reconfigure, /* emo_reconfigure */
|
||||
ef10_mac_multicast_list_set, /* emo_multicast_list_set */
|
||||
ef10_mac_filter_default_rxq_set, /* emo_filter_default_rxq_set */
|
||||
ef10_mac_filter_default_rxq_clear,
|
||||
/* emo_filter_default_rxq_clear */
|
||||
#if EFSYS_OPT_LOOPBACK
|
||||
hunt_mac_loopback_set, /* emo_loopback_set */
|
||||
ef10_mac_loopback_set, /* emo_loopback_set */
|
||||
#endif /* EFSYS_OPT_LOOPBACK */
|
||||
#if EFSYS_OPT_MAC_STATS
|
||||
efx_mcdi_mac_stats_upload, /* emo_stats_upload */
|
||||
efx_mcdi_mac_stats_periodic, /* emo_stats_periodic */
|
||||
hunt_mac_stats_update /* emo_stats_update */
|
||||
ef10_mac_stats_update /* emo_stats_update */
|
||||
#endif /* EFSYS_OPT_MAC_STATS */
|
||||
};
|
||||
#endif /* EFSYS_OPT_HUNTINGTON */
|
||||
#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
|
||||
|
||||
static efx_mac_ops_t *__efx_mac_ops[] = {
|
||||
/* [EFX_MAC_INVALID] */
|
||||
@ -158,7 +158,13 @@ static efx_mac_ops_t *__efx_mac_ops[] = {
|
||||
#endif
|
||||
/* [EFX_MAC_HUNTINGTON] */
|
||||
#if EFSYS_OPT_HUNTINGTON
|
||||
&__efx_hunt_mac_ops,
|
||||
&__efx_ef10_mac_ops,
|
||||
#else
|
||||
NULL,
|
||||
#endif
|
||||
/* [EFX_MAC_MEDFORD] */
|
||||
#if EFSYS_OPT_MEDFORD
|
||||
&__efx_ef10_mac_ops,
|
||||
#else
|
||||
NULL,
|
||||
#endif
|
||||
@ -781,6 +787,13 @@ efx_mac_select(
|
||||
efx_mac_ops_t *emop;
|
||||
int rc = EINVAL;
|
||||
|
||||
#if EFSYS_OPT_SIENA
|
||||
if (enp->en_family == EFX_FAMILY_SIENA) {
|
||||
type = EFX_MAC_SIENA;
|
||||
goto chosen;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EFSYS_OPT_HUNTINGTON
|
||||
if (enp->en_family == EFX_FAMILY_HUNTINGTON) {
|
||||
type = EFX_MAC_HUNTINGTON;
|
||||
@ -788,9 +801,9 @@ efx_mac_select(
|
||||
}
|
||||
#endif
|
||||
|
||||
#if EFSYS_OPT_SIENA
|
||||
if (enp->en_family == EFX_FAMILY_SIENA) {
|
||||
type = EFX_MAC_SIENA;
|
||||
#if EFSYS_OPT_MEDFORD
|
||||
if (enp->en_family == EFX_FAMILY_MEDFORD) {
|
||||
type = EFX_MAC_MEDFORD;
|
||||
goto chosen;
|
||||
}
|
||||
#endif
|
||||
|
@ -220,41 +220,41 @@ ef10_nic_unprobe(
|
||||
/* MAC */
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_poll(
|
||||
ef10_mac_poll(
|
||||
__in efx_nic_t *enp,
|
||||
__out efx_link_mode_t *link_modep);
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_up(
|
||||
ef10_mac_up(
|
||||
__in efx_nic_t *enp,
|
||||
__out boolean_t *mac_upp);
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_addr_set(
|
||||
ef10_mac_addr_set(
|
||||
__in efx_nic_t *enp);
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_reconfigure(
|
||||
ef10_mac_reconfigure(
|
||||
__in efx_nic_t *enp);
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_multicast_list_set(
|
||||
ef10_mac_multicast_list_set(
|
||||
__in efx_nic_t *enp);
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_filter_default_rxq_set(
|
||||
ef10_mac_filter_default_rxq_set(
|
||||
__in efx_nic_t *enp,
|
||||
__in efx_rxq_t *erp,
|
||||
__in boolean_t using_rss);
|
||||
|
||||
extern void
|
||||
hunt_mac_filter_default_rxq_clear(
|
||||
ef10_mac_filter_default_rxq_clear(
|
||||
__in efx_nic_t *enp);
|
||||
|
||||
#if EFSYS_OPT_LOOPBACK
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_loopback_set(
|
||||
ef10_mac_loopback_set(
|
||||
__in efx_nic_t *enp,
|
||||
__in efx_link_mode_t link_mode,
|
||||
__in efx_loopback_type_t loopback_type);
|
||||
@ -264,7 +264,7 @@ hunt_mac_loopback_set(
|
||||
#if EFSYS_OPT_MAC_STATS
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
hunt_mac_stats_update(
|
||||
ef10_mac_stats_update(
|
||||
__in efx_nic_t *enp,
|
||||
__in efsys_mem_t *esmp,
|
||||
__inout_ecount(EFX_MAC_NSTATS) efsys_stat_t *stat,
|
||||
|
@ -38,15 +38,10 @@ __FBSDID("$FreeBSD$");
|
||||
#if EFSYS_OPT_HUNTINGTON
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_poll(
|
||||
ef10_mac_poll(
|
||||
__in efx_nic_t *enp,
|
||||
__out efx_link_mode_t *link_modep)
|
||||
{
|
||||
/*
|
||||
* TBD: Consider a common Siena/Huntington function. The code is
|
||||
* essentially identical.
|
||||
*/
|
||||
|
||||
efx_port_t *epp = &(enp->en_port);
|
||||
ef10_link_state_t els;
|
||||
efx_rc_t rc;
|
||||
@ -70,21 +65,16 @@ fail1:
|
||||
}
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_up(
|
||||
ef10_mac_up(
|
||||
__in efx_nic_t *enp,
|
||||
__out boolean_t *mac_upp)
|
||||
{
|
||||
/*
|
||||
* TBD: Consider a common Siena/Huntington function. The code is
|
||||
* essentially identical.
|
||||
*/
|
||||
|
||||
ef10_link_state_t els;
|
||||
efx_rc_t rc;
|
||||
|
||||
/*
|
||||
* Because Huntington doesn't *require* polling, we can't rely on
|
||||
* hunt_mac_poll() being executed to populate epp->ep_mac_up.
|
||||
* Because EF10 doesn't *require* polling, we can't rely on
|
||||
* ef10_mac_poll() being executed to populate epp->ep_mac_up.
|
||||
*/
|
||||
if ((rc = ef10_phy_get_link(enp, &els)) != 0)
|
||||
goto fail1;
|
||||
@ -100,7 +90,7 @@ fail1:
|
||||
}
|
||||
|
||||
/*
|
||||
* Huntington uses MC_CMD_VADAPTOR_SET_MAC to set the
|
||||
* EF10 adapters use MC_CMD_VADAPTOR_SET_MAC to set the
|
||||
* MAC address; the address field in MC_CMD_SET_MAC has no
|
||||
* effect.
|
||||
* MC_CMD_VADAPTOR_SET_MAC requires mac-spoofing privilege and
|
||||
@ -144,7 +134,7 @@ fail1:
|
||||
}
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_addr_set(
|
||||
ef10_mac_addr_set(
|
||||
__in efx_nic_t *enp)
|
||||
{
|
||||
efx_rc_t rc;
|
||||
@ -153,8 +143,11 @@ hunt_mac_addr_set(
|
||||
if (rc != ENOTSUP)
|
||||
goto fail1;
|
||||
|
||||
/* Fallback for older firmware without Vadapter support */
|
||||
if ((rc = hunt_mac_reconfigure(enp)) != 0)
|
||||
/*
|
||||
* Fallback for older Huntington firmware without Vadapter
|
||||
* support.
|
||||
*/
|
||||
if ((rc = ef10_mac_reconfigure(enp)) != 0)
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
@ -170,7 +163,7 @@ fail1:
|
||||
}
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_reconfigure(
|
||||
ef10_mac_reconfigure(
|
||||
__in efx_nic_t *enp)
|
||||
{
|
||||
efx_port_t *epp = &(enp->en_port);
|
||||
@ -197,6 +190,8 @@ hunt_mac_reconfigure(
|
||||
* from reaching the filters. As Huntington filters drop any
|
||||
* traffic that does not match a filter it is ok to leave the
|
||||
* MAC running in promiscuous mode. See bug41141.
|
||||
*
|
||||
* FIXME: Does REJECT_UNCST behave the same way on Medford?
|
||||
*/
|
||||
MCDI_IN_POPULATE_DWORD_2(req, SET_MAC_IN_REJECT,
|
||||
SET_MAC_IN_REJECT_UNCST, 0,
|
||||
@ -247,16 +242,15 @@ fail1:
|
||||
}
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_multicast_list_set(
|
||||
ef10_mac_multicast_list_set(
|
||||
__in efx_nic_t *enp)
|
||||
{
|
||||
efx_port_t *epp = &(enp->en_port);
|
||||
efx_mac_ops_t *emop = epp->ep_emop;
|
||||
efx_rc_t rc;
|
||||
|
||||
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON);
|
||||
|
||||
/* FIXME: Insert filters for multicast list */
|
||||
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
|
||||
enp->en_family == EFX_FAMILY_MEDFORD);
|
||||
|
||||
if ((rc = emop->emo_reconfigure(enp)) != 0)
|
||||
goto fail1;
|
||||
@ -270,7 +264,7 @@ fail1:
|
||||
}
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_filter_default_rxq_set(
|
||||
ef10_mac_filter_default_rxq_set(
|
||||
__in efx_nic_t *enp,
|
||||
__in efx_rxq_t *erp,
|
||||
__in boolean_t using_rss)
|
||||
@ -304,7 +298,7 @@ fail1:
|
||||
}
|
||||
|
||||
void
|
||||
hunt_mac_filter_default_rxq_clear(
|
||||
ef10_mac_filter_default_rxq_clear(
|
||||
__in efx_nic_t *enp)
|
||||
{
|
||||
efx_port_t *epp = &(enp->en_port);
|
||||
@ -322,23 +316,18 @@ hunt_mac_filter_default_rxq_clear(
|
||||
#if EFSYS_OPT_LOOPBACK
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_loopback_set(
|
||||
ef10_mac_loopback_set(
|
||||
__in efx_nic_t *enp,
|
||||
__in efx_link_mode_t link_mode,
|
||||
__in efx_loopback_type_t loopback_type)
|
||||
{
|
||||
/*
|
||||
* TBD: Consider a common Siena/Huntington function. The code is
|
||||
* essentially identical.
|
||||
*/
|
||||
|
||||
efx_port_t *epp = &(enp->en_port);
|
||||
efx_phy_ops_t *epop = epp->ep_epop;
|
||||
efx_loopback_type_t old_loopback_type;
|
||||
efx_link_mode_t old_loopback_link_mode;
|
||||
efx_rc_t rc;
|
||||
|
||||
/* The PHY object handles this on Huntington */
|
||||
/* The PHY object handles this on EF10 */
|
||||
old_loopback_type = epp->ep_loopback_type;
|
||||
old_loopback_link_mode = epp->ep_loopback_link_mode;
|
||||
epp->ep_loopback_type = loopback_type;
|
||||
@ -362,12 +351,12 @@ fail1:
|
||||
|
||||
#if EFSYS_OPT_MAC_STATS
|
||||
|
||||
#define HUNT_MAC_STAT_READ(_esmp, _field, _eqp) \
|
||||
#define EF10_MAC_STAT_READ(_esmp, _field, _eqp) \
|
||||
EFSYS_MEM_READQ((_esmp), (_field) * sizeof (efx_qword_t), _eqp)
|
||||
|
||||
|
||||
__checkReturn efx_rc_t
|
||||
hunt_mac_stats_update(
|
||||
ef10_mac_stats_update(
|
||||
__in efx_nic_t *enp,
|
||||
__in efsys_mem_t *esmp,
|
||||
__inout_ecount(EFX_MAC_NSTATS) efsys_stat_t *stat,
|
||||
@ -381,301 +370,301 @@ hunt_mac_stats_update(
|
||||
|
||||
/* Read END first so we don't race with the MC */
|
||||
EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFX_MAC_STATS_SIZE);
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_END,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_END,
|
||||
&generation_end);
|
||||
EFSYS_MEM_READ_BARRIER();
|
||||
|
||||
/* TX */
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_CONTROL_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_CONTROL_PKTS, &value);
|
||||
EFSYS_STAT_SUBR_QWORD(&(stat[EFX_MAC_TX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_PAUSE_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_PAUSE_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_PAUSE_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_UNICAST_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_UNICAST_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_UNICST_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_MULTICAST_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_MULTICAST_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_MULTICST_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_BROADCAST_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_BROADCAST_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_BRDCST_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_BYTES, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_BYTES, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_OCTETS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_LT64_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_LT64_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_LE_64_PKTS]), &value);
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_64_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_64_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_LE_64_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_65_TO_127_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_65_TO_127_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_65_TO_127_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_128_TO_255_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_128_TO_255_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_128_TO_255_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_256_TO_511_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_256_TO_511_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_256_TO_511_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_512_TO_1023_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_512_TO_1023_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_512_TO_1023_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_1024_TO_15XX_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_1024_TO_15XX_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_1024_TO_15XX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_15XX_TO_JUMBO_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_15XX_TO_JUMBO_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_GE_15XX_PKTS]), &value);
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_GTJUMBO_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_GTJUMBO_PKTS, &value);
|
||||
EFSYS_STAT_INCR_QWORD(&(stat[EFX_MAC_TX_GE_15XX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_BAD_FCS_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_BAD_FCS_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_ERRORS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_SINGLE_COLLISION_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_SINGLE_COLLISION_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_SGL_COL_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_MULTIPLE_COLLISION_PKTS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_MULTIPLE_COLLISION_PKTS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_MULT_COL_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_EXCESSIVE_COLLISION_PKTS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_EXCESSIVE_COLLISION_PKTS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_EX_COL_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_LATE_COLLISION_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_LATE_COLLISION_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_LATE_COL_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_DEFERRED_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_DEFERRED_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_DEF_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_EXCESSIVE_DEFERRED_PKTS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_TX_EXCESSIVE_DEFERRED_PKTS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_TX_EX_DEF_PKTS]), &value);
|
||||
|
||||
/* RX */
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_BYTES, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_BYTES, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_OCTETS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_UNICAST_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_UNICAST_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_UNICST_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_MULTICAST_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_MULTICAST_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_MULTICST_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_BROADCAST_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_BROADCAST_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_BRDCST_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_PAUSE_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_PAUSE_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_PAUSE_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_UNDERSIZE_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_UNDERSIZE_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_LE_64_PKTS]), &value);
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_64_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_64_PKTS, &value);
|
||||
EFSYS_STAT_INCR_QWORD(&(stat[EFX_MAC_RX_LE_64_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_65_TO_127_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_65_TO_127_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_65_TO_127_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_128_TO_255_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_128_TO_255_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_128_TO_255_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_256_TO_511_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_256_TO_511_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_256_TO_511_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_512_TO_1023_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_512_TO_1023_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_512_TO_1023_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_1024_TO_15XX_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_1024_TO_15XX_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_1024_TO_15XX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_15XX_TO_JUMBO_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_15XX_TO_JUMBO_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_GE_15XX_PKTS]), &value);
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_GTJUMBO_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_GTJUMBO_PKTS, &value);
|
||||
EFSYS_STAT_INCR_QWORD(&(stat[EFX_MAC_RX_GE_15XX_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_BAD_FCS_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_BAD_FCS_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_FCS_ERRORS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_OVERFLOW_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_OVERFLOW_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_DROP_EVENTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_FALSE_CARRIER_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_FALSE_CARRIER_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_FALSE_CARRIER_ERRORS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_SYMBOL_ERROR_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_SYMBOL_ERROR_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_SYMBOL_ERRORS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_ALIGN_ERROR_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_ALIGN_ERROR_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_ALIGN_ERRORS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_INTERNAL_ERROR_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_INTERNAL_ERROR_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_INTERNAL_ERRORS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_JABBER_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_JABBER_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_JABBER_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES01_CHAR_ERR, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES01_CHAR_ERR, &value);
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE0_CHAR_ERR]),
|
||||
&(value.eq_dword[0]));
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE1_CHAR_ERR]),
|
||||
&(value.eq_dword[1]));
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES23_CHAR_ERR, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES23_CHAR_ERR, &value);
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE2_CHAR_ERR]),
|
||||
&(value.eq_dword[0]));
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE3_CHAR_ERR]),
|
||||
&(value.eq_dword[1]));
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES01_DISP_ERR, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES01_DISP_ERR, &value);
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE0_DISP_ERR]),
|
||||
&(value.eq_dword[0]));
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE1_DISP_ERR]),
|
||||
&(value.eq_dword[1]));
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES23_DISP_ERR, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_LANES23_DISP_ERR, &value);
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE2_DISP_ERR]),
|
||||
&(value.eq_dword[0]));
|
||||
EFSYS_STAT_SET_DWORD(&(stat[EFX_MAC_RX_LANE3_DISP_ERR]),
|
||||
&(value.eq_dword[1]));
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_MATCH_FAULT, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_MATCH_FAULT, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_MATCH_FAULT]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_NODESC_DROPS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_NODESC_DROPS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_NODESC_DROP_CNT]), &value);
|
||||
|
||||
/* Packet memory (EF10 only) */
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_TRUNC_BB_OVERFLOW, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_TRUNC_BB_OVERFLOW, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_TRUNC_BB_OVERFLOW]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_BB_OVERFLOW, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_BB_OVERFLOW, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_DISCARD_BB_OVERFLOW]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_TRUNC_VFIFO_FULL, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_TRUNC_VFIFO_FULL, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_TRUNC_VFIFO_FULL]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_VFIFO_FULL, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_VFIFO_FULL, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_DISCARD_VFIFO_FULL]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_TRUNC_QBB, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_TRUNC_QBB, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_TRUNC_QBB]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_QBB, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_QBB, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_DISCARD_QBB]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_MAPPING, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_PM_DISCARD_MAPPING, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_PM_DISCARD_MAPPING]), &value);
|
||||
|
||||
/* RX datapath */
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_Q_DISABLED_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_Q_DISABLED_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RXDP_Q_DISABLED_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_DI_DROPPED_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_DI_DROPPED_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RXDP_DI_DROPPED_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_STREAMING_PKTS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_STREAMING_PKTS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RXDP_STREAMING_PKTS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_HLB_FETCH_CONDITIONS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_HLB_FETCH_CONDITIONS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RXDP_HLB_FETCH]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_HLB_WAIT_CONDITIONS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_RXDP_HLB_WAIT_CONDITIONS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RXDP_HLB_WAIT]), &value);
|
||||
|
||||
|
||||
/* VADAPTER RX */
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_UNICAST_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_UNICAST_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_UNICAST_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_UNICAST_BYTES,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_UNICAST_BYTES,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_UNICAST_BYTES]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_MULTICAST_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_MULTICAST_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_MULTICAST_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_MULTICAST_BYTES,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_MULTICAST_BYTES,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_MULTICAST_BYTES]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BROADCAST_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BROADCAST_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_BROADCAST_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BROADCAST_BYTES,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BROADCAST_BYTES,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_BROADCAST_BYTES]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BAD_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BAD_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_BAD_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BAD_BYTES, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_BAD_BYTES, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_BAD_BYTES]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_OVERFLOW, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_RX_OVERFLOW, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_RX_OVERFLOW]), &value);
|
||||
|
||||
/* VADAPTER TX */
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_UNICAST_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_UNICAST_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_UNICAST_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_UNICAST_BYTES,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_UNICAST_BYTES,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_UNICAST_BYTES]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_MULTICAST_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_MULTICAST_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_MULTICAST_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_MULTICAST_BYTES,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_MULTICAST_BYTES,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_MULTICAST_BYTES]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BROADCAST_PACKETS,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BROADCAST_PACKETS,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_BROADCAST_PACKETS]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BROADCAST_BYTES,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BROADCAST_BYTES,
|
||||
&value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_BROADCAST_BYTES]),
|
||||
&value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BAD_PACKETS, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BAD_PACKETS, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_BAD_PACKETS]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BAD_BYTES, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_BAD_BYTES, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_BAD_BYTES]), &value);
|
||||
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_OVERFLOW, &value);
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_OVERFLOW, &value);
|
||||
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_OVERFLOW]), &value);
|
||||
|
||||
|
||||
EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFX_MAC_STATS_SIZE);
|
||||
EFSYS_MEM_READ_BARRIER();
|
||||
HUNT_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_START,
|
||||
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_START,
|
||||
&generation_start);
|
||||
|
||||
/* Check that we didn't read the stats in the middle of a DMA */
|
||||
|
Loading…
x
Reference in New Issue
Block a user