Add some new event counters.

Add the following counters for 82575 and newer except 80003, ICHs and PCHs:
    - Only 82576 document describes about the circuit breaker,
      so the following two might be only for 82575:
        - Circuit Breaker TX Manageability Packet
        - Circuit Breaker RX Dropped Packet
    - 82575's document doesn't describe the following two, but we can see
      the same value as GO{T,R}C have:
        - Host Good Octets RX
        - Host Good Octets TX
    - 82575's document doesn't describe the LENERRS (Length Errors) counter.
      I don't know if it has.
    - Perhaps Non-SerDes/SGMII devices don't have SCVPC
      (SerDes/SGMII Code Violation Packet) register. We don't care if
      it's SerDes/SGMII or not for now.
    - HRMPC (Header Redirection Missed Packet) appears only once
      in 8257[56]'s datasheet. FreeBSD's igb counts it, so we do, too.
    - Count the following two for I350 and newer. I don't know if PCHs have:
        - EEE TX LPI
        - EEE RX LPI
This commit is contained in:
msaitoh 2023-05-11 07:19:02 +00:00
parent 94358c7ac6
commit 87132aa835
2 changed files with 91 additions and 15 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_wm.c,v 1.775 2023/05/11 07:14:46 msaitoh Exp $ */ /* $NetBSD: if_wm.c,v 1.776 2023/05/11 07:19:02 msaitoh Exp $ */
/* /*
* Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc. * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@ -82,7 +82,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.775 2023/05/11 07:14:46 msaitoh Exp $"); __KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.776 2023/05/11 07:19:02 msaitoh Exp $");
#ifdef _KERNEL_OPT #ifdef _KERNEL_OPT
#include "opt_if_wm.h" #include "opt_if_wm.h"
@ -601,6 +601,7 @@ struct wm_softc {
struct evcnt sc_ev_mcc; /* Multiple Collision */ struct evcnt sc_ev_mcc; /* Multiple Collision */
struct evcnt sc_ev_latecol; /* Late Collision */ struct evcnt sc_ev_latecol; /* Late Collision */
struct evcnt sc_ev_colc; /* Collision */ struct evcnt sc_ev_colc; /* Collision */
struct evcnt sc_ev_cbtmpc; /* Circuit Breaker Tx Mng. Packet */
struct evcnt sc_ev_dc; /* Defer */ struct evcnt sc_ev_dc; /* Defer */
struct evcnt sc_ev_tncrs; /* Tx-No CRS */ struct evcnt sc_ev_tncrs; /* Tx-No CRS */
struct evcnt sc_ev_sec; /* Sequence Error */ struct evcnt sc_ev_sec; /* Sequence Error */
@ -611,6 +612,7 @@ struct wm_softc {
struct evcnt sc_ev_htdpmc; /* Host Tx Discarded Pkts by MAC */ struct evcnt sc_ev_htdpmc; /* Host Tx Discarded Pkts by MAC */
struct evcnt sc_ev_rlec; /* Receive Length Error */ struct evcnt sc_ev_rlec; /* Receive Length Error */
struct evcnt sc_ev_cbrdpc; /* Circuit Breaker Rx Dropped Packet */
struct evcnt sc_ev_prc64; /* Packets Rx (64 bytes) */ struct evcnt sc_ev_prc64; /* Packets Rx (64 bytes) */
struct evcnt sc_ev_prc127; /* Packets Rx (65-127 bytes) */ struct evcnt sc_ev_prc127; /* Packets Rx (65-127 bytes) */
struct evcnt sc_ev_prc255; /* Packets Rx (128-255 bytes) */ struct evcnt sc_ev_prc255; /* Packets Rx (128-255 bytes) */
@ -673,12 +675,17 @@ struct wm_softc {
struct evcnt sc_ev_hgptc; /* Host Good Packets TX */ struct evcnt sc_ev_hgptc; /* Host Good Packets TX */
struct evcnt sc_ev_debug4; /* Debug Counter 4 */ struct evcnt sc_ev_debug4; /* Debug Counter 4 */
struct evcnt sc_ev_htcbdpc; /* Host Tx Circuit Breaker Drp. Pkts */ struct evcnt sc_ev_htcbdpc; /* Host Tx Circuit Breaker Drp. Pkts */
struct evcnt sc_ev_hgorc; /* Host Good Octets Rx */
struct evcnt sc_ev_hgotc; /* Host Good Octets Tx */
struct evcnt sc_ev_lenerrs; /* Length Error */
struct evcnt sc_ev_tlpic; /* EEE Tx LPI */
struct evcnt sc_ev_rlpic; /* EEE Rx LPI */
struct evcnt sc_ev_b2ogprc; /* BMC2OS pkts received by host */ struct evcnt sc_ev_b2ogprc; /* BMC2OS pkts received by host */
struct evcnt sc_ev_o2bspc; /* OS2BMC pkts transmitted by host */ struct evcnt sc_ev_o2bspc; /* OS2BMC pkts transmitted by host */
struct evcnt sc_ev_b2ospc; /* BMC2OS pkts sent by BMC */ struct evcnt sc_ev_b2ospc; /* BMC2OS pkts sent by BMC */
struct evcnt sc_ev_o2bgptc; /* OS2BMC pkts received by BMC */ struct evcnt sc_ev_o2bgptc; /* OS2BMC pkts received by BMC */
struct evcnt sc_ev_scvpc; /* SerDes/SGMII Code Violation Pkt. */
struct evcnt sc_ev_hrmpc; /* Header Redirection Missed Packet */
#endif /* WM_EVENT_COUNTERS */ #endif /* WM_EVENT_COUNTERS */
struct sysctllog *sc_sysctllog; struct sysctllog *sc_sysctllog;
@ -3262,6 +3269,9 @@ alloc_retry:
"TCP Segmentation Context Tx Fail"); "TCP Segmentation Context Tx Fail");
else { else {
/* XXX Is the circuit breaker only for 82576? */ /* XXX Is the circuit breaker only for 82576? */
evcnt_attach_dynamic(&sc->sc_ev_cbrdpc,
EVCNT_TYPE_MISC, NULL, xname,
"Circuit Breaker Rx Dropped Packet");
evcnt_attach_dynamic(&sc->sc_ev_cbrmpc, evcnt_attach_dynamic(&sc->sc_ev_cbrmpc,
EVCNT_TYPE_MISC, NULL, xname, EVCNT_TYPE_MISC, NULL, xname,
"Circuit Breaker Rx Manageability Packet"); "Circuit Breaker Rx Manageability Packet");
@ -3289,6 +3299,11 @@ alloc_retry:
NULL, xname, "Multiple Collision"); NULL, xname, "Multiple Collision");
evcnt_attach_dynamic(&sc->sc_ev_latecol, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_latecol, EVCNT_TYPE_MISC,
NULL, xname, "Late Collisions"); NULL, xname, "Late Collisions");
if ((sc->sc_type >= WM_T_I350) && !WM_IS_ICHPCH(sc))
evcnt_attach_dynamic(&sc->sc_ev_cbtmpc, EVCNT_TYPE_MISC,
NULL, xname, "Circuit Breaker Tx Manageability Packet");
evcnt_attach_dynamic(&sc->sc_ev_dc, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_dc, EVCNT_TYPE_MISC,
NULL, xname, "Defer"); NULL, xname, "Defer");
evcnt_attach_dynamic(&sc->sc_ev_prc64, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_prc64, EVCNT_TYPE_MISC,
@ -3411,8 +3426,19 @@ alloc_retry:
/* XXX Is the circuit breaker only for 82576? */ /* XXX Is the circuit breaker only for 82576? */
evcnt_attach_dynamic(&sc->sc_ev_htcbdpc, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_htcbdpc, EVCNT_TYPE_MISC,
NULL, xname, "Host Tx Circuit Breaker Dropped Packets"); NULL, xname, "Host Tx Circuit Breaker Dropped Packets");
evcnt_attach_dynamic(&sc->sc_ev_hgorc, EVCNT_TYPE_MISC,
NULL, xname, "Host Good Octets Rx");
evcnt_attach_dynamic(&sc->sc_ev_hgotc, EVCNT_TYPE_MISC,
NULL, xname, "Host Good Octets Tx");
evcnt_attach_dynamic(&sc->sc_ev_lenerrs, EVCNT_TYPE_MISC,
NULL, xname, "Length Errors");
} }
if ((sc->sc_type >= WM_T_I350) && (sc->sc_type < WM_T_80003)) { if ((sc->sc_type >= WM_T_I350) && !WM_IS_ICHPCH(sc)) {
evcnt_attach_dynamic(&sc->sc_ev_tlpic, EVCNT_TYPE_MISC,
NULL, xname, "EEE Tx LPI");
evcnt_attach_dynamic(&sc->sc_ev_rlpic, EVCNT_TYPE_MISC,
NULL, xname, "EEE Rx LPI");
evcnt_attach_dynamic(&sc->sc_ev_b2ogprc, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_b2ogprc, EVCNT_TYPE_MISC,
NULL, xname, "BMC2OS Packets received by host"); NULL, xname, "BMC2OS Packets received by host");
evcnt_attach_dynamic(&sc->sc_ev_o2bspc, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_o2bspc, EVCNT_TYPE_MISC,
@ -3421,6 +3447,10 @@ alloc_retry:
NULL, xname, "BMC2OS Packets sent by BMC"); NULL, xname, "BMC2OS Packets sent by BMC");
evcnt_attach_dynamic(&sc->sc_ev_o2bgptc, EVCNT_TYPE_MISC, evcnt_attach_dynamic(&sc->sc_ev_o2bgptc, EVCNT_TYPE_MISC,
NULL, xname, "OS2BMC Packets received by BMC"); NULL, xname, "OS2BMC Packets received by BMC");
evcnt_attach_dynamic(&sc->sc_ev_scvpc, EVCNT_TYPE_MISC,
NULL, xname, "SerDes/SGMII Code Violation Packet");
evcnt_attach_dynamic(&sc->sc_ev_hrmpc, EVCNT_TYPE_MISC,
NULL, xname, "Header Redirection Missed Packet");
} }
#endif /* WM_EVENT_COUNTERS */ #endif /* WM_EVENT_COUNTERS */
@ -3488,8 +3518,10 @@ wm_detach(device_t self, int flags __unused)
evcnt_detach(&sc->sc_ev_tsctc); evcnt_detach(&sc->sc_ev_tsctc);
if ((sc->sc_type < WM_T_82575) || WM_IS_ICHPCH(sc)) if ((sc->sc_type < WM_T_82575) || WM_IS_ICHPCH(sc))
evcnt_detach(&sc->sc_ev_tsctfc); evcnt_detach(&sc->sc_ev_tsctfc);
else else {
evcnt_detach(&sc->sc_ev_cbrdpc);
evcnt_detach(&sc->sc_ev_cbrmpc); evcnt_detach(&sc->sc_ev_cbrmpc);
}
} }
if (sc->sc_type >= WM_T_82542_2_1) { if (sc->sc_type >= WM_T_82542_2_1) {
@ -3504,6 +3536,10 @@ wm_detach(device_t self, int flags __unused)
evcnt_detach(&sc->sc_ev_ecol); evcnt_detach(&sc->sc_ev_ecol);
evcnt_detach(&sc->sc_ev_mcc); evcnt_detach(&sc->sc_ev_mcc);
evcnt_detach(&sc->sc_ev_latecol); evcnt_detach(&sc->sc_ev_latecol);
if ((sc->sc_type >= WM_T_I350) && !WM_IS_ICHPCH(sc))
evcnt_detach(&sc->sc_ev_cbtmpc);
evcnt_detach(&sc->sc_ev_dc); evcnt_detach(&sc->sc_ev_dc);
evcnt_detach(&sc->sc_ev_prc64); evcnt_detach(&sc->sc_ev_prc64);
evcnt_detach(&sc->sc_ev_prc127); evcnt_detach(&sc->sc_ev_prc127);
@ -3558,12 +3594,20 @@ wm_detach(device_t self, int flags __unused)
evcnt_detach(&sc->sc_ev_debug4); evcnt_detach(&sc->sc_ev_debug4);
evcnt_detach(&sc->sc_ev_rxdmtc); evcnt_detach(&sc->sc_ev_rxdmtc);
evcnt_detach(&sc->sc_ev_htcbdpc); evcnt_detach(&sc->sc_ev_htcbdpc);
evcnt_detach(&sc->sc_ev_hgorc);
evcnt_detach(&sc->sc_ev_hgotc);
evcnt_detach(&sc->sc_ev_lenerrs);
} }
if ((sc->sc_type >= WM_T_I350) && (sc->sc_type < WM_T_80003)) { if ((sc->sc_type >= WM_T_I350) && !WM_IS_ICHPCH(sc)) {
evcnt_detach(&sc->sc_ev_tlpic);
evcnt_detach(&sc->sc_ev_rlpic);
evcnt_detach(&sc->sc_ev_b2ogprc); evcnt_detach(&sc->sc_ev_b2ogprc);
evcnt_detach(&sc->sc_ev_o2bspc); evcnt_detach(&sc->sc_ev_o2bspc);
evcnt_detach(&sc->sc_ev_b2ospc); evcnt_detach(&sc->sc_ev_b2ospc);
evcnt_detach(&sc->sc_ev_o2bgptc); evcnt_detach(&sc->sc_ev_o2bgptc);
evcnt_detach(&sc->sc_ev_scvpc);
evcnt_detach(&sc->sc_ev_hrmpc);
} }
#endif /* WM_EVENT_COUNTERS */ #endif /* WM_EVENT_COUNTERS */
@ -3895,10 +3939,16 @@ wm_tick(void *arg)
WM_EVCNT_ADD(&sc->sc_ev_tx_xoff, CSR_READ(sc, WMREG_XOFFTXC)); WM_EVCNT_ADD(&sc->sc_ev_tx_xoff, CSR_READ(sc, WMREG_XOFFTXC));
WM_EVCNT_ADD(&sc->sc_ev_rx_macctl, CSR_READ(sc, WMREG_FCRUC)); WM_EVCNT_ADD(&sc->sc_ev_rx_macctl, CSR_READ(sc, WMREG_FCRUC));
} }
WM_EVCNT_ADD(&sc->sc_ev_scc, CSR_READ(sc, WMREG_SCC)); WM_EVCNT_ADD(&sc->sc_ev_scc, CSR_READ(sc, WMREG_SCC));
WM_EVCNT_ADD(&sc->sc_ev_ecol, CSR_READ(sc, WMREG_ECOL)); WM_EVCNT_ADD(&sc->sc_ev_ecol, CSR_READ(sc, WMREG_ECOL));
WM_EVCNT_ADD(&sc->sc_ev_mcc, CSR_READ(sc, WMREG_MCC)); WM_EVCNT_ADD(&sc->sc_ev_mcc, CSR_READ(sc, WMREG_MCC));
WM_EVCNT_ADD(&sc->sc_ev_latecol, CSR_READ(sc, WMREG_LATECOL)); WM_EVCNT_ADD(&sc->sc_ev_latecol, CSR_READ(sc, WMREG_LATECOL));
if ((sc->sc_type >= WM_T_I350) && !WM_IS_ICHPCH(sc)) {
WM_EVCNT_ADD(&sc->sc_ev_cbtmpc, CSR_READ(sc, WMREG_CBTMPC));
}
WM_EVCNT_ADD(&sc->sc_ev_dc, CSR_READ(sc, WMREG_DC)); WM_EVCNT_ADD(&sc->sc_ev_dc, CSR_READ(sc, WMREG_DC));
WM_EVCNT_ADD(&sc->sc_ev_prc64, CSR_READ(sc, WMREG_PRC64)); WM_EVCNT_ADD(&sc->sc_ev_prc64, CSR_READ(sc, WMREG_PRC64));
WM_EVCNT_ADD(&sc->sc_ev_prc127, CSR_READ(sc, WMREG_PRC127)); WM_EVCNT_ADD(&sc->sc_ev_prc127, CSR_READ(sc, WMREG_PRC127));
@ -3975,14 +4025,30 @@ wm_tick(void *arg)
WM_EVCNT_ADD(&sc->sc_ev_debug4, CSR_READ(sc, WMREG_DEBUG4)); WM_EVCNT_ADD(&sc->sc_ev_debug4, CSR_READ(sc, WMREG_DEBUG4));
WM_EVCNT_ADD(&sc->sc_ev_rxdmtc, CSR_READ(sc, WMREG_RXDMTC)); WM_EVCNT_ADD(&sc->sc_ev_rxdmtc, CSR_READ(sc, WMREG_RXDMTC));
WM_EVCNT_ADD(&sc->sc_ev_htcbdpc, CSR_READ(sc, WMREG_HTCBDPC)); WM_EVCNT_ADD(&sc->sc_ev_htcbdpc, CSR_READ(sc, WMREG_HTCBDPC));
}
if (((sc->sc_type >= WM_T_I350) && (sc->sc_type < WM_T_80003)) WM_EVCNT_ADD(&sc->sc_ev_hgorc,
&& ((CSR_READ(sc, WMREG_MANC) & MANC_EN_BMC2OS) != 0)) { CSR_READ(sc, WMREG_HGORCL) +
WM_EVCNT_ADD(&sc->sc_ev_b2ogprc, CSR_READ(sc, WMREG_B2OGPRC)); ((uint64_t)CSR_READ(sc, WMREG_HGORCH) << 32));
WM_EVCNT_ADD(&sc->sc_ev_o2bspc, CSR_READ(sc, WMREG_O2BSPC)); WM_EVCNT_ADD(&sc->sc_ev_hgotc,
WM_EVCNT_ADD(&sc->sc_ev_b2ospc, CSR_READ(sc, WMREG_B2OSPC)); CSR_READ(sc, WMREG_HGOTCL) +
WM_EVCNT_ADD(&sc->sc_ev_o2bgptc, CSR_READ(sc, WMREG_O2BGPTC)); ((uint64_t)CSR_READ(sc, WMREG_HGOTCH) << 32));
WM_EVCNT_ADD(&sc->sc_ev_lenerrs, CSR_READ(sc, WMREG_LENERRS));
}
if ((sc->sc_type >= WM_T_I350) && (sc->sc_type < WM_T_80003)) {
WM_EVCNT_ADD(&sc->sc_ev_tlpic, CSR_READ(sc, WMREG_TLPIC));
WM_EVCNT_ADD(&sc->sc_ev_rlpic, CSR_READ(sc, WMREG_RLPIC));
if ((CSR_READ(sc, WMREG_MANC) & MANC_EN_BMC2OS) != 0) {
WM_EVCNT_ADD(&sc->sc_ev_b2ogprc,
CSR_READ(sc, WMREG_B2OGPRC));
WM_EVCNT_ADD(&sc->sc_ev_o2bspc,
CSR_READ(sc, WMREG_O2BSPC));
WM_EVCNT_ADD(&sc->sc_ev_b2ospc,
CSR_READ(sc, WMREG_B2OSPC));
WM_EVCNT_ADD(&sc->sc_ev_o2bgptc,
CSR_READ(sc, WMREG_O2BGPTC));
}
WM_EVCNT_ADD(&sc->sc_ev_scvpc, CSR_READ(sc, WMREG_SCVPC));
WM_EVCNT_ADD(&sc->sc_ev_hrmpc, CSR_READ(sc, WMREG_HRMPC));
} }
net_stat_ref_t nsr = IF_STAT_GETREF(ifp); net_stat_ref_t nsr = IF_STAT_GETREF(ifp);
if_statadd_ref(nsr, if_collisions, colc); if_statadd_ref(nsr, if_collisions, colc);

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_wmreg.h,v 1.129 2023/05/11 07:14:46 msaitoh Exp $ */ /* $NetBSD: if_wmreg.h,v 1.130 2023/05/11 07:19:02 msaitoh Exp $ */
/* /*
* Copyright (c) 2001 Wasabi Systems, Inc. * Copyright (c) 2001 Wasabi Systems, Inc.
@ -1152,6 +1152,7 @@ struct livengood_tcpip_ctxdesc {
#define WMREG_MCC 0x401c /* Multiple Collision Count - R/clr */ #define WMREG_MCC 0x401c /* Multiple Collision Count - R/clr */
#define WMREG_LATECOL 0x4020 /* Late Collisions Count - R/clr */ #define WMREG_LATECOL 0x4020 /* Late Collisions Count - R/clr */
#define WMREG_COLC 0x4028 /* Collision Count - R/clr */ #define WMREG_COLC 0x4028 /* Collision Count - R/clr */
#define WMREG_CBTMPC 0x402c /* Circuit Breaker Tx Manageability Packet */
#define WMREG_DC 0x4030 /* Defer Count - R/clr */ #define WMREG_DC 0x4030 /* Defer Count - R/clr */
#define WMREG_TNCRS 0x4034 /* Tx with No CRS - R/clr */ #define WMREG_TNCRS 0x4034 /* Tx with No CRS - R/clr */
#define WMREG_SEC 0x4038 /* Sequence Error Count */ #define WMREG_SEC 0x4038 /* Sequence Error Count */
@ -1162,6 +1163,7 @@ struct livengood_tcpip_ctxdesc {
#define WMREG_HTDPMC 0x403c /* Host Tx Discarded Packets by MAC Count */ #define WMREG_HTDPMC 0x403c /* Host Tx Discarded Packets by MAC Count */
#define WMREG_RLEC 0x4040 /* Receive Length Error Count */ #define WMREG_RLEC 0x4040 /* Receive Length Error Count */
#define WMREG_CBRDPC 0x4044 /* Circuit Breaker Rx Dropped Packet Count */
#define WMREG_XONRXC 0x4048 /* XON Rx Count - R/clr */ #define WMREG_XONRXC 0x4048 /* XON Rx Count - R/clr */
#define WMREG_XONTXC 0x404c /* XON Tx Count - R/clr */ #define WMREG_XONTXC 0x404c /* XON Tx Count - R/clr */
#define WMREG_XOFFRXC 0x4050 /* XOFF Rx Count - R/clr */ #define WMREG_XOFFRXC 0x4050 /* XOFF Rx Count - R/clr */
@ -1230,6 +1232,11 @@ struct livengood_tcpip_ctxdesc {
#define WMREG_DEBUG4 0x411c /* Debug Counter 4 */ #define WMREG_DEBUG4 0x411c /* Debug Counter 4 */
#define WMREG_RXDMTC 0x4120 /* Rx Desc Min Thresh Count */ #define WMREG_RXDMTC 0x4120 /* Rx Desc Min Thresh Count */
#define WMREG_HTCBDPC 0x4124 /* Host Tx Circuit Breaker Dropped Pkt. Cnt. */ #define WMREG_HTCBDPC 0x4124 /* Host Tx Circuit Breaker Dropped Pkt. Cnt. */
#define WMREG_HGORCL 0x4128 /* Host Good Octets Rx Count Low (>=82576?) */
#define WMREG_HGORCH 0x412c /* Host Good Octets Rx Count High (>=82576?) */
#define WMREG_HGOTCL 0x4130 /* Host Good Octets Tx Count Low (>=82576?) */
#define WMREG_HGOTCH 0x4134 /* Host Good Octets Tx Count High (>=82576?) */
#define WMREG_LENERRS 0x4138 /* Length Errors Count (>=82576?) */
#define WMREG_TLPIC 0x4148 /* EEE Tx LPI Count */ #define WMREG_TLPIC 0x4148 /* EEE Tx LPI Count */
#define WMREG_RLPIC 0x414c /* EEE Rx LPI Count */ #define WMREG_RLPIC 0x414c /* EEE Rx LPI Count */
@ -1270,6 +1277,7 @@ struct livengood_tcpip_ctxdesc {
#define WMREG_PCS_ANADV 0x4218 /* AN Advertsement */ #define WMREG_PCS_ANADV 0x4218 /* AN Advertsement */
#define WMREG_PCS_LPAB 0x421c /* Link Partnet Ability */ #define WMREG_PCS_LPAB 0x421c /* Link Partnet Ability */
#define WMREG_PCS_NPTX 0x4220 /* Next Page Transmit */ #define WMREG_PCS_NPTX 0x4220 /* Next Page Transmit */
#define WMREG_SCVPC 0x4228 /* SerDes/SGMII Code Violation Packet Count */
#define WMREG_RXCSUM 0x5000 /* Receive Checksum register */ #define WMREG_RXCSUM 0x5000 /* Receive Checksum register */
#define RXCSUM_PCSS 0x000000ff /* Packet Checksum Start */ #define RXCSUM_PCSS 0x000000ff /* Packet Checksum Start */
@ -1467,6 +1475,8 @@ struct livengood_tcpip_ctxdesc {
#define WMREG_B2OSPC 0x8fe0 /* BMC2OS packets sent by BMC */ #define WMREG_B2OSPC 0x8fe0 /* BMC2OS packets sent by BMC */
#define WMREG_O2BGPTC 0x8fe4 /* OS2BMC packets received by BMC */ #define WMREG_O2BGPTC 0x8fe4 /* OS2BMC packets received by BMC */
#define WMREG_HRMPC 0xa018 /* Header Redirection Missed Packet Count */
#define WMREG_EEC 0x12010 #define WMREG_EEC 0x12010
#define EEC_FLASH_DETECTED __BIT(19) /* FLASH */ #define EEC_FLASH_DETECTED __BIT(19) /* FLASH */
#define EEC_FLUPD __BIT(23) /* Update FLASH */ #define EEC_FLUPD __BIT(23) /* Update FLASH */