AM64x MCU+ SDK  08.02.00
hsrPrp_red_common.h File Reference

Introduction

Commonly used Macros, structures and Offsets.

Copyright (C) 2021 Texas Instruments Incorporated

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Go to the source code of this file.

Data Structures

struct  SUP_TAG
 
struct  TLV1_TAG
 
struct  TLV2_TAG
 
struct  TLV0_TAG
 
struct  RED_FRAME
 
struct  Mac_t
 MAC Address. More...
 
struct  RED_STATISTICS
 LRE Interface Statistics. More...
 
struct  RED_INDEX_ARRAY_ENTRY
 Index array Entry. More...
 
struct  RED_BIN_ARRAY_ENTRY
 Bin array Entry. More...
 
struct  RED_NODE_TABLE_ENTRY
 Node Table Entry. More...
 
struct  RED_NODE_TABLE
 Node Table. More...
 

Macros

#define OS_HostToNet16(x)
 
#define OS_NetToHost16(x)
 
#define OS_HostToNet32(x)
 
#define OS_NetToHost32(x)
 
#define RED_SUP_SIZE   ( 52 )
 
#define RED_SUP_PATH   ( 0 )
 
#define RED_SUP_VER   ( 1 )
 
#define RED_SUP_PAD   ( 24 )
 
#define ETHER_ADDR_LEN   ( 6 )
 
#define ETHER_TYPE_ARP   ( 0x0806 )
 
#define ETHER_TYPE_VLAN   ( 0x8100 )
 
#define ETHER_TYPE_RED_SUP   ( 0x88FB )
 
#define ETHER_TYPE_RED_SUP_BIG_ENDIEN   ( 0xFB88 )
 
#define ETHER_TYPE_SIZE   ( 2 )
 
#define ETHER_HEADER_LEN   ( 14 )
 
#define ETHER_VLAN_PT_LEN   ( 4 )
 
#define ETHER_TYPE_OFFSET   ( 12 )
 
#define ARP_IP_SRC_OFFSET   ( 28 )
 
#define ARP_IP_DST_OFFSET   ( 38 )
 
#define RED_FRAME_MIN_SIZE   ( 66 )
 
#define RED_FRAME_VLAN_MIN_SIZE   ( 70 )
 
#define RED_TLV2_TYPE   ( 30 )
 
#define ICSS_EMAC_MAXMTU_HSR   1528
 
#define RED_DEBUG_MSG(...)
 

Enumerations

enum  LreRowStatus_t {
  LRE_ROW_STATUS_ACTIVE = 1, LRE_ROW_STATUS_NOT_IN_SERVICE, LRE_ROW_STATUS_NOT_READY, LRE_ROW_STATUS_CREATE_AND_GO,
  LRE_ROW_STATUS_CREATE_AND_WAIT, LRE_ROW_STATUS_DESTROY
}
 LRE Row Status. More...
 
enum  LreNodeType_t { LRE_NODE_TYPE_PRP_MODE_1 = 1, LRE_NODE_TYPE_HSR }
 LRE Node Type. More...
 
enum  RedPort_t { RED_PORT_A = ICSS_EMAC_PORT_1, RED_PORT_B = ICSS_EMAC_PORT_2 }
 RED Port. More...
 
enum  LrePortAdminState_t { LRE_PORT_NOT_ACTIVE = 1, LRE_PORT_ACTIVE = 2 }
 LRE Port Admin State. More...
 
enum  LreLinkStatus_t { LRE_LINK_UP = 1, LRE_LINK_DOWN = 2 }
 LRE Link Status. More...
 
enum  LreDuplicateDiscard_t { LRE_DD_DO_NOT_DISCARD = 1, LRE_DD_DISCARD }
 LRE Duplicate Discard. More...
 
enum  LreTransparentReception_t { LRE_TR_REMOVE_RCT = 1, LRE_TR_PASS_RCT }
 LRE Transparent Reception. More...
 
enum  HSRMode_t {
  HSR_COMMON_MODE_H = 1, HSR_COMMON_MODE_N, HSR_COMMON_MODE_T, HSR_COMMON_MODE_U,
  HSR_COMMON_MODE_M
}
 LRE HSR Mode. More...
 
