AM64x MCU+ SDK  08.02.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 /* ========================================================================== */
42 /* Include Files */
43 /* ========================================================================== */
44 
45 #include "hsrPrp_red_common.h"
46 
47 /* ========================================================================== */
48 /* Macros & Typedefs */
49 /* ========================================================================== */
50 
51 #define ETHER_TYPE_PRP_SUP ( ETHER_TYPE_RED_SUP )
52 
53 #define PRP_RCT_SIZE ( 6 )
54 #define PRP_TRAILER_MAGIC ( 0x88FB )
55 #define PRP_TRAILER_MAGIC_BIG_ENDIAN ( 0xFB88 )
56 #define PRP_LAN_A_MAGIC ( 0xA )
57 #define PRP_LAN_B_MAGIC ( 0xB )
58 #define PRP_RCT_SEQNO_OFFSET ( 0 )
59 #define PRP_RCT_LANID_LSDU_OFFSET ( 2 )
60 #define PRP_RCT_ETHTYPE_OFFSET ( 4 )
62 #define PRP_TLV1_TYPE_DUP_DISCARD ( 20 )
63 #define PRP_TLV1_TYPE_DUP_ACCEPT ( 21 )
65 #define PRP_SUP_SIZE ( RED_SUP_SIZE )
66 #define PRP_SUP_PATH ( RED_SUP_PATH )
67 #define PRP_SUP_VER ( RED_SUP_VER )
68 #define PRP_SUP_PAD ( RED_SUP_PAD )
69 
70 /*
71 PRP : Bit 0 in TX buffer descriptor is used for PRP vs EMAC mode
72  0 : PRP mode => Mask : 0x0
73  1 : EMAC mode => Mask : 0x1
74 */
75 #define PRP_MODE_MASK ( 0x0 )
76 #define EMAC_MODE_MASK ( 0x1 )
77 #define PRP_VS_EMAC_MODE_MASK ( PRP_MODE_MASK )
78 
80 typedef struct _PRP_RCT
81 {
82 
83  uint16_t seq_nr;
84  uint16_t lan_and_size;
85  uint16_t prp_suffix;
87 } PRP_RCT;
88 
90 typedef struct _PRP_SUP_FRAME
91 {
92 
93  uint8_t dst[ETHER_ADDR_LEN];
94  uint8_t src[ETHER_ADDR_LEN];
99  uint8_t padding[PRP_SUP_PAD];
102 } PRP_SUP_FRAME;
103 
104 /* ========================================================================== */
105 /* Function Declarations */
106 /* ========================================================================== */
119 void PrpFrameFill(hsrPrpHandle *hsrPrphandle, RED_FRAME *pRedFrame,
120  const uint8_t *pFrame,
121  int32_t frameSize);
131 void PrpFrameUpdateLanId(RED_FRAME *pPrpFrame, uint16_t pathId);
149 void PrpSupFrameUpdateSrcAdd(RED_FRAME *pRedFrame, uint8_t *srcAdd);
158 void PrpSupFrameUpdateLanId(RED_FRAME *pRedFrame, uint16_t lanId);
168  RED_FRAME *pRedFrame);
178 void PrpSupFrameUpdateTlv(RED_FRAME *pRedFrame, uint8_t type);
186 
189 #endif /* RED_PRP_H_ */
PRP_RCT::lan_and_size
uint16_t lan_and_size
Definition: hsrPrp_red_prp.h:84
SUP_TAG
Definition: hsrPrp_red_common.h:101
ETHER_ADDR_LEN
#define ETHER_ADDR_LEN
Definition: hsrPrp_red_common.h:77
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:111
PRP_SUP_FRAME::tlv2_tag
TLV2_TAG tlv2_tag
Definition: hsrPrp_red_prp.h:97
PRP_SUP_PAD
#define PRP_SUP_PAD
Definition: hsrPrp_red_prp.h:68
PrpFrameUpdateLanId
void PrpFrameUpdateLanId(RED_FRAME *pPrpFrame, uint16_t pathId)
hsrPrpHandle
struct hsrPrp_Config_s hsrPrpHandle
Definition: hsrPrp_handle.h:86
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:95
PRP_SUP_FRAME::prp_rct
PRP_RCT prp_rct
Definition: hsrPrp_red_prp.h:100
PRP_RCT::prp_suffix
uint16_t prp_suffix
Definition: hsrPrp_red_prp.h:85
TLV2_TAG
Definition: hsrPrp_red_common.h:121
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:96
PrpSupFrameIncrementSeqNr
void PrpSupFrameIncrementSeqNr(hsrPrpHandle *hsrPrphandle)
PRP_RCT::seq_nr
uint16_t seq_nr
Definition: hsrPrp_red_prp.h:83
PRP_SUP_FRAME::tlv0_tag
TLV0_TAG tlv0_tag
Definition: hsrPrp_red_prp.h:98
TLV0_TAG
Definition: hsrPrp_red_common.h:131
PRP_RCT
Definition: hsrPrp_red_prp.h:81
PrpSupFrameUpdateSrcAdd
void PrpSupFrameUpdateSrcAdd(RED_FRAME *pRedFrame, uint8_t *srcAdd)
Updates Source Address of a PRP Supervision frame.
RED_FRAME
Definition: hsrPrp_red_common.h:140
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:91