mirror of
https://github.com/dimoniche/Moyka.git
synced 2026-01-30 09:53:31 +03:00
5685 lines
281 KiB
C
5685 lines
281 KiB
C
/*
|
||
*********************************************************************************************************
|
||
* uC/TCP-IP
|
||
* The Embedded TCP/IP Suite
|
||
*
|
||
* (c) Copyright 2003-2007; Micrium, Inc.; Weston, FL
|
||
*
|
||
* All rights reserved. Protected by international copyright laws.
|
||
*
|
||
* uC/TCP-IP is provided in source form for FREE evaluation, for educational
|
||
* use or peaceful research. If you plan on using uC/TCP-IP in a commercial
|
||
* product you need to contact Micrium to properly license its use in your
|
||
* product. We provide ALL the source code for your convenience and to help
|
||
* you experience uC/TCP-IP. The fact that the source code is provided does
|
||
* NOT mean that you can use it without paying a licensing fee.
|
||
*
|
||
* Knowledge of the source code may NOT be used to develop a similar product.
|
||
*
|
||
* Please help us continue to provide the Embedded community with the finest
|
||
* software available. Your honesty is greatly appreciated.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
*
|
||
* NETWORK DEBUG MANAGEMENT
|
||
*
|
||
* Filename : net_dbg.c
|
||
* Version : V1.89
|
||
* Programmer(s) : ITJ
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* INCLUDE FILES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#define NET_DBG_MODULE
|
||
#include <net.h>
|
||
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL DEFINES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL CONSTANTS
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* GLOBAL NETWORK MODULE DEBUG INFORMATION CONSTANTS
|
||
*
|
||
* Note(s) : (1) Many data-size constants ideally defined with network data-type sizes; defined as
|
||
* 'CPU_INT32U' because many network data-type sizes NOT defined at time of declaration
|
||
* (see 'net.h NETWORK INCLUDE FILES').
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
const CPU_INT16U Net_Version = NET_VERSION;
|
||
|
||
|
||
#if (NET_DBG_CFG_INFO_EN == DEF_ENABLED)
|
||
|
||
/* ------ NET MISC MODULE(S) ------ */
|
||
const CPU_INT08U Net_CfgInitCfgVals = NET_CFG_INIT_CFG_VALS;
|
||
const CPU_INT08U Net_CfgOptimize = NET_CFG_OPTIMIZE;
|
||
|
||
const CPU_INT32U Net_CfgTxSuspendTimeout_ms = NET_CFG_TX_SUSPEND_TIMEOUT_MS;
|
||
|
||
/* ------- NET ERR MODULE -------- */
|
||
const CPU_INT08U NetErr_CfgArgChkExtEn = NET_ERR_CFG_ARG_CHK_EXT_EN;
|
||
const CPU_INT08U NetErr_CfgArgChkDbgEn = NET_ERR_CFG_ARG_CHK_DBG_EN;
|
||
|
||
/* ------- NET DBG MODULE -------- */
|
||
const CPU_INT08U NetDbg_CfgInfoEn = NET_DBG_CFG_INFO_EN;
|
||
const CPU_INT08U NetDbg_CfgStatusEn = NET_DBG_CFG_STATUS_EN;
|
||
const CPU_INT08U NetDbg_CfgStatusRsrcLostEn = NET_DBG_CFG_STATUS_RSRC_LOST_EN;
|
||
const CPU_INT08U NetDbg_CfgStatusRsrcLoEn = NET_DBG_CFG_STATUS_RSRC_LO_EN;
|
||
const CPU_INT08U NetDbg_CfgMemClrEn = NET_DBG_CFG_MEM_CLR_EN;
|
||
const CPU_INT08U NetDbg_CfgTestEn = NET_DBG_CFG_TEST_EN;
|
||
const CPU_INT08U NetDbg_CfgMonTaskEn = NET_DBG_CFG_MON_TASK_EN;
|
||
|
||
/* ------- NET CTR MODULE -------- */
|
||
const CPU_INT08U NetCtr_CfgStatEn = NET_CTR_CFG_STAT_EN;
|
||
const CPU_INT08U NetCtr_CfgErrEn = NET_CTR_CFG_ERR_EN;
|
||
|
||
/* ------- NET TMR MODULE -------- */
|
||
const CPU_INT16U NetTmr_CfgNbrTmr = NET_TMR_CFG_NBR_TMR;
|
||
const CPU_INT16U NetTmr_CfgTaskFreq = NET_TMR_CFG_TASK_FREQ;
|
||
|
||
|
||
/* ------- NET BUF MODULE -------- */
|
||
const CPU_INT16U NetBuf_CfgNbrSmall = NET_BUF_CFG_NBR_SMALL;
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
const CPU_INT32U NetBuf_CfgDataSizeSmall = NET_BUF_CFG_DATA_SIZE_SMALL;
|
||
#endif
|
||
|
||
const CPU_INT16U NetBuf_CfgNbrLarge = NET_BUF_CFG_NBR_LARGE;
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
const CPU_INT32U NetBuf_CfgDataSizeLarge = NET_BUF_CFG_DATA_SIZE_LARGE;
|
||
#endif
|
||
|
||
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
/* ------- NET CONN MODULE -------- */
|
||
const CPU_INT16U NetConn_CfgNbrConn = NET_CONN_CFG_NBR_CONN;
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_ARP_MODULE_PRESENT
|
||
/* ------- NET ARP MODULE -------- */
|
||
const CPU_INT16U NetARP_CfgNbrCache = NET_ARP_CFG_NBR_CACHE;
|
||
|
||
const CPU_INT08U NetARP_CfgAddrFilterEn = NET_ARP_CFG_ADDR_FLTR_EN;
|
||
#endif
|
||
|
||
|
||
/* ------- NET ICMP MODULE -------- */
|
||
const CPU_INT08U NetICMP_CfgTxSrcQuenchEn = NET_ICMP_CFG_TX_SRC_QUENCH_EN;
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
const CPU_INT16U NetICMP_CfgTxSrcQuenchSize = NET_ICMP_CFG_TX_SRC_QUENCH_SIZE;
|
||
#endif
|
||
|
||
|
||
/* ------- NET UDP MODULE -------- */
|
||
const CPU_INT08U NetUDP_CfgAppAPI_Sel = NET_UDP_CFG_APP_API_SEL;
|
||
const CPU_INT08U NetUDP_CfgRxChkSumDiscardEn = NET_UDP_CFG_RX_CHK_SUM_DISCARD_EN;
|
||
const CPU_INT08U NetUDP_CfgTxChkSumEn = NET_UDP_CFG_TX_CHK_SUM_EN;
|
||
|
||
|
||
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
/* ------- NET TCP MODULE -------- */
|
||
const CPU_INT16U NetTCP_CfgNbrConn = NET_TCP_CFG_NBR_CONN;
|
||
|
||
const CPU_INT16U NetTCP_CfgRxWinSize_octet = NET_TCP_CFG_RX_WIN_SIZE_OCTET;
|
||
const CPU_INT16U NetTCP_CfgTxWinSize_octet = NET_TCP_CFG_TX_WIN_SIZE_OCTET;
|
||
|
||
const CPU_INT32U NetTCP_CfgTimeoutConnMaxSeg_sec = NET_TCP_CFG_TIMEOUT_CONN_MAX_SEG_SEC;
|
||
const CPU_INT32U NetTCP_CfgTimeoutConnAckDly_ms = NET_TCP_CFG_TIMEOUT_CONN_ACK_DLY_MS;
|
||
const CPU_INT32U NetTCP_CfgTimeoutConnRxQ_ms = NET_TCP_CFG_TIMEOUT_CONN_RX_Q_MS;
|
||
const CPU_INT32U NetTCP_CfgTimeoutConnTxQ_ms = NET_TCP_CFG_TIMEOUT_CONN_TX_Q_MS;
|
||
#endif
|
||
|
||
|
||
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
/* ------- NET SOCK MODULE -------- */
|
||
const CPU_INT16U NetSock_CfgNbrSock = NET_SOCK_CFG_NBR_SOCK;
|
||
|
||
const CPU_INT08U NetSock_CfgBlockSel = NET_SOCK_CFG_BLOCK_SEL;
|
||
|
||
const CPU_INT16U NetSock_CfgRandomPortNbrBase = NET_SOCK_CFG_PORT_NBR_RANDOM_BASE;
|
||
const CPU_INT16U NetSock_NbrRandomPortNbr = NET_SOCK_PORT_NBR_RANDOM_NBR;
|
||
|
||
const CPU_INT32U NetSock_CfgTimeoutRxQ_ms = NET_SOCK_CFG_TIMEOUT_RX_Q_MS;
|
||
|
||
const CPU_INT08U NetSock_CfgStreamTypeEn = NET_SOCK_CFG_TYPE_STREAM_EN;
|
||
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
|
||
const CPU_INT16U NetSock_CfgConnAcceptQ_MaxSize = NET_SOCK_CFG_CONN_ACCEPT_Q_SIZE_MAX;
|
||
const CPU_INT32U NetSock_CfgTimeoutConnReq_ms = NET_SOCK_CFG_TIMEOUT_CONN_REQ_MS;
|
||
const CPU_INT32U NetSock_CfgTimeoutConnAccept_ms = NET_SOCK_CFG_TIMEOUT_CONN_ACCEPT_MS;
|
||
const CPU_INT32U NetSock_CfgTimeoutConnClose_ms = NET_SOCK_CFG_TIMEOUT_CONN_CLOSE_MS;
|
||
#endif
|
||
#endif
|
||
|
||
|
||
/* ------- NET OS MODULE -------- */
|
||
const CPU_INT32U NetOS_TimeoutMin_tick = NET_OS_TIMEOUT_MIN_TICK;
|
||
const CPU_INT32U NetOS_TimeoutMax_tick = NET_OS_TIMEOUT_MAX_TICK;
|
||
const CPU_INT32U NetOS_TimeoutMin_sec = NET_OS_TIMEOUT_MIN_SEC;
|
||
const CPU_INT32U NetOS_TimeoutMax_sec = NET_OS_TIMEOUT_MAX_SEC;
|
||
const CPU_INT32U NetOS_TimeoutMin_ms = NET_OS_TIMEOUT_MIN_MS;
|
||
const CPU_INT32U NetOS_TimeoutMax_ms = NET_OS_TIMEOUT_MAX_MS;
|
||
|
||
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* GLOBAL NETWORK MODULE DATA SIZE CONSTANTS
|
||
*
|
||
* Note(s) : (1) Many data-size constants ideally defined with network data-type sizes; defined as
|
||
* 'CPU_INT32U' because many network data-type sizes NOT defined at time of declaration
|
||
* (see 'net.h NETWORK INCLUDE FILES').
|
||
*
|
||
* (2) Network protocol suite total data size does NOT include data sizes from the following
|
||
* network files :
|
||
*
|
||
* (a) Custom Library Files See 'net.h NETWORK INCLUDE FILES Note #3a'
|
||
* (b) BSP Port Files See 'net.h NETWORK INCLUDE FILES Note #1a'
|
||
* (c) CPU Port Files See 'net.h NETWORK INCLUDE FILES Note #1c'
|
||
* (d) OS Port Files See 'net.h NETWORK INCLUDE FILES Note #1d'
|
||
* (e) IF Port Files See 'net.h NETWORK INCLUDE FILES Note #1e'
|
||
* (f) NIC Port Files See 'net.h NETWORK INCLUDE FILES Note #1f'
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_INFO_EN == DEF_ENABLED)
|
||
|
||
/* ---------- NET MODULE ---------- */
|
||
const CPU_INT32U Net_DataSize = 0
|
||
|
||
+ sizeof(Net_InitDone)
|
||
|
||
#if (NET_CFG_LOAD_BAL_EN == DEF_ENABLED)
|
||
+ sizeof(Net_RxPktCtr)
|
||
+ sizeof(Net_TxSuspendCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(Net_ErrInvalidProtocolCtr)
|
||
#endif
|
||
;
|
||
|
||
|
||
/* ------ NET MISC MODULE(S) ------ */
|
||
const CPU_INT32U NetTS_Size = sizeof(NET_TS);
|
||
|
||
|
||
/* ------- NET ERR MODULE -------- */
|
||
const CPU_INT32U NetErr_Size = sizeof(NET_ERR);
|
||
|
||
|
||
|
||
/* ------- NET DBG MODULE -------- */
|
||
const CPU_INT32U NetDbg_StatusSize = sizeof(NET_DBG_STATUS);
|
||
|
||
const CPU_INT32U NetDbg_DataSize = 0
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED)
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
+ sizeof(NetDbg_RsrcBufSmallThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcBufSmallThLoHyst_nbr)
|
||
#endif
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
+ sizeof(NetDbg_RsrcBufLargeThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcBufLargeThLoHyst_nbr)
|
||
#endif
|
||
+ sizeof(NetDbg_RsrcTmrThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcTmrThLoHyst_nbr)
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcConnThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcConnThLoHyst_nbr)
|
||
#endif
|
||
#ifdef NET_ARP_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcARP_CacheThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcARP_CacheThLoHyst_nbr)
|
||
#endif
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcTCP_ConnThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcTCP_ConnThLoHyst_nbr)
|
||
#endif
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcSockThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcSockThLoHyst_nbr)
|
||
#endif
|
||
#endif
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
+ sizeof(NetDbg_MonTaskTmr)
|
||
+ sizeof(NetDbg_MonTaskTime_sec)
|
||
+ sizeof(NetDbg_MonTaskTime_tick)
|
||
|
||
+ sizeof(NetDbg_MonTaskStatusRsrcLost)
|
||
+ sizeof(NetDbg_MonTaskStatusRsrcLo)
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET CTR MODULE -------- */
|
||
const CPU_INT32U NetCtr_Size = sizeof(NET_CTR);
|
||
|
||
|
||
|
||
/* ------- NET STAT MODULE -------- */
|
||
const CPU_INT32U NetStat_PoolSize = sizeof(NET_STAT_POOL);
|
||
|
||
|
||
const CPU_INT32U NetStat_DataSize = 0
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetStat_ErrNullPtrCtr)
|
||
+ sizeof(NetStat_ErrInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/* ------- NET TMR MODULE -------- */
|
||
const CPU_INT32U NetTmr_TickSize = sizeof(NET_TMR_TICK);
|
||
|
||
const CPU_INT32U NetTmr_Size = sizeof(NET_TMR);
|
||
const CPU_INT32U NetTmr_TblSize = sizeof(NetTmr_Tbl);
|
||
|
||
|
||
const CPU_INT32U NetTmr_DataSize = 0
|
||
|
||
+ sizeof(NetTmr_Tbl)
|
||
+ sizeof(NetTmr_PoolPtr)
|
||
+ sizeof(NetTmr_PoolStat)
|
||
|
||
+ sizeof(NetTmr_TaskListHead)
|
||
+ sizeof(NetTmr_TaskListPtr)
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetTmr_ErrNoneAvailCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetTmr_ErrNullPtrCtr)
|
||
+ sizeof(NetTmr_ErrNullObjCtr)
|
||
+ sizeof(NetTmr_ErrNullFnctCtr)
|
||
+ sizeof(NetTmr_ErrNotUsedCtr)
|
||
+ sizeof(NetTmr_ErrInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET BUF MODULE -------- */
|
||
const CPU_INT32U NetBuf_HdrSize = sizeof(NET_BUF_HDR);
|
||
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
const CPU_INT32U NetBuf_SmallSize = sizeof(NET_BUF_SMALL);
|
||
const CPU_INT32U NetBuf_SmallTblSize = sizeof(NetBuf_SmallTbl);
|
||
#endif
|
||
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
const CPU_INT32U NetBuf_LargeSize = sizeof(NET_BUF_LARGE);
|
||
const CPU_INT32U NetBuf_LargeTblSize = sizeof(NetBuf_LargeTbl);
|
||
#endif
|
||
|
||
|
||
const CPU_INT32U NetBuf_DataSize = 0
|
||
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
+ sizeof(NetBuf_SmallTbl)
|
||
+ sizeof(NetBuf_SmallPoolPtr)
|
||
+ sizeof(NetBuf_SmallPoolStat)
|
||
#endif
|
||
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
+ sizeof(NetBuf_LargeTbl)
|
||
+ sizeof(NetBuf_LargePoolPtr)
|
||
+ sizeof(NetBuf_LargePoolStat)
|
||
#endif
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetBuf_ErrNoneAvailCtr)
|
||
+ sizeof(NetBuf_ErrInvalidTypeCtr)
|
||
+ sizeof(NetBuf_ErrSizeCtr)
|
||
+ sizeof(NetBuf_ErrLenCtr)
|
||
+ sizeof(NetBuf_ErrLostCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetBuf_ErrNullPtrCtr)
|
||
+ sizeof(NetBuf_ErrNotUsedCtr)
|
||
+ sizeof(NetBuf_ErrIxCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
/* ------- NET CONN MODULE -------- */
|
||
const CPU_INT32U NetConn_ID_Size = sizeof(NET_CONN_ID);
|
||
const CPU_INT32U NetConn_AddrLenSize = sizeof(NET_CONN_ADDR_LEN);
|
||
|
||
const CPU_INT32U NetConn_Size = sizeof(NET_CONN);
|
||
const CPU_INT32U NetConn_TblSize = sizeof(NetConn_Tbl);
|
||
|
||
const CPU_INT32U NetConn_ServerConnListTblSize = sizeof(NetConn_ServerConnListHead);
|
||
const CPU_INT32U NetConn_ClientConnListTblSize = sizeof(NetConn_ClientConnListHead);
|
||
|
||
const CPU_INT32U NetConn_AddrWildCardSize = sizeof(NetConn_AddrWildCard);
|
||
|
||
|
||
const CPU_INT32U NetConn_DataSize = 0
|
||
|
||
+ sizeof(NetConn_Tbl)
|
||
+ sizeof(NetConn_PoolPtr)
|
||
+ sizeof(NetConn_PoolStat)
|
||
|
||
+ sizeof(NetConn_ServerConnListHead)
|
||
+ sizeof(NetConn_ClientConnListHead)
|
||
|
||
+ sizeof(NetConn_ConnListChainPtr)
|
||
+ sizeof(NetConn_ConnListConnPtr)
|
||
+ sizeof(NetConn_ConnListNextChainPtr)
|
||
+ sizeof(NetConn_ConnListNextConnPtr)
|
||
|
||
+ sizeof(NetConn_AccessedTh_nbr)
|
||
|
||
+ sizeof(NetConn_AddrWildCardAvail)
|
||
+ sizeof(NetConn_AddrWildCard)
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetConn_ErrNoneAvailCtr)
|
||
+ sizeof(NetConn_ErrNotUsedCtr)
|
||
+ sizeof(NetConn_ErrCloseCtr)
|
||
+ sizeof(NetConn_ErrInvalidConnCtr)
|
||
+ sizeof(NetConn_ErrInvalidConnAddrLenCtr)
|
||
+ sizeof(NetConn_ErrInvalidConnAddrInUseCtr)
|
||
+ sizeof(NetConn_ErrInvalidFamilyCtr)
|
||
+ sizeof(NetConn_ErrInvalidListTypeCtr)
|
||
+ sizeof(NetConn_ErrInvalidListIxCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetConn_ErrNullPtrCtr)
|
||
+ sizeof(NetConn_ErrInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_ARP_MODULE_PRESENT
|
||
/* ------- NET ARP MODULE -------- */
|
||
const CPU_INT32U NetARP_HdrSize = sizeof(NET_ARP_HDR);
|
||
|
||
const CPU_INT32U NetARP_CacheSize = sizeof(NET_ARP_CACHE);
|
||
const CPU_INT32U NetARP_CacheTblSize = sizeof(NetARP_CacheTbl);
|
||
|
||
|
||
const CPU_INT32U NetARP_DataSize = 0
|
||
|
||
+ sizeof(NetARP_HostAddrPtrHW)
|
||
+ sizeof(NetARP_HostAddrPtrProtocol)
|
||
|
||
+ sizeof(NetARP_CacheTbl)
|
||
+ sizeof(NetARP_CachePoolPtr)
|
||
+ sizeof(NetARP_CachePoolStat)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_CacheSrchCtr_lo)
|
||
+ sizeof(NetARP_CacheSrchCtr_hi)
|
||
+ sizeof(NetARP_CacheFoundCtr_lo)
|
||
+ sizeof(NetARP_CacheFoundCtr_hi)
|
||
+ sizeof(NetARP_CacheFoundPct)
|
||
#endif
|
||
|
||
+ sizeof(NetARP_CacheListHead)
|
||
+ sizeof(NetARP_CacheListTail)
|
||
+ sizeof(NetARP_CacheTimeout_sec)
|
||
+ sizeof(NetARP_CacheTimeout_tick)
|
||
+ sizeof(NetARP_CacheAccessedTh_nbr)
|
||
|
||
+ sizeof(NetARP_ReqMaxAttempts_nbr)
|
||
+ sizeof(NetARP_ReqTimeout_sec)
|
||
+ sizeof(NetARP_ReqTimeout_tick)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_StatRxPktCtr)
|
||
+ sizeof(NetARP_StatRxMsgProcessedCtr)
|
||
+ sizeof(NetARP_StatRxMsgReqProcessedCtr)
|
||
+ sizeof(NetARP_StatRxMsgReplyProcessedCtr)
|
||
+ sizeof(NetARP_StatTxMsgCtr)
|
||
+ sizeof(NetARP_StatTxMsgReqCtr)
|
||
+ sizeof(NetARP_StatTxMsgReplyCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_ErrNoneAvailCtr)
|
||
+ sizeof(NetARP_ErrRxHdrHW_TypeCtr)
|
||
+ sizeof(NetARP_ErrRxHdrHW_AddrLenCtr)
|
||
+ sizeof(NetARP_ErrRxHdrHW_AddrCtr)
|
||
+ sizeof(NetARP_ErrRxHdrProtocolTypeCtr)
|
||
+ sizeof(NetARP_ErrRxHdrProtocolAddrLenCtr)
|
||
+ sizeof(NetARP_ErrRxHdrProtocolAddrCtr)
|
||
+ sizeof(NetARP_ErrRxHdrOpCodeCtr)
|
||
+ sizeof(NetARP_ErrRxHdrOpAddrCtr)
|
||
+ sizeof(NetARP_ErrRxHdrMsgLenCtr)
|
||
+ sizeof(NetARP_ErrRxPktTargetReplyCtr)
|
||
+ sizeof(NetARP_ErrRxPktTargetNotThisHostCtr)
|
||
+ sizeof(NetARP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetARP_ErrTxPktDiscardedCtr)
|
||
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
|
||
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
|
||
+ sizeof(NetARP_ErrNullPtrCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_ErrInvalidAddrLenHW_Ctr)
|
||
+ sizeof(NetARP_ErrInvalidAddrLenProtocolCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_ErrNotUsedCtr)
|
||
+ sizeof(NetARP_ErrInvalidTypeCtr)
|
||
+ sizeof(NetARP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetARP_ErrTxHdrOpCodeCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET IP MODULE -------- */
|
||
const CPU_INT32U NetIP_HdrSize = sizeof(NET_IP_HDR);
|
||
|
||
const CPU_INT32U NetIP_TOS_Size = sizeof(NET_IP_TOS);
|
||
const CPU_INT32U NetIP_TTL_Size = sizeof(NET_IP_TTL);
|
||
const CPU_INT32U NetIP_AddrSize = sizeof(NET_IP_ADDR);
|
||
|
||
const CPU_INT32U NetIP_OptSize = sizeof(NET_IP_OPT_SIZE);
|
||
const CPU_INT32U NetIP_OptSrcRouteSize = sizeof(NET_IP_OPT_SRC_ROUTE);
|
||
const CPU_INT32U NetIP_OptTS_RouteSize = sizeof(NET_IP_OPT_TS_ROUTE);
|
||
const CPU_INT32U NetIP_OptTS_Size = sizeof(NET_IP_OPT_TS);
|
||
|
||
|
||
const CPU_INT32U NetIP_DataSize = 0
|
||
|
||
+ sizeof(NetIP_AddrThisHost)
|
||
+ sizeof(NetIP_AddrThisHostNetOrder)
|
||
+ sizeof(NetIP_AddrThisHostSubnetMask)
|
||
+ sizeof(NetIP_AddrThisHostSubnetMaskHost)
|
||
+ sizeof(NetIP_AddrThisHostSubnetNet)
|
||
+ sizeof(NetIP_AddrDfltGateway)
|
||
|
||
+ sizeof(NetIP_FragReasmListsHead)
|
||
+ sizeof(NetIP_FragReasmListsTail)
|
||
+ sizeof(NetIP_FragReasmTimeout_sec)
|
||
+ sizeof(NetIP_FragReasmTimeout_tick)
|
||
|
||
+ sizeof(NetIP_TxIDCtr)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetIP_StatRxPktCtr)
|
||
+ sizeof(NetIP_StatRxDatagramProcessedCtr)
|
||
+ sizeof(NetIP_StatRxDestLocalCtr)
|
||
+ sizeof(NetIP_StatRxDestBroadcastCtr)
|
||
+ sizeof(NetIP_StatRxFragCtr)
|
||
+ sizeof(NetIP_StatRxFragDatagramReasmCtr)
|
||
+ sizeof(NetIP_StatTxDatagramCtr)
|
||
+ sizeof(NetIP_StatTxDestLocalCtr)
|
||
+ sizeof(NetIP_StatTxDestBroadcastCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetIP_ErrNullPtrCtr)
|
||
+ sizeof(NetIP_ErrCfgAddrThisHostCtr)
|
||
+ sizeof(NetIP_ErrCfgAddrDfltGatewayCtr)
|
||
+ sizeof(NetIP_ErrRxHdrVerCtr)
|
||
+ sizeof(NetIP_ErrRxHdrLenCtr)
|
||
+ sizeof(NetIP_ErrRxHdrTotLenCtr)
|
||
+ sizeof(NetIP_ErrRxHdrFlagsCtr)
|
||
+ sizeof(NetIP_ErrRxHdrFragCtr)
|
||
+ sizeof(NetIP_ErrRxHdrProtocolCtr)
|
||
+ sizeof(NetIP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetIP_ErrRxHdrAddrSrcCtr)
|
||
+ sizeof(NetIP_ErrRxHdrOptsCtr)
|
||
+ sizeof(NetIP_ErrRxHdrOptsBufNoneAvailCtr)
|
||
+ sizeof(NetIP_ErrRxHdrOptsBufWrCtr)
|
||
+ sizeof(NetIP_ErrRxDestCtr)
|
||
+ sizeof(NetIP_ErrRxDestBroadcastCtr)
|
||
+ sizeof(NetIP_ErrRxFragSizeCtr)
|
||
+ sizeof(NetIP_ErrRxFragDiscardedCtr)
|
||
+ sizeof(NetIP_ErrRxFragDatagramDiscardedCtr)
|
||
+ sizeof(NetIP_ErrRxFragDatagramTimeoutCtr)
|
||
+ sizeof(NetIP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetIP_ErrTxProtocolCtr)
|
||
+ sizeof(NetIP_ErrTxOptTypeCtr)
|
||
+ sizeof(NetIP_ErrTxDestCtr)
|
||
+ sizeof(NetIP_ErrTxPktDiscardedCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetIP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetIP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetIP_ErrRxFragFlagsCtr)
|
||
+ sizeof(NetIP_ErrRxFragOffsetCtr)
|
||
+ sizeof(NetIP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetIP_ErrTxHdrTOS_Ctr)
|
||
+ sizeof(NetIP_ErrTxHdrDataLenCtr)
|
||
+ sizeof(NetIP_ErrTxHdrAddrSrcCtr)
|
||
+ sizeof(NetIP_ErrTxHdrAddrDestCtr)
|
||
+ sizeof(NetIP_ErrTxHdrFlagsCtr)
|
||
+ sizeof(NetIP_ErrTxHdrOptLenCtr)
|
||
+ sizeof(NetIP_ErrTxHdrOptCfgCtr)
|
||
#endif
|
||
#if 0 /* #### NOT currently implemented. */
|
||
+ sizeof(NetIP_ErrTxFragDiscardedCtr)
|
||
+ sizeof(NetIP_ErrTxFragDiscardedDontFragCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET ICMP MODULE -------- */
|
||
const CPU_INT32U NetICMP_HdrSize = sizeof(NET_ICMP_HDR);
|
||
const CPU_INT32U NetICMP_HdrErrSize = sizeof(NET_ICMP_HDR_ERR);
|
||
const CPU_INT32U NetICMP_HdrParamProbSize = sizeof(NET_ICMP_HDR_PARAM_PROB);
|
||
const CPU_INT32U NetICMP_HdrEchoSize = sizeof(NET_ICMP_HDR_ECHO);
|
||
const CPU_INT32U NetICMP_HdrTS_Size = sizeof(NET_ICMP_HDR_TS);
|
||
const CPU_INT32U NetICMP_HdrAddrMaskSize = sizeof(NET_ICMP_HDR_ADDR_MASK);
|
||
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
const CPU_INT32U NetICMP_TxSrcQuenchSize = sizeof(NET_ICMP_TX_SRC_QUENCH);
|
||
const CPU_INT32U NetICMP_TxSrcQuenchTblSize = sizeof(NetICMP_TxSrcQuenchTbl);
|
||
#endif
|
||
|
||
|
||
const CPU_INT32U NetICMP_DataSize = 0
|
||
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_TxSrcQuenchTbl)
|
||
+ sizeof(NetICMP_TxSrcQuenchPoolStat)
|
||
+ sizeof(NetICMP_TxSrcQuenchPoolPtr)
|
||
+ sizeof(NetICMP_TxSrcQuenchListHead)
|
||
+ sizeof(NetICMP_TxSrcQuenchListTail)
|
||
+ sizeof(NetICMP_TxSrcQuenchTxTh_nbr)
|
||
#endif
|
||
|
||
+ sizeof(NetICMP_TxSeqNbrCtr)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_StatRxMsgCtr)
|
||
+ sizeof(NetICMP_StatRxMsgProcessedCtr)
|
||
+ sizeof(NetICMP_StatRxMsgErrProcessedCtr)
|
||
+ sizeof(NetICMP_StatRxMsgReqProcessedCtr)
|
||
+ sizeof(NetICMP_StatRxMsgReplyProcessedCtr)
|
||
+ sizeof(NetICMP_StatTxMsgCtr)
|
||
+ sizeof(NetICMP_StatTxMsgErrCtr)
|
||
+ sizeof(NetICMP_StatTxMsgReqCtr)
|
||
+ sizeof(NetICMP_StatTxMsgReplyCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_ErrRxHdrTypeCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrCodeCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrMsgLenCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrPtrCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetICMP_ErrRxBroadcastCtr)
|
||
+ sizeof(NetICMP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetICMP_ErrTxInvalidLenCtr)
|
||
+ sizeof(NetICMP_ErrTxHdrTypeCtr)
|
||
+ sizeof(NetICMP_ErrTxHdrCodeCtr)
|
||
+ sizeof(NetICMP_ErrTxPktDiscardedCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_ErrNullPtrCtr)
|
||
+ sizeof(NetICMP_ErrNotUsedCtr)
|
||
+ sizeof(NetICMP_ErrInvalidTypeCtr)
|
||
+ sizeof(NetICMP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetICMP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetICMP_ErrTxHdrPtrCtr)
|
||
#endif
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_ErrNoneAvailCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET UDP MODULE -------- */
|
||
const CPU_INT32U NetUDP_HdrSize = sizeof(NET_UDP_HDR);
|
||
const CPU_INT32U NetUDP_PseudoHdrSize = sizeof(NET_UDP_PSEUDO_HDR);
|
||
|
||
const CPU_INT32U NetUDP_PortNbrSize = sizeof(NET_UDP_PORT_NBR);
|
||
|
||
|
||
const CPU_INT32U NetUDP_DataSize = 0
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetUDP_StatRxPktCtr)
|
||
+ sizeof(NetUDP_StatRxDatagramProcessedCtr)
|
||
+ sizeof(NetUDP_StatTxDatagramCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetUDP_ErrNullPtrCtr)
|
||
+ sizeof(NetUDP_ErrInvalidFlagsCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrDatagramLenCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrPortSrcCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrPortDestCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetUDP_ErrRxDestCtr)
|
||
+ sizeof(NetUDP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetUDP_ErrTxPktDiscardedCtr)
|
||
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
|
||
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
|
||
+ sizeof(NetUDP_ErrTxInvalidSizeCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetUDP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetUDP_ErrTxProtocolCtr)
|
||
+ sizeof(NetUDP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrDataLenCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrPortSrcCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrPortDestCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrFlagsCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
/* ------- NET TCP MODULE -------- */
|
||
const CPU_INT32U NetTCP_HdrSize = sizeof(NET_TCP_HDR);
|
||
const CPU_INT32U NetTCP_PseudoHdrSize = sizeof(NET_TCP_PSEUDO_HDR);
|
||
|
||
const CPU_INT32U NetTCP_PortNbrSize = sizeof(NET_TCP_PORT_NBR);
|
||
const CPU_INT32U NetTCP_SeqNbrSize = sizeof(NET_TCP_SEQ_NBR);
|
||
const CPU_INT32U NetTCP_SegLenSize = sizeof(NET_TCP_SEG_SIZE);
|
||
const CPU_INT32U NetTCP_WinSize = sizeof(NET_TCP_WIN_SIZE);
|
||
const CPU_INT32U NetTCP_OptSize = sizeof(NET_TCP_OPT_SIZE);
|
||
|
||
const CPU_INT32U NetTCP_ConnID_Size = sizeof(NET_TCP_CONN_ID);
|
||
const CPU_INT32U NetTCP_ConnSize = sizeof(NET_TCP_CONN);
|
||
const CPU_INT32U NetTCP_ConnTblSize = sizeof(NetTCP_ConnTbl);
|
||
|
||
|
||
const CPU_INT32U NetTCP_DataSize = 0
|
||
|
||
+ sizeof(NetTCP_ConnTbl)
|
||
+ sizeof(NetTCP_ConnPoolPtr)
|
||
+ sizeof(NetTCP_ConnPoolStat)
|
||
|
||
+ sizeof(NetTCP_TxSeqNbrCtr)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetTCP_StatRxPktCtr)
|
||
+ sizeof(NetTCP_StatRxSegProcessedCtr)
|
||
+ sizeof(NetTCP_StatTxSegCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnSyncCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnCloseCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnAckCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnResetCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnProbeCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnTxQ_Ctr)
|
||
+ sizeof(NetTCP_StatTxSegConnReTxQ_Ctr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetTCP_ErrNullPtrCtr)
|
||
+ sizeof(NetTCP_ErrNoneAvailCtr)
|
||
+ sizeof(NetTCP_ErrNotUsedCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrLenCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrSegLenCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrPortSrcCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrPortDestCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrFlagsCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrOptsCtr)
|
||
+ sizeof(NetTCP_ErrRxDestCtr)
|
||
+ sizeof(NetTCP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetTCP_ErrTxOptTypeCtr)
|
||
+ sizeof(NetTCP_ErrTxPktDiscardedCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidOpCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidStateCtr)
|
||
+ sizeof(NetTCP_ErrConnCloseCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetTCP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetTCP_ErrTxInvalidProtocolCtr)
|
||
+ sizeof(NetTCP_ErrTxInvalidSizeCtr)
|
||
+ sizeof(NetTCP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrDataLenCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrPortSrcCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrPortDestCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrFlagsCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrOptLenCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrOptCfgCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
;
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
/* ------- NET SOCK MODULE -------- */
|
||
const CPU_INT32U NetSock_ID_Size = sizeof(NET_SOCK_ID);
|
||
const CPU_INT32U NetSock_RtnCodeSize = sizeof(NET_SOCK_RTN_CODE);
|
||
|
||
const CPU_INT32U NetSock_AddrLenSize = sizeof(NET_SOCK_ADDR_LEN);
|
||
const CPU_INT32U NetSock_SockAddrSize = sizeof(NET_SOCK_ADDR);
|
||
|
||
const CPU_INT32U NetSock_Size = sizeof(NET_SOCK);
|
||
const CPU_INT32U NetSock_TblSize = sizeof(NetSock_Tbl);
|
||
|
||
const CPU_INT32U NetSock_Q_LenSize = sizeof(NET_SOCK_Q_SIZE);
|
||
const CPU_INT32U NetSock_RandomPortNbrQ_Size = sizeof(NetSock_RandomPortNbrQ);
|
||
|
||
|
||
const CPU_INT32U NetSock_DataSize = 0
|
||
|
||
+ sizeof(NetSock_Tbl)
|
||
+ sizeof(NetSock_PoolPtr)
|
||
+ sizeof(NetSock_PoolStat)
|
||
|
||
+ sizeof(NetSock_RandomPortNbrQ)
|
||
+ sizeof(NetSock_RandomPortNbrQ_HeadIx)
|
||
+ sizeof(NetSock_RandomPortNbrQ_TailIx)
|
||
+ sizeof(NetSock_RandomPortNbrQ_NbrUsed)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_StatRxPktCtr)
|
||
+ sizeof(NetSock_StatRxPktProcessedCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrNullPtrCtr)
|
||
+ sizeof(NetSock_ErrNullSizeCtr)
|
||
+ sizeof(NetSock_ErrNoneAvailCtr)
|
||
+ sizeof(NetSock_ErrNotUsedCtr)
|
||
+ sizeof(NetSock_ErrCloseCtr)
|
||
+ sizeof(NetSock_ErrInvalidFamilyCtr)
|
||
+ sizeof(NetSock_ErrInvalidProtocolCtr)
|
||
+ sizeof(NetSock_ErrInvalidSockTypeCtr)
|
||
+ sizeof(NetSock_ErrInvalidSockCtr)
|
||
+ sizeof(NetSock_ErrInvalidFlagsCtr)
|
||
+ sizeof(NetSock_ErrInvalidOpCtr)
|
||
+ sizeof(NetSock_ErrInvalidStateCtr)
|
||
+ sizeof(NetSock_ErrInvalidAddrCtr)
|
||
+ sizeof(NetSock_ErrInvalidAddrLenCtr)
|
||
+ sizeof(NetSock_ErrInvalidAddrInUseCtr)
|
||
+ sizeof(NetSock_ErrInvalidPortNbrCtr)
|
||
+ sizeof(NetSock_ErrInvalidConnInUseCtr)
|
||
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrConnAcceptQ_NoneAvailCtr)
|
||
#endif
|
||
+ sizeof(NetSock_ErrRandomPortNbrNoneAvailCtr)
|
||
+ sizeof(NetSock_ErrRxDestCtr)
|
||
+ sizeof(NetSock_ErrRxPktDiscardedCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrTxInvalidSizeCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrInvalidTypeCtr)
|
||
+ sizeof(NetSock_ErrInvalidConnCtr)
|
||
+ sizeof(NetSock_ErrRxInvalidBufIxCtr)
|
||
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrConnAcceptQ_MaxCtr)
|
||
#endif
|
||
+ sizeof(NetSock_ErrRandomPortNbrQ_UsedCtr)
|
||
+ sizeof(NetSock_ErrRandomPortNbrQ_NbrInQ_Ctr)
|
||
#endif
|
||
#endif
|
||
;
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET BSD MODULE -------- */
|
||
#if (NET_BSD_CFG_API_EN == DEF_ENABLED)
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
#if (NET_SOCK_CFG_FAMILY == NET_SOCK_FAMILY_IP_V4)
|
||
const CPU_INT32U NetBSD_IP_to_Str_ArraySize = sizeof(NetBSD_IP_to_Str_Array);
|
||
#endif
|
||
#endif
|
||
#endif
|
||
|
||
|
||
const CPU_INT32U NetBSD_DataSize = 0
|
||
|
||
#if (NET_BSD_CFG_API_EN == DEF_ENABLED)
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
#if (NET_SOCK_CFG_FAMILY == NET_SOCK_FAMILY_IP_V4)
|
||
+ sizeof(NetBSD_IP_to_Str_Array)
|
||
#endif
|
||
#endif
|
||
#endif
|
||
;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------ NET TOTAL DATA SIZE ----- */
|
||
/* Calc total data size ... */
|
||
const CPU_INT32U Net_DataSizeTot = 0 /* ... (see Note #2). */
|
||
|
||
|
||
/* ---------- NET MODULE ---------- */
|
||
+ sizeof(Net_InitDone)
|
||
|
||
#if (NET_CFG_LOAD_BAL_EN == DEF_ENABLED)
|
||
+ sizeof(Net_RxPktCtr)
|
||
+ sizeof(Net_TxSuspendCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(Net_ErrInvalidProtocolCtr)
|
||
#endif
|
||
|
||
|
||
|
||
/* ------- NET DBG MODULE -------- */
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED)
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
+ sizeof(NetDbg_RsrcBufSmallThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcBufSmallThLoHyst_nbr)
|
||
#endif
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
+ sizeof(NetDbg_RsrcBufLargeThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcBufLargeThLoHyst_nbr)
|
||
#endif
|
||
+ sizeof(NetDbg_RsrcTmrThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcTmrThLoHyst_nbr)
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcConnThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcConnThLoHyst_nbr)
|
||
#endif
|
||
#ifdef NET_ARP_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcARP_CacheThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcARP_CacheThLoHyst_nbr)
|
||
#endif
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcTCP_ConnThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcTCP_ConnThLoHyst_nbr)
|
||
#endif
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
+ sizeof(NetDbg_RsrcSockThLo_nbr)
|
||
+ sizeof(NetDbg_RsrcSockThLoHyst_nbr)
|
||
#endif
|
||
#endif
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
+ sizeof(NetDbg_MonTaskTmr)
|
||
+ sizeof(NetDbg_MonTaskTime_sec)
|
||
+ sizeof(NetDbg_MonTaskTime_tick)
|
||
|
||
+ sizeof(NetDbg_MonTaskStatusRsrcLost)
|
||
+ sizeof(NetDbg_MonTaskStatusRsrcLo)
|
||
#endif
|
||
|
||
|
||
|
||
/* ------- NET STAT MODULE -------- */
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetStat_ErrNullPtrCtr)
|
||
+ sizeof(NetStat_ErrInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET TMR MODULE -------- */
|
||
+ sizeof(NetTmr_Tbl)
|
||
+ sizeof(NetTmr_PoolPtr)
|
||
+ sizeof(NetTmr_PoolStat)
|
||
|
||
+ sizeof(NetTmr_TaskListHead)
|
||
+ sizeof(NetTmr_TaskListPtr)
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetTmr_ErrNoneAvailCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetTmr_ErrNullPtrCtr)
|
||
+ sizeof(NetTmr_ErrNullObjCtr)
|
||
+ sizeof(NetTmr_ErrNullFnctCtr)
|
||
+ sizeof(NetTmr_ErrNotUsedCtr)
|
||
+ sizeof(NetTmr_ErrInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
/* ------- NET BUF MODULE -------- */
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
+ sizeof(NetBuf_SmallTbl)
|
||
+ sizeof(NetBuf_SmallPoolPtr)
|
||
+ sizeof(NetBuf_SmallPoolStat)
|
||
#endif
|
||
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
+ sizeof(NetBuf_LargeTbl)
|
||
+ sizeof(NetBuf_LargePoolPtr)
|
||
+ sizeof(NetBuf_LargePoolStat)
|
||
#endif
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetBuf_ErrNoneAvailCtr)
|
||
+ sizeof(NetBuf_ErrInvalidTypeCtr)
|
||
+ sizeof(NetBuf_ErrSizeCtr)
|
||
+ sizeof(NetBuf_ErrLenCtr)
|
||
+ sizeof(NetBuf_ErrLostCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetBuf_ErrNullPtrCtr)
|
||
+ sizeof(NetBuf_ErrNotUsedCtr)
|
||
+ sizeof(NetBuf_ErrIxCtr)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
/* ------- NET CONN MODULE -------- */
|
||
+ sizeof(NetConn_Tbl)
|
||
+ sizeof(NetConn_PoolPtr)
|
||
+ sizeof(NetConn_PoolStat)
|
||
|
||
+ sizeof(NetConn_ServerConnListHead)
|
||
+ sizeof(NetConn_ClientConnListHead)
|
||
|
||
+ sizeof(NetConn_ConnListChainPtr)
|
||
+ sizeof(NetConn_ConnListConnPtr)
|
||
+ sizeof(NetConn_ConnListNextChainPtr)
|
||
+ sizeof(NetConn_ConnListNextConnPtr)
|
||
|
||
+ sizeof(NetConn_AccessedTh_nbr)
|
||
|
||
+ sizeof(NetConn_AddrWildCardAvail)
|
||
+ sizeof(NetConn_AddrWildCard)
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetConn_ErrNoneAvailCtr)
|
||
+ sizeof(NetConn_ErrNotUsedCtr)
|
||
+ sizeof(NetConn_ErrCloseCtr)
|
||
+ sizeof(NetConn_ErrInvalidConnCtr)
|
||
+ sizeof(NetConn_ErrInvalidConnAddrLenCtr)
|
||
+ sizeof(NetConn_ErrInvalidConnAddrInUseCtr)
|
||
+ sizeof(NetConn_ErrInvalidFamilyCtr)
|
||
+ sizeof(NetConn_ErrInvalidListTypeCtr)
|
||
+ sizeof(NetConn_ErrInvalidListIxCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetConn_ErrNullPtrCtr)
|
||
+ sizeof(NetConn_ErrInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_ARP_MODULE_PRESENT
|
||
/* ------- NET ARP MODULE -------- */
|
||
+ sizeof(NetARP_HostAddrPtrHW)
|
||
+ sizeof(NetARP_HostAddrPtrProtocol)
|
||
|
||
+ sizeof(NetARP_CacheTbl)
|
||
+ sizeof(NetARP_CachePoolPtr)
|
||
+ sizeof(NetARP_CachePoolStat)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_CacheSrchCtr_lo)
|
||
+ sizeof(NetARP_CacheSrchCtr_hi)
|
||
+ sizeof(NetARP_CacheFoundCtr_lo)
|
||
+ sizeof(NetARP_CacheFoundCtr_hi)
|
||
+ sizeof(NetARP_CacheFoundPct)
|
||
#endif
|
||
|
||
+ sizeof(NetARP_CacheListHead)
|
||
+ sizeof(NetARP_CacheListTail)
|
||
+ sizeof(NetARP_CacheTimeout_sec)
|
||
+ sizeof(NetARP_CacheTimeout_tick)
|
||
+ sizeof(NetARP_CacheAccessedTh_nbr)
|
||
|
||
+ sizeof(NetARP_ReqMaxAttempts_nbr)
|
||
+ sizeof(NetARP_ReqTimeout_sec)
|
||
+ sizeof(NetARP_ReqTimeout_tick)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_StatRxPktCtr)
|
||
+ sizeof(NetARP_StatRxMsgProcessedCtr)
|
||
+ sizeof(NetARP_StatRxMsgReqProcessedCtr)
|
||
+ sizeof(NetARP_StatRxMsgReplyProcessedCtr)
|
||
+ sizeof(NetARP_StatTxMsgCtr)
|
||
+ sizeof(NetARP_StatTxMsgReqCtr)
|
||
+ sizeof(NetARP_StatTxMsgReplyCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_ErrNoneAvailCtr)
|
||
+ sizeof(NetARP_ErrRxHdrHW_TypeCtr)
|
||
+ sizeof(NetARP_ErrRxHdrHW_AddrLenCtr)
|
||
+ sizeof(NetARP_ErrRxHdrHW_AddrCtr)
|
||
+ sizeof(NetARP_ErrRxHdrProtocolTypeCtr)
|
||
+ sizeof(NetARP_ErrRxHdrProtocolAddrLenCtr)
|
||
+ sizeof(NetARP_ErrRxHdrProtocolAddrCtr)
|
||
+ sizeof(NetARP_ErrRxHdrOpCodeCtr)
|
||
+ sizeof(NetARP_ErrRxHdrOpAddrCtr)
|
||
+ sizeof(NetARP_ErrRxHdrMsgLenCtr)
|
||
+ sizeof(NetARP_ErrRxPktTargetReplyCtr)
|
||
+ sizeof(NetARP_ErrRxPktTargetNotThisHostCtr)
|
||
+ sizeof(NetARP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetARP_ErrTxPktDiscardedCtr)
|
||
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
|
||
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
|
||
+ sizeof(NetARP_ErrNullPtrCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_ErrInvalidAddrLenHW_Ctr)
|
||
+ sizeof(NetARP_ErrInvalidAddrLenProtocolCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetARP_ErrNotUsedCtr)
|
||
+ sizeof(NetARP_ErrInvalidTypeCtr)
|
||
+ sizeof(NetARP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetARP_ErrTxHdrOpCodeCtr)
|
||
#endif
|
||
#endif
|
||
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET IP MODULE -------- */
|
||
+ sizeof(NetIP_AddrThisHost)
|
||
+ sizeof(NetIP_AddrThisHostNetOrder)
|
||
+ sizeof(NetIP_AddrThisHostSubnetMask)
|
||
+ sizeof(NetIP_AddrThisHostSubnetMaskHost)
|
||
+ sizeof(NetIP_AddrThisHostSubnetNet)
|
||
+ sizeof(NetIP_AddrDfltGateway)
|
||
|
||
+ sizeof(NetIP_FragReasmListsHead)
|
||
+ sizeof(NetIP_FragReasmListsTail)
|
||
+ sizeof(NetIP_FragReasmTimeout_sec)
|
||
+ sizeof(NetIP_FragReasmTimeout_tick)
|
||
|
||
+ sizeof(NetIP_TxIDCtr)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetIP_StatRxPktCtr)
|
||
+ sizeof(NetIP_StatRxDatagramProcessedCtr)
|
||
+ sizeof(NetIP_StatRxDestLocalCtr)
|
||
+ sizeof(NetIP_StatRxDestBroadcastCtr)
|
||
+ sizeof(NetIP_StatRxFragCtr)
|
||
+ sizeof(NetIP_StatRxFragDatagramReasmCtr)
|
||
+ sizeof(NetIP_StatTxDatagramCtr)
|
||
+ sizeof(NetIP_StatTxDestLocalCtr)
|
||
+ sizeof(NetIP_StatTxDestBroadcastCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetIP_ErrNullPtrCtr)
|
||
+ sizeof(NetIP_ErrCfgAddrThisHostCtr)
|
||
+ sizeof(NetIP_ErrCfgAddrDfltGatewayCtr)
|
||
+ sizeof(NetIP_ErrRxHdrVerCtr)
|
||
+ sizeof(NetIP_ErrRxHdrLenCtr)
|
||
+ sizeof(NetIP_ErrRxHdrTotLenCtr)
|
||
+ sizeof(NetIP_ErrRxHdrFlagsCtr)
|
||
+ sizeof(NetIP_ErrRxHdrFragCtr)
|
||
+ sizeof(NetIP_ErrRxHdrProtocolCtr)
|
||
+ sizeof(NetIP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetIP_ErrRxHdrAddrSrcCtr)
|
||
+ sizeof(NetIP_ErrRxHdrOptsCtr)
|
||
+ sizeof(NetIP_ErrRxHdrOptsBufNoneAvailCtr)
|
||
+ sizeof(NetIP_ErrRxHdrOptsBufWrCtr)
|
||
+ sizeof(NetIP_ErrRxDestCtr)
|
||
+ sizeof(NetIP_ErrRxDestBroadcastCtr)
|
||
+ sizeof(NetIP_ErrRxFragSizeCtr)
|
||
+ sizeof(NetIP_ErrRxFragDiscardedCtr)
|
||
+ sizeof(NetIP_ErrRxFragDatagramDiscardedCtr)
|
||
+ sizeof(NetIP_ErrRxFragDatagramTimeoutCtr)
|
||
+ sizeof(NetIP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetIP_ErrTxProtocolCtr)
|
||
+ sizeof(NetIP_ErrTxOptTypeCtr)
|
||
+ sizeof(NetIP_ErrTxDestCtr)
|
||
+ sizeof(NetIP_ErrTxPktDiscardedCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetIP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetIP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetIP_ErrRxFragFlagsCtr)
|
||
+ sizeof(NetIP_ErrRxFragOffsetCtr)
|
||
+ sizeof(NetIP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetIP_ErrTxHdrTOS_Ctr)
|
||
+ sizeof(NetIP_ErrTxHdrDataLenCtr)
|
||
+ sizeof(NetIP_ErrTxHdrAddrSrcCtr)
|
||
+ sizeof(NetIP_ErrTxHdrAddrDestCtr)
|
||
+ sizeof(NetIP_ErrTxHdrFlagsCtr)
|
||
+ sizeof(NetIP_ErrTxHdrOptLenCtr)
|
||
+ sizeof(NetIP_ErrTxHdrOptCfgCtr)
|
||
#endif
|
||
#if 0 /* #### NOT currently implemented. */
|
||
+ sizeof(NetIP_ErrTxFragDiscardedCtr)
|
||
+ sizeof(NetIP_ErrTxFragDiscardedDontFragCtr)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET ICMP MODULE -------- */
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_TxSrcQuenchTbl)
|
||
+ sizeof(NetICMP_TxSrcQuenchPoolStat)
|
||
+ sizeof(NetICMP_TxSrcQuenchPoolPtr)
|
||
+ sizeof(NetICMP_TxSrcQuenchListHead)
|
||
+ sizeof(NetICMP_TxSrcQuenchListTail)
|
||
+ sizeof(NetICMP_TxSrcQuenchTxTh_nbr)
|
||
#endif
|
||
|
||
+ sizeof(NetICMP_TxSeqNbrCtr)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_StatRxMsgCtr)
|
||
+ sizeof(NetICMP_StatRxMsgProcessedCtr)
|
||
+ sizeof(NetICMP_StatRxMsgErrProcessedCtr)
|
||
+ sizeof(NetICMP_StatRxMsgReqProcessedCtr)
|
||
+ sizeof(NetICMP_StatRxMsgReplyProcessedCtr)
|
||
+ sizeof(NetICMP_StatTxMsgCtr)
|
||
+ sizeof(NetICMP_StatTxMsgErrCtr)
|
||
+ sizeof(NetICMP_StatTxMsgReqCtr)
|
||
+ sizeof(NetICMP_StatTxMsgReplyCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_ErrRxHdrTypeCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrCodeCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrMsgLenCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrPtrCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetICMP_ErrRxBroadcastCtr)
|
||
+ sizeof(NetICMP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetICMP_ErrTxInvalidLenCtr)
|
||
+ sizeof(NetICMP_ErrTxHdrTypeCtr)
|
||
+ sizeof(NetICMP_ErrTxHdrCodeCtr)
|
||
+ sizeof(NetICMP_ErrTxPktDiscardedCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_ErrNullPtrCtr)
|
||
+ sizeof(NetICMP_ErrNotUsedCtr)
|
||
+ sizeof(NetICMP_ErrInvalidTypeCtr)
|
||
+ sizeof(NetICMP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetICMP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetICMP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetICMP_ErrTxHdrPtrCtr)
|
||
#endif
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
+ sizeof(NetICMP_ErrNoneAvailCtr)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET UDP MODULE -------- */
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetUDP_StatRxPktCtr)
|
||
+ sizeof(NetUDP_StatRxDatagramProcessedCtr)
|
||
+ sizeof(NetUDP_StatTxDatagramCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetUDP_ErrNullPtrCtr)
|
||
+ sizeof(NetUDP_ErrInvalidFlagsCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrDatagramLenCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrPortSrcCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrPortDestCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetUDP_ErrRxDestCtr)
|
||
+ sizeof(NetUDP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetUDP_ErrTxPktDiscardedCtr)
|
||
#if ((NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED) || \
|
||
(NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED))
|
||
+ sizeof(NetUDP_ErrTxInvalidSizeCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetUDP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetUDP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetUDP_ErrTxProtocolCtr)
|
||
+ sizeof(NetUDP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrDataLenCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrPortSrcCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrPortDestCtr)
|
||
+ sizeof(NetUDP_ErrTxHdrFlagsCtr)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
/* ------- NET TCP MODULE -------- */
|
||
+ sizeof(NetTCP_ConnTbl)
|
||
+ sizeof(NetTCP_ConnPoolPtr)
|
||
+ sizeof(NetTCP_ConnPoolStat)
|
||
|
||
+ sizeof(NetTCP_TxSeqNbrCtr)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetTCP_StatRxPktCtr)
|
||
+ sizeof(NetTCP_StatRxSegProcessedCtr)
|
||
+ sizeof(NetTCP_StatTxSegCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnSyncCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnCloseCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnAckCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnResetCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnProbeCtr)
|
||
+ sizeof(NetTCP_StatTxSegConnTxQ_Ctr)
|
||
+ sizeof(NetTCP_StatTxSegConnReTxQ_Ctr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetTCP_ErrNullPtrCtr)
|
||
+ sizeof(NetTCP_ErrNoneAvailCtr)
|
||
+ sizeof(NetTCP_ErrNotUsedCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrLenCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrSegLenCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrPortSrcCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrPortDestCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrFlagsCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrChkSumCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrOptsCtr)
|
||
+ sizeof(NetTCP_ErrRxDestCtr)
|
||
+ sizeof(NetTCP_ErrRxPktDiscardedCtr)
|
||
+ sizeof(NetTCP_ErrTxOptTypeCtr)
|
||
+ sizeof(NetTCP_ErrTxPktDiscardedCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidOpCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidStateCtr)
|
||
+ sizeof(NetTCP_ErrConnCloseCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetTCP_ErrRxInvalidBufIxCtr)
|
||
+ sizeof(NetTCP_ErrRxHdrDataLenCtr)
|
||
+ sizeof(NetTCP_ErrTxInvalidProtocolCtr)
|
||
+ sizeof(NetTCP_ErrTxInvalidSizeCtr)
|
||
+ sizeof(NetTCP_ErrTxInvalidBufIxCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrDataLenCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrPortSrcCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrPortDestCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrFlagsCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrOptLenCtr)
|
||
+ sizeof(NetTCP_ErrTxHdrOptCfgCtr)
|
||
+ sizeof(NetTCP_ErrConnInvalidTypeCtr)
|
||
#endif
|
||
#endif
|
||
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
/* ------- NET SOCK MODULE -------- */
|
||
+ sizeof(NetSock_Tbl)
|
||
+ sizeof(NetSock_PoolPtr)
|
||
+ sizeof(NetSock_PoolStat)
|
||
|
||
+ sizeof(NetSock_RandomPortNbrQ)
|
||
+ sizeof(NetSock_RandomPortNbrQ_HeadIx)
|
||
+ sizeof(NetSock_RandomPortNbrQ_TailIx)
|
||
+ sizeof(NetSock_RandomPortNbrQ_NbrUsed)
|
||
|
||
#if (NET_CTR_CFG_STAT_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_StatRxPktCtr)
|
||
+ sizeof(NetSock_StatRxPktProcessedCtr)
|
||
#endif
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrNullPtrCtr)
|
||
+ sizeof(NetSock_ErrNullSizeCtr)
|
||
+ sizeof(NetSock_ErrNoneAvailCtr)
|
||
+ sizeof(NetSock_ErrNotUsedCtr)
|
||
+ sizeof(NetSock_ErrCloseCtr)
|
||
+ sizeof(NetSock_ErrInvalidFamilyCtr)
|
||
+ sizeof(NetSock_ErrInvalidProtocolCtr)
|
||
+ sizeof(NetSock_ErrInvalidSockTypeCtr)
|
||
+ sizeof(NetSock_ErrInvalidSockCtr)
|
||
+ sizeof(NetSock_ErrInvalidFlagsCtr)
|
||
+ sizeof(NetSock_ErrInvalidOpCtr)
|
||
+ sizeof(NetSock_ErrInvalidStateCtr)
|
||
+ sizeof(NetSock_ErrInvalidAddrCtr)
|
||
+ sizeof(NetSock_ErrInvalidAddrLenCtr)
|
||
+ sizeof(NetSock_ErrInvalidAddrInUseCtr)
|
||
+ sizeof(NetSock_ErrInvalidPortNbrCtr)
|
||
+ sizeof(NetSock_ErrInvalidConnInUseCtr)
|
||
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrConnAcceptQ_NoneAvailCtr)
|
||
#endif
|
||
+ sizeof(NetSock_ErrRandomPortNbrNoneAvailCtr)
|
||
+ sizeof(NetSock_ErrRxDestCtr)
|
||
+ sizeof(NetSock_ErrRxPktDiscardedCtr)
|
||
#if (NET_ERR_CFG_ARG_CHK_EXT_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrTxInvalidSizeCtr)
|
||
#endif
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrInvalidTypeCtr)
|
||
+ sizeof(NetSock_ErrInvalidConnCtr)
|
||
+ sizeof(NetSock_ErrRxInvalidBufIxCtr)
|
||
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
|
||
+ sizeof(NetSock_ErrConnAcceptQ_MaxCtr)
|
||
#endif
|
||
+ sizeof(NetSock_ErrRandomPortNbrQ_UsedCtr)
|
||
+ sizeof(NetSock_ErrRandomPortNbrQ_NbrInQ_Ctr)
|
||
#endif
|
||
#endif
|
||
|
||
#endif
|
||
|
||
|
||
|
||
/* ------- NET BSD MODULE -------- */
|
||
#if (NET_BSD_CFG_API_EN == DEF_ENABLED)
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
#if (NET_SOCK_CFG_FAMILY == NET_SOCK_FAMILY_IP_V4)
|
||
+ sizeof(NetBSD_IP_to_Str_Array)
|
||
#endif
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
; /* End of total data size calc. */
|
||
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL DATA TYPES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL TABLES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL GLOBAL VARIABLES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL FUNCTION PROTOTYPES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
static void NetDbg_InitInfoConst (void);
|
||
|
||
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_TCP_MODULE_PRESENT)))
|
||
static NET_DBG_STATUS NetDbg_ChkStatusHandlerTCP_Q (NET_TCP_CONN *pconn_chk,
|
||
NET_BUF *pbuf_chk_q);
|
||
|
||
static NET_DBG_STATUS NetDbg_ChkStatusHandlerTCP_Q_Dup(NET_BUF *pbuf_chk,
|
||
NET_BUF *pbuf_q);
|
||
#endif
|
||
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
static void NetDbg_MonTask (void *ptask);
|
||
#endif
|
||
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* LOCAL CONFIGURATION ERRORS
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_Init()
|
||
*
|
||
* Description : (1) Initialize Network Debug Management Module :
|
||
*
|
||
* (a) Initialize debug status & monitor task handlers
|
||
* (b) Initialize debug information constants
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : none.
|
||
*
|
||
* Caller(s) : Net_Init().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & MUST NOT be called by
|
||
* application function(s).
|
||
*
|
||
* Note(s) : (2) (a) NetDbg_Init() MUST follow :
|
||
*
|
||
* (1) NetTmr_Init() to successfully get a network timer during network initialization
|
||
* (see 'net.c Net_Init() Note #4b').
|
||
*
|
||
* (2) NetDbg_CfgMonTaskTime() via Net_InitDflt() to successfully configure the
|
||
* Debug Monitor Task time.
|
||
*
|
||
* (b) Do NOT need to verify success of Timer Get since every status get will check & get
|
||
* a Debug Monitor Task Handler timer as needed (see 'NetDbg_MonTask() Note #4').
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
void NetDbg_Init (void)
|
||
{
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
NET_ERR err;
|
||
|
||
|
||
/* ----- INIT DBG STATUS TASK / HANDLERS ------ */
|
||
NetDbg_MonTaskStatusRsrcLost = NET_DBG_STATUS_OK;
|
||
NetDbg_MonTaskStatusRsrcLo = NET_DBG_STATUS_OK;
|
||
/* See Note #2. */
|
||
NetDbg_MonTaskTmr = NetTmr_Get((void *) NetDbg_MonTask,
|
||
(CPU_FNCT_PTR) NetDbg_MonTask,
|
||
(NET_TMR_TICK) NetDbg_MonTaskTime_tick,
|
||
(CPU_INT16U ) NET_TMR_FLAG_NONE,
|
||
(NET_ERR *)&err);
|
||
#endif
|
||
|
||
|
||
/* ----------- INIT DBG INFO CONSTS ----------- */
|
||
NetDbg_InitInfoConst();
|
||
}
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcBufSmallThLo()
|
||
*
|
||
* Description : (1) Configure SMALL network buffer monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of SMALL network buffers concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of SMALL network buffers freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, SMALL network buffer monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) && \
|
||
(NET_BUF_CFG_NBR_SMALL > 0))
|
||
CPU_BOOLEAN NetDbg_CfgRsrcBufSmallThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* -------- VALIDATE SMALL BUF MON TH --------- */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_BUF_CFG_NBR_SMALL) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_BUF_CFG_NBR_SMALL) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* ------- VALIDATE SMALL BUF MON HYST -------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_BUF_CFG_NBR_SMALL) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* ------- CFG SMALL BUF MON TH & HYST -------- */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcBufSmallThLo_nbr = th;
|
||
NetDbg_RsrcBufSmallThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcBufLargeThLo()
|
||
*
|
||
* Description : (1) Configure LARGE network buffer monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of LARGE network buffers concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of LARGE network buffers freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, LARGE network buffer monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) && \
|
||
(NET_BUF_CFG_NBR_LARGE > 0))
|
||
CPU_BOOLEAN NetDbg_CfgRsrcBufLargeThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* -------- VALIDATE LARGE BUF MON TH --------- */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_BUF_CFG_NBR_LARGE) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_BUF_CFG_NBR_LARGE) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* ------- VALIDATE LARGE BUF MON HYST -------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_BUF_CFG_NBR_LARGE) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* ------- CFG LARGE BUF MON TH & HYST -------- */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcBufLargeThLo_nbr = th;
|
||
NetDbg_RsrcBufLargeThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcTmrThLo()
|
||
*
|
||
* Description : (1) Configure network timer monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of network timers concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of network timers freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, network timer monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED)
|
||
CPU_BOOLEAN NetDbg_CfgRsrcTmrThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* ----------- VALIDATE TMR MON TH ------------ */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_TMR_CFG_NBR_TMR) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_TMR_CFG_NBR_TMR) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* ---------- VALIDATE TMR MON HYST ----------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_TMR_CFG_NBR_TMR) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* ------------ CFG TMR TH & HYST ------------- */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcTmrThLo_nbr = th;
|
||
NetDbg_RsrcTmrThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcConnThLo()
|
||
*
|
||
* Description : (1) Configure network connection monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of network connections concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of network connections freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, network connection monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) && \
|
||
(defined(NET_CONN_MODULE_PRESENT)))
|
||
CPU_BOOLEAN NetDbg_CfgRsrcConnThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* --------- VALIDATE NET CONN MON TH --------- */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_CONN_CFG_NBR_CONN) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_CONN_CFG_NBR_CONN) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* -------- VALIDATE NET CONN MON HYST -------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_CONN_CFG_NBR_CONN) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* ---------- CFG NET CONN TH & HYST ---------- */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcConnThLo_nbr = th;
|
||
NetDbg_RsrcConnThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcARP_CacheThLo()
|
||
*
|
||
* Description : (1) Configure ARP cache monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of ARP cache concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of ARP cache freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, ARP cache monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) && \
|
||
(defined(NET_ARP_MODULE_PRESENT)))
|
||
CPU_BOOLEAN NetDbg_CfgRsrcARP_CacheThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* -------- VALIDATE ARP CACHE MON TH --------- */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_ARP_CFG_NBR_CACHE) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_ARP_CFG_NBR_CACHE) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* ------- VALIDATE ARP CACHE MON HYST -------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_ARP_CFG_NBR_CACHE) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* --------- CFG ARP CACHE TH & HYST ---------- */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcARP_CacheThLo_nbr = th;
|
||
NetDbg_RsrcARP_CacheThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcTCP_ConnThLo()
|
||
*
|
||
* Description : (1) Configure TCP connection monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of TCP connections concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of TCP connections freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, TCP connection monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) && \
|
||
(defined(NET_TCP_MODULE_PRESENT)))
|
||
CPU_BOOLEAN NetDbg_CfgRsrcTCP_ConnThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* --------- VALIDATE TCP CONN MON TH --------- */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_TCP_CFG_NBR_CONN) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_TCP_CFG_NBR_CONN) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* -------- VALIDATE TCP CONN MON HYST -------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_TCP_CFG_NBR_CONN) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* ---------- CFG TCP CONN TH & HYST ---------- */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcTCP_ConnThLo_nbr = th;
|
||
NetDbg_RsrcTCP_ConnThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgRsrcSockThLo()
|
||
*
|
||
* Description : (1) Configure socket monitor threshold & hysteresis :
|
||
*
|
||
* (a) Validate desired threshold value
|
||
* (b) Validate desired hysteresis value
|
||
* (c) Configure desired threshold & hysteresis values
|
||
*
|
||
*
|
||
* Argument(s) : th Desired number of sockets concurrently in use to trip low resources.
|
||
*
|
||
* hyst Desired number of sockets freed to clear low resources.
|
||
*
|
||
* Return(s) : DEF_OK, socket monitor threshold & hysteresis configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Hysteresis maximum validation MUST occur BEFORE minimum validation since hysteresis
|
||
* maximum value MAY be zero (e.g. for extremely few configured objects). This ensures
|
||
* that the monitor hysteresis value is greater than or equal to the hysteresis minimum
|
||
* value.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) && \
|
||
(defined(NET_SOCK_MODULE_PRESENT)))
|
||
CPU_BOOLEAN NetDbg_CfgRsrcSockThLo (NET_DBG_RSRC_QTY th,
|
||
NET_DBG_RSRC_QTY hyst)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_RSRC_QTY th_max;
|
||
NET_DBG_RSRC_QTY th_min;
|
||
NET_DBG_RSRC_QTY hyst_max;
|
||
|
||
/* ----------- VALIDATE SOCK MON TH ----------- */
|
||
th_max = (NET_DBG_RSRC_TH_LO_MAX_NUMER * NET_SOCK_CFG_NBR_SOCK) / NET_DBG_RSRC_TH_LO_MAX_DENOM;
|
||
if (th > th_max) {
|
||
th = th_max;
|
||
}
|
||
|
||
th_min = (NET_DBG_RSRC_TH_LO_MIN_NUMER * NET_SOCK_CFG_NBR_SOCK) / NET_DBG_RSRC_TH_LO_MIN_DENOM;
|
||
if (th < th_min) {
|
||
th = th_min;
|
||
}
|
||
if (th < NET_DBG_RSRC_TH_LO_MIN) {
|
||
th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
|
||
/* ---------- VALIDATE SOCK MON HYST ---------- */
|
||
/* See Note #2. */
|
||
hyst_max = (NET_DBG_RSRC_TH_LO_HYST_MAX_NUMER * NET_SOCK_CFG_NBR_SOCK) / NET_DBG_RSRC_TH_LO_HYST_MAX_DENOM;
|
||
if (hyst > hyst_max) {
|
||
hyst = hyst_max;
|
||
}
|
||
|
||
if (hyst < NET_DBG_RSRC_TH_LO_HYST_MIN) {
|
||
hyst = NET_DBG_RSRC_TH_LO_HYST_MIN;
|
||
}
|
||
|
||
|
||
/* ------------ CFG SOCK TH & HYST ------------ */
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_RsrcSockThLo_nbr = th;
|
||
NetDbg_RsrcSockThLoHyst_nbr = hyst;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_CfgMonTaskTime()
|
||
*
|
||
* Description : (1) Configure Debug Monitor Task time (i.e. task scheduling period) :
|
||
*
|
||
* (a) Validate desired monitor task time
|
||
* (b) Configure desired monitor task time
|
||
*
|
||
*
|
||
* Argument(s) : time_sec Desired value for Debug Monitor Task time (in seconds).
|
||
*
|
||
* Return(s) : DEF_OK, Debug Monitor Task time configured.
|
||
*
|
||
* Caller(s) : Net_InitDflt(),
|
||
* Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s).
|
||
*
|
||
* Note(s) : (2) Time in seconds converted to 'NET_TMR_TICK' ticks in order to pre-compute initial
|
||
* timeout value in 'NET_TMR_TICK' ticks.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
CPU_BOOLEAN NetDbg_CfgMonTaskTime (CPU_INT16U time_sec)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_TMR_TICK tick;
|
||
|
||
/* ---------- VALIDATE MON TASK TIME ---------- */
|
||
if (time_sec < NET_DBG_MON_TASK_TIME_MIN_SEC) {
|
||
time_sec = NET_DBG_MON_TASK_TIME_MIN_SEC;
|
||
}
|
||
if (time_sec > NET_DBG_MON_TASK_TIME_MAX_SEC) {
|
||
time_sec = NET_DBG_MON_TASK_TIME_MAX_SEC;
|
||
}
|
||
|
||
/* ------------ CFG MON TASK TIME ------------- */
|
||
tick = (NET_TMR_TICK)time_sec * NET_TMR_TIME_TICK_PER_SEC;
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_MonTaskTime_sec = time_sec;
|
||
NetDbg_MonTaskTime_tick = tick;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
return (DEF_OK);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatus()
|
||
*
|
||
* Description : Check network protocol suite status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandler() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if network status OK; i.e. no warnings, faults, or errors.
|
||
*
|
||
* Otherwise, return summary network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_STATUS_FAULT_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* -- RETURNED BY NetDbg_ChkStatusHandler() : --
|
||
* NET_DBG_STATUS_FAULT Some network status fault(s).
|
||
*
|
||
* NET_DBG_STATUS_FAULT_RSRC_LOST Some network resource(s) lost.
|
||
* NET_DBG_STATUS_FAULT_RSRC_LO Some network resource(s) low.
|
||
*
|
||
* NET_DBG_STATUS_FAULT_BUF Some network buffer management fault(s).
|
||
* NET_DBG_STATUS_FAULT_TMR Some network timer management fault(s).
|
||
* NET_DBG_STATUS_FAULT_CONN Some network connection management fault(s).
|
||
*
|
||
* NET_DBG_STATUS_FAULT_TCP Some TCP layer fault(s).
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandler() Note #3'.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatus() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandler() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatus (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_STATUS_FAULT_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandler(); /* Chk net status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusBufs()
|
||
*
|
||
* Description : Check network buffer management status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandlerBufs() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network buffer faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* -- RETURNED BY NetDbg_ChkStatusHandlerBufs() : ---
|
||
* NET_DBG_SF_BUF Some network buffer management fault(s).
|
||
*
|
||
* NET_DBG_SF_BUF_SMALL_TYPE Small buffer invalid type.
|
||
* NET_DBG_SF_BUF_SMALL_ID Small buffer invalid ID.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_TYPE Small buffer invalid link type.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_UNUSED Small buffer link unused.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_BACK_TO_BUF Small buffer invalid link back to same buffer.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF Small buffer invalid link NOT back to same buffer.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_TO_BUF Small buffer invalid link back to buffer.
|
||
* NET_DBG_SF_BUF_SMALL_POOL_TYPE Small buffer invalid pool buffer type.
|
||
* NET_DBG_SF_BUF_SMALL_POOL_ID Small buffer invalid pool buffer ID.
|
||
* NET_DBG_SF_BUF_SMALL_POOL_DUP Small buffer pool contains duplicate buffer(s).
|
||
* NET_DBG_SF_BUF_SMALL_POOL_NBR_MAX Small buffer pool number of buffers greater than
|
||
* maximum number of small buffers.
|
||
* NET_DBG_SF_BUF_SMALL_USED_IN_POOL Small buffer used but in pool.
|
||
* NET_DBG_SF_BUF_SMALL_UNUSED_NOT_IN_POOL Small buffer unused but NOT in pool.
|
||
*
|
||
* NET_DBG_SF_BUF_LARGE_TYPE Large buffer invalid type.
|
||
* NET_DBG_SF_BUF_LARGE_ID Large buffer invalid ID.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_TYPE Large buffer invalid link type.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_UNUSED Large buffer link unused.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_BACK_TO_BUF Large buffer invalid link back to same buffer.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF Large buffer invalid link NOT back to same buffer.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_TO_BUF Large buffer invalid link back to buffer.
|
||
* NET_DBG_SF_BUF_LARGE_POOL_TYPE Large buffer invalid pool buffer type.
|
||
* NET_DBG_SF_BUF_LARGE_POOL_ID Large buffer invalid pool buffer ID.
|
||
* NET_DBG_SF_BUF_LARGE_POOL_DUP Large buffer pool contains duplicate buffer(s).
|
||
* NET_DBG_SF_BUF_LARGE_POOL_NBR_MAX Large buffer pool number of buffers greater than
|
||
* maximum number of large buffers.
|
||
* NET_DBG_SF_BUF_LARGE_USED_IN_POOL Large buffer used but in pool.
|
||
* NET_DBG_SF_BUF_LARGE_UNUSED_NOT_IN_POOL Large buffer unused but NOT in pool.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatusBufs() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerBufs() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusBufs (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandlerBufs(); /* Chk net buf status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusTmrs()
|
||
*
|
||
* Description : Check network timer management status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandlerTmrs() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network timer faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* --- RETURNED BY NetDbg_ChkStatusHandlerTmrs() : ----
|
||
* NET_DBG_SF_TMR Some network timer management fault(s).
|
||
*
|
||
* NET_DBG_SF_TMR_TYPE Network timer invalid type.
|
||
* NET_DBG_SF_TMR_ID Network timer invalid ID.
|
||
* NET_DBG_SF_TMR_LINK_TYPE Network timer invalid link type.
|
||
* NET_DBG_SF_TMR_LINK_UNUSED Network timer link unused.
|
||
* NET_DBG_SF_TMR_LINK_BACK_TO_TMR Network timer invalid link back to same timer.
|
||
* NET_DBG_SF_TMR_LINK_TO_TMR Network timer invalid link back to timer.
|
||
*
|
||
* NET_DBG_SF_TMR_POOL_TYPE Network timer invalid pool type.
|
||
* NET_DBG_SF_TMR_POOL_ID Network timer invalid pool ID.
|
||
* NET_DBG_SF_TMR_POOL_DUP Network timer pool contains duplicate timer(s).
|
||
* NET_DBG_SF_TMR_POOL_NBR_MAX Network timer pool number of timers greater
|
||
* than maximum number of timers.
|
||
*
|
||
* NET_DBG_SF_TMR_LIST_TYPE Network timer task list invalid type.
|
||
* NET_DBG_SF_TMR_LIST_ID Network timer task list invalid ID.
|
||
* NET_DBG_SF_TMR_LIST_DUP Network timer task list contains duplicate timer(s).
|
||
* NET_DBG_SF_TMR_LIST_NBR_MAX Network timer task list number of timers greater
|
||
* than maximum number of timers.
|
||
* NET_DBG_SF_TMR_LIST_NBR_USED Network timer task list number of timers NOT equal
|
||
* to number of used timers.
|
||
*
|
||
* NET_DBG_SF_TMR_USED_IN_POOL Network timer used but in pool.
|
||
* NET_DBG_SF_TMR_UNUSED_NOT_IN_POOL Network timer unused but NOT in pool.
|
||
* NET_DBG_SF_TMR_UNUSED_IN_LIST Network timer unused but in timer task list.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatusTmrs() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerTmrs() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusTmrs (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandlerTmrs(); /* Chk net tmr status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusConns()
|
||
*
|
||
* Description : Check network connection management status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandlerConns() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network connection faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* - RETURNED BY NetDbg_ChkStatusHandlerConns() : -
|
||
* NET_DBG_SF_CONN Some network connection management fault(s).
|
||
*
|
||
* NET_DBG_SF_CONN_TYPE Network connection invalid type.
|
||
* NET_DBG_SF_CONN_FAMILY Network connection invalid family.
|
||
* NET_DBG_SF_CONN_ID Network connection invalid ID.
|
||
* NET_DBG_SF_CONN_ID_NONE Network connection with NO connection IDs.
|
||
* NET_DBG_SF_CONN_ID_UNUSED Network connection linked to unused connection.
|
||
* NET_DBG_SF_CONN_LINK_TYPE Network connection invalid link type.
|
||
* NET_DBG_SF_CONN_LINK_UNUSED Network connection link unused.
|
||
* NET_DBG_SF_CONN_LINK_BACK_TO_CONN Network connection invalid link back to
|
||
* same connection.
|
||
* NET_DBG_SF_CONN_LINK_NOT_TO_CONN Network connection invalid link NOT back to
|
||
* same connection.
|
||
* NET_DBG_SF_CONN_LINK_NOT_IN_LIST Network connection NOT in appropriate
|
||
* connection list.
|
||
*
|
||
* NET_DBG_SF_CONN_POOL_TYPE Network connection invalid pool type.
|
||
* NET_DBG_SF_CONN_POOL_ID Network connection invalid pool ID.
|
||
* NET_DBG_SF_CONN_POOL_DUP Network connection pool contains duplicate
|
||
* connection(s).
|
||
* NET_DBG_SF_CONN_POOL_NBR_MAX Network connection pool number of connections
|
||
* greater than maximum number of connections.
|
||
*
|
||
* NET_DBG_SF_CONN_LIST_IX_NBR_MAX Network connection invalid list index number.
|
||
* NET_DBG_SF_CONN_LIST_NBR_NOT_SOLITARY Network connection lists number of connections
|
||
* NOT equal to solitary connection.
|
||
*
|
||
* NET_DBG_SF_CONN_USED_IN_POOL Network connection used but in pool.
|
||
* NET_DBG_SF_CONN_USED_NOT_IN_LIST Network connection used but NOT in list.
|
||
* NET_DBG_SF_CONN_UNUSED_IN_LIST Network connection unused but in list.
|
||
* NET_DBG_SF_CONN_UNUSED_NOT_IN_POOL Network connection unused but NOT in pool.
|
||
* NET_DBG_SF_CONN_IN_LIST_IN_POOL Network connection in list & in pool.
|
||
* NET_DBG_SF_CONN_NOT_IN_LIST_NOT_IN_POOL Network connection NOT in list & NOT in pool.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatusConns() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerConns() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_CONN_MODULE_PRESENT)))
|
||
NET_DBG_STATUS NetDbg_ChkStatusConns (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandlerConns(); /* Chk net conn status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusTCP()
|
||
*
|
||
* Description : Check TCP layer status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandlerTCP() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO TCP layer faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* ---- RETURNED BY NetDbg_ChkStatusHandlerTCP() : -----
|
||
* NET_DBG_SF_TCP Some TCP layer fault(s).
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_TYPE TCP connection invalid type.
|
||
* NET_DBG_SF_TCP_CONN_ID TCP connection invalid ID.
|
||
* NET_DBG_SF_TCP_CONN_LINK_TYPE TCP connection invalid link type.
|
||
* NET_DBG_SF_TCP_CONN_LINK_UNUSED TCP connection link unused.
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_POOL_TYPE TCP connection invalid pool type.
|
||
* NET_DBG_SF_TCP_CONN_POOL_ID TCP connection invalid pool ID.
|
||
* NET_DBG_SF_TCP_CONN_POOL_DUP TCP connection pool contains duplicate connection(s).
|
||
* NET_DBG_SF_TCP_CONN_POOL_NBR_MAX TCP connection pool number of connections greater
|
||
* than maximum number of connections.
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_USED_IN_POOL TCP connection used but in pool.
|
||
* NET_DBG_SF_TCP_CONN_UNUSED_NOT_IN_POOL TCP connection unused but NOT in pool.
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_Q Some TCP connection queue fault(s).
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_TYPE TCP connection queue buffer invalid type.
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_UNUSED TCP connection queue buffer unused.
|
||
* NET_DBG_SF_TCP_CONN_Q_LINK_TYPE TCP connection queue buffer invalid link type.
|
||
* NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED TCP connection queue buffer link unused.
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_DUP TCP connection queue contains duplicate buffer(s).
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatusTCP() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerTCP() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_TCP_MODULE_PRESENT)))
|
||
NET_DBG_STATUS NetDbg_ChkStatusTCP (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandlerTCP(); /* Chk TCP layer status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusRsrcLost()
|
||
*
|
||
* Description : Check network protocol suite lost resources status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandlerRsrcLost() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network resources lost.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* - RETURNED BY NetDbg_ChkStatusHandlerRsrcLost() : -
|
||
* NET_DBG_SF_RSRC_LOST Some network resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_BUF_SMALL Some network SMALL buffer resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_BUF_LARGE Some network LARGE buffer resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_TMR Some network timer resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_CONN Some network connection resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_ARP_CACHE Some network ARP cache resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_TCP_CONN Some network TCP connection resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_SOCK Some network socket resource(s) lost.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatusRsrcLost() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerRsrcLost() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LOST_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusRsrcLost (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandlerRsrcLost(); /* Chk net rsrc lost status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusRsrcLo()
|
||
*
|
||
* Description : Check network protocol suite low resources status.
|
||
*
|
||
* See 'NetDbg_ChkStatusHandlerRsrcLo() Note #1'.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network resources low.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_LOCK Network lock NOT acquired (see Note #1).
|
||
*
|
||
* - RETURNED BY NetDbg_ChkStatusHandlerRsrcLo() : -
|
||
* NET_DBG_SF_RSRC_LO Some network resource(s) low.
|
||
* NET_DBG_SF_RSRC_LO_BUF_SMALL Network SMALL buffer resources low.
|
||
* NET_DBG_SF_RSRC_LO_BUF_LARGE Network LARGE buffer resources low.
|
||
* NET_DBG_SF_RSRC_LO_TMR Network timer resources low.
|
||
* NET_DBG_SF_RSRC_LO_CONN Network connection resources low.
|
||
* NET_DBG_SF_RSRC_LO_ARP_CACHE Network ARP cache resources low.
|
||
* NET_DBG_SF_RSRC_LO_TCP_CONN Network TCP connection resources low.
|
||
* NET_DBG_SF_RSRC_LO_SOCK Network socket resources low.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_ChkStatusRsrcLo() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerRsrcLo() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusRsrcLo (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_ChkStatusHandlerRsrcLo(); /* Chk net rsrc lo status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_MonTaskStatusGetRsrcLost()
|
||
*
|
||
* Description : Get current Debug Monitor Task lost resource status.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_SF_LOCK, if network lock NOT acquired (see Note #1).
|
||
*
|
||
* Otherwise, return current Debug Monitor Task lost resource status.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerRsrcLost() Return(s)'.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_MonTaskStatusGetRsrcLost() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_MonTaskStatGetHandlerLost() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_MonTaskStatusGetRsrcLost (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_MonTaskStatGetHandlerLost(); /* Get mon task rsrc lost status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_MonTaskStatusGetRsrcLo()
|
||
*
|
||
* Description : Get current Debug Monitor Task low resource status.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_SF_LOCK, if network lock NOT acquired (see Note #1).
|
||
*
|
||
* Otherwise, return current Debug Monitor Task low resource status.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerRsrcLo() Return(s)'.
|
||
*
|
||
* Caller(s) : Application.
|
||
*
|
||
* This function is a network protocol suite application interface (API) function & MAY be
|
||
* called by application function(s) [see also Note #1].
|
||
*
|
||
* Note(s) : (1) NetDbg_MonTaskStatusGetRsrcLo() is called by application function(s) & ... :
|
||
*
|
||
* (a) MUST NOT be called with the global network lock already acquired; ...
|
||
* (b) MUST block ALL other network protocol tasks by pending on & acquiring the global
|
||
* network lock (see 'net.h Note #2').
|
||
*
|
||
* This is required since an application's network debug status access is asynchronous
|
||
* to other network protocol tasks.
|
||
*
|
||
* See also 'NetDbg_MonTaskStatGetHandlerLo() Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_MonTaskStatusGetRsrcLo (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
NetOS_Lock(&err); /* Acquire net lock (see Note #1b). */
|
||
if (err != NET_OS_ERR_NONE) {
|
||
return (NET_DBG_SF_LOCK);
|
||
}
|
||
|
||
status = NetDbg_MonTaskStatGetHandlerLo(); /* Get mon task rsrc lo status. */
|
||
|
||
NetOS_Unlock(); /* Release net lock. */
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandler()
|
||
*
|
||
* Description : (1) Check network protocol suite status :
|
||
*
|
||
* (a) Lost network resource(s)
|
||
* (b) Low network resource(s)
|
||
* (c) Network buffer(s)
|
||
* (d) Network timer(s)
|
||
* (e) Network connection(s)
|
||
* (f) TCP layer
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if network status OK; i.e. no warnings, faults, or errors.
|
||
*
|
||
* Otherwise, return summary network status codes logically OR'd (see Note #3) :
|
||
*
|
||
* NET_DBG_STATUS_FAULT Some network status fault(s).
|
||
*
|
||
* NET_DBG_STATUS_FAULT_RSRC_LOST Some network resource(s) lost.
|
||
* NET_DBG_STATUS_FAULT_RSRC_LO Some network resource(s) low.
|
||
*
|
||
* NET_DBG_STATUS_FAULT_BUF Some network buffer management fault(s).
|
||
* NET_DBG_STATUS_FAULT_TMR Some network timer management fault(s).
|
||
* NET_DBG_STATUS_FAULT_CONN Some network connection management fault(s).
|
||
*
|
||
* NET_DBG_STATUS_FAULT_TCP Some TCP layer fault(s).
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatus().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandler() is called by network protocol suite function(s) & MUST be
|
||
* called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatus() Note #1'.
|
||
*
|
||
* (3) If any module returns a network status fault, check the module's network status return
|
||
* value for more specific network status fault(s).
|
||
*
|
||
* See also 'net_dbg.h NETWORK DEBUG STATUS DEFINES Note #2'.
|
||
*********************************************************************************************************
|
||
*/
|
||
/*$PAGE*/
|
||
#if (NET_DBG_CFG_STATUS_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandler (void)
|
||
{
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LOST_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS status_rsrc_lost;
|
||
#endif
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS status_rsrc_lo;
|
||
#endif
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
NET_DBG_STATUS status_conn;
|
||
#endif
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
NET_DBG_STATUS status_tcp;
|
||
#endif
|
||
NET_DBG_STATUS status;
|
||
NET_DBG_STATUS status_buf;
|
||
NET_DBG_STATUS status_tmr;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LOST_EN == DEF_ENABLED) /* ------------- CHK LOST RSRC's -------------- */
|
||
status_rsrc_lost = NetDbg_ChkStatusHandlerRsrcLost();
|
||
if (status_rsrc_lost != NET_DBG_STATUS_OK) {
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT_RSRC_LOST);
|
||
}
|
||
#endif
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED) /* ------------- CHK LO RSRC's -------------- */
|
||
status_rsrc_lo = NetDbg_ChkStatusHandlerRsrcLo();
|
||
if (status_rsrc_lo != NET_DBG_STATUS_OK) {
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT_RSRC_LO);
|
||
}
|
||
#endif
|
||
|
||
|
||
/* -------------- CHK NET BUF's --------------- */
|
||
status_buf = NetDbg_ChkStatusHandlerBufs();
|
||
if (status_buf != NET_DBG_STATUS_OK) {
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT_BUF);
|
||
}
|
||
|
||
/* -------------- CHK NET TMR's --------------- */
|
||
status_tmr = NetDbg_ChkStatusHandlerTmrs();
|
||
if (status_tmr != NET_DBG_STATUS_OK) {
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT_TMR);
|
||
}
|
||
|
||
|
||
#ifdef NET_CONN_MODULE_PRESENT /* -------------- CHK NET CONN's -------------- */
|
||
status_conn = NetDbg_ChkStatusHandlerConns();
|
||
if (status_conn != NET_DBG_STATUS_OK) {
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT_CONN);
|
||
}
|
||
#endif
|
||
|
||
#ifdef NET_TCP_MODULE_PRESENT /* -------------- CHK TCP LAYER --------------- */
|
||
status_tcp = NetDbg_ChkStatusHandlerTCP();
|
||
if (status_tcp != NET_DBG_STATUS_OK) {
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT_TCP);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_STATUS_FAULT); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerBufs()
|
||
*
|
||
* Description : (1) Check network buffer management status :
|
||
*
|
||
* (a) Corrupted buffer pools
|
||
* (b) Corrupted buffers
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network buffer faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_BUF Some network buffer management fault(s).
|
||
*
|
||
* NET_DBG_SF_BUF_SMALL_TYPE Small buffer invalid type.
|
||
* NET_DBG_SF_BUF_SMALL_ID Small buffer invalid ID.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_TYPE Small buffer invalid link type.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_UNUSED Small buffer link unused.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_BACK_TO_BUF Small buffer invalid link back to same buffer.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF Small buffer invalid link NOT back to same buffer.
|
||
* NET_DBG_SF_BUF_SMALL_LINK_TO_BUF Small buffer invalid link back to buffer.
|
||
* NET_DBG_SF_BUF_SMALL_POOL_TYPE Small buffer invalid pool buffer type.
|
||
* NET_DBG_SF_BUF_SMALL_POOL_ID Small buffer invalid pool buffer ID.
|
||
* NET_DBG_SF_BUF_SMALL_POOL_DUP Small buffer pool contains duplicate buffer(s).
|
||
* NET_DBG_SF_BUF_SMALL_POOL_NBR_MAX Small buffer pool number of buffers greater than
|
||
* maximum number of small buffers.
|
||
* NET_DBG_SF_BUF_SMALL_USED_IN_POOL Small buffer used but in pool.
|
||
* NET_DBG_SF_BUF_SMALL_UNUSED_NOT_IN_POOL Small buffer unused but NOT in pool.
|
||
*
|
||
* NET_DBG_SF_BUF_LARGE_TYPE Large buffer invalid type.
|
||
* NET_DBG_SF_BUF_LARGE_ID Large buffer invalid ID.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_TYPE Large buffer invalid link type.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_UNUSED Large buffer link unused.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_BACK_TO_BUF Large buffer invalid link back to same buffer.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF Large buffer invalid link NOT back to same buffer.
|
||
* NET_DBG_SF_BUF_LARGE_LINK_TO_BUF Large buffer invalid link back to buffer.
|
||
* NET_DBG_SF_BUF_LARGE_POOL_TYPE Large buffer invalid pool buffer type.
|
||
* NET_DBG_SF_BUF_LARGE_POOL_ID Large buffer invalid pool buffer ID.
|
||
* NET_DBG_SF_BUF_LARGE_POOL_DUP Large buffer pool contains duplicate buffer(s).
|
||
* NET_DBG_SF_BUF_LARGE_POOL_NBR_MAX Large buffer pool number of buffers greater than
|
||
* maximum number of large buffers.
|
||
* NET_DBG_SF_BUF_LARGE_USED_IN_POOL Large buffer used but in pool.
|
||
* NET_DBG_SF_BUF_LARGE_UNUSED_NOT_IN_POOL Large buffer unused but NOT in pool.
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusBufs(),
|
||
* NetDbg_ChkStatusHandler().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandlerBufs() is called by network protocol suite function(s) & MUST
|
||
* be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatusBufs() Note #1'.
|
||
*
|
||
* (3) #### Link pointers NOT yet validated to be aligned on CPU pointer-aligned addresses
|
||
* which MAY lead to unaligned pointer access & generate CPU pointer-alignment exceptions.
|
||
*********************************************************************************************************
|
||
*/
|
||
/*$PAGE*/
|
||
#if (NET_DBG_CFG_STATUS_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandlerBufs (void)
|
||
{
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
NET_BUF_QTY buf_in_buf_pool_small[NET_BUF_CFG_NBR_SMALL];
|
||
NET_BUF_SMALL *pbuf_chk_small;
|
||
#endif
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
NET_BUF_QTY buf_in_buf_pool_large[NET_BUF_CFG_NBR_LARGE];
|
||
NET_BUF_LARGE *pbuf_chk_large;
|
||
#endif
|
||
#if ((NET_BUF_CFG_NBR_SMALL > 0) || \
|
||
(NET_BUF_CFG_NBR_LARGE > 0))
|
||
CPU_BOOLEAN err_pool;
|
||
CPU_BOOLEAN err_buf;
|
||
CPU_BOOLEAN used;
|
||
NET_BUF_QTY i;
|
||
NET_BUF_QTY id;
|
||
NET_BUF *pbuf_link;
|
||
#endif
|
||
NET_DBG_STATUS status;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
/* ------------ CHK SMALL BUF POOL ------------ */
|
||
for (i = 0; i < NET_BUF_CFG_NBR_SMALL; i++) {
|
||
buf_in_buf_pool_small[i] = DEF_NO;
|
||
}
|
||
|
||
pbuf_chk_small = NetBuf_SmallPoolPtr;
|
||
i = 0;
|
||
err_pool = DEF_NO;
|
||
while ((pbuf_chk_small != (NET_BUF_SMALL *)0) && /* Chk SMALL buf pool for used entries. */
|
||
(i < NET_BUF_CFG_NBR_SMALL)) {
|
||
|
||
if (pbuf_chk_small->Hdr.Type != NET_BUF_TYPE_SMALL) { /* If SMALL buf type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_POOL_TYPE);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
id = pbuf_chk_small->Hdr.ID;
|
||
if (id >= NET_BUF_CFG_NBR_SMALL) { /* If SMALL buf ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_POOL_ID);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
if (buf_in_buf_pool_small[id] == DEF_YES) { /* If SMALL buf already in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_POOL_DUP);
|
||
err_pool = DEF_YES;
|
||
}
|
||
buf_in_buf_pool_small[id] = DEF_YES;
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_chk_small->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_NO) { /* If SMALL buf used in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_USED_IN_POOL);
|
||
}
|
||
}
|
||
}
|
||
|
||
if ((err_pool == DEF_NO) && /* If NO buf pool err & .. */
|
||
(pbuf_chk_small != (NET_BUF_SMALL *)pbuf_chk_small->Hdr.NextBufPtr)) { /* .. buf does NOT point to itself, */
|
||
pbuf_chk_small = (NET_BUF_SMALL *)pbuf_chk_small->Hdr.NextBufPtr; /* .. adv to next buf. */
|
||
i++;
|
||
|
||
} else { /* Else abort buf pool chk. */
|
||
pbuf_chk_small = (NET_BUF_SMALL *)0;
|
||
}
|
||
}
|
||
|
||
if (pbuf_chk_small != (NET_BUF_SMALL *)0) { /* If ptr non-NULL, then ... */
|
||
/* ... pool nbr bufs > max nbr bufs; ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_POOL_NBR_MAX); /* ... set err. */
|
||
}
|
||
|
||
|
||
/* -------------- CHK SMALL BUFS -------------- */
|
||
pbuf_chk_small = &NetBuf_SmallTbl[0];
|
||
for (i = 0; i < NET_BUF_CFG_NBR_SMALL; i++) {
|
||
if (pbuf_chk_small->Hdr.Type != NET_BUF_TYPE_SMALL) { /* If SMALL buf type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_TYPE);
|
||
|
||
} else {
|
||
if (pbuf_chk_small->Hdr.ID != i) { /* If SMALL buf ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_ID);
|
||
}
|
||
/*$PAGE*/
|
||
used = DEF_BIT_IS_SET(pbuf_chk_small->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If SMALL buf unused ... */
|
||
if (buf_in_buf_pool_small[i] != DEF_YES) { /* ... but NOT in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_UNUSED_NOT_IN_POOL);
|
||
}
|
||
}
|
||
/* If ANY SMALL buf points to itself, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_chk_small->Hdr.PrevPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_chk_small->Hdr.NextPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_chk_small->Hdr.PrevSecListPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_chk_small->Hdr.NextSecListPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_chk_small->Hdr.PrevBufPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_chk_small->Hdr.NextBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_BACK_TO_BUF);
|
||
}
|
||
|
||
if (used == DEF_YES) {
|
||
/* Chk SMALL buf's prev prim list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_small->Hdr.PrevPrimListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to SMALL buf, set err. */
|
||
if ((NET_BUF_SMALL *)(pbuf_link->Hdr.NextPrimListPtr) != pbuf_chk_small) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to SMALL buf, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk SMALL buf's next prim list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_small->Hdr.NextPrimListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to SMALL buf, set err. */
|
||
if ((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevPrimListPtr) != pbuf_chk_small) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to SMALL buf, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_link->Hdr.NextPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* Chk SMALL buf's prev sec list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_small->Hdr.PrevSecListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to SMALL buf, set err. */
|
||
if ((NET_BUF_SMALL *)(pbuf_link->Hdr.NextSecListPtr) != pbuf_chk_small) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to SMALL buf, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk SMALL buf's next sec list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_small->Hdr.NextSecListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to SMALL buf, set err. */
|
||
if ((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevSecListPtr) != pbuf_chk_small) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to SMALL buf, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* Chk SMALL buf's prev buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_small->Hdr.PrevBufPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to SMALL buf, set err. */
|
||
if ((NET_BUF_SMALL *)(pbuf_link->Hdr.NextBufPtr ) != pbuf_chk_small) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to SMALL buf, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevSecListPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextSecListPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk SMALL buf's next buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_small->Hdr.NextBufPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to SMALL buf, set err. */
|
||
if ((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevBufPtr ) != pbuf_chk_small) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to SMALL buf, set err. */
|
||
if (((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextPrimListPtr) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.PrevSecListPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextSecListPtr ) == pbuf_chk_small) ||
|
||
((NET_BUF_SMALL *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_small)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_SMALL_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
pbuf_chk_small++;
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
/* ------------ CHK LARGE BUF POOL ------------ */
|
||
for (i = 0; i < NET_BUF_CFG_NBR_LARGE; i++) {
|
||
buf_in_buf_pool_large[i] = DEF_NO;
|
||
}
|
||
|
||
pbuf_chk_large = NetBuf_LargePoolPtr;
|
||
i = 0;
|
||
err_pool = DEF_NO;
|
||
while ((pbuf_chk_large != (NET_BUF_LARGE *)0) && /* Chk LARGE buf pool for used entries. */
|
||
(i < NET_BUF_CFG_NBR_LARGE)) {
|
||
|
||
if (pbuf_chk_large->Hdr.Type != NET_BUF_TYPE_LARGE) { /* If LARGE buf type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_POOL_TYPE);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
id = pbuf_chk_large->Hdr.ID;
|
||
if (id >= NET_BUF_CFG_NBR_LARGE) { /* If LARGE buf ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_POOL_ID);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
if (buf_in_buf_pool_large[id] == DEF_YES) { /* If LARGE buf already in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_POOL_DUP);
|
||
err_pool = DEF_YES;
|
||
}
|
||
buf_in_buf_pool_large[id] = DEF_YES;
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_chk_large->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_NO) { /* If LARGE buf used in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_USED_IN_POOL);
|
||
}
|
||
}
|
||
}
|
||
|
||
if ((err_pool == DEF_NO) && /* If NO buf pool err & .. */
|
||
(pbuf_chk_large != (NET_BUF_LARGE *)pbuf_chk_large->Hdr.NextBufPtr)) { /* .. buf does NOT point to itself, */
|
||
pbuf_chk_large = (NET_BUF_LARGE *)pbuf_chk_large->Hdr.NextBufPtr; /* .. adv to next buf. */
|
||
i++;
|
||
|
||
} else { /* Else abort buf pool chk. */
|
||
pbuf_chk_large = (NET_BUF_LARGE *)0;
|
||
}
|
||
}
|
||
|
||
if (pbuf_chk_large != (NET_BUF_LARGE *)0) { /* If ptr non-NULL, then ... */
|
||
/* ... pool nbr bufs > max nbr bufs; ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_POOL_NBR_MAX); /* ... set err. */
|
||
}
|
||
|
||
|
||
/* -------------- CHK LARGE BUFS -------------- */
|
||
pbuf_chk_large = &NetBuf_LargeTbl[0];
|
||
for (i = 0; i < NET_BUF_CFG_NBR_LARGE; i++) {
|
||
if (pbuf_chk_large->Hdr.Type != NET_BUF_TYPE_LARGE) { /* If LARGE buf type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_TYPE);
|
||
|
||
} else {
|
||
if (pbuf_chk_large->Hdr.ID != i) { /* If LARGE buf ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_ID);
|
||
}
|
||
/*$PAGE*/
|
||
used = DEF_BIT_IS_SET(pbuf_chk_large->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If LARGE buf unused ... */
|
||
if (buf_in_buf_pool_large[i] != DEF_YES) { /* ... but NOT in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_UNUSED_NOT_IN_POOL);
|
||
}
|
||
}
|
||
/* If ANY LARGE buf points to itself, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_chk_large->Hdr.PrevPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_chk_large->Hdr.NextPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_chk_large->Hdr.PrevSecListPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_chk_large->Hdr.NextSecListPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_chk_large->Hdr.PrevBufPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_chk_large->Hdr.NextBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_BACK_TO_BUF);
|
||
}
|
||
|
||
if (used == DEF_YES) {
|
||
/* Chk LARGE buf's prev prim list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_large->Hdr.PrevPrimListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to LARGE buf, set err. */
|
||
if ((NET_BUF_LARGE *)(pbuf_link->Hdr.NextPrimListPtr) != pbuf_chk_large) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to LARGE buf, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk LARGE buf's next prim list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_large->Hdr.NextPrimListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to LARGE buf, set err. */
|
||
if ((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevPrimListPtr) != pbuf_chk_large) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to LARGE buf, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_link->Hdr.NextPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* Chk LARGE buf's prev sec list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_large->Hdr.PrevSecListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to LARGE buf, set err. */
|
||
if ((NET_BUF_LARGE *)(pbuf_link->Hdr.NextSecListPtr) != pbuf_chk_large) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to LARGE buf, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk LARGE buf's next sec list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_large->Hdr.NextSecListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to LARGE buf, set err. */
|
||
if ((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevSecListPtr) != pbuf_chk_large) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to LARGE buf, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* Chk LARGE buf's prev buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_large->Hdr.PrevBufPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to LARGE buf, set err. */
|
||
if ((NET_BUF_LARGE *)(pbuf_link->Hdr.NextBufPtr ) != pbuf_chk_large) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to LARGE buf, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevSecListPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextSecListPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk LARGE buf's next buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk_large->Hdr.NextBufPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If NOT pointing back to LARGE buf, set err. */
|
||
if ((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevBufPtr ) != pbuf_chk_large) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_NOT_TO_BUF);
|
||
}
|
||
/* If other links point to LARGE buf, set err. */
|
||
if (((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextPrimListPtr) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.PrevSecListPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextSecListPtr ) == pbuf_chk_large) ||
|
||
((NET_BUF_LARGE *)(pbuf_link->Hdr.NextBufPtr ) == pbuf_chk_large)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF_LARGE_LINK_TO_BUF);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
pbuf_chk_large++;
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_BUF); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerTmrs()
|
||
*
|
||
* Description : (1) Check network timer management status :
|
||
*
|
||
* (a) Corrupted timer pool
|
||
* (b) Corrupted timers
|
||
* (c) Corrupted timer task list
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network timer faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_TMR Some network timer management fault(s).
|
||
*
|
||
* NET_DBG_SF_TMR_TYPE Network timer invalid type.
|
||
* NET_DBG_SF_TMR_ID Network timer invalid ID.
|
||
* NET_DBG_SF_TMR_LINK_TYPE Network timer invalid link type.
|
||
* NET_DBG_SF_TMR_LINK_UNUSED Network timer link unused.
|
||
* NET_DBG_SF_TMR_LINK_BACK_TO_TMR Network timer invalid link back to same timer.
|
||
* NET_DBG_SF_TMR_LINK_TO_TMR Network timer invalid link back to timer.
|
||
*
|
||
* NET_DBG_SF_TMR_POOL_TYPE Network timer invalid pool type.
|
||
* NET_DBG_SF_TMR_POOL_ID Network timer invalid pool ID.
|
||
* NET_DBG_SF_TMR_POOL_DUP Network timer pool contains duplicate timer(s).
|
||
* NET_DBG_SF_TMR_POOL_NBR_MAX Network timer pool number of timers greater
|
||
* than maximum number of timers.
|
||
*
|
||
* NET_DBG_SF_TMR_LIST_TYPE Network timer task list invalid type.
|
||
* NET_DBG_SF_TMR_LIST_ID Network timer task list invalid ID.
|
||
* NET_DBG_SF_TMR_LIST_DUP Network timer task list contains duplicate timer(s).
|
||
* NET_DBG_SF_TMR_LIST_NBR_MAX Network timer task list number of timers greater
|
||
* than maximum number of timers.
|
||
* NET_DBG_SF_TMR_LIST_NBR_USED Network timer task list number of timers NOT equal
|
||
* to number of used timers.
|
||
*
|
||
* NET_DBG_SF_TMR_USED_IN_POOL Network timer used but in pool.
|
||
* NET_DBG_SF_TMR_UNUSED_NOT_IN_POOL Network timer unused but NOT in pool.
|
||
* NET_DBG_SF_TMR_UNUSED_IN_LIST Network timer unused but in timer task list.
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusTmrs(),
|
||
* NetDbg_ChkStatusHandler().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandlerTmrs() is called by network protocol suite function(s) & MUST
|
||
* be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatusTmrs() Note #1'.
|
||
*
|
||
* (3) #### Link pointers NOT yet validated to be aligned on CPU pointer-aligned addresses
|
||
* which MAY lead to unaligned pointer access & generate CPU pointer-alignment exceptions.
|
||
*********************************************************************************************************
|
||
*/
|
||
/*$PAGE*/
|
||
#if (NET_DBG_CFG_STATUS_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandlerTmrs (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
CPU_BOOLEAN err_pool;
|
||
CPU_BOOLEAN err_list;
|
||
CPU_BOOLEAN used;
|
||
NET_TMR_QTY i;
|
||
NET_TMR_QTY tmr_nbr_used;
|
||
NET_TMR_QTY tmr_nbr_in_list;
|
||
NET_TMR_QTY tmr_in_pool[NET_TMR_CFG_NBR_TMR];
|
||
NET_TMR_QTY tmr_in_list[NET_TMR_CFG_NBR_TMR];
|
||
NET_TMR *ptmr_chk;
|
||
NET_TMR *ptmr_link;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
/* --------------- CHK TMR POOL --------------- */
|
||
for (i = 0; i < NET_TMR_CFG_NBR_TMR; i++) {
|
||
tmr_in_pool[i] = DEF_NO;
|
||
}
|
||
|
||
ptmr_chk = NetTmr_PoolPtr;
|
||
i = 0;
|
||
err_pool = DEF_NO;
|
||
while ((ptmr_chk != (NET_TMR *)0) && /* Chk tmr pool for used entries. */
|
||
(i < NET_TMR_CFG_NBR_TMR)) {
|
||
|
||
if (ptmr_chk->Type != NET_TMR_TYPE_TMR) { /* If tmr type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_POOL_TYPE);
|
||
err_pool = DEF_YES;
|
||
|
||
} else if (ptmr_chk->ID >= NET_TMR_CFG_NBR_TMR) { /* If tmr ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_POOL_ID);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
if (tmr_in_pool[ptmr_chk->ID] == DEF_YES) { /* If tmr already in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_POOL_DUP);
|
||
err_pool = DEF_YES;
|
||
}
|
||
tmr_in_pool[ptmr_chk->ID] = DEF_YES;
|
||
|
||
used = DEF_BIT_IS_SET(ptmr_chk->Flags, NET_TMR_FLAG_USED);
|
||
if (used != DEF_NO) { /* If tmr used in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_USED_IN_POOL);
|
||
}
|
||
}
|
||
|
||
if ((err_pool == DEF_NO) && /* If NO tmr pool err ... */
|
||
(ptmr_chk != (NET_TMR *)ptmr_chk->NextPtr)) { /* ... & tmr does NOT point to itself, ... */
|
||
ptmr_chk = (NET_TMR *)ptmr_chk->NextPtr; /* ... adv to next tmr. */
|
||
i++;
|
||
|
||
} else { /* Else abort tmr pool chk. */
|
||
ptmr_chk = (NET_TMR *)0;
|
||
}
|
||
}
|
||
|
||
if (ptmr_chk != (NET_TMR *)0) { /* If ptr non-NULL, then ... */
|
||
/* ... pool nbr tmrs > max nbr tmrs; ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_POOL_NBR_MAX); /* ... set err. */
|
||
}
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ----------------- CHK TMRS ----------------- */
|
||
ptmr_chk = &NetTmr_Tbl[0];
|
||
tmr_nbr_used = 0;
|
||
for (i = 0; i < NET_TMR_CFG_NBR_TMR; i++) {
|
||
if (ptmr_chk->Type != NET_TMR_TYPE_TMR) { /* If tmr type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_TYPE);
|
||
|
||
} else {
|
||
if (ptmr_chk->ID != i) { /* If tmr ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_ID);
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(ptmr_chk->Flags, NET_TMR_FLAG_USED);
|
||
if (used != DEF_YES) { /* If tmr unused ... */
|
||
if (tmr_in_pool[i] != DEF_YES) { /* ... but NOT in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_UNUSED_NOT_IN_POOL);
|
||
}
|
||
}
|
||
|
||
if ((NET_TMR *)(ptmr_chk->NextPtr) == ptmr_chk) { /* If ANY tmr points to itself, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LINK_BACK_TO_TMR);
|
||
}
|
||
|
||
if (used == DEF_YES) {
|
||
tmr_nbr_used++;
|
||
/* Chk tmr's next tmr. */
|
||
ptmr_link = (NET_TMR *)ptmr_chk->NextPtr;
|
||
if (ptmr_link != (NET_TMR *)0) {
|
||
if (ptmr_link->Type != NET_TMR_TYPE_TMR) { /* If tmr type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LINK_TYPE);
|
||
|
||
} else {
|
||
used = DEF_BIT_IS_SET(ptmr_link->Flags, NET_TMR_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LINK_UNUSED);
|
||
|
||
} else {
|
||
/* If pointing back to tmr, set err. */
|
||
if ((NET_TMR *)(ptmr_link->NextPtr) == ptmr_chk) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LINK_TO_TMR);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
ptmr_chk++;
|
||
}
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------------ CHK TMR TASK LIST ------------- */
|
||
for (i = 0; i < NET_TMR_CFG_NBR_TMR; i++) {
|
||
tmr_in_list[i] = DEF_NO;
|
||
}
|
||
|
||
ptmr_chk = NetTmr_TaskListHead;
|
||
i = 0;
|
||
tmr_nbr_in_list = 0;
|
||
err_list = DEF_NO;
|
||
while ((ptmr_chk != (NET_TMR *)0) && /* Chk corrupted tmr task list. */
|
||
(i < NET_TMR_CFG_NBR_TMR)) {
|
||
|
||
if (ptmr_chk->Type != NET_TMR_TYPE_TMR) { /* If tmr type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LIST_TYPE);
|
||
err_list = DEF_YES;
|
||
|
||
} else if (ptmr_chk->ID >= NET_TMR_CFG_NBR_TMR) { /* If tmr ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LIST_ID);
|
||
err_list = DEF_YES;
|
||
|
||
} else {
|
||
if (tmr_in_list[i] == DEF_YES) { /* If tmr already in tmr task list, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LIST_DUP);
|
||
err_list = DEF_YES;
|
||
}
|
||
tmr_in_list[i] = DEF_YES; /* Mark tmr as in tmr task list. */
|
||
tmr_nbr_in_list++;
|
||
|
||
used = DEF_BIT_IS_SET(ptmr_chk->Flags, NET_TMR_FLAG_USED);
|
||
if (used != DEF_YES) { /* If tmr in list unused, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_UNUSED_IN_LIST);
|
||
}
|
||
}
|
||
|
||
if ((err_list == DEF_NO) && /* If NO tmr task list err ... */
|
||
(ptmr_chk != (NET_TMR *)ptmr_chk->NextPtr)) { /* ... & tmr does NOT point to itself, ... */
|
||
ptmr_chk = (NET_TMR *)ptmr_chk->NextPtr; /* ... adv to next tmr. */
|
||
i++;
|
||
|
||
} else { /* Else abort tmr task list chk. */
|
||
ptmr_chk = (NET_TMR *)0;
|
||
}
|
||
}
|
||
|
||
if (ptmr_chk != (NET_TMR *)0) { /* If ptr non-NULL, then .. */
|
||
/* .. tmr task list nbr tmrs > max nbr tmrs; */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LIST_NBR_MAX); /* ... set err. */
|
||
}
|
||
|
||
if (tmr_nbr_in_list != tmr_nbr_used) { /* If tmr task list nbr tmrs != used nbr tmrs, */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR_LIST_NBR_USED); /* ... set err. */
|
||
}
|
||
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TMR); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerConns()
|
||
*
|
||
* Description : (1) Check network connection management status :
|
||
*
|
||
* (a) Corrupted connection pool
|
||
* (b) Corrupted connections
|
||
* (c) Corrupted connection lists
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network connection faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_CONN Some network connection management fault(s).
|
||
*
|
||
* NET_DBG_SF_CONN_TYPE Network connection invalid type.
|
||
* NET_DBG_SF_CONN_FAMILY Network connection invalid family.
|
||
* NET_DBG_SF_CONN_ID Network connection invalid ID.
|
||
* NET_DBG_SF_CONN_ID_NONE Network connection with NO connection IDs.
|
||
* NET_DBG_SF_CONN_ID_UNUSED Network connection linked to unused connection.
|
||
* NET_DBG_SF_CONN_LINK_TYPE Network connection invalid link type.
|
||
* NET_DBG_SF_CONN_LINK_UNUSED Network connection link unused.
|
||
* NET_DBG_SF_CONN_LINK_BACK_TO_CONN Network connection invalid link back to
|
||
* same connection.
|
||
* NET_DBG_SF_CONN_LINK_NOT_TO_CONN Network connection invalid link NOT back to
|
||
* same connection.
|
||
* NET_DBG_SF_CONN_LINK_NOT_IN_LIST Network connection NOT in appropriate
|
||
* connection list.
|
||
*
|
||
* NET_DBG_SF_CONN_POOL_TYPE Network connection invalid pool type.
|
||
* NET_DBG_SF_CONN_POOL_ID Network connection invalid pool ID.
|
||
* NET_DBG_SF_CONN_POOL_DUP Network connection pool contains duplicate
|
||
* connection(s).
|
||
* NET_DBG_SF_CONN_POOL_NBR_MAX Network connection pool number of connections
|
||
* greater than maximum number of connections.
|
||
*
|
||
* NET_DBG_SF_CONN_LIST_IX_NBR_MAX Network connection invalid list index number.
|
||
* NET_DBG_SF_CONN_LIST_NBR_NOT_SOLITARY Network connection lists number of connections
|
||
* NOT equal to solitary connection.
|
||
*
|
||
* NET_DBG_SF_CONN_USED_IN_POOL Network connection used but in pool.
|
||
* NET_DBG_SF_CONN_USED_NOT_IN_LIST Network connection used but NOT in list.
|
||
* NET_DBG_SF_CONN_UNUSED_IN_LIST Network connection unused but in list.
|
||
* NET_DBG_SF_CONN_UNUSED_NOT_IN_POOL Network connection unused but NOT in pool.
|
||
* NET_DBG_SF_CONN_IN_LIST_IN_POOL Network connection in list & in pool.
|
||
* NET_DBG_SF_CONN_NOT_IN_LIST_NOT_IN_POOL Network connection NOT in list & NOT in pool.
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusConns(),
|
||
* NetDbg_ChkStatusHandler().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandlerConns() is called by network protocol suite function(s) & MUST
|
||
* be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatusConns() Note #1'.
|
||
*
|
||
* (3) #### Link pointers NOT yet validated to be aligned on CPU pointer-aligned addresses
|
||
* which MAY lead to unaligned pointer access & generate CPU pointer-alignment exceptions.
|
||
*
|
||
* (4) #### Network connection lists are NOT yet checked to verify that the correct number &
|
||
* type of network connections are included in the appropriate network connection lists.
|
||
*********************************************************************************************************
|
||
*/
|
||
/*$PAGE*/
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_CONN_MODULE_PRESENT)))
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandlerConns (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
CPU_BOOLEAN err_pool;
|
||
CPU_BOOLEAN err_conn;
|
||
CPU_BOOLEAN used;
|
||
NET_CONN_LIST_QTY j;
|
||
NET_CONN_QTY i;
|
||
NET_CONN_QTY conn_list_nbr_conns[NET_CONN_LIST_TYPE_MAX][NET_CONN_CFG_PROTOCOL_MAX];
|
||
NET_CONN_QTY conn_in_conn_pool[NET_CONN_CFG_NBR_CONN];
|
||
NET_CONN *pconn_chk;
|
||
NET_CONN *pconn_link;
|
||
NET_CONN_ID conn_id;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
/* ------------ CHK NET CONN POOL ------------- */
|
||
for (i = 0; i < NET_CONN_CFG_NBR_CONN; i++) {
|
||
conn_in_conn_pool[i] = DEF_NO;
|
||
}
|
||
|
||
pconn_chk = NetConn_PoolPtr;
|
||
i = 0;
|
||
err_pool = DEF_NO;
|
||
while ((pconn_chk != (NET_CONN *)0) && /* Chk conn pool for used entries. */
|
||
(i < NET_CONN_CFG_NBR_CONN)) {
|
||
|
||
if (pconn_chk->Type != NET_CONN_TYPE_CONN) { /* If conn type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_POOL_TYPE);
|
||
err_pool = DEF_YES;
|
||
|
||
} else if (pconn_chk->ID >= NET_CONN_CFG_NBR_CONN) { /* If conn ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_POOL_ID);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
if (conn_in_conn_pool[pconn_chk->ID] == DEF_YES) { /* If conn already in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_POOL_DUP);
|
||
err_pool = DEF_YES;
|
||
}
|
||
conn_in_conn_pool[pconn_chk->ID] = DEF_YES;
|
||
|
||
used = DEF_BIT_IS_SET(pconn_chk->Flags, NET_CONN_FLAG_USED);
|
||
if (used != DEF_NO) { /* If conn used in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_USED_IN_POOL);
|
||
}
|
||
}
|
||
|
||
if ((err_pool == DEF_NO) && /* If NO conn pool err ... */
|
||
(pconn_chk != (NET_CONN *)pconn_chk->NextConnPtr)) { /* ... & conn does NOT point to itself, ... */
|
||
pconn_chk = (NET_CONN *)pconn_chk->NextConnPtr; /* ... adv to next conn. */
|
||
i++;
|
||
|
||
} else { /* Else abort conn pool chk. */
|
||
pconn_chk = (NET_CONN *)0;
|
||
}
|
||
}
|
||
|
||
if (pconn_chk != (NET_CONN *)0) { /* If ptr non-NULL, then ... */
|
||
/* ... pool nbr conns > max nbr conns; ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_POOL_NBR_MAX); /* ... set err. */
|
||
}
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* -------- CHK NET CONNS / CONN LISTS -------- */
|
||
for (j = 0; j < NET_CONN_CFG_PROTOCOL_MAX; j++) {
|
||
conn_list_nbr_conns[NET_CONN_LIST_TYPE_NONE ][j] = 0;
|
||
conn_list_nbr_conns[NET_CONN_LIST_TYPE_SERVER][j] = 0;
|
||
conn_list_nbr_conns[NET_CONN_LIST_TYPE_CLIENT][j] = 0;
|
||
}
|
||
|
||
pconn_chk = &NetConn_Tbl[0];
|
||
for (i = 0; i < NET_CONN_CFG_NBR_CONN; i++) { /* Chk corrupted conns &/or conn lists. */
|
||
if (pconn_chk->Type != NET_CONN_TYPE_CONN) { /* If conn type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_TYPE);
|
||
|
||
} else {
|
||
if (pconn_chk->ID != i) { /* If conn ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_ID);
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pconn_chk->Flags, NET_CONN_FLAG_USED);
|
||
if (used != DEF_YES) { /* If conn unused ... */
|
||
if (conn_in_conn_pool[i] != DEF_YES) { /* ... but NOT in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_UNUSED_NOT_IN_POOL);
|
||
}
|
||
}
|
||
/* If ANY conn points to itself, set err. */
|
||
if (((NET_CONN *)(pconn_chk->PrevChainPtr) == pconn_chk) ||
|
||
((NET_CONN *)(pconn_chk->NextChainPtr) == pconn_chk) ||
|
||
((NET_CONN *)(pconn_chk->PrevConnPtr ) == pconn_chk) ||
|
||
((NET_CONN *)(pconn_chk->NextConnPtr ) == pconn_chk)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_BACK_TO_CONN);
|
||
}
|
||
|
||
if ((NET_CONN **)(pconn_chk->ConnList) != (NET_CONN **)0) { /* If conn in conn list, ... */
|
||
if (used != DEF_YES) { /* ... but NOT used, set err; ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_UNUSED_IN_LIST);
|
||
}
|
||
if (conn_in_conn_pool[i] != DEF_NO) { /* ... but in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_IN_LIST_IN_POOL);
|
||
}
|
||
} else { /* If conn NOT in conn list, ... */
|
||
if (used != DEF_NO) { /* ... but used, set err; ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_USED_NOT_IN_LIST);
|
||
}
|
||
if (conn_in_conn_pool[i] != DEF_YES) { /* ... but NOT in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_NOT_IN_LIST_NOT_IN_POOL);
|
||
}
|
||
}
|
||
|
||
if (used == DEF_YES) {
|
||
switch (pconn_chk->Family) { /* Chk valid conn family. */
|
||
case NET_CONN_FAMILY_IP_V4_SOCK:
|
||
break;
|
||
|
||
|
||
case NET_CONN_FAMILY_NONE:
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_FAMILY);
|
||
break;
|
||
}
|
||
|
||
|
||
if ((pconn_chk->ID_App == NET_CONN_ID_NONE) && /* Chk conn IDs. */
|
||
(pconn_chk->ID_Transport == NET_CONN_ID_NONE)) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_ID_NONE);
|
||
}
|
||
/* Chk conn(s) used. */
|
||
conn_id = pconn_chk->ID_App;
|
||
if (conn_id != NET_CONN_ID_NONE) {
|
||
used = DEF_NO;
|
||
#if (NET_CONN_CFG_FAMILY == NET_CONN_FAMILY_IP_V4_SOCK)
|
||
used = NetSock_IsUsed((NET_SOCK_ID) conn_id,
|
||
(NET_ERR *)&err);
|
||
#endif
|
||
if (used != DEF_YES) { /* If app conn unused, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_ID_UNUSED);
|
||
}
|
||
}
|
||
/* Chk conn(s) used. */
|
||
conn_id = pconn_chk->ID_Transport;
|
||
if (conn_id != NET_CONN_ID_NONE) {
|
||
used = DEF_NO;
|
||
#if (NET_CONN_CFG_FAMILY == NET_CONN_FAMILY_IP_V4_SOCK)
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
used = NetTCP_ConnIsUsed((NET_TCP_CONN_ID) conn_id,
|
||
(NET_ERR *)&err);
|
||
#endif
|
||
#endif
|
||
if (used != DEF_YES) { /* If transport conn unused, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_ID_UNUSED);
|
||
}
|
||
}
|
||
|
||
/*$PAGE*/
|
||
if (pconn_chk->ConnList != (void **)0) {
|
||
switch (pconn_chk->ConnListType) { /* Chk valid conn list type. */
|
||
case NET_CONN_LIST_TYPE_SERVER:
|
||
case NET_CONN_LIST_TYPE_CLIENT:
|
||
err_conn = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_CONN_LIST_TYPE_NONE:
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_TYPE);
|
||
err_conn = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_conn == DEF_NO) {
|
||
/* If protocol list ix > max, set err. */
|
||
if (pconn_chk->ProtocolListIx >= NET_CONN_CFG_PROTOCOL_MAX) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LIST_IX_NBR_MAX);
|
||
|
||
} else { /* If conn in valid conn list, ... */
|
||
/* ... inc nbr conn list conns (see Note #4). */
|
||
conn_list_nbr_conns[pconn_chk->ConnListType][pconn_chk->ProtocolListIx]++;
|
||
|
||
/* If conn points to NO other conn(s), ... */
|
||
if ((pconn_chk->PrevChainPtr == (void *)0) &&
|
||
(pconn_chk->NextChainPtr == (void *)0) &&
|
||
(pconn_chk->PrevConnPtr == (void *)0) &&
|
||
(pconn_chk->NextConnPtr == (void *)0)) {
|
||
/* ... & NOT solitary conn in conn list, ... */
|
||
if (conn_list_nbr_conns[pconn_chk->ConnListType][pconn_chk->ProtocolListIx] > 1) {
|
||
/* ... set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LIST_NBR_NOT_SOLITARY);
|
||
}
|
||
|
||
} else {
|
||
/* Chk conn's prev chain conn. */
|
||
pconn_link = (NET_CONN *)pconn_chk->PrevChainPtr;
|
||
if (pconn_link != (NET_CONN *)0) {
|
||
/* If conn type invalid, set err. */
|
||
if (pconn_link->Type != NET_CONN_TYPE_CONN) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_TYPE);
|
||
|
||
} else {
|
||
used = DEF_BIT_IS_SET(pconn_link->Flags, NET_CONN_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_UNUSED);
|
||
/* If NOT in conn's conn list, set err. */
|
||
} else if (pconn_link->ConnList != pconn_chk->ConnList) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_IN_LIST);
|
||
/* If NOT pointing back to conn, set err. */
|
||
} else if ((NET_CONN *)(pconn_link->NextChainPtr) != pconn_chk) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_TO_CONN);
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk conn's next chain conn. */
|
||
pconn_link = (NET_CONN *)pconn_chk->NextChainPtr;
|
||
if (pconn_link != (NET_CONN *)0) {
|
||
/* If conn type invalid, set err. */
|
||
if (pconn_link->Type != NET_CONN_TYPE_CONN) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_TYPE);
|
||
|
||
} else {
|
||
used = DEF_BIT_IS_SET(pconn_link->Flags, NET_CONN_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_UNUSED);
|
||
/* If NOT in conn's conn list, set err. */
|
||
} else if (pconn_link->ConnList != pconn_chk->ConnList) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_IN_LIST);
|
||
/* If NOT pointing back to conn, set err. */
|
||
} else if ((NET_CONN *)(pconn_link->PrevChainPtr) != pconn_chk) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_TO_CONN);
|
||
}
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* Chk conn's prev conn. */
|
||
pconn_link = (NET_CONN *)pconn_chk->PrevConnPtr;
|
||
if (pconn_link != (NET_CONN *)0) {
|
||
/* If conn type invalid, set err. */
|
||
if (pconn_link->Type != NET_CONN_TYPE_CONN) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_TYPE);
|
||
|
||
} else {
|
||
used = DEF_BIT_IS_SET(pconn_link->Flags, NET_CONN_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_UNUSED);
|
||
/* If NOT in conn's conn list, set err. */
|
||
} else if (pconn_link->ConnList != pconn_chk->ConnList) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_IN_LIST);
|
||
/* If NOT pointing back to conn, set err. */
|
||
} else if ((NET_CONN *)(pconn_link->NextConnPtr) != pconn_chk) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_TO_CONN);
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Chk conn's next conn. */
|
||
pconn_link = (NET_CONN *)pconn_chk->NextConnPtr;
|
||
if (pconn_link != (NET_CONN *)0) {
|
||
/* If conn type invalid, set err. */
|
||
if (pconn_link->Type != NET_CONN_TYPE_CONN) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_TYPE);
|
||
|
||
} else {
|
||
used = DEF_BIT_IS_SET(pconn_link->Flags, NET_CONN_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_UNUSED);
|
||
/* If NOT in conn's conn list, set err. */
|
||
} else if (pconn_link->ConnList != pconn_chk->ConnList) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_IN_LIST);
|
||
/* If NOT pointing back to conn, set err. */
|
||
} else if ((NET_CONN *)(pconn_link->PrevConnPtr) != pconn_chk) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN_LINK_NOT_TO_CONN);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
pconn_chk++;
|
||
}
|
||
|
||
|
||
(void)&err; /* Prevent possible compiler warning. */
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_CONN); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerTCP()
|
||
*
|
||
* Description : (1) Check TCP layer status :
|
||
*
|
||
* (a) Corrupted TCP connection pool
|
||
* (b) Corrupted TCP connections
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO TCP layer faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_TCP Some TCP layer fault(s).
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_TYPE TCP connection invalid type.
|
||
* NET_DBG_SF_TCP_CONN_ID TCP connection invalid ID.
|
||
* NET_DBG_SF_TCP_CONN_LINK_TYPE TCP connection invalid link type.
|
||
* NET_DBG_SF_TCP_CONN_LINK_UNUSED TCP connection link unused.
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_POOL_TYPE TCP connection invalid pool type.
|
||
* NET_DBG_SF_TCP_CONN_POOL_ID TCP connection invalid pool ID.
|
||
* NET_DBG_SF_TCP_CONN_POOL_DUP TCP connection pool contains duplicate connection(s).
|
||
* NET_DBG_SF_TCP_CONN_POOL_NBR_MAX TCP connection pool number of connections greater
|
||
* than maximum number of connections.
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_USED_IN_POOL TCP connection used but in pool.
|
||
* NET_DBG_SF_TCP_CONN_UNUSED_NOT_IN_POOL TCP connection unused but NOT in pool.
|
||
*
|
||
* --- RETURNED BY NetDbg_ChkStatusHandlerTCP_Q() : ----
|
||
* NET_DBG_SF_TCP_CONN_Q Some TCP connection queue fault(s).
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_TYPE TCP connection queue buffer invalid type.
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_UNUSED TCP connection queue buffer unused.
|
||
* NET_DBG_SF_TCP_CONN_Q_LINK_TYPE TCP connection queue buffer invalid link type.
|
||
* NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED TCP connection queue buffer link unused.
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_DUP TCP connection queue contains duplicate buffer(s).
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusTCP(),
|
||
* NetDbg_ChkStatusHandler().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandlerTCP() is called by network protocol suite function(s) & MUST
|
||
* be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatusTCP() Note #1'.
|
||
*
|
||
* (3) #### Link pointers NOT yet validated to be aligned on CPU pointer-aligned addresses
|
||
* which MAY lead to unaligned pointer access & generate CPU pointer-alignment exceptions.
|
||
*********************************************************************************************************
|
||
*/
|
||
/*$PAGE*/
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_TCP_MODULE_PRESENT)))
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandlerTCP (void)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_DBG_STATUS status_q;
|
||
CPU_BOOLEAN err_pool;
|
||
CPU_BOOLEAN used;
|
||
NET_TCP_CONN_QTY i;
|
||
NET_TCP_CONN_QTY conn_in_conn_pool[NET_TCP_CFG_NBR_CONN];
|
||
NET_TCP_CONN *pconn_chk;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
/* ------------ CHK TCP CONN POOL ------------- */
|
||
for (i = 0; i < NET_TCP_CFG_NBR_CONN; i++) {
|
||
conn_in_conn_pool[i] = DEF_NO;
|
||
}
|
||
|
||
pconn_chk = NetTCP_ConnPoolPtr;
|
||
i = 0;
|
||
err_pool = DEF_NO;
|
||
while ((pconn_chk != (NET_TCP_CONN *)0) && /* Chk TCP conn pool for used entries. */
|
||
(i < NET_TCP_CFG_NBR_CONN)) {
|
||
|
||
if (pconn_chk->Type != NET_TCP_TYPE_CONN) { /* If TCP conn type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_POOL_TYPE);
|
||
err_pool = DEF_YES;
|
||
|
||
} else if (pconn_chk->ID >= NET_TCP_CFG_NBR_CONN) { /* If TCP conn ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_POOL_ID);
|
||
err_pool = DEF_YES;
|
||
|
||
} else {
|
||
if (conn_in_conn_pool[pconn_chk->ID] == DEF_YES) { /* If TCP conn already in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_POOL_DUP);
|
||
err_pool = DEF_YES;
|
||
}
|
||
conn_in_conn_pool[pconn_chk->ID] = DEF_YES;
|
||
|
||
used = DEF_BIT_IS_SET(pconn_chk->Flags, NET_TCP_FLAG_USED);
|
||
if (used != DEF_NO) { /* If TCP conn used in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_USED_IN_POOL);
|
||
}
|
||
}
|
||
|
||
if ((err_pool == DEF_NO) && /* If NO TCP conn pool err ... */
|
||
(pconn_chk != (NET_TCP_CONN *)pconn_chk->NextPtr)) { /* ... & TCP conn does NOT point to itself, ... */
|
||
pconn_chk = (NET_TCP_CONN *)pconn_chk->NextPtr; /* ... adv to next TCP conn. */
|
||
i++;
|
||
|
||
} else { /* Else abort TCP conn pool chk. */
|
||
pconn_chk = (NET_TCP_CONN *)0;
|
||
}
|
||
}
|
||
|
||
if (pconn_chk != (NET_TCP_CONN *)0) { /* If ptr non-NULL, then ..*/
|
||
/* .. pool nbr TCP conns > max nbr TCP conns; ..*/
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_POOL_NBR_MAX); /* .. set err. */
|
||
}
|
||
|
||
|
||
/*$PAGE*/
|
||
/* -------------- CHK TCP CONNS --------------- */
|
||
pconn_chk = &NetTCP_ConnTbl[0];
|
||
for (i = 0; i < NET_TCP_CFG_NBR_CONN; i++) {
|
||
if (pconn_chk->Type != NET_TCP_TYPE_CONN) { /* If TCP conn type invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_TYPE);
|
||
|
||
} else {
|
||
if (pconn_chk->ID != i) { /* If TCP conn ID invalid, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_ID);
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pconn_chk->Flags, NET_TCP_FLAG_USED);
|
||
if (used != DEF_YES) { /* If TCP conn unused ... */
|
||
if (conn_in_conn_pool[i] != DEF_YES) { /* ... but NOT in pool, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_UNUSED_NOT_IN_POOL);
|
||
}
|
||
|
||
} else { /* Chk TCP conn Q's. */
|
||
/* Chk TCP conn transport rx Q. */
|
||
status_q = NetDbg_ChkStatusHandlerTCP_Q(pconn_chk, pconn_chk->RxQ_Transport_Head);
|
||
DEF_BIT_SET(status, status_q);
|
||
/* Chk TCP conn app rx Q. */
|
||
status_q = NetDbg_ChkStatusHandlerTCP_Q(pconn_chk, pconn_chk->RxQ_App_Head);
|
||
DEF_BIT_SET(status, status_q);
|
||
/* Chk TCP conn tx Q. */
|
||
status_q = NetDbg_ChkStatusHandlerTCP_Q(pconn_chk, pconn_chk->TxQ_Head);
|
||
DEF_BIT_SET(status, status_q);
|
||
/* Chk TCP conn re-tx Q. */
|
||
status_q = NetDbg_ChkStatusHandlerTCP_Q(pconn_chk, pconn_chk->ReTxQ_Head);
|
||
DEF_BIT_SET(status, status_q);
|
||
}
|
||
}
|
||
|
||
pconn_chk++;
|
||
}
|
||
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerRsrcLost()
|
||
*
|
||
* Description : (1) Check network protocol suite lost resources status :
|
||
*
|
||
* (a) Network buffer(s)
|
||
* (b) Network timer(s)
|
||
* (c) Network connection(s)
|
||
* (d) ARP layer
|
||
* (e) TCP layer
|
||
* (f) Socket layer
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network resources lost.
|
||
*
|
||
* Otherwise, the return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_RSRC_LOST Some network resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_BUF_SMALL Some network SMALL buffer resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_BUF_LARGE Some network LARGE buffer resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_TMR Some network timer resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_CONN Some network connection resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_ARP_CACHE Some network ARP cache resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_TCP_CONN Some network TCP connection resource(s) lost.
|
||
* NET_DBG_SF_RSRC_LOST_SOCK Some network socket resource(s) lost.
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusRsrcLost(),
|
||
* NetDbg_ChkStatusHandler(),
|
||
* NetDbg_MonTask().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandlerRsrcLost() is called by network protocol suite function(s) &
|
||
* MUST be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatusRsrcLost() Note #1'.
|
||
*********************************************************************************************************
|
||
*/
|
||
/*$PAGE*/
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LOST_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandlerRsrcLost (void)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_STATUS status;
|
||
NET_DBG_RSRC_QTY nbr_lost;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
/* ------------- CHK LOST RSRC's -------------- */
|
||
/* --------- CHK NET BUF LOST RSRC's --------- */
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetBuf_SmallPoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_BUF_SMALL);
|
||
}
|
||
#endif
|
||
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetBuf_LargePoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_BUF_LARGE);
|
||
}
|
||
#endif
|
||
|
||
/* --------- CHK NET TMR LOST RSRC's --------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetTmr_PoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_TMR);
|
||
}
|
||
|
||
|
||
#ifdef NET_CONN_MODULE_PRESENT /* --------- CHK NET CONN LOST RSRC's --------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetConn_PoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_CONN);
|
||
}
|
||
#endif
|
||
|
||
|
||
#ifdef NET_ARP_MODULE_PRESENT /* -------- CHK ARP LAYER LOST RSRC's -------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetARP_CachePoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_ARP_CACHE);
|
||
}
|
||
#endif
|
||
|
||
|
||
#ifdef NET_TCP_MODULE_PRESENT /* -------- CHK TCP LAYER LOST RSRC's -------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetTCP_ConnPoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_TCP_CONN);
|
||
}
|
||
#endif
|
||
|
||
|
||
#ifdef NET_SOCK_MODULE_PRESENT /* -------- CHK SOCK LAYER LOST RSRC's -------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_lost = (NET_DBG_RSRC_QTY)NetSock_PoolStat.EntriesLostCur;
|
||
CPU_CRITICAL_EXIT();
|
||
if (nbr_lost > 0) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST_SOCK);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LOST); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerRsrcLo()
|
||
*
|
||
* Description : (1) Check network protocol suite low resources status :
|
||
*
|
||
* (a) Network buffer(s)
|
||
* (b) Network timer(s)
|
||
* (c) Network connection(s)
|
||
* (d) ARP layer
|
||
* (e) TCP layer
|
||
* (f) Socket layer
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO network resources low.
|
||
*
|
||
* Otherwise, the return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_RSRC_LO Some network resource(s) low.
|
||
* NET_DBG_SF_RSRC_LO_BUF_SMALL Network SMALL buffer resources low.
|
||
* NET_DBG_SF_RSRC_LO_BUF_LARGE Network LARGE buffer resources low.
|
||
* NET_DBG_SF_RSRC_LO_TMR Network timer resources low.
|
||
* NET_DBG_SF_RSRC_LO_CONN Network connection resources low.
|
||
* NET_DBG_SF_RSRC_LO_ARP_CACHE Network ARP cache resources low.
|
||
* NET_DBG_SF_RSRC_LO_TCP_CONN Network TCP connection resources low.
|
||
* NET_DBG_SF_RSRC_LO_SOCK Network socket resources low.
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusRsrcLo(),
|
||
* NetDbg_ChkStatusHandler(),
|
||
* NetDbg_MonTask().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (2) NetDbg_ChkStatusHandlerRsrcLo() is called by network protocol suite function(s) &
|
||
* MUST be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_ChkStatusRsrcLo() Note #1'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_STATUS_RSRC_LO_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_ChkStatusHandlerRsrcLo (void)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_STATUS status_cur;
|
||
NET_DBG_STATUS status;
|
||
NET_DBG_RSRC_QTY nbr_used;
|
||
NET_DBG_RSRC_QTY rsrc_th;
|
||
CPU_BOOLEAN rsrc_lo;
|
||
|
||
|
||
/* Get cur net lo rsrc status. */
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
CPU_CRITICAL_ENTER();
|
||
status_cur = NetDbg_MonTaskStatusRsrcLo;
|
||
CPU_CRITICAL_EXIT();
|
||
#else
|
||
status_cur = NET_DBG_STATUS_OK;
|
||
#endif
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
/*$PAGE*/
|
||
/* -------------- CHK LO RSRC's --------------- */
|
||
/* ---------- CHK NET BUF LO RSRC's ---------- */
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetBuf_SmallPoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_BUF_SMALL);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcBufSmallThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcBufSmallThLo_nbr > NetDbg_RsrcBufSmallThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcBufSmallThLo_nbr - NetDbg_RsrcBufSmallThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_BUF_SMALL);
|
||
}
|
||
#endif
|
||
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetBuf_LargePoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_BUF_LARGE);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcBufLargeThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcBufLargeThLo_nbr > NetDbg_RsrcBufLargeThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcBufLargeThLo_nbr - NetDbg_RsrcBufLargeThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_BUF_LARGE);
|
||
}
|
||
#endif
|
||
|
||
|
||
/* ---------- CHK NET TMR LO RSRC's ---------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetTmr_PoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_TMR);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcTmrThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcTmrThLo_nbr > NetDbg_RsrcTmrThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcTmrThLo_nbr - NetDbg_RsrcTmrThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_TMR);
|
||
}
|
||
|
||
|
||
|
||
#ifdef NET_CONN_MODULE_PRESENT /* ---------- CHK NET CONN LO RSRC's ---------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetConn_PoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_CONN);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcConnThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcConnThLo_nbr > NetDbg_RsrcConnThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcConnThLo_nbr - NetDbg_RsrcConnThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_CONN);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_ARP_MODULE_PRESENT /* --------- CHK ARP LAYER LO RSRC's --------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetARP_CachePoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_ARP_CACHE);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcARP_CacheThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcARP_CacheThLo_nbr > NetDbg_RsrcARP_CacheThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcARP_CacheThLo_nbr - NetDbg_RsrcARP_CacheThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_ARP_CACHE);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
#ifdef NET_TCP_MODULE_PRESENT /* --------- CHK TCP LAYER LO RSRC's --------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetTCP_ConnPoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_TCP_CONN);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcTCP_ConnThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcTCP_ConnThLo_nbr > NetDbg_RsrcTCP_ConnThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcTCP_ConnThLo_nbr - NetDbg_RsrcTCP_ConnThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_TCP_CONN);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
#ifdef NET_SOCK_MODULE_PRESENT /* --------- CHK SOCK LAYER LO RSRC's --------- */
|
||
CPU_CRITICAL_ENTER();
|
||
nbr_used = (NET_DBG_RSRC_QTY)NetSock_PoolStat.EntriesUsed;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
rsrc_lo = DEF_BIT_IS_SET(status_cur, NET_DBG_SF_RSRC_LO_SOCK);
|
||
if (rsrc_lo == DEF_NO) { /* If cur'ly NO lo rsrc, chk lo rsrc th. */
|
||
rsrc_th = NetDbg_RsrcSockThLo_nbr;
|
||
|
||
} else { /* Else for lo rsrc, chk lo rsrc th clr'd. */
|
||
if (NetDbg_RsrcSockThLo_nbr > NetDbg_RsrcSockThLoHyst_nbr) {
|
||
rsrc_th = NetDbg_RsrcSockThLo_nbr - NetDbg_RsrcSockThLoHyst_nbr;
|
||
} else {
|
||
rsrc_th = NET_DBG_RSRC_TH_LO_MIN;
|
||
}
|
||
}
|
||
|
||
if (nbr_used >= rsrc_th) {
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO_SOCK);
|
||
}
|
||
#endif
|
||
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_RSRC_LO); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_MonTaskStatGetHandlerLost()
|
||
*
|
||
* Description : Get current Debug Monitor Task lost resource status.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : Current Debug Monitor Task lost resource status.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerRsrcLost() Return(s)'.
|
||
*
|
||
* Caller(s) : NetDbg_MonTaskStatusGetRsrcLost().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (1) NetDbg_MonTaskStatusGetHandlerRsrcLost() abbreviated to NetDbg_MonTaskStatGetHandlerLost()
|
||
* to enforce ANSI-compliance of 31-character symbol length uniqueness.
|
||
*
|
||
* See also 'net_dbg.h NETWORK DEBUG STATUS FUNCTION PROTOTYPES Note #2'.
|
||
*
|
||
* (2) NetDbg_MonTaskStatGetHandlerLost() is called by network protocol suite function(s) &
|
||
* MUST be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_MonTaskStatusGetRsrcLost() Note #1'.
|
||
*
|
||
* (3) (a) On every status get, the Debug Monitor Task Handler timer is checked in case
|
||
* no timer was available to reschedule the Debug Monitor Task Handler.
|
||
*
|
||
* (b) Do NOT need to verify success of Timer Get since every status get will check
|
||
* & get a Debug Monitor Task Handler timer as needed.
|
||
*
|
||
* See also 'NetDbg_MonTask() Note #4'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_MonTaskStatGetHandlerLost (void)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
CPU_CRITICAL_ENTER();
|
||
status = NetDbg_MonTaskStatusRsrcLost; /* Get mon task rsrc lost status. */
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
if (NetDbg_MonTaskTmr == (NET_TMR *)0) { /* If mon task tmr NULL, get tmr (see Note #3a).*/
|
||
NetDbg_MonTaskTmr = NetTmr_Get((void *) NetDbg_MonTask,
|
||
(CPU_FNCT_PTR) NetDbg_MonTask,
|
||
(NET_TMR_TICK) NetDbg_MonTaskTime_tick,
|
||
(CPU_INT16U ) NET_TMR_FLAG_NONE,
|
||
(NET_ERR *)&err); /* See Note #3b. */
|
||
}
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_MonTaskStatGetHandlerLo()
|
||
*
|
||
* Description : Get current Debug Monitor Task low resource status.
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : Current Debug Monitor Task low resource status.
|
||
*
|
||
* See also 'NetDbg_ChkStatusHandlerRsrcLo() Return(s)'.
|
||
*
|
||
* Caller(s) : NetDbg_MonTaskStatusGetRsrcLo(),
|
||
* NetICMP_HandlerRx().
|
||
*
|
||
* This function is an INTERNAL network protocol suite function & SHOULD NOT be called by
|
||
* application function(s) [see also Note #2].
|
||
*
|
||
* Note(s) : (1) NetDbg_MonTaskStatusGetHandlerRsrcLo() abbreviated to NetDbg_MonTaskStatGetHandlerLo()
|
||
* to enforce ANSI-compliance of 31-character symbol length uniqueness.
|
||
*
|
||
* See also 'net_dbg.h NETWORK DEBUG STATUS FUNCTION PROTOTYPES Note #2'.
|
||
*
|
||
* (2) NetDbg_MonTaskStatGetHandlerLost() is called by network protocol suite function(s) &
|
||
* MUST be called with the global network lock already acquired.
|
||
*
|
||
* See also 'NetDbg_MonTaskStatusGetRsrcLo() Note #1'.
|
||
*
|
||
* (3) (a) On every status get, the Debug Monitor Task Handler timer is checked in case
|
||
* no timer was available to reschedule the Debug Monitor Task Handler.
|
||
*
|
||
* (b) Do NOT need to verify success of Timer Get since every status get will check
|
||
* & get a Debug Monitor Task Handler timer as needed.
|
||
*
|
||
* See also 'NetDbg_MonTask() Note #4'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
NET_DBG_STATUS NetDbg_MonTaskStatGetHandlerLo (void)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
CPU_CRITICAL_ENTER();
|
||
status = NetDbg_MonTaskStatusRsrcLo; /* Get mon task rsrc lo status. */
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
if (NetDbg_MonTaskTmr == (NET_TMR *)0) { /* If mon task tmr NULL, get tmr (see Note #3a).*/
|
||
NetDbg_MonTaskTmr = NetTmr_Get((void *) NetDbg_MonTask,
|
||
(CPU_FNCT_PTR) NetDbg_MonTask,
|
||
(NET_TMR_TICK) NetDbg_MonTaskTime_tick,
|
||
(CPU_INT16U ) NET_TMR_FLAG_NONE,
|
||
(NET_ERR *)&err); /* See Note #3b. */
|
||
}
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
*********************************************************************************************************
|
||
* LOCAL FUNCTIONS
|
||
*********************************************************************************************************
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_InitInfoConst()
|
||
*
|
||
* Description : (1) Initialize debug information constants :
|
||
*
|
||
* (a) Prevent possible compiler optimization removal of debug information constants.
|
||
*
|
||
* (1) Some compilers ALWAYS optimize & remove unused local debug information constants.
|
||
*
|
||
* (2) Some compilers MAY optimize & remove unused local debug information constants
|
||
* if compiler optimization settings are maximally configured or configured greater
|
||
* than some optimization setting threshold.
|
||
*
|
||
*
|
||
* Argument(s) : none.
|
||
*
|
||
* Return(s) : none.
|
||
*
|
||
* Caller(s) : NetDbg_Init().
|
||
*
|
||
* Note(s) : none.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
static void NetDbg_InitInfoConst (void)
|
||
{
|
||
void *pconst;
|
||
|
||
|
||
pconst = (void *)&Net_Version;
|
||
|
||
|
||
#if (NET_DBG_CFG_INFO_EN == DEF_ENABLED)
|
||
/* ---------- NET MODULE ---------- */
|
||
pconst = (void *)&Net_DataSize;
|
||
|
||
|
||
|
||
/* ------ NET MISC MODULE(S) ------ */
|
||
pconst = (void *)&Net_CfgInitCfgVals;
|
||
pconst = (void *)&Net_CfgOptimize;
|
||
pconst = (void *)&Net_CfgTxSuspendTimeout_ms;
|
||
|
||
pconst = (void *)&NetTS_Size;
|
||
|
||
|
||
|
||
/* ------- NET ERR MODULE -------- */
|
||
pconst = (void *)&NetErr_CfgArgChkExtEn;
|
||
pconst = (void *)&NetErr_CfgArgChkDbgEn;
|
||
|
||
pconst = (void *)&NetErr_Size;
|
||
|
||
|
||
|
||
/* ------- NET DBG MODULE -------- */
|
||
pconst = (void *)&NetDbg_CfgInfoEn;
|
||
pconst = (void *)&NetDbg_CfgStatusEn;
|
||
pconst = (void *)&NetDbg_CfgStatusRsrcLostEn;
|
||
pconst = (void *)&NetDbg_CfgStatusRsrcLoEn;
|
||
pconst = (void *)&NetDbg_CfgMemClrEn;
|
||
pconst = (void *)&NetDbg_CfgTestEn;
|
||
pconst = (void *)&NetDbg_CfgMonTaskEn;
|
||
|
||
pconst = (void *)&NetDbg_StatusSize;
|
||
|
||
pconst = (void *)&NetDbg_DataSize;
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
/* ------- NET CTR MODULE -------- */
|
||
pconst = (void *)&NetCtr_CfgStatEn;
|
||
pconst = (void *)&NetCtr_CfgErrEn;
|
||
|
||
pconst = (void *)&NetCtr_Size;
|
||
|
||
|
||
|
||
/* ------- NET STAT MODULE -------- */
|
||
pconst = (void *)&NetStat_PoolSize;
|
||
|
||
pconst = (void *)&NetStat_DataSize;
|
||
|
||
|
||
|
||
/* ------- NET TMR MODULE -------- */
|
||
pconst = (void *)&NetTmr_CfgNbrTmr;
|
||
pconst = (void *)&NetTmr_CfgTaskFreq;
|
||
|
||
pconst = (void *)&NetTmr_TickSize;
|
||
pconst = (void *)&NetTmr_Size;
|
||
pconst = (void *)&NetTmr_TblSize;
|
||
|
||
pconst = (void *)&NetTmr_DataSize;
|
||
|
||
|
||
|
||
/* ------- NET BUF MODULE -------- */
|
||
pconst = (void *)&NetBuf_HdrSize;
|
||
|
||
pconst = (void *)&NetBuf_CfgNbrSmall;
|
||
#if (NET_BUF_CFG_NBR_SMALL > 0)
|
||
pconst = (void *)&NetBuf_CfgDataSizeSmall;
|
||
|
||
pconst = (void *)&NetBuf_SmallSize;
|
||
pconst = (void *)&NetBuf_SmallTblSize;
|
||
#endif
|
||
|
||
pconst = (void *)&NetBuf_CfgNbrLarge;
|
||
#if (NET_BUF_CFG_NBR_LARGE > 0)
|
||
pconst = (void *)&NetBuf_CfgDataSizeLarge;
|
||
|
||
pconst = (void *)&NetBuf_LargeSize;
|
||
pconst = (void *)&NetBuf_LargeTblSize;
|
||
#endif
|
||
|
||
pconst = (void *)&NetBuf_DataSize;
|
||
|
||
|
||
|
||
#ifdef NET_CONN_MODULE_PRESENT
|
||
/* ------- NET CONN MODULE -------- */
|
||
pconst = (void *)&NetConn_CfgNbrConn;
|
||
|
||
pconst = (void *)&NetConn_ID_Size;
|
||
pconst = (void *)&NetConn_AddrLenSize;
|
||
pconst = (void *)&NetConn_Size;
|
||
pconst = (void *)&NetConn_TblSize;
|
||
pconst = (void *)&NetConn_ServerConnListTblSize;
|
||
pconst = (void *)&NetConn_ClientConnListTblSize;
|
||
pconst = (void *)&NetConn_AddrWildCardSize;
|
||
|
||
pconst = (void *)&NetConn_DataSize;
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_ARP_MODULE_PRESENT
|
||
/* ------- NET ARP MODULE -------- */
|
||
pconst = (void *)&NetARP_CfgNbrCache;
|
||
pconst = (void *)&NetARP_CfgAddrFilterEn;
|
||
|
||
pconst = (void *)&NetARP_HdrSize;
|
||
pconst = (void *)&NetARP_CacheSize;
|
||
pconst = (void *)&NetARP_CacheTblSize;
|
||
|
||
pconst = (void *)&NetARP_DataSize;
|
||
#endif
|
||
|
||
|
||
|
||
/* ------- NET IP MODULE -------- */
|
||
pconst = (void *)&NetIP_HdrSize;
|
||
pconst = (void *)&NetIP_TOS_Size;
|
||
pconst = (void *)&NetIP_TTL_Size;
|
||
pconst = (void *)&NetIP_AddrSize;
|
||
pconst = (void *)&NetIP_OptSize;
|
||
pconst = (void *)&NetIP_OptSrcRouteSize;
|
||
pconst = (void *)&NetIP_OptTS_RouteSize;
|
||
pconst = (void *)&NetIP_OptTS_Size;
|
||
|
||
pconst = (void *)&NetIP_DataSize;
|
||
|
||
|
||
|
||
/* ------- NET ICMP MODULE -------- */
|
||
pconst = (void *)&NetICMP_HdrSize;
|
||
pconst = (void *)&NetICMP_HdrErrSize;
|
||
pconst = (void *)&NetICMP_HdrParamProbSize;
|
||
pconst = (void *)&NetICMP_HdrEchoSize;
|
||
pconst = (void *)&NetICMP_HdrTS_Size;
|
||
pconst = (void *)&NetICMP_HdrAddrMaskSize;
|
||
|
||
pconst = (void *)&NetICMP_CfgTxSrcQuenchEn;
|
||
#if (NET_ICMP_CFG_TX_SRC_QUENCH_EN == DEF_ENABLED)
|
||
pconst = (void *)&NetICMP_TxSrcQuenchSize;
|
||
pconst = (void *)&NetICMP_TxSrcQuenchTblSize;
|
||
|
||
pconst = (void *)&NetICMP_CfgTxSrcQuenchSize;
|
||
#endif
|
||
|
||
pconst = (void *)&NetICMP_DataSize;
|
||
|
||
|
||
|
||
/* ------- NET UDP MODULE -------- */
|
||
pconst = (void *)&NetUDP_CfgAppAPI_Sel;
|
||
pconst = (void *)&NetUDP_CfgRxChkSumDiscardEn;
|
||
pconst = (void *)&NetUDP_CfgTxChkSumEn;
|
||
|
||
pconst = (void *)&NetUDP_HdrSize;
|
||
pconst = (void *)&NetUDP_PseudoHdrSize;
|
||
pconst = (void *)&NetUDP_PortNbrSize;
|
||
|
||
pconst = (void *)&NetUDP_DataSize;
|
||
|
||
|
||
|
||
#ifdef NET_TCP_MODULE_PRESENT
|
||
/* ------- NET TCP MODULE -------- */
|
||
pconst = (void *)&NetTCP_CfgNbrConn;
|
||
pconst = (void *)&NetTCP_CfgRxWinSize_octet;
|
||
pconst = (void *)&NetTCP_CfgTxWinSize_octet;
|
||
pconst = (void *)&NetTCP_CfgTimeoutConnMaxSeg_sec;
|
||
pconst = (void *)&NetTCP_CfgTimeoutConnAckDly_ms;
|
||
pconst = (void *)&NetTCP_CfgTimeoutConnRxQ_ms;
|
||
pconst = (void *)&NetTCP_CfgTimeoutConnTxQ_ms;
|
||
|
||
pconst = (void *)&NetTCP_HdrSize;
|
||
pconst = (void *)&NetTCP_PseudoHdrSize;
|
||
pconst = (void *)&NetTCP_PortNbrSize;
|
||
pconst = (void *)&NetTCP_SeqNbrSize;
|
||
pconst = (void *)&NetTCP_SegLenSize;
|
||
pconst = (void *)&NetTCP_WinSize;
|
||
pconst = (void *)&NetTCP_OptSize;
|
||
pconst = (void *)&NetTCP_ConnID_Size;
|
||
pconst = (void *)&NetTCP_ConnSize;
|
||
pconst = (void *)&NetTCP_ConnTblSize;
|
||
|
||
pconst = (void *)&NetTCP_DataSize;
|
||
#endif
|
||
|
||
|
||
|
||
/*$PAGE*/
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
/* ------- NET SOCK MODULE -------- */
|
||
pconst = (void *)&NetSock_CfgNbrSock;
|
||
pconst = (void *)&NetSock_CfgBlockSel;
|
||
pconst = (void *)&NetSock_CfgRandomPortNbrBase;
|
||
pconst = (void *)&NetSock_NbrRandomPortNbr;
|
||
pconst = (void *)&NetSock_CfgTimeoutRxQ_ms;
|
||
|
||
pconst = (void *)&NetSock_CfgStreamTypeEn;
|
||
#if (NET_SOCK_CFG_TYPE_STREAM_EN == DEF_ENABLED)
|
||
pconst = (void *)&NetSock_CfgConnAcceptQ_MaxSize;
|
||
pconst = (void *)&NetSock_CfgTimeoutConnReq_ms;
|
||
pconst = (void *)&NetSock_CfgTimeoutConnAccept_ms;
|
||
pconst = (void *)&NetSock_CfgTimeoutConnClose_ms;
|
||
#endif
|
||
|
||
pconst = (void *)&NetSock_ID_Size;
|
||
pconst = (void *)&NetSock_RtnCodeSize;
|
||
pconst = (void *)&NetSock_AddrLenSize;
|
||
pconst = (void *)&NetSock_SockAddrSize;
|
||
pconst = (void *)&NetSock_Size;
|
||
pconst = (void *)&NetSock_TblSize;
|
||
pconst = (void *)&NetSock_Q_LenSize;
|
||
pconst = (void *)&NetSock_RandomPortNbrQ_Size;
|
||
|
||
pconst = (void *)&NetSock_DataSize;
|
||
#endif
|
||
|
||
|
||
|
||
/* ------- NET BSD MODULE -------- */
|
||
#if (NET_BSD_CFG_API_EN == DEF_ENABLED)
|
||
#ifdef NET_SOCK_MODULE_PRESENT
|
||
#if (NET_SOCK_CFG_FAMILY == NET_SOCK_FAMILY_IP_V4)
|
||
pconst = (void *)&NetBSD_IP_to_Str_ArraySize;
|
||
#endif
|
||
#endif
|
||
#endif
|
||
|
||
pconst = (void *)&NetBSD_DataSize;
|
||
|
||
|
||
|
||
/* ------- NET OS MODULE -------- */
|
||
pconst = (void *)&NetOS_TimeoutMin_tick;
|
||
pconst = (void *)&NetOS_TimeoutMax_tick;
|
||
pconst = (void *)&NetOS_TimeoutMin_sec;
|
||
pconst = (void *)&NetOS_TimeoutMax_sec;
|
||
pconst = (void *)&NetOS_TimeoutMin_ms;
|
||
pconst = (void *)&NetOS_TimeoutMax_ms;
|
||
|
||
|
||
|
||
/* ----- NET TOTAL DATA SIZE ------ */
|
||
pconst = (void *)&Net_DataSizeTot;
|
||
|
||
#endif
|
||
|
||
|
||
|
||
(void)&pconst; /* Prevent compiler warning. */
|
||
}
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerTCP_Q()
|
||
*
|
||
* Description : (1) Check TCP connection queue for faults :
|
||
*
|
||
* (a) TCP connection queue buffer links to unused buffers
|
||
* (b) TCP connection queue duplicate buffer references
|
||
*
|
||
*
|
||
* Argument(s) : pconn_chk Pointer to a TCP connection.
|
||
*
|
||
* pbuf_chk_q Pointer to a TCP connection queue buffer.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO TCP connection queue faults.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_Q Some TCP connection queue fault(s).
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_TYPE TCP connection queue buffer invalid type.
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_UNUSED TCP connection queue buffer unused.
|
||
* NET_DBG_SF_TCP_CONN_Q_LINK_TYPE TCP connection queue buffer invalid link type.
|
||
* NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED TCP connection queue buffer link unused.
|
||
*
|
||
* - RETURNED BY NetDbg_ChkStatusHandlerTCP_Q_Dup() : -
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_DUP TCP connection queue contains duplicate buffer(s).
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusHandlerTCP().
|
||
*
|
||
* Note(s) : (2) #### Link pointers NOT yet validated to be aligned on CPU pointer-aligned addresses
|
||
* which MAY lead to unaligned pointer access & generate CPU pointer-alignment exceptions.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_TCP_MODULE_PRESENT)))
|
||
static NET_DBG_STATUS NetDbg_ChkStatusHandlerTCP_Q (NET_TCP_CONN *pconn_chk,
|
||
NET_BUF *pbuf_chk_q)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_DBG_STATUS status_dup;
|
||
CPU_BOOLEAN err_buf;
|
||
CPU_BOOLEAN err_buf_chain;
|
||
CPU_BOOLEAN used;
|
||
NET_BUF *pbuf_chk;
|
||
NET_BUF *pbuf_chk_chain;
|
||
NET_BUF *pbuf_link;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
/*$PAGE*/
|
||
pbuf_chk_chain = pbuf_chk_q; /* -------------- CHK TCP CONN Q -------------- */
|
||
while (pbuf_chk_chain != (NET_BUF *)0) {
|
||
pbuf_chk = pbuf_chk_chain;
|
||
while (pbuf_chk != (NET_BUF *)0) { /* Chk every buf in every buf chain. */
|
||
switch (pbuf_chk->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
err_buf = DEF_NO;
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_BUF_TYPE);
|
||
err_buf = DEF_YES;
|
||
break;
|
||
}
|
||
|
||
if (err_buf == DEF_NO) {
|
||
used = DEF_BIT_IS_SET(pbuf_chk->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If TCP conn Q buf unused, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_BUF_UNUSED);
|
||
err_buf = DEF_YES;
|
||
|
||
} else {
|
||
/* --------- CHK TCP CONN Q BUF LINKS --------- */
|
||
/* Chk Q buf's prev prim list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk->Hdr.PrevPrimListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_TYPE);
|
||
break;
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED);
|
||
}
|
||
}
|
||
|
||
/* Chk Q buf's next prim list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk->Hdr.NextPrimListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_TYPE);
|
||
break;
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED);
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* Chk Q buf's prev sec list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk->Hdr.PrevSecListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_TYPE);
|
||
break;
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED);
|
||
}
|
||
}
|
||
|
||
/* Chk Q buf's next sec list buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk->Hdr.NextSecListPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_TYPE);
|
||
break;
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED);
|
||
}
|
||
}
|
||
|
||
/* Chk Q buf's prev buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk->Hdr.PrevBufPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_TYPE);
|
||
break;
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED);
|
||
}
|
||
}
|
||
|
||
/* Chk Q buf's next buf. */
|
||
pbuf_link = (NET_BUF *)pbuf_chk->Hdr.NextBufPtr;
|
||
if (pbuf_link != (NET_BUF *)0) {
|
||
switch (pbuf_link->Hdr.Type) {
|
||
case NET_BUF_TYPE_SMALL:
|
||
case NET_BUF_TYPE_LARGE:
|
||
break;
|
||
|
||
|
||
case NET_BUF_TYPE_NONE: /* If buf type invalid, set err. */
|
||
default:
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_TYPE);
|
||
break;
|
||
}
|
||
|
||
used = DEF_BIT_IS_SET(pbuf_link->Hdr.Flags, NET_BUF_FLAG_USED);
|
||
if (used != DEF_YES) { /* If NOT used, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_LINK_UNUSED);
|
||
}
|
||
}
|
||
/*$PAGE*/
|
||
/* --------- CHK TCP CONN Q DUP BUF's --------- */
|
||
/* Chk dup buf(s) in TCP conn transport rx Q. */
|
||
if (pbuf_chk_q != pconn_chk->RxQ_Transport_Head) {
|
||
status_dup = NetDbg_ChkStatusHandlerTCP_Q_Dup(pbuf_chk, pconn_chk->RxQ_Transport_Head);
|
||
DEF_BIT_SET(status, status_dup);
|
||
}
|
||
/* Chk dup buf(s) in TCP conn app rx Q. */
|
||
if (pbuf_chk_q != pconn_chk->RxQ_App_Head) {
|
||
status_dup = NetDbg_ChkStatusHandlerTCP_Q_Dup(pbuf_chk, pconn_chk->RxQ_App_Head);
|
||
DEF_BIT_SET(status, status_dup);
|
||
}
|
||
/* Chk dup buf(s) in TCP conn tx Q. */
|
||
if (pbuf_chk_q != pconn_chk->TxQ_Head) {
|
||
status_dup = NetDbg_ChkStatusHandlerTCP_Q_Dup(pbuf_chk, pconn_chk->TxQ_Head);
|
||
DEF_BIT_SET(status, status_dup);
|
||
}
|
||
/* Chk dup buf(s) in TCP conn re-tx Q. */
|
||
if (pbuf_chk_q != pconn_chk->ReTxQ_Head) {
|
||
status_dup = NetDbg_ChkStatusHandlerTCP_Q_Dup(pbuf_chk, pconn_chk->ReTxQ_Head);
|
||
DEF_BIT_SET(status, status_dup);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if ((err_buf == DEF_NO) && /* If NO buf err & .. */
|
||
(pbuf_chk != (NET_BUF *)pbuf_chk->Hdr.NextBufPtr)) { /* .. buf does NOT point to itself, */
|
||
pbuf_chk = (NET_BUF *)pbuf_chk->Hdr.NextBufPtr; /* .. adv to next buf. */
|
||
} else { /* Else exit chain. */
|
||
pbuf_chk = (NET_BUF *)0;
|
||
}
|
||
}
|
||
|
||
|
||
err_buf_chain = ((err_buf != DEF_NO) && (pbuf_chk == pbuf_chk_chain)) ? DEF_YES : DEF_NO;
|
||
|
||
if ((err_buf_chain == DEF_NO) && /* If NO buf chain err & .. */
|
||
(pbuf_chk_chain != (NET_BUF *)pbuf_chk_chain->Hdr.NextPrimListPtr)) { /* .. buf does NOT point to itself, */
|
||
pbuf_chk_chain = (NET_BUF *)pbuf_chk_chain->Hdr.NextPrimListPtr; /* .. adv to next chain. */
|
||
} else { /* Else exit q. */
|
||
pbuf_chk_chain = (NET_BUF *)0;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q); /* ... set breakpoint. */
|
||
}
|
||
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_ChkStatusHandlerTCP_Q_Dup()
|
||
*
|
||
* Description : Check TCP connection queue for duplicate buffer reference(s).
|
||
*
|
||
* Argument(s) : pbuf_chk Pointer to a TCP connection queue buffer.
|
||
*
|
||
* pbuf_q Pointer to a TCP connection queue to check for duplicate reference(s) to the
|
||
* buffer.
|
||
*
|
||
* Return(s) : NET_DBG_STATUS_OK, if NO duplicate buffer reference(s) in the TCP connection queue.
|
||
*
|
||
* Otherwise, return network status codes logically OR'd :
|
||
*
|
||
* NET_DBG_SF_TCP_CONN_Q_BUF_DUP TCP connection queue contains duplicate buffer(s).
|
||
*
|
||
* Caller(s) : NetDbg_ChkStatusHandlerTCP_Q().
|
||
*
|
||
* Note(s) : (1) Assumes TCP connection queues' network buffer types have already been validated.
|
||
*
|
||
* (2) #### Link pointers are NOT yet validated to be aligned on CPU pointer-aligned addresses.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if ((NET_DBG_CFG_STATUS_EN == DEF_ENABLED) && \
|
||
(defined(NET_TCP_MODULE_PRESENT)))
|
||
static NET_DBG_STATUS NetDbg_ChkStatusHandlerTCP_Q_Dup (NET_BUF *pbuf_chk,
|
||
NET_BUF *pbuf_q)
|
||
{
|
||
NET_DBG_STATUS status;
|
||
NET_BUF *pbuf_chain;
|
||
NET_BUF *pbuf;
|
||
|
||
|
||
status = NET_DBG_STATUS_OK;
|
||
|
||
|
||
pbuf_chain = pbuf_q;
|
||
while (pbuf_chain != (NET_BUF *)0) {
|
||
pbuf = pbuf_chain;
|
||
while (pbuf != (NET_BUF *)0) { /* Chk every buf in every buf chain. */
|
||
if (pbuf_chk == pbuf) { /* If dup buf found, set err. */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_BUF_DUP);
|
||
}
|
||
|
||
if (pbuf != (NET_BUF *)pbuf->Hdr.NextBufPtr) { /* If buf does NOT point to itself, ... */
|
||
pbuf = (NET_BUF *)pbuf->Hdr.NextBufPtr; /* ... adv to next buf. */
|
||
} else { /* Else exit chain. */
|
||
pbuf = (NET_BUF *)0;
|
||
}
|
||
}
|
||
|
||
if (pbuf_chain != (NET_BUF *)pbuf_chain->Hdr.NextPrimListPtr) { /* If buf does NOT point to itself, ... */
|
||
pbuf_chain = (NET_BUF *)pbuf_chain->Hdr.NextPrimListPtr; /* ... adv to next chain. */
|
||
} else { /* Else exit q. */
|
||
pbuf_chain = (NET_BUF *)0;
|
||
}
|
||
}
|
||
|
||
|
||
if (status != NET_DBG_STATUS_OK) { /* For ANY fault status, ... */
|
||
DEF_BIT_SET(status, NET_DBG_SF_TCP_CONN_Q_BUF_DUP); /* ... set breakpoint. */
|
||
}
|
||
|
||
return (status);
|
||
}
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NetDbg_MonTask()
|
||
*
|
||
* Description : (1) Monitor network resources' status :
|
||
*
|
||
* (a) Check & update network resources' usage status :
|
||
* (1) Check lost resources
|
||
* (2) Check low resources
|
||
*
|
||
* (b) Get Debug Monitor Task Handler timer See Note #4
|
||
*
|
||
*
|
||
* Argument(s) : ptask Pointer to this Debug Monitor Task Handler function (see Note #2).
|
||
*
|
||
* Return(s) : none.
|
||
*
|
||
* Caller(s) : Referenced in NetDbg_Init(),
|
||
* NetDbg_MonTask(),
|
||
* NetDbg_MonTaskStatGetHandlerLost(),
|
||
* NetDbg_MonTaskStatGetHandlerLo().
|
||
*
|
||
* Note(s) : (2) Network timer module requires a pointer to an object when allocating a timer.
|
||
* Since Debug Monitor Task does NOT require a pointer to an object in order to
|
||
* execute, a pointer to this task handler function is passed instead.
|
||
*
|
||
* See also 'net_tmr.c NetTmr_Get() Note #3'.
|
||
*
|
||
* (3) This function is a network timer expiration function :
|
||
*
|
||
* (a) Clear the timer pointer :
|
||
* (1) Reset by NetTmr_Get(). See Note #4
|
||
*
|
||
* (b) but do NOT re-free the timer.
|
||
*
|
||
* (4) Do NOT need to verify success of Timer Get since every status get will check
|
||
* & get a Debug Monitor Task Handler timer as needed.
|
||
*
|
||
* See also 'NetDbg_MonTaskStatGetHandlerLost() Note #3'
|
||
* & 'NetDbg_MonTaskStatGetHandlerLo() Note #3'.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_DBG_CFG_MON_TASK_EN == DEF_ENABLED)
|
||
static void NetDbg_MonTask (void *ptask)
|
||
{
|
||
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
|
||
CPU_SR cpu_sr;
|
||
#endif
|
||
NET_DBG_STATUS status;
|
||
NET_ERR err;
|
||
|
||
|
||
(void)&ptask; /* Prevent compiler warning (see Note #2). */
|
||
|
||
/* -------------- MON NET RSRC's -------------- */
|
||
status = NetDbg_ChkStatusHandlerRsrcLost();
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_MonTaskStatusRsrcLost = status;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
status = NetDbg_ChkStatusHandlerRsrcLo();
|
||
CPU_CRITICAL_ENTER();
|
||
NetDbg_MonTaskStatusRsrcLo = status;
|
||
CPU_CRITICAL_EXIT();
|
||
|
||
|
||
/* ------------- GET MON TASK TMR ------------- */
|
||
NetDbg_MonTaskTmr = NetTmr_Get((void *) NetDbg_MonTask, /* See Note #2. */
|
||
(CPU_FNCT_PTR) NetDbg_MonTask,
|
||
(NET_TMR_TICK) NetDbg_MonTaskTime_tick,
|
||
(CPU_INT16U ) NET_TMR_FLAG_NONE,
|
||
(NET_ERR *)&err); /* See Note #4. */
|
||
}
|
||
#endif
|
||
|