enum  SwitchingEndNode_t {
  SN_NON_BRIDGING_NODE = 1, SN_BRIDGING_UNSPECIFIED, SN_PRP_NODE, SN_HSR_REDBOX_SAN,
  SN_HSR_NODE, SN_HSR_REDBOX_HSR, SN_HSR_REDBOX_PRP_A, SN_HSR_REDBOX_PRP_B
}
 The switching end node functionality. More...
 
enum  LreRedBoxIdentity_t {
  REDBOX_ID1A = 2, REDBOX_ID1B, REDBOX_ID2A, REDBOX_ID2B,
  REDBOX_ID3A, REDBOX_ID3B, REDBOX_ID4A, REDBOX_ID4B,
  REDBOX_ID5A, REDBOX_ID5B, REDBOX_ID6A, REDBOX_ID6B,
  REDBOX_ID7A, REDBOX_ID7B
}
 LRE RedBox Identity. More...
 
enum  LreTruthValue_t { LRE_FALSE = 0, LRE_TRUE = 1 }
 LRE Truth Value. More...
 
enum  LreTableOperation_t { LRE_TABLE_NO_OP = 0, LRE_TABLE_CLEAR }
 LRE Table Operation. More...
 
enum  LreIfStat_t {
  LRE_IF_STATS_CNT_TX_A = 0, LRE_IF_STATS_CNT_TX_B, LRE_IF_STATS_CNT_TX_C, LRE_IF_STATS_CNT_ERR_WRONG_LAN_A,
  LRE_IF_STATS_CNT_ERR_WRONG_LAN_B, LRE_IF_STATS_CNT_ERR_WRONG_LAN_C, LRE_IF_STATS_CNT_RX_A, LRE_IF_STATS_CNT_RX_B,
  LRE_IF_STATS_CNT_RX_C, LRE_IF_STATS_CNT_ERRORS_A, LRE_IF_STATS_CNT_ERRORS_B, LRE_IF_STATS_CNT_ERRORS_C,
  LRE_IF_STATS_CNT_NODES, LRE_IF_STATS_CNT_PROXY_NODES, LRE_IF_STATS_CNT_UNIQUE_A, LRE_IF_STATS_CNT_UNIQUE_B,
  LRE_IF_STATS_CNT_UNIQUE_C, LRE_IF_STATS_CNT_DUPLICATE_A, LRE_IF_STATS_CNT_DUPLICATE_B, LRE_IF_STATS_CNT_DUPLICATE_C,
  LRE_IF_STATS_CNT_MULTI_A, LRE_IF_STATS_CNT_MULTI_B, LRE_IF_STATS_CNT_MULTI_C, LRE_IF_STATS_CNT_OWN_RX_A,
  LRE_IF_STATS_CNT_OWN_RX_B
}
 LRE Interface Statistics Entry. More...
 
enum  RemNodeType_t {
  RED_REM_NODE_TYPE_DANP = 0, RED_REM_NODE_TYPE_REDBOXP, RED_REM_NODE_TYPE_VDANP, RED_REM_NODE_TYPE_DANH,
  RED_REM_NODE_TYPE_REDBOXH, RED_REM_NODE_TYPE_VDANH, RED_REM_NODE_TYPE_SAN, RED_REM_NODE_TYPE_UNKNOWN
}
 Remote Node Type. More...
 
enum  RED_STATUS { RED_OK = 0, RED_ERR }
 RED Status. More...
 

Macro Definition Documentation

◆ OS_HostToNet16

#define OS_HostToNet16 (   x)
Value:
((((x) & 0x00ff) << 8) | \
(((x) & 0xff00) >> 8))

◆ OS_NetToHost16

#define OS_NetToHost16 (   x)
Value:
((((x) & 0x00ff) << 8) | \
(((x) & 0xff00) >> 8))

◆ OS_HostToNet32

#define OS_HostToNet32 (   x)
Value:
((((x) & 0x000000ff) << 24) | \
(((x) & 0x0000ff00) << 8) | \
(((x) & 0x00ff0000) >> 8) | \
(((x) & 0xff000000) >> 24))

◆ OS_NetToHost32

