multicast.h (22812B)
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_MULTICAST_H 12 #define BCMINT_LTSW_MBCM_MULTICAST_H 13 14 #include <bcm/types.h> 15 #include <bcm/multicast.h> 16 17 #include <bcm_int/ltsw/multicast_int.h> 18 19 #include <sal/sal_types.h> 20 21 /*! 22 * \brief Initialize MULTICAST module. 23 * 24 * \param [in] unit Unit Number. 25 * 26 * \retval SHR_E_NONE No errors. 27 * \retval !SHR_E_NONE Failure. 28 */ 29 typedef int (*multicast_init_f)(int unit); 30 31 /*! 32 * \brief De-initialize MULTICAST module. 33 * 34 * \param [in] unit Unit Number. 35 * 36 * \retval SHR_E_NONE No errors. 37 * \retval !SHR_E_NONE Failure. 38 */ 39 typedef int (*multicast_detach_f)(int unit); 40 41 /*! 42 * \brief Get the public info of MULTICAST module. 43 * 44 * \param [in] unit Unit Number. 45 * \param [out] mc_pub Returned mc public info. 46 * 47 * \retval SHR_E_NONE No errors. 48 * \retval !SHR_E_NONE Failure. 49 */ 50 typedef int (*multicast_pub_info_get_f)( 51 int unit, 52 bcmint_multicast_pub_info_t *mc_pub); 53 54 /*! 55 * \brief Create a L2 multicast group. 56 * 57 * \param [in] unit Unit Number. 58 * \param [in] l2mc_id L2 multicast group id. 59 * 60 * \retval SHR_E_NONE No errors. 61 * \retval !SHR_E_NONE Failure. 62 */ 63 typedef int (*multicast_l2_grp_create_f)( 64 int unit, 65 uint32_t l2mc_id); 66 67 /*! 68 * \brief Destroy a L2 multicast group. 69 * 70 * \param [in] unit Unit Number. 71 * \param [in] l2mc_id L2 multicast group id. 72 * 73 * \retval SHR_E_NONE No errors. 74 * \retval !SHR_E_NONE Failure. 75 */ 76 typedef int (*multicast_l2_grp_destroy_f)( 77 int unit, 78 uint32_t l2mc_id); 79 80 /*! 81 * \brief Update a L2 multicast group. 82 * 83 * \param [in] unit Unit Number. 84 * \param [in] l2mc_id L2 multicast group id. 85 * \param [in] opcode Operation code of update. 86 * \param [in] port_array Port_array of this operation. 87 * \param [in] port_count Count of ports. 88 * 89 * \retval SHR_E_NONE No errors. 90 * \retval !SHR_E_NONE Failure. 91 */ 92 typedef int (*multicast_l2_grp_update_f)( 93 int unit, 94 uint32_t l2mc_id, 95 bcmint_multicast_l2_grp_op_code_t opcode, 96 bcm_port_t *port_array, 97 uint32_t port_count); 98 99 /*! 100 * \brief Get egress encap_ids of a L2 multicast group. 101 * 102 * \param [in] unit Unit Number. 103 * \param [in] l2mc_id L2 multicast group id. 104 * \param [in] port_size Maxium mumber of GPORTS in this group. 105 * \param [out] port_array Returned egress ports of this group. 106 * \param [out] encap_id_array Returned list of encap_id. 107 * \param [out] port_count Returned ports count. 108 * 109 * \retval SHR_E_NONE No errors. 110 * \retval !SHR_E_NONE Failure. 111 */ 112 typedef int (*multicast_l2_egress_get_f)( 113 int unit, 114 uint32_t l2mc_id, 115 int port_size, 116 bcm_gport_t *port_array, 117 bcm_if_t *encap_id_array, 118 int *port_count); 119 120 /*! 121 * \brief Create a L3 multicast group. 122 * 123 * \param [in] unit Unit Number. 124 * \param [in] l3mc_id L3 multicast group id. 125 * 126 * \retval SHR_E_NONE No errors. 127 * \retval !SHR_E_NONE Failure. 128 */ 129 typedef int (*multicast_l3_grp_create_f)( 130 int unit, 131 uint32_t l3mc_id); 132 133 /*! 134 * \brief Destroy a L3 multicast group. 135 * 136 * \param [in] unit Unit Number. 137 * \param [in] l3mc_id L3 multicast group id. 138 * 139 * \retval SHR_E_NONE No errors. 140 * \retval !SHR_E_NONE Failure. 141 */ 142 typedef int (*multicast_l3_grp_destroy_f)( 143 int unit, 144 uint32_t l3mc_id); 145 146 /*! 147 * \brief Update a L3 multicast group. 148 * 149 * \param [in] unit Unit Number. 150 * \param [in] l3mc_id L3 multicast group id. 151 * \param [in] opcode Operation code of update. 152 * \param [in] port Port of this operation. 153 * \param [in] encap_id_array Encap_id array of the given port. 154 * \param [in] encap_count Count of encap_id_array. 155 * 156 * \retval SHR_E_NONE No errors. 157 * \retval !SHR_E_NONE Failure. 158 */ 159 typedef int (*multicast_l3_grp_update_f)( 160 int unit, 161 uint32_t l3mc_id, 162 bcmint_multicast_l3_grp_op_code_t opcode, 163 bcm_port_t port, 164 bcm_if_t *encap_id_array, 165 uint32_t encap_count); 166 167 /*! 168 * \brief Get egress encap_ids of a L3 multicast group. 169 * 170 * \param [in] unit Unit Number. 171 * \param [in] l3mc_id L3 multicast group id. 172 * \param [in] port_size Maxium mumber of GPORTS in this group. 173 * \param [out] port_array Returned egress ports of this group. 174 * \param [out] encap_id_array Returned list of encap_id. 175 * \param [out] port_count Returned ports count. 176 * 177 * \retval SHR_E_NONE No errors. 178 * \retval !SHR_E_NONE Failure. 179 */ 180 typedef int (*multicast_l3_egress_get_f)( 181 int unit, 182 uint32_t l3mc_id, 183 int port_size, 184 bcm_gport_t *port_array, 185 bcm_if_t *encap_id_array, 186 int *port_count); 187 188 /*! 189 * \brief Create a multicast encap_id based on encapsulation info. 190 * 191 * \param [in] unit Unit Number. 192 * \param [in] mc_encap Multicast encapsulation info. 193 * \param [out] encap_id Returned encap_id. 194 * 195 * \retval SHR_E_NONE No errors. 196 * \retval !SHR_E_NONE Failure. 197 */ 198 typedef int (*multicast_encap_create_f)( 199 int unit, 200 bcm_multicast_encap_t *mc_encap, 201 bcm_if_t *encap_id); 202 203 /*! 204 * \brief Destroy a multicast encap_id. 205 * 206 * \param [in] unit Unit Number. 207 * \param [in] encap_id Multicast encap_id. 208 * 209 * \retval SHR_E_NONE No errors. 210 * \retval !SHR_E_NONE Failure. 211 */ 212 typedef int (*multicast_encap_destroy_f)( 213 int unit, 214 bcm_if_t encap_id); 215 216 /*! 217 * \brief Get multicast encapsulation info from encap_id. 218 * 219 * \param [in] unit Unit Number. 220 * \param [in] encap_id Multicast encap_id. 221 * \param [out] mc_encap Returned multicast encapsulation info. 222 * 223 * \retval SHR_E_NONE No errors. 224 * \retval !SHR_E_NONE Failure. 225 */ 226 typedef int (*multicast_encap_get_f)( 227 int unit, 228 bcm_if_t encap_id, 229 bcm_multicast_encap_t *mc_encap); 230 231 /*! 232 * \brief Recover encap info of encap_id. 233 * 234 * \param [in] unit Unit Number. 235 * \param [in] encap_id Multicast encap_id. 236 * 237 * \retval SHR_E_NONE No errors. 238 * \retval !SHR_E_NONE Failure. 239 */ 240 typedef int (*multicast_encap_recover_f)( 241 int unit, 242 bcm_if_t encap_id); 243 244 /*! 245 * \brief Get L2 multicast group id for default VLAN. 246 * 247 * \param [in] unit Unit Number. 248 * \param [out] grp_id L2 group HW index. 249 * 250 * \retval SHR_E_NONE No errors. 251 * \retval !SHR_E_NONE Failure. 252 */ 253 typedef int (*multicast_def_vlan_grp_id_get_f)( 254 int unit, 255 uint32_t *grp_id); 256 257 /*! 258 * \brief Update member ports of default vlan multicast group. 259 * 260 * \param [in] unit Unit Number. 261 * 262 * \retval SHR_E_NONE No errors. 263 * \retval !SHR_E_NONE Failure. 264 */ 265 typedef int (*multicast_def_vlan_grp_update_f)(int unit); 266 267 /*! 268 * \brief Enable/disable to egress both L2 and L3 packet copies on a same egress port. 269 * 270 * \param [in] unit Unit Number. 271 * \param [in] enable Enable/disable 272 * 273 * \retval SHR_E_NONE No errors. 274 * \retval !SHR_E_NONE Failure. 275 */ 276 typedef int (*multicast_l2_l3_combined_set_f)( 277 int unit, 278 bool enable); 279 280 /*! 281 * \brief Get multicast l2 l3 combined mode. 282 * 283 * \param [in] unit Unit Number. 284 * \param [out] enable TRUE: Combined mode is enabled. FALSE: Combined mode is disabled. 285 * 286 * \retval SHR_E_NONE No errors. 287 * \retval !SHR_E_NONE Failure. 288 */ 289 typedef int (*multicast_l2_l3_combined_get_f)( 290 int unit, 291 bool *enable); 292 293 /*! 294 * \brief Set a multicast group mapping. 295 * 296 * \param [in] unit Unit Number. 297 * \param [in] mc_index_from Multicast group index to map from 298 * \param [in] mc_index_to Multicast group index to map to 299 * 300 * \retval SHR_E_NONE No errors. 301 * \retval !SHR_E_NONE Failure. 302 */ 303 typedef int (*multicast_remap_group_set_f)( 304 int unit, 305 int mc_index_from, 306 int mc_index_to); 307 308 /*! 309 * \brief Get a multicast group mapping. 310 * 311 * \param [in] unit Unit Number. 312 * \param [in] mc_index_from Multicast group index to map from 313 * \param [out] mc_index_to Multicast group index to map to 314 * 315 * \retval SHR_E_NONE No errors. 316 * \retval !SHR_E_NONE Failure. 317 */ 318 typedef int (*multicast_remap_group_get_f)( 319 int unit, 320 int mc_index_from, 321 int *mc_index_to); 322 323 /*! 324 * \brief Get the Encap ID for Egress_object. 325 * 326 * \param [in] unit Unit Number. 327 * \param [in] group Multicast group ID. 328 * \param [in] intf Egress Object ID. 329 * \param [out] encap_id Returned encap_id. 330 * 331 * \retval SHR_E_NONE No errors. 332 * \retval !SHR_E_NONE Failure. 333 */ 334 typedef int (*multicast_egress_object_encap_get_f)( 335 int unit, 336 bcm_multicast_t group, 337 bcm_if_t intf, 338 bcm_if_t *encap_id); 339 340 /*! 341 * \brief Set maximum transmission unit. 342 * 343 * \param [in] unit Unit Number. 344 * \param [in] mc_index Multicast group ID. 345 * \param [in] mtu Maximum transmission unit to set. 346 * 347 * \retval SHR_E_NONE No errors. 348 * \retval !SHR_E_NONE Failure. 349 */ 350 typedef int (*multicast_mtu_set_f)( 351 int unit, 352 int mc_index, 353 int mtu); 354 355 /*! 356 * \brief Get maximum transmission unit. 357 * 358 * \param [in] unit Unit Number. 359 * \param [in] mc_index Multicast group ID. 360 * \param [out] mtu Maximum transmission unit to set. 361 * 362 * \retval SHR_E_NONE No errors. 363 * \retval !SHR_E_NONE Failure. 364 */ 365 typedef int (*multicast_mtu_get_f)( 366 int unit, 367 int mc_index, 368 int *mtu); 369 370 /*! 371 * \brief Initialize replication per-port configuration in the runtime. 372 * 373 * \param [in] unit Unit Number. 374 * \param [in] port Port of this operation. 375 * 376 * \retval SHR_E_NONE No errors. 377 * \retval !SHR_E_NONE Failure. 378 */ 379 typedef int (*multicast_repl_port_attach_f)( 380 int unit, 381 bcm_port_t port); 382 383 /*! 384 * \brief Clear replication per-port configuration in the runtime. 385 * 386 * \param [in] unit Unit Number. 387 * \param [in] port Port of this operation. 388 * 389 * \retval SHR_E_NONE No errors. 390 * \retval !SHR_E_NONE Failure. 391 */ 392 typedef int (*multicast_repl_port_detach_f)( 393 int unit, 394 bcm_port_t port); 395 396 /*! 397 * \brief Init l2mc index table management for vlan flooding. 398 * 399 * \param [in] unit Unit Number. 400 * 401 * \retval SHR_E_NONE No errors. 402 * \retval !SHR_E_NONE Failure. 403 */ 404 typedef int (*multicast_vlan_flood_init_f)(int unit); 405 406 /*! 407 * \brief Multicast driver structure. 408 */ 409 typedef struct mbcm_ltsw_multicast_drv_s { 410 411 /*! Initialize MULTICAST module. */ 412 multicast_init_f multicast_init; 413 414 /*! De-initialize MULTICAST module. */ 415 multicast_detach_f multicast_detach; 416 417 /*! Get the public info of MULTICAST module. */ 418 multicast_pub_info_get_f multicast_pub_info_get; 419 420 /*! Create a L2 multicast group. */ 421 multicast_l2_grp_create_f multicast_l2_grp_create; 422 423 /*! Destroy a L2 multicast group. */ 424 multicast_l2_grp_destroy_f multicast_l2_grp_destroy; 425 426 /*! Update a L2 multicast group. */ 427 multicast_l2_grp_update_f multicast_l2_grp_update; 428 429 /*! Get egress encap_ids of a L2 multicast group. */ 430 multicast_l2_egress_get_f multicast_l2_egress_get; 431 432 /*! Create a L3 multicast group. */ 433 multicast_l3_grp_create_f multicast_l3_grp_create; 434 435 /*! Destroy a L3 multicast group. */ 436 multicast_l3_grp_destroy_f multicast_l3_grp_destroy; 437 438 /*! Update a L3 multicast group. */ 439 multicast_l3_grp_update_f multicast_l3_grp_update; 440 441 /*! Get egress encap_ids of a L3 multicast group. */ 442 multicast_l3_egress_get_f multicast_l3_egress_get; 443 444 /*! Create a multicast encap_id based on encapsulation info. */ 445 multicast_encap_create_f multicast_encap_create; 446 447 /*! Destroy a multicast encap_id. */ 448 multicast_encap_destroy_f multicast_encap_destroy; 449 450 /*! Get multicast encapsulation info from encap_id. */ 451 multicast_encap_get_f multicast_encap_get; 452 453 /*! Recover encap info of encap_id. */ 454 multicast_encap_recover_f multicast_encap_recover; 455 456 /*! Get L2 multicast group id for default VLAN. */ 457 multicast_def_vlan_grp_id_get_f multicast_def_vlan_grp_id_get; 458 459 /*! Update member ports of default vlan multicast group. */ 460 multicast_def_vlan_grp_update_f multicast_def_vlan_grp_update; 461 462 /*! Enable/disable to egress both L2 and L3 packet copies on a same egress port. */ 463 multicast_l2_l3_combined_set_f multicast_l2_l3_combined_set; 464 465 /*! Get multicast l2 l3 combined mode. */ 466 multicast_l2_l3_combined_get_f multicast_l2_l3_combined_get; 467 468 /*! Set a multicast group mapping. */ 469 multicast_remap_group_set_f multicast_remap_group_set; 470 471 /*! Get a multicast group mapping. */ 472 multicast_remap_group_get_f multicast_remap_group_get; 473 474 /*! Get the Encap ID for Egress_object. */ 475 multicast_egress_object_encap_get_f multicast_egress_object_encap_get; 476 477 /*! Set maximum transmission unit. */ 478 multicast_mtu_set_f multicast_mtu_set; 479 480 /*! Get maximum transmission unit. */ 481 multicast_mtu_get_f multicast_mtu_get; 482 483 /*! Initialize replication per-port configuration in the runtime. */ 484 multicast_repl_port_attach_f multicast_repl_port_attach; 485 486 /*! Clear replication per-port configuration in the runtime. */ 487 multicast_repl_port_detach_f multicast_repl_port_detach; 488 489 /*! Init l2mc index table management for vlan flooding. */ 490 multicast_vlan_flood_init_f multicast_vlan_flood_init; 491 492 } mbcm_ltsw_multicast_drv_t; 493 494 /*! 495 * \brief Set the MULTICAST driver of the device. 496 * 497 * \param [in] unit Unit Number. 498 * \param [in] drv Multicast driver to set. 499 * 500 * \retval SHR_E_NONE No errors. 501 * \retval !SHR_E_NONE Failure. 502 */ 503 extern int 504 mbcm_ltsw_multicast_drv_set( 505 int unit, 506 mbcm_ltsw_multicast_drv_t *drv); 507 508 /*! 509 * \brief Initialize MULTICAST module. 510 * 511 * \param [in] unit Unit Number. 512 * 513 * \retval SHR_E_NONE No errors. 514 * \retval !SHR_E_NONE Failure. 515 */ 516 extern int 517 mbcm_ltsw_multicast_init(int unit); 518 519 /*! 520 * \brief De-initialize MULTICAST module. 521 * 522 * \param [in] unit Unit Number. 523 * 524 * \retval SHR_E_NONE No errors. 525 * \retval !SHR_E_NONE Failure. 526 */ 527 extern int 528 mbcm_ltsw_multicast_detach(int unit); 529 530 /*! 531 * \brief Get the public info of MULTICAST module. 532 * 533 * \param [in] unit Unit Number. 534 * \param [out] mc_pub Returned mc public info. 535 * 536 * \retval SHR_E_NONE No errors. 537 * \retval !SHR_E_NONE Failure. 538 */ 539 extern int 540 mbcm_ltsw_multicast_pub_info_get( 541 int unit, 542 bcmint_multicast_pub_info_t *mc_pub); 543 544 /*! 545 * \brief Create a L2 multicast group. 546 * 547 * \param [in] unit Unit Number. 548 * \param [in] l2mc_id L2 multicast group id. 549 * 550 * \retval SHR_E_NONE No errors. 551 * \retval !SHR_E_NONE Failure. 552 */ 553 extern int 554 mbcm_ltsw_multicast_l2_grp_create( 555 int unit, 556 uint32_t l2mc_id); 557 558 /*! 559 * \brief Destroy a L2 multicast group. 560 * 561 * \param [in] unit Unit Number. 562 * \param [in] l2mc_id L2 multicast group id. 563 * 564 * \retval SHR_E_NONE No errors. 565 * \retval !SHR_E_NONE Failure. 566 */ 567 extern int 568 mbcm_ltsw_multicast_l2_grp_destroy( 569 int unit, 570 uint32_t l2mc_id); 571 572 /*! 573 * \brief Update a L2 multicast group. 574 * 575 * \param [in] unit Unit Number. 576 * \param [in] l2mc_id L2 multicast group id. 577 * \param [in] opcode Operation code of update. 578 * \param [in] port_array Port_array of this operation. 579 * \param [in] port_count Count of ports. 580 * 581 * \retval SHR_E_NONE No errors. 582 * \retval !SHR_E_NONE Failure. 583 */ 584 extern int 585 mbcm_ltsw_multicast_l2_grp_update( 586 int unit, 587 uint32_t l2mc_id, 588 bcmint_multicast_l2_grp_op_code_t opcode, 589 bcm_port_t *port_array, 590 uint32_t port_count); 591 592 /*! 593 * \brief Get egress encap_ids of a L2 multicast group. 594 * 595 * \param [in] unit Unit Number. 596 * \param [in] l2mc_id L2 multicast group id. 597 * \param [in] port_size Maxium mumber of GPORTS in this group. 598 * \param [out] port_array Returned egress ports of this group. 599 * \param [out] encap_id_array Returned list of encap_id. 600 * \param [out] port_count Returned ports count. 601 * 602 * \retval SHR_E_NONE No errors. 603 * \retval !SHR_E_NONE Failure. 604 */ 605 extern int 606 mbcm_ltsw_multicast_l2_egress_get( 607 int unit, 608 uint32_t l2mc_id, 609 int port_size, 610 bcm_gport_t *port_array, 611 bcm_if_t *encap_id_array, 612 int *port_count); 613 614 /*! 615 * \brief Create a L3 multicast group. 616 * 617 * \param [in] unit Unit Number. 618 * \param [in] l3mc_id L3 multicast group id. 619 * 620 * \retval SHR_E_NONE No errors. 621 * \retval !SHR_E_NONE Failure. 622 */ 623 extern int 624 mbcm_ltsw_multicast_l3_grp_create( 625 int unit, 626 uint32_t l3mc_id); 627 628 /*! 629 * \brief Destroy a L3 multicast group. 630 * 631 * \param [in] unit Unit Number. 632 * \param [in] l3mc_id L3 multicast group id. 633 * 634 * \retval SHR_E_NONE No errors. 635 * \retval !SHR_E_NONE Failure. 636 */ 637 extern int 638 mbcm_ltsw_multicast_l3_grp_destroy( 639 int unit, 640 uint32_t l3mc_id); 641 642 /*! 643 * \brief Update a L3 multicast group. 644 * 645 * \param [in] unit Unit Number. 646 * \param [in] l3mc_id L3 multicast group id. 647 * \param [in] opcode Operation code of update. 648 * \param [in] port Port of this operation. 649 * \param [in] encap_id_array Encap_id array of the given port. 650 * \param [in] encap_count Count of encap_id_array. 651 * 652 * \retval SHR_E_NONE No errors. 653 * \retval !SHR_E_NONE Failure. 654 */ 655 extern int 656 mbcm_ltsw_multicast_l3_grp_update( 657 int unit, 658 uint32_t l3mc_id, 659 bcmint_multicast_l3_grp_op_code_t opcode, 660 bcm_port_t port, 661 bcm_if_t *encap_id_array, 662 uint32_t encap_count); 663 664 /*! 665 * \brief Get egress encap_ids of a L3 multicast group. 666 * 667 * \param [in] unit Unit Number. 668 * \param [in] l3mc_id L3 multicast group id. 669 * \param [in] port_size Maxium mumber of GPORTS in this group. 670 * \param [out] port_array Returned egress ports of this group. 671 * \param [out] encap_id_array Returned list of encap_id. 672 * \param [out] port_count Returned ports count. 673 * 674 * \retval SHR_E_NONE No errors. 675 * \retval !SHR_E_NONE Failure. 676 */ 677 extern int 678 mbcm_ltsw_multicast_l3_egress_get( 679 int unit, 680 uint32_t l3mc_id, 681 int port_size, 682 bcm_gport_t *port_array, 683 bcm_if_t *encap_id_array, 684 int *port_count); 685 686 /*! 687 * \brief Create a multicast encap_id based on encapsulation info. 688 * 689 * \param [in] unit Unit Number. 690 * \param [in] mc_encap Multicast encapsulation info. 691 * \param [out] encap_id Returned encap_id. 692 * 693 * \retval SHR_E_NONE No errors. 694 * \retval !SHR_E_NONE Failure. 695 */ 696 extern int 697 mbcm_ltsw_multicast_encap_create( 698 int unit, 699 bcm_multicast_encap_t *mc_encap, 700 bcm_if_t *encap_id); 701 702 /*! 703 * \brief Destroy a multicast encap_id. 704 * 705 * \param [in] unit Unit Number. 706 * \param [in] encap_id Multicast encap_id. 707 * 708 * \retval SHR_E_NONE No errors. 709 * \retval !SHR_E_NONE Failure. 710 */ 711 extern int 712 mbcm_ltsw_multicast_encap_destroy( 713 int unit, 714 bcm_if_t encap_id); 715 716 /*! 717 * \brief Get multicast encapsulation info from encap_id. 718 * 719 * \param [in] unit Unit Number. 720 * \param [in] encap_id Multicast encap_id. 721 * \param [out] mc_encap Returned multicast encapsulation info. 722 * 723 * \retval SHR_E_NONE No errors. 724 * \retval !SHR_E_NONE Failure. 725 */ 726 extern int 727 mbcm_ltsw_multicast_encap_get( 728 int unit, 729 bcm_if_t encap_id, 730 bcm_multicast_encap_t *mc_encap); 731 732 /*! 733 * \brief Recover encap info of encap_id. 734 * 735 * \param [in] unit Unit Number. 736 * \param [in] encap_id Multicast encap_id. 737 * 738 * \retval SHR_E_NONE No errors. 739 * \retval !SHR_E_NONE Failure. 740 */ 741 extern int 742 mbcm_ltsw_multicast_encap_recover( 743 int unit, 744 bcm_if_t encap_id); 745 746 /*! 747 * \brief Get L2 multicast group id for default VLAN. 748 * 749 * \param [in] unit Unit Number. 750 * \param [out] grp_id L2 group HW index. 751 * 752 * \retval SHR_E_NONE No errors. 753 * \retval !SHR_E_NONE Failure. 754 */ 755 extern int 756 mbcm_ltsw_multicast_def_vlan_grp_id_get( 757 int unit, 758 uint32_t *grp_id); 759 760 /*! 761 * \brief Update member ports of default vlan multicast group. 762 * 763 * \param [in] unit Unit Number. 764 * 765 * \retval SHR_E_NONE No errors. 766 * \retval !SHR_E_NONE Failure. 767 */ 768 extern int 769 mbcm_ltsw_multicast_def_vlan_grp_update(int unit); 770 771 /*! 772 * \brief Enable/disable to egress both L2 and L3 packet copies on a same egress port. 773 * 774 * \param [in] unit Unit Number. 775 * \param [in] enable Enable/disable 776 * 777 * \retval SHR_E_NONE No errors. 778 * \retval !SHR_E_NONE Failure. 779 */ 780 extern int 781 mbcm_ltsw_multicast_l2_l3_combined_set( 782 int unit, 783 bool enable); 784 785 /*! 786 * \brief Get multicast l2 l3 combined mode. 787 * 788 * \param [in] unit Unit Number. 789 * \param [out] enable TRUE: Combined mode is enabled. FALSE: Combined mode is disabled. 790 * 791 * \retval SHR_E_NONE No errors. 792 * \retval !SHR_E_NONE Failure. 793 */ 794 extern int 795 mbcm_ltsw_multicast_l2_l3_combined_get( 796 int unit, 797 bool *enable); 798 799 /*! 800 * \brief Set a multicast group mapping. 801 * 802 * \param [in] unit Unit Number. 803 * \param [in] mc_index_from Multicast group index to map from 804 * \param [in] mc_index_to Multicast group index to map to 805 * 806 * \retval SHR_E_NONE No errors. 807 * \retval !SHR_E_NONE Failure. 808 */ 809 extern int 810 mbcm_ltsw_multicast_remap_group_set( 811 int unit, 812 int mc_index_from, 813 int mc_index_to); 814 815 /*! 816 * \brief Get a multicast group mapping. 817 * 818 * \param [in] unit Unit Number. 819 * \param [in] mc_index_from Multicast group index to map from 820 * \param [out] mc_index_to Multicast group index to map to 821 * 822 * \retval SHR_E_NONE No errors. 823 * \retval !SHR_E_NONE Failure. 824 */ 825 extern int 826 mbcm_ltsw_multicast_remap_group_get( 827 int unit, 828 int mc_index_from, 829 int *mc_index_to); 830 831 /*! 832 * \brief Get the Encap ID for Egress_object. 833 * 834 * \param [in] unit Unit Number. 835 * \param [in] group Multicast group ID. 836 * \param [in] intf Egress Object ID. 837 * \param [out] encap_id Returned encap_id. 838 * 839 * \retval SHR_E_NONE No errors. 840 * \retval !SHR_E_NONE Failure. 841 */ 842 extern int 843 mbcm_ltsw_multicast_egress_object_encap_get( 844 int unit, 845 bcm_multicast_t group, 846 bcm_if_t intf, 847 bcm_if_t *encap_id); 848 849 /*! 850 * \brief Set maximum transmission unit. 851 * 852 * \param [in] unit Unit Number. 853 * \param [in] mc_index Multicast group ID. 854 * \param [in] mtu Maximum transmission unit to set. 855 * 856 * \retval SHR_E_NONE No errors. 857 * \retval !SHR_E_NONE Failure. 858 */ 859 extern int 860 mbcm_ltsw_multicast_mtu_set( 861 int unit, 862 int mc_index, 863 int mtu); 864 865 /*! 866 * \brief Get maximum transmission unit. 867 * 868 * \param [in] unit Unit Number. 869 * \param [in] mc_index Multicast group ID. 870 * \param [out] mtu Maximum transmission unit to set. 871 * 872 * \retval SHR_E_NONE No errors. 873 * \retval !SHR_E_NONE Failure. 874 */ 875 extern int 876 mbcm_ltsw_multicast_mtu_get( 877 int unit, 878 int mc_index, 879 int *mtu); 880 881 /*! 882 * \brief Initialize replication per-port configuration in the runtime. 883 * 884 * \param [in] unit Unit Number. 885 * \param [in] port Port of this operation. 886 * 887 * \retval SHR_E_NONE No errors. 888 * \retval !SHR_E_NONE Failure. 889 */ 890 extern int 891 mbcm_ltsw_multicast_repl_port_attach( 892 int unit, 893 bcm_port_t port); 894 895 /*! 896 * \brief Clear replication per-port configuration in the runtime. 897 * 898 * \param [in] unit Unit Number. 899 * \param [in] port Port of this operation. 900 * 901 * \retval SHR_E_NONE No errors. 902 * \retval !SHR_E_NONE Failure. 903 */ 904 extern int 905 mbcm_ltsw_multicast_repl_port_detach( 906 int unit, 907 bcm_port_t port); 908 909 /*! 910 * \brief Init l2mc index table management for vlan flooding. 911 * 912 * \param [in] unit Unit Number. 913 * 914 * \retval SHR_E_NONE No errors. 915 * \retval !SHR_E_NONE Failure. 916 */ 917 extern int 918 mbcm_ltsw_multicast_vlan_flood_init(int unit); 919 920 #endif /* BCMINT_LTSW_MBCM_MULTICAST_H */