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

stk_trunk.h (7375B)


      1 /** \file stk/stk_trunk.h
      2  *
      3  * Stacking trunk procedures.
      4  *
      5  *  stacking trunk , stacking fec  ...
      6  */
      7 /*
      8  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      9  * 
     10  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
     11  */
     12 #ifndef DNX_STK_TRUNK_H_INCLUDED
     13 /*
     14  * {
     15  */
     16 #define DNX_STK_TRUNK_H_INCLUDED
     17 
     18 #ifndef BCM_DNX_SUPPORT
     19 #error "This file is for use by DNX family only!"
     20 #endif
     21 
     22 /*
     23  * }
     24  */
     25 /*
     26  * Include files.
     27  * {
     28  */
     29 #include <bcm/error.h>
     30 #include <bcm/types.h>
     31 #include <bcm/stack.h>
     32 #include <bcm/trunk.h>
     33 
     34 #include <shared/shrextend/shrextend_debug.h>
     35 
     36 #define DNX_TRUNK_STACKING_PEER_TMD_IS_VALID(unit, peer_tm_domain) \
     37     ((peer_tm_domain < 0) || (peer_tm_domain >= dnx_data_stack.general.nof_tm_domains_max_get(unit)))
     38 
     39 /**
     40  * \brief 
     41  * Get stk trunks given a tm domain id.
     42  * 
     43  * \param [in] unit - Unit # 
     44  * \param [in] tm_domain - tm domain id
     45  * \param [in] stk_trunk_max - max amount of stack trunks in supplied array
     46  * \param [out] stk_trunk_array - returned found stack trunks in supplied array
     47  * \param [out] stk_trunk_count - the found amount of stack trunks 
     48  * 
     49  * \return
     50  *     see shr_error_e
     51  * \remark
     52  *   * None
     53  * \see
     54  *   * None
     55  */
     56 shr_error_e dnx_stk_trunk_domain_get(
     57     int unit,
     58     int tm_domain,
     59     int stk_trunk_max,
     60     bcm_trunk_t * stk_trunk_array,
     61     int *stk_trunk_count);
     62 
     63 /**
     64  * \brief 
     65  * Update trunk domain fec map.
     66  * 
     67  * \param [in] unit - Unit # 
     68  * \param [in] tm_domain - tm domain id
     69  * 
     70  * \return
     71  *     see shr_error_e
     72  * \remark
     73  *   * None
     74  * \see
     75  *   * None
     76  */
     77 shr_error_e dnx_stk_trunk_domain_fec_map_update(
     78     int unit,
     79     int tm_domain);
     80 
     81 /**
     82  * \brief 
     83  * Set stack lag fec mapping.
     84  * 
     85  * \param [in] unit - Unit # 
     86  * \param [in] tm_domain - tm domain id
     87  * \param [in] entry - entry id for  Stack fec resolve table 
     88  * \param [in] stack_lag - stack lag connect to peer domain
     89  * 
     90  * \return
     91  *     see shr_error_e
     92  * \remark
     93  *   * None
     94  * \see
     95  *   * None
     96  */
     97 shr_error_e dnx_stk_trunk_fec_map_stack_lag_set(
     98     int unit,
     99     uint32 tm_domain,
    100     uint32 entry,
    101     uint32 stack_lag);
    102 
    103 /**
    104  * \brief 
    105  * Get stack lag fec mapping.
    106  * 
    107  * \param [in] unit - Unit # 
    108  * \param [in] tm_domain - tm domain id
    109  * \param [in] entry - entry id for  Stack fec resolve table 
    110  * \param [out] stack_lag - stack lag connect to peer domain
    111  * 
    112  * \return
    113  *     see shr_error_e
    114  * \remark
    115  *   * None
    116  * \see
    117  *   * None
    118  */
    119 shr_error_e dnx_stk_trunk_fec_map_stack_lag_get(
    120     int unit,
    121     uint32 tm_domain,
    122     uint32 entry,
    123     uint32 *stack_lag);
    124 
    125 /**
    126  * \brief 
    127  * Set stack fec resolve table.
    128  * 
    129  * \param [in] unit - Unit # 
    130  * \param [in] flow_id - flow id
    131  * \param [in] lag_lb_key - lag load balance key
    132  * \param [in] stack_lag - stack lag connect to peer domain
    133  * 
    134  * \return
    135  *     see shr_error_e
    136  * \remark
    137  *   * None
    138  * \see
    139  *   * None
    140  */
    141 shr_error_e dnx_stk_trunk_stack_fec_resolve_set(
    142     int unit,
    143     uint32 flow_id,
    144     uint32 lag_lb_key,
    145     uint32 stack_lag);
    146 
    147 /**
    148  * \brief 
    149  * Get stack fec resolve table.
    150  * 
    151  * \param [in] unit - Unit # 
    152  * \param [in] flow_id - flow id
    153  * \param [in] lag_lb_key - lag load balance key
    154  * \param [out] stack_lag - stack lag connect to peer domain
    155  * 
    156  * \return
    157  *     see shr_error_e
    158  * \remark
    159  *   * None
    160  * \see
    161  *   * None
    162  */
    163 shr_error_e dnx_stk_trunk_stack_fec_resolve_get(
    164     int unit,
    165     uint32 flow_id,
    166     uint32 lag_lb_key,
    167     uint32 *stack_lag);
    168 
    169 /**
    170  * \brief 
    171  * Set stack lag pacekts base queue id.
    172  * 
    173  * \param [in] unit - Unit # 
    174  * \param [in] tm_domain - tm domain id
    175  * \param [in] entry -entry id for  Stack trunk resolve table 
    176  * \param [in] base_queue - base queue for destination system port
    177  * 
    178  * \return
    179  *     see shr_error_e
    180  * \remark
    181  *   * None
    182  * \see
    183  *   * None
    184  */
    185 shr_error_e dnx_stk_trunk_stack_lag_packets_base_queue_id_set(
    186     int unit,
    187     uint32 tm_domain,
    188     uint32 entry,
    189     uint32 base_queue);
    190 
    191 /**
    192  * \brief 
    193  * Get stack lag pacekts base queue id.
    194  * 
    195  * \param [in] unit - Unit # 
    196  * \param [in] tm_domain - tm domain id
    197  * \param [in] entry -entry id for  Stack trunk resolve table 
    198  * \param [out] base_queue - base queue for destination system port
    199  * 
    200  * \return
    201  *     see shr_error_e
    202  * \remark
    203  *   * None
    204  * \see
    205  *   * None
    206  */
    207 shr_error_e dnx_stk_trunk_stack_lag_packets_base_queue_id_get(
    208     int unit,
    209     uint32 tm_domain,
    210     uint32 entry,
    211     uint32 *base_queue);
    212 
    213 /**
    214  * \brief 
    215  * Set stack trunk resolve table.
    216  * 
    217  * \param [in] unit - Unit # 
    218  * \param [in] stack_lag - stack lag connect to peer domain
    219  * \param [in] lag_lb_key -lag load balance key
    220  * \param [in] base_queue - base queue for destination system port
    221  * 
    222  * \return
    223  *     see shr_error_e
    224  * \remark
    225  *   * None
    226  * \see
    227  *   * None
    228  */
    229 shr_error_e dnx_stk_trunk_stack_trunk_resolve_set(
    230     int unit,
    231     uint32 stack_lag,
    232     uint32 lag_lb_key,
    233     uint32 base_queue);
    234 
    235 /**
    236  * \brief 
    237  * Get stack trunk resolve table.
    238  * 
    239  * \param [in] unit - Unit # 
    240  * \param [in] stack_lag - stack lag connect to peer domain
    241  * \param [in] lag_lb_key -lag load balance key
    242  * \param [out] base_queue - base queue for destination system port
    243  * 
    244  * \return
    245  *     see shr_error_e
    246  * \remark
    247  *   * None
    248  * \see
    249  *   * None
    250  */
    251 shr_error_e dnx_stk_trunk_stack_trunk_resolve_get(
    252     int unit,
    253     uint32 lag_lb_key,
    254     uint32 stack_lag,
    255     uint32 *base_queue);
    256 
    257 /**
    258  * \brief - Verify stack trunk id.
    259  */
    260 int dnx_stk_trunk_trunk_id_verify(
    261     int unit,
    262     bcm_trunk_t stk_trunk);
    263 
    264 /**
    265  * \brief - set stacking trunk with members.
    266  *
    267  *
    268  * \param [in] unit - unit number
    269  * \param [in] trunk_id - trunk id
    270  * \param [in] member_count - number of members in array
    271  * \param [in] member_array - array of members to put in the
    272  *        trunk
    273  *
    274  * \return
    275  *   shr_error_e
    276  *
    277  * \remark
    278  *   * None
    279  * \see
    280  *   * None
    281  */
    282 shr_error_e dnx_stk_trunk_stacking_set(
    283     int unit,
    284     bcm_trunk_t trunk_id,
    285     int member_count,
    286     bcm_trunk_member_t * member_array);
    287 
    288 /**
    289  * \brief - get trunk info and members
    290  *
    291  * \param [in] unit - unit number
    292  * \param [in] trunk_id - trunk id
    293  * \param [in] member_max - max members to get
    294  * \param [in] member_array - array for retrived members
    295  * \param [in] member_count - nof retrieved members
    296  *
    297  * \return
    298  *   shr_error_e
    299  *
    300  * \remark
    301  *   * None
    302  * \see
    303  *   * None
    304  */
    305 shr_error_e dnx_stk_trunk_stacking_get(
    306     int unit,
    307     bcm_trunk_t trunk_id,
    308     int member_max,
    309     bcm_trunk_member_t * member_array,
    310     int *member_count);
    311 
    312 /**
    313  * \brief - add member to stacking trunk. added member can have flags as
    314  *        mentioned in bcm_dnx_trunk_set API.
    315  *
    316  * \param [in] unit - unit number
    317  * \param [in] trunk_id - trunk id
    318  * \param [in] member - member info
    319  *
    320  * \return
    321  *   shr_error_e
    322  *
    323  * \remark
    324  *   * None
    325  * \see
    326  *   * None
    327  */
    328 shr_error_e dnx_stk_trunk_stacking_member_add(
    329     int unit,
    330     bcm_trunk_t trunk_id,
    331     bcm_trunk_member_t * member);
    332 
    333 /**
    334  * \brief - delete a member from trunk.
    335  *
    336  * \param [in] unit - unit number
    337  * \param [in] trunk_id - trunk id
    338  * \param [in] member - member info
    339  *
    340  * \return
    341  *   shr_error_e
    342  *
    343  * \remark
    344  *   * None
    345  * \see
    346  *   * None
    347  */
    348 shr_error_e dnx_stk_trunk_stacking_member_delete(
    349     int unit,
    350     bcm_trunk_t trunk_id,
    351     bcm_trunk_member_t * member);
    352 #endif /* DNX_STK_TRUNK_H_INCLUDED */