#define OS_NetToHost32 (   x)
Value:
((((x) & 0x000000ff) << 24) | \
(((x) & 0x0000ff00) << 8) | \
(((x) & 0x00ff0000) >> 8) | \
(((x) & 0xff000000) >> 24))

◆ RED_SUP_SIZE

#define RED_SUP_SIZE   ( 52 )

LSDU size of a RED Supervision frame

◆ RED_SUP_PATH

#define RED_SUP_PATH   ( 0 )

Unused, set to 0

◆ RED_SUP_VER

#define RED_SUP_VER   ( 1 )

Protocol version

◆ RED_SUP_PAD

#define RED_SUP_PAD   ( 24 )

Number of padding bytes in RED Supervision frame

◆ ETHER_ADDR_LEN

#define ETHER_ADDR_LEN   ( 6 )

Ethernet address length is 6 bytes

◆ ETHER_TYPE_ARP

#define ETHER_TYPE_ARP   ( 0x0806 )

ARP ether type

◆ ETHER_TYPE_VLAN

#define ETHER_TYPE_VLAN   ( 0x8100 )

VLAN ether type

◆ ETHER_TYPE_RED_SUP

#define ETHER_TYPE_RED_SUP   ( 0x88FB )

Ether type for supervision frames

◆ ETHER_TYPE_RED_SUP_BIG_ENDIEN

#define ETHER_TYPE_RED_SUP_BIG_ENDIEN   ( 0xFB88 )

Supervision frame identifier in Big Endian format

◆ ETHER_TYPE_SIZE

#define ETHER_TYPE_SIZE   ( 2 )

Ether type size

◆ ETHER_HEADER_LEN

#define ETHER_HEADER_LEN   ( 14 )

Default ethernet header is 14 bytes

◆ ETHER_VLAN_PT_LEN

#define ETHER_VLAN_PT_LEN   ( 4 )

VLAN Protocol Type length is 4 bytes

◆ ETHER_TYPE_OFFSET

#define ETHER_TYPE_OFFSET   ( 12 )

Offset from the beginning of a frame to the ether type

◆ ARP_IP_SRC_OFFSET

#define ARP_IP_SRC_OFFSET   ( 28 )

Offset from the beginning of a frame to the ARP IP Source

◆ ARP_IP_DST_OFFSET

#define ARP_IP_DST_OFFSET   ( 38 )

Offset from the beginning of a frame to the ARP IP Destination

◆ RED_FRAME_MIN_SIZE

#define RED_FRAME_MIN_SIZE   ( 66 )

The minimum RED frame size with no VLAN tag - no FCS!

◆ RED_FRAME_VLAN_MIN_SIZE

#define RED_FRAME_VLAN_MIN_SIZE   ( 70 )

The minimum RED frame size with a VLAN tag - no FCS!

◆ RED_TLV2_TYPE

#define RED_TLV2_TYPE   ( 30 )

Indicates that the source node is a RedBox

◆ ICSS_EMAC_MAXMTU_HSR

#define ICSS_EMAC_MAXMTU_HSR   1528

◆ RED_DEBUG_MSG

#define RED_DEBUG_MSG (   ...)

Enumeration Type Documentation

◆ LreRowStatus_t

LRE Row Status.

Enumerator
LRE_ROW_STATUS_ACTIVE 
LRE_ROW_STATUS_NOT_IN_SERVICE 
LRE_ROW_STATUS_NOT_READY 
LRE_ROW_STATUS_CREATE_AND_GO 
LRE_ROW_STATUS_CREATE_AND_WAIT 
LRE_ROW_STATUS_DESTROY 

◆ LreNodeType_t

LRE Node Type.

Enumerator
LRE_NODE_TYPE_PRP_MODE_1 
LRE_NODE_TYPE_HSR 

◆ RedPort_t

enum RedPort_t

RED Port.

Enumerator
RED_PORT_A 
RED_PORT_B 

◆ LrePortAdminState_t

LRE Port Admin State.

Enumerator
LRE_PORT_NOT_ACTIVE 
LRE_PORT_ACTIVE 

◆ LreLinkStatus_t

LRE Link Status.

