Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

µC/TCP-IP maintains counters and statistics for a variety of expected or unexpected error conditions.  Some of these statistics are optional since they require additional code and memory and are enabled only if NET_CTR_CFG_STAT_EN or NET_CTR_CFG_ERR_EN is enabled (see Network Counters Configuration)when enabled, see Network Counters Configuration for further information about how to enable and disabled it.

Statistics

µC/TCP-IP maintains run-time statistics on interfaces and most µC/TCP-IP object pools. If desired, an application can thus query µC/TCP-IP to find out how many frames have been processed on a particular interface, transmit and /receive performance metrics, buffer utilization and more. An application can also reset the statistic pools back to their initialization values (see net_stat.h)initial values via appropriate API.

Applications may choose to monitor statistics for various reasons. For example, examining buffer statistics allows you to better manage the memory usage. Typically, more buffers can be allocated than necessary and, by examining buffer usage statistics, adjustments can be made to reduce their number.

...

The data structure is shown below:

Code Block
languagecpp
themeConfluence
firstline1
titleObject pool statistics data structure
linenumberstrue
typedef struct net_stat_pool {
    NET_TYPE           Type;
    NET_STAT_POOL_QTY  EntriesInit;
    NET_STAT_POOL_QTY  EntriesTotal;
    NET_STAT_POOL_QTY  EntriesAvail;
    NET_STAT_POOL_QTY  EntriesUsed;
    NET_STAT_POOL_QTY  EntriesUsedMax;
    NET_STAT_POOL_QTY  EntriesLostCur;
    NET_STAT_POOL_QTY  EntriesLostTotal;
    CPU_INT32U         EntriesAllocatedCtr;
    CPU_INT32U         EntriesDeallocatedCtr;
} NET_STAT_POOL;


NET_STAT_POOL_QTY  is a data type currently set to  CPU_INT16U  and thus contains a maximum count of 65535.

Access to buffer statistics is obtained via interface functions that the application can call (described in the next sections). Most likely, only the following variables in NET_STAT_POOL need to be examined, because the .Type member is configured at initialization time as NET_STAT_TYPE_POOL :

.EntriesAvail

This variable indicates how many buffers are available in the pool.

...

This variable indicates the total number of times buffers were returned back to the buffer pool.

 

In order to enable run-time statistics, the macro NET_CTR_CFG_STAT_EN located within net_cfg.h must be defined to DEF_ENABLED must be enabled, see Network Counters Configuration.

Module pool statistics

You can query the following module to get usage statistics. It can help reduce memory usage and debugging issues regarding resources.

ModuleDescriptionFunction API or Variables
ARPARP Cache usage NetARP_CachePoolStatGet
IGMPIPv4 Multicast group statisticsNetIGMP_HostGrpPoolStat
NDPNDP Caches usageNetCache_AddrNDP_PoolStat
NetNDP_DestPoolStat
NetNDP_PrefixPoolStat
NetNDP_RouterPoolStat
BufferInterface's buffer usage NetBuf_PoolStatGet
NetBuf_RxLargePoolStatGet
NetBuf_TxLargePoolStatGet
NetBuf_TxSmallPoolStatGet
IP connectionsIP connections pool usage NetConn_PoolStatGet
SocketSockets usage NetSock_PoolStatGet
TCPTCP connections usage NetTCP_ConnPoolStatGet
TimerTimer usage NetTmr_PoolStatGet()

Error Counters

µC/TCP-IP maintains run-time counters for tracking error conditions within the Network Protocol Stack. If desired, the application may view the error counters in order to debug run-time problems such as low memory conditions, slow performance, packet loss,  etc.

Network protocol error counters are kept in an instance of a data structure named Net_ErrCtrs. This variable may be viewed within a debugger or referenced externally by the application for run-time analysis (see net_statctr.h).

In order to enable run-time error counters, the macro NET_CTR_CFG_ERR_EN located within net_cfg.h must be defined to DEF_ENABLED must be enabled, see Network Counters Configuration.