AM64x MCU+ SDK  08.03.00
hsrPrp_red_prp.h
Go to the documentation of this file.
1 
38 #ifndef RED_PRP_H_
39 #define RED_PRP_H_
40 
41 #ifdef __cplusplus
42 extern "C"
43 {
44 #endif
45 
46 
47 /* ========================================================================== */
48 /* Include Files */
49 /* ========================================================================== */
50 
51 #include "hsrPrp_red_common.h"
52 
53 /* ========================================================================== */
54 /* Macros & Typedefs */
55 /* ========================================================================== */
56 
57 #define ETHER_TYPE_PRP_SUP ( ETHER_TYPE_RED_SUP )
58 
59 #define PRP_RCT_SIZE ( 6 )
60 #define PRP_TRAILER_MAGIC ( 0x88FB )
61 #define PRP_TRAILER_MAGIC_BIG_ENDIAN ( 0xFB88 )
62 #define PRP_LAN_A_MAGIC ( 0xA )
63 #define PRP_LAN_B_MAGIC ( 0xB )
64 #define PRP_RCT_SEQNO_OFFSET ( 0 )
65 #define PRP_RCT_LANID_LSDU_OFFSET ( 2 )
66 #define PRP_RCT_ETHTYPE_OFFSET ( 4 )
68 #define PRP_TLV1_TYPE_DUP_DISCARD ( 20 )
69 #define PRP_TLV1_TYPE_DUP_ACCEPT ( 21 )
71 #define PRP_SUP_SIZE ( RED_SUP_SIZE )
72 #define PRP_SUP_PATH ( RED_SUP_PATH )
73 #define PRP_SUP_VER ( RED_SUP_VER )
74 #define PRP_SUP_PAD ( RED_SUP_PAD )
75 
76 /*
77 PRP : Bit 0 in TX buffer descriptor is used for PRP vs EMAC mode
78  0 : PRP mode => Mask : 0x0
79  1 : EMAC mode => Mask : 0x1
80 */
81 #define PRP_MODE_MASK ( 0x0 )
82 #define EMAC_MODE_MASK ( 0x1 )
83 #define PRP_VS_EMAC_MODE_MASK ( PRP_MODE_MASK )
84 
86 typedef struct _PRP_RCT
87 {
88 
89  uint16_t seq_nr;
90  uint16_t lan_and_size;
91  uint16_t prp_suffix;
93 } PRP_RCT;
94 
96 typedef struct _PRP_SUP_FRAME
97 {
98 
99  uint8_t dst[ETHER_ADDR_LEN];
100  uint8_t src[ETHER_ADDR_LEN];
105  uint8_t padding[PRP_SUP_PAD];
108 } PRP_SUP_FRAME;
109 
110 /* ========================================================================== */
111 /* Function Declarations */
112 /* ========================================================================== */
125 void PrpFrameFill(hsrPrpHandle *hsrPrphandle, RED_FRAME *pRedFrame,
126  const uint8_t *pFrame,
127  int32_t frameSize);
137 void PrpFrameUpdateLanId(RED_FRAME *pPrpFrame, uint16_t pathId);
155 void PrpSupFrameUpdateSrcAdd(RED_FRAME *pRedFrame, uint8_t *srcAdd);
164 void PrpSupFrameUpdateLanId(RED_FRAME *pRedFrame, uint16_t lanId);
174  RED_FRAME *pRedFrame);
184 void PrpSupFrameUpdateTlv(RED_FRAME *pRedFrame, uint8_t type);
192 
196 #ifdef __cplusplus
197 }
198 #endif
199 
200 #endif /* RED_PRP_H_ */
PRP_RCT::lan_and_size
uint16_t lan_and_size
Definition: hsrPrp_red_prp.h:90
SUP_TAG
Definition: hsrPrp_red_common.h:107
ETHER_ADDR_LEN
#define ETHER_ADDR_LEN
Definition: hsrPrp_red_common.h:83
PrpSupFrameUpdateSeqNr
void PrpSupFrameUpdateSeqNr(hsrPrpHandle *hsrPrphandle, RED_FRAME *pRedFrame)
type
uint16_t type
Definition: tisci_rm_core.h:1
TLV1_TAG
Definition: hsrPrp_red_common.h:117
PRP_SUP_FRAME::tlv2_tag
TLV2_TAG tlv2_tag
Definition: hsrPrp_red_prp.h:103
PRP_SUP_PAD
#define PRP_SUP_PAD
Definition: hsrPrp_red_prp.h:74
PrpFrameUpdateLanId
void PrpFrameUpdateLanId(RED_FRAME *pPrpFrame, uint16_t pathId)
hsrPrpHandle
struct hsrPrp_Config_s hsrPrpHandle
Definition: hsrPrp_handle.h:92
PrpSupFrameAllocate
RED_FRAME * PrpSupFrameAllocate(hsrPrpHandle *hsrPrphandle)
Allocates a RED_FRAME that holds PRP Supervision frame.
hsrPrp_red_common.h
Commonly used Macros, structures and Offsets.
PrpSupFrameUpdateTlv
void PrpSupFrameUpdateTlv(RED_FRAME *pRedFrame, uint8_t type)
PRP_SUP_FRAME::sup_tag
SUP_TAG sup_tag
Definition: hsrPrp_red_prp.h:101
PRP_SUP_FRAME::prp_rct
PRP_RCT prp_rct
Definition: hsrPrp_red_prp.h:106
PRP_RCT::prp_suffix
uint16_t prp_suffix
Definition: hsrPrp_red_prp.h:91
TLV2_TAG
Definition: hsrPrp_red_common.h:127
PrpFrameFill
void PrpFrameFill(hsrPrpHandle *hsrPrphandle, RED_FRAME *pRedFrame, const uint8_t *pFrame, int32_t frameSize)
PRP_SUP_FRAME::tlv1_tag
TLV1_TAG tlv1_tag
Definition: hsrPrp_red_prp.h:102
PrpSupFrameIncrementSeqNr
void PrpSupFrameIncrementSeqNr(hsrPrpHandle *hsrPrphandle)
PRP_RCT::seq_nr
uint16_t seq_nr
Definition: hsrPrp_red_prp.h:89
PRP_SUP_FRAME::tlv0_tag
TLV0_TAG tlv0_tag
Definition: hsrPrp_red_prp.h:104
TLV0_TAG
Definition: hsrPrp_red_common.h:137
PRP_RCT
Definition: hsrPrp_red_prp.h:87
PrpSupFrameUpdateSrcAdd
void PrpSupFrameUpdateSrcAdd(RED_FRAME *pRedFrame, uint8_t *srcAdd)
Updates Source Address of a PRP Supervision frame.
RED_FRAME
Definition: hsrPrp_red_common.h:146
PrpSupFrameUpdateLanId
void PrpSupFrameUpdateLanId(RED_FRAME *pRedFrame, uint16_t lanId)
Updates LAN ID of a PRP Supervision frame.
PRP_SUP_FRAME
Definition: hsrPrp_red_prp.h:97