eth_lm_dm_msg.h (7367B)
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_msg.h 8 * Purpose: ETH_LM_DM Messages definitions common to SDK and uKernel. 9 * 10 * Messages between SDK and uKernel. 11 */ 12 13 #ifndef _ETH_LM_DM_MSG_H_ 14 #define _ETH_LM_DM_MSG_H_ 15 16 #ifdef BCM_UKERNEL 17 /* Build for uKernel not SDK */ 18 #include "sdk_typedefs.h" 19 #else 20 #include <bcm/types.h> 21 #endif 22 23 #include <soc/defs.h> 24 #include <soc/shared/olp_pkt.h> 25 #include <soc/shared/mos_msg_common.h> 26 27 28 /******************************** 29 * ETH_LM_DM Control Messages 30 * 31 * SDK Host <--> uController 32 */ 33 34 35 /* 36 * ETH_LM_DM Initialization control message 37 */ 38 typedef struct shr_eth_lm_dm_msg_ctrl_init_s { 39 uint32 num_sessions; /* Max number of ETH_LM_DM sessions */ 40 uint32 rx_channel; /* Local RX DMA channel (0..3) */ 41 } shr_eth_lm_dm_msg_ctrl_init_t; 42 43 /* 44 * ETH_LM_DM Encapsulation control message 45 * 46 * Encapsulation Maximum length 47 * L2 + ETH_LM_DM 48 * 49 * 50 * ETH_LM_DM Encapsulation Table 51 * 52 * The ETH_LM_DM Encapsulation is maintained in the uKernel 53 * It contains the encapsulation for all current ETH_LM_DM sessions. 54 * 55 * A ETH_LM_DM encapsulation currently includes: 56 * L2 57 * [MPLS-TP] 58 * 59 * A ETH_LM_DM encapsulation does NOT include the ETH_LM_DM PDU (ETH_LM_DM Control Packet). 60 * This is built by the uKernel side. 61 */ 62 #define SHR_ETH_LM_DM_MAX_ENCAP_LENGTH 162 63 #define SHR_ETH_LM_DM_OLP_TX_HDR_LENGTH sizeof(soc_olp_tx_hdr_t) 64 #define SHR_ETH_LM_DM_OLP_L2_HDR_LENGTH sizeof(soc_olp_l2_hdr_t) 65 #define SHR_ETH_LM_DM_MEG_ID_LENGTH 48 66 67 68 /* 69 * ETH_LM_DM Session delete control message 70 */ 71 typedef struct shr_eth_lm_dm_msg_ctrl_sess_delete_s { 72 uint32 sess_id; 73 } shr_eth_lm_dm_msg_ctrl_sess_delete_t; 74 75 76 /* 77 * ETH_LM_DM Session Set control message 78 */ 79 typedef struct shr_eth_lm_dm_msg_ctrl_sess_set_s { 80 uint32 sess_id; 81 uint32 flags; 82 uint8 passive; 83 uint8 mel; /* MEG level */ 84 uint16 mep_id; 85 uint32 period; 86 uint32 eth_l2_encap_length; /* ETH_L2 encapsulation length */ 87 uint8 encap_data[SHR_ETH_LM_DM_MAX_ENCAP_LENGTH]; /* OLP and ETH L2 encap */ 88 int32 tx_port; 89 uint32 lm_counter_index; 90 uint16 vlan_id; 91 uint16 outer_vlan_id; 92 uint8 mep_type; 93 uint16 group_id; 94 95 } shr_eth_lm_dm_msg_ctrl_sess_set_t; 96 97 98 /* 99 * ETH_LM_DM Session Get control message 100 */ 101 typedef struct shr_eth_lm_dm_msg_ctrl_sess_get_s { 102 uint32 sess_id; 103 uint8 enable; 104 uint8 passive; 105 uint8 mel; 106 uint16 mep_id; 107 uint32 period; 108 uint32 eth_l2_encap_length; /* ETH_L2 encapsulation length */ 109 uint8 encap_data[SHR_ETH_LM_DM_MAX_ENCAP_LENGTH]; /* OLP and ETH L2 encap */ 110 uint32 tx_port; 111 uint32 lm_counter_index; 112 uint16 vlan_id; 113 uint16 outer_vlan_id; 114 uint8 mep_type; 115 uint16 group_id; 116 117 } shr_eth_lm_dm_msg_ctrl_sess_get_t; 118 119 120 /* 121 * ETH_LM_DM Statistics control messages (Request/Reply) 122 */ 123 typedef struct shr_eth_lm_dm_msg_ctrl_stat_req_s { 124 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 125 uint32 clear; /* Clear stats */ 126 } shr_eth_lm_dm_msg_ctrl_stat_req_t; 127 128 typedef struct shr_eth_lm_dm_msg_ctrl_stat_reply_s { 129 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 130 uint32 packets_in; /* Total packets in */ 131 uint32 packets_out; /* Total packets out */ 132 uint32 packets_drop; /* Total packets drop */ 133 } shr_eth_lm_dm_msg_ctrl_stat_reply_t; 134 135 /* 136 * ETH_LM_DM Loss Measurement add 137 */ 138 typedef struct shr_eth_lm_dm_msg_ctrl_loss_add_s { 139 uint32 flags; 140 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 141 uint32 period; 142 uint32 tx_cos; 143 uint8 tx_pri; 144 uint32 tx_qnum; 145 bcm_mac_t dst_mac; 146 uint8 olp_tx_hdr[SHR_ETH_LM_DM_OLP_TX_HDR_LENGTH]; 147 uint32 olp_tx_hdr_length; 148 uint32 remote_mep_id; 149 } shr_eth_lm_dm_msg_ctrl_loss_add_t; 150 151 /* 152 * ETH_LM_DM Loss Measurement delete 153 */ 154 typedef struct shr_eth_lm_dm_msg_ctrl_loss_delete_s { 155 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 156 } shr_eth_lm_dm_msg_ctrl_loss_delete_t; 157 158 /* 159 * ETH_LM_DM Loss Measurement get 160 */ 161 typedef struct shr_eth_lm_dm_msg_ctrl_loss_get_s { 162 uint32 flags; 163 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 164 uint32 period; 165 uint32 loss_threshold; 166 uint32 loss_nearend; 167 uint32 loss_farend; 168 uint32 tx_nearend; 169 uint32 rx_nearend; 170 uint32 tx_farend; 171 uint32 rx_farend; 172 uint32 rx_oam_packets; 173 uint32 tx_oam_packets; 174 uint32 tx_cos; 175 uint8 tx_pri; 176 uint32 tx_qnum; 177 bcm_mac_t dst_mac; 178 uint8 olp_tx_hdr[SHR_ETH_LM_DM_OLP_TX_HDR_LENGTH]; 179 uint32 olp_tx_hdr_length; 180 uint32 remote_mep_id; 181 } shr_eth_lm_dm_msg_ctrl_loss_get_t; 182 183 /* 184 * ETH_LM_DM Delay Measurement add 185 */ 186 typedef struct shr_eth_lm_dm_msg_ctrl_delay_add_s { 187 uint32 flags; 188 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 189 uint32 period; 190 uint32 tx_cos; 191 uint8 tx_pri; 192 uint32 tx_qnum; 193 uint8 dm_format; 194 bcm_mac_t dst_mac; 195 uint8 olp_tx_hdr[SHR_ETH_LM_DM_OLP_TX_HDR_LENGTH]; 196 uint32 olp_tx_hdr_length; 197 uint32 remote_mep_id; 198 } shr_eth_lm_dm_msg_ctrl_delay_add_t; 199 200 /* 201 * ETH_LM_DM Delay Measurement delete 202 */ 203 typedef struct shr_eth_lm_dm_msg_ctrl_delay_delete_s { 204 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 205 } shr_eth_lm_dm_msg_ctrl_delay_delete_t; 206 207 /* 208 * ETH_LM_DM Delay Measurement get 209 */ 210 typedef struct shr_eth_lm_dm_msg_ctrl_delay_get_s { 211 uint32 flags; 212 uint32 sess_id; /* ETH_LM_DM session (endpoint) id */ 213 uint32 period; 214 uint32 delay_seconds; 215 uint32 delay_nanoseconds; 216 uint32 txf_seconds; 217 uint32 txf_nanoseconds; 218 uint32 rxf_seconds; 219 uint32 rxf_nanoseconds; 220 uint32 txb_seconds; 221 uint32 txb_nanoseconds; 222 uint32 rxb_seconds; 223 uint32 rxb_nanoseconds; 224 uint32 rx_oam_packets; 225 uint32 tx_oam_packets; 226 uint32 tx_cos; 227 uint8 tx_pri; 228 uint32 tx_qnum; 229 uint8 dm_format; 230 bcm_mac_t dst_mac; 231 uint8 olp_tx_hdr[SHR_ETH_LM_DM_OLP_TX_HDR_LENGTH]; 232 uint32 olp_tx_hdr_length; 233 uint32 remote_mep_id; 234 } shr_eth_lm_dm_msg_ctrl_delay_get_t; 235 236 237 /* 238 * ETH_LM_DM control messages 239 */ 240 typedef union shr_eth_lm_dm_msg_ctrl_s { 241 shr_eth_lm_dm_msg_ctrl_init_t init; 242 shr_eth_lm_dm_msg_ctrl_sess_set_t sess_set; 243 shr_eth_lm_dm_msg_ctrl_sess_get_t sess_get; 244 shr_eth_lm_dm_msg_ctrl_sess_delete_t sess_delete; 245 shr_eth_lm_dm_msg_ctrl_stat_req_t stat_req; 246 shr_eth_lm_dm_msg_ctrl_stat_reply_t stat_reply; 247 shr_eth_lm_dm_msg_ctrl_loss_add_t loss_add; 248 shr_eth_lm_dm_msg_ctrl_loss_get_t loss_get; 249 shr_eth_lm_dm_msg_ctrl_loss_delete_t loss_delete; 250 shr_eth_lm_dm_msg_ctrl_delay_add_t delay_add; 251 shr_eth_lm_dm_msg_ctrl_delay_get_t delay_get; 252 shr_eth_lm_dm_msg_ctrl_delay_delete_t delay_delete; 253 } shr_eth_lm_dm_msg_ctrl_t; 254 255 256 /**************************************** 257 * ETH_LM_DM event message 258 */ 259 #define ETH_LM_DM_BTE_EVENT_PM_STATS_COUNTER_ROLLOVER 0x000001 260 261 #endif /* _ETH_LM_DM_MSG_H_ */