 |
AM64x INDUSTRIAL COMMUNICATIONS SDK
11.00.00
|
|
Go to the documentation of this file.
65 #include <include/core/enet_dma.h>
66 #include <include/core/enet_base.h>
67 #include <utils/include/enet_ethutils.h>
68 #include <utils/include/enet_appmemutils.h>
69 #include <utils/include/enet_apputils.h>
70 #include <kernel/dpl/TaskP.h>
71 #include <kernel/dpl/ClockP.h>
72 #include <kernel/dpl/SemaphoreP.h>
73 #include <per/icssg.h>
74 #include <priv/per/icssg_priv.h>
80 #define LRE_MANUFACTURER "Texas Instruments"
81 #define LRE_VERSION_NAME "1.0.0.1"
82 #define LRE_NODE_NAME "TI"
84 #define LRE_SUP_SEND_HANDLER_TASK_PRIORITY (7U)
85 #define LRE_SUP_SEND_HANDLER_TASK_STACK (3 * 1024)
86 #define LRE_SUP_RCV_HANDLER_TASK_PRIORITY (7U)
87 #define LRE_SUP_RCV_HANDLER_TASK_STACK (8 * 1024)
89 #define ETHER_TYPE_LRE_SUP ( 0x88FB )
91 #define LRE_FRAME_MIN_SIZE ( 66 )
92 #define LRE_FRAME_VLAN_MIN_SIZE ( 70 )
93 #define ICSS_EMAC_MAXMTU_HSR 1528
98 #define LRE_SUP_PATH_VERSION ( 0x0001 )
101 #define LRE_TLV1_TYPE_PRP_DUP_DISCARD ( 20 )
104 #define LRE_TLV1_TYPE_PRP_DUP_ACCEPT ( 21 )
107 #define LRE_TLV1_TYPE_HSR ( 23 )
110 #define LRE_TLV2_TYPE_REDBOX_MAC ( 30 )
113 #define LRE_TLV0_TYPE ( 0 )
116 #define LRE_TLV0_LENGTH ( 0 )
121 #define NT_TOTAL_ENTRIES 256
124 #define NT_BUCKET_SIZE 8
127 #define NT_NUM_OF_BUCKETS (NT_TOTAL_ENTRIES/NT_BUCKET_SIZE)
131 #define LRE_NODE_FORGET_TIME 60
134 #define LRE_PORT_A 0U
137 #define LRE_PORT_B 1U
140 #define LRE_NODESTABLE_ENTRY_INVALID 0U
143 #define LRE_NODESTABLE_ENTRY_VALID 1U
153 typedef enum Lre_Mode_e
270 uint16_t path_and_ver;
288 uint8_t dan_mac[ETH_MAC_ADDR_LEN];
303 uint8_t redbox_mac[ETH_MAC_ADDR_LEN];
324 uint8_t dst[ETH_MAC_ADDR_LEN];
327 uint8_t src[ETH_MAC_ADDR_LEN];
361 uint8_t dstMac[ETH_MAC_ADDR_LEN];
364 uint8_t srcMac[ETH_MAC_ADDR_LEN];
367 EnetDma_RxChHandle hRxCh[2];
370 EnetDma_PktQ rxReadyQ[2];
373 EnetDma_PktQ rxFreeQ[2];
426 typedef enum Lre_NodeType_e
475 uint8_t macAddress[ETH_MAC_ADDR_LEN];
536 typedef struct Lre_Obj_s {
uint32_t nodesCount
Definition: lre_common.h:514
uint32_t cntMultiC
Definition: lre_common.h:229
Structure for a single bucket in the hash table.
Definition: lre_common.h:505
@ NT_NODE_TYPE_SANA
Definition: lre_common.h:456
Lre_supervisionObj svObj
Definition: lre_common.h:547
uint16_t supSeqNr
Definition: lre_common.h:388
void LRE_nodesTableInit(Lre_nodestableObj *ntObj)
Initializes the nodestable.
void LRE_updateNodeEntry(NodesTable *table, const uint8_t *src_mac, uint16_t sequence_number, uint8_t port, Lre_NodeType node_type)
Updates the node entry in the node table.
Supervision Frame Tag.
Definition: hsrPrp_red_common.h:107
Structure for the complete nodestable handling.
Definition: lre_common.h:520
@ NT_NODE_TYPE_SANAB
Definition: lre_common.h:462
struct __attribute__((packed)) cpmDesc
Definition: iRtcDrv.h:85
void LRE_printNodesTable(Lre_Handle lreHandle)
Prints the current state of the node table.
uint32_t cntTxA
Definition: lre_common.h:200
@ NT_NODE_PRP_TYPE_VDAN_DUP_DISCARD
Definition: lre_common.h:444
@ NT_NODE_PRP_TYPE_REDBOX_DUP_ACCEPT
Definition: lre_common.h:435
TaskP_Object taskSendSupHandlerObj
Definition: lre_common.h:401
EnetDma_PktQ txFreePktInfoQ
Definition: lre_common.h:379
uint32_t cntRxA
Definition: lre_common.h:195
Lre_nodestableObj ntObj
Definition: lre_common.h:550
TLV2_TAG tlv2
Definition: lre_common.h:336
Lre_Mode lreMode
Definition: lre_common.h:541
uint8_t lreSendSupFrameTaskStack[LRE_SUP_SEND_HANDLER_TASK_STACK] __attribute__((aligned(32)))
PRUICSS_Handle pruicssHandle
Definition: lre_common.h:544
uint32_t cntUniqueA
Definition: lre_common.h:172
uint8_t entry_valid
Definition: lre_common.h:496
uint32_t cntMultiA
Definition: lre_common.h:188
uint32_t cntUniqueB
Definition: lre_common.h:174
uint32_t cntOwnRxB
Definition: lre_common.h:207
uint32_t timeLastSeenB
Definition: lre_common.h:492
@ NT_NODE_PRP_TYPE_VDAN_DUP_ACCEPT
Definition: lre_common.h:441
@ NT_NODE_PRP_TYPE_DAN_DUP_DISCARD
Definition: lre_common.h:432
void LRE_open(Lre_Handle lreHandle)
Opens the LRE driver.
void LRE_checkNodeTimeouts(NodesTable *table)
Checks the node timeouts.
@ LRE_MODE_HSR
Definition: lre_common.h:162
TLV1 Tag.
Definition: hsrPrp_red_common.h:117
TLV1_TAG tlv1
Definition: lre_common.h:333
uint32_t cntErrorsB
Definition: lre_common.h:217
uint64_t NodeForgetTime_ms
Definition: lre_common.h:395
uint32_t cntRxC
Definition: lre_common.h:231
uint32_t cntErrWrongLanA
Definition: lre_common.h:210
uint32_t classifierNum
Definition: lre_common.h:358
uint32_t timeLastSeenA
Definition: lre_common.h:488
int32_t LRE_supervisionInit(Lre_Handle lreHandle)
Initializes the LRE supervision object.
Lre_NodeType type
Definition: lre_common.h:499
@ NT_NODE_TYPE_SANB
Definition: lre_common.h:459
@ NT_NODE_HSR_TYPE_VDAN
Definition: lre_common.h:450
Object for supervision frame handling.
Definition: lre_common.h:347
lreStatistics statistics
Definition: lre_common.h:530
ClockP_Object supTimerObj
Definition: lre_common.h:407
uint64_t lifecheckPeriod_ms
Definition: lre_common.h:398
@ NT_NODE_PRP_TYPE_REDBOX_DUP_DISCARD
Definition: lre_common.h:438
uint32_t cntUniqueC
Definition: lre_common.h:221
SUP_TAG supTag
Definition: lre_common.h:330
EnetDma_PktQ txSubmitQ
Definition: lre_common.h:382
@ LRE_MODE_PRP_DUP_ACCEPT
Definition: lre_common.h:159
uint32_t cntRxB
Definition: lre_common.h:197
uint32_t cntDuplicateB
Definition: lre_common.h:183
LRE Interface Statistics.
Definition: lre_common.h:169
uint32_t cntTxB
Definition: lre_common.h:202
SemaphoreP_Object rcvSupSem
Definition: lre_common.h:413
uint32_t cntProxyNodes
Definition: lre_common.h:245
Lre_Mode
LRE Mode Enum.
Definition: lre_common.h:154
void LRE_getStatistics(Lre_Handle lreHandle)
Updates the LRE statistics.
uint32_t cntNodes
Definition: lre_common.h:242
uint32_t cntErrWrongLanC
Definition: lre_common.h:236
TLV0_TAG tlv0
Definition: lre_common.h:339
uint8_t length
Definition: lre_common.h:300
SupervisionFrame svFrame
Definition: lre_common.h:385
struct Lre_Obj_s * Lre_Handle
LRE hsr-prp driver handle.
Definition: lre_common.h:561
uint16_t lastSeqNumber
Definition: lre_common.h:478
TLV2 Tag.
Definition: hsrPrp_red_common.h:127
Enet_Handle hEnet
Definition: lre_common.h:538
#define NT_NUM_OF_BUCKETS
Definition: lre_common.h:127
uint8_t lreRcvSupFrameTaskStack[LRE_SUP_SEND_HANDLER_TASK_STACK] __attribute__((aligned(32)))
uint32_t cntDuplicateC
Definition: lre_common.h:225
uint32_t cntRxSupA
Definition: lre_common.h:481
void LRE_supervisionDeinit(Lre_Handle lreHandle)
Deinitializes the supervision module.
uint32_t filterNum
Definition: lre_common.h:355
Structure for HSR/PRP redundancy handle members.
Definition: lre_common.h:536
@ NT_NODE_HSR_TYPE_REDBOX
Definition: lre_common.h:453
TLV0 Tag.
Definition: hsrPrp_red_common.h:137
uint32_t cntMultiB
Definition: lre_common.h:192
Structure for the nodestable hash table.
Definition: lre_common.h:512
TaskP_Object taskRcvSupHandlerObj
Definition: lre_common.h:404
@ NT_NODE_HSR_TYPE_DAN
Definition: lre_common.h:447
@ NT_NODE_PRP_TYPE_DAN_DUP_ACCEPT
Definition: lre_common.h:429
Structure to hold information about a single node.
Definition: lre_common.h:473
uint32_t cntErrorsC
Definition: lre_common.h:238
uint32_t cntOwnRxA
Definition: lre_common.h:205
Lre_statisticsObj statsObj
Definition: lre_common.h:553
uint32_t cntErrWrongLanB
Definition: lre_common.h:212
@ NT_NODE_TYPE_END
Definition: lre_common.h:465
Structure for statistics counters.
Definition: lre_common.h:528
uint32_t enableSupSendByDriver
Definition: lre_common.h:349
uint64_t clkTimerPeriod_ms
Definition: lre_common.h:391
#define LRE_SUP_SEND_HANDLER_TASK_STACK
Definition: lre_common.h:85
uint32_t cntDuplicateA
Definition: lre_common.h:179
void LRE_statisticsInit(Lre_Handle lreHandle)
Initializes the statistics object.
Lre_NodeType
LRE Remote Node Entry Type Enum.
Definition: lre_common.h:427
uint32_t cntRxSupB
Definition: lre_common.h:484
uint32_t enableSupRcvByDriver
Definition: lre_common.h:352
#define NT_BUCKET_SIZE
Definition: lre_common.h:124
SemaphoreP_Object sendSupSem
Definition: lre_common.h:410
uint32_t cntErrorsA
Definition: lre_common.h:215
uint32_t cntTxC
Definition: lre_common.h:233
uint8_t length
Definition: lre_common.h:285
EnetDma_TxChHandle hTxCh
Definition: lre_common.h:376
NodesTable nodesTable
Definition: lre_common.h:521
@ LRE_MODE_PRP_DUP_DISCARD
Definition: lre_common.h:156