doubao_chat/include_lib/net/uC-HTTPc/include/net_ctr.h

1532 lines
83 KiB
C

/*
*********************************************************************************************************
* uC/TCP-IP
* The Embedded TCP/IP Suite
*
* Copyright 2004-2020 Silicon Laboratories Inc. www.silabs.com
*
* SPDX-License-Identifier: APACHE-2.0
*
* This software is subject to an open source license and is distributed by
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
*
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*
* NETWORK COUNTER MANAGEMENT
*
* Filename : net_ctr.h
* Version : V3.06.00
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*********************************************************************************************************
* MODULE
*********************************************************************************************************
*********************************************************************************************************
*/
#ifndef NET_CTR_MODULE_PRESENT
#define NET_CTR_MODULE_PRESENT
/*
*********************************************************************************************************
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*********************************************************************************************************
*/
#include "net_cfg.h"
#include "net_cfg_net.h"
#include "net_def.h"
#include <cpu.h>
#include "lib_def.h"
/*
*********************************************************************************************************
*********************************************************************************************************
* CONFIGURATION ERRORS
*********************************************************************************************************
*********************************************************************************************************
*/
#ifndef NET_CTR_CFG_STAT_EN
#error "NET_CTR_CFG_STAT_EN not #define'd in 'net_cfg.h'"
#error " [MUST be DEF_DISABLED] "
#error " [ || DEF_ENABLED ] "
#elif ((NET_CTR_CFG_STAT_EN != DEF_DISABLED) && \
(NET_CTR_CFG_STAT_EN != DEF_ENABLED ))
#error "NET_CTR_CFG_STAT_EN illegally #define'd in 'net_cfg.h'"
#error " [MUST be DEF_DISABLED] "
#error " [ || DEF_ENABLED ] "
#endif
#ifndef NET_CTR_CFG_ERR_EN
#error "NET_CTR_CFG_ERR_EN not #define'd in 'net_cfg.h'"
#error " [MUST be DEF_DISABLED] "
#error " [ || DEF_ENABLED ] "
#elif ((NET_CTR_CFG_ERR_EN != DEF_DISABLED) && \
(NET_CTR_CFG_ERR_EN != DEF_ENABLED ))
#error "NET_CTR_CFG_ERR_EN illegally #define'd in 'net_cfg.h'"
#error " [MUST be DEF_DISABLED] "
#error " [ || DEF_ENABLED ] "
#endif
/*
*********************************************************************************************************
*********************************************************************************************************
* DATA TYPES
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* NETWORK COUNTER DATA TYPE
*
* Note(s) : (1) NET_CTR_MIN & NET_CTR_MAX SHOULD be #define'd based on 'NET_CTR' data type declared.
*
* (2) NET_CTR_PCT_NUMER_MAX_TH, NET_CTR_BIT_LO, & NET_CTR_BIT_HI MUST be globally #define'd
* AFTER 'NET_CTR' data type declared.
*
* (3) NET_CTR_PCT_NUMER_MAX_TH #define's the maximum value for a counter that is used as a
* numerator in a percentage calculation. This threshold is required since the numerator in
* a percentage calculation is multiplied by 100 (%) BEFORE division with the denominator :
*
* Numerator * 100%
* Percentage (%) = ----------------
* Denominator
*
* Therefore, the numerator MUST be constrained by this threshold to prevent integer overflow
* from the multiplication BEFORE the division.
*
* (a) The percentage threshold value is calculated as follows :
*
* N
* 2
* Percentage Threshold = ---
* 100
*
* (b) To avoid macro integer overflow, the threshold value is modified by one less "divide-by-2"
* left-shift compensated by dividing the numerator by 50, instead of 100 :
*
* N-1 N
* 2 2 / 2
* Percentage Threshold = ---- = -------
* 50 100 / 2
*********************************************************************************************************
*/
typedef CPU_INT32U NET_CTR; /* Defines max nbr of errs/stats to cnt. */
#define NET_CTR_MIN DEF_INT_32U_MIN_VAL /* Define as min unsigned val (see Note #1). */
#define NET_CTR_MAX DEF_INT_32U_MAX_VAL /* Define as max unsigned val (see Note #1). */
#define NET_CTR_PCT_NUMER_MAX_TH ((NET_CTR)(((NET_CTR)1u << ((sizeof(NET_CTR) * DEF_OCTET_NBR_BITS) - 1u)) / (NET_CTR)50u))
#define NET_CTR_BIT_LO ((NET_CTR)DEF_BIT_00)
#define NET_CTR_BIT_HI ((NET_CTR) ((NET_CTR)1u << ((sizeof(NET_CTR) * DEF_OCTET_NBR_BITS) - 1u)))
/*
*********************************************************************************************************
* NETWORK STATISTIC DATA TYPES
*********************************************************************************************************
*/
/*
*--------------------------------------------------------------------------------------------------------
* INTERFACE 802x STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_802x_stats {
NET_CTR RxCtr;
NET_CTR RxPktCtr; /* Nbr rx'd 802x pkts. */
NET_CTR RxPktDisCtr; /* Nbr rx'd 802x pkts discarded by the interface. */
NET_CTR TxPktCtr; /* Nbr tx'd 802x pkts. */
NET_CTR RxPktBcastCtr; /* Nbr rx'd 802x pkts broadcast to this dest. */
NET_CTR TxPktBcastCtr; /* Nbr tx'd 802x pkts broadcast to multiple dest(s). */
#ifdef NET_MCAST_RX_MODULE_EN
NET_CTR RxPktMcastCtr; /* Nbr rx'd 802x pkts multicast to this dest. */
#endif
#ifdef NET_MCAST_TX_MODULE_EN
NET_CTR TxPktMcastCtr; /* Nbr tx'd 802x pkts multicast to multiple dest(s). */
#endif
} NET_CTR_IF_802x_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* INTERFACE GENERIC STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_stats {
NET_CTR RxNbrOctets; /* Nbr octets rx'd for a specific IF. */
NET_CTR RxNbrOctetsPrev; /* Nbr octets prev rx'd for a specific IF. */
NET_CTR RxNbrOctetsPerSec; /* Nbr rx'd octets per sec for a specific IF. */
NET_CTR RxNbrOctetsPerSecMax; /* Nbr rx'd octets per sec max for a specific IF. */
NET_CTR RxNbrPktCtr; /* Nbr rx'd pkts for a specific IF. */
NET_CTR RxNbrPktCtrPerSec; /* Nbr rx'd pkts per sec for a specific IF. */
NET_CTR RxNbrPktCtrPerSecMax; /* Nbr rx'd pkts per sec max for a specific IF. */
NET_CTR RxNbrPktCtrProcessed; /* Nbr rx'd pkts processed for a specific IF. */
NET_CTR RxNbrPktCtrProcessedPrev; /* Nbr rx'd pkts prev processed for a specific IF. */
NET_CTR TxNbrOctets; /* Nbr octets tx'd for a specific IF. */
NET_CTR TxNbrOctetsPrev; /* Nbr octets prev tx'd for a specific IF. */
NET_CTR TxNbrOctetsPerSec; /* Nbr tx'd octets per sec for a specific IF. */
NET_CTR TxNbrOctetsPerSecMax; /* Nbr tx'd octets per sec max for a specific IF. */
NET_CTR TxNbrPktCtr; /* Nbr tx'd pkts for a specific IF. */
NET_CTR TxNbrPktCtrPerSec; /* Nbr tx'd pkts per sec for a specific IF. */
NET_CTR TxNbrPktCtrPerSecMax; /* Nbr tx'd pkts per sec max for a specific IF. */
NET_CTR TxNbrPktCtrProcessed; /* Nbr tx'd pkts processed for a specific IF. */
NET_CTR TxNbrPktCtrProcessedPrev; /* Nbr tx'd pkts prev processed for a specific IF. */
} NET_CTR_IF_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* LOOPBACK INTERFACE STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_loopback_stats {
NET_CTR RxPktCtr; /* Nbr rx'd loopback pkts. */
NET_CTR RxPktCompCtr; /* Nbr rx'd loopback pkts delivered to supported protocols. */
NET_CTR TxPktCtr; /* Nbr tx'd loopback pkts. */
} NET_CTR_IF_LOOPBACK_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* ETHERNET INTERFACE STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_ether_stats {
NET_CTR_IF_802x_STATS IF_802xCtrs; /* Ether 802x stats ctrs. */
NET_CTR RxPktCtr; /* Nbr rx'd ether pkts. */
NET_CTR TxPktCtr; /* Nbr tx'd ether pkts. */
} NET_CTR_IF_ETHER_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* WIFI INTERFACE STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_wifi_stats {
NET_CTR_IF_802x_STATS IF_802xCtrs; /* Wifi 802x stats ctrs. */
NET_CTR RxPktCtr; /* Nbr rx'd wifi pkts. */
NET_CTR RxMgmtCtr; /* Nbr rx'd wifi mgmt frame. */
NET_CTR RxMgmtCompCtr; /* Nbr rx'd wifi mgmt frame delivered to wifi mgr. */
NET_CTR TxPktCtr; /* Nbr tx'd wifi pkts. */
} NET_CTR_IF_WIFI_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* INTERFACES STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ifs_stats {
NET_CTR_IF_STATS IF[NET_IF_NBR_IF_TOT]; /* IF stat ctrs. */
NET_CTR RxPktCtr; /* Nbr rx'd IF pkts. */
NET_CTR TxPktCtr; /* Nbr tx'd IF pkts. */
NET_CTR TxPktDeallocCtr; /* Nbr tx'd IF pkts successfully dealloc'd. */
#ifdef NET_IF_LOOPBACK_MODULE_EN
NET_CTR_IF_LOOPBACK_STATS Loopback; /* Loopback interfaces statistics. */
#endif
#ifdef NET_IF_ETHER_MODULE_EN
NET_CTR_IF_ETHER_STATS Ether; /* Ethernet interfaces statistics. */
#endif
#ifdef NET_IF_WIFI_MODULE_EN
NET_CTR_IF_WIFI_STATS WiFi; /* WiFi interfaces statistics. */
#endif
#ifdef NET_IF_802x_MODULE_EN
NET_CTR_IF_802x_STATS IFs_802xCtrs; /* 802x interface statistics. */
#endif
} NET_CTR_IFs_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* ARP STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_arp_stats {
NET_CTR RxPktCtr; /* Nbr rx'd ARP pkts. */
NET_CTR RxMsgCompCtr; /* Nbr rx'd ARP msgs successfully processed. */
NET_CTR RxMsgReqCompCtr; /* Nbr rx'd ARP req msgs successfully processed. */
NET_CTR RxMsgReplyCompCtr; /* Nbr rx'd ARP reply msgs successfully processed. */
NET_CTR TxMsgCtr; /* Nbr tx'd ARP msgs. */
NET_CTR TxMsgReqCtr; /* Nbr tx'd ARP req msgs. */
NET_CTR TxMsgReplyCtr; /* Nbr tx'd ARP reply msgs. */
} NET_CTR_ARP_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* NDP STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ndp_stats {
NET_CTR RxMsgCtr;
NET_CTR RxMsgSolNborCtr; /* Nbr rx'd NDP neighbor solicitation msgs. */
NET_CTR RxMsgAdvNborCtr; /* Nbr rx'd NDP neighbor advertisement msgs. */
NET_CTR RxMsgAdvRouterCtr; /* Nbr rx'd NDP router advertisement msgs. */
NET_CTR RxMsgRedirectCtr; /* Nbr rx'd NDP redirect msgs. */
} NET_CTR_NDP_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* IPv4 STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ipv4_stats {
NET_CTR RxPktCtr; /* Nbr rx'd IPv4 datagrams. */
NET_CTR RxDgramCompCtr; /* Nbr rx'd IPv4 datagrams delivered to supported protocols.*/
NET_CTR RxDestLocalHostCtr; /* Nbr rx'd IPv4 datagrams from localhost. */
NET_CTR RxDestBcastCtr; /* Nbr rx'd IPv4 datagrams via broadcast. */
#ifdef NET_IGMP_MODULE_EN
NET_CTR RxDestMcastCtr; /* Nbr rx'd IPv4 datagrams via multicast. */
#endif
NET_CTR RxFragCtr; /* Nbr rx'd IPv4 frags. */
NET_CTR RxFragDgramReasmCtr; /* Nbr rx'd IPv4 frag'd datagrams reasm'd. */
NET_CTR TxDgramCtr; /* Nbr tx'd IPv4 datagrams. */
NET_CTR TxDestThisHostCtr; /* Nbr tx'd IPv4 datagrams to this host. */
NET_CTR TxDestLocalHostCtr; /* Nbr tx'd IPv4 datagrams to localhost. */
NET_CTR TxDestLocalLinkCtr; /* Nbr tx'd IPv4 datagrams to local link addr(s).*/
NET_CTR TxDestLocalNetCtr; /* Nbr tx'd IPv4 datagrams to local net. */
NET_CTR TxDestRemoteNetCtr; /* Nbr tx'd IPv4 datagrams to remote net. */
NET_CTR TxDestBcastCtr; /* Nbr tx'd IPv4 datagrams broadcast to dest(s). */
#ifdef NET_MCAST_MODULE_EN
NET_CTR TxDestMcastCtr; /* Nbr tx'd IPv4 datagrams multicast to dest(s). */
#endif
} NET_CTR_IPv4_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* IPv6 STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ipv6_stats {
NET_CTR RxPktCtr; /* Nbr rx'd IPv6 datagrams. */
NET_CTR RxDgramCompCtr; /* Nbr rx'd IPv6 datagrams delivered to supported protocols.*/
NET_CTR RxDestLocalHostCtr; /* Nbr rx'd IPv6 datagrams from localhost. */
NET_CTR RxDestBcastCtr; /* Nbr rx'd IPv6 datagrams via broadcast. */
NET_CTR RxFragCtr; /* Nbr rx'd IPv6 frags. */
NET_CTR RxFragDgramReasmCtr; /* Nbr rx'd IPv6 frag'd datagrams reasm'd. */
NET_CTR TxDgramCtr; /* Nbr tx'd IPv6 datagrams. */
NET_CTR TxDestThisHostCtr; /* Nbr tx'd IPv6 datagrams to this host. */
NET_CTR TxDestLocalHostCtr; /* Nbr tx'd IPv6 datagrams to localhost. */
NET_CTR TxDestLocalLinkCtr; /* Nbr tx'd IPv6 datagrams to local link addr(s).*/
NET_CTR TxDestLocalNetCtr; /* Nbr tx'd IPv6 datagrams to local net. */
NET_CTR TxDestRemoteNetCtr; /* Nbr tx'd IPv6 datagrams to remote net. */
NET_CTR TxDestBcastCtr; /* Nbr tx'd IPv6 datagrams broadcast to dest(s). */
} NET_CTR_IPv6_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* ICMPv4 STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_icmpv4_stats {
NET_CTR RxMsgCtr; /* Nbr rx'd ICMPv4 msgs. */
NET_CTR RxMsgCompCtr; /* Nbr rx'd ICMPv4 msgs successfully processed. */
NET_CTR RxMsgErrCtr; /* Nbr rx'd ICMPv4 err msgs successfully processed. */
NET_CTR RxMsgReqCtr; /* Nbr rx'd ICMPv4 req msgs successfully processed. */
NET_CTR RxMsgReplyCtr; /* Nbr rx'd ICMPv4 reply msgs successfully processed. */
NET_CTR RxMsgUnknownCtr;
NET_CTR TxMsgCtr; /* Nbr tx'd ICMPv4 msgs. */
NET_CTR TxMsgErrCtr; /* Nbr tx'd ICMPv4 err msgs. */
NET_CTR TxMsgReqCtr; /* Nbr tx'd ICMPv4 req msgs. */
NET_CTR TxMsgReplyCtr; /* Nbr tx'd ICMPv4 reply msgs. */
} NET_CTR_ICMPv4_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* ICMPv6 STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_icmpv6_stats {
NET_CTR RxMsgCtr; /* Nbr rx'd ICMPv6 msgs. */
NET_CTR RxMsgCompCtr; /* Nbr rx'd ICMPv6 msgs successfully processed. */
NET_CTR RxMsgErrCtr; /* Nbr rx'd ICMPv6 err msgs successfully processed. */
NET_CTR RxMsgReqCtr; /* Nbr rx'd ICMPv6 req msgs successfully processed. */
NET_CTR RxMsgReplyCtr; /* Nbr rx'd ICMPv6 reply msgs successfully processed. */
NET_CTR RxMsgUnknownCtr;
NET_CTR TxMsgCtr; /* Nbr tx'd ICMPv6 msgs. */
NET_CTR TxMsgErrCtr; /* Nbr tx'd ICMPv6 err msgs. */
NET_CTR TxMsgReqCtr; /* Nbr tx'd ICMPv6 req msgs. */
NET_CTR TxMsgReplyCtr; /* Nbr tx'd ICMPv6 reply msgs. */
} NET_CTR_ICMPv6_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* IGMP STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_igmp_stats {
NET_CTR RxMsgCtr; /* Nbr rx'd IGMP msgs. */
NET_CTR RxMsgCompCtr; /* Nbr rx'd IGMP msgs successfully processed. */
NET_CTR RxMsgQueryCtr; /* Nbr rx'd IGMP query msgs successfully processed. */
NET_CTR RxMsgReportCtr; /* Nbr rx'd IGMP report msgs successfully processed. */
NET_CTR TxMsgCtr; /* Nbr tx'd IGMP msgs. */
NET_CTR TxMsgReportCtr; /* Nbr tx'd IGMP report msgs. */
} NET_CTR_IGMP_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* MLDP STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_mldp_stats {
NET_CTR RxMsgCtr; /* Nbr rx'd MLDP msgs. */
NET_CTR RxMsgCompCtr; /* Nbr rx'd MLDP msgs successfully processed. */
NET_CTR RxMsgQueryCtr; /* Nbr rx'd MLDP query msgs successfully processed. */
NET_CTR RxMsgReportCtr; /* Nbr rx'd MLDP report msgs successfully processed. */
NET_CTR TxMsgCtr; /* Nbr tx'd MLDP msgs. */
NET_CTR TxMsgReportCtr; /* Nbr tx'd MLDP report msgs. */
} NET_CTR_MLDP_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* UDP STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_udp_stats {
NET_CTR RxPktCtr; /* Nbr rx'd UDP datagrams. */
NET_CTR RxDgramCompCtr; /* Nbr rx'd UDP datagrams delivered to app layer. */
NET_CTR TxDgramCtr; /* Nbr tx'd UDP datagrams. */
} NET_CTR_UDP_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* TCP STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_tcp_stats {
NET_CTR RxPktCtr; /* Nbr rx'd TCP segs. */
NET_CTR RxSegCompCtr; /* Nbr rx'd TCP segs demux'd to app conn. */
NET_CTR TxSegCtr; /* Nbr tx'd TCP segs. */
NET_CTR TxSegConnSyncCtr; /* Nbr tx'd TCP conn sync segs. */
NET_CTR TxSegConnCloseCtr; /* Nbr tx'd TCP conn close segs. */
NET_CTR TxSegConnAckCtr; /* Nbr tx'd TCP conn ack segs. */
NET_CTR TxSegConnResetCtr; /* Nbr tx'd TCP conn reset segs. */
NET_CTR TxSegConnProbeCtr; /* Nbr tx'd TCP conn probe segs. */
NET_CTR TxSegConnKAliveCtr; /* Nbr tx'd TCP conn keep-alive segs. */
NET_CTR TxSegConnTxQ_Ctr; /* Nbr tx'd TCP conn tx Q segs. */
NET_CTR TxSegConnReTxQ_Ctr; /* Nbr tx'd TCP conn re-tx Q segs. */
} NET_CTR_TCP_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* SOCKET STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_sock_stats {
NET_CTR RxPktCtr; /* Nbr rx'd sock pkts. */
NET_CTR RxPktCompCtr; /* Nbr rx'd sock pkts delivered to apps. */
} NET_CTR_SOCK_STATS;
/*
*--------------------------------------------------------------------------------------------------------
* STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_stats {
NET_CTR_IFs_STATS IFs;
#ifdef NET_ARP_MODULE_EN
NET_CTR_ARP_STATS ARP;
#endif
#ifdef NET_NDP_MODULE_EN
NET_CTR_NDP_STATS NDP;
#endif
#ifdef NET_IPv4_MODULE_EN
NET_CTR_IPv4_STATS IPv4;
#endif
#ifdef NET_IPv6_MODULE_EN
NET_CTR_IPv6_STATS IPv6;
#endif
#ifdef NET_ICMPv4_MODULE_EN
NET_CTR_ICMPv4_STATS ICMPv4;
#endif
#ifdef NET_ICMPv6_MODULE_EN
NET_CTR_ICMPv6_STATS ICMPv6;
#endif
#ifdef NET_IGMP_MODULE_EN
NET_CTR_IGMP_STATS IGMP;
#endif
#ifdef NET_MLDP_MODULE_EN
NET_CTR_MLDP_STATS MLDP;
#endif
NET_CTR_UDP_STATS UDP;
#ifdef NET_TCP_MODULE_EN
NET_CTR_TCP_STATS TCP;
#endif
NET_CTR_SOCK_STATS Sock;
} NET_CTR_STATS;
/*
*********************************************************************************************************
* NETWORK ERROR DATA TYPES
*********************************************************************************************************
*/
/*
*--------------------------------------------------------------------------------------------------------
* 802x INTERFACE ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_802x_errs {
NET_CTR NullPtrCtr; /* Nbr null Ether IF ptr accesses. */
NET_CTR RxInvFrameCtr; /* Nbr rx'd Ether pkts with invalid frame. */
NET_CTR RxInvAddrDestCtr; /* Nbr rx'd Ether pkts with invalid dest addr. */
NET_CTR RxInvAddrSrcCtr; /* Nbr rx'd Ether pkts with invalid src addr. */
NET_CTR RxInvProtocolCtr; /* Nbr rx'd Ether pkts with invalid/unsupported protocol. */
NET_CTR RxPktDisCtr; /* Nbr rx'd Ether pkts discarded. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR RxInvBufIxCtr; /* Nbr rx'd Ether pkts with invalid buf ix. */
#endif
NET_CTR TxPktDisCtr; /* Nbr tx Ether pkts discarded. */
NET_CTR TxInvProtocolCtr; /* Nbr tx Ether pkts with invalid/unsupported protocol. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR TxInvBufIxCtr; /* Nbr tx Ether pkts with invalid buf ix. */
NET_CTR TxHdrDataLenCtr;
#endif
} NET_CTR_IF_802x_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* INTERFACE GENERIC ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_errs {
NET_CTR BufLostCtr; /* Nbr IF net bufs lost/discarded. */
NET_CTR RxInvProtocolCtr; /* Nbr rx'd IF pkts with invalid/unsupported protocol. */
NET_CTR RxInvBufIxCtr; /* Nbr rx'd IF pkts with invalid buf ix. */
NET_CTR RxPktDisCtr; /* Nbr rx'd IF pkts discarded for a specific IF. */
NET_CTR TxInvProtocolCtr; /* Nbr tx IF pkts with invalid/unsupported protocol. */
NET_CTR TxInvBufIxCtr; /* Nbr tx IF pkts with invalid buf ix. */
NET_CTR TxPktDisCtr; /* Nbr tx IF pkts discarded for a specific IF. */
} NET_CTR_IF_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* LOOPBACK INTERFACE ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_loopback_errs {
NET_CTR RxPktDisCtr; /* Nbr rx'd loopback pkts discarded. */
NET_CTR TxPktDisCtr; /* Nbr tx loopback pkts discarded. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null loopback IF ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
} NET_CTR_IF_LOOPBACK_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* ETHERNET INTERFACE ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_ether_errs {
NET_CTR_IF_802x_ERRS IF_802xCtrs; /* Ether 802x err ctrs. */
NET_CTR RxPktDisCtr; /* Nbr rx'd Ether pkts discarded. */
NET_CTR TxPktDisCtr; /* Nbr tx Ether pkts discarded. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null Ether IF ptr accesses. */
#endif
} NET_CTR_IF_ETHER_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* WIFI INTERFACE ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_if_wifi_errs {
NET_CTR_IF_802x_ERRS IF_802xCtrs; /* Wifi 802x err ctrs. */
NET_CTR RxDisCtr; /* Nbr rx'd Wifi pkts or mgmt frame discarded. */
NET_CTR RxPktDisCtr; /* Nbr rx'd Wifi pkts discarded. */
NET_CTR RxMgmtDisCtr; /* Nbr rx'd Wifi mgmt frame discarded. */
NET_CTR TxPktDisCtr; /* Nbr tx Wifi pkts discarded. */
NET_CTR TxNullPtrCtr; /* Nbr null Wifi IF ptr accesses. */
} NET_CTR_IF_WIFI_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* INTERFACES ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ifs_errs {
NET_CTR_IF_ERRS IF[NET_IF_NBR_IF_TOT]; /* IF-Dev err ctrs. */
NET_CTR RxPktDisCtr; /* Nbr rx'd IF pkts discarded. */
NET_CTR TxPktDeallocCtr; /* Nbr tx'd IF pkts NOT sucessfully dealloc'd. */
NET_CTR TxPktDisCtr; /* Nbr tx'd IF pkts discarded. */
NET_CTR InvTransactionTypeCtr; /* Nbr invalid transaction type accesses. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR NullPtrCtr; /* Nbr null IF ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
#ifdef NET_IF_LOOPBACK_MODULE_EN
NET_CTR_IF_LOOPBACK_ERRS Loopback;
#endif /* NET_IF_LOOPBACK_MODULE_EN */
#ifdef NET_IF_ETHER_MODULE_EN
NET_CTR_IF_ETHER_ERRS Ether;
#endif /* NET_IF_ETHER_MODULE_EN */
#ifdef NET_IF_WIFI_MODULE_EN
NET_CTR_IF_WIFI_ERRS WiFi;
#endif /* NET_IF_WIFI_MODULE_EN */
#ifdef NET_IF_802x_MODULE_EN
NET_CTR_IF_802x_ERRS IFs_802x; /* Sum of 802x interfaces errors. */
#endif /* NET_IF_802x_MODULE_EN */
} NET_CTR_IFs_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* STATISTIC ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
typedef struct net_ctr_stat_errs {
NET_CTR NullPtrCtr; /* Nbr null net stat ptr accesses. */
NET_CTR InvTypeCtr; /* Nbr invalid net stat type accesses. */
} NET_CTR_STATS_ERRS;
#endif
/*
*--------------------------------------------------------------------------------------------------------
* TIMER ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_tmr_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail net tmr accesses. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null net tmr accesses. */
NET_CTR NullFnctCtr; /* Nbr null net tmr fnct accesses. */
NET_CTR NotUsedCtr; /* Nbr unused net tmr accesses. */
NET_CTR InvTypeCtr; /* Nbr invalid net tmr type accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
} NET_CTR_TMR_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* BUFFER MANAGEMENT ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_buf_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail net buf accesses. */
NET_CTR InvTypeCtr; /* Nbr invalid net buf type accesses. */
NET_CTR SizeCtr; /* Nbr net bufs with invalid size. */
NET_CTR LenCtr; /* Nbr net bufs with invalid len. */
NET_CTR InvTransactionTypeCtr;
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null net buf accesses. */
NET_CTR NotUsedCtr; /* Nbr unused net buf accesses. */
NET_CTR IxCtr; /* Nbr net bufs with invalid ix. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
} NET_CTR_BUF_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* CONNECTION MANAGEMENT ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_conn_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail net conn accesses. */
NET_CTR NotUsedCtr; /* Nbr unused net conn accesses. */
NET_CTR CloseCtr; /* Nbr net conn closes. */
NET_CTR InvConnCtr; /* Nbr invalid net conn ID accesses. */
NET_CTR InvConnAddrLenCtr; /* Nbr net conns with invalid addr len. */
NET_CTR InvConnAddrInUseCtr; /* Nbr net conns with addr already in use. */
NET_CTR InvFamilyCtr; /* Nbr net conns with invalid conn family. */
NET_CTR InvProtocolIxCtr; /* Nbr net conns with invalid protocol ix. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null net conn accesses. */
NET_CTR InvTypeCtr; /* Nbr invalid net conn type accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
} NET_CTR_CONN_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* ARP ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_arp_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail ARP cache accesses. */
NET_CTR RxInvHW_TypeCtr; /* Nbr rx'd ARP msgs with invalid hw type. */
NET_CTR RxInvHW_AddrLenCtr; /* Nbr rx'd ARP msgs with invalid hw addr len. */
NET_CTR RxInvHW_AddrCtr; /* Nbr rx'd ARP msgs with invalid hw addr. */
NET_CTR RxInvProtocolTypeCtr; /* Nbr rx'd ARP msgs with invalid protocol type. */
NET_CTR RxInvLenCtr; /* Nbr rx'd ARP msgs with invalid protocol addr len. */
NET_CTR RxInvProtocolAddrCtr; /* Nbr rx'd ARP msgs with invalid protocol addr. */
NET_CTR RxInvOpCodeCtr; /* Nbr rx'd ARP msgs with invalid op code. */
NET_CTR RxInvOpAddrCtr; /* Nbr rx'd ARP msgs with invalid op code/addr. */
NET_CTR RxInvMsgLenCtr; /* Nbr rx'd ARP msgs with invalid msg len. */
NET_CTR RxPktInvDest; /* Nbr rx'd ARP msgs for invalid dest. */
NET_CTR RxPktTargetReplyCtr; /* Nbr rx'd ARP msgs for invalid reply msg dest. */
NET_CTR RxPktDisCtr; /* Nbr rx'd ARP pkts discarded. */
NET_CTR TxInvBufIxCtr; /* Nbr tx ARP pkts with invalid buf ix. */
NET_CTR TxPktDisCtr; /* Nbr tx ARP pkts discarded. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR NullPtrCtr; /* Nbr null ARP ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NotUsedCtr; /* Nbr unused ARP cache accesses. */
NET_CTR InvTypeCtr; /* Nbr invalid ARP cache type accesses. */
NET_CTR RxInvProtocolCtr; /* Nbr rx'd ARP pkts with invalid/unsupported protocol. */
NET_CTR RxInvBufIxCtr; /* Nbr rx ARP pkts with invalid buf ix. */
NET_CTR TxHdrOpCodeCtr; /* Nbr tx ARP msgs with invalid op code. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
} NET_CTR_ARP_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* NDP ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ndp_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail NDP cache accesses. */
NET_CTR RouterNoneAvailCtr; /* Nbr unavail NDP Router pool accesses. */
NET_CTR PrefixNoneAvailCtr; /* Nbr unavail NDP Prefix pool accesses. */
NET_CTR DestCacheNoneAvailCtr; /* Nbr unavail NDP Dest. cache pool accesses. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR InvTypeCtr; /* Nbr invalid NDP cache type accesses. */
NET_CTR NullPtrCtr; /* Nbr null NDP ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
NET_CTR RxNeighborAdvAddrDuplicateCtr;
NET_CTR RxInvalidRouterAdvCtr;
} NET_CTR_NDP_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* CACHE ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_cache_errs {
NET_CTR TxPktDisCtr;
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR NullPtrCtr; /* Nbr null cache ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NotUsedCtr; /* Nbr unused cache accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
} NET_CTR_CACHE_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* IPv4 ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ipv4_errs {
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR NullPtrCtr; /* Nbr null IPv4 ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
NET_CTR CfgInvAddrHostCtr; /* Nbr invalid IPv4 host addr cfg attempts. */
NET_CTR CfgInvGatewayCtr; /* Nbr invalid IPv4 dflt gateway addr cfg attempts. */
NET_CTR CfgInvAddrInUseCtr; /* Nbr in use IPv4 host addr cfg attempts. */
NET_CTR CfgAddrStateCtr; /* Nbr invalid IPv4 addr cfg state accesses. */
NET_CTR CfgAddrNotFoundCtr; /* Nbr invalid IPv4 addr NOT found accesses. */
NET_CTR CfgAddrTblSizeCtr; /* Nbr invalid IPv4 addr cfg tbl size accesses. */
NET_CTR CfgAddrTblEmptyCtr; /* Nbr invalid IPv4 addr cfg tbl empty accesses. */
NET_CTR CfgAddrTblFullCtr; /* Nbr invalid IPv4 addr cfg tbl full accesses. */
NET_CTR RxPktDisCtr; /* Nbr rx'd IPv4 pkts discarded. */
NET_CTR RxInvVerCtr; /* Nbr rx'd IPv4 datagrams with inv IP ver. */
NET_CTR RxInvLenCtr; /* Nbr rx'd IPv4 datagrams with inv hdr len. */
NET_CTR RxInvTotLenCtr; /* Nbr rx'd IPv4 datagrams with inv/inconsistent tot len. */
NET_CTR RxInvFlagsCtr; /* Nbr rx'd IPv4 datagrams with inv flags. */
NET_CTR RxInvFragCtr; /* Nbr rx'd IPv4 datagrams with inv fragmentation. */
NET_CTR RxInvProtocolCtr; /* Nbr rx'd IPv4 datagrams with inv/unsupported protocol. */
NET_CTR RxInvChkSumCtr; /* Nbr rx'd IPv4 datagrams with inv chk sum. */
NET_CTR RxInvAddrSrcCtr; /* Nbr rx'd IPv4 datagrams with inv src addr. */
NET_CTR RxInvOptsCtr; /* Nbr rx'd IPv4 datagrams with unknown/invalid opts. */
NET_CTR RxOptsBufNoneAvailCtr; /* Nbr rx'd IPv4 datagrams with no options buf avail. */
NET_CTR RxOptsBufWrCtr; /* Nbr rx'd IPv4 datagrams with wr options buf err. */
NET_CTR RxDestCtr; /* Nbr rx'd IPv4 datagrams NOT for this IP dest. */
NET_CTR RxDestBcastCtr; /* Nbr rx'd IPv4 datagrams illegally broadcast to this dest.*/
NET_CTR RxFragSizeCtr; /* Nbr rx'd IPv4 frags with invalid size. */
NET_CTR RxFragDisCtr; /* Nbr rx'd IPv4 frags discarded. */
NET_CTR RxFragDgramDisCtr; /* Nbr rx'd IPv4 frag'd datagrams discarded. */
NET_CTR RxFragDgramTimeoutCtr; /* Nbr rx'd IPv4 frag'd datagrams timed out. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR RxInvBufIxCtr; /* Nbr rx IPv4 pkts with invalid buf ix. */
NET_CTR RxInvBufTypeCtr;
NET_CTR RxInvDataLenCtr; /* Nbr rx'd IPv4 datagrams with invalid data len. */
NET_CTR RxInvFragFlagsCtr; /* Nbr rx'd IPv4 frags with invalid flag(s). */
NET_CTR RxInvFragOffsetCtr; /* Nbr rx'd IPv4 frags with invalid offset. */
NET_CTR RxInvIF_Ctr;
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
NET_CTR TxPktDisCtr; /* Nbr tx IPv4 pkts discarded. */
NET_CTR TxInvProtocolCtr; /* Nbr tx IPv4 pkts with invalid/unsupported protocol. */
NET_CTR TxInvOptTypeCtr; /* Nbr tx IPv4 pkts with invalid opt type. */
NET_CTR TxInvDestCtr; /* Nbr tx IPv4 datagrams with invalid dest addr. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR TxInvBufIxCtr; /* Nbr tx IPv4 pkts with invalid buf ix. */
NET_CTR TxInvTOS_Ctr; /* Nbr tx IPv4 datagrams with invalid TOS. */
NET_CTR TxInvTTL_Ctr; /* Nbr tx IPv4 datagrams with invalid TTL. */
NET_CTR TxInvDataLenCtr; /* Nbr tx IPv4 datagrams with invalid protocol/data len. */
NET_CTR TxInvAddrSrcCtr; /* Nbr tx IPv4 datagrams with invalid src addr. */
NET_CTR TxInvAddrDestCtr; /* Nbr tx IPv4 datagrams with invalid dest addr. */
NET_CTR TxInvFlagsCtr; /* Nbr tx IPv4 datagrams with invalid flags. */
NET_CTR TxInvOptLenCtr; /* Nbr tx IPv4 datagrams with invalid opt len. */
NET_CTR TxInvOptCfgCtr; /* Nbr tx IPv4 datagrams with invalid opt cfg. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
} NET_CTR_IPv4_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* IPv6 ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_ipv6_errs {
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR NullPtrCtr; /* Nbr null IPv6 ptr accesses. */
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
NET_CTR CfgInvAddrHostCtr; /* Nbr invalid IPv6 host addr cfg attempts. */
NET_CTR CfgInvAddrInUseCtr; /* Nbr in use IPv6 host addr cfg attempts. */
NET_CTR CfgAddrStateCtr; /* Nbr invalid IPv6 addr cfg state accesses. */
NET_CTR CfgAddrNotFoundCtr; /* Nbr invalid IPv6 addr NOT found accesses. */
NET_CTR CfgAddrTblSizeCtr; /* Nbr invalid IPv6 addr cfg tbl size accesses. */
NET_CTR CfgAddrTblEmptyCtr; /* Nbr invalid IPv6 addr cfg tbl empty accesses. */
NET_CTR CfgAddrTblFullCtr; /* Nbr invalid IPv6 addr cfg tbl full accesses. */
NET_CTR RxPktDisCtr; /* Nbr rx'd IPv6 pkts discarded. */
NET_CTR RxInvVerCtr; /* Nbr rx'd IPv6 datagrams with inv IP ver. */
NET_CTR RxInvTrafficClassCtr; /* Nbr rx'd IPv6 datagrams with inv traffic class. */
NET_CTR RxInvFlowLabelCtr; /* Nbr rx'd IPv6 datagrams with inv flow label. */
NET_CTR RxInvLenCtr; /* Nbr rx'd IPv6 datagrams with inv hdr len. */
NET_CTR RxInvTotLenCtr; /* Nbr rx'd IPv6 datagrams with inv/inconsistent tot len. */
NET_CTR RxInvProtocolCtr; /* Nbr rx'd IPv6 datagrams with inv/unsupported protocol. */
NET_CTR RxInvAddrSrcCtr; /* Nbr rx'd IPv6 datagrams with inv src addr. */
NET_CTR RxInvOptsCtr; /* Nbr rx'd IPv6 datagrams with unknown/invalid opts. */
NET_CTR RxInvDestCtr; /* Nbr rx'd IPv6 datagrams NOT for this IP dest. */
NET_CTR RxFragSizeCtr; /* Nbr rx'd IPv6 frags with invalid size. */
NET_CTR RxFragDisCtr; /* Nbr rx'd IPv6 frags discarded. */
NET_CTR RxFragDgramDisCtr; /* Nbr rx'd IPv6 frag'd datagrams discarded. */
NET_CTR RxFragDgramTimeoutCtr; /* Nbr rx'd IPv6 frag'd datagrams timed out. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR RxInvBufIxCtr; /* Nbr rx IPv6 pkts with invalid buf ix. */
NET_CTR RxInvDataLenCtr; /* Nbr rx'd IPv6 datagrams with invalid data len. */
NET_CTR RxInvFragOffsetCtr; /* Nbr rx'd IPv6 frags with invalid offset. */
NET_CTR RxInvIF_Ctr;
#endif /* NET_ERR_CFG_ARG_CHK_???_EN */
NET_CTR TxPktDisCtr; /* Nbr tx IPv6 pkts discarded. */
NET_CTR TxInvProtocolCtr; /* Nbr tx IPv6 pkts with invalid/unsupported protocol. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR TxInvBufIxCtr; /* Nbr tx IPv6 pkts with invalid buf ix. */
NET_CTR TxInvTTL_Ctr; /* Nbr tx IPv6 datagrams with invalid TTL. */
NET_CTR TxInvDataLenCtr; /* Nbr tx IPv6 datagrams with invalid protocol/data len. */
#endif /* NET_ERR_CFG_ARG_CHK_DBG_EN */
NET_CTR TxInvAddrSrcCtr; /* Nbr tx IPv6 datagrams with invalid src addr. */
NET_CTR AddrStaticCfgFaultCtr; /* Nbr of Static Address Cfg that failed. */
NET_CTR AddrAutoCfgFaultCtrl; /* Nbr of Auto-Cfg Address that failed. */
} NET_CTR_IPv6_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* ICMPv4 ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_icmpv4_errs {
NET_CTR RxPktDiscardedCtr; /* Nbr rx'd ICMPv4 pkts discarded. */
NET_CTR RxInvTypeCtr; /* Nbr rx'd ICMPv4 msgs with unknown/invalid msg type. */
NET_CTR RxInvCodeCtr; /* Nbr rx'd ICMPv4 msgs with unknown/invalid msg code. */
NET_CTR RxInvMsgLenCtr; /* Nbr rx'd ICMPv4 msgs with invalid/inconsistent msg len. */
NET_CTR RxInvPtrCtr; /* Nbr rx'd ICMPv4 msgs with invalid msg ptr. */
NET_CTR RxInvChkSumCtr; /* Nbr rx'd ICMPv4 msgs with invalid chk sum. */
NET_CTR RxBcastCtr; /* Nbr rx'd ICMPv4 msg reqs rx'd via broadcast. */
NET_CTR RxMcastCtr; /* Nbr rx'd ICMPv4 msg reqs rx'd via multicast. */
NET_CTR TxInvalidLenCtr; /* Nbr tx ICMPv4 pkts discarded for invalid len. */
NET_CTR TxHdrTypeCtr; /* Nbr tx ICMPv4 msgs with unknown/invalid msg type. */
NET_CTR TxHdrCodeCtr; /* Nbr tx ICMPv4 msgs with unknown/invalid msg code. */
NET_CTR TxPktDiscardedCtr; /* Nbr tx ICMPv4 pkts discarded. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null ICMPv4 ptr accesses. */
NET_CTR NotUsedCtr; /* Nbr unused ICMPv4 tx src quench entry accesses. */
NET_CTR InvalidTypeCtr; /* Nbr invalid ICMPv4 tx src quench entry type accesses. */
NET_CTR RxInvalidProtocolCtr; /* Nbr rx'd ICMPv4 pkts with invalid/unsupported protocol. */
NET_CTR RxInvalidBufIxCtr; /* Nbr rx ICMPv4 pkts with invalid buf ix. */
NET_CTR RxHdrDataLenCtr; /* Nbr rx'd ICMPv4 msgs with invalid msg data len. */
NET_CTR TxInvalidBufIxCtr; /* Nbr tx ICMPv4 pkts with invalid buf ix. */
NET_CTR TxHdrPtrCtr; /* Nbr tx ICMPv4 msgs with invalid msg ptr. */
#endif
} NET_CTR_ICMPv4_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* ICMPv6 ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_icmp_v6 {
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null ICMPv6 ptr accesses. */
#endif
NET_CTR RxHdrTypeCtr; /* Nbr rx'd ICMPv6 msgs with unknown/invalid msg type. */
NET_CTR RxHdrCodeCtr; /* Nbr rx'd ICMPv6 msgs with unknown/invalid msg code. */
NET_CTR RxHdrMsgLenCtr; /* Nbr rx'd ICMPv6 msgs with invalid/inconsistent msg len. */
NET_CTR RxHdrPtrCtr; /* Nbr rx'd ICMPv6 msgs with invalid msg ptr. */
NET_CTR RxHdrChkSumCtr; /* Nbr rx'd ICMPv6 msgs with invalid chk sum. */
NET_CTR RxMcastCtr; /* Nbr rx'd ICMPv6 msg reqs rx'd via multicast. */
NET_CTR RxPktDiscardedCtr; /* Nbr rx'd ICMPv6 pkts discarded. */
NET_CTR RxInvalidProtocolCtr; /* Nbr rx'd ICMPv6 pkts with invalid/unsupported protocol. */
NET_CTR RxInvalidBufIxCtr; /* Nbr rx ICMPv6 pkts with invalid buf ix. */
NET_CTR RxHdrDataLenCtr; /* Nbr rx'd ICMPv6 msgs with invalid msg data len. */
NET_CTR TxInvalidLenCtr; /* Nbr tx ICMPv6 pkts discarded for invalid len. */
NET_CTR TxHdrTypeCtr; /* Nbr tx ICMPv6 msgs with unknown/invalid msg type. */
NET_CTR TxHdrCodeCtr; /* Nbr tx ICMPv6 msgs with unknown/invalid msg code. */
NET_CTR TxPktDiscardedCtr; /* Nbr tx ICMPv6 pkts discarded. */
NET_CTR TxInvalidBufIxCtr; /* Nbr tx ICMPv6 pkts with invalid buf ix. */
NET_CTR TxHdrPtrCtr; /* Nbr tx ICMPv6 msgs with invalid msg ptr. */
} NET_CTR_ICMPv6_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* IGMP ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_igmp_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail IGMP host group accesses. */
NET_CTR RxHdrTypeCtr; /* Nbr rx'd IGMP msgs with unknown/invalid msg type. */
NET_CTR RxHdrVerCtr; /* Nbr rx'd IGMP msgs with invalid IGMP ver. */
NET_CTR RxHdrMsgLenCtr; /* Nbr rx'd IGMP msgs with invalid msg len. */
NET_CTR RxHdrChkSumCtr; /* Nbr rx'd IGMP msgs with invalid chk sum. */
NET_CTR RxPktInvalidAddrDestCtr; /* Nbr rx'd IGMP msgs with invalid dest addr. */
NET_CTR RxPktDiscardedCtr; /* Nbr rx'd IGMP pkts discarded. */
NET_CTR TxInvalidBufIxCtr; /* Nbr rx IGMP pkts with invalid buf ix. */
NET_CTR TxPktDiscardedCtr; /* Nbr tx IGMP pkts discarded. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR NullPtrCtr; /* Nbr null IGMP ptr accesses. */
NET_CTR InvalidTypeCtr; /* Nbr invalid IGMP host grp type accesses. */
NET_CTR RxInvalidProtocolCtr; /* Nbr rx'd IGMP pkts with invalid/unsupported protocol. */
NET_CTR RxInvalidBufIxCtr; /* Nbr rx IGMP pkts with invalid buf ix. */
#endif
} NET_CTR_IGMP_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* MLDP ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_mldp_errs {
NET_CTR NoneAvailCtr; /* Nbr unavail MLDP host group accesses. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR NullPtrCtr; /* Nbr null MLDP ptr accesses. */
#endif
NET_CTR TxPktDisCtr; /* Nbr tx MLDP pkts discarded. */
} NET_CTR_MLDP_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* UDP ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_udp_errs {
NET_CTR NullPtrCtr; /* Nbr null UDP ptr accesses. */
NET_CTR InvalidFlagsCtr; /* Nbr reqs for invalid UDP flags. */
NET_CTR RxHdrDatagramLenCtr; /* Nbr rx'd UDP datagrams with invalid len. */
NET_CTR RxHdrPortSrcCtr; /* Nbr rx'd UDP datagrams with invalid src port. */
NET_CTR RxHdrPortDestCtr; /* Nbr rx'd UDP datagrams with invalid dest port. */
NET_CTR RxHdrChkSumCtr; /* Nbr rx'd UDP datagrams with invalid chk sum. */
NET_CTR RxDestCtr; /* Nbr rx'd UDP datagrams for unavail dest. */
NET_CTR RxPktDiscardedCtr; /* Nbr rx'd UDP pkts discarded. */
NET_CTR TxPktDiscardedCtr; /* Nbr tx UDP pkts discarded. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR TxInvalidSizeCtr; /* Nbr tx UDP reqs with invalid data size. */
#endif
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR RxInvalidProtocolCtr; /* Nbr rx'd UDP pkts with invalid/unsupported protocol.*/
NET_CTR RxInvalidBufIxCtr; /* Nbr rx UDP pkts with invalid buf ix. */
NET_CTR RxHdrDataLenCtr; /* Nbr rx'd UDP datagrams with invalid data len. */
NET_CTR TxInvalidProtocolCtr; /* Nbr tx UDP pkts with invalid/unsupported protocol.*/
NET_CTR TxInvalidBufIxCtr; /* Nbr tx UDP pkts with invalid buf ix. */
NET_CTR TxHdrDataLenCtr; /* Nbr tx UDP datagrams with invalid protocol/data len. */
NET_CTR TxHdrPortSrcCtr; /* Nbr tx UDP datagrams with invalid src port. */
NET_CTR TxHdrPortDestCtr; /* Nbr tx UDP datagrams with invalid dest port. */
NET_CTR TxHdrFlagsCtr; /* Nbr tx UDP datagrams with invalid flags. */
#endif
} NET_CTR_UDP_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* TCP ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_tcp_errs {
NET_CTR NullPtrCtr; /* Nbr null TCP conn ptr accesses. */
NET_CTR NoneAvailCtr; /* Nbr unavail TCP conn accesses. */
NET_CTR NotUsedCtr; /* Nbr unused TCP conn accesses. */
NET_CTR RxHdrLenCtr; /* Nbr rx'd TCP segs with invalid hdr len. */
NET_CTR RxHdrSegLenCtr; /* Nbr rx'd TCP segs with invalid seg len. */
NET_CTR RxHdrPortSrcCtr; /* Nbr rx'd TCP segs with invalid src port. */
NET_CTR RxHdrPortDestCtr; /* Nbr rx'd TCP segs with invalid dest port. */
NET_CTR RxHdrFlagsCtr; /* Nbr rx'd TCP segs with invalid flags. */
NET_CTR RxHdrChkSumCtr; /* Nbr rx'd TCP segs with invalid chk sum. */
NET_CTR RxHdrOptsCtr; /* Nbr rx'd TCP segs with unknown/invalid opts. */
NET_CTR RxDestCtr; /* Nbr rx'd TCP segs for unavail dest. */
NET_CTR RxPktDiscardedCtr; /* Nbr rx'd TCP pkts discarded. */
NET_CTR RxPktQ_FullCtr; /* Nbr of pkt received with a zero window */
NET_CTR TxOptTypeCtr; /* Nbr tx TCP pkts with invalid opt type. */
NET_CTR TxPktDiscardedCtr; /* Nbr tx TCP pkts discarded. */
NET_CTR ConnInvalidCtr; /* Nbr invalid TCP conn ID accesses. */
NET_CTR ConnInvalidOpCtr; /* Nbr invalid TCP conn ops. */
NET_CTR ConnInvalidStateCtr; /* Nbr invalid TCP conn states. */
NET_CTR ConnCloseCtr; /* Nbr fault TCP conn closes. */
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR RxInvalidProtocolCtr; /* Nbr rx'd TCP pkts with invalid/unsupported protocol. */
NET_CTR RxInvalidBufIxCtr; /* Nbr rx TCP pkts with invalid buf ix. */
NET_CTR RxHdrDataLenCtr; /* Nbr rx'd TCP segs with invalid data len. */
NET_CTR TxInvalidProtocolCtr; /* Nbr tx TCP pkts with invalid/unsupported protocol. */
NET_CTR TxInvalidSizeCtr; /* Nbr tx TCP reqs with invalid data size. */
NET_CTR TxInvalidBufIxCtr; /* Nbr tx TCP pkts with invalid buf ix. */
NET_CTR TxHdrDataLenCtr; /* Nbr tx TCP segs with invalid protocol/data len. */
NET_CTR TxHdrPortSrcCtr; /* Nbr tx TCP segs with invalid src port. */
NET_CTR TxHdrPortDestCtr; /* Nbr tx TCP segs with invalid dest port. */
NET_CTR TxHdrFlagsCtr; /* Nbr tx TCP segs with invalid flags. */
NET_CTR TxHdrOptLenCtr; /* Nbr tx TCP segs with invalid opt len. */
NET_CTR TxHdrOptCfgCtr; /* Nbr tx TCP segs with invalid opt cfg. */
NET_CTR ConnInvalidTypeCtr; /* Nbr invalid TCP conn type accesses. */
#endif
} NET_CTR_TCP_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* SOCKET ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_sock_errs {
NET_CTR NullPtrCtr; /* Nbr null sock ptr accesses. */
NET_CTR NullSizeCtr;
NET_CTR NoneAvailCtr; /* Nbr unavail sock accesses. */
NET_CTR NotUsedCtr; /* Nbr unused sock accesses. */
NET_CTR CloseCtr; /* Nbr fault sock closes. */
NET_CTR InvalidFamilyCtr; /* Nbr socks with invalid sock family. */
NET_CTR InvalidProtocolCtr; /* Nbr socks with invalid sock protocol. */
NET_CTR InvalidSockTypeCtr; /* Nbr socks with invalid sock type. */
NET_CTR InvalidSockCtr; /* Nbr invalid sock ID accesses. */
NET_CTR InvalidFlagsCtr; /* Nbr socks with invalid flags. */
NET_CTR InvalidOpCtr; /* Nbr socks with invalid op. */
NET_CTR InvalidStateCtr; /* Nbr socks with invalid state. */
NET_CTR InvalidAddrCtr; /* Nbr socks with invalid addr. */
NET_CTR InvalidAddrLenCtr; /* Nbr socks with invalid addr len. */
NET_CTR InvalidAddrInUseCtr; /* Nbr socks with addr already in use. */
NET_CTR InvalidPortNbrCtr; /* Nbr socks with invalid port nbr. */
NET_CTR InvalidConnInUseCtr; /* Nbr socks with conn already in use. */
#ifdef NET_SOCK_TYPE_STREAM_MODULE_EN
NET_CTR ConnAcceptQ_NoneAvailCtr; /* Nbr unavail sock accept Q conn accesses. */
#endif
NET_CTR RandomPortNbrNoneAvailCtr; /* Nbr unavail sock random port nbr accesses. */
NET_CTR RxDestCtr; /* Nbr rx'd sock pkts for unavail dest. */
NET_CTR RxPktDiscardedCtr; /* Nbr rx'd sock pkts discarded. */
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
NET_CTR TxInvalidSizeCtr; /* Nbr tx sock reqs with invalid data size. */
#endif
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR InvalidTypeCtr; /* Nbr invalid sock type accesses. */
NET_CTR InvalidConnCtr;
NET_CTR RxInvalidProtocolCtr; /* Nbr rx'd sock pkts with invalid/unsupported protocol. */
NET_CTR RxInvalidBufIxCtr; /* Nbr rx sock pkts with invalid buf ix. */
#ifdef NET_SOCK_TYPE_STREAM_MODULE_EN
NET_CTR ConnAcceptQ_MaxCtr;
#endif
NET_CTR RandomPortNbrQ_UsedCtr;
NET_CTR RandomPortNbrQ_NbrInQ_Ctr;
#endif
} NET_CTR_SOCK_ERRS;
/*
*--------------------------------------------------------------------------------------------------------
* ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
typedef struct net_ctr_errs {
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
NET_CTR_STATS_ERRS Stat;
#endif
NET_CTR_TMR_ERRS Tmr;
NET_CTR_BUF_ERRS Buf;
NET_CTR_CONN_ERRS Conn;
NET_CTR_IFs_ERRS IFs;
#ifdef NET_ARP_MODULE_EN
NET_CTR_ARP_ERRS ARP;
#endif
#ifdef NET_NDP_MODULE_EN
NET_CTR_NDP_ERRS NDP;
#endif
#ifdef NET_CACHE_MODULE_EN
NET_CTR_CACHE_ERRS Cache;
#endif
#ifdef NET_IPv4_MODULE_EN
NET_CTR_IPv4_ERRS IPv4;
#endif
#ifdef NET_IPv6_MODULE_EN
NET_CTR_IPv6_ERRS IPv6;
#endif
#ifdef NET_ICMPv4_MODULE_EN
NET_CTR_ICMPv4_ERRS ICMPv4;
#endif
#ifdef NET_ICMPv6_MODULE_EN
NET_CTR_ICMPv6_ERRS ICMPv6;
#endif
#ifdef NET_IGMP_MODULE_EN
NET_CTR_IGMP_ERRS IGMP;
#endif
#ifdef NET_MLDP_MODULE_EN
NET_CTR_MLDP_ERRS MLDP;
#endif
NET_CTR_UDP_ERRS UDP;
#ifdef NET_TCP_MODULE_EN
NET_CTR_TCP_ERRS TCP;
#endif
NET_CTR_SOCK_ERRS Sock;
} NET_CTR_ERRS;
/*
*********************************************************************************************************
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*--------------------------------------------------------------------------------------------------------
* STATISTIC COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
extern NET_CTR_STATS Net_StatCtrs;
#endif
/*
*--------------------------------------------------------------------------------------------------------
* ERROR COUNTERS
*--------------------------------------------------------------------------------------------------------
*/
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
extern NET_CTR_ERRS Net_ErrCtrs;
#endif
/*
*********************************************************************************************************
*********************************************************************************************************
* MACRO'S
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* NETWORK COUNTER MACRO'S
*
* Description : Handle network counter(s).
*
* Argument(s) : Various network counter variable(s) & values.
*
* Return(s) : none.
*
* Caller(s) : various.
*
* These macro's are INTERNAL network protocol suite macro's & SHOULD NOT be called by
* application function(s).
*
* Note(s) : (1) Network counter variables MUST ALWAYS be accessed exclusively in critical sections.
*
* Therefore, local variable 'cpu_sr' MUST be declared via the CPU_SR_ALLOC() macro
* in the following functions in case the CPU critical section method is configured
* as 'CPU_CRITICAL_METHOD_STATUS_LOCAL' :
*
* (a) NetCtr_Inc()
* (b) ALL functions which call NET_CTR_&&&_INC_LARGE() macro's
*********************************************************************************************************
*/
#define NET_CTR_INC(ctr) NetCtr_Inc(&(ctr));
#define NET_CTR_INC_LARGE(ctr_hi, ctr_lo) do { CPU_CRITICAL_ENTER(); \
NetCtr_IncLarge(&(ctr_hi), \
&(ctr_lo)); \
CPU_CRITICAL_EXIT(); } while (0)
#define NET_CTR_ADD(ctr, val) do { (ctr) += (val); } while (0)
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
#define NET_CTR_STAT_INC(stat_ctr) NET_CTR_INC(stat_ctr)
#define NET_CTR_STAT_INC_LARGE(stat_ctr_hi, stat_ctr_lo) NET_CTR_INC_LARGE((stat_ctr_hi), (stat_ctr_lo))
#define NET_CTR_STAT_ADD(stat_ctr, val) NET_CTR_ADD((stat_ctr), (val))
#else
#define NET_CTR_STAT_INC(stat_ctr)
#define NET_CTR_STAT_INC_LARGE(stat_ctr_hi, stat_ctr_lo)
#define NET_CTR_STAT_ADD(stat_ctr, val)
#endif
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
#define NET_CTR_ERR_INC(err_ctr) NET_CTR_INC(err_ctr)
#define NET_CTR_ERR_INC_LARGE(err_ctr_hi, err_ctr_lo) NET_CTR_INC_LARGE((err_ctr_hi), (err_ctr_lo))
#else
#define NET_CTR_ERR_INC(err_ctr)
#define NET_CTR_ERR_INC_LARGE(err_ctr_hi, err_ctr_lo)
#endif
/*
*********************************************************************************************************
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* EXTERNAL C LANGUAGE LINKAGE
*
* Note(s) : (1) C++ compilers MUST 'extern'ally declare ALL C function prototypes & variable/object
* declarations for correct C language linkage.
*********************************************************************************************************
*/
#ifdef __cplusplus
extern "C" {
#endif
/*
*********************************************************************************************************
* PUBLIC API
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INTERNAL FUNCTIONS
*********************************************************************************************************
*/
void NetCtr_Init(void);
/* -------------- CTR API FNCTS --------------- */
#ifdef NET_CTR_MODULE_EN
void NetCtr_Inc(NET_CTR *pctr);
void NetCtr_IncLarge(NET_CTR *pctr_hi,
NET_CTR *pctr_lo);
#endif
/*
*********************************************************************************************************
* EXTERNAL C LANGUAGE LINKAGE END
*********************************************************************************************************
*/
#ifdef __cplusplus
}
#endif
/*
*********************************************************************************************************
*********************************************************************************************************
* MODULE END
*********************************************************************************************************
*********************************************************************************************************
*/
#endif /* NET_CTR_MODULE_PRESENT */