openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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_ */