Enumerator
LRE_LINK_UP 
LRE_LINK_DOWN 

◆ LreDuplicateDiscard_t

LRE Duplicate Discard.

Enumerator
LRE_DD_DO_NOT_DISCARD 
LRE_DD_DISCARD 

◆ LreTransparentReception_t

LRE Transparent Reception.

Enumerator
LRE_TR_REMOVE_RCT 
LRE_TR_PASS_RCT 

◆ HSRMode_t

enum HSRMode_t

LRE HSR Mode.

Enumerator
HSR_COMMON_MODE_H 
HSR_COMMON_MODE_N 
HSR_COMMON_MODE_T 
HSR_COMMON_MODE_U 
HSR_COMMON_MODE_M 

◆ SwitchingEndNode_t

The switching end node functionality.

Enumerator
SN_NON_BRIDGING_NODE 
SN_BRIDGING_UNSPECIFIED 
SN_PRP_NODE 
SN_HSR_REDBOX_SAN 
SN_HSR_NODE 
SN_HSR_REDBOX_HSR 
SN_HSR_REDBOX_PRP_A 
SN_HSR_REDBOX_PRP_B 

◆ LreRedBoxIdentity_t

LRE RedBox Identity.

Enumerator
REDBOX_ID1A 
REDBOX_ID1B 
REDBOX_ID2A 
REDBOX_ID2B 
REDBOX_ID3A 
REDBOX_ID3B 
REDBOX_ID4A 
REDBOX_ID4B 
REDBOX_ID5A 
REDBOX_ID5B 
REDBOX_ID6A 
REDBOX_ID6B 
REDBOX_ID7A 
REDBOX_ID7B 

◆ LreTruthValue_t

LRE Truth Value.

Enumerator
LRE_FALSE 
LRE_TRUE 

◆ LreTableOperation_t

LRE Table Operation.

Enumerator
LRE_TABLE_NO_OP 
LRE_TABLE_CLEAR 

◆ LreIfStat_t

LRE Interface Statistics Entry.

Enumerator
LRE_IF_STATS_CNT_TX_A 
LRE_IF_STATS_CNT_TX_B 
LRE_IF_STATS_CNT_TX_C 
LRE_IF_STATS_CNT_ERR_WRONG_LAN_A 
LRE_IF_STATS_CNT_ERR_WRONG_LAN_B 
LRE_IF_STATS_CNT_ERR_WRONG_LAN_C 
LRE_IF_STATS_CNT_RX_A 
LRE_IF_STATS_CNT_RX_B 
LRE_IF_STATS_CNT_RX_C 
LRE_IF_STATS_CNT_ERRORS_A 
LRE_IF_STATS_CNT_ERRORS_B 
LRE_IF_STATS_CNT_ERRORS_C 
LRE_IF_STATS_CNT_NODES 
LRE_IF_STATS_CNT_PROXY_NODES 
LRE_IF_STATS_CNT_UNIQUE_A 
LRE_IF_STATS_CNT_UNIQUE_B 
LRE_IF_STATS_CNT_UNIQUE_C 
LRE_IF_STATS_CNT_DUPLICATE_A 
LRE_IF_STATS_CNT_DUPLICATE_B 
LRE_IF_STATS_CNT_DUPLICATE_C 
LRE_IF_STATS_CNT_MULTI_A 
LRE_IF_STATS_CNT_MULTI_B 
LRE_IF_STATS_CNT_MULTI_C 
LRE_IF_STATS_CNT_OWN_RX_A 
LRE_IF_STATS_CNT_OWN_RX_B 

◆ RemNodeType_t

Remote Node Type.

Enumerator
RED_REM_NODE_TYPE_DANP 
RED_REM_NODE_TYPE_REDBOXP 
RED_REM_NODE_TYPE_VDANP 
RED_REM_NODE_TYPE_DANH 
RED_REM_NODE_TYPE_REDBOXH 
RED_REM_NODE_TYPE_VDANH 
RED_REM_NODE_TYPE_SAN 
RED_REM_NODE_TYPE_UNKNOWN 

◆ RED_STATUS

enum RED_STATUS

RED Status.

Enumerator
RED_OK 
RED_ERR