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