cloudFPGA (cF) API
1.0
The documentation of the source code of cloudFPGA (cF)
|
TCP Offload Engine (TOE) of the Network Transport Stack (NTS). More...
Modules | |
TOE_TEST | |
Testbench for the TCP Offload Engine (TOE) of the Network Transport Stack (NTS). | |
Files | |
file | test_ack_delay.cpp |
: Testbench for ACK delayer (AKd) function of TOE. | |
file | test_ack_delay.hpp |
: Testbench for or ACK delayer (AKd) function of TOE. | |
file | test_rx_engine.cpp |
: Testbench for RX Engine (RXe) of the TCP Offload Engine (TOE). | |
file | test_rx_engine.hpp |
: Testbench for RX Engine (RXe) of the TCP Offload Engine (TOE). | |
file | tx_app_interface.cpp |
: Tx Application Interface (TAi) | |
file | tx_app_interface.hpp |
: Tx Application Interface (TAi) | |
file | test_tx_engine.cpp |
: Testbench for TX Engine (TXe) of the TCP Offload Engine (TOE). | |
file | test_rx_engine.hpp |
: Testbench for RX Engine (RXe) of the TCP Offload Engine (TOE). | |
file | test_toe.cpp |
: Testbench for the TCP Offload Engine (TOE). | |
file | test_toe.hpp |
: Testbench for the TCP Offload Engine (TOE) | |
Classes | |
class | AckEntry |
class | RXeMeta |
class | RXeFsmMeta |
class | RxSarEntry |
class | SLcQuery |
class | SLcReverseLkp |
class | CloseTimerEntry |
class | ProbeTimerEntry |
class | ReTxTimerEntry |
struct | ipTuple |
class | SessionLookupQuery |
class | SessionLookupReply |
class | StateQuery |
class | RxSarReply |
class | RXeRxSarQuery |
class | RAiRxSarQuery |
class | RAiRxSarReply |
class | RXeTxSarQuery |
class | RXeTxSarReply |
class | TXeTxSarQuery |
class | TXeTxSarReply |
class | TXeTxSarRtQuery |
class | TAiTxSarPush |
class | TStTxSarPush |
class | TxAppTableQuery |
class | TxAppTableReply |
class | RXeReTransTimerCmd |
class | TXeReTransTimerCmd |
class | Event |
class | ExtendedEvent |
struct | rstEvent |
class | TxAppTableEntry |
class | AppMemMeta |
class | TXeMeta |
struct | SubCSums |
class | IpAddrPair |
class | TxSarEntry |
class | DummyMemory |
Macros | |
#define | THIS_NAME "TOE/AKd" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_AKD 1 << 1 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/EVe" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_EVE 1 << 1 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/PRt" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_IRR 1 << 1 |
#define | TRACE_ORM 1 << 2 |
#define | TRACE_LPT 1 << 3 |
#define | TRACE_FPT 1 << 4 |
#define | TRACE_RDY 1 << 5 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | ACT_FREE_PORT false |
#define | ACT_USED_PORT true |
#define | ACTIVE_PORT false |
#define | LISTEN_PORT true |
#define | PortRange bool |
#define | THIS_NAME "TOE/RAi" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_LAI 1 << 1 |
#define | TRACE_ASS 1 << 2 |
#define | TRACE_NMX 1 << 3 |
#define | TRACE_RAS 1 << 4 |
#define | TRACE_MRD 1 << 5 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/RXe" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_TLE 1 << 1 |
#define | TRACE_IPH 1 << 2 |
#define | TRACE_CSA 1 << 3 |
#define | TRACE_MDH 1 << 4 |
#define | TRACE_TID 1 << 5 |
#define | TRACE_TSD 1 << 6 |
#define | TRACE_EVM 1 << 7 |
#define | TRACE_FSM 1 << 8 |
#define | TRACE_MWR 1 << 9 |
#define | TRACE_RAN 1 << 10 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/RSt" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_RST 1 << 1 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/SLc" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_LRH 1 << 1 |
#define | TRACE_RLT 1 << 2 |
#define | TRACE_SIM 1 << 3 |
#define | TRACE_URH 1 << 4 |
#define | TRACE_URS 1 << 5 |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/STt" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_STT 1 << 1 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/TIm" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_CLT 1 << 1 |
#define | TRACE_PBT 1 << 2 |
#define | TRACE_RTT 1 << 3 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | USE_DEPRECATED_DIRECTIVES |
#define | THIS_NAME "TOE" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_RDY 1 << 1 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | TOE_SIZEOF_LISTEN_PORT_TABLE 0x8000 |
#define | TOE_SIZEOF_ACTIVE_PORT_TABLE 0x8000 |
#define | TOE_FIRST_EPHEMERAL_PORT_NUM 0x8000 |
#define | TOE_FEATURE_USED_FOR_DEBUGGING 0 |
#define | cIP4_ADDR_WIDTH 32 |
#define | cTCP_PORT_WIDTH 16 |
#define | cSHL_TOE_SESS_ID_WIDTH 16 |
#define | cSHL_TOE_LSN_ACK_WIDTH 1 |
#define | cSHL_TOE_LSN_REQ_WIDTH cSHL_TOE_SESS_ID_WIDTH |
#define | cSHL_TOE_OPN_REQ_WIDTH (cIP4_ADDR_WIDTH + cTCP_PORT_WIDTH) |
#define | cSHL_TOE_CLS_REQ_WIDTH cSHL_TOE_SESS_ID_WIDTH |
#define | TLAST 1 |
#define | RXMEMBUF 65536 |
#define | TXMEMBUF 65536 |
#define | THIS_NAME "ToeUtils" |
#define | THIS_NAME "TOE/TAi" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_SML 1 << 1 |
#define | TRACE_SLG 1 << 2 |
#define | TRACE_MWR 1 << 3 |
#define | TRACE_TAC 1 << 4 |
#define | TRACE_TAS 1 << 5 |
#define | TRACE_TAT 1 << 6 |
#define | TRACE_TASH 1 << 7 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | PRAGMA_SUB(x) _Pragma (#x) |
#define | DO_PRAGMA(x) PRAGMA_SUB(x) |
#define | DEPTH_ssEmxToTash_Event 2 |
#define | DEPTH_ssTacToEmx_Event 2 |
#define | DEPTH_ssTatToSml_AccessRep 2 |
#define | DEPTH_ssSmlToTat_AccessQry 2 |
#define | DEPTH_ssSmlToMwr_SegMeta 128 |
#define | DEPTH_ssSmlToEmx_Event 2 |
#define | DEPTH_ssSlgToMwr_Data 256 |
#define | DEPTH_ssSlgToSml_SegLen 32 |
#define | THIS_NAME "TOE/TXe" |
#define | FIXME 1 |
#define | TRACE_OFF 0x0000 |
#define | TRACE_MDL 1 << 1 |
#define | TRACE_IHC 1 << 2 |
#define | TRACE_SPS 1 << 3 |
#define | TRACE_PHC 1 << 4 |
#define | TRACE_MRD 1 << 5 |
#define | TRACE_TSS 1 << 6 |
#define | TRACE_SCA 1 << 7 |
#define | TRACE_TCA 1 << 8 |
#define | TRACE_IPS 1 << 9 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
#define | THIS_NAME "TOE/TSt" |
#define | TRACE_OFF 0x0000 |
#define | TRACE_TST 1 << 1 |
#define | TRACE_ALL 0xFFFF |
#define | DEBUG_LEVEL (TRACE_OFF) |
Typedefs | |
typedef AckBit | PortState |
typedef FourTuple | SLcFourTuple |
typedef ap_uint< 16 > | SessionId |
typedef ap_uint< 1 > | LsnAck |
typedef ap_uint< 16 > | LsnReq |
typedef ap_uint<(32+16) > | OpnReq |
typedef ap_uint< 16 > | ClsReq |
typedef ap_uint< 64 > | LE_tData |
typedef ap_uint< 8 > | LE_tKeep |
typedef ap_uint< 64 > | tData |
typedef ap_uint< 32 > | tDataHalf |
typedef ap_uint< 8 > | tKeep |
typedef ap_uint< 1 > | tLast |
typedef TcpAppOpnRep | SessState |
typedef ap_uint< 15 > | TcpStaPort |
typedef ap_uint< 15 > | TcpDynPort |
typedef TcpSeqNum | RxSeqNum |
typedef TcpAckNum | TxAckNum |
typedef TcpWindow | RemotWinSize |
typedef TcpWindow | LocalWinSize |
typedef ap_uint< 32 > | RxMemPtr |
typedef ap_uint< 32 > | TxMemPtr |
typedef ap_uint< TOE_WINDOW_BITS > | TcpBufAdr |
typedef TcpBufAdr | RxBufPtr |
typedef TcpBufAdr | TxBufPtr |
typedef bool | HitState |
Enumerations | |
enum | StateEntry { DISABLED_ENTRY = false , ACTIVE_ENTRY = true } |
enum | notificationType { PKG , CLOSE , TIME_OUT , RESET } |
enum | { WORD_0 , WORD_1 , WORD_2 , WORD_3 , WORD_4 , WORD_5 } |
enum | { CHUNK_0 , CHUNK_1 , CHUNK_2 , CHUNK_3 , CHUNK_4 , CHUNK_5 } |
enum | EventType { TX_EVENT =0 , RT_EVENT , ACK_EVENT , SYN_EVENT , SYN_ACK_EVENT , FIN_EVENT , RST_EVENT , ACK_NODELAY_EVENT } |
enum | HitStates { SESSION_UNKNOWN = false , SESSION_EXISTS = true } |
enum | TimerCmd { LOAD_TIMER = false , STOP_TIMER = true } |
Functions | |
void | ack_delay (stream< ExtendedEvent > &siEVe_Event, stream< SigBit > &soEVe_RxEventSig, stream< SigBit > &soEVe_TxEventSig, stream< ExtendedEvent > &soTXe_Event) |
ACK Delayer (AKd) More... | |
void | ack_delay_OBSO (stream< ExtendedEvent > &siEVe_Event, stream< SigBit > &soEVe_RxEventSig, stream< SigBit > &soEVe_TxEventSig, stream< ExtendedEvent > &soTXe_Event) |
void | event_engine (stream< Event > &siTAi_Event, stream< ExtendedEvent > &siRXe_Event, stream< Event > &siTIm_Event, stream< ExtendedEvent > &soAKd_Event, stream< SigBit > &siAKd_RxEventSig, stream< SigBit > &siAKd_TxEventSig, stream< SigBit > &siTXe_RxEventSig) |
The Event Engine (EVe) arbitrates the incoming events and forwards them to the Tx Engine (TXe) via the ACK Delayer (AKd). More... | |
template<class T > | |
void | pAnd2 (T &pi1, T &pi2, T &po) |
A two inputs 'AND' gate. More... | |
void | pReady (StsBool &piLpt_Ready, StsBool &piFpt_Ready, StsBool &poTOE_Ready) |
Ready Logic (Rdy) More... | |
void | pListeningPortTable (StsBool &poRdy_Ready, stream< TcpPort > &siRAi_OpenLsnPortReq, stream< RepBit > &soRAi_OpenLsnPortRep, stream< TcpStaPort > &siIrr_GetPortStateCmd, stream< RspBit > &soOrm_GetPortStateRsp) |
Listening Port Table (Lpt) More... | |
void | pFreePortTable (StsBool &poRdy_Ready, stream< TcpPort > &siSLc_CloseActPortCmd, stream< TcpDynPort > &siIrr_GetPortStateCmd, stream< RspBit > &soOrm_GetPortStateRsp, stream< ReqBit > &siTAi_GetFreePortReq, stream< TcpPort > &soTAi_GetFreePortRep) |
Free Port Table (Fpt) More... | |
void | pInputRequestRouter (stream< TcpPort > &siRXe_GetPortStateCmd, stream< TcpStaPort > &soLpt_GetLsnPortStateCmd, stream< TcpDynPort > &soFpt_GetActPortStateCmd, stream< bool > &soOrm_QueryRange) |
Input Request Router (Irr) More... | |
void | pOutputReplyMultiplexer (stream< bool > &siIrr_QueryRange, stream< RspBit > &siLpt_GetLsnPortStateRsp, stream< RspBit > &siFpt_GetActPortStateRsp, stream< RspBit > &soRXe_GetPortStateRsp) |
Output Reply Multiplexer (Orm) More... | |
void | port_table (StsBool &poTOE_Ready, stream< TcpPort > &siRXe_GetPortStateReq, stream< RepBit > &soRXe_GetPortStateRep, stream< TcpPort > &siRAi_OpenLsnPortReq, stream< AckBit > &soRAi_OpenLsnPortAck, stream< ReqBit > &siTAi_GetFreePortReq, stream< TcpPort > &soTAi_GetFreePortRep, stream< TcpPort > &siSLc_CloseActPortCmd) |
Port Table (PRt) More... | |
void | pNotificationMux (stream< TcpAppNotif > &siRXe_Notif, stream< TcpAppNotif > &siTIm_Notif, stream< TcpAppNotif > &soTAIF_Notif, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt) |
Rx Notification Multiplexer (Nmx) More... | |
void | pRxAppStream (stream< TcpAppRdReq > &siTAIF_DataReq, stream< TcpAppMeta > &soTAIF_Meta, stream< RAiRxSarQuery > &soRSt_RxSarQry, stream< RAiRxSarReply > &siRSt_RxSarRep, stream< DmCmd > &soMrd_MemRdCmd, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt) |
Rx Application Stream (RAs) More... | |
void | pRxMemoryReader (stream< DmCmd > &siRas_MemRdCmd, stream< DmCmd > &soMEM_RxpRdCmd, stream< FlagBool > &soAss_SplitSeg) |
Rx Memory Reader (Mrd) More... | |
void | pAppSegmentStitcher (stream< AxisApp > &siMEM_RxP_Data, stream< TcpAppData > &soTAIF_Data, stream< FlagBool > &siMrd_SplitSegFlag, stream< ap_uint< 8 > > &soMMIO_DataDropCnt) |
Application Segment Stitcher (Ass) More... | |
void | pLsnAppInterface (stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpPort > &soPRt_LsnReq, stream< RepBit > &siPRt_LsnRep) |
Listen Application Interface (Lai) More... | |
void | rx_app_interface (stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DataReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpPort > &soPRt_LsnReq, stream< AckBit > &siPRt_LsnAck, stream< TcpAppNotif > &siRXe_Notif, stream< TcpAppNotif > &siTIm_Notif, stream< RAiRxSarQuery > &soRSt_RxSarReq, stream< RAiRxSarReply > &siRSt_RxSarRep, stream< DmCmd > &soMEM_RxP_RdCmd, stream< AxisApp > &siMEM_RxP_Data, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt, stream< ap_uint< 8 > > &soMMIO_DataDropCnt) |
Rx Application Interface (RAi) More... | |
void | pTcpLengthExtractor (stream< AxisIp4 > &siIPRX_Data, stream< AxisRaw > &soIph_Data, stream< TcpSegLen > &soIph_TcpSegLen) |
TCP Length Extraction (Tle) More... | |
void | pInsertPseudoHeader (stream< AxisRaw > &siTle_Data, stream< TcpSegLen > &siTle_TcpSegLen, stream< AxisPsd4 > &soCsa_PseudoPkt) |
Insert pseudo header (Iph) More... | |
void | pCheckSumAccumulator (stream< AxisPsd4 > &siIph_PseudoPkt, stream< AxisApp > &soTid_Data, stream< ValBit > &soTid_DataVal, stream< RXeMeta > &soMdh_Meta, stream< SocketPair > &soMdh_SockPair, stream< TcpPort > &soPRt_GetState) |
TCP checksum accumulator (Csa) More... | |
void | pTcpInvalidDropper (stream< AxisApp > &siCsa_Data, stream< ValBit > &siCsa_DataVal, stream< AxisApp > &soTsd_Data, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt) |
TCP Invalid checksum Dropper (Tid) More... | |
void | pTcpSegmentDropper (stream< AxisApp > &siTid_Data, stream< CmdBit > &siMdh_DropCmd, stream< CmdBit > &siFsm_DropCmd, stream< AxisApp > &soMwr_Data) |
TCP Segment Dropper (Tsd) More... | |
void | pRxMemoryWriter (stream< AxisApp > &siTsd_Data, stream< DmCmd > &siFsm_MemWrCmd, stream< DmCmd > &soMEM_WrCmd, stream< AxisApp > &soMEM_WrData, stream< FlagBool > &soRan_SplitSeg) |
Rx Memory Writer (Mwr) More... | |
void | pRxAppNotifier (stream< DmSts > &siMEM_WrSts, stream< TcpAppNotif > &siFsm_Notif, stream< TcpAppNotif > &soRAi_RxNotif, stream< FlagBool > &siMwr_SplitSeg, stream< StsBit > &soMMIO_MemWrErr) |
Rx Application Notifier (Ran) More... | |
void | pMetaDataHandler (stream< RXeMeta > &siCsa_Meta, stream< SocketPair > &siCsa_SockPair, stream< SessionLookupQuery > &soSLc_SessLkpReq, stream< SessionLookupReply > &siSLc_SessLkpRep, stream< StsBit > &siPRt_PortSts, stream< ExtendedEvent > &soEVe_Event, stream< CmdBit > &soTsd_DropCmd, stream< RXeFsmMeta > &soFsm_Meta, stream< ap_uint< 8 > > &soMMIO_SessDropCnt) |
MetaData Handler (Mdh) More... | |
void | pFiniteStateMachine (stream< RXeFsmMeta > &siMdh_FsmMeta, stream< StateQuery > &soSTt_StateQry, stream< TcpState > &siSTt_StateRep, stream< RXeRxSarQuery > &soRSt_RxSarQry, stream< RxSarReply > &siRSt_RxSarRep, stream< RXeTxSarQuery > &soTSt_TxSarQry, stream< RXeTxSarReply > &siTSt_TxSarRep, stream< RXeReTransTimerCmd > &soTIm_ReTxTimerCmd, stream< SessionId > &soTIm_ClearProbeTimer, stream< SessionId > &soTIm_CloseTimer, stream< SessState > &soTAi_SessOpnSts, stream< Event > &soEVe_Event, stream< CmdBit > &soTsd_DropCmd, stream< DmCmd > &soMwr_WrCmd, stream< TcpAppNotif > &soRan_RxNotif, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug) |
Finite State machine (Fsm) More... | |
void | pEventMultiplexer (stream< ExtendedEvent > &siMdh_Event, stream< Event > &siFsm_Event, stream< ExtendedEvent > &soEVe_Event) |
Event Multiplexer (Evm) More... | |
void | rx_engine (stream< AxisIp4 > &siIPRX_Data, stream< SessionLookupQuery > &soSLc_SessLkReq, stream< SessionLookupReply > &siSLc_SessLkRep, stream< StateQuery > &soSTt_StateQry, stream< TcpState > &siSTt_StateRep, stream< TcpPort > &soPRt_PortStateReq, stream< RepBit > &siPRt_PortStateRep, stream< RXeRxSarQuery > &soRSt_RxSarQry, stream< RxSarReply > &siRSt_RxSarRep, stream< RXeTxSarQuery > &soTSt_TxSarQry, stream< RXeTxSarReply > &siTSt_TxSarRep, stream< RXeReTransTimerCmd > &soTIm_ReTxTimerCmd, stream< SessionId > &soTIm_ClearProbeTimer, stream< SessionId > &soTIm_CloseTimer, stream< ExtendedEvent > &soEVe_SetEvent, stream< SessState > &soTAi_SessOpnSts, stream< TcpAppNotif > &soRAi_RxNotif, stream< DmCmd > &soMEM_WrCmd, stream< AxisApp > &soMEM_WrData, stream< DmSts > &siMEM_WrSts, stream< StsBit > &soMMIO_RxMemWrErr, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt, stream< ap_uint< 8 > > &soMMIO_SessDropCnt, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug) |
Receive Engine (RXe) More... | |
void | rx_sar_table (stream< RXeRxSarQuery > &siRXe_RxSarQry, stream< RxSarReply > &soRXe_RxSarRep, stream< RAiRxSarQuery > &siRAi_RxSarQry, stream< RAiRxSarReply > &soRAi_RxSarRep, stream< SessionId > &siTXe_RxSarReq, stream< RxSarReply > &soTxe_RxSarRep) |
Rx SAR Table (RSt) More... | |
void | pSessionIdManager (stream< RtlSessId > &siUrs_FreeId, stream< RtlSessId > &soLrh_FreeList) |
Session Id Manager (Sim) More... | |
void | pLookupReplyHandler (stream< CamSessionLookupRequest > &soCAM_SessLookupReq, stream< CamSessionLookupReply > &siCAM_SessLookupRep, stream< CamSessionUpdateReply > &siUrh_SessUpdateRsp, stream< SessionLookupQuery > &siRXe_SessLookupReq, stream< SessionLookupReply > &soRXe_SessLookupRep, stream< SocketPair > &siTAi_SessLookupReq, stream< SessionLookupReply > &soTAi_SessLookupRep, stream< RtlSessId > &siSim_FreeList, stream< CamSessionUpdateRequest > &soUrs_InsertSessReq, stream< SLcReverseLkp > &soRlt_ReverseLkpRsp) |
Lookup Reply Handler (Lrh) More... | |
void | pUpdateRequestSender (stream< CamSessionUpdateRequest > &siLrh_InsertSessReq, stream< CamSessionUpdateRequest > &siRlt_SessDeleteReq, stream< CamSessionUpdateRequest > &soCAM_SessUpdateReq, stream< RtlSessId > &soSim_FreeId, stream< ap_uint< 16 > > &soSssRelCnt, stream< ap_uint< 16 > > &soSssRegCnt) |
Update Request Sender (Urs) More... | |
void | pUpdateReplyHandler (stream< CamSessionUpdateReply > &siCAM_SessUpdateRep, stream< CamSessionUpdateReply > &soLrh_SessUpdateRsp) |
Update Reply Handler (Urh) More... | |
void | pReverseLookupTable (stream< SLcReverseLkp > &siLrh_ReverseLkpRsp, stream< SessionId > &siSTt_SessReleaseCmd, stream< SessionId > &siTXe_ReverseLkpReq, stream< fourTuple > &soTXe_ReverseLkpRep, stream< TcpPort > &soPRt_ClosePortCmd, stream< CamSessionUpdateRequest > &soUrs_SessDeleteReq) |
Reverse Lookup Table (Rlt) More... | |
void | session_lookup_controller (stream< SessionLookupQuery > &siRXe_SessLookupReq, stream< SessionLookupReply > &soRXe_SessLookupRep, stream< SessionId > &siSTt_SessReleaseCmd, stream< TcpPort > &soPRt_ClosePortCmd, stream< SocketPair > &siTAi_SessLookupReq, stream< SessionLookupReply > &soTAi_SessLookupRep, stream< SessionId > &siTXe_ReverseLkpReq, stream< fourTuple > &soTXe_ReverseLkpRep, stream< CamSessionLookupRequest > &soCAM_SessLookupReq, stream< CamSessionLookupReply > &siCAM_SessLookupRep, stream< CamSessionUpdateRequest > &soCAM_SessUpdateReq, stream< CamSessionUpdateReply > &siCAM_SessUpdateRep, stream< ap_uint< 16 > > &soSssRelCnt, stream< ap_uint< 16 > > &soSssRegCnt) |
Session Lookup Controller (SLc) More... | |
void | state_table (stream< StateQuery > &siRXe_SessStateQry, stream< TcpState > &soRXe_SessStateRep, stream< StateQuery > &siTAi_ConnectStateQry, stream< TcpState > &soTAi_ConnectStateRep, stream< SessionId > &siTAi_StreamStateReq, stream< TcpState > &soTAi_StreamStateRep, stream< SessionId > &siTIm_SessCloseCmd, stream< SessionId > &soSLc_SessReleaseCmd) |
State Table (STt) More... | |
template<typename T > | |
void | pStreamMux (stream< T > &si1, stream< T > &si2, stream< T > &so) |
A 2-to-1 generic Stream Multiplexer. More... | |
void | pRetransmitTimer (stream< RXeReTransTimerCmd > &siRXe_ReTxTimerCmd, stream< TXeReTransTimerCmd > &siTXe_ReTxTimerCmd, stream< Event > &soEmx_Event, stream< SessionId > &soSmx_SessCloseCmd, stream< SessState > &soTAi_Notif, stream< TcpAppNotif > &soRAi_Notif) |
ReTransmit Timer (Rtt) process. More... | |
void | pProbeTimer (stream< SessionId > &siRXe_ClrProbeTimer, stream< SessionId > &siTXe_SetProbeTimer, stream< Event > &soEmx_Event) |
Probe Timer (Prb) process. More... | |
void | pCloseTimer (stream< SessionId > &siRXe_CloseTimer, stream< SessionId > &soSmx_SessCloseCmd) |
Close Timer (Clt) process. More... | |
void | timers (stream< RXeReTransTimerCmd > &siRXe_ReTxTimerCmd, stream< SessionId > &siRXe_ClrProbeTimer, stream< SessionId > &siRXe_CloseTimer, stream< TXeReTransTimerCmd > &siTXe_ReTxTimerCmd, stream< SessionId > &siTXe_SetProbeTimer, stream< SessionId > &soSTt_SessCloseCmd, stream< Event > &soEVe_Event, stream< SessState > &soTAi_Notif, stream< TcpAppNotif > &soRAi_Notif) |
The Timers (TIm) More... | |
void | pReady (StsBool &piPRt_Ready, StsBit &poNTS_Ready) |
Ready (Rdy) More... | |
void | pTbSimCount (volatile ap_uint< 32 > &poSimCycCount) |
Testbench Simulation Counter. More... | |
void | toe (Ip4Addr piMMIO_IpAddr, stream< StsBit > &soMMIO_RxMemWrErr, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt, stream< ap_uint< 8 > > &soMMIO_DataDropCnt, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt, stream< ap_uint< 8 > > &soMMIO_SessDropCnt, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, StsBit &poNTS_Ready, stream< AxisIp4 > &siIPRX_Data, stream< AxisIp4 > &soIPTX_Data, stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< DmCmd > &soMEM_RxP_RdCmd, stream< AxisApp > &siMEM_RxP_Data, stream< DmSts > &siMEM_RxP_WrSts, stream< DmCmd > &soMEM_RxP_WrCmd, stream< AxisApp > &soMEM_RxP_Data, stream< DmCmd > &soMEM_TxP_RdCmd, stream< AxisApp > &siMEM_TxP_Data, stream< DmSts > &siMEM_TxP_WrSts, stream< DmCmd > &soMEM_TxP_WrCmd, stream< AxisApp > &soMEM_TxP_Data, stream< CamSessionLookupRequest > &soCAM_SssLkpReq, stream< CamSessionLookupReply > &siCAM_SssLkpRep, stream< CamSessionUpdateRequest > &soCAM_SssUpdReq, stream< CamSessionUpdateReply > &siCAM_SssUpdRep, stream< ap_uint< 16 > > &soDBG_SssRelCnt, stream< ap_uint< 16 > > &soDBG_SssRegCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug) |
Main process of the TCP Offload Engine (TOE0. More... | |
void | toe_top (Ip4Addr piMMIO_IpAddr, stream< StsBit > &soMMIO_RxMemWrErr, stream< ap_uint< 8 > > &soMMIO_NotifDropCnt, stream< ap_uint< 8 > > &soMMIO_MetaDropCnt, stream< ap_uint< 8 > > &soMMIO_DataDropCnt, stream< ap_uint< 8 > > &soMMIO_CrcDropCnt, stream< ap_uint< 8 > > &soMMIO_SessDropCnt, stream< ap_uint< 8 > > &soMMIO_OooDropCnt, StsBit &poNTS_Ready, stream< AxisRaw > &siIPRX_Data, stream< AxisRaw > &soIPTX_Data, stream< TcpAppNotif > &soTAIF_Notif, stream< TcpAppRdReq > &siTAIF_DReq, stream< TcpAppData > &soTAIF_Data, stream< TcpAppMeta > &soTAIF_Meta, stream< TcpAppLsnReq > &siTAIF_LsnReq, stream< TcpAppLsnRep > &soTAIF_LsnRep, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< DmCmd > &soMEM_RxP_RdCmd, stream< AxisApp > &siMEM_RxP_Data, stream< DmSts > &siMEM_RxP_WrSts, stream< DmCmd > &soMEM_RxP_WrCmd, stream< AxisApp > &soMEM_RxP_Data, stream< DmCmd > &soMEM_TxP_RdCmd, stream< AxisApp > &siMEM_TxP_Data, stream< DmSts > &siMEM_TxP_WrSts, stream< DmCmd > &soMEM_TxP_WrCmd, stream< AxisApp > &soMEM_TxP_Data, stream< CamSessionLookupRequest > &soCAM_SssLkpReq, stream< CamSessionLookupReply > &siCAM_SssLkpRep, stream< CamSessionUpdateRequest > &soCAM_SssUpdReq, stream< CamSessionUpdateReply > &siCAM_SssUpdRep, stream< ap_uint< 16 > > &soDBG_SssRelCnt, stream< ap_uint< 16 > > &soDBG_SssRegCnt, stream< RxBufPtr > &soDBG_RxFreeSpace, stream< ap_uint< 32 > > &soDBG_TcpIpRxByteCnt, stream< ap_uint< 8 > > &soDBG_OooDebug) |
Top of TCP Offload Engine (TOE) More... | |
const char * | getEventName (EventType evType) |
Returns the name of an enum-based event as a user friendly string. More... | |
void | printFourTuple (const char *callerName, int src, FourTuple fourTuple) |
Print a socket pair association from an internal FourTuple encoding. More... | |
void | pTxAppConnect (stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< SocketPair > &soSLc_SessLookupReq, stream< SessionLookupReply > &siSLc_SessLookupRep, stream< ReqBit > &soPRt_GetFreePortReq, stream< TcpPort > &siPRt_GetFreePortRep, stream< StateQuery > &soSTt_ConnectStateQry, stream< TcpState > &siSTt_ConnectStateRep, stream< SessState > &siRXe_ActSessState, stream< Event > &soEVe_Event, stream< SessState > &siTIm_Notif, Ip4Address piMMIO_IpAddr) |
Tx Application Connect (Tac) More... | |
void | pTxAppStatusHandler (stream< DmSts > &siMEM_TxP_WrSts, stream< Event > &siEmx_Event, stream< TAiTxSarPush > &soTSt_PushCmd, stream< Event > &soEVe_Event) |
Tx Application Status Handler (Tash) More... | |
void | pTxAppTable (stream< TStTxSarPush > &siTSt_PushCmd, stream< TxAppTableQuery > &siTas_AccessQry, stream< TxAppTableReply > &siTas_AccessRep) |
Tx Application Table (Tat) More... | |
void | pStreamMetaLoader (stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< SessionId > &soSTt_SessStateReq, stream< TcpState > &siSTt_SessStateRep, stream< TxAppTableQuery > &soTat_AccessReq, stream< TxAppTableReply > &siTat_AccessRep, stream< AppMemMeta > &soMwr_AppMeta, stream< Event > &soEmx_Event) |
Stream Metadata Loader (Sml) More... | |
void | pTxMemoryWriter (stream< TcpAppData > &siTAIF_Data, stream< AppMemMeta > &siSml_AppMeta, stream< DmCmd > &soMEM_WrCmd, stream< AxisApp > &soMEM_WrData) |
Tx Memory Writer (Mwr) More... | |
void | tx_app_interface (stream< TcpAppOpnReq > &siTAIF_OpnReq, stream< TcpAppOpnRep > &soTAIF_OpnRep, stream< TcpAppClsReq > &siTAIF_ClsReq, stream< TcpAppData > &siTAIF_Data, stream< TcpAppSndReq > &siTAIF_SndReq, stream< TcpAppSndRep > &soTAIF_SndRep, stream< DmCmd > &soMEM_TxP_WrCmd, stream< AxisApp > &soMEM_TxP_Data, stream< DmSts > &siMEM_TxP_WrSts, stream< SessionId > &soSTt_SessStateReq, stream< TcpState > &siSTt_SessStateRep, stream< StateQuery > &soSTt_ConnectStateQry, stream< TcpState > &siSTt_ConnectStateRep, stream< SocketPair > &soSLc_SessLookupReq, stream< SessionLookupReply > &siSLc_SessLookupRep, stream< ReqBit > &soPRt_GetFreePortReq, stream< TcpPort > &siPRt_GetFreePortRep, stream< TStTxSarPush > &siTSt_PushCmd, stream< TAiTxSarPush > &soTSt_PushCmd, stream< SessState > &siRXe_ActSessState, stream< Event > &soEVe_Event, stream< SessState > &siTIm_Notif, Ip4Addr piMMIO_IpAddr) |
Tx Application Interface (TAi) More... | |
void | pMetaDataLoader (stream< ExtendedEvent > &siAKd_Event, stream< SessionId > &soRSt_RxSarReq, stream< RxSarReply > &siRSt_RxSarRep, stream< TXeTxSarQuery > &soTSt_TxSarQry, stream< TXeTxSarReply > &siTSt_TxSarRep, stream< TXeReTransTimerCmd > &soTIm_ReTxTimerCmd, stream< SessionId > &soTIm_SetProbeTimer, stream< TcpDatLen > &soIhc_TcpDatLen, stream< TXeMeta > &soPhc_TxeMeta, stream< DmCmd > &soMrd_BufferRdCmd, stream< SessionId > &soSLc_ReverseLkpReq, stream< StsBool > &soSps_IsLookup, stream< LE_SocketPair > &soSps_RstSockPair, stream< SigBit > &soEVe_RxEventSig) |
Meta Data Loader (Mdl) More... | |
void | pSocketPairSplitter (stream< fourTuple > &siSLc_ReverseLkpRsp, stream< LE_SocketPair > &siMdl_RstSockPair, stream< StsBool > &siMdl_IsLookup, stream< IpAddrPair > &soIhc_IpAddrPair, stream< SocketPair > &soPhc_SocketPair) |
void | pIpHeaderConstructor (stream< TcpDatLen > &siMdl_TcpDatLen, stream< IpAddrPair > &siSps_IpAddrPair, stream< AxisIp4 > &soIPs_IpHeader) |
IPv4 Header Constructor (Ihc) More... | |
void | pPseudoHeaderConstructor (stream< TXeMeta > &siMdl_TxeMeta, stream< SocketPair > &siSps_SockPair, stream< AxisPsd4 > &soTss_PseudoHdr) |
Pseudo Header Constructor (Phc) More... | |
void | pTcpSegStitcher (stream< AxisPsd4 > &siPhc_PseudoHdr, stream< AxisApp > &siMEM_TxP_Data, stream< AxisPsd4 > &soSca_PseudoPkt, stream< FlagBool > &siMrd_SplitSegFlag) |
void | pSubChecksumAccumulators (stream< AxisPsd4 > &siTss_PseudoPkt, stream< AxisPsd4 > &soIps_PseudoPkt, stream< SubCSums > &soTca_4SubCsums) |
Sub-Checksum Accumulator (Sca) More... | |
void | pTcpChecksumAccumulator (stream< SubCSums > &siSca_FourSubCsums, stream< TcpChecksum > &soIps_TcpCsum) |
TCP Checksum Accumulator (Tca) More... | |
void | pIpPktStitcher (stream< AxisIp4 > &siIhc_IpHeader, stream< AxisPsd4 > &siSca_PseudoPkt, stream< TcpChecksum > &siTca_TcpCsum, stream< AxisIp4 > &soIPTX_Data) |
IPv4 Packet Stitcher (Ips) More... | |
void | pTxMemoryReader (stream< DmCmd > &siMdl_BufferRdCmd, stream< DmCmd > &soMEM_TxpRdCmd, stream< FlagBool > &soTss_SplitMemAcc) |
Tx Memory Reader (Mrd) More... | |
void | tx_engine (stream< ExtendedEvent > &siAKd_Event, stream< SigBit > &soEVe_RxEventSig, stream< SessionId > &soRSt_RxSarReq, stream< RxSarReply > &siRSt_RxSarRep, stream< TXeTxSarQuery > &soTSt_TxSarQry, stream< TXeTxSarReply > &siTSt_TxSarRep, stream< DmCmd > &soMEM_Txp_RdCmd, stream< AxisApp > &siMEM_TxP_Data, stream< TXeReTransTimerCmd > &soTIm_ReTxTimerCmd, stream< SessionId > &soTIm_SetProbeTimer, stream< SessionId > &soSLc_ReverseLkpReq, stream< fourTuple > &siSLc_ReverseLkpRep, stream< AxisIp4 > &soIPTX_Data) |
Transmit Engine (TXe) More... | |
void | tx_sar_table (stream< RXeTxSarQuery > &siRXe_TxSarQry, stream< RXeTxSarReply > &soRXe_TxSarRep, stream< TXeTxSarQuery > &siTXe_TxSarQry, stream< TXeTxSarReply > &soTXe_TxSarRep, stream< TAiTxSarPush > &siTAi_PushCmd, stream< TStTxSarPush > &soTAi_PushCmd) |
Tx Sar Table (TSt). Stores the data structures for managing the TCP Tx buffer and Tx sliding window. More... | |
void | DummyMemory::setReadCmd (DmCmd cmd) |
void | DummyMemory::setWriteCmd (DmCmd cmd) |
void | DummyMemory::readChunk (AxisApp &chunk) |
void | DummyMemory::writeChunk (AxisApp &chunk) |
TCP Offload Engine (TOE) of the Network Transport Stack (NTS).
#define ACT_FREE_PORT false |
Definition at line 66 of file port_table.hpp.
#define ACT_USED_PORT true |
Definition at line 67 of file port_table.hpp.
#define ACTIVE_PORT false |
Definition at line 69 of file port_table.hpp.
#define cSHL_TOE_CLS_REQ_WIDTH cSHL_TOE_SESS_ID_WIDTH |
#define cSHL_TOE_LSN_REQ_WIDTH cSHL_TOE_SESS_ID_WIDTH |
#define cSHL_TOE_OPN_REQ_WIDTH (cIP4_ADDR_WIDTH + cTCP_PORT_WIDTH) |
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 75 of file ack_delay.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 75 of file event_engine.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 78 of file port_table.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 79 of file rx_app_interface.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 83 of file rx_engine.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 74 of file rx_sar_table.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 77 of file session_lookup_controller.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 74 of file state_table.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 76 of file timers.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 80 of file tx_app_interface.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 83 of file tx_engine.cpp.
#define DEBUG_LEVEL (TRACE_OFF) |
Definition at line 73 of file tx_sar_table.cpp.
#define DEPTH_ssEmxToTash_Event 2 |
DEFINITIONS OF THE LOCAL STREAM DEPTHS Postponed for the time being:
Definition at line 79 of file tx_app_interface.hpp.
#define DEPTH_ssSlgToMwr_Data 256 |
Definition at line 85 of file tx_app_interface.hpp.
#define DEPTH_ssSlgToSml_SegLen 32 |
Definition at line 86 of file tx_app_interface.hpp.
#define DEPTH_ssSmlToEmx_Event 2 |
Definition at line 84 of file tx_app_interface.hpp.
#define DEPTH_ssSmlToMwr_SegMeta 128 |
Definition at line 83 of file tx_app_interface.hpp.
#define DEPTH_ssSmlToTat_AccessQry 2 |
Definition at line 82 of file tx_app_interface.hpp.
#define DEPTH_ssTacToEmx_Event 2 |
Definition at line 80 of file tx_app_interface.hpp.
#define DEPTH_ssTatToSml_AccessRep 2 |
Definition at line 81 of file tx_app_interface.hpp.
#define DO_PRAGMA | ( | x | ) | PRAGMA_SUB(x) |
Definition at line 72 of file tx_app_interface.hpp.
#define FIXME 1 |
Definition at line 69 of file tx_engine.cpp.
#define LISTEN_PORT true |
Definition at line 70 of file port_table.hpp.
#define PortRange bool |
Definition at line 72 of file port_table.hpp.
#define PRAGMA_SUB | ( | x | ) | _Pragma (#x) |
HELPERS FOR USING DEFINES IN PRAGMAS
Definition at line 71 of file tx_app_interface.hpp.
#define RXMEMBUF 65536 |
#define THIS_NAME "TOE/AKd" |
Definition at line 69 of file ack_delay.cpp.
#define THIS_NAME "TOE/EVe" |
Definition at line 69 of file event_engine.cpp.
#define THIS_NAME "TOE/PRt" |
Definition at line 68 of file port_table.cpp.
#define THIS_NAME "TOE/RAi" |
Definition at line 69 of file rx_app_interface.cpp.
#define THIS_NAME "TOE/RXe" |
Definition at line 68 of file rx_engine.cpp.
#define THIS_NAME "TOE/RSt" |
Definition at line 68 of file rx_sar_table.cpp.
#define THIS_NAME "TOE/SLc" |
Definition at line 68 of file session_lookup_controller.cpp.
#define THIS_NAME "TOE/STt" |
Definition at line 68 of file state_table.cpp.
#define THIS_NAME "TOE/TIm" |
Definition at line 68 of file timers.cpp.
#define THIS_NAME "ToeUtils" |
DEBUG PRINT HELPERS
Definition at line 35 of file toe_utils.cpp.
#define THIS_NAME "TOE/TAi" |
Definition at line 68 of file tx_app_interface.cpp.
#define THIS_NAME "TOE/TXe" |
Definition at line 67 of file tx_engine.cpp.
#define THIS_NAME "TOE/TSt" |
Definition at line 67 of file tx_sar_table.cpp.
#define TRACE_AKD 1 << 1 |
Definition at line 72 of file ack_delay.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 73 of file ack_delay.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 73 of file event_engine.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 76 of file port_table.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 77 of file rx_app_interface.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 81 of file rx_engine.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 72 of file rx_sar_table.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 72 of file state_table.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 74 of file timers.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 78 of file tx_app_interface.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 81 of file tx_engine.cpp.
#define TRACE_ALL 0xFFFF |
Definition at line 71 of file tx_sar_table.cpp.
#define TRACE_ASS 1 << 2 |
Definition at line 73 of file rx_app_interface.cpp.
#define TRACE_CLT 1 << 1 |
Definition at line 71 of file timers.cpp.
#define TRACE_CSA 1 << 3 |
Definition at line 73 of file rx_engine.cpp.
#define TRACE_EVE 1 << 1 |
Definition at line 72 of file event_engine.cpp.
#define TRACE_EVM 1 << 7 |
Definition at line 77 of file rx_engine.cpp.
#define TRACE_FPT 1 << 4 |
Definition at line 74 of file port_table.cpp.
#define TRACE_FSM 1 << 8 |
Definition at line 78 of file rx_engine.cpp.
#define TRACE_IHC 1 << 2 |
Definition at line 73 of file tx_engine.cpp.
#define TRACE_IPH 1 << 2 |
Definition at line 72 of file rx_engine.cpp.
#define TRACE_IPS 1 << 9 |
Definition at line 80 of file tx_engine.cpp.
#define TRACE_IRR 1 << 1 |
Definition at line 71 of file port_table.cpp.
#define TRACE_LAI 1 << 1 |
Definition at line 72 of file rx_app_interface.cpp.
#define TRACE_LPT 1 << 3 |
Definition at line 73 of file port_table.cpp.
#define TRACE_LRH 1 << 1 |
Definition at line 71 of file session_lookup_controller.cpp.
#define TRACE_MDH 1 << 4 |
Definition at line 74 of file rx_engine.cpp.
#define TRACE_MDL 1 << 1 |
Definition at line 72 of file tx_engine.cpp.
#define TRACE_MRD 1 << 5 |
Definition at line 76 of file rx_app_interface.cpp.
#define TRACE_MRD 1 << 5 |
Definition at line 76 of file tx_engine.cpp.
#define TRACE_MWR 1 << 9 |
Definition at line 79 of file rx_engine.cpp.
#define TRACE_MWR 1 << 3 |
Definition at line 73 of file tx_app_interface.cpp.
#define TRACE_NMX 1 << 3 |
Definition at line 74 of file rx_app_interface.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 71 of file ack_delay.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 71 of file event_engine.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file port_table.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 71 of file rx_app_interface.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file rx_engine.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file rx_sar_table.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file session_lookup_controller.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file state_table.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file timers.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 70 of file tx_app_interface.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 71 of file tx_engine.cpp.
#define TRACE_OFF 0x0000 |
Definition at line 69 of file tx_sar_table.cpp.
#define TRACE_ORM 1 << 2 |
Definition at line 72 of file port_table.cpp.
#define TRACE_PBT 1 << 2 |
Definition at line 72 of file timers.cpp.
#define TRACE_PHC 1 << 4 |
Definition at line 75 of file tx_engine.cpp.
#define TRACE_RAN 1 << 10 |
Definition at line 80 of file rx_engine.cpp.
#define TRACE_RAS 1 << 4 |
Definition at line 75 of file rx_app_interface.cpp.
#define TRACE_RDY 1 << 5 |
Definition at line 75 of file port_table.cpp.
#define TRACE_RLT 1 << 2 |
Definition at line 72 of file session_lookup_controller.cpp.
#define TRACE_RST 1 << 1 |
Definition at line 71 of file rx_sar_table.cpp.
#define TRACE_RTT 1 << 3 |
Definition at line 73 of file timers.cpp.
#define TRACE_SCA 1 << 7 |
Definition at line 78 of file tx_engine.cpp.
#define TRACE_SIM 1 << 3 |
Definition at line 73 of file session_lookup_controller.cpp.
#define TRACE_SLG 1 << 2 |
Definition at line 72 of file tx_app_interface.cpp.
#define TRACE_SML 1 << 1 |
Definition at line 71 of file tx_app_interface.cpp.
#define TRACE_SPS 1 << 3 |
Definition at line 74 of file tx_engine.cpp.
#define TRACE_STT 1 << 1 |
Definition at line 71 of file state_table.cpp.
#define TRACE_TAC 1 << 4 |
Definition at line 74 of file tx_app_interface.cpp.
#define TRACE_TAS 1 << 5 |
Definition at line 75 of file tx_app_interface.cpp.
#define TRACE_TASH 1 << 7 |
Definition at line 77 of file tx_app_interface.cpp.
#define TRACE_TAT 1 << 6 |
Definition at line 76 of file tx_app_interface.cpp.
#define TRACE_TCA 1 << 8 |
Definition at line 79 of file tx_engine.cpp.
#define TRACE_TID 1 << 5 |
Definition at line 75 of file rx_engine.cpp.
#define TRACE_TLE 1 << 1 |
Definition at line 71 of file rx_engine.cpp.
#define TRACE_TSD 1 << 6 |
Definition at line 76 of file rx_engine.cpp.
#define TRACE_TSS 1 << 6 |
Definition at line 77 of file tx_engine.cpp.
#define TRACE_TST 1 << 1 |
Definition at line 70 of file tx_sar_table.cpp.
#define TRACE_URH 1 << 4 |
Definition at line 74 of file session_lookup_controller.cpp.
#define TRACE_URS 1 << 5 |
Definition at line 75 of file session_lookup_controller.cpp.
#define USE_DEPRECATED_DIRECTIVES |
typedef bool HitState |
typedef ap_uint<64> LE_tData |
typedef TcpWindow LocalWinSize |
Definition at line 65 of file port_table.hpp.
typedef TcpWindow RemotWinSize |
typedef TcpAppOpnRep SessState |
typedef FourTuple SLcFourTuple |
GLOBAL DEFINITIONS USED BY SLc INTERNAL TYPES and CLASSES USED BY SLc
Definition at line 71 of file session_lookup_controller.hpp.
typedef ap_uint<15> TcpDynPort |
typedef ap_uint<15> TcpStaPort |
anonymous enum |
anonymous enum |
enum EventType |
enum notificationType |
enum StateEntry |
void ack_delay | ( | stream< ExtendedEvent > & | siEVe_Event, |
stream< SigBit > & | soEVe_RxEventSig, | ||
stream< SigBit > & | soEVe_TxEventSig, | ||
stream< ExtendedEvent > & | soTXe_Event | ||
) |
ACK Delayer (AKd)
ENTITY - Acknowledgment Delayer (AKd)
[in] | siEVe_Event | Event from Event Engine (EVe). |
[out] | soEVe_RxEventSig | Signals the reception of an event. |
[out] | soEVe_TxEventSig | Signals the transmission of an event. |
[out] | soTXe_Event | Event to Tx Engine (TXe). |
This process manages the transmission delay of the ACKs. Upon reception of an ACK, the counter associated to the corresponding session is initialized to (64us/MAX_SESSIONS). Next, this counter is decremented every (MAX_SESSIONS) until it reaches zero. At that time, a request to generate an ACK for that session is forwarded to the TxEngine (Txe). If the pace of incoming segments increases, the rate of returned ACKs is also increased.
switch (ACK_TABLE[ev.sessionID].count) { case 0: // There is no delayed ACK pending --> Schedule a new one ACK_TABLE[ev.sessionID] = AckEntry(ACKD_64us, 1); break; case 1: // Received a second ACK --> Decrease the delay if (ACK_TABLE[ev.sessionID].delay > ACKD_32us) { ACK_TABLE[ev.sessionID].delay = ACKD_32us; } ACK_TABLE[ev.sessionID].count++; break; case 2: // Received a third ACK --> Decrease the delay if (ACK_TABLE[ev.sessionID].delay > ACKD_16us) { ACK_TABLE[ev.sessionID].delay = ACKD_16us; } ACK_TABLE[ev.sessionID].count++; break; case 3: // Received a fourth ACK --> Decrease the delay if (ACK_TABLE[ev.sessionID].delay > ACKD_8us) { ACK_TABLE[ev.sessionID].delay = ACKD_8us; } ACK_TABLE[ev.sessionID].count++; break; case 4: // Received a fifth ACK --> Decrease the delay if (ACK_TABLE[ev.sessionID].delay > ACKD_4us) { ACK_TABLE[ev.sessionID].delay = ACKD_4us; } ACK_TABLE[ev.sessionID].count++; break; case 5: // Received a sixth ACK --> Decrease the delay if (ACK_TABLE[ev.sessionID].delay > ACKD_2us) { ACK_TABLE[ev.sessionID].delay = ACKD_2us; } ACK_TABLE[ev.sessionID].count++; break; case 6: // Received a seventh ACK --> Decrease the delay if (ACK_TABLE[ev.sessionID].delay > ACKD_1us) { ACK_TABLE[ev.sessionID].delay = ACKD_1us; } ACK_TABLE[ev.sessionID].count++; break; default: // Received a eight+ ACK --> Set delay to ONE ACK_TABLE[ev.sessionID].delay = 1; ACK_TABLE[ev.sessionID].count = 8; break; } // End of: switch
Definition at line 95 of file ack_delay.cpp.
void ack_delay_OBSO | ( | stream< ExtendedEvent > & | siEVe_Event, |
stream< SigBit > & | soEVe_RxEventSig, | ||
stream< SigBit > & | soEVe_TxEventSig, | ||
stream< ExtendedEvent > & | soTXe_Event | ||
) |
Definition at line 280 of file ack_delay.cpp.
void event_engine | ( | stream< Event > & | siTAi_Event, |
stream< ExtendedEvent > & | siRXe_Event, | ||
stream< Event > & | siTIm_Event, | ||
stream< ExtendedEvent > & | soAKd_Event, | ||
stream< SigBit > & | siAKd_RxEventSig, | ||
stream< SigBit > & | siAKd_TxEventSig, | ||
stream< SigBit > & | siTXe_RxEventSig | ||
) |
The Event Engine (EVe) arbitrates the incoming events and forwards them to the Tx Engine (TXe) via the ACK Delayer (AKd).
ENTITY - Event Engine (EVe)
[in] | siTAi_Event | Event from TxApplicationInterface (TAi). |
[in] | siRXe_Event | Event from RxEngine (RXe). |
[in] | siTIm_Event | Event from Timers (TIm). |
[out] | soAKd_Event | Event to AckDelayer (AKd). |
[in] | siAKd_RxEventSig | The AckDelayer just received an event. |
[in] | siAKd_TxEventSig | The AckDelayer just forwarded an event. |
[in] | siTXe_RxEventSig | The TxEngine (TXe) just received an event. |
Definition at line 90 of file event_engine.cpp.
const char * getEventName | ( | EventType | evType | ) |
Returns the name of an enum-based event as a user friendly string.
[in] | evType | An enumerated type of event. |
PRINT HELPERS - PROTOTYPE DEFINITIONS
Definition at line 43 of file toe_utils.cpp.
void pAnd2 | ( | T & | pi1, |
T & | pi2, | ||
T & | po | ||
) |
A two inputs 'AND' gate.
Definition at line 84 of file port_table.cpp.
void pAppSegmentStitcher | ( | stream< AxisApp > & | siMEM_RxP_Data, |
stream< TcpAppData > & | soTAIF_Data, | ||
stream< FlagBool > & | siMrd_SplitSegFlag, | ||
stream< ap_uint< 8 > > & | soMMIO_DataDropCnt | ||
) |
Application Segment Stitcher (Ass)
[in] | siMEM_RxP_Data | Rx data segment from [MEM]. |
[out] | soTAIF_Data | Rx data stream to TcpAppInterface (TAIF). |
[in] | siMrd_SplitSeg | Split segment from Rx MemoryReader (MRd). |
[out] | soMMIO_DataDropCnt | The value of the data drop counter. |
This process is the data read front-end of the memory sub-system (MEM). It reads in the data from the TCP Rx buffer memory and forwards them to the application [APP] via the TcpAppInterface (TAIF). If a received data segment was splitted and stored as two Rx memory buffers as indicated by the signal flag 'siMrd_SplitSeg', this process will stitch them back into a single stream of bytes before delivering them to the [APP].
Definition at line 371 of file rx_app_interface.cpp.
void pCheckSumAccumulator | ( | stream< AxisPsd4 > & | siIph_PseudoPkt, |
stream< AxisApp > & | soTid_Data, | ||
stream< ValBit > & | soTid_DataVal, | ||
stream< RXeMeta > & | soMdh_Meta, | ||
stream< SocketPair > & | soMdh_SockPair, | ||
stream< TcpPort > & | soPRt_GetState | ||
) |
TCP checksum accumulator (Csa)
[in] | siIph_PseudoPkt | A pseudo TCP packet from InsertPseudoHeader (Iph). |
[out] | soTid_Data | TCP data stream to TcpInvalidDropper (Tid). |
[out] | soTid_DataVal | TCP data valid to [Tid]. |
[out] | soMdh_Meta | TCP metadata to MetaDataHandler (Mdh). |
[out] | soMdh_SockPair | TCP socket pair to [Mdh]. |
[out] | soPRt_GetState | Req state of the TCP DestPort to PortTable (PRt). |
This process extracts the data section from the incoming pseudo IP packet and forwards it to the TcpInvalidDropper (Tid) together with a valid bit indicating the result of the checksum validation. It also extracts the socket pair information and some metadata information from the TCP segment and forwards them to the MetaDataHandler (Mdh). Next, the TCP destination port number is extracted and forwarded to the PortTable (PRt) process to check if the port is open.
The format of the incoming pseudo TCP segment is as follows (
6 5 4 3 2 1 03 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DA (LL) | DA (L) | DA (H) | DA (HH) | SA (LL) | SA (L) | SA (H) | SA (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DP (L) | DP (H) | SP (L) | SP (H) | Segment Len | 0x06 | 0x00 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ack (LL) | Ack (L) | Ack (H) | Ack (HH) | Seq (LL) | Seq (L) | Seq (H) | Seq (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | | |U|A|P|R|S|F| Data | | | UrgPtr(L) | UrgPtr(H) | CSum (L) | CSum (H) | Win (L) | Win (H) |Res|R|C|S|S|Y|I| Offset| Res | | | | | | | | |G|K|H|T|N|N| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data 7 | Data 6 | Data 5 | Data 4 | Data 3 | Data 2 | Data 1 | Data 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ *
Definition at line 444 of file rx_engine.cpp.
void pCloseTimer | ( | stream< SessionId > & | siRXe_CloseTimer, |
stream< SessionId > & | soSmx_SessCloseCmd | ||
) |
Close Timer (Clt) process.
[in] | siRXe_CloseTimer | The session-id that is closing from [RXe]. |
[out] | soSmx_SessCloseCmd | Close command to StateTableMux (Smx). |
This process reads in the session-id that is currently closing. This sessId is kept in the 'TIME-WAIT' state for an additional 60s before it gets closed.
Definition at line 426 of file timers.cpp.
void pEventMultiplexer | ( | stream< ExtendedEvent > & | siMdh_Event, |
stream< Event > & | siFsm_Event, | ||
stream< ExtendedEvent > & | soEVe_Event | ||
) |
Event Multiplexer (Evm)
[in] | siMdh_Event | Event from MetaDataHandler (Mdh). |
[in] | siFsm_Event | Event from FiniteStateMachine (Fsm). |
[out] | soEVe_Event | Event to EVentEngine (EVe). |
This process takes two events as inputs and muxes them on a single output. Note that the first input has priority over the second one.
Definition at line 1943 of file rx_engine.cpp.
void pFiniteStateMachine | ( | stream< RXeFsmMeta > & | siMdh_FsmMeta, |
stream< StateQuery > & | soSTt_StateQry, | ||
stream< TcpState > & | siSTt_StateRep, | ||
stream< RXeRxSarQuery > & | soRSt_RxSarQry, | ||
stream< RxSarReply > & | siRSt_RxSarRep, | ||
stream< RXeTxSarQuery > & | soTSt_TxSarQry, | ||
stream< RXeTxSarReply > & | siTSt_TxSarRep, | ||
stream< RXeReTransTimerCmd > & | soTIm_ReTxTimerCmd, | ||
stream< SessionId > & | soTIm_ClearProbeTimer, | ||
stream< SessionId > & | soTIm_CloseTimer, | ||
stream< SessState > & | soTAi_SessOpnSts, | ||
stream< Event > & | soEVe_Event, | ||
stream< CmdBit > & | soTsd_DropCmd, | ||
stream< DmCmd > & | soMwr_WrCmd, | ||
stream< TcpAppNotif > & | soRan_RxNotif, | ||
stream< ap_uint< 8 > > & | soMMIO_OooDropCnt, | ||
stream< RxBufPtr > & | soDBG_RxFreeSpace, | ||
stream< ap_uint< 32 > > & | soDBG_TcpIpRxByteCnt, | ||
stream< ap_uint< 8 > > & | soDBG_OooDebug | ||
) |
Finite State machine (Fsm)
[in] | siMdh_FsmMeta | FSM metadata from MetaDataHandler (Mdh). |
[out] | soSTt_StateQry | State query to StateTable (STt). |
[in] | siSTt_StateRep | State reply from [STt]. |
[out] | soRSt_RxSarQry | Query to RxSarTable (RSt). |
[in] | siRSt_RxSarRep | Reply from [RSt]. |
[out] | soTSt_TxSarQry | Query to TxSarTable (TSt). |
[in] | siTSt_TxSarRep | Reply from [TSt]. |
[out] | soTIm_ReTxTimerCmd | Command for a retransmit timer to Timers (TIm). |
[out] | soTIm_ClearProbeTimer | Clear the probing timer to [TIm]. |
[out] | soTIm_CloseTimer | Close session timer to [TIm]. |
[out] | soTAi_SessOpnSts | Open status of the session to TxAppInterface (TAi). |
[out] | soEVe_Event | Event to EventEngine (EVe). |
[out] | soTsd_DropCmd | Drop command to TcpSegmentDropper (Tsd). |
[out] | soMwr_WrCmd | Memory write command to MemoryWriter (Mwr). |
[out] | soRan_RxNotif | Rx data notification to RxAppNotifier (Ran). |
[out] | soMMIO_OooDropCnt | The value of the out-of-order drop counter. |
This process implements the typical TCP state and metadata management. It contains all the logic that updates the metadata and keeps track of the events related to the reception of segments and their handshaking. This is the key central part of the Rx engine.
Definition at line 1358 of file rx_engine.cpp.
void pFreePortTable | ( | StsBool & | poRdy_Ready, |
stream< TcpPort > & | siSLc_CloseActPortCmd, | ||
stream< TcpDynPort > & | siIrr_GetPortStateCmd, | ||
stream< RspBit > & | soOrm_GetPortStateRsp, | ||
stream< ReqBit > & | siTAi_GetFreePortReq, | ||
stream< TcpPort > & | soTAi_GetFreePortRep | ||
) |
Free Port Table (Fpt)
[out] | poRdy_Ready | Ready signal to ReadyLogic (Rdy). |
[in] | siSLc_CloseActPortCmd | Command to release a port from SessionLookupController (SLc). |
[in] | siIrr_GetPortStateCmd | Command to get port state from InputRequestRouter (Irr). |
[out] | soOrm_GetPortStateRsp | Response to get port state to OutputReplyMux (Orm). |
[in] | siTAi_GetFreePortReq | Get free port request from TxAppInterface (TAi). |
[out] | soTAi_GetFreePortRep | Get free port reply to [TAi]. |
This process keeps track of the opened source ports used in by active connections. It consists of a table containing a free list of ephemeral ports (also referred as dynamic ports) that the TOE uses as local source ports when it opens new active connections. A dynamic source port is implicitly assigned in the range (32,768 to 65,535) and there is no way (or reason) to explicitly specify such a port number. This table is accessed by one local [Irr] and 2 remote [SLc][TAi] processes.
@Warning The initial design point assumed a maximum of 10K sessions, which is much less than the possible 32K active ports.
Definition at line 232 of file port_table.cpp.
void pInputRequestRouter | ( | stream< TcpPort > & | siRXe_GetPortStateCmd, |
stream< TcpStaPort > & | soLpt_GetLsnPortStateCmd, | ||
stream< TcpDynPort > & | soFpt_GetActPortStateCmd, | ||
stream< bool > & | soOrm_QueryRange | ||
) |
Input Request Router (Irr)
[in] | siRXe_GetPortStateCmd | Get state of a port from RxEngine (RXe). |
[out] | soLpt_GetLsnPortStateCmd | Get state of a listen port to ListenPortTable (LPt). |
[out] | soFpt_GetActPortStateCmd | Get state of an active port to FreePortTable (Fpt). |
[out] | soOrm_QueryRange | Range of the forwarded query to OutputReplyMux (Orm). |
This process checks the range of the port to be looked-up and forwards that request to the corresponding lookup table ([Lpt] or [Fpt]). The [PRt] supports two port ranges; one for static ports (0 to 32,767) which are used for listening ports, and one for dynamically assigned or ephemeral ports (32,768 to 65,535) which are used for active connections.
Definition at line 343 of file port_table.cpp.
void pInsertPseudoHeader | ( | stream< AxisRaw > & | siTle_Data, |
stream< TcpSegLen > & | siTle_TcpSegLen, | ||
stream< AxisPsd4 > & | soCsa_PseudoPkt | ||
) |
Insert pseudo header (Iph)
[in] | siTle_Data | A custom-made pseudo packet from TcpLengthExtractor (Tle). |
[in] | siTle_TcpSegLen | The length of the incoming TCP segment from [Tle]. |
[out] | soCsa_PseudoPkt | Pseudo TCP/IP packet to CheckSumAccumulator (Csa). |
Constructs a TCP pseudo header and prepends it to the TCP payload. The result is a TCP pseudo packet (
The format of the incoming custom-made pseudo packet is as follows (see [TLe]):
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DA (LL) | DA (L) | DA (H) | DA (HH) | SA (LL) | SA (L) | SA (H) | SA (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Seq (LL) | Seq (L) | Seq (H) | Seq (HH) | DP (L) | DP (H) | SP (L) | SP (H) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | |U|A|P|R|S|F| Data | | | | | | | Win (L) | Win (H) |Res|R|C|S|S|Y|I| Offset| Res | Ack (LL) | Ack (L) | Ack (H) | Ack (HH) | | | | |G|K|H|T|N|N| | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | | | | | Data 3 | Data 2 | Data 1 | Data 0 | UrgPtr(L) | UrgPtr(H) | CSum (L) | CSum (H) | | | | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NU | Data 7 | Data 6 | Data 5 | Data 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The format of the outgoing pseudo TCP segment is as follows (see also AxisPsd4.hpp):
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DA (LL) | DA (L) | DA (H) | DA (HH) | SA (LL) | SA (L) | SA (H) | SA (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DP (L) | DP (H) | SP (L) | SP (H) | Segment Len | 0x06 | 0x00 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ack (LL) | Ack (L) | Ack (H) | Ack (HH) | Seq (LL) | Seq (L) | Seq (H) | Seq (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | |C|E|U|A|P|R|S|F| Data | |N| | UrgPtr(L) | UrgPtr(H) | CSum (L) | CSum (H) | Win (L) | Win (H) |W|C|R|C|S|S|Y|I| Offset| Res |S| | | | | | | |R|E|G|K|H|T|N|N| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data 7 | Data 6 | Data 5 | Data 4 | Data 3 | Data 2 | Data 1 | Data 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Definition at line 320 of file rx_engine.cpp.
void pIpHeaderConstructor | ( | stream< TcpDatLen > & | siMdl_TcpDatLen, |
stream< IpAddrPair > & | siSps_IpAddrPair, | ||
stream< AxisIp4 > & | soIPs_IpHeader | ||
) |
IPv4 Header Constructor (Ihc)
[in] | siMdl_TcpDatLen | TCP data length from Meta Data Loader (Mdl). |
[in] | siSps_Ip4AddrPair | The IP_SA and IP_DA from Socket Pair Splitter (Sps). |
[out] | soIps_IpHeader | IP4 header stream to Ip Packet Stitcher (Ips). |
Constructs an IPv4 header and forwards it to the IP Packet Stitcher (Ips).
@Warning The IP header is formatted for transmission to the Ethernet MAC. Remember that this 64-bits interface is logically divided into lane #0 (7:0) to lane #7 (63:56). The format of the outgoing IPv4 header is then:
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Frag Ofst (L) |Flags| FO(H) | Ident (L) | Ident (H) | Total Len (L) | Total Len (H) |Type of Service|Version| IHL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SA (LL) | SA (L) | SA (H) | SA (HH) | Hd Chksum (L) | Hd Chksum (H) | Protocol | Time to Live | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Definition at line 710 of file tx_engine.cpp.
void pIpPktStitcher | ( | stream< AxisIp4 > & | siIhc_IpHeader, |
stream< AxisPsd4 > & | siSca_PseudoPkt, | ||
stream< TcpChecksum > & | siTca_TcpCsum, | ||
stream< AxisIp4 > & | soIPTX_Data | ||
) |
IPv4 Packet Stitcher (Ips)
[in] | siIhc_IpHeader | IP4 header stream from IP Header Constructor (Ihc). |
[in] | siSca_PseudoPkt | TCP pseudo packet stream from Sub Checksum Accumulator (Sca). |
[in] | siTca_TcpCsum | TCP checksum from TCP Checksum Accumulator (Tca). |
[out] | soIPTX_Data | Packet stream to IPv4 Tx Handler (IPTX). |
Assembles an IPv4 packet from the incoming IP header stream and the TCP pseudo data packet stream from Sub Checksum Accumulator (Sca). This process also inserts the IPv4 header checksum and the TCP checksum. This is the actual IPv4 packet being streamed out by the TCP Offload Engine.
Definition at line 1316 of file tx_engine.cpp.
void pListeningPortTable | ( | StsBool & | poRdy_Ready, |
stream< TcpPort > & | siRAi_OpenLsnPortReq, | ||
stream< RepBit > & | soRAi_OpenLsnPortRep, | ||
stream< TcpStaPort > & | siIrr_GetPortStateCmd, | ||
stream< RspBit > & | soOrm_GetPortStateRsp | ||
) |
Listening Port Table (Lpt)
[out] | poRdy_Ready | Ready signal to ReadyLogic (Rdy). |
[in] | siRAi_OpenLsnPortReq | Open port request from RxAppInterface (RAi). |
[out] | soRAi_OpenLsnPortRep | Open port reply to [RAi]. |
[in] | siIrr_GetPortStateCmd | Request port state from InputRequestRouter (Irr). |
[out] | soOrm_GetPortStateRsp | Port state response to OutputReplyMultiplexer (Orm). |
This process keeps track of the port opened in listening mode. It consists of a port table which is accessed by two remote processes: 1) the RxAppInterface (TAi) when the application (APP) is requesting to open a port in listening mode. 2) the RxEngine (RXe) via the local InputRequestRouter (Irr) process, when the [RXe] is requesting the status of a destination port.
If a read and a write operation occur at the same time, the write operation (.i.e the opening of the port) takes precedence over the read operation.
Definition at line 141 of file port_table.cpp.
void pLookupReplyHandler | ( | stream< CamSessionLookupRequest > & | soCAM_SessLookupReq, |
stream< CamSessionLookupReply > & | siCAM_SessLookupRep, | ||
stream< CamSessionUpdateReply > & | siUrh_SessUpdateRsp, | ||
stream< SessionLookupQuery > & | siRXe_SessLookupReq, | ||
stream< SessionLookupReply > & | soRXe_SessLookupRep, | ||
stream< SocketPair > & | siTAi_SessLookupReq, | ||
stream< SessionLookupReply > & | soTAi_SessLookupRep, | ||
stream< RtlSessId > & | siSim_FreeList, | ||
stream< CamSessionUpdateRequest > & | soUrs_InsertSessReq, | ||
stream< SLcReverseLkp > & | soRlt_ReverseLkpRsp | ||
) |
Lookup Reply Handler (Lrh)
[out] | soCAM_SessLookupReq | Request to ternary CAM (CAM). |
[in] | siCAM_SessLookupRep | Reply from ternary CAM. |
[in] | siUrh_SessUpdateRsp | Update response from Update Reply Handler (Urh). |
[in] | siRXe_SessLookupReq | Request from Rx Engine (RXe). |
[out] | soRXe_SessLookupRep | Reply from CAM to RXe. |
[in] | siTAi_SessLookupReq | Request from Tx App. I/F (TAi). |
[out] | soTAi_SessLookupRep | Reply from CAM to TAi. |
[in] | siSim_FreeList | Free liste from Session Id Manager (Sid). |
[out] | soUrs_InsertSessReq | Request to insert session to Update Request Sender (Urs). |
[out] | soRlt_ReverseLkpRsp | Reverse lookup response to Reverse Lookup Table (Rlt). |
This is the front-end process of the ternary content addressable memory (TCAM or CAM for short). It handles the session lookup requests from [RXe] and [TAi]. The process prioritizes [TAi] over [RXe] when forwarding the lookup request to the ternary content addressable memory. If there was no hit and the request is allowed to create a new session entry in the CAM, such a new entry is created. Otherwise, the session ID corresponding to the matching lookup is sent back to lookup requester. [TODO-FIXME - This process does not yet handle the deletion of a session].
Definition at line 140 of file session_lookup_controller.cpp.
void pLsnAppInterface | ( | stream< TcpAppLsnReq > & | siTAIF_LsnReq, |
stream< TcpAppLsnRep > & | soTAIF_LsnRep, | ||
stream< TcpPort > & | soPRt_LsnReq, | ||
stream< RepBit > & | siPRt_LsnRep | ||
) |
Listen Application Interface (Lai)
[in] | siTAIF_LsnReq | TCP listen port request from TcpAppInterface (TAIF). |
[out] | soTAIF_LsnRep | TCP listen port reply to [TAIF]. |
[out] | soPRt_LsnReq | Listen port request to PortTable (PRt). |
[in] | siPRt_LsnRep | Listen port reply from [PRt]. |
This process is used to open/close a port in listen mode. This puts the TOE in passive listening mode and ready to accept an incoming connection on the socket {MY_IP, THIS_PORT}. [TODO-FIXME] The tear down of a connection is not implemented yet.
Definition at line 647 of file rx_app_interface.cpp.
void pMetaDataHandler | ( | stream< RXeMeta > & | siCsa_Meta, |
stream< SocketPair > & | siCsa_SockPair, | ||
stream< SessionLookupQuery > & | soSLc_SessLkpReq, | ||
stream< SessionLookupReply > & | siSLc_SessLkpRep, | ||
stream< StsBit > & | siPRt_PortSts, | ||
stream< ExtendedEvent > & | soEVe_Event, | ||
stream< CmdBit > & | soTsd_DropCmd, | ||
stream< RXeFsmMeta > & | soFsm_Meta, | ||
stream< ap_uint< 8 > > & | soMMIO_SessDropCnt | ||
) |
MetaData Handler (Mdh)
[in] | siCsa_Meta | TCP metadata from CheckSumAccumulator (Csa). |
[in] | siCsa_SockPair | TCP socket pair from [Csa]. |
[out] | soSLc_SessLkpReq | Session lookup request to Session Lookup Controller (SLc). |
[in] | siSLc_SessLkpRep | Session Lookup reply from [SLc]. |
[in] | siPRt_PortSts | Port state (opened/closed) from PortTable (PRt). |
[out] | soEVe_Event | Event to EventEngine (EVe). |
[out] | soTsd_DropCmd | Drop command to Tcp Segment Dropper (Tsd). |
[out] | soFsm_Meta | Metadata to RXe's Finite State Machine (Fsm). |
[out] | soMMIO_SessDrop | The value of the session drop counter. |
This process waits until it gets a response from the PortTable (PRt). It then loads the metadata and socket pair generated by the Checksum- Accumulator (Csa) process and evaluates them. Next, if the destination port is opened, it requests the SessionLookupController (SLc) to perform a session lookup and waits for its reply. If a session is opened for this socket pair, a new metadata structure is generated and is forwarded to the FiniteStateMachine (FSm) of the RxEngine (RXe). If the target destination port is not opened, the process creates an event requesting a 'RST+ACK' TCP segment to be sent back to the initiating host.
Definition at line 1197 of file rx_engine.cpp.
void pMetaDataLoader | ( | stream< ExtendedEvent > & | siAKd_Event, |
stream< SessionId > & | soRSt_RxSarReq, | ||
stream< RxSarReply > & | siRSt_RxSarRep, | ||
stream< TXeTxSarQuery > & | soTSt_TxSarQry, | ||
stream< TXeTxSarReply > & | siTSt_TxSarRep, | ||
stream< TXeReTransTimerCmd > & | soTIm_ReTxTimerCmd, | ||
stream< SessionId > & | soTIm_SetProbeTimer, | ||
stream< TcpDatLen > & | soIhc_TcpDatLen, | ||
stream< TXeMeta > & | soPhc_TxeMeta, | ||
stream< DmCmd > & | soMrd_BufferRdCmd, | ||
stream< SessionId > & | soSLc_ReverseLkpReq, | ||
stream< StsBool > & | soSps_IsLookup, | ||
stream< LE_SocketPair > & | soSps_RstSockPair, | ||
stream< SigBit > & | soEVe_RxEventSig | ||
) |
Meta Data Loader (Mdl)
[in] | siAKd_Event | Event from Ack Delayer (AKd). |
[out] | soRSt_RxSarReq | Read request to RxSarTable (RSt). |
[in] | siRSt_RxSarRep | Read reply from [RSt]. |
[out] | soTSt_TxSarQry | TxSar query to Tx SAR Table (TSt). |
[in] | siTSt_TxSarRep,TxSar | reply from [TSt]. |
[out] | soTIm_ReTxTimerCmd | Send retransmit timer command to Timers (TIm). |
[out] | soTIm_SetProbeTimer | Set a probe timer to [TIm]. |
[out] | soIhc_TcpDatLen | TCP data length to Ip Header Constructor (Ihc). |
[out] | soPhc_TxeMeta | Tx Engine metadata to Pseudo Header Constructor (Phc). |
[out] | soMrd_BufferRdCmd | Buffer read command to Memory Reader (Mrd). |
[out] | soSLc_ReverseLkpReq | Reverse lookup request to Session Lookup Controller (SLc). |
[out] | soSps_IsLookup | Tells the Socket Pair Splitter (Sps) that a reverse lookup is to be expected. |
[out] | soTODO_IsDdrBypass | [TODO] |
[out] | soSps_RstSockPair | Tells the [Sps] about the socket pair to reset. |
[out] | soEVe_RxEventSig | Signals the reception of an event to EventEngine (EVe). |
The meta data loader reads the events from the Event Engine (EVe) and loads the necessary data from the metadata structures (Rx & Tx SAR Tables). Depending on the event type, it generates the necessary metadata for the 'pIpHeaderConstructor' and the 'pPseudoHeaderConstructor'. Additionally it requests the IP tuples from Session Lookup Controller (SLc). In some special cases the IP tuple is delivered directly from the RxEngine (RXe) and it does not have to be loaded from the SLc. The 'isLookUpFifo' indicates this special cases. Depending on the Event Type the retransmit or/and probe Timer is set.
Definition at line 117 of file tx_engine.cpp.
void pNotificationMux | ( | stream< TcpAppNotif > & | siRXe_Notif, |
stream< TcpAppNotif > & | siTIm_Notif, | ||
stream< TcpAppNotif > & | soTAIF_Notif, | ||
stream< ap_uint< 8 > > & | soMMIO_NotifDropCnt | ||
) |
Rx Notification Multiplexer (Nmx)
[in] | siRXe_Notif | Notification from RxEngine (RXe). |
[in] | siTIm_Notif | Notification from Timers (TIm). |
[out] | soTAIF_Notif | Notification to TcpAppInterface (TAIF). |
[out] | soMMIO_NotifDropCnt | The value of the notification drop counter. |
This 2-to-1 stream multiplexer behaves like an arbiter. It takes two streams as inputs and forwards one of them to the output channel. Notice that the stream connected to the first input always takes precedence over the second one.
Definition at line 103 of file rx_app_interface.cpp.
void port_table | ( | StsBool & | poTOE_Ready, |
stream< TcpPort > & | siRXe_GetPortStateReq, | ||
stream< RepBit > & | soRXe_GetPortStateRep, | ||
stream< TcpPort > & | siRAi_OpenLsnPortReq, | ||
stream< AckBit > & | soRAi_OpenLsnPortAck, | ||
stream< ReqBit > & | siTAi_GetFreePortReq, | ||
stream< TcpPort > & | soTAi_GetFreePortRep, | ||
stream< TcpPort > & | siSLc_CloseActPortCmd | ||
) |
Port Table (PRt)
ENTITY - Port Table (PRt)
[out] | poTOE_Ready | The ready logic signal of this process to [TOE]. |
[in] | siRXe_GetPortStateReq | Port state request from RxEngine (RXe). |
[out] | soRXe_GetPortStateRep | Port state reply to [RXe]. |
[in] | siRAi_OpenLsnPortReq | Open port request from RxAppInterface (RAi). |
[out] | soRAi_OpenLsnPortRep | Open port reply to [RAi]. |
[in] | siTAi_GetFreePortReq | Free port request from TxAppInterface (TAi). |
[out] | soTAi_GetFreePortRep | Free port reply o [TAi]. |
[in] | siSLc_CloseActPortCmd | Command to close an active port from SessionLookupController (SLc). |
This process keeps track of the TCP port numbers which are in use and therefore opened. It maintains two port ranges based on two tables of 32768 x 1-bit:
Definition at line 453 of file port_table.cpp.
void pOutputReplyMultiplexer | ( | stream< bool > & | siIrr_QueryRange, |
stream< RspBit > & | siLpt_GetLsnPortStateRsp, | ||
stream< RspBit > & | siFpt_GetActPortStateRsp, | ||
stream< RspBit > & | soRXe_GetPortStateRsp | ||
) |
Output Reply Multiplexer (Orm)
[in] | siIrr_QueryRange | Range of the query from InputRequestRouter (Irr). |
[in] | siLpt_GetLsnPortStateRsp | Listen port state response from ListenPortTable (LPt). |
[in] | siFpt_GetActPortStateRsp | Active port state response from FreePortTable (Fpt). |
[out] | soRXe_GetPortStateRsp | Port state response to RxEngine (RXe). |
This process orders the lookup replies before sending them back to the RxEngine (RXe).
Definition at line 387 of file port_table.cpp.
void pProbeTimer | ( | stream< SessionId > & | siRXe_ClrProbeTimer, |
stream< SessionId > & | siTXe_SetProbeTimer, | ||
stream< Event > & | soEmx_Event | ||
) |
Probe Timer (Prb) process.
[in] | siRXe_ClrProbeTimer | Clear probe timer command from RxEngine (RXe). |
[in] | siTXe_SetProbeTimer | Set probe timer from TxEngine (TXe). |
[out] | soEmx_Event | Event to EventMultiplexer (Emx). |
This process reads in 'set-probe-timer' commands from [TXe] and 'clear-probe-timer' commands from [RXe]. Upon a set request, a timer is initialized with an interval of 10s. When the timer expires, an 'RT_EVENT' is fired to the TxEngine via the [Emx] and the EventEngine. In case of a zero-window (or too small window) an 'RT_EVENT' will generate a packet without payload which is the same as a probing packet.
Definition at line 327 of file timers.cpp.
void pPseudoHeaderConstructor | ( | stream< TXeMeta > & | siMdl_TxeMeta, |
stream< SocketPair > & | siSps_SockPair, | ||
stream< AxisPsd4 > & | soTss_PseudoHdr | ||
) |
Pseudo Header Constructor (Phc)
[in] | siMdl_TxeMeta | Meta data from MetaDataLoader (Mdl). |
[in] | siSps_SockPair | Socket pair from SocketPairSplitter (Sps). |
[out] | soTss_PseudoHdr | TCP pseudo header to TcpSegmentStitcher (Tss). |
Reads the TCP header metadata and the IP tuples and generates a TCP pseudo header from it. Result is streamed out to the TcpSegmentStitcher (Tss).
@Warning The pseudo header is prepared as if it was to be transmitted over the Ethernet MAC. Therefore, remember that this 64-bits interface is logically divided into lane #0 (7:0) to lane #7 (63:56). The format of the outgoing pseudo header is then:
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DA (LL) | DA (L) | DA (H) | DA (HH) | SA (LL) | SA (L) | SA (H) | SA (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DP (L) | DP (H) | SP (L) | SP (H) | Segment Len | 0x06 | 0x00 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ack (LL) | Ack (L) | Ack (H) | Ack (HH) | Seq (LL) | Seq (L) | Seq (H) | Seq (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | |C|E|U|A|P|R|S|F| Data | |N| | UrgPtr(L) | UrgPtr(H) | CSum (L) | CSum (H) | Win (L) | Win (H) |W|C|R|C|S|S|Y|I| Offset| Res |S| | | | | | | |R|E|G|K|H|T|N|N| | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data 3 | Data 2 | Data 1 | Data 0 | Opt-Data (.i.e MSS) | Opt-Length | Opt-Kind | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Definition at line 818 of file tx_engine.cpp.
Ready Logic (Rdy)
[in] | piLpt_Ready | The ready signal from ListenPortTable (Lpt). |
[in] | piFpt_Ready | The ready signal from FreePortTable (Fpt). |
[out] | poTOE_Ready | The ready signal of PortTable (PRt) to [TOE]. |
This process generates a ready signal indicating that the logic of the PortTable (PRt) is ready.
Definition at line 106 of file port_table.cpp.
Ready (Rdy)
[in] | piPRt_Ready | The ready signal from PortTable (PRt). |
[in] | piTBD_Ready | The ready signal from TBD. |
[out] | poNTS_Ready | The ready signal of the TOE. |
[FIXME - Turn this IO into a stream] This process merges multiple ready signals into a single global ready signal for the TOE.
Definition at line 133 of file toe.cpp.
void pRetransmitTimer | ( | stream< RXeReTransTimerCmd > & | siRXe_ReTxTimerCmd, |
stream< TXeReTransTimerCmd > & | siTXe_ReTxTimerCmd, | ||
stream< Event > & | soEmx_Event, | ||
stream< SessionId > & | soSmx_SessCloseCmd, | ||
stream< SessState > & | soTAi_Notif, | ||
stream< TcpAppNotif > & | soRAi_Notif | ||
) |
ReTransmit Timer (Rtt) process.
[in] | siRXe_ReTxTimerCmd | Retransmit timer command from RxEngine (RXe). |
[in] | siTXe_ReTxTimerCmd | Retransmit timer command from TxEngine (TXe). |
[out] | soEmx_Event | Event to EventMultiplexer (Emx). |
[out] | soSmx_SessCloseCmd | Close command to StateTableMux (Smx). |
[out] | soTAi_Notif | Notification to TxApplicationInterface (TAi). |
[out] | soRAi_Notif | Notification to RxApplicationInterface (RAi). |
This process implements the retransmission timers at the session level. This is slightly different from the software method used to detect lost segments and for retransmitting them. Instead of managing a retransmission timer per segment, the current implementation only keeps track of a single timer per session. Such a session timer is managed as follows: [START] The retransmit timer of a session is re-started with an initial retransmission timeout value (RTO) whenever the timer is not active and a new segment is transmitted by [TXe]. The RTO value is set between 3 and 24 seconds, depending on how often the session already timed-out in the recent past. [STOP] The retransmit timer of a session is stopped and deactivated whenever an ACK is received by [RXe] and its received AckNum equals to the previously transmitted bytes but not yet acknowledged. [LOAD] Otherwise, the retransmit timer of a session is loaded with a RTO value of 1 second. [TIMEOUT] Upon a time-out, an event is fired to [TXe]. If a session times-out more than 4 times in a row, it is aborted. A release command is sent to the StateTable (STt) and the application is notified.
Definition at line 135 of file timers.cpp.
void pReverseLookupTable | ( | stream< SLcReverseLkp > & | siLrh_ReverseLkpRsp, |
stream< SessionId > & | siSTt_SessReleaseCmd, | ||
stream< SessionId > & | siTXe_ReverseLkpReq, | ||
stream< fourTuple > & | soTXe_ReverseLkpRep, | ||
stream< TcpPort > & | soPRt_ClosePortCmd, | ||
stream< CamSessionUpdateRequest > & | soUrs_SessDeleteReq | ||
) |
Reverse Lookup Table (Rlt)
[in] | sLrh_ReverseLkpRsp | Reverse lookup response from LookupReplyHandler (Lrh). |
[in] | siSTt_SessReleaseCmd | Session release command from StateTable (STt). |
[in[ | siTXe_ReverseLkpReq Reverse lookup request from TxEngine (TXe). | |
[out] | soTXe_ReverseLkpRep | Reverse lookup reply to TxEngine (TXe). |
[out] | soPRt_ClosePortCmd | Command to close a port for the PortTable (PRt). |
[out] | soUrs_SessDeleteReq | Request to delete a session to UpdateRequestSender (Urs). |
The REVERSE_LOOKUP_TABLE stores a four-tuple piece of information at memory address indexed by the 'SessionId' of that 4-tuple. This table is used to retrieve the 4-tuple information corresponding to a SessionId upon request from [TXe].
Definition at line 334 of file session_lookup_controller.cpp.
void printFourTuple | ( | const char * | callerName, |
int | src, | ||
FourTuple | fourTuple | ||
) |
Print a socket pair association from an internal FourTuple encoding.
[in] | callerName | The name of the caller process (e.g. "TAi"). |
[in] | source | The source of the internal 4-tuple information. |
[in] | fourTuple | The internal 4-tuple encoding of the socket pair. |
Definition at line 73 of file toe_utils.cpp.
void pRxAppNotifier | ( | stream< DmSts > & | siMEM_WrSts, |
stream< TcpAppNotif > & | siFsm_Notif, | ||
stream< TcpAppNotif > & | soRAi_RxNotif, | ||
stream< FlagBool > & | siMwr_SplitSeg, | ||
stream< StsBit > & | soMMIO_MemWrErr | ||
) |
Rx Application Notifier (Ran)
[in] | siMEM_WrSts | The memory write status from the AXI data mover [MEM]. |
[in] | siFsm_Notif | Rx data notification from FiniteStateMachine (Fsm). |
[out] | soRAi_RxNotif | Rx data notification to RxApplicationInterface (RAi). |
[in] | siMwr_SplitSeg | Split segment flag from MemoryWriter (Mwr). |
[out] | soMMIO_MemWrErr | Reports a memory write error to MMIO. |
Delays the notifications to the application until the TCP segment is actually written into the physical DRAM memory. If the segment was split in two memory accesses, the current process will wait until both segments are written into memory before issuing the notification to the application. Any error reported by the AXI data mover (MEM) is forwarded to MIMO and remains set until [TOE] is reset.
Definition at line 1075 of file rx_engine.cpp.
void pRxAppStream | ( | stream< TcpAppRdReq > & | siTAIF_DataReq, |
stream< TcpAppMeta > & | soTAIF_Meta, | ||
stream< RAiRxSarQuery > & | soRSt_RxSarQry, | ||
stream< RAiRxSarReply > & | siRSt_RxSarRep, | ||
stream< DmCmd > & | soMrd_MemRdCmd, | ||
stream< ap_uint< 8 > > & | soMMIO_MetaDropCnt | ||
) |
Rx Application Stream (RAs)
[in] | siTAIF_DataReq | Data request from TcpApplicationInterface (TAIF). |
[out] | soTAIF_Meta | Metadata to [TAIF]. |
[out] | soRSt_RxSarQry | Query to RxSarTable (RSt). |
[in] | siRSt_RxSarRep | Reply from [RSt]. |
[out] | soMrd_MemRdCmd | Rx memory read command to Rx MemoryReader (Mrd). |
[out] | soMMIO_MetaDropCnt | The value of the metadata drop counter. |
@detail This process waits for a valid data read request from the TcpAppInterface (TAIF) and generates a corresponding read command for the TCP Rx buffer memory via the Rx MemoryReader (Mrd) process. Next, a request to update the RxApp pointer of the session is forwarded to the RxSarTable (RSt) and a meta-data (.i.e the current session-id) is sent back to [TAIF] to signal that the request has been processed.
Definition at line 178 of file rx_app_interface.cpp.
void pRxMemoryReader | ( | stream< DmCmd > & | siRas_MemRdCmd, |
stream< DmCmd > & | soMEM_RxpRdCmd, | ||
stream< FlagBool > & | soAss_SplitSeg | ||
) |
Rx Memory Reader (Mrd)
[in] | siRas_MemRdCmd | Rx memory read command from RxAppStream (Ras). |
[out] | soMEM_RxpRdCmd | Rx memory read command to [MEM]. |
[out] | soAss_SplitSeg | Split segment to AppSegmentStitcher (Ass). |
This process takes the memory read command assembled by RxAppStream (Ras) an forwards it to the memory sub-system (MEM). While doing so, it checks if the TCP Rx memory buffer wraps around and accordingly generates two memory read commands out of the initial command received from [Ras]. Because the AppSegmetStitcher (Ass) process needs to be aware of this split, a signal is sent to [Ass] telling whether a data segment was broken in two Rx memory buffers or is provided as a single buffer.
Definition at line 275 of file rx_app_interface.cpp.
void pRxMemoryWriter | ( | stream< AxisApp > & | siTsd_Data, |
stream< DmCmd > & | siFsm_MemWrCmd, | ||
stream< DmCmd > & | soMEM_WrCmd, | ||
stream< AxisApp > & | soMEM_WrData, | ||
stream< FlagBool > & | soRan_SplitSeg | ||
) |
Rx Memory Writer (Mwr)
[in] | siTsd_Data | Tcp data stream from the Tcp SegmentDropper (Tid). |
[in] | siFsm_MemWrCmd | Memory write command from the FiniteStateMachine (Fsm). |
[out] | soMEM_WrCmd | Memory write command to the data mover of Memory sub-system (MEM). |
[out] | soMEM_WrData | Memory data write stream to [MEM]. |
[out] | soRan_SplitSeg | Split segment flag to RxAppNotifier (Ran). |
This is the front end memory controller process for writing the received TCP data segments into the external DRAM. Memory write commands are received from the FiniteStetMachine (Fsm) and are transferred to the data-mover of the memory sub-system (MEM). The Rx buffer memory is organized and managed as a circular buffer, and it may happen that the received segment does not fit into remain memory buffer space because the memory pointer needs to wrap around. In such a case, the incoming segment is broken down and written into physical DRAM as two memory buffers, and the follow-on RxAppNotifier (Ran) process is notified about this splitted segment
Definition at line 859 of file rx_engine.cpp.
Session Id Manager (Sim)
[in] | siUrs_FreeId | The session ID to recycle from the UpdateRequestSender (Urs). |
[out] | soLrh_FreeList | The free list of session IDs to LookupReplyHandler (Lrh). |
Implements the free list of session IDs as a FiFo stream.
Definition at line 89 of file session_lookup_controller.cpp.
void pSocketPairSplitter | ( | stream< fourTuple > & | siSLc_ReverseLkpRsp, |
stream< LE_SocketPair > & | siMdl_RstSockPair, | ||
stream< StsBool > & | siMdl_IsLookup, | ||
stream< IpAddrPair > & | soIhc_IpAddrPair, | ||
stream< SocketPair > & | soPhc_SocketPair | ||
) |
Socket Pair Splitter (Sps)
[in] | siSLc_ReverseLkpRsp | Reverse lookup response from SessionLookupController (SLc). |
[in] | siMdl_RstSockPair | The socket pair to reset from MetaDataLoader (Mdh). |
[in] | siMdl_IsLookup | Status from [Mdl] indicating that a reverse lookup is to be expected. |
[out] | soIhc_IpAddrPair | IP_SA and IP_DA to IpHeaderConstructor (Ihc). |
[out] | soPhc_SocketPair | The socket pair to PseudoHeaderConstructor (Phc). |
This process forwards the incoming socket-pair from the CAM or the RxEngine to both the IpHeaderConstructor (Ihc) and the PseudoHeaderConstructor (Phc).
Definition at line 624 of file tx_engine.cpp.
void pStreamMetaLoader | ( | stream< TcpAppSndReq > & | siTAIF_SndReq, |
stream< TcpAppSndRep > & | soTAIF_SndRep, | ||
stream< SessionId > & | soSTt_SessStateReq, | ||
stream< TcpState > & | siSTt_SessStateRep, | ||
stream< TxAppTableQuery > & | soTat_AccessReq, | ||
stream< TxAppTableReply > & | siTat_AccessRep, | ||
stream< AppMemMeta > & | soMwr_AppMeta, | ||
stream< Event > & | soEmx_Event | ||
) |
Stream Metadata Loader (Sml)
[in] | siTAIF_SndReq | APP request to send from [TAIF]. |
[out] | soTAIF_SndRep | APP send reply to [TAIF]. |
[out] | soSTt_SessStateReq | Session state request to StateTable (STt). |
[in] | siSTt_SessStateRep | Session state reply from StateTable (STt). |
[out] | soTat_AccessReq | Access request to TxAppTable (Tat). |
[in] | siTat_AccessRep | Access reply from [Tat] |
[out] | soMwr_AppMeta | APP memory metadata to MemoryWriter (Mwr). |
[out] | soEmx_Event | Event to EventMultiplexer (Emx). |
The FSM of this process decides if the incoming application data is written to the TX buffer in DDR4 memory. The process reads the request to send from the application and loads the necessary metadata from the [Tat] for transmitting this data. A request to send consists of a session-id and a data-length information. Once this request is received from [TAIF], the state of the connection is checked as well as the available memory space, and a reply is sent back to [TAIF]. 1) If the return code is 'NO_ERROR', the application is allowed to send. In that case, the segment memory pointer is loaded into the TxAppTable and the segment's metadata is forwarded to MemoryWriter (Mwr) process which will use it to write the incoming data stream into DDR4 memory. 2) If there is not enough space available in the Tx buffer of the session, the application can either retry its request later or decide to abandon the transmission. 3) It the connection is not established, the application will be noticed it should act accordingly (e.g. by first opening the connection).
[TODO: Implement TCP_NODELAY]
Definition at line 456 of file tx_app_interface.cpp.
void pStreamMux | ( | stream< T > & | si1, |
stream< T > & | si2, | ||
stream< T > & | so | ||
) |
A 2-to-1 generic Stream Multiplexer.
[in] | si1 | The input stream #1. |
[in] | si2 | The input stream #2. |
[out] | so | The output stream. |
This multiplexer behaves like an arbiter. It takes two streams as inputs and forwards one of them to the output channel. The stream connected to the first input always takes precedence over the second one.
Definition at line 90 of file timers.cpp.
void pSubChecksumAccumulators | ( | stream< AxisPsd4 > & | siTss_PseudoPkt, |
stream< AxisPsd4 > & | soIps_PseudoPkt, | ||
stream< SubCSums > & | soTca_4SubCsums | ||
) |
Sub-Checksum Accumulator (Sca)
[in] | siTss_PseudoPkt | Incoming data stream from Tc pSegment Stitcher (Tss). |
[out] | soIps_PseudoPkt | Outgoing data stream to IP Packet Stitcher (Ips). |
[out] | soTca_4SubCsums | Four sub-checksums to Tcp Checksum Accumulator (Tca). |
This process takes a TCP pseudo packet as input from the TcpSegmentStitcher (Tss) and forwards it to the IpPacketStitcher (Ips) while accumulating 4 sub-checksums on the fly. When the the end-of-packet is detected, these 4 sub-checksums are forwarded to the TcpChecksumAccumulator (Tca) for final checksum computation.
Definition at line 1206 of file tx_engine.cpp.
void pTbSimCount | ( | volatile ap_uint< 32 > & | poSimCycCount | ) |
Testbench Simulation Counter.
[out] | poSimCycCount | The incremented simulation counter. |
This process is provided for debugging only. It allows to implement the simulation a counter of the testbench within the TOE itself.
Definition at line 156 of file toe.cpp.
void pTcpChecksumAccumulator | ( | stream< SubCSums > & | siSca_FourSubCsums, |
stream< TcpChecksum > & | soIps_TcpCsum | ||
) |
TCP Checksum Accumulator (Tca)
[in] | siSca_FourSubCsums | The 4 sub-csums from the Sub-Checksum Accumulator (Sca). |
[out] | soIps_TcpCsum | The computed checksum to IP Packet Stitcher (Ips). |
Computes the final TCP checksum from the 4 accumulated sub-checksums and forwards the results to the IP Packet Stitcher (Ips).
Definition at line 1274 of file tx_engine.cpp.
void pTcpInvalidDropper | ( | stream< AxisApp > & | siCsa_Data, |
stream< ValBit > & | siCsa_DataVal, | ||
stream< AxisApp > & | soTsd_Data, | ||
stream< ap_uint< 8 > > & | soMMIO_CrcDropCnt | ||
) |
TCP Invalid checksum Dropper (Tid)
[in] | siCsa_Data | TCP data stream from CheckSumAccumulator (Csa). |
[in] | siCsa_DataVal | TCP data segment valid. |
[out] | soTsd_Data | TCP data stream to TcpSegmentDropper (Tsd). |
[out] | soMMIO_CrcDropCnt | The value of the CRC drop counter. |
This process drops the incoming TCP segment when it is flagged with an invalid checksum. Otherwise, the TCP segment is passed on.
Definition at line 695 of file rx_engine.cpp.
void pTcpLengthExtractor | ( | stream< AxisIp4 > & | siIPRX_Data, |
stream< AxisRaw > & | soIph_Data, | ||
stream< TcpSegLen > & | soIph_TcpSegLen | ||
) |
TCP Length Extraction (Tle)
[in] | siIPRX_Data | IP4 packet stream from IpRxHandler (IPRX). |
[out] | soIph_Data | A custom-made pseudo packet to InsertPseudoHeader (Iph). |
[out] | soIph_TcpSegLen | The length of the incoming TCP segment to [Iph]. |
This process receives the incoming IPv4 data stream from IpRxHandler (IPRX). It computes the TCP length field from the IP header, removes that IP header but keeps the IP source and destination addresses in front of the TCP segment in order for that output stream to be used by the next process to populate the rest of the TCP pseudo header. The length of the IPv4 data (.i.e. the TCP segment length) is computed from the IPv4 total length and the IPv4 header length.
The data received from [IPRX] are logically divided into lane #0 (7:0) to lane #7 (63:56). The format of an incoming IPv4 packet is defined in (
6 5 4 3 2 1 03 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Frag Ofst (L) |Flags| FO(H) | Ident (L) | Ident (H) | Total Len (L) | Total Len (H) |Type of Service|Version| IHL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SA (LL) | SA (L) | SA (H) | SA (HH) | Hd Chksum (L) | Hd Chksum (H) | Protocol | Time to Live | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DP (L) | DP (H) | SP (L) | SP (H) | DA (LL) | DA (L) | DA (H) | DA (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Ack (LL) | Ack (L) | Ack (H) | Ack (HH) | Seq (LL) | Seq (L) | Seq (H) | Seq (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | | |U|A|P|R|S|F| Data | | | UrgPtr(L) | UrgPtr(H) | CSum (L) | CSum (H) | Win (L) | Win (H) |Res|R|C|S|S|Y|I| Offset| Res | | | | | | | | |G|K|H|T|N|N| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data 7 | Data 6 | Data 5 | Data 4 | Data 3 | Data 2 | Data 1 | Data 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The format of the outgoing segment is custom-made as follows:
6 5 4 3 2 1 0
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DA (LL) | DA (L) | DA (H) | DA (HH) | SA (LL) | SA (L) | SA (H) | SA (HH) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Seq (LL) | Seq (L) | Seq (H) | Seq (HH) | DP (L) | DP (H) | SP (L) | SP (H) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | |U|A|P|R|S|F| Data | | | | | | | Win (L) | Win (H) |Res|R|C|S|S|Y|I| Offset| Res | Ack (LL) | Ack (L) | Ack (H) | Ack (HH) | | | | |G|K|H|T|N|N| | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | | | | | | | Data 3 | Data 2 | Data 1 | Data 0 | UrgPtr(L) | UrgPtr(H) | CSum (L) | CSum (H) | | | | | | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NU | Data 7 | Data 6 | Data 5 | Data 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Definition at line 145 of file rx_engine.cpp.
void pTcpSegmentDropper | ( | stream< AxisApp > & | siTid_Data, |
stream< CmdBit > & | siMdh_DropCmd, | ||
stream< CmdBit > & | siFsm_DropCmd, | ||
stream< AxisApp > & | soMwr_Data | ||
) |
TCP Segment Dropper (Tsd)
[in] | siTid_Data | TCP data stream from TcpInvalidDropper (Tid). |
[in] | siMdh_DropCmd | Drop command from MetaDataHandler (Mdh). |
[in] | siFsm_DropCmd | Drop command from FiniteStateMachine (Fsm). |
[out] | soMwr_Data | TCP data stream to MemoryWriter (MWr). |
This process drops the TCP segment which metadata did not match and/or which is invalid.
Definition at line 775 of file rx_engine.cpp.
void pTcpSegStitcher | ( | stream< AxisPsd4 > & | siPhc_PseudoHdr, |
stream< AxisApp > & | siMEM_TxP_Data, | ||
stream< AxisPsd4 > & | soSca_PseudoPkt, | ||
stream< FlagBool > & | siMrd_SplitSegFlag | ||
) |
TCP Segment Stitcher (Tss)
[in] | siPhc_PseudoHdr | Incoming chunk from PseudoHeaderConstructor (Phc). |
[in] | siMEM_TxP_Data | TCP data payload from DRAM Memory (MEM). |
[out] | soSca_PseudoPkt | Pseudo TCP/IP packet to SubChecksumAccumulator (Sca). |
[in] | siMrd_SplitSegSts | Indicates that the current segment has been splitted and stored in 2 memory buffers. |
Reads in the TCP pseudo header stream from PseudoHeaderConstructor (Phc) and appends the corresponding payload stream retrieved from the memory. Note that a TCP segment might have been splitted and stored as two memory segment units. This typically happens when the address of the physical memory buffer ring wraps around.
Definition at line 937 of file tx_engine.cpp.
void pTxAppConnect | ( | stream< TcpAppOpnReq > & | siTAIF_OpnReq, |
stream< TcpAppOpnRep > & | soTAIF_OpnRep, | ||
stream< TcpAppClsReq > & | siTAIF_ClsReq, | ||
stream< SocketPair > & | soSLc_SessLookupReq, | ||
stream< SessionLookupReply > & | siSLc_SessLookupRep, | ||
stream< ReqBit > & | soPRt_GetFreePortReq, | ||
stream< TcpPort > & | siPRt_GetFreePortRep, | ||
stream< StateQuery > & | soSTt_ConnectStateQry, | ||
stream< TcpState > & | siSTt_ConnectStateRep, | ||
stream< SessState > & | siRXe_ActSessState, | ||
stream< Event > & | soEVe_Event, | ||
stream< SessState > & | siTIm_Notif, | ||
Ip4Address | piMMIO_IpAddr | ||
) |
Tx Application Connect (Tac)
[in] | siTAIF_OpnReq | Open connection request from TcpApplicationInterface (TAIF). |
[out] | soTAIF_OpnRep | Open connection reply to [TAIF]. |
[] | siTAIF_ClsReq Close connection request from [TAIF]. | |
[out] | soSLc_SessLookupReq | Lookup request SessionLookupController (SLc). |
[in] | siSLc_SessLookupRep | Reply from [SLc] |
[out] | soPRt_GetFreePortReq | Free port request to PortTable (PRt). |
[out] | siPRt_GetFreePortRep | Free port reply from [PRt]. |
[in] | siRXe_ActSessState | TCP state of an active session from [RXe]. |
[out | soSTt_AcceptStateQry Session state query to StateTable (STt). [FIXME - What about ConnectStateReply?] | |
[in] | siSTt_AcceptStateRep | Session state reply from [STt]. |
[out] | soEVe_Event | Event to EventEngine (EVe). |
[in] | siTIm_Notif | Notification from Timers (TIm). |
[in] | piMMIO_IpAddr | IPv4 Address from MMIO. |
This process performs the creation and tear down of the active connections. Active connections are the ones opened by the FPGA when operating in client mode. They make use of dynamically assigned or ephemeral ports which always fall in the range 32,768 to 65,535 (by TOE's convention). The operations performed here are somehow similar to the 'connect' and 'close' system calls. The IP tuple of the new connection to open is read from 'siTAIF_OpnReq'. Next, a free port number is requested from the PortTable (PRt) and a SYN event is forwarded to the TxeEngine (TXe) in order to initiate a 3-way handshake with the remote server. The [APP] is notified upon a connection establishment success or fail via a status message delivered over 'soTAIF_OpnRep'. Upon success, the message will provide the [APP] with the 'SessionId' of the new connection. Sending the 'SessionId' over the 'siTAIF_ClsReq' interface, will tear-down the connection.
Definition at line 150 of file tx_app_interface.cpp.
void pTxAppStatusHandler | ( | stream< DmSts > & | siMEM_TxP_WrSts, |
stream< Event > & | siEmx_Event, | ||
stream< TAiTxSarPush > & | soTSt_PushCmd, | ||
stream< Event > & | soEVe_Event | ||
) |
Tx Application Status Handler (Tash)
[in] | siMEM_TxP_WrSts | Tx memory write status from [MEM]. |
[in] | siEmx_Event | Event from the EventMultiplexer (Emx). |
[out] | soTSt_PushCmd | Push command to TxSarTable (TSt). |
[out] | soEVe_Event | Event to EventEngine (EVe). |
This process waits and reads events from [Emx]. If the incoming event is a 'TX_EVENT', the process will wait for one (or possibly two) memory status from [MEM] and will forward a command to update the 'TxApplicationPointer' of the [TSt]. Whatever the received event, it is always forwarded to [EVe].
Definition at line 284 of file tx_app_interface.cpp.
void pTxAppTable | ( | stream< TStTxSarPush > & | siTSt_PushCmd, |
stream< TxAppTableQuery > & | siTas_AccessQry, | ||
stream< TxAppTableReply > & | siTas_AccessRep | ||
) |
Tx Application Table (Tat)
[in] | siTSt_PushCmd | Push command from TxSarTable (TSt). |
[in] | siTas_AccessQry | Access query from TxAppStream (Tas). |
[out] | soTAs_AccessRep | Access reply to [Tas]. |
This table keeps tack of the Tx ACK numbers and Tx memory pointers.
Definition at line 372 of file tx_app_interface.cpp.
void pTxMemoryReader | ( | stream< DmCmd > & | siMdl_BufferRdCmd, |
stream< DmCmd > & | soMEM_TxpRdCmd, | ||
stream< FlagBool > & | soTss_SplitMemAcc | ||
) |
Tx Memory Reader (Mrd)
[in] | siMdl_BufferRdCmd | Buffer read command from Meta Data Loader (Mdl). |
[out] | soMEM_TxpRdCmd | Memory read command to the DRAM Memory (MEM). |
[out] | soTss_SplitMemAcc | Splitted memory access to Tcp Segment Stitcher (Tss). |
Front end memory controller for reading data from the external DRAM. This process receives a read command from the MetaDataLoader (Mdl) and forwards it to the AXI4 Data Mover. The incoming memory read command might end-up being split in two memory accesses if the address of the data buffer to read from wraps in the external memory. Such a split memory access is flagged by the signal 'soTss_SplitMemAcc'.
Definition at line 1419 of file tx_engine.cpp.
void pTxMemoryWriter | ( | stream< TcpAppData > & | siTAIF_Data, |
stream< AppMemMeta > & | siSml_AppMeta, | ||
stream< DmCmd > & | soMEM_WrCmd, | ||
stream< AxisApp > & | soMEM_WrData | ||
) |
Tx Memory Writer (Mwr)
[in] | siTAIF_Data | APP data stream from [TAIF]. |
[in] | siSml_AppMeta | APP memory metadata from StreamMetaLoader (Sml). |
[out] | soMEM_WrCmd | Tx memory write command to [MEM]. |
[out] | soMEM_WrData | Tx memory write data to [MEM]. |
This process writes the incoming APP data into the external DRAM upon a a request issued by the state machine of the MetaDataLoader (Sml). The Tx buffer memory is organized and managed as a circular buffer in the DRAM and it may happen that the APP data to be transmitted does not fit into the remaining memory buffer space because the memory pointer needs to wrap around. In such a case, the incoming APP data is broken down and is written into the physical DRAM as two memory buffers.
Definition at line 566 of file tx_app_interface.cpp.
void pUpdateReplyHandler | ( | stream< CamSessionUpdateReply > & | siCAM_SessUpdateRep, |
stream< CamSessionUpdateReply > & | soLrh_SessUpdateRsp | ||
) |
Update Reply Handler (Urh)
[in] | siCAM_SessUpdateRep | Session update reply from [CAM]. |
[out] | soLrh_SessUpdateRsp | Session update response to LookupReplyHandler (Lrh).* |
Definition at line 300 of file session_lookup_controller.cpp.
void pUpdateRequestSender | ( | stream< CamSessionUpdateRequest > & | siLrh_InsertSessReq, |
stream< CamSessionUpdateRequest > & | siRlt_SessDeleteReq, | ||
stream< CamSessionUpdateRequest > & | soCAM_SessUpdateReq, | ||
stream< RtlSessId > & | soSim_FreeId, | ||
stream< ap_uint< 16 > > & | soSssRelCnt, | ||
stream< ap_uint< 16 > > & | soSssRegCnt | ||
) |
Update Request Sender (Urs)
[in] | siLrh_InsertSessReq | Request to insert session from LookupReplyHandler (Lrh). |
[in] | siRlt_SessDeleteReq | Request to delete session from Reverse Lookup Table (Rlt). |
[out] | soCAM_SessUpdateReq | Update request to [CAM]. |
[out] | soSim_FreeId | The SessId to recycle to the [SessionIdManager]. |
[out] | soSssRelCnt | Session release count to DEBUG. |
[out] | soSssRegCnt | Session register count to DEBUG. |
This process sends the insertion or deletion requests to the ternary content addressable memory (TCAM or CAM for short). If a session deletion is requested, the corresponding sessionId is collected from the request and is forwarded to the SessionIdManager for re-cycling.
Definition at line 253 of file session_lookup_controller.cpp.
void DummyMemory::readChunk | ( | AxisApp & | chunk | ) |
Definition at line 72 of file dummy_memory.cpp.
void rx_app_interface | ( | stream< TcpAppNotif > & | soTAIF_Notif, |
stream< TcpAppRdReq > & | siTAIF_DataReq, | ||
stream< TcpAppData > & | soTAIF_Data, | ||
stream< TcpAppMeta > & | soTAIF_Meta, | ||
stream< TcpAppLsnReq > & | siTAIF_LsnReq, | ||
stream< TcpAppLsnRep > & | soTAIF_LsnRep, | ||
stream< TcpPort > & | soPRt_LsnReq, | ||
stream< AckBit > & | siPRt_LsnAck, | ||
stream< TcpAppNotif > & | siRXe_Notif, | ||
stream< TcpAppNotif > & | siTIm_Notif, | ||
stream< RAiRxSarQuery > & | soRSt_RxSarReq, | ||
stream< RAiRxSarReply > & | siRSt_RxSarRep, | ||
stream< DmCmd > & | soMEM_RxP_RdCmd, | ||
stream< AxisApp > & | siMEM_RxP_Data, | ||
stream< ap_uint< 8 > > & | soMMIO_NotifDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_MetaDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_DataDropCnt | ||
) |
Rx Application Interface (RAi)
ENTITY - Rx Application Interface (RAi)
[out] | soTAIF_Notif | Data availability notification to TcpAppInterface (TAIF). |
[in] | siTAIF_DataReq | Request to retrieve data from [TAIF]. |
[out] | soTAIF_Data | TCP data stream to [TAIF]. |
[out] | soTAIF_Meta | Metadata to [TAIF]. |
[in] | siTAIF_LsnReq | TCP listen port request from [TAIF]. |
[out] | soTAIF_LsnRep | TCP listen port reply to [TAIF]. |
[out] | soPRt_LsnReq | TCP listen port request to PortTable (PRt). |
[in] | siPRt_LsnAck | TCP listen port acknowledge from [PRt]. |
[in] | siRXe_Notif | Data availability notification from Rx Engine (RXe). |
[in] | siTIm_Notif | Data availability notification from Timers (TIm). |
[out] | soRSt_RxSarReq | Rx SAR request to RxSarTable (RSt). |
[in] | siRSt_RxSarRep | Rx SAR reply from [RSt]. |
[out] | soMEM_RxP_RdCmd | Rx memory read command to Memory sub-system (MEM). |
[in] | siMEM_RxP_Data | Rx memory data stream from [MEM]. |
[out] | soMMIO_NotifDropCnt | The value of the notification drop counter. |
[out] | soMMIO_MetaDropCnt | The value of the metadata drop counter. |
[out] | soMMIO_DataDropCnt | The value of the data drop counter. |
The Rx Application Interface (Rai) retrieves the data of an established connection from the TCP Rx buffer memory and forwards them to the application via the TcpAppInterface (TAIF). This process is also in charge of opening/closing TCP ports in listen mode for TOE to be ready for accepting passive incoming connections.
Definition at line 729 of file rx_app_interface.cpp.
void rx_engine | ( | stream< AxisIp4 > & | siIPRX_Data, |
stream< SessionLookupQuery > & | soSLc_SessLkReq, | ||
stream< SessionLookupReply > & | siSLc_SessLkRep, | ||
stream< StateQuery > & | soSTt_StateQry, | ||
stream< TcpState > & | siSTt_StateRep, | ||
stream< TcpPort > & | soPRt_PortStateReq, | ||
stream< RepBit > & | siPRt_PortStateRep, | ||
stream< RXeRxSarQuery > & | soRSt_RxSarQry, | ||
stream< RxSarReply > & | siRSt_RxSarRep, | ||
stream< RXeTxSarQuery > & | soTSt_TxSarQry, | ||
stream< RXeTxSarReply > & | siTSt_TxSarRep, | ||
stream< RXeReTransTimerCmd > & | soTIm_ReTxTimerCmd, | ||
stream< SessionId > & | soTIm_ClearProbeTimer, | ||
stream< SessionId > & | soTIm_CloseTimer, | ||
stream< ExtendedEvent > & | soEVe_SetEvent, | ||
stream< SessState > & | soTAi_SessOpnSts, | ||
stream< TcpAppNotif > & | soRAi_RxNotif, | ||
stream< DmCmd > & | soMEM_WrCmd, | ||
stream< AxisApp > & | soMEM_WrData, | ||
stream< DmSts > & | siMEM_WrSts, | ||
stream< StsBit > & | soMMIO_RxMemWrErr, | ||
stream< ap_uint< 8 > > & | soMMIO_CrcDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_SessDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_OooDropCnt, | ||
stream< RxBufPtr > & | soDBG_RxFreeSpace, | ||
stream< ap_uint< 32 > > & | soDBG_TcpIpRxByteCnt, | ||
stream< ap_uint< 8 > > & | soDBG_OooDebug | ||
) |
Receive Engine (RXe)
ENTITY - Rx Engine (RXe)
[in] | siIPRX_Data | IP4 data stream form [IPRX]. |
[out] | soSLc_SessLkReq | Session lookup request to SessionLookupController (SLc). |
[in] | siSLc_SessLkRep | Session lookup reply from [SLc]. |
[out] | soSTt_StateQry | State query to StateTable (STt). |
[in] | siSTt_StateRep | State reply from [STt]. |
[out] | soPRt_PortStateReq | Port state request to PortTable (PRt). |
[in] | siPRt_PortStateRep | Port state reply from [PRt]. |
[out] | soRSt_RxSarQry | Query to RxSarTable (RSt). |
[in] | siRSt_RxSarRep | Reply from [RSt]. |
[out] | soTSt_TxSarQry | Query to TxSarTable (TSt). |
[in] | siTSt_TxSarRep | Reply from [TSt]. |
[out] | soTIm_ReTxTimerCmd | Command for a retransmit timer to Timers (TIm). |
[out] | soTIm_ClearProbeTimer | Clear the probe timer command to [TIm].. |
[out] | soTIm_CloseTimer | Close session timer command to [TIm]. |
[out] | soEVe_SetEvent | Event forward to EventEngine (EVe). |
[out] | soTAi_SessOpnSts | Open status of the session to TxAppInterface (TAi). |
[out] | soRAi_RxNotif | Rx data notification to RxAppInterface (RAi). |
[out] | soMEM_WrCmd | Memory write command to MemorySubSystem (MEM). |
[out] | soMEM_WrData | Memory data write stream to [MEM]. |
[in] | siMEM_WrSts | Memory write status from [MEM]. |
[out] | soMMIO_RxMemWrErr | Reports an Rx memory write error. |
[out] | soMMIO_CrcDropCnt | The value of the CRC drop counter. |
[out] | soMMIO_SessDropCnt | The value of the session drop counter. |
[out] | soMMIO_OooDropCnt | The value of the out-of-order drop counter. |
The RxEngine (RXe) processes the TCP/IP packets received from the IpRxHandler (IPRX). When a new TCP/IP packet enters the RXe, its TCP checksum is tested, the TCP header is parsed and some more checks are done. Next, the TCP segment is evaluated by the TCP state machine which triggers events and updates the data structures according to the type of received packet. Finally, if the packet contains a valid data payload, the TCP segment is stored in external DDR4 memory and the application is notified about the arrival of new data.
Definition at line 2000 of file rx_engine.cpp.
void rx_sar_table | ( | stream< RXeRxSarQuery > & | siRXe_RxSarQry, |
stream< RxSarReply > & | soRXe_RxSarRep, | ||
stream< RAiRxSarQuery > & | siRAi_RxSarQry, | ||
stream< RAiRxSarReply > & | soRAi_RxSarRep, | ||
stream< SessionId > & | siTXe_RxSarReq, | ||
stream< RxSarReply > & | soTxe_RxSarRep | ||
) |
Rx SAR Table (RSt)
ENTITY - Rx SAR Table (RSt)
[in] | siRXe_RxSarQry | Query from RxEngine (RXe). |
[out] | soRXe_RxSarRep | Reply to RXe. |
[in] | siRAi_RxSarQry | Query from RxAppInterface (RAi). |
[out] | soRAi_RxSarRep | Reply to [RAi]. |
[in] | siTXe_RxSarReq | Read request from TxEngine (TXe). |
[out] | soTxe_RxSarRep | Read reply to [TXe]. |
This process stores the structures for managing the received data stream in the TCP Rx buffer memory. An Rx buffer of 64KB is allocated to every session and the stream of bytes within every session is managed with two pointers:
'appd' holds a pointer to the next byte ready to be read (.i.e, consumed) by the application layer.
appd rcvd oooTail oooHead | | | | |/ |/ |/ |/ –+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+– |269|270|271|272|273|274|275|276|277|278|279|280|281|282|283|284| –+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+—+–
This process is concurrently accessed by the RxEngine (RXe), the TxEngine (TXe) and the RxApplicationInterface (RAi), but TXe access is read-only.
Definition at line 105 of file rx_sar_table.cpp.
void session_lookup_controller | ( | stream< SessionLookupQuery > & | siRXe_SessLookupReq, |
stream< SessionLookupReply > & | soRXe_SessLookupRep, | ||
stream< SessionId > & | siSTt_SessReleaseCmd, | ||
stream< TcpPort > & | soPRt_ClosePortCmd, | ||
stream< SocketPair > & | siTAi_SessLookupReq, | ||
stream< SessionLookupReply > & | soTAi_SessLookupRep, | ||
stream< SessionId > & | siTXe_ReverseLkpReq, | ||
stream< fourTuple > & | soTXe_ReverseLkpRep, | ||
stream< CamSessionLookupRequest > & | soCAM_SessLookupReq, | ||
stream< CamSessionLookupReply > & | siCAM_SessLookupRep, | ||
stream< CamSessionUpdateRequest > & | soCAM_SessUpdateReq, | ||
stream< CamSessionUpdateReply > & | siCAM_SessUpdateRep, | ||
stream< ap_uint< 16 > > & | soSssRelCnt, | ||
stream< ap_uint< 16 > > & | soSssRegCnt | ||
) |
Session Lookup Controller (SLc)
ENTITY - Session Lookup Controller (SLc)
[in] | siRXe_SessLookupReq | Session lookup request from Rx Engine (RXe). |
[out] | soRXe_SessLookupRep | Session lookup reply to [RXe]. |
[in] | siSTt_SessReleaseCmd | Session release command from State Table (STt). |
[out] | soPRt_ClosePortCmd | Command to close a port for the Port Table (PRt). |
[in] | siTAi_SessLookupReq | Session lookup request from Tx App. I/F (TAi). |
[out] | soTAi_SessLookupReq | Session lookup reply to [TAi]. |
[in] | siTXe_ReverseLkpReq | Reverse lookup request from Tx Engine (TXe). |
[out] | soTXe_ReverseLkpRep | Reverse lookup reply to [TXe]. |
[out] | soCAM_SessLookupReq | Lookup request to ternary CAM (CAM). |
[in] | siCAM_SessLookupRep | Lookup reply from [CAM]. |
[out] | soCAM_SessUpdateReq | Update request to [CAM]. |
[in] | siCAM_SessUpdateRep | Update reply from [CAM]. |
[out] | soSssRelCnt | Session release count. |
[out] | soSssRegCnt | Session register count. |
The SLc maps a four-tuple information {{IP4_SA,TCP_SA},{IP4_DA,TCP_DP}} of a socket pair to a so-called 'sessionID'. This session ID represents the TCP connection and is used as an index into the various data structures of the TOE. This module acts as a wrapper for the RTL implementation the TCAM which holds the session ID table. It also includes the wrapper for the sessionID free list which keeps track of the free SessionID.
Definition at line 430 of file session_lookup_controller.cpp.
void DummyMemory::setReadCmd | ( | DmCmd | cmd | ) |
void DummyMemory::setWriteCmd | ( | DmCmd | cmd | ) |
void state_table | ( | stream< StateQuery > & | siRXe_SessStateQry, |
stream< TcpState > & | soRXe_SessStateRep, | ||
stream< StateQuery > & | siTAi_ConnectStateQry, | ||
stream< TcpState > & | soTAi_ConnectStateRep, | ||
stream< SessionId > & | siTAi_StreamStateReq, | ||
stream< TcpState > & | soTAi_StreamStateRep, | ||
stream< SessionId > & | siTIm_SessCloseCmd, | ||
stream< SessionId > & | soSLc_SessReleaseCmd | ||
) |
State Table (STt)
ENTITY - State Table (STt)
[in] | siRXe_SessStateQry | Session state query from RxEngine (RXe). |
[out] | soRXe_SessStateRep | Session state reply to [RXe]. |
[in] | siTAi_ConnectStateQry | Session state query from [TxAppInterface/TxAppConnect(TAi/Tac). |
[out] | soTAi_ConnectStateRep | Session state reply to [TAi/Tac]. |
[in] | siTAi_StreamStateReq | Session state request from TxAppInterface/TxAppStream (TAi/Tas). |
[out] | soTAi_StreamStateRep | Session state reply to [TAi/Tas]. |
[in] | siTIm_SessCloseCmd | Session close command from Timers (TIm). |
[out] | soSLc_SessReleaseCmd | Release session command to SessionLookupController (SLc). |
The StateTable (STt) stores the connection state of each session during its lifetime. The states are defined in RFC793 as: LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT and CLOSED. The StateTable is accessed by the RxEngine (RXe), the TxAppInterface (TAi) and by the TxEngine (TXe). The process also receives session close commands from the Timers (TIm) and it sends session release commands to the SessionLookupController (SLc).
Definition at line 99 of file state_table.cpp.
void timers | ( | stream< RXeReTransTimerCmd > & | siRXe_ReTxTimerCmd, |
stream< SessionId > & | siRXe_ClrProbeTimer, | ||
stream< SessionId > & | siRXe_CloseTimer, | ||
stream< TXeReTransTimerCmd > & | siTXe_ReTxTimerCmd, | ||
stream< SessionId > & | siTXe_SetProbeTimer, | ||
stream< SessionId > & | soSTt_SessCloseCmd, | ||
stream< Event > & | soEVe_Event, | ||
stream< SessState > & | soTAi_Notif, | ||
stream< TcpAppNotif > & | soRAi_Notif | ||
) |
The Timers (TIm)
ENTITY - Timers (TIm)
[in] | siRXe_ReTxTimerCmd | Retransmission timer command from Rx Engine (RXe). |
[in] | siRXe_ClrProbeTimer | Clear probe timer from [RXe]. |
[in] | siRXe_CloseTimer | Close timer from [RXe]. |
[in] | siTXe_ReTxTimerCmd | Retransmission timer command from Tx Engine (TXe). |
[in] | siTXe_SetProbeTimer | Set probe timer from [TXe]. |
[out] | soEVe_Event | Event to EventEngine (EVe). |
[out] | soSTt_SessCloseCmd | Close session command to State Table (STt). |
[out] | soTAi_Notif | Notification to Tx Application Interface (TAi). |
[out] | soRAi_Notif | Notification to Rx Application Interface (RAi). |
@detail This process includes all the timer-based processes of the [TOE].
Definition at line 505 of file timers.cpp.
void toe | ( | Ip4Addr | piMMIO_IpAddr, |
stream< StsBit > & | soMMIO_RxMemWrErr, | ||
stream< ap_uint< 8 > > & | soMMIO_NotifDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_MetaDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_DataDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_CrcDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_SessDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_OooDropCnt, | ||
StsBit & | poNTS_Ready, | ||
stream< AxisIp4 > & | siIPRX_Data, | ||
stream< AxisIp4 > & | soIPTX_Data, | ||
stream< TcpAppNotif > & | soTAIF_Notif, | ||
stream< TcpAppRdReq > & | siTAIF_DReq, | ||
stream< TcpAppData > & | soTAIF_Data, | ||
stream< TcpAppMeta > & | soTAIF_Meta, | ||
stream< TcpAppLsnReq > & | siTAIF_LsnReq, | ||
stream< TcpAppLsnRep > & | soTAIF_LsnRep, | ||
stream< TcpAppData > & | siTAIF_Data, | ||
stream< TcpAppSndReq > & | siTAIF_SndReq, | ||
stream< TcpAppSndRep > & | soTAIF_SndRep, | ||
stream< TcpAppOpnReq > & | siTAIF_OpnReq, | ||
stream< TcpAppOpnRep > & | soTAIF_OpnRep, | ||
stream< TcpAppClsReq > & | siTAIF_ClsReq, | ||
stream< DmCmd > & | soMEM_RxP_RdCmd, | ||
stream< AxisApp > & | siMEM_RxP_Data, | ||
stream< DmSts > & | siMEM_RxP_WrSts, | ||
stream< DmCmd > & | soMEM_RxP_WrCmd, | ||
stream< AxisApp > & | soMEM_RxP_Data, | ||
stream< DmCmd > & | soMEM_TxP_RdCmd, | ||
stream< AxisApp > & | siMEM_TxP_Data, | ||
stream< DmSts > & | siMEM_TxP_WrSts, | ||
stream< DmCmd > & | soMEM_TxP_WrCmd, | ||
stream< AxisApp > & | soMEM_TxP_Data, | ||
stream< CamSessionLookupRequest > & | soCAM_SssLkpReq, | ||
stream< CamSessionLookupReply > & | siCAM_SssLkpRep, | ||
stream< CamSessionUpdateRequest > & | soCAM_SssUpdReq, | ||
stream< CamSessionUpdateReply > & | siCAM_SssUpdRep, | ||
stream< ap_uint< 16 > > & | soDBG_SssRelCnt, | ||
stream< ap_uint< 16 > > & | soDBG_SssRegCnt, | ||
stream< RxBufPtr > & | soDBG_RxFreeSpace, | ||
stream< ap_uint< 32 > > & | soDBG_TcpIpRxByteCnt, | ||
stream< ap_uint< 8 > > & | soDBG_OooDebug | ||
) |
Main process of the TCP Offload Engine (TOE0.
– MMIO Interfaces
[in] | piMMIO_IpAddr | IP4 Address from [MMIO]. |
[out] | soMMIO_RxMemWrErr | Reports a Rx memory write error. |
[out] | soMMIO_NotifDrop | The value of the notification drop counter. |
[out] | soMMIO_MetaDrop | The value of the metadata drop counter. |
[out] | soMMIO_DataDrop | The value of the data drop counter. |
[out] | soMMIO_CrcDrop | The value of the CRC drop counter. |
[out] | soMMIO_SessDrop | The value of the session drop counter. |
[out] | soMMIO_OooDrop | The value of the out-of-order drop counter. – NTS Interfaces |
[out] | poNTS_Ready | Ready signal of TOE. – IPRX / IP Rx / Data Interface |
[in] | siIPRX_Data | IP4 data stream from [IPRX]. – IPTX / IP Tx / Data Interface |
[out] | soIPTX_Data | IP4 data stream to [IPTX]. – TAIF / Rx Data Interfaces |
[out] | soTAIF_Notif | APP data notification to [TAIF]. |
[in] | siTAIF_DReq | APP data request from [TAIF]. |
[out] | soTAIF_Data | APP data stream to [TAIF]. |
[out] | soTAIF_Meta | APP metadata stream to [TAIF]. – TAIF / Listen Port Interfaces |
[in] | siTAIF_LsnReq | APP listen port request from [TAIF]. |
[out] | soTAIF_LsnRep | APP listen port reply to [TAIF]. – TAIF / Tx Data Interfaces |
[in] | siTAIF_Data | APP data stream from [TAIF]. |
[in] | siTAIF_SndReq | APP request to send from [TAIF]. |
[out] | soTAIF_SndRep | APP send reply to [TAIF]. – TAIF / Open Interfaces |
[in] | siTAIF_OpnReq | APP open port request from [TAIF]. |
[out] | soTAIF_OpnRep | APP open port reply to [TAIF]. – TAIF / Close Interfaces |
[in] | siTAIF_ClsReq | APP close connection request from [TAIF]. |
[out] | soMEM_RxP_RdCmd | Rx memory read command to [MEM]. |
[in] | siMEM_RxP_Data | Rx memory data from [MEM]. |
[in] | siMEM_RxP_WrSts | Rx memory write status from [MEM]. |
[out] | soMEM_RxP_WrCmd | Rx memory write command to [MEM]. |
[out] | soMEM_RxP_Data | Rx memory data to [MEM]. – MEM / Tx PATH / S2MM Interface |
[out] | soMEM_TxP_RdCmd | Tx memory read command to [MEM]. |
[in] | siMEM_TxP_Data | Tx memory data from [MEM]. |
[in] | siMEM_TxP_WrSts | Tx memory write status from [MEM]. |
[out] | soMEM_TxP_WrCmd | Tx memory write command to [MEM]. |
[out] | soMEM_TxP_Data | Tx memory data to [MEM]. – CAM / Session Lookup & Update Interfaces |
[in] | siCAM_SssLkpRep | Session lookup reply from [CAM]. |
[in] | siCAM_SssUpdRep | Session update reply from [CAM]. |
[out] | soCAM_SssLkpReq | Session lookup request to [CAM]. |
[out] | soCAM_SssUpdReq | Session update request to [CAM]. – DEBUG / Session Statistics Interfaces |
[out] | soDBG_SssRelCnt | Session release count to DEBUG. |
[out] | soDBG_SssRegCnt | Session register count to DEBUG. |
PROCESS FUNCTIONS: TCP STATE-KEEPING DATA STRUCTURES
PROCESS FUNCTIONS: RX & TX ENGINES
PROCESSS FUNCTIONS: APPLICATION INTERFACES
PROCESS FUNCTIONS: CONTROL AND DEBUG INTERFACES
Definition at line 231 of file toe.cpp.
void toe_top | ( | Ip4Addr | piMMIO_IpAddr, |
stream< StsBit > & | soMMIO_RxMemWrErr, | ||
stream< ap_uint< 8 > > & | soMMIO_NotifDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_MetaDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_DataDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_CrcDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_SessDropCnt, | ||
stream< ap_uint< 8 > > & | soMMIO_OooDropCnt, | ||
StsBit & | poNTS_Ready, | ||
stream< AxisRaw > & | siIPRX_Data, | ||
stream< AxisRaw > & | soIPTX_Data, | ||
stream< TcpAppNotif > & | soTAIF_Notif, | ||
stream< TcpAppRdReq > & | siTAIF_DReq, | ||
stream< TcpAppData > & | soTAIF_Data, | ||
stream< TcpAppMeta > & | soTAIF_Meta, | ||
stream< TcpAppLsnReq > & | siTAIF_LsnReq, | ||
stream< TcpAppLsnRep > & | soTAIF_LsnRep, | ||
stream< TcpAppData > & | siTAIF_Data, | ||
stream< TcpAppSndReq > & | siTAIF_SndReq, | ||
stream< TcpAppSndRep > & | soTAIF_SndRep, | ||
stream< TcpAppOpnReq > & | siTAIF_OpnReq, | ||
stream< TcpAppOpnRep > & | soTAIF_OpnRep, | ||
stream< TcpAppClsReq > & | siTAIF_ClsReq, | ||
stream< DmCmd > & | soMEM_RxP_RdCmd, | ||
stream< AxisApp > & | siMEM_RxP_Data, | ||
stream< DmSts > & | siMEM_RxP_WrSts, | ||
stream< DmCmd > & | soMEM_RxP_WrCmd, | ||
stream< AxisApp > & | soMEM_RxP_Data, | ||
stream< DmCmd > & | soMEM_TxP_RdCmd, | ||
stream< AxisApp > & | siMEM_TxP_Data, | ||
stream< DmSts > & | siMEM_TxP_WrSts, | ||
stream< DmCmd > & | soMEM_TxP_WrCmd, | ||
stream< AxisApp > & | soMEM_TxP_Data, | ||
stream< CamSessionLookupRequest > & | soCAM_SssLkpReq, | ||
stream< CamSessionLookupReply > & | siCAM_SssLkpRep, | ||
stream< CamSessionUpdateRequest > & | soCAM_SssUpdReq, | ||
stream< CamSessionUpdateReply > & | siCAM_SssUpdRep, | ||
stream< ap_uint< 16 > > & | soDBG_SssRelCnt, | ||
stream< ap_uint< 16 > > & | soDBG_SssRegCnt, | ||
stream< RxBufPtr > & | soDBG_RxFreeSpace, | ||
stream< ap_uint< 32 > > & | soDBG_TcpIpRxByteCnt, | ||
stream< ap_uint< 8 > > & | soDBG_OooDebug | ||
) |
Top of TCP Offload Engine (TOE)
[in] | piMMIO_IpAddr | IP4 Address from [MMIO]. |
[out] | soMMIO_RxMemWrErr | Reports a Rx memory write error. |
[out] | soMMIO_NotifDrop | The value of the notification drop counter. |
[out] | soMMIO_MetaDrop | The value of the metadata drop counter. |
[out] | soMMIO_DataDrop | The value of the data drop counter. |
[out] | soMMIO_CrcDrop | The value of the CRC drop counter. |
[out] | soMMIO_SessDrop | The value of the session drop counter. |
[out] | soMMIO_OooDrop | The value of the out-of-order drop counter. |
[out] | poNTS_Ready | Ready signal of TOE. |
[in] | siIPRX_Data | IP4 data stream from [IPRX]. |
[out] | soIPTX_Data | IP4 data stream to [IPTX]. |
[out] | soTAIF_Notif | APP data notification to [TAIF]. |
[in] | siTAIF_DReq | APP data request from [TAIF]. |
[out] | soTAIF_Data | APP data stream to [TAIF]. |
[out] | soTAIF_Meta | APP metadata stream to [TAIF]. |
[in] | siTAIF_LsnReq | APP listen port request from [TAIF]. |
[out] | soTAIF_LsnRep | APP listen port reply to [TAIF]. |
[in] | siTAIF_Data | APP data stream from [TAIF]. |
[in] | siTAIF_SndReq | APP request to send from [TAIF]. |
[out] | soTAIF_SndRep | APP send reply to [TAIF]. |
[in] | siTAIF_OpnReq | APP open port request from [TAIF]. |
[out] | soTAIF_OpnRep | APP open port reply to [TAIF]. |
[in] | siTAIF_ClsReq | APP close connection request from [TAIF]. |
[out] | soMEM_RxP_RdCmd | Rx memory read command to [MEM]. |
[in] | siMEM_RxP_Data | Rx memory data from [MEM]. |
[in] | siMEM_RxP_WrSts | Rx memory write status from [MEM]. |
[out] | soMEM_RxP_WrCmd | Rx memory write command to [MEM]. |
[out] | soMEM_RxP_Data | Rx memory data to [MEM]. |
[out] | soMEM_TxP_RdCmd | Tx memory read command to [MEM]. |
[in] | siMEM_TxP_Data | Tx memory data from [MEM]. |
[in] | siMEM_TxP_WrSts | Tx memory write status from [MEM]. |
[out] | soMEM_TxP_WrCmd | Tx memory write command to [MEM]. |
[out] | soMEM_TxP_Data | Tx memory data to [MEM]. |
[out] | soCAM_SssLkpReq | Session lookup request to [CAM]. |
[in] | siCAM_SssLkpRep | Session lookup reply from [CAM]. |
[out] | soCAM_SssUpdReq | Session update request to [CAM]. |
[in] | siCAM_SssUpdRep | Session update reply from [CAM]. |
[out] | soDBG_SssRelCnt | Session release count (for DEBUG). |
[out] | soDBG_SssRegCnt | Session register count (foe DEBUG). |
ENTITY - TCP OFFLOAD ENGINE (TOE)
Definition at line 1056 of file toe.cpp.
void tx_app_interface | ( | stream< TcpAppOpnReq > & | siTAIF_OpnReq, |
stream< TcpAppOpnRep > & | soTAIF_OpnRep, | ||
stream< TcpAppClsReq > & | siTAIF_ClsReq, | ||
stream< TcpAppData > & | siTAIF_Data, | ||
stream< TcpAppSndReq > & | siTAIF_SndReq, | ||
stream< TcpAppSndRep > & | soTAIF_SndRep, | ||
stream< DmCmd > & | soMEM_TxP_WrCmd, | ||
stream< AxisApp > & | soMEM_TxP_Data, | ||
stream< DmSts > & | siMEM_TxP_WrSts, | ||
stream< SessionId > & | soSTt_SessStateReq, | ||
stream< TcpState > & | siSTt_SessStateRep, | ||
stream< StateQuery > & | soSTt_ConnectStateQry, | ||
stream< TcpState > & | siSTt_ConnectStateRep, | ||
stream< SocketPair > & | soSLc_SessLookupReq, | ||
stream< SessionLookupReply > & | siSLc_SessLookupRep, | ||
stream< ReqBit > & | soPRt_GetFreePortReq, | ||
stream< TcpPort > & | siPRt_GetFreePortRep, | ||
stream< TStTxSarPush > & | siTSt_PushCmd, | ||
stream< TAiTxSarPush > & | soTSt_PushCmd, | ||
stream< SessState > & | siRXe_ActSessState, | ||
stream< Event > & | soEVe_Event, | ||
stream< SessState > & | siTIm_Notif, | ||
Ip4Addr | piMMIO_IpAddr | ||
) |
Tx Application Interface (TAi)
ENTITY - Tx Application Interface (TAi)
[in] | siTAIF_OpnReq | Open connection request from TCP Role I/F (TAIF). |
[out] | soTAIF_OpnRep | Open connection reply to [TAIF]. |
[in] | siTAIF_ClsReq | Close connection request from [TAIF] |
[in] | siTAIF_Data | APP data stream from [TAIF]. |
[in] | siTAIF_SndReq | APP request to send from [TAIF]. |
[out] | soTAIF_SndRep | APP send reply to [TAIF]. |
[out] | soMEM_TxP_WrCmd | Tx memory write command to MEM. |
[out] | soMEM_TxP_Data | Tx memory data to MEM. |
[in] | siMEM_TxP_WrSts | Tx memory write status from MEM. |
[out] | soSTt_SessStateReq | Session sate request to StateTable (STt). |
[in] | siSTt_SessStateRep | Session state reply from [STt]. |
[out] | soSTt_AcceptStateQry | Session state query to [STt]. |
[in] | siSTt_AcceptStateRep | Session state reply from [STt]. |
[out] | soSLc_SessLookupReq | Session lookup request to SessionLookupController(SLc). |
[in] | siSLc_SessLookupRep | Session lookup reply from [SLc]. |
[out] | soPRt_GetFreePortReq | Free port request to PortTable (PRt). |
[in] | siPRt_GetFreePortRep | Free port reply from [PRt]. |
[in] | siTSt_PushCmd | Push command for an AckNum from TxSarTable (TSt). |
[out] | soTSt_PushCmd | Push command for an AppPtr to [TSt]. |
[in] | siRXe_ActSessState | TCP state of active session from [RXe]. |
[out] | soEVe_Event | Event to EventEngine (EVe). |
[in] | siTIm_Notif | Notification from Timers (TIm). |
[in] | piMMIO_IpAddr | IPv4 address from [MMIO]. |
This process is the front-end interface to the TCP application layer.
Definition at line 791 of file tx_app_interface.cpp.
void tx_engine | ( | stream< ExtendedEvent > & | siAKd_Event, |
stream< SigBit > & | soEVe_RxEventSig, | ||
stream< SessionId > & | soRSt_RxSarReq, | ||
stream< RxSarReply > & | siRSt_RxSarRep, | ||
stream< TXeTxSarQuery > & | soTSt_TxSarQry, | ||
stream< TXeTxSarReply > & | siTSt_TxSarRep, | ||
stream< DmCmd > & | soMEM_Txp_RdCmd, | ||
stream< AxisApp > & | siMEM_TxP_Data, | ||
stream< TXeReTransTimerCmd > & | soTIm_ReTxTimerCmd, | ||
stream< SessionId > & | soTIm_SetProbeTimer, | ||
stream< SessionId > & | soSLc_ReverseLkpReq, | ||
stream< fourTuple > & | siSLc_ReverseLkpRep, | ||
stream< AxisIp4 > & | soIPTX_Data | ||
) |
Transmit Engine (TXe)
ENTITY - Tx Engine (TXe)
[in] | siAKd_Event | Event from Ack Delayer (AKd). |
[out] | soEVe_RxEventSig | Signals the reception of an event to [EventEngine]. |
[out] | soRSt_RxSarReq | Read request to RxSarTable (RSt). |
[in] | siRSt_RxSarRep | Read reply from [RSt]. |
[out] | soTSt_TxSarQry | TxSar query to TxSarTable (TSt). |
[in] | siTSt_TxSarRep | TxSar reply from [TSt]. |
[out] | soMEM_Txp_RdCmd | Memory read command to the DRAM Memory (MEM). |
[in] | siMEM_TxP_Data | Data payload from the DRAM Memory (MEM). |
[out] | soTIm_ReTxTimerCmd | Send retransmit timer command to [Timers]. |
[out] | soTIm_SetProbeTimer | Set probe timer to Timers (TIm). |
[out] | soSLc_ReverseLkpReq | Reverse lookup request to Session Lookup Controller (SLc). |
[in] | siSLc_ReverseLkpRep | Reverse lookup reply from SLc. |
[out] | soIPTX_Data | Outgoing data stream to IP Tx Handler (IPTX). |
The Tx Engine (TXe) is responsible for the generation and transmission of IPv4 packets with embedded TCP payload. It contains a state machine with a state for each Event Type. Upon reception of an event, it loads and generates the necessary metadata to construct an IPv4 packet. If that packet contains any payload, the data are retrieved from the DDR4 memory and are put as a TCP segment into the IPv4 packet. The complete packet is then streamed out over the IPv4 Tx interface of the TOE (.i.e, soIPTX).
Definition at line 1517 of file tx_engine.cpp.
void tx_sar_table | ( | stream< RXeTxSarQuery > & | siRXe_TxSarQry, |
stream< RXeTxSarReply > & | soRXe_TxSarRep, | ||
stream< TXeTxSarQuery > & | siTXe_TxSarQry, | ||
stream< TXeTxSarReply > & | soTXe_TxSarRep, | ||
stream< TAiTxSarPush > & | siTAi_PushCmd, | ||
stream< TStTxSarPush > & | soTAi_PushCmd | ||
) |
Tx Sar Table (TSt). Stores the data structures for managing the TCP Tx buffer and Tx sliding window.
ENTITY - Tx SAR Table (TSt)
[in] | siRXe_TxSarQry | Query from RxEngine (RXe). |
[out] | soRXe_TxSarRep | Reply to [RXe]. |
[in] | siTXe_TxSarQry | Tx SAR query from TxEngine (TXe). |
[out] | soTXe_TxSarRep | Tx SAR reply to [TXe]. |
[in] | siTAi_PushCmd | Push command from TxAppInterface (TAi). |
[out] | soTAi_PushCmd | Push command to [TAi]. |
This process is accessed by the RxEngine (RXe), the TxEngine (TXe) and the TxAppInterface (TAi).
Definition at line 91 of file tx_sar_table.cpp.
void DummyMemory::writeChunk | ( | AxisApp & | chunk | ) |
Definition at line 96 of file dummy_memory.cpp.
const int cDepth_AKdToEVe_Event = 8 |
const int cDepth_FsmToEve_Event = 4 |
CONSTANTS FOR THE INTERNAL STREAM DEPTHS
Definition at line 103 of file rx_engine.hpp.
const int cDepth_FsmToMwr_WrCmd = 16 |
Definition at line 104 of file rx_engine.hpp.
const int cDepth_FsmToRan_Notif = 16 |
Definition at line 105 of file rx_engine.hpp.
const int cDepth_FsmToTsd_DropCmd = 16 |
Definition at line 106 of file rx_engine.hpp.
const int cDepth_MdhToEvm_Event = 4 |
Definition at line 108 of file rx_engine.hpp.
const int cDepth_MdhToTsd_DropCmd = 16 |
Definition at line 109 of file rx_engine.hpp.
const int cDepth_MwrToRan_SplitSeg = 16 |
Definition at line 111 of file rx_engine.hpp.
|
extern |
Definition at line 150 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_AKD)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_ORM | TRACE_FPT)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (RAA_TRACE | RAD_TRACE)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_CSA | TRACE_IPH)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_RST)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_LRH | TRACE_URH)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (STT_TRACE)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (PBT_TRACE | RTT_TRACE)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_OFF | TRACE_RDY)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TAC_TRACE | TAS_TRACE)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_PHC | TRACE_MDL)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (TRACE_TST)
HELPERS FOR THE DEBUGGING TRACES .e.g: DEBUG_LEVEL = (MDL_TRACE | IPS_TRACE)
Definition at line 151 of file tb_nal.cpp.
|
extern |
|
extern |