trunk.h (41081B)
1 /* 2 * DO NOT EDIT THIS FILE! 3 * This file is auto-generated. 4 * Edits to this file will be lost when it is regenerated. 5 * 6 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 7 * 8 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 9 */ 10 11 #ifndef BCMINT_LTSW_MBCM_TRUNK_H 12 #define BCMINT_LTSW_MBCM_TRUNK_H 13 14 #include <bcm/types.h> 15 #include <bcm/trunk.h> 16 #include <bcm_int/ltsw/flexctr.h> 17 18 #include <bcm_int/ltsw/trunk_int.h> 19 20 #include <sal/sal_types.h> 21 22 /*! 23 * \brief Convert trunk type Id to L2 destination. 24 * 25 * \param [in] unit Unit Number. 26 * \param [in] t_type Trunk Type. 27 * \param [in] t_id Type-based Trunk Identifier. 28 * \param [in] t_priv Trunk private information. 29 * \param [out] l2_dest L2 destination. 30 * 31 * \retval SHR_E_NONE No errors. 32 * \retval !SHR_E_NONE Failure. 33 */ 34 typedef int (*trunk_type_id_to_l2_dest_f)( 35 int unit, 36 bcmint_trunk_type_t t_type, 37 bcmint_trunk_id_t t_id, 38 bcmint_trunk_priv_info_t *t_priv, 39 int *l2_dest); 40 41 /*! 42 * \brief Convert L2 destination to trunk type Id. 43 * 44 * \param [in] unit Unit Number. 45 * \param [in] l2_dest L2 destination. 46 * \param [out] t_type Trunk Type. 47 * \param [out] t_id Type-based Trunk Identifier. 48 * 49 * \retval SHR_E_NONE No errors. 50 * \retval !SHR_E_NONE Failure. 51 */ 52 typedef int (*trunk_l2_dest_to_type_id_f)( 53 int unit, 54 int l2_dest, 55 bcmint_trunk_type_t *t_type, 56 bcmint_trunk_id_t *t_id); 57 58 /*! 59 * \brief Judge the gport is channelized access port or not. 60 * 61 * \param [in] unit Unit Number. 62 * \param [in] gport Gport Number. 63 * \param [out] is_channelized_access_port TRUE/False: Is or Isn't. 64 * 65 * \retval SHR_E_NONE No errors. 66 * \retval !SHR_E_NONE Failure. 67 */ 68 typedef int (*trunk_gport_is_channelized_access_port_f)( 69 int unit, 70 bcm_gport_t gport, 71 bool *is_channelized_access_port); 72 73 /*! 74 * \brief Get TRUNK module public information. 75 * 76 * \param [in] unit Unit Number. 77 * \param [out] t_pub Trunk public information. 78 * 79 * \retval SHR_E_NONE No errors. 80 * \retval !SHR_E_NONE Failure. 81 */ 82 typedef int (*trunk_pub_info_get_f)( 83 int unit, 84 bcmint_trunk_pub_info_t *t_pub); 85 86 /*! 87 * \brief Compare two psc values and return the result. 88 * 89 * \param [in] unit Unit Number. 90 * \param [in] t_type Trunk Type. 91 * \param [in] psc0 First Port Selection Criteria. 92 * \param [in] psc1 Second Port Selection Criteria. 93 * \param [in] exact Exact match. 94 * \param [out] result TRUE/False: Same or Not. 95 * 96 * \retval SHR_E_NONE No errors. 97 * \retval !SHR_E_NONE Failure. 98 */ 99 typedef int (*trunk_psc_compare_f)( 100 int unit, 101 bcmint_trunk_type_t t_type, 102 int psc0, 103 int psc1, 104 int exact, 105 bool *result); 106 107 /*! 108 * \brief Initialized the trunk module. 109 * 110 * \param [in] unit Unit Number. 111 * 112 * \retval SHR_E_NONE No errors. 113 * \retval !SHR_E_NONE Failure. 114 */ 115 typedef int (*trunk_init_f)(int unit); 116 117 /*! 118 * \brief De-init trunk module. 119 * 120 * \param [in] unit Unit Number. 121 * 122 * \retval SHR_E_NONE No errors. 123 * \retval !SHR_E_NONE Failure. 124 */ 125 typedef int (*trunk_detach_f)(int unit); 126 127 /*! 128 * \brief Clear trunk related LT tables. 129 * 130 * \param [in] unit Unit Number. 131 * 132 * \retval SHR_E_NONE No errors. 133 * \retval !SHR_E_NONE Failure. 134 */ 135 typedef int (*trunk_clear_f)(int unit); 136 137 /*! 138 * \brief Create a specific trunk with identifier. 139 * 140 * \param [in] unit Unit Number. 141 * \param [in] t_id Type-based Trunk Identifier. 142 * \param [in] t_type Trunk Type. 143 * \param [in] t_priv Trunk private information. 144 * 145 * \retval SHR_E_NONE No errors. 146 * \retval !SHR_E_NONE Failure. 147 */ 148 typedef int (*trunk_create_f)( 149 int unit, 150 bcmint_trunk_id_t t_id, 151 bcmint_trunk_type_t t_type, 152 bcmint_trunk_priv_info_t *t_priv); 153 154 /*! 155 * \brief Validate the trunk input parameters before trunk set function is executed. 156 * 157 * \param [in] unit Unit Number. 158 * \param [in] t_id Type-based Trunk Identifier. 159 * \param [in] t_type Trunk Type. 160 * \param [in] trunk_info Trunk Information. 161 * \param [in] member_count Trunk Member Count. 162 * \param [in] member_array Trunk Member Array. 163 * \param [in] op Trunk Member Operation Code. 164 * \param [in] member Trunk Member. 165 * 166 * \retval SHR_E_NONE No errors. 167 * \retval !SHR_E_NONE Failure. 168 */ 169 typedef int (*trunk_params_validate_f)( 170 int unit, 171 bcmint_trunk_id_t t_id, 172 bcmint_trunk_type_t t_type, 173 bcm_trunk_info_t *trunk_info, 174 int member_count, 175 bcm_trunk_member_t *member_array, 176 int op, 177 bcm_trunk_member_t *member); 178 179 /*! 180 * \brief Get the trunk configuration from HW. 181 * 182 * \param [in] unit Unit Number. 183 * \param [in] t_id Type-based Trunk Identifier. 184 * \param [in] t_type Trunk Type. 185 * \param [in] t_priv Trunk private information. 186 * \param [out] trunk_info Trunk Information. 187 * \param [in] member_max Max Number of Trunk Members. 188 * \param [out] member_array Trunk Member Array. 189 * \param [out] member_count Trunk Member Count. 190 * 191 * \retval SHR_E_NONE No errors. 192 * \retval !SHR_E_NONE Failure. 193 */ 194 typedef int (*trunk_get_f)( 195 int unit, 196 bcmint_trunk_id_t t_id, 197 bcmint_trunk_type_t t_type, 198 bcmint_trunk_priv_info_t *t_priv, 199 bcm_trunk_info_t *trunk_info, 200 int member_max, 201 bcm_trunk_member_t *member_array, 202 int *member_count); 203 204 /*! 205 * \brief Update the trunk configuration. 206 * 207 * \param [in] unit Unit Number. 208 * \param [in] t_id Type-based Trunk Identifier. 209 * \param [in] t_type Trunk Type. 210 * \param [in] trunk_info Trunk Information. 211 * \param [in] member_count Trunk Member Count. 212 * \param [in] member_array Trunk Member Array. 213 * \param [in] op Trunk Member Operation Code. 214 * \param [in] member Trunk Member. 215 * \param [in] t_priv Trunk private information. 216 * \param [in] t_update Trunk update information. 217 * 218 * \retval SHR_E_NONE No errors. 219 * \retval !SHR_E_NONE Failure. 220 */ 221 typedef int (*trunk_update_f)( 222 int unit, 223 bcmint_trunk_id_t t_id, 224 bcmint_trunk_type_t t_type, 225 bcm_trunk_info_t *trunk_info, 226 int member_count, 227 bcm_trunk_member_t *member_array, 228 int op, 229 bcm_trunk_member_t *member, 230 bcmint_trunk_priv_info_t *t_priv, 231 bcmint_trunk_update_info_t *t_update); 232 233 /*! 234 * \brief Destroy a specific trunk with identifier. 235 * 236 * \param [in] unit Unit Number. 237 * \param [in] t_id Type-based Trunk Identifier. 238 * \param [in] t_type Trunk Type. 239 * \param [in] t_priv Trunk private information. 240 * 241 * \retval SHR_E_NONE No errors. 242 * \retval !SHR_E_NONE Failure. 243 */ 244 typedef int (*trunk_destroy_f)( 245 int unit, 246 bcmint_trunk_id_t t_id, 247 bcmint_trunk_type_t t_type, 248 bcmint_trunk_priv_info_t *t_priv); 249 250 /*! 251 * \brief Find a specific trunk with member gport. 252 * 253 * \param [in] unit Unit Number. 254 * \param [in] gport Gport Number. 255 * \param [out] t_id Type-based Trunk Identifier. 256 * \param [out] t_type Trunk Type. 257 * 258 * \retval SHR_E_NONE No errors. 259 * \retval !SHR_E_NONE Failure. 260 */ 261 typedef int (*trunk_find_f)( 262 int unit, 263 bcm_gport_t gport, 264 bcmint_trunk_id_t *t_id, 265 bcmint_trunk_type_t *t_type); 266 267 /*! 268 * \brief Find a specific virtual trunk with member gport. 269 * 270 * \param [in] unit Unit Number. 271 * \param [in] gport Gport Number. 272 * \param [out] vp_lag_vp The VPLAG vp Id. 273 * 274 * \retval SHR_E_NONE No errors. 275 * \retval !SHR_E_NONE Failure. 276 */ 277 typedef int (*trunk_find_virtual_f)( 278 int unit, 279 bcm_gport_t gport, 280 int *vp_lag_vp); 281 282 /*! 283 * \brief To notify the trunk is updated. 284 * 285 * \param [in] unit Unit Number. 286 * \param [in] t_id Type-based Trunk Identifier. 287 * \param [in] t_type Trunk Type. 288 * 289 * \retval SHR_E_NONE No errors. 290 * \retval !SHR_E_NONE Failure. 291 */ 292 typedef int (*trunk_notify_f)( 293 int unit, 294 bcmint_trunk_id_t t_id, 295 bcmint_trunk_type_t t_type); 296 297 /*! 298 * \brief Extract trunk failover flags from trunk configuration flags. 299 * 300 * \param [in] unit Unit Number. 301 * \param [in] flags Trunk Configuration Flags. 302 * \param [in] t_type Trunk Type. 303 * \param [in] fail_flags Trunk Failover Flags. 304 * 305 * \retval SHR_E_NONE No errors. 306 * \retval !SHR_E_NONE Failure. 307 */ 308 typedef int (*trunk_failover_flags_extract_f)( 309 int unit, 310 uint32_t flags, 311 bcmint_trunk_type_t t_type, 312 uint32_t *fail_flags); 313 314 /*! 315 * \brief Validate the trunk failover psc configuration. 316 * 317 * \param [in] unit Unit Number. 318 * \param [in] t_type Trunk Type. 319 * \param [in] psc Port Selection Criteria. 320 * 321 * \retval SHR_E_NONE No errors. 322 * \retval !SHR_E_NONE Failure. 323 */ 324 typedef int (*trunk_failover_psc_validate_f)( 325 int unit, 326 bcmint_trunk_type_t t_type, 327 int psc); 328 329 /*! 330 * \brief Set trunk failover members to a specific port member. 331 * 332 * \param [in] unit Unit Number. 333 * \param [in] t_id Type-based Trunk Identifier. 334 * \param [in] t_type Trunk Type. 335 * \param [in] fail_port Local Failover Port Gport Number. 336 * \param [in] psc Port Selection Criteria. 337 * \param [in] ftp_count Failto Port Count. 338 * \param [in] ftp Failto Port Array. 339 * 340 * \retval SHR_E_NONE No errors. 341 * \retval !SHR_E_NONE Failure. 342 */ 343 typedef int (*trunk_failover_set_f)( 344 int unit, 345 bcmint_trunk_id_t t_id, 346 bcmint_trunk_type_t t_type, 347 bcm_gport_t fail_port, 348 int psc, 349 int ftp_count, 350 bcm_gport_t *ftp); 351 352 /*! 353 * \brief Get trunk failover members of a specific port member. 354 * 355 * \param [in] unit Unit Number. 356 * \param [in] t_id Type-based Trunk Identifier. 357 * \param [in] t_type Trunk Type. 358 * \param [in] fail_port Local Failover Port Gport Number. 359 * \param [out] psc Port Selection Criteria. 360 * \param [in] ftp_max Failto Port Max Count. 361 * \param [out] ftp Failto Port Array. 362 * \param [out] ftp_count Failto Port Count. 363 * 364 * \retval SHR_E_NONE No errors. 365 * \retval !SHR_E_NONE Failure. 366 */ 367 typedef int (*trunk_failover_get_f)( 368 int unit, 369 bcmint_trunk_id_t t_id, 370 bcmint_trunk_type_t t_type, 371 bcm_gport_t fail_port, 372 int *psc, 373 int ftp_max, 374 bcm_gport_t *ftp, 375 int *ftp_count); 376 377 /*! 378 * \brief Update trunk failover configuration for a specific trunk. 379 * 380 * \param [in] unit Unit Number. 381 * \param [in] t_id Type-based Trunk Identifier. 382 * \param [in] t_type Trunk Type. 383 * \param [in] psc Port Selection Criteria. 384 * \param [in] fail_flags Failover Configuration Flags. 385 * \param [in] fail_port Local Failover Port Gport Number. 386 * \param [in] ftp_max Failto Port Max Number. 387 * \param [in] member_count Trunk Member Count. 388 * \param [in] member_array Trunk Member Array. 389 * 390 * \retval SHR_E_NONE No errors. 391 * \retval !SHR_E_NONE Failure. 392 */ 393 typedef int (*trunk_failover_update_f)( 394 int unit, 395 bcmint_trunk_id_t t_id, 396 bcmint_trunk_type_t t_type, 397 int psc, 398 uint32_t fail_flags, 399 bcm_gport_t fail_port, 400 int ftp_max, 401 int member_count, 402 bcm_trunk_member_t *member_array); 403 404 /*! 405 * \brief Enable/disable fabric trunk resolution. 406 * 407 * \param [in] unit Unit Number. 408 * \param [in] t_id Type-based Trunk Identifier. 409 * \param [in] o_type Fabric trunk override Type. 410 * \param [in] o_index Fabric trunk override Type based index. 411 * \param [in] enable Enable/Disable fabric trunk resolution. 412 * 413 * \retval SHR_E_NONE No errors. 414 * \retval !SHR_E_NONE Failure. 415 */ 416 typedef int (*trunk_override_set_f)( 417 int unit, 418 bcmint_trunk_id_t t_id, 419 bcmint_trunk_override_type_t o_type, 420 int o_index, 421 int enable); 422 423 /*! 424 * \brief Get fabric trunk resolution enable/disable status. 425 * 426 * \param [in] unit Unit Number. 427 * \param [in] t_id Type-based Trunk Identifier. 428 * \param [in] o_type Fabric trunk override Type. 429 * \param [in] o_index Fabric trunk override Type based index. 430 * \param [out] enable Enable/Disable fabric trunk resolution. 431 * 432 * \retval SHR_E_NONE No errors. 433 * \retval !SHR_E_NONE Failure. 434 */ 435 typedef int (*trunk_override_get_f)( 436 int unit, 437 bcmint_trunk_id_t t_id, 438 bcmint_trunk_override_type_t o_type, 439 int o_index, 440 int *enable); 441 442 /*! 443 * \brief Set trunk member port status. 444 * 445 * \param [in] unit Unit Number. 446 * \param [in] port Port Number. 447 * \param [in] status Trunk member link status. 448 * 449 * \retval SHR_E_NONE No errors. 450 * \retval !SHR_E_NONE Failure. 451 */ 452 typedef int (*trunk_member_status_set_f)( 453 int unit, 454 bcm_port_t port, 455 int status); 456 457 /*! 458 * \brief Get trunk member port status. 459 * 460 * \param [in] unit Unit Number. 461 * \param [in] port Port Number. 462 * \param [out] status Trunk member link status. 463 * 464 * \retval SHR_E_NONE No errors. 465 * \retval !SHR_E_NONE Failure. 466 */ 467 typedef int (*trunk_member_status_get_f)( 468 int unit, 469 bcm_port_t port, 470 int *status); 471 472 /*! 473 * \brief Expand a port bitmap to include all associated trunk member ports. 474 * 475 * \param [in] unit Unit Number. 476 * \param [in] t_pub Trunk public information. 477 * \param [in/out] pbmp Pointer to returned expanded port bitmap. 478 * 479 * \retval SHR_E_NONE No errors. 480 * \retval !SHR_E_NONE Failure. 481 */ 482 typedef int (*trunk_bitmap_expand_f)( 483 int unit, 484 bcmint_trunk_pub_info_t *t_pub, 485 bcm_pbmp_t *pbmp); 486 487 /*! 488 * \brief Add the specified trunk group to an existing MAC multicast entry. 489 * 490 * \param [in] unit Unit Number. 491 * \param [in] t_id Trunk Identifier. 492 * \param [in] vid VLAN ID. 493 * \param [in] mac MAC address. 494 * 495 * \retval SHR_E_NONE Success. 496 * \retval SHR_E_INIT Trunk module has not been initialized. 497 * \retval SHR_E_BADID Invalid or unsupported trunk ID. 498 * \retval SHR_E_NOT_FOUND Specified trunk ID is not currently defined. 499 */ 500 typedef int (*trunk_mcast_join_f)( 501 int unit, 502 bcm_trunk_t t_id, 503 bcm_vlan_t vid, 504 bcm_mac_t mac); 505 506 /*! 507 * \brief Find trunk DLB Identifier. 508 * 509 * \param [in] unit Unit Number. 510 * \param [in] t_type Trunk Type. 511 * \param [in] t_id Type-based Trunk Identifier. 512 * \param [in] t_priv Trunk private information. 513 * \param [out] dlb_id Trunk dlb identifier. 514 * 515 * \retval SHR_E_NONE No errors. 516 * \retval !SHR_E_NONE Failure. 517 */ 518 typedef int (*trunk_find_dlb_id_f)( 519 int unit, 520 bcmint_trunk_type_t t_type, 521 bcmint_trunk_id_t t_id, 522 bcmint_trunk_priv_info_t *t_priv, 523 int *dlb_id); 524 525 /*! 526 * \brief Update the VPLAG member. 527 * 528 * \param [in] unit Unit Number. 529 * \param [in] vp_lag_vp The VPLAG vp Id. 530 * \param [in] gport The generic port number. 531 * 532 * \retval SHR_E_NONE No errors. 533 * \retval !SHR_E_NONE Failure. 534 */ 535 typedef int (*trunk_vp_lag_member_update_f)( 536 int unit, 537 int vp_lag_vp, 538 bcm_gport_t gport); 539 540 /*! 541 * \brief Get the CML bits for a vp_lag port. 542 * 543 * \param [in] unit Unit Number. 544 * \param [in] vp_lag_vp The VPLAG vp Id. 545 * \param [out] flags The L2 CML FLAGS. 546 * 547 * \retval SHR_E_NONE No errors. 548 * \retval !SHR_E_NONE Failure. 549 */ 550 typedef int (*trunk_vp_lag_vp_learn_get_f)( 551 int unit, 552 int vp_lag_vp, 553 uint32_t *flags); 554 555 /*! 556 * \brief Set the CML bits for a vp_lag port. 557 * 558 * \param [in] unit Unit Number. 559 * \param [in] vp_lag_vp The VPLAG vp Id. 560 * \param [in] flags The L2 CML FLAGS. 561 * 562 * \retval SHR_E_NONE No errors. 563 * \retval !SHR_E_NONE Failure. 564 */ 565 typedef int (*trunk_vp_lag_vp_learn_set_f)( 566 int unit, 567 int vp_lag_vp, 568 uint32_t flags); 569 570 /*! 571 * \brief Set Hash Control for L2, L3 and Multipath 572 * 573 * \param [in] unit Unit Number. 574 * \param [in] arg BCM_HASH_CONTROL_TRUNK_XXX 575 * 576 * \retval SHR_E_NONE No errors. 577 * \retval !SHR_E_NONE Failure. 578 */ 579 typedef int (*trunk_sc_hash_control_set_f)( 580 int unit, 581 uint32_t arg); 582 583 /*! 584 * \brief Get Hash Control for L2, L3 and Multipath 585 * 586 * \param [in] unit Unit Number. 587 * \param [out] arg BCM_HASH_CONTROL_TRUNK_XXX 588 * 589 * \retval SHR_E_NONE No errors. 590 * \retval !SHR_E_NONE Failure. 591 */ 592 typedef int (*trunk_sc_hash_control_get_f)( 593 int unit, 594 uint32_t *arg); 595 596 /*! 597 * \brief Set flow based hash selection for Trunk unicast 598 * 599 * \param [in] unit Unit Number. 600 * \param [in] arg Enable/Disable 601 * 602 * \retval SHR_E_NONE No errors. 603 * \retval !SHR_E_NONE Failure. 604 */ 605 typedef int (*trunk_sc_lb_control_unicast_set_f)( 606 int unit, 607 uint32_t arg); 608 609 /*! 610 * \brief Get flow based hash selection for Trunk unicast 611 * 612 * \param [in] unit Unit Number. 613 * \param [out] arg Enable/Disable 614 * 615 * \retval SHR_E_NONE No errors. 616 * \retval !SHR_E_NONE Failure. 617 */ 618 typedef int (*trunk_sc_lb_control_unicast_get_f)( 619 int unit, 620 uint32_t *arg); 621 622 /*! 623 * \brief Set flow based hash selection for Trunk non-unicast 624 * 625 * \param [in] unit Unit Number. 626 * \param [in] arg Enable/Disable 627 * 628 * \retval SHR_E_NONE No errors. 629 * \retval !SHR_E_NONE Failure. 630 */ 631 typedef int (*trunk_sc_lb_control_nonunicast_set_f)( 632 int unit, 633 uint32_t arg); 634 635 /*! 636 * \brief Get flow based hash selection for Trunk non-unicast 637 * 638 * \param [in] unit Unit Number. 639 * \param [out] arg Enable/Disable 640 * 641 * \retval SHR_E_NONE No errors. 642 * \retval !SHR_E_NONE Failure. 643 */ 644 typedef int (*trunk_sc_lb_control_nonunicast_get_f)( 645 int unit, 646 uint32_t *arg); 647 648 /*! 649 * \brief Attach stat counter ID to a given trunk ID. 650 * 651 * \param [in] unit Unit Number. 652 * \param [in] tid Trunk Identifier. 653 * \param [in] info Counter information. 654 * 655 * \retval SHR_E_NONE No errors. 656 * \retval !SHR_E_NONE Failure. 657 */ 658 typedef int (*trunk_flexctr_attach_f)( 659 int unit, 660 bcm_trunk_t tid, 661 bcmi_ltsw_flexctr_counter_info_t *info); 662 663 /*! 664 * \brief Detach stat counter ID to a given trunk ID. 665 * 666 * \param [in] unit Unit Number. 667 * \param [in] tid Trunk Identifier. 668 * 669 * \retval SHR_E_NONE No errors. 670 * \retval !SHR_E_NONE Failure. 671 */ 672 typedef int (*trunk_flexctr_detach_f)( 673 int unit, 674 bcm_trunk_t tid); 675 676 /*! 677 * \brief Get stat counter ID if associated with given trunk ID. 678 * 679 * \param [in] unit Unit Number. 680 * \param [in] tid Trunk Identifier. 681 * \param [out] info Counter information. 682 * 683 * \retval SHR_E_NONE No errors. 684 * \retval !SHR_E_NONE Failure. 685 */ 686 typedef int (*trunk_flexctr_info_get_f)( 687 int unit, 688 bcm_trunk_t tid, 689 bcmi_ltsw_flexctr_counter_info_t *info); 690 691 /*! 692 * \brief Set object for a given trunk ID. 693 * 694 * \param [in] unit Unit Number. 695 * \param [in] tid Trunk Identifier. 696 * \param [in] value Object value. 697 * 698 * \retval SHR_E_NONE No errors. 699 * \retval !SHR_E_NONE Failure. 700 */ 701 typedef int (*trunk_flexctr_object_set_f)( 702 int unit, 703 bcm_trunk_t tid, 704 uint16_t value); 705 706 /*! 707 * \brief Get object for a given trunk ID. 708 * 709 * \param [in] unit Unit Number. 710 * \param [in] tid Trunk Identifier. 711 * \param [out] value Object value. 712 * 713 * \retval SHR_E_NONE No errors. 714 * \retval !SHR_E_NONE Failure. 715 */ 716 typedef int (*trunk_flexctr_object_get_f)( 717 int unit, 718 bcm_trunk_t tid, 719 uint16_t *value); 720 721 /*! 722 * \brief Trunk driver structure. 723 */ 724 typedef struct mbcm_ltsw_trunk_drv_s { 725 726 /*! Convert trunk type Id to L2 destination. */ 727 trunk_type_id_to_l2_dest_f trunk_type_id_to_l2_dest; 728 729 /*! Convert L2 destination to trunk type Id. */ 730 trunk_l2_dest_to_type_id_f trunk_l2_dest_to_type_id; 731 732 /*! Judge the gport is channelized access port or not. */ 733 trunk_gport_is_channelized_access_port_f trunk_gport_is_channelized_access_port; 734 735 /*! Get TRUNK module public information. */ 736 trunk_pub_info_get_f trunk_pub_info_get; 737 738 /*! Compare two psc values and return the result. */ 739 trunk_psc_compare_f trunk_psc_compare; 740 741 /*! Initialized the trunk module. */ 742 trunk_init_f trunk_init; 743 744 /*! De-init trunk module. */ 745 trunk_detach_f trunk_detach; 746 747 /*! Clear trunk related LT tables. */ 748 trunk_clear_f trunk_clear; 749 750 /*! Create a specific trunk with identifier. */ 751 trunk_create_f trunk_create; 752 753 /*! Validate the trunk input parameters before trunk set function is executed. */ 754 trunk_params_validate_f trunk_params_validate; 755 756 /*! Get the trunk configuration from HW. */ 757 trunk_get_f trunk_get; 758 759 /*! Update the trunk configuration. */ 760 trunk_update_f trunk_update; 761 762 /*! Destroy a specific trunk with identifier. */ 763 trunk_destroy_f trunk_destroy; 764 765 /*! Find a specific trunk with member gport. */ 766 trunk_find_f trunk_find; 767 768 /*! Find a specific virtual trunk with member gport. */ 769 trunk_find_virtual_f trunk_find_virtual; 770 771 /*! To notify the trunk is updated. */ 772 trunk_notify_f trunk_notify; 773 774 /*! Extract trunk failover flags from trunk configuration flags. */ 775 trunk_failover_flags_extract_f trunk_failover_flags_extract; 776 777 /*! Validate the trunk failover psc configuration. */ 778 trunk_failover_psc_validate_f trunk_failover_psc_validate; 779 780 /*! Set trunk failover members to a specific port member. */ 781 trunk_failover_set_f trunk_failover_set; 782 783 /*! Get trunk failover members of a specific port member. */ 784 trunk_failover_get_f trunk_failover_get; 785 786 /*! Update trunk failover configuration for a specific trunk. */ 787 trunk_failover_update_f trunk_failover_update; 788 789 /*! Enable/disable fabric trunk resolution. */ 790 trunk_override_set_f trunk_override_set; 791 792 /*! Get fabric trunk resolution enable/disable status. */ 793 trunk_override_get_f trunk_override_get; 794 795 /*! Set trunk member port status. */ 796 trunk_member_status_set_f trunk_member_status_set; 797 798 /*! Get trunk member port status. */ 799 trunk_member_status_get_f trunk_member_status_get; 800 801 /*! Expand a port bitmap to include all associated trunk member ports. */ 802 trunk_bitmap_expand_f trunk_bitmap_expand; 803 804 /*! Add the specified trunk group to an existing MAC multicast entry. */ 805 trunk_mcast_join_f trunk_mcast_join; 806 807 /*! Find trunk DLB Identifier. */ 808 trunk_find_dlb_id_f trunk_find_dlb_id; 809 810 /*! Update the VPLAG member. */ 811 trunk_vp_lag_member_update_f trunk_vp_lag_member_update; 812 813 /*! Get the CML bits for a vp_lag port. */ 814 trunk_vp_lag_vp_learn_get_f trunk_vp_lag_vp_learn_get; 815 816 /*! Set the CML bits for a vp_lag port. */ 817 trunk_vp_lag_vp_learn_set_f trunk_vp_lag_vp_learn_set; 818 819 /*! Set Hash Control for L2, L3 and Multipath */ 820 trunk_sc_hash_control_set_f trunk_sc_hash_control_set; 821 822 /*! Get Hash Control for L2, L3 and Multipath */ 823 trunk_sc_hash_control_get_f trunk_sc_hash_control_get; 824 825 /*! Set flow based hash selection for Trunk unicast */ 826 trunk_sc_lb_control_unicast_set_f trunk_sc_lb_control_unicast_set; 827 828 /*! Get flow based hash selection for Trunk unicast */ 829 trunk_sc_lb_control_unicast_get_f trunk_sc_lb_control_unicast_get; 830 831 /*! Set flow based hash selection for Trunk non-unicast */ 832 trunk_sc_lb_control_nonunicast_set_f trunk_sc_lb_control_nonunicast_set; 833 834 /*! Get flow based hash selection for Trunk non-unicast */ 835 trunk_sc_lb_control_nonunicast_get_f trunk_sc_lb_control_nonunicast_get; 836 837 /*! Attach stat counter ID to a given trunk ID. */ 838 trunk_flexctr_attach_f trunk_flexctr_attach; 839 840 /*! Detach stat counter ID to a given trunk ID. */ 841 trunk_flexctr_detach_f trunk_flexctr_detach; 842 843 /*! Get stat counter ID if associated with given trunk ID. */ 844 trunk_flexctr_info_get_f trunk_flexctr_info_get; 845 846 /*! Set object for a given trunk ID. */ 847 trunk_flexctr_object_set_f trunk_flexctr_object_set; 848 849 /*! Get object for a given trunk ID. */ 850 trunk_flexctr_object_get_f trunk_flexctr_object_get; 851 852 } mbcm_ltsw_trunk_drv_t; 853 854 /*! 855 * \brief Set the TRUNK driver of the device. 856 * 857 * \param [in] unit Unit Number. 858 * \param [in] drv Trunk driver to set. 859 * 860 * \retval SHR_E_NONE No errors. 861 * \retval !SHR_E_NONE Failure. 862 */ 863 extern int 864 mbcm_ltsw_trunk_drv_set( 865 int unit, 866 mbcm_ltsw_trunk_drv_t *drv); 867 868 /*! 869 * \brief Convert trunk type Id to L2 destination. 870 * 871 * \param [in] unit Unit Number. 872 * \param [in] t_type Trunk Type. 873 * \param [in] t_id Type-based Trunk Identifier. 874 * \param [in] t_priv Trunk private information. 875 * \param [out] l2_dest L2 destination. 876 * 877 * \retval SHR_E_NONE No errors. 878 * \retval !SHR_E_NONE Failure. 879 */ 880 extern int 881 mbcm_ltsw_trunk_type_id_to_l2_dest( 882 int unit, 883 bcmint_trunk_type_t t_type, 884 bcmint_trunk_id_t t_id, 885 bcmint_trunk_priv_info_t *t_priv, 886 int *l2_dest); 887 888 /*! 889 * \brief Convert L2 destination to trunk type Id. 890 * 891 * \param [in] unit Unit Number. 892 * \param [in] l2_dest L2 destination. 893 * \param [out] t_type Trunk Type. 894 * \param [out] t_id Type-based Trunk Identifier. 895 * 896 * \retval SHR_E_NONE No errors. 897 * \retval !SHR_E_NONE Failure. 898 */ 899 extern int 900 mbcm_ltsw_trunk_l2_dest_to_type_id( 901 int unit, 902 int l2_dest, 903 bcmint_trunk_type_t *t_type, 904 bcmint_trunk_id_t *t_id); 905 906 /*! 907 * \brief Judge the gport is channelized access port or not. 908 * 909 * \param [in] unit Unit Number. 910 * \param [in] gport Gport Number. 911 * \param [out] is_channelized_access_port TRUE/False: Is or Isn't. 912 * 913 * \retval SHR_E_NONE No errors. 914 * \retval !SHR_E_NONE Failure. 915 */ 916 extern int 917 mbcm_ltsw_trunk_gport_is_channelized_access_port( 918 int unit, 919 bcm_gport_t gport, 920 bool *is_channelized_access_port); 921 922 /*! 923 * \brief Get TRUNK module public information. 924 * 925 * \param [in] unit Unit Number. 926 * \param [out] t_pub Trunk public information. 927 * 928 * \retval SHR_E_NONE No errors. 929 * \retval !SHR_E_NONE Failure. 930 */ 931 extern int 932 mbcm_ltsw_trunk_pub_info_get( 933 int unit, 934 bcmint_trunk_pub_info_t *t_pub); 935 936 /*! 937 * \brief Compare two psc values and return the result. 938 * 939 * \param [in] unit Unit Number. 940 * \param [in] t_type Trunk Type. 941 * \param [in] psc0 First Port Selection Criteria. 942 * \param [in] psc1 Second Port Selection Criteria. 943 * \param [in] exact Exact match. 944 * \param [out] result TRUE/False: Same or Not. 945 * 946 * \retval SHR_E_NONE No errors. 947 * \retval !SHR_E_NONE Failure. 948 */ 949 extern int 950 mbcm_ltsw_trunk_psc_compare( 951 int unit, 952 bcmint_trunk_type_t t_type, 953 int psc0, 954 int psc1, 955 int exact, 956 bool *result); 957 958 /*! 959 * \brief Initialized the trunk module. 960 * 961 * \param [in] unit Unit Number. 962 * 963 * \retval SHR_E_NONE No errors. 964 * \retval !SHR_E_NONE Failure. 965 */ 966 extern int 967 mbcm_ltsw_trunk_init(int unit); 968 969 /*! 970 * \brief De-init trunk module. 971 * 972 * \param [in] unit Unit Number. 973 * 974 * \retval SHR_E_NONE No errors. 975 * \retval !SHR_E_NONE Failure. 976 */ 977 extern int 978 mbcm_ltsw_trunk_detach(int unit); 979 980 /*! 981 * \brief Clear trunk related LT tables. 982 * 983 * \param [in] unit Unit Number. 984 * 985 * \retval SHR_E_NONE No errors. 986 * \retval !SHR_E_NONE Failure. 987 */ 988 extern int 989 mbcm_ltsw_trunk_clear(int unit); 990 991 /*! 992 * \brief Create a specific trunk with identifier. 993 * 994 * \param [in] unit Unit Number. 995 * \param [in] t_id Type-based Trunk Identifier. 996 * \param [in] t_type Trunk Type. 997 * \param [in] t_priv Trunk private information. 998 * 999 * \retval SHR_E_NONE No errors. 1000 * \retval !SHR_E_NONE Failure. 1001 */ 1002 extern int 1003 mbcm_ltsw_trunk_create( 1004 int unit, 1005 bcmint_trunk_id_t t_id, 1006 bcmint_trunk_type_t t_type, 1007 bcmint_trunk_priv_info_t *t_priv); 1008 1009 /*! 1010 * \brief Validate the trunk input parameters before trunk set function is executed. 1011 * 1012 * \param [in] unit Unit Number. 1013 * \param [in] t_id Type-based Trunk Identifier. 1014 * \param [in] t_type Trunk Type. 1015 * \param [in] trunk_info Trunk Information. 1016 * \param [in] member_count Trunk Member Count. 1017 * \param [in] member_array Trunk Member Array. 1018 * \param [in] op Trunk Member Operation Code. 1019 * \param [in] member Trunk Member. 1020 * 1021 * \retval SHR_E_NONE No errors. 1022 * \retval !SHR_E_NONE Failure. 1023 */ 1024 extern int 1025 mbcm_ltsw_trunk_params_validate( 1026 int unit, 1027 bcmint_trunk_id_t t_id, 1028 bcmint_trunk_type_t t_type, 1029 bcm_trunk_info_t *trunk_info, 1030 int member_count, 1031 bcm_trunk_member_t *member_array, 1032 int op, 1033 bcm_trunk_member_t *member); 1034 1035 /*! 1036 * \brief Get the trunk configuration from HW. 1037 * 1038 * \param [in] unit Unit Number. 1039 * \param [in] t_id Type-based Trunk Identifier. 1040 * \param [in] t_type Trunk Type. 1041 * \param [in] t_priv Trunk private information. 1042 * \param [out] trunk_info Trunk Information. 1043 * \param [in] member_max Max Number of Trunk Members. 1044 * \param [out] member_array Trunk Member Array. 1045 * \param [out] member_count Trunk Member Count. 1046 * 1047 * \retval SHR_E_NONE No errors. 1048 * \retval !SHR_E_NONE Failure. 1049 */ 1050 extern int 1051 mbcm_ltsw_trunk_get( 1052 int unit, 1053 bcmint_trunk_id_t t_id, 1054 bcmint_trunk_type_t t_type, 1055 bcmint_trunk_priv_info_t *t_priv, 1056 bcm_trunk_info_t *trunk_info, 1057 int member_max, 1058 bcm_trunk_member_t *member_array, 1059 int *member_count); 1060 1061 /*! 1062 * \brief Update the trunk configuration. 1063 * 1064 * \param [in] unit Unit Number. 1065 * \param [in] t_id Type-based Trunk Identifier. 1066 * \param [in] t_type Trunk Type. 1067 * \param [in] trunk_info Trunk Information. 1068 * \param [in] member_count Trunk Member Count. 1069 * \param [in] member_array Trunk Member Array. 1070 * \param [in] op Trunk Member Operation Code. 1071 * \param [in] member Trunk Member. 1072 * \param [in] t_priv Trunk private information. 1073 * \param [in] t_update Trunk update information. 1074 * 1075 * \retval SHR_E_NONE No errors. 1076 * \retval !SHR_E_NONE Failure. 1077 */ 1078 extern int 1079 mbcm_ltsw_trunk_update( 1080 int unit, 1081 bcmint_trunk_id_t t_id, 1082 bcmint_trunk_type_t t_type, 1083 bcm_trunk_info_t *trunk_info, 1084 int member_count, 1085 bcm_trunk_member_t *member_array, 1086 int op, 1087 bcm_trunk_member_t *member, 1088 bcmint_trunk_priv_info_t *t_priv, 1089 bcmint_trunk_update_info_t *t_update); 1090 1091 /*! 1092 * \brief Destroy a specific trunk with identifier. 1093 * 1094 * \param [in] unit Unit Number. 1095 * \param [in] t_id Type-based Trunk Identifier. 1096 * \param [in] t_type Trunk Type. 1097 * \param [in] t_priv Trunk private information. 1098 * 1099 * \retval SHR_E_NONE No errors. 1100 * \retval !SHR_E_NONE Failure. 1101 */ 1102 extern int 1103 mbcm_ltsw_trunk_destroy( 1104 int unit, 1105 bcmint_trunk_id_t t_id, 1106 bcmint_trunk_type_t t_type, 1107 bcmint_trunk_priv_info_t *t_priv); 1108 1109 /*! 1110 * \brief Find a specific trunk with member gport. 1111 * 1112 * \param [in] unit Unit Number. 1113 * \param [in] gport Gport Number. 1114 * \param [out] t_id Type-based Trunk Identifier. 1115 * \param [out] t_type Trunk Type. 1116 * 1117 * \retval SHR_E_NONE No errors. 1118 * \retval !SHR_E_NONE Failure. 1119 */ 1120 extern int 1121 mbcm_ltsw_trunk_find( 1122 int unit, 1123 bcm_gport_t gport, 1124 bcmint_trunk_id_t *t_id, 1125 bcmint_trunk_type_t *t_type); 1126 1127 /*! 1128 * \brief Find a specific virtual trunk with member gport. 1129 * 1130 * \param [in] unit Unit Number. 1131 * \param [in] gport Gport Number. 1132 * \param [out] vp_lag_vp The VPLAG vp Id. 1133 * 1134 * \retval SHR_E_NONE No errors. 1135 * \retval !SHR_E_NONE Failure. 1136 */ 1137 extern int 1138 mbcm_ltsw_trunk_find_virtual( 1139 int unit, 1140 bcm_gport_t gport, 1141 int *vp_lag_vp); 1142 1143 /*! 1144 * \brief To notify the trunk is updated. 1145 * 1146 * \param [in] unit Unit Number. 1147 * \param [in] t_id Type-based Trunk Identifier. 1148 * \param [in] t_type Trunk Type. 1149 * 1150 * \retval SHR_E_NONE No errors. 1151 * \retval !SHR_E_NONE Failure. 1152 */ 1153 extern int 1154 mbcm_ltsw_trunk_notify( 1155 int unit, 1156 bcmint_trunk_id_t t_id, 1157 bcmint_trunk_type_t t_type); 1158 1159 /*! 1160 * \brief Extract trunk failover flags from trunk configuration flags. 1161 * 1162 * \param [in] unit Unit Number. 1163 * \param [in] flags Trunk Configuration Flags. 1164 * \param [in] t_type Trunk Type. 1165 * \param [in] fail_flags Trunk Failover Flags. 1166 * 1167 * \retval SHR_E_NONE No errors. 1168 * \retval !SHR_E_NONE Failure. 1169 */ 1170 extern int 1171 mbcm_ltsw_trunk_failover_flags_extract( 1172 int unit, 1173 uint32_t flags, 1174 bcmint_trunk_type_t t_type, 1175 uint32_t *fail_flags); 1176 1177 /*! 1178 * \brief Validate the trunk failover psc configuration. 1179 * 1180 * \param [in] unit Unit Number. 1181 * \param [in] t_type Trunk Type. 1182 * \param [in] psc Port Selection Criteria. 1183 * 1184 * \retval SHR_E_NONE No errors. 1185 * \retval !SHR_E_NONE Failure. 1186 */ 1187 extern int 1188 mbcm_ltsw_trunk_failover_psc_validate( 1189 int unit, 1190 bcmint_trunk_type_t t_type, 1191 int psc); 1192 1193 /*! 1194 * \brief Set trunk failover members to a specific port member. 1195 * 1196 * \param [in] unit Unit Number. 1197 * \param [in] t_id Type-based Trunk Identifier. 1198 * \param [in] t_type Trunk Type. 1199 * \param [in] fail_port Local Failover Port Gport Number. 1200 * \param [in] psc Port Selection Criteria. 1201 * \param [in] ftp_count Failto Port Count. 1202 * \param [in] ftp Failto Port Array. 1203 * 1204 * \retval SHR_E_NONE No errors. 1205 * \retval !SHR_E_NONE Failure. 1206 */ 1207 extern int 1208 mbcm_ltsw_trunk_failover_set( 1209 int unit, 1210 bcmint_trunk_id_t t_id, 1211 bcmint_trunk_type_t t_type, 1212 bcm_gport_t fail_port, 1213 int psc, 1214 int ftp_count, 1215 bcm_gport_t *ftp); 1216 1217 /*! 1218 * \brief Get trunk failover members of a specific port member. 1219 * 1220 * \param [in] unit Unit Number. 1221 * \param [in] t_id Type-based Trunk Identifier. 1222 * \param [in] t_type Trunk Type. 1223 * \param [in] fail_port Local Failover Port Gport Number. 1224 * \param [out] psc Port Selection Criteria. 1225 * \param [in] ftp_max Failto Port Max Count. 1226 * \param [out] ftp Failto Port Array. 1227 * \param [out] ftp_count Failto Port Count. 1228 * 1229 * \retval SHR_E_NONE No errors. 1230 * \retval !SHR_E_NONE Failure. 1231 */ 1232 extern int 1233 mbcm_ltsw_trunk_failover_get( 1234 int unit, 1235 bcmint_trunk_id_t t_id, 1236 bcmint_trunk_type_t t_type, 1237 bcm_gport_t fail_port, 1238 int *psc, 1239 int ftp_max, 1240 bcm_gport_t *ftp, 1241 int *ftp_count); 1242 1243 /*! 1244 * \brief Update trunk failover configuration for a specific trunk. 1245 * 1246 * \param [in] unit Unit Number. 1247 * \param [in] t_id Type-based Trunk Identifier. 1248 * \param [in] t_type Trunk Type. 1249 * \param [in] psc Port Selection Criteria. 1250 * \param [in] fail_flags Failover Configuration Flags. 1251 * \param [in] fail_port Local Failover Port Gport Number. 1252 * \param [in] ftp_max Failto Port Max Number. 1253 * \param [in] member_count Trunk Member Count. 1254 * \param [in] member_array Trunk Member Array. 1255 * 1256 * \retval SHR_E_NONE No errors. 1257 * \retval !SHR_E_NONE Failure. 1258 */ 1259 extern int 1260 mbcm_ltsw_trunk_failover_update( 1261 int unit, 1262 bcmint_trunk_id_t t_id, 1263 bcmint_trunk_type_t t_type, 1264 int psc, 1265 uint32_t fail_flags, 1266 bcm_gport_t fail_port, 1267 int ftp_max, 1268 int member_count, 1269 bcm_trunk_member_t *member_array); 1270 1271 /*! 1272 * \brief Enable/disable fabric trunk resolution. 1273 * 1274 * \param [in] unit Unit Number. 1275 * \param [in] t_id Type-based Trunk Identifier. 1276 * \param [in] o_type Fabric trunk override Type. 1277 * \param [in] o_index Fabric trunk override Type based index. 1278 * \param [in] enable Enable/Disable fabric trunk resolution. 1279 * 1280 * \retval SHR_E_NONE No errors. 1281 * \retval !SHR_E_NONE Failure. 1282 */ 1283 extern int 1284 mbcm_ltsw_trunk_override_set( 1285 int unit, 1286 bcmint_trunk_id_t t_id, 1287 bcmint_trunk_override_type_t o_type, 1288 int o_index, 1289 int enable); 1290 1291 /*! 1292 * \brief Get fabric trunk resolution enable/disable status. 1293 * 1294 * \param [in] unit Unit Number. 1295 * \param [in] t_id Type-based Trunk Identifier. 1296 * \param [in] o_type Fabric trunk override Type. 1297 * \param [in] o_index Fabric trunk override Type based index. 1298 * \param [out] enable Enable/Disable fabric trunk resolution. 1299 * 1300 * \retval SHR_E_NONE No errors. 1301 * \retval !SHR_E_NONE Failure. 1302 */ 1303 extern int 1304 mbcm_ltsw_trunk_override_get( 1305 int unit, 1306 bcmint_trunk_id_t t_id, 1307 bcmint_trunk_override_type_t o_type, 1308 int o_index, 1309 int *enable); 1310 1311 /*! 1312 * \brief Set trunk member port status. 1313 * 1314 * \param [in] unit Unit Number. 1315 * \param [in] port Port Number. 1316 * \param [in] status Trunk member link status. 1317 * 1318 * \retval SHR_E_NONE No errors. 1319 * \retval !SHR_E_NONE Failure. 1320 */ 1321 extern int 1322 mbcm_ltsw_trunk_member_status_set( 1323 int unit, 1324 bcm_port_t port, 1325 int status); 1326 1327 /*! 1328 * \brief Get trunk member port status. 1329 * 1330 * \param [in] unit Unit Number. 1331 * \param [in] port Port Number. 1332 * \param [out] status Trunk member link status. 1333 * 1334 * \retval SHR_E_NONE No errors. 1335 * \retval !SHR_E_NONE Failure. 1336 */ 1337 extern int 1338 mbcm_ltsw_trunk_member_status_get( 1339 int unit, 1340 bcm_port_t port, 1341 int *status); 1342 1343 /*! 1344 * \brief Expand a port bitmap to include all associated trunk member ports. 1345 * 1346 * \param [in] unit Unit Number. 1347 * \param [in] t_pub Trunk public information. 1348 * \param [in/out] pbmp Pointer to returned expanded port bitmap. 1349 * 1350 * \retval SHR_E_NONE No errors. 1351 * \retval !SHR_E_NONE Failure. 1352 */ 1353 extern int 1354 mbcm_ltsw_trunk_bitmap_expand( 1355 int unit, 1356 bcmint_trunk_pub_info_t *t_pub, 1357 bcm_pbmp_t *pbmp); 1358 1359 /*! 1360 * \brief Add the specified trunk group to an existing MAC multicast entry. 1361 * 1362 * \param [in] unit Unit Number. 1363 * \param [in] t_id Trunk Identifier. 1364 * \param [in] vid VLAN ID. 1365 * \param [in] mac MAC address. 1366 * 1367 * \retval SHR_E_NONE Success. 1368 * \retval SHR_E_INIT Trunk module has not been initialized. 1369 * \retval SHR_E_BADID Invalid or unsupported trunk ID. 1370 * \retval SHR_E_NOT_FOUND Specified trunk ID is not currently defined. 1371 */ 1372 extern int 1373 mbcm_ltsw_trunk_mcast_join( 1374 int unit, 1375 bcm_trunk_t t_id, 1376 bcm_vlan_t vid, 1377 bcm_mac_t mac); 1378 1379 /*! 1380 * \brief Find trunk DLB Identifier. 1381 * 1382 * \param [in] unit Unit Number. 1383 * \param [in] t_type Trunk Type. 1384 * \param [in] t_id Type-based Trunk Identifier. 1385 * \param [in] t_priv Trunk private information. 1386 * \param [out] dlb_id Trunk dlb identifier. 1387 * 1388 * \retval SHR_E_NONE No errors. 1389 * \retval !SHR_E_NONE Failure. 1390 */ 1391 extern int 1392 mbcm_ltsw_trunk_find_dlb_id( 1393 int unit, 1394 bcmint_trunk_type_t t_type, 1395 bcmint_trunk_id_t t_id, 1396 bcmint_trunk_priv_info_t *t_priv, 1397 int *dlb_id); 1398 1399 /*! 1400 * \brief Update the VPLAG member. 1401 * 1402 * \param [in] unit Unit Number. 1403 * \param [in] vp_lag_vp The VPLAG vp Id. 1404 * \param [in] gport The generic port number. 1405 * 1406 * \retval SHR_E_NONE No errors. 1407 * \retval !SHR_E_NONE Failure. 1408 */ 1409 extern int 1410 mbcm_ltsw_trunk_vp_lag_member_update( 1411 int unit, 1412 int vp_lag_vp, 1413 bcm_gport_t gport); 1414 1415 /*! 1416 * \brief Get the CML bits for a vp_lag port. 1417 * 1418 * \param [in] unit Unit Number. 1419 * \param [in] vp_lag_vp The VPLAG vp Id. 1420 * \param [out] flags The L2 CML FLAGS. 1421 * 1422 * \retval SHR_E_NONE No errors. 1423 * \retval !SHR_E_NONE Failure. 1424 */ 1425 extern int 1426 mbcm_ltsw_trunk_vp_lag_vp_learn_get( 1427 int unit, 1428 int vp_lag_vp, 1429 uint32_t *flags); 1430 1431 /*! 1432 * \brief Set the CML bits for a vp_lag port. 1433 * 1434 * \param [in] unit Unit Number. 1435 * \param [in] vp_lag_vp The VPLAG vp Id. 1436 * \param [in] flags The L2 CML FLAGS. 1437 * 1438 * \retval SHR_E_NONE No errors. 1439 * \retval !SHR_E_NONE Failure. 1440 */ 1441 extern int 1442 mbcm_ltsw_trunk_vp_lag_vp_learn_set( 1443 int unit, 1444 int vp_lag_vp, 1445 uint32_t flags); 1446 1447 /*! 1448 * \brief Set Hash Control for L2, L3 and Multipath 1449 * 1450 * \param [in] unit Unit Number. 1451 * \param [in] arg BCM_HASH_CONTROL_TRUNK_XXX 1452 * 1453 * \retval SHR_E_NONE No errors. 1454 * \retval !SHR_E_NONE Failure. 1455 */ 1456 extern int 1457 mbcm_ltsw_trunk_sc_hash_control_set( 1458 int unit, 1459 uint32_t arg); 1460 1461 /*! 1462 * \brief Get Hash Control for L2, L3 and Multipath 1463 * 1464 * \param [in] unit Unit Number. 1465 * \param [out] arg BCM_HASH_CONTROL_TRUNK_XXX 1466 * 1467 * \retval SHR_E_NONE No errors. 1468 * \retval !SHR_E_NONE Failure. 1469 */ 1470 extern int 1471 mbcm_ltsw_trunk_sc_hash_control_get( 1472 int unit, 1473 uint32_t *arg); 1474 1475 /*! 1476 * \brief Set flow based hash selection for Trunk unicast 1477 * 1478 * \param [in] unit Unit Number. 1479 * \param [in] arg Enable/Disable 1480 * 1481 * \retval SHR_E_NONE No errors. 1482 * \retval !SHR_E_NONE Failure. 1483 */ 1484 extern int 1485 mbcm_ltsw_trunk_sc_lb_control_unicast_set( 1486 int unit, 1487 uint32_t arg); 1488 1489 /*! 1490 * \brief Get flow based hash selection for Trunk unicast 1491 * 1492 * \param [in] unit Unit Number. 1493 * \param [out] arg Enable/Disable 1494 * 1495 * \retval SHR_E_NONE No errors. 1496 * \retval !SHR_E_NONE Failure. 1497 */ 1498 extern int 1499 mbcm_ltsw_trunk_sc_lb_control_unicast_get( 1500 int unit, 1501 uint32_t *arg); 1502 1503 /*! 1504 * \brief Set flow based hash selection for Trunk non-unicast 1505 * 1506 * \param [in] unit Unit Number. 1507 * \param [in] arg Enable/Disable 1508 * 1509 * \retval SHR_E_NONE No errors. 1510 * \retval !SHR_E_NONE Failure. 1511 */ 1512 extern int 1513 mbcm_ltsw_trunk_sc_lb_control_nonunicast_set( 1514 int unit, 1515 uint32_t arg); 1516 1517 /*! 1518 * \brief Get flow based hash selection for Trunk non-unicast 1519 * 1520 * \param [in] unit Unit Number. 1521 * \param [out] arg Enable/Disable 1522 * 1523 * \retval SHR_E_NONE No errors. 1524 * \retval !SHR_E_NONE Failure. 1525 */ 1526 extern int 1527 mbcm_ltsw_trunk_sc_lb_control_nonunicast_get( 1528 int unit, 1529 uint32_t *arg); 1530 1531 /*! 1532 * \brief Attach stat counter ID to a given trunk ID. 1533 * 1534 * \param [in] unit Unit Number. 1535 * \param [in] tid Trunk Identifier. 1536 * \param [in] info Counter information. 1537 * 1538 * \retval SHR_E_NONE No errors. 1539 * \retval !SHR_E_NONE Failure. 1540 */ 1541 extern int 1542 mbcm_ltsw_trunk_flexctr_attach( 1543 int unit, 1544 bcm_trunk_t tid, 1545 bcmi_ltsw_flexctr_counter_info_t *info); 1546 1547 /*! 1548 * \brief Detach stat counter ID to a given trunk ID. 1549 * 1550 * \param [in] unit Unit Number. 1551 * \param [in] tid Trunk Identifier. 1552 * 1553 * \retval SHR_E_NONE No errors. 1554 * \retval !SHR_E_NONE Failure. 1555 */ 1556 extern int 1557 mbcm_ltsw_trunk_flexctr_detach( 1558 int unit, 1559 bcm_trunk_t tid); 1560 1561 /*! 1562 * \brief Get stat counter ID if associated with given trunk ID. 1563 * 1564 * \param [in] unit Unit Number. 1565 * \param [in] tid Trunk Identifier. 1566 * \param [out] info Counter information. 1567 * 1568 * \retval SHR_E_NONE No errors. 1569 * \retval !SHR_E_NONE Failure. 1570 */ 1571 extern int 1572 mbcm_ltsw_trunk_flexctr_info_get( 1573 int unit, 1574 bcm_trunk_t tid, 1575 bcmi_ltsw_flexctr_counter_info_t *info); 1576 1577 /*! 1578 * \brief Set object for a given trunk ID. 1579 * 1580 * \param [in] unit Unit Number. 1581 * \param [in] tid Trunk Identifier. 1582 * \param [in] value Object value. 1583 * 1584 * \retval SHR_E_NONE No errors. 1585 * \retval !SHR_E_NONE Failure. 1586 */ 1587 extern int 1588 mbcm_ltsw_trunk_flexctr_object_set( 1589 int unit, 1590 bcm_trunk_t tid, 1591 uint16_t value); 1592 1593 /*! 1594 * \brief Get object for a given trunk ID. 1595 * 1596 * \param [in] unit Unit Number. 1597 * \param [in] tid Trunk Identifier. 1598 * \param [out] value Object value. 1599 * 1600 * \retval SHR_E_NONE No errors. 1601 * \retval !SHR_E_NONE Failure. 1602 */ 1603 extern int 1604 mbcm_ltsw_trunk_flexctr_object_get( 1605 int unit, 1606 bcm_trunk_t tid, 1607 uint16_t *value); 1608 1609 #endif /* BCMINT_LTSW_MBCM_TRUNK_H */