eth_lm_dm_pkt.h (3083B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: eth_lm_dm_pkt.h 8 * Purpose: ETH_LM_DM Packet Format definitions 9 * common to SDK and uKernel. 10 */ 11 12 #ifndef _ETH_LM_DM_PKT_H_ 13 #define _ETH_LM_DM_PKT_H_ 14 15 #ifdef BCM_UKERNEL 16 /* Build for uKernel not SDK */ 17 #include "sdk_typedefs.h" 18 #else 19 #include <sal/types.h> 20 #endif 21 #include <soc/shared/olp_pkt.h> 22 #include <soc/shared/olp_pack.h> 23 #include <shared/pack.h> 24 25 26 27 /******************************************* 28 * Pack/Unpack Macros 29 * 30 * Data is packed/unpacked in/from Network byte order 31 */ 32 #define SHR_ETH_LM_DM_ENCAP_PACK_U8(_buf, _var) _SHR_PACK_U8(_buf, _var) 33 #define SHR_ETH_LM_DM_ENCAP_PACK_U16(_buf, _var) _SHR_PACK_U16(_buf, _var) 34 #define SHR_ETH_LM_DM_ENCAP_PACK_U32(_buf, _var) _SHR_PACK_U32(_buf, _var) 35 #define SHR_ETH_LM_DM_ENCAP_UNPACK_U8(_buf, _var) _SHR_UNPACK_U8(_buf, _var) 36 #define SHR_ETH_LM_DM_ENCAP_UNPACK_U16(_buf, _var) _SHR_UNPACK_U16(_buf, _var) 37 #define SHR_ETH_LM_DM_ENCAP_UNPACK_U32(_buf, _var) _SHR_UNPACK_U32(_buf, _var) 38 39 40 /****************************************** 41 * Network Packet Format definitions 42 * 43 * Note: LENGTH is specified in bytes unless noted otherwise 44 */ 45 46 /* ETH_LM_DM Control Packet lengths */ 47 #define SHR_ETH_LM_DM_HEADER_LENGTH 4 48 49 /*Macros for Packet replacement offset */ 50 #define ETH_LM_DM_RPL_OFFSET_START 14 51 #define ETH_LM_DM_RPL_OFFSET_DIVIDER_BY_SHIFT 1 52 53 54 /* Ether Type */ 55 #define SHR_ETH_LM_DM_L2_VLAN_ETYPE 0x8100 56 #define SHR_ETH_LM_DM_L2_ETYPE_OAM 0x8902 57 #define SHR_ETH_LM_DM_L2_HEADER_TAGGED_LENGTH 18 58 #define SHR_ETH_LM_DM_L2_HEADER_LENGTH 12 59 #define SHR_ETH_LM_DM_L2_HEADER_TAGGED_ETYPE_OFFSET 16 60 61 /* ETH_LM_DM op-code */ 62 #define SHR_ETH_LM_DM_OPCODE_LEN 1 63 #define SHR_ETH_LM_DM_OPCODE_LM_PREFIX 42 64 #define SHR_ETH_LM_DM_OPCODE_DM_PREFIX 44 65 66 67 #define SHR_ETH_LM_DM_OLP_L2_HEADER_LENGTH 18 68 #define SHR_ETH_LM_DM_OLP_RX_HEADER_LENGTH 20 69 70 71 72 /************************************* 73 * ETH_LM_DM Control Packet Format 74 */ 75 76 /* 77 * ETH_LM_DM Y.1731 Header 78 */ 79 typedef struct shr_eth_lm_dm_header_s { 80 /* Mandatory */ 81 #ifdef LE_HOST 82 uint32 tlv_offset:8, 83 flags_type:1, 84 flags_rsvd:7, 85 opcode:8, 86 version:5, 87 mel:3; 88 #else 89 uint32 mel:3, 90 version:5, 91 opcode:8, 92 flags_rsvd:7, 93 flags_type:1, 94 tlv_offset:8; 95 #endif /* LE_HOST */ 96 } shr_eth_lm_dm_header_t; 97 98 typedef struct shr_eth_lm_dm_slm_info_header_s { 99 100 uint16 src_mep_id; 101 uint16 resp_mep_id; 102 uint32 test_id; 103 104 105 } shr_eth_lm_dm_slm_info_header_t; 106 107 108 /* 109 * ETH_LM_DM OLP Header 110 */ 111 112 typedef struct soc_olp_rx_hdr olp_rx_hdr_t; 113 114 typedef struct soc_olp_tx_hdr olp_tx_hdr_t; 115 116 /* L2 Header */ 117 typedef struct soc_olp_l2_hdr_s _olp_l2_header_t; 118 119 120 121 122 #endif /* _ETH_LM_DM_PKT_H_ */