async.c (769046B)
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 * 7 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 8 * 9 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 10 * 11 * File: xasync.c 12 * Purpose: Asynchronous BCMX API routines 13 * Generator: mkdispatch 1.54 14 */ 15 16 #include <bcm/types.h> 17 #include <bcmx/async.h> 18 #include <bcmx/auth.h> 19 #include <bcmx/bcmx.h> 20 #include <bcmx/cosq.h> 21 #include <bcmx/custom.h> 22 #include <bcmx/failover.h> 23 #include <bcmx/field.h> 24 #include <bcmx/ipfix.h> 25 #include <bcmx/ipmc.h> 26 #include <bcmx/l2.h> 27 #include <bcmx/l3.h> 28 #include <bcmx/link.h> 29 #include <bcmx/mcast.h> 30 #include <bcmx/mim.h> 31 #include <bcmx/mirror.h> 32 #include <bcmx/mpls.h> 33 #include <bcmx/multicast.h> 34 #include <bcmx/niv.h> 35 #include <bcmx/oam.h> 36 #include <bcmx/policer.h> 37 #include <bcmx/port.h> 38 #include <bcmx/proxy.h> 39 #include <bcmx/qos.h> 40 #include <bcmx/rate.h> 41 #include <bcmx/rx.h> 42 #include <bcmx/stat.h> 43 #include <bcmx/stg.h> 44 #include <bcmx/subport.h> 45 #include <bcmx/switch.h> 46 #include <bcmx/trill.h> 47 #include <bcmx/trunk.h> 48 #include <bcmx/tunnel.h> 49 #include <bcmx/tx.h> 50 #include <bcmx/vlan.h> 51 #include <bcmx/wlan.h> 52 53 #include <bcm_int/xasync_req.h> 54 #include <bcm_int/async_server.h> 55 #include <shared/alloc.h> 56 57 #ifdef BCM_ASYNC_SUPPORT 58 59 extern void bcmx_async_run(bcmx_async_req_t *); 60 61 void 62 bcmx_auth_egress_get_async( 63 bcmx_lport_t port, 64 int * enable, 65 bcmx_async_cb_t async_callback, 66 void *async_cookie) 67 { 68 bcmx_async_req_t *async; 69 70 async = sal_alloc(sizeof(*async), "bcmx_async"); 71 if (async == NULL) { 72 if (async_callback != NULL) { 73 (*async_callback)(async_cookie, BCM_E_MEMORY); 74 } 75 return; 76 } 77 async->next = NULL; 78 async->type = BCMX_ASYNC_ENTRY_AUTH_EGRESS_GET; 79 async->run = bcmx_async_run; 80 async->callback = async_callback; 81 async->cookie = async_cookie; 82 async->args.auth_egress_get.port = port; 83 async->args.auth_egress_get.enable = enable; 84 bcm_async_add((bcm_async_req_t *)async); 85 } 86 87 void 88 bcmx_auth_egress_set_async( 89 bcmx_lport_t port, 90 int enable, 91 bcmx_async_cb_t async_callback, 92 void *async_cookie) 93 { 94 bcmx_async_req_t *async; 95 96 async = sal_alloc(sizeof(*async), "bcmx_async"); 97 if (async == NULL) { 98 if (async_callback != NULL) { 99 (*async_callback)(async_cookie, BCM_E_MEMORY); 100 } 101 return; 102 } 103 async->next = NULL; 104 async->type = BCMX_ASYNC_ENTRY_AUTH_EGRESS_SET; 105 async->run = bcmx_async_run; 106 async->callback = async_callback; 107 async->cookie = async_cookie; 108 async->args.auth_egress_set.port = port; 109 async->args.auth_egress_set.enable = enable; 110 bcm_async_add((bcm_async_req_t *)async); 111 } 112 113 void 114 bcmx_auth_mac_add_async( 115 bcmx_lport_t port, 116 bcm_mac_t mac, 117 bcmx_async_cb_t async_callback, 118 void *async_cookie) 119 { 120 bcmx_async_req_t *async; 121 122 async = sal_alloc(sizeof(*async), "bcmx_async"); 123 if (async == NULL) { 124 if (async_callback != NULL) { 125 (*async_callback)(async_cookie, BCM_E_MEMORY); 126 } 127 return; 128 } 129 async->next = NULL; 130 async->type = BCMX_ASYNC_ENTRY_AUTH_MAC_ADD; 131 async->run = bcmx_async_run; 132 async->callback = async_callback; 133 async->cookie = async_cookie; 134 async->args.auth_mac_add.port = port; 135 async->args.auth_mac_add.mac = (uint8 *)mac; 136 bcm_async_add((bcm_async_req_t *)async); 137 } 138 139 void 140 bcmx_auth_mac_delete_async( 141 bcmx_lport_t port, 142 bcm_mac_t mac, 143 bcmx_async_cb_t async_callback, 144 void *async_cookie) 145 { 146 bcmx_async_req_t *async; 147 148 async = sal_alloc(sizeof(*async), "bcmx_async"); 149 if (async == NULL) { 150 if (async_callback != NULL) { 151 (*async_callback)(async_cookie, BCM_E_MEMORY); 152 } 153 return; 154 } 155 async->next = NULL; 156 async->type = BCMX_ASYNC_ENTRY_AUTH_MAC_DELETE; 157 async->run = bcmx_async_run; 158 async->callback = async_callback; 159 async->cookie = async_cookie; 160 async->args.auth_mac_delete.port = port; 161 async->args.auth_mac_delete.mac = (uint8 *)mac; 162 bcm_async_add((bcm_async_req_t *)async); 163 } 164 165 void 166 bcmx_auth_mac_delete_all_async( 167 bcmx_lport_t port, 168 bcmx_async_cb_t async_callback, 169 void *async_cookie) 170 { 171 bcmx_async_req_t *async; 172 173 async = sal_alloc(sizeof(*async), "bcmx_async"); 174 if (async == NULL) { 175 if (async_callback != NULL) { 176 (*async_callback)(async_cookie, BCM_E_MEMORY); 177 } 178 return; 179 } 180 async->next = NULL; 181 async->type = BCMX_ASYNC_ENTRY_AUTH_MAC_DELETE_ALL; 182 async->run = bcmx_async_run; 183 async->callback = async_callback; 184 async->cookie = async_cookie; 185 async->args.auth_mac_delete_all.port = port; 186 bcm_async_add((bcm_async_req_t *)async); 187 } 188 189 void 190 bcmx_auth_mode_get_async( 191 bcmx_lport_t port, 192 uint32 * modep, 193 bcmx_async_cb_t async_callback, 194 void *async_cookie) 195 { 196 bcmx_async_req_t *async; 197 198 async = sal_alloc(sizeof(*async), "bcmx_async"); 199 if (async == NULL) { 200 if (async_callback != NULL) { 201 (*async_callback)(async_cookie, BCM_E_MEMORY); 202 } 203 return; 204 } 205 async->next = NULL; 206 async->type = BCMX_ASYNC_ENTRY_AUTH_MODE_GET; 207 async->run = bcmx_async_run; 208 async->callback = async_callback; 209 async->cookie = async_cookie; 210 async->args.auth_mode_get.port = port; 211 async->args.auth_mode_get.modep = modep; 212 bcm_async_add((bcm_async_req_t *)async); 213 } 214 215 void 216 bcmx_auth_mode_set_async( 217 bcmx_lport_t port, 218 uint32 mode, 219 bcmx_async_cb_t async_callback, 220 void *async_cookie) 221 { 222 bcmx_async_req_t *async; 223 224 async = sal_alloc(sizeof(*async), "bcmx_async"); 225 if (async == NULL) { 226 if (async_callback != NULL) { 227 (*async_callback)(async_cookie, BCM_E_MEMORY); 228 } 229 return; 230 } 231 async->next = NULL; 232 async->type = BCMX_ASYNC_ENTRY_AUTH_MODE_SET; 233 async->run = bcmx_async_run; 234 async->callback = async_callback; 235 async->cookie = async_cookie; 236 async->args.auth_mode_set.port = port; 237 async->args.auth_mode_set.mode = mode; 238 bcm_async_add((bcm_async_req_t *)async); 239 } 240 241 void 242 bcmx_auth_unauth_callback_async( 243 bcmx_auth_cb_t func, 244 void * cookie, 245 bcmx_async_cb_t async_callback, 246 void *async_cookie) 247 { 248 bcmx_async_req_t *async; 249 250 async = sal_alloc(sizeof(*async), "bcmx_async"); 251 if (async == NULL) { 252 if (async_callback != NULL) { 253 (*async_callback)(async_cookie, BCM_E_MEMORY); 254 } 255 return; 256 } 257 async->next = NULL; 258 async->type = BCMX_ASYNC_ENTRY_AUTH_UNAUTH_CALLBACK; 259 async->run = bcmx_async_run; 260 async->callback = async_callback; 261 async->cookie = async_cookie; 262 async->args.auth_unauth_callback.func = func; 263 async->args.auth_unauth_callback.cookie = cookie; 264 bcm_async_add((bcm_async_req_t *)async); 265 } 266 267 void 268 bcmx_cosq_config_get_async( 269 int * numq, 270 bcmx_async_cb_t async_callback, 271 void *async_cookie) 272 { 273 bcmx_async_req_t *async; 274 275 async = sal_alloc(sizeof(*async), "bcmx_async"); 276 if (async == NULL) { 277 if (async_callback != NULL) { 278 (*async_callback)(async_cookie, BCM_E_MEMORY); 279 } 280 return; 281 } 282 async->next = NULL; 283 async->type = BCMX_ASYNC_ENTRY_COSQ_CONFIG_GET; 284 async->run = bcmx_async_run; 285 async->callback = async_callback; 286 async->cookie = async_cookie; 287 async->args.cosq_config_get.numq = numq; 288 bcm_async_add((bcm_async_req_t *)async); 289 } 290 291 void 292 bcmx_cosq_config_set_async( 293 int numq, 294 bcmx_async_cb_t async_callback, 295 void *async_cookie) 296 { 297 bcmx_async_req_t *async; 298 299 async = sal_alloc(sizeof(*async), "bcmx_async"); 300 if (async == NULL) { 301 if (async_callback != NULL) { 302 (*async_callback)(async_cookie, BCM_E_MEMORY); 303 } 304 return; 305 } 306 async->next = NULL; 307 async->type = BCMX_ASYNC_ENTRY_COSQ_CONFIG_SET; 308 async->run = bcmx_async_run; 309 async->callback = async_callback; 310 async->cookie = async_cookie; 311 async->args.cosq_config_set.numq = numq; 312 bcm_async_add((bcm_async_req_t *)async); 313 } 314 315 void 316 bcmx_cosq_control_get_async( 317 bcm_gport_t port, 318 bcm_cos_queue_t cosq, 319 bcm_cosq_control_t type, 320 int * arg, 321 bcmx_async_cb_t async_callback, 322 void *async_cookie) 323 { 324 bcmx_async_req_t *async; 325 326 async = sal_alloc(sizeof(*async), "bcmx_async"); 327 if (async == NULL) { 328 if (async_callback != NULL) { 329 (*async_callback)(async_cookie, BCM_E_MEMORY); 330 } 331 return; 332 } 333 async->next = NULL; 334 async->type = BCMX_ASYNC_ENTRY_COSQ_CONTROL_GET; 335 async->run = bcmx_async_run; 336 async->callback = async_callback; 337 async->cookie = async_cookie; 338 async->args.cosq_control_get.port = port; 339 async->args.cosq_control_get.cosq = cosq; 340 async->args.cosq_control_get.type = type; 341 async->args.cosq_control_get.arg = arg; 342 bcm_async_add((bcm_async_req_t *)async); 343 } 344 345 void 346 bcmx_cosq_control_set_async( 347 bcm_gport_t port, 348 bcm_cos_queue_t cosq, 349 bcm_cosq_control_t type, 350 int arg, 351 bcmx_async_cb_t async_callback, 352 void *async_cookie) 353 { 354 bcmx_async_req_t *async; 355 356 async = sal_alloc(sizeof(*async), "bcmx_async"); 357 if (async == NULL) { 358 if (async_callback != NULL) { 359 (*async_callback)(async_cookie, BCM_E_MEMORY); 360 } 361 return; 362 } 363 async->next = NULL; 364 async->type = BCMX_ASYNC_ENTRY_COSQ_CONTROL_SET; 365 async->run = bcmx_async_run; 366 async->callback = async_callback; 367 async->cookie = async_cookie; 368 async->args.cosq_control_set.port = port; 369 async->args.cosq_control_set.cosq = cosq; 370 async->args.cosq_control_set.type = type; 371 async->args.cosq_control_set.arg = arg; 372 bcm_async_add((bcm_async_req_t *)async); 373 } 374 375 void 376 bcmx_cosq_detach_async( 377 bcmx_async_cb_t async_callback, 378 void *async_cookie) 379 { 380 bcmx_async_req_t *async; 381 382 async = sal_alloc(sizeof(*async), "bcmx_async"); 383 if (async == NULL) { 384 if (async_callback != NULL) { 385 (*async_callback)(async_cookie, BCM_E_MEMORY); 386 } 387 return; 388 } 389 async->next = NULL; 390 async->type = BCMX_ASYNC_ENTRY_COSQ_DETACH; 391 async->run = bcmx_async_run; 392 async->callback = async_callback; 393 async->cookie = async_cookie; 394 bcm_async_add((bcm_async_req_t *)async); 395 } 396 397 void 398 bcmx_cosq_discard_get_async( 399 uint32 * flags, 400 bcmx_async_cb_t async_callback, 401 void *async_cookie) 402 { 403 bcmx_async_req_t *async; 404 405 async = sal_alloc(sizeof(*async), "bcmx_async"); 406 if (async == NULL) { 407 if (async_callback != NULL) { 408 (*async_callback)(async_cookie, BCM_E_MEMORY); 409 } 410 return; 411 } 412 async->next = NULL; 413 async->type = BCMX_ASYNC_ENTRY_COSQ_DISCARD_GET; 414 async->run = bcmx_async_run; 415 async->callback = async_callback; 416 async->cookie = async_cookie; 417 async->args.cosq_discard_get.flags = flags; 418 bcm_async_add((bcm_async_req_t *)async); 419 } 420 421 void 422 bcmx_cosq_discard_port_get_async( 423 bcmx_lport_t port, 424 bcm_cos_queue_t cosq, 425 uint32 color, 426 int * drop_start, 427 int * drop_slope, 428 int * average_time, 429 bcmx_async_cb_t async_callback, 430 void *async_cookie) 431 { 432 bcmx_async_req_t *async; 433 434 async = sal_alloc(sizeof(*async), "bcmx_async"); 435 if (async == NULL) { 436 if (async_callback != NULL) { 437 (*async_callback)(async_cookie, BCM_E_MEMORY); 438 } 439 return; 440 } 441 async->next = NULL; 442 async->type = BCMX_ASYNC_ENTRY_COSQ_DISCARD_PORT_GET; 443 async->run = bcmx_async_run; 444 async->callback = async_callback; 445 async->cookie = async_cookie; 446 async->args.cosq_discard_port_get.port = port; 447 async->args.cosq_discard_port_get.cosq = cosq; 448 async->args.cosq_discard_port_get.color = color; 449 async->args.cosq_discard_port_get.drop_start = drop_start; 450 async->args.cosq_discard_port_get.drop_slope = drop_slope; 451 async->args.cosq_discard_port_get.average_time = average_time; 452 bcm_async_add((bcm_async_req_t *)async); 453 } 454 455 void 456 bcmx_cosq_discard_port_set_async( 457 bcmx_lport_t port, 458 bcm_cos_queue_t cosq, 459 uint32 color, 460 int drop_start, 461 int drop_slope, 462 int average_time, 463 bcmx_async_cb_t async_callback, 464 void *async_cookie) 465 { 466 bcmx_async_req_t *async; 467 468 async = sal_alloc(sizeof(*async), "bcmx_async"); 469 if (async == NULL) { 470 if (async_callback != NULL) { 471 (*async_callback)(async_cookie, BCM_E_MEMORY); 472 } 473 return; 474 } 475 async->next = NULL; 476 async->type = BCMX_ASYNC_ENTRY_COSQ_DISCARD_PORT_SET; 477 async->run = bcmx_async_run; 478 async->callback = async_callback; 479 async->cookie = async_cookie; 480 async->args.cosq_discard_port_set.port = port; 481 async->args.cosq_discard_port_set.cosq = cosq; 482 async->args.cosq_discard_port_set.color = color; 483 async->args.cosq_discard_port_set.drop_start = drop_start; 484 async->args.cosq_discard_port_set.drop_slope = drop_slope; 485 async->args.cosq_discard_port_set.average_time = average_time; 486 bcm_async_add((bcm_async_req_t *)async); 487 } 488 489 void 490 bcmx_cosq_discard_set_async( 491 uint32 flags, 492 bcmx_async_cb_t async_callback, 493 void *async_cookie) 494 { 495 bcmx_async_req_t *async; 496 497 async = sal_alloc(sizeof(*async), "bcmx_async"); 498 if (async == NULL) { 499 if (async_callback != NULL) { 500 (*async_callback)(async_cookie, BCM_E_MEMORY); 501 } 502 return; 503 } 504 async->next = NULL; 505 async->type = BCMX_ASYNC_ENTRY_COSQ_DISCARD_SET; 506 async->run = bcmx_async_run; 507 async->callback = async_callback; 508 async->cookie = async_cookie; 509 async->args.cosq_discard_set.flags = flags; 510 bcm_async_add((bcm_async_req_t *)async); 511 } 512 513 void 514 bcmx_cosq_gport_add_async( 515 bcm_gport_t port, 516 int numq, 517 uint32 flags, 518 bcm_gport_t * gport, 519 bcmx_async_cb_t async_callback, 520 void *async_cookie) 521 { 522 bcmx_async_req_t *async; 523 524 async = sal_alloc(sizeof(*async), "bcmx_async"); 525 if (async == NULL) { 526 if (async_callback != NULL) { 527 (*async_callback)(async_cookie, BCM_E_MEMORY); 528 } 529 return; 530 } 531 async->next = NULL; 532 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_ADD; 533 async->run = bcmx_async_run; 534 async->callback = async_callback; 535 async->cookie = async_cookie; 536 async->args.cosq_gport_add.port = port; 537 async->args.cosq_gport_add.numq = numq; 538 async->args.cosq_gport_add.flags = flags; 539 async->args.cosq_gport_add.gport = gport; 540 bcm_async_add((bcm_async_req_t *)async); 541 } 542 543 void 544 bcmx_cosq_gport_attach_async( 545 bcm_gport_t sched_port, 546 bcm_gport_t input_port, 547 bcm_cos_queue_t cosq, 548 bcmx_async_cb_t async_callback, 549 void *async_cookie) 550 { 551 bcmx_async_req_t *async; 552 553 async = sal_alloc(sizeof(*async), "bcmx_async"); 554 if (async == NULL) { 555 if (async_callback != NULL) { 556 (*async_callback)(async_cookie, BCM_E_MEMORY); 557 } 558 return; 559 } 560 async->next = NULL; 561 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_ATTACH; 562 async->run = bcmx_async_run; 563 async->callback = async_callback; 564 async->cookie = async_cookie; 565 async->args.cosq_gport_attach.sched_port = sched_port; 566 async->args.cosq_gport_attach.input_port = input_port; 567 async->args.cosq_gport_attach.cosq = cosq; 568 bcm_async_add((bcm_async_req_t *)async); 569 } 570 571 void 572 bcmx_cosq_gport_attach_get_async( 573 bcm_gport_t sched_port, 574 bcm_gport_t * input_port, 575 bcm_cos_queue_t * cosq, 576 bcmx_async_cb_t async_callback, 577 void *async_cookie) 578 { 579 bcmx_async_req_t *async; 580 581 async = sal_alloc(sizeof(*async), "bcmx_async"); 582 if (async == NULL) { 583 if (async_callback != NULL) { 584 (*async_callback)(async_cookie, BCM_E_MEMORY); 585 } 586 return; 587 } 588 async->next = NULL; 589 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_ATTACH_GET; 590 async->run = bcmx_async_run; 591 async->callback = async_callback; 592 async->cookie = async_cookie; 593 async->args.cosq_gport_attach_get.sched_port = sched_port; 594 async->args.cosq_gport_attach_get.input_port = input_port; 595 async->args.cosq_gport_attach_get.cosq = cosq; 596 bcm_async_add((bcm_async_req_t *)async); 597 } 598 599 void 600 bcmx_cosq_gport_bandwidth_get_async( 601 bcm_gport_t gport, 602 bcm_cos_queue_t cosq, 603 uint32 * kbits_sec_min, 604 uint32 * kbits_sec_max, 605 uint32 * flags, 606 bcmx_async_cb_t async_callback, 607 void *async_cookie) 608 { 609 bcmx_async_req_t *async; 610 611 async = sal_alloc(sizeof(*async), "bcmx_async"); 612 if (async == NULL) { 613 if (async_callback != NULL) { 614 (*async_callback)(async_cookie, BCM_E_MEMORY); 615 } 616 return; 617 } 618 async->next = NULL; 619 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_BANDWIDTH_GET; 620 async->run = bcmx_async_run; 621 async->callback = async_callback; 622 async->cookie = async_cookie; 623 async->args.cosq_gport_bandwidth_get.gport = gport; 624 async->args.cosq_gport_bandwidth_get.cosq = cosq; 625 async->args.cosq_gport_bandwidth_get.kbits_sec_min = kbits_sec_min; 626 async->args.cosq_gport_bandwidth_get.kbits_sec_max = kbits_sec_max; 627 async->args.cosq_gport_bandwidth_get.flags = flags; 628 bcm_async_add((bcm_async_req_t *)async); 629 } 630 631 void 632 bcmx_cosq_gport_bandwidth_set_async( 633 bcm_gport_t gport, 634 bcm_cos_queue_t cosq, 635 uint32 kbits_sec_min, 636 uint32 kbits_sec_max, 637 uint32 flags, 638 bcmx_async_cb_t async_callback, 639 void *async_cookie) 640 { 641 bcmx_async_req_t *async; 642 643 async = sal_alloc(sizeof(*async), "bcmx_async"); 644 if (async == NULL) { 645 if (async_callback != NULL) { 646 (*async_callback)(async_cookie, BCM_E_MEMORY); 647 } 648 return; 649 } 650 async->next = NULL; 651 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_BANDWIDTH_SET; 652 async->run = bcmx_async_run; 653 async->callback = async_callback; 654 async->cookie = async_cookie; 655 async->args.cosq_gport_bandwidth_set.gport = gport; 656 async->args.cosq_gport_bandwidth_set.cosq = cosq; 657 async->args.cosq_gport_bandwidth_set.kbits_sec_min = kbits_sec_min; 658 async->args.cosq_gport_bandwidth_set.kbits_sec_max = kbits_sec_max; 659 async->args.cosq_gport_bandwidth_set.flags = flags; 660 bcm_async_add((bcm_async_req_t *)async); 661 } 662 663 void 664 bcmx_cosq_gport_delete_async( 665 bcm_gport_t gport, 666 bcmx_async_cb_t async_callback, 667 void *async_cookie) 668 { 669 bcmx_async_req_t *async; 670 671 async = sal_alloc(sizeof(*async), "bcmx_async"); 672 if (async == NULL) { 673 if (async_callback != NULL) { 674 (*async_callback)(async_cookie, BCM_E_MEMORY); 675 } 676 return; 677 } 678 async->next = NULL; 679 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_DELETE; 680 async->run = bcmx_async_run; 681 async->callback = async_callback; 682 async->cookie = async_cookie; 683 async->args.cosq_gport_delete.gport = gport; 684 bcm_async_add((bcm_async_req_t *)async); 685 } 686 687 void 688 bcmx_cosq_gport_destmod_attach_async( 689 bcm_gport_t gport, 690 bcm_gport_t ingress_port, 691 bcm_module_t dest_modid, 692 int fabric_egress_port, 693 bcmx_async_cb_t async_callback, 694 void *async_cookie) 695 { 696 bcmx_async_req_t *async; 697 698 async = sal_alloc(sizeof(*async), "bcmx_async"); 699 if (async == NULL) { 700 if (async_callback != NULL) { 701 (*async_callback)(async_cookie, BCM_E_MEMORY); 702 } 703 return; 704 } 705 async->next = NULL; 706 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_DESTMOD_ATTACH; 707 async->run = bcmx_async_run; 708 async->callback = async_callback; 709 async->cookie = async_cookie; 710 async->args.cosq_gport_destmod_attach.gport = gport; 711 async->args.cosq_gport_destmod_attach.ingress_port = ingress_port; 712 async->args.cosq_gport_destmod_attach.dest_modid = dest_modid; 713 async->args.cosq_gport_destmod_attach.fabric_egress_port = fabric_egress_port; 714 bcm_async_add((bcm_async_req_t *)async); 715 } 716 717 void 718 bcmx_cosq_gport_destmod_detach_async( 719 bcm_gport_t gport, 720 bcm_gport_t ingress_port, 721 bcm_module_t dest_modid, 722 int fabric_egress_port, 723 bcmx_async_cb_t async_callback, 724 void *async_cookie) 725 { 726 bcmx_async_req_t *async; 727 728 async = sal_alloc(sizeof(*async), "bcmx_async"); 729 if (async == NULL) { 730 if (async_callback != NULL) { 731 (*async_callback)(async_cookie, BCM_E_MEMORY); 732 } 733 return; 734 } 735 async->next = NULL; 736 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_DESTMOD_DETACH; 737 async->run = bcmx_async_run; 738 async->callback = async_callback; 739 async->cookie = async_cookie; 740 async->args.cosq_gport_destmod_detach.gport = gport; 741 async->args.cosq_gport_destmod_detach.ingress_port = ingress_port; 742 async->args.cosq_gport_destmod_detach.dest_modid = dest_modid; 743 async->args.cosq_gport_destmod_detach.fabric_egress_port = fabric_egress_port; 744 bcm_async_add((bcm_async_req_t *)async); 745 } 746 747 void 748 bcmx_cosq_gport_detach_async( 749 bcm_gport_t sched_port, 750 bcm_gport_t input_port, 751 bcm_cos_queue_t cosq, 752 bcmx_async_cb_t async_callback, 753 void *async_cookie) 754 { 755 bcmx_async_req_t *async; 756 757 async = sal_alloc(sizeof(*async), "bcmx_async"); 758 if (async == NULL) { 759 if (async_callback != NULL) { 760 (*async_callback)(async_cookie, BCM_E_MEMORY); 761 } 762 return; 763 } 764 async->next = NULL; 765 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_DETACH; 766 async->run = bcmx_async_run; 767 async->callback = async_callback; 768 async->cookie = async_cookie; 769 async->args.cosq_gport_detach.sched_port = sched_port; 770 async->args.cosq_gport_detach.input_port = input_port; 771 async->args.cosq_gport_detach.cosq = cosq; 772 bcm_async_add((bcm_async_req_t *)async); 773 } 774 775 void 776 bcmx_cosq_gport_discard_get_async( 777 bcm_gport_t gport, 778 bcm_cos_queue_t cosq, 779 bcmx_cosq_gport_discard_t * discard, 780 bcmx_async_cb_t async_callback, 781 void *async_cookie) 782 { 783 bcmx_async_req_t *async; 784 785 async = sal_alloc(sizeof(*async), "bcmx_async"); 786 if (async == NULL) { 787 if (async_callback != NULL) { 788 (*async_callback)(async_cookie, BCM_E_MEMORY); 789 } 790 return; 791 } 792 async->next = NULL; 793 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_DISCARD_GET; 794 async->run = bcmx_async_run; 795 async->callback = async_callback; 796 async->cookie = async_cookie; 797 async->args.cosq_gport_discard_get.gport = gport; 798 async->args.cosq_gport_discard_get.cosq = cosq; 799 async->args.cosq_gport_discard_get.discard = discard; 800 bcm_async_add((bcm_async_req_t *)async); 801 } 802 803 void 804 bcmx_cosq_gport_discard_set_async( 805 bcm_gport_t gport, 806 bcm_cos_queue_t cosq, 807 bcmx_cosq_gport_discard_t * discard, 808 bcmx_async_cb_t async_callback, 809 void *async_cookie) 810 { 811 bcmx_async_req_t *async; 812 813 async = sal_alloc(sizeof(*async), "bcmx_async"); 814 if (async == NULL) { 815 if (async_callback != NULL) { 816 (*async_callback)(async_cookie, BCM_E_MEMORY); 817 } 818 return; 819 } 820 async->next = NULL; 821 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_DISCARD_SET; 822 async->run = bcmx_async_run; 823 async->callback = async_callback; 824 async->cookie = async_cookie; 825 async->args.cosq_gport_discard_set.gport = gport; 826 async->args.cosq_gport_discard_set.cosq = cosq; 827 async->args.cosq_gport_discard_set.discard = discard; 828 bcm_async_add((bcm_async_req_t *)async); 829 } 830 831 void 832 bcmx_cosq_gport_sched_get_async( 833 bcm_gport_t gport, 834 bcm_cos_queue_t cosq, 835 int * mode, 836 int * weight, 837 bcmx_async_cb_t async_callback, 838 void *async_cookie) 839 { 840 bcmx_async_req_t *async; 841 842 async = sal_alloc(sizeof(*async), "bcmx_async"); 843 if (async == NULL) { 844 if (async_callback != NULL) { 845 (*async_callback)(async_cookie, BCM_E_MEMORY); 846 } 847 return; 848 } 849 async->next = NULL; 850 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_SCHED_GET; 851 async->run = bcmx_async_run; 852 async->callback = async_callback; 853 async->cookie = async_cookie; 854 async->args.cosq_gport_sched_get.gport = gport; 855 async->args.cosq_gport_sched_get.cosq = cosq; 856 async->args.cosq_gport_sched_get.mode = mode; 857 async->args.cosq_gport_sched_get.weight = weight; 858 bcm_async_add((bcm_async_req_t *)async); 859 } 860 861 void 862 bcmx_cosq_gport_sched_set_async( 863 bcm_gport_t gport, 864 bcm_cos_queue_t cosq, 865 int mode, 866 int weight, 867 bcmx_async_cb_t async_callback, 868 void *async_cookie) 869 { 870 bcmx_async_req_t *async; 871 872 async = sal_alloc(sizeof(*async), "bcmx_async"); 873 if (async == NULL) { 874 if (async_callback != NULL) { 875 (*async_callback)(async_cookie, BCM_E_MEMORY); 876 } 877 return; 878 } 879 async->next = NULL; 880 async->type = BCMX_ASYNC_ENTRY_COSQ_GPORT_SCHED_SET; 881 async->run = bcmx_async_run; 882 async->callback = async_callback; 883 async->cookie = async_cookie; 884 async->args.cosq_gport_sched_set.gport = gport; 885 async->args.cosq_gport_sched_set.cosq = cosq; 886 async->args.cosq_gport_sched_set.mode = mode; 887 async->args.cosq_gport_sched_set.weight = weight; 888 bcm_async_add((bcm_async_req_t *)async); 889 } 890 891 void 892 bcmx_cosq_init_async( 893 bcmx_async_cb_t async_callback, 894 void *async_cookie) 895 { 896 bcmx_async_req_t *async; 897 898 async = sal_alloc(sizeof(*async), "bcmx_async"); 899 if (async == NULL) { 900 if (async_callback != NULL) { 901 (*async_callback)(async_cookie, BCM_E_MEMORY); 902 } 903 return; 904 } 905 async->next = NULL; 906 async->type = BCMX_ASYNC_ENTRY_COSQ_INIT; 907 async->run = bcmx_async_run; 908 async->callback = async_callback; 909 async->cookie = async_cookie; 910 bcm_async_add((bcm_async_req_t *)async); 911 } 912 913 void 914 bcmx_cosq_mapping_get_async( 915 bcm_cos_t priority, 916 bcm_cos_queue_t * cosq, 917 bcmx_async_cb_t async_callback, 918 void *async_cookie) 919 { 920 bcmx_async_req_t *async; 921 922 async = sal_alloc(sizeof(*async), "bcmx_async"); 923 if (async == NULL) { 924 if (async_callback != NULL) { 925 (*async_callback)(async_cookie, BCM_E_MEMORY); 926 } 927 return; 928 } 929 async->next = NULL; 930 async->type = BCMX_ASYNC_ENTRY_COSQ_MAPPING_GET; 931 async->run = bcmx_async_run; 932 async->callback = async_callback; 933 async->cookie = async_cookie; 934 async->args.cosq_mapping_get.priority = priority; 935 async->args.cosq_mapping_get.cosq = cosq; 936 bcm_async_add((bcm_async_req_t *)async); 937 } 938 939 void 940 bcmx_cosq_mapping_set_async( 941 bcm_cos_t priority, 942 bcm_cos_queue_t cosq, 943 bcmx_async_cb_t async_callback, 944 void *async_cookie) 945 { 946 bcmx_async_req_t *async; 947 948 async = sal_alloc(sizeof(*async), "bcmx_async"); 949 if (async == NULL) { 950 if (async_callback != NULL) { 951 (*async_callback)(async_cookie, BCM_E_MEMORY); 952 } 953 return; 954 } 955 async->next = NULL; 956 async->type = BCMX_ASYNC_ENTRY_COSQ_MAPPING_SET; 957 async->run = bcmx_async_run; 958 async->callback = async_callback; 959 async->cookie = async_cookie; 960 async->args.cosq_mapping_set.priority = priority; 961 async->args.cosq_mapping_set.cosq = cosq; 962 bcm_async_add((bcm_async_req_t *)async); 963 } 964 965 void 966 bcmx_cosq_port_bandwidth_get_async( 967 bcmx_lport_t port, 968 bcm_cos_queue_t cosq, 969 uint32 * kbits_sec_min, 970 uint32 * kbits_sec_max, 971 uint32 * flags, 972 bcmx_async_cb_t async_callback, 973 void *async_cookie) 974 { 975 bcmx_async_req_t *async; 976 977 async = sal_alloc(sizeof(*async), "bcmx_async"); 978 if (async == NULL) { 979 if (async_callback != NULL) { 980 (*async_callback)(async_cookie, BCM_E_MEMORY); 981 } 982 return; 983 } 984 async->next = NULL; 985 async->type = BCMX_ASYNC_ENTRY_COSQ_PORT_BANDWIDTH_GET; 986 async->run = bcmx_async_run; 987 async->callback = async_callback; 988 async->cookie = async_cookie; 989 async->args.cosq_port_bandwidth_get.port = port; 990 async->args.cosq_port_bandwidth_get.cosq = cosq; 991 async->args.cosq_port_bandwidth_get.kbits_sec_min = kbits_sec_min; 992 async->args.cosq_port_bandwidth_get.kbits_sec_max = kbits_sec_max; 993 async->args.cosq_port_bandwidth_get.flags = flags; 994 bcm_async_add((bcm_async_req_t *)async); 995 } 996 997 void 998 bcmx_cosq_port_bandwidth_set_async( 999 bcmx_lport_t port, 1000 bcm_cos_queue_t cosq, 1001 uint32 kbits_sec_min, 1002 uint32 kbits_sec_max, 1003 uint32 flags, 1004 bcmx_async_cb_t async_callback, 1005 void *async_cookie) 1006 { 1007 bcmx_async_req_t *async; 1008 1009 async = sal_alloc(sizeof(*async), "bcmx_async"); 1010 if (async == NULL) { 1011 if (async_callback != NULL) { 1012 (*async_callback)(async_cookie, BCM_E_MEMORY); 1013 } 1014 return; 1015 } 1016 async->next = NULL; 1017 async->type = BCMX_ASYNC_ENTRY_COSQ_PORT_BANDWIDTH_SET; 1018 async->run = bcmx_async_run; 1019 async->callback = async_callback; 1020 async->cookie = async_cookie; 1021 async->args.cosq_port_bandwidth_set.port = port; 1022 async->args.cosq_port_bandwidth_set.cosq = cosq; 1023 async->args.cosq_port_bandwidth_set.kbits_sec_min = kbits_sec_min; 1024 async->args.cosq_port_bandwidth_set.kbits_sec_max = kbits_sec_max; 1025 async->args.cosq_port_bandwidth_set.flags = flags; 1026 bcm_async_add((bcm_async_req_t *)async); 1027 } 1028 1029 void 1030 bcmx_cosq_port_mapping_get_async( 1031 bcmx_lport_t port, 1032 bcm_cos_t priority, 1033 bcm_cos_queue_t * cosq, 1034 bcmx_async_cb_t async_callback, 1035 void *async_cookie) 1036 { 1037 bcmx_async_req_t *async; 1038 1039 async = sal_alloc(sizeof(*async), "bcmx_async"); 1040 if (async == NULL) { 1041 if (async_callback != NULL) { 1042 (*async_callback)(async_cookie, BCM_E_MEMORY); 1043 } 1044 return; 1045 } 1046 async->next = NULL; 1047 async->type = BCMX_ASYNC_ENTRY_COSQ_PORT_MAPPING_GET; 1048 async->run = bcmx_async_run; 1049 async->callback = async_callback; 1050 async->cookie = async_cookie; 1051 async->args.cosq_port_mapping_get.port = port; 1052 async->args.cosq_port_mapping_get.priority = priority; 1053 async->args.cosq_port_mapping_get.cosq = cosq; 1054 bcm_async_add((bcm_async_req_t *)async); 1055 } 1056 1057 void 1058 bcmx_cosq_port_mapping_set_async( 1059 bcmx_lport_t port, 1060 bcm_cos_t priority, 1061 bcm_cos_queue_t cosq, 1062 bcmx_async_cb_t async_callback, 1063 void *async_cookie) 1064 { 1065 bcmx_async_req_t *async; 1066 1067 async = sal_alloc(sizeof(*async), "bcmx_async"); 1068 if (async == NULL) { 1069 if (async_callback != NULL) { 1070 (*async_callback)(async_cookie, BCM_E_MEMORY); 1071 } 1072 return; 1073 } 1074 async->next = NULL; 1075 async->type = BCMX_ASYNC_ENTRY_COSQ_PORT_MAPPING_SET; 1076 async->run = bcmx_async_run; 1077 async->callback = async_callback; 1078 async->cookie = async_cookie; 1079 async->args.cosq_port_mapping_set.port = port; 1080 async->args.cosq_port_mapping_set.priority = priority; 1081 async->args.cosq_port_mapping_set.cosq = cosq; 1082 bcm_async_add((bcm_async_req_t *)async); 1083 } 1084 1085 void 1086 bcmx_cosq_port_sched_get_async( 1087 bcmx_lplist_t lplist, 1088 int * mode, 1089 int weights[BCM_COS_COUNT], 1090 int * delay, 1091 bcmx_async_cb_t async_callback, 1092 void *async_cookie) 1093 { 1094 bcmx_async_req_t *async; 1095 1096 async = sal_alloc(sizeof(*async), "bcmx_async"); 1097 if (async == NULL) { 1098 if (async_callback != NULL) { 1099 (*async_callback)(async_cookie, BCM_E_MEMORY); 1100 } 1101 return; 1102 } 1103 async->next = NULL; 1104 async->type = BCMX_ASYNC_ENTRY_COSQ_PORT_SCHED_GET; 1105 async->run = bcmx_async_run; 1106 async->callback = async_callback; 1107 async->cookie = async_cookie; 1108 async->args.cosq_port_sched_get.lplist = lplist; 1109 async->args.cosq_port_sched_get.mode = mode; 1110 async->args.cosq_port_sched_get.weights = (int *)weights; 1111 async->args.cosq_port_sched_get.delay = delay; 1112 bcm_async_add((bcm_async_req_t *)async); 1113 } 1114 1115 void 1116 bcmx_cosq_port_sched_set_async( 1117 bcmx_lplist_t lplist, 1118 int mode, 1119 const int weights[BCM_COS_COUNT], 1120 int delay, 1121 bcmx_async_cb_t async_callback, 1122 void *async_cookie) 1123 { 1124 bcmx_async_req_t *async; 1125 1126 async = sal_alloc(sizeof(*async), "bcmx_async"); 1127 if (async == NULL) { 1128 if (async_callback != NULL) { 1129 (*async_callback)(async_cookie, BCM_E_MEMORY); 1130 } 1131 return; 1132 } 1133 async->next = NULL; 1134 async->type = BCMX_ASYNC_ENTRY_COSQ_PORT_SCHED_SET; 1135 async->run = bcmx_async_run; 1136 async->callback = async_callback; 1137 async->cookie = async_cookie; 1138 async->args.cosq_port_sched_set.lplist = lplist; 1139 async->args.cosq_port_sched_set.mode = mode; 1140 async->args.cosq_port_sched_set.weights = (int *)weights; 1141 async->args.cosq_port_sched_set.delay = delay; 1142 bcm_async_add((bcm_async_req_t *)async); 1143 } 1144 1145 void 1146 bcmx_cosq_sched_get_async( 1147 int * mode, 1148 int weights[BCM_COS_COUNT], 1149 int * delay, 1150 bcmx_async_cb_t async_callback, 1151 void *async_cookie) 1152 { 1153 bcmx_async_req_t *async; 1154 1155 async = sal_alloc(sizeof(*async), "bcmx_async"); 1156 if (async == NULL) { 1157 if (async_callback != NULL) { 1158 (*async_callback)(async_cookie, BCM_E_MEMORY); 1159 } 1160 return; 1161 } 1162 async->next = NULL; 1163 async->type = BCMX_ASYNC_ENTRY_COSQ_SCHED_GET; 1164 async->run = bcmx_async_run; 1165 async->callback = async_callback; 1166 async->cookie = async_cookie; 1167 async->args.cosq_sched_get.mode = mode; 1168 async->args.cosq_sched_get.weights = (int *)weights; 1169 async->args.cosq_sched_get.delay = delay; 1170 bcm_async_add((bcm_async_req_t *)async); 1171 } 1172 1173 void 1174 bcmx_cosq_sched_set_async( 1175 int mode, 1176 const int weights[BCM_COS_COUNT], 1177 int delay, 1178 bcmx_async_cb_t async_callback, 1179 void *async_cookie) 1180 { 1181 bcmx_async_req_t *async; 1182 1183 async = sal_alloc(sizeof(*async), "bcmx_async"); 1184 if (async == NULL) { 1185 if (async_callback != NULL) { 1186 (*async_callback)(async_cookie, BCM_E_MEMORY); 1187 } 1188 return; 1189 } 1190 async->next = NULL; 1191 async->type = BCMX_ASYNC_ENTRY_COSQ_SCHED_SET; 1192 async->run = bcmx_async_run; 1193 async->callback = async_callback; 1194 async->cookie = async_cookie; 1195 async->args.cosq_sched_set.mode = mode; 1196 async->args.cosq_sched_set.weights = (int *)weights; 1197 async->args.cosq_sched_set.delay = delay; 1198 bcm_async_add((bcm_async_req_t *)async); 1199 } 1200 1201 void 1202 bcmx_cosq_sched_weight_max_get_async( 1203 int mode, 1204 int * weight_max, 1205 bcmx_async_cb_t async_callback, 1206 void *async_cookie) 1207 { 1208 bcmx_async_req_t *async; 1209 1210 async = sal_alloc(sizeof(*async), "bcmx_async"); 1211 if (async == NULL) { 1212 if (async_callback != NULL) { 1213 (*async_callback)(async_cookie, BCM_E_MEMORY); 1214 } 1215 return; 1216 } 1217 async->next = NULL; 1218 async->type = BCMX_ASYNC_ENTRY_COSQ_SCHED_WEIGHT_MAX_GET; 1219 async->run = bcmx_async_run; 1220 async->callback = async_callback; 1221 async->cookie = async_cookie; 1222 async->args.cosq_sched_weight_max_get.mode = mode; 1223 async->args.cosq_sched_weight_max_get.weight_max = weight_max; 1224 bcm_async_add((bcm_async_req_t *)async); 1225 } 1226 1227 void 1228 bcmx_cosq_stat_get_async( 1229 bcm_gport_t gport, 1230 bcm_cos_queue_t cosq, 1231 bcm_cosq_stat_t stat, 1232 uint64 * value, 1233 bcmx_async_cb_t async_callback, 1234 void *async_cookie) 1235 { 1236 bcmx_async_req_t *async; 1237 1238 async = sal_alloc(sizeof(*async), "bcmx_async"); 1239 if (async == NULL) { 1240 if (async_callback != NULL) { 1241 (*async_callback)(async_cookie, BCM_E_MEMORY); 1242 } 1243 return; 1244 } 1245 async->next = NULL; 1246 async->type = BCMX_ASYNC_ENTRY_COSQ_STAT_GET; 1247 async->run = bcmx_async_run; 1248 async->callback = async_callback; 1249 async->cookie = async_cookie; 1250 async->args.cosq_stat_get.gport = gport; 1251 async->args.cosq_stat_get.cosq = cosq; 1252 async->args.cosq_stat_get.stat = stat; 1253 async->args.cosq_stat_get.value = value; 1254 bcm_async_add((bcm_async_req_t *)async); 1255 } 1256 1257 void 1258 bcmx_cosq_stat_get32_async( 1259 bcm_gport_t gport, 1260 bcm_cos_queue_t cosq, 1261 bcm_cosq_stat_t stat, 1262 uint32 * value, 1263 bcmx_async_cb_t async_callback, 1264 void *async_cookie) 1265 { 1266 bcmx_async_req_t *async; 1267 1268 async = sal_alloc(sizeof(*async), "bcmx_async"); 1269 if (async == NULL) { 1270 if (async_callback != NULL) { 1271 (*async_callback)(async_cookie, BCM_E_MEMORY); 1272 } 1273 return; 1274 } 1275 async->next = NULL; 1276 async->type = BCMX_ASYNC_ENTRY_COSQ_STAT_GET32; 1277 async->run = bcmx_async_run; 1278 async->callback = async_callback; 1279 async->cookie = async_cookie; 1280 async->args.cosq_stat_get32.gport = gport; 1281 async->args.cosq_stat_get32.cosq = cosq; 1282 async->args.cosq_stat_get32.stat = stat; 1283 async->args.cosq_stat_get32.value = value; 1284 bcm_async_add((bcm_async_req_t *)async); 1285 } 1286 1287 void 1288 bcmx_cosq_stat_set_async( 1289 bcm_gport_t gport, 1290 bcm_cos_queue_t cosq, 1291 bcm_cosq_stat_t stat, 1292 uint64 value, 1293 bcmx_async_cb_t async_callback, 1294 void *async_cookie) 1295 { 1296 bcmx_async_req_t *async; 1297 1298 async = sal_alloc(sizeof(*async), "bcmx_async"); 1299 if (async == NULL) { 1300 if (async_callback != NULL) { 1301 (*async_callback)(async_cookie, BCM_E_MEMORY); 1302 } 1303 return; 1304 } 1305 async->next = NULL; 1306 async->type = BCMX_ASYNC_ENTRY_COSQ_STAT_SET; 1307 async->run = bcmx_async_run; 1308 async->callback = async_callback; 1309 async->cookie = async_cookie; 1310 async->args.cosq_stat_set.gport = gport; 1311 async->args.cosq_stat_set.cosq = cosq; 1312 async->args.cosq_stat_set.stat = stat; 1313 async->args.cosq_stat_set.value = value; 1314 bcm_async_add((bcm_async_req_t *)async); 1315 } 1316 1317 void 1318 bcmx_cosq_stat_set32_async( 1319 bcm_gport_t gport, 1320 bcm_cos_queue_t cosq, 1321 bcm_cosq_stat_t stat, 1322 uint32 value, 1323 bcmx_async_cb_t async_callback, 1324 void *async_cookie) 1325 { 1326 bcmx_async_req_t *async; 1327 1328 async = sal_alloc(sizeof(*async), "bcmx_async"); 1329 if (async == NULL) { 1330 if (async_callback != NULL) { 1331 (*async_callback)(async_cookie, BCM_E_MEMORY); 1332 } 1333 return; 1334 } 1335 async->next = NULL; 1336 async->type = BCMX_ASYNC_ENTRY_COSQ_STAT_SET32; 1337 async->run = bcmx_async_run; 1338 async->callback = async_callback; 1339 async->cookie = async_cookie; 1340 async->args.cosq_stat_set32.gport = gport; 1341 async->args.cosq_stat_set32.cosq = cosq; 1342 async->args.cosq_stat_set32.stat = stat; 1343 async->args.cosq_stat_set32.value = value; 1344 bcm_async_add((bcm_async_req_t *)async); 1345 } 1346 1347 void 1348 bcmx_custom_port_get_async( 1349 bcmx_lport_t port, 1350 int type, 1351 int max_len, 1352 uint32 * args, 1353 int * actual_len, 1354 bcmx_async_cb_t async_callback, 1355 void *async_cookie) 1356 { 1357 bcmx_async_req_t *async; 1358 1359 async = sal_alloc(sizeof(*async), "bcmx_async"); 1360 if (async == NULL) { 1361 if (async_callback != NULL) { 1362 (*async_callback)(async_cookie, BCM_E_MEMORY); 1363 } 1364 return; 1365 } 1366 async->next = NULL; 1367 async->type = BCMX_ASYNC_ENTRY_CUSTOM_PORT_GET; 1368 async->run = bcmx_async_run; 1369 async->callback = async_callback; 1370 async->cookie = async_cookie; 1371 async->args.custom_port_get.port = port; 1372 async->args.custom_port_get.type = type; 1373 async->args.custom_port_get.max_len = max_len; 1374 async->args.custom_port_get.args = args; 1375 async->args.custom_port_get.actual_len = actual_len; 1376 bcm_async_add((bcm_async_req_t *)async); 1377 } 1378 1379 void 1380 bcmx_custom_port_set_async( 1381 bcmx_lport_t port, 1382 int type, 1383 int len, 1384 uint32 * args, 1385 bcmx_async_cb_t async_callback, 1386 void *async_cookie) 1387 { 1388 bcmx_async_req_t *async; 1389 1390 async = sal_alloc(sizeof(*async), "bcmx_async"); 1391 if (async == NULL) { 1392 if (async_callback != NULL) { 1393 (*async_callback)(async_cookie, BCM_E_MEMORY); 1394 } 1395 return; 1396 } 1397 async->next = NULL; 1398 async->type = BCMX_ASYNC_ENTRY_CUSTOM_PORT_SET; 1399 async->run = bcmx_async_run; 1400 async->callback = async_callback; 1401 async->cookie = async_cookie; 1402 async->args.custom_port_set.port = port; 1403 async->args.custom_port_set.type = type; 1404 async->args.custom_port_set.len = len; 1405 async->args.custom_port_set.args = args; 1406 bcm_async_add((bcm_async_req_t *)async); 1407 } 1408 1409 void 1410 bcmx_custom_unit_get_async( 1411 int type, 1412 int max_len, 1413 uint32 * args, 1414 int * actual_len, 1415 bcmx_async_cb_t async_callback, 1416 void *async_cookie) 1417 { 1418 bcmx_async_req_t *async; 1419 1420 async = sal_alloc(sizeof(*async), "bcmx_async"); 1421 if (async == NULL) { 1422 if (async_callback != NULL) { 1423 (*async_callback)(async_cookie, BCM_E_MEMORY); 1424 } 1425 return; 1426 } 1427 async->next = NULL; 1428 async->type = BCMX_ASYNC_ENTRY_CUSTOM_UNIT_GET; 1429 async->run = bcmx_async_run; 1430 async->callback = async_callback; 1431 async->cookie = async_cookie; 1432 async->args.custom_unit_get.type = type; 1433 async->args.custom_unit_get.max_len = max_len; 1434 async->args.custom_unit_get.args = args; 1435 async->args.custom_unit_get.actual_len = actual_len; 1436 bcm_async_add((bcm_async_req_t *)async); 1437 } 1438 1439 void 1440 bcmx_custom_unit_set_async( 1441 int type, 1442 int len, 1443 uint32 * args, 1444 bcmx_async_cb_t async_callback, 1445 void *async_cookie) 1446 { 1447 bcmx_async_req_t *async; 1448 1449 async = sal_alloc(sizeof(*async), "bcmx_async"); 1450 if (async == NULL) { 1451 if (async_callback != NULL) { 1452 (*async_callback)(async_cookie, BCM_E_MEMORY); 1453 } 1454 return; 1455 } 1456 async->next = NULL; 1457 async->type = BCMX_ASYNC_ENTRY_CUSTOM_UNIT_SET; 1458 async->run = bcmx_async_run; 1459 async->callback = async_callback; 1460 async->cookie = async_cookie; 1461 async->args.custom_unit_set.type = type; 1462 async->args.custom_unit_set.len = len; 1463 async->args.custom_unit_set.args = args; 1464 bcm_async_add((bcm_async_req_t *)async); 1465 } 1466 1467 void 1468 bcmx_device_attach_async( 1469 int unit, 1470 bcmx_async_cb_t async_callback, 1471 void *async_cookie) 1472 { 1473 bcmx_async_req_t *async; 1474 1475 async = sal_alloc(sizeof(*async), "bcmx_async"); 1476 if (async == NULL) { 1477 if (async_callback != NULL) { 1478 (*async_callback)(async_cookie, BCM_E_MEMORY); 1479 } 1480 return; 1481 } 1482 async->next = NULL; 1483 async->type = BCMX_ASYNC_ENTRY_DEVICE_ATTACH; 1484 async->run = bcmx_async_run; 1485 async->callback = async_callback; 1486 async->cookie = async_cookie; 1487 async->args.device_attach.unit = unit; 1488 bcm_async_add((bcm_async_req_t *)async); 1489 } 1490 1491 void 1492 bcmx_device_detach_async( 1493 int unit, 1494 bcmx_async_cb_t async_callback, 1495 void *async_cookie) 1496 { 1497 bcmx_async_req_t *async; 1498 1499 async = sal_alloc(sizeof(*async), "bcmx_async"); 1500 if (async == NULL) { 1501 if (async_callback != NULL) { 1502 (*async_callback)(async_cookie, BCM_E_MEMORY); 1503 } 1504 return; 1505 } 1506 async->next = NULL; 1507 async->type = BCMX_ASYNC_ENTRY_DEVICE_DETACH; 1508 async->run = bcmx_async_run; 1509 async->callback = async_callback; 1510 async->cookie = async_cookie; 1511 async->args.device_detach.unit = unit; 1512 bcm_async_add((bcm_async_req_t *)async); 1513 } 1514 1515 void 1516 bcmx_failover_cleanup_async( 1517 bcmx_async_cb_t async_callback, 1518 void *async_cookie) 1519 { 1520 bcmx_async_req_t *async; 1521 1522 async = sal_alloc(sizeof(*async), "bcmx_async"); 1523 if (async == NULL) { 1524 if (async_callback != NULL) { 1525 (*async_callback)(async_cookie, BCM_E_MEMORY); 1526 } 1527 return; 1528 } 1529 async->next = NULL; 1530 async->type = BCMX_ASYNC_ENTRY_FAILOVER_CLEANUP; 1531 async->run = bcmx_async_run; 1532 async->callback = async_callback; 1533 async->cookie = async_cookie; 1534 bcm_async_add((bcm_async_req_t *)async); 1535 } 1536 1537 void 1538 bcmx_failover_create_async( 1539 uint32 flags, 1540 bcm_failover_t * failover_id, 1541 bcmx_async_cb_t async_callback, 1542 void *async_cookie) 1543 { 1544 bcmx_async_req_t *async; 1545 1546 async = sal_alloc(sizeof(*async), "bcmx_async"); 1547 if (async == NULL) { 1548 if (async_callback != NULL) { 1549 (*async_callback)(async_cookie, BCM_E_MEMORY); 1550 } 1551 return; 1552 } 1553 async->next = NULL; 1554 async->type = BCMX_ASYNC_ENTRY_FAILOVER_CREATE; 1555 async->run = bcmx_async_run; 1556 async->callback = async_callback; 1557 async->cookie = async_cookie; 1558 async->args.failover_create.flags = flags; 1559 async->args.failover_create.failover_id = failover_id; 1560 bcm_async_add((bcm_async_req_t *)async); 1561 } 1562 1563 void 1564 bcmx_failover_destroy_async( 1565 bcm_failover_t failover_id, 1566 bcmx_async_cb_t async_callback, 1567 void *async_cookie) 1568 { 1569 bcmx_async_req_t *async; 1570 1571 async = sal_alloc(sizeof(*async), "bcmx_async"); 1572 if (async == NULL) { 1573 if (async_callback != NULL) { 1574 (*async_callback)(async_cookie, BCM_E_MEMORY); 1575 } 1576 return; 1577 } 1578 async->next = NULL; 1579 async->type = BCMX_ASYNC_ENTRY_FAILOVER_DESTROY; 1580 async->run = bcmx_async_run; 1581 async->callback = async_callback; 1582 async->cookie = async_cookie; 1583 async->args.failover_destroy.failover_id = failover_id; 1584 bcm_async_add((bcm_async_req_t *)async); 1585 } 1586 1587 void 1588 bcmx_failover_get_async( 1589 bcm_failover_t failover_id, 1590 int * enable, 1591 bcmx_async_cb_t async_callback, 1592 void *async_cookie) 1593 { 1594 bcmx_async_req_t *async; 1595 1596 async = sal_alloc(sizeof(*async), "bcmx_async"); 1597 if (async == NULL) { 1598 if (async_callback != NULL) { 1599 (*async_callback)(async_cookie, BCM_E_MEMORY); 1600 } 1601 return; 1602 } 1603 async->next = NULL; 1604 async->type = BCMX_ASYNC_ENTRY_FAILOVER_GET; 1605 async->run = bcmx_async_run; 1606 async->callback = async_callback; 1607 async->cookie = async_cookie; 1608 async->args.failover_get.failover_id = failover_id; 1609 async->args.failover_get.enable = enable; 1610 bcm_async_add((bcm_async_req_t *)async); 1611 } 1612 1613 void 1614 bcmx_failover_init_async( 1615 bcmx_async_cb_t async_callback, 1616 void *async_cookie) 1617 { 1618 bcmx_async_req_t *async; 1619 1620 async = sal_alloc(sizeof(*async), "bcmx_async"); 1621 if (async == NULL) { 1622 if (async_callback != NULL) { 1623 (*async_callback)(async_cookie, BCM_E_MEMORY); 1624 } 1625 return; 1626 } 1627 async->next = NULL; 1628 async->type = BCMX_ASYNC_ENTRY_FAILOVER_INIT; 1629 async->run = bcmx_async_run; 1630 async->callback = async_callback; 1631 async->cookie = async_cookie; 1632 bcm_async_add((bcm_async_req_t *)async); 1633 } 1634 1635 void 1636 bcmx_failover_set_async( 1637 bcm_failover_t failover_id, 1638 int enable, 1639 bcmx_async_cb_t async_callback, 1640 void *async_cookie) 1641 { 1642 bcmx_async_req_t *async; 1643 1644 async = sal_alloc(sizeof(*async), "bcmx_async"); 1645 if (async == NULL) { 1646 if (async_callback != NULL) { 1647 (*async_callback)(async_cookie, BCM_E_MEMORY); 1648 } 1649 return; 1650 } 1651 async->next = NULL; 1652 async->type = BCMX_ASYNC_ENTRY_FAILOVER_SET; 1653 async->run = bcmx_async_run; 1654 async->callback = async_callback; 1655 async->cookie = async_cookie; 1656 async->args.failover_set.failover_id = failover_id; 1657 async->args.failover_set.enable = enable; 1658 bcm_async_add((bcm_async_req_t *)async); 1659 } 1660 1661 void 1662 bcmx_field_action_add_async( 1663 bcm_field_entry_t entry, 1664 bcm_field_action_t action, 1665 uint32 param0, 1666 uint32 param1, 1667 bcmx_async_cb_t async_callback, 1668 void *async_cookie) 1669 { 1670 bcmx_async_req_t *async; 1671 1672 async = sal_alloc(sizeof(*async), "bcmx_async"); 1673 if (async == NULL) { 1674 if (async_callback != NULL) { 1675 (*async_callback)(async_cookie, BCM_E_MEMORY); 1676 } 1677 return; 1678 } 1679 async->next = NULL; 1680 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_ADD; 1681 async->run = bcmx_async_run; 1682 async->callback = async_callback; 1683 async->cookie = async_cookie; 1684 async->args.field_action_add.entry = entry; 1685 async->args.field_action_add.action = action; 1686 async->args.field_action_add.param0 = param0; 1687 async->args.field_action_add.param1 = param1; 1688 bcm_async_add((bcm_async_req_t *)async); 1689 } 1690 1691 void 1692 bcmx_field_action_delete_async( 1693 bcm_field_entry_t entry, 1694 bcm_field_action_t action, 1695 uint32 param0, 1696 uint32 param1, 1697 bcmx_async_cb_t async_callback, 1698 void *async_cookie) 1699 { 1700 bcmx_async_req_t *async; 1701 1702 async = sal_alloc(sizeof(*async), "bcmx_async"); 1703 if (async == NULL) { 1704 if (async_callback != NULL) { 1705 (*async_callback)(async_cookie, BCM_E_MEMORY); 1706 } 1707 return; 1708 } 1709 async->next = NULL; 1710 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_DELETE; 1711 async->run = bcmx_async_run; 1712 async->callback = async_callback; 1713 async->cookie = async_cookie; 1714 async->args.field_action_delete.entry = entry; 1715 async->args.field_action_delete.action = action; 1716 async->args.field_action_delete.param0 = param0; 1717 async->args.field_action_delete.param1 = param1; 1718 bcm_async_add((bcm_async_req_t *)async); 1719 } 1720 1721 void 1722 bcmx_field_action_get_async( 1723 bcm_field_entry_t entry, 1724 bcm_field_action_t action, 1725 uint32 * param0, 1726 uint32 * param1, 1727 bcmx_async_cb_t async_callback, 1728 void *async_cookie) 1729 { 1730 bcmx_async_req_t *async; 1731 1732 async = sal_alloc(sizeof(*async), "bcmx_async"); 1733 if (async == NULL) { 1734 if (async_callback != NULL) { 1735 (*async_callback)(async_cookie, BCM_E_MEMORY); 1736 } 1737 return; 1738 } 1739 async->next = NULL; 1740 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_GET; 1741 async->run = bcmx_async_run; 1742 async->callback = async_callback; 1743 async->cookie = async_cookie; 1744 async->args.field_action_get.entry = entry; 1745 async->args.field_action_get.action = action; 1746 async->args.field_action_get.param0 = param0; 1747 async->args.field_action_get.param1 = param1; 1748 bcm_async_add((bcm_async_req_t *)async); 1749 } 1750 1751 void 1752 bcmx_field_action_mac_add_async( 1753 bcm_field_entry_t entry, 1754 bcm_field_action_t action, 1755 bcm_mac_t mac, 1756 bcmx_async_cb_t async_callback, 1757 void *async_cookie) 1758 { 1759 bcmx_async_req_t *async; 1760 1761 async = sal_alloc(sizeof(*async), "bcmx_async"); 1762 if (async == NULL) { 1763 if (async_callback != NULL) { 1764 (*async_callback)(async_cookie, BCM_E_MEMORY); 1765 } 1766 return; 1767 } 1768 async->next = NULL; 1769 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_MAC_ADD; 1770 async->run = bcmx_async_run; 1771 async->callback = async_callback; 1772 async->cookie = async_cookie; 1773 async->args.field_action_mac_add.entry = entry; 1774 async->args.field_action_mac_add.action = action; 1775 async->args.field_action_mac_add.mac = (uint8 *)mac; 1776 bcm_async_add((bcm_async_req_t *)async); 1777 } 1778 1779 void 1780 bcmx_field_action_mac_get_async( 1781 bcm_field_entry_t entry, 1782 bcm_field_action_t action, 1783 bcm_mac_t * mac, 1784 bcmx_async_cb_t async_callback, 1785 void *async_cookie) 1786 { 1787 bcmx_async_req_t *async; 1788 1789 async = sal_alloc(sizeof(*async), "bcmx_async"); 1790 if (async == NULL) { 1791 if (async_callback != NULL) { 1792 (*async_callback)(async_cookie, BCM_E_MEMORY); 1793 } 1794 return; 1795 } 1796 async->next = NULL; 1797 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_MAC_GET; 1798 async->run = bcmx_async_run; 1799 async->callback = async_callback; 1800 async->cookie = async_cookie; 1801 async->args.field_action_mac_get.entry = entry; 1802 async->args.field_action_mac_get.action = action; 1803 async->args.field_action_mac_get.mac = mac; 1804 bcm_async_add((bcm_async_req_t *)async); 1805 } 1806 1807 void 1808 bcmx_field_action_ports_add_async( 1809 bcm_field_entry_t entry, 1810 bcm_field_action_t action, 1811 bcmx_lplist_t lplist, 1812 bcmx_async_cb_t async_callback, 1813 void *async_cookie) 1814 { 1815 bcmx_async_req_t *async; 1816 1817 async = sal_alloc(sizeof(*async), "bcmx_async"); 1818 if (async == NULL) { 1819 if (async_callback != NULL) { 1820 (*async_callback)(async_cookie, BCM_E_MEMORY); 1821 } 1822 return; 1823 } 1824 async->next = NULL; 1825 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_PORTS_ADD; 1826 async->run = bcmx_async_run; 1827 async->callback = async_callback; 1828 async->cookie = async_cookie; 1829 async->args.field_action_ports_add.entry = entry; 1830 async->args.field_action_ports_add.action = action; 1831 async->args.field_action_ports_add.lplist = lplist; 1832 bcm_async_add((bcm_async_req_t *)async); 1833 } 1834 1835 void 1836 bcmx_field_action_ports_get_async( 1837 bcm_field_entry_t entry, 1838 bcm_field_action_t action, 1839 bcmx_lplist_t * lplist, 1840 bcmx_async_cb_t async_callback, 1841 void *async_cookie) 1842 { 1843 bcmx_async_req_t *async; 1844 1845 async = sal_alloc(sizeof(*async), "bcmx_async"); 1846 if (async == NULL) { 1847 if (async_callback != NULL) { 1848 (*async_callback)(async_cookie, BCM_E_MEMORY); 1849 } 1850 return; 1851 } 1852 async->next = NULL; 1853 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_PORTS_GET; 1854 async->run = bcmx_async_run; 1855 async->callback = async_callback; 1856 async->cookie = async_cookie; 1857 async->args.field_action_ports_get.entry = entry; 1858 async->args.field_action_ports_get.action = action; 1859 async->args.field_action_ports_get.lplist = lplist; 1860 bcm_async_add((bcm_async_req_t *)async); 1861 } 1862 1863 void 1864 bcmx_field_action_remove_async( 1865 bcm_field_entry_t entry, 1866 bcm_field_action_t action, 1867 bcmx_async_cb_t async_callback, 1868 void *async_cookie) 1869 { 1870 bcmx_async_req_t *async; 1871 1872 async = sal_alloc(sizeof(*async), "bcmx_async"); 1873 if (async == NULL) { 1874 if (async_callback != NULL) { 1875 (*async_callback)(async_cookie, BCM_E_MEMORY); 1876 } 1877 return; 1878 } 1879 async->next = NULL; 1880 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_REMOVE; 1881 async->run = bcmx_async_run; 1882 async->callback = async_callback; 1883 async->cookie = async_cookie; 1884 async->args.field_action_remove.entry = entry; 1885 async->args.field_action_remove.action = action; 1886 bcm_async_add((bcm_async_req_t *)async); 1887 } 1888 1889 void 1890 bcmx_field_action_remove_all_async( 1891 bcm_field_entry_t entry, 1892 bcmx_async_cb_t async_callback, 1893 void *async_cookie) 1894 { 1895 bcmx_async_req_t *async; 1896 1897 async = sal_alloc(sizeof(*async), "bcmx_async"); 1898 if (async == NULL) { 1899 if (async_callback != NULL) { 1900 (*async_callback)(async_cookie, BCM_E_MEMORY); 1901 } 1902 return; 1903 } 1904 async->next = NULL; 1905 async->type = BCMX_ASYNC_ENTRY_FIELD_ACTION_REMOVE_ALL; 1906 async->run = bcmx_async_run; 1907 async->callback = async_callback; 1908 async->cookie = async_cookie; 1909 async->args.field_action_remove_all.entry = entry; 1910 bcm_async_add((bcm_async_req_t *)async); 1911 } 1912 1913 void 1914 bcmx_field_control_get_async( 1915 bcm_field_control_t control, 1916 uint32 * state, 1917 bcmx_async_cb_t async_callback, 1918 void *async_cookie) 1919 { 1920 bcmx_async_req_t *async; 1921 1922 async = sal_alloc(sizeof(*async), "bcmx_async"); 1923 if (async == NULL) { 1924 if (async_callback != NULL) { 1925 (*async_callback)(async_cookie, BCM_E_MEMORY); 1926 } 1927 return; 1928 } 1929 async->next = NULL; 1930 async->type = BCMX_ASYNC_ENTRY_FIELD_CONTROL_GET; 1931 async->run = bcmx_async_run; 1932 async->callback = async_callback; 1933 async->cookie = async_cookie; 1934 async->args.field_control_get.control = control; 1935 async->args.field_control_get.state = state; 1936 bcm_async_add((bcm_async_req_t *)async); 1937 } 1938 1939 void 1940 bcmx_field_control_set_async( 1941 bcm_field_control_t control, 1942 uint32 state, 1943 bcmx_async_cb_t async_callback, 1944 void *async_cookie) 1945 { 1946 bcmx_async_req_t *async; 1947 1948 async = sal_alloc(sizeof(*async), "bcmx_async"); 1949 if (async == NULL) { 1950 if (async_callback != NULL) { 1951 (*async_callback)(async_cookie, BCM_E_MEMORY); 1952 } 1953 return; 1954 } 1955 async->next = NULL; 1956 async->type = BCMX_ASYNC_ENTRY_FIELD_CONTROL_SET; 1957 async->run = bcmx_async_run; 1958 async->callback = async_callback; 1959 async->cookie = async_cookie; 1960 async->args.field_control_set.control = control; 1961 async->args.field_control_set.state = state; 1962 bcm_async_add((bcm_async_req_t *)async); 1963 } 1964 1965 void 1966 bcmx_field_data_qualifier_create_async( 1967 bcmx_field_data_qualifier_t * data_qualifier, 1968 bcmx_async_cb_t async_callback, 1969 void *async_cookie) 1970 { 1971 bcmx_async_req_t *async; 1972 1973 async = sal_alloc(sizeof(*async), "bcmx_async"); 1974 if (async == NULL) { 1975 if (async_callback != NULL) { 1976 (*async_callback)(async_cookie, BCM_E_MEMORY); 1977 } 1978 return; 1979 } 1980 async->next = NULL; 1981 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_CREATE; 1982 async->run = bcmx_async_run; 1983 async->callback = async_callback; 1984 async->cookie = async_cookie; 1985 async->args.field_data_qualifier_create.data_qualifier = data_qualifier; 1986 bcm_async_add((bcm_async_req_t *)async); 1987 } 1988 1989 void 1990 bcmx_field_data_qualifier_destroy_async( 1991 int qual_id, 1992 bcmx_async_cb_t async_callback, 1993 void *async_cookie) 1994 { 1995 bcmx_async_req_t *async; 1996 1997 async = sal_alloc(sizeof(*async), "bcmx_async"); 1998 if (async == NULL) { 1999 if (async_callback != NULL) { 2000 (*async_callback)(async_cookie, BCM_E_MEMORY); 2001 } 2002 return; 2003 } 2004 async->next = NULL; 2005 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_DESTROY; 2006 async->run = bcmx_async_run; 2007 async->callback = async_callback; 2008 async->cookie = async_cookie; 2009 async->args.field_data_qualifier_destroy.qual_id = qual_id; 2010 bcm_async_add((bcm_async_req_t *)async); 2011 } 2012 2013 void 2014 bcmx_field_data_qualifier_destroy_all_async( 2015 bcmx_async_cb_t async_callback, 2016 void *async_cookie) 2017 { 2018 bcmx_async_req_t *async; 2019 2020 async = sal_alloc(sizeof(*async), "bcmx_async"); 2021 if (async == NULL) { 2022 if (async_callback != NULL) { 2023 (*async_callback)(async_cookie, BCM_E_MEMORY); 2024 } 2025 return; 2026 } 2027 async->next = NULL; 2028 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_DESTROY_ALL; 2029 async->run = bcmx_async_run; 2030 async->callback = async_callback; 2031 async->cookie = async_cookie; 2032 bcm_async_add((bcm_async_req_t *)async); 2033 } 2034 2035 void 2036 bcmx_field_data_qualifier_ethertype_add_async( 2037 int qual_id, 2038 bcmx_field_data_ethertype_t * etype, 2039 bcmx_async_cb_t async_callback, 2040 void *async_cookie) 2041 { 2042 bcmx_async_req_t *async; 2043 2044 async = sal_alloc(sizeof(*async), "bcmx_async"); 2045 if (async == NULL) { 2046 if (async_callback != NULL) { 2047 (*async_callback)(async_cookie, BCM_E_MEMORY); 2048 } 2049 return; 2050 } 2051 async->next = NULL; 2052 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_ETHERTYPE_ADD; 2053 async->run = bcmx_async_run; 2054 async->callback = async_callback; 2055 async->cookie = async_cookie; 2056 async->args.field_data_qualifier_ethertype_add.qual_id = qual_id; 2057 async->args.field_data_qualifier_ethertype_add.etype = etype; 2058 bcm_async_add((bcm_async_req_t *)async); 2059 } 2060 2061 void 2062 bcmx_field_data_qualifier_ethertype_delete_async( 2063 int qual_id, 2064 bcmx_field_data_ethertype_t * etype, 2065 bcmx_async_cb_t async_callback, 2066 void *async_cookie) 2067 { 2068 bcmx_async_req_t *async; 2069 2070 async = sal_alloc(sizeof(*async), "bcmx_async"); 2071 if (async == NULL) { 2072 if (async_callback != NULL) { 2073 (*async_callback)(async_cookie, BCM_E_MEMORY); 2074 } 2075 return; 2076 } 2077 async->next = NULL; 2078 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_ETHERTYPE_DELETE; 2079 async->run = bcmx_async_run; 2080 async->callback = async_callback; 2081 async->cookie = async_cookie; 2082 async->args.field_data_qualifier_ethertype_delete.qual_id = qual_id; 2083 async->args.field_data_qualifier_ethertype_delete.etype = etype; 2084 bcm_async_add((bcm_async_req_t *)async); 2085 } 2086 2087 void 2088 bcmx_field_data_qualifier_get_async( 2089 int qual_id, 2090 bcmx_field_data_qualifier_t * qual, 2091 bcmx_async_cb_t async_callback, 2092 void *async_cookie) 2093 { 2094 bcmx_async_req_t *async; 2095 2096 async = sal_alloc(sizeof(*async), "bcmx_async"); 2097 if (async == NULL) { 2098 if (async_callback != NULL) { 2099 (*async_callback)(async_cookie, BCM_E_MEMORY); 2100 } 2101 return; 2102 } 2103 async->next = NULL; 2104 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_GET; 2105 async->run = bcmx_async_run; 2106 async->callback = async_callback; 2107 async->cookie = async_cookie; 2108 async->args.field_data_qualifier_get.qual_id = qual_id; 2109 async->args.field_data_qualifier_get.qual = qual; 2110 bcm_async_add((bcm_async_req_t *)async); 2111 } 2112 2113 void 2114 bcmx_field_data_qualifier_ip_protocol_add_async( 2115 int qual_id, 2116 bcmx_field_data_ip_protocol_t * ip_protocol, 2117 bcmx_async_cb_t async_callback, 2118 void *async_cookie) 2119 { 2120 bcmx_async_req_t *async; 2121 2122 async = sal_alloc(sizeof(*async), "bcmx_async"); 2123 if (async == NULL) { 2124 if (async_callback != NULL) { 2125 (*async_callback)(async_cookie, BCM_E_MEMORY); 2126 } 2127 return; 2128 } 2129 async->next = NULL; 2130 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_IP_PROTOCOL_ADD; 2131 async->run = bcmx_async_run; 2132 async->callback = async_callback; 2133 async->cookie = async_cookie; 2134 async->args.field_data_qualifier_ip_protocol_add.qual_id = qual_id; 2135 async->args.field_data_qualifier_ip_protocol_add.ip_protocol = ip_protocol; 2136 bcm_async_add((bcm_async_req_t *)async); 2137 } 2138 2139 void 2140 bcmx_field_data_qualifier_ip_protocol_delete_async( 2141 int qual_id, 2142 bcmx_field_data_ip_protocol_t * ip_protocol, 2143 bcmx_async_cb_t async_callback, 2144 void *async_cookie) 2145 { 2146 bcmx_async_req_t *async; 2147 2148 async = sal_alloc(sizeof(*async), "bcmx_async"); 2149 if (async == NULL) { 2150 if (async_callback != NULL) { 2151 (*async_callback)(async_cookie, BCM_E_MEMORY); 2152 } 2153 return; 2154 } 2155 async->next = NULL; 2156 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_IP_PROTOCOL_DELETE; 2157 async->run = bcmx_async_run; 2158 async->callback = async_callback; 2159 async->cookie = async_cookie; 2160 async->args.field_data_qualifier_ip_protocol_delete.qual_id = qual_id; 2161 async->args.field_data_qualifier_ip_protocol_delete.ip_protocol = ip_protocol; 2162 bcm_async_add((bcm_async_req_t *)async); 2163 } 2164 2165 void 2166 bcmx_field_data_qualifier_multi_get_async( 2167 int qual_size, 2168 int * qual_array, 2169 int * qual_count, 2170 bcmx_async_cb_t async_callback, 2171 void *async_cookie) 2172 { 2173 bcmx_async_req_t *async; 2174 2175 async = sal_alloc(sizeof(*async), "bcmx_async"); 2176 if (async == NULL) { 2177 if (async_callback != NULL) { 2178 (*async_callback)(async_cookie, BCM_E_MEMORY); 2179 } 2180 return; 2181 } 2182 async->next = NULL; 2183 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_MULTI_GET; 2184 async->run = bcmx_async_run; 2185 async->callback = async_callback; 2186 async->cookie = async_cookie; 2187 async->args.field_data_qualifier_multi_get.qual_size = qual_size; 2188 async->args.field_data_qualifier_multi_get.qual_array = qual_array; 2189 async->args.field_data_qualifier_multi_get.qual_count = qual_count; 2190 bcm_async_add((bcm_async_req_t *)async); 2191 } 2192 2193 void 2194 bcmx_field_data_qualifier_packet_format_add_async( 2195 int qual_id, 2196 bcmx_field_data_packet_format_t * packet_format, 2197 bcmx_async_cb_t async_callback, 2198 void *async_cookie) 2199 { 2200 bcmx_async_req_t *async; 2201 2202 async = sal_alloc(sizeof(*async), "bcmx_async"); 2203 if (async == NULL) { 2204 if (async_callback != NULL) { 2205 (*async_callback)(async_cookie, BCM_E_MEMORY); 2206 } 2207 return; 2208 } 2209 async->next = NULL; 2210 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_PACKET_FORMAT_ADD; 2211 async->run = bcmx_async_run; 2212 async->callback = async_callback; 2213 async->cookie = async_cookie; 2214 async->args.field_data_qualifier_packet_format_add.qual_id = qual_id; 2215 async->args.field_data_qualifier_packet_format_add.packet_format = packet_format; 2216 bcm_async_add((bcm_async_req_t *)async); 2217 } 2218 2219 void 2220 bcmx_field_data_qualifier_packet_format_delete_async( 2221 int qual_id, 2222 bcmx_field_data_packet_format_t * packet_format, 2223 bcmx_async_cb_t async_callback, 2224 void *async_cookie) 2225 { 2226 bcmx_async_req_t *async; 2227 2228 async = sal_alloc(sizeof(*async), "bcmx_async"); 2229 if (async == NULL) { 2230 if (async_callback != NULL) { 2231 (*async_callback)(async_cookie, BCM_E_MEMORY); 2232 } 2233 return; 2234 } 2235 async->next = NULL; 2236 async->type = BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_PACKET_FORMAT_DELETE; 2237 async->run = bcmx_async_run; 2238 async->callback = async_callback; 2239 async->cookie = async_cookie; 2240 async->args.field_data_qualifier_packet_format_delete.qual_id = qual_id; 2241 async->args.field_data_qualifier_packet_format_delete.packet_format = packet_format; 2242 bcm_async_add((bcm_async_req_t *)async); 2243 } 2244 2245 void 2246 bcmx_field_entry_copy_async( 2247 bcm_field_entry_t src_entry, 2248 bcm_field_entry_t * dst_entry, 2249 bcmx_async_cb_t async_callback, 2250 void *async_cookie) 2251 { 2252 bcmx_async_req_t *async; 2253 2254 async = sal_alloc(sizeof(*async), "bcmx_async"); 2255 if (async == NULL) { 2256 if (async_callback != NULL) { 2257 (*async_callback)(async_cookie, BCM_E_MEMORY); 2258 } 2259 return; 2260 } 2261 async->next = NULL; 2262 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_COPY; 2263 async->run = bcmx_async_run; 2264 async->callback = async_callback; 2265 async->cookie = async_cookie; 2266 async->args.field_entry_copy.src_entry = src_entry; 2267 async->args.field_entry_copy.dst_entry = dst_entry; 2268 bcm_async_add((bcm_async_req_t *)async); 2269 } 2270 2271 void 2272 bcmx_field_entry_create_async( 2273 bcm_field_group_t group, 2274 bcm_field_entry_t * entry, 2275 bcmx_async_cb_t async_callback, 2276 void *async_cookie) 2277 { 2278 bcmx_async_req_t *async; 2279 2280 async = sal_alloc(sizeof(*async), "bcmx_async"); 2281 if (async == NULL) { 2282 if (async_callback != NULL) { 2283 (*async_callback)(async_cookie, BCM_E_MEMORY); 2284 } 2285 return; 2286 } 2287 async->next = NULL; 2288 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_CREATE; 2289 async->run = bcmx_async_run; 2290 async->callback = async_callback; 2291 async->cookie = async_cookie; 2292 async->args.field_entry_create.group = group; 2293 async->args.field_entry_create.entry = entry; 2294 bcm_async_add((bcm_async_req_t *)async); 2295 } 2296 2297 void 2298 bcmx_field_entry_create_id_async( 2299 bcm_field_group_t group, 2300 bcm_field_entry_t entry, 2301 bcmx_async_cb_t async_callback, 2302 void *async_cookie) 2303 { 2304 bcmx_async_req_t *async; 2305 2306 async = sal_alloc(sizeof(*async), "bcmx_async"); 2307 if (async == NULL) { 2308 if (async_callback != NULL) { 2309 (*async_callback)(async_cookie, BCM_E_MEMORY); 2310 } 2311 return; 2312 } 2313 async->next = NULL; 2314 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_CREATE_ID; 2315 async->run = bcmx_async_run; 2316 async->callback = async_callback; 2317 async->cookie = async_cookie; 2318 async->args.field_entry_create_id.group = group; 2319 async->args.field_entry_create_id.entry = entry; 2320 bcm_async_add((bcm_async_req_t *)async); 2321 } 2322 2323 void 2324 bcmx_field_entry_destroy_async( 2325 bcm_field_entry_t entry, 2326 bcmx_async_cb_t async_callback, 2327 void *async_cookie) 2328 { 2329 bcmx_async_req_t *async; 2330 2331 async = sal_alloc(sizeof(*async), "bcmx_async"); 2332 if (async == NULL) { 2333 if (async_callback != NULL) { 2334 (*async_callback)(async_cookie, BCM_E_MEMORY); 2335 } 2336 return; 2337 } 2338 async->next = NULL; 2339 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_DESTROY; 2340 async->run = bcmx_async_run; 2341 async->callback = async_callback; 2342 async->cookie = async_cookie; 2343 async->args.field_entry_destroy.entry = entry; 2344 bcm_async_add((bcm_async_req_t *)async); 2345 } 2346 2347 void 2348 bcmx_field_entry_destroy_all_async( 2349 bcmx_async_cb_t async_callback, 2350 void *async_cookie) 2351 { 2352 bcmx_async_req_t *async; 2353 2354 async = sal_alloc(sizeof(*async), "bcmx_async"); 2355 if (async == NULL) { 2356 if (async_callback != NULL) { 2357 (*async_callback)(async_cookie, BCM_E_MEMORY); 2358 } 2359 return; 2360 } 2361 async->next = NULL; 2362 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_DESTROY_ALL; 2363 async->run = bcmx_async_run; 2364 async->callback = async_callback; 2365 async->cookie = async_cookie; 2366 bcm_async_add((bcm_async_req_t *)async); 2367 } 2368 2369 void 2370 bcmx_field_entry_install_async( 2371 bcm_field_entry_t entry, 2372 bcmx_async_cb_t async_callback, 2373 void *async_cookie) 2374 { 2375 bcmx_async_req_t *async; 2376 2377 async = sal_alloc(sizeof(*async), "bcmx_async"); 2378 if (async == NULL) { 2379 if (async_callback != NULL) { 2380 (*async_callback)(async_cookie, BCM_E_MEMORY); 2381 } 2382 return; 2383 } 2384 async->next = NULL; 2385 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_INSTALL; 2386 async->run = bcmx_async_run; 2387 async->callback = async_callback; 2388 async->cookie = async_cookie; 2389 async->args.field_entry_install.entry = entry; 2390 bcm_async_add((bcm_async_req_t *)async); 2391 } 2392 2393 void 2394 bcmx_field_entry_multi_get_async( 2395 bcm_field_group_t group, 2396 int entry_size, 2397 bcm_field_entry_t * entry_array, 2398 int * entry_count, 2399 bcmx_async_cb_t async_callback, 2400 void *async_cookie) 2401 { 2402 bcmx_async_req_t *async; 2403 2404 async = sal_alloc(sizeof(*async), "bcmx_async"); 2405 if (async == NULL) { 2406 if (async_callback != NULL) { 2407 (*async_callback)(async_cookie, BCM_E_MEMORY); 2408 } 2409 return; 2410 } 2411 async->next = NULL; 2412 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_MULTI_GET; 2413 async->run = bcmx_async_run; 2414 async->callback = async_callback; 2415 async->cookie = async_cookie; 2416 async->args.field_entry_multi_get.group = group; 2417 async->args.field_entry_multi_get.entry_size = entry_size; 2418 async->args.field_entry_multi_get.entry_array = entry_array; 2419 async->args.field_entry_multi_get.entry_count = entry_count; 2420 bcm_async_add((bcm_async_req_t *)async); 2421 } 2422 2423 void 2424 bcmx_field_entry_policer_attach_async( 2425 bcm_field_entry_t entry_id, 2426 int level, 2427 bcm_policer_t policer_id, 2428 bcmx_async_cb_t async_callback, 2429 void *async_cookie) 2430 { 2431 bcmx_async_req_t *async; 2432 2433 async = sal_alloc(sizeof(*async), "bcmx_async"); 2434 if (async == NULL) { 2435 if (async_callback != NULL) { 2436 (*async_callback)(async_cookie, BCM_E_MEMORY); 2437 } 2438 return; 2439 } 2440 async->next = NULL; 2441 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_ATTACH; 2442 async->run = bcmx_async_run; 2443 async->callback = async_callback; 2444 async->cookie = async_cookie; 2445 async->args.field_entry_policer_attach.entry_id = entry_id; 2446 async->args.field_entry_policer_attach.level = level; 2447 async->args.field_entry_policer_attach.policer_id = policer_id; 2448 bcm_async_add((bcm_async_req_t *)async); 2449 } 2450 2451 void 2452 bcmx_field_entry_policer_detach_async( 2453 bcm_field_entry_t entry_id, 2454 int level, 2455 bcmx_async_cb_t async_callback, 2456 void *async_cookie) 2457 { 2458 bcmx_async_req_t *async; 2459 2460 async = sal_alloc(sizeof(*async), "bcmx_async"); 2461 if (async == NULL) { 2462 if (async_callback != NULL) { 2463 (*async_callback)(async_cookie, BCM_E_MEMORY); 2464 } 2465 return; 2466 } 2467 async->next = NULL; 2468 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_DETACH; 2469 async->run = bcmx_async_run; 2470 async->callback = async_callback; 2471 async->cookie = async_cookie; 2472 async->args.field_entry_policer_detach.entry_id = entry_id; 2473 async->args.field_entry_policer_detach.level = level; 2474 bcm_async_add((bcm_async_req_t *)async); 2475 } 2476 2477 void 2478 bcmx_field_entry_policer_detach_all_async( 2479 bcm_field_entry_t entry_id, 2480 bcmx_async_cb_t async_callback, 2481 void *async_cookie) 2482 { 2483 bcmx_async_req_t *async; 2484 2485 async = sal_alloc(sizeof(*async), "bcmx_async"); 2486 if (async == NULL) { 2487 if (async_callback != NULL) { 2488 (*async_callback)(async_cookie, BCM_E_MEMORY); 2489 } 2490 return; 2491 } 2492 async->next = NULL; 2493 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_DETACH_ALL; 2494 async->run = bcmx_async_run; 2495 async->callback = async_callback; 2496 async->cookie = async_cookie; 2497 async->args.field_entry_policer_detach_all.entry_id = entry_id; 2498 bcm_async_add((bcm_async_req_t *)async); 2499 } 2500 2501 void 2502 bcmx_field_entry_policer_get_async( 2503 bcm_field_entry_t entry_id, 2504 int level, 2505 bcm_policer_t * policer_id, 2506 bcmx_async_cb_t async_callback, 2507 void *async_cookie) 2508 { 2509 bcmx_async_req_t *async; 2510 2511 async = sal_alloc(sizeof(*async), "bcmx_async"); 2512 if (async == NULL) { 2513 if (async_callback != NULL) { 2514 (*async_callback)(async_cookie, BCM_E_MEMORY); 2515 } 2516 return; 2517 } 2518 async->next = NULL; 2519 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_GET; 2520 async->run = bcmx_async_run; 2521 async->callback = async_callback; 2522 async->cookie = async_cookie; 2523 async->args.field_entry_policer_get.entry_id = entry_id; 2524 async->args.field_entry_policer_get.level = level; 2525 async->args.field_entry_policer_get.policer_id = policer_id; 2526 bcm_async_add((bcm_async_req_t *)async); 2527 } 2528 2529 void 2530 bcmx_field_entry_prio_get_async( 2531 bcm_field_entry_t entry, 2532 int * prio, 2533 bcmx_async_cb_t async_callback, 2534 void *async_cookie) 2535 { 2536 bcmx_async_req_t *async; 2537 2538 async = sal_alloc(sizeof(*async), "bcmx_async"); 2539 if (async == NULL) { 2540 if (async_callback != NULL) { 2541 (*async_callback)(async_cookie, BCM_E_MEMORY); 2542 } 2543 return; 2544 } 2545 async->next = NULL; 2546 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_PRIO_GET; 2547 async->run = bcmx_async_run; 2548 async->callback = async_callback; 2549 async->cookie = async_cookie; 2550 async->args.field_entry_prio_get.entry = entry; 2551 async->args.field_entry_prio_get.prio = prio; 2552 bcm_async_add((bcm_async_req_t *)async); 2553 } 2554 2555 void 2556 bcmx_field_entry_prio_set_async( 2557 bcm_field_entry_t entry, 2558 int prio, 2559 bcmx_async_cb_t async_callback, 2560 void *async_cookie) 2561 { 2562 bcmx_async_req_t *async; 2563 2564 async = sal_alloc(sizeof(*async), "bcmx_async"); 2565 if (async == NULL) { 2566 if (async_callback != NULL) { 2567 (*async_callback)(async_cookie, BCM_E_MEMORY); 2568 } 2569 return; 2570 } 2571 async->next = NULL; 2572 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_PRIO_SET; 2573 async->run = bcmx_async_run; 2574 async->callback = async_callback; 2575 async->cookie = async_cookie; 2576 async->args.field_entry_prio_set.entry = entry; 2577 async->args.field_entry_prio_set.prio = prio; 2578 bcm_async_add((bcm_async_req_t *)async); 2579 } 2580 2581 void 2582 bcmx_field_entry_reinstall_async( 2583 bcm_field_entry_t entry, 2584 bcmx_async_cb_t async_callback, 2585 void *async_cookie) 2586 { 2587 bcmx_async_req_t *async; 2588 2589 async = sal_alloc(sizeof(*async), "bcmx_async"); 2590 if (async == NULL) { 2591 if (async_callback != NULL) { 2592 (*async_callback)(async_cookie, BCM_E_MEMORY); 2593 } 2594 return; 2595 } 2596 async->next = NULL; 2597 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_REINSTALL; 2598 async->run = bcmx_async_run; 2599 async->callback = async_callback; 2600 async->cookie = async_cookie; 2601 async->args.field_entry_reinstall.entry = entry; 2602 bcm_async_add((bcm_async_req_t *)async); 2603 } 2604 2605 void 2606 bcmx_field_entry_remove_async( 2607 bcm_field_entry_t entry, 2608 bcmx_async_cb_t async_callback, 2609 void *async_cookie) 2610 { 2611 bcmx_async_req_t *async; 2612 2613 async = sal_alloc(sizeof(*async), "bcmx_async"); 2614 if (async == NULL) { 2615 if (async_callback != NULL) { 2616 (*async_callback)(async_cookie, BCM_E_MEMORY); 2617 } 2618 return; 2619 } 2620 async->next = NULL; 2621 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_REMOVE; 2622 async->run = bcmx_async_run; 2623 async->callback = async_callback; 2624 async->cookie = async_cookie; 2625 async->args.field_entry_remove.entry = entry; 2626 bcm_async_add((bcm_async_req_t *)async); 2627 } 2628 2629 void 2630 bcmx_field_entry_stat_attach_async( 2631 bcm_field_entry_t entry, 2632 int stat_id, 2633 bcmx_async_cb_t async_callback, 2634 void *async_cookie) 2635 { 2636 bcmx_async_req_t *async; 2637 2638 async = sal_alloc(sizeof(*async), "bcmx_async"); 2639 if (async == NULL) { 2640 if (async_callback != NULL) { 2641 (*async_callback)(async_cookie, BCM_E_MEMORY); 2642 } 2643 return; 2644 } 2645 async->next = NULL; 2646 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_STAT_ATTACH; 2647 async->run = bcmx_async_run; 2648 async->callback = async_callback; 2649 async->cookie = async_cookie; 2650 async->args.field_entry_stat_attach.entry = entry; 2651 async->args.field_entry_stat_attach.stat_id = stat_id; 2652 bcm_async_add((bcm_async_req_t *)async); 2653 } 2654 2655 void 2656 bcmx_field_entry_stat_detach_async( 2657 bcm_field_entry_t entry, 2658 int stat_id, 2659 bcmx_async_cb_t async_callback, 2660 void *async_cookie) 2661 { 2662 bcmx_async_req_t *async; 2663 2664 async = sal_alloc(sizeof(*async), "bcmx_async"); 2665 if (async == NULL) { 2666 if (async_callback != NULL) { 2667 (*async_callback)(async_cookie, BCM_E_MEMORY); 2668 } 2669 return; 2670 } 2671 async->next = NULL; 2672 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_STAT_DETACH; 2673 async->run = bcmx_async_run; 2674 async->callback = async_callback; 2675 async->cookie = async_cookie; 2676 async->args.field_entry_stat_detach.entry = entry; 2677 async->args.field_entry_stat_detach.stat_id = stat_id; 2678 bcm_async_add((bcm_async_req_t *)async); 2679 } 2680 2681 void 2682 bcmx_field_entry_stat_get_async( 2683 bcm_field_entry_t entry, 2684 int * stat_id, 2685 bcmx_async_cb_t async_callback, 2686 void *async_cookie) 2687 { 2688 bcmx_async_req_t *async; 2689 2690 async = sal_alloc(sizeof(*async), "bcmx_async"); 2691 if (async == NULL) { 2692 if (async_callback != NULL) { 2693 (*async_callback)(async_cookie, BCM_E_MEMORY); 2694 } 2695 return; 2696 } 2697 async->next = NULL; 2698 async->type = BCMX_ASYNC_ENTRY_FIELD_ENTRY_STAT_GET; 2699 async->run = bcmx_async_run; 2700 async->callback = async_callback; 2701 async->cookie = async_cookie; 2702 async->args.field_entry_stat_get.entry = entry; 2703 async->args.field_entry_stat_get.stat_id = stat_id; 2704 bcm_async_add((bcm_async_req_t *)async); 2705 } 2706 2707 void 2708 bcmx_field_group_compress_async( 2709 bcm_field_group_t group, 2710 bcmx_async_cb_t async_callback, 2711 void *async_cookie) 2712 { 2713 bcmx_async_req_t *async; 2714 2715 async = sal_alloc(sizeof(*async), "bcmx_async"); 2716 if (async == NULL) { 2717 if (async_callback != NULL) { 2718 (*async_callback)(async_cookie, BCM_E_MEMORY); 2719 } 2720 return; 2721 } 2722 async->next = NULL; 2723 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_COMPRESS; 2724 async->run = bcmx_async_run; 2725 async->callback = async_callback; 2726 async->cookie = async_cookie; 2727 async->args.field_group_compress.group = group; 2728 bcm_async_add((bcm_async_req_t *)async); 2729 } 2730 2731 void 2732 bcmx_field_group_create_async( 2733 bcm_field_qset_t qset, 2734 int pri, 2735 bcm_field_group_t * group, 2736 bcmx_async_cb_t async_callback, 2737 void *async_cookie) 2738 { 2739 bcmx_async_req_t *async; 2740 2741 async = sal_alloc(sizeof(*async), "bcmx_async"); 2742 if (async == NULL) { 2743 if (async_callback != NULL) { 2744 (*async_callback)(async_cookie, BCM_E_MEMORY); 2745 } 2746 return; 2747 } 2748 async->next = NULL; 2749 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE; 2750 async->run = bcmx_async_run; 2751 async->callback = async_callback; 2752 async->cookie = async_cookie; 2753 async->args.field_group_create.qset = qset; 2754 async->args.field_group_create.pri = pri; 2755 async->args.field_group_create.group = group; 2756 bcm_async_add((bcm_async_req_t *)async); 2757 } 2758 2759 void 2760 bcmx_field_group_create_id_async( 2761 bcm_field_qset_t qset, 2762 int pri, 2763 bcm_field_group_t group, 2764 bcmx_async_cb_t async_callback, 2765 void *async_cookie) 2766 { 2767 bcmx_async_req_t *async; 2768 2769 async = sal_alloc(sizeof(*async), "bcmx_async"); 2770 if (async == NULL) { 2771 if (async_callback != NULL) { 2772 (*async_callback)(async_cookie, BCM_E_MEMORY); 2773 } 2774 return; 2775 } 2776 async->next = NULL; 2777 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE_ID; 2778 async->run = bcmx_async_run; 2779 async->callback = async_callback; 2780 async->cookie = async_cookie; 2781 async->args.field_group_create_id.qset = qset; 2782 async->args.field_group_create_id.pri = pri; 2783 async->args.field_group_create_id.group = group; 2784 bcm_async_add((bcm_async_req_t *)async); 2785 } 2786 2787 void 2788 bcmx_field_group_create_mode_async( 2789 bcm_field_qset_t qset, 2790 int pri, 2791 bcm_field_group_mode_t mode, 2792 bcm_field_group_t * group, 2793 bcmx_async_cb_t async_callback, 2794 void *async_cookie) 2795 { 2796 bcmx_async_req_t *async; 2797 2798 async = sal_alloc(sizeof(*async), "bcmx_async"); 2799 if (async == NULL) { 2800 if (async_callback != NULL) { 2801 (*async_callback)(async_cookie, BCM_E_MEMORY); 2802 } 2803 return; 2804 } 2805 async->next = NULL; 2806 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE_MODE; 2807 async->run = bcmx_async_run; 2808 async->callback = async_callback; 2809 async->cookie = async_cookie; 2810 async->args.field_group_create_mode.qset = qset; 2811 async->args.field_group_create_mode.pri = pri; 2812 async->args.field_group_create_mode.mode = mode; 2813 async->args.field_group_create_mode.group = group; 2814 bcm_async_add((bcm_async_req_t *)async); 2815 } 2816 2817 void 2818 bcmx_field_group_create_mode_id_async( 2819 bcm_field_qset_t qset, 2820 int pri, 2821 bcm_field_group_mode_t mode, 2822 bcm_field_group_t group, 2823 bcmx_async_cb_t async_callback, 2824 void *async_cookie) 2825 { 2826 bcmx_async_req_t *async; 2827 2828 async = sal_alloc(sizeof(*async), "bcmx_async"); 2829 if (async == NULL) { 2830 if (async_callback != NULL) { 2831 (*async_callback)(async_cookie, BCM_E_MEMORY); 2832 } 2833 return; 2834 } 2835 async->next = NULL; 2836 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE_MODE_ID; 2837 async->run = bcmx_async_run; 2838 async->callback = async_callback; 2839 async->cookie = async_cookie; 2840 async->args.field_group_create_mode_id.qset = qset; 2841 async->args.field_group_create_mode_id.pri = pri; 2842 async->args.field_group_create_mode_id.mode = mode; 2843 async->args.field_group_create_mode_id.group = group; 2844 bcm_async_add((bcm_async_req_t *)async); 2845 } 2846 2847 void 2848 bcmx_field_group_destroy_async( 2849 bcm_field_group_t group, 2850 bcmx_async_cb_t async_callback, 2851 void *async_cookie) 2852 { 2853 bcmx_async_req_t *async; 2854 2855 async = sal_alloc(sizeof(*async), "bcmx_async"); 2856 if (async == NULL) { 2857 if (async_callback != NULL) { 2858 (*async_callback)(async_cookie, BCM_E_MEMORY); 2859 } 2860 return; 2861 } 2862 async->next = NULL; 2863 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_DESTROY; 2864 async->run = bcmx_async_run; 2865 async->callback = async_callback; 2866 async->cookie = async_cookie; 2867 async->args.field_group_destroy.group = group; 2868 bcm_async_add((bcm_async_req_t *)async); 2869 } 2870 2871 void 2872 bcmx_field_group_enable_get_async( 2873 bcm_field_group_t group, 2874 int * enable, 2875 bcmx_async_cb_t async_callback, 2876 void *async_cookie) 2877 { 2878 bcmx_async_req_t *async; 2879 2880 async = sal_alloc(sizeof(*async), "bcmx_async"); 2881 if (async == NULL) { 2882 if (async_callback != NULL) { 2883 (*async_callback)(async_cookie, BCM_E_MEMORY); 2884 } 2885 return; 2886 } 2887 async->next = NULL; 2888 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_ENABLE_GET; 2889 async->run = bcmx_async_run; 2890 async->callback = async_callback; 2891 async->cookie = async_cookie; 2892 async->args.field_group_enable_get.group = group; 2893 async->args.field_group_enable_get.enable = enable; 2894 bcm_async_add((bcm_async_req_t *)async); 2895 } 2896 2897 void 2898 bcmx_field_group_enable_set_async( 2899 bcm_field_group_t group, 2900 int enable, 2901 bcmx_async_cb_t async_callback, 2902 void *async_cookie) 2903 { 2904 bcmx_async_req_t *async; 2905 2906 async = sal_alloc(sizeof(*async), "bcmx_async"); 2907 if (async == NULL) { 2908 if (async_callback != NULL) { 2909 (*async_callback)(async_cookie, BCM_E_MEMORY); 2910 } 2911 return; 2912 } 2913 async->next = NULL; 2914 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_ENABLE_SET; 2915 async->run = bcmx_async_run; 2916 async->callback = async_callback; 2917 async->cookie = async_cookie; 2918 async->args.field_group_enable_set.group = group; 2919 async->args.field_group_enable_set.enable = enable; 2920 bcm_async_add((bcm_async_req_t *)async); 2921 } 2922 2923 void 2924 bcmx_field_group_get_async( 2925 bcm_field_group_t group, 2926 bcm_field_qset_t * qset, 2927 bcmx_async_cb_t async_callback, 2928 void *async_cookie) 2929 { 2930 bcmx_async_req_t *async; 2931 2932 async = sal_alloc(sizeof(*async), "bcmx_async"); 2933 if (async == NULL) { 2934 if (async_callback != NULL) { 2935 (*async_callback)(async_cookie, BCM_E_MEMORY); 2936 } 2937 return; 2938 } 2939 async->next = NULL; 2940 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_GET; 2941 async->run = bcmx_async_run; 2942 async->callback = async_callback; 2943 async->cookie = async_cookie; 2944 async->args.field_group_get.group = group; 2945 async->args.field_group_get.qset = qset; 2946 bcm_async_add((bcm_async_req_t *)async); 2947 } 2948 2949 void 2950 bcmx_field_group_install_async( 2951 bcm_field_group_t group, 2952 bcmx_async_cb_t async_callback, 2953 void *async_cookie) 2954 { 2955 bcmx_async_req_t *async; 2956 2957 async = sal_alloc(sizeof(*async), "bcmx_async"); 2958 if (async == NULL) { 2959 if (async_callback != NULL) { 2960 (*async_callback)(async_cookie, BCM_E_MEMORY); 2961 } 2962 return; 2963 } 2964 async->next = NULL; 2965 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_INSTALL; 2966 async->run = bcmx_async_run; 2967 async->callback = async_callback; 2968 async->cookie = async_cookie; 2969 async->args.field_group_install.group = group; 2970 bcm_async_add((bcm_async_req_t *)async); 2971 } 2972 2973 void 2974 bcmx_field_group_mode_get_async( 2975 bcm_field_group_t group, 2976 bcm_field_group_mode_t * mode, 2977 bcmx_async_cb_t async_callback, 2978 void *async_cookie) 2979 { 2980 bcmx_async_req_t *async; 2981 2982 async = sal_alloc(sizeof(*async), "bcmx_async"); 2983 if (async == NULL) { 2984 if (async_callback != NULL) { 2985 (*async_callback)(async_cookie, BCM_E_MEMORY); 2986 } 2987 return; 2988 } 2989 async->next = NULL; 2990 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_MODE_GET; 2991 async->run = bcmx_async_run; 2992 async->callback = async_callback; 2993 async->cookie = async_cookie; 2994 async->args.field_group_mode_get.group = group; 2995 async->args.field_group_mode_get.mode = mode; 2996 bcm_async_add((bcm_async_req_t *)async); 2997 } 2998 2999 void 3000 bcmx_field_group_port_create_mode_async( 3001 bcmx_lport_t port, 3002 bcm_field_qset_t qset, 3003 int pri, 3004 bcm_field_group_mode_t mode, 3005 bcm_field_group_t * group, 3006 bcmx_async_cb_t async_callback, 3007 void *async_cookie) 3008 { 3009 bcmx_async_req_t *async; 3010 3011 async = sal_alloc(sizeof(*async), "bcmx_async"); 3012 if (async == NULL) { 3013 if (async_callback != NULL) { 3014 (*async_callback)(async_cookie, BCM_E_MEMORY); 3015 } 3016 return; 3017 } 3018 async->next = NULL; 3019 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_PORT_CREATE_MODE; 3020 async->run = bcmx_async_run; 3021 async->callback = async_callback; 3022 async->cookie = async_cookie; 3023 async->args.field_group_port_create_mode.port = port; 3024 async->args.field_group_port_create_mode.qset = qset; 3025 async->args.field_group_port_create_mode.pri = pri; 3026 async->args.field_group_port_create_mode.mode = mode; 3027 async->args.field_group_port_create_mode.group = group; 3028 bcm_async_add((bcm_async_req_t *)async); 3029 } 3030 3031 void 3032 bcmx_field_group_port_create_mode_id_async( 3033 bcmx_lport_t port, 3034 bcm_field_qset_t qset, 3035 int pri, 3036 bcm_field_group_mode_t mode, 3037 bcm_field_group_t group, 3038 bcmx_async_cb_t async_callback, 3039 void *async_cookie) 3040 { 3041 bcmx_async_req_t *async; 3042 3043 async = sal_alloc(sizeof(*async), "bcmx_async"); 3044 if (async == NULL) { 3045 if (async_callback != NULL) { 3046 (*async_callback)(async_cookie, BCM_E_MEMORY); 3047 } 3048 return; 3049 } 3050 async->next = NULL; 3051 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_PORT_CREATE_MODE_ID; 3052 async->run = bcmx_async_run; 3053 async->callback = async_callback; 3054 async->cookie = async_cookie; 3055 async->args.field_group_port_create_mode_id.port = port; 3056 async->args.field_group_port_create_mode_id.qset = qset; 3057 async->args.field_group_port_create_mode_id.pri = pri; 3058 async->args.field_group_port_create_mode_id.mode = mode; 3059 async->args.field_group_port_create_mode_id.group = group; 3060 bcm_async_add((bcm_async_req_t *)async); 3061 } 3062 3063 void 3064 bcmx_field_group_ports_create_mode_async( 3065 bcmx_lplist_t lplist, 3066 bcm_field_qset_t qset, 3067 int pri, 3068 bcm_field_group_mode_t mode, 3069 bcm_field_group_t * group, 3070 bcmx_async_cb_t async_callback, 3071 void *async_cookie) 3072 { 3073 bcmx_async_req_t *async; 3074 3075 async = sal_alloc(sizeof(*async), "bcmx_async"); 3076 if (async == NULL) { 3077 if (async_callback != NULL) { 3078 (*async_callback)(async_cookie, BCM_E_MEMORY); 3079 } 3080 return; 3081 } 3082 async->next = NULL; 3083 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_PORTS_CREATE_MODE; 3084 async->run = bcmx_async_run; 3085 async->callback = async_callback; 3086 async->cookie = async_cookie; 3087 async->args.field_group_ports_create_mode.lplist = lplist; 3088 async->args.field_group_ports_create_mode.qset = qset; 3089 async->args.field_group_ports_create_mode.pri = pri; 3090 async->args.field_group_ports_create_mode.mode = mode; 3091 async->args.field_group_ports_create_mode.group = group; 3092 bcm_async_add((bcm_async_req_t *)async); 3093 } 3094 3095 void 3096 bcmx_field_group_ports_create_mode_id_async( 3097 bcmx_lplist_t lplist, 3098 bcm_field_qset_t qset, 3099 int pri, 3100 bcm_field_group_mode_t mode, 3101 bcm_field_group_t group, 3102 bcmx_async_cb_t async_callback, 3103 void *async_cookie) 3104 { 3105 bcmx_async_req_t *async; 3106 3107 async = sal_alloc(sizeof(*async), "bcmx_async"); 3108 if (async == NULL) { 3109 if (async_callback != NULL) { 3110 (*async_callback)(async_cookie, BCM_E_MEMORY); 3111 } 3112 return; 3113 } 3114 async->next = NULL; 3115 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_PORTS_CREATE_MODE_ID; 3116 async->run = bcmx_async_run; 3117 async->callback = async_callback; 3118 async->cookie = async_cookie; 3119 async->args.field_group_ports_create_mode_id.lplist = lplist; 3120 async->args.field_group_ports_create_mode_id.qset = qset; 3121 async->args.field_group_ports_create_mode_id.pri = pri; 3122 async->args.field_group_ports_create_mode_id.mode = mode; 3123 async->args.field_group_ports_create_mode_id.group = group; 3124 bcm_async_add((bcm_async_req_t *)async); 3125 } 3126 3127 void 3128 bcmx_field_group_priority_get_async( 3129 bcm_field_group_t group, 3130 int * priority, 3131 bcmx_async_cb_t async_callback, 3132 void *async_cookie) 3133 { 3134 bcmx_async_req_t *async; 3135 3136 async = sal_alloc(sizeof(*async), "bcmx_async"); 3137 if (async == NULL) { 3138 if (async_callback != NULL) { 3139 (*async_callback)(async_cookie, BCM_E_MEMORY); 3140 } 3141 return; 3142 } 3143 async->next = NULL; 3144 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_PRIORITY_GET; 3145 async->run = bcmx_async_run; 3146 async->callback = async_callback; 3147 async->cookie = async_cookie; 3148 async->args.field_group_priority_get.group = group; 3149 async->args.field_group_priority_get.priority = priority; 3150 bcm_async_add((bcm_async_req_t *)async); 3151 } 3152 3153 void 3154 bcmx_field_group_priority_set_async( 3155 bcm_field_group_t group, 3156 int priority, 3157 bcmx_async_cb_t async_callback, 3158 void *async_cookie) 3159 { 3160 bcmx_async_req_t *async; 3161 3162 async = sal_alloc(sizeof(*async), "bcmx_async"); 3163 if (async == NULL) { 3164 if (async_callback != NULL) { 3165 (*async_callback)(async_cookie, BCM_E_MEMORY); 3166 } 3167 return; 3168 } 3169 async->next = NULL; 3170 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_PRIORITY_SET; 3171 async->run = bcmx_async_run; 3172 async->callback = async_callback; 3173 async->cookie = async_cookie; 3174 async->args.field_group_priority_set.group = group; 3175 async->args.field_group_priority_set.priority = priority; 3176 bcm_async_add((bcm_async_req_t *)async); 3177 } 3178 3179 void 3180 bcmx_field_group_remove_async( 3181 bcm_field_group_t group, 3182 bcmx_async_cb_t async_callback, 3183 void *async_cookie) 3184 { 3185 bcmx_async_req_t *async; 3186 3187 async = sal_alloc(sizeof(*async), "bcmx_async"); 3188 if (async == NULL) { 3189 if (async_callback != NULL) { 3190 (*async_callback)(async_cookie, BCM_E_MEMORY); 3191 } 3192 return; 3193 } 3194 async->next = NULL; 3195 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_REMOVE; 3196 async->run = bcmx_async_run; 3197 async->callback = async_callback; 3198 async->cookie = async_cookie; 3199 async->args.field_group_remove.group = group; 3200 bcm_async_add((bcm_async_req_t *)async); 3201 } 3202 3203 void 3204 bcmx_field_group_set_async( 3205 bcm_field_group_t group, 3206 bcm_field_qset_t qset, 3207 bcmx_async_cb_t async_callback, 3208 void *async_cookie) 3209 { 3210 bcmx_async_req_t *async; 3211 3212 async = sal_alloc(sizeof(*async), "bcmx_async"); 3213 if (async == NULL) { 3214 if (async_callback != NULL) { 3215 (*async_callback)(async_cookie, BCM_E_MEMORY); 3216 } 3217 return; 3218 } 3219 async->next = NULL; 3220 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_SET; 3221 async->run = bcmx_async_run; 3222 async->callback = async_callback; 3223 async->cookie = async_cookie; 3224 async->args.field_group_set.group = group; 3225 async->args.field_group_set.qset = qset; 3226 bcm_async_add((bcm_async_req_t *)async); 3227 } 3228 3229 void 3230 bcmx_field_group_traverse_async( 3231 bcm_field_group_traverse_cb callback, 3232 void * user_data, 3233 bcmx_async_cb_t async_callback, 3234 void *async_cookie) 3235 { 3236 bcmx_async_req_t *async; 3237 3238 async = sal_alloc(sizeof(*async), "bcmx_async"); 3239 if (async == NULL) { 3240 if (async_callback != NULL) { 3241 (*async_callback)(async_cookie, BCM_E_MEMORY); 3242 } 3243 return; 3244 } 3245 async->next = NULL; 3246 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_TRAVERSE; 3247 async->run = bcmx_async_run; 3248 async->callback = async_callback; 3249 async->cookie = async_cookie; 3250 async->args.field_group_traverse.callback = callback; 3251 async->args.field_group_traverse.user_data = user_data; 3252 bcm_async_add((bcm_async_req_t *)async); 3253 } 3254 3255 void 3256 bcmx_field_group_wlan_create_mode_async( 3257 bcm_field_qset_t qset, 3258 int pri, 3259 bcm_field_group_mode_t mode, 3260 bcm_field_group_t * group, 3261 bcmx_async_cb_t async_callback, 3262 void *async_cookie) 3263 { 3264 bcmx_async_req_t *async; 3265 3266 async = sal_alloc(sizeof(*async), "bcmx_async"); 3267 if (async == NULL) { 3268 if (async_callback != NULL) { 3269 (*async_callback)(async_cookie, BCM_E_MEMORY); 3270 } 3271 return; 3272 } 3273 async->next = NULL; 3274 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_WLAN_CREATE_MODE; 3275 async->run = bcmx_async_run; 3276 async->callback = async_callback; 3277 async->cookie = async_cookie; 3278 async->args.field_group_wlan_create_mode.qset = qset; 3279 async->args.field_group_wlan_create_mode.pri = pri; 3280 async->args.field_group_wlan_create_mode.mode = mode; 3281 async->args.field_group_wlan_create_mode.group = group; 3282 bcm_async_add((bcm_async_req_t *)async); 3283 } 3284 3285 void 3286 bcmx_field_group_wlan_create_mode_id_async( 3287 bcm_field_qset_t qset, 3288 int pri, 3289 bcm_field_group_mode_t mode, 3290 bcm_field_group_t group, 3291 bcmx_async_cb_t async_callback, 3292 void *async_cookie) 3293 { 3294 bcmx_async_req_t *async; 3295 3296 async = sal_alloc(sizeof(*async), "bcmx_async"); 3297 if (async == NULL) { 3298 if (async_callback != NULL) { 3299 (*async_callback)(async_cookie, BCM_E_MEMORY); 3300 } 3301 return; 3302 } 3303 async->next = NULL; 3304 async->type = BCMX_ASYNC_ENTRY_FIELD_GROUP_WLAN_CREATE_MODE_ID; 3305 async->run = bcmx_async_run; 3306 async->callback = async_callback; 3307 async->cookie = async_cookie; 3308 async->args.field_group_wlan_create_mode_id.qset = qset; 3309 async->args.field_group_wlan_create_mode_id.pri = pri; 3310 async->args.field_group_wlan_create_mode_id.mode = mode; 3311 async->args.field_group_wlan_create_mode_id.group = group; 3312 bcm_async_add((bcm_async_req_t *)async); 3313 } 3314 3315 void 3316 bcmx_field_init_async( 3317 bcmx_async_cb_t async_callback, 3318 void *async_cookie) 3319 { 3320 bcmx_async_req_t *async; 3321 3322 async = sal_alloc(sizeof(*async), "bcmx_async"); 3323 if (async == NULL) { 3324 if (async_callback != NULL) { 3325 (*async_callback)(async_cookie, BCM_E_MEMORY); 3326 } 3327 return; 3328 } 3329 async->next = NULL; 3330 async->type = BCMX_ASYNC_ENTRY_FIELD_INIT; 3331 async->run = bcmx_async_run; 3332 async->callback = async_callback; 3333 async->cookie = async_cookie; 3334 bcm_async_add((bcm_async_req_t *)async); 3335 } 3336 3337 void 3338 bcmx_field_qset_data_qualifier_add_async( 3339 bcm_field_qset_t * qset, 3340 int qual_id, 3341 bcmx_async_cb_t async_callback, 3342 void *async_cookie) 3343 { 3344 bcmx_async_req_t *async; 3345 3346 async = sal_alloc(sizeof(*async), "bcmx_async"); 3347 if (async == NULL) { 3348 if (async_callback != NULL) { 3349 (*async_callback)(async_cookie, BCM_E_MEMORY); 3350 } 3351 return; 3352 } 3353 async->next = NULL; 3354 async->type = BCMX_ASYNC_ENTRY_FIELD_QSET_DATA_QUALIFIER_ADD; 3355 async->run = bcmx_async_run; 3356 async->callback = async_callback; 3357 async->cookie = async_cookie; 3358 async->args.field_qset_data_qualifier_add.qset = qset; 3359 async->args.field_qset_data_qualifier_add.qual_id = qual_id; 3360 bcm_async_add((bcm_async_req_t *)async); 3361 } 3362 3363 void 3364 bcmx_field_qset_data_qualifier_get_async( 3365 bcm_field_qset_t * qset, 3366 int qual_max, 3367 int * qual_arr, 3368 int * qual_count, 3369 bcmx_async_cb_t async_callback, 3370 void *async_cookie) 3371 { 3372 bcmx_async_req_t *async; 3373 3374 async = sal_alloc(sizeof(*async), "bcmx_async"); 3375 if (async == NULL) { 3376 if (async_callback != NULL) { 3377 (*async_callback)(async_cookie, BCM_E_MEMORY); 3378 } 3379 return; 3380 } 3381 async->next = NULL; 3382 async->type = BCMX_ASYNC_ENTRY_FIELD_QSET_DATA_QUALIFIER_GET; 3383 async->run = bcmx_async_run; 3384 async->callback = async_callback; 3385 async->cookie = async_cookie; 3386 async->args.field_qset_data_qualifier_get.qset = qset; 3387 async->args.field_qset_data_qualifier_get.qual_max = qual_max; 3388 async->args.field_qset_data_qualifier_get.qual_arr = qual_arr; 3389 async->args.field_qset_data_qualifier_get.qual_count = qual_count; 3390 bcm_async_add((bcm_async_req_t *)async); 3391 } 3392 3393 void 3394 bcmx_field_qualifier_delete_async( 3395 bcm_field_entry_t entry, 3396 bcm_field_qualify_t qual_id, 3397 bcmx_async_cb_t async_callback, 3398 void *async_cookie) 3399 { 3400 bcmx_async_req_t *async; 3401 3402 async = sal_alloc(sizeof(*async), "bcmx_async"); 3403 if (async == NULL) { 3404 if (async_callback != NULL) { 3405 (*async_callback)(async_cookie, BCM_E_MEMORY); 3406 } 3407 return; 3408 } 3409 async->next = NULL; 3410 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFIER_DELETE; 3411 async->run = bcmx_async_run; 3412 async->callback = async_callback; 3413 async->cookie = async_cookie; 3414 async->args.field_qualifier_delete.entry = entry; 3415 async->args.field_qualifier_delete.qual_id = qual_id; 3416 bcm_async_add((bcm_async_req_t *)async); 3417 } 3418 3419 void 3420 bcmx_field_qualify_CnTag_async( 3421 bcm_field_entry_t entry, 3422 uint32 data, 3423 uint32 mask, 3424 bcmx_async_cb_t async_callback, 3425 void *async_cookie) 3426 { 3427 bcmx_async_req_t *async; 3428 3429 async = sal_alloc(sizeof(*async), "bcmx_async"); 3430 if (async == NULL) { 3431 if (async_callback != NULL) { 3432 (*async_callback)(async_cookie, BCM_E_MEMORY); 3433 } 3434 return; 3435 } 3436 async->next = NULL; 3437 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_CNTAG; 3438 async->run = bcmx_async_run; 3439 async->callback = async_callback; 3440 async->cookie = async_cookie; 3441 async->args.field_qualify_CnTag.entry = entry; 3442 async->args.field_qualify_CnTag.data = data; 3443 async->args.field_qualify_CnTag.mask = mask; 3444 bcm_async_add((bcm_async_req_t *)async); 3445 } 3446 3447 void 3448 bcmx_field_qualify_CnTag_get_async( 3449 bcm_field_entry_t entry, 3450 uint32 * data, 3451 uint32 * mask, 3452 bcmx_async_cb_t async_callback, 3453 void *async_cookie) 3454 { 3455 bcmx_async_req_t *async; 3456 3457 async = sal_alloc(sizeof(*async), "bcmx_async"); 3458 if (async == NULL) { 3459 if (async_callback != NULL) { 3460 (*async_callback)(async_cookie, BCM_E_MEMORY); 3461 } 3462 return; 3463 } 3464 async->next = NULL; 3465 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_CNTAG_GET; 3466 async->run = bcmx_async_run; 3467 async->callback = async_callback; 3468 async->cookie = async_cookie; 3469 async->args.field_qualify_CnTag_get.entry = entry; 3470 async->args.field_qualify_CnTag_get.data = data; 3471 async->args.field_qualify_CnTag_get.mask = mask; 3472 bcm_async_add((bcm_async_req_t *)async); 3473 } 3474 3475 void 3476 bcmx_field_qualify_Color_async( 3477 bcm_field_entry_t entry, 3478 uint8 color, 3479 bcmx_async_cb_t async_callback, 3480 void *async_cookie) 3481 { 3482 bcmx_async_req_t *async; 3483 3484 async = sal_alloc(sizeof(*async), "bcmx_async"); 3485 if (async == NULL) { 3486 if (async_callback != NULL) { 3487 (*async_callback)(async_cookie, BCM_E_MEMORY); 3488 } 3489 return; 3490 } 3491 async->next = NULL; 3492 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_COLOR; 3493 async->run = bcmx_async_run; 3494 async->callback = async_callback; 3495 async->cookie = async_cookie; 3496 async->args.field_qualify_Color.entry = entry; 3497 async->args.field_qualify_Color.color = color; 3498 bcm_async_add((bcm_async_req_t *)async); 3499 } 3500 3501 void 3502 bcmx_field_qualify_Color_get_async( 3503 bcm_field_entry_t entry, 3504 uint8 * color, 3505 bcmx_async_cb_t async_callback, 3506 void *async_cookie) 3507 { 3508 bcmx_async_req_t *async; 3509 3510 async = sal_alloc(sizeof(*async), "bcmx_async"); 3511 if (async == NULL) { 3512 if (async_callback != NULL) { 3513 (*async_callback)(async_cookie, BCM_E_MEMORY); 3514 } 3515 return; 3516 } 3517 async->next = NULL; 3518 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_COLOR_GET; 3519 async->run = bcmx_async_run; 3520 async->callback = async_callback; 3521 async->cookie = async_cookie; 3522 async->args.field_qualify_Color_get.entry = entry; 3523 async->args.field_qualify_Color_get.color = color; 3524 bcm_async_add((bcm_async_req_t *)async); 3525 } 3526 3527 void 3528 bcmx_field_qualify_DSCP_async( 3529 bcm_field_entry_t entry, 3530 uint8 data, 3531 uint8 mask, 3532 bcmx_async_cb_t async_callback, 3533 void *async_cookie) 3534 { 3535 bcmx_async_req_t *async; 3536 3537 async = sal_alloc(sizeof(*async), "bcmx_async"); 3538 if (async == NULL) { 3539 if (async_callback != NULL) { 3540 (*async_callback)(async_cookie, BCM_E_MEMORY); 3541 } 3542 return; 3543 } 3544 async->next = NULL; 3545 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSCP; 3546 async->run = bcmx_async_run; 3547 async->callback = async_callback; 3548 async->cookie = async_cookie; 3549 async->args.field_qualify_DSCP.entry = entry; 3550 async->args.field_qualify_DSCP.data = data; 3551 async->args.field_qualify_DSCP.mask = mask; 3552 bcm_async_add((bcm_async_req_t *)async); 3553 } 3554 3555 void 3556 bcmx_field_qualify_DSCP_get_async( 3557 bcm_field_entry_t entry, 3558 uint8 * data, 3559 uint8 * mask, 3560 bcmx_async_cb_t async_callback, 3561 void *async_cookie) 3562 { 3563 bcmx_async_req_t *async; 3564 3565 async = sal_alloc(sizeof(*async), "bcmx_async"); 3566 if (async == NULL) { 3567 if (async_callback != NULL) { 3568 (*async_callback)(async_cookie, BCM_E_MEMORY); 3569 } 3570 return; 3571 } 3572 async->next = NULL; 3573 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSCP_GET; 3574 async->run = bcmx_async_run; 3575 async->callback = async_callback; 3576 async->cookie = async_cookie; 3577 async->args.field_qualify_DSCP_get.entry = entry; 3578 async->args.field_qualify_DSCP_get.data = data; 3579 async->args.field_qualify_DSCP_get.mask = mask; 3580 bcm_async_add((bcm_async_req_t *)async); 3581 } 3582 3583 void 3584 bcmx_field_qualify_Decap_async( 3585 bcm_field_entry_t entry, 3586 bcm_field_decap_t decap, 3587 bcmx_async_cb_t async_callback, 3588 void *async_cookie) 3589 { 3590 bcmx_async_req_t *async; 3591 3592 async = sal_alloc(sizeof(*async), "bcmx_async"); 3593 if (async == NULL) { 3594 if (async_callback != NULL) { 3595 (*async_callback)(async_cookie, BCM_E_MEMORY); 3596 } 3597 return; 3598 } 3599 async->next = NULL; 3600 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DECAP; 3601 async->run = bcmx_async_run; 3602 async->callback = async_callback; 3603 async->cookie = async_cookie; 3604 async->args.field_qualify_Decap.entry = entry; 3605 async->args.field_qualify_Decap.decap = decap; 3606 bcm_async_add((bcm_async_req_t *)async); 3607 } 3608 3609 void 3610 bcmx_field_qualify_DosAttack_async( 3611 bcm_field_entry_t entry, 3612 uint8 data, 3613 uint8 mask, 3614 bcmx_async_cb_t async_callback, 3615 void *async_cookie) 3616 { 3617 bcmx_async_req_t *async; 3618 3619 async = sal_alloc(sizeof(*async), "bcmx_async"); 3620 if (async == NULL) { 3621 if (async_callback != NULL) { 3622 (*async_callback)(async_cookie, BCM_E_MEMORY); 3623 } 3624 return; 3625 } 3626 async->next = NULL; 3627 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DOSATTACK; 3628 async->run = bcmx_async_run; 3629 async->callback = async_callback; 3630 async->cookie = async_cookie; 3631 async->args.field_qualify_DosAttack.entry = entry; 3632 async->args.field_qualify_DosAttack.data = data; 3633 async->args.field_qualify_DosAttack.mask = mask; 3634 bcm_async_add((bcm_async_req_t *)async); 3635 } 3636 3637 void 3638 bcmx_field_qualify_DosAttack_get_async( 3639 bcm_field_entry_t entry, 3640 uint8 * data, 3641 uint8 * mask, 3642 bcmx_async_cb_t async_callback, 3643 void *async_cookie) 3644 { 3645 bcmx_async_req_t *async; 3646 3647 async = sal_alloc(sizeof(*async), "bcmx_async"); 3648 if (async == NULL) { 3649 if (async_callback != NULL) { 3650 (*async_callback)(async_cookie, BCM_E_MEMORY); 3651 } 3652 return; 3653 } 3654 async->next = NULL; 3655 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DOSATTACK_GET; 3656 async->run = bcmx_async_run; 3657 async->callback = async_callback; 3658 async->cookie = async_cookie; 3659 async->args.field_qualify_DosAttack_get.entry = entry; 3660 async->args.field_qualify_DosAttack_get.data = data; 3661 async->args.field_qualify_DosAttack_get.mask = mask; 3662 bcm_async_add((bcm_async_req_t *)async); 3663 } 3664 3665 void 3666 bcmx_field_qualify_Drop_async( 3667 bcm_field_entry_t entry, 3668 uint8 data, 3669 uint8 mask, 3670 bcmx_async_cb_t async_callback, 3671 void *async_cookie) 3672 { 3673 bcmx_async_req_t *async; 3674 3675 async = sal_alloc(sizeof(*async), "bcmx_async"); 3676 if (async == NULL) { 3677 if (async_callback != NULL) { 3678 (*async_callback)(async_cookie, BCM_E_MEMORY); 3679 } 3680 return; 3681 } 3682 async->next = NULL; 3683 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DROP; 3684 async->run = bcmx_async_run; 3685 async->callback = async_callback; 3686 async->cookie = async_cookie; 3687 async->args.field_qualify_Drop.entry = entry; 3688 async->args.field_qualify_Drop.data = data; 3689 async->args.field_qualify_Drop.mask = mask; 3690 bcm_async_add((bcm_async_req_t *)async); 3691 } 3692 3693 void 3694 bcmx_field_qualify_Drop_get_async( 3695 bcm_field_entry_t entry, 3696 uint8 * data, 3697 uint8 * mask, 3698 bcmx_async_cb_t async_callback, 3699 void *async_cookie) 3700 { 3701 bcmx_async_req_t *async; 3702 3703 async = sal_alloc(sizeof(*async), "bcmx_async"); 3704 if (async == NULL) { 3705 if (async_callback != NULL) { 3706 (*async_callback)(async_cookie, BCM_E_MEMORY); 3707 } 3708 return; 3709 } 3710 async->next = NULL; 3711 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DROP_GET; 3712 async->run = bcmx_async_run; 3713 async->callback = async_callback; 3714 async->cookie = async_cookie; 3715 async->args.field_qualify_Drop_get.entry = entry; 3716 async->args.field_qualify_Drop_get.data = data; 3717 async->args.field_qualify_Drop_get.mask = mask; 3718 bcm_async_add((bcm_async_req_t *)async); 3719 } 3720 3721 void 3722 bcmx_field_qualify_DstClassField_async( 3723 bcm_field_entry_t entry, 3724 uint32 data, 3725 uint32 mask, 3726 bcmx_async_cb_t async_callback, 3727 void *async_cookie) 3728 { 3729 bcmx_async_req_t *async; 3730 3731 async = sal_alloc(sizeof(*async), "bcmx_async"); 3732 if (async == NULL) { 3733 if (async_callback != NULL) { 3734 (*async_callback)(async_cookie, BCM_E_MEMORY); 3735 } 3736 return; 3737 } 3738 async->next = NULL; 3739 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSFIELD; 3740 async->run = bcmx_async_run; 3741 async->callback = async_callback; 3742 async->cookie = async_cookie; 3743 async->args.field_qualify_DstClassField.entry = entry; 3744 async->args.field_qualify_DstClassField.data = data; 3745 async->args.field_qualify_DstClassField.mask = mask; 3746 bcm_async_add((bcm_async_req_t *)async); 3747 } 3748 3749 void 3750 bcmx_field_qualify_DstClassField_get_async( 3751 bcm_field_entry_t entry, 3752 uint32 * data, 3753 uint32 * mask, 3754 bcmx_async_cb_t async_callback, 3755 void *async_cookie) 3756 { 3757 bcmx_async_req_t *async; 3758 3759 async = sal_alloc(sizeof(*async), "bcmx_async"); 3760 if (async == NULL) { 3761 if (async_callback != NULL) { 3762 (*async_callback)(async_cookie, BCM_E_MEMORY); 3763 } 3764 return; 3765 } 3766 async->next = NULL; 3767 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSFIELD_GET; 3768 async->run = bcmx_async_run; 3769 async->callback = async_callback; 3770 async->cookie = async_cookie; 3771 async->args.field_qualify_DstClassField_get.entry = entry; 3772 async->args.field_qualify_DstClassField_get.data = data; 3773 async->args.field_qualify_DstClassField_get.mask = mask; 3774 bcm_async_add((bcm_async_req_t *)async); 3775 } 3776 3777 void 3778 bcmx_field_qualify_DstClassL2_async( 3779 bcm_field_entry_t entry, 3780 uint32 data, 3781 uint32 mask, 3782 bcmx_async_cb_t async_callback, 3783 void *async_cookie) 3784 { 3785 bcmx_async_req_t *async; 3786 3787 async = sal_alloc(sizeof(*async), "bcmx_async"); 3788 if (async == NULL) { 3789 if (async_callback != NULL) { 3790 (*async_callback)(async_cookie, BCM_E_MEMORY); 3791 } 3792 return; 3793 } 3794 async->next = NULL; 3795 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL2; 3796 async->run = bcmx_async_run; 3797 async->callback = async_callback; 3798 async->cookie = async_cookie; 3799 async->args.field_qualify_DstClassL2.entry = entry; 3800 async->args.field_qualify_DstClassL2.data = data; 3801 async->args.field_qualify_DstClassL2.mask = mask; 3802 bcm_async_add((bcm_async_req_t *)async); 3803 } 3804 3805 void 3806 bcmx_field_qualify_DstClassL2_get_async( 3807 bcm_field_entry_t entry, 3808 uint32 * data, 3809 uint32 * mask, 3810 bcmx_async_cb_t async_callback, 3811 void *async_cookie) 3812 { 3813 bcmx_async_req_t *async; 3814 3815 async = sal_alloc(sizeof(*async), "bcmx_async"); 3816 if (async == NULL) { 3817 if (async_callback != NULL) { 3818 (*async_callback)(async_cookie, BCM_E_MEMORY); 3819 } 3820 return; 3821 } 3822 async->next = NULL; 3823 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL2_GET; 3824 async->run = bcmx_async_run; 3825 async->callback = async_callback; 3826 async->cookie = async_cookie; 3827 async->args.field_qualify_DstClassL2_get.entry = entry; 3828 async->args.field_qualify_DstClassL2_get.data = data; 3829 async->args.field_qualify_DstClassL2_get.mask = mask; 3830 bcm_async_add((bcm_async_req_t *)async); 3831 } 3832 3833 void 3834 bcmx_field_qualify_DstClassL3_async( 3835 bcm_field_entry_t entry, 3836 uint32 data, 3837 uint32 mask, 3838 bcmx_async_cb_t async_callback, 3839 void *async_cookie) 3840 { 3841 bcmx_async_req_t *async; 3842 3843 async = sal_alloc(sizeof(*async), "bcmx_async"); 3844 if (async == NULL) { 3845 if (async_callback != NULL) { 3846 (*async_callback)(async_cookie, BCM_E_MEMORY); 3847 } 3848 return; 3849 } 3850 async->next = NULL; 3851 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL3; 3852 async->run = bcmx_async_run; 3853 async->callback = async_callback; 3854 async->cookie = async_cookie; 3855 async->args.field_qualify_DstClassL3.entry = entry; 3856 async->args.field_qualify_DstClassL3.data = data; 3857 async->args.field_qualify_DstClassL3.mask = mask; 3858 bcm_async_add((bcm_async_req_t *)async); 3859 } 3860 3861 void 3862 bcmx_field_qualify_DstClassL3_get_async( 3863 bcm_field_entry_t entry, 3864 uint32 * data, 3865 uint32 * mask, 3866 bcmx_async_cb_t async_callback, 3867 void *async_cookie) 3868 { 3869 bcmx_async_req_t *async; 3870 3871 async = sal_alloc(sizeof(*async), "bcmx_async"); 3872 if (async == NULL) { 3873 if (async_callback != NULL) { 3874 (*async_callback)(async_cookie, BCM_E_MEMORY); 3875 } 3876 return; 3877 } 3878 async->next = NULL; 3879 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL3_GET; 3880 async->run = bcmx_async_run; 3881 async->callback = async_callback; 3882 async->cookie = async_cookie; 3883 async->args.field_qualify_DstClassL3_get.entry = entry; 3884 async->args.field_qualify_DstClassL3_get.data = data; 3885 async->args.field_qualify_DstClassL3_get.mask = mask; 3886 bcm_async_add((bcm_async_req_t *)async); 3887 } 3888 3889 void 3890 bcmx_field_qualify_DstHiGig_async( 3891 bcm_field_entry_t entry, 3892 uint8 data, 3893 uint8 mask, 3894 bcmx_async_cb_t async_callback, 3895 void *async_cookie) 3896 { 3897 bcmx_async_req_t *async; 3898 3899 async = sal_alloc(sizeof(*async), "bcmx_async"); 3900 if (async == NULL) { 3901 if (async_callback != NULL) { 3902 (*async_callback)(async_cookie, BCM_E_MEMORY); 3903 } 3904 return; 3905 } 3906 async->next = NULL; 3907 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTHIGIG; 3908 async->run = bcmx_async_run; 3909 async->callback = async_callback; 3910 async->cookie = async_cookie; 3911 async->args.field_qualify_DstHiGig.entry = entry; 3912 async->args.field_qualify_DstHiGig.data = data; 3913 async->args.field_qualify_DstHiGig.mask = mask; 3914 bcm_async_add((bcm_async_req_t *)async); 3915 } 3916 3917 void 3918 bcmx_field_qualify_DstHiGig_get_async( 3919 bcm_field_entry_t entry, 3920 uint8 * data, 3921 uint8 * mask, 3922 bcmx_async_cb_t async_callback, 3923 void *async_cookie) 3924 { 3925 bcmx_async_req_t *async; 3926 3927 async = sal_alloc(sizeof(*async), "bcmx_async"); 3928 if (async == NULL) { 3929 if (async_callback != NULL) { 3930 (*async_callback)(async_cookie, BCM_E_MEMORY); 3931 } 3932 return; 3933 } 3934 async->next = NULL; 3935 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTHIGIG_GET; 3936 async->run = bcmx_async_run; 3937 async->callback = async_callback; 3938 async->cookie = async_cookie; 3939 async->args.field_qualify_DstHiGig_get.entry = entry; 3940 async->args.field_qualify_DstHiGig_get.data = data; 3941 async->args.field_qualify_DstHiGig_get.mask = mask; 3942 bcm_async_add((bcm_async_req_t *)async); 3943 } 3944 3945 void 3946 bcmx_field_qualify_DstIp_async( 3947 bcm_field_entry_t entry, 3948 bcm_ip_t data, 3949 bcm_ip_t mask, 3950 bcmx_async_cb_t async_callback, 3951 void *async_cookie) 3952 { 3953 bcmx_async_req_t *async; 3954 3955 async = sal_alloc(sizeof(*async), "bcmx_async"); 3956 if (async == NULL) { 3957 if (async_callback != NULL) { 3958 (*async_callback)(async_cookie, BCM_E_MEMORY); 3959 } 3960 return; 3961 } 3962 async->next = NULL; 3963 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP; 3964 async->run = bcmx_async_run; 3965 async->callback = async_callback; 3966 async->cookie = async_cookie; 3967 async->args.field_qualify_DstIp.entry = entry; 3968 async->args.field_qualify_DstIp.data = data; 3969 async->args.field_qualify_DstIp.mask = mask; 3970 bcm_async_add((bcm_async_req_t *)async); 3971 } 3972 3973 void 3974 bcmx_field_qualify_DstIp6_async( 3975 bcm_field_entry_t entry, 3976 bcm_ip6_t data, 3977 bcm_ip6_t mask, 3978 bcmx_async_cb_t async_callback, 3979 void *async_cookie) 3980 { 3981 bcmx_async_req_t *async; 3982 3983 async = sal_alloc(sizeof(*async), "bcmx_async"); 3984 if (async == NULL) { 3985 if (async_callback != NULL) { 3986 (*async_callback)(async_cookie, BCM_E_MEMORY); 3987 } 3988 return; 3989 } 3990 async->next = NULL; 3991 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6; 3992 async->run = bcmx_async_run; 3993 async->callback = async_callback; 3994 async->cookie = async_cookie; 3995 async->args.field_qualify_DstIp6.entry = entry; 3996 async->args.field_qualify_DstIp6.data = (uint8 *)data; 3997 async->args.field_qualify_DstIp6.mask = (uint8 *)mask; 3998 bcm_async_add((bcm_async_req_t *)async); 3999 } 4000 4001 void 4002 bcmx_field_qualify_DstIp6High_async( 4003 bcm_field_entry_t entry, 4004 bcm_ip6_t data, 4005 bcm_ip6_t mask, 4006 bcmx_async_cb_t async_callback, 4007 void *async_cookie) 4008 { 4009 bcmx_async_req_t *async; 4010 4011 async = sal_alloc(sizeof(*async), "bcmx_async"); 4012 if (async == NULL) { 4013 if (async_callback != NULL) { 4014 (*async_callback)(async_cookie, BCM_E_MEMORY); 4015 } 4016 return; 4017 } 4018 async->next = NULL; 4019 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6HIGH; 4020 async->run = bcmx_async_run; 4021 async->callback = async_callback; 4022 async->cookie = async_cookie; 4023 async->args.field_qualify_DstIp6High.entry = entry; 4024 async->args.field_qualify_DstIp6High.data = (uint8 *)data; 4025 async->args.field_qualify_DstIp6High.mask = (uint8 *)mask; 4026 bcm_async_add((bcm_async_req_t *)async); 4027 } 4028 4029 void 4030 bcmx_field_qualify_DstIp6High_get_async( 4031 bcm_field_entry_t entry, 4032 bcm_ip6_t * data, 4033 bcm_ip6_t * mask, 4034 bcmx_async_cb_t async_callback, 4035 void *async_cookie) 4036 { 4037 bcmx_async_req_t *async; 4038 4039 async = sal_alloc(sizeof(*async), "bcmx_async"); 4040 if (async == NULL) { 4041 if (async_callback != NULL) { 4042 (*async_callback)(async_cookie, BCM_E_MEMORY); 4043 } 4044 return; 4045 } 4046 async->next = NULL; 4047 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6HIGH_GET; 4048 async->run = bcmx_async_run; 4049 async->callback = async_callback; 4050 async->cookie = async_cookie; 4051 async->args.field_qualify_DstIp6High_get.entry = entry; 4052 async->args.field_qualify_DstIp6High_get.data = data; 4053 async->args.field_qualify_DstIp6High_get.mask = mask; 4054 bcm_async_add((bcm_async_req_t *)async); 4055 } 4056 4057 void 4058 bcmx_field_qualify_DstIp6Low_async( 4059 bcm_field_entry_t entry, 4060 bcm_ip6_t data, 4061 bcm_ip6_t mask, 4062 bcmx_async_cb_t async_callback, 4063 void *async_cookie) 4064 { 4065 bcmx_async_req_t *async; 4066 4067 async = sal_alloc(sizeof(*async), "bcmx_async"); 4068 if (async == NULL) { 4069 if (async_callback != NULL) { 4070 (*async_callback)(async_cookie, BCM_E_MEMORY); 4071 } 4072 return; 4073 } 4074 async->next = NULL; 4075 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6LOW; 4076 async->run = bcmx_async_run; 4077 async->callback = async_callback; 4078 async->cookie = async_cookie; 4079 async->args.field_qualify_DstIp6Low.entry = entry; 4080 async->args.field_qualify_DstIp6Low.data = (uint8 *)data; 4081 async->args.field_qualify_DstIp6Low.mask = (uint8 *)mask; 4082 bcm_async_add((bcm_async_req_t *)async); 4083 } 4084 4085 void 4086 bcmx_field_qualify_DstIp6Low_get_async( 4087 bcm_field_entry_t entry, 4088 bcm_ip6_t * data, 4089 bcm_ip6_t * mask, 4090 bcmx_async_cb_t async_callback, 4091 void *async_cookie) 4092 { 4093 bcmx_async_req_t *async; 4094 4095 async = sal_alloc(sizeof(*async), "bcmx_async"); 4096 if (async == NULL) { 4097 if (async_callback != NULL) { 4098 (*async_callback)(async_cookie, BCM_E_MEMORY); 4099 } 4100 return; 4101 } 4102 async->next = NULL; 4103 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6LOW_GET; 4104 async->run = bcmx_async_run; 4105 async->callback = async_callback; 4106 async->cookie = async_cookie; 4107 async->args.field_qualify_DstIp6Low_get.entry = entry; 4108 async->args.field_qualify_DstIp6Low_get.data = data; 4109 async->args.field_qualify_DstIp6Low_get.mask = mask; 4110 bcm_async_add((bcm_async_req_t *)async); 4111 } 4112 4113 void 4114 bcmx_field_qualify_DstIp6_get_async( 4115 bcm_field_entry_t entry, 4116 bcm_ip6_t * data, 4117 bcm_ip6_t * mask, 4118 bcmx_async_cb_t async_callback, 4119 void *async_cookie) 4120 { 4121 bcmx_async_req_t *async; 4122 4123 async = sal_alloc(sizeof(*async), "bcmx_async"); 4124 if (async == NULL) { 4125 if (async_callback != NULL) { 4126 (*async_callback)(async_cookie, BCM_E_MEMORY); 4127 } 4128 return; 4129 } 4130 async->next = NULL; 4131 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6_GET; 4132 async->run = bcmx_async_run; 4133 async->callback = async_callback; 4134 async->cookie = async_cookie; 4135 async->args.field_qualify_DstIp6_get.entry = entry; 4136 async->args.field_qualify_DstIp6_get.data = data; 4137 async->args.field_qualify_DstIp6_get.mask = mask; 4138 bcm_async_add((bcm_async_req_t *)async); 4139 } 4140 4141 void 4142 bcmx_field_qualify_DstIp_get_async( 4143 bcm_field_entry_t entry, 4144 bcm_ip_t * data, 4145 bcm_ip_t * mask, 4146 bcmx_async_cb_t async_callback, 4147 void *async_cookie) 4148 { 4149 bcmx_async_req_t *async; 4150 4151 async = sal_alloc(sizeof(*async), "bcmx_async"); 4152 if (async == NULL) { 4153 if (async_callback != NULL) { 4154 (*async_callback)(async_cookie, BCM_E_MEMORY); 4155 } 4156 return; 4157 } 4158 async->next = NULL; 4159 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP_GET; 4160 async->run = bcmx_async_run; 4161 async->callback = async_callback; 4162 async->cookie = async_cookie; 4163 async->args.field_qualify_DstIp_get.entry = entry; 4164 async->args.field_qualify_DstIp_get.data = data; 4165 async->args.field_qualify_DstIp_get.mask = mask; 4166 bcm_async_add((bcm_async_req_t *)async); 4167 } 4168 4169 void 4170 bcmx_field_qualify_DstL3Egress_async( 4171 bcm_field_entry_t entry, 4172 bcm_if_t if_id, 4173 bcmx_async_cb_t async_callback, 4174 void *async_cookie) 4175 { 4176 bcmx_async_req_t *async; 4177 4178 async = sal_alloc(sizeof(*async), "bcmx_async"); 4179 if (async == NULL) { 4180 if (async_callback != NULL) { 4181 (*async_callback)(async_cookie, BCM_E_MEMORY); 4182 } 4183 return; 4184 } 4185 async->next = NULL; 4186 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTL3EGRESS; 4187 async->run = bcmx_async_run; 4188 async->callback = async_callback; 4189 async->cookie = async_cookie; 4190 async->args.field_qualify_DstL3Egress.entry = entry; 4191 async->args.field_qualify_DstL3Egress.if_id = if_id; 4192 bcm_async_add((bcm_async_req_t *)async); 4193 } 4194 4195 void 4196 bcmx_field_qualify_DstL3Egress_get_async( 4197 bcm_field_entry_t entry, 4198 bcm_if_t * if_id, 4199 bcmx_async_cb_t async_callback, 4200 void *async_cookie) 4201 { 4202 bcmx_async_req_t *async; 4203 4204 async = sal_alloc(sizeof(*async), "bcmx_async"); 4205 if (async == NULL) { 4206 if (async_callback != NULL) { 4207 (*async_callback)(async_cookie, BCM_E_MEMORY); 4208 } 4209 return; 4210 } 4211 async->next = NULL; 4212 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTL3EGRESS_GET; 4213 async->run = bcmx_async_run; 4214 async->callback = async_callback; 4215 async->cookie = async_cookie; 4216 async->args.field_qualify_DstL3Egress_get.entry = entry; 4217 async->args.field_qualify_DstL3Egress_get.if_id = if_id; 4218 bcm_async_add((bcm_async_req_t *)async); 4219 } 4220 4221 void 4222 bcmx_field_qualify_DstMac_async( 4223 bcm_field_entry_t entry, 4224 bcm_mac_t data, 4225 bcm_mac_t mask, 4226 bcmx_async_cb_t async_callback, 4227 void *async_cookie) 4228 { 4229 bcmx_async_req_t *async; 4230 4231 async = sal_alloc(sizeof(*async), "bcmx_async"); 4232 if (async == NULL) { 4233 if (async_callback != NULL) { 4234 (*async_callback)(async_cookie, BCM_E_MEMORY); 4235 } 4236 return; 4237 } 4238 async->next = NULL; 4239 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMAC; 4240 async->run = bcmx_async_run; 4241 async->callback = async_callback; 4242 async->cookie = async_cookie; 4243 async->args.field_qualify_DstMac.entry = entry; 4244 async->args.field_qualify_DstMac.data = (uint8 *)data; 4245 async->args.field_qualify_DstMac.mask = (uint8 *)mask; 4246 bcm_async_add((bcm_async_req_t *)async); 4247 } 4248 4249 void 4250 bcmx_field_qualify_DstMac_get_async( 4251 bcm_field_entry_t entry, 4252 bcm_mac_t * data, 4253 bcm_mac_t * mask, 4254 bcmx_async_cb_t async_callback, 4255 void *async_cookie) 4256 { 4257 bcmx_async_req_t *async; 4258 4259 async = sal_alloc(sizeof(*async), "bcmx_async"); 4260 if (async == NULL) { 4261 if (async_callback != NULL) { 4262 (*async_callback)(async_cookie, BCM_E_MEMORY); 4263 } 4264 return; 4265 } 4266 async->next = NULL; 4267 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMAC_GET; 4268 async->run = bcmx_async_run; 4269 async->callback = async_callback; 4270 async->cookie = async_cookie; 4271 async->args.field_qualify_DstMac_get.entry = entry; 4272 async->args.field_qualify_DstMac_get.data = data; 4273 async->args.field_qualify_DstMac_get.mask = mask; 4274 bcm_async_add((bcm_async_req_t *)async); 4275 } 4276 4277 void 4278 bcmx_field_qualify_DstMimGport_async( 4279 bcm_field_entry_t entry, 4280 bcm_gport_t mim_port_id, 4281 bcmx_async_cb_t async_callback, 4282 void *async_cookie) 4283 { 4284 bcmx_async_req_t *async; 4285 4286 async = sal_alloc(sizeof(*async), "bcmx_async"); 4287 if (async == NULL) { 4288 if (async_callback != NULL) { 4289 (*async_callback)(async_cookie, BCM_E_MEMORY); 4290 } 4291 return; 4292 } 4293 async->next = NULL; 4294 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMIMGPORT; 4295 async->run = bcmx_async_run; 4296 async->callback = async_callback; 4297 async->cookie = async_cookie; 4298 async->args.field_qualify_DstMimGport.entry = entry; 4299 async->args.field_qualify_DstMimGport.mim_port_id = mim_port_id; 4300 bcm_async_add((bcm_async_req_t *)async); 4301 } 4302 4303 void 4304 bcmx_field_qualify_DstMimGport_get_async( 4305 bcm_field_entry_t entry, 4306 bcm_gport_t * mim_port_id, 4307 bcmx_async_cb_t async_callback, 4308 void *async_cookie) 4309 { 4310 bcmx_async_req_t *async; 4311 4312 async = sal_alloc(sizeof(*async), "bcmx_async"); 4313 if (async == NULL) { 4314 if (async_callback != NULL) { 4315 (*async_callback)(async_cookie, BCM_E_MEMORY); 4316 } 4317 return; 4318 } 4319 async->next = NULL; 4320 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMIMGPORT_GET; 4321 async->run = bcmx_async_run; 4322 async->callback = async_callback; 4323 async->cookie = async_cookie; 4324 async->args.field_qualify_DstMimGport_get.entry = entry; 4325 async->args.field_qualify_DstMimGport_get.mim_port_id = mim_port_id; 4326 bcm_async_add((bcm_async_req_t *)async); 4327 } 4328 4329 void 4330 bcmx_field_qualify_DstMplsGport_async( 4331 bcm_field_entry_t entry, 4332 bcm_gport_t mpls_port_id, 4333 bcmx_async_cb_t async_callback, 4334 void *async_cookie) 4335 { 4336 bcmx_async_req_t *async; 4337 4338 async = sal_alloc(sizeof(*async), "bcmx_async"); 4339 if (async == NULL) { 4340 if (async_callback != NULL) { 4341 (*async_callback)(async_cookie, BCM_E_MEMORY); 4342 } 4343 return; 4344 } 4345 async->next = NULL; 4346 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMPLSGPORT; 4347 async->run = bcmx_async_run; 4348 async->callback = async_callback; 4349 async->cookie = async_cookie; 4350 async->args.field_qualify_DstMplsGport.entry = entry; 4351 async->args.field_qualify_DstMplsGport.mpls_port_id = mpls_port_id; 4352 bcm_async_add((bcm_async_req_t *)async); 4353 } 4354 4355 void 4356 bcmx_field_qualify_DstMplsGport_get_async( 4357 bcm_field_entry_t entry, 4358 bcm_gport_t * mpls_port_id, 4359 bcmx_async_cb_t async_callback, 4360 void *async_cookie) 4361 { 4362 bcmx_async_req_t *async; 4363 4364 async = sal_alloc(sizeof(*async), "bcmx_async"); 4365 if (async == NULL) { 4366 if (async_callback != NULL) { 4367 (*async_callback)(async_cookie, BCM_E_MEMORY); 4368 } 4369 return; 4370 } 4371 async->next = NULL; 4372 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMPLSGPORT_GET; 4373 async->run = bcmx_async_run; 4374 async->callback = async_callback; 4375 async->cookie = async_cookie; 4376 async->args.field_qualify_DstMplsGport_get.entry = entry; 4377 async->args.field_qualify_DstMplsGport_get.mpls_port_id = mpls_port_id; 4378 bcm_async_add((bcm_async_req_t *)async); 4379 } 4380 4381 void 4382 bcmx_field_qualify_DstMulticastGroup_async( 4383 bcm_field_entry_t entry, 4384 bcm_gport_t group, 4385 bcmx_async_cb_t async_callback, 4386 void *async_cookie) 4387 { 4388 bcmx_async_req_t *async; 4389 4390 async = sal_alloc(sizeof(*async), "bcmx_async"); 4391 if (async == NULL) { 4392 if (async_callback != NULL) { 4393 (*async_callback)(async_cookie, BCM_E_MEMORY); 4394 } 4395 return; 4396 } 4397 async->next = NULL; 4398 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTICASTGROUP; 4399 async->run = bcmx_async_run; 4400 async->callback = async_callback; 4401 async->cookie = async_cookie; 4402 async->args.field_qualify_DstMulticastGroup.entry = entry; 4403 async->args.field_qualify_DstMulticastGroup.group = group; 4404 bcm_async_add((bcm_async_req_t *)async); 4405 } 4406 4407 void 4408 bcmx_field_qualify_DstMulticastGroup_get_async( 4409 bcm_field_entry_t entry, 4410 bcm_gport_t * group, 4411 bcmx_async_cb_t async_callback, 4412 void *async_cookie) 4413 { 4414 bcmx_async_req_t *async; 4415 4416 async = sal_alloc(sizeof(*async), "bcmx_async"); 4417 if (async == NULL) { 4418 if (async_callback != NULL) { 4419 (*async_callback)(async_cookie, BCM_E_MEMORY); 4420 } 4421 return; 4422 } 4423 async->next = NULL; 4424 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTICASTGROUP_GET; 4425 async->run = bcmx_async_run; 4426 async->callback = async_callback; 4427 async->cookie = async_cookie; 4428 async->args.field_qualify_DstMulticastGroup_get.entry = entry; 4429 async->args.field_qualify_DstMulticastGroup_get.group = group; 4430 bcm_async_add((bcm_async_req_t *)async); 4431 } 4432 4433 void 4434 bcmx_field_qualify_DstMultipath_async( 4435 bcm_field_entry_t entry, 4436 bcm_if_t mpintf, 4437 bcmx_async_cb_t async_callback, 4438 void *async_cookie) 4439 { 4440 bcmx_async_req_t *async; 4441 4442 async = sal_alloc(sizeof(*async), "bcmx_async"); 4443 if (async == NULL) { 4444 if (async_callback != NULL) { 4445 (*async_callback)(async_cookie, BCM_E_MEMORY); 4446 } 4447 return; 4448 } 4449 async->next = NULL; 4450 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTIPATH; 4451 async->run = bcmx_async_run; 4452 async->callback = async_callback; 4453 async->cookie = async_cookie; 4454 async->args.field_qualify_DstMultipath.entry = entry; 4455 async->args.field_qualify_DstMultipath.mpintf = mpintf; 4456 bcm_async_add((bcm_async_req_t *)async); 4457 } 4458 4459 void 4460 bcmx_field_qualify_DstMultipath_get_async( 4461 bcm_field_entry_t entry, 4462 bcm_if_t * mpintf, 4463 bcmx_async_cb_t async_callback, 4464 void *async_cookie) 4465 { 4466 bcmx_async_req_t *async; 4467 4468 async = sal_alloc(sizeof(*async), "bcmx_async"); 4469 if (async == NULL) { 4470 if (async_callback != NULL) { 4471 (*async_callback)(async_cookie, BCM_E_MEMORY); 4472 } 4473 return; 4474 } 4475 async->next = NULL; 4476 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTIPATH_GET; 4477 async->run = bcmx_async_run; 4478 async->callback = async_callback; 4479 async->cookie = async_cookie; 4480 async->args.field_qualify_DstMultipath_get.entry = entry; 4481 async->args.field_qualify_DstMultipath_get.mpintf = mpintf; 4482 bcm_async_add((bcm_async_req_t *)async); 4483 } 4484 4485 void 4486 bcmx_field_qualify_DstPort_async( 4487 bcm_field_entry_t entry, 4488 bcmx_lport_t port, 4489 bcmx_async_cb_t async_callback, 4490 void *async_cookie) 4491 { 4492 bcmx_async_req_t *async; 4493 4494 async = sal_alloc(sizeof(*async), "bcmx_async"); 4495 if (async == NULL) { 4496 if (async_callback != NULL) { 4497 (*async_callback)(async_cookie, BCM_E_MEMORY); 4498 } 4499 return; 4500 } 4501 async->next = NULL; 4502 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTPORT; 4503 async->run = bcmx_async_run; 4504 async->callback = async_callback; 4505 async->cookie = async_cookie; 4506 async->args.field_qualify_DstPort.entry = entry; 4507 async->args.field_qualify_DstPort.port = port; 4508 bcm_async_add((bcm_async_req_t *)async); 4509 } 4510 4511 void 4512 bcmx_field_qualify_DstPort_get_async( 4513 bcm_field_entry_t entry, 4514 bcm_module_t * data_modid, 4515 bcm_module_t * mask_modid, 4516 bcm_port_t * data_port, 4517 bcm_port_t * mask_port, 4518 bcmx_async_cb_t async_callback, 4519 void *async_cookie) 4520 { 4521 bcmx_async_req_t *async; 4522 4523 async = sal_alloc(sizeof(*async), "bcmx_async"); 4524 if (async == NULL) { 4525 if (async_callback != NULL) { 4526 (*async_callback)(async_cookie, BCM_E_MEMORY); 4527 } 4528 return; 4529 } 4530 async->next = NULL; 4531 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTPORT_GET; 4532 async->run = bcmx_async_run; 4533 async->callback = async_callback; 4534 async->cookie = async_cookie; 4535 async->args.field_qualify_DstPort_get.entry = entry; 4536 async->args.field_qualify_DstPort_get.data_modid = data_modid; 4537 async->args.field_qualify_DstPort_get.mask_modid = mask_modid; 4538 async->args.field_qualify_DstPort_get.data_port = data_port; 4539 async->args.field_qualify_DstPort_get.mask_port = mask_port; 4540 bcm_async_add((bcm_async_req_t *)async); 4541 } 4542 4543 void 4544 bcmx_field_qualify_DstTrunk_async( 4545 bcm_field_entry_t entry, 4546 bcm_trunk_t tid, 4547 bcmx_async_cb_t async_callback, 4548 void *async_cookie) 4549 { 4550 bcmx_async_req_t *async; 4551 4552 async = sal_alloc(sizeof(*async), "bcmx_async"); 4553 if (async == NULL) { 4554 if (async_callback != NULL) { 4555 (*async_callback)(async_cookie, BCM_E_MEMORY); 4556 } 4557 return; 4558 } 4559 async->next = NULL; 4560 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTTRUNK; 4561 async->run = bcmx_async_run; 4562 async->callback = async_callback; 4563 async->cookie = async_cookie; 4564 async->args.field_qualify_DstTrunk.entry = entry; 4565 async->args.field_qualify_DstTrunk.tid = tid; 4566 bcm_async_add((bcm_async_req_t *)async); 4567 } 4568 4569 void 4570 bcmx_field_qualify_DstTrunk_get_async( 4571 bcm_field_entry_t entry, 4572 bcm_trunk_t * data, 4573 bcm_trunk_t * mask, 4574 bcmx_async_cb_t async_callback, 4575 void *async_cookie) 4576 { 4577 bcmx_async_req_t *async; 4578 4579 async = sal_alloc(sizeof(*async), "bcmx_async"); 4580 if (async == NULL) { 4581 if (async_callback != NULL) { 4582 (*async_callback)(async_cookie, BCM_E_MEMORY); 4583 } 4584 return; 4585 } 4586 async->next = NULL; 4587 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTTRUNK_GET; 4588 async->run = bcmx_async_run; 4589 async->callback = async_callback; 4590 async->cookie = async_cookie; 4591 async->args.field_qualify_DstTrunk_get.entry = entry; 4592 async->args.field_qualify_DstTrunk_get.data = data; 4593 async->args.field_qualify_DstTrunk_get.mask = mask; 4594 bcm_async_add((bcm_async_req_t *)async); 4595 } 4596 4597 void 4598 bcmx_field_qualify_DstWlanGport_async( 4599 bcm_field_entry_t entry, 4600 bcm_gport_t wlan_port_id, 4601 bcmx_async_cb_t async_callback, 4602 void *async_cookie) 4603 { 4604 bcmx_async_req_t *async; 4605 4606 async = sal_alloc(sizeof(*async), "bcmx_async"); 4607 if (async == NULL) { 4608 if (async_callback != NULL) { 4609 (*async_callback)(async_cookie, BCM_E_MEMORY); 4610 } 4611 return; 4612 } 4613 async->next = NULL; 4614 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTWLANGPORT; 4615 async->run = bcmx_async_run; 4616 async->callback = async_callback; 4617 async->cookie = async_cookie; 4618 async->args.field_qualify_DstWlanGport.entry = entry; 4619 async->args.field_qualify_DstWlanGport.wlan_port_id = wlan_port_id; 4620 bcm_async_add((bcm_async_req_t *)async); 4621 } 4622 4623 void 4624 bcmx_field_qualify_DstWlanGport_get_async( 4625 bcm_field_entry_t entry, 4626 bcm_gport_t * wlan_port_id, 4627 bcmx_async_cb_t async_callback, 4628 void *async_cookie) 4629 { 4630 bcmx_async_req_t *async; 4631 4632 async = sal_alloc(sizeof(*async), "bcmx_async"); 4633 if (async == NULL) { 4634 if (async_callback != NULL) { 4635 (*async_callback)(async_cookie, BCM_E_MEMORY); 4636 } 4637 return; 4638 } 4639 async->next = NULL; 4640 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTWLANGPORT_GET; 4641 async->run = bcmx_async_run; 4642 async->callback = async_callback; 4643 async->cookie = async_cookie; 4644 async->args.field_qualify_DstWlanGport_get.entry = entry; 4645 async->args.field_qualify_DstWlanGport_get.wlan_port_id = wlan_port_id; 4646 bcm_async_add((bcm_async_req_t *)async); 4647 } 4648 4649 void 4650 bcmx_field_qualify_EtherType_async( 4651 bcm_field_entry_t entry, 4652 uint16 data, 4653 uint16 mask, 4654 bcmx_async_cb_t async_callback, 4655 void *async_cookie) 4656 { 4657 bcmx_async_req_t *async; 4658 4659 async = sal_alloc(sizeof(*async), "bcmx_async"); 4660 if (async == NULL) { 4661 if (async_callback != NULL) { 4662 (*async_callback)(async_cookie, BCM_E_MEMORY); 4663 } 4664 return; 4665 } 4666 async->next = NULL; 4667 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_ETHERTYPE; 4668 async->run = bcmx_async_run; 4669 async->callback = async_callback; 4670 async->cookie = async_cookie; 4671 async->args.field_qualify_EtherType.entry = entry; 4672 async->args.field_qualify_EtherType.data = data; 4673 async->args.field_qualify_EtherType.mask = mask; 4674 bcm_async_add((bcm_async_req_t *)async); 4675 } 4676 4677 void 4678 bcmx_field_qualify_EtherType_get_async( 4679 bcm_field_entry_t entry, 4680 uint16 * data, 4681 uint16 * mask, 4682 bcmx_async_cb_t async_callback, 4683 void *async_cookie) 4684 { 4685 bcmx_async_req_t *async; 4686 4687 async = sal_alloc(sizeof(*async), "bcmx_async"); 4688 if (async == NULL) { 4689 if (async_callback != NULL) { 4690 (*async_callback)(async_cookie, BCM_E_MEMORY); 4691 } 4692 return; 4693 } 4694 async->next = NULL; 4695 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_ETHERTYPE_GET; 4696 async->run = bcmx_async_run; 4697 async->callback = async_callback; 4698 async->cookie = async_cookie; 4699 async->args.field_qualify_EtherType_get.entry = entry; 4700 async->args.field_qualify_EtherType_get.data = data; 4701 async->args.field_qualify_EtherType_get.mask = mask; 4702 bcm_async_add((bcm_async_req_t *)async); 4703 } 4704 4705 void 4706 bcmx_field_qualify_ExtensionHeader2Type_async( 4707 bcm_field_entry_t entry, 4708 uint8 data, 4709 uint8 mask, 4710 bcmx_async_cb_t async_callback, 4711 void *async_cookie) 4712 { 4713 bcmx_async_req_t *async; 4714 4715 async = sal_alloc(sizeof(*async), "bcmx_async"); 4716 if (async == NULL) { 4717 if (async_callback != NULL) { 4718 (*async_callback)(async_cookie, BCM_E_MEMORY); 4719 } 4720 return; 4721 } 4722 async->next = NULL; 4723 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADER2TYPE; 4724 async->run = bcmx_async_run; 4725 async->callback = async_callback; 4726 async->cookie = async_cookie; 4727 async->args.field_qualify_ExtensionHeader2Type.entry = entry; 4728 async->args.field_qualify_ExtensionHeader2Type.data = data; 4729 async->args.field_qualify_ExtensionHeader2Type.mask = mask; 4730 bcm_async_add((bcm_async_req_t *)async); 4731 } 4732 4733 void 4734 bcmx_field_qualify_ExtensionHeader2Type_get_async( 4735 bcm_field_entry_t entry, 4736 uint8 * data, 4737 uint8 * mask, 4738 bcmx_async_cb_t async_callback, 4739 void *async_cookie) 4740 { 4741 bcmx_async_req_t *async; 4742 4743 async = sal_alloc(sizeof(*async), "bcmx_async"); 4744 if (async == NULL) { 4745 if (async_callback != NULL) { 4746 (*async_callback)(async_cookie, BCM_E_MEMORY); 4747 } 4748 return; 4749 } 4750 async->next = NULL; 4751 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADER2TYPE_GET; 4752 async->run = bcmx_async_run; 4753 async->callback = async_callback; 4754 async->cookie = async_cookie; 4755 async->args.field_qualify_ExtensionHeader2Type_get.entry = entry; 4756 async->args.field_qualify_ExtensionHeader2Type_get.data = data; 4757 async->args.field_qualify_ExtensionHeader2Type_get.mask = mask; 4758 bcm_async_add((bcm_async_req_t *)async); 4759 } 4760 4761 void 4762 bcmx_field_qualify_ExtensionHeaderSubCode_async( 4763 bcm_field_entry_t entry, 4764 uint8 data, 4765 uint8 mask, 4766 bcmx_async_cb_t async_callback, 4767 void *async_cookie) 4768 { 4769 bcmx_async_req_t *async; 4770 4771 async = sal_alloc(sizeof(*async), "bcmx_async"); 4772 if (async == NULL) { 4773 if (async_callback != NULL) { 4774 (*async_callback)(async_cookie, BCM_E_MEMORY); 4775 } 4776 return; 4777 } 4778 async->next = NULL; 4779 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERSUBCODE; 4780 async->run = bcmx_async_run; 4781 async->callback = async_callback; 4782 async->cookie = async_cookie; 4783 async->args.field_qualify_ExtensionHeaderSubCode.entry = entry; 4784 async->args.field_qualify_ExtensionHeaderSubCode.data = data; 4785 async->args.field_qualify_ExtensionHeaderSubCode.mask = mask; 4786 bcm_async_add((bcm_async_req_t *)async); 4787 } 4788 4789 void 4790 bcmx_field_qualify_ExtensionHeaderSubCode_get_async( 4791 bcm_field_entry_t entry, 4792 uint8 * data, 4793 uint8 * mask, 4794 bcmx_async_cb_t async_callback, 4795 void *async_cookie) 4796 { 4797 bcmx_async_req_t *async; 4798 4799 async = sal_alloc(sizeof(*async), "bcmx_async"); 4800 if (async == NULL) { 4801 if (async_callback != NULL) { 4802 (*async_callback)(async_cookie, BCM_E_MEMORY); 4803 } 4804 return; 4805 } 4806 async->next = NULL; 4807 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERSUBCODE_GET; 4808 async->run = bcmx_async_run; 4809 async->callback = async_callback; 4810 async->cookie = async_cookie; 4811 async->args.field_qualify_ExtensionHeaderSubCode_get.entry = entry; 4812 async->args.field_qualify_ExtensionHeaderSubCode_get.data = data; 4813 async->args.field_qualify_ExtensionHeaderSubCode_get.mask = mask; 4814 bcm_async_add((bcm_async_req_t *)async); 4815 } 4816 4817 void 4818 bcmx_field_qualify_ExtensionHeaderType_async( 4819 bcm_field_entry_t entry, 4820 uint8 data, 4821 uint8 mask, 4822 bcmx_async_cb_t async_callback, 4823 void *async_cookie) 4824 { 4825 bcmx_async_req_t *async; 4826 4827 async = sal_alloc(sizeof(*async), "bcmx_async"); 4828 if (async == NULL) { 4829 if (async_callback != NULL) { 4830 (*async_callback)(async_cookie, BCM_E_MEMORY); 4831 } 4832 return; 4833 } 4834 async->next = NULL; 4835 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERTYPE; 4836 async->run = bcmx_async_run; 4837 async->callback = async_callback; 4838 async->cookie = async_cookie; 4839 async->args.field_qualify_ExtensionHeaderType.entry = entry; 4840 async->args.field_qualify_ExtensionHeaderType.data = data; 4841 async->args.field_qualify_ExtensionHeaderType.mask = mask; 4842 bcm_async_add((bcm_async_req_t *)async); 4843 } 4844 4845 void 4846 bcmx_field_qualify_ExtensionHeaderType_get_async( 4847 bcm_field_entry_t entry, 4848 uint8 * data, 4849 uint8 * mask, 4850 bcmx_async_cb_t async_callback, 4851 void *async_cookie) 4852 { 4853 bcmx_async_req_t *async; 4854 4855 async = sal_alloc(sizeof(*async), "bcmx_async"); 4856 if (async == NULL) { 4857 if (async_callback != NULL) { 4858 (*async_callback)(async_cookie, BCM_E_MEMORY); 4859 } 4860 return; 4861 } 4862 async->next = NULL; 4863 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERTYPE_GET; 4864 async->run = bcmx_async_run; 4865 async->callback = async_callback; 4866 async->cookie = async_cookie; 4867 async->args.field_qualify_ExtensionHeaderType_get.entry = entry; 4868 async->args.field_qualify_ExtensionHeaderType_get.data = data; 4869 async->args.field_qualify_ExtensionHeaderType_get.mask = mask; 4870 bcm_async_add((bcm_async_req_t *)async); 4871 } 4872 4873 void 4874 bcmx_field_qualify_FabricQueueTag_async( 4875 bcm_field_entry_t entry, 4876 uint32 data, 4877 uint32 mask, 4878 bcmx_async_cb_t async_callback, 4879 void *async_cookie) 4880 { 4881 bcmx_async_req_t *async; 4882 4883 async = sal_alloc(sizeof(*async), "bcmx_async"); 4884 if (async == NULL) { 4885 if (async_callback != NULL) { 4886 (*async_callback)(async_cookie, BCM_E_MEMORY); 4887 } 4888 return; 4889 } 4890 async->next = NULL; 4891 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FABRICQUEUETAG; 4892 async->run = bcmx_async_run; 4893 async->callback = async_callback; 4894 async->cookie = async_cookie; 4895 async->args.field_qualify_FabricQueueTag.entry = entry; 4896 async->args.field_qualify_FabricQueueTag.data = data; 4897 async->args.field_qualify_FabricQueueTag.mask = mask; 4898 bcm_async_add((bcm_async_req_t *)async); 4899 } 4900 4901 void 4902 bcmx_field_qualify_FabricQueueTag_get_async( 4903 bcm_field_entry_t entry, 4904 uint32 * data, 4905 uint32 * mask, 4906 bcmx_async_cb_t async_callback, 4907 void *async_cookie) 4908 { 4909 bcmx_async_req_t *async; 4910 4911 async = sal_alloc(sizeof(*async), "bcmx_async"); 4912 if (async == NULL) { 4913 if (async_callback != NULL) { 4914 (*async_callback)(async_cookie, BCM_E_MEMORY); 4915 } 4916 return; 4917 } 4918 async->next = NULL; 4919 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FABRICQUEUETAG_GET; 4920 async->run = bcmx_async_run; 4921 async->callback = async_callback; 4922 async->cookie = async_cookie; 4923 async->args.field_qualify_FabricQueueTag_get.entry = entry; 4924 async->args.field_qualify_FabricQueueTag_get.data = data; 4925 async->args.field_qualify_FabricQueueTag_get.mask = mask; 4926 bcm_async_add((bcm_async_req_t *)async); 4927 } 4928 4929 void 4930 bcmx_field_qualify_FibreChanInner_async( 4931 bcm_field_entry_t entry, 4932 bcm_field_FibreChan_t fibre_chan_type, 4933 bcmx_async_cb_t async_callback, 4934 void *async_cookie) 4935 { 4936 bcmx_async_req_t *async; 4937 4938 async = sal_alloc(sizeof(*async), "bcmx_async"); 4939 if (async == NULL) { 4940 if (async_callback != NULL) { 4941 (*async_callback)(async_cookie, BCM_E_MEMORY); 4942 } 4943 return; 4944 } 4945 async->next = NULL; 4946 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANINNER; 4947 async->run = bcmx_async_run; 4948 async->callback = async_callback; 4949 async->cookie = async_cookie; 4950 async->args.field_qualify_FibreChanInner.entry = entry; 4951 async->args.field_qualify_FibreChanInner.fibre_chan_type = fibre_chan_type; 4952 bcm_async_add((bcm_async_req_t *)async); 4953 } 4954 4955 void 4956 bcmx_field_qualify_FibreChanInner_get_async( 4957 bcm_field_entry_t entry, 4958 bcm_field_FibreChan_t * fibre_chan_type, 4959 bcmx_async_cb_t async_callback, 4960 void *async_cookie) 4961 { 4962 bcmx_async_req_t *async; 4963 4964 async = sal_alloc(sizeof(*async), "bcmx_async"); 4965 if (async == NULL) { 4966 if (async_callback != NULL) { 4967 (*async_callback)(async_cookie, BCM_E_MEMORY); 4968 } 4969 return; 4970 } 4971 async->next = NULL; 4972 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANINNER_GET; 4973 async->run = bcmx_async_run; 4974 async->callback = async_callback; 4975 async->cookie = async_cookie; 4976 async->args.field_qualify_FibreChanInner_get.entry = entry; 4977 async->args.field_qualify_FibreChanInner_get.fibre_chan_type = fibre_chan_type; 4978 bcm_async_add((bcm_async_req_t *)async); 4979 } 4980 4981 void 4982 bcmx_field_qualify_FibreChanOuter_async( 4983 bcm_field_entry_t entry, 4984 bcm_field_FibreChan_t fibre_chan_type, 4985 bcmx_async_cb_t async_callback, 4986 void *async_cookie) 4987 { 4988 bcmx_async_req_t *async; 4989 4990 async = sal_alloc(sizeof(*async), "bcmx_async"); 4991 if (async == NULL) { 4992 if (async_callback != NULL) { 4993 (*async_callback)(async_cookie, BCM_E_MEMORY); 4994 } 4995 return; 4996 } 4997 async->next = NULL; 4998 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANOUTER; 4999 async->run = bcmx_async_run; 5000 async->callback = async_callback; 5001 async->cookie = async_cookie; 5002 async->args.field_qualify_FibreChanOuter.entry = entry; 5003 async->args.field_qualify_FibreChanOuter.fibre_chan_type = fibre_chan_type; 5004 bcm_async_add((bcm_async_req_t *)async); 5005 } 5006 5007 void 5008 bcmx_field_qualify_FibreChanOuter_get_async( 5009 bcm_field_entry_t entry, 5010 bcm_field_FibreChan_t * fibre_chan_type, 5011 bcmx_async_cb_t async_callback, 5012 void *async_cookie) 5013 { 5014 bcmx_async_req_t *async; 5015 5016 async = sal_alloc(sizeof(*async), "bcmx_async"); 5017 if (async == NULL) { 5018 if (async_callback != NULL) { 5019 (*async_callback)(async_cookie, BCM_E_MEMORY); 5020 } 5021 return; 5022 } 5023 async->next = NULL; 5024 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANOUTER_GET; 5025 async->run = bcmx_async_run; 5026 async->callback = async_callback; 5027 async->cookie = async_cookie; 5028 async->args.field_qualify_FibreChanOuter_get.entry = entry; 5029 async->args.field_qualify_FibreChanOuter_get.fibre_chan_type = fibre_chan_type; 5030 bcm_async_add((bcm_async_req_t *)async); 5031 } 5032 5033 void 5034 bcmx_field_qualify_ForwardingType_async( 5035 bcm_field_entry_t entry, 5036 bcm_field_ForwardingType_t type, 5037 bcmx_async_cb_t async_callback, 5038 void *async_cookie) 5039 { 5040 bcmx_async_req_t *async; 5041 5042 async = sal_alloc(sizeof(*async), "bcmx_async"); 5043 if (async == NULL) { 5044 if (async_callback != NULL) { 5045 (*async_callback)(async_cookie, BCM_E_MEMORY); 5046 } 5047 return; 5048 } 5049 async->next = NULL; 5050 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGTYPE; 5051 async->run = bcmx_async_run; 5052 async->callback = async_callback; 5053 async->cookie = async_cookie; 5054 async->args.field_qualify_ForwardingType.entry = entry; 5055 async->args.field_qualify_ForwardingType.type = type; 5056 bcm_async_add((bcm_async_req_t *)async); 5057 } 5058 5059 void 5060 bcmx_field_qualify_ForwardingType_get_async( 5061 bcm_field_entry_t entry, 5062 bcm_field_ForwardingType_t * type, 5063 bcmx_async_cb_t async_callback, 5064 void *async_cookie) 5065 { 5066 bcmx_async_req_t *async; 5067 5068 async = sal_alloc(sizeof(*async), "bcmx_async"); 5069 if (async == NULL) { 5070 if (async_callback != NULL) { 5071 (*async_callback)(async_cookie, BCM_E_MEMORY); 5072 } 5073 return; 5074 } 5075 async->next = NULL; 5076 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGTYPE_GET; 5077 async->run = bcmx_async_run; 5078 async->callback = async_callback; 5079 async->cookie = async_cookie; 5080 async->args.field_qualify_ForwardingType_get.entry = entry; 5081 async->args.field_qualify_ForwardingType_get.type = type; 5082 bcm_async_add((bcm_async_req_t *)async); 5083 } 5084 5085 void 5086 bcmx_field_qualify_ForwardingVlanId_async( 5087 bcm_field_entry_t entry, 5088 bcm_vlan_t data, 5089 bcm_vlan_t mask, 5090 bcmx_async_cb_t async_callback, 5091 void *async_cookie) 5092 { 5093 bcmx_async_req_t *async; 5094 5095 async = sal_alloc(sizeof(*async), "bcmx_async"); 5096 if (async == NULL) { 5097 if (async_callback != NULL) { 5098 (*async_callback)(async_cookie, BCM_E_MEMORY); 5099 } 5100 return; 5101 } 5102 async->next = NULL; 5103 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANID; 5104 async->run = bcmx_async_run; 5105 async->callback = async_callback; 5106 async->cookie = async_cookie; 5107 async->args.field_qualify_ForwardingVlanId.entry = entry; 5108 async->args.field_qualify_ForwardingVlanId.data = data; 5109 async->args.field_qualify_ForwardingVlanId.mask = mask; 5110 bcm_async_add((bcm_async_req_t *)async); 5111 } 5112 5113 void 5114 bcmx_field_qualify_ForwardingVlanId_get_async( 5115 bcm_field_entry_t entry, 5116 bcm_vlan_t * data, 5117 bcm_vlan_t * mask, 5118 bcmx_async_cb_t async_callback, 5119 void *async_cookie) 5120 { 5121 bcmx_async_req_t *async; 5122 5123 async = sal_alloc(sizeof(*async), "bcmx_async"); 5124 if (async == NULL) { 5125 if (async_callback != NULL) { 5126 (*async_callback)(async_cookie, BCM_E_MEMORY); 5127 } 5128 return; 5129 } 5130 async->next = NULL; 5131 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANID_GET; 5132 async->run = bcmx_async_run; 5133 async->callback = async_callback; 5134 async->cookie = async_cookie; 5135 async->args.field_qualify_ForwardingVlanId_get.entry = entry; 5136 async->args.field_qualify_ForwardingVlanId_get.data = data; 5137 async->args.field_qualify_ForwardingVlanId_get.mask = mask; 5138 bcm_async_add((bcm_async_req_t *)async); 5139 } 5140 5141 void 5142 bcmx_field_qualify_ForwardingVlanValid_async( 5143 bcm_field_entry_t entry, 5144 uint8 data, 5145 uint8 mask, 5146 bcmx_async_cb_t async_callback, 5147 void *async_cookie) 5148 { 5149 bcmx_async_req_t *async; 5150 5151 async = sal_alloc(sizeof(*async), "bcmx_async"); 5152 if (async == NULL) { 5153 if (async_callback != NULL) { 5154 (*async_callback)(async_cookie, BCM_E_MEMORY); 5155 } 5156 return; 5157 } 5158 async->next = NULL; 5159 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANVALID; 5160 async->run = bcmx_async_run; 5161 async->callback = async_callback; 5162 async->cookie = async_cookie; 5163 async->args.field_qualify_ForwardingVlanValid.entry = entry; 5164 async->args.field_qualify_ForwardingVlanValid.data = data; 5165 async->args.field_qualify_ForwardingVlanValid.mask = mask; 5166 bcm_async_add((bcm_async_req_t *)async); 5167 } 5168 5169 void 5170 bcmx_field_qualify_ForwardingVlanValid_get_async( 5171 bcm_field_entry_t entry, 5172 uint8 * data, 5173 uint8 * mask, 5174 bcmx_async_cb_t async_callback, 5175 void *async_cookie) 5176 { 5177 bcmx_async_req_t *async; 5178 5179 async = sal_alloc(sizeof(*async), "bcmx_async"); 5180 if (async == NULL) { 5181 if (async_callback != NULL) { 5182 (*async_callback)(async_cookie, BCM_E_MEMORY); 5183 } 5184 return; 5185 } 5186 async->next = NULL; 5187 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANVALID_GET; 5188 async->run = bcmx_async_run; 5189 async->callback = async_callback; 5190 async->cookie = async_cookie; 5191 async->args.field_qualify_ForwardingVlanValid_get.entry = entry; 5192 async->args.field_qualify_ForwardingVlanValid_get.data = data; 5193 async->args.field_qualify_ForwardingVlanValid_get.mask = mask; 5194 bcm_async_add((bcm_async_req_t *)async); 5195 } 5196 5197 void 5198 bcmx_field_qualify_HiGig_async( 5199 bcm_field_entry_t entry, 5200 uint8 data, 5201 uint8 mask, 5202 bcmx_async_cb_t async_callback, 5203 void *async_cookie) 5204 { 5205 bcmx_async_req_t *async; 5206 5207 async = sal_alloc(sizeof(*async), "bcmx_async"); 5208 if (async == NULL) { 5209 if (async_callback != NULL) { 5210 (*async_callback)(async_cookie, BCM_E_MEMORY); 5211 } 5212 return; 5213 } 5214 async->next = NULL; 5215 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_HIGIG; 5216 async->run = bcmx_async_run; 5217 async->callback = async_callback; 5218 async->cookie = async_cookie; 5219 async->args.field_qualify_HiGig.entry = entry; 5220 async->args.field_qualify_HiGig.data = data; 5221 async->args.field_qualify_HiGig.mask = mask; 5222 bcm_async_add((bcm_async_req_t *)async); 5223 } 5224 5225 void 5226 bcmx_field_qualify_HiGig_get_async( 5227 bcm_field_entry_t entry, 5228 uint8 * data, 5229 uint8 * mask, 5230 bcmx_async_cb_t async_callback, 5231 void *async_cookie) 5232 { 5233 bcmx_async_req_t *async; 5234 5235 async = sal_alloc(sizeof(*async), "bcmx_async"); 5236 if (async == NULL) { 5237 if (async_callback != NULL) { 5238 (*async_callback)(async_cookie, BCM_E_MEMORY); 5239 } 5240 return; 5241 } 5242 async->next = NULL; 5243 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_HIGIG_GET; 5244 async->run = bcmx_async_run; 5245 async->callback = async_callback; 5246 async->cookie = async_cookie; 5247 async->args.field_qualify_HiGig_get.entry = entry; 5248 async->args.field_qualify_HiGig_get.data = data; 5249 async->args.field_qualify_HiGig_get.mask = mask; 5250 bcm_async_add((bcm_async_req_t *)async); 5251 } 5252 5253 void 5254 bcmx_field_qualify_IcmpTypeCode_get_async( 5255 bcm_field_entry_t entry, 5256 uint16 * data, 5257 uint16 * mask, 5258 bcmx_async_cb_t async_callback, 5259 void *async_cookie) 5260 { 5261 bcmx_async_req_t *async; 5262 5263 async = sal_alloc(sizeof(*async), "bcmx_async"); 5264 if (async == NULL) { 5265 if (async_callback != NULL) { 5266 (*async_callback)(async_cookie, BCM_E_MEMORY); 5267 } 5268 return; 5269 } 5270 async->next = NULL; 5271 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_ICMPTYPECODE_GET; 5272 async->run = bcmx_async_run; 5273 async->callback = async_callback; 5274 async->cookie = async_cookie; 5275 async->args.field_qualify_IcmpTypeCode_get.entry = entry; 5276 async->args.field_qualify_IcmpTypeCode_get.data = data; 5277 async->args.field_qualify_IcmpTypeCode_get.mask = mask; 5278 bcm_async_add((bcm_async_req_t *)async); 5279 } 5280 5281 void 5282 bcmx_field_qualify_InPort_async( 5283 bcm_field_entry_t entry, 5284 bcmx_lport_t port, 5285 bcmx_async_cb_t async_callback, 5286 void *async_cookie) 5287 { 5288 bcmx_async_req_t *async; 5289 5290 async = sal_alloc(sizeof(*async), "bcmx_async"); 5291 if (async == NULL) { 5292 if (async_callback != NULL) { 5293 (*async_callback)(async_cookie, BCM_E_MEMORY); 5294 } 5295 return; 5296 } 5297 async->next = NULL; 5298 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORT; 5299 async->run = bcmx_async_run; 5300 async->callback = async_callback; 5301 async->cookie = async_cookie; 5302 async->args.field_qualify_InPort.entry = entry; 5303 async->args.field_qualify_InPort.port = port; 5304 bcm_async_add((bcm_async_req_t *)async); 5305 } 5306 5307 void 5308 bcmx_field_qualify_InPort_get_async( 5309 bcm_field_entry_t entry, 5310 bcm_port_t * data, 5311 bcm_port_t * mask, 5312 bcmx_async_cb_t async_callback, 5313 void *async_cookie) 5314 { 5315 bcmx_async_req_t *async; 5316 5317 async = sal_alloc(sizeof(*async), "bcmx_async"); 5318 if (async == NULL) { 5319 if (async_callback != NULL) { 5320 (*async_callback)(async_cookie, BCM_E_MEMORY); 5321 } 5322 return; 5323 } 5324 async->next = NULL; 5325 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORT_GET; 5326 async->run = bcmx_async_run; 5327 async->callback = async_callback; 5328 async->cookie = async_cookie; 5329 async->args.field_qualify_InPort_get.entry = entry; 5330 async->args.field_qualify_InPort_get.data = data; 5331 async->args.field_qualify_InPort_get.mask = mask; 5332 bcm_async_add((bcm_async_req_t *)async); 5333 } 5334 5335 void 5336 bcmx_field_qualify_InPorts_async( 5337 bcm_field_entry_t entry, 5338 bcmx_lplist_t lplist, 5339 bcmx_async_cb_t async_callback, 5340 void *async_cookie) 5341 { 5342 bcmx_async_req_t *async; 5343 5344 async = sal_alloc(sizeof(*async), "bcmx_async"); 5345 if (async == NULL) { 5346 if (async_callback != NULL) { 5347 (*async_callback)(async_cookie, BCM_E_MEMORY); 5348 } 5349 return; 5350 } 5351 async->next = NULL; 5352 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORTS; 5353 async->run = bcmx_async_run; 5354 async->callback = async_callback; 5355 async->cookie = async_cookie; 5356 async->args.field_qualify_InPorts.entry = entry; 5357 async->args.field_qualify_InPorts.lplist = lplist; 5358 bcm_async_add((bcm_async_req_t *)async); 5359 } 5360 5361 void 5362 bcmx_field_qualify_InPorts_get_async( 5363 bcm_field_entry_t entry, 5364 bcm_pbmp_t * data, 5365 bcm_pbmp_t * mask, 5366 bcmx_async_cb_t async_callback, 5367 void *async_cookie) 5368 { 5369 bcmx_async_req_t *async; 5370 5371 async = sal_alloc(sizeof(*async), "bcmx_async"); 5372 if (async == NULL) { 5373 if (async_callback != NULL) { 5374 (*async_callback)(async_cookie, BCM_E_MEMORY); 5375 } 5376 return; 5377 } 5378 async->next = NULL; 5379 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORTS_GET; 5380 async->run = bcmx_async_run; 5381 async->callback = async_callback; 5382 async->cookie = async_cookie; 5383 async->args.field_qualify_InPorts_get.entry = entry; 5384 async->args.field_qualify_InPorts_get.data = data; 5385 async->args.field_qualify_InPorts_get.mask = mask; 5386 bcm_async_add((bcm_async_req_t *)async); 5387 } 5388 5389 void 5390 bcmx_field_qualify_IngressStpState_async( 5391 bcm_field_entry_t entry, 5392 uint8 data, 5393 uint8 mask, 5394 bcmx_async_cb_t async_callback, 5395 void *async_cookie) 5396 { 5397 bcmx_async_req_t *async; 5398 5399 async = sal_alloc(sizeof(*async), "bcmx_async"); 5400 if (async == NULL) { 5401 if (async_callback != NULL) { 5402 (*async_callback)(async_cookie, BCM_E_MEMORY); 5403 } 5404 return; 5405 } 5406 async->next = NULL; 5407 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INGRESSSTPSTATE; 5408 async->run = bcmx_async_run; 5409 async->callback = async_callback; 5410 async->cookie = async_cookie; 5411 async->args.field_qualify_IngressStpState.entry = entry; 5412 async->args.field_qualify_IngressStpState.data = data; 5413 async->args.field_qualify_IngressStpState.mask = mask; 5414 bcm_async_add((bcm_async_req_t *)async); 5415 } 5416 5417 void 5418 bcmx_field_qualify_IngressStpState_get_async( 5419 bcm_field_entry_t entry, 5420 uint8 * data, 5421 uint8 * mask, 5422 bcmx_async_cb_t async_callback, 5423 void *async_cookie) 5424 { 5425 bcmx_async_req_t *async; 5426 5427 async = sal_alloc(sizeof(*async), "bcmx_async"); 5428 if (async == NULL) { 5429 if (async_callback != NULL) { 5430 (*async_callback)(async_cookie, BCM_E_MEMORY); 5431 } 5432 return; 5433 } 5434 async->next = NULL; 5435 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INGRESSSTPSTATE_GET; 5436 async->run = bcmx_async_run; 5437 async->callback = async_callback; 5438 async->cookie = async_cookie; 5439 async->args.field_qualify_IngressStpState_get.entry = entry; 5440 async->args.field_qualify_IngressStpState_get.data = data; 5441 async->args.field_qualify_IngressStpState_get.mask = mask; 5442 bcm_async_add((bcm_async_req_t *)async); 5443 } 5444 5445 void 5446 bcmx_field_qualify_InnerDSCP_async( 5447 bcm_field_entry_t entry, 5448 uint8 data, 5449 uint8 mask, 5450 bcmx_async_cb_t async_callback, 5451 void *async_cookie) 5452 { 5453 bcmx_async_req_t *async; 5454 5455 async = sal_alloc(sizeof(*async), "bcmx_async"); 5456 if (async == NULL) { 5457 if (async_callback != NULL) { 5458 (*async_callback)(async_cookie, BCM_E_MEMORY); 5459 } 5460 return; 5461 } 5462 async->next = NULL; 5463 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSCP; 5464 async->run = bcmx_async_run; 5465 async->callback = async_callback; 5466 async->cookie = async_cookie; 5467 async->args.field_qualify_InnerDSCP.entry = entry; 5468 async->args.field_qualify_InnerDSCP.data = data; 5469 async->args.field_qualify_InnerDSCP.mask = mask; 5470 bcm_async_add((bcm_async_req_t *)async); 5471 } 5472 5473 void 5474 bcmx_field_qualify_InnerDSCP_get_async( 5475 bcm_field_entry_t entry, 5476 uint8 * data, 5477 uint8 * mask, 5478 bcmx_async_cb_t async_callback, 5479 void *async_cookie) 5480 { 5481 bcmx_async_req_t *async; 5482 5483 async = sal_alloc(sizeof(*async), "bcmx_async"); 5484 if (async == NULL) { 5485 if (async_callback != NULL) { 5486 (*async_callback)(async_cookie, BCM_E_MEMORY); 5487 } 5488 return; 5489 } 5490 async->next = NULL; 5491 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSCP_GET; 5492 async->run = bcmx_async_run; 5493 async->callback = async_callback; 5494 async->cookie = async_cookie; 5495 async->args.field_qualify_InnerDSCP_get.entry = entry; 5496 async->args.field_qualify_InnerDSCP_get.data = data; 5497 async->args.field_qualify_InnerDSCP_get.mask = mask; 5498 bcm_async_add((bcm_async_req_t *)async); 5499 } 5500 5501 void 5502 bcmx_field_qualify_InnerDstIp_async( 5503 bcm_field_entry_t entry, 5504 bcm_ip_t data, 5505 bcm_ip_t mask, 5506 bcmx_async_cb_t async_callback, 5507 void *async_cookie) 5508 { 5509 bcmx_async_req_t *async; 5510 5511 async = sal_alloc(sizeof(*async), "bcmx_async"); 5512 if (async == NULL) { 5513 if (async_callback != NULL) { 5514 (*async_callback)(async_cookie, BCM_E_MEMORY); 5515 } 5516 return; 5517 } 5518 async->next = NULL; 5519 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP; 5520 async->run = bcmx_async_run; 5521 async->callback = async_callback; 5522 async->cookie = async_cookie; 5523 async->args.field_qualify_InnerDstIp.entry = entry; 5524 async->args.field_qualify_InnerDstIp.data = data; 5525 async->args.field_qualify_InnerDstIp.mask = mask; 5526 bcm_async_add((bcm_async_req_t *)async); 5527 } 5528 5529 void 5530 bcmx_field_qualify_InnerDstIp6_async( 5531 bcm_field_entry_t entry, 5532 bcm_ip6_t data, 5533 bcm_ip6_t mask, 5534 bcmx_async_cb_t async_callback, 5535 void *async_cookie) 5536 { 5537 bcmx_async_req_t *async; 5538 5539 async = sal_alloc(sizeof(*async), "bcmx_async"); 5540 if (async == NULL) { 5541 if (async_callback != NULL) { 5542 (*async_callback)(async_cookie, BCM_E_MEMORY); 5543 } 5544 return; 5545 } 5546 async->next = NULL; 5547 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6; 5548 async->run = bcmx_async_run; 5549 async->callback = async_callback; 5550 async->cookie = async_cookie; 5551 async->args.field_qualify_InnerDstIp6.entry = entry; 5552 async->args.field_qualify_InnerDstIp6.data = (uint8 *)data; 5553 async->args.field_qualify_InnerDstIp6.mask = (uint8 *)mask; 5554 bcm_async_add((bcm_async_req_t *)async); 5555 } 5556 5557 void 5558 bcmx_field_qualify_InnerDstIp6High_async( 5559 bcm_field_entry_t entry, 5560 bcm_ip6_t data, 5561 bcm_ip6_t mask, 5562 bcmx_async_cb_t async_callback, 5563 void *async_cookie) 5564 { 5565 bcmx_async_req_t *async; 5566 5567 async = sal_alloc(sizeof(*async), "bcmx_async"); 5568 if (async == NULL) { 5569 if (async_callback != NULL) { 5570 (*async_callback)(async_cookie, BCM_E_MEMORY); 5571 } 5572 return; 5573 } 5574 async->next = NULL; 5575 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6HIGH; 5576 async->run = bcmx_async_run; 5577 async->callback = async_callback; 5578 async->cookie = async_cookie; 5579 async->args.field_qualify_InnerDstIp6High.entry = entry; 5580 async->args.field_qualify_InnerDstIp6High.data = (uint8 *)data; 5581 async->args.field_qualify_InnerDstIp6High.mask = (uint8 *)mask; 5582 bcm_async_add((bcm_async_req_t *)async); 5583 } 5584 5585 void 5586 bcmx_field_qualify_InnerDstIp6High_get_async( 5587 bcm_field_entry_t entry, 5588 bcm_ip6_t * data, 5589 bcm_ip6_t * mask, 5590 bcmx_async_cb_t async_callback, 5591 void *async_cookie) 5592 { 5593 bcmx_async_req_t *async; 5594 5595 async = sal_alloc(sizeof(*async), "bcmx_async"); 5596 if (async == NULL) { 5597 if (async_callback != NULL) { 5598 (*async_callback)(async_cookie, BCM_E_MEMORY); 5599 } 5600 return; 5601 } 5602 async->next = NULL; 5603 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6HIGH_GET; 5604 async->run = bcmx_async_run; 5605 async->callback = async_callback; 5606 async->cookie = async_cookie; 5607 async->args.field_qualify_InnerDstIp6High_get.entry = entry; 5608 async->args.field_qualify_InnerDstIp6High_get.data = data; 5609 async->args.field_qualify_InnerDstIp6High_get.mask = mask; 5610 bcm_async_add((bcm_async_req_t *)async); 5611 } 5612 5613 void 5614 bcmx_field_qualify_InnerDstIp6_get_async( 5615 bcm_field_entry_t entry, 5616 bcm_ip6_t * data, 5617 bcm_ip6_t * mask, 5618 bcmx_async_cb_t async_callback, 5619 void *async_cookie) 5620 { 5621 bcmx_async_req_t *async; 5622 5623 async = sal_alloc(sizeof(*async), "bcmx_async"); 5624 if (async == NULL) { 5625 if (async_callback != NULL) { 5626 (*async_callback)(async_cookie, BCM_E_MEMORY); 5627 } 5628 return; 5629 } 5630 async->next = NULL; 5631 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6_GET; 5632 async->run = bcmx_async_run; 5633 async->callback = async_callback; 5634 async->cookie = async_cookie; 5635 async->args.field_qualify_InnerDstIp6_get.entry = entry; 5636 async->args.field_qualify_InnerDstIp6_get.data = data; 5637 async->args.field_qualify_InnerDstIp6_get.mask = mask; 5638 bcm_async_add((bcm_async_req_t *)async); 5639 } 5640 5641 void 5642 bcmx_field_qualify_InnerDstIp_get_async( 5643 bcm_field_entry_t entry, 5644 bcm_ip_t * data, 5645 bcm_ip_t * mask, 5646 bcmx_async_cb_t async_callback, 5647 void *async_cookie) 5648 { 5649 bcmx_async_req_t *async; 5650 5651 async = sal_alloc(sizeof(*async), "bcmx_async"); 5652 if (async == NULL) { 5653 if (async_callback != NULL) { 5654 (*async_callback)(async_cookie, BCM_E_MEMORY); 5655 } 5656 return; 5657 } 5658 async->next = NULL; 5659 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP_GET; 5660 async->run = bcmx_async_run; 5661 async->callback = async_callback; 5662 async->cookie = async_cookie; 5663 async->args.field_qualify_InnerDstIp_get.entry = entry; 5664 async->args.field_qualify_InnerDstIp_get.data = data; 5665 async->args.field_qualify_InnerDstIp_get.mask = mask; 5666 bcm_async_add((bcm_async_req_t *)async); 5667 } 5668 5669 void 5670 bcmx_field_qualify_InnerIp6FlowLabel_async( 5671 bcm_field_entry_t entry, 5672 uint32 data, 5673 uint32 mask, 5674 bcmx_async_cb_t async_callback, 5675 void *async_cookie) 5676 { 5677 bcmx_async_req_t *async; 5678 5679 async = sal_alloc(sizeof(*async), "bcmx_async"); 5680 if (async == NULL) { 5681 if (async_callback != NULL) { 5682 (*async_callback)(async_cookie, BCM_E_MEMORY); 5683 } 5684 return; 5685 } 5686 async->next = NULL; 5687 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIP6FLOWLABEL; 5688 async->run = bcmx_async_run; 5689 async->callback = async_callback; 5690 async->cookie = async_cookie; 5691 async->args.field_qualify_InnerIp6FlowLabel.entry = entry; 5692 async->args.field_qualify_InnerIp6FlowLabel.data = data; 5693 async->args.field_qualify_InnerIp6FlowLabel.mask = mask; 5694 bcm_async_add((bcm_async_req_t *)async); 5695 } 5696 5697 void 5698 bcmx_field_qualify_InnerIp6FlowLabel_get_async( 5699 bcm_field_entry_t entry, 5700 uint32 * data, 5701 uint32 * mask, 5702 bcmx_async_cb_t async_callback, 5703 void *async_cookie) 5704 { 5705 bcmx_async_req_t *async; 5706 5707 async = sal_alloc(sizeof(*async), "bcmx_async"); 5708 if (async == NULL) { 5709 if (async_callback != NULL) { 5710 (*async_callback)(async_cookie, BCM_E_MEMORY); 5711 } 5712 return; 5713 } 5714 async->next = NULL; 5715 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIP6FLOWLABEL_GET; 5716 async->run = bcmx_async_run; 5717 async->callback = async_callback; 5718 async->cookie = async_cookie; 5719 async->args.field_qualify_InnerIp6FlowLabel_get.entry = entry; 5720 async->args.field_qualify_InnerIp6FlowLabel_get.data = data; 5721 async->args.field_qualify_InnerIp6FlowLabel_get.mask = mask; 5722 bcm_async_add((bcm_async_req_t *)async); 5723 } 5724 5725 void 5726 bcmx_field_qualify_InnerIpFrag_async( 5727 bcm_field_entry_t entry, 5728 bcm_field_IpFrag_t frag_info, 5729 bcmx_async_cb_t async_callback, 5730 void *async_cookie) 5731 { 5732 bcmx_async_req_t *async; 5733 5734 async = sal_alloc(sizeof(*async), "bcmx_async"); 5735 if (async == NULL) { 5736 if (async_callback != NULL) { 5737 (*async_callback)(async_cookie, BCM_E_MEMORY); 5738 } 5739 return; 5740 } 5741 async->next = NULL; 5742 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPFRAG; 5743 async->run = bcmx_async_run; 5744 async->callback = async_callback; 5745 async->cookie = async_cookie; 5746 async->args.field_qualify_InnerIpFrag.entry = entry; 5747 async->args.field_qualify_InnerIpFrag.frag_info = frag_info; 5748 bcm_async_add((bcm_async_req_t *)async); 5749 } 5750 5751 void 5752 bcmx_field_qualify_InnerIpFrag_get_async( 5753 bcm_field_entry_t entry, 5754 bcm_field_IpFrag_t * frag_info, 5755 bcmx_async_cb_t async_callback, 5756 void *async_cookie) 5757 { 5758 bcmx_async_req_t *async; 5759 5760 async = sal_alloc(sizeof(*async), "bcmx_async"); 5761 if (async == NULL) { 5762 if (async_callback != NULL) { 5763 (*async_callback)(async_cookie, BCM_E_MEMORY); 5764 } 5765 return; 5766 } 5767 async->next = NULL; 5768 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPFRAG_GET; 5769 async->run = bcmx_async_run; 5770 async->callback = async_callback; 5771 async->cookie = async_cookie; 5772 async->args.field_qualify_InnerIpFrag_get.entry = entry; 5773 async->args.field_qualify_InnerIpFrag_get.frag_info = frag_info; 5774 bcm_async_add((bcm_async_req_t *)async); 5775 } 5776 5777 void 5778 bcmx_field_qualify_InnerIpProtocol_async( 5779 bcm_field_entry_t entry, 5780 uint8 data, 5781 uint8 mask, 5782 bcmx_async_cb_t async_callback, 5783 void *async_cookie) 5784 { 5785 bcmx_async_req_t *async; 5786 5787 async = sal_alloc(sizeof(*async), "bcmx_async"); 5788 if (async == NULL) { 5789 if (async_callback != NULL) { 5790 (*async_callback)(async_cookie, BCM_E_MEMORY); 5791 } 5792 return; 5793 } 5794 async->next = NULL; 5795 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOL; 5796 async->run = bcmx_async_run; 5797 async->callback = async_callback; 5798 async->cookie = async_cookie; 5799 async->args.field_qualify_InnerIpProtocol.entry = entry; 5800 async->args.field_qualify_InnerIpProtocol.data = data; 5801 async->args.field_qualify_InnerIpProtocol.mask = mask; 5802 bcm_async_add((bcm_async_req_t *)async); 5803 } 5804 5805 void 5806 bcmx_field_qualify_InnerIpProtocolCommon_async( 5807 bcm_field_entry_t entry, 5808 bcm_field_IpProtocolCommon_t protocol, 5809 bcmx_async_cb_t async_callback, 5810 void *async_cookie) 5811 { 5812 bcmx_async_req_t *async; 5813 5814 async = sal_alloc(sizeof(*async), "bcmx_async"); 5815 if (async == NULL) { 5816 if (async_callback != NULL) { 5817 (*async_callback)(async_cookie, BCM_E_MEMORY); 5818 } 5819 return; 5820 } 5821 async->next = NULL; 5822 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOLCOMMON; 5823 async->run = bcmx_async_run; 5824 async->callback = async_callback; 5825 async->cookie = async_cookie; 5826 async->args.field_qualify_InnerIpProtocolCommon.entry = entry; 5827 async->args.field_qualify_InnerIpProtocolCommon.protocol = protocol; 5828 bcm_async_add((bcm_async_req_t *)async); 5829 } 5830 5831 void 5832 bcmx_field_qualify_InnerIpProtocolCommon_get_async( 5833 bcm_field_entry_t entry, 5834 bcm_field_IpProtocolCommon_t * protocol, 5835 bcmx_async_cb_t async_callback, 5836 void *async_cookie) 5837 { 5838 bcmx_async_req_t *async; 5839 5840 async = sal_alloc(sizeof(*async), "bcmx_async"); 5841 if (async == NULL) { 5842 if (async_callback != NULL) { 5843 (*async_callback)(async_cookie, BCM_E_MEMORY); 5844 } 5845 return; 5846 } 5847 async->next = NULL; 5848 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOLCOMMON_GET; 5849 async->run = bcmx_async_run; 5850 async->callback = async_callback; 5851 async->cookie = async_cookie; 5852 async->args.field_qualify_InnerIpProtocolCommon_get.entry = entry; 5853 async->args.field_qualify_InnerIpProtocolCommon_get.protocol = protocol; 5854 bcm_async_add((bcm_async_req_t *)async); 5855 } 5856 5857 void 5858 bcmx_field_qualify_InnerIpProtocol_get_async( 5859 bcm_field_entry_t entry, 5860 uint8 * data, 5861 uint8 * mask, 5862 bcmx_async_cb_t async_callback, 5863 void *async_cookie) 5864 { 5865 bcmx_async_req_t *async; 5866 5867 async = sal_alloc(sizeof(*async), "bcmx_async"); 5868 if (async == NULL) { 5869 if (async_callback != NULL) { 5870 (*async_callback)(async_cookie, BCM_E_MEMORY); 5871 } 5872 return; 5873 } 5874 async->next = NULL; 5875 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOL_GET; 5876 async->run = bcmx_async_run; 5877 async->callback = async_callback; 5878 async->cookie = async_cookie; 5879 async->args.field_qualify_InnerIpProtocol_get.entry = entry; 5880 async->args.field_qualify_InnerIpProtocol_get.data = data; 5881 async->args.field_qualify_InnerIpProtocol_get.mask = mask; 5882 bcm_async_add((bcm_async_req_t *)async); 5883 } 5884 5885 void 5886 bcmx_field_qualify_InnerIpType_async( 5887 bcm_field_entry_t entry, 5888 bcm_field_IpType_t type, 5889 bcmx_async_cb_t async_callback, 5890 void *async_cookie) 5891 { 5892 bcmx_async_req_t *async; 5893 5894 async = sal_alloc(sizeof(*async), "bcmx_async"); 5895 if (async == NULL) { 5896 if (async_callback != NULL) { 5897 (*async_callback)(async_cookie, BCM_E_MEMORY); 5898 } 5899 return; 5900 } 5901 async->next = NULL; 5902 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPTYPE; 5903 async->run = bcmx_async_run; 5904 async->callback = async_callback; 5905 async->cookie = async_cookie; 5906 async->args.field_qualify_InnerIpType.entry = entry; 5907 async->args.field_qualify_InnerIpType.type = type; 5908 bcm_async_add((bcm_async_req_t *)async); 5909 } 5910 5911 void 5912 bcmx_field_qualify_InnerIpType_get_async( 5913 bcm_field_entry_t entry, 5914 bcm_field_IpType_t * type, 5915 bcmx_async_cb_t async_callback, 5916 void *async_cookie) 5917 { 5918 bcmx_async_req_t *async; 5919 5920 async = sal_alloc(sizeof(*async), "bcmx_async"); 5921 if (async == NULL) { 5922 if (async_callback != NULL) { 5923 (*async_callback)(async_cookie, BCM_E_MEMORY); 5924 } 5925 return; 5926 } 5927 async->next = NULL; 5928 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPTYPE_GET; 5929 async->run = bcmx_async_run; 5930 async->callback = async_callback; 5931 async->cookie = async_cookie; 5932 async->args.field_qualify_InnerIpType_get.entry = entry; 5933 async->args.field_qualify_InnerIpType_get.type = type; 5934 bcm_async_add((bcm_async_req_t *)async); 5935 } 5936 5937 void 5938 bcmx_field_qualify_InnerL4DstPort_async( 5939 bcm_field_entry_t entry, 5940 bcm_l4_port_t data, 5941 bcm_l4_port_t mask, 5942 bcmx_async_cb_t async_callback, 5943 void *async_cookie) 5944 { 5945 bcmx_async_req_t *async; 5946 5947 async = sal_alloc(sizeof(*async), "bcmx_async"); 5948 if (async == NULL) { 5949 if (async_callback != NULL) { 5950 (*async_callback)(async_cookie, BCM_E_MEMORY); 5951 } 5952 return; 5953 } 5954 async->next = NULL; 5955 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4DSTPORT; 5956 async->run = bcmx_async_run; 5957 async->callback = async_callback; 5958 async->cookie = async_cookie; 5959 async->args.field_qualify_InnerL4DstPort.entry = entry; 5960 async->args.field_qualify_InnerL4DstPort.data = data; 5961 async->args.field_qualify_InnerL4DstPort.mask = mask; 5962 bcm_async_add((bcm_async_req_t *)async); 5963 } 5964 5965 void 5966 bcmx_field_qualify_InnerL4DstPort_get_async( 5967 bcm_field_entry_t entry, 5968 bcm_l4_port_t * data, 5969 bcm_l4_port_t * mask, 5970 bcmx_async_cb_t async_callback, 5971 void *async_cookie) 5972 { 5973 bcmx_async_req_t *async; 5974 5975 async = sal_alloc(sizeof(*async), "bcmx_async"); 5976 if (async == NULL) { 5977 if (async_callback != NULL) { 5978 (*async_callback)(async_cookie, BCM_E_MEMORY); 5979 } 5980 return; 5981 } 5982 async->next = NULL; 5983 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4DSTPORT_GET; 5984 async->run = bcmx_async_run; 5985 async->callback = async_callback; 5986 async->cookie = async_cookie; 5987 async->args.field_qualify_InnerL4DstPort_get.entry = entry; 5988 async->args.field_qualify_InnerL4DstPort_get.data = data; 5989 async->args.field_qualify_InnerL4DstPort_get.mask = mask; 5990 bcm_async_add((bcm_async_req_t *)async); 5991 } 5992 5993 void 5994 bcmx_field_qualify_InnerL4SrcPort_async( 5995 bcm_field_entry_t entry, 5996 bcm_l4_port_t data, 5997 bcm_l4_port_t mask, 5998 bcmx_async_cb_t async_callback, 5999 void *async_cookie) 6000 { 6001 bcmx_async_req_t *async; 6002 6003 async = sal_alloc(sizeof(*async), "bcmx_async"); 6004 if (async == NULL) { 6005 if (async_callback != NULL) { 6006 (*async_callback)(async_cookie, BCM_E_MEMORY); 6007 } 6008 return; 6009 } 6010 async->next = NULL; 6011 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4SRCPORT; 6012 async->run = bcmx_async_run; 6013 async->callback = async_callback; 6014 async->cookie = async_cookie; 6015 async->args.field_qualify_InnerL4SrcPort.entry = entry; 6016 async->args.field_qualify_InnerL4SrcPort.data = data; 6017 async->args.field_qualify_InnerL4SrcPort.mask = mask; 6018 bcm_async_add((bcm_async_req_t *)async); 6019 } 6020 6021 void 6022 bcmx_field_qualify_InnerL4SrcPort_get_async( 6023 bcm_field_entry_t entry, 6024 bcm_l4_port_t * data, 6025 bcm_l4_port_t * mask, 6026 bcmx_async_cb_t async_callback, 6027 void *async_cookie) 6028 { 6029 bcmx_async_req_t *async; 6030 6031 async = sal_alloc(sizeof(*async), "bcmx_async"); 6032 if (async == NULL) { 6033 if (async_callback != NULL) { 6034 (*async_callback)(async_cookie, BCM_E_MEMORY); 6035 } 6036 return; 6037 } 6038 async->next = NULL; 6039 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4SRCPORT_GET; 6040 async->run = bcmx_async_run; 6041 async->callback = async_callback; 6042 async->cookie = async_cookie; 6043 async->args.field_qualify_InnerL4SrcPort_get.entry = entry; 6044 async->args.field_qualify_InnerL4SrcPort_get.data = data; 6045 async->args.field_qualify_InnerL4SrcPort_get.mask = mask; 6046 bcm_async_add((bcm_async_req_t *)async); 6047 } 6048 6049 void 6050 bcmx_field_qualify_InnerSrcIp_async( 6051 bcm_field_entry_t entry, 6052 bcm_ip_t data, 6053 bcm_ip_t mask, 6054 bcmx_async_cb_t async_callback, 6055 void *async_cookie) 6056 { 6057 bcmx_async_req_t *async; 6058 6059 async = sal_alloc(sizeof(*async), "bcmx_async"); 6060 if (async == NULL) { 6061 if (async_callback != NULL) { 6062 (*async_callback)(async_cookie, BCM_E_MEMORY); 6063 } 6064 return; 6065 } 6066 async->next = NULL; 6067 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP; 6068 async->run = bcmx_async_run; 6069 async->callback = async_callback; 6070 async->cookie = async_cookie; 6071 async->args.field_qualify_InnerSrcIp.entry = entry; 6072 async->args.field_qualify_InnerSrcIp.data = data; 6073 async->args.field_qualify_InnerSrcIp.mask = mask; 6074 bcm_async_add((bcm_async_req_t *)async); 6075 } 6076 6077 void 6078 bcmx_field_qualify_InnerSrcIp6_async( 6079 bcm_field_entry_t entry, 6080 bcm_ip6_t data, 6081 bcm_ip6_t mask, 6082 bcmx_async_cb_t async_callback, 6083 void *async_cookie) 6084 { 6085 bcmx_async_req_t *async; 6086 6087 async = sal_alloc(sizeof(*async), "bcmx_async"); 6088 if (async == NULL) { 6089 if (async_callback != NULL) { 6090 (*async_callback)(async_cookie, BCM_E_MEMORY); 6091 } 6092 return; 6093 } 6094 async->next = NULL; 6095 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6; 6096 async->run = bcmx_async_run; 6097 async->callback = async_callback; 6098 async->cookie = async_cookie; 6099 async->args.field_qualify_InnerSrcIp6.entry = entry; 6100 async->args.field_qualify_InnerSrcIp6.data = (uint8 *)data; 6101 async->args.field_qualify_InnerSrcIp6.mask = (uint8 *)mask; 6102 bcm_async_add((bcm_async_req_t *)async); 6103 } 6104 6105 void 6106 bcmx_field_qualify_InnerSrcIp6High_async( 6107 bcm_field_entry_t entry, 6108 bcm_ip6_t data, 6109 bcm_ip6_t mask, 6110 bcmx_async_cb_t async_callback, 6111 void *async_cookie) 6112 { 6113 bcmx_async_req_t *async; 6114 6115 async = sal_alloc(sizeof(*async), "bcmx_async"); 6116 if (async == NULL) { 6117 if (async_callback != NULL) { 6118 (*async_callback)(async_cookie, BCM_E_MEMORY); 6119 } 6120 return; 6121 } 6122 async->next = NULL; 6123 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6HIGH; 6124 async->run = bcmx_async_run; 6125 async->callback = async_callback; 6126 async->cookie = async_cookie; 6127 async->args.field_qualify_InnerSrcIp6High.entry = entry; 6128 async->args.field_qualify_InnerSrcIp6High.data = (uint8 *)data; 6129 async->args.field_qualify_InnerSrcIp6High.mask = (uint8 *)mask; 6130 bcm_async_add((bcm_async_req_t *)async); 6131 } 6132 6133 void 6134 bcmx_field_qualify_InnerSrcIp6High_get_async( 6135 bcm_field_entry_t entry, 6136 bcm_ip6_t * data, 6137 bcm_ip6_t * mask, 6138 bcmx_async_cb_t async_callback, 6139 void *async_cookie) 6140 { 6141 bcmx_async_req_t *async; 6142 6143 async = sal_alloc(sizeof(*async), "bcmx_async"); 6144 if (async == NULL) { 6145 if (async_callback != NULL) { 6146 (*async_callback)(async_cookie, BCM_E_MEMORY); 6147 } 6148 return; 6149 } 6150 async->next = NULL; 6151 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6HIGH_GET; 6152 async->run = bcmx_async_run; 6153 async->callback = async_callback; 6154 async->cookie = async_cookie; 6155 async->args.field_qualify_InnerSrcIp6High_get.entry = entry; 6156 async->args.field_qualify_InnerSrcIp6High_get.data = data; 6157 async->args.field_qualify_InnerSrcIp6High_get.mask = mask; 6158 bcm_async_add((bcm_async_req_t *)async); 6159 } 6160 6161 void 6162 bcmx_field_qualify_InnerSrcIp6_get_async( 6163 bcm_field_entry_t entry, 6164 bcm_ip6_t * data, 6165 bcm_ip6_t * mask, 6166 bcmx_async_cb_t async_callback, 6167 void *async_cookie) 6168 { 6169 bcmx_async_req_t *async; 6170 6171 async = sal_alloc(sizeof(*async), "bcmx_async"); 6172 if (async == NULL) { 6173 if (async_callback != NULL) { 6174 (*async_callback)(async_cookie, BCM_E_MEMORY); 6175 } 6176 return; 6177 } 6178 async->next = NULL; 6179 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6_GET; 6180 async->run = bcmx_async_run; 6181 async->callback = async_callback; 6182 async->cookie = async_cookie; 6183 async->args.field_qualify_InnerSrcIp6_get.entry = entry; 6184 async->args.field_qualify_InnerSrcIp6_get.data = data; 6185 async->args.field_qualify_InnerSrcIp6_get.mask = mask; 6186 bcm_async_add((bcm_async_req_t *)async); 6187 } 6188 6189 void 6190 bcmx_field_qualify_InnerSrcIp_get_async( 6191 bcm_field_entry_t entry, 6192 bcm_ip_t * data, 6193 bcm_ip_t * mask, 6194 bcmx_async_cb_t async_callback, 6195 void *async_cookie) 6196 { 6197 bcmx_async_req_t *async; 6198 6199 async = sal_alloc(sizeof(*async), "bcmx_async"); 6200 if (async == NULL) { 6201 if (async_callback != NULL) { 6202 (*async_callback)(async_cookie, BCM_E_MEMORY); 6203 } 6204 return; 6205 } 6206 async->next = NULL; 6207 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP_GET; 6208 async->run = bcmx_async_run; 6209 async->callback = async_callback; 6210 async->cookie = async_cookie; 6211 async->args.field_qualify_InnerSrcIp_get.entry = entry; 6212 async->args.field_qualify_InnerSrcIp_get.data = data; 6213 async->args.field_qualify_InnerSrcIp_get.mask = mask; 6214 bcm_async_add((bcm_async_req_t *)async); 6215 } 6216 6217 void 6218 bcmx_field_qualify_InnerTos_async( 6219 bcm_field_entry_t entry, 6220 uint8 data, 6221 uint8 mask, 6222 bcmx_async_cb_t async_callback, 6223 void *async_cookie) 6224 { 6225 bcmx_async_req_t *async; 6226 6227 async = sal_alloc(sizeof(*async), "bcmx_async"); 6228 if (async == NULL) { 6229 if (async_callback != NULL) { 6230 (*async_callback)(async_cookie, BCM_E_MEMORY); 6231 } 6232 return; 6233 } 6234 async->next = NULL; 6235 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTOS; 6236 async->run = bcmx_async_run; 6237 async->callback = async_callback; 6238 async->cookie = async_cookie; 6239 async->args.field_qualify_InnerTos.entry = entry; 6240 async->args.field_qualify_InnerTos.data = data; 6241 async->args.field_qualify_InnerTos.mask = mask; 6242 bcm_async_add((bcm_async_req_t *)async); 6243 } 6244 6245 void 6246 bcmx_field_qualify_InnerTos_get_async( 6247 bcm_field_entry_t entry, 6248 uint8 * data, 6249 uint8 * mask, 6250 bcmx_async_cb_t async_callback, 6251 void *async_cookie) 6252 { 6253 bcmx_async_req_t *async; 6254 6255 async = sal_alloc(sizeof(*async), "bcmx_async"); 6256 if (async == NULL) { 6257 if (async_callback != NULL) { 6258 (*async_callback)(async_cookie, BCM_E_MEMORY); 6259 } 6260 return; 6261 } 6262 async->next = NULL; 6263 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTOS_GET; 6264 async->run = bcmx_async_run; 6265 async->callback = async_callback; 6266 async->cookie = async_cookie; 6267 async->args.field_qualify_InnerTos_get.entry = entry; 6268 async->args.field_qualify_InnerTos_get.data = data; 6269 async->args.field_qualify_InnerTos_get.mask = mask; 6270 bcm_async_add((bcm_async_req_t *)async); 6271 } 6272 6273 void 6274 bcmx_field_qualify_InnerTpid_async( 6275 bcm_field_entry_t entry, 6276 uint16 tpid, 6277 bcmx_async_cb_t async_callback, 6278 void *async_cookie) 6279 { 6280 bcmx_async_req_t *async; 6281 6282 async = sal_alloc(sizeof(*async), "bcmx_async"); 6283 if (async == NULL) { 6284 if (async_callback != NULL) { 6285 (*async_callback)(async_cookie, BCM_E_MEMORY); 6286 } 6287 return; 6288 } 6289 async->next = NULL; 6290 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTPID; 6291 async->run = bcmx_async_run; 6292 async->callback = async_callback; 6293 async->cookie = async_cookie; 6294 async->args.field_qualify_InnerTpid.entry = entry; 6295 async->args.field_qualify_InnerTpid.tpid = tpid; 6296 bcm_async_add((bcm_async_req_t *)async); 6297 } 6298 6299 void 6300 bcmx_field_qualify_InnerTpid_get_async( 6301 bcm_field_entry_t entry, 6302 uint16 * tpid, 6303 bcmx_async_cb_t async_callback, 6304 void *async_cookie) 6305 { 6306 bcmx_async_req_t *async; 6307 6308 async = sal_alloc(sizeof(*async), "bcmx_async"); 6309 if (async == NULL) { 6310 if (async_callback != NULL) { 6311 (*async_callback)(async_cookie, BCM_E_MEMORY); 6312 } 6313 return; 6314 } 6315 async->next = NULL; 6316 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTPID_GET; 6317 async->run = bcmx_async_run; 6318 async->callback = async_callback; 6319 async->cookie = async_cookie; 6320 async->args.field_qualify_InnerTpid_get.entry = entry; 6321 async->args.field_qualify_InnerTpid_get.tpid = tpid; 6322 bcm_async_add((bcm_async_req_t *)async); 6323 } 6324 6325 void 6326 bcmx_field_qualify_InnerTtl_async( 6327 bcm_field_entry_t entry, 6328 uint8 data, 6329 uint8 mask, 6330 bcmx_async_cb_t async_callback, 6331 void *async_cookie) 6332 { 6333 bcmx_async_req_t *async; 6334 6335 async = sal_alloc(sizeof(*async), "bcmx_async"); 6336 if (async == NULL) { 6337 if (async_callback != NULL) { 6338 (*async_callback)(async_cookie, BCM_E_MEMORY); 6339 } 6340 return; 6341 } 6342 async->next = NULL; 6343 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTTL; 6344 async->run = bcmx_async_run; 6345 async->callback = async_callback; 6346 async->cookie = async_cookie; 6347 async->args.field_qualify_InnerTtl.entry = entry; 6348 async->args.field_qualify_InnerTtl.data = data; 6349 async->args.field_qualify_InnerTtl.mask = mask; 6350 bcm_async_add((bcm_async_req_t *)async); 6351 } 6352 6353 void 6354 bcmx_field_qualify_InnerTtl_get_async( 6355 bcm_field_entry_t entry, 6356 uint8 * data, 6357 uint8 * mask, 6358 bcmx_async_cb_t async_callback, 6359 void *async_cookie) 6360 { 6361 bcmx_async_req_t *async; 6362 6363 async = sal_alloc(sizeof(*async), "bcmx_async"); 6364 if (async == NULL) { 6365 if (async_callback != NULL) { 6366 (*async_callback)(async_cookie, BCM_E_MEMORY); 6367 } 6368 return; 6369 } 6370 async->next = NULL; 6371 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTTL_GET; 6372 async->run = bcmx_async_run; 6373 async->callback = async_callback; 6374 async->cookie = async_cookie; 6375 async->args.field_qualify_InnerTtl_get.entry = entry; 6376 async->args.field_qualify_InnerTtl_get.data = data; 6377 async->args.field_qualify_InnerTtl_get.mask = mask; 6378 bcm_async_add((bcm_async_req_t *)async); 6379 } 6380 6381 void 6382 bcmx_field_qualify_InnerVlan_async( 6383 bcm_field_entry_t entry, 6384 bcm_vlan_t data, 6385 bcm_vlan_t mask, 6386 bcmx_async_cb_t async_callback, 6387 void *async_cookie) 6388 { 6389 bcmx_async_req_t *async; 6390 6391 async = sal_alloc(sizeof(*async), "bcmx_async"); 6392 if (async == NULL) { 6393 if (async_callback != NULL) { 6394 (*async_callback)(async_cookie, BCM_E_MEMORY); 6395 } 6396 return; 6397 } 6398 async->next = NULL; 6399 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLAN; 6400 async->run = bcmx_async_run; 6401 async->callback = async_callback; 6402 async->cookie = async_cookie; 6403 async->args.field_qualify_InnerVlan.entry = entry; 6404 async->args.field_qualify_InnerVlan.data = data; 6405 async->args.field_qualify_InnerVlan.mask = mask; 6406 bcm_async_add((bcm_async_req_t *)async); 6407 } 6408 6409 void 6410 bcmx_field_qualify_InnerVlanCfi_async( 6411 bcm_field_entry_t entry, 6412 uint8 data, 6413 uint8 mask, 6414 bcmx_async_cb_t async_callback, 6415 void *async_cookie) 6416 { 6417 bcmx_async_req_t *async; 6418 6419 async = sal_alloc(sizeof(*async), "bcmx_async"); 6420 if (async == NULL) { 6421 if (async_callback != NULL) { 6422 (*async_callback)(async_cookie, BCM_E_MEMORY); 6423 } 6424 return; 6425 } 6426 async->next = NULL; 6427 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANCFI; 6428 async->run = bcmx_async_run; 6429 async->callback = async_callback; 6430 async->cookie = async_cookie; 6431 async->args.field_qualify_InnerVlanCfi.entry = entry; 6432 async->args.field_qualify_InnerVlanCfi.data = data; 6433 async->args.field_qualify_InnerVlanCfi.mask = mask; 6434 bcm_async_add((bcm_async_req_t *)async); 6435 } 6436 6437 void 6438 bcmx_field_qualify_InnerVlanCfi_get_async( 6439 bcm_field_entry_t entry, 6440 uint8 * data, 6441 uint8 * mask, 6442 bcmx_async_cb_t async_callback, 6443 void *async_cookie) 6444 { 6445 bcmx_async_req_t *async; 6446 6447 async = sal_alloc(sizeof(*async), "bcmx_async"); 6448 if (async == NULL) { 6449 if (async_callback != NULL) { 6450 (*async_callback)(async_cookie, BCM_E_MEMORY); 6451 } 6452 return; 6453 } 6454 async->next = NULL; 6455 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANCFI_GET; 6456 async->run = bcmx_async_run; 6457 async->callback = async_callback; 6458 async->cookie = async_cookie; 6459 async->args.field_qualify_InnerVlanCfi_get.entry = entry; 6460 async->args.field_qualify_InnerVlanCfi_get.data = data; 6461 async->args.field_qualify_InnerVlanCfi_get.mask = mask; 6462 bcm_async_add((bcm_async_req_t *)async); 6463 } 6464 6465 void 6466 bcmx_field_qualify_InnerVlanId_async( 6467 bcm_field_entry_t entry, 6468 bcm_vlan_t data, 6469 bcm_vlan_t mask, 6470 bcmx_async_cb_t async_callback, 6471 void *async_cookie) 6472 { 6473 bcmx_async_req_t *async; 6474 6475 async = sal_alloc(sizeof(*async), "bcmx_async"); 6476 if (async == NULL) { 6477 if (async_callback != NULL) { 6478 (*async_callback)(async_cookie, BCM_E_MEMORY); 6479 } 6480 return; 6481 } 6482 async->next = NULL; 6483 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANID; 6484 async->run = bcmx_async_run; 6485 async->callback = async_callback; 6486 async->cookie = async_cookie; 6487 async->args.field_qualify_InnerVlanId.entry = entry; 6488 async->args.field_qualify_InnerVlanId.data = data; 6489 async->args.field_qualify_InnerVlanId.mask = mask; 6490 bcm_async_add((bcm_async_req_t *)async); 6491 } 6492 6493 void 6494 bcmx_field_qualify_InnerVlanId_get_async( 6495 bcm_field_entry_t entry, 6496 bcm_vlan_t * data, 6497 bcm_vlan_t * mask, 6498 bcmx_async_cb_t async_callback, 6499 void *async_cookie) 6500 { 6501 bcmx_async_req_t *async; 6502 6503 async = sal_alloc(sizeof(*async), "bcmx_async"); 6504 if (async == NULL) { 6505 if (async_callback != NULL) { 6506 (*async_callback)(async_cookie, BCM_E_MEMORY); 6507 } 6508 return; 6509 } 6510 async->next = NULL; 6511 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANID_GET; 6512 async->run = bcmx_async_run; 6513 async->callback = async_callback; 6514 async->cookie = async_cookie; 6515 async->args.field_qualify_InnerVlanId_get.entry = entry; 6516 async->args.field_qualify_InnerVlanId_get.data = data; 6517 async->args.field_qualify_InnerVlanId_get.mask = mask; 6518 bcm_async_add((bcm_async_req_t *)async); 6519 } 6520 6521 void 6522 bcmx_field_qualify_InnerVlanPri_async( 6523 bcm_field_entry_t entry, 6524 uint8 data, 6525 uint8 mask, 6526 bcmx_async_cb_t async_callback, 6527 void *async_cookie) 6528 { 6529 bcmx_async_req_t *async; 6530 6531 async = sal_alloc(sizeof(*async), "bcmx_async"); 6532 if (async == NULL) { 6533 if (async_callback != NULL) { 6534 (*async_callback)(async_cookie, BCM_E_MEMORY); 6535 } 6536 return; 6537 } 6538 async->next = NULL; 6539 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANPRI; 6540 async->run = bcmx_async_run; 6541 async->callback = async_callback; 6542 async->cookie = async_cookie; 6543 async->args.field_qualify_InnerVlanPri.entry = entry; 6544 async->args.field_qualify_InnerVlanPri.data = data; 6545 async->args.field_qualify_InnerVlanPri.mask = mask; 6546 bcm_async_add((bcm_async_req_t *)async); 6547 } 6548 6549 void 6550 bcmx_field_qualify_InnerVlanPri_get_async( 6551 bcm_field_entry_t entry, 6552 uint8 * data, 6553 uint8 * mask, 6554 bcmx_async_cb_t async_callback, 6555 void *async_cookie) 6556 { 6557 bcmx_async_req_t *async; 6558 6559 async = sal_alloc(sizeof(*async), "bcmx_async"); 6560 if (async == NULL) { 6561 if (async_callback != NULL) { 6562 (*async_callback)(async_cookie, BCM_E_MEMORY); 6563 } 6564 return; 6565 } 6566 async->next = NULL; 6567 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANPRI_GET; 6568 async->run = bcmx_async_run; 6569 async->callback = async_callback; 6570 async->cookie = async_cookie; 6571 async->args.field_qualify_InnerVlanPri_get.entry = entry; 6572 async->args.field_qualify_InnerVlanPri_get.data = data; 6573 async->args.field_qualify_InnerVlanPri_get.mask = mask; 6574 bcm_async_add((bcm_async_req_t *)async); 6575 } 6576 6577 void 6578 bcmx_field_qualify_InnerVlan_get_async( 6579 bcm_field_entry_t entry, 6580 bcm_vlan_t * data, 6581 bcm_vlan_t * mask, 6582 bcmx_async_cb_t async_callback, 6583 void *async_cookie) 6584 { 6585 bcmx_async_req_t *async; 6586 6587 async = sal_alloc(sizeof(*async), "bcmx_async"); 6588 if (async == NULL) { 6589 if (async_callback != NULL) { 6590 (*async_callback)(async_cookie, BCM_E_MEMORY); 6591 } 6592 return; 6593 } 6594 async->next = NULL; 6595 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLAN_GET; 6596 async->run = bcmx_async_run; 6597 async->callback = async_callback; 6598 async->cookie = async_cookie; 6599 async->args.field_qualify_InnerVlan_get.entry = entry; 6600 async->args.field_qualify_InnerVlan_get.data = data; 6601 async->args.field_qualify_InnerVlan_get.mask = mask; 6602 bcm_async_add((bcm_async_req_t *)async); 6603 } 6604 6605 void 6606 bcmx_field_qualify_IntPriority_async( 6607 bcm_field_entry_t entry, 6608 uint8 data, 6609 uint8 mask, 6610 bcmx_async_cb_t async_callback, 6611 void *async_cookie) 6612 { 6613 bcmx_async_req_t *async; 6614 6615 async = sal_alloc(sizeof(*async), "bcmx_async"); 6616 if (async == NULL) { 6617 if (async_callback != NULL) { 6618 (*async_callback)(async_cookie, BCM_E_MEMORY); 6619 } 6620 return; 6621 } 6622 async->next = NULL; 6623 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTPRIORITY; 6624 async->run = bcmx_async_run; 6625 async->callback = async_callback; 6626 async->cookie = async_cookie; 6627 async->args.field_qualify_IntPriority.entry = entry; 6628 async->args.field_qualify_IntPriority.data = data; 6629 async->args.field_qualify_IntPriority.mask = mask; 6630 bcm_async_add((bcm_async_req_t *)async); 6631 } 6632 6633 void 6634 bcmx_field_qualify_IntPriority_get_async( 6635 bcm_field_entry_t entry, 6636 uint8 * data, 6637 uint8 * mask, 6638 bcmx_async_cb_t async_callback, 6639 void *async_cookie) 6640 { 6641 bcmx_async_req_t *async; 6642 6643 async = sal_alloc(sizeof(*async), "bcmx_async"); 6644 if (async == NULL) { 6645 if (async_callback != NULL) { 6646 (*async_callback)(async_cookie, BCM_E_MEMORY); 6647 } 6648 return; 6649 } 6650 async->next = NULL; 6651 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTPRIORITY_GET; 6652 async->run = bcmx_async_run; 6653 async->callback = async_callback; 6654 async->cookie = async_cookie; 6655 async->args.field_qualify_IntPriority_get.entry = entry; 6656 async->args.field_qualify_IntPriority_get.data = data; 6657 async->args.field_qualify_IntPriority_get.mask = mask; 6658 bcm_async_add((bcm_async_req_t *)async); 6659 } 6660 6661 void 6662 bcmx_field_qualify_InterfaceClassL2_async( 6663 bcm_field_entry_t entry, 6664 uint32 data, 6665 uint32 mask, 6666 bcmx_async_cb_t async_callback, 6667 void *async_cookie) 6668 { 6669 bcmx_async_req_t *async; 6670 6671 async = sal_alloc(sizeof(*async), "bcmx_async"); 6672 if (async == NULL) { 6673 if (async_callback != NULL) { 6674 (*async_callback)(async_cookie, BCM_E_MEMORY); 6675 } 6676 return; 6677 } 6678 async->next = NULL; 6679 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL2; 6680 async->run = bcmx_async_run; 6681 async->callback = async_callback; 6682 async->cookie = async_cookie; 6683 async->args.field_qualify_InterfaceClassL2.entry = entry; 6684 async->args.field_qualify_InterfaceClassL2.data = data; 6685 async->args.field_qualify_InterfaceClassL2.mask = mask; 6686 bcm_async_add((bcm_async_req_t *)async); 6687 } 6688 6689 void 6690 bcmx_field_qualify_InterfaceClassL2_get_async( 6691 bcm_field_entry_t entry, 6692 uint32 * data, 6693 uint32 * mask, 6694 bcmx_async_cb_t async_callback, 6695 void *async_cookie) 6696 { 6697 bcmx_async_req_t *async; 6698 6699 async = sal_alloc(sizeof(*async), "bcmx_async"); 6700 if (async == NULL) { 6701 if (async_callback != NULL) { 6702 (*async_callback)(async_cookie, BCM_E_MEMORY); 6703 } 6704 return; 6705 } 6706 async->next = NULL; 6707 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL2_GET; 6708 async->run = bcmx_async_run; 6709 async->callback = async_callback; 6710 async->cookie = async_cookie; 6711 async->args.field_qualify_InterfaceClassL2_get.entry = entry; 6712 async->args.field_qualify_InterfaceClassL2_get.data = data; 6713 async->args.field_qualify_InterfaceClassL2_get.mask = mask; 6714 bcm_async_add((bcm_async_req_t *)async); 6715 } 6716 6717 void 6718 bcmx_field_qualify_InterfaceClassL3_async( 6719 bcm_field_entry_t entry, 6720 uint32 data, 6721 uint32 mask, 6722 bcmx_async_cb_t async_callback, 6723 void *async_cookie) 6724 { 6725 bcmx_async_req_t *async; 6726 6727 async = sal_alloc(sizeof(*async), "bcmx_async"); 6728 if (async == NULL) { 6729 if (async_callback != NULL) { 6730 (*async_callback)(async_cookie, BCM_E_MEMORY); 6731 } 6732 return; 6733 } 6734 async->next = NULL; 6735 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL3; 6736 async->run = bcmx_async_run; 6737 async->callback = async_callback; 6738 async->cookie = async_cookie; 6739 async->args.field_qualify_InterfaceClassL3.entry = entry; 6740 async->args.field_qualify_InterfaceClassL3.data = data; 6741 async->args.field_qualify_InterfaceClassL3.mask = mask; 6742 bcm_async_add((bcm_async_req_t *)async); 6743 } 6744 6745 void 6746 bcmx_field_qualify_InterfaceClassL3_get_async( 6747 bcm_field_entry_t entry, 6748 uint32 * data, 6749 uint32 * mask, 6750 bcmx_async_cb_t async_callback, 6751 void *async_cookie) 6752 { 6753 bcmx_async_req_t *async; 6754 6755 async = sal_alloc(sizeof(*async), "bcmx_async"); 6756 if (async == NULL) { 6757 if (async_callback != NULL) { 6758 (*async_callback)(async_cookie, BCM_E_MEMORY); 6759 } 6760 return; 6761 } 6762 async->next = NULL; 6763 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL3_GET; 6764 async->run = bcmx_async_run; 6765 async->callback = async_callback; 6766 async->cookie = async_cookie; 6767 async->args.field_qualify_InterfaceClassL3_get.entry = entry; 6768 async->args.field_qualify_InterfaceClassL3_get.data = data; 6769 async->args.field_qualify_InterfaceClassL3_get.mask = mask; 6770 bcm_async_add((bcm_async_req_t *)async); 6771 } 6772 6773 void 6774 bcmx_field_qualify_InterfaceClassPort_async( 6775 bcm_field_entry_t entry, 6776 uint32 data, 6777 uint32 mask, 6778 bcmx_async_cb_t async_callback, 6779 void *async_cookie) 6780 { 6781 bcmx_async_req_t *async; 6782 6783 async = sal_alloc(sizeof(*async), "bcmx_async"); 6784 if (async == NULL) { 6785 if (async_callback != NULL) { 6786 (*async_callback)(async_cookie, BCM_E_MEMORY); 6787 } 6788 return; 6789 } 6790 async->next = NULL; 6791 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSPORT; 6792 async->run = bcmx_async_run; 6793 async->callback = async_callback; 6794 async->cookie = async_cookie; 6795 async->args.field_qualify_InterfaceClassPort.entry = entry; 6796 async->args.field_qualify_InterfaceClassPort.data = data; 6797 async->args.field_qualify_InterfaceClassPort.mask = mask; 6798 bcm_async_add((bcm_async_req_t *)async); 6799 } 6800 6801 void 6802 bcmx_field_qualify_InterfaceClassPort_get_async( 6803 bcm_field_entry_t entry, 6804 uint32 * data, 6805 uint32 * mask, 6806 bcmx_async_cb_t async_callback, 6807 void *async_cookie) 6808 { 6809 bcmx_async_req_t *async; 6810 6811 async = sal_alloc(sizeof(*async), "bcmx_async"); 6812 if (async == NULL) { 6813 if (async_callback != NULL) { 6814 (*async_callback)(async_cookie, BCM_E_MEMORY); 6815 } 6816 return; 6817 } 6818 async->next = NULL; 6819 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSPORT_GET; 6820 async->run = bcmx_async_run; 6821 async->callback = async_callback; 6822 async->cookie = async_cookie; 6823 async->args.field_qualify_InterfaceClassPort_get.entry = entry; 6824 async->args.field_qualify_InterfaceClassPort_get.data = data; 6825 async->args.field_qualify_InterfaceClassPort_get.mask = mask; 6826 bcm_async_add((bcm_async_req_t *)async); 6827 } 6828 6829 void 6830 bcmx_field_qualify_Ip6FlowLabel_async( 6831 bcm_field_entry_t entry, 6832 uint32 data, 6833 uint32 mask, 6834 bcmx_async_cb_t async_callback, 6835 void *async_cookie) 6836 { 6837 bcmx_async_req_t *async; 6838 6839 async = sal_alloc(sizeof(*async), "bcmx_async"); 6840 if (async == NULL) { 6841 if (async_callback != NULL) { 6842 (*async_callback)(async_cookie, BCM_E_MEMORY); 6843 } 6844 return; 6845 } 6846 async->next = NULL; 6847 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6FLOWLABEL; 6848 async->run = bcmx_async_run; 6849 async->callback = async_callback; 6850 async->cookie = async_cookie; 6851 async->args.field_qualify_Ip6FlowLabel.entry = entry; 6852 async->args.field_qualify_Ip6FlowLabel.data = data; 6853 async->args.field_qualify_Ip6FlowLabel.mask = mask; 6854 bcm_async_add((bcm_async_req_t *)async); 6855 } 6856 6857 void 6858 bcmx_field_qualify_Ip6FlowLabel_get_async( 6859 bcm_field_entry_t entry, 6860 uint32 * data, 6861 uint32 * mask, 6862 bcmx_async_cb_t async_callback, 6863 void *async_cookie) 6864 { 6865 bcmx_async_req_t *async; 6866 6867 async = sal_alloc(sizeof(*async), "bcmx_async"); 6868 if (async == NULL) { 6869 if (async_callback != NULL) { 6870 (*async_callback)(async_cookie, BCM_E_MEMORY); 6871 } 6872 return; 6873 } 6874 async->next = NULL; 6875 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6FLOWLABEL_GET; 6876 async->run = bcmx_async_run; 6877 async->callback = async_callback; 6878 async->cookie = async_cookie; 6879 async->args.field_qualify_Ip6FlowLabel_get.entry = entry; 6880 async->args.field_qualify_Ip6FlowLabel_get.data = data; 6881 async->args.field_qualify_Ip6FlowLabel_get.mask = mask; 6882 bcm_async_add((bcm_async_req_t *)async); 6883 } 6884 6885 void 6886 bcmx_field_qualify_Ip6HopLimit_async( 6887 bcm_field_entry_t entry, 6888 uint8 data, 6889 uint8 mask, 6890 bcmx_async_cb_t async_callback, 6891 void *async_cookie) 6892 { 6893 bcmx_async_req_t *async; 6894 6895 async = sal_alloc(sizeof(*async), "bcmx_async"); 6896 if (async == NULL) { 6897 if (async_callback != NULL) { 6898 (*async_callback)(async_cookie, BCM_E_MEMORY); 6899 } 6900 return; 6901 } 6902 async->next = NULL; 6903 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6HOPLIMIT; 6904 async->run = bcmx_async_run; 6905 async->callback = async_callback; 6906 async->cookie = async_cookie; 6907 async->args.field_qualify_Ip6HopLimit.entry = entry; 6908 async->args.field_qualify_Ip6HopLimit.data = data; 6909 async->args.field_qualify_Ip6HopLimit.mask = mask; 6910 bcm_async_add((bcm_async_req_t *)async); 6911 } 6912 6913 void 6914 bcmx_field_qualify_Ip6HopLimit_get_async( 6915 bcm_field_entry_t entry, 6916 uint8 * data, 6917 uint8 * mask, 6918 bcmx_async_cb_t async_callback, 6919 void *async_cookie) 6920 { 6921 bcmx_async_req_t *async; 6922 6923 async = sal_alloc(sizeof(*async), "bcmx_async"); 6924 if (async == NULL) { 6925 if (async_callback != NULL) { 6926 (*async_callback)(async_cookie, BCM_E_MEMORY); 6927 } 6928 return; 6929 } 6930 async->next = NULL; 6931 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6HOPLIMIT_GET; 6932 async->run = bcmx_async_run; 6933 async->callback = async_callback; 6934 async->cookie = async_cookie; 6935 async->args.field_qualify_Ip6HopLimit_get.entry = entry; 6936 async->args.field_qualify_Ip6HopLimit_get.data = data; 6937 async->args.field_qualify_Ip6HopLimit_get.mask = mask; 6938 bcm_async_add((bcm_async_req_t *)async); 6939 } 6940 6941 void 6942 bcmx_field_qualify_Ip6NextHeader_async( 6943 bcm_field_entry_t entry, 6944 uint8 data, 6945 uint8 mask, 6946 bcmx_async_cb_t async_callback, 6947 void *async_cookie) 6948 { 6949 bcmx_async_req_t *async; 6950 6951 async = sal_alloc(sizeof(*async), "bcmx_async"); 6952 if (async == NULL) { 6953 if (async_callback != NULL) { 6954 (*async_callback)(async_cookie, BCM_E_MEMORY); 6955 } 6956 return; 6957 } 6958 async->next = NULL; 6959 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6NEXTHEADER; 6960 async->run = bcmx_async_run; 6961 async->callback = async_callback; 6962 async->cookie = async_cookie; 6963 async->args.field_qualify_Ip6NextHeader.entry = entry; 6964 async->args.field_qualify_Ip6NextHeader.data = data; 6965 async->args.field_qualify_Ip6NextHeader.mask = mask; 6966 bcm_async_add((bcm_async_req_t *)async); 6967 } 6968 6969 void 6970 bcmx_field_qualify_Ip6NextHeader_get_async( 6971 bcm_field_entry_t entry, 6972 uint8 * data, 6973 uint8 * mask, 6974 bcmx_async_cb_t async_callback, 6975 void *async_cookie) 6976 { 6977 bcmx_async_req_t *async; 6978 6979 async = sal_alloc(sizeof(*async), "bcmx_async"); 6980 if (async == NULL) { 6981 if (async_callback != NULL) { 6982 (*async_callback)(async_cookie, BCM_E_MEMORY); 6983 } 6984 return; 6985 } 6986 async->next = NULL; 6987 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6NEXTHEADER_GET; 6988 async->run = bcmx_async_run; 6989 async->callback = async_callback; 6990 async->cookie = async_cookie; 6991 async->args.field_qualify_Ip6NextHeader_get.entry = entry; 6992 async->args.field_qualify_Ip6NextHeader_get.data = data; 6993 async->args.field_qualify_Ip6NextHeader_get.mask = mask; 6994 bcm_async_add((bcm_async_req_t *)async); 6995 } 6996 6997 void 6998 bcmx_field_qualify_Ip6TrafficClass_async( 6999 bcm_field_entry_t entry, 7000 uint8 data, 7001 uint8 mask, 7002 bcmx_async_cb_t async_callback, 7003 void *async_cookie) 7004 { 7005 bcmx_async_req_t *async; 7006 7007 async = sal_alloc(sizeof(*async), "bcmx_async"); 7008 if (async == NULL) { 7009 if (async_callback != NULL) { 7010 (*async_callback)(async_cookie, BCM_E_MEMORY); 7011 } 7012 return; 7013 } 7014 async->next = NULL; 7015 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6TRAFFICCLASS; 7016 async->run = bcmx_async_run; 7017 async->callback = async_callback; 7018 async->cookie = async_cookie; 7019 async->args.field_qualify_Ip6TrafficClass.entry = entry; 7020 async->args.field_qualify_Ip6TrafficClass.data = data; 7021 async->args.field_qualify_Ip6TrafficClass.mask = mask; 7022 bcm_async_add((bcm_async_req_t *)async); 7023 } 7024 7025 void 7026 bcmx_field_qualify_Ip6TrafficClass_get_async( 7027 bcm_field_entry_t entry, 7028 uint8 * data, 7029 uint8 * mask, 7030 bcmx_async_cb_t async_callback, 7031 void *async_cookie) 7032 { 7033 bcmx_async_req_t *async; 7034 7035 async = sal_alloc(sizeof(*async), "bcmx_async"); 7036 if (async == NULL) { 7037 if (async_callback != NULL) { 7038 (*async_callback)(async_cookie, BCM_E_MEMORY); 7039 } 7040 return; 7041 } 7042 async->next = NULL; 7043 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6TRAFFICCLASS_GET; 7044 async->run = bcmx_async_run; 7045 async->callback = async_callback; 7046 async->cookie = async_cookie; 7047 async->args.field_qualify_Ip6TrafficClass_get.entry = entry; 7048 async->args.field_qualify_Ip6TrafficClass_get.data = data; 7049 async->args.field_qualify_Ip6TrafficClass_get.mask = mask; 7050 bcm_async_add((bcm_async_req_t *)async); 7051 } 7052 7053 void 7054 bcmx_field_qualify_IpFlags_async( 7055 bcm_field_entry_t entry, 7056 uint8 data, 7057 uint8 mask, 7058 bcmx_async_cb_t async_callback, 7059 void *async_cookie) 7060 { 7061 bcmx_async_req_t *async; 7062 7063 async = sal_alloc(sizeof(*async), "bcmx_async"); 7064 if (async == NULL) { 7065 if (async_callback != NULL) { 7066 (*async_callback)(async_cookie, BCM_E_MEMORY); 7067 } 7068 return; 7069 } 7070 async->next = NULL; 7071 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFLAGS; 7072 async->run = bcmx_async_run; 7073 async->callback = async_callback; 7074 async->cookie = async_cookie; 7075 async->args.field_qualify_IpFlags.entry = entry; 7076 async->args.field_qualify_IpFlags.data = data; 7077 async->args.field_qualify_IpFlags.mask = mask; 7078 bcm_async_add((bcm_async_req_t *)async); 7079 } 7080 7081 void 7082 bcmx_field_qualify_IpFlags_get_async( 7083 bcm_field_entry_t entry, 7084 uint8 * data, 7085 uint8 * mask, 7086 bcmx_async_cb_t async_callback, 7087 void *async_cookie) 7088 { 7089 bcmx_async_req_t *async; 7090 7091 async = sal_alloc(sizeof(*async), "bcmx_async"); 7092 if (async == NULL) { 7093 if (async_callback != NULL) { 7094 (*async_callback)(async_cookie, BCM_E_MEMORY); 7095 } 7096 return; 7097 } 7098 async->next = NULL; 7099 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFLAGS_GET; 7100 async->run = bcmx_async_run; 7101 async->callback = async_callback; 7102 async->cookie = async_cookie; 7103 async->args.field_qualify_IpFlags_get.entry = entry; 7104 async->args.field_qualify_IpFlags_get.data = data; 7105 async->args.field_qualify_IpFlags_get.mask = mask; 7106 bcm_async_add((bcm_async_req_t *)async); 7107 } 7108 7109 void 7110 bcmx_field_qualify_IpFrag_async( 7111 bcm_field_entry_t entry, 7112 bcm_field_IpFrag_t frag_info, 7113 bcmx_async_cb_t async_callback, 7114 void *async_cookie) 7115 { 7116 bcmx_async_req_t *async; 7117 7118 async = sal_alloc(sizeof(*async), "bcmx_async"); 7119 if (async == NULL) { 7120 if (async_callback != NULL) { 7121 (*async_callback)(async_cookie, BCM_E_MEMORY); 7122 } 7123 return; 7124 } 7125 async->next = NULL; 7126 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFRAG; 7127 async->run = bcmx_async_run; 7128 async->callback = async_callback; 7129 async->cookie = async_cookie; 7130 async->args.field_qualify_IpFrag.entry = entry; 7131 async->args.field_qualify_IpFrag.frag_info = frag_info; 7132 bcm_async_add((bcm_async_req_t *)async); 7133 } 7134 7135 void 7136 bcmx_field_qualify_IpFrag_get_async( 7137 bcm_field_entry_t entry, 7138 bcm_field_IpFrag_t * frag_info, 7139 bcmx_async_cb_t async_callback, 7140 void *async_cookie) 7141 { 7142 bcmx_async_req_t *async; 7143 7144 async = sal_alloc(sizeof(*async), "bcmx_async"); 7145 if (async == NULL) { 7146 if (async_callback != NULL) { 7147 (*async_callback)(async_cookie, BCM_E_MEMORY); 7148 } 7149 return; 7150 } 7151 async->next = NULL; 7152 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFRAG_GET; 7153 async->run = bcmx_async_run; 7154 async->callback = async_callback; 7155 async->cookie = async_cookie; 7156 async->args.field_qualify_IpFrag_get.entry = entry; 7157 async->args.field_qualify_IpFrag_get.frag_info = frag_info; 7158 bcm_async_add((bcm_async_req_t *)async); 7159 } 7160 7161 void 7162 bcmx_field_qualify_IpInfo_async( 7163 bcm_field_entry_t entry, 7164 uint32 data, 7165 uint32 mask, 7166 bcmx_async_cb_t async_callback, 7167 void *async_cookie) 7168 { 7169 bcmx_async_req_t *async; 7170 7171 async = sal_alloc(sizeof(*async), "bcmx_async"); 7172 if (async == NULL) { 7173 if (async_callback != NULL) { 7174 (*async_callback)(async_cookie, BCM_E_MEMORY); 7175 } 7176 return; 7177 } 7178 async->next = NULL; 7179 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPINFO; 7180 async->run = bcmx_async_run; 7181 async->callback = async_callback; 7182 async->cookie = async_cookie; 7183 async->args.field_qualify_IpInfo.entry = entry; 7184 async->args.field_qualify_IpInfo.data = data; 7185 async->args.field_qualify_IpInfo.mask = mask; 7186 bcm_async_add((bcm_async_req_t *)async); 7187 } 7188 7189 void 7190 bcmx_field_qualify_IpInfo_get_async( 7191 bcm_field_entry_t entry, 7192 uint32 * data, 7193 uint32 * mask, 7194 bcmx_async_cb_t async_callback, 7195 void *async_cookie) 7196 { 7197 bcmx_async_req_t *async; 7198 7199 async = sal_alloc(sizeof(*async), "bcmx_async"); 7200 if (async == NULL) { 7201 if (async_callback != NULL) { 7202 (*async_callback)(async_cookie, BCM_E_MEMORY); 7203 } 7204 return; 7205 } 7206 async->next = NULL; 7207 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPINFO_GET; 7208 async->run = bcmx_async_run; 7209 async->callback = async_callback; 7210 async->cookie = async_cookie; 7211 async->args.field_qualify_IpInfo_get.entry = entry; 7212 async->args.field_qualify_IpInfo_get.data = data; 7213 async->args.field_qualify_IpInfo_get.mask = mask; 7214 bcm_async_add((bcm_async_req_t *)async); 7215 } 7216 7217 void 7218 bcmx_field_qualify_IpProtocol_async( 7219 bcm_field_entry_t entry, 7220 uint8 data, 7221 uint8 mask, 7222 bcmx_async_cb_t async_callback, 7223 void *async_cookie) 7224 { 7225 bcmx_async_req_t *async; 7226 7227 async = sal_alloc(sizeof(*async), "bcmx_async"); 7228 if (async == NULL) { 7229 if (async_callback != NULL) { 7230 (*async_callback)(async_cookie, BCM_E_MEMORY); 7231 } 7232 return; 7233 } 7234 async->next = NULL; 7235 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOL; 7236 async->run = bcmx_async_run; 7237 async->callback = async_callback; 7238 async->cookie = async_cookie; 7239 async->args.field_qualify_IpProtocol.entry = entry; 7240 async->args.field_qualify_IpProtocol.data = data; 7241 async->args.field_qualify_IpProtocol.mask = mask; 7242 bcm_async_add((bcm_async_req_t *)async); 7243 } 7244 7245 void 7246 bcmx_field_qualify_IpProtocolCommon_async( 7247 bcm_field_entry_t entry, 7248 bcm_field_IpProtocolCommon_t protocol, 7249 bcmx_async_cb_t async_callback, 7250 void *async_cookie) 7251 { 7252 bcmx_async_req_t *async; 7253 7254 async = sal_alloc(sizeof(*async), "bcmx_async"); 7255 if (async == NULL) { 7256 if (async_callback != NULL) { 7257 (*async_callback)(async_cookie, BCM_E_MEMORY); 7258 } 7259 return; 7260 } 7261 async->next = NULL; 7262 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOLCOMMON; 7263 async->run = bcmx_async_run; 7264 async->callback = async_callback; 7265 async->cookie = async_cookie; 7266 async->args.field_qualify_IpProtocolCommon.entry = entry; 7267 async->args.field_qualify_IpProtocolCommon.protocol = protocol; 7268 bcm_async_add((bcm_async_req_t *)async); 7269 } 7270 7271 void 7272 bcmx_field_qualify_IpProtocolCommon_get_async( 7273 bcm_field_entry_t entry, 7274 bcm_field_IpProtocolCommon_t * protocol, 7275 bcmx_async_cb_t async_callback, 7276 void *async_cookie) 7277 { 7278 bcmx_async_req_t *async; 7279 7280 async = sal_alloc(sizeof(*async), "bcmx_async"); 7281 if (async == NULL) { 7282 if (async_callback != NULL) { 7283 (*async_callback)(async_cookie, BCM_E_MEMORY); 7284 } 7285 return; 7286 } 7287 async->next = NULL; 7288 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOLCOMMON_GET; 7289 async->run = bcmx_async_run; 7290 async->callback = async_callback; 7291 async->cookie = async_cookie; 7292 async->args.field_qualify_IpProtocolCommon_get.entry = entry; 7293 async->args.field_qualify_IpProtocolCommon_get.protocol = protocol; 7294 bcm_async_add((bcm_async_req_t *)async); 7295 } 7296 7297 void 7298 bcmx_field_qualify_IpProtocol_get_async( 7299 bcm_field_entry_t entry, 7300 uint8 * data, 7301 uint8 * mask, 7302 bcmx_async_cb_t async_callback, 7303 void *async_cookie) 7304 { 7305 bcmx_async_req_t *async; 7306 7307 async = sal_alloc(sizeof(*async), "bcmx_async"); 7308 if (async == NULL) { 7309 if (async_callback != NULL) { 7310 (*async_callback)(async_cookie, BCM_E_MEMORY); 7311 } 7312 return; 7313 } 7314 async->next = NULL; 7315 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOL_GET; 7316 async->run = bcmx_async_run; 7317 async->callback = async_callback; 7318 async->cookie = async_cookie; 7319 async->args.field_qualify_IpProtocol_get.entry = entry; 7320 async->args.field_qualify_IpProtocol_get.data = data; 7321 async->args.field_qualify_IpProtocol_get.mask = mask; 7322 bcm_async_add((bcm_async_req_t *)async); 7323 } 7324 7325 void 7326 bcmx_field_qualify_IpType_async( 7327 bcm_field_entry_t entry, 7328 bcm_field_IpType_t type, 7329 bcmx_async_cb_t async_callback, 7330 void *async_cookie) 7331 { 7332 bcmx_async_req_t *async; 7333 7334 async = sal_alloc(sizeof(*async), "bcmx_async"); 7335 if (async == NULL) { 7336 if (async_callback != NULL) { 7337 (*async_callback)(async_cookie, BCM_E_MEMORY); 7338 } 7339 return; 7340 } 7341 async->next = NULL; 7342 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPTYPE; 7343 async->run = bcmx_async_run; 7344 async->callback = async_callback; 7345 async->cookie = async_cookie; 7346 async->args.field_qualify_IpType.entry = entry; 7347 async->args.field_qualify_IpType.type = type; 7348 bcm_async_add((bcm_async_req_t *)async); 7349 } 7350 7351 void 7352 bcmx_field_qualify_IpType_get_async( 7353 bcm_field_entry_t entry, 7354 bcm_field_IpType_t * type, 7355 bcmx_async_cb_t async_callback, 7356 void *async_cookie) 7357 { 7358 bcmx_async_req_t *async; 7359 7360 async = sal_alloc(sizeof(*async), "bcmx_async"); 7361 if (async == NULL) { 7362 if (async_callback != NULL) { 7363 (*async_callback)(async_cookie, BCM_E_MEMORY); 7364 } 7365 return; 7366 } 7367 async->next = NULL; 7368 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPTYPE_GET; 7369 async->run = bcmx_async_run; 7370 async->callback = async_callback; 7371 async->cookie = async_cookie; 7372 async->args.field_qualify_IpType_get.entry = entry; 7373 async->args.field_qualify_IpType_get.type = type; 7374 bcm_async_add((bcm_async_req_t *)async); 7375 } 7376 7377 void 7378 bcmx_field_qualify_IpmcStarGroupHit_async( 7379 bcm_field_entry_t entry, 7380 uint8 data, 7381 uint8 mask, 7382 bcmx_async_cb_t async_callback, 7383 void *async_cookie) 7384 { 7385 bcmx_async_req_t *async; 7386 7387 async = sal_alloc(sizeof(*async), "bcmx_async"); 7388 if (async == NULL) { 7389 if (async_callback != NULL) { 7390 (*async_callback)(async_cookie, BCM_E_MEMORY); 7391 } 7392 return; 7393 } 7394 async->next = NULL; 7395 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPMCSTARGROUPHIT; 7396 async->run = bcmx_async_run; 7397 async->callback = async_callback; 7398 async->cookie = async_cookie; 7399 async->args.field_qualify_IpmcStarGroupHit.entry = entry; 7400 async->args.field_qualify_IpmcStarGroupHit.data = data; 7401 async->args.field_qualify_IpmcStarGroupHit.mask = mask; 7402 bcm_async_add((bcm_async_req_t *)async); 7403 } 7404 7405 void 7406 bcmx_field_qualify_IpmcStarGroupHit_get_async( 7407 bcm_field_entry_t entry, 7408 uint8 * data, 7409 uint8 * mask, 7410 bcmx_async_cb_t async_callback, 7411 void *async_cookie) 7412 { 7413 bcmx_async_req_t *async; 7414 7415 async = sal_alloc(sizeof(*async), "bcmx_async"); 7416 if (async == NULL) { 7417 if (async_callback != NULL) { 7418 (*async_callback)(async_cookie, BCM_E_MEMORY); 7419 } 7420 return; 7421 } 7422 async->next = NULL; 7423 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPMCSTARGROUPHIT_GET; 7424 async->run = bcmx_async_run; 7425 async->callback = async_callback; 7426 async->cookie = async_cookie; 7427 async->args.field_qualify_IpmcStarGroupHit_get.entry = entry; 7428 async->args.field_qualify_IpmcStarGroupHit_get.data = data; 7429 async->args.field_qualify_IpmcStarGroupHit_get.mask = mask; 7430 bcm_async_add((bcm_async_req_t *)async); 7431 } 7432 7433 void 7434 bcmx_field_qualify_L2CacheHit_async( 7435 bcm_field_entry_t entry, 7436 uint8 data, 7437 uint8 mask, 7438 bcmx_async_cb_t async_callback, 7439 void *async_cookie) 7440 { 7441 bcmx_async_req_t *async; 7442 7443 async = sal_alloc(sizeof(*async), "bcmx_async"); 7444 if (async == NULL) { 7445 if (async_callback != NULL) { 7446 (*async_callback)(async_cookie, BCM_E_MEMORY); 7447 } 7448 return; 7449 } 7450 async->next = NULL; 7451 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2CACHEHIT; 7452 async->run = bcmx_async_run; 7453 async->callback = async_callback; 7454 async->cookie = async_cookie; 7455 async->args.field_qualify_L2CacheHit.entry = entry; 7456 async->args.field_qualify_L2CacheHit.data = data; 7457 async->args.field_qualify_L2CacheHit.mask = mask; 7458 bcm_async_add((bcm_async_req_t *)async); 7459 } 7460 7461 void 7462 bcmx_field_qualify_L2CacheHit_get_async( 7463 bcm_field_entry_t entry, 7464 uint8 * data, 7465 uint8 * mask, 7466 bcmx_async_cb_t async_callback, 7467 void *async_cookie) 7468 { 7469 bcmx_async_req_t *async; 7470 7471 async = sal_alloc(sizeof(*async), "bcmx_async"); 7472 if (async == NULL) { 7473 if (async_callback != NULL) { 7474 (*async_callback)(async_cookie, BCM_E_MEMORY); 7475 } 7476 return; 7477 } 7478 async->next = NULL; 7479 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2CACHEHIT_GET; 7480 async->run = bcmx_async_run; 7481 async->callback = async_callback; 7482 async->cookie = async_cookie; 7483 async->args.field_qualify_L2CacheHit_get.entry = entry; 7484 async->args.field_qualify_L2CacheHit_get.data = data; 7485 async->args.field_qualify_L2CacheHit_get.mask = mask; 7486 bcm_async_add((bcm_async_req_t *)async); 7487 } 7488 7489 void 7490 bcmx_field_qualify_L2DestHit_async( 7491 bcm_field_entry_t entry, 7492 uint8 data, 7493 uint8 mask, 7494 bcmx_async_cb_t async_callback, 7495 void *async_cookie) 7496 { 7497 bcmx_async_req_t *async; 7498 7499 async = sal_alloc(sizeof(*async), "bcmx_async"); 7500 if (async == NULL) { 7501 if (async_callback != NULL) { 7502 (*async_callback)(async_cookie, BCM_E_MEMORY); 7503 } 7504 return; 7505 } 7506 async->next = NULL; 7507 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2DESTHIT; 7508 async->run = bcmx_async_run; 7509 async->callback = async_callback; 7510 async->cookie = async_cookie; 7511 async->args.field_qualify_L2DestHit.entry = entry; 7512 async->args.field_qualify_L2DestHit.data = data; 7513 async->args.field_qualify_L2DestHit.mask = mask; 7514 bcm_async_add((bcm_async_req_t *)async); 7515 } 7516 7517 void 7518 bcmx_field_qualify_L2DestHit_get_async( 7519 bcm_field_entry_t entry, 7520 uint8 * data, 7521 uint8 * mask, 7522 bcmx_async_cb_t async_callback, 7523 void *async_cookie) 7524 { 7525 bcmx_async_req_t *async; 7526 7527 async = sal_alloc(sizeof(*async), "bcmx_async"); 7528 if (async == NULL) { 7529 if (async_callback != NULL) { 7530 (*async_callback)(async_cookie, BCM_E_MEMORY); 7531 } 7532 return; 7533 } 7534 async->next = NULL; 7535 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2DESTHIT_GET; 7536 async->run = bcmx_async_run; 7537 async->callback = async_callback; 7538 async->cookie = async_cookie; 7539 async->args.field_qualify_L2DestHit_get.entry = entry; 7540 async->args.field_qualify_L2DestHit_get.data = data; 7541 async->args.field_qualify_L2DestHit_get.mask = mask; 7542 bcm_async_add((bcm_async_req_t *)async); 7543 } 7544 7545 void 7546 bcmx_field_qualify_L2Format_async( 7547 bcm_field_entry_t entry, 7548 bcm_field_L2Format_t type, 7549 bcmx_async_cb_t async_callback, 7550 void *async_cookie) 7551 { 7552 bcmx_async_req_t *async; 7553 7554 async = sal_alloc(sizeof(*async), "bcmx_async"); 7555 if (async == NULL) { 7556 if (async_callback != NULL) { 7557 (*async_callback)(async_cookie, BCM_E_MEMORY); 7558 } 7559 return; 7560 } 7561 async->next = NULL; 7562 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2FORMAT; 7563 async->run = bcmx_async_run; 7564 async->callback = async_callback; 7565 async->cookie = async_cookie; 7566 async->args.field_qualify_L2Format.entry = entry; 7567 async->args.field_qualify_L2Format.type = type; 7568 bcm_async_add((bcm_async_req_t *)async); 7569 } 7570 7571 void 7572 bcmx_field_qualify_L2Format_get_async( 7573 bcm_field_entry_t entry, 7574 bcm_field_L2Format_t * type, 7575 bcmx_async_cb_t async_callback, 7576 void *async_cookie) 7577 { 7578 bcmx_async_req_t *async; 7579 7580 async = sal_alloc(sizeof(*async), "bcmx_async"); 7581 if (async == NULL) { 7582 if (async_callback != NULL) { 7583 (*async_callback)(async_cookie, BCM_E_MEMORY); 7584 } 7585 return; 7586 } 7587 async->next = NULL; 7588 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2FORMAT_GET; 7589 async->run = bcmx_async_run; 7590 async->callback = async_callback; 7591 async->cookie = async_cookie; 7592 async->args.field_qualify_L2Format_get.entry = entry; 7593 async->args.field_qualify_L2Format_get.type = type; 7594 bcm_async_add((bcm_async_req_t *)async); 7595 } 7596 7597 void 7598 bcmx_field_qualify_L2PayloadFirstEightBytes_async( 7599 bcm_field_entry_t entry, 7600 uint32 data1, 7601 uint32 data2, 7602 uint32 mask1, 7603 uint32 mask2, 7604 bcmx_async_cb_t async_callback, 7605 void *async_cookie) 7606 { 7607 bcmx_async_req_t *async; 7608 7609 async = sal_alloc(sizeof(*async), "bcmx_async"); 7610 if (async == NULL) { 7611 if (async_callback != NULL) { 7612 (*async_callback)(async_cookie, BCM_E_MEMORY); 7613 } 7614 return; 7615 } 7616 async->next = NULL; 7617 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2PAYLOADFIRSTEIGHTBYTES; 7618 async->run = bcmx_async_run; 7619 async->callback = async_callback; 7620 async->cookie = async_cookie; 7621 async->args.field_qualify_L2PayloadFirstEightBytes.entry = entry; 7622 async->args.field_qualify_L2PayloadFirstEightBytes.data1 = data1; 7623 async->args.field_qualify_L2PayloadFirstEightBytes.data2 = data2; 7624 async->args.field_qualify_L2PayloadFirstEightBytes.mask1 = mask1; 7625 async->args.field_qualify_L2PayloadFirstEightBytes.mask2 = mask2; 7626 bcm_async_add((bcm_async_req_t *)async); 7627 } 7628 7629 void 7630 bcmx_field_qualify_L2PayloadFirstEightBytes_get_async( 7631 bcm_field_entry_t entry, 7632 uint32 * data1, 7633 uint32 * data2, 7634 uint32 * mask1, 7635 uint32 * mask2, 7636 bcmx_async_cb_t async_callback, 7637 void *async_cookie) 7638 { 7639 bcmx_async_req_t *async; 7640 7641 async = sal_alloc(sizeof(*async), "bcmx_async"); 7642 if (async == NULL) { 7643 if (async_callback != NULL) { 7644 (*async_callback)(async_cookie, BCM_E_MEMORY); 7645 } 7646 return; 7647 } 7648 async->next = NULL; 7649 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2PAYLOADFIRSTEIGHTBYTES_GET; 7650 async->run = bcmx_async_run; 7651 async->callback = async_callback; 7652 async->cookie = async_cookie; 7653 async->args.field_qualify_L2PayloadFirstEightBytes_get.entry = entry; 7654 async->args.field_qualify_L2PayloadFirstEightBytes_get.data1 = data1; 7655 async->args.field_qualify_L2PayloadFirstEightBytes_get.data2 = data2; 7656 async->args.field_qualify_L2PayloadFirstEightBytes_get.mask1 = mask1; 7657 async->args.field_qualify_L2PayloadFirstEightBytes_get.mask2 = mask2; 7658 bcm_async_add((bcm_async_req_t *)async); 7659 } 7660 7661 void 7662 bcmx_field_qualify_L2SrcHit_async( 7663 bcm_field_entry_t entry, 7664 uint8 data, 7665 uint8 mask, 7666 bcmx_async_cb_t async_callback, 7667 void *async_cookie) 7668 { 7669 bcmx_async_req_t *async; 7670 7671 async = sal_alloc(sizeof(*async), "bcmx_async"); 7672 if (async == NULL) { 7673 if (async_callback != NULL) { 7674 (*async_callback)(async_cookie, BCM_E_MEMORY); 7675 } 7676 return; 7677 } 7678 async->next = NULL; 7679 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCHIT; 7680 async->run = bcmx_async_run; 7681 async->callback = async_callback; 7682 async->cookie = async_cookie; 7683 async->args.field_qualify_L2SrcHit.entry = entry; 7684 async->args.field_qualify_L2SrcHit.data = data; 7685 async->args.field_qualify_L2SrcHit.mask = mask; 7686 bcm_async_add((bcm_async_req_t *)async); 7687 } 7688 7689 void 7690 bcmx_field_qualify_L2SrcHit_get_async( 7691 bcm_field_entry_t entry, 7692 uint8 * data, 7693 uint8 * mask, 7694 bcmx_async_cb_t async_callback, 7695 void *async_cookie) 7696 { 7697 bcmx_async_req_t *async; 7698 7699 async = sal_alloc(sizeof(*async), "bcmx_async"); 7700 if (async == NULL) { 7701 if (async_callback != NULL) { 7702 (*async_callback)(async_cookie, BCM_E_MEMORY); 7703 } 7704 return; 7705 } 7706 async->next = NULL; 7707 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCHIT_GET; 7708 async->run = bcmx_async_run; 7709 async->callback = async_callback; 7710 async->cookie = async_cookie; 7711 async->args.field_qualify_L2SrcHit_get.entry = entry; 7712 async->args.field_qualify_L2SrcHit_get.data = data; 7713 async->args.field_qualify_L2SrcHit_get.mask = mask; 7714 bcm_async_add((bcm_async_req_t *)async); 7715 } 7716 7717 void 7718 bcmx_field_qualify_L2SrcStatic_async( 7719 bcm_field_entry_t entry, 7720 uint8 data, 7721 uint8 mask, 7722 bcmx_async_cb_t async_callback, 7723 void *async_cookie) 7724 { 7725 bcmx_async_req_t *async; 7726 7727 async = sal_alloc(sizeof(*async), "bcmx_async"); 7728 if (async == NULL) { 7729 if (async_callback != NULL) { 7730 (*async_callback)(async_cookie, BCM_E_MEMORY); 7731 } 7732 return; 7733 } 7734 async->next = NULL; 7735 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCSTATIC; 7736 async->run = bcmx_async_run; 7737 async->callback = async_callback; 7738 async->cookie = async_cookie; 7739 async->args.field_qualify_L2SrcStatic.entry = entry; 7740 async->args.field_qualify_L2SrcStatic.data = data; 7741 async->args.field_qualify_L2SrcStatic.mask = mask; 7742 bcm_async_add((bcm_async_req_t *)async); 7743 } 7744 7745 void 7746 bcmx_field_qualify_L2SrcStatic_get_async( 7747 bcm_field_entry_t entry, 7748 uint8 * data, 7749 uint8 * mask, 7750 bcmx_async_cb_t async_callback, 7751 void *async_cookie) 7752 { 7753 bcmx_async_req_t *async; 7754 7755 async = sal_alloc(sizeof(*async), "bcmx_async"); 7756 if (async == NULL) { 7757 if (async_callback != NULL) { 7758 (*async_callback)(async_cookie, BCM_E_MEMORY); 7759 } 7760 return; 7761 } 7762 async->next = NULL; 7763 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCSTATIC_GET; 7764 async->run = bcmx_async_run; 7765 async->callback = async_callback; 7766 async->cookie = async_cookie; 7767 async->args.field_qualify_L2SrcStatic_get.entry = entry; 7768 async->args.field_qualify_L2SrcStatic_get.data = data; 7769 async->args.field_qualify_L2SrcStatic_get.mask = mask; 7770 bcm_async_add((bcm_async_req_t *)async); 7771 } 7772 7773 void 7774 bcmx_field_qualify_L2StationMove_async( 7775 bcm_field_entry_t entry, 7776 uint8 data, 7777 uint8 mask, 7778 bcmx_async_cb_t async_callback, 7779 void *async_cookie) 7780 { 7781 bcmx_async_req_t *async; 7782 7783 async = sal_alloc(sizeof(*async), "bcmx_async"); 7784 if (async == NULL) { 7785 if (async_callback != NULL) { 7786 (*async_callback)(async_cookie, BCM_E_MEMORY); 7787 } 7788 return; 7789 } 7790 async->next = NULL; 7791 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2STATIONMOVE; 7792 async->run = bcmx_async_run; 7793 async->callback = async_callback; 7794 async->cookie = async_cookie; 7795 async->args.field_qualify_L2StationMove.entry = entry; 7796 async->args.field_qualify_L2StationMove.data = data; 7797 async->args.field_qualify_L2StationMove.mask = mask; 7798 bcm_async_add((bcm_async_req_t *)async); 7799 } 7800 7801 void 7802 bcmx_field_qualify_L2StationMove_get_async( 7803 bcm_field_entry_t entry, 7804 uint8 * data, 7805 uint8 * mask, 7806 bcmx_async_cb_t async_callback, 7807 void *async_cookie) 7808 { 7809 bcmx_async_req_t *async; 7810 7811 async = sal_alloc(sizeof(*async), "bcmx_async"); 7812 if (async == NULL) { 7813 if (async_callback != NULL) { 7814 (*async_callback)(async_cookie, BCM_E_MEMORY); 7815 } 7816 return; 7817 } 7818 async->next = NULL; 7819 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2STATIONMOVE_GET; 7820 async->run = bcmx_async_run; 7821 async->callback = async_callback; 7822 async->cookie = async_cookie; 7823 async->args.field_qualify_L2StationMove_get.entry = entry; 7824 async->args.field_qualify_L2StationMove_get.data = data; 7825 async->args.field_qualify_L2StationMove_get.mask = mask; 7826 bcm_async_add((bcm_async_req_t *)async); 7827 } 7828 7829 void 7830 bcmx_field_qualify_L3DestHostHit_async( 7831 bcm_field_entry_t entry, 7832 uint8 data, 7833 uint8 mask, 7834 bcmx_async_cb_t async_callback, 7835 void *async_cookie) 7836 { 7837 bcmx_async_req_t *async; 7838 7839 async = sal_alloc(sizeof(*async), "bcmx_async"); 7840 if (async == NULL) { 7841 if (async_callback != NULL) { 7842 (*async_callback)(async_cookie, BCM_E_MEMORY); 7843 } 7844 return; 7845 } 7846 async->next = NULL; 7847 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTHOSTHIT; 7848 async->run = bcmx_async_run; 7849 async->callback = async_callback; 7850 async->cookie = async_cookie; 7851 async->args.field_qualify_L3DestHostHit.entry = entry; 7852 async->args.field_qualify_L3DestHostHit.data = data; 7853 async->args.field_qualify_L3DestHostHit.mask = mask; 7854 bcm_async_add((bcm_async_req_t *)async); 7855 } 7856 7857 void 7858 bcmx_field_qualify_L3DestHostHit_get_async( 7859 bcm_field_entry_t entry, 7860 uint8 * data, 7861 uint8 * mask, 7862 bcmx_async_cb_t async_callback, 7863 void *async_cookie) 7864 { 7865 bcmx_async_req_t *async; 7866 7867 async = sal_alloc(sizeof(*async), "bcmx_async"); 7868 if (async == NULL) { 7869 if (async_callback != NULL) { 7870 (*async_callback)(async_cookie, BCM_E_MEMORY); 7871 } 7872 return; 7873 } 7874 async->next = NULL; 7875 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTHOSTHIT_GET; 7876 async->run = bcmx_async_run; 7877 async->callback = async_callback; 7878 async->cookie = async_cookie; 7879 async->args.field_qualify_L3DestHostHit_get.entry = entry; 7880 async->args.field_qualify_L3DestHostHit_get.data = data; 7881 async->args.field_qualify_L3DestHostHit_get.mask = mask; 7882 bcm_async_add((bcm_async_req_t *)async); 7883 } 7884 7885 void 7886 bcmx_field_qualify_L3DestRouteHit_async( 7887 bcm_field_entry_t entry, 7888 uint8 data, 7889 uint8 mask, 7890 bcmx_async_cb_t async_callback, 7891 void *async_cookie) 7892 { 7893 bcmx_async_req_t *async; 7894 7895 async = sal_alloc(sizeof(*async), "bcmx_async"); 7896 if (async == NULL) { 7897 if (async_callback != NULL) { 7898 (*async_callback)(async_cookie, BCM_E_MEMORY); 7899 } 7900 return; 7901 } 7902 async->next = NULL; 7903 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTROUTEHIT; 7904 async->run = bcmx_async_run; 7905 async->callback = async_callback; 7906 async->cookie = async_cookie; 7907 async->args.field_qualify_L3DestRouteHit.entry = entry; 7908 async->args.field_qualify_L3DestRouteHit.data = data; 7909 async->args.field_qualify_L3DestRouteHit.mask = mask; 7910 bcm_async_add((bcm_async_req_t *)async); 7911 } 7912 7913 void 7914 bcmx_field_qualify_L3DestRouteHit_get_async( 7915 bcm_field_entry_t entry, 7916 uint8 * data, 7917 uint8 * mask, 7918 bcmx_async_cb_t async_callback, 7919 void *async_cookie) 7920 { 7921 bcmx_async_req_t *async; 7922 7923 async = sal_alloc(sizeof(*async), "bcmx_async"); 7924 if (async == NULL) { 7925 if (async_callback != NULL) { 7926 (*async_callback)(async_cookie, BCM_E_MEMORY); 7927 } 7928 return; 7929 } 7930 async->next = NULL; 7931 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTROUTEHIT_GET; 7932 async->run = bcmx_async_run; 7933 async->callback = async_callback; 7934 async->cookie = async_cookie; 7935 async->args.field_qualify_L3DestRouteHit_get.entry = entry; 7936 async->args.field_qualify_L3DestRouteHit_get.data = data; 7937 async->args.field_qualify_L3DestRouteHit_get.mask = mask; 7938 bcm_async_add((bcm_async_req_t *)async); 7939 } 7940 7941 void 7942 bcmx_field_qualify_L3Ingress_async( 7943 bcm_field_entry_t entry, 7944 uint32 data, 7945 uint32 mask, 7946 bcmx_async_cb_t async_callback, 7947 void *async_cookie) 7948 { 7949 bcmx_async_req_t *async; 7950 7951 async = sal_alloc(sizeof(*async), "bcmx_async"); 7952 if (async == NULL) { 7953 if (async_callback != NULL) { 7954 (*async_callback)(async_cookie, BCM_E_MEMORY); 7955 } 7956 return; 7957 } 7958 async->next = NULL; 7959 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3INGRESS; 7960 async->run = bcmx_async_run; 7961 async->callback = async_callback; 7962 async->cookie = async_cookie; 7963 async->args.field_qualify_L3Ingress.entry = entry; 7964 async->args.field_qualify_L3Ingress.data = data; 7965 async->args.field_qualify_L3Ingress.mask = mask; 7966 bcm_async_add((bcm_async_req_t *)async); 7967 } 7968 7969 void 7970 bcmx_field_qualify_L3Ingress_get_async( 7971 bcm_field_entry_t entry, 7972 uint32 * data, 7973 uint32 * mask, 7974 bcmx_async_cb_t async_callback, 7975 void *async_cookie) 7976 { 7977 bcmx_async_req_t *async; 7978 7979 async = sal_alloc(sizeof(*async), "bcmx_async"); 7980 if (async == NULL) { 7981 if (async_callback != NULL) { 7982 (*async_callback)(async_cookie, BCM_E_MEMORY); 7983 } 7984 return; 7985 } 7986 async->next = NULL; 7987 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3INGRESS_GET; 7988 async->run = bcmx_async_run; 7989 async->callback = async_callback; 7990 async->cookie = async_cookie; 7991 async->args.field_qualify_L3Ingress_get.entry = entry; 7992 async->args.field_qualify_L3Ingress_get.data = data; 7993 async->args.field_qualify_L3Ingress_get.mask = mask; 7994 bcm_async_add((bcm_async_req_t *)async); 7995 } 7996 7997 void 7998 bcmx_field_qualify_L3Routable_async( 7999 bcm_field_entry_t entry, 8000 uint8 data, 8001 uint8 mask, 8002 bcmx_async_cb_t async_callback, 8003 void *async_cookie) 8004 { 8005 bcmx_async_req_t *async; 8006 8007 async = sal_alloc(sizeof(*async), "bcmx_async"); 8008 if (async == NULL) { 8009 if (async_callback != NULL) { 8010 (*async_callback)(async_cookie, BCM_E_MEMORY); 8011 } 8012 return; 8013 } 8014 async->next = NULL; 8015 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3ROUTABLE; 8016 async->run = bcmx_async_run; 8017 async->callback = async_callback; 8018 async->cookie = async_cookie; 8019 async->args.field_qualify_L3Routable.entry = entry; 8020 async->args.field_qualify_L3Routable.data = data; 8021 async->args.field_qualify_L3Routable.mask = mask; 8022 bcm_async_add((bcm_async_req_t *)async); 8023 } 8024 8025 void 8026 bcmx_field_qualify_L3Routable_get_async( 8027 bcm_field_entry_t entry, 8028 uint8 * data, 8029 uint8 * mask, 8030 bcmx_async_cb_t async_callback, 8031 void *async_cookie) 8032 { 8033 bcmx_async_req_t *async; 8034 8035 async = sal_alloc(sizeof(*async), "bcmx_async"); 8036 if (async == NULL) { 8037 if (async_callback != NULL) { 8038 (*async_callback)(async_cookie, BCM_E_MEMORY); 8039 } 8040 return; 8041 } 8042 async->next = NULL; 8043 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3ROUTABLE_GET; 8044 async->run = bcmx_async_run; 8045 async->callback = async_callback; 8046 async->cookie = async_cookie; 8047 async->args.field_qualify_L3Routable_get.entry = entry; 8048 async->args.field_qualify_L3Routable_get.data = data; 8049 async->args.field_qualify_L3Routable_get.mask = mask; 8050 bcm_async_add((bcm_async_req_t *)async); 8051 } 8052 8053 void 8054 bcmx_field_qualify_L3SrcHostHit_async( 8055 bcm_field_entry_t entry, 8056 uint8 data, 8057 uint8 mask, 8058 bcmx_async_cb_t async_callback, 8059 void *async_cookie) 8060 { 8061 bcmx_async_req_t *async; 8062 8063 async = sal_alloc(sizeof(*async), "bcmx_async"); 8064 if (async == NULL) { 8065 if (async_callback != NULL) { 8066 (*async_callback)(async_cookie, BCM_E_MEMORY); 8067 } 8068 return; 8069 } 8070 async->next = NULL; 8071 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3SRCHOSTHIT; 8072 async->run = bcmx_async_run; 8073 async->callback = async_callback; 8074 async->cookie = async_cookie; 8075 async->args.field_qualify_L3SrcHostHit.entry = entry; 8076 async->args.field_qualify_L3SrcHostHit.data = data; 8077 async->args.field_qualify_L3SrcHostHit.mask = mask; 8078 bcm_async_add((bcm_async_req_t *)async); 8079 } 8080 8081 void 8082 bcmx_field_qualify_L3SrcHostHit_get_async( 8083 bcm_field_entry_t entry, 8084 uint8 * data, 8085 uint8 * mask, 8086 bcmx_async_cb_t async_callback, 8087 void *async_cookie) 8088 { 8089 bcmx_async_req_t *async; 8090 8091 async = sal_alloc(sizeof(*async), "bcmx_async"); 8092 if (async == NULL) { 8093 if (async_callback != NULL) { 8094 (*async_callback)(async_cookie, BCM_E_MEMORY); 8095 } 8096 return; 8097 } 8098 async->next = NULL; 8099 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3SRCHOSTHIT_GET; 8100 async->run = bcmx_async_run; 8101 async->callback = async_callback; 8102 async->cookie = async_cookie; 8103 async->args.field_qualify_L3SrcHostHit_get.entry = entry; 8104 async->args.field_qualify_L3SrcHostHit_get.data = data; 8105 async->args.field_qualify_L3SrcHostHit_get.mask = mask; 8106 bcm_async_add((bcm_async_req_t *)async); 8107 } 8108 8109 void 8110 bcmx_field_qualify_L4DstPort_async( 8111 bcm_field_entry_t entry, 8112 bcm_l4_port_t data, 8113 bcm_l4_port_t mask, 8114 bcmx_async_cb_t async_callback, 8115 void *async_cookie) 8116 { 8117 bcmx_async_req_t *async; 8118 8119 async = sal_alloc(sizeof(*async), "bcmx_async"); 8120 if (async == NULL) { 8121 if (async_callback != NULL) { 8122 (*async_callback)(async_cookie, BCM_E_MEMORY); 8123 } 8124 return; 8125 } 8126 async->next = NULL; 8127 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4DSTPORT; 8128 async->run = bcmx_async_run; 8129 async->callback = async_callback; 8130 async->cookie = async_cookie; 8131 async->args.field_qualify_L4DstPort.entry = entry; 8132 async->args.field_qualify_L4DstPort.data = data; 8133 async->args.field_qualify_L4DstPort.mask = mask; 8134 bcm_async_add((bcm_async_req_t *)async); 8135 } 8136 8137 void 8138 bcmx_field_qualify_L4DstPort_get_async( 8139 bcm_field_entry_t entry, 8140 bcm_l4_port_t * data, 8141 bcm_l4_port_t * mask, 8142 bcmx_async_cb_t async_callback, 8143 void *async_cookie) 8144 { 8145 bcmx_async_req_t *async; 8146 8147 async = sal_alloc(sizeof(*async), "bcmx_async"); 8148 if (async == NULL) { 8149 if (async_callback != NULL) { 8150 (*async_callback)(async_cookie, BCM_E_MEMORY); 8151 } 8152 return; 8153 } 8154 async->next = NULL; 8155 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4DSTPORT_GET; 8156 async->run = bcmx_async_run; 8157 async->callback = async_callback; 8158 async->cookie = async_cookie; 8159 async->args.field_qualify_L4DstPort_get.entry = entry; 8160 async->args.field_qualify_L4DstPort_get.data = data; 8161 async->args.field_qualify_L4DstPort_get.mask = mask; 8162 bcm_async_add((bcm_async_req_t *)async); 8163 } 8164 8165 void 8166 bcmx_field_qualify_L4Ports_async( 8167 bcm_field_entry_t entry, 8168 uint8 data, 8169 uint8 mask, 8170 bcmx_async_cb_t async_callback, 8171 void *async_cookie) 8172 { 8173 bcmx_async_req_t *async; 8174 8175 async = sal_alloc(sizeof(*async), "bcmx_async"); 8176 if (async == NULL) { 8177 if (async_callback != NULL) { 8178 (*async_callback)(async_cookie, BCM_E_MEMORY); 8179 } 8180 return; 8181 } 8182 async->next = NULL; 8183 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4PORTS; 8184 async->run = bcmx_async_run; 8185 async->callback = async_callback; 8186 async->cookie = async_cookie; 8187 async->args.field_qualify_L4Ports.entry = entry; 8188 async->args.field_qualify_L4Ports.data = data; 8189 async->args.field_qualify_L4Ports.mask = mask; 8190 bcm_async_add((bcm_async_req_t *)async); 8191 } 8192 8193 void 8194 bcmx_field_qualify_L4Ports_get_async( 8195 bcm_field_entry_t entry, 8196 uint8 * data, 8197 uint8 * mask, 8198 bcmx_async_cb_t async_callback, 8199 void *async_cookie) 8200 { 8201 bcmx_async_req_t *async; 8202 8203 async = sal_alloc(sizeof(*async), "bcmx_async"); 8204 if (async == NULL) { 8205 if (async_callback != NULL) { 8206 (*async_callback)(async_cookie, BCM_E_MEMORY); 8207 } 8208 return; 8209 } 8210 async->next = NULL; 8211 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4PORTS_GET; 8212 async->run = bcmx_async_run; 8213 async->callback = async_callback; 8214 async->cookie = async_cookie; 8215 async->args.field_qualify_L4Ports_get.entry = entry; 8216 async->args.field_qualify_L4Ports_get.data = data; 8217 async->args.field_qualify_L4Ports_get.mask = mask; 8218 bcm_async_add((bcm_async_req_t *)async); 8219 } 8220 8221 void 8222 bcmx_field_qualify_L4SrcPort_async( 8223 bcm_field_entry_t entry, 8224 bcm_l4_port_t data, 8225 bcm_l4_port_t mask, 8226 bcmx_async_cb_t async_callback, 8227 void *async_cookie) 8228 { 8229 bcmx_async_req_t *async; 8230 8231 async = sal_alloc(sizeof(*async), "bcmx_async"); 8232 if (async == NULL) { 8233 if (async_callback != NULL) { 8234 (*async_callback)(async_cookie, BCM_E_MEMORY); 8235 } 8236 return; 8237 } 8238 async->next = NULL; 8239 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4SRCPORT; 8240 async->run = bcmx_async_run; 8241 async->callback = async_callback; 8242 async->cookie = async_cookie; 8243 async->args.field_qualify_L4SrcPort.entry = entry; 8244 async->args.field_qualify_L4SrcPort.data = data; 8245 async->args.field_qualify_L4SrcPort.mask = mask; 8246 bcm_async_add((bcm_async_req_t *)async); 8247 } 8248 8249 void 8250 bcmx_field_qualify_L4SrcPort_get_async( 8251 bcm_field_entry_t entry, 8252 bcm_l4_port_t * data, 8253 bcm_l4_port_t * mask, 8254 bcmx_async_cb_t async_callback, 8255 void *async_cookie) 8256 { 8257 bcmx_async_req_t *async; 8258 8259 async = sal_alloc(sizeof(*async), "bcmx_async"); 8260 if (async == NULL) { 8261 if (async_callback != NULL) { 8262 (*async_callback)(async_cookie, BCM_E_MEMORY); 8263 } 8264 return; 8265 } 8266 async->next = NULL; 8267 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4SRCPORT_GET; 8268 async->run = bcmx_async_run; 8269 async->callback = async_callback; 8270 async->cookie = async_cookie; 8271 async->args.field_qualify_L4SrcPort_get.entry = entry; 8272 async->args.field_qualify_L4SrcPort_get.data = data; 8273 async->args.field_qualify_L4SrcPort_get.mask = mask; 8274 bcm_async_add((bcm_async_req_t *)async); 8275 } 8276 8277 void 8278 bcmx_field_qualify_Llc_async( 8279 bcm_field_entry_t entry, 8280 bcm_field_llc_header_t data, 8281 bcm_field_llc_header_t mask, 8282 bcmx_async_cb_t async_callback, 8283 void *async_cookie) 8284 { 8285 bcmx_async_req_t *async; 8286 8287 async = sal_alloc(sizeof(*async), "bcmx_async"); 8288 if (async == NULL) { 8289 if (async_callback != NULL) { 8290 (*async_callback)(async_cookie, BCM_E_MEMORY); 8291 } 8292 return; 8293 } 8294 async->next = NULL; 8295 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LLC; 8296 async->run = bcmx_async_run; 8297 async->callback = async_callback; 8298 async->cookie = async_cookie; 8299 async->args.field_qualify_Llc.entry = entry; 8300 async->args.field_qualify_Llc.data = data; 8301 async->args.field_qualify_Llc.mask = mask; 8302 bcm_async_add((bcm_async_req_t *)async); 8303 } 8304 8305 void 8306 bcmx_field_qualify_Llc_get_async( 8307 bcm_field_entry_t entry, 8308 bcm_field_llc_header_t * data, 8309 bcm_field_llc_header_t * mask, 8310 bcmx_async_cb_t async_callback, 8311 void *async_cookie) 8312 { 8313 bcmx_async_req_t *async; 8314 8315 async = sal_alloc(sizeof(*async), "bcmx_async"); 8316 if (async == NULL) { 8317 if (async_callback != NULL) { 8318 (*async_callback)(async_cookie, BCM_E_MEMORY); 8319 } 8320 return; 8321 } 8322 async->next = NULL; 8323 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LLC_GET; 8324 async->run = bcmx_async_run; 8325 async->callback = async_callback; 8326 async->cookie = async_cookie; 8327 async->args.field_qualify_Llc_get.entry = entry; 8328 async->args.field_qualify_Llc_get.data = data; 8329 async->args.field_qualify_Llc_get.mask = mask; 8330 bcm_async_add((bcm_async_req_t *)async); 8331 } 8332 8333 void 8334 bcmx_field_qualify_Loopback_async( 8335 bcm_field_entry_t entry, 8336 uint8 data, 8337 uint8 mask, 8338 bcmx_async_cb_t async_callback, 8339 void *async_cookie) 8340 { 8341 bcmx_async_req_t *async; 8342 8343 async = sal_alloc(sizeof(*async), "bcmx_async"); 8344 if (async == NULL) { 8345 if (async_callback != NULL) { 8346 (*async_callback)(async_cookie, BCM_E_MEMORY); 8347 } 8348 return; 8349 } 8350 async->next = NULL; 8351 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACK; 8352 async->run = bcmx_async_run; 8353 async->callback = async_callback; 8354 async->cookie = async_cookie; 8355 async->args.field_qualify_Loopback.entry = entry; 8356 async->args.field_qualify_Loopback.data = data; 8357 async->args.field_qualify_Loopback.mask = mask; 8358 bcm_async_add((bcm_async_req_t *)async); 8359 } 8360 8361 void 8362 bcmx_field_qualify_LoopbackType_async( 8363 bcm_field_entry_t entry, 8364 bcm_field_LoopbackType_t loopback_type, 8365 bcmx_async_cb_t async_callback, 8366 void *async_cookie) 8367 { 8368 bcmx_async_req_t *async; 8369 8370 async = sal_alloc(sizeof(*async), "bcmx_async"); 8371 if (async == NULL) { 8372 if (async_callback != NULL) { 8373 (*async_callback)(async_cookie, BCM_E_MEMORY); 8374 } 8375 return; 8376 } 8377 async->next = NULL; 8378 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACKTYPE; 8379 async->run = bcmx_async_run; 8380 async->callback = async_callback; 8381 async->cookie = async_cookie; 8382 async->args.field_qualify_LoopbackType.entry = entry; 8383 async->args.field_qualify_LoopbackType.loopback_type = loopback_type; 8384 bcm_async_add((bcm_async_req_t *)async); 8385 } 8386 8387 void 8388 bcmx_field_qualify_LoopbackType_get_async( 8389 bcm_field_entry_t entry, 8390 bcm_field_LoopbackType_t * loopback_type, 8391 bcmx_async_cb_t async_callback, 8392 void *async_cookie) 8393 { 8394 bcmx_async_req_t *async; 8395 8396 async = sal_alloc(sizeof(*async), "bcmx_async"); 8397 if (async == NULL) { 8398 if (async_callback != NULL) { 8399 (*async_callback)(async_cookie, BCM_E_MEMORY); 8400 } 8401 return; 8402 } 8403 async->next = NULL; 8404 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACKTYPE_GET; 8405 async->run = bcmx_async_run; 8406 async->callback = async_callback; 8407 async->cookie = async_cookie; 8408 async->args.field_qualify_LoopbackType_get.entry = entry; 8409 async->args.field_qualify_LoopbackType_get.loopback_type = loopback_type; 8410 bcm_async_add((bcm_async_req_t *)async); 8411 } 8412 8413 void 8414 bcmx_field_qualify_Loopback_get_async( 8415 bcm_field_entry_t entry, 8416 uint8 * data, 8417 uint8 * mask, 8418 bcmx_async_cb_t async_callback, 8419 void *async_cookie) 8420 { 8421 bcmx_async_req_t *async; 8422 8423 async = sal_alloc(sizeof(*async), "bcmx_async"); 8424 if (async == NULL) { 8425 if (async_callback != NULL) { 8426 (*async_callback)(async_cookie, BCM_E_MEMORY); 8427 } 8428 return; 8429 } 8430 async->next = NULL; 8431 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACK_GET; 8432 async->run = bcmx_async_run; 8433 async->callback = async_callback; 8434 async->cookie = async_cookie; 8435 async->args.field_qualify_Loopback_get.entry = entry; 8436 async->args.field_qualify_Loopback_get.data = data; 8437 async->args.field_qualify_Loopback_get.mask = mask; 8438 bcm_async_add((bcm_async_req_t *)async); 8439 } 8440 8441 void 8442 bcmx_field_qualify_MHOpcode_async( 8443 bcm_field_entry_t entry, 8444 uint8 data, 8445 uint8 mask, 8446 bcmx_async_cb_t async_callback, 8447 void *async_cookie) 8448 { 8449 bcmx_async_req_t *async; 8450 8451 async = sal_alloc(sizeof(*async), "bcmx_async"); 8452 if (async == NULL) { 8453 if (async_callback != NULL) { 8454 (*async_callback)(async_cookie, BCM_E_MEMORY); 8455 } 8456 return; 8457 } 8458 async->next = NULL; 8459 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MHOPCODE; 8460 async->run = bcmx_async_run; 8461 async->callback = async_callback; 8462 async->cookie = async_cookie; 8463 async->args.field_qualify_MHOpcode.entry = entry; 8464 async->args.field_qualify_MHOpcode.data = data; 8465 async->args.field_qualify_MHOpcode.mask = mask; 8466 bcm_async_add((bcm_async_req_t *)async); 8467 } 8468 8469 void 8470 bcmx_field_qualify_MHOpcode_get_async( 8471 bcm_field_entry_t entry, 8472 uint8 * data, 8473 uint8 * mask, 8474 bcmx_async_cb_t async_callback, 8475 void *async_cookie) 8476 { 8477 bcmx_async_req_t *async; 8478 8479 async = sal_alloc(sizeof(*async), "bcmx_async"); 8480 if (async == NULL) { 8481 if (async_callback != NULL) { 8482 (*async_callback)(async_cookie, BCM_E_MEMORY); 8483 } 8484 return; 8485 } 8486 async->next = NULL; 8487 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MHOPCODE_GET; 8488 async->run = bcmx_async_run; 8489 async->callback = async_callback; 8490 async->cookie = async_cookie; 8491 async->args.field_qualify_MHOpcode_get.entry = entry; 8492 async->args.field_qualify_MHOpcode_get.data = data; 8493 async->args.field_qualify_MHOpcode_get.mask = mask; 8494 bcm_async_add((bcm_async_req_t *)async); 8495 } 8496 8497 void 8498 bcmx_field_qualify_MirrorCopy_async( 8499 bcm_field_entry_t entry, 8500 uint8 data, 8501 uint8 mask, 8502 bcmx_async_cb_t async_callback, 8503 void *async_cookie) 8504 { 8505 bcmx_async_req_t *async; 8506 8507 async = sal_alloc(sizeof(*async), "bcmx_async"); 8508 if (async == NULL) { 8509 if (async_callback != NULL) { 8510 (*async_callback)(async_cookie, BCM_E_MEMORY); 8511 } 8512 return; 8513 } 8514 async->next = NULL; 8515 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MIRRORCOPY; 8516 async->run = bcmx_async_run; 8517 async->callback = async_callback; 8518 async->cookie = async_cookie; 8519 async->args.field_qualify_MirrorCopy.entry = entry; 8520 async->args.field_qualify_MirrorCopy.data = data; 8521 async->args.field_qualify_MirrorCopy.mask = mask; 8522 bcm_async_add((bcm_async_req_t *)async); 8523 } 8524 8525 void 8526 bcmx_field_qualify_MirrorCopy_get_async( 8527 bcm_field_entry_t entry, 8528 uint8 * data, 8529 uint8 * mask, 8530 bcmx_async_cb_t async_callback, 8531 void *async_cookie) 8532 { 8533 bcmx_async_req_t *async; 8534 8535 async = sal_alloc(sizeof(*async), "bcmx_async"); 8536 if (async == NULL) { 8537 if (async_callback != NULL) { 8538 (*async_callback)(async_cookie, BCM_E_MEMORY); 8539 } 8540 return; 8541 } 8542 async->next = NULL; 8543 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MIRRORCOPY_GET; 8544 async->run = bcmx_async_run; 8545 async->callback = async_callback; 8546 async->cookie = async_cookie; 8547 async->args.field_qualify_MirrorCopy_get.entry = entry; 8548 async->args.field_qualify_MirrorCopy_get.data = data; 8549 async->args.field_qualify_MirrorCopy_get.mask = mask; 8550 bcm_async_add((bcm_async_req_t *)async); 8551 } 8552 8553 void 8554 bcmx_field_qualify_MplsTerminated_async( 8555 bcm_field_entry_t entry, 8556 uint8 data, 8557 uint8 mask, 8558 bcmx_async_cb_t async_callback, 8559 void *async_cookie) 8560 { 8561 bcmx_async_req_t *async; 8562 8563 async = sal_alloc(sizeof(*async), "bcmx_async"); 8564 if (async == NULL) { 8565 if (async_callback != NULL) { 8566 (*async_callback)(async_cookie, BCM_E_MEMORY); 8567 } 8568 return; 8569 } 8570 async->next = NULL; 8571 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MPLSTERMINATED; 8572 async->run = bcmx_async_run; 8573 async->callback = async_callback; 8574 async->cookie = async_cookie; 8575 async->args.field_qualify_MplsTerminated.entry = entry; 8576 async->args.field_qualify_MplsTerminated.data = data; 8577 async->args.field_qualify_MplsTerminated.mask = mask; 8578 bcm_async_add((bcm_async_req_t *)async); 8579 } 8580 8581 void 8582 bcmx_field_qualify_MplsTerminated_get_async( 8583 bcm_field_entry_t entry, 8584 uint8 * data, 8585 uint8 * mask, 8586 bcmx_async_cb_t async_callback, 8587 void *async_cookie) 8588 { 8589 bcmx_async_req_t *async; 8590 8591 async = sal_alloc(sizeof(*async), "bcmx_async"); 8592 if (async == NULL) { 8593 if (async_callback != NULL) { 8594 (*async_callback)(async_cookie, BCM_E_MEMORY); 8595 } 8596 return; 8597 } 8598 async->next = NULL; 8599 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MPLSTERMINATED_GET; 8600 async->run = bcmx_async_run; 8601 async->callback = async_callback; 8602 async->cookie = async_cookie; 8603 async->args.field_qualify_MplsTerminated_get.entry = entry; 8604 async->args.field_qualify_MplsTerminated_get.data = data; 8605 async->args.field_qualify_MplsTerminated_get.mask = mask; 8606 bcm_async_add((bcm_async_req_t *)async); 8607 } 8608 8609 void 8610 bcmx_field_qualify_MyStationHit_async( 8611 bcm_field_entry_t entry, 8612 uint8 data, 8613 uint8 mask, 8614 bcmx_async_cb_t async_callback, 8615 void *async_cookie) 8616 { 8617 bcmx_async_req_t *async; 8618 8619 async = sal_alloc(sizeof(*async), "bcmx_async"); 8620 if (async == NULL) { 8621 if (async_callback != NULL) { 8622 (*async_callback)(async_cookie, BCM_E_MEMORY); 8623 } 8624 return; 8625 } 8626 async->next = NULL; 8627 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MYSTATIONHIT; 8628 async->run = bcmx_async_run; 8629 async->callback = async_callback; 8630 async->cookie = async_cookie; 8631 async->args.field_qualify_MyStationHit.entry = entry; 8632 async->args.field_qualify_MyStationHit.data = data; 8633 async->args.field_qualify_MyStationHit.mask = mask; 8634 bcm_async_add((bcm_async_req_t *)async); 8635 } 8636 8637 void 8638 bcmx_field_qualify_MyStationHit_get_async( 8639 bcm_field_entry_t entry, 8640 uint8 * data, 8641 uint8 * mask, 8642 bcmx_async_cb_t async_callback, 8643 void *async_cookie) 8644 { 8645 bcmx_async_req_t *async; 8646 8647 async = sal_alloc(sizeof(*async), "bcmx_async"); 8648 if (async == NULL) { 8649 if (async_callback != NULL) { 8650 (*async_callback)(async_cookie, BCM_E_MEMORY); 8651 } 8652 return; 8653 } 8654 async->next = NULL; 8655 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MYSTATIONHIT_GET; 8656 async->run = bcmx_async_run; 8657 async->callback = async_callback; 8658 async->cookie = async_cookie; 8659 async->args.field_qualify_MyStationHit_get.entry = entry; 8660 async->args.field_qualify_MyStationHit_get.data = data; 8661 async->args.field_qualify_MyStationHit_get.mask = mask; 8662 bcm_async_add((bcm_async_req_t *)async); 8663 } 8664 8665 void 8666 bcmx_field_qualify_OutPort_async( 8667 bcm_field_entry_t entry, 8668 bcmx_lport_t port, 8669 bcmx_async_cb_t async_callback, 8670 void *async_cookie) 8671 { 8672 bcmx_async_req_t *async; 8673 8674 async = sal_alloc(sizeof(*async), "bcmx_async"); 8675 if (async == NULL) { 8676 if (async_callback != NULL) { 8677 (*async_callback)(async_cookie, BCM_E_MEMORY); 8678 } 8679 return; 8680 } 8681 async->next = NULL; 8682 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORT; 8683 async->run = bcmx_async_run; 8684 async->callback = async_callback; 8685 async->cookie = async_cookie; 8686 async->args.field_qualify_OutPort.entry = entry; 8687 async->args.field_qualify_OutPort.port = port; 8688 bcm_async_add((bcm_async_req_t *)async); 8689 } 8690 8691 void 8692 bcmx_field_qualify_OutPort_get_async( 8693 bcm_field_entry_t entry, 8694 bcm_port_t * data, 8695 bcm_port_t * mask, 8696 bcmx_async_cb_t async_callback, 8697 void *async_cookie) 8698 { 8699 bcmx_async_req_t *async; 8700 8701 async = sal_alloc(sizeof(*async), "bcmx_async"); 8702 if (async == NULL) { 8703 if (async_callback != NULL) { 8704 (*async_callback)(async_cookie, BCM_E_MEMORY); 8705 } 8706 return; 8707 } 8708 async->next = NULL; 8709 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORT_GET; 8710 async->run = bcmx_async_run; 8711 async->callback = async_callback; 8712 async->cookie = async_cookie; 8713 async->args.field_qualify_OutPort_get.entry = entry; 8714 async->args.field_qualify_OutPort_get.data = data; 8715 async->args.field_qualify_OutPort_get.mask = mask; 8716 bcm_async_add((bcm_async_req_t *)async); 8717 } 8718 8719 void 8720 bcmx_field_qualify_OutPorts_async( 8721 bcm_field_entry_t entry, 8722 bcmx_lplist_t lplist, 8723 bcmx_async_cb_t async_callback, 8724 void *async_cookie) 8725 { 8726 bcmx_async_req_t *async; 8727 8728 async = sal_alloc(sizeof(*async), "bcmx_async"); 8729 if (async == NULL) { 8730 if (async_callback != NULL) { 8731 (*async_callback)(async_cookie, BCM_E_MEMORY); 8732 } 8733 return; 8734 } 8735 async->next = NULL; 8736 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORTS; 8737 async->run = bcmx_async_run; 8738 async->callback = async_callback; 8739 async->cookie = async_cookie; 8740 async->args.field_qualify_OutPorts.entry = entry; 8741 async->args.field_qualify_OutPorts.lplist = lplist; 8742 bcm_async_add((bcm_async_req_t *)async); 8743 } 8744 8745 void 8746 bcmx_field_qualify_OutPorts_get_async( 8747 bcm_field_entry_t entry, 8748 bcm_pbmp_t * data, 8749 bcm_pbmp_t * mask, 8750 bcmx_async_cb_t async_callback, 8751 void *async_cookie) 8752 { 8753 bcmx_async_req_t *async; 8754 8755 async = sal_alloc(sizeof(*async), "bcmx_async"); 8756 if (async == NULL) { 8757 if (async_callback != NULL) { 8758 (*async_callback)(async_cookie, BCM_E_MEMORY); 8759 } 8760 return; 8761 } 8762 async->next = NULL; 8763 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORTS_GET; 8764 async->run = bcmx_async_run; 8765 async->callback = async_callback; 8766 async->cookie = async_cookie; 8767 async->args.field_qualify_OutPorts_get.entry = entry; 8768 async->args.field_qualify_OutPorts_get.data = data; 8769 async->args.field_qualify_OutPorts_get.mask = mask; 8770 bcm_async_add((bcm_async_req_t *)async); 8771 } 8772 8773 void 8774 bcmx_field_qualify_OuterTpid_async( 8775 bcm_field_entry_t entry, 8776 uint16 tpid, 8777 bcmx_async_cb_t async_callback, 8778 void *async_cookie) 8779 { 8780 bcmx_async_req_t *async; 8781 8782 async = sal_alloc(sizeof(*async), "bcmx_async"); 8783 if (async == NULL) { 8784 if (async_callback != NULL) { 8785 (*async_callback)(async_cookie, BCM_E_MEMORY); 8786 } 8787 return; 8788 } 8789 async->next = NULL; 8790 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERTPID; 8791 async->run = bcmx_async_run; 8792 async->callback = async_callback; 8793 async->cookie = async_cookie; 8794 async->args.field_qualify_OuterTpid.entry = entry; 8795 async->args.field_qualify_OuterTpid.tpid = tpid; 8796 bcm_async_add((bcm_async_req_t *)async); 8797 } 8798 8799 void 8800 bcmx_field_qualify_OuterTpid_get_async( 8801 bcm_field_entry_t entry, 8802 uint16 * tpid, 8803 bcmx_async_cb_t async_callback, 8804 void *async_cookie) 8805 { 8806 bcmx_async_req_t *async; 8807 8808 async = sal_alloc(sizeof(*async), "bcmx_async"); 8809 if (async == NULL) { 8810 if (async_callback != NULL) { 8811 (*async_callback)(async_cookie, BCM_E_MEMORY); 8812 } 8813 return; 8814 } 8815 async->next = NULL; 8816 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERTPID_GET; 8817 async->run = bcmx_async_run; 8818 async->callback = async_callback; 8819 async->cookie = async_cookie; 8820 async->args.field_qualify_OuterTpid_get.entry = entry; 8821 async->args.field_qualify_OuterTpid_get.tpid = tpid; 8822 bcm_async_add((bcm_async_req_t *)async); 8823 } 8824 8825 void 8826 bcmx_field_qualify_OuterVlan_async( 8827 bcm_field_entry_t entry, 8828 bcm_vlan_t data, 8829 bcm_vlan_t mask, 8830 bcmx_async_cb_t async_callback, 8831 void *async_cookie) 8832 { 8833 bcmx_async_req_t *async; 8834 8835 async = sal_alloc(sizeof(*async), "bcmx_async"); 8836 if (async == NULL) { 8837 if (async_callback != NULL) { 8838 (*async_callback)(async_cookie, BCM_E_MEMORY); 8839 } 8840 return; 8841 } 8842 async->next = NULL; 8843 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLAN; 8844 async->run = bcmx_async_run; 8845 async->callback = async_callback; 8846 async->cookie = async_cookie; 8847 async->args.field_qualify_OuterVlan.entry = entry; 8848 async->args.field_qualify_OuterVlan.data = data; 8849 async->args.field_qualify_OuterVlan.mask = mask; 8850 bcm_async_add((bcm_async_req_t *)async); 8851 } 8852 8853 void 8854 bcmx_field_qualify_OuterVlanCfi_async( 8855 bcm_field_entry_t entry, 8856 uint8 data, 8857 uint8 mask, 8858 bcmx_async_cb_t async_callback, 8859 void *async_cookie) 8860 { 8861 bcmx_async_req_t *async; 8862 8863 async = sal_alloc(sizeof(*async), "bcmx_async"); 8864 if (async == NULL) { 8865 if (async_callback != NULL) { 8866 (*async_callback)(async_cookie, BCM_E_MEMORY); 8867 } 8868 return; 8869 } 8870 async->next = NULL; 8871 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANCFI; 8872 async->run = bcmx_async_run; 8873 async->callback = async_callback; 8874 async->cookie = async_cookie; 8875 async->args.field_qualify_OuterVlanCfi.entry = entry; 8876 async->args.field_qualify_OuterVlanCfi.data = data; 8877 async->args.field_qualify_OuterVlanCfi.mask = mask; 8878 bcm_async_add((bcm_async_req_t *)async); 8879 } 8880 8881 void 8882 bcmx_field_qualify_OuterVlanCfi_get_async( 8883 bcm_field_entry_t entry, 8884 uint8 * data, 8885 uint8 * mask, 8886 bcmx_async_cb_t async_callback, 8887 void *async_cookie) 8888 { 8889 bcmx_async_req_t *async; 8890 8891 async = sal_alloc(sizeof(*async), "bcmx_async"); 8892 if (async == NULL) { 8893 if (async_callback != NULL) { 8894 (*async_callback)(async_cookie, BCM_E_MEMORY); 8895 } 8896 return; 8897 } 8898 async->next = NULL; 8899 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANCFI_GET; 8900 async->run = bcmx_async_run; 8901 async->callback = async_callback; 8902 async->cookie = async_cookie; 8903 async->args.field_qualify_OuterVlanCfi_get.entry = entry; 8904 async->args.field_qualify_OuterVlanCfi_get.data = data; 8905 async->args.field_qualify_OuterVlanCfi_get.mask = mask; 8906 bcm_async_add((bcm_async_req_t *)async); 8907 } 8908 8909 void 8910 bcmx_field_qualify_OuterVlanId_async( 8911 bcm_field_entry_t entry, 8912 bcm_vlan_t data, 8913 bcm_vlan_t mask, 8914 bcmx_async_cb_t async_callback, 8915 void *async_cookie) 8916 { 8917 bcmx_async_req_t *async; 8918 8919 async = sal_alloc(sizeof(*async), "bcmx_async"); 8920 if (async == NULL) { 8921 if (async_callback != NULL) { 8922 (*async_callback)(async_cookie, BCM_E_MEMORY); 8923 } 8924 return; 8925 } 8926 async->next = NULL; 8927 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANID; 8928 async->run = bcmx_async_run; 8929 async->callback = async_callback; 8930 async->cookie = async_cookie; 8931 async->args.field_qualify_OuterVlanId.entry = entry; 8932 async->args.field_qualify_OuterVlanId.data = data; 8933 async->args.field_qualify_OuterVlanId.mask = mask; 8934 bcm_async_add((bcm_async_req_t *)async); 8935 } 8936 8937 void 8938 bcmx_field_qualify_OuterVlanId_get_async( 8939 bcm_field_entry_t entry, 8940 bcm_vlan_t * data, 8941 bcm_vlan_t * mask, 8942 bcmx_async_cb_t async_callback, 8943 void *async_cookie) 8944 { 8945 bcmx_async_req_t *async; 8946 8947 async = sal_alloc(sizeof(*async), "bcmx_async"); 8948 if (async == NULL) { 8949 if (async_callback != NULL) { 8950 (*async_callback)(async_cookie, BCM_E_MEMORY); 8951 } 8952 return; 8953 } 8954 async->next = NULL; 8955 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANID_GET; 8956 async->run = bcmx_async_run; 8957 async->callback = async_callback; 8958 async->cookie = async_cookie; 8959 async->args.field_qualify_OuterVlanId_get.entry = entry; 8960 async->args.field_qualify_OuterVlanId_get.data = data; 8961 async->args.field_qualify_OuterVlanId_get.mask = mask; 8962 bcm_async_add((bcm_async_req_t *)async); 8963 } 8964 8965 void 8966 bcmx_field_qualify_OuterVlanPri_async( 8967 bcm_field_entry_t entry, 8968 uint8 data, 8969 uint8 mask, 8970 bcmx_async_cb_t async_callback, 8971 void *async_cookie) 8972 { 8973 bcmx_async_req_t *async; 8974 8975 async = sal_alloc(sizeof(*async), "bcmx_async"); 8976 if (async == NULL) { 8977 if (async_callback != NULL) { 8978 (*async_callback)(async_cookie, BCM_E_MEMORY); 8979 } 8980 return; 8981 } 8982 async->next = NULL; 8983 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANPRI; 8984 async->run = bcmx_async_run; 8985 async->callback = async_callback; 8986 async->cookie = async_cookie; 8987 async->args.field_qualify_OuterVlanPri.entry = entry; 8988 async->args.field_qualify_OuterVlanPri.data = data; 8989 async->args.field_qualify_OuterVlanPri.mask = mask; 8990 bcm_async_add((bcm_async_req_t *)async); 8991 } 8992 8993 void 8994 bcmx_field_qualify_OuterVlanPri_get_async( 8995 bcm_field_entry_t entry, 8996 uint8 * data, 8997 uint8 * mask, 8998 bcmx_async_cb_t async_callback, 8999 void *async_cookie) 9000 { 9001 bcmx_async_req_t *async; 9002 9003 async = sal_alloc(sizeof(*async), "bcmx_async"); 9004 if (async == NULL) { 9005 if (async_callback != NULL) { 9006 (*async_callback)(async_cookie, BCM_E_MEMORY); 9007 } 9008 return; 9009 } 9010 async->next = NULL; 9011 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANPRI_GET; 9012 async->run = bcmx_async_run; 9013 async->callback = async_callback; 9014 async->cookie = async_cookie; 9015 async->args.field_qualify_OuterVlanPri_get.entry = entry; 9016 async->args.field_qualify_OuterVlanPri_get.data = data; 9017 async->args.field_qualify_OuterVlanPri_get.mask = mask; 9018 bcm_async_add((bcm_async_req_t *)async); 9019 } 9020 9021 void 9022 bcmx_field_qualify_OuterVlan_get_async( 9023 bcm_field_entry_t entry, 9024 bcm_vlan_t * data, 9025 bcm_vlan_t * mask, 9026 bcmx_async_cb_t async_callback, 9027 void *async_cookie) 9028 { 9029 bcmx_async_req_t *async; 9030 9031 async = sal_alloc(sizeof(*async), "bcmx_async"); 9032 if (async == NULL) { 9033 if (async_callback != NULL) { 9034 (*async_callback)(async_cookie, BCM_E_MEMORY); 9035 } 9036 return; 9037 } 9038 async->next = NULL; 9039 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLAN_GET; 9040 async->run = bcmx_async_run; 9041 async->callback = async_callback; 9042 async->cookie = async_cookie; 9043 async->args.field_qualify_OuterVlan_get.entry = entry; 9044 async->args.field_qualify_OuterVlan_get.data = data; 9045 async->args.field_qualify_OuterVlan_get.mask = mask; 9046 bcm_async_add((bcm_async_req_t *)async); 9047 } 9048 9049 void 9050 bcmx_field_qualify_PacketRes_async( 9051 bcm_field_entry_t entry, 9052 uint32 data, 9053 uint32 mask, 9054 bcmx_async_cb_t async_callback, 9055 void *async_cookie) 9056 { 9057 bcmx_async_req_t *async; 9058 9059 async = sal_alloc(sizeof(*async), "bcmx_async"); 9060 if (async == NULL) { 9061 if (async_callback != NULL) { 9062 (*async_callback)(async_cookie, BCM_E_MEMORY); 9063 } 9064 return; 9065 } 9066 async->next = NULL; 9067 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_PACKETRES; 9068 async->run = bcmx_async_run; 9069 async->callback = async_callback; 9070 async->cookie = async_cookie; 9071 async->args.field_qualify_PacketRes.entry = entry; 9072 async->args.field_qualify_PacketRes.data = data; 9073 async->args.field_qualify_PacketRes.mask = mask; 9074 bcm_async_add((bcm_async_req_t *)async); 9075 } 9076 9077 void 9078 bcmx_field_qualify_PacketRes_get_async( 9079 bcm_field_entry_t entry, 9080 uint32 * data, 9081 uint32 * mask, 9082 bcmx_async_cb_t async_callback, 9083 void *async_cookie) 9084 { 9085 bcmx_async_req_t *async; 9086 9087 async = sal_alloc(sizeof(*async), "bcmx_async"); 9088 if (async == NULL) { 9089 if (async_callback != NULL) { 9090 (*async_callback)(async_cookie, BCM_E_MEMORY); 9091 } 9092 return; 9093 } 9094 async->next = NULL; 9095 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_PACKETRES_GET; 9096 async->run = bcmx_async_run; 9097 async->callback = async_callback; 9098 async->cookie = async_cookie; 9099 async->args.field_qualify_PacketRes_get.entry = entry; 9100 async->args.field_qualify_PacketRes_get.data = data; 9101 async->args.field_qualify_PacketRes_get.mask = mask; 9102 bcm_async_add((bcm_async_req_t *)async); 9103 } 9104 9105 void 9106 bcmx_field_qualify_RangeCheck_async( 9107 bcm_field_entry_t entry, 9108 int range, 9109 int result, 9110 bcmx_async_cb_t async_callback, 9111 void *async_cookie) 9112 { 9113 bcmx_async_req_t *async; 9114 9115 async = sal_alloc(sizeof(*async), "bcmx_async"); 9116 if (async == NULL) { 9117 if (async_callback != NULL) { 9118 (*async_callback)(async_cookie, BCM_E_MEMORY); 9119 } 9120 return; 9121 } 9122 async->next = NULL; 9123 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_RANGECHECK; 9124 async->run = bcmx_async_run; 9125 async->callback = async_callback; 9126 async->cookie = async_cookie; 9127 async->args.field_qualify_RangeCheck.entry = entry; 9128 async->args.field_qualify_RangeCheck.range = range; 9129 async->args.field_qualify_RangeCheck.result = result; 9130 bcm_async_add((bcm_async_req_t *)async); 9131 } 9132 9133 void 9134 bcmx_field_qualify_RangeCheck_get_async( 9135 bcm_field_entry_t entry, 9136 int max_count, 9137 bcm_field_range_t * range, 9138 int * invert, 9139 int * count, 9140 bcmx_async_cb_t async_callback, 9141 void *async_cookie) 9142 { 9143 bcmx_async_req_t *async; 9144 9145 async = sal_alloc(sizeof(*async), "bcmx_async"); 9146 if (async == NULL) { 9147 if (async_callback != NULL) { 9148 (*async_callback)(async_cookie, BCM_E_MEMORY); 9149 } 9150 return; 9151 } 9152 async->next = NULL; 9153 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_RANGECHECK_GET; 9154 async->run = bcmx_async_run; 9155 async->callback = async_callback; 9156 async->cookie = async_cookie; 9157 async->args.field_qualify_RangeCheck_get.entry = entry; 9158 async->args.field_qualify_RangeCheck_get.max_count = max_count; 9159 async->args.field_qualify_RangeCheck_get.range = range; 9160 async->args.field_qualify_RangeCheck_get.invert = invert; 9161 async->args.field_qualify_RangeCheck_get.count = count; 9162 bcm_async_add((bcm_async_req_t *)async); 9163 } 9164 9165 void 9166 bcmx_field_qualify_Snap_async( 9167 bcm_field_entry_t entry, 9168 bcm_field_snap_header_t data, 9169 bcm_field_snap_header_t mask, 9170 bcmx_async_cb_t async_callback, 9171 void *async_cookie) 9172 { 9173 bcmx_async_req_t *async; 9174 9175 async = sal_alloc(sizeof(*async), "bcmx_async"); 9176 if (async == NULL) { 9177 if (async_callback != NULL) { 9178 (*async_callback)(async_cookie, BCM_E_MEMORY); 9179 } 9180 return; 9181 } 9182 async->next = NULL; 9183 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SNAP; 9184 async->run = bcmx_async_run; 9185 async->callback = async_callback; 9186 async->cookie = async_cookie; 9187 async->args.field_qualify_Snap.entry = entry; 9188 async->args.field_qualify_Snap.data = data; 9189 async->args.field_qualify_Snap.mask = mask; 9190 bcm_async_add((bcm_async_req_t *)async); 9191 } 9192 9193 void 9194 bcmx_field_qualify_Snap_get_async( 9195 bcm_field_entry_t entry, 9196 bcm_field_snap_header_t * data, 9197 bcm_field_snap_header_t * mask, 9198 bcmx_async_cb_t async_callback, 9199 void *async_cookie) 9200 { 9201 bcmx_async_req_t *async; 9202 9203 async = sal_alloc(sizeof(*async), "bcmx_async"); 9204 if (async == NULL) { 9205 if (async_callback != NULL) { 9206 (*async_callback)(async_cookie, BCM_E_MEMORY); 9207 } 9208 return; 9209 } 9210 async->next = NULL; 9211 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SNAP_GET; 9212 async->run = bcmx_async_run; 9213 async->callback = async_callback; 9214 async->cookie = async_cookie; 9215 async->args.field_qualify_Snap_get.entry = entry; 9216 async->args.field_qualify_Snap_get.data = data; 9217 async->args.field_qualify_Snap_get.mask = mask; 9218 bcm_async_add((bcm_async_req_t *)async); 9219 } 9220 9221 void 9222 bcmx_field_qualify_SrcClassField_async( 9223 bcm_field_entry_t entry, 9224 uint32 data, 9225 uint32 mask, 9226 bcmx_async_cb_t async_callback, 9227 void *async_cookie) 9228 { 9229 bcmx_async_req_t *async; 9230 9231 async = sal_alloc(sizeof(*async), "bcmx_async"); 9232 if (async == NULL) { 9233 if (async_callback != NULL) { 9234 (*async_callback)(async_cookie, BCM_E_MEMORY); 9235 } 9236 return; 9237 } 9238 async->next = NULL; 9239 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSFIELD; 9240 async->run = bcmx_async_run; 9241 async->callback = async_callback; 9242 async->cookie = async_cookie; 9243 async->args.field_qualify_SrcClassField.entry = entry; 9244 async->args.field_qualify_SrcClassField.data = data; 9245 async->args.field_qualify_SrcClassField.mask = mask; 9246 bcm_async_add((bcm_async_req_t *)async); 9247 } 9248 9249 void 9250 bcmx_field_qualify_SrcClassField_get_async( 9251 bcm_field_entry_t entry, 9252 uint32 * data, 9253 uint32 * mask, 9254 bcmx_async_cb_t async_callback, 9255 void *async_cookie) 9256 { 9257 bcmx_async_req_t *async; 9258 9259 async = sal_alloc(sizeof(*async), "bcmx_async"); 9260 if (async == NULL) { 9261 if (async_callback != NULL) { 9262 (*async_callback)(async_cookie, BCM_E_MEMORY); 9263 } 9264 return; 9265 } 9266 async->next = NULL; 9267 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSFIELD_GET; 9268 async->run = bcmx_async_run; 9269 async->callback = async_callback; 9270 async->cookie = async_cookie; 9271 async->args.field_qualify_SrcClassField_get.entry = entry; 9272 async->args.field_qualify_SrcClassField_get.data = data; 9273 async->args.field_qualify_SrcClassField_get.mask = mask; 9274 bcm_async_add((bcm_async_req_t *)async); 9275 } 9276 9277 void 9278 bcmx_field_qualify_SrcClassL2_async( 9279 bcm_field_entry_t entry, 9280 uint32 data, 9281 uint32 mask, 9282 bcmx_async_cb_t async_callback, 9283 void *async_cookie) 9284 { 9285 bcmx_async_req_t *async; 9286 9287 async = sal_alloc(sizeof(*async), "bcmx_async"); 9288 if (async == NULL) { 9289 if (async_callback != NULL) { 9290 (*async_callback)(async_cookie, BCM_E_MEMORY); 9291 } 9292 return; 9293 } 9294 async->next = NULL; 9295 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL2; 9296 async->run = bcmx_async_run; 9297 async->callback = async_callback; 9298 async->cookie = async_cookie; 9299 async->args.field_qualify_SrcClassL2.entry = entry; 9300 async->args.field_qualify_SrcClassL2.data = data; 9301 async->args.field_qualify_SrcClassL2.mask = mask; 9302 bcm_async_add((bcm_async_req_t *)async); 9303 } 9304 9305 void 9306 bcmx_field_qualify_SrcClassL2_get_async( 9307 bcm_field_entry_t entry, 9308 uint32 * data, 9309 uint32 * mask, 9310 bcmx_async_cb_t async_callback, 9311 void *async_cookie) 9312 { 9313 bcmx_async_req_t *async; 9314 9315 async = sal_alloc(sizeof(*async), "bcmx_async"); 9316 if (async == NULL) { 9317 if (async_callback != NULL) { 9318 (*async_callback)(async_cookie, BCM_E_MEMORY); 9319 } 9320 return; 9321 } 9322 async->next = NULL; 9323 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL2_GET; 9324 async->run = bcmx_async_run; 9325 async->callback = async_callback; 9326 async->cookie = async_cookie; 9327 async->args.field_qualify_SrcClassL2_get.entry = entry; 9328 async->args.field_qualify_SrcClassL2_get.data = data; 9329 async->args.field_qualify_SrcClassL2_get.mask = mask; 9330 bcm_async_add((bcm_async_req_t *)async); 9331 } 9332 9333 void 9334 bcmx_field_qualify_SrcClassL3_async( 9335 bcm_field_entry_t entry, 9336 uint32 data, 9337 uint32 mask, 9338 bcmx_async_cb_t async_callback, 9339 void *async_cookie) 9340 { 9341 bcmx_async_req_t *async; 9342 9343 async = sal_alloc(sizeof(*async), "bcmx_async"); 9344 if (async == NULL) { 9345 if (async_callback != NULL) { 9346 (*async_callback)(async_cookie, BCM_E_MEMORY); 9347 } 9348 return; 9349 } 9350 async->next = NULL; 9351 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL3; 9352 async->run = bcmx_async_run; 9353 async->callback = async_callback; 9354 async->cookie = async_cookie; 9355 async->args.field_qualify_SrcClassL3.entry = entry; 9356 async->args.field_qualify_SrcClassL3.data = data; 9357 async->args.field_qualify_SrcClassL3.mask = mask; 9358 bcm_async_add((bcm_async_req_t *)async); 9359 } 9360 9361 void 9362 bcmx_field_qualify_SrcClassL3_get_async( 9363 bcm_field_entry_t entry, 9364 uint32 * data, 9365 uint32 * mask, 9366 bcmx_async_cb_t async_callback, 9367 void *async_cookie) 9368 { 9369 bcmx_async_req_t *async; 9370 9371 async = sal_alloc(sizeof(*async), "bcmx_async"); 9372 if (async == NULL) { 9373 if (async_callback != NULL) { 9374 (*async_callback)(async_cookie, BCM_E_MEMORY); 9375 } 9376 return; 9377 } 9378 async->next = NULL; 9379 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL3_GET; 9380 async->run = bcmx_async_run; 9381 async->callback = async_callback; 9382 async->cookie = async_cookie; 9383 async->args.field_qualify_SrcClassL3_get.entry = entry; 9384 async->args.field_qualify_SrcClassL3_get.data = data; 9385 async->args.field_qualify_SrcClassL3_get.mask = mask; 9386 bcm_async_add((bcm_async_req_t *)async); 9387 } 9388 9389 void 9390 bcmx_field_qualify_SrcIp_async( 9391 bcm_field_entry_t entry, 9392 bcm_ip_t data, 9393 bcm_ip_t mask, 9394 bcmx_async_cb_t async_callback, 9395 void *async_cookie) 9396 { 9397 bcmx_async_req_t *async; 9398 9399 async = sal_alloc(sizeof(*async), "bcmx_async"); 9400 if (async == NULL) { 9401 if (async_callback != NULL) { 9402 (*async_callback)(async_cookie, BCM_E_MEMORY); 9403 } 9404 return; 9405 } 9406 async->next = NULL; 9407 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP; 9408 async->run = bcmx_async_run; 9409 async->callback = async_callback; 9410 async->cookie = async_cookie; 9411 async->args.field_qualify_SrcIp.entry = entry; 9412 async->args.field_qualify_SrcIp.data = data; 9413 async->args.field_qualify_SrcIp.mask = mask; 9414 bcm_async_add((bcm_async_req_t *)async); 9415 } 9416 9417 void 9418 bcmx_field_qualify_SrcIp6_async( 9419 bcm_field_entry_t entry, 9420 bcm_ip6_t data, 9421 bcm_ip6_t mask, 9422 bcmx_async_cb_t async_callback, 9423 void *async_cookie) 9424 { 9425 bcmx_async_req_t *async; 9426 9427 async = sal_alloc(sizeof(*async), "bcmx_async"); 9428 if (async == NULL) { 9429 if (async_callback != NULL) { 9430 (*async_callback)(async_cookie, BCM_E_MEMORY); 9431 } 9432 return; 9433 } 9434 async->next = NULL; 9435 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6; 9436 async->run = bcmx_async_run; 9437 async->callback = async_callback; 9438 async->cookie = async_cookie; 9439 async->args.field_qualify_SrcIp6.entry = entry; 9440 async->args.field_qualify_SrcIp6.data = (uint8 *)data; 9441 async->args.field_qualify_SrcIp6.mask = (uint8 *)mask; 9442 bcm_async_add((bcm_async_req_t *)async); 9443 } 9444 9445 void 9446 bcmx_field_qualify_SrcIp6High_async( 9447 bcm_field_entry_t entry, 9448 bcm_ip6_t data, 9449 bcm_ip6_t mask, 9450 bcmx_async_cb_t async_callback, 9451 void *async_cookie) 9452 { 9453 bcmx_async_req_t *async; 9454 9455 async = sal_alloc(sizeof(*async), "bcmx_async"); 9456 if (async == NULL) { 9457 if (async_callback != NULL) { 9458 (*async_callback)(async_cookie, BCM_E_MEMORY); 9459 } 9460 return; 9461 } 9462 async->next = NULL; 9463 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6HIGH; 9464 async->run = bcmx_async_run; 9465 async->callback = async_callback; 9466 async->cookie = async_cookie; 9467 async->args.field_qualify_SrcIp6High.entry = entry; 9468 async->args.field_qualify_SrcIp6High.data = (uint8 *)data; 9469 async->args.field_qualify_SrcIp6High.mask = (uint8 *)mask; 9470 bcm_async_add((bcm_async_req_t *)async); 9471 } 9472 9473 void 9474 bcmx_field_qualify_SrcIp6High_get_async( 9475 bcm_field_entry_t entry, 9476 bcm_ip6_t * data, 9477 bcm_ip6_t * mask, 9478 bcmx_async_cb_t async_callback, 9479 void *async_cookie) 9480 { 9481 bcmx_async_req_t *async; 9482 9483 async = sal_alloc(sizeof(*async), "bcmx_async"); 9484 if (async == NULL) { 9485 if (async_callback != NULL) { 9486 (*async_callback)(async_cookie, BCM_E_MEMORY); 9487 } 9488 return; 9489 } 9490 async->next = NULL; 9491 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6HIGH_GET; 9492 async->run = bcmx_async_run; 9493 async->callback = async_callback; 9494 async->cookie = async_cookie; 9495 async->args.field_qualify_SrcIp6High_get.entry = entry; 9496 async->args.field_qualify_SrcIp6High_get.data = data; 9497 async->args.field_qualify_SrcIp6High_get.mask = mask; 9498 bcm_async_add((bcm_async_req_t *)async); 9499 } 9500 9501 void 9502 bcmx_field_qualify_SrcIp6Low_async( 9503 bcm_field_entry_t entry, 9504 bcm_ip6_t data, 9505 bcm_ip6_t mask, 9506 bcmx_async_cb_t async_callback, 9507 void *async_cookie) 9508 { 9509 bcmx_async_req_t *async; 9510 9511 async = sal_alloc(sizeof(*async), "bcmx_async"); 9512 if (async == NULL) { 9513 if (async_callback != NULL) { 9514 (*async_callback)(async_cookie, BCM_E_MEMORY); 9515 } 9516 return; 9517 } 9518 async->next = NULL; 9519 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6LOW; 9520 async->run = bcmx_async_run; 9521 async->callback = async_callback; 9522 async->cookie = async_cookie; 9523 async->args.field_qualify_SrcIp6Low.entry = entry; 9524 async->args.field_qualify_SrcIp6Low.data = (uint8 *)data; 9525 async->args.field_qualify_SrcIp6Low.mask = (uint8 *)mask; 9526 bcm_async_add((bcm_async_req_t *)async); 9527 } 9528 9529 void 9530 bcmx_field_qualify_SrcIp6Low_get_async( 9531 bcm_field_entry_t entry, 9532 bcm_ip6_t * data, 9533 bcm_ip6_t * mask, 9534 bcmx_async_cb_t async_callback, 9535 void *async_cookie) 9536 { 9537 bcmx_async_req_t *async; 9538 9539 async = sal_alloc(sizeof(*async), "bcmx_async"); 9540 if (async == NULL) { 9541 if (async_callback != NULL) { 9542 (*async_callback)(async_cookie, BCM_E_MEMORY); 9543 } 9544 return; 9545 } 9546 async->next = NULL; 9547 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6LOW_GET; 9548 async->run = bcmx_async_run; 9549 async->callback = async_callback; 9550 async->cookie = async_cookie; 9551 async->args.field_qualify_SrcIp6Low_get.entry = entry; 9552 async->args.field_qualify_SrcIp6Low_get.data = data; 9553 async->args.field_qualify_SrcIp6Low_get.mask = mask; 9554 bcm_async_add((bcm_async_req_t *)async); 9555 } 9556 9557 void 9558 bcmx_field_qualify_SrcIp6_get_async( 9559 bcm_field_entry_t entry, 9560 bcm_ip6_t * data, 9561 bcm_ip6_t * mask, 9562 bcmx_async_cb_t async_callback, 9563 void *async_cookie) 9564 { 9565 bcmx_async_req_t *async; 9566 9567 async = sal_alloc(sizeof(*async), "bcmx_async"); 9568 if (async == NULL) { 9569 if (async_callback != NULL) { 9570 (*async_callback)(async_cookie, BCM_E_MEMORY); 9571 } 9572 return; 9573 } 9574 async->next = NULL; 9575 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6_GET; 9576 async->run = bcmx_async_run; 9577 async->callback = async_callback; 9578 async->cookie = async_cookie; 9579 async->args.field_qualify_SrcIp6_get.entry = entry; 9580 async->args.field_qualify_SrcIp6_get.data = data; 9581 async->args.field_qualify_SrcIp6_get.mask = mask; 9582 bcm_async_add((bcm_async_req_t *)async); 9583 } 9584 9585 void 9586 bcmx_field_qualify_SrcIp_get_async( 9587 bcm_field_entry_t entry, 9588 bcm_ip_t * data, 9589 bcm_ip_t * mask, 9590 bcmx_async_cb_t async_callback, 9591 void *async_cookie) 9592 { 9593 bcmx_async_req_t *async; 9594 9595 async = sal_alloc(sizeof(*async), "bcmx_async"); 9596 if (async == NULL) { 9597 if (async_callback != NULL) { 9598 (*async_callback)(async_cookie, BCM_E_MEMORY); 9599 } 9600 return; 9601 } 9602 async->next = NULL; 9603 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP_GET; 9604 async->run = bcmx_async_run; 9605 async->callback = async_callback; 9606 async->cookie = async_cookie; 9607 async->args.field_qualify_SrcIp_get.entry = entry; 9608 async->args.field_qualify_SrcIp_get.data = data; 9609 async->args.field_qualify_SrcIp_get.mask = mask; 9610 bcm_async_add((bcm_async_req_t *)async); 9611 } 9612 9613 void 9614 bcmx_field_qualify_SrcMac_async( 9615 bcm_field_entry_t entry, 9616 bcm_mac_t data, 9617 bcm_mac_t mask, 9618 bcmx_async_cb_t async_callback, 9619 void *async_cookie) 9620 { 9621 bcmx_async_req_t *async; 9622 9623 async = sal_alloc(sizeof(*async), "bcmx_async"); 9624 if (async == NULL) { 9625 if (async_callback != NULL) { 9626 (*async_callback)(async_cookie, BCM_E_MEMORY); 9627 } 9628 return; 9629 } 9630 async->next = NULL; 9631 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMAC; 9632 async->run = bcmx_async_run; 9633 async->callback = async_callback; 9634 async->cookie = async_cookie; 9635 async->args.field_qualify_SrcMac.entry = entry; 9636 async->args.field_qualify_SrcMac.data = (uint8 *)data; 9637 async->args.field_qualify_SrcMac.mask = (uint8 *)mask; 9638 bcm_async_add((bcm_async_req_t *)async); 9639 } 9640 9641 void 9642 bcmx_field_qualify_SrcMac_get_async( 9643 bcm_field_entry_t entry, 9644 bcm_mac_t * data, 9645 bcm_mac_t * mask, 9646 bcmx_async_cb_t async_callback, 9647 void *async_cookie) 9648 { 9649 bcmx_async_req_t *async; 9650 9651 async = sal_alloc(sizeof(*async), "bcmx_async"); 9652 if (async == NULL) { 9653 if (async_callback != NULL) { 9654 (*async_callback)(async_cookie, BCM_E_MEMORY); 9655 } 9656 return; 9657 } 9658 async->next = NULL; 9659 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMAC_GET; 9660 async->run = bcmx_async_run; 9661 async->callback = async_callback; 9662 async->cookie = async_cookie; 9663 async->args.field_qualify_SrcMac_get.entry = entry; 9664 async->args.field_qualify_SrcMac_get.data = data; 9665 async->args.field_qualify_SrcMac_get.mask = mask; 9666 bcm_async_add((bcm_async_req_t *)async); 9667 } 9668 9669 void 9670 bcmx_field_qualify_SrcMimGport_async( 9671 bcm_field_entry_t entry, 9672 bcm_gport_t mim_port_id, 9673 bcmx_async_cb_t async_callback, 9674 void *async_cookie) 9675 { 9676 bcmx_async_req_t *async; 9677 9678 async = sal_alloc(sizeof(*async), "bcmx_async"); 9679 if (async == NULL) { 9680 if (async_callback != NULL) { 9681 (*async_callback)(async_cookie, BCM_E_MEMORY); 9682 } 9683 return; 9684 } 9685 async->next = NULL; 9686 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMIMGPORT; 9687 async->run = bcmx_async_run; 9688 async->callback = async_callback; 9689 async->cookie = async_cookie; 9690 async->args.field_qualify_SrcMimGport.entry = entry; 9691 async->args.field_qualify_SrcMimGport.mim_port_id = mim_port_id; 9692 bcm_async_add((bcm_async_req_t *)async); 9693 } 9694 9695 void 9696 bcmx_field_qualify_SrcMimGport_get_async( 9697 bcm_field_entry_t entry, 9698 bcm_gport_t * mim_port_id, 9699 bcmx_async_cb_t async_callback, 9700 void *async_cookie) 9701 { 9702 bcmx_async_req_t *async; 9703 9704 async = sal_alloc(sizeof(*async), "bcmx_async"); 9705 if (async == NULL) { 9706 if (async_callback != NULL) { 9707 (*async_callback)(async_cookie, BCM_E_MEMORY); 9708 } 9709 return; 9710 } 9711 async->next = NULL; 9712 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMIMGPORT_GET; 9713 async->run = bcmx_async_run; 9714 async->callback = async_callback; 9715 async->cookie = async_cookie; 9716 async->args.field_qualify_SrcMimGport_get.entry = entry; 9717 async->args.field_qualify_SrcMimGport_get.mim_port_id = mim_port_id; 9718 bcm_async_add((bcm_async_req_t *)async); 9719 } 9720 9721 void 9722 bcmx_field_qualify_SrcModPortGport_async( 9723 bcm_field_entry_t entry, 9724 bcm_gport_t data, 9725 bcmx_async_cb_t async_callback, 9726 void *async_cookie) 9727 { 9728 bcmx_async_req_t *async; 9729 9730 async = sal_alloc(sizeof(*async), "bcmx_async"); 9731 if (async == NULL) { 9732 if (async_callback != NULL) { 9733 (*async_callback)(async_cookie, BCM_E_MEMORY); 9734 } 9735 return; 9736 } 9737 async->next = NULL; 9738 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODPORTGPORT; 9739 async->run = bcmx_async_run; 9740 async->callback = async_callback; 9741 async->cookie = async_cookie; 9742 async->args.field_qualify_SrcModPortGport.entry = entry; 9743 async->args.field_qualify_SrcModPortGport.data = data; 9744 bcm_async_add((bcm_async_req_t *)async); 9745 } 9746 9747 void 9748 bcmx_field_qualify_SrcModPortGport_get_async( 9749 bcm_field_entry_t entry, 9750 bcm_gport_t * data, 9751 bcmx_async_cb_t async_callback, 9752 void *async_cookie) 9753 { 9754 bcmx_async_req_t *async; 9755 9756 async = sal_alloc(sizeof(*async), "bcmx_async"); 9757 if (async == NULL) { 9758 if (async_callback != NULL) { 9759 (*async_callback)(async_cookie, BCM_E_MEMORY); 9760 } 9761 return; 9762 } 9763 async->next = NULL; 9764 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODPORTGPORT_GET; 9765 async->run = bcmx_async_run; 9766 async->callback = async_callback; 9767 async->cookie = async_cookie; 9768 async->args.field_qualify_SrcModPortGport_get.entry = entry; 9769 async->args.field_qualify_SrcModPortGport_get.data = data; 9770 bcm_async_add((bcm_async_req_t *)async); 9771 } 9772 9773 void 9774 bcmx_field_qualify_SrcModuleGport_async( 9775 bcm_field_entry_t entry, 9776 bcm_gport_t data, 9777 bcmx_async_cb_t async_callback, 9778 void *async_cookie) 9779 { 9780 bcmx_async_req_t *async; 9781 9782 async = sal_alloc(sizeof(*async), "bcmx_async"); 9783 if (async == NULL) { 9784 if (async_callback != NULL) { 9785 (*async_callback)(async_cookie, BCM_E_MEMORY); 9786 } 9787 return; 9788 } 9789 async->next = NULL; 9790 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODULEGPORT; 9791 async->run = bcmx_async_run; 9792 async->callback = async_callback; 9793 async->cookie = async_cookie; 9794 async->args.field_qualify_SrcModuleGport.entry = entry; 9795 async->args.field_qualify_SrcModuleGport.data = data; 9796 bcm_async_add((bcm_async_req_t *)async); 9797 } 9798 9799 void 9800 bcmx_field_qualify_SrcModuleGport_get_async( 9801 bcm_field_entry_t entry, 9802 bcm_gport_t * data, 9803 bcmx_async_cb_t async_callback, 9804 void *async_cookie) 9805 { 9806 bcmx_async_req_t *async; 9807 9808 async = sal_alloc(sizeof(*async), "bcmx_async"); 9809 if (async == NULL) { 9810 if (async_callback != NULL) { 9811 (*async_callback)(async_cookie, BCM_E_MEMORY); 9812 } 9813 return; 9814 } 9815 async->next = NULL; 9816 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODULEGPORT_GET; 9817 async->run = bcmx_async_run; 9818 async->callback = async_callback; 9819 async->cookie = async_cookie; 9820 async->args.field_qualify_SrcModuleGport_get.entry = entry; 9821 async->args.field_qualify_SrcModuleGport_get.data = data; 9822 bcm_async_add((bcm_async_req_t *)async); 9823 } 9824 9825 void 9826 bcmx_field_qualify_SrcMplsGport_async( 9827 bcm_field_entry_t entry, 9828 bcm_gport_t mpls_port_id, 9829 bcmx_async_cb_t async_callback, 9830 void *async_cookie) 9831 { 9832 bcmx_async_req_t *async; 9833 9834 async = sal_alloc(sizeof(*async), "bcmx_async"); 9835 if (async == NULL) { 9836 if (async_callback != NULL) { 9837 (*async_callback)(async_cookie, BCM_E_MEMORY); 9838 } 9839 return; 9840 } 9841 async->next = NULL; 9842 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMPLSGPORT; 9843 async->run = bcmx_async_run; 9844 async->callback = async_callback; 9845 async->cookie = async_cookie; 9846 async->args.field_qualify_SrcMplsGport.entry = entry; 9847 async->args.field_qualify_SrcMplsGport.mpls_port_id = mpls_port_id; 9848 bcm_async_add((bcm_async_req_t *)async); 9849 } 9850 9851 void 9852 bcmx_field_qualify_SrcMplsGport_get_async( 9853 bcm_field_entry_t entry, 9854 bcm_gport_t * mpls_port_id, 9855 bcmx_async_cb_t async_callback, 9856 void *async_cookie) 9857 { 9858 bcmx_async_req_t *async; 9859 9860 async = sal_alloc(sizeof(*async), "bcmx_async"); 9861 if (async == NULL) { 9862 if (async_callback != NULL) { 9863 (*async_callback)(async_cookie, BCM_E_MEMORY); 9864 } 9865 return; 9866 } 9867 async->next = NULL; 9868 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMPLSGPORT_GET; 9869 async->run = bcmx_async_run; 9870 async->callback = async_callback; 9871 async->cookie = async_cookie; 9872 async->args.field_qualify_SrcMplsGport_get.entry = entry; 9873 async->args.field_qualify_SrcMplsGport_get.mpls_port_id = mpls_port_id; 9874 bcm_async_add((bcm_async_req_t *)async); 9875 } 9876 9877 void 9878 bcmx_field_qualify_SrcPort_async( 9879 bcm_field_entry_t entry, 9880 bcmx_lport_t port, 9881 bcmx_async_cb_t async_callback, 9882 void *async_cookie) 9883 { 9884 bcmx_async_req_t *async; 9885 9886 async = sal_alloc(sizeof(*async), "bcmx_async"); 9887 if (async == NULL) { 9888 if (async_callback != NULL) { 9889 (*async_callback)(async_cookie, BCM_E_MEMORY); 9890 } 9891 return; 9892 } 9893 async->next = NULL; 9894 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCPORT; 9895 async->run = bcmx_async_run; 9896 async->callback = async_callback; 9897 async->cookie = async_cookie; 9898 async->args.field_qualify_SrcPort.entry = entry; 9899 async->args.field_qualify_SrcPort.port = port; 9900 bcm_async_add((bcm_async_req_t *)async); 9901 } 9902 9903 void 9904 bcmx_field_qualify_SrcPort_get_async( 9905 bcm_field_entry_t entry, 9906 bcm_module_t * data_modid, 9907 bcm_module_t * mask_modid, 9908 bcm_port_t * data_port, 9909 bcm_port_t * mask_port, 9910 bcmx_async_cb_t async_callback, 9911 void *async_cookie) 9912 { 9913 bcmx_async_req_t *async; 9914 9915 async = sal_alloc(sizeof(*async), "bcmx_async"); 9916 if (async == NULL) { 9917 if (async_callback != NULL) { 9918 (*async_callback)(async_cookie, BCM_E_MEMORY); 9919 } 9920 return; 9921 } 9922 async->next = NULL; 9923 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCPORT_GET; 9924 async->run = bcmx_async_run; 9925 async->callback = async_callback; 9926 async->cookie = async_cookie; 9927 async->args.field_qualify_SrcPort_get.entry = entry; 9928 async->args.field_qualify_SrcPort_get.data_modid = data_modid; 9929 async->args.field_qualify_SrcPort_get.mask_modid = mask_modid; 9930 async->args.field_qualify_SrcPort_get.data_port = data_port; 9931 async->args.field_qualify_SrcPort_get.mask_port = mask_port; 9932 bcm_async_add((bcm_async_req_t *)async); 9933 } 9934 9935 void 9936 bcmx_field_qualify_SrcTrunk_async( 9937 bcm_field_entry_t entry, 9938 bcm_trunk_t tid, 9939 bcmx_async_cb_t async_callback, 9940 void *async_cookie) 9941 { 9942 bcmx_async_req_t *async; 9943 9944 async = sal_alloc(sizeof(*async), "bcmx_async"); 9945 if (async == NULL) { 9946 if (async_callback != NULL) { 9947 (*async_callback)(async_cookie, BCM_E_MEMORY); 9948 } 9949 return; 9950 } 9951 async->next = NULL; 9952 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCTRUNK; 9953 async->run = bcmx_async_run; 9954 async->callback = async_callback; 9955 async->cookie = async_cookie; 9956 async->args.field_qualify_SrcTrunk.entry = entry; 9957 async->args.field_qualify_SrcTrunk.tid = tid; 9958 bcm_async_add((bcm_async_req_t *)async); 9959 } 9960 9961 void 9962 bcmx_field_qualify_SrcTrunk_get_async( 9963 bcm_field_entry_t entry, 9964 bcm_trunk_t * data, 9965 bcm_trunk_t * mask, 9966 bcmx_async_cb_t async_callback, 9967 void *async_cookie) 9968 { 9969 bcmx_async_req_t *async; 9970 9971 async = sal_alloc(sizeof(*async), "bcmx_async"); 9972 if (async == NULL) { 9973 if (async_callback != NULL) { 9974 (*async_callback)(async_cookie, BCM_E_MEMORY); 9975 } 9976 return; 9977 } 9978 async->next = NULL; 9979 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCTRUNK_GET; 9980 async->run = bcmx_async_run; 9981 async->callback = async_callback; 9982 async->cookie = async_cookie; 9983 async->args.field_qualify_SrcTrunk_get.entry = entry; 9984 async->args.field_qualify_SrcTrunk_get.data = data; 9985 async->args.field_qualify_SrcTrunk_get.mask = mask; 9986 bcm_async_add((bcm_async_req_t *)async); 9987 } 9988 9989 void 9990 bcmx_field_qualify_SrcVirtualPortValid_async( 9991 bcm_field_entry_t entry, 9992 uint8 data, 9993 uint8 mask, 9994 bcmx_async_cb_t async_callback, 9995 void *async_cookie) 9996 { 9997 bcmx_async_req_t *async; 9998 9999 async = sal_alloc(sizeof(*async), "bcmx_async"); 10000 if (async == NULL) { 10001 if (async_callback != NULL) { 10002 (*async_callback)(async_cookie, BCM_E_MEMORY); 10003 } 10004 return; 10005 } 10006 async->next = NULL; 10007 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCVIRTUALPORTVALID; 10008 async->run = bcmx_async_run; 10009 async->callback = async_callback; 10010 async->cookie = async_cookie; 10011 async->args.field_qualify_SrcVirtualPortValid.entry = entry; 10012 async->args.field_qualify_SrcVirtualPortValid.data = data; 10013 async->args.field_qualify_SrcVirtualPortValid.mask = mask; 10014 bcm_async_add((bcm_async_req_t *)async); 10015 } 10016 10017 void 10018 bcmx_field_qualify_SrcVirtualPortValid_get_async( 10019 bcm_field_entry_t entry, 10020 uint8 * data, 10021 uint8 * mask, 10022 bcmx_async_cb_t async_callback, 10023 void *async_cookie) 10024 { 10025 bcmx_async_req_t *async; 10026 10027 async = sal_alloc(sizeof(*async), "bcmx_async"); 10028 if (async == NULL) { 10029 if (async_callback != NULL) { 10030 (*async_callback)(async_cookie, BCM_E_MEMORY); 10031 } 10032 return; 10033 } 10034 async->next = NULL; 10035 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCVIRTUALPORTVALID_GET; 10036 async->run = bcmx_async_run; 10037 async->callback = async_callback; 10038 async->cookie = async_cookie; 10039 async->args.field_qualify_SrcVirtualPortValid_get.entry = entry; 10040 async->args.field_qualify_SrcVirtualPortValid_get.data = data; 10041 async->args.field_qualify_SrcVirtualPortValid_get.mask = mask; 10042 bcm_async_add((bcm_async_req_t *)async); 10043 } 10044 10045 void 10046 bcmx_field_qualify_SrcWlanGport_async( 10047 bcm_field_entry_t entry, 10048 bcm_gport_t wlan_port_id, 10049 bcmx_async_cb_t async_callback, 10050 void *async_cookie) 10051 { 10052 bcmx_async_req_t *async; 10053 10054 async = sal_alloc(sizeof(*async), "bcmx_async"); 10055 if (async == NULL) { 10056 if (async_callback != NULL) { 10057 (*async_callback)(async_cookie, BCM_E_MEMORY); 10058 } 10059 return; 10060 } 10061 async->next = NULL; 10062 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCWLANGPORT; 10063 async->run = bcmx_async_run; 10064 async->callback = async_callback; 10065 async->cookie = async_cookie; 10066 async->args.field_qualify_SrcWlanGport.entry = entry; 10067 async->args.field_qualify_SrcWlanGport.wlan_port_id = wlan_port_id; 10068 bcm_async_add((bcm_async_req_t *)async); 10069 } 10070 10071 void 10072 bcmx_field_qualify_SrcWlanGport_get_async( 10073 bcm_field_entry_t entry, 10074 bcm_gport_t * wlan_port_id, 10075 bcmx_async_cb_t async_callback, 10076 void *async_cookie) 10077 { 10078 bcmx_async_req_t *async; 10079 10080 async = sal_alloc(sizeof(*async), "bcmx_async"); 10081 if (async == NULL) { 10082 if (async_callback != NULL) { 10083 (*async_callback)(async_cookie, BCM_E_MEMORY); 10084 } 10085 return; 10086 } 10087 async->next = NULL; 10088 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCWLANGPORT_GET; 10089 async->run = bcmx_async_run; 10090 async->callback = async_callback; 10091 async->cookie = async_cookie; 10092 async->args.field_qualify_SrcWlanGport_get.entry = entry; 10093 async->args.field_qualify_SrcWlanGport_get.wlan_port_id = wlan_port_id; 10094 bcm_async_add((bcm_async_req_t *)async); 10095 } 10096 10097 void 10098 bcmx_field_qualify_TcpControl_async( 10099 bcm_field_entry_t entry, 10100 uint8 data, 10101 uint8 mask, 10102 bcmx_async_cb_t async_callback, 10103 void *async_cookie) 10104 { 10105 bcmx_async_req_t *async; 10106 10107 async = sal_alloc(sizeof(*async), "bcmx_async"); 10108 if (async == NULL) { 10109 if (async_callback != NULL) { 10110 (*async_callback)(async_cookie, BCM_E_MEMORY); 10111 } 10112 return; 10113 } 10114 async->next = NULL; 10115 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPCONTROL; 10116 async->run = bcmx_async_run; 10117 async->callback = async_callback; 10118 async->cookie = async_cookie; 10119 async->args.field_qualify_TcpControl.entry = entry; 10120 async->args.field_qualify_TcpControl.data = data; 10121 async->args.field_qualify_TcpControl.mask = mask; 10122 bcm_async_add((bcm_async_req_t *)async); 10123 } 10124 10125 void 10126 bcmx_field_qualify_TcpControl_get_async( 10127 bcm_field_entry_t entry, 10128 uint8 * data, 10129 uint8 * mask, 10130 bcmx_async_cb_t async_callback, 10131 void *async_cookie) 10132 { 10133 bcmx_async_req_t *async; 10134 10135 async = sal_alloc(sizeof(*async), "bcmx_async"); 10136 if (async == NULL) { 10137 if (async_callback != NULL) { 10138 (*async_callback)(async_cookie, BCM_E_MEMORY); 10139 } 10140 return; 10141 } 10142 async->next = NULL; 10143 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPCONTROL_GET; 10144 async->run = bcmx_async_run; 10145 async->callback = async_callback; 10146 async->cookie = async_cookie; 10147 async->args.field_qualify_TcpControl_get.entry = entry; 10148 async->args.field_qualify_TcpControl_get.data = data; 10149 async->args.field_qualify_TcpControl_get.mask = mask; 10150 bcm_async_add((bcm_async_req_t *)async); 10151 } 10152 10153 void 10154 bcmx_field_qualify_TcpHeaderSize_async( 10155 bcm_field_entry_t entry, 10156 uint8 data, 10157 uint8 mask, 10158 bcmx_async_cb_t async_callback, 10159 void *async_cookie) 10160 { 10161 bcmx_async_req_t *async; 10162 10163 async = sal_alloc(sizeof(*async), "bcmx_async"); 10164 if (async == NULL) { 10165 if (async_callback != NULL) { 10166 (*async_callback)(async_cookie, BCM_E_MEMORY); 10167 } 10168 return; 10169 } 10170 async->next = NULL; 10171 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPHEADERSIZE; 10172 async->run = bcmx_async_run; 10173 async->callback = async_callback; 10174 async->cookie = async_cookie; 10175 async->args.field_qualify_TcpHeaderSize.entry = entry; 10176 async->args.field_qualify_TcpHeaderSize.data = data; 10177 async->args.field_qualify_TcpHeaderSize.mask = mask; 10178 bcm_async_add((bcm_async_req_t *)async); 10179 } 10180 10181 void 10182 bcmx_field_qualify_TcpHeaderSize_get_async( 10183 bcm_field_entry_t entry, 10184 uint8 * data, 10185 uint8 * mask, 10186 bcmx_async_cb_t async_callback, 10187 void *async_cookie) 10188 { 10189 bcmx_async_req_t *async; 10190 10191 async = sal_alloc(sizeof(*async), "bcmx_async"); 10192 if (async == NULL) { 10193 if (async_callback != NULL) { 10194 (*async_callback)(async_cookie, BCM_E_MEMORY); 10195 } 10196 return; 10197 } 10198 async->next = NULL; 10199 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPHEADERSIZE_GET; 10200 async->run = bcmx_async_run; 10201 async->callback = async_callback; 10202 async->cookie = async_cookie; 10203 async->args.field_qualify_TcpHeaderSize_get.entry = entry; 10204 async->args.field_qualify_TcpHeaderSize_get.data = data; 10205 async->args.field_qualify_TcpHeaderSize_get.mask = mask; 10206 bcm_async_add((bcm_async_req_t *)async); 10207 } 10208 10209 void 10210 bcmx_field_qualify_TcpSequenceZero_async( 10211 bcm_field_entry_t entry, 10212 uint32 flag, 10213 bcmx_async_cb_t async_callback, 10214 void *async_cookie) 10215 { 10216 bcmx_async_req_t *async; 10217 10218 async = sal_alloc(sizeof(*async), "bcmx_async"); 10219 if (async == NULL) { 10220 if (async_callback != NULL) { 10221 (*async_callback)(async_cookie, BCM_E_MEMORY); 10222 } 10223 return; 10224 } 10225 async->next = NULL; 10226 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPSEQUENCEZERO; 10227 async->run = bcmx_async_run; 10228 async->callback = async_callback; 10229 async->cookie = async_cookie; 10230 async->args.field_qualify_TcpSequenceZero.entry = entry; 10231 async->args.field_qualify_TcpSequenceZero.flag = flag; 10232 bcm_async_add((bcm_async_req_t *)async); 10233 } 10234 10235 void 10236 bcmx_field_qualify_TcpSequenceZero_get_async( 10237 bcm_field_entry_t entry, 10238 uint32 * flag, 10239 bcmx_async_cb_t async_callback, 10240 void *async_cookie) 10241 { 10242 bcmx_async_req_t *async; 10243 10244 async = sal_alloc(sizeof(*async), "bcmx_async"); 10245 if (async == NULL) { 10246 if (async_callback != NULL) { 10247 (*async_callback)(async_cookie, BCM_E_MEMORY); 10248 } 10249 return; 10250 } 10251 async->next = NULL; 10252 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPSEQUENCEZERO_GET; 10253 async->run = bcmx_async_run; 10254 async->callback = async_callback; 10255 async->cookie = async_cookie; 10256 async->args.field_qualify_TcpSequenceZero_get.entry = entry; 10257 async->args.field_qualify_TcpSequenceZero_get.flag = flag; 10258 bcm_async_add((bcm_async_req_t *)async); 10259 } 10260 10261 void 10262 bcmx_field_qualify_Tos_async( 10263 bcm_field_entry_t entry, 10264 uint8 data, 10265 uint8 mask, 10266 bcmx_async_cb_t async_callback, 10267 void *async_cookie) 10268 { 10269 bcmx_async_req_t *async; 10270 10271 async = sal_alloc(sizeof(*async), "bcmx_async"); 10272 if (async == NULL) { 10273 if (async_callback != NULL) { 10274 (*async_callback)(async_cookie, BCM_E_MEMORY); 10275 } 10276 return; 10277 } 10278 async->next = NULL; 10279 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TOS; 10280 async->run = bcmx_async_run; 10281 async->callback = async_callback; 10282 async->cookie = async_cookie; 10283 async->args.field_qualify_Tos.entry = entry; 10284 async->args.field_qualify_Tos.data = data; 10285 async->args.field_qualify_Tos.mask = mask; 10286 bcm_async_add((bcm_async_req_t *)async); 10287 } 10288 10289 void 10290 bcmx_field_qualify_Tos_get_async( 10291 bcm_field_entry_t entry, 10292 uint8 * data, 10293 uint8 * mask, 10294 bcmx_async_cb_t async_callback, 10295 void *async_cookie) 10296 { 10297 bcmx_async_req_t *async; 10298 10299 async = sal_alloc(sizeof(*async), "bcmx_async"); 10300 if (async == NULL) { 10301 if (async_callback != NULL) { 10302 (*async_callback)(async_cookie, BCM_E_MEMORY); 10303 } 10304 return; 10305 } 10306 async->next = NULL; 10307 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TOS_GET; 10308 async->run = bcmx_async_run; 10309 async->callback = async_callback; 10310 async->cookie = async_cookie; 10311 async->args.field_qualify_Tos_get.entry = entry; 10312 async->args.field_qualify_Tos_get.data = data; 10313 async->args.field_qualify_Tos_get.mask = mask; 10314 bcm_async_add((bcm_async_req_t *)async); 10315 } 10316 10317 void 10318 bcmx_field_qualify_TranslatedVlanFormat_async( 10319 bcm_field_entry_t entry, 10320 uint8 data, 10321 uint8 mask, 10322 bcmx_async_cb_t async_callback, 10323 void *async_cookie) 10324 { 10325 bcmx_async_req_t *async; 10326 10327 async = sal_alloc(sizeof(*async), "bcmx_async"); 10328 if (async == NULL) { 10329 if (async_callback != NULL) { 10330 (*async_callback)(async_cookie, BCM_E_MEMORY); 10331 } 10332 return; 10333 } 10334 async->next = NULL; 10335 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TRANSLATEDVLANFORMAT; 10336 async->run = bcmx_async_run; 10337 async->callback = async_callback; 10338 async->cookie = async_cookie; 10339 async->args.field_qualify_TranslatedVlanFormat.entry = entry; 10340 async->args.field_qualify_TranslatedVlanFormat.data = data; 10341 async->args.field_qualify_TranslatedVlanFormat.mask = mask; 10342 bcm_async_add((bcm_async_req_t *)async); 10343 } 10344 10345 void 10346 bcmx_field_qualify_TranslatedVlanFormat_get_async( 10347 bcm_field_entry_t entry, 10348 uint8 * data, 10349 uint8 * mask, 10350 bcmx_async_cb_t async_callback, 10351 void *async_cookie) 10352 { 10353 bcmx_async_req_t *async; 10354 10355 async = sal_alloc(sizeof(*async), "bcmx_async"); 10356 if (async == NULL) { 10357 if (async_callback != NULL) { 10358 (*async_callback)(async_cookie, BCM_E_MEMORY); 10359 } 10360 return; 10361 } 10362 async->next = NULL; 10363 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TRANSLATEDVLANFORMAT_GET; 10364 async->run = bcmx_async_run; 10365 async->callback = async_callback; 10366 async->cookie = async_cookie; 10367 async->args.field_qualify_TranslatedVlanFormat_get.entry = entry; 10368 async->args.field_qualify_TranslatedVlanFormat_get.data = data; 10369 async->args.field_qualify_TranslatedVlanFormat_get.mask = mask; 10370 bcm_async_add((bcm_async_req_t *)async); 10371 } 10372 10373 void 10374 bcmx_field_qualify_Ttl_async( 10375 bcm_field_entry_t entry, 10376 uint8 data, 10377 uint8 mask, 10378 bcmx_async_cb_t async_callback, 10379 void *async_cookie) 10380 { 10381 bcmx_async_req_t *async; 10382 10383 async = sal_alloc(sizeof(*async), "bcmx_async"); 10384 if (async == NULL) { 10385 if (async_callback != NULL) { 10386 (*async_callback)(async_cookie, BCM_E_MEMORY); 10387 } 10388 return; 10389 } 10390 async->next = NULL; 10391 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TTL; 10392 async->run = bcmx_async_run; 10393 async->callback = async_callback; 10394 async->cookie = async_cookie; 10395 async->args.field_qualify_Ttl.entry = entry; 10396 async->args.field_qualify_Ttl.data = data; 10397 async->args.field_qualify_Ttl.mask = mask; 10398 bcm_async_add((bcm_async_req_t *)async); 10399 } 10400 10401 void 10402 bcmx_field_qualify_Ttl_get_async( 10403 bcm_field_entry_t entry, 10404 uint8 * data, 10405 uint8 * mask, 10406 bcmx_async_cb_t async_callback, 10407 void *async_cookie) 10408 { 10409 bcmx_async_req_t *async; 10410 10411 async = sal_alloc(sizeof(*async), "bcmx_async"); 10412 if (async == NULL) { 10413 if (async_callback != NULL) { 10414 (*async_callback)(async_cookie, BCM_E_MEMORY); 10415 } 10416 return; 10417 } 10418 async->next = NULL; 10419 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TTL_GET; 10420 async->run = bcmx_async_run; 10421 async->callback = async_callback; 10422 async->cookie = async_cookie; 10423 async->args.field_qualify_Ttl_get.entry = entry; 10424 async->args.field_qualify_Ttl_get.data = data; 10425 async->args.field_qualify_Ttl_get.mask = mask; 10426 bcm_async_add((bcm_async_req_t *)async); 10427 } 10428 10429 void 10430 bcmx_field_qualify_TunnelTerminated_async( 10431 bcm_field_entry_t entry, 10432 uint8 data, 10433 uint8 mask, 10434 bcmx_async_cb_t async_callback, 10435 void *async_cookie) 10436 { 10437 bcmx_async_req_t *async; 10438 10439 async = sal_alloc(sizeof(*async), "bcmx_async"); 10440 if (async == NULL) { 10441 if (async_callback != NULL) { 10442 (*async_callback)(async_cookie, BCM_E_MEMORY); 10443 } 10444 return; 10445 } 10446 async->next = NULL; 10447 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTERMINATED; 10448 async->run = bcmx_async_run; 10449 async->callback = async_callback; 10450 async->cookie = async_cookie; 10451 async->args.field_qualify_TunnelTerminated.entry = entry; 10452 async->args.field_qualify_TunnelTerminated.data = data; 10453 async->args.field_qualify_TunnelTerminated.mask = mask; 10454 bcm_async_add((bcm_async_req_t *)async); 10455 } 10456 10457 void 10458 bcmx_field_qualify_TunnelTerminated_get_async( 10459 bcm_field_entry_t entry, 10460 uint8 * data, 10461 uint8 * mask, 10462 bcmx_async_cb_t async_callback, 10463 void *async_cookie) 10464 { 10465 bcmx_async_req_t *async; 10466 10467 async = sal_alloc(sizeof(*async), "bcmx_async"); 10468 if (async == NULL) { 10469 if (async_callback != NULL) { 10470 (*async_callback)(async_cookie, BCM_E_MEMORY); 10471 } 10472 return; 10473 } 10474 async->next = NULL; 10475 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTERMINATED_GET; 10476 async->run = bcmx_async_run; 10477 async->callback = async_callback; 10478 async->cookie = async_cookie; 10479 async->args.field_qualify_TunnelTerminated_get.entry = entry; 10480 async->args.field_qualify_TunnelTerminated_get.data = data; 10481 async->args.field_qualify_TunnelTerminated_get.mask = mask; 10482 bcm_async_add((bcm_async_req_t *)async); 10483 } 10484 10485 void 10486 bcmx_field_qualify_TunnelType_async( 10487 bcm_field_entry_t entry, 10488 bcm_field_TunnelType_t tunnel_type, 10489 bcmx_async_cb_t async_callback, 10490 void *async_cookie) 10491 { 10492 bcmx_async_req_t *async; 10493 10494 async = sal_alloc(sizeof(*async), "bcmx_async"); 10495 if (async == NULL) { 10496 if (async_callback != NULL) { 10497 (*async_callback)(async_cookie, BCM_E_MEMORY); 10498 } 10499 return; 10500 } 10501 async->next = NULL; 10502 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTYPE; 10503 async->run = bcmx_async_run; 10504 async->callback = async_callback; 10505 async->cookie = async_cookie; 10506 async->args.field_qualify_TunnelType.entry = entry; 10507 async->args.field_qualify_TunnelType.tunnel_type = tunnel_type; 10508 bcm_async_add((bcm_async_req_t *)async); 10509 } 10510 10511 void 10512 bcmx_field_qualify_TunnelType_get_async( 10513 bcm_field_entry_t entry, 10514 bcm_field_TunnelType_t * tunnel_type, 10515 bcmx_async_cb_t async_callback, 10516 void *async_cookie) 10517 { 10518 bcmx_async_req_t *async; 10519 10520 async = sal_alloc(sizeof(*async), "bcmx_async"); 10521 if (async == NULL) { 10522 if (async_callback != NULL) { 10523 (*async_callback)(async_cookie, BCM_E_MEMORY); 10524 } 10525 return; 10526 } 10527 async->next = NULL; 10528 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTYPE_GET; 10529 async->run = bcmx_async_run; 10530 async->callback = async_callback; 10531 async->cookie = async_cookie; 10532 async->args.field_qualify_TunnelType_get.entry = entry; 10533 async->args.field_qualify_TunnelType_get.tunnel_type = tunnel_type; 10534 bcm_async_add((bcm_async_req_t *)async); 10535 } 10536 10537 void 10538 bcmx_field_qualify_VlanFormat_async( 10539 bcm_field_entry_t entry, 10540 uint8 data, 10541 uint8 mask, 10542 bcmx_async_cb_t async_callback, 10543 void *async_cookie) 10544 { 10545 bcmx_async_req_t *async; 10546 10547 async = sal_alloc(sizeof(*async), "bcmx_async"); 10548 if (async == NULL) { 10549 if (async_callback != NULL) { 10550 (*async_callback)(async_cookie, BCM_E_MEMORY); 10551 } 10552 return; 10553 } 10554 async->next = NULL; 10555 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANFORMAT; 10556 async->run = bcmx_async_run; 10557 async->callback = async_callback; 10558 async->cookie = async_cookie; 10559 async->args.field_qualify_VlanFormat.entry = entry; 10560 async->args.field_qualify_VlanFormat.data = data; 10561 async->args.field_qualify_VlanFormat.mask = mask; 10562 bcm_async_add((bcm_async_req_t *)async); 10563 } 10564 10565 void 10566 bcmx_field_qualify_VlanFormat_get_async( 10567 bcm_field_entry_t entry, 10568 uint8 * data, 10569 uint8 * mask, 10570 bcmx_async_cb_t async_callback, 10571 void *async_cookie) 10572 { 10573 bcmx_async_req_t *async; 10574 10575 async = sal_alloc(sizeof(*async), "bcmx_async"); 10576 if (async == NULL) { 10577 if (async_callback != NULL) { 10578 (*async_callback)(async_cookie, BCM_E_MEMORY); 10579 } 10580 return; 10581 } 10582 async->next = NULL; 10583 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANFORMAT_GET; 10584 async->run = bcmx_async_run; 10585 async->callback = async_callback; 10586 async->cookie = async_cookie; 10587 async->args.field_qualify_VlanFormat_get.entry = entry; 10588 async->args.field_qualify_VlanFormat_get.data = data; 10589 async->args.field_qualify_VlanFormat_get.mask = mask; 10590 bcm_async_add((bcm_async_req_t *)async); 10591 } 10592 10593 void 10594 bcmx_field_qualify_VlanTranslationHit_async( 10595 bcm_field_entry_t entry, 10596 uint8 data, 10597 uint8 mask, 10598 bcmx_async_cb_t async_callback, 10599 void *async_cookie) 10600 { 10601 bcmx_async_req_t *async; 10602 10603 async = sal_alloc(sizeof(*async), "bcmx_async"); 10604 if (async == NULL) { 10605 if (async_callback != NULL) { 10606 (*async_callback)(async_cookie, BCM_E_MEMORY); 10607 } 10608 return; 10609 } 10610 async->next = NULL; 10611 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANTRANSLATIONHIT; 10612 async->run = bcmx_async_run; 10613 async->callback = async_callback; 10614 async->cookie = async_cookie; 10615 async->args.field_qualify_VlanTranslationHit.entry = entry; 10616 async->args.field_qualify_VlanTranslationHit.data = data; 10617 async->args.field_qualify_VlanTranslationHit.mask = mask; 10618 bcm_async_add((bcm_async_req_t *)async); 10619 } 10620 10621 void 10622 bcmx_field_qualify_VlanTranslationHit_get_async( 10623 bcm_field_entry_t entry, 10624 uint8 * data, 10625 uint8 * mask, 10626 bcmx_async_cb_t async_callback, 10627 void *async_cookie) 10628 { 10629 bcmx_async_req_t *async; 10630 10631 async = sal_alloc(sizeof(*async), "bcmx_async"); 10632 if (async == NULL) { 10633 if (async_callback != NULL) { 10634 (*async_callback)(async_cookie, BCM_E_MEMORY); 10635 } 10636 return; 10637 } 10638 async->next = NULL; 10639 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANTRANSLATIONHIT_GET; 10640 async->run = bcmx_async_run; 10641 async->callback = async_callback; 10642 async->cookie = async_cookie; 10643 async->args.field_qualify_VlanTranslationHit_get.entry = entry; 10644 async->args.field_qualify_VlanTranslationHit_get.data = data; 10645 async->args.field_qualify_VlanTranslationHit_get.mask = mask; 10646 bcm_async_add((bcm_async_req_t *)async); 10647 } 10648 10649 void 10650 bcmx_field_qualify_VnTag_async( 10651 bcm_field_entry_t entry, 10652 uint32 data, 10653 uint32 mask, 10654 bcmx_async_cb_t async_callback, 10655 void *async_cookie) 10656 { 10657 bcmx_async_req_t *async; 10658 10659 async = sal_alloc(sizeof(*async), "bcmx_async"); 10660 if (async == NULL) { 10661 if (async_callback != NULL) { 10662 (*async_callback)(async_cookie, BCM_E_MEMORY); 10663 } 10664 return; 10665 } 10666 async->next = NULL; 10667 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VNTAG; 10668 async->run = bcmx_async_run; 10669 async->callback = async_callback; 10670 async->cookie = async_cookie; 10671 async->args.field_qualify_VnTag.entry = entry; 10672 async->args.field_qualify_VnTag.data = data; 10673 async->args.field_qualify_VnTag.mask = mask; 10674 bcm_async_add((bcm_async_req_t *)async); 10675 } 10676 10677 void 10678 bcmx_field_qualify_VnTag_get_async( 10679 bcm_field_entry_t entry, 10680 uint32 * data, 10681 uint32 * mask, 10682 bcmx_async_cb_t async_callback, 10683 void *async_cookie) 10684 { 10685 bcmx_async_req_t *async; 10686 10687 async = sal_alloc(sizeof(*async), "bcmx_async"); 10688 if (async == NULL) { 10689 if (async_callback != NULL) { 10690 (*async_callback)(async_cookie, BCM_E_MEMORY); 10691 } 10692 return; 10693 } 10694 async->next = NULL; 10695 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VNTAG_GET; 10696 async->run = bcmx_async_run; 10697 async->callback = async_callback; 10698 async->cookie = async_cookie; 10699 async->args.field_qualify_VnTag_get.entry = entry; 10700 async->args.field_qualify_VnTag_get.data = data; 10701 async->args.field_qualify_VnTag_get.mask = mask; 10702 bcm_async_add((bcm_async_req_t *)async); 10703 } 10704 10705 void 10706 bcmx_field_qualify_Vpn_async( 10707 bcm_field_entry_t entry, 10708 bcm_vpn_t data, 10709 bcm_vpn_t mask, 10710 bcmx_async_cb_t async_callback, 10711 void *async_cookie) 10712 { 10713 bcmx_async_req_t *async; 10714 10715 async = sal_alloc(sizeof(*async), "bcmx_async"); 10716 if (async == NULL) { 10717 if (async_callback != NULL) { 10718 (*async_callback)(async_cookie, BCM_E_MEMORY); 10719 } 10720 return; 10721 } 10722 async->next = NULL; 10723 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VPN; 10724 async->run = bcmx_async_run; 10725 async->callback = async_callback; 10726 async->cookie = async_cookie; 10727 async->args.field_qualify_Vpn.entry = entry; 10728 async->args.field_qualify_Vpn.data = data; 10729 async->args.field_qualify_Vpn.mask = mask; 10730 bcm_async_add((bcm_async_req_t *)async); 10731 } 10732 10733 void 10734 bcmx_field_qualify_Vpn_get_async( 10735 bcm_field_entry_t entry, 10736 bcm_vpn_t * data, 10737 bcm_vpn_t * mask, 10738 bcmx_async_cb_t async_callback, 10739 void *async_cookie) 10740 { 10741 bcmx_async_req_t *async; 10742 10743 async = sal_alloc(sizeof(*async), "bcmx_async"); 10744 if (async == NULL) { 10745 if (async_callback != NULL) { 10746 (*async_callback)(async_cookie, BCM_E_MEMORY); 10747 } 10748 return; 10749 } 10750 async->next = NULL; 10751 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VPN_GET; 10752 async->run = bcmx_async_run; 10753 async->callback = async_callback; 10754 async->cookie = async_cookie; 10755 async->args.field_qualify_Vpn_get.entry = entry; 10756 async->args.field_qualify_Vpn_get.data = data; 10757 async->args.field_qualify_Vpn_get.mask = mask; 10758 bcm_async_add((bcm_async_req_t *)async); 10759 } 10760 10761 void 10762 bcmx_field_qualify_Vrf_async( 10763 bcm_field_entry_t entry, 10764 uint32 data, 10765 uint32 mask, 10766 bcmx_async_cb_t async_callback, 10767 void *async_cookie) 10768 { 10769 bcmx_async_req_t *async; 10770 10771 async = sal_alloc(sizeof(*async), "bcmx_async"); 10772 if (async == NULL) { 10773 if (async_callback != NULL) { 10774 (*async_callback)(async_cookie, BCM_E_MEMORY); 10775 } 10776 return; 10777 } 10778 async->next = NULL; 10779 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VRF; 10780 async->run = bcmx_async_run; 10781 async->callback = async_callback; 10782 async->cookie = async_cookie; 10783 async->args.field_qualify_Vrf.entry = entry; 10784 async->args.field_qualify_Vrf.data = data; 10785 async->args.field_qualify_Vrf.mask = mask; 10786 bcm_async_add((bcm_async_req_t *)async); 10787 } 10788 10789 void 10790 bcmx_field_qualify_Vrf_get_async( 10791 bcm_field_entry_t entry, 10792 uint32 * data, 10793 uint32 * mask, 10794 bcmx_async_cb_t async_callback, 10795 void *async_cookie) 10796 { 10797 bcmx_async_req_t *async; 10798 10799 async = sal_alloc(sizeof(*async), "bcmx_async"); 10800 if (async == NULL) { 10801 if (async_callback != NULL) { 10802 (*async_callback)(async_cookie, BCM_E_MEMORY); 10803 } 10804 return; 10805 } 10806 async->next = NULL; 10807 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VRF_GET; 10808 async->run = bcmx_async_run; 10809 async->callback = async_callback; 10810 async->cookie = async_cookie; 10811 async->args.field_qualify_Vrf_get.entry = entry; 10812 async->args.field_qualify_Vrf_get.data = data; 10813 async->args.field_qualify_Vrf_get.mask = mask; 10814 bcm_async_add((bcm_async_req_t *)async); 10815 } 10816 10817 void 10818 bcmx_field_qualify_clear_async( 10819 bcm_field_entry_t entry, 10820 bcmx_async_cb_t async_callback, 10821 void *async_cookie) 10822 { 10823 bcmx_async_req_t *async; 10824 10825 async = sal_alloc(sizeof(*async), "bcmx_async"); 10826 if (async == NULL) { 10827 if (async_callback != NULL) { 10828 (*async_callback)(async_cookie, BCM_E_MEMORY); 10829 } 10830 return; 10831 } 10832 async->next = NULL; 10833 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_CLEAR; 10834 async->run = bcmx_async_run; 10835 async->callback = async_callback; 10836 async->cookie = async_cookie; 10837 async->args.field_qualify_clear.entry = entry; 10838 bcm_async_add((bcm_async_req_t *)async); 10839 } 10840 10841 void 10842 bcmx_field_qualify_data_async( 10843 bcm_field_entry_t eid, 10844 int qual_id, 10845 uint8 * data, 10846 uint8 * mask, 10847 uint16 length, 10848 bcmx_async_cb_t async_callback, 10849 void *async_cookie) 10850 { 10851 bcmx_async_req_t *async; 10852 10853 async = sal_alloc(sizeof(*async), "bcmx_async"); 10854 if (async == NULL) { 10855 if (async_callback != NULL) { 10856 (*async_callback)(async_cookie, BCM_E_MEMORY); 10857 } 10858 return; 10859 } 10860 async->next = NULL; 10861 async->type = BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DATA; 10862 async->run = bcmx_async_run; 10863 async->callback = async_callback; 10864 async->cookie = async_cookie; 10865 async->args.field_qualify_data.eid = eid; 10866 async->args.field_qualify_data.qual_id = qual_id; 10867 async->args.field_qualify_data.data = data; 10868 async->args.field_qualify_data.mask = mask; 10869 async->args.field_qualify_data.length = length; 10870 bcm_async_add((bcm_async_req_t *)async); 10871 } 10872 10873 void 10874 bcmx_field_range_create_async( 10875 bcm_field_range_t * range, 10876 uint32 flags, 10877 bcm_l4_port_t min, 10878 bcm_l4_port_t max, 10879 bcmx_async_cb_t async_callback, 10880 void *async_cookie) 10881 { 10882 bcmx_async_req_t *async; 10883 10884 async = sal_alloc(sizeof(*async), "bcmx_async"); 10885 if (async == NULL) { 10886 if (async_callback != NULL) { 10887 (*async_callback)(async_cookie, BCM_E_MEMORY); 10888 } 10889 return; 10890 } 10891 async->next = NULL; 10892 async->type = BCMX_ASYNC_ENTRY_FIELD_RANGE_CREATE; 10893 async->run = bcmx_async_run; 10894 async->callback = async_callback; 10895 async->cookie = async_cookie; 10896 async->args.field_range_create.range = range; 10897 async->args.field_range_create.flags = flags; 10898 async->args.field_range_create.min = min; 10899 async->args.field_range_create.max = max; 10900 bcm_async_add((bcm_async_req_t *)async); 10901 } 10902 10903 void 10904 bcmx_field_range_create_id_async( 10905 bcm_field_range_t range, 10906 uint32 flags, 10907 bcm_l4_port_t min, 10908 bcm_l4_port_t max, 10909 bcmx_async_cb_t async_callback, 10910 void *async_cookie) 10911 { 10912 bcmx_async_req_t *async; 10913 10914 async = sal_alloc(sizeof(*async), "bcmx_async"); 10915 if (async == NULL) { 10916 if (async_callback != NULL) { 10917 (*async_callback)(async_cookie, BCM_E_MEMORY); 10918 } 10919 return; 10920 } 10921 async->next = NULL; 10922 async->type = BCMX_ASYNC_ENTRY_FIELD_RANGE_CREATE_ID; 10923 async->run = bcmx_async_run; 10924 async->callback = async_callback; 10925 async->cookie = async_cookie; 10926 async->args.field_range_create_id.range = range; 10927 async->args.field_range_create_id.flags = flags; 10928 async->args.field_range_create_id.min = min; 10929 async->args.field_range_create_id.max = max; 10930 bcm_async_add((bcm_async_req_t *)async); 10931 } 10932 10933 void 10934 bcmx_field_range_destroy_async( 10935 bcm_field_range_t range, 10936 bcmx_async_cb_t async_callback, 10937 void *async_cookie) 10938 { 10939 bcmx_async_req_t *async; 10940 10941 async = sal_alloc(sizeof(*async), "bcmx_async"); 10942 if (async == NULL) { 10943 if (async_callback != NULL) { 10944 (*async_callback)(async_cookie, BCM_E_MEMORY); 10945 } 10946 return; 10947 } 10948 async->next = NULL; 10949 async->type = BCMX_ASYNC_ENTRY_FIELD_RANGE_DESTROY; 10950 async->run = bcmx_async_run; 10951 async->callback = async_callback; 10952 async->cookie = async_cookie; 10953 async->args.field_range_destroy.range = range; 10954 bcm_async_add((bcm_async_req_t *)async); 10955 } 10956 10957 void 10958 bcmx_field_range_get_async( 10959 bcm_field_range_t range, 10960 uint32 * flags, 10961 bcm_l4_port_t * min, 10962 bcm_l4_port_t * max, 10963 bcmx_async_cb_t async_callback, 10964 void *async_cookie) 10965 { 10966 bcmx_async_req_t *async; 10967 10968 async = sal_alloc(sizeof(*async), "bcmx_async"); 10969 if (async == NULL) { 10970 if (async_callback != NULL) { 10971 (*async_callback)(async_cookie, BCM_E_MEMORY); 10972 } 10973 return; 10974 } 10975 async->next = NULL; 10976 async->type = BCMX_ASYNC_ENTRY_FIELD_RANGE_GET; 10977 async->run = bcmx_async_run; 10978 async->callback = async_callback; 10979 async->cookie = async_cookie; 10980 async->args.field_range_get.range = range; 10981 async->args.field_range_get.flags = flags; 10982 async->args.field_range_get.min = min; 10983 async->args.field_range_get.max = max; 10984 bcm_async_add((bcm_async_req_t *)async); 10985 } 10986 10987 void 10988 bcmx_field_range_group_create_async( 10989 bcm_field_range_t * range, 10990 uint32 flags, 10991 bcm_l4_port_t min, 10992 bcm_l4_port_t max, 10993 bcm_if_group_t group, 10994 bcmx_async_cb_t async_callback, 10995 void *async_cookie) 10996 { 10997 bcmx_async_req_t *async; 10998 10999 async = sal_alloc(sizeof(*async), "bcmx_async"); 11000 if (async == NULL) { 11001 if (async_callback != NULL) { 11002 (*async_callback)(async_cookie, BCM_E_MEMORY); 11003 } 11004 return; 11005 } 11006 async->next = NULL; 11007 async->type = BCMX_ASYNC_ENTRY_FIELD_RANGE_GROUP_CREATE; 11008 async->run = bcmx_async_run; 11009 async->callback = async_callback; 11010 async->cookie = async_cookie; 11011 async->args.field_range_group_create.range = range; 11012 async->args.field_range_group_create.flags = flags; 11013 async->args.field_range_group_create.min = min; 11014 async->args.field_range_group_create.max = max; 11015 async->args.field_range_group_create.group = group; 11016 bcm_async_add((bcm_async_req_t *)async); 11017 } 11018 11019 void 11020 bcmx_field_range_group_create_id_async( 11021 bcm_field_range_t range, 11022 uint32 flags, 11023 bcm_l4_port_t min, 11024 bcm_l4_port_t max, 11025 bcm_if_group_t group, 11026 bcmx_async_cb_t async_callback, 11027 void *async_cookie) 11028 { 11029 bcmx_async_req_t *async; 11030 11031 async = sal_alloc(sizeof(*async), "bcmx_async"); 11032 if (async == NULL) { 11033 if (async_callback != NULL) { 11034 (*async_callback)(async_cookie, BCM_E_MEMORY); 11035 } 11036 return; 11037 } 11038 async->next = NULL; 11039 async->type = BCMX_ASYNC_ENTRY_FIELD_RANGE_GROUP_CREATE_ID; 11040 async->run = bcmx_async_run; 11041 async->callback = async_callback; 11042 async->cookie = async_cookie; 11043 async->args.field_range_group_create_id.range = range; 11044 async->args.field_range_group_create_id.flags = flags; 11045 async->args.field_range_group_create_id.min = min; 11046 async->args.field_range_group_create_id.max = max; 11047 async->args.field_range_group_create_id.group = group; 11048 bcm_async_add((bcm_async_req_t *)async); 11049 } 11050 11051 void 11052 bcmx_field_resync_async( 11053 bcmx_async_cb_t async_callback, 11054 void *async_cookie) 11055 { 11056 bcmx_async_req_t *async; 11057 11058 async = sal_alloc(sizeof(*async), "bcmx_async"); 11059 if (async == NULL) { 11060 if (async_callback != NULL) { 11061 (*async_callback)(async_cookie, BCM_E_MEMORY); 11062 } 11063 return; 11064 } 11065 async->next = NULL; 11066 async->type = BCMX_ASYNC_ENTRY_FIELD_RESYNC; 11067 async->run = bcmx_async_run; 11068 async->callback = async_callback; 11069 async->cookie = async_cookie; 11070 bcm_async_add((bcm_async_req_t *)async); 11071 } 11072 11073 void 11074 bcmx_field_stat_all_set_async( 11075 int stat_id, 11076 uint64 value, 11077 bcmx_async_cb_t async_callback, 11078 void *async_cookie) 11079 { 11080 bcmx_async_req_t *async; 11081 11082 async = sal_alloc(sizeof(*async), "bcmx_async"); 11083 if (async == NULL) { 11084 if (async_callback != NULL) { 11085 (*async_callback)(async_cookie, BCM_E_MEMORY); 11086 } 11087 return; 11088 } 11089 async->next = NULL; 11090 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_ALL_SET; 11091 async->run = bcmx_async_run; 11092 async->callback = async_callback; 11093 async->cookie = async_cookie; 11094 async->args.field_stat_all_set.stat_id = stat_id; 11095 async->args.field_stat_all_set.value = value; 11096 bcm_async_add((bcm_async_req_t *)async); 11097 } 11098 11099 void 11100 bcmx_field_stat_all_set32_async( 11101 int stat_id, 11102 uint32 value, 11103 bcmx_async_cb_t async_callback, 11104 void *async_cookie) 11105 { 11106 bcmx_async_req_t *async; 11107 11108 async = sal_alloc(sizeof(*async), "bcmx_async"); 11109 if (async == NULL) { 11110 if (async_callback != NULL) { 11111 (*async_callback)(async_cookie, BCM_E_MEMORY); 11112 } 11113 return; 11114 } 11115 async->next = NULL; 11116 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_ALL_SET32; 11117 async->run = bcmx_async_run; 11118 async->callback = async_callback; 11119 async->cookie = async_cookie; 11120 async->args.field_stat_all_set32.stat_id = stat_id; 11121 async->args.field_stat_all_set32.value = value; 11122 bcm_async_add((bcm_async_req_t *)async); 11123 } 11124 11125 void 11126 bcmx_field_stat_config_get_async( 11127 int stat_id, 11128 int nstat, 11129 bcm_field_stat_t * stat_arr, 11130 bcmx_async_cb_t async_callback, 11131 void *async_cookie) 11132 { 11133 bcmx_async_req_t *async; 11134 11135 async = sal_alloc(sizeof(*async), "bcmx_async"); 11136 if (async == NULL) { 11137 if (async_callback != NULL) { 11138 (*async_callback)(async_cookie, BCM_E_MEMORY); 11139 } 11140 return; 11141 } 11142 async->next = NULL; 11143 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_CONFIG_GET; 11144 async->run = bcmx_async_run; 11145 async->callback = async_callback; 11146 async->cookie = async_cookie; 11147 async->args.field_stat_config_get.stat_id = stat_id; 11148 async->args.field_stat_config_get.nstat = nstat; 11149 async->args.field_stat_config_get.stat_arr = stat_arr; 11150 bcm_async_add((bcm_async_req_t *)async); 11151 } 11152 11153 void 11154 bcmx_field_stat_create_async( 11155 bcm_field_group_t group, 11156 int nstat, 11157 bcm_field_stat_t * stat_arr, 11158 int * stat_id, 11159 bcmx_async_cb_t async_callback, 11160 void *async_cookie) 11161 { 11162 bcmx_async_req_t *async; 11163 11164 async = sal_alloc(sizeof(*async), "bcmx_async"); 11165 if (async == NULL) { 11166 if (async_callback != NULL) { 11167 (*async_callback)(async_cookie, BCM_E_MEMORY); 11168 } 11169 return; 11170 } 11171 async->next = NULL; 11172 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_CREATE; 11173 async->run = bcmx_async_run; 11174 async->callback = async_callback; 11175 async->cookie = async_cookie; 11176 async->args.field_stat_create.group = group; 11177 async->args.field_stat_create.nstat = nstat; 11178 async->args.field_stat_create.stat_arr = stat_arr; 11179 async->args.field_stat_create.stat_id = stat_id; 11180 bcm_async_add((bcm_async_req_t *)async); 11181 } 11182 11183 void 11184 bcmx_field_stat_create_id_async( 11185 bcm_field_group_t group, 11186 int nstat, 11187 bcm_field_stat_t * stat_arr, 11188 int stat_id, 11189 bcmx_async_cb_t async_callback, 11190 void *async_cookie) 11191 { 11192 bcmx_async_req_t *async; 11193 11194 async = sal_alloc(sizeof(*async), "bcmx_async"); 11195 if (async == NULL) { 11196 if (async_callback != NULL) { 11197 (*async_callback)(async_cookie, BCM_E_MEMORY); 11198 } 11199 return; 11200 } 11201 async->next = NULL; 11202 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_CREATE_ID; 11203 async->run = bcmx_async_run; 11204 async->callback = async_callback; 11205 async->cookie = async_cookie; 11206 async->args.field_stat_create_id.group = group; 11207 async->args.field_stat_create_id.nstat = nstat; 11208 async->args.field_stat_create_id.stat_arr = stat_arr; 11209 async->args.field_stat_create_id.stat_id = stat_id; 11210 bcm_async_add((bcm_async_req_t *)async); 11211 } 11212 11213 void 11214 bcmx_field_stat_destroy_async( 11215 int stat_id, 11216 bcmx_async_cb_t async_callback, 11217 void *async_cookie) 11218 { 11219 bcmx_async_req_t *async; 11220 11221 async = sal_alloc(sizeof(*async), "bcmx_async"); 11222 if (async == NULL) { 11223 if (async_callback != NULL) { 11224 (*async_callback)(async_cookie, BCM_E_MEMORY); 11225 } 11226 return; 11227 } 11228 async->next = NULL; 11229 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_DESTROY; 11230 async->run = bcmx_async_run; 11231 async->callback = async_callback; 11232 async->cookie = async_cookie; 11233 async->args.field_stat_destroy.stat_id = stat_id; 11234 bcm_async_add((bcm_async_req_t *)async); 11235 } 11236 11237 void 11238 bcmx_field_stat_get_async( 11239 int stat_id, 11240 bcm_field_stat_t stat, 11241 uint64 * value, 11242 bcmx_async_cb_t async_callback, 11243 void *async_cookie) 11244 { 11245 bcmx_async_req_t *async; 11246 11247 async = sal_alloc(sizeof(*async), "bcmx_async"); 11248 if (async == NULL) { 11249 if (async_callback != NULL) { 11250 (*async_callback)(async_cookie, BCM_E_MEMORY); 11251 } 11252 return; 11253 } 11254 async->next = NULL; 11255 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_GET; 11256 async->run = bcmx_async_run; 11257 async->callback = async_callback; 11258 async->cookie = async_cookie; 11259 async->args.field_stat_get.stat_id = stat_id; 11260 async->args.field_stat_get.stat = stat; 11261 async->args.field_stat_get.value = value; 11262 bcm_async_add((bcm_async_req_t *)async); 11263 } 11264 11265 void 11266 bcmx_field_stat_get32_async( 11267 int stat_id, 11268 bcm_field_stat_t stat, 11269 uint32 * value, 11270 bcmx_async_cb_t async_callback, 11271 void *async_cookie) 11272 { 11273 bcmx_async_req_t *async; 11274 11275 async = sal_alloc(sizeof(*async), "bcmx_async"); 11276 if (async == NULL) { 11277 if (async_callback != NULL) { 11278 (*async_callback)(async_cookie, BCM_E_MEMORY); 11279 } 11280 return; 11281 } 11282 async->next = NULL; 11283 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_GET32; 11284 async->run = bcmx_async_run; 11285 async->callback = async_callback; 11286 async->cookie = async_cookie; 11287 async->args.field_stat_get32.stat_id = stat_id; 11288 async->args.field_stat_get32.stat = stat; 11289 async->args.field_stat_get32.value = value; 11290 bcm_async_add((bcm_async_req_t *)async); 11291 } 11292 11293 void 11294 bcmx_field_stat_multi_get_async( 11295 int stat_id, 11296 int nstat, 11297 bcm_field_stat_t * stat_arr, 11298 uint64 * value_arr, 11299 bcmx_async_cb_t async_callback, 11300 void *async_cookie) 11301 { 11302 bcmx_async_req_t *async; 11303 11304 async = sal_alloc(sizeof(*async), "bcmx_async"); 11305 if (async == NULL) { 11306 if (async_callback != NULL) { 11307 (*async_callback)(async_cookie, BCM_E_MEMORY); 11308 } 11309 return; 11310 } 11311 async->next = NULL; 11312 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_MULTI_GET; 11313 async->run = bcmx_async_run; 11314 async->callback = async_callback; 11315 async->cookie = async_cookie; 11316 async->args.field_stat_multi_get.stat_id = stat_id; 11317 async->args.field_stat_multi_get.nstat = nstat; 11318 async->args.field_stat_multi_get.stat_arr = stat_arr; 11319 async->args.field_stat_multi_get.value_arr = value_arr; 11320 bcm_async_add((bcm_async_req_t *)async); 11321 } 11322 11323 void 11324 bcmx_field_stat_multi_get32_async( 11325 int stat_id, 11326 int nstat, 11327 bcm_field_stat_t * stat_arr, 11328 uint32 * value_arr, 11329 bcmx_async_cb_t async_callback, 11330 void *async_cookie) 11331 { 11332 bcmx_async_req_t *async; 11333 11334 async = sal_alloc(sizeof(*async), "bcmx_async"); 11335 if (async == NULL) { 11336 if (async_callback != NULL) { 11337 (*async_callback)(async_cookie, BCM_E_MEMORY); 11338 } 11339 return; 11340 } 11341 async->next = NULL; 11342 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_MULTI_GET32; 11343 async->run = bcmx_async_run; 11344 async->callback = async_callback; 11345 async->cookie = async_cookie; 11346 async->args.field_stat_multi_get32.stat_id = stat_id; 11347 async->args.field_stat_multi_get32.nstat = nstat; 11348 async->args.field_stat_multi_get32.stat_arr = stat_arr; 11349 async->args.field_stat_multi_get32.value_arr = value_arr; 11350 bcm_async_add((bcm_async_req_t *)async); 11351 } 11352 11353 void 11354 bcmx_field_stat_set_async( 11355 int stat_id, 11356 bcm_field_stat_t stat, 11357 uint64 value, 11358 bcmx_async_cb_t async_callback, 11359 void *async_cookie) 11360 { 11361 bcmx_async_req_t *async; 11362 11363 async = sal_alloc(sizeof(*async), "bcmx_async"); 11364 if (async == NULL) { 11365 if (async_callback != NULL) { 11366 (*async_callback)(async_cookie, BCM_E_MEMORY); 11367 } 11368 return; 11369 } 11370 async->next = NULL; 11371 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_SET; 11372 async->run = bcmx_async_run; 11373 async->callback = async_callback; 11374 async->cookie = async_cookie; 11375 async->args.field_stat_set.stat_id = stat_id; 11376 async->args.field_stat_set.stat = stat; 11377 async->args.field_stat_set.value = value; 11378 bcm_async_add((bcm_async_req_t *)async); 11379 } 11380 11381 void 11382 bcmx_field_stat_set32_async( 11383 int stat_id, 11384 bcm_field_stat_t stat, 11385 uint32 value, 11386 bcmx_async_cb_t async_callback, 11387 void *async_cookie) 11388 { 11389 bcmx_async_req_t *async; 11390 11391 async = sal_alloc(sizeof(*async), "bcmx_async"); 11392 if (async == NULL) { 11393 if (async_callback != NULL) { 11394 (*async_callback)(async_cookie, BCM_E_MEMORY); 11395 } 11396 return; 11397 } 11398 async->next = NULL; 11399 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_SET32; 11400 async->run = bcmx_async_run; 11401 async->callback = async_callback; 11402 async->cookie = async_cookie; 11403 async->args.field_stat_set32.stat_id = stat_id; 11404 async->args.field_stat_set32.stat = stat; 11405 async->args.field_stat_set32.value = value; 11406 bcm_async_add((bcm_async_req_t *)async); 11407 } 11408 11409 void 11410 bcmx_field_stat_size_async( 11411 int stat_id, 11412 int * stat_size, 11413 bcmx_async_cb_t async_callback, 11414 void *async_cookie) 11415 { 11416 bcmx_async_req_t *async; 11417 11418 async = sal_alloc(sizeof(*async), "bcmx_async"); 11419 if (async == NULL) { 11420 if (async_callback != NULL) { 11421 (*async_callback)(async_cookie, BCM_E_MEMORY); 11422 } 11423 return; 11424 } 11425 async->next = NULL; 11426 async->type = BCMX_ASYNC_ENTRY_FIELD_STAT_SIZE; 11427 async->run = bcmx_async_run; 11428 async->callback = async_callback; 11429 async->cookie = async_cookie; 11430 async->args.field_stat_size.stat_id = stat_id; 11431 async->args.field_stat_size.stat_size = stat_size; 11432 bcm_async_add((bcm_async_req_t *)async); 11433 } 11434 11435 void 11436 bcmx_init_async( 11437 bcmx_async_cb_t async_callback, 11438 void *async_cookie) 11439 { 11440 bcmx_async_req_t *async; 11441 11442 async = sal_alloc(sizeof(*async), "bcmx_async"); 11443 if (async == NULL) { 11444 if (async_callback != NULL) { 11445 (*async_callback)(async_cookie, BCM_E_MEMORY); 11446 } 11447 return; 11448 } 11449 async->next = NULL; 11450 async->type = BCMX_ASYNC_ENTRY_INIT; 11451 async->run = bcmx_async_run; 11452 async->callback = async_callback; 11453 async->cookie = async_cookie; 11454 bcm_async_add((bcm_async_req_t *)async); 11455 } 11456 11457 void 11458 bcmx_ipfix_config_get_async( 11459 bcm_ipfix_stage_t stage, 11460 bcmx_lport_t port, 11461 bcmx_ipfix_config_t * config, 11462 bcmx_async_cb_t async_callback, 11463 void *async_cookie) 11464 { 11465 bcmx_async_req_t *async; 11466 11467 async = sal_alloc(sizeof(*async), "bcmx_async"); 11468 if (async == NULL) { 11469 if (async_callback != NULL) { 11470 (*async_callback)(async_cookie, BCM_E_MEMORY); 11471 } 11472 return; 11473 } 11474 async->next = NULL; 11475 async->type = BCMX_ASYNC_ENTRY_IPFIX_CONFIG_GET; 11476 async->run = bcmx_async_run; 11477 async->callback = async_callback; 11478 async->cookie = async_cookie; 11479 async->args.ipfix_config_get.stage = stage; 11480 async->args.ipfix_config_get.port = port; 11481 async->args.ipfix_config_get.config = config; 11482 bcm_async_add((bcm_async_req_t *)async); 11483 } 11484 11485 void 11486 bcmx_ipfix_config_set_async( 11487 bcm_ipfix_stage_t stage, 11488 bcmx_lport_t port, 11489 bcmx_ipfix_config_t * config, 11490 bcmx_async_cb_t async_callback, 11491 void *async_cookie) 11492 { 11493 bcmx_async_req_t *async; 11494 11495 async = sal_alloc(sizeof(*async), "bcmx_async"); 11496 if (async == NULL) { 11497 if (async_callback != NULL) { 11498 (*async_callback)(async_cookie, BCM_E_MEMORY); 11499 } 11500 return; 11501 } 11502 async->next = NULL; 11503 async->type = BCMX_ASYNC_ENTRY_IPFIX_CONFIG_SET; 11504 async->run = bcmx_async_run; 11505 async->callback = async_callback; 11506 async->cookie = async_cookie; 11507 async->args.ipfix_config_set.stage = stage; 11508 async->args.ipfix_config_set.port = port; 11509 async->args.ipfix_config_set.config = config; 11510 bcm_async_add((bcm_async_req_t *)async); 11511 } 11512 11513 void 11514 bcmx_ipfix_mirror_config_get_async( 11515 bcm_ipfix_stage_t stage, 11516 bcm_gport_t port, 11517 bcmx_ipfix_mirror_config_t * config, 11518 bcmx_async_cb_t async_callback, 11519 void *async_cookie) 11520 { 11521 bcmx_async_req_t *async; 11522 11523 async = sal_alloc(sizeof(*async), "bcmx_async"); 11524 if (async == NULL) { 11525 if (async_callback != NULL) { 11526 (*async_callback)(async_cookie, BCM_E_MEMORY); 11527 } 11528 return; 11529 } 11530 async->next = NULL; 11531 async->type = BCMX_ASYNC_ENTRY_IPFIX_MIRROR_CONFIG_GET; 11532 async->run = bcmx_async_run; 11533 async->callback = async_callback; 11534 async->cookie = async_cookie; 11535 async->args.ipfix_mirror_config_get.stage = stage; 11536 async->args.ipfix_mirror_config_get.port = port; 11537 async->args.ipfix_mirror_config_get.config = config; 11538 bcm_async_add((bcm_async_req_t *)async); 11539 } 11540 11541 void 11542 bcmx_ipfix_mirror_config_set_async( 11543 bcm_ipfix_stage_t stage, 11544 bcm_gport_t port, 11545 bcmx_ipfix_mirror_config_t * config, 11546 bcmx_async_cb_t async_callback, 11547 void *async_cookie) 11548 { 11549 bcmx_async_req_t *async; 11550 11551 async = sal_alloc(sizeof(*async), "bcmx_async"); 11552 if (async == NULL) { 11553 if (async_callback != NULL) { 11554 (*async_callback)(async_cookie, BCM_E_MEMORY); 11555 } 11556 return; 11557 } 11558 async->next = NULL; 11559 async->type = BCMX_ASYNC_ENTRY_IPFIX_MIRROR_CONFIG_SET; 11560 async->run = bcmx_async_run; 11561 async->callback = async_callback; 11562 async->cookie = async_cookie; 11563 async->args.ipfix_mirror_config_set.stage = stage; 11564 async->args.ipfix_mirror_config_set.port = port; 11565 async->args.ipfix_mirror_config_set.config = config; 11566 bcm_async_add((bcm_async_req_t *)async); 11567 } 11568 11569 void 11570 bcmx_ipfix_mirror_port_dest_add_async( 11571 bcm_ipfix_stage_t stage, 11572 bcm_gport_t port, 11573 bcm_gport_t mirror_dest_id, 11574 bcmx_async_cb_t async_callback, 11575 void *async_cookie) 11576 { 11577 bcmx_async_req_t *async; 11578 11579 async = sal_alloc(sizeof(*async), "bcmx_async"); 11580 if (async == NULL) { 11581 if (async_callback != NULL) { 11582 (*async_callback)(async_cookie, BCM_E_MEMORY); 11583 } 11584 return; 11585 } 11586 async->next = NULL; 11587 async->type = BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_ADD; 11588 async->run = bcmx_async_run; 11589 async->callback = async_callback; 11590 async->cookie = async_cookie; 11591 async->args.ipfix_mirror_port_dest_add.stage = stage; 11592 async->args.ipfix_mirror_port_dest_add.port = port; 11593 async->args.ipfix_mirror_port_dest_add.mirror_dest_id = mirror_dest_id; 11594 bcm_async_add((bcm_async_req_t *)async); 11595 } 11596 11597 void 11598 bcmx_ipfix_mirror_port_dest_delete_async( 11599 bcm_ipfix_stage_t stage, 11600 bcm_gport_t port, 11601 bcm_gport_t mirror_dest_id, 11602 bcmx_async_cb_t async_callback, 11603 void *async_cookie) 11604 { 11605 bcmx_async_req_t *async; 11606 11607 async = sal_alloc(sizeof(*async), "bcmx_async"); 11608 if (async == NULL) { 11609 if (async_callback != NULL) { 11610 (*async_callback)(async_cookie, BCM_E_MEMORY); 11611 } 11612 return; 11613 } 11614 async->next = NULL; 11615 async->type = BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_DELETE; 11616 async->run = bcmx_async_run; 11617 async->callback = async_callback; 11618 async->cookie = async_cookie; 11619 async->args.ipfix_mirror_port_dest_delete.stage = stage; 11620 async->args.ipfix_mirror_port_dest_delete.port = port; 11621 async->args.ipfix_mirror_port_dest_delete.mirror_dest_id = mirror_dest_id; 11622 bcm_async_add((bcm_async_req_t *)async); 11623 } 11624 11625 void 11626 bcmx_ipfix_mirror_port_dest_delete_all_async( 11627 bcm_ipfix_stage_t stage, 11628 bcm_gport_t port, 11629 bcmx_async_cb_t async_callback, 11630 void *async_cookie) 11631 { 11632 bcmx_async_req_t *async; 11633 11634 async = sal_alloc(sizeof(*async), "bcmx_async"); 11635 if (async == NULL) { 11636 if (async_callback != NULL) { 11637 (*async_callback)(async_cookie, BCM_E_MEMORY); 11638 } 11639 return; 11640 } 11641 async->next = NULL; 11642 async->type = BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_DELETE_ALL; 11643 async->run = bcmx_async_run; 11644 async->callback = async_callback; 11645 async->cookie = async_cookie; 11646 async->args.ipfix_mirror_port_dest_delete_all.stage = stage; 11647 async->args.ipfix_mirror_port_dest_delete_all.port = port; 11648 bcm_async_add((bcm_async_req_t *)async); 11649 } 11650 11651 void 11652 bcmx_ipfix_mirror_port_dest_get_async( 11653 bcm_ipfix_stage_t stage, 11654 bcm_gport_t port, 11655 int mirror_dest_size, 11656 bcm_gport_t * mirror_dest_id, 11657 int * mirror_dest_count, 11658 bcmx_async_cb_t async_callback, 11659 void *async_cookie) 11660 { 11661 bcmx_async_req_t *async; 11662 11663 async = sal_alloc(sizeof(*async), "bcmx_async"); 11664 if (async == NULL) { 11665 if (async_callback != NULL) { 11666 (*async_callback)(async_cookie, BCM_E_MEMORY); 11667 } 11668 return; 11669 } 11670 async->next = NULL; 11671 async->type = BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_GET; 11672 async->run = bcmx_async_run; 11673 async->callback = async_callback; 11674 async->cookie = async_cookie; 11675 async->args.ipfix_mirror_port_dest_get.stage = stage; 11676 async->args.ipfix_mirror_port_dest_get.port = port; 11677 async->args.ipfix_mirror_port_dest_get.mirror_dest_size = mirror_dest_size; 11678 async->args.ipfix_mirror_port_dest_get.mirror_dest_id = mirror_dest_id; 11679 async->args.ipfix_mirror_port_dest_get.mirror_dest_count = mirror_dest_count; 11680 bcm_async_add((bcm_async_req_t *)async); 11681 } 11682 11683 void 11684 bcmx_ipfix_rate_create_async( 11685 bcmx_ipfix_rate_t * rate_info, 11686 bcmx_async_cb_t async_callback, 11687 void *async_cookie) 11688 { 11689 bcmx_async_req_t *async; 11690 11691 async = sal_alloc(sizeof(*async), "bcmx_async"); 11692 if (async == NULL) { 11693 if (async_callback != NULL) { 11694 (*async_callback)(async_cookie, BCM_E_MEMORY); 11695 } 11696 return; 11697 } 11698 async->next = NULL; 11699 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_CREATE; 11700 async->run = bcmx_async_run; 11701 async->callback = async_callback; 11702 async->cookie = async_cookie; 11703 async->args.ipfix_rate_create.rate_info = rate_info; 11704 bcm_async_add((bcm_async_req_t *)async); 11705 } 11706 11707 void 11708 bcmx_ipfix_rate_destroy_async( 11709 bcm_ipfix_rate_id_t rate_id, 11710 bcmx_async_cb_t async_callback, 11711 void *async_cookie) 11712 { 11713 bcmx_async_req_t *async; 11714 11715 async = sal_alloc(sizeof(*async), "bcmx_async"); 11716 if (async == NULL) { 11717 if (async_callback != NULL) { 11718 (*async_callback)(async_cookie, BCM_E_MEMORY); 11719 } 11720 return; 11721 } 11722 async->next = NULL; 11723 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_DESTROY; 11724 async->run = bcmx_async_run; 11725 async->callback = async_callback; 11726 async->cookie = async_cookie; 11727 async->args.ipfix_rate_destroy.rate_id = rate_id; 11728 bcm_async_add((bcm_async_req_t *)async); 11729 } 11730 11731 void 11732 bcmx_ipfix_rate_destroy_all_async( 11733 bcmx_async_cb_t async_callback, 11734 void *async_cookie) 11735 { 11736 bcmx_async_req_t *async; 11737 11738 async = sal_alloc(sizeof(*async), "bcmx_async"); 11739 if (async == NULL) { 11740 if (async_callback != NULL) { 11741 (*async_callback)(async_cookie, BCM_E_MEMORY); 11742 } 11743 return; 11744 } 11745 async->next = NULL; 11746 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_DESTROY_ALL; 11747 async->run = bcmx_async_run; 11748 async->callback = async_callback; 11749 async->cookie = async_cookie; 11750 bcm_async_add((bcm_async_req_t *)async); 11751 } 11752 11753 void 11754 bcmx_ipfix_rate_get_async( 11755 bcmx_ipfix_rate_t * rate_info, 11756 bcmx_async_cb_t async_callback, 11757 void *async_cookie) 11758 { 11759 bcmx_async_req_t *async; 11760 11761 async = sal_alloc(sizeof(*async), "bcmx_async"); 11762 if (async == NULL) { 11763 if (async_callback != NULL) { 11764 (*async_callback)(async_cookie, BCM_E_MEMORY); 11765 } 11766 return; 11767 } 11768 async->next = NULL; 11769 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_GET; 11770 async->run = bcmx_async_run; 11771 async->callback = async_callback; 11772 async->cookie = async_cookie; 11773 async->args.ipfix_rate_get.rate_info = rate_info; 11774 bcm_async_add((bcm_async_req_t *)async); 11775 } 11776 11777 void 11778 bcmx_ipfix_rate_mirror_add_async( 11779 bcm_ipfix_rate_id_t rate_id, 11780 bcm_gport_t mirror_dest_id, 11781 bcmx_async_cb_t async_callback, 11782 void *async_cookie) 11783 { 11784 bcmx_async_req_t *async; 11785 11786 async = sal_alloc(sizeof(*async), "bcmx_async"); 11787 if (async == NULL) { 11788 if (async_callback != NULL) { 11789 (*async_callback)(async_cookie, BCM_E_MEMORY); 11790 } 11791 return; 11792 } 11793 async->next = NULL; 11794 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_ADD; 11795 async->run = bcmx_async_run; 11796 async->callback = async_callback; 11797 async->cookie = async_cookie; 11798 async->args.ipfix_rate_mirror_add.rate_id = rate_id; 11799 async->args.ipfix_rate_mirror_add.mirror_dest_id = mirror_dest_id; 11800 bcm_async_add((bcm_async_req_t *)async); 11801 } 11802 11803 void 11804 bcmx_ipfix_rate_mirror_delete_async( 11805 bcm_ipfix_rate_id_t rate_id, 11806 bcm_gport_t mirror_dest_id, 11807 bcmx_async_cb_t async_callback, 11808 void *async_cookie) 11809 { 11810 bcmx_async_req_t *async; 11811 11812 async = sal_alloc(sizeof(*async), "bcmx_async"); 11813 if (async == NULL) { 11814 if (async_callback != NULL) { 11815 (*async_callback)(async_cookie, BCM_E_MEMORY); 11816 } 11817 return; 11818 } 11819 async->next = NULL; 11820 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_DELETE; 11821 async->run = bcmx_async_run; 11822 async->callback = async_callback; 11823 async->cookie = async_cookie; 11824 async->args.ipfix_rate_mirror_delete.rate_id = rate_id; 11825 async->args.ipfix_rate_mirror_delete.mirror_dest_id = mirror_dest_id; 11826 bcm_async_add((bcm_async_req_t *)async); 11827 } 11828 11829 void 11830 bcmx_ipfix_rate_mirror_delete_all_async( 11831 bcm_ipfix_rate_id_t rate_id, 11832 bcmx_async_cb_t async_callback, 11833 void *async_cookie) 11834 { 11835 bcmx_async_req_t *async; 11836 11837 async = sal_alloc(sizeof(*async), "bcmx_async"); 11838 if (async == NULL) { 11839 if (async_callback != NULL) { 11840 (*async_callback)(async_cookie, BCM_E_MEMORY); 11841 } 11842 return; 11843 } 11844 async->next = NULL; 11845 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_DELETE_ALL; 11846 async->run = bcmx_async_run; 11847 async->callback = async_callback; 11848 async->cookie = async_cookie; 11849 async->args.ipfix_rate_mirror_delete_all.rate_id = rate_id; 11850 bcm_async_add((bcm_async_req_t *)async); 11851 } 11852 11853 void 11854 bcmx_ipfix_rate_mirror_get_async( 11855 bcm_ipfix_rate_id_t rate_id, 11856 int mirror_dest_size, 11857 bcm_gport_t * mirror_dest_id, 11858 int * mirror_dest_count, 11859 bcmx_async_cb_t async_callback, 11860 void *async_cookie) 11861 { 11862 bcmx_async_req_t *async; 11863 11864 async = sal_alloc(sizeof(*async), "bcmx_async"); 11865 if (async == NULL) { 11866 if (async_callback != NULL) { 11867 (*async_callback)(async_cookie, BCM_E_MEMORY); 11868 } 11869 return; 11870 } 11871 async->next = NULL; 11872 async->type = BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_GET; 11873 async->run = bcmx_async_run; 11874 async->callback = async_callback; 11875 async->cookie = async_cookie; 11876 async->args.ipfix_rate_mirror_get.rate_id = rate_id; 11877 async->args.ipfix_rate_mirror_get.mirror_dest_size = mirror_dest_size; 11878 async->args.ipfix_rate_mirror_get.mirror_dest_id = mirror_dest_id; 11879 async->args.ipfix_rate_mirror_get.mirror_dest_count = mirror_dest_count; 11880 bcm_async_add((bcm_async_req_t *)async); 11881 } 11882 11883 #ifdef INCLUDE_L3 11884 11885 void 11886 bcmx_ipmc_add_async( 11887 bcmx_ipmc_addr_t * data, 11888 bcmx_async_cb_t async_callback, 11889 void *async_cookie) 11890 { 11891 bcmx_async_req_t *async; 11892 11893 async = sal_alloc(sizeof(*async), "bcmx_async"); 11894 if (async == NULL) { 11895 if (async_callback != NULL) { 11896 (*async_callback)(async_cookie, BCM_E_MEMORY); 11897 } 11898 return; 11899 } 11900 async->next = NULL; 11901 async->type = BCMX_ASYNC_ENTRY_IPMC_ADD; 11902 async->run = bcmx_async_run; 11903 async->callback = async_callback; 11904 async->cookie = async_cookie; 11905 async->args.ipmc_add.data = data; 11906 bcm_async_add((bcm_async_req_t *)async); 11907 } 11908 11909 void 11910 bcmx_ipmc_age_async( 11911 uint32 flags, 11912 bcm_ipmc_traverse_cb age_cb, 11913 void * user_data, 11914 bcmx_async_cb_t async_callback, 11915 void *async_cookie) 11916 { 11917 bcmx_async_req_t *async; 11918 11919 async = sal_alloc(sizeof(*async), "bcmx_async"); 11920 if (async == NULL) { 11921 if (async_callback != NULL) { 11922 (*async_callback)(async_cookie, BCM_E_MEMORY); 11923 } 11924 return; 11925 } 11926 async->next = NULL; 11927 async->type = BCMX_ASYNC_ENTRY_IPMC_AGE; 11928 async->run = bcmx_async_run; 11929 async->callback = async_callback; 11930 async->cookie = async_cookie; 11931 async->args.ipmc_age.flags = flags; 11932 async->args.ipmc_age.age_cb = age_cb; 11933 async->args.ipmc_age.user_data = user_data; 11934 bcm_async_add((bcm_async_req_t *)async); 11935 } 11936 11937 void 11938 bcmx_ipmc_counters_get_async( 11939 bcmx_lport_t port, 11940 bcm_ipmc_counters_t * counters, 11941 bcmx_async_cb_t async_callback, 11942 void *async_cookie) 11943 { 11944 bcmx_async_req_t *async; 11945 11946 async = sal_alloc(sizeof(*async), "bcmx_async"); 11947 if (async == NULL) { 11948 if (async_callback != NULL) { 11949 (*async_callback)(async_cookie, BCM_E_MEMORY); 11950 } 11951 return; 11952 } 11953 async->next = NULL; 11954 async->type = BCMX_ASYNC_ENTRY_IPMC_COUNTERS_GET; 11955 async->run = bcmx_async_run; 11956 async->callback = async_callback; 11957 async->cookie = async_cookie; 11958 async->args.ipmc_counters_get.port = port; 11959 async->args.ipmc_counters_get.counters = counters; 11960 bcm_async_add((bcm_async_req_t *)async); 11961 } 11962 11963 void 11964 bcmx_ipmc_detach_async( 11965 bcmx_async_cb_t async_callback, 11966 void *async_cookie) 11967 { 11968 bcmx_async_req_t *async; 11969 11970 async = sal_alloc(sizeof(*async), "bcmx_async"); 11971 if (async == NULL) { 11972 if (async_callback != NULL) { 11973 (*async_callback)(async_cookie, BCM_E_MEMORY); 11974 } 11975 return; 11976 } 11977 async->next = NULL; 11978 async->type = BCMX_ASYNC_ENTRY_IPMC_DETACH; 11979 async->run = bcmx_async_run; 11980 async->callback = async_callback; 11981 async->cookie = async_cookie; 11982 bcm_async_add((bcm_async_req_t *)async); 11983 } 11984 11985 void 11986 bcmx_ipmc_egress_port_get_async( 11987 bcmx_lport_t port, 11988 bcm_mac_t mac, 11989 int * untag, 11990 bcm_vlan_t * vid, 11991 int * ttl_threshold, 11992 bcmx_async_cb_t async_callback, 11993 void *async_cookie) 11994 { 11995 bcmx_async_req_t *async; 11996 11997 async = sal_alloc(sizeof(*async), "bcmx_async"); 11998 if (async == NULL) { 11999 if (async_callback != NULL) { 12000 (*async_callback)(async_cookie, BCM_E_MEMORY); 12001 } 12002 return; 12003 } 12004 async->next = NULL; 12005 async->type = BCMX_ASYNC_ENTRY_IPMC_EGRESS_PORT_GET; 12006 async->run = bcmx_async_run; 12007 async->callback = async_callback; 12008 async->cookie = async_cookie; 12009 async->args.ipmc_egress_port_get.port = port; 12010 async->args.ipmc_egress_port_get.mac = (uint8 *)mac; 12011 async->args.ipmc_egress_port_get.untag = untag; 12012 async->args.ipmc_egress_port_get.vid = vid; 12013 async->args.ipmc_egress_port_get.ttl_threshold = ttl_threshold; 12014 bcm_async_add((bcm_async_req_t *)async); 12015 } 12016 12017 void 12018 bcmx_ipmc_egress_port_init_async( 12019 bcmx_async_cb_t async_callback, 12020 void *async_cookie) 12021 { 12022 bcmx_async_req_t *async; 12023 12024 async = sal_alloc(sizeof(*async), "bcmx_async"); 12025 if (async == NULL) { 12026 if (async_callback != NULL) { 12027 (*async_callback)(async_cookie, BCM_E_MEMORY); 12028 } 12029 return; 12030 } 12031 async->next = NULL; 12032 async->type = BCMX_ASYNC_ENTRY_IPMC_EGRESS_PORT_INIT; 12033 async->run = bcmx_async_run; 12034 async->callback = async_callback; 12035 async->cookie = async_cookie; 12036 bcm_async_add((bcm_async_req_t *)async); 12037 } 12038 12039 void 12040 bcmx_ipmc_egress_port_set_async( 12041 bcmx_lport_t port, 12042 const bcm_mac_t mac, 12043 int untag, 12044 bcm_vlan_t vid, 12045 int ttl_threshold, 12046 bcmx_async_cb_t async_callback, 12047 void *async_cookie) 12048 { 12049 bcmx_async_req_t *async; 12050 12051 async = sal_alloc(sizeof(*async), "bcmx_async"); 12052 if (async == NULL) { 12053 if (async_callback != NULL) { 12054 (*async_callback)(async_cookie, BCM_E_MEMORY); 12055 } 12056 return; 12057 } 12058 async->next = NULL; 12059 async->type = BCMX_ASYNC_ENTRY_IPMC_EGRESS_PORT_SET; 12060 async->run = bcmx_async_run; 12061 async->callback = async_callback; 12062 async->cookie = async_cookie; 12063 async->args.ipmc_egress_port_set.port = port; 12064 async->args.ipmc_egress_port_set.mac = (uint8 *)mac; 12065 async->args.ipmc_egress_port_set.untag = untag; 12066 async->args.ipmc_egress_port_set.vid = vid; 12067 async->args.ipmc_egress_port_set.ttl_threshold = ttl_threshold; 12068 bcm_async_add((bcm_async_req_t *)async); 12069 } 12070 12071 void 12072 bcmx_ipmc_enable_async( 12073 int enable, 12074 bcmx_async_cb_t async_callback, 12075 void *async_cookie) 12076 { 12077 bcmx_async_req_t *async; 12078 12079 async = sal_alloc(sizeof(*async), "bcmx_async"); 12080 if (async == NULL) { 12081 if (async_callback != NULL) { 12082 (*async_callback)(async_cookie, BCM_E_MEMORY); 12083 } 12084 return; 12085 } 12086 async->next = NULL; 12087 async->type = BCMX_ASYNC_ENTRY_IPMC_ENABLE; 12088 async->run = bcmx_async_run; 12089 async->callback = async_callback; 12090 async->cookie = async_cookie; 12091 async->args.ipmc_enable.enable = enable; 12092 bcm_async_add((bcm_async_req_t *)async); 12093 } 12094 12095 void 12096 bcmx_ipmc_find_async( 12097 bcmx_ipmc_addr_t * data, 12098 bcmx_async_cb_t async_callback, 12099 void *async_cookie) 12100 { 12101 bcmx_async_req_t *async; 12102 12103 async = sal_alloc(sizeof(*async), "bcmx_async"); 12104 if (async == NULL) { 12105 if (async_callback != NULL) { 12106 (*async_callback)(async_cookie, BCM_E_MEMORY); 12107 } 12108 return; 12109 } 12110 async->next = NULL; 12111 async->type = BCMX_ASYNC_ENTRY_IPMC_FIND; 12112 async->run = bcmx_async_run; 12113 async->callback = async_callback; 12114 async->cookie = async_cookie; 12115 async->args.ipmc_find.data = data; 12116 bcm_async_add((bcm_async_req_t *)async); 12117 } 12118 12119 void 12120 bcmx_ipmc_init_async( 12121 bcmx_async_cb_t async_callback, 12122 void *async_cookie) 12123 { 12124 bcmx_async_req_t *async; 12125 12126 async = sal_alloc(sizeof(*async), "bcmx_async"); 12127 if (async == NULL) { 12128 if (async_callback != NULL) { 12129 (*async_callback)(async_cookie, BCM_E_MEMORY); 12130 } 12131 return; 12132 } 12133 async->next = NULL; 12134 async->type = BCMX_ASYNC_ENTRY_IPMC_INIT; 12135 async->run = bcmx_async_run; 12136 async->callback = async_callback; 12137 async->cookie = async_cookie; 12138 bcm_async_add((bcm_async_req_t *)async); 12139 } 12140 12141 void 12142 bcmx_ipmc_remove_async( 12143 bcmx_ipmc_addr_t * data, 12144 bcmx_async_cb_t async_callback, 12145 void *async_cookie) 12146 { 12147 bcmx_async_req_t *async; 12148 12149 async = sal_alloc(sizeof(*async), "bcmx_async"); 12150 if (async == NULL) { 12151 if (async_callback != NULL) { 12152 (*async_callback)(async_cookie, BCM_E_MEMORY); 12153 } 12154 return; 12155 } 12156 async->next = NULL; 12157 async->type = BCMX_ASYNC_ENTRY_IPMC_REMOVE; 12158 async->run = bcmx_async_run; 12159 async->callback = async_callback; 12160 async->cookie = async_cookie; 12161 async->args.ipmc_remove.data = data; 12162 bcm_async_add((bcm_async_req_t *)async); 12163 } 12164 12165 void 12166 bcmx_ipmc_remove_all_async( 12167 bcmx_async_cb_t async_callback, 12168 void *async_cookie) 12169 { 12170 bcmx_async_req_t *async; 12171 12172 async = sal_alloc(sizeof(*async), "bcmx_async"); 12173 if (async == NULL) { 12174 if (async_callback != NULL) { 12175 (*async_callback)(async_cookie, BCM_E_MEMORY); 12176 } 12177 return; 12178 } 12179 async->next = NULL; 12180 async->type = BCMX_ASYNC_ENTRY_IPMC_REMOVE_ALL; 12181 async->run = bcmx_async_run; 12182 async->callback = async_callback; 12183 async->cookie = async_cookie; 12184 bcm_async_add((bcm_async_req_t *)async); 12185 } 12186 12187 void 12188 bcmx_ipmc_traverse_async( 12189 uint32 flags, 12190 bcm_ipmc_traverse_cb cb, 12191 void * user_data, 12192 bcmx_async_cb_t async_callback, 12193 void *async_cookie) 12194 { 12195 bcmx_async_req_t *async; 12196 12197 async = sal_alloc(sizeof(*async), "bcmx_async"); 12198 if (async == NULL) { 12199 if (async_callback != NULL) { 12200 (*async_callback)(async_cookie, BCM_E_MEMORY); 12201 } 12202 return; 12203 } 12204 async->next = NULL; 12205 async->type = BCMX_ASYNC_ENTRY_IPMC_TRAVERSE; 12206 async->run = bcmx_async_run; 12207 async->callback = async_callback; 12208 async->cookie = async_cookie; 12209 async->args.ipmc_traverse.flags = flags; 12210 async->args.ipmc_traverse.cb = cb; 12211 async->args.ipmc_traverse.user_data = user_data; 12212 bcm_async_add((bcm_async_req_t *)async); 12213 } 12214 12215 #endif /* INCLUDE_L3 */ 12216 12217 void 12218 bcmx_l2_addr_add_async( 12219 bcmx_l2_addr_t * l2addr, 12220 bcmx_lplist_t * port_block, 12221 bcmx_async_cb_t async_callback, 12222 void *async_cookie) 12223 { 12224 bcmx_async_req_t *async; 12225 12226 async = sal_alloc(sizeof(*async), "bcmx_async"); 12227 if (async == NULL) { 12228 if (async_callback != NULL) { 12229 (*async_callback)(async_cookie, BCM_E_MEMORY); 12230 } 12231 return; 12232 } 12233 async->next = NULL; 12234 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_ADD; 12235 async->run = bcmx_async_run; 12236 async->callback = async_callback; 12237 async->cookie = async_cookie; 12238 async->args.l2_addr_add.l2addr = l2addr; 12239 async->args.l2_addr_add.port_block = port_block; 12240 bcm_async_add((bcm_async_req_t *)async); 12241 } 12242 12243 void 12244 bcmx_l2_addr_delete_async( 12245 bcm_mac_t mac, 12246 bcm_vlan_t vid, 12247 bcmx_async_cb_t async_callback, 12248 void *async_cookie) 12249 { 12250 bcmx_async_req_t *async; 12251 12252 async = sal_alloc(sizeof(*async), "bcmx_async"); 12253 if (async == NULL) { 12254 if (async_callback != NULL) { 12255 (*async_callback)(async_cookie, BCM_E_MEMORY); 12256 } 12257 return; 12258 } 12259 async->next = NULL; 12260 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE; 12261 async->run = bcmx_async_run; 12262 async->callback = async_callback; 12263 async->cookie = async_cookie; 12264 async->args.l2_addr_delete.mac = (uint8 *)mac; 12265 async->args.l2_addr_delete.vid = vid; 12266 bcm_async_add((bcm_async_req_t *)async); 12267 } 12268 12269 void 12270 bcmx_l2_addr_delete_by_mac_async( 12271 bcm_mac_t mac, 12272 uint32 flags, 12273 bcmx_async_cb_t async_callback, 12274 void *async_cookie) 12275 { 12276 bcmx_async_req_t *async; 12277 12278 async = sal_alloc(sizeof(*async), "bcmx_async"); 12279 if (async == NULL) { 12280 if (async_callback != NULL) { 12281 (*async_callback)(async_cookie, BCM_E_MEMORY); 12282 } 12283 return; 12284 } 12285 async->next = NULL; 12286 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_MAC; 12287 async->run = bcmx_async_run; 12288 async->callback = async_callback; 12289 async->cookie = async_cookie; 12290 async->args.l2_addr_delete_by_mac.mac = (uint8 *)mac; 12291 async->args.l2_addr_delete_by_mac.flags = flags; 12292 bcm_async_add((bcm_async_req_t *)async); 12293 } 12294 12295 void 12296 bcmx_l2_addr_delete_by_mac_port_async( 12297 bcm_mac_t mac, 12298 bcmx_lport_t port, 12299 uint32 flags, 12300 bcmx_async_cb_t async_callback, 12301 void *async_cookie) 12302 { 12303 bcmx_async_req_t *async; 12304 12305 async = sal_alloc(sizeof(*async), "bcmx_async"); 12306 if (async == NULL) { 12307 if (async_callback != NULL) { 12308 (*async_callback)(async_cookie, BCM_E_MEMORY); 12309 } 12310 return; 12311 } 12312 async->next = NULL; 12313 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_MAC_PORT; 12314 async->run = bcmx_async_run; 12315 async->callback = async_callback; 12316 async->cookie = async_cookie; 12317 async->args.l2_addr_delete_by_mac_port.mac = (uint8 *)mac; 12318 async->args.l2_addr_delete_by_mac_port.port = port; 12319 async->args.l2_addr_delete_by_mac_port.flags = flags; 12320 bcm_async_add((bcm_async_req_t *)async); 12321 } 12322 12323 void 12324 bcmx_l2_addr_delete_by_port_async( 12325 bcmx_lport_t port, 12326 uint32 flags, 12327 bcmx_async_cb_t async_callback, 12328 void *async_cookie) 12329 { 12330 bcmx_async_req_t *async; 12331 12332 async = sal_alloc(sizeof(*async), "bcmx_async"); 12333 if (async == NULL) { 12334 if (async_callback != NULL) { 12335 (*async_callback)(async_cookie, BCM_E_MEMORY); 12336 } 12337 return; 12338 } 12339 async->next = NULL; 12340 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_PORT; 12341 async->run = bcmx_async_run; 12342 async->callback = async_callback; 12343 async->cookie = async_cookie; 12344 async->args.l2_addr_delete_by_port.port = port; 12345 async->args.l2_addr_delete_by_port.flags = flags; 12346 bcm_async_add((bcm_async_req_t *)async); 12347 } 12348 12349 void 12350 bcmx_l2_addr_delete_by_trunk_async( 12351 bcm_trunk_t tid, 12352 uint32 flags, 12353 bcmx_async_cb_t async_callback, 12354 void *async_cookie) 12355 { 12356 bcmx_async_req_t *async; 12357 12358 async = sal_alloc(sizeof(*async), "bcmx_async"); 12359 if (async == NULL) { 12360 if (async_callback != NULL) { 12361 (*async_callback)(async_cookie, BCM_E_MEMORY); 12362 } 12363 return; 12364 } 12365 async->next = NULL; 12366 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_TRUNK; 12367 async->run = bcmx_async_run; 12368 async->callback = async_callback; 12369 async->cookie = async_cookie; 12370 async->args.l2_addr_delete_by_trunk.tid = tid; 12371 async->args.l2_addr_delete_by_trunk.flags = flags; 12372 bcm_async_add((bcm_async_req_t *)async); 12373 } 12374 12375 void 12376 bcmx_l2_addr_delete_by_vlan_async( 12377 bcm_vlan_t vid, 12378 uint32 flags, 12379 bcmx_async_cb_t async_callback, 12380 void *async_cookie) 12381 { 12382 bcmx_async_req_t *async; 12383 12384 async = sal_alloc(sizeof(*async), "bcmx_async"); 12385 if (async == NULL) { 12386 if (async_callback != NULL) { 12387 (*async_callback)(async_cookie, BCM_E_MEMORY); 12388 } 12389 return; 12390 } 12391 async->next = NULL; 12392 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_VLAN; 12393 async->run = bcmx_async_run; 12394 async->callback = async_callback; 12395 async->cookie = async_cookie; 12396 async->args.l2_addr_delete_by_vlan.vid = vid; 12397 async->args.l2_addr_delete_by_vlan.flags = flags; 12398 bcm_async_add((bcm_async_req_t *)async); 12399 } 12400 12401 void 12402 bcmx_l2_addr_delete_by_vlan_port_async( 12403 bcm_vlan_t vid, 12404 bcmx_lport_t port, 12405 uint32 flags, 12406 bcmx_async_cb_t async_callback, 12407 void *async_cookie) 12408 { 12409 bcmx_async_req_t *async; 12410 12411 async = sal_alloc(sizeof(*async), "bcmx_async"); 12412 if (async == NULL) { 12413 if (async_callback != NULL) { 12414 (*async_callback)(async_cookie, BCM_E_MEMORY); 12415 } 12416 return; 12417 } 12418 async->next = NULL; 12419 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_VLAN_PORT; 12420 async->run = bcmx_async_run; 12421 async->callback = async_callback; 12422 async->cookie = async_cookie; 12423 async->args.l2_addr_delete_by_vlan_port.vid = vid; 12424 async->args.l2_addr_delete_by_vlan_port.port = port; 12425 async->args.l2_addr_delete_by_vlan_port.flags = flags; 12426 bcm_async_add((bcm_async_req_t *)async); 12427 } 12428 12429 void 12430 bcmx_l2_addr_delete_by_vlan_trunk_async( 12431 bcm_vlan_t vid, 12432 bcm_trunk_t tid, 12433 uint32 flags, 12434 bcmx_async_cb_t async_callback, 12435 void *async_cookie) 12436 { 12437 bcmx_async_req_t *async; 12438 12439 async = sal_alloc(sizeof(*async), "bcmx_async"); 12440 if (async == NULL) { 12441 if (async_callback != NULL) { 12442 (*async_callback)(async_cookie, BCM_E_MEMORY); 12443 } 12444 return; 12445 } 12446 async->next = NULL; 12447 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_VLAN_TRUNK; 12448 async->run = bcmx_async_run; 12449 async->callback = async_callback; 12450 async->cookie = async_cookie; 12451 async->args.l2_addr_delete_by_vlan_trunk.vid = vid; 12452 async->args.l2_addr_delete_by_vlan_trunk.tid = tid; 12453 async->args.l2_addr_delete_by_vlan_trunk.flags = flags; 12454 bcm_async_add((bcm_async_req_t *)async); 12455 } 12456 12457 void 12458 bcmx_l2_addr_freeze_async( 12459 bcmx_async_cb_t async_callback, 12460 void *async_cookie) 12461 { 12462 bcmx_async_req_t *async; 12463 12464 async = sal_alloc(sizeof(*async), "bcmx_async"); 12465 if (async == NULL) { 12466 if (async_callback != NULL) { 12467 (*async_callback)(async_cookie, BCM_E_MEMORY); 12468 } 12469 return; 12470 } 12471 async->next = NULL; 12472 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_FREEZE; 12473 async->run = bcmx_async_run; 12474 async->callback = async_callback; 12475 async->cookie = async_cookie; 12476 bcm_async_add((bcm_async_req_t *)async); 12477 } 12478 12479 void 12480 bcmx_l2_addr_from_bcm_async( 12481 bcmx_l2_addr_t * dest, 12482 bcmx_lplist_t * port_block, 12483 bcm_l2_addr_t * source, 12484 bcmx_async_cb_t async_callback, 12485 void *async_cookie) 12486 { 12487 bcmx_async_req_t *async; 12488 12489 async = sal_alloc(sizeof(*async), "bcmx_async"); 12490 if (async == NULL) { 12491 if (async_callback != NULL) { 12492 (*async_callback)(async_cookie, BCM_E_MEMORY); 12493 } 12494 return; 12495 } 12496 async->next = NULL; 12497 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_FROM_BCM; 12498 async->run = bcmx_async_run; 12499 async->callback = async_callback; 12500 async->cookie = async_cookie; 12501 async->args.l2_addr_from_bcm.dest = dest; 12502 async->args.l2_addr_from_bcm.port_block = port_block; 12503 async->args.l2_addr_from_bcm.source = source; 12504 bcm_async_add((bcm_async_req_t *)async); 12505 } 12506 12507 void 12508 bcmx_l2_addr_get_async( 12509 bcm_mac_t mac_addr, 12510 bcm_vlan_t vid, 12511 bcmx_l2_addr_t * l2addr, 12512 bcmx_lplist_t * port_block, 12513 bcmx_async_cb_t async_callback, 12514 void *async_cookie) 12515 { 12516 bcmx_async_req_t *async; 12517 12518 async = sal_alloc(sizeof(*async), "bcmx_async"); 12519 if (async == NULL) { 12520 if (async_callback != NULL) { 12521 (*async_callback)(async_cookie, BCM_E_MEMORY); 12522 } 12523 return; 12524 } 12525 async->next = NULL; 12526 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_GET; 12527 async->run = bcmx_async_run; 12528 async->callback = async_callback; 12529 async->cookie = async_cookie; 12530 async->args.l2_addr_get.mac_addr = (uint8 *)mac_addr; 12531 async->args.l2_addr_get.vid = vid; 12532 async->args.l2_addr_get.l2addr = l2addr; 12533 async->args.l2_addr_get.port_block = port_block; 12534 bcm_async_add((bcm_async_req_t *)async); 12535 } 12536 12537 void 12538 bcmx_l2_addr_native_get_async( 12539 bcm_mac_t mac_addr, 12540 bcm_vlan_t vid, 12541 bcmx_l2_addr_t * l2addr, 12542 bcmx_async_cb_t async_callback, 12543 void *async_cookie) 12544 { 12545 bcmx_async_req_t *async; 12546 12547 async = sal_alloc(sizeof(*async), "bcmx_async"); 12548 if (async == NULL) { 12549 if (async_callback != NULL) { 12550 (*async_callback)(async_cookie, BCM_E_MEMORY); 12551 } 12552 return; 12553 } 12554 async->next = NULL; 12555 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_NATIVE_GET; 12556 async->run = bcmx_async_run; 12557 async->callback = async_callback; 12558 async->cookie = async_cookie; 12559 async->args.l2_addr_native_get.mac_addr = (uint8 *)mac_addr; 12560 async->args.l2_addr_native_get.vid = vid; 12561 async->args.l2_addr_native_get.l2addr = l2addr; 12562 bcm_async_add((bcm_async_req_t *)async); 12563 } 12564 12565 void 12566 bcmx_l2_addr_port_get_async( 12567 bcmx_lport_t port, 12568 bcm_mac_t mac_addr, 12569 bcm_vlan_t vid, 12570 bcmx_l2_addr_t * l2addr, 12571 bcmx_async_cb_t async_callback, 12572 void *async_cookie) 12573 { 12574 bcmx_async_req_t *async; 12575 12576 async = sal_alloc(sizeof(*async), "bcmx_async"); 12577 if (async == NULL) { 12578 if (async_callback != NULL) { 12579 (*async_callback)(async_cookie, BCM_E_MEMORY); 12580 } 12581 return; 12582 } 12583 async->next = NULL; 12584 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_PORT_GET; 12585 async->run = bcmx_async_run; 12586 async->callback = async_callback; 12587 async->cookie = async_cookie; 12588 async->args.l2_addr_port_get.port = port; 12589 async->args.l2_addr_port_get.mac_addr = (uint8 *)mac_addr; 12590 async->args.l2_addr_port_get.vid = vid; 12591 async->args.l2_addr_port_get.l2addr = l2addr; 12592 bcm_async_add((bcm_async_req_t *)async); 12593 } 12594 12595 void 12596 bcmx_l2_addr_refresh_async( 12597 bcmx_l2_addr_t * l2addr, 12598 bcmx_lplist_t * port_block, 12599 bcmx_async_cb_t async_callback, 12600 void *async_cookie) 12601 { 12602 bcmx_async_req_t *async; 12603 12604 async = sal_alloc(sizeof(*async), "bcmx_async"); 12605 if (async == NULL) { 12606 if (async_callback != NULL) { 12607 (*async_callback)(async_cookie, BCM_E_MEMORY); 12608 } 12609 return; 12610 } 12611 async->next = NULL; 12612 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_REFRESH; 12613 async->run = bcmx_async_run; 12614 async->callback = async_callback; 12615 async->cookie = async_cookie; 12616 async->args.l2_addr_refresh.l2addr = l2addr; 12617 async->args.l2_addr_refresh.port_block = port_block; 12618 bcm_async_add((bcm_async_req_t *)async); 12619 } 12620 12621 void 12622 bcmx_l2_addr_thaw_async( 12623 bcmx_async_cb_t async_callback, 12624 void *async_cookie) 12625 { 12626 bcmx_async_req_t *async; 12627 12628 async = sal_alloc(sizeof(*async), "bcmx_async"); 12629 if (async == NULL) { 12630 if (async_callback != NULL) { 12631 (*async_callback)(async_cookie, BCM_E_MEMORY); 12632 } 12633 return; 12634 } 12635 async->next = NULL; 12636 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_THAW; 12637 async->run = bcmx_async_run; 12638 async->callback = async_callback; 12639 async->cookie = async_cookie; 12640 bcm_async_add((bcm_async_req_t *)async); 12641 } 12642 12643 void 12644 bcmx_l2_addr_to_bcm_async( 12645 int bcm_unit, 12646 bcm_l2_addr_t * dest, 12647 bcmx_l2_addr_t * source, 12648 bcmx_lplist_t * port_block, 12649 bcmx_async_cb_t async_callback, 12650 void *async_cookie) 12651 { 12652 bcmx_async_req_t *async; 12653 12654 async = sal_alloc(sizeof(*async), "bcmx_async"); 12655 if (async == NULL) { 12656 if (async_callback != NULL) { 12657 (*async_callback)(async_cookie, BCM_E_MEMORY); 12658 } 12659 return; 12660 } 12661 async->next = NULL; 12662 async->type = BCMX_ASYNC_ENTRY_L2_ADDR_TO_BCM; 12663 async->run = bcmx_async_run; 12664 async->callback = async_callback; 12665 async->cookie = async_cookie; 12666 async->args.l2_addr_to_bcm.bcm_unit = bcm_unit; 12667 async->args.l2_addr_to_bcm.dest = dest; 12668 async->args.l2_addr_to_bcm.source = source; 12669 async->args.l2_addr_to_bcm.port_block = port_block; 12670 bcm_async_add((bcm_async_req_t *)async); 12671 } 12672 12673 void 12674 bcmx_l2_age_timer_get_async( 12675 int * age_seconds, 12676 bcmx_async_cb_t async_callback, 12677 void *async_cookie) 12678 { 12679 bcmx_async_req_t *async; 12680 12681 async = sal_alloc(sizeof(*async), "bcmx_async"); 12682 if (async == NULL) { 12683 if (async_callback != NULL) { 12684 (*async_callback)(async_cookie, BCM_E_MEMORY); 12685 } 12686 return; 12687 } 12688 async->next = NULL; 12689 async->type = BCMX_ASYNC_ENTRY_L2_AGE_TIMER_GET; 12690 async->run = bcmx_async_run; 12691 async->callback = async_callback; 12692 async->cookie = async_cookie; 12693 async->args.l2_age_timer_get.age_seconds = age_seconds; 12694 bcm_async_add((bcm_async_req_t *)async); 12695 } 12696 12697 void 12698 bcmx_l2_age_timer_set_async( 12699 int age_seconds, 12700 bcmx_async_cb_t async_callback, 12701 void *async_cookie) 12702 { 12703 bcmx_async_req_t *async; 12704 12705 async = sal_alloc(sizeof(*async), "bcmx_async"); 12706 if (async == NULL) { 12707 if (async_callback != NULL) { 12708 (*async_callback)(async_cookie, BCM_E_MEMORY); 12709 } 12710 return; 12711 } 12712 async->next = NULL; 12713 async->type = BCMX_ASYNC_ENTRY_L2_AGE_TIMER_SET; 12714 async->run = bcmx_async_run; 12715 async->callback = async_callback; 12716 async->cookie = async_cookie; 12717 async->args.l2_age_timer_set.age_seconds = age_seconds; 12718 bcm_async_add((bcm_async_req_t *)async); 12719 } 12720 12721 void 12722 bcmx_l2_cache_delete_async( 12723 int index, 12724 bcmx_async_cb_t async_callback, 12725 void *async_cookie) 12726 { 12727 bcmx_async_req_t *async; 12728 12729 async = sal_alloc(sizeof(*async), "bcmx_async"); 12730 if (async == NULL) { 12731 if (async_callback != NULL) { 12732 (*async_callback)(async_cookie, BCM_E_MEMORY); 12733 } 12734 return; 12735 } 12736 async->next = NULL; 12737 async->type = BCMX_ASYNC_ENTRY_L2_CACHE_DELETE; 12738 async->run = bcmx_async_run; 12739 async->callback = async_callback; 12740 async->cookie = async_cookie; 12741 async->args.l2_cache_delete.index = index; 12742 bcm_async_add((bcm_async_req_t *)async); 12743 } 12744 12745 void 12746 bcmx_l2_cache_delete_all_async( 12747 bcmx_async_cb_t async_callback, 12748 void *async_cookie) 12749 { 12750 bcmx_async_req_t *async; 12751 12752 async = sal_alloc(sizeof(*async), "bcmx_async"); 12753 if (async == NULL) { 12754 if (async_callback != NULL) { 12755 (*async_callback)(async_cookie, BCM_E_MEMORY); 12756 } 12757 return; 12758 } 12759 async->next = NULL; 12760 async->type = BCMX_ASYNC_ENTRY_L2_CACHE_DELETE_ALL; 12761 async->run = bcmx_async_run; 12762 async->callback = async_callback; 12763 async->cookie = async_cookie; 12764 bcm_async_add((bcm_async_req_t *)async); 12765 } 12766 12767 void 12768 bcmx_l2_cache_get_async( 12769 int index, 12770 bcmx_l2_cache_addr_t * addr, 12771 bcmx_async_cb_t async_callback, 12772 void *async_cookie) 12773 { 12774 bcmx_async_req_t *async; 12775 12776 async = sal_alloc(sizeof(*async), "bcmx_async"); 12777 if (async == NULL) { 12778 if (async_callback != NULL) { 12779 (*async_callback)(async_cookie, BCM_E_MEMORY); 12780 } 12781 return; 12782 } 12783 async->next = NULL; 12784 async->type = BCMX_ASYNC_ENTRY_L2_CACHE_GET; 12785 async->run = bcmx_async_run; 12786 async->callback = async_callback; 12787 async->cookie = async_cookie; 12788 async->args.l2_cache_get.index = index; 12789 async->args.l2_cache_get.addr = addr; 12790 bcm_async_add((bcm_async_req_t *)async); 12791 } 12792 12793 void 12794 bcmx_l2_cache_init_async( 12795 bcmx_async_cb_t async_callback, 12796 void *async_cookie) 12797 { 12798 bcmx_async_req_t *async; 12799 12800 async = sal_alloc(sizeof(*async), "bcmx_async"); 12801 if (async == NULL) { 12802 if (async_callback != NULL) { 12803 (*async_callback)(async_cookie, BCM_E_MEMORY); 12804 } 12805 return; 12806 } 12807 async->next = NULL; 12808 async->type = BCMX_ASYNC_ENTRY_L2_CACHE_INIT; 12809 async->run = bcmx_async_run; 12810 async->callback = async_callback; 12811 async->cookie = async_cookie; 12812 bcm_async_add((bcm_async_req_t *)async); 12813 } 12814 12815 void 12816 bcmx_l2_cache_set_async( 12817 int index, 12818 bcmx_l2_cache_addr_t * addr, 12819 int * index_used, 12820 bcmx_async_cb_t async_callback, 12821 void *async_cookie) 12822 { 12823 bcmx_async_req_t *async; 12824 12825 async = sal_alloc(sizeof(*async), "bcmx_async"); 12826 if (async == NULL) { 12827 if (async_callback != NULL) { 12828 (*async_callback)(async_cookie, BCM_E_MEMORY); 12829 } 12830 return; 12831 } 12832 async->next = NULL; 12833 async->type = BCMX_ASYNC_ENTRY_L2_CACHE_SET; 12834 async->run = bcmx_async_run; 12835 async->callback = async_callback; 12836 async->cookie = async_cookie; 12837 async->args.l2_cache_set.index = index; 12838 async->args.l2_cache_set.addr = addr; 12839 async->args.l2_cache_set.index_used = index_used; 12840 bcm_async_add((bcm_async_req_t *)async); 12841 } 12842 12843 void 12844 bcmx_l2_cache_size_get_async( 12845 int * size, 12846 bcmx_async_cb_t async_callback, 12847 void *async_cookie) 12848 { 12849 bcmx_async_req_t *async; 12850 12851 async = sal_alloc(sizeof(*async), "bcmx_async"); 12852 if (async == NULL) { 12853 if (async_callback != NULL) { 12854 (*async_callback)(async_cookie, BCM_E_MEMORY); 12855 } 12856 return; 12857 } 12858 async->next = NULL; 12859 async->type = BCMX_ASYNC_ENTRY_L2_CACHE_SIZE_GET; 12860 async->run = bcmx_async_run; 12861 async->callback = async_callback; 12862 async->cookie = async_cookie; 12863 async->args.l2_cache_size_get.size = size; 12864 bcm_async_add((bcm_async_req_t *)async); 12865 } 12866 12867 void 12868 bcmx_l2_conflict_get_async( 12869 bcmx_l2_addr_t * addr, 12870 bcmx_l2_addr_t * cf_array, 12871 int cf_max, 12872 int * cf_count, 12873 bcmx_async_cb_t async_callback, 12874 void *async_cookie) 12875 { 12876 bcmx_async_req_t *async; 12877 12878 async = sal_alloc(sizeof(*async), "bcmx_async"); 12879 if (async == NULL) { 12880 if (async_callback != NULL) { 12881 (*async_callback)(async_cookie, BCM_E_MEMORY); 12882 } 12883 return; 12884 } 12885 async->next = NULL; 12886 async->type = BCMX_ASYNC_ENTRY_L2_CONFLICT_GET; 12887 async->run = bcmx_async_run; 12888 async->callback = async_callback; 12889 async->cookie = async_cookie; 12890 async->args.l2_conflict_get.addr = addr; 12891 async->args.l2_conflict_get.cf_array = cf_array; 12892 async->args.l2_conflict_get.cf_max = cf_max; 12893 async->args.l2_conflict_get.cf_count = cf_count; 12894 bcm_async_add((bcm_async_req_t *)async); 12895 } 12896 12897 void 12898 bcmx_l2_device_add_async( 12899 int bcm_unit, 12900 bcmx_async_cb_t async_callback, 12901 void *async_cookie) 12902 { 12903 bcmx_async_req_t *async; 12904 12905 async = sal_alloc(sizeof(*async), "bcmx_async"); 12906 if (async == NULL) { 12907 if (async_callback != NULL) { 12908 (*async_callback)(async_cookie, BCM_E_MEMORY); 12909 } 12910 return; 12911 } 12912 async->next = NULL; 12913 async->type = BCMX_ASYNC_ENTRY_L2_DEVICE_ADD; 12914 async->run = bcmx_async_run; 12915 async->callback = async_callback; 12916 async->cookie = async_cookie; 12917 async->args.l2_device_add.bcm_unit = bcm_unit; 12918 bcm_async_add((bcm_async_req_t *)async); 12919 } 12920 12921 void 12922 bcmx_l2_device_remove_async( 12923 int bcm_unit, 12924 bcmx_async_cb_t async_callback, 12925 void *async_cookie) 12926 { 12927 bcmx_async_req_t *async; 12928 12929 async = sal_alloc(sizeof(*async), "bcmx_async"); 12930 if (async == NULL) { 12931 if (async_callback != NULL) { 12932 (*async_callback)(async_cookie, BCM_E_MEMORY); 12933 } 12934 return; 12935 } 12936 async->next = NULL; 12937 async->type = BCMX_ASYNC_ENTRY_L2_DEVICE_REMOVE; 12938 async->run = bcmx_async_run; 12939 async->callback = async_callback; 12940 async->cookie = async_cookie; 12941 async->args.l2_device_remove.bcm_unit = bcm_unit; 12942 bcm_async_add((bcm_async_req_t *)async); 12943 } 12944 12945 void 12946 bcmx_l2_learn_class_get_async( 12947 int lclass, 12948 int * lclass_prio, 12949 uint32 * flags, 12950 bcmx_async_cb_t async_callback, 12951 void *async_cookie) 12952 { 12953 bcmx_async_req_t *async; 12954 12955 async = sal_alloc(sizeof(*async), "bcmx_async"); 12956 if (async == NULL) { 12957 if (async_callback != NULL) { 12958 (*async_callback)(async_cookie, BCM_E_MEMORY); 12959 } 12960 return; 12961 } 12962 async->next = NULL; 12963 async->type = BCMX_ASYNC_ENTRY_L2_LEARN_CLASS_GET; 12964 async->run = bcmx_async_run; 12965 async->callback = async_callback; 12966 async->cookie = async_cookie; 12967 async->args.l2_learn_class_get.lclass = lclass; 12968 async->args.l2_learn_class_get.lclass_prio = lclass_prio; 12969 async->args.l2_learn_class_get.flags = flags; 12970 bcm_async_add((bcm_async_req_t *)async); 12971 } 12972 12973 void 12974 bcmx_l2_learn_class_set_async( 12975 int lclass, 12976 int lclass_prio, 12977 uint32 flags, 12978 bcmx_async_cb_t async_callback, 12979 void *async_cookie) 12980 { 12981 bcmx_async_req_t *async; 12982 12983 async = sal_alloc(sizeof(*async), "bcmx_async"); 12984 if (async == NULL) { 12985 if (async_callback != NULL) { 12986 (*async_callback)(async_cookie, BCM_E_MEMORY); 12987 } 12988 return; 12989 } 12990 async->next = NULL; 12991 async->type = BCMX_ASYNC_ENTRY_L2_LEARN_CLASS_SET; 12992 async->run = bcmx_async_run; 12993 async->callback = async_callback; 12994 async->cookie = async_cookie; 12995 async->args.l2_learn_class_set.lclass = lclass; 12996 async->args.l2_learn_class_set.lclass_prio = lclass_prio; 12997 async->args.l2_learn_class_set.flags = flags; 12998 bcm_async_add((bcm_async_req_t *)async); 12999 } 13000 13001 void 13002 bcmx_l2_learn_limit_get_async( 13003 bcmx_l2_learn_limit_t * limit, 13004 bcmx_async_cb_t async_callback, 13005 void *async_cookie) 13006 { 13007 bcmx_async_req_t *async; 13008 13009 async = sal_alloc(sizeof(*async), "bcmx_async"); 13010 if (async == NULL) { 13011 if (async_callback != NULL) { 13012 (*async_callback)(async_cookie, BCM_E_MEMORY); 13013 } 13014 return; 13015 } 13016 async->next = NULL; 13017 async->type = BCMX_ASYNC_ENTRY_L2_LEARN_LIMIT_GET; 13018 async->run = bcmx_async_run; 13019 async->callback = async_callback; 13020 async->cookie = async_cookie; 13021 async->args.l2_learn_limit_get.limit = limit; 13022 bcm_async_add((bcm_async_req_t *)async); 13023 } 13024 13025 void 13026 bcmx_l2_learn_limit_set_async( 13027 bcmx_l2_learn_limit_t * limit, 13028 bcmx_async_cb_t async_callback, 13029 void *async_cookie) 13030 { 13031 bcmx_async_req_t *async; 13032 13033 async = sal_alloc(sizeof(*async), "bcmx_async"); 13034 if (async == NULL) { 13035 if (async_callback != NULL) { 13036 (*async_callback)(async_cookie, BCM_E_MEMORY); 13037 } 13038 return; 13039 } 13040 async->next = NULL; 13041 async->type = BCMX_ASYNC_ENTRY_L2_LEARN_LIMIT_SET; 13042 async->run = bcmx_async_run; 13043 async->callback = async_callback; 13044 async->cookie = async_cookie; 13045 async->args.l2_learn_limit_set.limit = limit; 13046 bcm_async_add((bcm_async_req_t *)async); 13047 } 13048 13049 void 13050 bcmx_l2_learn_port_class_get_async( 13051 bcmx_lport_t port, 13052 int * lclass, 13053 bcmx_async_cb_t async_callback, 13054 void *async_cookie) 13055 { 13056 bcmx_async_req_t *async; 13057 13058 async = sal_alloc(sizeof(*async), "bcmx_async"); 13059 if (async == NULL) { 13060 if (async_callback != NULL) { 13061 (*async_callback)(async_cookie, BCM_E_MEMORY); 13062 } 13063 return; 13064 } 13065 async->next = NULL; 13066 async->type = BCMX_ASYNC_ENTRY_L2_LEARN_PORT_CLASS_GET; 13067 async->run = bcmx_async_run; 13068 async->callback = async_callback; 13069 async->cookie = async_cookie; 13070 async->args.l2_learn_port_class_get.port = port; 13071 async->args.l2_learn_port_class_get.lclass = lclass; 13072 bcm_async_add((bcm_async_req_t *)async); 13073 } 13074 13075 void 13076 bcmx_l2_learn_port_class_set_async( 13077 bcmx_lport_t port, 13078 int lclass, 13079 bcmx_async_cb_t async_callback, 13080 void *async_cookie) 13081 { 13082 bcmx_async_req_t *async; 13083 13084 async = sal_alloc(sizeof(*async), "bcmx_async"); 13085 if (async == NULL) { 13086 if (async_callback != NULL) { 13087 (*async_callback)(async_cookie, BCM_E_MEMORY); 13088 } 13089 return; 13090 } 13091 async->next = NULL; 13092 async->type = BCMX_ASYNC_ENTRY_L2_LEARN_PORT_CLASS_SET; 13093 async->run = bcmx_async_run; 13094 async->callback = async_callback; 13095 async->cookie = async_cookie; 13096 async->args.l2_learn_port_class_set.port = port; 13097 async->args.l2_learn_port_class_set.lclass = lclass; 13098 bcm_async_add((bcm_async_req_t *)async); 13099 } 13100 13101 void 13102 bcmx_l2_notify_register_async( 13103 bcmx_l2_notify_f callback, 13104 void * userdata, 13105 bcmx_async_cb_t async_callback, 13106 void *async_cookie) 13107 { 13108 bcmx_async_req_t *async; 13109 13110 async = sal_alloc(sizeof(*async), "bcmx_async"); 13111 if (async == NULL) { 13112 if (async_callback != NULL) { 13113 (*async_callback)(async_cookie, BCM_E_MEMORY); 13114 } 13115 return; 13116 } 13117 async->next = NULL; 13118 async->type = BCMX_ASYNC_ENTRY_L2_NOTIFY_REGISTER; 13119 async->run = bcmx_async_run; 13120 async->callback = async_callback; 13121 async->cookie = async_cookie; 13122 async->args.l2_notify_register.callback = callback; 13123 async->args.l2_notify_register.userdata = userdata; 13124 bcm_async_add((bcm_async_req_t *)async); 13125 } 13126 13127 void 13128 bcmx_l2_notify_start_async( 13129 bcmx_async_cb_t async_callback, 13130 void *async_cookie) 13131 { 13132 bcmx_async_req_t *async; 13133 13134 async = sal_alloc(sizeof(*async), "bcmx_async"); 13135 if (async == NULL) { 13136 if (async_callback != NULL) { 13137 (*async_callback)(async_cookie, BCM_E_MEMORY); 13138 } 13139 return; 13140 } 13141 async->next = NULL; 13142 async->type = BCMX_ASYNC_ENTRY_L2_NOTIFY_START; 13143 async->run = bcmx_async_run; 13144 async->callback = async_callback; 13145 async->cookie = async_cookie; 13146 bcm_async_add((bcm_async_req_t *)async); 13147 } 13148 13149 void 13150 bcmx_l2_notify_stop_async( 13151 bcmx_async_cb_t async_callback, 13152 void *async_cookie) 13153 { 13154 bcmx_async_req_t *async; 13155 13156 async = sal_alloc(sizeof(*async), "bcmx_async"); 13157 if (async == NULL) { 13158 if (async_callback != NULL) { 13159 (*async_callback)(async_cookie, BCM_E_MEMORY); 13160 } 13161 return; 13162 } 13163 async->next = NULL; 13164 async->type = BCMX_ASYNC_ENTRY_L2_NOTIFY_STOP; 13165 async->run = bcmx_async_run; 13166 async->callback = async_callback; 13167 async->cookie = async_cookie; 13168 bcm_async_add((bcm_async_req_t *)async); 13169 } 13170 13171 void 13172 bcmx_l2_notify_unregister_async( 13173 bcmx_l2_notify_f callback, 13174 void * userdata, 13175 bcmx_async_cb_t async_callback, 13176 void *async_cookie) 13177 { 13178 bcmx_async_req_t *async; 13179 13180 async = sal_alloc(sizeof(*async), "bcmx_async"); 13181 if (async == NULL) { 13182 if (async_callback != NULL) { 13183 (*async_callback)(async_cookie, BCM_E_MEMORY); 13184 } 13185 return; 13186 } 13187 async->next = NULL; 13188 async->type = BCMX_ASYNC_ENTRY_L2_NOTIFY_UNREGISTER; 13189 async->run = bcmx_async_run; 13190 async->callback = async_callback; 13191 async->cookie = async_cookie; 13192 async->args.l2_notify_unregister.callback = callback; 13193 async->args.l2_notify_unregister.userdata = userdata; 13194 bcm_async_add((bcm_async_req_t *)async); 13195 } 13196 13197 void 13198 bcmx_l2_replace_async( 13199 uint32 flags, 13200 bcmx_l2_addr_t * match_addr, 13201 bcmx_lport_t new_port, 13202 bcm_trunk_t new_trunk, 13203 bcmx_async_cb_t async_callback, 13204 void *async_cookie) 13205 { 13206 bcmx_async_req_t *async; 13207 13208 async = sal_alloc(sizeof(*async), "bcmx_async"); 13209 if (async == NULL) { 13210 if (async_callback != NULL) { 13211 (*async_callback)(async_cookie, BCM_E_MEMORY); 13212 } 13213 return; 13214 } 13215 async->next = NULL; 13216 async->type = BCMX_ASYNC_ENTRY_L2_REPLACE; 13217 async->run = bcmx_async_run; 13218 async->callback = async_callback; 13219 async->cookie = async_cookie; 13220 async->args.l2_replace.flags = flags; 13221 async->args.l2_replace.match_addr = match_addr; 13222 async->args.l2_replace.new_port = new_port; 13223 async->args.l2_replace.new_trunk = new_trunk; 13224 bcm_async_add((bcm_async_req_t *)async); 13225 } 13226 13227 void 13228 bcmx_l2_tunnel_add_async( 13229 bcm_mac_t mac, 13230 bcm_vlan_t vlan, 13231 bcmx_async_cb_t async_callback, 13232 void *async_cookie) 13233 { 13234 bcmx_async_req_t *async; 13235 13236 async = sal_alloc(sizeof(*async), "bcmx_async"); 13237 if (async == NULL) { 13238 if (async_callback != NULL) { 13239 (*async_callback)(async_cookie, BCM_E_MEMORY); 13240 } 13241 return; 13242 } 13243 async->next = NULL; 13244 async->type = BCMX_ASYNC_ENTRY_L2_TUNNEL_ADD; 13245 async->run = bcmx_async_run; 13246 async->callback = async_callback; 13247 async->cookie = async_cookie; 13248 async->args.l2_tunnel_add.mac = (uint8 *)mac; 13249 async->args.l2_tunnel_add.vlan = vlan; 13250 bcm_async_add((bcm_async_req_t *)async); 13251 } 13252 13253 void 13254 bcmx_l2_tunnel_delete_async( 13255 bcm_mac_t mac, 13256 bcm_vlan_t vlan, 13257 bcmx_async_cb_t async_callback, 13258 void *async_cookie) 13259 { 13260 bcmx_async_req_t *async; 13261 13262 async = sal_alloc(sizeof(*async), "bcmx_async"); 13263 if (async == NULL) { 13264 if (async_callback != NULL) { 13265 (*async_callback)(async_cookie, BCM_E_MEMORY); 13266 } 13267 return; 13268 } 13269 async->next = NULL; 13270 async->type = BCMX_ASYNC_ENTRY_L2_TUNNEL_DELETE; 13271 async->run = bcmx_async_run; 13272 async->callback = async_callback; 13273 async->cookie = async_cookie; 13274 async->args.l2_tunnel_delete.mac = (uint8 *)mac; 13275 async->args.l2_tunnel_delete.vlan = vlan; 13276 bcm_async_add((bcm_async_req_t *)async); 13277 } 13278 13279 void 13280 bcmx_l2_tunnel_delete_all_async( 13281 bcmx_async_cb_t async_callback, 13282 void *async_cookie) 13283 { 13284 bcmx_async_req_t *async; 13285 13286 async = sal_alloc(sizeof(*async), "bcmx_async"); 13287 if (async == NULL) { 13288 if (async_callback != NULL) { 13289 (*async_callback)(async_cookie, BCM_E_MEMORY); 13290 } 13291 return; 13292 } 13293 async->next = NULL; 13294 async->type = BCMX_ASYNC_ENTRY_L2_TUNNEL_DELETE_ALL; 13295 async->run = bcmx_async_run; 13296 async->callback = async_callback; 13297 async->cookie = async_cookie; 13298 bcm_async_add((bcm_async_req_t *)async); 13299 } 13300 13301 #ifdef INCLUDE_L3 13302 13303 void 13304 bcmx_l3_cleanup_async( 13305 bcmx_async_cb_t async_callback, 13306 void *async_cookie) 13307 { 13308 bcmx_async_req_t *async; 13309 13310 async = sal_alloc(sizeof(*async), "bcmx_async"); 13311 if (async == NULL) { 13312 if (async_callback != NULL) { 13313 (*async_callback)(async_cookie, BCM_E_MEMORY); 13314 } 13315 return; 13316 } 13317 async->next = NULL; 13318 async->type = BCMX_ASYNC_ENTRY_L3_CLEANUP; 13319 async->run = bcmx_async_run; 13320 async->callback = async_callback; 13321 async->cookie = async_cookie; 13322 bcm_async_add((bcm_async_req_t *)async); 13323 } 13324 13325 void 13326 bcmx_l3_egress_create_async( 13327 uint32 flags, 13328 bcmx_l3_egress_t * egr, 13329 bcm_if_t * intf, 13330 bcmx_async_cb_t async_callback, 13331 void *async_cookie) 13332 { 13333 bcmx_async_req_t *async; 13334 13335 async = sal_alloc(sizeof(*async), "bcmx_async"); 13336 if (async == NULL) { 13337 if (async_callback != NULL) { 13338 (*async_callback)(async_cookie, BCM_E_MEMORY); 13339 } 13340 return; 13341 } 13342 async->next = NULL; 13343 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_CREATE; 13344 async->run = bcmx_async_run; 13345 async->callback = async_callback; 13346 async->cookie = async_cookie; 13347 async->args.l3_egress_create.flags = flags; 13348 async->args.l3_egress_create.egr = egr; 13349 async->args.l3_egress_create.intf = intf; 13350 bcm_async_add((bcm_async_req_t *)async); 13351 } 13352 13353 void 13354 bcmx_l3_egress_destroy_async( 13355 bcm_if_t intf, 13356 bcmx_async_cb_t async_callback, 13357 void *async_cookie) 13358 { 13359 bcmx_async_req_t *async; 13360 13361 async = sal_alloc(sizeof(*async), "bcmx_async"); 13362 if (async == NULL) { 13363 if (async_callback != NULL) { 13364 (*async_callback)(async_cookie, BCM_E_MEMORY); 13365 } 13366 return; 13367 } 13368 async->next = NULL; 13369 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_DESTROY; 13370 async->run = bcmx_async_run; 13371 async->callback = async_callback; 13372 async->cookie = async_cookie; 13373 async->args.l3_egress_destroy.intf = intf; 13374 bcm_async_add((bcm_async_req_t *)async); 13375 } 13376 13377 void 13378 bcmx_l3_egress_find_async( 13379 bcmx_l3_egress_t * egr, 13380 bcm_if_t * intf, 13381 bcmx_async_cb_t async_callback, 13382 void *async_cookie) 13383 { 13384 bcmx_async_req_t *async; 13385 13386 async = sal_alloc(sizeof(*async), "bcmx_async"); 13387 if (async == NULL) { 13388 if (async_callback != NULL) { 13389 (*async_callback)(async_cookie, BCM_E_MEMORY); 13390 } 13391 return; 13392 } 13393 async->next = NULL; 13394 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_FIND; 13395 async->run = bcmx_async_run; 13396 async->callback = async_callback; 13397 async->cookie = async_cookie; 13398 async->args.l3_egress_find.egr = egr; 13399 async->args.l3_egress_find.intf = intf; 13400 bcm_async_add((bcm_async_req_t *)async); 13401 } 13402 13403 void 13404 bcmx_l3_egress_get_async( 13405 bcm_if_t intf, 13406 bcmx_l3_egress_t * egr, 13407 bcmx_async_cb_t async_callback, 13408 void *async_cookie) 13409 { 13410 bcmx_async_req_t *async; 13411 13412 async = sal_alloc(sizeof(*async), "bcmx_async"); 13413 if (async == NULL) { 13414 if (async_callback != NULL) { 13415 (*async_callback)(async_cookie, BCM_E_MEMORY); 13416 } 13417 return; 13418 } 13419 async->next = NULL; 13420 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_GET; 13421 async->run = bcmx_async_run; 13422 async->callback = async_callback; 13423 async->cookie = async_cookie; 13424 async->args.l3_egress_get.intf = intf; 13425 async->args.l3_egress_get.egr = egr; 13426 bcm_async_add((bcm_async_req_t *)async); 13427 } 13428 13429 void 13430 bcmx_l3_egress_multipath_add_async( 13431 bcm_if_t mpintf, 13432 bcm_if_t intf, 13433 bcmx_async_cb_t async_callback, 13434 void *async_cookie) 13435 { 13436 bcmx_async_req_t *async; 13437 13438 async = sal_alloc(sizeof(*async), "bcmx_async"); 13439 if (async == NULL) { 13440 if (async_callback != NULL) { 13441 (*async_callback)(async_cookie, BCM_E_MEMORY); 13442 } 13443 return; 13444 } 13445 async->next = NULL; 13446 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_ADD; 13447 async->run = bcmx_async_run; 13448 async->callback = async_callback; 13449 async->cookie = async_cookie; 13450 async->args.l3_egress_multipath_add.mpintf = mpintf; 13451 async->args.l3_egress_multipath_add.intf = intf; 13452 bcm_async_add((bcm_async_req_t *)async); 13453 } 13454 13455 void 13456 bcmx_l3_egress_multipath_create_async( 13457 uint32 flags, 13458 int intf_count, 13459 bcm_if_t * intf_array, 13460 bcm_if_t * mpintf, 13461 bcmx_async_cb_t async_callback, 13462 void *async_cookie) 13463 { 13464 bcmx_async_req_t *async; 13465 13466 async = sal_alloc(sizeof(*async), "bcmx_async"); 13467 if (async == NULL) { 13468 if (async_callback != NULL) { 13469 (*async_callback)(async_cookie, BCM_E_MEMORY); 13470 } 13471 return; 13472 } 13473 async->next = NULL; 13474 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_CREATE; 13475 async->run = bcmx_async_run; 13476 async->callback = async_callback; 13477 async->cookie = async_cookie; 13478 async->args.l3_egress_multipath_create.flags = flags; 13479 async->args.l3_egress_multipath_create.intf_count = intf_count; 13480 async->args.l3_egress_multipath_create.intf_array = intf_array; 13481 async->args.l3_egress_multipath_create.mpintf = mpintf; 13482 bcm_async_add((bcm_async_req_t *)async); 13483 } 13484 13485 void 13486 bcmx_l3_egress_multipath_delete_async( 13487 bcm_if_t mpintf, 13488 bcm_if_t intf, 13489 bcmx_async_cb_t async_callback, 13490 void *async_cookie) 13491 { 13492 bcmx_async_req_t *async; 13493 13494 async = sal_alloc(sizeof(*async), "bcmx_async"); 13495 if (async == NULL) { 13496 if (async_callback != NULL) { 13497 (*async_callback)(async_cookie, BCM_E_MEMORY); 13498 } 13499 return; 13500 } 13501 async->next = NULL; 13502 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_DELETE; 13503 async->run = bcmx_async_run; 13504 async->callback = async_callback; 13505 async->cookie = async_cookie; 13506 async->args.l3_egress_multipath_delete.mpintf = mpintf; 13507 async->args.l3_egress_multipath_delete.intf = intf; 13508 bcm_async_add((bcm_async_req_t *)async); 13509 } 13510 13511 void 13512 bcmx_l3_egress_multipath_destroy_async( 13513 bcm_if_t mpintf, 13514 bcmx_async_cb_t async_callback, 13515 void *async_cookie) 13516 { 13517 bcmx_async_req_t *async; 13518 13519 async = sal_alloc(sizeof(*async), "bcmx_async"); 13520 if (async == NULL) { 13521 if (async_callback != NULL) { 13522 (*async_callback)(async_cookie, BCM_E_MEMORY); 13523 } 13524 return; 13525 } 13526 async->next = NULL; 13527 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_DESTROY; 13528 async->run = bcmx_async_run; 13529 async->callback = async_callback; 13530 async->cookie = async_cookie; 13531 async->args.l3_egress_multipath_destroy.mpintf = mpintf; 13532 bcm_async_add((bcm_async_req_t *)async); 13533 } 13534 13535 void 13536 bcmx_l3_egress_multipath_find_async( 13537 int intf_count, 13538 bcm_if_t * intf_array, 13539 bcm_if_t * mpintf, 13540 bcmx_async_cb_t async_callback, 13541 void *async_cookie) 13542 { 13543 bcmx_async_req_t *async; 13544 13545 async = sal_alloc(sizeof(*async), "bcmx_async"); 13546 if (async == NULL) { 13547 if (async_callback != NULL) { 13548 (*async_callback)(async_cookie, BCM_E_MEMORY); 13549 } 13550 return; 13551 } 13552 async->next = NULL; 13553 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_FIND; 13554 async->run = bcmx_async_run; 13555 async->callback = async_callback; 13556 async->cookie = async_cookie; 13557 async->args.l3_egress_multipath_find.intf_count = intf_count; 13558 async->args.l3_egress_multipath_find.intf_array = intf_array; 13559 async->args.l3_egress_multipath_find.mpintf = mpintf; 13560 bcm_async_add((bcm_async_req_t *)async); 13561 } 13562 13563 void 13564 bcmx_l3_egress_multipath_get_async( 13565 bcm_if_t mpintf, 13566 int intf_size, 13567 bcm_if_t * intf_array, 13568 int * intf_count, 13569 bcmx_async_cb_t async_callback, 13570 void *async_cookie) 13571 { 13572 bcmx_async_req_t *async; 13573 13574 async = sal_alloc(sizeof(*async), "bcmx_async"); 13575 if (async == NULL) { 13576 if (async_callback != NULL) { 13577 (*async_callback)(async_cookie, BCM_E_MEMORY); 13578 } 13579 return; 13580 } 13581 async->next = NULL; 13582 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_GET; 13583 async->run = bcmx_async_run; 13584 async->callback = async_callback; 13585 async->cookie = async_cookie; 13586 async->args.l3_egress_multipath_get.mpintf = mpintf; 13587 async->args.l3_egress_multipath_get.intf_size = intf_size; 13588 async->args.l3_egress_multipath_get.intf_array = intf_array; 13589 async->args.l3_egress_multipath_get.intf_count = intf_count; 13590 bcm_async_add((bcm_async_req_t *)async); 13591 } 13592 13593 void 13594 bcmx_l3_egress_multipath_max_create_async( 13595 uint32 flags, 13596 int max_paths, 13597 int intf_count, 13598 bcm_if_t * intf_array, 13599 bcm_if_t * mpintf, 13600 bcmx_async_cb_t async_callback, 13601 void *async_cookie) 13602 { 13603 bcmx_async_req_t *async; 13604 13605 async = sal_alloc(sizeof(*async), "bcmx_async"); 13606 if (async == NULL) { 13607 if (async_callback != NULL) { 13608 (*async_callback)(async_cookie, BCM_E_MEMORY); 13609 } 13610 return; 13611 } 13612 async->next = NULL; 13613 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_MAX_CREATE; 13614 async->run = bcmx_async_run; 13615 async->callback = async_callback; 13616 async->cookie = async_cookie; 13617 async->args.l3_egress_multipath_max_create.flags = flags; 13618 async->args.l3_egress_multipath_max_create.max_paths = max_paths; 13619 async->args.l3_egress_multipath_max_create.intf_count = intf_count; 13620 async->args.l3_egress_multipath_max_create.intf_array = intf_array; 13621 async->args.l3_egress_multipath_max_create.mpintf = mpintf; 13622 bcm_async_add((bcm_async_req_t *)async); 13623 } 13624 13625 void 13626 bcmx_l3_egress_multipath_traverse_async( 13627 bcm_l3_egress_multipath_traverse_cb trav_fn, 13628 void * user_data, 13629 bcmx_async_cb_t async_callback, 13630 void *async_cookie) 13631 { 13632 bcmx_async_req_t *async; 13633 13634 async = sal_alloc(sizeof(*async), "bcmx_async"); 13635 if (async == NULL) { 13636 if (async_callback != NULL) { 13637 (*async_callback)(async_cookie, BCM_E_MEMORY); 13638 } 13639 return; 13640 } 13641 async->next = NULL; 13642 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_TRAVERSE; 13643 async->run = bcmx_async_run; 13644 async->callback = async_callback; 13645 async->cookie = async_cookie; 13646 async->args.l3_egress_multipath_traverse.trav_fn = trav_fn; 13647 async->args.l3_egress_multipath_traverse.user_data = user_data; 13648 bcm_async_add((bcm_async_req_t *)async); 13649 } 13650 13651 void 13652 bcmx_l3_egress_traverse_async( 13653 bcm_l3_egress_traverse_cb trav_fn, 13654 void * user_data, 13655 bcmx_async_cb_t async_callback, 13656 void *async_cookie) 13657 { 13658 bcmx_async_req_t *async; 13659 13660 async = sal_alloc(sizeof(*async), "bcmx_async"); 13661 if (async == NULL) { 13662 if (async_callback != NULL) { 13663 (*async_callback)(async_cookie, BCM_E_MEMORY); 13664 } 13665 return; 13666 } 13667 async->next = NULL; 13668 async->type = BCMX_ASYNC_ENTRY_L3_EGRESS_TRAVERSE; 13669 async->run = bcmx_async_run; 13670 async->callback = async_callback; 13671 async->cookie = async_cookie; 13672 async->args.l3_egress_traverse.trav_fn = trav_fn; 13673 async->args.l3_egress_traverse.user_data = user_data; 13674 bcm_async_add((bcm_async_req_t *)async); 13675 } 13676 13677 void 13678 bcmx_l3_enable_set_async( 13679 int enable, 13680 bcmx_async_cb_t async_callback, 13681 void *async_cookie) 13682 { 13683 bcmx_async_req_t *async; 13684 13685 async = sal_alloc(sizeof(*async), "bcmx_async"); 13686 if (async == NULL) { 13687 if (async_callback != NULL) { 13688 (*async_callback)(async_cookie, BCM_E_MEMORY); 13689 } 13690 return; 13691 } 13692 async->next = NULL; 13693 async->type = BCMX_ASYNC_ENTRY_L3_ENABLE_SET; 13694 async->run = bcmx_async_run; 13695 async->callback = async_callback; 13696 async->cookie = async_cookie; 13697 async->args.l3_enable_set.enable = enable; 13698 bcm_async_add((bcm_async_req_t *)async); 13699 } 13700 13701 void 13702 bcmx_l3_host_add_async( 13703 bcmx_l3_host_t * info, 13704 bcmx_async_cb_t async_callback, 13705 void *async_cookie) 13706 { 13707 bcmx_async_req_t *async; 13708 13709 async = sal_alloc(sizeof(*async), "bcmx_async"); 13710 if (async == NULL) { 13711 if (async_callback != NULL) { 13712 (*async_callback)(async_cookie, BCM_E_MEMORY); 13713 } 13714 return; 13715 } 13716 async->next = NULL; 13717 async->type = BCMX_ASYNC_ENTRY_L3_HOST_ADD; 13718 async->run = bcmx_async_run; 13719 async->callback = async_callback; 13720 async->cookie = async_cookie; 13721 async->args.l3_host_add.info = info; 13722 bcm_async_add((bcm_async_req_t *)async); 13723 } 13724 13725 void 13726 bcmx_l3_host_age_async( 13727 uint32 flags, 13728 bcm_l3_host_traverse_cb age_cb, 13729 void * user_data, 13730 bcmx_async_cb_t async_callback, 13731 void *async_cookie) 13732 { 13733 bcmx_async_req_t *async; 13734 13735 async = sal_alloc(sizeof(*async), "bcmx_async"); 13736 if (async == NULL) { 13737 if (async_callback != NULL) { 13738 (*async_callback)(async_cookie, BCM_E_MEMORY); 13739 } 13740 return; 13741 } 13742 async->next = NULL; 13743 async->type = BCMX_ASYNC_ENTRY_L3_HOST_AGE; 13744 async->run = bcmx_async_run; 13745 async->callback = async_callback; 13746 async->cookie = async_cookie; 13747 async->args.l3_host_age.flags = flags; 13748 async->args.l3_host_age.age_cb = age_cb; 13749 async->args.l3_host_age.user_data = user_data; 13750 bcm_async_add((bcm_async_req_t *)async); 13751 } 13752 13753 void 13754 bcmx_l3_host_conflict_get_async( 13755 bcm_l3_key_t * ipkey, 13756 bcm_l3_key_t * cf_array, 13757 int cf_max, 13758 int * cf_count, 13759 bcmx_async_cb_t async_callback, 13760 void *async_cookie) 13761 { 13762 bcmx_async_req_t *async; 13763 13764 async = sal_alloc(sizeof(*async), "bcmx_async"); 13765 if (async == NULL) { 13766 if (async_callback != NULL) { 13767 (*async_callback)(async_cookie, BCM_E_MEMORY); 13768 } 13769 return; 13770 } 13771 async->next = NULL; 13772 async->type = BCMX_ASYNC_ENTRY_L3_HOST_CONFLICT_GET; 13773 async->run = bcmx_async_run; 13774 async->callback = async_callback; 13775 async->cookie = async_cookie; 13776 async->args.l3_host_conflict_get.ipkey = ipkey; 13777 async->args.l3_host_conflict_get.cf_array = cf_array; 13778 async->args.l3_host_conflict_get.cf_max = cf_max; 13779 async->args.l3_host_conflict_get.cf_count = cf_count; 13780 bcm_async_add((bcm_async_req_t *)async); 13781 } 13782 13783 void 13784 bcmx_l3_host_delete_async( 13785 bcmx_l3_host_t * ip_addr, 13786 bcmx_async_cb_t async_callback, 13787 void *async_cookie) 13788 { 13789 bcmx_async_req_t *async; 13790 13791 async = sal_alloc(sizeof(*async), "bcmx_async"); 13792 if (async == NULL) { 13793 if (async_callback != NULL) { 13794 (*async_callback)(async_cookie, BCM_E_MEMORY); 13795 } 13796 return; 13797 } 13798 async->next = NULL; 13799 async->type = BCMX_ASYNC_ENTRY_L3_HOST_DELETE; 13800 async->run = bcmx_async_run; 13801 async->callback = async_callback; 13802 async->cookie = async_cookie; 13803 async->args.l3_host_delete.ip_addr = ip_addr; 13804 bcm_async_add((bcm_async_req_t *)async); 13805 } 13806 13807 void 13808 bcmx_l3_host_delete_all_async( 13809 bcmx_l3_host_t * info, 13810 bcmx_async_cb_t async_callback, 13811 void *async_cookie) 13812 { 13813 bcmx_async_req_t *async; 13814 13815 async = sal_alloc(sizeof(*async), "bcmx_async"); 13816 if (async == NULL) { 13817 if (async_callback != NULL) { 13818 (*async_callback)(async_cookie, BCM_E_MEMORY); 13819 } 13820 return; 13821 } 13822 async->next = NULL; 13823 async->type = BCMX_ASYNC_ENTRY_L3_HOST_DELETE_ALL; 13824 async->run = bcmx_async_run; 13825 async->callback = async_callback; 13826 async->cookie = async_cookie; 13827 async->args.l3_host_delete_all.info = info; 13828 bcm_async_add((bcm_async_req_t *)async); 13829 } 13830 13831 void 13832 bcmx_l3_host_delete_by_interface_async( 13833 bcmx_l3_host_t * info, 13834 bcmx_async_cb_t async_callback, 13835 void *async_cookie) 13836 { 13837 bcmx_async_req_t *async; 13838 13839 async = sal_alloc(sizeof(*async), "bcmx_async"); 13840 if (async == NULL) { 13841 if (async_callback != NULL) { 13842 (*async_callback)(async_cookie, BCM_E_MEMORY); 13843 } 13844 return; 13845 } 13846 async->next = NULL; 13847 async->type = BCMX_ASYNC_ENTRY_L3_HOST_DELETE_BY_INTERFACE; 13848 async->run = bcmx_async_run; 13849 async->callback = async_callback; 13850 async->cookie = async_cookie; 13851 async->args.l3_host_delete_by_interface.info = info; 13852 bcm_async_add((bcm_async_req_t *)async); 13853 } 13854 13855 void 13856 bcmx_l3_host_delete_by_network_async( 13857 bcmx_l3_route_t * ip_addr, 13858 bcmx_async_cb_t async_callback, 13859 void *async_cookie) 13860 { 13861 bcmx_async_req_t *async; 13862 13863 async = sal_alloc(sizeof(*async), "bcmx_async"); 13864 if (async == NULL) { 13865 if (async_callback != NULL) { 13866 (*async_callback)(async_cookie, BCM_E_MEMORY); 13867 } 13868 return; 13869 } 13870 async->next = NULL; 13871 async->type = BCMX_ASYNC_ENTRY_L3_HOST_DELETE_BY_NETWORK; 13872 async->run = bcmx_async_run; 13873 async->callback = async_callback; 13874 async->cookie = async_cookie; 13875 async->args.l3_host_delete_by_network.ip_addr = ip_addr; 13876 bcm_async_add((bcm_async_req_t *)async); 13877 } 13878 13879 void 13880 bcmx_l3_host_find_async( 13881 bcmx_l3_host_t * info, 13882 bcmx_async_cb_t async_callback, 13883 void *async_cookie) 13884 { 13885 bcmx_async_req_t *async; 13886 13887 async = sal_alloc(sizeof(*async), "bcmx_async"); 13888 if (async == NULL) { 13889 if (async_callback != NULL) { 13890 (*async_callback)(async_cookie, BCM_E_MEMORY); 13891 } 13892 return; 13893 } 13894 async->next = NULL; 13895 async->type = BCMX_ASYNC_ENTRY_L3_HOST_FIND; 13896 async->run = bcmx_async_run; 13897 async->callback = async_callback; 13898 async->cookie = async_cookie; 13899 async->args.l3_host_find.info = info; 13900 bcm_async_add((bcm_async_req_t *)async); 13901 } 13902 13903 void 13904 bcmx_l3_host_invalidate_entry_async( 13905 bcm_ip_t info, 13906 bcmx_async_cb_t async_callback, 13907 void *async_cookie) 13908 { 13909 bcmx_async_req_t *async; 13910 13911 async = sal_alloc(sizeof(*async), "bcmx_async"); 13912 if (async == NULL) { 13913 if (async_callback != NULL) { 13914 (*async_callback)(async_cookie, BCM_E_MEMORY); 13915 } 13916 return; 13917 } 13918 async->next = NULL; 13919 async->type = BCMX_ASYNC_ENTRY_L3_HOST_INVALIDATE_ENTRY; 13920 async->run = bcmx_async_run; 13921 async->callback = async_callback; 13922 async->cookie = async_cookie; 13923 async->args.l3_host_invalidate_entry.info = info; 13924 bcm_async_add((bcm_async_req_t *)async); 13925 } 13926 13927 void 13928 bcmx_l3_host_traverse_async( 13929 uint32 flags, 13930 uint32 start, 13931 uint32 end, 13932 bcm_l3_host_traverse_cb cb, 13933 void * user_data, 13934 bcmx_async_cb_t async_callback, 13935 void *async_cookie) 13936 { 13937 bcmx_async_req_t *async; 13938 13939 async = sal_alloc(sizeof(*async), "bcmx_async"); 13940 if (async == NULL) { 13941 if (async_callback != NULL) { 13942 (*async_callback)(async_cookie, BCM_E_MEMORY); 13943 } 13944 return; 13945 } 13946 async->next = NULL; 13947 async->type = BCMX_ASYNC_ENTRY_L3_HOST_TRAVERSE; 13948 async->run = bcmx_async_run; 13949 async->callback = async_callback; 13950 async->cookie = async_cookie; 13951 async->args.l3_host_traverse.flags = flags; 13952 async->args.l3_host_traverse.start = start; 13953 async->args.l3_host_traverse.end = end; 13954 async->args.l3_host_traverse.cb = cb; 13955 async->args.l3_host_traverse.user_data = user_data; 13956 bcm_async_add((bcm_async_req_t *)async); 13957 } 13958 13959 void 13960 bcmx_l3_host_validate_entry_async( 13961 bcm_ip_t info, 13962 bcmx_async_cb_t async_callback, 13963 void *async_cookie) 13964 { 13965 bcmx_async_req_t *async; 13966 13967 async = sal_alloc(sizeof(*async), "bcmx_async"); 13968 if (async == NULL) { 13969 if (async_callback != NULL) { 13970 (*async_callback)(async_cookie, BCM_E_MEMORY); 13971 } 13972 return; 13973 } 13974 async->next = NULL; 13975 async->type = BCMX_ASYNC_ENTRY_L3_HOST_VALIDATE_ENTRY; 13976 async->run = bcmx_async_run; 13977 async->callback = async_callback; 13978 async->cookie = async_cookie; 13979 async->args.l3_host_validate_entry.info = info; 13980 bcm_async_add((bcm_async_req_t *)async); 13981 } 13982 13983 void 13984 bcmx_l3_info_async( 13985 bcm_l3_info_t * l3info, 13986 bcmx_async_cb_t async_callback, 13987 void *async_cookie) 13988 { 13989 bcmx_async_req_t *async; 13990 13991 async = sal_alloc(sizeof(*async), "bcmx_async"); 13992 if (async == NULL) { 13993 if (async_callback != NULL) { 13994 (*async_callback)(async_cookie, BCM_E_MEMORY); 13995 } 13996 return; 13997 } 13998 async->next = NULL; 13999 async->type = BCMX_ASYNC_ENTRY_L3_INFO; 14000 async->run = bcmx_async_run; 14001 async->callback = async_callback; 14002 async->cookie = async_cookie; 14003 async->args.l3_info.l3info = l3info; 14004 bcm_async_add((bcm_async_req_t *)async); 14005 } 14006 14007 void 14008 bcmx_l3_ingress_create_async( 14009 bcmx_l3_ingress_t * ing_intf, 14010 bcm_if_t * intf_id, 14011 bcmx_async_cb_t async_callback, 14012 void *async_cookie) 14013 { 14014 bcmx_async_req_t *async; 14015 14016 async = sal_alloc(sizeof(*async), "bcmx_async"); 14017 if (async == NULL) { 14018 if (async_callback != NULL) { 14019 (*async_callback)(async_cookie, BCM_E_MEMORY); 14020 } 14021 return; 14022 } 14023 async->next = NULL; 14024 async->type = BCMX_ASYNC_ENTRY_L3_INGRESS_CREATE; 14025 async->run = bcmx_async_run; 14026 async->callback = async_callback; 14027 async->cookie = async_cookie; 14028 async->args.l3_ingress_create.ing_intf = ing_intf; 14029 async->args.l3_ingress_create.intf_id = intf_id; 14030 bcm_async_add((bcm_async_req_t *)async); 14031 } 14032 14033 void 14034 bcmx_l3_ingress_destroy_async( 14035 bcm_if_t intf_id, 14036 bcmx_async_cb_t async_callback, 14037 void *async_cookie) 14038 { 14039 bcmx_async_req_t *async; 14040 14041 async = sal_alloc(sizeof(*async), "bcmx_async"); 14042 if (async == NULL) { 14043 if (async_callback != NULL) { 14044 (*async_callback)(async_cookie, BCM_E_MEMORY); 14045 } 14046 return; 14047 } 14048 async->next = NULL; 14049 async->type = BCMX_ASYNC_ENTRY_L3_INGRESS_DESTROY; 14050 async->run = bcmx_async_run; 14051 async->callback = async_callback; 14052 async->cookie = async_cookie; 14053 async->args.l3_ingress_destroy.intf_id = intf_id; 14054 bcm_async_add((bcm_async_req_t *)async); 14055 } 14056 14057 void 14058 bcmx_l3_ingress_find_async( 14059 bcmx_l3_ingress_t * ing_intf, 14060 bcm_if_t * intf_id, 14061 bcmx_async_cb_t async_callback, 14062 void *async_cookie) 14063 { 14064 bcmx_async_req_t *async; 14065 14066 async = sal_alloc(sizeof(*async), "bcmx_async"); 14067 if (async == NULL) { 14068 if (async_callback != NULL) { 14069 (*async_callback)(async_cookie, BCM_E_MEMORY); 14070 } 14071 return; 14072 } 14073 async->next = NULL; 14074 async->type = BCMX_ASYNC_ENTRY_L3_INGRESS_FIND; 14075 async->run = bcmx_async_run; 14076 async->callback = async_callback; 14077 async->cookie = async_cookie; 14078 async->args.l3_ingress_find.ing_intf = ing_intf; 14079 async->args.l3_ingress_find.intf_id = intf_id; 14080 bcm_async_add((bcm_async_req_t *)async); 14081 } 14082 14083 void 14084 bcmx_l3_ingress_get_async( 14085 bcm_if_t intf, 14086 bcmx_l3_ingress_t * ing_intf, 14087 bcmx_async_cb_t async_callback, 14088 void *async_cookie) 14089 { 14090 bcmx_async_req_t *async; 14091 14092 async = sal_alloc(sizeof(*async), "bcmx_async"); 14093 if (async == NULL) { 14094 if (async_callback != NULL) { 14095 (*async_callback)(async_cookie, BCM_E_MEMORY); 14096 } 14097 return; 14098 } 14099 async->next = NULL; 14100 async->type = BCMX_ASYNC_ENTRY_L3_INGRESS_GET; 14101 async->run = bcmx_async_run; 14102 async->callback = async_callback; 14103 async->cookie = async_cookie; 14104 async->args.l3_ingress_get.intf = intf; 14105 async->args.l3_ingress_get.ing_intf = ing_intf; 14106 bcm_async_add((bcm_async_req_t *)async); 14107 } 14108 14109 void 14110 bcmx_l3_init_async( 14111 bcmx_async_cb_t async_callback, 14112 void *async_cookie) 14113 { 14114 bcmx_async_req_t *async; 14115 14116 async = sal_alloc(sizeof(*async), "bcmx_async"); 14117 if (async == NULL) { 14118 if (async_callback != NULL) { 14119 (*async_callback)(async_cookie, BCM_E_MEMORY); 14120 } 14121 return; 14122 } 14123 async->next = NULL; 14124 async->type = BCMX_ASYNC_ENTRY_L3_INIT; 14125 async->run = bcmx_async_run; 14126 async->callback = async_callback; 14127 async->cookie = async_cookie; 14128 bcm_async_add((bcm_async_req_t *)async); 14129 } 14130 14131 void 14132 bcmx_l3_intf_create_async( 14133 bcm_l3_intf_t * intf, 14134 bcmx_async_cb_t async_callback, 14135 void *async_cookie) 14136 { 14137 bcmx_async_req_t *async; 14138 14139 async = sal_alloc(sizeof(*async), "bcmx_async"); 14140 if (async == NULL) { 14141 if (async_callback != NULL) { 14142 (*async_callback)(async_cookie, BCM_E_MEMORY); 14143 } 14144 return; 14145 } 14146 async->next = NULL; 14147 async->type = BCMX_ASYNC_ENTRY_L3_INTF_CREATE; 14148 async->run = bcmx_async_run; 14149 async->callback = async_callback; 14150 async->cookie = async_cookie; 14151 async->args.l3_intf_create.intf = intf; 14152 bcm_async_add((bcm_async_req_t *)async); 14153 } 14154 14155 void 14156 bcmx_l3_intf_delete_async( 14157 bcm_l3_intf_t * intf, 14158 bcmx_async_cb_t async_callback, 14159 void *async_cookie) 14160 { 14161 bcmx_async_req_t *async; 14162 14163 async = sal_alloc(sizeof(*async), "bcmx_async"); 14164 if (async == NULL) { 14165 if (async_callback != NULL) { 14166 (*async_callback)(async_cookie, BCM_E_MEMORY); 14167 } 14168 return; 14169 } 14170 async->next = NULL; 14171 async->type = BCMX_ASYNC_ENTRY_L3_INTF_DELETE; 14172 async->run = bcmx_async_run; 14173 async->callback = async_callback; 14174 async->cookie = async_cookie; 14175 async->args.l3_intf_delete.intf = intf; 14176 bcm_async_add((bcm_async_req_t *)async); 14177 } 14178 14179 void 14180 bcmx_l3_intf_delete_all_async( 14181 bcmx_async_cb_t async_callback, 14182 void *async_cookie) 14183 { 14184 bcmx_async_req_t *async; 14185 14186 async = sal_alloc(sizeof(*async), "bcmx_async"); 14187 if (async == NULL) { 14188 if (async_callback != NULL) { 14189 (*async_callback)(async_cookie, BCM_E_MEMORY); 14190 } 14191 return; 14192 } 14193 async->next = NULL; 14194 async->type = BCMX_ASYNC_ENTRY_L3_INTF_DELETE_ALL; 14195 async->run = bcmx_async_run; 14196 async->callback = async_callback; 14197 async->cookie = async_cookie; 14198 bcm_async_add((bcm_async_req_t *)async); 14199 } 14200 14201 void 14202 bcmx_l3_intf_find_async( 14203 bcm_l3_intf_t * intf, 14204 bcmx_async_cb_t async_callback, 14205 void *async_cookie) 14206 { 14207 bcmx_async_req_t *async; 14208 14209 async = sal_alloc(sizeof(*async), "bcmx_async"); 14210 if (async == NULL) { 14211 if (async_callback != NULL) { 14212 (*async_callback)(async_cookie, BCM_E_MEMORY); 14213 } 14214 return; 14215 } 14216 async->next = NULL; 14217 async->type = BCMX_ASYNC_ENTRY_L3_INTF_FIND; 14218 async->run = bcmx_async_run; 14219 async->callback = async_callback; 14220 async->cookie = async_cookie; 14221 async->args.l3_intf_find.intf = intf; 14222 bcm_async_add((bcm_async_req_t *)async); 14223 } 14224 14225 void 14226 bcmx_l3_intf_find_vlan_async( 14227 bcm_l3_intf_t * intf, 14228 bcmx_async_cb_t async_callback, 14229 void *async_cookie) 14230 { 14231 bcmx_async_req_t *async; 14232 14233 async = sal_alloc(sizeof(*async), "bcmx_async"); 14234 if (async == NULL) { 14235 if (async_callback != NULL) { 14236 (*async_callback)(async_cookie, BCM_E_MEMORY); 14237 } 14238 return; 14239 } 14240 async->next = NULL; 14241 async->type = BCMX_ASYNC_ENTRY_L3_INTF_FIND_VLAN; 14242 async->run = bcmx_async_run; 14243 async->callback = async_callback; 14244 async->cookie = async_cookie; 14245 async->args.l3_intf_find_vlan.intf = intf; 14246 bcm_async_add((bcm_async_req_t *)async); 14247 } 14248 14249 void 14250 bcmx_l3_intf_get_async( 14251 bcm_l3_intf_t * intf, 14252 bcmx_async_cb_t async_callback, 14253 void *async_cookie) 14254 { 14255 bcmx_async_req_t *async; 14256 14257 async = sal_alloc(sizeof(*async), "bcmx_async"); 14258 if (async == NULL) { 14259 if (async_callback != NULL) { 14260 (*async_callback)(async_cookie, BCM_E_MEMORY); 14261 } 14262 return; 14263 } 14264 async->next = NULL; 14265 async->type = BCMX_ASYNC_ENTRY_L3_INTF_GET; 14266 async->run = bcmx_async_run; 14267 async->callback = async_callback; 14268 async->cookie = async_cookie; 14269 async->args.l3_intf_get.intf = intf; 14270 bcm_async_add((bcm_async_req_t *)async); 14271 } 14272 14273 void 14274 bcmx_l3_ip6_prefix_map_add_async( 14275 bcm_ip6_t ip6_addr, 14276 bcmx_async_cb_t async_callback, 14277 void *async_cookie) 14278 { 14279 bcmx_async_req_t *async; 14280 14281 async = sal_alloc(sizeof(*async), "bcmx_async"); 14282 if (async == NULL) { 14283 if (async_callback != NULL) { 14284 (*async_callback)(async_cookie, BCM_E_MEMORY); 14285 } 14286 return; 14287 } 14288 async->next = NULL; 14289 async->type = BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_ADD; 14290 async->run = bcmx_async_run; 14291 async->callback = async_callback; 14292 async->cookie = async_cookie; 14293 async->args.l3_ip6_prefix_map_add.ip6_addr = (uint8 *)ip6_addr; 14294 bcm_async_add((bcm_async_req_t *)async); 14295 } 14296 14297 void 14298 bcmx_l3_ip6_prefix_map_delete_async( 14299 bcm_ip6_t ip6_addr, 14300 bcmx_async_cb_t async_callback, 14301 void *async_cookie) 14302 { 14303 bcmx_async_req_t *async; 14304 14305 async = sal_alloc(sizeof(*async), "bcmx_async"); 14306 if (async == NULL) { 14307 if (async_callback != NULL) { 14308 (*async_callback)(async_cookie, BCM_E_MEMORY); 14309 } 14310 return; 14311 } 14312 async->next = NULL; 14313 async->type = BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_DELETE; 14314 async->run = bcmx_async_run; 14315 async->callback = async_callback; 14316 async->cookie = async_cookie; 14317 async->args.l3_ip6_prefix_map_delete.ip6_addr = (uint8 *)ip6_addr; 14318 bcm_async_add((bcm_async_req_t *)async); 14319 } 14320 14321 void 14322 bcmx_l3_ip6_prefix_map_delete_all_async( 14323 bcmx_async_cb_t async_callback, 14324 void *async_cookie) 14325 { 14326 bcmx_async_req_t *async; 14327 14328 async = sal_alloc(sizeof(*async), "bcmx_async"); 14329 if (async == NULL) { 14330 if (async_callback != NULL) { 14331 (*async_callback)(async_cookie, BCM_E_MEMORY); 14332 } 14333 return; 14334 } 14335 async->next = NULL; 14336 async->type = BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_DELETE_ALL; 14337 async->run = bcmx_async_run; 14338 async->callback = async_callback; 14339 async->cookie = async_cookie; 14340 bcm_async_add((bcm_async_req_t *)async); 14341 } 14342 14343 void 14344 bcmx_l3_ip6_prefix_map_get_async( 14345 int map_size, 14346 bcm_ip6_t * ip6_array, 14347 int * ip6_count, 14348 bcmx_async_cb_t async_callback, 14349 void *async_cookie) 14350 { 14351 bcmx_async_req_t *async; 14352 14353 async = sal_alloc(sizeof(*async), "bcmx_async"); 14354 if (async == NULL) { 14355 if (async_callback != NULL) { 14356 (*async_callback)(async_cookie, BCM_E_MEMORY); 14357 } 14358 return; 14359 } 14360 async->next = NULL; 14361 async->type = BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_GET; 14362 async->run = bcmx_async_run; 14363 async->callback = async_callback; 14364 async->cookie = async_cookie; 14365 async->args.l3_ip6_prefix_map_get.map_size = map_size; 14366 async->args.l3_ip6_prefix_map_get.ip6_array = ip6_array; 14367 async->args.l3_ip6_prefix_map_get.ip6_count = ip6_count; 14368 bcm_async_add((bcm_async_req_t *)async); 14369 } 14370 14371 void 14372 bcmx_l3_route_add_async( 14373 bcmx_l3_route_t * info, 14374 bcmx_async_cb_t async_callback, 14375 void *async_cookie) 14376 { 14377 bcmx_async_req_t *async; 14378 14379 async = sal_alloc(sizeof(*async), "bcmx_async"); 14380 if (async == NULL) { 14381 if (async_callback != NULL) { 14382 (*async_callback)(async_cookie, BCM_E_MEMORY); 14383 } 14384 return; 14385 } 14386 async->next = NULL; 14387 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_ADD; 14388 async->run = bcmx_async_run; 14389 async->callback = async_callback; 14390 async->cookie = async_cookie; 14391 async->args.l3_route_add.info = info; 14392 bcm_async_add((bcm_async_req_t *)async); 14393 } 14394 14395 void 14396 bcmx_l3_route_age_async( 14397 uint32 flags, 14398 bcm_l3_route_traverse_cb age_out, 14399 void * user_data, 14400 bcmx_async_cb_t async_callback, 14401 void *async_cookie) 14402 { 14403 bcmx_async_req_t *async; 14404 14405 async = sal_alloc(sizeof(*async), "bcmx_async"); 14406 if (async == NULL) { 14407 if (async_callback != NULL) { 14408 (*async_callback)(async_cookie, BCM_E_MEMORY); 14409 } 14410 return; 14411 } 14412 async->next = NULL; 14413 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_AGE; 14414 async->run = bcmx_async_run; 14415 async->callback = async_callback; 14416 async->cookie = async_cookie; 14417 async->args.l3_route_age.flags = flags; 14418 async->args.l3_route_age.age_out = age_out; 14419 async->args.l3_route_age.user_data = user_data; 14420 bcm_async_add((bcm_async_req_t *)async); 14421 } 14422 14423 void 14424 bcmx_l3_route_delete_async( 14425 bcmx_l3_route_t * info, 14426 bcmx_async_cb_t async_callback, 14427 void *async_cookie) 14428 { 14429 bcmx_async_req_t *async; 14430 14431 async = sal_alloc(sizeof(*async), "bcmx_async"); 14432 if (async == NULL) { 14433 if (async_callback != NULL) { 14434 (*async_callback)(async_cookie, BCM_E_MEMORY); 14435 } 14436 return; 14437 } 14438 async->next = NULL; 14439 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_DELETE; 14440 async->run = bcmx_async_run; 14441 async->callback = async_callback; 14442 async->cookie = async_cookie; 14443 async->args.l3_route_delete.info = info; 14444 bcm_async_add((bcm_async_req_t *)async); 14445 } 14446 14447 void 14448 bcmx_l3_route_delete_all_async( 14449 bcmx_l3_route_t * info, 14450 bcmx_async_cb_t async_callback, 14451 void *async_cookie) 14452 { 14453 bcmx_async_req_t *async; 14454 14455 async = sal_alloc(sizeof(*async), "bcmx_async"); 14456 if (async == NULL) { 14457 if (async_callback != NULL) { 14458 (*async_callback)(async_cookie, BCM_E_MEMORY); 14459 } 14460 return; 14461 } 14462 async->next = NULL; 14463 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_DELETE_ALL; 14464 async->run = bcmx_async_run; 14465 async->callback = async_callback; 14466 async->cookie = async_cookie; 14467 async->args.l3_route_delete_all.info = info; 14468 bcm_async_add((bcm_async_req_t *)async); 14469 } 14470 14471 void 14472 bcmx_l3_route_delete_by_interface_async( 14473 bcmx_l3_route_t * info, 14474 bcmx_async_cb_t async_callback, 14475 void *async_cookie) 14476 { 14477 bcmx_async_req_t *async; 14478 14479 async = sal_alloc(sizeof(*async), "bcmx_async"); 14480 if (async == NULL) { 14481 if (async_callback != NULL) { 14482 (*async_callback)(async_cookie, BCM_E_MEMORY); 14483 } 14484 return; 14485 } 14486 async->next = NULL; 14487 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_DELETE_BY_INTERFACE; 14488 async->run = bcmx_async_run; 14489 async->callback = async_callback; 14490 async->cookie = async_cookie; 14491 async->args.l3_route_delete_by_interface.info = info; 14492 bcm_async_add((bcm_async_req_t *)async); 14493 } 14494 14495 void 14496 bcmx_l3_route_get_async( 14497 bcmx_l3_route_t * info, 14498 bcmx_async_cb_t async_callback, 14499 void *async_cookie) 14500 { 14501 bcmx_async_req_t *async; 14502 14503 async = sal_alloc(sizeof(*async), "bcmx_async"); 14504 if (async == NULL) { 14505 if (async_callback != NULL) { 14506 (*async_callback)(async_cookie, BCM_E_MEMORY); 14507 } 14508 return; 14509 } 14510 async->next = NULL; 14511 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_GET; 14512 async->run = bcmx_async_run; 14513 async->callback = async_callback; 14514 async->cookie = async_cookie; 14515 async->args.l3_route_get.info = info; 14516 bcm_async_add((bcm_async_req_t *)async); 14517 } 14518 14519 void 14520 bcmx_l3_route_max_ecmp_get_async( 14521 int * max, 14522 bcmx_async_cb_t async_callback, 14523 void *async_cookie) 14524 { 14525 bcmx_async_req_t *async; 14526 14527 async = sal_alloc(sizeof(*async), "bcmx_async"); 14528 if (async == NULL) { 14529 if (async_callback != NULL) { 14530 (*async_callback)(async_cookie, BCM_E_MEMORY); 14531 } 14532 return; 14533 } 14534 async->next = NULL; 14535 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_MAX_ECMP_GET; 14536 async->run = bcmx_async_run; 14537 async->callback = async_callback; 14538 async->cookie = async_cookie; 14539 async->args.l3_route_max_ecmp_get.max = max; 14540 bcm_async_add((bcm_async_req_t *)async); 14541 } 14542 14543 void 14544 bcmx_l3_route_max_ecmp_set_async( 14545 int max, 14546 bcmx_async_cb_t async_callback, 14547 void *async_cookie) 14548 { 14549 bcmx_async_req_t *async; 14550 14551 async = sal_alloc(sizeof(*async), "bcmx_async"); 14552 if (async == NULL) { 14553 if (async_callback != NULL) { 14554 (*async_callback)(async_cookie, BCM_E_MEMORY); 14555 } 14556 return; 14557 } 14558 async->next = NULL; 14559 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_MAX_ECMP_SET; 14560 async->run = bcmx_async_run; 14561 async->callback = async_callback; 14562 async->cookie = async_cookie; 14563 async->args.l3_route_max_ecmp_set.max = max; 14564 bcm_async_add((bcm_async_req_t *)async); 14565 } 14566 14567 void 14568 bcmx_l3_route_multipath_get_async( 14569 bcmx_l3_route_t * the_route, 14570 bcmx_l3_route_t * path_array, 14571 int max_path, 14572 int * path_count, 14573 bcmx_async_cb_t async_callback, 14574 void *async_cookie) 14575 { 14576 bcmx_async_req_t *async; 14577 14578 async = sal_alloc(sizeof(*async), "bcmx_async"); 14579 if (async == NULL) { 14580 if (async_callback != NULL) { 14581 (*async_callback)(async_cookie, BCM_E_MEMORY); 14582 } 14583 return; 14584 } 14585 async->next = NULL; 14586 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_MULTIPATH_GET; 14587 async->run = bcmx_async_run; 14588 async->callback = async_callback; 14589 async->cookie = async_cookie; 14590 async->args.l3_route_multipath_get.the_route = the_route; 14591 async->args.l3_route_multipath_get.path_array = path_array; 14592 async->args.l3_route_multipath_get.max_path = max_path; 14593 async->args.l3_route_multipath_get.path_count = path_count; 14594 bcm_async_add((bcm_async_req_t *)async); 14595 } 14596 14597 void 14598 bcmx_l3_route_traverse_async( 14599 uint32 flags, 14600 uint32 start, 14601 uint32 end, 14602 bcm_l3_route_traverse_cb trav_fn, 14603 void * user_data, 14604 bcmx_async_cb_t async_callback, 14605 void *async_cookie) 14606 { 14607 bcmx_async_req_t *async; 14608 14609 async = sal_alloc(sizeof(*async), "bcmx_async"); 14610 if (async == NULL) { 14611 if (async_callback != NULL) { 14612 (*async_callback)(async_cookie, BCM_E_MEMORY); 14613 } 14614 return; 14615 } 14616 async->next = NULL; 14617 async->type = BCMX_ASYNC_ENTRY_L3_ROUTE_TRAVERSE; 14618 async->run = bcmx_async_run; 14619 async->callback = async_callback; 14620 async->cookie = async_cookie; 14621 async->args.l3_route_traverse.flags = flags; 14622 async->args.l3_route_traverse.start = start; 14623 async->args.l3_route_traverse.end = end; 14624 async->args.l3_route_traverse.trav_fn = trav_fn; 14625 async->args.l3_route_traverse.user_data = user_data; 14626 bcm_async_add((bcm_async_req_t *)async); 14627 } 14628 14629 void 14630 bcmx_l3_source_bind_add_async( 14631 bcmx_l3_source_bind_t * info, 14632 bcmx_async_cb_t async_callback, 14633 void *async_cookie) 14634 { 14635 bcmx_async_req_t *async; 14636 14637 async = sal_alloc(sizeof(*async), "bcmx_async"); 14638 if (async == NULL) { 14639 if (async_callback != NULL) { 14640 (*async_callback)(async_cookie, BCM_E_MEMORY); 14641 } 14642 return; 14643 } 14644 async->next = NULL; 14645 async->type = BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_ADD; 14646 async->run = bcmx_async_run; 14647 async->callback = async_callback; 14648 async->cookie = async_cookie; 14649 async->args.l3_source_bind_add.info = info; 14650 bcm_async_add((bcm_async_req_t *)async); 14651 } 14652 14653 void 14654 bcmx_l3_source_bind_delete_async( 14655 bcmx_l3_source_bind_t * info, 14656 bcmx_async_cb_t async_callback, 14657 void *async_cookie) 14658 { 14659 bcmx_async_req_t *async; 14660 14661 async = sal_alloc(sizeof(*async), "bcmx_async"); 14662 if (async == NULL) { 14663 if (async_callback != NULL) { 14664 (*async_callback)(async_cookie, BCM_E_MEMORY); 14665 } 14666 return; 14667 } 14668 async->next = NULL; 14669 async->type = BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_DELETE; 14670 async->run = bcmx_async_run; 14671 async->callback = async_callback; 14672 async->cookie = async_cookie; 14673 async->args.l3_source_bind_delete.info = info; 14674 bcm_async_add((bcm_async_req_t *)async); 14675 } 14676 14677 void 14678 bcmx_l3_source_bind_delete_all_async( 14679 bcmx_async_cb_t async_callback, 14680 void *async_cookie) 14681 { 14682 bcmx_async_req_t *async; 14683 14684 async = sal_alloc(sizeof(*async), "bcmx_async"); 14685 if (async == NULL) { 14686 if (async_callback != NULL) { 14687 (*async_callback)(async_cookie, BCM_E_MEMORY); 14688 } 14689 return; 14690 } 14691 async->next = NULL; 14692 async->type = BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_DELETE_ALL; 14693 async->run = bcmx_async_run; 14694 async->callback = async_callback; 14695 async->cookie = async_cookie; 14696 bcm_async_add((bcm_async_req_t *)async); 14697 } 14698 14699 void 14700 bcmx_l3_source_bind_enable_get_async( 14701 bcm_gport_t port, 14702 int * enable, 14703 bcmx_async_cb_t async_callback, 14704 void *async_cookie) 14705 { 14706 bcmx_async_req_t *async; 14707 14708 async = sal_alloc(sizeof(*async), "bcmx_async"); 14709 if (async == NULL) { 14710 if (async_callback != NULL) { 14711 (*async_callback)(async_cookie, BCM_E_MEMORY); 14712 } 14713 return; 14714 } 14715 async->next = NULL; 14716 async->type = BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_ENABLE_GET; 14717 async->run = bcmx_async_run; 14718 async->callback = async_callback; 14719 async->cookie = async_cookie; 14720 async->args.l3_source_bind_enable_get.port = port; 14721 async->args.l3_source_bind_enable_get.enable = enable; 14722 bcm_async_add((bcm_async_req_t *)async); 14723 } 14724 14725 void 14726 bcmx_l3_source_bind_enable_set_async( 14727 bcm_gport_t port, 14728 int enable, 14729 bcmx_async_cb_t async_callback, 14730 void *async_cookie) 14731 { 14732 bcmx_async_req_t *async; 14733 14734 async = sal_alloc(sizeof(*async), "bcmx_async"); 14735 if (async == NULL) { 14736 if (async_callback != NULL) { 14737 (*async_callback)(async_cookie, BCM_E_MEMORY); 14738 } 14739 return; 14740 } 14741 async->next = NULL; 14742 async->type = BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_ENABLE_SET; 14743 async->run = bcmx_async_run; 14744 async->callback = async_callback; 14745 async->cookie = async_cookie; 14746 async->args.l3_source_bind_enable_set.port = port; 14747 async->args.l3_source_bind_enable_set.enable = enable; 14748 bcm_async_add((bcm_async_req_t *)async); 14749 } 14750 14751 void 14752 bcmx_l3_source_bind_get_async( 14753 bcmx_l3_source_bind_t * info, 14754 bcmx_async_cb_t async_callback, 14755 void *async_cookie) 14756 { 14757 bcmx_async_req_t *async; 14758 14759 async = sal_alloc(sizeof(*async), "bcmx_async"); 14760 if (async == NULL) { 14761 if (async_callback != NULL) { 14762 (*async_callback)(async_cookie, BCM_E_MEMORY); 14763 } 14764 return; 14765 } 14766 async->next = NULL; 14767 async->type = BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_GET; 14768 async->run = bcmx_async_run; 14769 async->callback = async_callback; 14770 async->cookie = async_cookie; 14771 async->args.l3_source_bind_get.info = info; 14772 bcm_async_add((bcm_async_req_t *)async); 14773 } 14774 14775 void 14776 bcmx_l3_vrf_stat_enable_set_async( 14777 bcm_vrf_t vrf, 14778 int enable, 14779 bcmx_async_cb_t async_callback, 14780 void *async_cookie) 14781 { 14782 bcmx_async_req_t *async; 14783 14784 async = sal_alloc(sizeof(*async), "bcmx_async"); 14785 if (async == NULL) { 14786 if (async_callback != NULL) { 14787 (*async_callback)(async_cookie, BCM_E_MEMORY); 14788 } 14789 return; 14790 } 14791 async->next = NULL; 14792 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_ENABLE_SET; 14793 async->run = bcmx_async_run; 14794 async->callback = async_callback; 14795 async->cookie = async_cookie; 14796 async->args.l3_vrf_stat_enable_set.vrf = vrf; 14797 async->args.l3_vrf_stat_enable_set.enable = enable; 14798 bcm_async_add((bcm_async_req_t *)async); 14799 } 14800 14801 void 14802 bcmx_l3_vrf_stat_get_async( 14803 bcm_vrf_t vrf, 14804 bcm_l3_vrf_stat_t stat, 14805 uint64 * val, 14806 bcmx_async_cb_t async_callback, 14807 void *async_cookie) 14808 { 14809 bcmx_async_req_t *async; 14810 14811 async = sal_alloc(sizeof(*async), "bcmx_async"); 14812 if (async == NULL) { 14813 if (async_callback != NULL) { 14814 (*async_callback)(async_cookie, BCM_E_MEMORY); 14815 } 14816 return; 14817 } 14818 async->next = NULL; 14819 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_GET; 14820 async->run = bcmx_async_run; 14821 async->callback = async_callback; 14822 async->cookie = async_cookie; 14823 async->args.l3_vrf_stat_get.vrf = vrf; 14824 async->args.l3_vrf_stat_get.stat = stat; 14825 async->args.l3_vrf_stat_get.val = val; 14826 bcm_async_add((bcm_async_req_t *)async); 14827 } 14828 14829 void 14830 bcmx_l3_vrf_stat_get32_async( 14831 bcm_vrf_t vrf, 14832 bcm_l3_vrf_stat_t stat, 14833 uint32 * val, 14834 bcmx_async_cb_t async_callback, 14835 void *async_cookie) 14836 { 14837 bcmx_async_req_t *async; 14838 14839 async = sal_alloc(sizeof(*async), "bcmx_async"); 14840 if (async == NULL) { 14841 if (async_callback != NULL) { 14842 (*async_callback)(async_cookie, BCM_E_MEMORY); 14843 } 14844 return; 14845 } 14846 async->next = NULL; 14847 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_GET32; 14848 async->run = bcmx_async_run; 14849 async->callback = async_callback; 14850 async->cookie = async_cookie; 14851 async->args.l3_vrf_stat_get32.vrf = vrf; 14852 async->args.l3_vrf_stat_get32.stat = stat; 14853 async->args.l3_vrf_stat_get32.val = val; 14854 bcm_async_add((bcm_async_req_t *)async); 14855 } 14856 14857 void 14858 bcmx_l3_vrf_stat_multi_get_async( 14859 bcm_vrf_t vrf, 14860 int nstat, 14861 bcm_l3_vrf_stat_t * stat_arr, 14862 uint64 * value_arr, 14863 bcmx_async_cb_t async_callback, 14864 void *async_cookie) 14865 { 14866 bcmx_async_req_t *async; 14867 14868 async = sal_alloc(sizeof(*async), "bcmx_async"); 14869 if (async == NULL) { 14870 if (async_callback != NULL) { 14871 (*async_callback)(async_cookie, BCM_E_MEMORY); 14872 } 14873 return; 14874 } 14875 async->next = NULL; 14876 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_GET; 14877 async->run = bcmx_async_run; 14878 async->callback = async_callback; 14879 async->cookie = async_cookie; 14880 async->args.l3_vrf_stat_multi_get.vrf = vrf; 14881 async->args.l3_vrf_stat_multi_get.nstat = nstat; 14882 async->args.l3_vrf_stat_multi_get.stat_arr = stat_arr; 14883 async->args.l3_vrf_stat_multi_get.value_arr = value_arr; 14884 bcm_async_add((bcm_async_req_t *)async); 14885 } 14886 14887 void 14888 bcmx_l3_vrf_stat_multi_get32_async( 14889 bcm_vrf_t vrf, 14890 int nstat, 14891 bcm_l3_vrf_stat_t * stat_arr, 14892 uint32 * value_arr, 14893 bcmx_async_cb_t async_callback, 14894 void *async_cookie) 14895 { 14896 bcmx_async_req_t *async; 14897 14898 async = sal_alloc(sizeof(*async), "bcmx_async"); 14899 if (async == NULL) { 14900 if (async_callback != NULL) { 14901 (*async_callback)(async_cookie, BCM_E_MEMORY); 14902 } 14903 return; 14904 } 14905 async->next = NULL; 14906 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_GET32; 14907 async->run = bcmx_async_run; 14908 async->callback = async_callback; 14909 async->cookie = async_cookie; 14910 async->args.l3_vrf_stat_multi_get32.vrf = vrf; 14911 async->args.l3_vrf_stat_multi_get32.nstat = nstat; 14912 async->args.l3_vrf_stat_multi_get32.stat_arr = stat_arr; 14913 async->args.l3_vrf_stat_multi_get32.value_arr = value_arr; 14914 bcm_async_add((bcm_async_req_t *)async); 14915 } 14916 14917 void 14918 bcmx_l3_vrf_stat_multi_set_async( 14919 bcm_vrf_t vrf, 14920 int nstat, 14921 bcm_l3_vrf_stat_t * stat_arr, 14922 uint64 * value_arr, 14923 bcmx_async_cb_t async_callback, 14924 void *async_cookie) 14925 { 14926 bcmx_async_req_t *async; 14927 14928 async = sal_alloc(sizeof(*async), "bcmx_async"); 14929 if (async == NULL) { 14930 if (async_callback != NULL) { 14931 (*async_callback)(async_cookie, BCM_E_MEMORY); 14932 } 14933 return; 14934 } 14935 async->next = NULL; 14936 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_SET; 14937 async->run = bcmx_async_run; 14938 async->callback = async_callback; 14939 async->cookie = async_cookie; 14940 async->args.l3_vrf_stat_multi_set.vrf = vrf; 14941 async->args.l3_vrf_stat_multi_set.nstat = nstat; 14942 async->args.l3_vrf_stat_multi_set.stat_arr = stat_arr; 14943 async->args.l3_vrf_stat_multi_set.value_arr = value_arr; 14944 bcm_async_add((bcm_async_req_t *)async); 14945 } 14946 14947 void 14948 bcmx_l3_vrf_stat_multi_set32_async( 14949 bcm_vrf_t vrf, 14950 int nstat, 14951 bcm_l3_vrf_stat_t * stat_arr, 14952 uint32 * value_arr, 14953 bcmx_async_cb_t async_callback, 14954 void *async_cookie) 14955 { 14956 bcmx_async_req_t *async; 14957 14958 async = sal_alloc(sizeof(*async), "bcmx_async"); 14959 if (async == NULL) { 14960 if (async_callback != NULL) { 14961 (*async_callback)(async_cookie, BCM_E_MEMORY); 14962 } 14963 return; 14964 } 14965 async->next = NULL; 14966 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_SET32; 14967 async->run = bcmx_async_run; 14968 async->callback = async_callback; 14969 async->cookie = async_cookie; 14970 async->args.l3_vrf_stat_multi_set32.vrf = vrf; 14971 async->args.l3_vrf_stat_multi_set32.nstat = nstat; 14972 async->args.l3_vrf_stat_multi_set32.stat_arr = stat_arr; 14973 async->args.l3_vrf_stat_multi_set32.value_arr = value_arr; 14974 bcm_async_add((bcm_async_req_t *)async); 14975 } 14976 14977 void 14978 bcmx_l3_vrf_stat_set_async( 14979 bcm_vrf_t vrf, 14980 bcm_l3_vrf_stat_t stat, 14981 uint64 val, 14982 bcmx_async_cb_t async_callback, 14983 void *async_cookie) 14984 { 14985 bcmx_async_req_t *async; 14986 14987 async = sal_alloc(sizeof(*async), "bcmx_async"); 14988 if (async == NULL) { 14989 if (async_callback != NULL) { 14990 (*async_callback)(async_cookie, BCM_E_MEMORY); 14991 } 14992 return; 14993 } 14994 async->next = NULL; 14995 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_SET; 14996 async->run = bcmx_async_run; 14997 async->callback = async_callback; 14998 async->cookie = async_cookie; 14999 async->args.l3_vrf_stat_set.vrf = vrf; 15000 async->args.l3_vrf_stat_set.stat = stat; 15001 async->args.l3_vrf_stat_set.val = val; 15002 bcm_async_add((bcm_async_req_t *)async); 15003 } 15004 15005 void 15006 bcmx_l3_vrf_stat_set32_async( 15007 bcm_vrf_t vrf, 15008 bcm_l3_vrf_stat_t stat, 15009 uint32 val, 15010 bcmx_async_cb_t async_callback, 15011 void *async_cookie) 15012 { 15013 bcmx_async_req_t *async; 15014 15015 async = sal_alloc(sizeof(*async), "bcmx_async"); 15016 if (async == NULL) { 15017 if (async_callback != NULL) { 15018 (*async_callback)(async_cookie, BCM_E_MEMORY); 15019 } 15020 return; 15021 } 15022 async->next = NULL; 15023 async->type = BCMX_ASYNC_ENTRY_L3_VRF_STAT_SET32; 15024 async->run = bcmx_async_run; 15025 async->callback = async_callback; 15026 async->cookie = async_cookie; 15027 async->args.l3_vrf_stat_set32.vrf = vrf; 15028 async->args.l3_vrf_stat_set32.stat = stat; 15029 async->args.l3_vrf_stat_set32.val = val; 15030 bcm_async_add((bcm_async_req_t *)async); 15031 } 15032 15033 void 15034 bcmx_l3_vrrp_add_async( 15035 bcm_vlan_t vlan, 15036 uint32 vrid, 15037 bcmx_async_cb_t async_callback, 15038 void *async_cookie) 15039 { 15040 bcmx_async_req_t *async; 15041 15042 async = sal_alloc(sizeof(*async), "bcmx_async"); 15043 if (async == NULL) { 15044 if (async_callback != NULL) { 15045 (*async_callback)(async_cookie, BCM_E_MEMORY); 15046 } 15047 return; 15048 } 15049 async->next = NULL; 15050 async->type = BCMX_ASYNC_ENTRY_L3_VRRP_ADD; 15051 async->run = bcmx_async_run; 15052 async->callback = async_callback; 15053 async->cookie = async_cookie; 15054 async->args.l3_vrrp_add.vlan = vlan; 15055 async->args.l3_vrrp_add.vrid = vrid; 15056 bcm_async_add((bcm_async_req_t *)async); 15057 } 15058 15059 void 15060 bcmx_l3_vrrp_delete_async( 15061 bcm_vlan_t vlan, 15062 uint32 vrid, 15063 bcmx_async_cb_t async_callback, 15064 void *async_cookie) 15065 { 15066 bcmx_async_req_t *async; 15067 15068 async = sal_alloc(sizeof(*async), "bcmx_async"); 15069 if (async == NULL) { 15070 if (async_callback != NULL) { 15071 (*async_callback)(async_cookie, BCM_E_MEMORY); 15072 } 15073 return; 15074 } 15075 async->next = NULL; 15076 async->type = BCMX_ASYNC_ENTRY_L3_VRRP_DELETE; 15077 async->run = bcmx_async_run; 15078 async->callback = async_callback; 15079 async->cookie = async_cookie; 15080 async->args.l3_vrrp_delete.vlan = vlan; 15081 async->args.l3_vrrp_delete.vrid = vrid; 15082 bcm_async_add((bcm_async_req_t *)async); 15083 } 15084 15085 void 15086 bcmx_l3_vrrp_delete_all_async( 15087 bcm_vlan_t vlan, 15088 bcmx_async_cb_t async_callback, 15089 void *async_cookie) 15090 { 15091 bcmx_async_req_t *async; 15092 15093 async = sal_alloc(sizeof(*async), "bcmx_async"); 15094 if (async == NULL) { 15095 if (async_callback != NULL) { 15096 (*async_callback)(async_cookie, BCM_E_MEMORY); 15097 } 15098 return; 15099 } 15100 async->next = NULL; 15101 async->type = BCMX_ASYNC_ENTRY_L3_VRRP_DELETE_ALL; 15102 async->run = bcmx_async_run; 15103 async->callback = async_callback; 15104 async->cookie = async_cookie; 15105 async->args.l3_vrrp_delete_all.vlan = vlan; 15106 bcm_async_add((bcm_async_req_t *)async); 15107 } 15108 15109 void 15110 bcmx_l3_vrrp_get_async( 15111 bcm_vlan_t vlan, 15112 int alloc_size, 15113 int * vrid_array, 15114 int * count, 15115 bcmx_async_cb_t async_callback, 15116 void *async_cookie) 15117 { 15118 bcmx_async_req_t *async; 15119 15120 async = sal_alloc(sizeof(*async), "bcmx_async"); 15121 if (async == NULL) { 15122 if (async_callback != NULL) { 15123 (*async_callback)(async_cookie, BCM_E_MEMORY); 15124 } 15125 return; 15126 } 15127 async->next = NULL; 15128 async->type = BCMX_ASYNC_ENTRY_L3_VRRP_GET; 15129 async->run = bcmx_async_run; 15130 async->callback = async_callback; 15131 async->cookie = async_cookie; 15132 async->args.l3_vrrp_get.vlan = vlan; 15133 async->args.l3_vrrp_get.alloc_size = alloc_size; 15134 async->args.l3_vrrp_get.vrid_array = vrid_array; 15135 async->args.l3_vrrp_get.count = count; 15136 bcm_async_add((bcm_async_req_t *)async); 15137 } 15138 15139 #endif /* INCLUDE_L3 */ 15140 15141 void 15142 bcmx_linkscan_device_add_async( 15143 int bcm_unit, 15144 bcmx_async_cb_t async_callback, 15145 void *async_cookie) 15146 { 15147 bcmx_async_req_t *async; 15148 15149 async = sal_alloc(sizeof(*async), "bcmx_async"); 15150 if (async == NULL) { 15151 if (async_callback != NULL) { 15152 (*async_callback)(async_cookie, BCM_E_MEMORY); 15153 } 15154 return; 15155 } 15156 async->next = NULL; 15157 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_DEVICE_ADD; 15158 async->run = bcmx_async_run; 15159 async->callback = async_callback; 15160 async->cookie = async_cookie; 15161 async->args.linkscan_device_add.bcm_unit = bcm_unit; 15162 bcm_async_add((bcm_async_req_t *)async); 15163 } 15164 15165 void 15166 bcmx_linkscan_device_remove_async( 15167 int bcm_unit, 15168 bcmx_async_cb_t async_callback, 15169 void *async_cookie) 15170 { 15171 bcmx_async_req_t *async; 15172 15173 async = sal_alloc(sizeof(*async), "bcmx_async"); 15174 if (async == NULL) { 15175 if (async_callback != NULL) { 15176 (*async_callback)(async_cookie, BCM_E_MEMORY); 15177 } 15178 return; 15179 } 15180 async->next = NULL; 15181 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_DEVICE_REMOVE; 15182 async->run = bcmx_async_run; 15183 async->callback = async_callback; 15184 async->cookie = async_cookie; 15185 async->args.linkscan_device_remove.bcm_unit = bcm_unit; 15186 bcm_async_add((bcm_async_req_t *)async); 15187 } 15188 15189 void 15190 bcmx_linkscan_enable_get_async( 15191 int * us, 15192 int * consistent, 15193 bcmx_async_cb_t async_callback, 15194 void *async_cookie) 15195 { 15196 bcmx_async_req_t *async; 15197 15198 async = sal_alloc(sizeof(*async), "bcmx_async"); 15199 if (async == NULL) { 15200 if (async_callback != NULL) { 15201 (*async_callback)(async_cookie, BCM_E_MEMORY); 15202 } 15203 return; 15204 } 15205 async->next = NULL; 15206 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_ENABLE_GET; 15207 async->run = bcmx_async_run; 15208 async->callback = async_callback; 15209 async->cookie = async_cookie; 15210 async->args.linkscan_enable_get.us = us; 15211 async->args.linkscan_enable_get.consistent = consistent; 15212 bcm_async_add((bcm_async_req_t *)async); 15213 } 15214 15215 void 15216 bcmx_linkscan_enable_port_get_async( 15217 bcmx_lport_t lport, 15218 bcmx_async_cb_t async_callback, 15219 void *async_cookie) 15220 { 15221 bcmx_async_req_t *async; 15222 15223 async = sal_alloc(sizeof(*async), "bcmx_async"); 15224 if (async == NULL) { 15225 if (async_callback != NULL) { 15226 (*async_callback)(async_cookie, BCM_E_MEMORY); 15227 } 15228 return; 15229 } 15230 async->next = NULL; 15231 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_ENABLE_PORT_GET; 15232 async->run = bcmx_async_run; 15233 async->callback = async_callback; 15234 async->cookie = async_cookie; 15235 async->args.linkscan_enable_port_get.lport = lport; 15236 bcm_async_add((bcm_async_req_t *)async); 15237 } 15238 15239 void 15240 bcmx_linkscan_enable_set_async( 15241 int us, 15242 bcmx_async_cb_t async_callback, 15243 void *async_cookie) 15244 { 15245 bcmx_async_req_t *async; 15246 15247 async = sal_alloc(sizeof(*async), "bcmx_async"); 15248 if (async == NULL) { 15249 if (async_callback != NULL) { 15250 (*async_callback)(async_cookie, BCM_E_MEMORY); 15251 } 15252 return; 15253 } 15254 async->next = NULL; 15255 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_ENABLE_SET; 15256 async->run = bcmx_async_run; 15257 async->callback = async_callback; 15258 async->cookie = async_cookie; 15259 async->args.linkscan_enable_set.us = us; 15260 bcm_async_add((bcm_async_req_t *)async); 15261 } 15262 15263 void 15264 bcmx_linkscan_register_async( 15265 bcmx_link_notify_f ln_cb, 15266 bcmx_async_cb_t async_callback, 15267 void *async_cookie) 15268 { 15269 bcmx_async_req_t *async; 15270 15271 async = sal_alloc(sizeof(*async), "bcmx_async"); 15272 if (async == NULL) { 15273 if (async_callback != NULL) { 15274 (*async_callback)(async_cookie, BCM_E_MEMORY); 15275 } 15276 return; 15277 } 15278 async->next = NULL; 15279 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_REGISTER; 15280 async->run = bcmx_async_run; 15281 async->callback = async_callback; 15282 async->cookie = async_cookie; 15283 async->args.linkscan_register.ln_cb = ln_cb; 15284 bcm_async_add((bcm_async_req_t *)async); 15285 } 15286 15287 void 15288 bcmx_linkscan_unregister_async( 15289 bcmx_link_notify_f ln_cb, 15290 bcmx_async_cb_t async_callback, 15291 void *async_cookie) 15292 { 15293 bcmx_async_req_t *async; 15294 15295 async = sal_alloc(sizeof(*async), "bcmx_async"); 15296 if (async == NULL) { 15297 if (async_callback != NULL) { 15298 (*async_callback)(async_cookie, BCM_E_MEMORY); 15299 } 15300 return; 15301 } 15302 async->next = NULL; 15303 async->type = BCMX_ASYNC_ENTRY_LINKSCAN_UNREGISTER; 15304 async->run = bcmx_async_run; 15305 async->callback = async_callback; 15306 async->cookie = async_cookie; 15307 async->args.linkscan_unregister.ln_cb = ln_cb; 15308 bcm_async_add((bcm_async_req_t *)async); 15309 } 15310 15311 void 15312 bcmx_mcast_addr_add_async( 15313 bcmx_mcast_addr_t * mcaddr, 15314 bcmx_async_cb_t async_callback, 15315 void *async_cookie) 15316 { 15317 bcmx_async_req_t *async; 15318 15319 async = sal_alloc(sizeof(*async), "bcmx_async"); 15320 if (async == NULL) { 15321 if (async_callback != NULL) { 15322 (*async_callback)(async_cookie, BCM_E_MEMORY); 15323 } 15324 return; 15325 } 15326 async->next = NULL; 15327 async->type = BCMX_ASYNC_ENTRY_MCAST_ADDR_ADD; 15328 async->run = bcmx_async_run; 15329 async->callback = async_callback; 15330 async->cookie = async_cookie; 15331 async->args.mcast_addr_add.mcaddr = mcaddr; 15332 bcm_async_add((bcm_async_req_t *)async); 15333 } 15334 15335 void 15336 bcmx_mcast_addr_remove_async( 15337 bcm_mac_t mac, 15338 bcm_vlan_t vid, 15339 bcmx_async_cb_t async_callback, 15340 void *async_cookie) 15341 { 15342 bcmx_async_req_t *async; 15343 15344 async = sal_alloc(sizeof(*async), "bcmx_async"); 15345 if (async == NULL) { 15346 if (async_callback != NULL) { 15347 (*async_callback)(async_cookie, BCM_E_MEMORY); 15348 } 15349 return; 15350 } 15351 async->next = NULL; 15352 async->type = BCMX_ASYNC_ENTRY_MCAST_ADDR_REMOVE; 15353 async->run = bcmx_async_run; 15354 async->callback = async_callback; 15355 async->cookie = async_cookie; 15356 async->args.mcast_addr_remove.mac = (uint8 *)mac; 15357 async->args.mcast_addr_remove.vid = vid; 15358 bcm_async_add((bcm_async_req_t *)async); 15359 } 15360 15361 void 15362 bcmx_mcast_init_async( 15363 bcmx_async_cb_t async_callback, 15364 void *async_cookie) 15365 { 15366 bcmx_async_req_t *async; 15367 15368 async = sal_alloc(sizeof(*async), "bcmx_async"); 15369 if (async == NULL) { 15370 if (async_callback != NULL) { 15371 (*async_callback)(async_cookie, BCM_E_MEMORY); 15372 } 15373 return; 15374 } 15375 async->next = NULL; 15376 async->type = BCMX_ASYNC_ENTRY_MCAST_INIT; 15377 async->run = bcmx_async_run; 15378 async->callback = async_callback; 15379 async->cookie = async_cookie; 15380 bcm_async_add((bcm_async_req_t *)async); 15381 } 15382 15383 void 15384 bcmx_mcast_join_async( 15385 bcm_mac_t mac, 15386 bcm_vlan_t vid, 15387 bcmx_lport_t port, 15388 bcmx_mcast_addr_t * mcaddr, 15389 bcmx_lplist_t * allrtr, 15390 bcmx_async_cb_t async_callback, 15391 void *async_cookie) 15392 { 15393 bcmx_async_req_t *async; 15394 15395 async = sal_alloc(sizeof(*async), "bcmx_async"); 15396 if (async == NULL) { 15397 if (async_callback != NULL) { 15398 (*async_callback)(async_cookie, BCM_E_MEMORY); 15399 } 15400 return; 15401 } 15402 async->next = NULL; 15403 async->type = BCMX_ASYNC_ENTRY_MCAST_JOIN; 15404 async->run = bcmx_async_run; 15405 async->callback = async_callback; 15406 async->cookie = async_cookie; 15407 async->args.mcast_join.mac = (uint8 *)mac; 15408 async->args.mcast_join.vid = vid; 15409 async->args.mcast_join.port = port; 15410 async->args.mcast_join.mcaddr = mcaddr; 15411 async->args.mcast_join.allrtr = allrtr; 15412 bcm_async_add((bcm_async_req_t *)async); 15413 } 15414 15415 void 15416 bcmx_mcast_leave_async( 15417 bcm_mac_t mac, 15418 bcm_vlan_t vid, 15419 bcmx_lport_t port, 15420 bcmx_async_cb_t async_callback, 15421 void *async_cookie) 15422 { 15423 bcmx_async_req_t *async; 15424 15425 async = sal_alloc(sizeof(*async), "bcmx_async"); 15426 if (async == NULL) { 15427 if (async_callback != NULL) { 15428 (*async_callback)(async_cookie, BCM_E_MEMORY); 15429 } 15430 return; 15431 } 15432 async->next = NULL; 15433 async->type = BCMX_ASYNC_ENTRY_MCAST_LEAVE; 15434 async->run = bcmx_async_run; 15435 async->callback = async_callback; 15436 async->cookie = async_cookie; 15437 async->args.mcast_leave.mac = (uint8 *)mac; 15438 async->args.mcast_leave.vid = vid; 15439 async->args.mcast_leave.port = port; 15440 bcm_async_add((bcm_async_req_t *)async); 15441 } 15442 15443 void 15444 bcmx_mcast_port_add_async( 15445 bcmx_mcast_addr_t * mcaddr, 15446 bcmx_async_cb_t async_callback, 15447 void *async_cookie) 15448 { 15449 bcmx_async_req_t *async; 15450 15451 async = sal_alloc(sizeof(*async), "bcmx_async"); 15452 if (async == NULL) { 15453 if (async_callback != NULL) { 15454 (*async_callback)(async_cookie, BCM_E_MEMORY); 15455 } 15456 return; 15457 } 15458 async->next = NULL; 15459 async->type = BCMX_ASYNC_ENTRY_MCAST_PORT_ADD; 15460 async->run = bcmx_async_run; 15461 async->callback = async_callback; 15462 async->cookie = async_cookie; 15463 async->args.mcast_port_add.mcaddr = mcaddr; 15464 bcm_async_add((bcm_async_req_t *)async); 15465 } 15466 15467 void 15468 bcmx_mcast_port_get_async( 15469 bcm_mac_t mac, 15470 bcm_vlan_t vid, 15471 bcmx_mcast_addr_t * mcaddr, 15472 bcmx_async_cb_t async_callback, 15473 void *async_cookie) 15474 { 15475 bcmx_async_req_t *async; 15476 15477 async = sal_alloc(sizeof(*async), "bcmx_async"); 15478 if (async == NULL) { 15479 if (async_callback != NULL) { 15480 (*async_callback)(async_cookie, BCM_E_MEMORY); 15481 } 15482 return; 15483 } 15484 async->next = NULL; 15485 async->type = BCMX_ASYNC_ENTRY_MCAST_PORT_GET; 15486 async->run = bcmx_async_run; 15487 async->callback = async_callback; 15488 async->cookie = async_cookie; 15489 async->args.mcast_port_get.mac = (uint8 *)mac; 15490 async->args.mcast_port_get.vid = vid; 15491 async->args.mcast_port_get.mcaddr = mcaddr; 15492 bcm_async_add((bcm_async_req_t *)async); 15493 } 15494 15495 void 15496 bcmx_mcast_port_remove_async( 15497 bcmx_mcast_addr_t * mcaddr, 15498 bcmx_async_cb_t async_callback, 15499 void *async_cookie) 15500 { 15501 bcmx_async_req_t *async; 15502 15503 async = sal_alloc(sizeof(*async), "bcmx_async"); 15504 if (async == NULL) { 15505 if (async_callback != NULL) { 15506 (*async_callback)(async_cookie, BCM_E_MEMORY); 15507 } 15508 return; 15509 } 15510 async->next = NULL; 15511 async->type = BCMX_ASYNC_ENTRY_MCAST_PORT_REMOVE; 15512 async->run = bcmx_async_run; 15513 async->callback = async_callback; 15514 async->cookie = async_cookie; 15515 async->args.mcast_port_remove.mcaddr = mcaddr; 15516 bcm_async_add((bcm_async_req_t *)async); 15517 } 15518 15519 #ifdef INCLUDE_L3 15520 15521 void 15522 bcmx_mim_detach_async( 15523 bcmx_async_cb_t async_callback, 15524 void *async_cookie) 15525 { 15526 bcmx_async_req_t *async; 15527 15528 async = sal_alloc(sizeof(*async), "bcmx_async"); 15529 if (async == NULL) { 15530 if (async_callback != NULL) { 15531 (*async_callback)(async_cookie, BCM_E_MEMORY); 15532 } 15533 return; 15534 } 15535 async->next = NULL; 15536 async->type = BCMX_ASYNC_ENTRY_MIM_DETACH; 15537 async->run = bcmx_async_run; 15538 async->callback = async_callback; 15539 async->cookie = async_cookie; 15540 bcm_async_add((bcm_async_req_t *)async); 15541 } 15542 15543 void 15544 bcmx_mim_init_async( 15545 bcmx_async_cb_t async_callback, 15546 void *async_cookie) 15547 { 15548 bcmx_async_req_t *async; 15549 15550 async = sal_alloc(sizeof(*async), "bcmx_async"); 15551 if (async == NULL) { 15552 if (async_callback != NULL) { 15553 (*async_callback)(async_cookie, BCM_E_MEMORY); 15554 } 15555 return; 15556 } 15557 async->next = NULL; 15558 async->type = BCMX_ASYNC_ENTRY_MIM_INIT; 15559 async->run = bcmx_async_run; 15560 async->callback = async_callback; 15561 async->cookie = async_cookie; 15562 bcm_async_add((bcm_async_req_t *)async); 15563 } 15564 15565 void 15566 bcmx_mim_port_add_async( 15567 bcm_mim_vpn_t vpn, 15568 bcmx_mim_port_t * mim_port, 15569 bcmx_async_cb_t async_callback, 15570 void *async_cookie) 15571 { 15572 bcmx_async_req_t *async; 15573 15574 async = sal_alloc(sizeof(*async), "bcmx_async"); 15575 if (async == NULL) { 15576 if (async_callback != NULL) { 15577 (*async_callback)(async_cookie, BCM_E_MEMORY); 15578 } 15579 return; 15580 } 15581 async->next = NULL; 15582 async->type = BCMX_ASYNC_ENTRY_MIM_PORT_ADD; 15583 async->run = bcmx_async_run; 15584 async->callback = async_callback; 15585 async->cookie = async_cookie; 15586 async->args.mim_port_add.vpn = vpn; 15587 async->args.mim_port_add.mim_port = mim_port; 15588 bcm_async_add((bcm_async_req_t *)async); 15589 } 15590 15591 void 15592 bcmx_mim_port_delete_async( 15593 bcm_mim_vpn_t vpn, 15594 bcm_gport_t mim_port_id, 15595 bcmx_async_cb_t async_callback, 15596 void *async_cookie) 15597 { 15598 bcmx_async_req_t *async; 15599 15600 async = sal_alloc(sizeof(*async), "bcmx_async"); 15601 if (async == NULL) { 15602 if (async_callback != NULL) { 15603 (*async_callback)(async_cookie, BCM_E_MEMORY); 15604 } 15605 return; 15606 } 15607 async->next = NULL; 15608 async->type = BCMX_ASYNC_ENTRY_MIM_PORT_DELETE; 15609 async->run = bcmx_async_run; 15610 async->callback = async_callback; 15611 async->cookie = async_cookie; 15612 async->args.mim_port_delete.vpn = vpn; 15613 async->args.mim_port_delete.mim_port_id = mim_port_id; 15614 bcm_async_add((bcm_async_req_t *)async); 15615 } 15616 15617 void 15618 bcmx_mim_port_delete_all_async( 15619 bcm_mim_vpn_t vpn, 15620 bcmx_async_cb_t async_callback, 15621 void *async_cookie) 15622 { 15623 bcmx_async_req_t *async; 15624 15625 async = sal_alloc(sizeof(*async), "bcmx_async"); 15626 if (async == NULL) { 15627 if (async_callback != NULL) { 15628 (*async_callback)(async_cookie, BCM_E_MEMORY); 15629 } 15630 return; 15631 } 15632 async->next = NULL; 15633 async->type = BCMX_ASYNC_ENTRY_MIM_PORT_DELETE_ALL; 15634 async->run = bcmx_async_run; 15635 async->callback = async_callback; 15636 async->cookie = async_cookie; 15637 async->args.mim_port_delete_all.vpn = vpn; 15638 bcm_async_add((bcm_async_req_t *)async); 15639 } 15640 15641 void 15642 bcmx_mim_port_get_async( 15643 bcm_mim_vpn_t vpn, 15644 bcmx_mim_port_t * mim_port, 15645 bcmx_async_cb_t async_callback, 15646 void *async_cookie) 15647 { 15648 bcmx_async_req_t *async; 15649 15650 async = sal_alloc(sizeof(*async), "bcmx_async"); 15651 if (async == NULL) { 15652 if (async_callback != NULL) { 15653 (*async_callback)(async_cookie, BCM_E_MEMORY); 15654 } 15655 return; 15656 } 15657 async->next = NULL; 15658 async->type = BCMX_ASYNC_ENTRY_MIM_PORT_GET; 15659 async->run = bcmx_async_run; 15660 async->callback = async_callback; 15661 async->cookie = async_cookie; 15662 async->args.mim_port_get.vpn = vpn; 15663 async->args.mim_port_get.mim_port = mim_port; 15664 bcm_async_add((bcm_async_req_t *)async); 15665 } 15666 15667 void 15668 bcmx_mim_port_get_all_async( 15669 bcm_mim_vpn_t vpn, 15670 int port_max, 15671 bcmx_mim_port_t * port_array, 15672 int * port_count, 15673 bcmx_async_cb_t async_callback, 15674 void *async_cookie) 15675 { 15676 bcmx_async_req_t *async; 15677 15678 async = sal_alloc(sizeof(*async), "bcmx_async"); 15679 if (async == NULL) { 15680 if (async_callback != NULL) { 15681 (*async_callback)(async_cookie, BCM_E_MEMORY); 15682 } 15683 return; 15684 } 15685 async->next = NULL; 15686 async->type = BCMX_ASYNC_ENTRY_MIM_PORT_GET_ALL; 15687 async->run = bcmx_async_run; 15688 async->callback = async_callback; 15689 async->cookie = async_cookie; 15690 async->args.mim_port_get_all.vpn = vpn; 15691 async->args.mim_port_get_all.port_max = port_max; 15692 async->args.mim_port_get_all.port_array = port_array; 15693 async->args.mim_port_get_all.port_count = port_count; 15694 bcm_async_add((bcm_async_req_t *)async); 15695 } 15696 15697 void 15698 bcmx_mim_vpn_create_async( 15699 bcmx_mim_vpn_config_t * info, 15700 bcmx_async_cb_t async_callback, 15701 void *async_cookie) 15702 { 15703 bcmx_async_req_t *async; 15704 15705 async = sal_alloc(sizeof(*async), "bcmx_async"); 15706 if (async == NULL) { 15707 if (async_callback != NULL) { 15708 (*async_callback)(async_cookie, BCM_E_MEMORY); 15709 } 15710 return; 15711 } 15712 async->next = NULL; 15713 async->type = BCMX_ASYNC_ENTRY_MIM_VPN_CREATE; 15714 async->run = bcmx_async_run; 15715 async->callback = async_callback; 15716 async->cookie = async_cookie; 15717 async->args.mim_vpn_create.info = info; 15718 bcm_async_add((bcm_async_req_t *)async); 15719 } 15720 15721 void 15722 bcmx_mim_vpn_destroy_async( 15723 bcm_mim_vpn_t vpn, 15724 bcmx_async_cb_t async_callback, 15725 void *async_cookie) 15726 { 15727 bcmx_async_req_t *async; 15728 15729 async = sal_alloc(sizeof(*async), "bcmx_async"); 15730 if (async == NULL) { 15731 if (async_callback != NULL) { 15732 (*async_callback)(async_cookie, BCM_E_MEMORY); 15733 } 15734 return; 15735 } 15736 async->next = NULL; 15737 async->type = BCMX_ASYNC_ENTRY_MIM_VPN_DESTROY; 15738 async->run = bcmx_async_run; 15739 async->callback = async_callback; 15740 async->cookie = async_cookie; 15741 async->args.mim_vpn_destroy.vpn = vpn; 15742 bcm_async_add((bcm_async_req_t *)async); 15743 } 15744 15745 void 15746 bcmx_mim_vpn_destroy_all_async( 15747 bcmx_async_cb_t async_callback, 15748 void *async_cookie) 15749 { 15750 bcmx_async_req_t *async; 15751 15752 async = sal_alloc(sizeof(*async), "bcmx_async"); 15753 if (async == NULL) { 15754 if (async_callback != NULL) { 15755 (*async_callback)(async_cookie, BCM_E_MEMORY); 15756 } 15757 return; 15758 } 15759 async->next = NULL; 15760 async->type = BCMX_ASYNC_ENTRY_MIM_VPN_DESTROY_ALL; 15761 async->run = bcmx_async_run; 15762 async->callback = async_callback; 15763 async->cookie = async_cookie; 15764 bcm_async_add((bcm_async_req_t *)async); 15765 } 15766 15767 void 15768 bcmx_mim_vpn_get_async( 15769 bcm_mim_vpn_t vpn, 15770 bcmx_mim_vpn_config_t * info, 15771 bcmx_async_cb_t async_callback, 15772 void *async_cookie) 15773 { 15774 bcmx_async_req_t *async; 15775 15776 async = sal_alloc(sizeof(*async), "bcmx_async"); 15777 if (async == NULL) { 15778 if (async_callback != NULL) { 15779 (*async_callback)(async_cookie, BCM_E_MEMORY); 15780 } 15781 return; 15782 } 15783 async->next = NULL; 15784 async->type = BCMX_ASYNC_ENTRY_MIM_VPN_GET; 15785 async->run = bcmx_async_run; 15786 async->callback = async_callback; 15787 async->cookie = async_cookie; 15788 async->args.mim_vpn_get.vpn = vpn; 15789 async->args.mim_vpn_get.info = info; 15790 bcm_async_add((bcm_async_req_t *)async); 15791 } 15792 15793 #endif /* INCLUDE_L3 */ 15794 15795 void 15796 bcmx_mirror_destination_create_async( 15797 bcmx_mirror_destination_t * mirror_dest, 15798 bcmx_async_cb_t async_callback, 15799 void *async_cookie) 15800 { 15801 bcmx_async_req_t *async; 15802 15803 async = sal_alloc(sizeof(*async), "bcmx_async"); 15804 if (async == NULL) { 15805 if (async_callback != NULL) { 15806 (*async_callback)(async_cookie, BCM_E_MEMORY); 15807 } 15808 return; 15809 } 15810 async->next = NULL; 15811 async->type = BCMX_ASYNC_ENTRY_MIRROR_DESTINATION_CREATE; 15812 async->run = bcmx_async_run; 15813 async->callback = async_callback; 15814 async->cookie = async_cookie; 15815 async->args.mirror_destination_create.mirror_dest = mirror_dest; 15816 bcm_async_add((bcm_async_req_t *)async); 15817 } 15818 15819 void 15820 bcmx_mirror_destination_destroy_async( 15821 bcm_gport_t mirror_dest_id, 15822 bcmx_async_cb_t async_callback, 15823 void *async_cookie) 15824 { 15825 bcmx_async_req_t *async; 15826 15827 async = sal_alloc(sizeof(*async), "bcmx_async"); 15828 if (async == NULL) { 15829 if (async_callback != NULL) { 15830 (*async_callback)(async_cookie, BCM_E_MEMORY); 15831 } 15832 return; 15833 } 15834 async->next = NULL; 15835 async->type = BCMX_ASYNC_ENTRY_MIRROR_DESTINATION_DESTROY; 15836 async->run = bcmx_async_run; 15837 async->callback = async_callback; 15838 async->cookie = async_cookie; 15839 async->args.mirror_destination_destroy.mirror_dest_id = mirror_dest_id; 15840 bcm_async_add((bcm_async_req_t *)async); 15841 } 15842 15843 void 15844 bcmx_mirror_destination_get_async( 15845 bcm_gport_t mirror_dest_id, 15846 bcmx_mirror_destination_t * mirror_dest, 15847 bcmx_async_cb_t async_callback, 15848 void *async_cookie) 15849 { 15850 bcmx_async_req_t *async; 15851 15852 async = sal_alloc(sizeof(*async), "bcmx_async"); 15853 if (async == NULL) { 15854 if (async_callback != NULL) { 15855 (*async_callback)(async_cookie, BCM_E_MEMORY); 15856 } 15857 return; 15858 } 15859 async->next = NULL; 15860 async->type = BCMX_ASYNC_ENTRY_MIRROR_DESTINATION_GET; 15861 async->run = bcmx_async_run; 15862 async->callback = async_callback; 15863 async->cookie = async_cookie; 15864 async->args.mirror_destination_get.mirror_dest_id = mirror_dest_id; 15865 async->args.mirror_destination_get.mirror_dest = mirror_dest; 15866 bcm_async_add((bcm_async_req_t *)async); 15867 } 15868 15869 void 15870 bcmx_mirror_egress_get_async( 15871 bcmx_lport_t port, 15872 int * val, 15873 bcmx_async_cb_t async_callback, 15874 void *async_cookie) 15875 { 15876 bcmx_async_req_t *async; 15877 15878 async = sal_alloc(sizeof(*async), "bcmx_async"); 15879 if (async == NULL) { 15880 if (async_callback != NULL) { 15881 (*async_callback)(async_cookie, BCM_E_MEMORY); 15882 } 15883 return; 15884 } 15885 async->next = NULL; 15886 async->type = BCMX_ASYNC_ENTRY_MIRROR_EGRESS_GET; 15887 async->run = bcmx_async_run; 15888 async->callback = async_callback; 15889 async->cookie = async_cookie; 15890 async->args.mirror_egress_get.port = port; 15891 async->args.mirror_egress_get.val = val; 15892 bcm_async_add((bcm_async_req_t *)async); 15893 } 15894 15895 void 15896 bcmx_mirror_egress_set_async( 15897 bcmx_lport_t port, 15898 int val, 15899 bcmx_async_cb_t async_callback, 15900 void *async_cookie) 15901 { 15902 bcmx_async_req_t *async; 15903 15904 async = sal_alloc(sizeof(*async), "bcmx_async"); 15905 if (async == NULL) { 15906 if (async_callback != NULL) { 15907 (*async_callback)(async_cookie, BCM_E_MEMORY); 15908 } 15909 return; 15910 } 15911 async->next = NULL; 15912 async->type = BCMX_ASYNC_ENTRY_MIRROR_EGRESS_SET; 15913 async->run = bcmx_async_run; 15914 async->callback = async_callback; 15915 async->cookie = async_cookie; 15916 async->args.mirror_egress_set.port = port; 15917 async->args.mirror_egress_set.val = val; 15918 bcm_async_add((bcm_async_req_t *)async); 15919 } 15920 15921 void 15922 bcmx_mirror_fabric_list_get_async( 15923 bcmx_lport_t port, 15924 bcmx_lplist_t * lplist, 15925 bcmx_async_cb_t async_callback, 15926 void *async_cookie) 15927 { 15928 bcmx_async_req_t *async; 15929 15930 async = sal_alloc(sizeof(*async), "bcmx_async"); 15931 if (async == NULL) { 15932 if (async_callback != NULL) { 15933 (*async_callback)(async_cookie, BCM_E_MEMORY); 15934 } 15935 return; 15936 } 15937 async->next = NULL; 15938 async->type = BCMX_ASYNC_ENTRY_MIRROR_FABRIC_LIST_GET; 15939 async->run = bcmx_async_run; 15940 async->callback = async_callback; 15941 async->cookie = async_cookie; 15942 async->args.mirror_fabric_list_get.port = port; 15943 async->args.mirror_fabric_list_get.lplist = lplist; 15944 bcm_async_add((bcm_async_req_t *)async); 15945 } 15946 15947 void 15948 bcmx_mirror_fabric_list_set_async( 15949 bcmx_lport_t port, 15950 bcmx_lplist_t lplist, 15951 bcmx_async_cb_t async_callback, 15952 void *async_cookie) 15953 { 15954 bcmx_async_req_t *async; 15955 15956 async = sal_alloc(sizeof(*async), "bcmx_async"); 15957 if (async == NULL) { 15958 if (async_callback != NULL) { 15959 (*async_callback)(async_cookie, BCM_E_MEMORY); 15960 } 15961 return; 15962 } 15963 async->next = NULL; 15964 async->type = BCMX_ASYNC_ENTRY_MIRROR_FABRIC_LIST_SET; 15965 async->run = bcmx_async_run; 15966 async->callback = async_callback; 15967 async->cookie = async_cookie; 15968 async->args.mirror_fabric_list_set.port = port; 15969 async->args.mirror_fabric_list_set.lplist = lplist; 15970 bcm_async_add((bcm_async_req_t *)async); 15971 } 15972 15973 void 15974 bcmx_mirror_ingress_get_async( 15975 bcmx_lport_t port, 15976 int * val, 15977 bcmx_async_cb_t async_callback, 15978 void *async_cookie) 15979 { 15980 bcmx_async_req_t *async; 15981 15982 async = sal_alloc(sizeof(*async), "bcmx_async"); 15983 if (async == NULL) { 15984 if (async_callback != NULL) { 15985 (*async_callback)(async_cookie, BCM_E_MEMORY); 15986 } 15987 return; 15988 } 15989 async->next = NULL; 15990 async->type = BCMX_ASYNC_ENTRY_MIRROR_INGRESS_GET; 15991 async->run = bcmx_async_run; 15992 async->callback = async_callback; 15993 async->cookie = async_cookie; 15994 async->args.mirror_ingress_get.port = port; 15995 async->args.mirror_ingress_get.val = val; 15996 bcm_async_add((bcm_async_req_t *)async); 15997 } 15998 15999 void 16000 bcmx_mirror_ingress_set_async( 16001 bcmx_lport_t port, 16002 int val, 16003 bcmx_async_cb_t async_callback, 16004 void *async_cookie) 16005 { 16006 bcmx_async_req_t *async; 16007 16008 async = sal_alloc(sizeof(*async), "bcmx_async"); 16009 if (async == NULL) { 16010 if (async_callback != NULL) { 16011 (*async_callback)(async_cookie, BCM_E_MEMORY); 16012 } 16013 return; 16014 } 16015 async->next = NULL; 16016 async->type = BCMX_ASYNC_ENTRY_MIRROR_INGRESS_SET; 16017 async->run = bcmx_async_run; 16018 async->callback = async_callback; 16019 async->cookie = async_cookie; 16020 async->args.mirror_ingress_set.port = port; 16021 async->args.mirror_ingress_set.val = val; 16022 bcm_async_add((bcm_async_req_t *)async); 16023 } 16024 16025 void 16026 bcmx_mirror_init_async( 16027 bcmx_async_cb_t async_callback, 16028 void *async_cookie) 16029 { 16030 bcmx_async_req_t *async; 16031 16032 async = sal_alloc(sizeof(*async), "bcmx_async"); 16033 if (async == NULL) { 16034 if (async_callback != NULL) { 16035 (*async_callback)(async_cookie, BCM_E_MEMORY); 16036 } 16037 return; 16038 } 16039 async->next = NULL; 16040 async->type = BCMX_ASYNC_ENTRY_MIRROR_INIT; 16041 async->run = bcmx_async_run; 16042 async->callback = async_callback; 16043 async->cookie = async_cookie; 16044 bcm_async_add((bcm_async_req_t *)async); 16045 } 16046 16047 void 16048 bcmx_mirror_mode_get_async( 16049 int * mode, 16050 bcmx_async_cb_t async_callback, 16051 void *async_cookie) 16052 { 16053 bcmx_async_req_t *async; 16054 16055 async = sal_alloc(sizeof(*async), "bcmx_async"); 16056 if (async == NULL) { 16057 if (async_callback != NULL) { 16058 (*async_callback)(async_cookie, BCM_E_MEMORY); 16059 } 16060 return; 16061 } 16062 async->next = NULL; 16063 async->type = BCMX_ASYNC_ENTRY_MIRROR_MODE_GET; 16064 async->run = bcmx_async_run; 16065 async->callback = async_callback; 16066 async->cookie = async_cookie; 16067 async->args.mirror_mode_get.mode = mode; 16068 bcm_async_add((bcm_async_req_t *)async); 16069 } 16070 16071 void 16072 bcmx_mirror_mode_set_async( 16073 int mode, 16074 bcmx_async_cb_t async_callback, 16075 void *async_cookie) 16076 { 16077 bcmx_async_req_t *async; 16078 16079 async = sal_alloc(sizeof(*async), "bcmx_async"); 16080 if (async == NULL) { 16081 if (async_callback != NULL) { 16082 (*async_callback)(async_cookie, BCM_E_MEMORY); 16083 } 16084 return; 16085 } 16086 async->next = NULL; 16087 async->type = BCMX_ASYNC_ENTRY_MIRROR_MODE_SET; 16088 async->run = bcmx_async_run; 16089 async->callback = async_callback; 16090 async->cookie = async_cookie; 16091 async->args.mirror_mode_set.mode = mode; 16092 bcm_async_add((bcm_async_req_t *)async); 16093 } 16094 16095 void 16096 bcmx_mirror_port_dest_add_async( 16097 bcmx_lport_t port, 16098 uint32 flags, 16099 bcm_gport_t mirror_dest_id, 16100 bcmx_async_cb_t async_callback, 16101 void *async_cookie) 16102 { 16103 bcmx_async_req_t *async; 16104 16105 async = sal_alloc(sizeof(*async), "bcmx_async"); 16106 if (async == NULL) { 16107 if (async_callback != NULL) { 16108 (*async_callback)(async_cookie, BCM_E_MEMORY); 16109 } 16110 return; 16111 } 16112 async->next = NULL; 16113 async->type = BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_ADD; 16114 async->run = bcmx_async_run; 16115 async->callback = async_callback; 16116 async->cookie = async_cookie; 16117 async->args.mirror_port_dest_add.port = port; 16118 async->args.mirror_port_dest_add.flags = flags; 16119 async->args.mirror_port_dest_add.mirror_dest_id = mirror_dest_id; 16120 bcm_async_add((bcm_async_req_t *)async); 16121 } 16122 16123 void 16124 bcmx_mirror_port_dest_delete_async( 16125 bcmx_lport_t port, 16126 uint32 flags, 16127 bcm_gport_t mirror_dest_id, 16128 bcmx_async_cb_t async_callback, 16129 void *async_cookie) 16130 { 16131 bcmx_async_req_t *async; 16132 16133 async = sal_alloc(sizeof(*async), "bcmx_async"); 16134 if (async == NULL) { 16135 if (async_callback != NULL) { 16136 (*async_callback)(async_cookie, BCM_E_MEMORY); 16137 } 16138 return; 16139 } 16140 async->next = NULL; 16141 async->type = BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_DELETE; 16142 async->run = bcmx_async_run; 16143 async->callback = async_callback; 16144 async->cookie = async_cookie; 16145 async->args.mirror_port_dest_delete.port = port; 16146 async->args.mirror_port_dest_delete.flags = flags; 16147 async->args.mirror_port_dest_delete.mirror_dest_id = mirror_dest_id; 16148 bcm_async_add((bcm_async_req_t *)async); 16149 } 16150 16151 void 16152 bcmx_mirror_port_dest_delete_all_async( 16153 bcmx_lport_t port, 16154 uint32 flags, 16155 bcmx_async_cb_t async_callback, 16156 void *async_cookie) 16157 { 16158 bcmx_async_req_t *async; 16159 16160 async = sal_alloc(sizeof(*async), "bcmx_async"); 16161 if (async == NULL) { 16162 if (async_callback != NULL) { 16163 (*async_callback)(async_cookie, BCM_E_MEMORY); 16164 } 16165 return; 16166 } 16167 async->next = NULL; 16168 async->type = BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_DELETE_ALL; 16169 async->run = bcmx_async_run; 16170 async->callback = async_callback; 16171 async->cookie = async_cookie; 16172 async->args.mirror_port_dest_delete_all.port = port; 16173 async->args.mirror_port_dest_delete_all.flags = flags; 16174 bcm_async_add((bcm_async_req_t *)async); 16175 } 16176 16177 void 16178 bcmx_mirror_port_dest_get_async( 16179 bcmx_lport_t port, 16180 uint32 flags, 16181 int mirror_dest_size, 16182 bcm_gport_t * mirror_dest, 16183 int * mirror_dest_count, 16184 bcmx_async_cb_t async_callback, 16185 void *async_cookie) 16186 { 16187 bcmx_async_req_t *async; 16188 16189 async = sal_alloc(sizeof(*async), "bcmx_async"); 16190 if (async == NULL) { 16191 if (async_callback != NULL) { 16192 (*async_callback)(async_cookie, BCM_E_MEMORY); 16193 } 16194 return; 16195 } 16196 async->next = NULL; 16197 async->type = BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_GET; 16198 async->run = bcmx_async_run; 16199 async->callback = async_callback; 16200 async->cookie = async_cookie; 16201 async->args.mirror_port_dest_get.port = port; 16202 async->args.mirror_port_dest_get.flags = flags; 16203 async->args.mirror_port_dest_get.mirror_dest_size = mirror_dest_size; 16204 async->args.mirror_port_dest_get.mirror_dest = mirror_dest; 16205 async->args.mirror_port_dest_get.mirror_dest_count = mirror_dest_count; 16206 bcm_async_add((bcm_async_req_t *)async); 16207 } 16208 16209 void 16210 bcmx_mirror_port_get_async( 16211 bcmx_lport_t port, 16212 bcmx_lport_t * dest_port, 16213 uint32 * flags, 16214 bcmx_async_cb_t async_callback, 16215 void *async_cookie) 16216 { 16217 bcmx_async_req_t *async; 16218 16219 async = sal_alloc(sizeof(*async), "bcmx_async"); 16220 if (async == NULL) { 16221 if (async_callback != NULL) { 16222 (*async_callback)(async_cookie, BCM_E_MEMORY); 16223 } 16224 return; 16225 } 16226 async->next = NULL; 16227 async->type = BCMX_ASYNC_ENTRY_MIRROR_PORT_GET; 16228 async->run = bcmx_async_run; 16229 async->callback = async_callback; 16230 async->cookie = async_cookie; 16231 async->args.mirror_port_get.port = port; 16232 async->args.mirror_port_get.dest_port = dest_port; 16233 async->args.mirror_port_get.flags = flags; 16234 bcm_async_add((bcm_async_req_t *)async); 16235 } 16236 16237 void 16238 bcmx_mirror_port_set_async( 16239 bcmx_lport_t port, 16240 bcmx_lport_t dest_port, 16241 uint32 flags, 16242 bcmx_async_cb_t async_callback, 16243 void *async_cookie) 16244 { 16245 bcmx_async_req_t *async; 16246 16247 async = sal_alloc(sizeof(*async), "bcmx_async"); 16248 if (async == NULL) { 16249 if (async_callback != NULL) { 16250 (*async_callback)(async_cookie, BCM_E_MEMORY); 16251 } 16252 return; 16253 } 16254 async->next = NULL; 16255 async->type = BCMX_ASYNC_ENTRY_MIRROR_PORT_SET; 16256 async->run = bcmx_async_run; 16257 async->callback = async_callback; 16258 async->cookie = async_cookie; 16259 async->args.mirror_port_set.port = port; 16260 async->args.mirror_port_set.dest_port = dest_port; 16261 async->args.mirror_port_set.flags = flags; 16262 bcm_async_add((bcm_async_req_t *)async); 16263 } 16264 16265 void 16266 bcmx_mirror_to_get_async( 16267 bcmx_lport_t * port, 16268 bcmx_async_cb_t async_callback, 16269 void *async_cookie) 16270 { 16271 bcmx_async_req_t *async; 16272 16273 async = sal_alloc(sizeof(*async), "bcmx_async"); 16274 if (async == NULL) { 16275 if (async_callback != NULL) { 16276 (*async_callback)(async_cookie, BCM_E_MEMORY); 16277 } 16278 return; 16279 } 16280 async->next = NULL; 16281 async->type = BCMX_ASYNC_ENTRY_MIRROR_TO_GET; 16282 async->run = bcmx_async_run; 16283 async->callback = async_callback; 16284 async->cookie = async_cookie; 16285 async->args.mirror_to_get.port = port; 16286 bcm_async_add((bcm_async_req_t *)async); 16287 } 16288 16289 void 16290 bcmx_mirror_to_set_async( 16291 bcmx_lport_t port, 16292 bcmx_async_cb_t async_callback, 16293 void *async_cookie) 16294 { 16295 bcmx_async_req_t *async; 16296 16297 async = sal_alloc(sizeof(*async), "bcmx_async"); 16298 if (async == NULL) { 16299 if (async_callback != NULL) { 16300 (*async_callback)(async_cookie, BCM_E_MEMORY); 16301 } 16302 return; 16303 } 16304 async->next = NULL; 16305 async->type = BCMX_ASYNC_ENTRY_MIRROR_TO_SET; 16306 async->run = bcmx_async_run; 16307 async->callback = async_callback; 16308 async->cookie = async_cookie; 16309 async->args.mirror_to_set.port = port; 16310 bcm_async_add((bcm_async_req_t *)async); 16311 } 16312 16313 void 16314 bcmx_mirror_vlan_get_async( 16315 bcmx_lport_t port, 16316 uint16 * tpid, 16317 uint16 * vlan, 16318 bcmx_async_cb_t async_callback, 16319 void *async_cookie) 16320 { 16321 bcmx_async_req_t *async; 16322 16323 async = sal_alloc(sizeof(*async), "bcmx_async"); 16324 if (async == NULL) { 16325 if (async_callback != NULL) { 16326 (*async_callback)(async_cookie, BCM_E_MEMORY); 16327 } 16328 return; 16329 } 16330 async->next = NULL; 16331 async->type = BCMX_ASYNC_ENTRY_MIRROR_VLAN_GET; 16332 async->run = bcmx_async_run; 16333 async->callback = async_callback; 16334 async->cookie = async_cookie; 16335 async->args.mirror_vlan_get.port = port; 16336 async->args.mirror_vlan_get.tpid = tpid; 16337 async->args.mirror_vlan_get.vlan = vlan; 16338 bcm_async_add((bcm_async_req_t *)async); 16339 } 16340 16341 void 16342 bcmx_mirror_vlan_set_async( 16343 bcmx_lport_t port, 16344 uint16 tpid, 16345 uint16 vlan, 16346 bcmx_async_cb_t async_callback, 16347 void *async_cookie) 16348 { 16349 bcmx_async_req_t *async; 16350 16351 async = sal_alloc(sizeof(*async), "bcmx_async"); 16352 if (async == NULL) { 16353 if (async_callback != NULL) { 16354 (*async_callback)(async_cookie, BCM_E_MEMORY); 16355 } 16356 return; 16357 } 16358 async->next = NULL; 16359 async->type = BCMX_ASYNC_ENTRY_MIRROR_VLAN_SET; 16360 async->run = bcmx_async_run; 16361 async->callback = async_callback; 16362 async->cookie = async_cookie; 16363 async->args.mirror_vlan_set.port = port; 16364 async->args.mirror_vlan_set.tpid = tpid; 16365 async->args.mirror_vlan_set.vlan = vlan; 16366 bcm_async_add((bcm_async_req_t *)async); 16367 } 16368 16369 #ifdef INCLUDE_L3 16370 16371 void 16372 bcmx_mpls_cleanup_async( 16373 bcmx_async_cb_t async_callback, 16374 void *async_cookie) 16375 { 16376 bcmx_async_req_t *async; 16377 16378 async = sal_alloc(sizeof(*async), "bcmx_async"); 16379 if (async == NULL) { 16380 if (async_callback != NULL) { 16381 (*async_callback)(async_cookie, BCM_E_MEMORY); 16382 } 16383 return; 16384 } 16385 async->next = NULL; 16386 async->type = BCMX_ASYNC_ENTRY_MPLS_CLEANUP; 16387 async->run = bcmx_async_run; 16388 async->callback = async_callback; 16389 async->cookie = async_cookie; 16390 bcm_async_add((bcm_async_req_t *)async); 16391 } 16392 16393 void 16394 bcmx_mpls_exp_map_create_async( 16395 uint32 flags, 16396 int * exp_map_id, 16397 bcmx_async_cb_t async_callback, 16398 void *async_cookie) 16399 { 16400 bcmx_async_req_t *async; 16401 16402 async = sal_alloc(sizeof(*async), "bcmx_async"); 16403 if (async == NULL) { 16404 if (async_callback != NULL) { 16405 (*async_callback)(async_cookie, BCM_E_MEMORY); 16406 } 16407 return; 16408 } 16409 async->next = NULL; 16410 async->type = BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_CREATE; 16411 async->run = bcmx_async_run; 16412 async->callback = async_callback; 16413 async->cookie = async_cookie; 16414 async->args.mpls_exp_map_create.flags = flags; 16415 async->args.mpls_exp_map_create.exp_map_id = exp_map_id; 16416 bcm_async_add((bcm_async_req_t *)async); 16417 } 16418 16419 void 16420 bcmx_mpls_exp_map_destroy_async( 16421 int exp_map_id, 16422 bcmx_async_cb_t async_callback, 16423 void *async_cookie) 16424 { 16425 bcmx_async_req_t *async; 16426 16427 async = sal_alloc(sizeof(*async), "bcmx_async"); 16428 if (async == NULL) { 16429 if (async_callback != NULL) { 16430 (*async_callback)(async_cookie, BCM_E_MEMORY); 16431 } 16432 return; 16433 } 16434 async->next = NULL; 16435 async->type = BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_DESTROY; 16436 async->run = bcmx_async_run; 16437 async->callback = async_callback; 16438 async->cookie = async_cookie; 16439 async->args.mpls_exp_map_destroy.exp_map_id = exp_map_id; 16440 bcm_async_add((bcm_async_req_t *)async); 16441 } 16442 16443 void 16444 bcmx_mpls_exp_map_get_async( 16445 int exp_map_id, 16446 bcm_mpls_exp_map_t * exp_map, 16447 bcmx_async_cb_t async_callback, 16448 void *async_cookie) 16449 { 16450 bcmx_async_req_t *async; 16451 16452 async = sal_alloc(sizeof(*async), "bcmx_async"); 16453 if (async == NULL) { 16454 if (async_callback != NULL) { 16455 (*async_callback)(async_cookie, BCM_E_MEMORY); 16456 } 16457 return; 16458 } 16459 async->next = NULL; 16460 async->type = BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_GET; 16461 async->run = bcmx_async_run; 16462 async->callback = async_callback; 16463 async->cookie = async_cookie; 16464 async->args.mpls_exp_map_get.exp_map_id = exp_map_id; 16465 async->args.mpls_exp_map_get.exp_map = exp_map; 16466 bcm_async_add((bcm_async_req_t *)async); 16467 } 16468 16469 void 16470 bcmx_mpls_exp_map_set_async( 16471 int exp_map_id, 16472 bcm_mpls_exp_map_t * exp_map, 16473 bcmx_async_cb_t async_callback, 16474 void *async_cookie) 16475 { 16476 bcmx_async_req_t *async; 16477 16478 async = sal_alloc(sizeof(*async), "bcmx_async"); 16479 if (async == NULL) { 16480 if (async_callback != NULL) { 16481 (*async_callback)(async_cookie, BCM_E_MEMORY); 16482 } 16483 return; 16484 } 16485 async->next = NULL; 16486 async->type = BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_SET; 16487 async->run = bcmx_async_run; 16488 async->callback = async_callback; 16489 async->cookie = async_cookie; 16490 async->args.mpls_exp_map_set.exp_map_id = exp_map_id; 16491 async->args.mpls_exp_map_set.exp_map = exp_map; 16492 bcm_async_add((bcm_async_req_t *)async); 16493 } 16494 16495 void 16496 bcmx_mpls_init_async( 16497 bcmx_async_cb_t async_callback, 16498 void *async_cookie) 16499 { 16500 bcmx_async_req_t *async; 16501 16502 async = sal_alloc(sizeof(*async), "bcmx_async"); 16503 if (async == NULL) { 16504 if (async_callback != NULL) { 16505 (*async_callback)(async_cookie, BCM_E_MEMORY); 16506 } 16507 return; 16508 } 16509 async->next = NULL; 16510 async->type = BCMX_ASYNC_ENTRY_MPLS_INIT; 16511 async->run = bcmx_async_run; 16512 async->callback = async_callback; 16513 async->cookie = async_cookie; 16514 bcm_async_add((bcm_async_req_t *)async); 16515 } 16516 16517 void 16518 bcmx_mpls_label_stat_clear_async( 16519 bcm_mpls_label_t label, 16520 bcm_gport_t port, 16521 bcm_mpls_stat_t stat, 16522 bcmx_async_cb_t async_callback, 16523 void *async_cookie) 16524 { 16525 bcmx_async_req_t *async; 16526 16527 async = sal_alloc(sizeof(*async), "bcmx_async"); 16528 if (async == NULL) { 16529 if (async_callback != NULL) { 16530 (*async_callback)(async_cookie, BCM_E_MEMORY); 16531 } 16532 return; 16533 } 16534 async->next = NULL; 16535 async->type = BCMX_ASYNC_ENTRY_MPLS_LABEL_STAT_CLEAR; 16536 async->run = bcmx_async_run; 16537 async->callback = async_callback; 16538 async->cookie = async_cookie; 16539 async->args.mpls_label_stat_clear.label = label; 16540 async->args.mpls_label_stat_clear.port = port; 16541 async->args.mpls_label_stat_clear.stat = stat; 16542 bcm_async_add((bcm_async_req_t *)async); 16543 } 16544 16545 void 16546 bcmx_mpls_label_stat_get_async( 16547 bcm_mpls_label_t label, 16548 bcm_gport_t port, 16549 bcm_mpls_stat_t stat, 16550 uint64 * val, 16551 bcmx_async_cb_t async_callback, 16552 void *async_cookie) 16553 { 16554 bcmx_async_req_t *async; 16555 16556 async = sal_alloc(sizeof(*async), "bcmx_async"); 16557 if (async == NULL) { 16558 if (async_callback != NULL) { 16559 (*async_callback)(async_cookie, BCM_E_MEMORY); 16560 } 16561 return; 16562 } 16563 async->next = NULL; 16564 async->type = BCMX_ASYNC_ENTRY_MPLS_LABEL_STAT_GET; 16565 async->run = bcmx_async_run; 16566 async->callback = async_callback; 16567 async->cookie = async_cookie; 16568 async->args.mpls_label_stat_get.label = label; 16569 async->args.mpls_label_stat_get.port = port; 16570 async->args.mpls_label_stat_get.stat = stat; 16571 async->args.mpls_label_stat_get.val = val; 16572 bcm_async_add((bcm_async_req_t *)async); 16573 } 16574 16575 void 16576 bcmx_mpls_label_stat_get32_async( 16577 bcm_mpls_label_t label, 16578 bcm_gport_t port, 16579 bcm_mpls_stat_t stat, 16580 uint32 * val, 16581 bcmx_async_cb_t async_callback, 16582 void *async_cookie) 16583 { 16584 bcmx_async_req_t *async; 16585 16586 async = sal_alloc(sizeof(*async), "bcmx_async"); 16587 if (async == NULL) { 16588 if (async_callback != NULL) { 16589 (*async_callback)(async_cookie, BCM_E_MEMORY); 16590 } 16591 return; 16592 } 16593 async->next = NULL; 16594 async->type = BCMX_ASYNC_ENTRY_MPLS_LABEL_STAT_GET32; 16595 async->run = bcmx_async_run; 16596 async->callback = async_callback; 16597 async->cookie = async_cookie; 16598 async->args.mpls_label_stat_get32.label = label; 16599 async->args.mpls_label_stat_get32.port = port; 16600 async->args.mpls_label_stat_get32.stat = stat; 16601 async->args.mpls_label_stat_get32.val = val; 16602 bcm_async_add((bcm_async_req_t *)async); 16603 } 16604 16605 void 16606 bcmx_mpls_port_add_async( 16607 bcm_vpn_t vpn, 16608 bcmx_mpls_port_t * mpls_port, 16609 bcmx_async_cb_t async_callback, 16610 void *async_cookie) 16611 { 16612 bcmx_async_req_t *async; 16613 16614 async = sal_alloc(sizeof(*async), "bcmx_async"); 16615 if (async == NULL) { 16616 if (async_callback != NULL) { 16617 (*async_callback)(async_cookie, BCM_E_MEMORY); 16618 } 16619 return; 16620 } 16621 async->next = NULL; 16622 async->type = BCMX_ASYNC_ENTRY_MPLS_PORT_ADD; 16623 async->run = bcmx_async_run; 16624 async->callback = async_callback; 16625 async->cookie = async_cookie; 16626 async->args.mpls_port_add.vpn = vpn; 16627 async->args.mpls_port_add.mpls_port = mpls_port; 16628 bcm_async_add((bcm_async_req_t *)async); 16629 } 16630 16631 void 16632 bcmx_mpls_port_delete_async( 16633 bcm_vpn_t vpn, 16634 bcm_gport_t mpls_port_id, 16635 bcmx_async_cb_t async_callback, 16636 void *async_cookie) 16637 { 16638 bcmx_async_req_t *async; 16639 16640 async = sal_alloc(sizeof(*async), "bcmx_async"); 16641 if (async == NULL) { 16642 if (async_callback != NULL) { 16643 (*async_callback)(async_cookie, BCM_E_MEMORY); 16644 } 16645 return; 16646 } 16647 async->next = NULL; 16648 async->type = BCMX_ASYNC_ENTRY_MPLS_PORT_DELETE; 16649 async->run = bcmx_async_run; 16650 async->callback = async_callback; 16651 async->cookie = async_cookie; 16652 async->args.mpls_port_delete.vpn = vpn; 16653 async->args.mpls_port_delete.mpls_port_id = mpls_port_id; 16654 bcm_async_add((bcm_async_req_t *)async); 16655 } 16656 16657 void 16658 bcmx_mpls_port_delete_all_async( 16659 bcm_vpn_t vpn, 16660 bcmx_async_cb_t async_callback, 16661 void *async_cookie) 16662 { 16663 bcmx_async_req_t *async; 16664 16665 async = sal_alloc(sizeof(*async), "bcmx_async"); 16666 if (async == NULL) { 16667 if (async_callback != NULL) { 16668 (*async_callback)(async_cookie, BCM_E_MEMORY); 16669 } 16670 return; 16671 } 16672 async->next = NULL; 16673 async->type = BCMX_ASYNC_ENTRY_MPLS_PORT_DELETE_ALL; 16674 async->run = bcmx_async_run; 16675 async->callback = async_callback; 16676 async->cookie = async_cookie; 16677 async->args.mpls_port_delete_all.vpn = vpn; 16678 bcm_async_add((bcm_async_req_t *)async); 16679 } 16680 16681 void 16682 bcmx_mpls_port_get_async( 16683 bcm_vpn_t vpn, 16684 bcmx_mpls_port_t * mpls_port, 16685 bcmx_async_cb_t async_callback, 16686 void *async_cookie) 16687 { 16688 bcmx_async_req_t *async; 16689 16690 async = sal_alloc(sizeof(*async), "bcmx_async"); 16691 if (async == NULL) { 16692 if (async_callback != NULL) { 16693 (*async_callback)(async_cookie, BCM_E_MEMORY); 16694 } 16695 return; 16696 } 16697 async->next = NULL; 16698 async->type = BCMX_ASYNC_ENTRY_MPLS_PORT_GET; 16699 async->run = bcmx_async_run; 16700 async->callback = async_callback; 16701 async->cookie = async_cookie; 16702 async->args.mpls_port_get.vpn = vpn; 16703 async->args.mpls_port_get.mpls_port = mpls_port; 16704 bcm_async_add((bcm_async_req_t *)async); 16705 } 16706 16707 void 16708 bcmx_mpls_port_get_all_async( 16709 bcm_vpn_t vpn, 16710 int port_max, 16711 bcmx_mpls_port_t * port_array, 16712 int * port_count, 16713 bcmx_async_cb_t async_callback, 16714 void *async_cookie) 16715 { 16716 bcmx_async_req_t *async; 16717 16718 async = sal_alloc(sizeof(*async), "bcmx_async"); 16719 if (async == NULL) { 16720 if (async_callback != NULL) { 16721 (*async_callback)(async_cookie, BCM_E_MEMORY); 16722 } 16723 return; 16724 } 16725 async->next = NULL; 16726 async->type = BCMX_ASYNC_ENTRY_MPLS_PORT_GET_ALL; 16727 async->run = bcmx_async_run; 16728 async->callback = async_callback; 16729 async->cookie = async_cookie; 16730 async->args.mpls_port_get_all.vpn = vpn; 16731 async->args.mpls_port_get_all.port_max = port_max; 16732 async->args.mpls_port_get_all.port_array = port_array; 16733 async->args.mpls_port_get_all.port_count = port_count; 16734 bcm_async_add((bcm_async_req_t *)async); 16735 } 16736 16737 void 16738 bcmx_mpls_tunnel_initiator_clear_async( 16739 bcm_if_t intf, 16740 bcmx_async_cb_t async_callback, 16741 void *async_cookie) 16742 { 16743 bcmx_async_req_t *async; 16744 16745 async = sal_alloc(sizeof(*async), "bcmx_async"); 16746 if (async == NULL) { 16747 if (async_callback != NULL) { 16748 (*async_callback)(async_cookie, BCM_E_MEMORY); 16749 } 16750 return; 16751 } 16752 async->next = NULL; 16753 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_CLEAR; 16754 async->run = bcmx_async_run; 16755 async->callback = async_callback; 16756 async->cookie = async_cookie; 16757 async->args.mpls_tunnel_initiator_clear.intf = intf; 16758 bcm_async_add((bcm_async_req_t *)async); 16759 } 16760 16761 void 16762 bcmx_mpls_tunnel_initiator_clear_all_async( 16763 bcmx_async_cb_t async_callback, 16764 void *async_cookie) 16765 { 16766 bcmx_async_req_t *async; 16767 16768 async = sal_alloc(sizeof(*async), "bcmx_async"); 16769 if (async == NULL) { 16770 if (async_callback != NULL) { 16771 (*async_callback)(async_cookie, BCM_E_MEMORY); 16772 } 16773 return; 16774 } 16775 async->next = NULL; 16776 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_CLEAR_ALL; 16777 async->run = bcmx_async_run; 16778 async->callback = async_callback; 16779 async->cookie = async_cookie; 16780 bcm_async_add((bcm_async_req_t *)async); 16781 } 16782 16783 void 16784 bcmx_mpls_tunnel_initiator_get_async( 16785 bcm_if_t intf, 16786 int label_max, 16787 bcmx_mpls_egress_label_t * label_array, 16788 int * label_count, 16789 bcmx_async_cb_t async_callback, 16790 void *async_cookie) 16791 { 16792 bcmx_async_req_t *async; 16793 16794 async = sal_alloc(sizeof(*async), "bcmx_async"); 16795 if (async == NULL) { 16796 if (async_callback != NULL) { 16797 (*async_callback)(async_cookie, BCM_E_MEMORY); 16798 } 16799 return; 16800 } 16801 async->next = NULL; 16802 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_GET; 16803 async->run = bcmx_async_run; 16804 async->callback = async_callback; 16805 async->cookie = async_cookie; 16806 async->args.mpls_tunnel_initiator_get.intf = intf; 16807 async->args.mpls_tunnel_initiator_get.label_max = label_max; 16808 async->args.mpls_tunnel_initiator_get.label_array = label_array; 16809 async->args.mpls_tunnel_initiator_get.label_count = label_count; 16810 bcm_async_add((bcm_async_req_t *)async); 16811 } 16812 16813 void 16814 bcmx_mpls_tunnel_initiator_set_async( 16815 bcm_if_t intf, 16816 int num_labels, 16817 bcmx_mpls_egress_label_t * label_array, 16818 bcmx_async_cb_t async_callback, 16819 void *async_cookie) 16820 { 16821 bcmx_async_req_t *async; 16822 16823 async = sal_alloc(sizeof(*async), "bcmx_async"); 16824 if (async == NULL) { 16825 if (async_callback != NULL) { 16826 (*async_callback)(async_cookie, BCM_E_MEMORY); 16827 } 16828 return; 16829 } 16830 async->next = NULL; 16831 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_SET; 16832 async->run = bcmx_async_run; 16833 async->callback = async_callback; 16834 async->cookie = async_cookie; 16835 async->args.mpls_tunnel_initiator_set.intf = intf; 16836 async->args.mpls_tunnel_initiator_set.num_labels = num_labels; 16837 async->args.mpls_tunnel_initiator_set.label_array = label_array; 16838 bcm_async_add((bcm_async_req_t *)async); 16839 } 16840 16841 void 16842 bcmx_mpls_tunnel_switch_add_async( 16843 bcmx_mpls_tunnel_switch_t * info, 16844 bcmx_async_cb_t async_callback, 16845 void *async_cookie) 16846 { 16847 bcmx_async_req_t *async; 16848 16849 async = sal_alloc(sizeof(*async), "bcmx_async"); 16850 if (async == NULL) { 16851 if (async_callback != NULL) { 16852 (*async_callback)(async_cookie, BCM_E_MEMORY); 16853 } 16854 return; 16855 } 16856 async->next = NULL; 16857 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_ADD; 16858 async->run = bcmx_async_run; 16859 async->callback = async_callback; 16860 async->cookie = async_cookie; 16861 async->args.mpls_tunnel_switch_add.info = info; 16862 bcm_async_add((bcm_async_req_t *)async); 16863 } 16864 16865 void 16866 bcmx_mpls_tunnel_switch_delete_async( 16867 bcmx_mpls_tunnel_switch_t * info, 16868 bcmx_async_cb_t async_callback, 16869 void *async_cookie) 16870 { 16871 bcmx_async_req_t *async; 16872 16873 async = sal_alloc(sizeof(*async), "bcmx_async"); 16874 if (async == NULL) { 16875 if (async_callback != NULL) { 16876 (*async_callback)(async_cookie, BCM_E_MEMORY); 16877 } 16878 return; 16879 } 16880 async->next = NULL; 16881 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_DELETE; 16882 async->run = bcmx_async_run; 16883 async->callback = async_callback; 16884 async->cookie = async_cookie; 16885 async->args.mpls_tunnel_switch_delete.info = info; 16886 bcm_async_add((bcm_async_req_t *)async); 16887 } 16888 16889 void 16890 bcmx_mpls_tunnel_switch_delete_all_async( 16891 bcmx_async_cb_t async_callback, 16892 void *async_cookie) 16893 { 16894 bcmx_async_req_t *async; 16895 16896 async = sal_alloc(sizeof(*async), "bcmx_async"); 16897 if (async == NULL) { 16898 if (async_callback != NULL) { 16899 (*async_callback)(async_cookie, BCM_E_MEMORY); 16900 } 16901 return; 16902 } 16903 async->next = NULL; 16904 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_DELETE_ALL; 16905 async->run = bcmx_async_run; 16906 async->callback = async_callback; 16907 async->cookie = async_cookie; 16908 bcm_async_add((bcm_async_req_t *)async); 16909 } 16910 16911 void 16912 bcmx_mpls_tunnel_switch_get_async( 16913 bcmx_mpls_tunnel_switch_t * info, 16914 bcmx_async_cb_t async_callback, 16915 void *async_cookie) 16916 { 16917 bcmx_async_req_t *async; 16918 16919 async = sal_alloc(sizeof(*async), "bcmx_async"); 16920 if (async == NULL) { 16921 if (async_callback != NULL) { 16922 (*async_callback)(async_cookie, BCM_E_MEMORY); 16923 } 16924 return; 16925 } 16926 async->next = NULL; 16927 async->type = BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_GET; 16928 async->run = bcmx_async_run; 16929 async->callback = async_callback; 16930 async->cookie = async_cookie; 16931 async->args.mpls_tunnel_switch_get.info = info; 16932 bcm_async_add((bcm_async_req_t *)async); 16933 } 16934 16935 void 16936 bcmx_mpls_vpn_id_create_async( 16937 bcmx_mpls_vpn_config_t * info, 16938 bcmx_async_cb_t async_callback, 16939 void *async_cookie) 16940 { 16941 bcmx_async_req_t *async; 16942 16943 async = sal_alloc(sizeof(*async), "bcmx_async"); 16944 if (async == NULL) { 16945 if (async_callback != NULL) { 16946 (*async_callback)(async_cookie, BCM_E_MEMORY); 16947 } 16948 return; 16949 } 16950 async->next = NULL; 16951 async->type = BCMX_ASYNC_ENTRY_MPLS_VPN_ID_CREATE; 16952 async->run = bcmx_async_run; 16953 async->callback = async_callback; 16954 async->cookie = async_cookie; 16955 async->args.mpls_vpn_id_create.info = info; 16956 bcm_async_add((bcm_async_req_t *)async); 16957 } 16958 16959 void 16960 bcmx_mpls_vpn_id_destroy_async( 16961 bcm_vpn_t vpn, 16962 bcmx_async_cb_t async_callback, 16963 void *async_cookie) 16964 { 16965 bcmx_async_req_t *async; 16966 16967 async = sal_alloc(sizeof(*async), "bcmx_async"); 16968 if (async == NULL) { 16969 if (async_callback != NULL) { 16970 (*async_callback)(async_cookie, BCM_E_MEMORY); 16971 } 16972 return; 16973 } 16974 async->next = NULL; 16975 async->type = BCMX_ASYNC_ENTRY_MPLS_VPN_ID_DESTROY; 16976 async->run = bcmx_async_run; 16977 async->callback = async_callback; 16978 async->cookie = async_cookie; 16979 async->args.mpls_vpn_id_destroy.vpn = vpn; 16980 bcm_async_add((bcm_async_req_t *)async); 16981 } 16982 16983 void 16984 bcmx_mpls_vpn_id_destroy_all_async( 16985 bcmx_async_cb_t async_callback, 16986 void *async_cookie) 16987 { 16988 bcmx_async_req_t *async; 16989 16990 async = sal_alloc(sizeof(*async), "bcmx_async"); 16991 if (async == NULL) { 16992 if (async_callback != NULL) { 16993 (*async_callback)(async_cookie, BCM_E_MEMORY); 16994 } 16995 return; 16996 } 16997 async->next = NULL; 16998 async->type = BCMX_ASYNC_ENTRY_MPLS_VPN_ID_DESTROY_ALL; 16999 async->run = bcmx_async_run; 17000 async->callback = async_callback; 17001 async->cookie = async_cookie; 17002 bcm_async_add((bcm_async_req_t *)async); 17003 } 17004 17005 void 17006 bcmx_mpls_vpn_id_get_async( 17007 bcm_vpn_t vpn, 17008 bcmx_mpls_vpn_config_t * info, 17009 bcmx_async_cb_t async_callback, 17010 void *async_cookie) 17011 { 17012 bcmx_async_req_t *async; 17013 17014 async = sal_alloc(sizeof(*async), "bcmx_async"); 17015 if (async == NULL) { 17016 if (async_callback != NULL) { 17017 (*async_callback)(async_cookie, BCM_E_MEMORY); 17018 } 17019 return; 17020 } 17021 async->next = NULL; 17022 async->type = BCMX_ASYNC_ENTRY_MPLS_VPN_ID_GET; 17023 async->run = bcmx_async_run; 17024 async->callback = async_callback; 17025 async->cookie = async_cookie; 17026 async->args.mpls_vpn_id_get.vpn = vpn; 17027 async->args.mpls_vpn_id_get.info = info; 17028 bcm_async_add((bcm_async_req_t *)async); 17029 } 17030 17031 #endif /* INCLUDE_L3 */ 17032 17033 void 17034 bcmx_multicast_control_get_async( 17035 bcm_multicast_t group, 17036 bcm_multicast_control_t type, 17037 int * arg, 17038 bcmx_async_cb_t async_callback, 17039 void *async_cookie) 17040 { 17041 bcmx_async_req_t *async; 17042 17043 async = sal_alloc(sizeof(*async), "bcmx_async"); 17044 if (async == NULL) { 17045 if (async_callback != NULL) { 17046 (*async_callback)(async_cookie, BCM_E_MEMORY); 17047 } 17048 return; 17049 } 17050 async->next = NULL; 17051 async->type = BCMX_ASYNC_ENTRY_MULTICAST_CONTROL_GET; 17052 async->run = bcmx_async_run; 17053 async->callback = async_callback; 17054 async->cookie = async_cookie; 17055 async->args.multicast_control_get.group = group; 17056 async->args.multicast_control_get.type = type; 17057 async->args.multicast_control_get.arg = arg; 17058 bcm_async_add((bcm_async_req_t *)async); 17059 } 17060 17061 void 17062 bcmx_multicast_control_set_async( 17063 bcm_multicast_t group, 17064 bcm_multicast_control_t type, 17065 int arg, 17066 bcmx_async_cb_t async_callback, 17067 void *async_cookie) 17068 { 17069 bcmx_async_req_t *async; 17070 17071 async = sal_alloc(sizeof(*async), "bcmx_async"); 17072 if (async == NULL) { 17073 if (async_callback != NULL) { 17074 (*async_callback)(async_cookie, BCM_E_MEMORY); 17075 } 17076 return; 17077 } 17078 async->next = NULL; 17079 async->type = BCMX_ASYNC_ENTRY_MULTICAST_CONTROL_SET; 17080 async->run = bcmx_async_run; 17081 async->callback = async_callback; 17082 async->cookie = async_cookie; 17083 async->args.multicast_control_set.group = group; 17084 async->args.multicast_control_set.type = type; 17085 async->args.multicast_control_set.arg = arg; 17086 bcm_async_add((bcm_async_req_t *)async); 17087 } 17088 17089 void 17090 bcmx_multicast_create_async( 17091 uint32 flags, 17092 bcm_multicast_t * group, 17093 bcmx_async_cb_t async_callback, 17094 void *async_cookie) 17095 { 17096 bcmx_async_req_t *async; 17097 17098 async = sal_alloc(sizeof(*async), "bcmx_async"); 17099 if (async == NULL) { 17100 if (async_callback != NULL) { 17101 (*async_callback)(async_cookie, BCM_E_MEMORY); 17102 } 17103 return; 17104 } 17105 async->next = NULL; 17106 async->type = BCMX_ASYNC_ENTRY_MULTICAST_CREATE; 17107 async->run = bcmx_async_run; 17108 async->callback = async_callback; 17109 async->cookie = async_cookie; 17110 async->args.multicast_create.flags = flags; 17111 async->args.multicast_create.group = group; 17112 bcm_async_add((bcm_async_req_t *)async); 17113 } 17114 17115 void 17116 bcmx_multicast_destroy_async( 17117 bcm_multicast_t group, 17118 bcmx_async_cb_t async_callback, 17119 void *async_cookie) 17120 { 17121 bcmx_async_req_t *async; 17122 17123 async = sal_alloc(sizeof(*async), "bcmx_async"); 17124 if (async == NULL) { 17125 if (async_callback != NULL) { 17126 (*async_callback)(async_cookie, BCM_E_MEMORY); 17127 } 17128 return; 17129 } 17130 async->next = NULL; 17131 async->type = BCMX_ASYNC_ENTRY_MULTICAST_DESTROY; 17132 async->run = bcmx_async_run; 17133 async->callback = async_callback; 17134 async->cookie = async_cookie; 17135 async->args.multicast_destroy.group = group; 17136 bcm_async_add((bcm_async_req_t *)async); 17137 } 17138 17139 void 17140 bcmx_multicast_detach_async( 17141 bcmx_async_cb_t async_callback, 17142 void *async_cookie) 17143 { 17144 bcmx_async_req_t *async; 17145 17146 async = sal_alloc(sizeof(*async), "bcmx_async"); 17147 if (async == NULL) { 17148 if (async_callback != NULL) { 17149 (*async_callback)(async_cookie, BCM_E_MEMORY); 17150 } 17151 return; 17152 } 17153 async->next = NULL; 17154 async->type = BCMX_ASYNC_ENTRY_MULTICAST_DETACH; 17155 async->run = bcmx_async_run; 17156 async->callback = async_callback; 17157 async->cookie = async_cookie; 17158 bcm_async_add((bcm_async_req_t *)async); 17159 } 17160 17161 void 17162 bcmx_multicast_egress_add_async( 17163 bcm_multicast_t group, 17164 bcm_gport_t port, 17165 bcm_if_t encap_id, 17166 bcmx_async_cb_t async_callback, 17167 void *async_cookie) 17168 { 17169 bcmx_async_req_t *async; 17170 17171 async = sal_alloc(sizeof(*async), "bcmx_async"); 17172 if (async == NULL) { 17173 if (async_callback != NULL) { 17174 (*async_callback)(async_cookie, BCM_E_MEMORY); 17175 } 17176 return; 17177 } 17178 async->next = NULL; 17179 async->type = BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_ADD; 17180 async->run = bcmx_async_run; 17181 async->callback = async_callback; 17182 async->cookie = async_cookie; 17183 async->args.multicast_egress_add.group = group; 17184 async->args.multicast_egress_add.port = port; 17185 async->args.multicast_egress_add.encap_id = encap_id; 17186 bcm_async_add((bcm_async_req_t *)async); 17187 } 17188 17189 void 17190 bcmx_multicast_egress_delete_async( 17191 bcm_multicast_t group, 17192 bcm_gport_t port, 17193 bcm_if_t encap_id, 17194 bcmx_async_cb_t async_callback, 17195 void *async_cookie) 17196 { 17197 bcmx_async_req_t *async; 17198 17199 async = sal_alloc(sizeof(*async), "bcmx_async"); 17200 if (async == NULL) { 17201 if (async_callback != NULL) { 17202 (*async_callback)(async_cookie, BCM_E_MEMORY); 17203 } 17204 return; 17205 } 17206 async->next = NULL; 17207 async->type = BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_DELETE; 17208 async->run = bcmx_async_run; 17209 async->callback = async_callback; 17210 async->cookie = async_cookie; 17211 async->args.multicast_egress_delete.group = group; 17212 async->args.multicast_egress_delete.port = port; 17213 async->args.multicast_egress_delete.encap_id = encap_id; 17214 bcm_async_add((bcm_async_req_t *)async); 17215 } 17216 17217 void 17218 bcmx_multicast_egress_delete_all_async( 17219 bcm_multicast_t group, 17220 bcmx_async_cb_t async_callback, 17221 void *async_cookie) 17222 { 17223 bcmx_async_req_t *async; 17224 17225 async = sal_alloc(sizeof(*async), "bcmx_async"); 17226 if (async == NULL) { 17227 if (async_callback != NULL) { 17228 (*async_callback)(async_cookie, BCM_E_MEMORY); 17229 } 17230 return; 17231 } 17232 async->next = NULL; 17233 async->type = BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_DELETE_ALL; 17234 async->run = bcmx_async_run; 17235 async->callback = async_callback; 17236 async->cookie = async_cookie; 17237 async->args.multicast_egress_delete_all.group = group; 17238 bcm_async_add((bcm_async_req_t *)async); 17239 } 17240 17241 void 17242 bcmx_multicast_egress_get_async( 17243 bcm_multicast_t group, 17244 int port_max, 17245 bcm_gport_t * port_array, 17246 bcm_if_t * encap_id_array, 17247 int * port_count, 17248 bcmx_async_cb_t async_callback, 17249 void *async_cookie) 17250 { 17251 bcmx_async_req_t *async; 17252 17253 async = sal_alloc(sizeof(*async), "bcmx_async"); 17254 if (async == NULL) { 17255 if (async_callback != NULL) { 17256 (*async_callback)(async_cookie, BCM_E_MEMORY); 17257 } 17258 return; 17259 } 17260 async->next = NULL; 17261 async->type = BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_GET; 17262 async->run = bcmx_async_run; 17263 async->callback = async_callback; 17264 async->cookie = async_cookie; 17265 async->args.multicast_egress_get.group = group; 17266 async->args.multicast_egress_get.port_max = port_max; 17267 async->args.multicast_egress_get.port_array = port_array; 17268 async->args.multicast_egress_get.encap_id_array = encap_id_array; 17269 async->args.multicast_egress_get.port_count = port_count; 17270 bcm_async_add((bcm_async_req_t *)async); 17271 } 17272 17273 void 17274 bcmx_multicast_egress_set_async( 17275 bcm_multicast_t group, 17276 int port_count, 17277 bcm_gport_t * port_array, 17278 bcm_if_t * encap_id_array, 17279 bcmx_async_cb_t async_callback, 17280 void *async_cookie) 17281 { 17282 bcmx_async_req_t *async; 17283 17284 async = sal_alloc(sizeof(*async), "bcmx_async"); 17285 if (async == NULL) { 17286 if (async_callback != NULL) { 17287 (*async_callback)(async_cookie, BCM_E_MEMORY); 17288 } 17289 return; 17290 } 17291 async->next = NULL; 17292 async->type = BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_SET; 17293 async->run = bcmx_async_run; 17294 async->callback = async_callback; 17295 async->cookie = async_cookie; 17296 async->args.multicast_egress_set.group = group; 17297 async->args.multicast_egress_set.port_count = port_count; 17298 async->args.multicast_egress_set.port_array = port_array; 17299 async->args.multicast_egress_set.encap_id_array = encap_id_array; 17300 bcm_async_add((bcm_async_req_t *)async); 17301 } 17302 17303 void 17304 bcmx_multicast_group_get_async( 17305 bcm_multicast_t group, 17306 uint32 * flags, 17307 bcmx_async_cb_t async_callback, 17308 void *async_cookie) 17309 { 17310 bcmx_async_req_t *async; 17311 17312 async = sal_alloc(sizeof(*async), "bcmx_async"); 17313 if (async == NULL) { 17314 if (async_callback != NULL) { 17315 (*async_callback)(async_cookie, BCM_E_MEMORY); 17316 } 17317 return; 17318 } 17319 async->next = NULL; 17320 async->type = BCMX_ASYNC_ENTRY_MULTICAST_GROUP_GET; 17321 async->run = bcmx_async_run; 17322 async->callback = async_callback; 17323 async->cookie = async_cookie; 17324 async->args.multicast_group_get.group = group; 17325 async->args.multicast_group_get.flags = flags; 17326 bcm_async_add((bcm_async_req_t *)async); 17327 } 17328 17329 void 17330 bcmx_multicast_init_async( 17331 bcmx_async_cb_t async_callback, 17332 void *async_cookie) 17333 { 17334 bcmx_async_req_t *async; 17335 17336 async = sal_alloc(sizeof(*async), "bcmx_async"); 17337 if (async == NULL) { 17338 if (async_callback != NULL) { 17339 (*async_callback)(async_cookie, BCM_E_MEMORY); 17340 } 17341 return; 17342 } 17343 async->next = NULL; 17344 async->type = BCMX_ASYNC_ENTRY_MULTICAST_INIT; 17345 async->run = bcmx_async_run; 17346 async->callback = async_callback; 17347 async->cookie = async_cookie; 17348 bcm_async_add((bcm_async_req_t *)async); 17349 } 17350 17351 void 17352 bcmx_multicast_l2_encap_get_async( 17353 bcm_multicast_t group, 17354 bcm_gport_t port, 17355 bcm_vlan_t vlan, 17356 bcm_if_t * encap_id, 17357 bcmx_async_cb_t async_callback, 17358 void *async_cookie) 17359 { 17360 bcmx_async_req_t *async; 17361 17362 async = sal_alloc(sizeof(*async), "bcmx_async"); 17363 if (async == NULL) { 17364 if (async_callback != NULL) { 17365 (*async_callback)(async_cookie, BCM_E_MEMORY); 17366 } 17367 return; 17368 } 17369 async->next = NULL; 17370 async->type = BCMX_ASYNC_ENTRY_MULTICAST_L2_ENCAP_GET; 17371 async->run = bcmx_async_run; 17372 async->callback = async_callback; 17373 async->cookie = async_cookie; 17374 async->args.multicast_l2_encap_get.group = group; 17375 async->args.multicast_l2_encap_get.port = port; 17376 async->args.multicast_l2_encap_get.vlan = vlan; 17377 async->args.multicast_l2_encap_get.encap_id = encap_id; 17378 bcm_async_add((bcm_async_req_t *)async); 17379 } 17380 17381 void 17382 bcmx_multicast_l3_encap_get_async( 17383 bcm_multicast_t group, 17384 bcm_gport_t port, 17385 bcm_if_t intf, 17386 bcm_if_t * encap_id, 17387 bcmx_async_cb_t async_callback, 17388 void *async_cookie) 17389 { 17390 bcmx_async_req_t *async; 17391 17392 async = sal_alloc(sizeof(*async), "bcmx_async"); 17393 if (async == NULL) { 17394 if (async_callback != NULL) { 17395 (*async_callback)(async_cookie, BCM_E_MEMORY); 17396 } 17397 return; 17398 } 17399 async->next = NULL; 17400 async->type = BCMX_ASYNC_ENTRY_MULTICAST_L3_ENCAP_GET; 17401 async->run = bcmx_async_run; 17402 async->callback = async_callback; 17403 async->cookie = async_cookie; 17404 async->args.multicast_l3_encap_get.group = group; 17405 async->args.multicast_l3_encap_get.port = port; 17406 async->args.multicast_l3_encap_get.intf = intf; 17407 async->args.multicast_l3_encap_get.encap_id = encap_id; 17408 bcm_async_add((bcm_async_req_t *)async); 17409 } 17410 17411 void 17412 bcmx_multicast_mim_encap_get_async( 17413 bcm_multicast_t group, 17414 bcm_gport_t port, 17415 bcm_gport_t mim_port_id, 17416 bcm_if_t * encap_id, 17417 bcmx_async_cb_t async_callback, 17418 void *async_cookie) 17419 { 17420 bcmx_async_req_t *async; 17421 17422 async = sal_alloc(sizeof(*async), "bcmx_async"); 17423 if (async == NULL) { 17424 if (async_callback != NULL) { 17425 (*async_callback)(async_cookie, BCM_E_MEMORY); 17426 } 17427 return; 17428 } 17429 async->next = NULL; 17430 async->type = BCMX_ASYNC_ENTRY_MULTICAST_MIM_ENCAP_GET; 17431 async->run = bcmx_async_run; 17432 async->callback = async_callback; 17433 async->cookie = async_cookie; 17434 async->args.multicast_mim_encap_get.group = group; 17435 async->args.multicast_mim_encap_get.port = port; 17436 async->args.multicast_mim_encap_get.mim_port_id = mim_port_id; 17437 async->args.multicast_mim_encap_get.encap_id = encap_id; 17438 bcm_async_add((bcm_async_req_t *)async); 17439 } 17440 17441 void 17442 bcmx_multicast_niv_encap_get_async( 17443 bcm_multicast_t group, 17444 bcm_gport_t port, 17445 bcm_gport_t niv_port_id, 17446 bcm_if_t * encap_id, 17447 bcmx_async_cb_t async_callback, 17448 void *async_cookie) 17449 { 17450 bcmx_async_req_t *async; 17451 17452 async = sal_alloc(sizeof(*async), "bcmx_async"); 17453 if (async == NULL) { 17454 if (async_callback != NULL) { 17455 (*async_callback)(async_cookie, BCM_E_MEMORY); 17456 } 17457 return; 17458 } 17459 async->next = NULL; 17460 async->type = BCMX_ASYNC_ENTRY_MULTICAST_NIV_ENCAP_GET; 17461 async->run = bcmx_async_run; 17462 async->callback = async_callback; 17463 async->cookie = async_cookie; 17464 async->args.multicast_niv_encap_get.group = group; 17465 async->args.multicast_niv_encap_get.port = port; 17466 async->args.multicast_niv_encap_get.niv_port_id = niv_port_id; 17467 async->args.multicast_niv_encap_get.encap_id = encap_id; 17468 bcm_async_add((bcm_async_req_t *)async); 17469 } 17470 17471 void 17472 bcmx_multicast_repl_get_async( 17473 int index, 17474 bcmx_lport_t port, 17475 bcm_vlan_vector_t vlan_vec, 17476 bcmx_async_cb_t async_callback, 17477 void *async_cookie) 17478 { 17479 bcmx_async_req_t *async; 17480 17481 async = sal_alloc(sizeof(*async), "bcmx_async"); 17482 if (async == NULL) { 17483 if (async_callback != NULL) { 17484 (*async_callback)(async_cookie, BCM_E_MEMORY); 17485 } 17486 return; 17487 } 17488 async->next = NULL; 17489 async->type = BCMX_ASYNC_ENTRY_MULTICAST_REPL_GET; 17490 async->run = bcmx_async_run; 17491 async->callback = async_callback; 17492 async->cookie = async_cookie; 17493 async->args.multicast_repl_get.index = index; 17494 async->args.multicast_repl_get.port = port; 17495 async->args.multicast_repl_get.vlan_vec = (uint32 *)vlan_vec; 17496 bcm_async_add((bcm_async_req_t *)async); 17497 } 17498 17499 void 17500 bcmx_multicast_repl_set_async( 17501 int index, 17502 bcmx_lport_t port, 17503 bcm_vlan_vector_t vlan_vec, 17504 bcmx_async_cb_t async_callback, 17505 void *async_cookie) 17506 { 17507 bcmx_async_req_t *async; 17508 17509 async = sal_alloc(sizeof(*async), "bcmx_async"); 17510 if (async == NULL) { 17511 if (async_callback != NULL) { 17512 (*async_callback)(async_cookie, BCM_E_MEMORY); 17513 } 17514 return; 17515 } 17516 async->next = NULL; 17517 async->type = BCMX_ASYNC_ENTRY_MULTICAST_REPL_SET; 17518 async->run = bcmx_async_run; 17519 async->callback = async_callback; 17520 async->cookie = async_cookie; 17521 async->args.multicast_repl_set.index = index; 17522 async->args.multicast_repl_set.port = port; 17523 async->args.multicast_repl_set.vlan_vec = (uint32 *)vlan_vec; 17524 bcm_async_add((bcm_async_req_t *)async); 17525 } 17526 17527 void 17528 bcmx_multicast_subport_encap_get_async( 17529 bcm_multicast_t group, 17530 bcm_gport_t port, 17531 bcm_gport_t subport, 17532 bcm_if_t * encap_id, 17533 bcmx_async_cb_t async_callback, 17534 void *async_cookie) 17535 { 17536 bcmx_async_req_t *async; 17537 17538 async = sal_alloc(sizeof(*async), "bcmx_async"); 17539 if (async == NULL) { 17540 if (async_callback != NULL) { 17541 (*async_callback)(async_cookie, BCM_E_MEMORY); 17542 } 17543 return; 17544 } 17545 async->next = NULL; 17546 async->type = BCMX_ASYNC_ENTRY_MULTICAST_SUBPORT_ENCAP_GET; 17547 async->run = bcmx_async_run; 17548 async->callback = async_callback; 17549 async->cookie = async_cookie; 17550 async->args.multicast_subport_encap_get.group = group; 17551 async->args.multicast_subport_encap_get.port = port; 17552 async->args.multicast_subport_encap_get.subport = subport; 17553 async->args.multicast_subport_encap_get.encap_id = encap_id; 17554 bcm_async_add((bcm_async_req_t *)async); 17555 } 17556 17557 void 17558 bcmx_multicast_trill_encap_get_async( 17559 bcm_multicast_t group, 17560 bcm_gport_t port, 17561 bcm_if_t intf, 17562 bcm_if_t * encap_id, 17563 bcmx_async_cb_t async_callback, 17564 void *async_cookie) 17565 { 17566 bcmx_async_req_t *async; 17567 17568 async = sal_alloc(sizeof(*async), "bcmx_async"); 17569 if (async == NULL) { 17570 if (async_callback != NULL) { 17571 (*async_callback)(async_cookie, BCM_E_MEMORY); 17572 } 17573 return; 17574 } 17575 async->next = NULL; 17576 async->type = BCMX_ASYNC_ENTRY_MULTICAST_TRILL_ENCAP_GET; 17577 async->run = bcmx_async_run; 17578 async->callback = async_callback; 17579 async->cookie = async_cookie; 17580 async->args.multicast_trill_encap_get.group = group; 17581 async->args.multicast_trill_encap_get.port = port; 17582 async->args.multicast_trill_encap_get.intf = intf; 17583 async->args.multicast_trill_encap_get.encap_id = encap_id; 17584 bcm_async_add((bcm_async_req_t *)async); 17585 } 17586 17587 void 17588 bcmx_multicast_vlan_encap_get_async( 17589 bcm_multicast_t group, 17590 bcm_gport_t port, 17591 bcm_gport_t vlan_port_id, 17592 bcm_if_t * encap_id, 17593 bcmx_async_cb_t async_callback, 17594 void *async_cookie) 17595 { 17596 bcmx_async_req_t *async; 17597 17598 async = sal_alloc(sizeof(*async), "bcmx_async"); 17599 if (async == NULL) { 17600 if (async_callback != NULL) { 17601 (*async_callback)(async_cookie, BCM_E_MEMORY); 17602 } 17603 return; 17604 } 17605 async->next = NULL; 17606 async->type = BCMX_ASYNC_ENTRY_MULTICAST_VLAN_ENCAP_GET; 17607 async->run = bcmx_async_run; 17608 async->callback = async_callback; 17609 async->cookie = async_cookie; 17610 async->args.multicast_vlan_encap_get.group = group; 17611 async->args.multicast_vlan_encap_get.port = port; 17612 async->args.multicast_vlan_encap_get.vlan_port_id = vlan_port_id; 17613 async->args.multicast_vlan_encap_get.encap_id = encap_id; 17614 bcm_async_add((bcm_async_req_t *)async); 17615 } 17616 17617 void 17618 bcmx_multicast_vpls_encap_get_async( 17619 bcm_multicast_t group, 17620 bcm_gport_t port, 17621 bcm_gport_t mpls_port_id, 17622 bcm_if_t * encap_id, 17623 bcmx_async_cb_t async_callback, 17624 void *async_cookie) 17625 { 17626 bcmx_async_req_t *async; 17627 17628 async = sal_alloc(sizeof(*async), "bcmx_async"); 17629 if (async == NULL) { 17630 if (async_callback != NULL) { 17631 (*async_callback)(async_cookie, BCM_E_MEMORY); 17632 } 17633 return; 17634 } 17635 async->next = NULL; 17636 async->type = BCMX_ASYNC_ENTRY_MULTICAST_VPLS_ENCAP_GET; 17637 async->run = bcmx_async_run; 17638 async->callback = async_callback; 17639 async->cookie = async_cookie; 17640 async->args.multicast_vpls_encap_get.group = group; 17641 async->args.multicast_vpls_encap_get.port = port; 17642 async->args.multicast_vpls_encap_get.mpls_port_id = mpls_port_id; 17643 async->args.multicast_vpls_encap_get.encap_id = encap_id; 17644 bcm_async_add((bcm_async_req_t *)async); 17645 } 17646 17647 void 17648 bcmx_multicast_wlan_encap_get_async( 17649 bcm_multicast_t group, 17650 bcm_gport_t port, 17651 bcm_gport_t wlan_port_id, 17652 bcm_if_t * encap_id, 17653 bcmx_async_cb_t async_callback, 17654 void *async_cookie) 17655 { 17656 bcmx_async_req_t *async; 17657 17658 async = sal_alloc(sizeof(*async), "bcmx_async"); 17659 if (async == NULL) { 17660 if (async_callback != NULL) { 17661 (*async_callback)(async_cookie, BCM_E_MEMORY); 17662 } 17663 return; 17664 } 17665 async->next = NULL; 17666 async->type = BCMX_ASYNC_ENTRY_MULTICAST_WLAN_ENCAP_GET; 17667 async->run = bcmx_async_run; 17668 async->callback = async_callback; 17669 async->cookie = async_cookie; 17670 async->args.multicast_wlan_encap_get.group = group; 17671 async->args.multicast_wlan_encap_get.port = port; 17672 async->args.multicast_wlan_encap_get.wlan_port_id = wlan_port_id; 17673 async->args.multicast_wlan_encap_get.encap_id = encap_id; 17674 bcm_async_add((bcm_async_req_t *)async); 17675 } 17676 17677 #ifdef INCLUDE_L3 17678 17679 void 17680 bcmx_niv_cleanup_async( 17681 bcmx_async_cb_t async_callback, 17682 void *async_cookie) 17683 { 17684 bcmx_async_req_t *async; 17685 17686 async = sal_alloc(sizeof(*async), "bcmx_async"); 17687 if (async == NULL) { 17688 if (async_callback != NULL) { 17689 (*async_callback)(async_cookie, BCM_E_MEMORY); 17690 } 17691 return; 17692 } 17693 async->next = NULL; 17694 async->type = BCMX_ASYNC_ENTRY_NIV_CLEANUP; 17695 async->run = bcmx_async_run; 17696 async->callback = async_callback; 17697 async->cookie = async_cookie; 17698 bcm_async_add((bcm_async_req_t *)async); 17699 } 17700 17701 void 17702 bcmx_niv_forward_add_async( 17703 bcmx_niv_forward_t * iv_fwd_entry, 17704 bcmx_async_cb_t async_callback, 17705 void *async_cookie) 17706 { 17707 bcmx_async_req_t *async; 17708 17709 async = sal_alloc(sizeof(*async), "bcmx_async"); 17710 if (async == NULL) { 17711 if (async_callback != NULL) { 17712 (*async_callback)(async_cookie, BCM_E_MEMORY); 17713 } 17714 return; 17715 } 17716 async->next = NULL; 17717 async->type = BCMX_ASYNC_ENTRY_NIV_FORWARD_ADD; 17718 async->run = bcmx_async_run; 17719 async->callback = async_callback; 17720 async->cookie = async_cookie; 17721 async->args.niv_forward_add.iv_fwd_entry = iv_fwd_entry; 17722 bcm_async_add((bcm_async_req_t *)async); 17723 } 17724 17725 void 17726 bcmx_niv_forward_delete_async( 17727 bcmx_niv_forward_t * iv_fwd_entry, 17728 bcmx_async_cb_t async_callback, 17729 void *async_cookie) 17730 { 17731 bcmx_async_req_t *async; 17732 17733 async = sal_alloc(sizeof(*async), "bcmx_async"); 17734 if (async == NULL) { 17735 if (async_callback != NULL) { 17736 (*async_callback)(async_cookie, BCM_E_MEMORY); 17737 } 17738 return; 17739 } 17740 async->next = NULL; 17741 async->type = BCMX_ASYNC_ENTRY_NIV_FORWARD_DELETE; 17742 async->run = bcmx_async_run; 17743 async->callback = async_callback; 17744 async->cookie = async_cookie; 17745 async->args.niv_forward_delete.iv_fwd_entry = iv_fwd_entry; 17746 bcm_async_add((bcm_async_req_t *)async); 17747 } 17748 17749 void 17750 bcmx_niv_forward_delete_all_async( 17751 bcmx_async_cb_t async_callback, 17752 void *async_cookie) 17753 { 17754 bcmx_async_req_t *async; 17755 17756 async = sal_alloc(sizeof(*async), "bcmx_async"); 17757 if (async == NULL) { 17758 if (async_callback != NULL) { 17759 (*async_callback)(async_cookie, BCM_E_MEMORY); 17760 } 17761 return; 17762 } 17763 async->next = NULL; 17764 async->type = BCMX_ASYNC_ENTRY_NIV_FORWARD_DELETE_ALL; 17765 async->run = bcmx_async_run; 17766 async->callback = async_callback; 17767 async->cookie = async_cookie; 17768 bcm_async_add((bcm_async_req_t *)async); 17769 } 17770 17771 void 17772 bcmx_niv_forward_get_async( 17773 bcmx_niv_forward_t * iv_fwd_entry, 17774 bcmx_async_cb_t async_callback, 17775 void *async_cookie) 17776 { 17777 bcmx_async_req_t *async; 17778 17779 async = sal_alloc(sizeof(*async), "bcmx_async"); 17780 if (async == NULL) { 17781 if (async_callback != NULL) { 17782 (*async_callback)(async_cookie, BCM_E_MEMORY); 17783 } 17784 return; 17785 } 17786 async->next = NULL; 17787 async->type = BCMX_ASYNC_ENTRY_NIV_FORWARD_GET; 17788 async->run = bcmx_async_run; 17789 async->callback = async_callback; 17790 async->cookie = async_cookie; 17791 async->args.niv_forward_get.iv_fwd_entry = iv_fwd_entry; 17792 bcm_async_add((bcm_async_req_t *)async); 17793 } 17794 17795 void 17796 bcmx_niv_init_async( 17797 bcmx_async_cb_t async_callback, 17798 void *async_cookie) 17799 { 17800 bcmx_async_req_t *async; 17801 17802 async = sal_alloc(sizeof(*async), "bcmx_async"); 17803 if (async == NULL) { 17804 if (async_callback != NULL) { 17805 (*async_callback)(async_cookie, BCM_E_MEMORY); 17806 } 17807 return; 17808 } 17809 async->next = NULL; 17810 async->type = BCMX_ASYNC_ENTRY_NIV_INIT; 17811 async->run = bcmx_async_run; 17812 async->callback = async_callback; 17813 async->cookie = async_cookie; 17814 bcm_async_add((bcm_async_req_t *)async); 17815 } 17816 17817 void 17818 bcmx_niv_port_add_async( 17819 bcmx_niv_port_t * niv_port, 17820 bcmx_async_cb_t async_callback, 17821 void *async_cookie) 17822 { 17823 bcmx_async_req_t *async; 17824 17825 async = sal_alloc(sizeof(*async), "bcmx_async"); 17826 if (async == NULL) { 17827 if (async_callback != NULL) { 17828 (*async_callback)(async_cookie, BCM_E_MEMORY); 17829 } 17830 return; 17831 } 17832 async->next = NULL; 17833 async->type = BCMX_ASYNC_ENTRY_NIV_PORT_ADD; 17834 async->run = bcmx_async_run; 17835 async->callback = async_callback; 17836 async->cookie = async_cookie; 17837 async->args.niv_port_add.niv_port = niv_port; 17838 bcm_async_add((bcm_async_req_t *)async); 17839 } 17840 17841 void 17842 bcmx_niv_port_delete_async( 17843 bcm_gport_t niv_port_id, 17844 bcmx_async_cb_t async_callback, 17845 void *async_cookie) 17846 { 17847 bcmx_async_req_t *async; 17848 17849 async = sal_alloc(sizeof(*async), "bcmx_async"); 17850 if (async == NULL) { 17851 if (async_callback != NULL) { 17852 (*async_callback)(async_cookie, BCM_E_MEMORY); 17853 } 17854 return; 17855 } 17856 async->next = NULL; 17857 async->type = BCMX_ASYNC_ENTRY_NIV_PORT_DELETE; 17858 async->run = bcmx_async_run; 17859 async->callback = async_callback; 17860 async->cookie = async_cookie; 17861 async->args.niv_port_delete.niv_port_id = niv_port_id; 17862 bcm_async_add((bcm_async_req_t *)async); 17863 } 17864 17865 void 17866 bcmx_niv_port_delete_all_async( 17867 bcmx_async_cb_t async_callback, 17868 void *async_cookie) 17869 { 17870 bcmx_async_req_t *async; 17871 17872 async = sal_alloc(sizeof(*async), "bcmx_async"); 17873 if (async == NULL) { 17874 if (async_callback != NULL) { 17875 (*async_callback)(async_cookie, BCM_E_MEMORY); 17876 } 17877 return; 17878 } 17879 async->next = NULL; 17880 async->type = BCMX_ASYNC_ENTRY_NIV_PORT_DELETE_ALL; 17881 async->run = bcmx_async_run; 17882 async->callback = async_callback; 17883 async->cookie = async_cookie; 17884 bcm_async_add((bcm_async_req_t *)async); 17885 } 17886 17887 void 17888 bcmx_niv_port_get_async( 17889 bcmx_niv_port_t * niv_port, 17890 bcmx_async_cb_t async_callback, 17891 void *async_cookie) 17892 { 17893 bcmx_async_req_t *async; 17894 17895 async = sal_alloc(sizeof(*async), "bcmx_async"); 17896 if (async == NULL) { 17897 if (async_callback != NULL) { 17898 (*async_callback)(async_cookie, BCM_E_MEMORY); 17899 } 17900 return; 17901 } 17902 async->next = NULL; 17903 async->type = BCMX_ASYNC_ENTRY_NIV_PORT_GET; 17904 async->run = bcmx_async_run; 17905 async->callback = async_callback; 17906 async->cookie = async_cookie; 17907 async->args.niv_port_get.niv_port = niv_port; 17908 bcm_async_add((bcm_async_req_t *)async); 17909 } 17910 17911 #endif /* INCLUDE_L3 */ 17912 17913 void 17914 bcmx_oam_detach_async( 17915 bcmx_async_cb_t async_callback, 17916 void *async_cookie) 17917 { 17918 bcmx_async_req_t *async; 17919 17920 async = sal_alloc(sizeof(*async), "bcmx_async"); 17921 if (async == NULL) { 17922 if (async_callback != NULL) { 17923 (*async_callback)(async_cookie, BCM_E_MEMORY); 17924 } 17925 return; 17926 } 17927 async->next = NULL; 17928 async->type = BCMX_ASYNC_ENTRY_OAM_DETACH; 17929 async->run = bcmx_async_run; 17930 async->callback = async_callback; 17931 async->cookie = async_cookie; 17932 bcm_async_add((bcm_async_req_t *)async); 17933 } 17934 17935 void 17936 bcmx_oam_endpoint_create_async( 17937 bcmx_oam_endpoint_info_t * endpoint_info, 17938 bcmx_async_cb_t async_callback, 17939 void *async_cookie) 17940 { 17941 bcmx_async_req_t *async; 17942 17943 async = sal_alloc(sizeof(*async), "bcmx_async"); 17944 if (async == NULL) { 17945 if (async_callback != NULL) { 17946 (*async_callback)(async_cookie, BCM_E_MEMORY); 17947 } 17948 return; 17949 } 17950 async->next = NULL; 17951 async->type = BCMX_ASYNC_ENTRY_OAM_ENDPOINT_CREATE; 17952 async->run = bcmx_async_run; 17953 async->callback = async_callback; 17954 async->cookie = async_cookie; 17955 async->args.oam_endpoint_create.endpoint_info = endpoint_info; 17956 bcm_async_add((bcm_async_req_t *)async); 17957 } 17958 17959 void 17960 bcmx_oam_endpoint_destroy_async( 17961 bcm_oam_endpoint_t endpoint, 17962 bcmx_async_cb_t async_callback, 17963 void *async_cookie) 17964 { 17965 bcmx_async_req_t *async; 17966 17967 async = sal_alloc(sizeof(*async), "bcmx_async"); 17968 if (async == NULL) { 17969 if (async_callback != NULL) { 17970 (*async_callback)(async_cookie, BCM_E_MEMORY); 17971 } 17972 return; 17973 } 17974 async->next = NULL; 17975 async->type = BCMX_ASYNC_ENTRY_OAM_ENDPOINT_DESTROY; 17976 async->run = bcmx_async_run; 17977 async->callback = async_callback; 17978 async->cookie = async_cookie; 17979 async->args.oam_endpoint_destroy.endpoint = endpoint; 17980 bcm_async_add((bcm_async_req_t *)async); 17981 } 17982 17983 void 17984 bcmx_oam_endpoint_destroy_all_async( 17985 bcm_oam_group_t group, 17986 bcmx_async_cb_t async_callback, 17987 void *async_cookie) 17988 { 17989 bcmx_async_req_t *async; 17990 17991 async = sal_alloc(sizeof(*async), "bcmx_async"); 17992 if (async == NULL) { 17993 if (async_callback != NULL) { 17994 (*async_callback)(async_cookie, BCM_E_MEMORY); 17995 } 17996 return; 17997 } 17998 async->next = NULL; 17999 async->type = BCMX_ASYNC_ENTRY_OAM_ENDPOINT_DESTROY_ALL; 18000 async->run = bcmx_async_run; 18001 async->callback = async_callback; 18002 async->cookie = async_cookie; 18003 async->args.oam_endpoint_destroy_all.group = group; 18004 bcm_async_add((bcm_async_req_t *)async); 18005 } 18006 18007 void 18008 bcmx_oam_endpoint_get_async( 18009 bcm_oam_endpoint_t endpoint, 18010 bcmx_oam_endpoint_info_t * endpoint_info, 18011 bcmx_async_cb_t async_callback, 18012 void *async_cookie) 18013 { 18014 bcmx_async_req_t *async; 18015 18016 async = sal_alloc(sizeof(*async), "bcmx_async"); 18017 if (async == NULL) { 18018 if (async_callback != NULL) { 18019 (*async_callback)(async_cookie, BCM_E_MEMORY); 18020 } 18021 return; 18022 } 18023 async->next = NULL; 18024 async->type = BCMX_ASYNC_ENTRY_OAM_ENDPOINT_GET; 18025 async->run = bcmx_async_run; 18026 async->callback = async_callback; 18027 async->cookie = async_cookie; 18028 async->args.oam_endpoint_get.endpoint = endpoint; 18029 async->args.oam_endpoint_get.endpoint_info = endpoint_info; 18030 bcm_async_add((bcm_async_req_t *)async); 18031 } 18032 18033 void 18034 bcmx_oam_group_create_async( 18035 bcmx_oam_group_info_t * group_info, 18036 bcmx_async_cb_t async_callback, 18037 void *async_cookie) 18038 { 18039 bcmx_async_req_t *async; 18040 18041 async = sal_alloc(sizeof(*async), "bcmx_async"); 18042 if (async == NULL) { 18043 if (async_callback != NULL) { 18044 (*async_callback)(async_cookie, BCM_E_MEMORY); 18045 } 18046 return; 18047 } 18048 async->next = NULL; 18049 async->type = BCMX_ASYNC_ENTRY_OAM_GROUP_CREATE; 18050 async->run = bcmx_async_run; 18051 async->callback = async_callback; 18052 async->cookie = async_cookie; 18053 async->args.oam_group_create.group_info = group_info; 18054 bcm_async_add((bcm_async_req_t *)async); 18055 } 18056 18057 void 18058 bcmx_oam_group_destroy_async( 18059 bcm_oam_group_t group, 18060 bcmx_async_cb_t async_callback, 18061 void *async_cookie) 18062 { 18063 bcmx_async_req_t *async; 18064 18065 async = sal_alloc(sizeof(*async), "bcmx_async"); 18066 if (async == NULL) { 18067 if (async_callback != NULL) { 18068 (*async_callback)(async_cookie, BCM_E_MEMORY); 18069 } 18070 return; 18071 } 18072 async->next = NULL; 18073 async->type = BCMX_ASYNC_ENTRY_OAM_GROUP_DESTROY; 18074 async->run = bcmx_async_run; 18075 async->callback = async_callback; 18076 async->cookie = async_cookie; 18077 async->args.oam_group_destroy.group = group; 18078 bcm_async_add((bcm_async_req_t *)async); 18079 } 18080 18081 void 18082 bcmx_oam_group_destroy_all_async( 18083 bcmx_async_cb_t async_callback, 18084 void *async_cookie) 18085 { 18086 bcmx_async_req_t *async; 18087 18088 async = sal_alloc(sizeof(*async), "bcmx_async"); 18089 if (async == NULL) { 18090 if (async_callback != NULL) { 18091 (*async_callback)(async_cookie, BCM_E_MEMORY); 18092 } 18093 return; 18094 } 18095 async->next = NULL; 18096 async->type = BCMX_ASYNC_ENTRY_OAM_GROUP_DESTROY_ALL; 18097 async->run = bcmx_async_run; 18098 async->callback = async_callback; 18099 async->cookie = async_cookie; 18100 bcm_async_add((bcm_async_req_t *)async); 18101 } 18102 18103 void 18104 bcmx_oam_group_get_async( 18105 bcm_oam_group_t group, 18106 bcmx_oam_group_info_t * group_info, 18107 bcmx_async_cb_t async_callback, 18108 void *async_cookie) 18109 { 18110 bcmx_async_req_t *async; 18111 18112 async = sal_alloc(sizeof(*async), "bcmx_async"); 18113 if (async == NULL) { 18114 if (async_callback != NULL) { 18115 (*async_callback)(async_cookie, BCM_E_MEMORY); 18116 } 18117 return; 18118 } 18119 async->next = NULL; 18120 async->type = BCMX_ASYNC_ENTRY_OAM_GROUP_GET; 18121 async->run = bcmx_async_run; 18122 async->callback = async_callback; 18123 async->cookie = async_cookie; 18124 async->args.oam_group_get.group = group; 18125 async->args.oam_group_get.group_info = group_info; 18126 bcm_async_add((bcm_async_req_t *)async); 18127 } 18128 18129 void 18130 bcmx_oam_init_async( 18131 bcmx_async_cb_t async_callback, 18132 void *async_cookie) 18133 { 18134 bcmx_async_req_t *async; 18135 18136 async = sal_alloc(sizeof(*async), "bcmx_async"); 18137 if (async == NULL) { 18138 if (async_callback != NULL) { 18139 (*async_callback)(async_cookie, BCM_E_MEMORY); 18140 } 18141 return; 18142 } 18143 async->next = NULL; 18144 async->type = BCMX_ASYNC_ENTRY_OAM_INIT; 18145 async->run = bcmx_async_run; 18146 async->callback = async_callback; 18147 async->cookie = async_cookie; 18148 bcm_async_add((bcm_async_req_t *)async); 18149 } 18150 18151 void 18152 bcmx_policer_create_async( 18153 bcmx_policer_config_t * pol_cfg, 18154 bcm_policer_t * policer_id, 18155 bcmx_async_cb_t async_callback, 18156 void *async_cookie) 18157 { 18158 bcmx_async_req_t *async; 18159 18160 async = sal_alloc(sizeof(*async), "bcmx_async"); 18161 if (async == NULL) { 18162 if (async_callback != NULL) { 18163 (*async_callback)(async_cookie, BCM_E_MEMORY); 18164 } 18165 return; 18166 } 18167 async->next = NULL; 18168 async->type = BCMX_ASYNC_ENTRY_POLICER_CREATE; 18169 async->run = bcmx_async_run; 18170 async->callback = async_callback; 18171 async->cookie = async_cookie; 18172 async->args.policer_create.pol_cfg = pol_cfg; 18173 async->args.policer_create.policer_id = policer_id; 18174 bcm_async_add((bcm_async_req_t *)async); 18175 } 18176 18177 void 18178 bcmx_policer_destroy_async( 18179 bcm_policer_t policer_id, 18180 bcmx_async_cb_t async_callback, 18181 void *async_cookie) 18182 { 18183 bcmx_async_req_t *async; 18184 18185 async = sal_alloc(sizeof(*async), "bcmx_async"); 18186 if (async == NULL) { 18187 if (async_callback != NULL) { 18188 (*async_callback)(async_cookie, BCM_E_MEMORY); 18189 } 18190 return; 18191 } 18192 async->next = NULL; 18193 async->type = BCMX_ASYNC_ENTRY_POLICER_DESTROY; 18194 async->run = bcmx_async_run; 18195 async->callback = async_callback; 18196 async->cookie = async_cookie; 18197 async->args.policer_destroy.policer_id = policer_id; 18198 bcm_async_add((bcm_async_req_t *)async); 18199 } 18200 18201 void 18202 bcmx_policer_destroy_all_async( 18203 bcmx_async_cb_t async_callback, 18204 void *async_cookie) 18205 { 18206 bcmx_async_req_t *async; 18207 18208 async = sal_alloc(sizeof(*async), "bcmx_async"); 18209 if (async == NULL) { 18210 if (async_callback != NULL) { 18211 (*async_callback)(async_cookie, BCM_E_MEMORY); 18212 } 18213 return; 18214 } 18215 async->next = NULL; 18216 async->type = BCMX_ASYNC_ENTRY_POLICER_DESTROY_ALL; 18217 async->run = bcmx_async_run; 18218 async->callback = async_callback; 18219 async->cookie = async_cookie; 18220 bcm_async_add((bcm_async_req_t *)async); 18221 } 18222 18223 void 18224 bcmx_policer_get_async( 18225 bcm_policer_t policer_id, 18226 bcmx_policer_config_t * pol_cfg, 18227 bcmx_async_cb_t async_callback, 18228 void *async_cookie) 18229 { 18230 bcmx_async_req_t *async; 18231 18232 async = sal_alloc(sizeof(*async), "bcmx_async"); 18233 if (async == NULL) { 18234 if (async_callback != NULL) { 18235 (*async_callback)(async_cookie, BCM_E_MEMORY); 18236 } 18237 return; 18238 } 18239 async->next = NULL; 18240 async->type = BCMX_ASYNC_ENTRY_POLICER_GET; 18241 async->run = bcmx_async_run; 18242 async->callback = async_callback; 18243 async->cookie = async_cookie; 18244 async->args.policer_get.policer_id = policer_id; 18245 async->args.policer_get.pol_cfg = pol_cfg; 18246 bcm_async_add((bcm_async_req_t *)async); 18247 } 18248 18249 void 18250 bcmx_policer_init_async( 18251 bcmx_async_cb_t async_callback, 18252 void *async_cookie) 18253 { 18254 bcmx_async_req_t *async; 18255 18256 async = sal_alloc(sizeof(*async), "bcmx_async"); 18257 if (async == NULL) { 18258 if (async_callback != NULL) { 18259 (*async_callback)(async_cookie, BCM_E_MEMORY); 18260 } 18261 return; 18262 } 18263 async->next = NULL; 18264 async->type = BCMX_ASYNC_ENTRY_POLICER_INIT; 18265 async->run = bcmx_async_run; 18266 async->callback = async_callback; 18267 async->cookie = async_cookie; 18268 bcm_async_add((bcm_async_req_t *)async); 18269 } 18270 18271 void 18272 bcmx_policer_set_async( 18273 bcm_policer_t policer_id, 18274 bcmx_policer_config_t * pol_cfg, 18275 bcmx_async_cb_t async_callback, 18276 void *async_cookie) 18277 { 18278 bcmx_async_req_t *async; 18279 18280 async = sal_alloc(sizeof(*async), "bcmx_async"); 18281 if (async == NULL) { 18282 if (async_callback != NULL) { 18283 (*async_callback)(async_cookie, BCM_E_MEMORY); 18284 } 18285 return; 18286 } 18287 async->next = NULL; 18288 async->type = BCMX_ASYNC_ENTRY_POLICER_SET; 18289 async->run = bcmx_async_run; 18290 async->callback = async_callback; 18291 async->cookie = async_cookie; 18292 async->args.policer_set.policer_id = policer_id; 18293 async->args.policer_set.pol_cfg = pol_cfg; 18294 bcm_async_add((bcm_async_req_t *)async); 18295 } 18296 18297 void 18298 bcmx_port_ability_advert_get_async( 18299 bcmx_lport_t port, 18300 bcmx_port_ability_t * ability_mask, 18301 bcmx_async_cb_t async_callback, 18302 void *async_cookie) 18303 { 18304 bcmx_async_req_t *async; 18305 18306 async = sal_alloc(sizeof(*async), "bcmx_async"); 18307 if (async == NULL) { 18308 if (async_callback != NULL) { 18309 (*async_callback)(async_cookie, BCM_E_MEMORY); 18310 } 18311 return; 18312 } 18313 async->next = NULL; 18314 async->type = BCMX_ASYNC_ENTRY_PORT_ABILITY_ADVERT_GET; 18315 async->run = bcmx_async_run; 18316 async->callback = async_callback; 18317 async->cookie = async_cookie; 18318 async->args.port_ability_advert_get.port = port; 18319 async->args.port_ability_advert_get.ability_mask = ability_mask; 18320 bcm_async_add((bcm_async_req_t *)async); 18321 } 18322 18323 void 18324 bcmx_port_ability_advert_set_async( 18325 bcmx_lport_t port, 18326 bcmx_port_ability_t * ability_mask, 18327 bcmx_async_cb_t async_callback, 18328 void *async_cookie) 18329 { 18330 bcmx_async_req_t *async; 18331 18332 async = sal_alloc(sizeof(*async), "bcmx_async"); 18333 if (async == NULL) { 18334 if (async_callback != NULL) { 18335 (*async_callback)(async_cookie, BCM_E_MEMORY); 18336 } 18337 return; 18338 } 18339 async->next = NULL; 18340 async->type = BCMX_ASYNC_ENTRY_PORT_ABILITY_ADVERT_SET; 18341 async->run = bcmx_async_run; 18342 async->callback = async_callback; 18343 async->cookie = async_cookie; 18344 async->args.port_ability_advert_set.port = port; 18345 async->args.port_ability_advert_set.ability_mask = ability_mask; 18346 bcm_async_add((bcm_async_req_t *)async); 18347 } 18348 18349 void 18350 bcmx_port_ability_get_async( 18351 bcmx_lport_t port, 18352 bcm_port_abil_t * local_ability_mask, 18353 bcmx_async_cb_t async_callback, 18354 void *async_cookie) 18355 { 18356 bcmx_async_req_t *async; 18357 18358 async = sal_alloc(sizeof(*async), "bcmx_async"); 18359 if (async == NULL) { 18360 if (async_callback != NULL) { 18361 (*async_callback)(async_cookie, BCM_E_MEMORY); 18362 } 18363 return; 18364 } 18365 async->next = NULL; 18366 async->type = BCMX_ASYNC_ENTRY_PORT_ABILITY_GET; 18367 async->run = bcmx_async_run; 18368 async->callback = async_callback; 18369 async->cookie = async_cookie; 18370 async->args.port_ability_get.port = port; 18371 async->args.port_ability_get.local_ability_mask = local_ability_mask; 18372 bcm_async_add((bcm_async_req_t *)async); 18373 } 18374 18375 void 18376 bcmx_port_ability_local_get_async( 18377 bcmx_lport_t port, 18378 bcmx_port_ability_t * local_ability_mask, 18379 bcmx_async_cb_t async_callback, 18380 void *async_cookie) 18381 { 18382 bcmx_async_req_t *async; 18383 18384 async = sal_alloc(sizeof(*async), "bcmx_async"); 18385 if (async == NULL) { 18386 if (async_callback != NULL) { 18387 (*async_callback)(async_cookie, BCM_E_MEMORY); 18388 } 18389 return; 18390 } 18391 async->next = NULL; 18392 async->type = BCMX_ASYNC_ENTRY_PORT_ABILITY_LOCAL_GET; 18393 async->run = bcmx_async_run; 18394 async->callback = async_callback; 18395 async->cookie = async_cookie; 18396 async->args.port_ability_local_get.port = port; 18397 async->args.port_ability_local_get.local_ability_mask = local_ability_mask; 18398 bcm_async_add((bcm_async_req_t *)async); 18399 } 18400 18401 void 18402 bcmx_port_ability_remote_get_async( 18403 bcmx_lport_t port, 18404 bcmx_port_ability_t * ability_mask, 18405 bcmx_async_cb_t async_callback, 18406 void *async_cookie) 18407 { 18408 bcmx_async_req_t *async; 18409 18410 async = sal_alloc(sizeof(*async), "bcmx_async"); 18411 if (async == NULL) { 18412 if (async_callback != NULL) { 18413 (*async_callback)(async_cookie, BCM_E_MEMORY); 18414 } 18415 return; 18416 } 18417 async->next = NULL; 18418 async->type = BCMX_ASYNC_ENTRY_PORT_ABILITY_REMOTE_GET; 18419 async->run = bcmx_async_run; 18420 async->callback = async_callback; 18421 async->cookie = async_cookie; 18422 async->args.port_ability_remote_get.port = port; 18423 async->args.port_ability_remote_get.ability_mask = ability_mask; 18424 bcm_async_add((bcm_async_req_t *)async); 18425 } 18426 18427 void 18428 bcmx_port_advert_get_async( 18429 bcmx_lport_t port, 18430 bcm_port_abil_t * ability_mask, 18431 bcmx_async_cb_t async_callback, 18432 void *async_cookie) 18433 { 18434 bcmx_async_req_t *async; 18435 18436 async = sal_alloc(sizeof(*async), "bcmx_async"); 18437 if (async == NULL) { 18438 if (async_callback != NULL) { 18439 (*async_callback)(async_cookie, BCM_E_MEMORY); 18440 } 18441 return; 18442 } 18443 async->next = NULL; 18444 async->type = BCMX_ASYNC_ENTRY_PORT_ADVERT_GET; 18445 async->run = bcmx_async_run; 18446 async->callback = async_callback; 18447 async->cookie = async_cookie; 18448 async->args.port_advert_get.port = port; 18449 async->args.port_advert_get.ability_mask = ability_mask; 18450 bcm_async_add((bcm_async_req_t *)async); 18451 } 18452 18453 void 18454 bcmx_port_advert_remote_get_async( 18455 bcmx_lport_t port, 18456 bcm_port_abil_t * ability_mask, 18457 bcmx_async_cb_t async_callback, 18458 void *async_cookie) 18459 { 18460 bcmx_async_req_t *async; 18461 18462 async = sal_alloc(sizeof(*async), "bcmx_async"); 18463 if (async == NULL) { 18464 if (async_callback != NULL) { 18465 (*async_callback)(async_cookie, BCM_E_MEMORY); 18466 } 18467 return; 18468 } 18469 async->next = NULL; 18470 async->type = BCMX_ASYNC_ENTRY_PORT_ADVERT_REMOTE_GET; 18471 async->run = bcmx_async_run; 18472 async->callback = async_callback; 18473 async->cookie = async_cookie; 18474 async->args.port_advert_remote_get.port = port; 18475 async->args.port_advert_remote_get.ability_mask = ability_mask; 18476 bcm_async_add((bcm_async_req_t *)async); 18477 } 18478 18479 void 18480 bcmx_port_advert_set_async( 18481 bcmx_lport_t port, 18482 bcm_port_abil_t ability_mask, 18483 bcmx_async_cb_t async_callback, 18484 void *async_cookie) 18485 { 18486 bcmx_async_req_t *async; 18487 18488 async = sal_alloc(sizeof(*async), "bcmx_async"); 18489 if (async == NULL) { 18490 if (async_callback != NULL) { 18491 (*async_callback)(async_cookie, BCM_E_MEMORY); 18492 } 18493 return; 18494 } 18495 async->next = NULL; 18496 async->type = BCMX_ASYNC_ENTRY_PORT_ADVERT_SET; 18497 async->run = bcmx_async_run; 18498 async->callback = async_callback; 18499 async->cookie = async_cookie; 18500 async->args.port_advert_set.port = port; 18501 async->args.port_advert_set.ability_mask = ability_mask; 18502 bcm_async_add((bcm_async_req_t *)async); 18503 } 18504 18505 void 18506 bcmx_port_autoneg_get_async( 18507 bcmx_lport_t port, 18508 int * autoneg, 18509 bcmx_async_cb_t async_callback, 18510 void *async_cookie) 18511 { 18512 bcmx_async_req_t *async; 18513 18514 async = sal_alloc(sizeof(*async), "bcmx_async"); 18515 if (async == NULL) { 18516 if (async_callback != NULL) { 18517 (*async_callback)(async_cookie, BCM_E_MEMORY); 18518 } 18519 return; 18520 } 18521 async->next = NULL; 18522 async->type = BCMX_ASYNC_ENTRY_PORT_AUTONEG_GET; 18523 async->run = bcmx_async_run; 18524 async->callback = async_callback; 18525 async->cookie = async_cookie; 18526 async->args.port_autoneg_get.port = port; 18527 async->args.port_autoneg_get.autoneg = autoneg; 18528 bcm_async_add((bcm_async_req_t *)async); 18529 } 18530 18531 void 18532 bcmx_port_autoneg_set_async( 18533 bcmx_lport_t port, 18534 int autoneg, 18535 bcmx_async_cb_t async_callback, 18536 void *async_cookie) 18537 { 18538 bcmx_async_req_t *async; 18539 18540 async = sal_alloc(sizeof(*async), "bcmx_async"); 18541 if (async == NULL) { 18542 if (async_callback != NULL) { 18543 (*async_callback)(async_cookie, BCM_E_MEMORY); 18544 } 18545 return; 18546 } 18547 async->next = NULL; 18548 async->type = BCMX_ASYNC_ENTRY_PORT_AUTONEG_SET; 18549 async->run = bcmx_async_run; 18550 async->callback = async_callback; 18551 async->cookie = async_cookie; 18552 async->args.port_autoneg_set.port = port; 18553 async->args.port_autoneg_set.autoneg = autoneg; 18554 bcm_async_add((bcm_async_req_t *)async); 18555 } 18556 18557 void 18558 bcmx_port_bpdu_enable_get_async( 18559 bcmx_lport_t port, 18560 int * enable, 18561 bcmx_async_cb_t async_callback, 18562 void *async_cookie) 18563 { 18564 bcmx_async_req_t *async; 18565 18566 async = sal_alloc(sizeof(*async), "bcmx_async"); 18567 if (async == NULL) { 18568 if (async_callback != NULL) { 18569 (*async_callback)(async_cookie, BCM_E_MEMORY); 18570 } 18571 return; 18572 } 18573 async->next = NULL; 18574 async->type = BCMX_ASYNC_ENTRY_PORT_BPDU_ENABLE_GET; 18575 async->run = bcmx_async_run; 18576 async->callback = async_callback; 18577 async->cookie = async_cookie; 18578 async->args.port_bpdu_enable_get.port = port; 18579 async->args.port_bpdu_enable_get.enable = enable; 18580 bcm_async_add((bcm_async_req_t *)async); 18581 } 18582 18583 void 18584 bcmx_port_bpdu_enable_set_async( 18585 bcmx_lport_t port, 18586 int enable, 18587 bcmx_async_cb_t async_callback, 18588 void *async_cookie) 18589 { 18590 bcmx_async_req_t *async; 18591 18592 async = sal_alloc(sizeof(*async), "bcmx_async"); 18593 if (async == NULL) { 18594 if (async_callback != NULL) { 18595 (*async_callback)(async_cookie, BCM_E_MEMORY); 18596 } 18597 return; 18598 } 18599 async->next = NULL; 18600 async->type = BCMX_ASYNC_ENTRY_PORT_BPDU_ENABLE_SET; 18601 async->run = bcmx_async_run; 18602 async->callback = async_callback; 18603 async->cookie = async_cookie; 18604 async->args.port_bpdu_enable_set.port = port; 18605 async->args.port_bpdu_enable_set.enable = enable; 18606 bcm_async_add((bcm_async_req_t *)async); 18607 } 18608 18609 void 18610 bcmx_port_cable_diag_async( 18611 bcmx_lport_t port, 18612 bcm_port_cable_diag_t * status, 18613 bcmx_async_cb_t async_callback, 18614 void *async_cookie) 18615 { 18616 bcmx_async_req_t *async; 18617 18618 async = sal_alloc(sizeof(*async), "bcmx_async"); 18619 if (async == NULL) { 18620 if (async_callback != NULL) { 18621 (*async_callback)(async_cookie, BCM_E_MEMORY); 18622 } 18623 return; 18624 } 18625 async->next = NULL; 18626 async->type = BCMX_ASYNC_ENTRY_PORT_CABLE_DIAG; 18627 async->run = bcmx_async_run; 18628 async->callback = async_callback; 18629 async->cookie = async_cookie; 18630 async->args.port_cable_diag.port = port; 18631 async->args.port_cable_diag.status = status; 18632 bcm_async_add((bcm_async_req_t *)async); 18633 } 18634 18635 void 18636 bcmx_port_cfi_color_get_async( 18637 bcmx_lport_t port, 18638 int cfi, 18639 bcm_color_t * color, 18640 bcmx_async_cb_t async_callback, 18641 void *async_cookie) 18642 { 18643 bcmx_async_req_t *async; 18644 18645 async = sal_alloc(sizeof(*async), "bcmx_async"); 18646 if (async == NULL) { 18647 if (async_callback != NULL) { 18648 (*async_callback)(async_cookie, BCM_E_MEMORY); 18649 } 18650 return; 18651 } 18652 async->next = NULL; 18653 async->type = BCMX_ASYNC_ENTRY_PORT_CFI_COLOR_GET; 18654 async->run = bcmx_async_run; 18655 async->callback = async_callback; 18656 async->cookie = async_cookie; 18657 async->args.port_cfi_color_get.port = port; 18658 async->args.port_cfi_color_get.cfi = cfi; 18659 async->args.port_cfi_color_get.color = color; 18660 bcm_async_add((bcm_async_req_t *)async); 18661 } 18662 18663 void 18664 bcmx_port_cfi_color_set_async( 18665 bcmx_lport_t port, 18666 int cfi, 18667 bcm_color_t color, 18668 bcmx_async_cb_t async_callback, 18669 void *async_cookie) 18670 { 18671 bcmx_async_req_t *async; 18672 18673 async = sal_alloc(sizeof(*async), "bcmx_async"); 18674 if (async == NULL) { 18675 if (async_callback != NULL) { 18676 (*async_callback)(async_cookie, BCM_E_MEMORY); 18677 } 18678 return; 18679 } 18680 async->next = NULL; 18681 async->type = BCMX_ASYNC_ENTRY_PORT_CFI_COLOR_SET; 18682 async->run = bcmx_async_run; 18683 async->callback = async_callback; 18684 async->cookie = async_cookie; 18685 async->args.port_cfi_color_set.port = port; 18686 async->args.port_cfi_color_set.cfi = cfi; 18687 async->args.port_cfi_color_set.color = color; 18688 bcm_async_add((bcm_async_req_t *)async); 18689 } 18690 18691 void 18692 bcmx_port_class_get_async( 18693 bcmx_lport_t port, 18694 bcm_port_class_t pclass, 18695 uint32 * class_id, 18696 bcmx_async_cb_t async_callback, 18697 void *async_cookie) 18698 { 18699 bcmx_async_req_t *async; 18700 18701 async = sal_alloc(sizeof(*async), "bcmx_async"); 18702 if (async == NULL) { 18703 if (async_callback != NULL) { 18704 (*async_callback)(async_cookie, BCM_E_MEMORY); 18705 } 18706 return; 18707 } 18708 async->next = NULL; 18709 async->type = BCMX_ASYNC_ENTRY_PORT_CLASS_GET; 18710 async->run = bcmx_async_run; 18711 async->callback = async_callback; 18712 async->cookie = async_cookie; 18713 async->args.port_class_get.port = port; 18714 async->args.port_class_get.pclass = pclass; 18715 async->args.port_class_get.class_id = class_id; 18716 bcm_async_add((bcm_async_req_t *)async); 18717 } 18718 18719 void 18720 bcmx_port_class_set_async( 18721 bcmx_lport_t port, 18722 bcm_port_class_t pclass, 18723 uint32 class_id, 18724 bcmx_async_cb_t async_callback, 18725 void *async_cookie) 18726 { 18727 bcmx_async_req_t *async; 18728 18729 async = sal_alloc(sizeof(*async), "bcmx_async"); 18730 if (async == NULL) { 18731 if (async_callback != NULL) { 18732 (*async_callback)(async_cookie, BCM_E_MEMORY); 18733 } 18734 return; 18735 } 18736 async->next = NULL; 18737 async->type = BCMX_ASYNC_ENTRY_PORT_CLASS_SET; 18738 async->run = bcmx_async_run; 18739 async->callback = async_callback; 18740 async->cookie = async_cookie; 18741 async->args.port_class_set.port = port; 18742 async->args.port_class_set.pclass = pclass; 18743 async->args.port_class_set.class_id = class_id; 18744 bcm_async_add((bcm_async_req_t *)async); 18745 } 18746 18747 void 18748 bcmx_port_config_get_async( 18749 bcmx_port_config_t * config, 18750 bcmx_async_cb_t async_callback, 18751 void *async_cookie) 18752 { 18753 bcmx_async_req_t *async; 18754 18755 async = sal_alloc(sizeof(*async), "bcmx_async"); 18756 if (async == NULL) { 18757 if (async_callback != NULL) { 18758 (*async_callback)(async_cookie, BCM_E_MEMORY); 18759 } 18760 return; 18761 } 18762 async->next = NULL; 18763 async->type = BCMX_ASYNC_ENTRY_PORT_CONFIG_GET; 18764 async->run = bcmx_async_run; 18765 async->callback = async_callback; 18766 async->cookie = async_cookie; 18767 async->args.port_config_get.config = config; 18768 bcm_async_add((bcm_async_req_t *)async); 18769 } 18770 18771 void 18772 bcmx_port_congestion_config_get_async( 18773 bcm_gport_t port, 18774 bcmx_port_congestion_config_t * config, 18775 bcmx_async_cb_t async_callback, 18776 void *async_cookie) 18777 { 18778 bcmx_async_req_t *async; 18779 18780 async = sal_alloc(sizeof(*async), "bcmx_async"); 18781 if (async == NULL) { 18782 if (async_callback != NULL) { 18783 (*async_callback)(async_cookie, BCM_E_MEMORY); 18784 } 18785 return; 18786 } 18787 async->next = NULL; 18788 async->type = BCMX_ASYNC_ENTRY_PORT_CONGESTION_CONFIG_GET; 18789 async->run = bcmx_async_run; 18790 async->callback = async_callback; 18791 async->cookie = async_cookie; 18792 async->args.port_congestion_config_get.port = port; 18793 async->args.port_congestion_config_get.config = config; 18794 bcm_async_add((bcm_async_req_t *)async); 18795 } 18796 18797 void 18798 bcmx_port_congestion_config_set_async( 18799 bcm_gport_t port, 18800 bcmx_port_congestion_config_t * config, 18801 bcmx_async_cb_t async_callback, 18802 void *async_cookie) 18803 { 18804 bcmx_async_req_t *async; 18805 18806 async = sal_alloc(sizeof(*async), "bcmx_async"); 18807 if (async == NULL) { 18808 if (async_callback != NULL) { 18809 (*async_callback)(async_cookie, BCM_E_MEMORY); 18810 } 18811 return; 18812 } 18813 async->next = NULL; 18814 async->type = BCMX_ASYNC_ENTRY_PORT_CONGESTION_CONFIG_SET; 18815 async->run = bcmx_async_run; 18816 async->callback = async_callback; 18817 async->cookie = async_cookie; 18818 async->args.port_congestion_config_set.port = port; 18819 async->args.port_congestion_config_set.config = config; 18820 bcm_async_add((bcm_async_req_t *)async); 18821 } 18822 18823 void 18824 bcmx_port_control_get_async( 18825 bcmx_lport_t port, 18826 bcm_port_control_t type, 18827 int * value, 18828 bcmx_async_cb_t async_callback, 18829 void *async_cookie) 18830 { 18831 bcmx_async_req_t *async; 18832 18833 async = sal_alloc(sizeof(*async), "bcmx_async"); 18834 if (async == NULL) { 18835 if (async_callback != NULL) { 18836 (*async_callback)(async_cookie, BCM_E_MEMORY); 18837 } 18838 return; 18839 } 18840 async->next = NULL; 18841 async->type = BCMX_ASYNC_ENTRY_PORT_CONTROL_GET; 18842 async->run = bcmx_async_run; 18843 async->callback = async_callback; 18844 async->cookie = async_cookie; 18845 async->args.port_control_get.port = port; 18846 async->args.port_control_get.type = type; 18847 async->args.port_control_get.value = value; 18848 bcm_async_add((bcm_async_req_t *)async); 18849 } 18850 18851 void 18852 bcmx_port_control_phy_timesync_get_async( 18853 bcm_gport_t port, 18854 bcm_port_control_phy_timesync_t type, 18855 uint64 * value, 18856 bcmx_async_cb_t async_callback, 18857 void *async_cookie) 18858 { 18859 bcmx_async_req_t *async; 18860 18861 async = sal_alloc(sizeof(*async), "bcmx_async"); 18862 if (async == NULL) { 18863 if (async_callback != NULL) { 18864 (*async_callback)(async_cookie, BCM_E_MEMORY); 18865 } 18866 return; 18867 } 18868 async->next = NULL; 18869 async->type = BCMX_ASYNC_ENTRY_PORT_CONTROL_PHY_TIMESYNC_GET; 18870 async->run = bcmx_async_run; 18871 async->callback = async_callback; 18872 async->cookie = async_cookie; 18873 async->args.port_control_phy_timesync_get.port = port; 18874 async->args.port_control_phy_timesync_get.type = type; 18875 async->args.port_control_phy_timesync_get.value = value; 18876 bcm_async_add((bcm_async_req_t *)async); 18877 } 18878 18879 void 18880 bcmx_port_control_phy_timesync_set_async( 18881 bcm_gport_t port, 18882 bcm_port_control_phy_timesync_t type, 18883 uint64 value, 18884 bcmx_async_cb_t async_callback, 18885 void *async_cookie) 18886 { 18887 bcmx_async_req_t *async; 18888 18889 async = sal_alloc(sizeof(*async), "bcmx_async"); 18890 if (async == NULL) { 18891 if (async_callback != NULL) { 18892 (*async_callback)(async_cookie, BCM_E_MEMORY); 18893 } 18894 return; 18895 } 18896 async->next = NULL; 18897 async->type = BCMX_ASYNC_ENTRY_PORT_CONTROL_PHY_TIMESYNC_SET; 18898 async->run = bcmx_async_run; 18899 async->callback = async_callback; 18900 async->cookie = async_cookie; 18901 async->args.port_control_phy_timesync_set.port = port; 18902 async->args.port_control_phy_timesync_set.type = type; 18903 async->args.port_control_phy_timesync_set.value = value; 18904 bcm_async_add((bcm_async_req_t *)async); 18905 } 18906 18907 void 18908 bcmx_port_control_set_async( 18909 bcmx_lport_t port, 18910 bcm_port_control_t type, 18911 int value, 18912 bcmx_async_cb_t async_callback, 18913 void *async_cookie) 18914 { 18915 bcmx_async_req_t *async; 18916 18917 async = sal_alloc(sizeof(*async), "bcmx_async"); 18918 if (async == NULL) { 18919 if (async_callback != NULL) { 18920 (*async_callback)(async_cookie, BCM_E_MEMORY); 18921 } 18922 return; 18923 } 18924 async->next = NULL; 18925 async->type = BCMX_ASYNC_ENTRY_PORT_CONTROL_SET; 18926 async->run = bcmx_async_run; 18927 async->callback = async_callback; 18928 async->cookie = async_cookie; 18929 async->args.port_control_set.port = port; 18930 async->args.port_control_set.type = type; 18931 async->args.port_control_set.value = value; 18932 bcm_async_add((bcm_async_req_t *)async); 18933 } 18934 18935 void 18936 bcmx_port_discard_get_async( 18937 bcmx_lport_t port, 18938 int * mode, 18939 bcmx_async_cb_t async_callback, 18940 void *async_cookie) 18941 { 18942 bcmx_async_req_t *async; 18943 18944 async = sal_alloc(sizeof(*async), "bcmx_async"); 18945 if (async == NULL) { 18946 if (async_callback != NULL) { 18947 (*async_callback)(async_cookie, BCM_E_MEMORY); 18948 } 18949 return; 18950 } 18951 async->next = NULL; 18952 async->type = BCMX_ASYNC_ENTRY_PORT_DISCARD_GET; 18953 async->run = bcmx_async_run; 18954 async->callback = async_callback; 18955 async->cookie = async_cookie; 18956 async->args.port_discard_get.port = port; 18957 async->args.port_discard_get.mode = mode; 18958 bcm_async_add((bcm_async_req_t *)async); 18959 } 18960 18961 void 18962 bcmx_port_discard_set_async( 18963 bcmx_lport_t port, 18964 int mode, 18965 bcmx_async_cb_t async_callback, 18966 void *async_cookie) 18967 { 18968 bcmx_async_req_t *async; 18969 18970 async = sal_alloc(sizeof(*async), "bcmx_async"); 18971 if (async == NULL) { 18972 if (async_callback != NULL) { 18973 (*async_callback)(async_cookie, BCM_E_MEMORY); 18974 } 18975 return; 18976 } 18977 async->next = NULL; 18978 async->type = BCMX_ASYNC_ENTRY_PORT_DISCARD_SET; 18979 async->run = bcmx_async_run; 18980 async->callback = async_callback; 18981 async->cookie = async_cookie; 18982 async->args.port_discard_set.port = port; 18983 async->args.port_discard_set.mode = mode; 18984 bcm_async_add((bcm_async_req_t *)async); 18985 } 18986 18987 void 18988 bcmx_port_dscp_map_get_async( 18989 bcmx_lport_t port, 18990 int srccp, 18991 int * mapcp, 18992 int * prio, 18993 bcmx_async_cb_t async_callback, 18994 void *async_cookie) 18995 { 18996 bcmx_async_req_t *async; 18997 18998 async = sal_alloc(sizeof(*async), "bcmx_async"); 18999 if (async == NULL) { 19000 if (async_callback != NULL) { 19001 (*async_callback)(async_cookie, BCM_E_MEMORY); 19002 } 19003 return; 19004 } 19005 async->next = NULL; 19006 async->type = BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_GET; 19007 async->run = bcmx_async_run; 19008 async->callback = async_callback; 19009 async->cookie = async_cookie; 19010 async->args.port_dscp_map_get.port = port; 19011 async->args.port_dscp_map_get.srccp = srccp; 19012 async->args.port_dscp_map_get.mapcp = mapcp; 19013 async->args.port_dscp_map_get.prio = prio; 19014 bcm_async_add((bcm_async_req_t *)async); 19015 } 19016 19017 void 19018 bcmx_port_dscp_map_mode_get_async( 19019 bcmx_lport_t port, 19020 int * mode, 19021 bcmx_async_cb_t async_callback, 19022 void *async_cookie) 19023 { 19024 bcmx_async_req_t *async; 19025 19026 async = sal_alloc(sizeof(*async), "bcmx_async"); 19027 if (async == NULL) { 19028 if (async_callback != NULL) { 19029 (*async_callback)(async_cookie, BCM_E_MEMORY); 19030 } 19031 return; 19032 } 19033 async->next = NULL; 19034 async->type = BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_MODE_GET; 19035 async->run = bcmx_async_run; 19036 async->callback = async_callback; 19037 async->cookie = async_cookie; 19038 async->args.port_dscp_map_mode_get.port = port; 19039 async->args.port_dscp_map_mode_get.mode = mode; 19040 bcm_async_add((bcm_async_req_t *)async); 19041 } 19042 19043 void 19044 bcmx_port_dscp_map_mode_set_async( 19045 bcmx_lport_t port, 19046 int mode, 19047 bcmx_async_cb_t async_callback, 19048 void *async_cookie) 19049 { 19050 bcmx_async_req_t *async; 19051 19052 async = sal_alloc(sizeof(*async), "bcmx_async"); 19053 if (async == NULL) { 19054 if (async_callback != NULL) { 19055 (*async_callback)(async_cookie, BCM_E_MEMORY); 19056 } 19057 return; 19058 } 19059 async->next = NULL; 19060 async->type = BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_MODE_SET; 19061 async->run = bcmx_async_run; 19062 async->callback = async_callback; 19063 async->cookie = async_cookie; 19064 async->args.port_dscp_map_mode_set.port = port; 19065 async->args.port_dscp_map_mode_set.mode = mode; 19066 bcm_async_add((bcm_async_req_t *)async); 19067 } 19068 19069 void 19070 bcmx_port_dscp_map_set_async( 19071 bcmx_lport_t port, 19072 int srccp, 19073 int mapcp, 19074 int prio, 19075 bcmx_async_cb_t async_callback, 19076 void *async_cookie) 19077 { 19078 bcmx_async_req_t *async; 19079 19080 async = sal_alloc(sizeof(*async), "bcmx_async"); 19081 if (async == NULL) { 19082 if (async_callback != NULL) { 19083 (*async_callback)(async_cookie, BCM_E_MEMORY); 19084 } 19085 return; 19086 } 19087 async->next = NULL; 19088 async->type = BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_SET; 19089 async->run = bcmx_async_run; 19090 async->callback = async_callback; 19091 async->cookie = async_cookie; 19092 async->args.port_dscp_map_set.port = port; 19093 async->args.port_dscp_map_set.srccp = srccp; 19094 async->args.port_dscp_map_set.mapcp = mapcp; 19095 async->args.port_dscp_map_set.prio = prio; 19096 bcm_async_add((bcm_async_req_t *)async); 19097 } 19098 19099 void 19100 bcmx_port_dtag_mode_get_async( 19101 bcmx_lport_t port, 19102 int * mode, 19103 bcmx_async_cb_t async_callback, 19104 void *async_cookie) 19105 { 19106 bcmx_async_req_t *async; 19107 19108 async = sal_alloc(sizeof(*async), "bcmx_async"); 19109 if (async == NULL) { 19110 if (async_callback != NULL) { 19111 (*async_callback)(async_cookie, BCM_E_MEMORY); 19112 } 19113 return; 19114 } 19115 async->next = NULL; 19116 async->type = BCMX_ASYNC_ENTRY_PORT_DTAG_MODE_GET; 19117 async->run = bcmx_async_run; 19118 async->callback = async_callback; 19119 async->cookie = async_cookie; 19120 async->args.port_dtag_mode_get.port = port; 19121 async->args.port_dtag_mode_get.mode = mode; 19122 bcm_async_add((bcm_async_req_t *)async); 19123 } 19124 19125 void 19126 bcmx_port_dtag_mode_set_async( 19127 bcmx_lport_t port, 19128 int mode, 19129 bcmx_async_cb_t async_callback, 19130 void *async_cookie) 19131 { 19132 bcmx_async_req_t *async; 19133 19134 async = sal_alloc(sizeof(*async), "bcmx_async"); 19135 if (async == NULL) { 19136 if (async_callback != NULL) { 19137 (*async_callback)(async_cookie, BCM_E_MEMORY); 19138 } 19139 return; 19140 } 19141 async->next = NULL; 19142 async->type = BCMX_ASYNC_ENTRY_PORT_DTAG_MODE_SET; 19143 async->run = bcmx_async_run; 19144 async->callback = async_callback; 19145 async->cookie = async_cookie; 19146 async->args.port_dtag_mode_set.port = port; 19147 async->args.port_dtag_mode_set.mode = mode; 19148 bcm_async_add((bcm_async_req_t *)async); 19149 } 19150 19151 void 19152 bcmx_port_duplex_get_async( 19153 bcmx_lport_t port, 19154 int * duplex, 19155 bcmx_async_cb_t async_callback, 19156 void *async_cookie) 19157 { 19158 bcmx_async_req_t *async; 19159 19160 async = sal_alloc(sizeof(*async), "bcmx_async"); 19161 if (async == NULL) { 19162 if (async_callback != NULL) { 19163 (*async_callback)(async_cookie, BCM_E_MEMORY); 19164 } 19165 return; 19166 } 19167 async->next = NULL; 19168 async->type = BCMX_ASYNC_ENTRY_PORT_DUPLEX_GET; 19169 async->run = bcmx_async_run; 19170 async->callback = async_callback; 19171 async->cookie = async_cookie; 19172 async->args.port_duplex_get.port = port; 19173 async->args.port_duplex_get.duplex = duplex; 19174 bcm_async_add((bcm_async_req_t *)async); 19175 } 19176 19177 void 19178 bcmx_port_duplex_set_async( 19179 bcmx_lport_t port, 19180 int duplex, 19181 bcmx_async_cb_t async_callback, 19182 void *async_cookie) 19183 { 19184 bcmx_async_req_t *async; 19185 19186 async = sal_alloc(sizeof(*async), "bcmx_async"); 19187 if (async == NULL) { 19188 if (async_callback != NULL) { 19189 (*async_callback)(async_cookie, BCM_E_MEMORY); 19190 } 19191 return; 19192 } 19193 async->next = NULL; 19194 async->type = BCMX_ASYNC_ENTRY_PORT_DUPLEX_SET; 19195 async->run = bcmx_async_run; 19196 async->callback = async_callback; 19197 async->cookie = async_cookie; 19198 async->args.port_duplex_set.port = port; 19199 async->args.port_duplex_set.duplex = duplex; 19200 bcm_async_add((bcm_async_req_t *)async); 19201 } 19202 19203 void 19204 bcmx_port_egress_get_async( 19205 bcmx_lport_t port, 19206 int modid, 19207 bcmx_lplist_t * lplist, 19208 bcmx_async_cb_t async_callback, 19209 void *async_cookie) 19210 { 19211 bcmx_async_req_t *async; 19212 19213 async = sal_alloc(sizeof(*async), "bcmx_async"); 19214 if (async == NULL) { 19215 if (async_callback != NULL) { 19216 (*async_callback)(async_cookie, BCM_E_MEMORY); 19217 } 19218 return; 19219 } 19220 async->next = NULL; 19221 async->type = BCMX_ASYNC_ENTRY_PORT_EGRESS_GET; 19222 async->run = bcmx_async_run; 19223 async->callback = async_callback; 19224 async->cookie = async_cookie; 19225 async->args.port_egress_get.port = port; 19226 async->args.port_egress_get.modid = modid; 19227 async->args.port_egress_get.lplist = lplist; 19228 bcm_async_add((bcm_async_req_t *)async); 19229 } 19230 19231 void 19232 bcmx_port_egress_set_async( 19233 bcmx_lport_t port, 19234 int modid, 19235 bcmx_lplist_t lplist, 19236 bcmx_async_cb_t async_callback, 19237 void *async_cookie) 19238 { 19239 bcmx_async_req_t *async; 19240 19241 async = sal_alloc(sizeof(*async), "bcmx_async"); 19242 if (async == NULL) { 19243 if (async_callback != NULL) { 19244 (*async_callback)(async_cookie, BCM_E_MEMORY); 19245 } 19246 return; 19247 } 19248 async->next = NULL; 19249 async->type = BCMX_ASYNC_ENTRY_PORT_EGRESS_SET; 19250 async->run = bcmx_async_run; 19251 async->callback = async_callback; 19252 async->cookie = async_cookie; 19253 async->args.port_egress_set.port = port; 19254 async->args.port_egress_set.modid = modid; 19255 async->args.port_egress_set.lplist = lplist; 19256 bcm_async_add((bcm_async_req_t *)async); 19257 } 19258 19259 void 19260 bcmx_port_enable_get_async( 19261 bcmx_lport_t port, 19262 int * enable, 19263 bcmx_async_cb_t async_callback, 19264 void *async_cookie) 19265 { 19266 bcmx_async_req_t *async; 19267 19268 async = sal_alloc(sizeof(*async), "bcmx_async"); 19269 if (async == NULL) { 19270 if (async_callback != NULL) { 19271 (*async_callback)(async_cookie, BCM_E_MEMORY); 19272 } 19273 return; 19274 } 19275 async->next = NULL; 19276 async->type = BCMX_ASYNC_ENTRY_PORT_ENABLE_GET; 19277 async->run = bcmx_async_run; 19278 async->callback = async_callback; 19279 async->cookie = async_cookie; 19280 async->args.port_enable_get.port = port; 19281 async->args.port_enable_get.enable = enable; 19282 bcm_async_add((bcm_async_req_t *)async); 19283 } 19284 19285 void 19286 bcmx_port_enable_set_async( 19287 bcmx_lport_t port, 19288 int enable, 19289 bcmx_async_cb_t async_callback, 19290 void *async_cookie) 19291 { 19292 bcmx_async_req_t *async; 19293 19294 async = sal_alloc(sizeof(*async), "bcmx_async"); 19295 if (async == NULL) { 19296 if (async_callback != NULL) { 19297 (*async_callback)(async_cookie, BCM_E_MEMORY); 19298 } 19299 return; 19300 } 19301 async->next = NULL; 19302 async->type = BCMX_ASYNC_ENTRY_PORT_ENABLE_SET; 19303 async->run = bcmx_async_run; 19304 async->callback = async_callback; 19305 async->cookie = async_cookie; 19306 async->args.port_enable_set.port = port; 19307 async->args.port_enable_set.enable = enable; 19308 bcm_async_add((bcm_async_req_t *)async); 19309 } 19310 19311 void 19312 bcmx_port_encap_config_get_async( 19313 bcm_gport_t gport, 19314 bcmx_port_encap_config_t * encap_config, 19315 bcmx_async_cb_t async_callback, 19316 void *async_cookie) 19317 { 19318 bcmx_async_req_t *async; 19319 19320 async = sal_alloc(sizeof(*async), "bcmx_async"); 19321 if (async == NULL) { 19322 if (async_callback != NULL) { 19323 (*async_callback)(async_cookie, BCM_E_MEMORY); 19324 } 19325 return; 19326 } 19327 async->next = NULL; 19328 async->type = BCMX_ASYNC_ENTRY_PORT_ENCAP_CONFIG_GET; 19329 async->run = bcmx_async_run; 19330 async->callback = async_callback; 19331 async->cookie = async_cookie; 19332 async->args.port_encap_config_get.gport = gport; 19333 async->args.port_encap_config_get.encap_config = encap_config; 19334 bcm_async_add((bcm_async_req_t *)async); 19335 } 19336 19337 void 19338 bcmx_port_encap_config_set_async( 19339 bcm_gport_t gport, 19340 bcmx_port_encap_config_t * encap_config, 19341 bcmx_async_cb_t async_callback, 19342 void *async_cookie) 19343 { 19344 bcmx_async_req_t *async; 19345 19346 async = sal_alloc(sizeof(*async), "bcmx_async"); 19347 if (async == NULL) { 19348 if (async_callback != NULL) { 19349 (*async_callback)(async_cookie, BCM_E_MEMORY); 19350 } 19351 return; 19352 } 19353 async->next = NULL; 19354 async->type = BCMX_ASYNC_ENTRY_PORT_ENCAP_CONFIG_SET; 19355 async->run = bcmx_async_run; 19356 async->callback = async_callback; 19357 async->cookie = async_cookie; 19358 async->args.port_encap_config_set.gport = gport; 19359 async->args.port_encap_config_set.encap_config = encap_config; 19360 bcm_async_add((bcm_async_req_t *)async); 19361 } 19362 19363 void 19364 bcmx_port_encap_get_async( 19365 bcmx_lport_t port, 19366 int * mode, 19367 bcmx_async_cb_t async_callback, 19368 void *async_cookie) 19369 { 19370 bcmx_async_req_t *async; 19371 19372 async = sal_alloc(sizeof(*async), "bcmx_async"); 19373 if (async == NULL) { 19374 if (async_callback != NULL) { 19375 (*async_callback)(async_cookie, BCM_E_MEMORY); 19376 } 19377 return; 19378 } 19379 async->next = NULL; 19380 async->type = BCMX_ASYNC_ENTRY_PORT_ENCAP_GET; 19381 async->run = bcmx_async_run; 19382 async->callback = async_callback; 19383 async->cookie = async_cookie; 19384 async->args.port_encap_get.port = port; 19385 async->args.port_encap_get.mode = mode; 19386 bcm_async_add((bcm_async_req_t *)async); 19387 } 19388 19389 void 19390 bcmx_port_encap_set_async( 19391 bcmx_lport_t port, 19392 int mode, 19393 bcmx_async_cb_t async_callback, 19394 void *async_cookie) 19395 { 19396 bcmx_async_req_t *async; 19397 19398 async = sal_alloc(sizeof(*async), "bcmx_async"); 19399 if (async == NULL) { 19400 if (async_callback != NULL) { 19401 (*async_callback)(async_cookie, BCM_E_MEMORY); 19402 } 19403 return; 19404 } 19405 async->next = NULL; 19406 async->type = BCMX_ASYNC_ENTRY_PORT_ENCAP_SET; 19407 async->run = bcmx_async_run; 19408 async->callback = async_callback; 19409 async->cookie = async_cookie; 19410 async->args.port_encap_set.port = port; 19411 async->args.port_encap_set.mode = mode; 19412 bcm_async_add((bcm_async_req_t *)async); 19413 } 19414 19415 void 19416 bcmx_port_fault_get_async( 19417 bcmx_lport_t port, 19418 uint32 * flags, 19419 bcmx_async_cb_t async_callback, 19420 void *async_cookie) 19421 { 19422 bcmx_async_req_t *async; 19423 19424 async = sal_alloc(sizeof(*async), "bcmx_async"); 19425 if (async == NULL) { 19426 if (async_callback != NULL) { 19427 (*async_callback)(async_cookie, BCM_E_MEMORY); 19428 } 19429 return; 19430 } 19431 async->next = NULL; 19432 async->type = BCMX_ASYNC_ENTRY_PORT_FAULT_GET; 19433 async->run = bcmx_async_run; 19434 async->callback = async_callback; 19435 async->cookie = async_cookie; 19436 async->args.port_fault_get.port = port; 19437 async->args.port_fault_get.flags = flags; 19438 bcm_async_add((bcm_async_req_t *)async); 19439 } 19440 19441 void 19442 bcmx_port_flood_block_get_async( 19443 bcmx_lport_t ingress_port, 19444 bcmx_lport_t egress_port, 19445 uint32 * flags, 19446 bcmx_async_cb_t async_callback, 19447 void *async_cookie) 19448 { 19449 bcmx_async_req_t *async; 19450 19451 async = sal_alloc(sizeof(*async), "bcmx_async"); 19452 if (async == NULL) { 19453 if (async_callback != NULL) { 19454 (*async_callback)(async_cookie, BCM_E_MEMORY); 19455 } 19456 return; 19457 } 19458 async->next = NULL; 19459 async->type = BCMX_ASYNC_ENTRY_PORT_FLOOD_BLOCK_GET; 19460 async->run = bcmx_async_run; 19461 async->callback = async_callback; 19462 async->cookie = async_cookie; 19463 async->args.port_flood_block_get.ingress_port = ingress_port; 19464 async->args.port_flood_block_get.egress_port = egress_port; 19465 async->args.port_flood_block_get.flags = flags; 19466 bcm_async_add((bcm_async_req_t *)async); 19467 } 19468 19469 void 19470 bcmx_port_flood_block_set_async( 19471 bcmx_lport_t ingress_port, 19472 bcmx_lport_t egress_port, 19473 uint32 flags, 19474 bcmx_async_cb_t async_callback, 19475 void *async_cookie) 19476 { 19477 bcmx_async_req_t *async; 19478 19479 async = sal_alloc(sizeof(*async), "bcmx_async"); 19480 if (async == NULL) { 19481 if (async_callback != NULL) { 19482 (*async_callback)(async_cookie, BCM_E_MEMORY); 19483 } 19484 return; 19485 } 19486 async->next = NULL; 19487 async->type = BCMX_ASYNC_ENTRY_PORT_FLOOD_BLOCK_SET; 19488 async->run = bcmx_async_run; 19489 async->callback = async_callback; 19490 async->cookie = async_cookie; 19491 async->args.port_flood_block_set.ingress_port = ingress_port; 19492 async->args.port_flood_block_set.egress_port = egress_port; 19493 async->args.port_flood_block_set.flags = flags; 19494 bcm_async_add((bcm_async_req_t *)async); 19495 } 19496 19497 void 19498 bcmx_port_force_vlan_get_async( 19499 bcmx_lport_t port, 19500 bcm_vlan_t * vlan, 19501 int * pkt_prio, 19502 uint32 * flags, 19503 bcmx_async_cb_t async_callback, 19504 void *async_cookie) 19505 { 19506 bcmx_async_req_t *async; 19507 19508 async = sal_alloc(sizeof(*async), "bcmx_async"); 19509 if (async == NULL) { 19510 if (async_callback != NULL) { 19511 (*async_callback)(async_cookie, BCM_E_MEMORY); 19512 } 19513 return; 19514 } 19515 async->next = NULL; 19516 async->type = BCMX_ASYNC_ENTRY_PORT_FORCE_VLAN_GET; 19517 async->run = bcmx_async_run; 19518 async->callback = async_callback; 19519 async->cookie = async_cookie; 19520 async->args.port_force_vlan_get.port = port; 19521 async->args.port_force_vlan_get.vlan = vlan; 19522 async->args.port_force_vlan_get.pkt_prio = pkt_prio; 19523 async->args.port_force_vlan_get.flags = flags; 19524 bcm_async_add((bcm_async_req_t *)async); 19525 } 19526 19527 void 19528 bcmx_port_force_vlan_set_async( 19529 bcmx_lport_t port, 19530 bcm_vlan_t vlan, 19531 int pkt_prio, 19532 uint32 flags, 19533 bcmx_async_cb_t async_callback, 19534 void *async_cookie) 19535 { 19536 bcmx_async_req_t *async; 19537 19538 async = sal_alloc(sizeof(*async), "bcmx_async"); 19539 if (async == NULL) { 19540 if (async_callback != NULL) { 19541 (*async_callback)(async_cookie, BCM_E_MEMORY); 19542 } 19543 return; 19544 } 19545 async->next = NULL; 19546 async->type = BCMX_ASYNC_ENTRY_PORT_FORCE_VLAN_SET; 19547 async->run = bcmx_async_run; 19548 async->callback = async_callback; 19549 async->cookie = async_cookie; 19550 async->args.port_force_vlan_set.port = port; 19551 async->args.port_force_vlan_set.vlan = vlan; 19552 async->args.port_force_vlan_set.pkt_prio = pkt_prio; 19553 async->args.port_force_vlan_set.flags = flags; 19554 bcm_async_add((bcm_async_req_t *)async); 19555 } 19556 19557 void 19558 bcmx_port_frame_max_get_async( 19559 bcmx_lport_t port, 19560 int * size, 19561 bcmx_async_cb_t async_callback, 19562 void *async_cookie) 19563 { 19564 bcmx_async_req_t *async; 19565 19566 async = sal_alloc(sizeof(*async), "bcmx_async"); 19567 if (async == NULL) { 19568 if (async_callback != NULL) { 19569 (*async_callback)(async_cookie, BCM_E_MEMORY); 19570 } 19571 return; 19572 } 19573 async->next = NULL; 19574 async->type = BCMX_ASYNC_ENTRY_PORT_FRAME_MAX_GET; 19575 async->run = bcmx_async_run; 19576 async->callback = async_callback; 19577 async->cookie = async_cookie; 19578 async->args.port_frame_max_get.port = port; 19579 async->args.port_frame_max_get.size = size; 19580 bcm_async_add((bcm_async_req_t *)async); 19581 } 19582 19583 void 19584 bcmx_port_frame_max_set_async( 19585 bcmx_lport_t port, 19586 int size, 19587 bcmx_async_cb_t async_callback, 19588 void *async_cookie) 19589 { 19590 bcmx_async_req_t *async; 19591 19592 async = sal_alloc(sizeof(*async), "bcmx_async"); 19593 if (async == NULL) { 19594 if (async_callback != NULL) { 19595 (*async_callback)(async_cookie, BCM_E_MEMORY); 19596 } 19597 return; 19598 } 19599 async->next = NULL; 19600 async->type = BCMX_ASYNC_ENTRY_PORT_FRAME_MAX_SET; 19601 async->run = bcmx_async_run; 19602 async->callback = async_callback; 19603 async->cookie = async_cookie; 19604 async->args.port_frame_max_set.port = port; 19605 async->args.port_frame_max_set.size = size; 19606 bcm_async_add((bcm_async_req_t *)async); 19607 } 19608 19609 void 19610 bcmx_port_gport_get_async( 19611 bcmx_lport_t port, 19612 bcm_gport_t * gport, 19613 bcmx_async_cb_t async_callback, 19614 void *async_cookie) 19615 { 19616 bcmx_async_req_t *async; 19617 19618 async = sal_alloc(sizeof(*async), "bcmx_async"); 19619 if (async == NULL) { 19620 if (async_callback != NULL) { 19621 (*async_callback)(async_cookie, BCM_E_MEMORY); 19622 } 19623 return; 19624 } 19625 async->next = NULL; 19626 async->type = BCMX_ASYNC_ENTRY_PORT_GPORT_GET; 19627 async->run = bcmx_async_run; 19628 async->callback = async_callback; 19629 async->cookie = async_cookie; 19630 async->args.port_gport_get.port = port; 19631 async->args.port_gport_get.gport = gport; 19632 bcm_async_add((bcm_async_req_t *)async); 19633 } 19634 19635 void 19636 bcmx_port_ifg_get_async( 19637 bcmx_lport_t port, 19638 int speed, 19639 bcm_port_duplex_t duplex, 19640 int * bit_times, 19641 bcmx_async_cb_t async_callback, 19642 void *async_cookie) 19643 { 19644 bcmx_async_req_t *async; 19645 19646 async = sal_alloc(sizeof(*async), "bcmx_async"); 19647 if (async == NULL) { 19648 if (async_callback != NULL) { 19649 (*async_callback)(async_cookie, BCM_E_MEMORY); 19650 } 19651 return; 19652 } 19653 async->next = NULL; 19654 async->type = BCMX_ASYNC_ENTRY_PORT_IFG_GET; 19655 async->run = bcmx_async_run; 19656 async->callback = async_callback; 19657 async->cookie = async_cookie; 19658 async->args.port_ifg_get.port = port; 19659 async->args.port_ifg_get.speed = speed; 19660 async->args.port_ifg_get.duplex = duplex; 19661 async->args.port_ifg_get.bit_times = bit_times; 19662 bcm_async_add((bcm_async_req_t *)async); 19663 } 19664 19665 void 19666 bcmx_port_ifg_set_async( 19667 bcmx_lport_t port, 19668 int speed, 19669 bcm_port_duplex_t duplex, 19670 int bit_times, 19671 bcmx_async_cb_t async_callback, 19672 void *async_cookie) 19673 { 19674 bcmx_async_req_t *async; 19675 19676 async = sal_alloc(sizeof(*async), "bcmx_async"); 19677 if (async == NULL) { 19678 if (async_callback != NULL) { 19679 (*async_callback)(async_cookie, BCM_E_MEMORY); 19680 } 19681 return; 19682 } 19683 async->next = NULL; 19684 async->type = BCMX_ASYNC_ENTRY_PORT_IFG_SET; 19685 async->run = bcmx_async_run; 19686 async->callback = async_callback; 19687 async->cookie = async_cookie; 19688 async->args.port_ifg_set.port = port; 19689 async->args.port_ifg_set.speed = speed; 19690 async->args.port_ifg_set.duplex = duplex; 19691 async->args.port_ifg_set.bit_times = bit_times; 19692 bcm_async_add((bcm_async_req_t *)async); 19693 } 19694 19695 void 19696 bcmx_port_ifilter_get_async( 19697 bcmx_lport_t port, 19698 int * mode, 19699 bcmx_async_cb_t async_callback, 19700 void *async_cookie) 19701 { 19702 bcmx_async_req_t *async; 19703 19704 async = sal_alloc(sizeof(*async), "bcmx_async"); 19705 if (async == NULL) { 19706 if (async_callback != NULL) { 19707 (*async_callback)(async_cookie, BCM_E_MEMORY); 19708 } 19709 return; 19710 } 19711 async->next = NULL; 19712 async->type = BCMX_ASYNC_ENTRY_PORT_IFILTER_GET; 19713 async->run = bcmx_async_run; 19714 async->callback = async_callback; 19715 async->cookie = async_cookie; 19716 async->args.port_ifilter_get.port = port; 19717 async->args.port_ifilter_get.mode = mode; 19718 bcm_async_add((bcm_async_req_t *)async); 19719 } 19720 19721 void 19722 bcmx_port_ifilter_set_async( 19723 bcmx_lport_t port, 19724 int mode, 19725 bcmx_async_cb_t async_callback, 19726 void *async_cookie) 19727 { 19728 bcmx_async_req_t *async; 19729 19730 async = sal_alloc(sizeof(*async), "bcmx_async"); 19731 if (async == NULL) { 19732 if (async_callback != NULL) { 19733 (*async_callback)(async_cookie, BCM_E_MEMORY); 19734 } 19735 return; 19736 } 19737 async->next = NULL; 19738 async->type = BCMX_ASYNC_ENTRY_PORT_IFILTER_SET; 19739 async->run = bcmx_async_run; 19740 async->callback = async_callback; 19741 async->cookie = async_cookie; 19742 async->args.port_ifilter_set.port = port; 19743 async->args.port_ifilter_set.mode = mode; 19744 bcm_async_add((bcm_async_req_t *)async); 19745 } 19746 19747 void 19748 bcmx_port_info_get_async( 19749 bcmx_lport_t port, 19750 bcm_port_info_t * info, 19751 bcmx_async_cb_t async_callback, 19752 void *async_cookie) 19753 { 19754 bcmx_async_req_t *async; 19755 19756 async = sal_alloc(sizeof(*async), "bcmx_async"); 19757 if (async == NULL) { 19758 if (async_callback != NULL) { 19759 (*async_callback)(async_cookie, BCM_E_MEMORY); 19760 } 19761 return; 19762 } 19763 async->next = NULL; 19764 async->type = BCMX_ASYNC_ENTRY_PORT_INFO_GET; 19765 async->run = bcmx_async_run; 19766 async->callback = async_callback; 19767 async->cookie = async_cookie; 19768 async->args.port_info_get.port = port; 19769 async->args.port_info_get.info = info; 19770 bcm_async_add((bcm_async_req_t *)async); 19771 } 19772 19773 void 19774 bcmx_port_info_restore_async( 19775 bcmx_lport_t port, 19776 bcm_port_info_t * info, 19777 bcmx_async_cb_t async_callback, 19778 void *async_cookie) 19779 { 19780 bcmx_async_req_t *async; 19781 19782 async = sal_alloc(sizeof(*async), "bcmx_async"); 19783 if (async == NULL) { 19784 if (async_callback != NULL) { 19785 (*async_callback)(async_cookie, BCM_E_MEMORY); 19786 } 19787 return; 19788 } 19789 async->next = NULL; 19790 async->type = BCMX_ASYNC_ENTRY_PORT_INFO_RESTORE; 19791 async->run = bcmx_async_run; 19792 async->callback = async_callback; 19793 async->cookie = async_cookie; 19794 async->args.port_info_restore.port = port; 19795 async->args.port_info_restore.info = info; 19796 bcm_async_add((bcm_async_req_t *)async); 19797 } 19798 19799 void 19800 bcmx_port_info_save_async( 19801 bcmx_lport_t port, 19802 bcm_port_info_t * info, 19803 bcmx_async_cb_t async_callback, 19804 void *async_cookie) 19805 { 19806 bcmx_async_req_t *async; 19807 19808 async = sal_alloc(sizeof(*async), "bcmx_async"); 19809 if (async == NULL) { 19810 if (async_callback != NULL) { 19811 (*async_callback)(async_cookie, BCM_E_MEMORY); 19812 } 19813 return; 19814 } 19815 async->next = NULL; 19816 async->type = BCMX_ASYNC_ENTRY_PORT_INFO_SAVE; 19817 async->run = bcmx_async_run; 19818 async->callback = async_callback; 19819 async->cookie = async_cookie; 19820 async->args.port_info_save.port = port; 19821 async->args.port_info_save.info = info; 19822 bcm_async_add((bcm_async_req_t *)async); 19823 } 19824 19825 void 19826 bcmx_port_info_set_async( 19827 bcmx_lport_t port, 19828 bcm_port_info_t * info, 19829 bcmx_async_cb_t async_callback, 19830 void *async_cookie) 19831 { 19832 bcmx_async_req_t *async; 19833 19834 async = sal_alloc(sizeof(*async), "bcmx_async"); 19835 if (async == NULL) { 19836 if (async_callback != NULL) { 19837 (*async_callback)(async_cookie, BCM_E_MEMORY); 19838 } 19839 return; 19840 } 19841 async->next = NULL; 19842 async->type = BCMX_ASYNC_ENTRY_PORT_INFO_SET; 19843 async->run = bcmx_async_run; 19844 async->callback = async_callback; 19845 async->cookie = async_cookie; 19846 async->args.port_info_set.port = port; 19847 async->args.port_info_set.info = info; 19848 bcm_async_add((bcm_async_req_t *)async); 19849 } 19850 19851 void 19852 bcmx_port_inner_tpid_get_async( 19853 bcmx_lport_t port, 19854 uint16 * tpid, 19855 bcmx_async_cb_t async_callback, 19856 void *async_cookie) 19857 { 19858 bcmx_async_req_t *async; 19859 19860 async = sal_alloc(sizeof(*async), "bcmx_async"); 19861 if (async == NULL) { 19862 if (async_callback != NULL) { 19863 (*async_callback)(async_cookie, BCM_E_MEMORY); 19864 } 19865 return; 19866 } 19867 async->next = NULL; 19868 async->type = BCMX_ASYNC_ENTRY_PORT_INNER_TPID_GET; 19869 async->run = bcmx_async_run; 19870 async->callback = async_callback; 19871 async->cookie = async_cookie; 19872 async->args.port_inner_tpid_get.port = port; 19873 async->args.port_inner_tpid_get.tpid = tpid; 19874 bcm_async_add((bcm_async_req_t *)async); 19875 } 19876 19877 void 19878 bcmx_port_inner_tpid_set_async( 19879 bcmx_lport_t port, 19880 uint16 tpid, 19881 bcmx_async_cb_t async_callback, 19882 void *async_cookie) 19883 { 19884 bcmx_async_req_t *async; 19885 19886 async = sal_alloc(sizeof(*async), "bcmx_async"); 19887 if (async == NULL) { 19888 if (async_callback != NULL) { 19889 (*async_callback)(async_cookie, BCM_E_MEMORY); 19890 } 19891 return; 19892 } 19893 async->next = NULL; 19894 async->type = BCMX_ASYNC_ENTRY_PORT_INNER_TPID_SET; 19895 async->run = bcmx_async_run; 19896 async->callback = async_callback; 19897 async->cookie = async_cookie; 19898 async->args.port_inner_tpid_set.port = port; 19899 async->args.port_inner_tpid_set.tpid = tpid; 19900 bcm_async_add((bcm_async_req_t *)async); 19901 } 19902 19903 void 19904 bcmx_port_interface_get_async( 19905 bcmx_lport_t port, 19906 bcm_port_if_t * intf, 19907 bcmx_async_cb_t async_callback, 19908 void *async_cookie) 19909 { 19910 bcmx_async_req_t *async; 19911 19912 async = sal_alloc(sizeof(*async), "bcmx_async"); 19913 if (async == NULL) { 19914 if (async_callback != NULL) { 19915 (*async_callback)(async_cookie, BCM_E_MEMORY); 19916 } 19917 return; 19918 } 19919 async->next = NULL; 19920 async->type = BCMX_ASYNC_ENTRY_PORT_INTERFACE_GET; 19921 async->run = bcmx_async_run; 19922 async->callback = async_callback; 19923 async->cookie = async_cookie; 19924 async->args.port_interface_get.port = port; 19925 async->args.port_interface_get.intf = intf; 19926 bcm_async_add((bcm_async_req_t *)async); 19927 } 19928 19929 void 19930 bcmx_port_interface_set_async( 19931 bcmx_lport_t port, 19932 bcm_port_if_t intf, 19933 bcmx_async_cb_t async_callback, 19934 void *async_cookie) 19935 { 19936 bcmx_async_req_t *async; 19937 19938 async = sal_alloc(sizeof(*async), "bcmx_async"); 19939 if (async == NULL) { 19940 if (async_callback != NULL) { 19941 (*async_callback)(async_cookie, BCM_E_MEMORY); 19942 } 19943 return; 19944 } 19945 async->next = NULL; 19946 async->type = BCMX_ASYNC_ENTRY_PORT_INTERFACE_SET; 19947 async->run = bcmx_async_run; 19948 async->callback = async_callback; 19949 async->cookie = async_cookie; 19950 async->args.port_interface_set.port = port; 19951 async->args.port_interface_set.intf = intf; 19952 bcm_async_add((bcm_async_req_t *)async); 19953 } 19954 19955 void 19956 bcmx_port_ipmc_modify_get_async( 19957 bcmx_lport_t port, 19958 uint32 * flags, 19959 bcmx_async_cb_t async_callback, 19960 void *async_cookie) 19961 { 19962 bcmx_async_req_t *async; 19963 19964 async = sal_alloc(sizeof(*async), "bcmx_async"); 19965 if (async == NULL) { 19966 if (async_callback != NULL) { 19967 (*async_callback)(async_cookie, BCM_E_MEMORY); 19968 } 19969 return; 19970 } 19971 async->next = NULL; 19972 async->type = BCMX_ASYNC_ENTRY_PORT_IPMC_MODIFY_GET; 19973 async->run = bcmx_async_run; 19974 async->callback = async_callback; 19975 async->cookie = async_cookie; 19976 async->args.port_ipmc_modify_get.port = port; 19977 async->args.port_ipmc_modify_get.flags = flags; 19978 bcm_async_add((bcm_async_req_t *)async); 19979 } 19980 19981 void 19982 bcmx_port_ipmc_modify_set_async( 19983 bcmx_lport_t port, 19984 uint32 flags, 19985 bcmx_async_cb_t async_callback, 19986 void *async_cookie) 19987 { 19988 bcmx_async_req_t *async; 19989 19990 async = sal_alloc(sizeof(*async), "bcmx_async"); 19991 if (async == NULL) { 19992 if (async_callback != NULL) { 19993 (*async_callback)(async_cookie, BCM_E_MEMORY); 19994 } 19995 return; 19996 } 19997 async->next = NULL; 19998 async->type = BCMX_ASYNC_ENTRY_PORT_IPMC_MODIFY_SET; 19999 async->run = bcmx_async_run; 20000 async->callback = async_callback; 20001 async->cookie = async_cookie; 20002 async->args.port_ipmc_modify_set.port = port; 20003 async->args.port_ipmc_modify_set.flags = flags; 20004 bcm_async_add((bcm_async_req_t *)async); 20005 } 20006 20007 void 20008 bcmx_port_jam_get_async( 20009 bcmx_lport_t port, 20010 int * enable, 20011 bcmx_async_cb_t async_callback, 20012 void *async_cookie) 20013 { 20014 bcmx_async_req_t *async; 20015 20016 async = sal_alloc(sizeof(*async), "bcmx_async"); 20017 if (async == NULL) { 20018 if (async_callback != NULL) { 20019 (*async_callback)(async_cookie, BCM_E_MEMORY); 20020 } 20021 return; 20022 } 20023 async->next = NULL; 20024 async->type = BCMX_ASYNC_ENTRY_PORT_JAM_GET; 20025 async->run = bcmx_async_run; 20026 async->callback = async_callback; 20027 async->cookie = async_cookie; 20028 async->args.port_jam_get.port = port; 20029 async->args.port_jam_get.enable = enable; 20030 bcm_async_add((bcm_async_req_t *)async); 20031 } 20032 20033 void 20034 bcmx_port_jam_set_async( 20035 bcmx_lport_t port, 20036 int enable, 20037 bcmx_async_cb_t async_callback, 20038 void *async_cookie) 20039 { 20040 bcmx_async_req_t *async; 20041 20042 async = sal_alloc(sizeof(*async), "bcmx_async"); 20043 if (async == NULL) { 20044 if (async_callback != NULL) { 20045 (*async_callback)(async_cookie, BCM_E_MEMORY); 20046 } 20047 return; 20048 } 20049 async->next = NULL; 20050 async->type = BCMX_ASYNC_ENTRY_PORT_JAM_SET; 20051 async->run = bcmx_async_run; 20052 async->callback = async_callback; 20053 async->cookie = async_cookie; 20054 async->args.port_jam_set.port = port; 20055 async->args.port_jam_set.enable = enable; 20056 bcm_async_add((bcm_async_req_t *)async); 20057 } 20058 20059 void 20060 bcmx_port_l3_enable_get_async( 20061 bcmx_lport_t port, 20062 int * enable, 20063 bcmx_async_cb_t async_callback, 20064 void *async_cookie) 20065 { 20066 bcmx_async_req_t *async; 20067 20068 async = sal_alloc(sizeof(*async), "bcmx_async"); 20069 if (async == NULL) { 20070 if (async_callback != NULL) { 20071 (*async_callback)(async_cookie, BCM_E_MEMORY); 20072 } 20073 return; 20074 } 20075 async->next = NULL; 20076 async->type = BCMX_ASYNC_ENTRY_PORT_L3_ENABLE_GET; 20077 async->run = bcmx_async_run; 20078 async->callback = async_callback; 20079 async->cookie = async_cookie; 20080 async->args.port_l3_enable_get.port = port; 20081 async->args.port_l3_enable_get.enable = enable; 20082 bcm_async_add((bcm_async_req_t *)async); 20083 } 20084 20085 void 20086 bcmx_port_l3_enable_set_async( 20087 bcmx_lport_t port, 20088 int enable, 20089 bcmx_async_cb_t async_callback, 20090 void *async_cookie) 20091 { 20092 bcmx_async_req_t *async; 20093 20094 async = sal_alloc(sizeof(*async), "bcmx_async"); 20095 if (async == NULL) { 20096 if (async_callback != NULL) { 20097 (*async_callback)(async_cookie, BCM_E_MEMORY); 20098 } 20099 return; 20100 } 20101 async->next = NULL; 20102 async->type = BCMX_ASYNC_ENTRY_PORT_L3_ENABLE_SET; 20103 async->run = bcmx_async_run; 20104 async->callback = async_callback; 20105 async->cookie = async_cookie; 20106 async->args.port_l3_enable_set.port = port; 20107 async->args.port_l3_enable_set.enable = enable; 20108 bcm_async_add((bcm_async_req_t *)async); 20109 } 20110 20111 void 20112 bcmx_port_l3_modify_get_async( 20113 bcmx_lport_t port, 20114 uint32 * flags, 20115 bcmx_async_cb_t async_callback, 20116 void *async_cookie) 20117 { 20118 bcmx_async_req_t *async; 20119 20120 async = sal_alloc(sizeof(*async), "bcmx_async"); 20121 if (async == NULL) { 20122 if (async_callback != NULL) { 20123 (*async_callback)(async_cookie, BCM_E_MEMORY); 20124 } 20125 return; 20126 } 20127 async->next = NULL; 20128 async->type = BCMX_ASYNC_ENTRY_PORT_L3_MODIFY_GET; 20129 async->run = bcmx_async_run; 20130 async->callback = async_callback; 20131 async->cookie = async_cookie; 20132 async->args.port_l3_modify_get.port = port; 20133 async->args.port_l3_modify_get.flags = flags; 20134 bcm_async_add((bcm_async_req_t *)async); 20135 } 20136 20137 void 20138 bcmx_port_l3_modify_set_async( 20139 bcmx_lport_t port, 20140 uint32 flags, 20141 bcmx_async_cb_t async_callback, 20142 void *async_cookie) 20143 { 20144 bcmx_async_req_t *async; 20145 20146 async = sal_alloc(sizeof(*async), "bcmx_async"); 20147 if (async == NULL) { 20148 if (async_callback != NULL) { 20149 (*async_callback)(async_cookie, BCM_E_MEMORY); 20150 } 20151 return; 20152 } 20153 async->next = NULL; 20154 async->type = BCMX_ASYNC_ENTRY_PORT_L3_MODIFY_SET; 20155 async->run = bcmx_async_run; 20156 async->callback = async_callback; 20157 async->cookie = async_cookie; 20158 async->args.port_l3_modify_set.port = port; 20159 async->args.port_l3_modify_set.flags = flags; 20160 bcm_async_add((bcm_async_req_t *)async); 20161 } 20162 20163 void 20164 bcmx_port_l3_mtu_get_async( 20165 bcmx_lport_t port, 20166 int * size, 20167 bcmx_async_cb_t async_callback, 20168 void *async_cookie) 20169 { 20170 bcmx_async_req_t *async; 20171 20172 async = sal_alloc(sizeof(*async), "bcmx_async"); 20173 if (async == NULL) { 20174 if (async_callback != NULL) { 20175 (*async_callback)(async_cookie, BCM_E_MEMORY); 20176 } 20177 return; 20178 } 20179 async->next = NULL; 20180 async->type = BCMX_ASYNC_ENTRY_PORT_L3_MTU_GET; 20181 async->run = bcmx_async_run; 20182 async->callback = async_callback; 20183 async->cookie = async_cookie; 20184 async->args.port_l3_mtu_get.port = port; 20185 async->args.port_l3_mtu_get.size = size; 20186 bcm_async_add((bcm_async_req_t *)async); 20187 } 20188 20189 void 20190 bcmx_port_l3_mtu_set_async( 20191 bcmx_lport_t port, 20192 int size, 20193 bcmx_async_cb_t async_callback, 20194 void *async_cookie) 20195 { 20196 bcmx_async_req_t *async; 20197 20198 async = sal_alloc(sizeof(*async), "bcmx_async"); 20199 if (async == NULL) { 20200 if (async_callback != NULL) { 20201 (*async_callback)(async_cookie, BCM_E_MEMORY); 20202 } 20203 return; 20204 } 20205 async->next = NULL; 20206 async->type = BCMX_ASYNC_ENTRY_PORT_L3_MTU_SET; 20207 async->run = bcmx_async_run; 20208 async->callback = async_callback; 20209 async->cookie = async_cookie; 20210 async->args.port_l3_mtu_set.port = port; 20211 async->args.port_l3_mtu_set.size = size; 20212 bcm_async_add((bcm_async_req_t *)async); 20213 } 20214 20215 void 20216 bcmx_port_learn_get_async( 20217 bcmx_lport_t port, 20218 uint32 * flags, 20219 bcmx_async_cb_t async_callback, 20220 void *async_cookie) 20221 { 20222 bcmx_async_req_t *async; 20223 20224 async = sal_alloc(sizeof(*async), "bcmx_async"); 20225 if (async == NULL) { 20226 if (async_callback != NULL) { 20227 (*async_callback)(async_cookie, BCM_E_MEMORY); 20228 } 20229 return; 20230 } 20231 async->next = NULL; 20232 async->type = BCMX_ASYNC_ENTRY_PORT_LEARN_GET; 20233 async->run = bcmx_async_run; 20234 async->callback = async_callback; 20235 async->cookie = async_cookie; 20236 async->args.port_learn_get.port = port; 20237 async->args.port_learn_get.flags = flags; 20238 bcm_async_add((bcm_async_req_t *)async); 20239 } 20240 20241 void 20242 bcmx_port_learn_modify_async( 20243 bcmx_lport_t port, 20244 uint32 add, 20245 uint32 remove, 20246 bcmx_async_cb_t async_callback, 20247 void *async_cookie) 20248 { 20249 bcmx_async_req_t *async; 20250 20251 async = sal_alloc(sizeof(*async), "bcmx_async"); 20252 if (async == NULL) { 20253 if (async_callback != NULL) { 20254 (*async_callback)(async_cookie, BCM_E_MEMORY); 20255 } 20256 return; 20257 } 20258 async->next = NULL; 20259 async->type = BCMX_ASYNC_ENTRY_PORT_LEARN_MODIFY; 20260 async->run = bcmx_async_run; 20261 async->callback = async_callback; 20262 async->cookie = async_cookie; 20263 async->args.port_learn_modify.port = port; 20264 async->args.port_learn_modify.add = add; 20265 async->args.port_learn_modify.remove = remove; 20266 bcm_async_add((bcm_async_req_t *)async); 20267 } 20268 20269 void 20270 bcmx_port_learn_set_async( 20271 bcmx_lport_t port, 20272 uint32 flags, 20273 bcmx_async_cb_t async_callback, 20274 void *async_cookie) 20275 { 20276 bcmx_async_req_t *async; 20277 20278 async = sal_alloc(sizeof(*async), "bcmx_async"); 20279 if (async == NULL) { 20280 if (async_callback != NULL) { 20281 (*async_callback)(async_cookie, BCM_E_MEMORY); 20282 } 20283 return; 20284 } 20285 async->next = NULL; 20286 async->type = BCMX_ASYNC_ENTRY_PORT_LEARN_SET; 20287 async->run = bcmx_async_run; 20288 async->callback = async_callback; 20289 async->cookie = async_cookie; 20290 async->args.port_learn_set.port = port; 20291 async->args.port_learn_set.flags = flags; 20292 bcm_async_add((bcm_async_req_t *)async); 20293 } 20294 20295 void 20296 bcmx_port_link_failed_clear_async( 20297 bcm_gport_t port, 20298 bcmx_async_cb_t async_callback, 20299 void *async_cookie) 20300 { 20301 bcmx_async_req_t *async; 20302 20303 async = sal_alloc(sizeof(*async), "bcmx_async"); 20304 if (async == NULL) { 20305 if (async_callback != NULL) { 20306 (*async_callback)(async_cookie, BCM_E_MEMORY); 20307 } 20308 return; 20309 } 20310 async->next = NULL; 20311 async->type = BCMX_ASYNC_ENTRY_PORT_LINK_FAILED_CLEAR; 20312 async->run = bcmx_async_run; 20313 async->callback = async_callback; 20314 async->cookie = async_cookie; 20315 async->args.port_link_failed_clear.port = port; 20316 bcm_async_add((bcm_async_req_t *)async); 20317 } 20318 20319 void 20320 bcmx_port_link_status_get_async( 20321 bcmx_lport_t port, 20322 int * status, 20323 bcmx_async_cb_t async_callback, 20324 void *async_cookie) 20325 { 20326 bcmx_async_req_t *async; 20327 20328 async = sal_alloc(sizeof(*async), "bcmx_async"); 20329 if (async == NULL) { 20330 if (async_callback != NULL) { 20331 (*async_callback)(async_cookie, BCM_E_MEMORY); 20332 } 20333 return; 20334 } 20335 async->next = NULL; 20336 async->type = BCMX_ASYNC_ENTRY_PORT_LINK_STATUS_GET; 20337 async->run = bcmx_async_run; 20338 async->callback = async_callback; 20339 async->cookie = async_cookie; 20340 async->args.port_link_status_get.port = port; 20341 async->args.port_link_status_get.status = status; 20342 bcm_async_add((bcm_async_req_t *)async); 20343 } 20344 20345 void 20346 bcmx_port_linkscan_get_async( 20347 bcmx_lport_t port, 20348 int * linkscan, 20349 bcmx_async_cb_t async_callback, 20350 void *async_cookie) 20351 { 20352 bcmx_async_req_t *async; 20353 20354 async = sal_alloc(sizeof(*async), "bcmx_async"); 20355 if (async == NULL) { 20356 if (async_callback != NULL) { 20357 (*async_callback)(async_cookie, BCM_E_MEMORY); 20358 } 20359 return; 20360 } 20361 async->next = NULL; 20362 async->type = BCMX_ASYNC_ENTRY_PORT_LINKSCAN_GET; 20363 async->run = bcmx_async_run; 20364 async->callback = async_callback; 20365 async->cookie = async_cookie; 20366 async->args.port_linkscan_get.port = port; 20367 async->args.port_linkscan_get.linkscan = linkscan; 20368 bcm_async_add((bcm_async_req_t *)async); 20369 } 20370 20371 void 20372 bcmx_port_linkscan_set_async( 20373 bcmx_lport_t port, 20374 int linkscan, 20375 bcmx_async_cb_t async_callback, 20376 void *async_cookie) 20377 { 20378 bcmx_async_req_t *async; 20379 20380 async = sal_alloc(sizeof(*async), "bcmx_async"); 20381 if (async == NULL) { 20382 if (async_callback != NULL) { 20383 (*async_callback)(async_cookie, BCM_E_MEMORY); 20384 } 20385 return; 20386 } 20387 async->next = NULL; 20388 async->type = BCMX_ASYNC_ENTRY_PORT_LINKSCAN_SET; 20389 async->run = bcmx_async_run; 20390 async->callback = async_callback; 20391 async->cookie = async_cookie; 20392 async->args.port_linkscan_set.port = port; 20393 async->args.port_linkscan_set.linkscan = linkscan; 20394 bcm_async_add((bcm_async_req_t *)async); 20395 } 20396 20397 void 20398 bcmx_port_loopback_get_async( 20399 bcmx_lport_t port, 20400 int * loopback, 20401 bcmx_async_cb_t async_callback, 20402 void *async_cookie) 20403 { 20404 bcmx_async_req_t *async; 20405 20406 async = sal_alloc(sizeof(*async), "bcmx_async"); 20407 if (async == NULL) { 20408 if (async_callback != NULL) { 20409 (*async_callback)(async_cookie, BCM_E_MEMORY); 20410 } 20411 return; 20412 } 20413 async->next = NULL; 20414 async->type = BCMX_ASYNC_ENTRY_PORT_LOOPBACK_GET; 20415 async->run = bcmx_async_run; 20416 async->callback = async_callback; 20417 async->cookie = async_cookie; 20418 async->args.port_loopback_get.port = port; 20419 async->args.port_loopback_get.loopback = loopback; 20420 bcm_async_add((bcm_async_req_t *)async); 20421 } 20422 20423 void 20424 bcmx_port_loopback_set_async( 20425 bcmx_lport_t port, 20426 int loopback, 20427 bcmx_async_cb_t async_callback, 20428 void *async_cookie) 20429 { 20430 bcmx_async_req_t *async; 20431 20432 async = sal_alloc(sizeof(*async), "bcmx_async"); 20433 if (async == NULL) { 20434 if (async_callback != NULL) { 20435 (*async_callback)(async_cookie, BCM_E_MEMORY); 20436 } 20437 return; 20438 } 20439 async->next = NULL; 20440 async->type = BCMX_ASYNC_ENTRY_PORT_LOOPBACK_SET; 20441 async->run = bcmx_async_run; 20442 async->callback = async_callback; 20443 async->cookie = async_cookie; 20444 async->args.port_loopback_set.port = port; 20445 async->args.port_loopback_set.loopback = loopback; 20446 bcm_async_add((bcm_async_req_t *)async); 20447 } 20448 20449 void 20450 bcmx_port_lplist_populate_async( 20451 bcmx_lplist_t * list, 20452 uint32 flags, 20453 bcmx_async_cb_t async_callback, 20454 void *async_cookie) 20455 { 20456 bcmx_async_req_t *async; 20457 20458 async = sal_alloc(sizeof(*async), "bcmx_async"); 20459 if (async == NULL) { 20460 if (async_callback != NULL) { 20461 (*async_callback)(async_cookie, BCM_E_MEMORY); 20462 } 20463 return; 20464 } 20465 async->next = NULL; 20466 async->type = BCMX_ASYNC_ENTRY_PORT_LPLIST_POPULATE; 20467 async->run = bcmx_async_run; 20468 async->callback = async_callback; 20469 async->cookie = async_cookie; 20470 async->args.port_lplist_populate.list = list; 20471 async->args.port_lplist_populate.flags = flags; 20472 bcm_async_add((bcm_async_req_t *)async); 20473 } 20474 20475 void 20476 bcmx_port_master_get_async( 20477 bcmx_lport_t port, 20478 int * ms, 20479 bcmx_async_cb_t async_callback, 20480 void *async_cookie) 20481 { 20482 bcmx_async_req_t *async; 20483 20484 async = sal_alloc(sizeof(*async), "bcmx_async"); 20485 if (async == NULL) { 20486 if (async_callback != NULL) { 20487 (*async_callback)(async_cookie, BCM_E_MEMORY); 20488 } 20489 return; 20490 } 20491 async->next = NULL; 20492 async->type = BCMX_ASYNC_ENTRY_PORT_MASTER_GET; 20493 async->run = bcmx_async_run; 20494 async->callback = async_callback; 20495 async->cookie = async_cookie; 20496 async->args.port_master_get.port = port; 20497 async->args.port_master_get.ms = ms; 20498 bcm_async_add((bcm_async_req_t *)async); 20499 } 20500 20501 void 20502 bcmx_port_master_set_async( 20503 bcmx_lport_t port, 20504 int ms, 20505 bcmx_async_cb_t async_callback, 20506 void *async_cookie) 20507 { 20508 bcmx_async_req_t *async; 20509 20510 async = sal_alloc(sizeof(*async), "bcmx_async"); 20511 if (async == NULL) { 20512 if (async_callback != NULL) { 20513 (*async_callback)(async_cookie, BCM_E_MEMORY); 20514 } 20515 return; 20516 } 20517 async->next = NULL; 20518 async->type = BCMX_ASYNC_ENTRY_PORT_MASTER_SET; 20519 async->run = bcmx_async_run; 20520 async->callback = async_callback; 20521 async->cookie = async_cookie; 20522 async->args.port_master_set.port = port; 20523 async->args.port_master_set.ms = ms; 20524 bcm_async_add((bcm_async_req_t *)async); 20525 } 20526 20527 void 20528 bcmx_port_match_add_async( 20529 bcm_gport_t port, 20530 bcmx_port_match_info_t * match, 20531 bcmx_async_cb_t async_callback, 20532 void *async_cookie) 20533 { 20534 bcmx_async_req_t *async; 20535 20536 async = sal_alloc(sizeof(*async), "bcmx_async"); 20537 if (async == NULL) { 20538 if (async_callback != NULL) { 20539 (*async_callback)(async_cookie, BCM_E_MEMORY); 20540 } 20541 return; 20542 } 20543 async->next = NULL; 20544 async->type = BCMX_ASYNC_ENTRY_PORT_MATCH_ADD; 20545 async->run = bcmx_async_run; 20546 async->callback = async_callback; 20547 async->cookie = async_cookie; 20548 async->args.port_match_add.port = port; 20549 async->args.port_match_add.match = match; 20550 bcm_async_add((bcm_async_req_t *)async); 20551 } 20552 20553 void 20554 bcmx_port_match_delete_async( 20555 bcm_gport_t port, 20556 bcmx_port_match_info_t * match, 20557 bcmx_async_cb_t async_callback, 20558 void *async_cookie) 20559 { 20560 bcmx_async_req_t *async; 20561 20562 async = sal_alloc(sizeof(*async), "bcmx_async"); 20563 if (async == NULL) { 20564 if (async_callback != NULL) { 20565 (*async_callback)(async_cookie, BCM_E_MEMORY); 20566 } 20567 return; 20568 } 20569 async->next = NULL; 20570 async->type = BCMX_ASYNC_ENTRY_PORT_MATCH_DELETE; 20571 async->run = bcmx_async_run; 20572 async->callback = async_callback; 20573 async->cookie = async_cookie; 20574 async->args.port_match_delete.port = port; 20575 async->args.port_match_delete.match = match; 20576 bcm_async_add((bcm_async_req_t *)async); 20577 } 20578 20579 void 20580 bcmx_port_match_delete_all_async( 20581 bcm_gport_t port, 20582 bcmx_async_cb_t async_callback, 20583 void *async_cookie) 20584 { 20585 bcmx_async_req_t *async; 20586 20587 async = sal_alloc(sizeof(*async), "bcmx_async"); 20588 if (async == NULL) { 20589 if (async_callback != NULL) { 20590 (*async_callback)(async_cookie, BCM_E_MEMORY); 20591 } 20592 return; 20593 } 20594 async->next = NULL; 20595 async->type = BCMX_ASYNC_ENTRY_PORT_MATCH_DELETE_ALL; 20596 async->run = bcmx_async_run; 20597 async->callback = async_callback; 20598 async->cookie = async_cookie; 20599 async->args.port_match_delete_all.port = port; 20600 bcm_async_add((bcm_async_req_t *)async); 20601 } 20602 20603 void 20604 bcmx_port_match_multi_get_async( 20605 bcm_gport_t port, 20606 int size, 20607 bcmx_port_match_info_t * match_array, 20608 int * count, 20609 bcmx_async_cb_t async_callback, 20610 void *async_cookie) 20611 { 20612 bcmx_async_req_t *async; 20613 20614 async = sal_alloc(sizeof(*async), "bcmx_async"); 20615 if (async == NULL) { 20616 if (async_callback != NULL) { 20617 (*async_callback)(async_cookie, BCM_E_MEMORY); 20618 } 20619 return; 20620 } 20621 async->next = NULL; 20622 async->type = BCMX_ASYNC_ENTRY_PORT_MATCH_MULTI_GET; 20623 async->run = bcmx_async_run; 20624 async->callback = async_callback; 20625 async->cookie = async_cookie; 20626 async->args.port_match_multi_get.port = port; 20627 async->args.port_match_multi_get.size = size; 20628 async->args.port_match_multi_get.match_array = match_array; 20629 async->args.port_match_multi_get.count = count; 20630 bcm_async_add((bcm_async_req_t *)async); 20631 } 20632 20633 void 20634 bcmx_port_match_replace_async( 20635 bcm_gport_t port, 20636 bcmx_port_match_info_t * old_match, 20637 bcmx_port_match_info_t * new_match, 20638 bcmx_async_cb_t async_callback, 20639 void *async_cookie) 20640 { 20641 bcmx_async_req_t *async; 20642 20643 async = sal_alloc(sizeof(*async), "bcmx_async"); 20644 if (async == NULL) { 20645 if (async_callback != NULL) { 20646 (*async_callback)(async_cookie, BCM_E_MEMORY); 20647 } 20648 return; 20649 } 20650 async->next = NULL; 20651 async->type = BCMX_ASYNC_ENTRY_PORT_MATCH_REPLACE; 20652 async->run = bcmx_async_run; 20653 async->callback = async_callback; 20654 async->cookie = async_cookie; 20655 async->args.port_match_replace.port = port; 20656 async->args.port_match_replace.old_match = old_match; 20657 async->args.port_match_replace.new_match = new_match; 20658 bcm_async_add((bcm_async_req_t *)async); 20659 } 20660 20661 void 20662 bcmx_port_match_set_async( 20663 bcm_gport_t port, 20664 int size, 20665 bcmx_port_match_info_t * match_array, 20666 bcmx_async_cb_t async_callback, 20667 void *async_cookie) 20668 { 20669 bcmx_async_req_t *async; 20670 20671 async = sal_alloc(sizeof(*async), "bcmx_async"); 20672 if (async == NULL) { 20673 if (async_callback != NULL) { 20674 (*async_callback)(async_cookie, BCM_E_MEMORY); 20675 } 20676 return; 20677 } 20678 async->next = NULL; 20679 async->type = BCMX_ASYNC_ENTRY_PORT_MATCH_SET; 20680 async->run = bcmx_async_run; 20681 async->callback = async_callback; 20682 async->cookie = async_cookie; 20683 async->args.port_match_set.port = port; 20684 async->args.port_match_set.size = size; 20685 async->args.port_match_set.match_array = match_array; 20686 bcm_async_add((bcm_async_req_t *)async); 20687 } 20688 20689 void 20690 bcmx_port_mdix_get_async( 20691 bcmx_lport_t port, 20692 bcm_port_mdix_t * mode, 20693 bcmx_async_cb_t async_callback, 20694 void *async_cookie) 20695 { 20696 bcmx_async_req_t *async; 20697 20698 async = sal_alloc(sizeof(*async), "bcmx_async"); 20699 if (async == NULL) { 20700 if (async_callback != NULL) { 20701 (*async_callback)(async_cookie, BCM_E_MEMORY); 20702 } 20703 return; 20704 } 20705 async->next = NULL; 20706 async->type = BCMX_ASYNC_ENTRY_PORT_MDIX_GET; 20707 async->run = bcmx_async_run; 20708 async->callback = async_callback; 20709 async->cookie = async_cookie; 20710 async->args.port_mdix_get.port = port; 20711 async->args.port_mdix_get.mode = mode; 20712 bcm_async_add((bcm_async_req_t *)async); 20713 } 20714 20715 void 20716 bcmx_port_mdix_set_async( 20717 bcmx_lport_t port, 20718 bcm_port_mdix_t mode, 20719 bcmx_async_cb_t async_callback, 20720 void *async_cookie) 20721 { 20722 bcmx_async_req_t *async; 20723 20724 async = sal_alloc(sizeof(*async), "bcmx_async"); 20725 if (async == NULL) { 20726 if (async_callback != NULL) { 20727 (*async_callback)(async_cookie, BCM_E_MEMORY); 20728 } 20729 return; 20730 } 20731 async->next = NULL; 20732 async->type = BCMX_ASYNC_ENTRY_PORT_MDIX_SET; 20733 async->run = bcmx_async_run; 20734 async->callback = async_callback; 20735 async->cookie = async_cookie; 20736 async->args.port_mdix_set.port = port; 20737 async->args.port_mdix_set.mode = mode; 20738 bcm_async_add((bcm_async_req_t *)async); 20739 } 20740 20741 void 20742 bcmx_port_mdix_status_get_async( 20743 bcmx_lport_t port, 20744 bcm_port_mdix_status_t * status, 20745 bcmx_async_cb_t async_callback, 20746 void *async_cookie) 20747 { 20748 bcmx_async_req_t *async; 20749 20750 async = sal_alloc(sizeof(*async), "bcmx_async"); 20751 if (async == NULL) { 20752 if (async_callback != NULL) { 20753 (*async_callback)(async_cookie, BCM_E_MEMORY); 20754 } 20755 return; 20756 } 20757 async->next = NULL; 20758 async->type = BCMX_ASYNC_ENTRY_PORT_MDIX_STATUS_GET; 20759 async->run = bcmx_async_run; 20760 async->callback = async_callback; 20761 async->cookie = async_cookie; 20762 async->args.port_mdix_status_get.port = port; 20763 async->args.port_mdix_status_get.status = status; 20764 bcm_async_add((bcm_async_req_t *)async); 20765 } 20766 20767 void 20768 bcmx_port_medium_config_get_async( 20769 bcmx_lport_t port, 20770 bcm_port_medium_t medium, 20771 bcm_phy_config_t * config, 20772 bcmx_async_cb_t async_callback, 20773 void *async_cookie) 20774 { 20775 bcmx_async_req_t *async; 20776 20777 async = sal_alloc(sizeof(*async), "bcmx_async"); 20778 if (async == NULL) { 20779 if (async_callback != NULL) { 20780 (*async_callback)(async_cookie, BCM_E_MEMORY); 20781 } 20782 return; 20783 } 20784 async->next = NULL; 20785 async->type = BCMX_ASYNC_ENTRY_PORT_MEDIUM_CONFIG_GET; 20786 async->run = bcmx_async_run; 20787 async->callback = async_callback; 20788 async->cookie = async_cookie; 20789 async->args.port_medium_config_get.port = port; 20790 async->args.port_medium_config_get.medium = medium; 20791 async->args.port_medium_config_get.config = config; 20792 bcm_async_add((bcm_async_req_t *)async); 20793 } 20794 20795 void 20796 bcmx_port_medium_config_set_async( 20797 bcmx_lport_t port, 20798 bcm_port_medium_t medium, 20799 bcm_phy_config_t * config, 20800 bcmx_async_cb_t async_callback, 20801 void *async_cookie) 20802 { 20803 bcmx_async_req_t *async; 20804 20805 async = sal_alloc(sizeof(*async), "bcmx_async"); 20806 if (async == NULL) { 20807 if (async_callback != NULL) { 20808 (*async_callback)(async_cookie, BCM_E_MEMORY); 20809 } 20810 return; 20811 } 20812 async->next = NULL; 20813 async->type = BCMX_ASYNC_ENTRY_PORT_MEDIUM_CONFIG_SET; 20814 async->run = bcmx_async_run; 20815 async->callback = async_callback; 20816 async->cookie = async_cookie; 20817 async->args.port_medium_config_set.port = port; 20818 async->args.port_medium_config_set.medium = medium; 20819 async->args.port_medium_config_set.config = config; 20820 bcm_async_add((bcm_async_req_t *)async); 20821 } 20822 20823 void 20824 bcmx_port_medium_get_async( 20825 bcmx_lport_t port, 20826 bcm_port_medium_t * medium, 20827 bcmx_async_cb_t async_callback, 20828 void *async_cookie) 20829 { 20830 bcmx_async_req_t *async; 20831 20832 async = sal_alloc(sizeof(*async), "bcmx_async"); 20833 if (async == NULL) { 20834 if (async_callback != NULL) { 20835 (*async_callback)(async_cookie, BCM_E_MEMORY); 20836 } 20837 return; 20838 } 20839 async->next = NULL; 20840 async->type = BCMX_ASYNC_ENTRY_PORT_MEDIUM_GET; 20841 async->run = bcmx_async_run; 20842 async->callback = async_callback; 20843 async->cookie = async_cookie; 20844 async->args.port_medium_get.port = port; 20845 async->args.port_medium_get.medium = medium; 20846 bcm_async_add((bcm_async_req_t *)async); 20847 } 20848 20849 void 20850 bcmx_port_modid_enable_get_async( 20851 bcmx_lport_t port, 20852 int modid, 20853 int * enable, 20854 bcmx_async_cb_t async_callback, 20855 void *async_cookie) 20856 { 20857 bcmx_async_req_t *async; 20858 20859 async = sal_alloc(sizeof(*async), "bcmx_async"); 20860 if (async == NULL) { 20861 if (async_callback != NULL) { 20862 (*async_callback)(async_cookie, BCM_E_MEMORY); 20863 } 20864 return; 20865 } 20866 async->next = NULL; 20867 async->type = BCMX_ASYNC_ENTRY_PORT_MODID_ENABLE_GET; 20868 async->run = bcmx_async_run; 20869 async->callback = async_callback; 20870 async->cookie = async_cookie; 20871 async->args.port_modid_enable_get.port = port; 20872 async->args.port_modid_enable_get.modid = modid; 20873 async->args.port_modid_enable_get.enable = enable; 20874 bcm_async_add((bcm_async_req_t *)async); 20875 } 20876 20877 void 20878 bcmx_port_modid_enable_set_async( 20879 bcmx_lport_t port, 20880 int modid, 20881 int enable, 20882 bcmx_async_cb_t async_callback, 20883 void *async_cookie) 20884 { 20885 bcmx_async_req_t *async; 20886 20887 async = sal_alloc(sizeof(*async), "bcmx_async"); 20888 if (async == NULL) { 20889 if (async_callback != NULL) { 20890 (*async_callback)(async_cookie, BCM_E_MEMORY); 20891 } 20892 return; 20893 } 20894 async->next = NULL; 20895 async->type = BCMX_ASYNC_ENTRY_PORT_MODID_ENABLE_SET; 20896 async->run = bcmx_async_run; 20897 async->callback = async_callback; 20898 async->cookie = async_cookie; 20899 async->args.port_modid_enable_set.port = port; 20900 async->args.port_modid_enable_set.modid = modid; 20901 async->args.port_modid_enable_set.enable = enable; 20902 bcm_async_add((bcm_async_req_t *)async); 20903 } 20904 20905 void 20906 bcmx_port_pause_addr_get_async( 20907 bcmx_lport_t port, 20908 bcm_mac_t mac, 20909 bcmx_async_cb_t async_callback, 20910 void *async_cookie) 20911 { 20912 bcmx_async_req_t *async; 20913 20914 async = sal_alloc(sizeof(*async), "bcmx_async"); 20915 if (async == NULL) { 20916 if (async_callback != NULL) { 20917 (*async_callback)(async_cookie, BCM_E_MEMORY); 20918 } 20919 return; 20920 } 20921 async->next = NULL; 20922 async->type = BCMX_ASYNC_ENTRY_PORT_PAUSE_ADDR_GET; 20923 async->run = bcmx_async_run; 20924 async->callback = async_callback; 20925 async->cookie = async_cookie; 20926 async->args.port_pause_addr_get.port = port; 20927 async->args.port_pause_addr_get.mac = (uint8 *)mac; 20928 bcm_async_add((bcm_async_req_t *)async); 20929 } 20930 20931 void 20932 bcmx_port_pause_addr_set_async( 20933 bcmx_lport_t port, 20934 bcm_mac_t mac, 20935 bcmx_async_cb_t async_callback, 20936 void *async_cookie) 20937 { 20938 bcmx_async_req_t *async; 20939 20940 async = sal_alloc(sizeof(*async), "bcmx_async"); 20941 if (async == NULL) { 20942 if (async_callback != NULL) { 20943 (*async_callback)(async_cookie, BCM_E_MEMORY); 20944 } 20945 return; 20946 } 20947 async->next = NULL; 20948 async->type = BCMX_ASYNC_ENTRY_PORT_PAUSE_ADDR_SET; 20949 async->run = bcmx_async_run; 20950 async->callback = async_callback; 20951 async->cookie = async_cookie; 20952 async->args.port_pause_addr_set.port = port; 20953 async->args.port_pause_addr_set.mac = (uint8 *)mac; 20954 bcm_async_add((bcm_async_req_t *)async); 20955 } 20956 20957 void 20958 bcmx_port_pause_get_async( 20959 bcmx_lport_t port, 20960 int * pause_tx, 20961 int * pause_rx, 20962 bcmx_async_cb_t async_callback, 20963 void *async_cookie) 20964 { 20965 bcmx_async_req_t *async; 20966 20967 async = sal_alloc(sizeof(*async), "bcmx_async"); 20968 if (async == NULL) { 20969 if (async_callback != NULL) { 20970 (*async_callback)(async_cookie, BCM_E_MEMORY); 20971 } 20972 return; 20973 } 20974 async->next = NULL; 20975 async->type = BCMX_ASYNC_ENTRY_PORT_PAUSE_GET; 20976 async->run = bcmx_async_run; 20977 async->callback = async_callback; 20978 async->cookie = async_cookie; 20979 async->args.port_pause_get.port = port; 20980 async->args.port_pause_get.pause_tx = pause_tx; 20981 async->args.port_pause_get.pause_rx = pause_rx; 20982 bcm_async_add((bcm_async_req_t *)async); 20983 } 20984 20985 void 20986 bcmx_port_pause_set_async( 20987 bcmx_lport_t port, 20988 int pause_tx, 20989 int pause_rx, 20990 bcmx_async_cb_t async_callback, 20991 void *async_cookie) 20992 { 20993 bcmx_async_req_t *async; 20994 20995 async = sal_alloc(sizeof(*async), "bcmx_async"); 20996 if (async == NULL) { 20997 if (async_callback != NULL) { 20998 (*async_callback)(async_cookie, BCM_E_MEMORY); 20999 } 21000 return; 21001 } 21002 async->next = NULL; 21003 async->type = BCMX_ASYNC_ENTRY_PORT_PAUSE_SET; 21004 async->run = bcmx_async_run; 21005 async->callback = async_callback; 21006 async->cookie = async_cookie; 21007 async->args.port_pause_set.port = port; 21008 async->args.port_pause_set.pause_tx = pause_tx; 21009 async->args.port_pause_set.pause_rx = pause_rx; 21010 bcm_async_add((bcm_async_req_t *)async); 21011 } 21012 21013 void 21014 bcmx_port_pause_sym_get_async( 21015 bcmx_lport_t port, 21016 int * pause, 21017 bcmx_async_cb_t async_callback, 21018 void *async_cookie) 21019 { 21020 bcmx_async_req_t *async; 21021 21022 async = sal_alloc(sizeof(*async), "bcmx_async"); 21023 if (async == NULL) { 21024 if (async_callback != NULL) { 21025 (*async_callback)(async_cookie, BCM_E_MEMORY); 21026 } 21027 return; 21028 } 21029 async->next = NULL; 21030 async->type = BCMX_ASYNC_ENTRY_PORT_PAUSE_SYM_GET; 21031 async->run = bcmx_async_run; 21032 async->callback = async_callback; 21033 async->cookie = async_cookie; 21034 async->args.port_pause_sym_get.port = port; 21035 async->args.port_pause_sym_get.pause = pause; 21036 bcm_async_add((bcm_async_req_t *)async); 21037 } 21038 21039 void 21040 bcmx_port_pause_sym_set_async( 21041 bcmx_lport_t port, 21042 int pause, 21043 bcmx_async_cb_t async_callback, 21044 void *async_cookie) 21045 { 21046 bcmx_async_req_t *async; 21047 21048 async = sal_alloc(sizeof(*async), "bcmx_async"); 21049 if (async == NULL) { 21050 if (async_callback != NULL) { 21051 (*async_callback)(async_cookie, BCM_E_MEMORY); 21052 } 21053 return; 21054 } 21055 async->next = NULL; 21056 async->type = BCMX_ASYNC_ENTRY_PORT_PAUSE_SYM_SET; 21057 async->run = bcmx_async_run; 21058 async->callback = async_callback; 21059 async->cookie = async_cookie; 21060 async->args.port_pause_sym_set.port = port; 21061 async->args.port_pause_sym_set.pause = pause; 21062 bcm_async_add((bcm_async_req_t *)async); 21063 } 21064 21065 void 21066 bcmx_port_pfm_get_async( 21067 bcmx_lport_t port, 21068 int * mode, 21069 bcmx_async_cb_t async_callback, 21070 void *async_cookie) 21071 { 21072 bcmx_async_req_t *async; 21073 21074 async = sal_alloc(sizeof(*async), "bcmx_async"); 21075 if (async == NULL) { 21076 if (async_callback != NULL) { 21077 (*async_callback)(async_cookie, BCM_E_MEMORY); 21078 } 21079 return; 21080 } 21081 async->next = NULL; 21082 async->type = BCMX_ASYNC_ENTRY_PORT_PFM_GET; 21083 async->run = bcmx_async_run; 21084 async->callback = async_callback; 21085 async->cookie = async_cookie; 21086 async->args.port_pfm_get.port = port; 21087 async->args.port_pfm_get.mode = mode; 21088 bcm_async_add((bcm_async_req_t *)async); 21089 } 21090 21091 void 21092 bcmx_port_pfm_set_async( 21093 bcmx_lport_t port, 21094 int mode, 21095 bcmx_async_cb_t async_callback, 21096 void *async_cookie) 21097 { 21098 bcmx_async_req_t *async; 21099 21100 async = sal_alloc(sizeof(*async), "bcmx_async"); 21101 if (async == NULL) { 21102 if (async_callback != NULL) { 21103 (*async_callback)(async_cookie, BCM_E_MEMORY); 21104 } 21105 return; 21106 } 21107 async->next = NULL; 21108 async->type = BCMX_ASYNC_ENTRY_PORT_PFM_SET; 21109 async->run = bcmx_async_run; 21110 async->callback = async_callback; 21111 async->cookie = async_cookie; 21112 async->args.port_pfm_set.port = port; 21113 async->args.port_pfm_set.mode = mode; 21114 bcm_async_add((bcm_async_req_t *)async); 21115 } 21116 21117 void 21118 bcmx_port_phy_control_get_async( 21119 bcmx_lport_t port, 21120 bcm_port_phy_control_t type, 21121 uint32 * value, 21122 bcmx_async_cb_t async_callback, 21123 void *async_cookie) 21124 { 21125 bcmx_async_req_t *async; 21126 21127 async = sal_alloc(sizeof(*async), "bcmx_async"); 21128 if (async == NULL) { 21129 if (async_callback != NULL) { 21130 (*async_callback)(async_cookie, BCM_E_MEMORY); 21131 } 21132 return; 21133 } 21134 async->next = NULL; 21135 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_CONTROL_GET; 21136 async->run = bcmx_async_run; 21137 async->callback = async_callback; 21138 async->cookie = async_cookie; 21139 async->args.port_phy_control_get.port = port; 21140 async->args.port_phy_control_get.type = type; 21141 async->args.port_phy_control_get.value = value; 21142 bcm_async_add((bcm_async_req_t *)async); 21143 } 21144 21145 void 21146 bcmx_port_phy_control_set_async( 21147 bcmx_lport_t port, 21148 bcm_port_phy_control_t type, 21149 uint32 value, 21150 bcmx_async_cb_t async_callback, 21151 void *async_cookie) 21152 { 21153 bcmx_async_req_t *async; 21154 21155 async = sal_alloc(sizeof(*async), "bcmx_async"); 21156 if (async == NULL) { 21157 if (async_callback != NULL) { 21158 (*async_callback)(async_cookie, BCM_E_MEMORY); 21159 } 21160 return; 21161 } 21162 async->next = NULL; 21163 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_CONTROL_SET; 21164 async->run = bcmx_async_run; 21165 async->callback = async_callback; 21166 async->cookie = async_cookie; 21167 async->args.port_phy_control_set.port = port; 21168 async->args.port_phy_control_set.type = type; 21169 async->args.port_phy_control_set.value = value; 21170 bcm_async_add((bcm_async_req_t *)async); 21171 } 21172 21173 void 21174 bcmx_port_phy_get_async( 21175 bcmx_lport_t port, 21176 uint32 flags, 21177 uint32 phy_reg_addr, 21178 uint32 * phy_data, 21179 bcmx_async_cb_t async_callback, 21180 void *async_cookie) 21181 { 21182 bcmx_async_req_t *async; 21183 21184 async = sal_alloc(sizeof(*async), "bcmx_async"); 21185 if (async == NULL) { 21186 if (async_callback != NULL) { 21187 (*async_callback)(async_cookie, BCM_E_MEMORY); 21188 } 21189 return; 21190 } 21191 async->next = NULL; 21192 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_GET; 21193 async->run = bcmx_async_run; 21194 async->callback = async_callback; 21195 async->cookie = async_cookie; 21196 async->args.port_phy_get.port = port; 21197 async->args.port_phy_get.flags = flags; 21198 async->args.port_phy_get.phy_reg_addr = phy_reg_addr; 21199 async->args.port_phy_get.phy_data = phy_data; 21200 bcm_async_add((bcm_async_req_t *)async); 21201 } 21202 21203 void 21204 bcmx_port_phy_modify_async( 21205 bcmx_lport_t port, 21206 uint32 flags, 21207 uint32 phy_reg_addr, 21208 uint32 phy_data, 21209 uint32 phy_mask, 21210 bcmx_async_cb_t async_callback, 21211 void *async_cookie) 21212 { 21213 bcmx_async_req_t *async; 21214 21215 async = sal_alloc(sizeof(*async), "bcmx_async"); 21216 if (async == NULL) { 21217 if (async_callback != NULL) { 21218 (*async_callback)(async_cookie, BCM_E_MEMORY); 21219 } 21220 return; 21221 } 21222 async->next = NULL; 21223 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_MODIFY; 21224 async->run = bcmx_async_run; 21225 async->callback = async_callback; 21226 async->cookie = async_cookie; 21227 async->args.port_phy_modify.port = port; 21228 async->args.port_phy_modify.flags = flags; 21229 async->args.port_phy_modify.phy_reg_addr = phy_reg_addr; 21230 async->args.port_phy_modify.phy_data = phy_data; 21231 async->args.port_phy_modify.phy_mask = phy_mask; 21232 bcm_async_add((bcm_async_req_t *)async); 21233 } 21234 21235 void 21236 bcmx_port_phy_set_async( 21237 bcmx_lport_t port, 21238 uint32 flags, 21239 uint32 phy_reg_addr, 21240 uint32 phy_data, 21241 bcmx_async_cb_t async_callback, 21242 void *async_cookie) 21243 { 21244 bcmx_async_req_t *async; 21245 21246 async = sal_alloc(sizeof(*async), "bcmx_async"); 21247 if (async == NULL) { 21248 if (async_callback != NULL) { 21249 (*async_callback)(async_cookie, BCM_E_MEMORY); 21250 } 21251 return; 21252 } 21253 async->next = NULL; 21254 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_SET; 21255 async->run = bcmx_async_run; 21256 async->callback = async_callback; 21257 async->cookie = async_cookie; 21258 async->args.port_phy_set.port = port; 21259 async->args.port_phy_set.flags = flags; 21260 async->args.port_phy_set.phy_reg_addr = phy_reg_addr; 21261 async->args.port_phy_set.phy_data = phy_data; 21262 bcm_async_add((bcm_async_req_t *)async); 21263 } 21264 21265 void 21266 bcmx_port_phy_timesync_config_get_async( 21267 bcm_gport_t port, 21268 bcmx_port_phy_timesync_config_t * conf, 21269 bcmx_async_cb_t async_callback, 21270 void *async_cookie) 21271 { 21272 bcmx_async_req_t *async; 21273 21274 async = sal_alloc(sizeof(*async), "bcmx_async"); 21275 if (async == NULL) { 21276 if (async_callback != NULL) { 21277 (*async_callback)(async_cookie, BCM_E_MEMORY); 21278 } 21279 return; 21280 } 21281 async->next = NULL; 21282 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_TIMESYNC_CONFIG_GET; 21283 async->run = bcmx_async_run; 21284 async->callback = async_callback; 21285 async->cookie = async_cookie; 21286 async->args.port_phy_timesync_config_get.port = port; 21287 async->args.port_phy_timesync_config_get.conf = conf; 21288 bcm_async_add((bcm_async_req_t *)async); 21289 } 21290 21291 void 21292 bcmx_port_phy_timesync_config_set_async( 21293 bcm_gport_t port, 21294 bcmx_port_phy_timesync_config_t * conf, 21295 bcmx_async_cb_t async_callback, 21296 void *async_cookie) 21297 { 21298 bcmx_async_req_t *async; 21299 21300 async = sal_alloc(sizeof(*async), "bcmx_async"); 21301 if (async == NULL) { 21302 if (async_callback != NULL) { 21303 (*async_callback)(async_cookie, BCM_E_MEMORY); 21304 } 21305 return; 21306 } 21307 async->next = NULL; 21308 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_TIMESYNC_CONFIG_SET; 21309 async->run = bcmx_async_run; 21310 async->callback = async_callback; 21311 async->cookie = async_cookie; 21312 async->args.port_phy_timesync_config_set.port = port; 21313 async->args.port_phy_timesync_config_set.conf = conf; 21314 bcm_async_add((bcm_async_req_t *)async); 21315 } 21316 21317 void 21318 bcmx_port_phy_timesync_enhanced_capture_get_async( 21319 bcm_gport_t port, 21320 bcmx_port_phy_timesync_enhanced_capture_t * conf, 21321 bcmx_async_cb_t async_callback, 21322 void *async_cookie) 21323 { 21324 bcmx_async_req_t *async; 21325 21326 async = sal_alloc(sizeof(*async), "bcmx_async"); 21327 if (async == NULL) { 21328 if (async_callback != NULL) { 21329 (*async_callback)(async_cookie, BCM_E_MEMORY); 21330 } 21331 return; 21332 } 21333 async->next = NULL; 21334 async->type = BCMX_ASYNC_ENTRY_PORT_PHY_TIMESYNC_ENHANCED_CAPTURE_GET; 21335 async->run = bcmx_async_run; 21336 async->callback = async_callback; 21337 async->cookie = async_cookie; 21338 async->args.port_phy_timesync_enhanced_capture_get.port = port; 21339 async->args.port_phy_timesync_enhanced_capture_get.conf = conf; 21340 bcm_async_add((bcm_async_req_t *)async); 21341 } 21342 21343 void 21344 bcmx_port_priority_color_get_async( 21345 bcmx_lport_t port, 21346 int prio, 21347 bcm_color_t * color, 21348 bcmx_async_cb_t async_callback, 21349 void *async_cookie) 21350 { 21351 bcmx_async_req_t *async; 21352 21353 async = sal_alloc(sizeof(*async), "bcmx_async"); 21354 if (async == NULL) { 21355 if (async_callback != NULL) { 21356 (*async_callback)(async_cookie, BCM_E_MEMORY); 21357 } 21358 return; 21359 } 21360 async->next = NULL; 21361 async->type = BCMX_ASYNC_ENTRY_PORT_PRIORITY_COLOR_GET; 21362 async->run = bcmx_async_run; 21363 async->callback = async_callback; 21364 async->cookie = async_cookie; 21365 async->args.port_priority_color_get.port = port; 21366 async->args.port_priority_color_get.prio = prio; 21367 async->args.port_priority_color_get.color = color; 21368 bcm_async_add((bcm_async_req_t *)async); 21369 } 21370 21371 void 21372 bcmx_port_priority_color_set_async( 21373 bcmx_lport_t port, 21374 int prio, 21375 bcm_color_t color, 21376 bcmx_async_cb_t async_callback, 21377 void *async_cookie) 21378 { 21379 bcmx_async_req_t *async; 21380 21381 async = sal_alloc(sizeof(*async), "bcmx_async"); 21382 if (async == NULL) { 21383 if (async_callback != NULL) { 21384 (*async_callback)(async_cookie, BCM_E_MEMORY); 21385 } 21386 return; 21387 } 21388 async->next = NULL; 21389 async->type = BCMX_ASYNC_ENTRY_PORT_PRIORITY_COLOR_SET; 21390 async->run = bcmx_async_run; 21391 async->callback = async_callback; 21392 async->cookie = async_cookie; 21393 async->args.port_priority_color_set.port = port; 21394 async->args.port_priority_color_set.prio = prio; 21395 async->args.port_priority_color_set.color = color; 21396 bcm_async_add((bcm_async_req_t *)async); 21397 } 21398 21399 void 21400 bcmx_port_protocol_vlan_add_async( 21401 bcmx_lport_t port, 21402 bcm_port_frametype_t frame, 21403 bcm_port_ethertype_t ether, 21404 bcm_vlan_t vid, 21405 bcmx_async_cb_t async_callback, 21406 void *async_cookie) 21407 { 21408 bcmx_async_req_t *async; 21409 21410 async = sal_alloc(sizeof(*async), "bcmx_async"); 21411 if (async == NULL) { 21412 if (async_callback != NULL) { 21413 (*async_callback)(async_cookie, BCM_E_MEMORY); 21414 } 21415 return; 21416 } 21417 async->next = NULL; 21418 async->type = BCMX_ASYNC_ENTRY_PORT_PROTOCOL_VLAN_ADD; 21419 async->run = bcmx_async_run; 21420 async->callback = async_callback; 21421 async->cookie = async_cookie; 21422 async->args.port_protocol_vlan_add.port = port; 21423 async->args.port_protocol_vlan_add.frame = frame; 21424 async->args.port_protocol_vlan_add.ether = ether; 21425 async->args.port_protocol_vlan_add.vid = vid; 21426 bcm_async_add((bcm_async_req_t *)async); 21427 } 21428 21429 void 21430 bcmx_port_protocol_vlan_delete_async( 21431 bcmx_lport_t port, 21432 bcm_port_frametype_t frame, 21433 bcm_port_ethertype_t ether, 21434 bcmx_async_cb_t async_callback, 21435 void *async_cookie) 21436 { 21437 bcmx_async_req_t *async; 21438 21439 async = sal_alloc(sizeof(*async), "bcmx_async"); 21440 if (async == NULL) { 21441 if (async_callback != NULL) { 21442 (*async_callback)(async_cookie, BCM_E_MEMORY); 21443 } 21444 return; 21445 } 21446 async->next = NULL; 21447 async->type = BCMX_ASYNC_ENTRY_PORT_PROTOCOL_VLAN_DELETE; 21448 async->run = bcmx_async_run; 21449 async->callback = async_callback; 21450 async->cookie = async_cookie; 21451 async->args.port_protocol_vlan_delete.port = port; 21452 async->args.port_protocol_vlan_delete.frame = frame; 21453 async->args.port_protocol_vlan_delete.ether = ether; 21454 bcm_async_add((bcm_async_req_t *)async); 21455 } 21456 21457 void 21458 bcmx_port_protocol_vlan_delete_all_async( 21459 bcmx_lport_t port, 21460 bcmx_async_cb_t async_callback, 21461 void *async_cookie) 21462 { 21463 bcmx_async_req_t *async; 21464 21465 async = sal_alloc(sizeof(*async), "bcmx_async"); 21466 if (async == NULL) { 21467 if (async_callback != NULL) { 21468 (*async_callback)(async_cookie, BCM_E_MEMORY); 21469 } 21470 return; 21471 } 21472 async->next = NULL; 21473 async->type = BCMX_ASYNC_ENTRY_PORT_PROTOCOL_VLAN_DELETE_ALL; 21474 async->run = bcmx_async_run; 21475 async->callback = async_callback; 21476 async->cookie = async_cookie; 21477 async->args.port_protocol_vlan_delete_all.port = port; 21478 bcm_async_add((bcm_async_req_t *)async); 21479 } 21480 21481 void 21482 bcmx_port_queued_count_get_async( 21483 bcmx_lport_t port, 21484 uint32 * count, 21485 bcmx_async_cb_t async_callback, 21486 void *async_cookie) 21487 { 21488 bcmx_async_req_t *async; 21489 21490 async = sal_alloc(sizeof(*async), "bcmx_async"); 21491 if (async == NULL) { 21492 if (async_callback != NULL) { 21493 (*async_callback)(async_cookie, BCM_E_MEMORY); 21494 } 21495 return; 21496 } 21497 async->next = NULL; 21498 async->type = BCMX_ASYNC_ENTRY_PORT_QUEUED_COUNT_GET; 21499 async->run = bcmx_async_run; 21500 async->callback = async_callback; 21501 async->cookie = async_cookie; 21502 async->args.port_queued_count_get.port = port; 21503 async->args.port_queued_count_get.count = count; 21504 bcm_async_add((bcm_async_req_t *)async); 21505 } 21506 21507 void 21508 bcmx_port_rate_egress_get_async( 21509 bcmx_lport_t port, 21510 uint32 * kbits_sec, 21511 uint32 * kbits_burst, 21512 bcmx_async_cb_t async_callback, 21513 void *async_cookie) 21514 { 21515 bcmx_async_req_t *async; 21516 21517 async = sal_alloc(sizeof(*async), "bcmx_async"); 21518 if (async == NULL) { 21519 if (async_callback != NULL) { 21520 (*async_callback)(async_cookie, BCM_E_MEMORY); 21521 } 21522 return; 21523 } 21524 async->next = NULL; 21525 async->type = BCMX_ASYNC_ENTRY_PORT_RATE_EGRESS_GET; 21526 async->run = bcmx_async_run; 21527 async->callback = async_callback; 21528 async->cookie = async_cookie; 21529 async->args.port_rate_egress_get.port = port; 21530 async->args.port_rate_egress_get.kbits_sec = kbits_sec; 21531 async->args.port_rate_egress_get.kbits_burst = kbits_burst; 21532 bcm_async_add((bcm_async_req_t *)async); 21533 } 21534 21535 void 21536 bcmx_port_rate_egress_set_async( 21537 bcmx_lport_t port, 21538 uint32 kbits_sec, 21539 uint32 kbits_burst, 21540 bcmx_async_cb_t async_callback, 21541 void *async_cookie) 21542 { 21543 bcmx_async_req_t *async; 21544 21545 async = sal_alloc(sizeof(*async), "bcmx_async"); 21546 if (async == NULL) { 21547 if (async_callback != NULL) { 21548 (*async_callback)(async_cookie, BCM_E_MEMORY); 21549 } 21550 return; 21551 } 21552 async->next = NULL; 21553 async->type = BCMX_ASYNC_ENTRY_PORT_RATE_EGRESS_SET; 21554 async->run = bcmx_async_run; 21555 async->callback = async_callback; 21556 async->cookie = async_cookie; 21557 async->args.port_rate_egress_set.port = port; 21558 async->args.port_rate_egress_set.kbits_sec = kbits_sec; 21559 async->args.port_rate_egress_set.kbits_burst = kbits_burst; 21560 bcm_async_add((bcm_async_req_t *)async); 21561 } 21562 21563 void 21564 bcmx_port_rate_ingress_get_async( 21565 bcmx_lport_t port, 21566 uint32 * kbits_sec, 21567 uint32 * kbits_burst, 21568 bcmx_async_cb_t async_callback, 21569 void *async_cookie) 21570 { 21571 bcmx_async_req_t *async; 21572 21573 async = sal_alloc(sizeof(*async), "bcmx_async"); 21574 if (async == NULL) { 21575 if (async_callback != NULL) { 21576 (*async_callback)(async_cookie, BCM_E_MEMORY); 21577 } 21578 return; 21579 } 21580 async->next = NULL; 21581 async->type = BCMX_ASYNC_ENTRY_PORT_RATE_INGRESS_GET; 21582 async->run = bcmx_async_run; 21583 async->callback = async_callback; 21584 async->cookie = async_cookie; 21585 async->args.port_rate_ingress_get.port = port; 21586 async->args.port_rate_ingress_get.kbits_sec = kbits_sec; 21587 async->args.port_rate_ingress_get.kbits_burst = kbits_burst; 21588 bcm_async_add((bcm_async_req_t *)async); 21589 } 21590 21591 void 21592 bcmx_port_rate_ingress_set_async( 21593 bcmx_lport_t port, 21594 uint32 kbits_sec, 21595 uint32 kbits_burst, 21596 bcmx_async_cb_t async_callback, 21597 void *async_cookie) 21598 { 21599 bcmx_async_req_t *async; 21600 21601 async = sal_alloc(sizeof(*async), "bcmx_async"); 21602 if (async == NULL) { 21603 if (async_callback != NULL) { 21604 (*async_callback)(async_cookie, BCM_E_MEMORY); 21605 } 21606 return; 21607 } 21608 async->next = NULL; 21609 async->type = BCMX_ASYNC_ENTRY_PORT_RATE_INGRESS_SET; 21610 async->run = bcmx_async_run; 21611 async->callback = async_callback; 21612 async->cookie = async_cookie; 21613 async->args.port_rate_ingress_set.port = port; 21614 async->args.port_rate_ingress_set.kbits_sec = kbits_sec; 21615 async->args.port_rate_ingress_set.kbits_burst = kbits_burst; 21616 bcm_async_add((bcm_async_req_t *)async); 21617 } 21618 21619 void 21620 bcmx_port_rate_pause_get_async( 21621 bcmx_lport_t port, 21622 uint32 * kbits_pause, 21623 uint32 * kbits_resume, 21624 bcmx_async_cb_t async_callback, 21625 void *async_cookie) 21626 { 21627 bcmx_async_req_t *async; 21628 21629 async = sal_alloc(sizeof(*async), "bcmx_async"); 21630 if (async == NULL) { 21631 if (async_callback != NULL) { 21632 (*async_callback)(async_cookie, BCM_E_MEMORY); 21633 } 21634 return; 21635 } 21636 async->next = NULL; 21637 async->type = BCMX_ASYNC_ENTRY_PORT_RATE_PAUSE_GET; 21638 async->run = bcmx_async_run; 21639 async->callback = async_callback; 21640 async->cookie = async_cookie; 21641 async->args.port_rate_pause_get.port = port; 21642 async->args.port_rate_pause_get.kbits_pause = kbits_pause; 21643 async->args.port_rate_pause_get.kbits_resume = kbits_resume; 21644 bcm_async_add((bcm_async_req_t *)async); 21645 } 21646 21647 void 21648 bcmx_port_rate_pause_set_async( 21649 bcmx_lport_t port, 21650 uint32 kbits_pause, 21651 uint32 kbits_resume, 21652 bcmx_async_cb_t async_callback, 21653 void *async_cookie) 21654 { 21655 bcmx_async_req_t *async; 21656 21657 async = sal_alloc(sizeof(*async), "bcmx_async"); 21658 if (async == NULL) { 21659 if (async_callback != NULL) { 21660 (*async_callback)(async_cookie, BCM_E_MEMORY); 21661 } 21662 return; 21663 } 21664 async->next = NULL; 21665 async->type = BCMX_ASYNC_ENTRY_PORT_RATE_PAUSE_SET; 21666 async->run = bcmx_async_run; 21667 async->callback = async_callback; 21668 async->cookie = async_cookie; 21669 async->args.port_rate_pause_set.port = port; 21670 async->args.port_rate_pause_set.kbits_pause = kbits_pause; 21671 async->args.port_rate_pause_set.kbits_resume = kbits_resume; 21672 bcm_async_add((bcm_async_req_t *)async); 21673 } 21674 21675 void 21676 bcmx_port_sample_rate_get_async( 21677 bcm_port_t port, 21678 int * ingress_rate, 21679 int * egress_rate, 21680 bcmx_async_cb_t async_callback, 21681 void *async_cookie) 21682 { 21683 bcmx_async_req_t *async; 21684 21685 async = sal_alloc(sizeof(*async), "bcmx_async"); 21686 if (async == NULL) { 21687 if (async_callback != NULL) { 21688 (*async_callback)(async_cookie, BCM_E_MEMORY); 21689 } 21690 return; 21691 } 21692 async->next = NULL; 21693 async->type = BCMX_ASYNC_ENTRY_PORT_SAMPLE_RATE_GET; 21694 async->run = bcmx_async_run; 21695 async->callback = async_callback; 21696 async->cookie = async_cookie; 21697 async->args.port_sample_rate_get.port = port; 21698 async->args.port_sample_rate_get.ingress_rate = ingress_rate; 21699 async->args.port_sample_rate_get.egress_rate = egress_rate; 21700 bcm_async_add((bcm_async_req_t *)async); 21701 } 21702 21703 void 21704 bcmx_port_sample_rate_set_async( 21705 bcm_port_t port, 21706 int ingress_rate, 21707 int egress_rate, 21708 bcmx_async_cb_t async_callback, 21709 void *async_cookie) 21710 { 21711 bcmx_async_req_t *async; 21712 21713 async = sal_alloc(sizeof(*async), "bcmx_async"); 21714 if (async == NULL) { 21715 if (async_callback != NULL) { 21716 (*async_callback)(async_cookie, BCM_E_MEMORY); 21717 } 21718 return; 21719 } 21720 async->next = NULL; 21721 async->type = BCMX_ASYNC_ENTRY_PORT_SAMPLE_RATE_SET; 21722 async->run = bcmx_async_run; 21723 async->callback = async_callback; 21724 async->cookie = async_cookie; 21725 async->args.port_sample_rate_set.port = port; 21726 async->args.port_sample_rate_set.ingress_rate = ingress_rate; 21727 async->args.port_sample_rate_set.egress_rate = egress_rate; 21728 bcm_async_add((bcm_async_req_t *)async); 21729 } 21730 21731 void 21732 bcmx_port_selective_get_async( 21733 bcmx_lport_t port, 21734 bcm_port_info_t * info, 21735 bcmx_async_cb_t async_callback, 21736 void *async_cookie) 21737 { 21738 bcmx_async_req_t *async; 21739 21740 async = sal_alloc(sizeof(*async), "bcmx_async"); 21741 if (async == NULL) { 21742 if (async_callback != NULL) { 21743 (*async_callback)(async_cookie, BCM_E_MEMORY); 21744 } 21745 return; 21746 } 21747 async->next = NULL; 21748 async->type = BCMX_ASYNC_ENTRY_PORT_SELECTIVE_GET; 21749 async->run = bcmx_async_run; 21750 async->callback = async_callback; 21751 async->cookie = async_cookie; 21752 async->args.port_selective_get.port = port; 21753 async->args.port_selective_get.info = info; 21754 bcm_async_add((bcm_async_req_t *)async); 21755 } 21756 21757 void 21758 bcmx_port_selective_set_async( 21759 bcmx_lport_t port, 21760 bcm_port_info_t * info, 21761 bcmx_async_cb_t async_callback, 21762 void *async_cookie) 21763 { 21764 bcmx_async_req_t *async; 21765 21766 async = sal_alloc(sizeof(*async), "bcmx_async"); 21767 if (async == NULL) { 21768 if (async_callback != NULL) { 21769 (*async_callback)(async_cookie, BCM_E_MEMORY); 21770 } 21771 return; 21772 } 21773 async->next = NULL; 21774 async->type = BCMX_ASYNC_ENTRY_PORT_SELECTIVE_SET; 21775 async->run = bcmx_async_run; 21776 async->callback = async_callback; 21777 async->cookie = async_cookie; 21778 async->args.port_selective_set.port = port; 21779 async->args.port_selective_set.info = info; 21780 bcm_async_add((bcm_async_req_t *)async); 21781 } 21782 21783 void 21784 bcmx_port_speed_get_async( 21785 bcmx_lport_t port, 21786 int * speed, 21787 bcmx_async_cb_t async_callback, 21788 void *async_cookie) 21789 { 21790 bcmx_async_req_t *async; 21791 21792 async = sal_alloc(sizeof(*async), "bcmx_async"); 21793 if (async == NULL) { 21794 if (async_callback != NULL) { 21795 (*async_callback)(async_cookie, BCM_E_MEMORY); 21796 } 21797 return; 21798 } 21799 async->next = NULL; 21800 async->type = BCMX_ASYNC_ENTRY_PORT_SPEED_GET; 21801 async->run = bcmx_async_run; 21802 async->callback = async_callback; 21803 async->cookie = async_cookie; 21804 async->args.port_speed_get.port = port; 21805 async->args.port_speed_get.speed = speed; 21806 bcm_async_add((bcm_async_req_t *)async); 21807 } 21808 21809 void 21810 bcmx_port_speed_max_async( 21811 bcmx_lport_t port, 21812 int * speed, 21813 bcmx_async_cb_t async_callback, 21814 void *async_cookie) 21815 { 21816 bcmx_async_req_t *async; 21817 21818 async = sal_alloc(sizeof(*async), "bcmx_async"); 21819 if (async == NULL) { 21820 if (async_callback != NULL) { 21821 (*async_callback)(async_cookie, BCM_E_MEMORY); 21822 } 21823 return; 21824 } 21825 async->next = NULL; 21826 async->type = BCMX_ASYNC_ENTRY_PORT_SPEED_MAX; 21827 async->run = bcmx_async_run; 21828 async->callback = async_callback; 21829 async->cookie = async_cookie; 21830 async->args.port_speed_max.port = port; 21831 async->args.port_speed_max.speed = speed; 21832 bcm_async_add((bcm_async_req_t *)async); 21833 } 21834 21835 void 21836 bcmx_port_speed_set_async( 21837 bcmx_lport_t port, 21838 int speed, 21839 bcmx_async_cb_t async_callback, 21840 void *async_cookie) 21841 { 21842 bcmx_async_req_t *async; 21843 21844 async = sal_alloc(sizeof(*async), "bcmx_async"); 21845 if (async == NULL) { 21846 if (async_callback != NULL) { 21847 (*async_callback)(async_cookie, BCM_E_MEMORY); 21848 } 21849 return; 21850 } 21851 async->next = NULL; 21852 async->type = BCMX_ASYNC_ENTRY_PORT_SPEED_SET; 21853 async->run = bcmx_async_run; 21854 async->callback = async_callback; 21855 async->cookie = async_cookie; 21856 async->args.port_speed_set.port = port; 21857 async->args.port_speed_set.speed = speed; 21858 bcm_async_add((bcm_async_req_t *)async); 21859 } 21860 21861 void 21862 bcmx_port_stat_enable_set_async( 21863 bcm_gport_t port, 21864 int enable, 21865 bcmx_async_cb_t async_callback, 21866 void *async_cookie) 21867 { 21868 bcmx_async_req_t *async; 21869 21870 async = sal_alloc(sizeof(*async), "bcmx_async"); 21871 if (async == NULL) { 21872 if (async_callback != NULL) { 21873 (*async_callback)(async_cookie, BCM_E_MEMORY); 21874 } 21875 return; 21876 } 21877 async->next = NULL; 21878 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_ENABLE_SET; 21879 async->run = bcmx_async_run; 21880 async->callback = async_callback; 21881 async->cookie = async_cookie; 21882 async->args.port_stat_enable_set.port = port; 21883 async->args.port_stat_enable_set.enable = enable; 21884 bcm_async_add((bcm_async_req_t *)async); 21885 } 21886 21887 void 21888 bcmx_port_stat_get_async( 21889 bcm_gport_t port, 21890 bcm_port_stat_t stat, 21891 uint64 * val, 21892 bcmx_async_cb_t async_callback, 21893 void *async_cookie) 21894 { 21895 bcmx_async_req_t *async; 21896 21897 async = sal_alloc(sizeof(*async), "bcmx_async"); 21898 if (async == NULL) { 21899 if (async_callback != NULL) { 21900 (*async_callback)(async_cookie, BCM_E_MEMORY); 21901 } 21902 return; 21903 } 21904 async->next = NULL; 21905 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_GET; 21906 async->run = bcmx_async_run; 21907 async->callback = async_callback; 21908 async->cookie = async_cookie; 21909 async->args.port_stat_get.port = port; 21910 async->args.port_stat_get.stat = stat; 21911 async->args.port_stat_get.val = val; 21912 bcm_async_add((bcm_async_req_t *)async); 21913 } 21914 21915 void 21916 bcmx_port_stat_get32_async( 21917 bcm_gport_t port, 21918 bcm_port_stat_t stat, 21919 uint32 * val, 21920 bcmx_async_cb_t async_callback, 21921 void *async_cookie) 21922 { 21923 bcmx_async_req_t *async; 21924 21925 async = sal_alloc(sizeof(*async), "bcmx_async"); 21926 if (async == NULL) { 21927 if (async_callback != NULL) { 21928 (*async_callback)(async_cookie, BCM_E_MEMORY); 21929 } 21930 return; 21931 } 21932 async->next = NULL; 21933 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_GET32; 21934 async->run = bcmx_async_run; 21935 async->callback = async_callback; 21936 async->cookie = async_cookie; 21937 async->args.port_stat_get32.port = port; 21938 async->args.port_stat_get32.stat = stat; 21939 async->args.port_stat_get32.val = val; 21940 bcm_async_add((bcm_async_req_t *)async); 21941 } 21942 21943 void 21944 bcmx_port_stat_multi_get_async( 21945 bcm_gport_t port, 21946 int nstat, 21947 bcm_port_stat_t * stat_arr, 21948 uint64 * value_arr, 21949 bcmx_async_cb_t async_callback, 21950 void *async_cookie) 21951 { 21952 bcmx_async_req_t *async; 21953 21954 async = sal_alloc(sizeof(*async), "bcmx_async"); 21955 if (async == NULL) { 21956 if (async_callback != NULL) { 21957 (*async_callback)(async_cookie, BCM_E_MEMORY); 21958 } 21959 return; 21960 } 21961 async->next = NULL; 21962 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_GET; 21963 async->run = bcmx_async_run; 21964 async->callback = async_callback; 21965 async->cookie = async_cookie; 21966 async->args.port_stat_multi_get.port = port; 21967 async->args.port_stat_multi_get.nstat = nstat; 21968 async->args.port_stat_multi_get.stat_arr = stat_arr; 21969 async->args.port_stat_multi_get.value_arr = value_arr; 21970 bcm_async_add((bcm_async_req_t *)async); 21971 } 21972 21973 void 21974 bcmx_port_stat_multi_get32_async( 21975 bcm_gport_t port, 21976 int nstat, 21977 bcm_port_stat_t * stat_arr, 21978 uint32 * value_arr, 21979 bcmx_async_cb_t async_callback, 21980 void *async_cookie) 21981 { 21982 bcmx_async_req_t *async; 21983 21984 async = sal_alloc(sizeof(*async), "bcmx_async"); 21985 if (async == NULL) { 21986 if (async_callback != NULL) { 21987 (*async_callback)(async_cookie, BCM_E_MEMORY); 21988 } 21989 return; 21990 } 21991 async->next = NULL; 21992 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_GET32; 21993 async->run = bcmx_async_run; 21994 async->callback = async_callback; 21995 async->cookie = async_cookie; 21996 async->args.port_stat_multi_get32.port = port; 21997 async->args.port_stat_multi_get32.nstat = nstat; 21998 async->args.port_stat_multi_get32.stat_arr = stat_arr; 21999 async->args.port_stat_multi_get32.value_arr = value_arr; 22000 bcm_async_add((bcm_async_req_t *)async); 22001 } 22002 22003 void 22004 bcmx_port_stat_multi_set_async( 22005 bcm_gport_t port, 22006 int nstat, 22007 bcm_port_stat_t * stat_arr, 22008 uint64 * value_arr, 22009 bcmx_async_cb_t async_callback, 22010 void *async_cookie) 22011 { 22012 bcmx_async_req_t *async; 22013 22014 async = sal_alloc(sizeof(*async), "bcmx_async"); 22015 if (async == NULL) { 22016 if (async_callback != NULL) { 22017 (*async_callback)(async_cookie, BCM_E_MEMORY); 22018 } 22019 return; 22020 } 22021 async->next = NULL; 22022 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_SET; 22023 async->run = bcmx_async_run; 22024 async->callback = async_callback; 22025 async->cookie = async_cookie; 22026 async->args.port_stat_multi_set.port = port; 22027 async->args.port_stat_multi_set.nstat = nstat; 22028 async->args.port_stat_multi_set.stat_arr = stat_arr; 22029 async->args.port_stat_multi_set.value_arr = value_arr; 22030 bcm_async_add((bcm_async_req_t *)async); 22031 } 22032 22033 void 22034 bcmx_port_stat_multi_set32_async( 22035 bcm_gport_t port, 22036 int nstat, 22037 bcm_port_stat_t * stat_arr, 22038 uint32 * value_arr, 22039 bcmx_async_cb_t async_callback, 22040 void *async_cookie) 22041 { 22042 bcmx_async_req_t *async; 22043 22044 async = sal_alloc(sizeof(*async), "bcmx_async"); 22045 if (async == NULL) { 22046 if (async_callback != NULL) { 22047 (*async_callback)(async_cookie, BCM_E_MEMORY); 22048 } 22049 return; 22050 } 22051 async->next = NULL; 22052 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_SET32; 22053 async->run = bcmx_async_run; 22054 async->callback = async_callback; 22055 async->cookie = async_cookie; 22056 async->args.port_stat_multi_set32.port = port; 22057 async->args.port_stat_multi_set32.nstat = nstat; 22058 async->args.port_stat_multi_set32.stat_arr = stat_arr; 22059 async->args.port_stat_multi_set32.value_arr = value_arr; 22060 bcm_async_add((bcm_async_req_t *)async); 22061 } 22062 22063 void 22064 bcmx_port_stat_set_async( 22065 bcm_gport_t port, 22066 bcm_port_stat_t stat, 22067 uint64 val, 22068 bcmx_async_cb_t async_callback, 22069 void *async_cookie) 22070 { 22071 bcmx_async_req_t *async; 22072 22073 async = sal_alloc(sizeof(*async), "bcmx_async"); 22074 if (async == NULL) { 22075 if (async_callback != NULL) { 22076 (*async_callback)(async_cookie, BCM_E_MEMORY); 22077 } 22078 return; 22079 } 22080 async->next = NULL; 22081 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_SET; 22082 async->run = bcmx_async_run; 22083 async->callback = async_callback; 22084 async->cookie = async_cookie; 22085 async->args.port_stat_set.port = port; 22086 async->args.port_stat_set.stat = stat; 22087 async->args.port_stat_set.val = val; 22088 bcm_async_add((bcm_async_req_t *)async); 22089 } 22090 22091 void 22092 bcmx_port_stat_set32_async( 22093 bcm_gport_t port, 22094 bcm_port_stat_t stat, 22095 uint32 val, 22096 bcmx_async_cb_t async_callback, 22097 void *async_cookie) 22098 { 22099 bcmx_async_req_t *async; 22100 22101 async = sal_alloc(sizeof(*async), "bcmx_async"); 22102 if (async == NULL) { 22103 if (async_callback != NULL) { 22104 (*async_callback)(async_cookie, BCM_E_MEMORY); 22105 } 22106 return; 22107 } 22108 async->next = NULL; 22109 async->type = BCMX_ASYNC_ENTRY_PORT_STAT_SET32; 22110 async->run = bcmx_async_run; 22111 async->callback = async_callback; 22112 async->cookie = async_cookie; 22113 async->args.port_stat_set32.port = port; 22114 async->args.port_stat_set32.stat = stat; 22115 async->args.port_stat_set32.val = val; 22116 bcm_async_add((bcm_async_req_t *)async); 22117 } 22118 22119 void 22120 bcmx_port_stp_get_async( 22121 bcmx_lport_t port, 22122 int * state, 22123 bcmx_async_cb_t async_callback, 22124 void *async_cookie) 22125 { 22126 bcmx_async_req_t *async; 22127 22128 async = sal_alloc(sizeof(*async), "bcmx_async"); 22129 if (async == NULL) { 22130 if (async_callback != NULL) { 22131 (*async_callback)(async_cookie, BCM_E_MEMORY); 22132 } 22133 return; 22134 } 22135 async->next = NULL; 22136 async->type = BCMX_ASYNC_ENTRY_PORT_STP_GET; 22137 async->run = bcmx_async_run; 22138 async->callback = async_callback; 22139 async->cookie = async_cookie; 22140 async->args.port_stp_get.port = port; 22141 async->args.port_stp_get.state = state; 22142 bcm_async_add((bcm_async_req_t *)async); 22143 } 22144 22145 void 22146 bcmx_port_stp_set_async( 22147 bcmx_lport_t port, 22148 int state, 22149 bcmx_async_cb_t async_callback, 22150 void *async_cookie) 22151 { 22152 bcmx_async_req_t *async; 22153 22154 async = sal_alloc(sizeof(*async), "bcmx_async"); 22155 if (async == NULL) { 22156 if (async_callback != NULL) { 22157 (*async_callback)(async_cookie, BCM_E_MEMORY); 22158 } 22159 return; 22160 } 22161 async->next = NULL; 22162 async->type = BCMX_ASYNC_ENTRY_PORT_STP_SET; 22163 async->run = bcmx_async_run; 22164 async->callback = async_callback; 22165 async->cookie = async_cookie; 22166 async->args.port_stp_set.port = port; 22167 async->args.port_stp_set.state = state; 22168 bcm_async_add((bcm_async_req_t *)async); 22169 } 22170 22171 void 22172 bcmx_port_subsidiary_ports_get_async( 22173 bcm_gport_t port, 22174 bcmx_lplist_t * lplist, 22175 bcmx_async_cb_t async_callback, 22176 void *async_cookie) 22177 { 22178 bcmx_async_req_t *async; 22179 22180 async = sal_alloc(sizeof(*async), "bcmx_async"); 22181 if (async == NULL) { 22182 if (async_callback != NULL) { 22183 (*async_callback)(async_cookie, BCM_E_MEMORY); 22184 } 22185 return; 22186 } 22187 async->next = NULL; 22188 async->type = BCMX_ASYNC_ENTRY_PORT_SUBSIDIARY_PORTS_GET; 22189 async->run = bcmx_async_run; 22190 async->callback = async_callback; 22191 async->cookie = async_cookie; 22192 async->args.port_subsidiary_ports_get.port = port; 22193 async->args.port_subsidiary_ports_get.lplist = lplist; 22194 bcm_async_add((bcm_async_req_t *)async); 22195 } 22196 22197 void 22198 bcmx_port_tgid_get_async( 22199 bcmx_lport_t port, 22200 int * tgid, 22201 int * psc, 22202 bcmx_async_cb_t async_callback, 22203 void *async_cookie) 22204 { 22205 bcmx_async_req_t *async; 22206 22207 async = sal_alloc(sizeof(*async), "bcmx_async"); 22208 if (async == NULL) { 22209 if (async_callback != NULL) { 22210 (*async_callback)(async_cookie, BCM_E_MEMORY); 22211 } 22212 return; 22213 } 22214 async->next = NULL; 22215 async->type = BCMX_ASYNC_ENTRY_PORT_TGID_GET; 22216 async->run = bcmx_async_run; 22217 async->callback = async_callback; 22218 async->cookie = async_cookie; 22219 async->args.port_tgid_get.port = port; 22220 async->args.port_tgid_get.tgid = tgid; 22221 async->args.port_tgid_get.psc = psc; 22222 bcm_async_add((bcm_async_req_t *)async); 22223 } 22224 22225 void 22226 bcmx_port_tgid_set_async( 22227 bcmx_lport_t port, 22228 int tgid, 22229 int psc, 22230 bcmx_async_cb_t async_callback, 22231 void *async_cookie) 22232 { 22233 bcmx_async_req_t *async; 22234 22235 async = sal_alloc(sizeof(*async), "bcmx_async"); 22236 if (async == NULL) { 22237 if (async_callback != NULL) { 22238 (*async_callback)(async_cookie, BCM_E_MEMORY); 22239 } 22240 return; 22241 } 22242 async->next = NULL; 22243 async->type = BCMX_ASYNC_ENTRY_PORT_TGID_SET; 22244 async->run = bcmx_async_run; 22245 async->callback = async_callback; 22246 async->cookie = async_cookie; 22247 async->args.port_tgid_set.port = port; 22248 async->args.port_tgid_set.tgid = tgid; 22249 async->args.port_tgid_set.psc = psc; 22250 bcm_async_add((bcm_async_req_t *)async); 22251 } 22252 22253 void 22254 bcmx_port_tpid_add_async( 22255 bcmx_lport_t port, 22256 uint16 tpid, 22257 int color_select, 22258 bcmx_async_cb_t async_callback, 22259 void *async_cookie) 22260 { 22261 bcmx_async_req_t *async; 22262 22263 async = sal_alloc(sizeof(*async), "bcmx_async"); 22264 if (async == NULL) { 22265 if (async_callback != NULL) { 22266 (*async_callback)(async_cookie, BCM_E_MEMORY); 22267 } 22268 return; 22269 } 22270 async->next = NULL; 22271 async->type = BCMX_ASYNC_ENTRY_PORT_TPID_ADD; 22272 async->run = bcmx_async_run; 22273 async->callback = async_callback; 22274 async->cookie = async_cookie; 22275 async->args.port_tpid_add.port = port; 22276 async->args.port_tpid_add.tpid = tpid; 22277 async->args.port_tpid_add.color_select = color_select; 22278 bcm_async_add((bcm_async_req_t *)async); 22279 } 22280 22281 void 22282 bcmx_port_tpid_delete_async( 22283 bcmx_lport_t port, 22284 uint16 tpid, 22285 bcmx_async_cb_t async_callback, 22286 void *async_cookie) 22287 { 22288 bcmx_async_req_t *async; 22289 22290 async = sal_alloc(sizeof(*async), "bcmx_async"); 22291 if (async == NULL) { 22292 if (async_callback != NULL) { 22293 (*async_callback)(async_cookie, BCM_E_MEMORY); 22294 } 22295 return; 22296 } 22297 async->next = NULL; 22298 async->type = BCMX_ASYNC_ENTRY_PORT_TPID_DELETE; 22299 async->run = bcmx_async_run; 22300 async->callback = async_callback; 22301 async->cookie = async_cookie; 22302 async->args.port_tpid_delete.port = port; 22303 async->args.port_tpid_delete.tpid = tpid; 22304 bcm_async_add((bcm_async_req_t *)async); 22305 } 22306 22307 void 22308 bcmx_port_tpid_delete_all_async( 22309 bcmx_lport_t port, 22310 bcmx_async_cb_t async_callback, 22311 void *async_cookie) 22312 { 22313 bcmx_async_req_t *async; 22314 22315 async = sal_alloc(sizeof(*async), "bcmx_async"); 22316 if (async == NULL) { 22317 if (async_callback != NULL) { 22318 (*async_callback)(async_cookie, BCM_E_MEMORY); 22319 } 22320 return; 22321 } 22322 async->next = NULL; 22323 async->type = BCMX_ASYNC_ENTRY_PORT_TPID_DELETE_ALL; 22324 async->run = bcmx_async_run; 22325 async->callback = async_callback; 22326 async->cookie = async_cookie; 22327 async->args.port_tpid_delete_all.port = port; 22328 bcm_async_add((bcm_async_req_t *)async); 22329 } 22330 22331 void 22332 bcmx_port_tpid_get_async( 22333 bcmx_lport_t port, 22334 uint16 * tpid, 22335 bcmx_async_cb_t async_callback, 22336 void *async_cookie) 22337 { 22338 bcmx_async_req_t *async; 22339 22340 async = sal_alloc(sizeof(*async), "bcmx_async"); 22341 if (async == NULL) { 22342 if (async_callback != NULL) { 22343 (*async_callback)(async_cookie, BCM_E_MEMORY); 22344 } 22345 return; 22346 } 22347 async->next = NULL; 22348 async->type = BCMX_ASYNC_ENTRY_PORT_TPID_GET; 22349 async->run = bcmx_async_run; 22350 async->callback = async_callback; 22351 async->cookie = async_cookie; 22352 async->args.port_tpid_get.port = port; 22353 async->args.port_tpid_get.tpid = tpid; 22354 bcm_async_add((bcm_async_req_t *)async); 22355 } 22356 22357 void 22358 bcmx_port_tpid_set_async( 22359 bcmx_lport_t port, 22360 uint16 tpid, 22361 bcmx_async_cb_t async_callback, 22362 void *async_cookie) 22363 { 22364 bcmx_async_req_t *async; 22365 22366 async = sal_alloc(sizeof(*async), "bcmx_async"); 22367 if (async == NULL) { 22368 if (async_callback != NULL) { 22369 (*async_callback)(async_cookie, BCM_E_MEMORY); 22370 } 22371 return; 22372 } 22373 async->next = NULL; 22374 async->type = BCMX_ASYNC_ENTRY_PORT_TPID_SET; 22375 async->run = bcmx_async_run; 22376 async->callback = async_callback; 22377 async->cookie = async_cookie; 22378 async->args.port_tpid_set.port = port; 22379 async->args.port_tpid_set.tpid = tpid; 22380 bcm_async_add((bcm_async_req_t *)async); 22381 } 22382 22383 void 22384 bcmx_port_untagged_priority_get_async( 22385 bcmx_lport_t port, 22386 int * priority, 22387 bcmx_async_cb_t async_callback, 22388 void *async_cookie) 22389 { 22390 bcmx_async_req_t *async; 22391 22392 async = sal_alloc(sizeof(*async), "bcmx_async"); 22393 if (async == NULL) { 22394 if (async_callback != NULL) { 22395 (*async_callback)(async_cookie, BCM_E_MEMORY); 22396 } 22397 return; 22398 } 22399 async->next = NULL; 22400 async->type = BCMX_ASYNC_ENTRY_PORT_UNTAGGED_PRIORITY_GET; 22401 async->run = bcmx_async_run; 22402 async->callback = async_callback; 22403 async->cookie = async_cookie; 22404 async->args.port_untagged_priority_get.port = port; 22405 async->args.port_untagged_priority_get.priority = priority; 22406 bcm_async_add((bcm_async_req_t *)async); 22407 } 22408 22409 void 22410 bcmx_port_untagged_priority_set_async( 22411 bcmx_lport_t port, 22412 int priority, 22413 bcmx_async_cb_t async_callback, 22414 void *async_cookie) 22415 { 22416 bcmx_async_req_t *async; 22417 22418 async = sal_alloc(sizeof(*async), "bcmx_async"); 22419 if (async == NULL) { 22420 if (async_callback != NULL) { 22421 (*async_callback)(async_cookie, BCM_E_MEMORY); 22422 } 22423 return; 22424 } 22425 async->next = NULL; 22426 async->type = BCMX_ASYNC_ENTRY_PORT_UNTAGGED_PRIORITY_SET; 22427 async->run = bcmx_async_run; 22428 async->callback = async_callback; 22429 async->cookie = async_cookie; 22430 async->args.port_untagged_priority_set.port = port; 22431 async->args.port_untagged_priority_set.priority = priority; 22432 bcm_async_add((bcm_async_req_t *)async); 22433 } 22434 22435 void 22436 bcmx_port_untagged_vlan_get_async( 22437 bcmx_lport_t port, 22438 bcm_vlan_t * vid_ptr, 22439 bcmx_async_cb_t async_callback, 22440 void *async_cookie) 22441 { 22442 bcmx_async_req_t *async; 22443 22444 async = sal_alloc(sizeof(*async), "bcmx_async"); 22445 if (async == NULL) { 22446 if (async_callback != NULL) { 22447 (*async_callback)(async_cookie, BCM_E_MEMORY); 22448 } 22449 return; 22450 } 22451 async->next = NULL; 22452 async->type = BCMX_ASYNC_ENTRY_PORT_UNTAGGED_VLAN_GET; 22453 async->run = bcmx_async_run; 22454 async->callback = async_callback; 22455 async->cookie = async_cookie; 22456 async->args.port_untagged_vlan_get.port = port; 22457 async->args.port_untagged_vlan_get.vid_ptr = vid_ptr; 22458 bcm_async_add((bcm_async_req_t *)async); 22459 } 22460 22461 void 22462 bcmx_port_untagged_vlan_set_async( 22463 bcmx_lport_t port, 22464 bcm_vlan_t vid, 22465 bcmx_async_cb_t async_callback, 22466 void *async_cookie) 22467 { 22468 bcmx_async_req_t *async; 22469 22470 async = sal_alloc(sizeof(*async), "bcmx_async"); 22471 if (async == NULL) { 22472 if (async_callback != NULL) { 22473 (*async_callback)(async_cookie, BCM_E_MEMORY); 22474 } 22475 return; 22476 } 22477 async->next = NULL; 22478 async->type = BCMX_ASYNC_ENTRY_PORT_UNTAGGED_VLAN_SET; 22479 async->run = bcmx_async_run; 22480 async->callback = async_callback; 22481 async->cookie = async_cookie; 22482 async->args.port_untagged_vlan_set.port = port; 22483 async->args.port_untagged_vlan_set.vid = vid; 22484 bcm_async_add((bcm_async_req_t *)async); 22485 } 22486 22487 void 22488 bcmx_port_update_async( 22489 bcmx_lport_t port, 22490 int link, 22491 bcmx_async_cb_t async_callback, 22492 void *async_cookie) 22493 { 22494 bcmx_async_req_t *async; 22495 22496 async = sal_alloc(sizeof(*async), "bcmx_async"); 22497 if (async == NULL) { 22498 if (async_callback != NULL) { 22499 (*async_callback)(async_cookie, BCM_E_MEMORY); 22500 } 22501 return; 22502 } 22503 async->next = NULL; 22504 async->type = BCMX_ASYNC_ENTRY_PORT_UPDATE; 22505 async->run = bcmx_async_run; 22506 async->callback = async_callback; 22507 async->cookie = async_cookie; 22508 async->args.port_update.port = port; 22509 async->args.port_update.link = link; 22510 bcm_async_add((bcm_async_req_t *)async); 22511 } 22512 22513 void 22514 bcmx_port_vlan_inner_tag_get_async( 22515 bcmx_lport_t port, 22516 uint16 * inner_tag, 22517 bcmx_async_cb_t async_callback, 22518 void *async_cookie) 22519 { 22520 bcmx_async_req_t *async; 22521 22522 async = sal_alloc(sizeof(*async), "bcmx_async"); 22523 if (async == NULL) { 22524 if (async_callback != NULL) { 22525 (*async_callback)(async_cookie, BCM_E_MEMORY); 22526 } 22527 return; 22528 } 22529 async->next = NULL; 22530 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_INNER_TAG_GET; 22531 async->run = bcmx_async_run; 22532 async->callback = async_callback; 22533 async->cookie = async_cookie; 22534 async->args.port_vlan_inner_tag_get.port = port; 22535 async->args.port_vlan_inner_tag_get.inner_tag = inner_tag; 22536 bcm_async_add((bcm_async_req_t *)async); 22537 } 22538 22539 void 22540 bcmx_port_vlan_inner_tag_set_async( 22541 bcmx_lport_t port, 22542 uint16 inner_tag, 22543 bcmx_async_cb_t async_callback, 22544 void *async_cookie) 22545 { 22546 bcmx_async_req_t *async; 22547 22548 async = sal_alloc(sizeof(*async), "bcmx_async"); 22549 if (async == NULL) { 22550 if (async_callback != NULL) { 22551 (*async_callback)(async_cookie, BCM_E_MEMORY); 22552 } 22553 return; 22554 } 22555 async->next = NULL; 22556 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_INNER_TAG_SET; 22557 async->run = bcmx_async_run; 22558 async->callback = async_callback; 22559 async->cookie = async_cookie; 22560 async->args.port_vlan_inner_tag_set.port = port; 22561 async->args.port_vlan_inner_tag_set.inner_tag = inner_tag; 22562 bcm_async_add((bcm_async_req_t *)async); 22563 } 22564 22565 void 22566 bcmx_port_vlan_member_get_async( 22567 bcmx_lport_t port, 22568 uint32 * flags, 22569 bcmx_async_cb_t async_callback, 22570 void *async_cookie) 22571 { 22572 bcmx_async_req_t *async; 22573 22574 async = sal_alloc(sizeof(*async), "bcmx_async"); 22575 if (async == NULL) { 22576 if (async_callback != NULL) { 22577 (*async_callback)(async_cookie, BCM_E_MEMORY); 22578 } 22579 return; 22580 } 22581 async->next = NULL; 22582 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_MEMBER_GET; 22583 async->run = bcmx_async_run; 22584 async->callback = async_callback; 22585 async->cookie = async_cookie; 22586 async->args.port_vlan_member_get.port = port; 22587 async->args.port_vlan_member_get.flags = flags; 22588 bcm_async_add((bcm_async_req_t *)async); 22589 } 22590 22591 void 22592 bcmx_port_vlan_member_set_async( 22593 bcmx_lport_t port, 22594 uint32 flags, 22595 bcmx_async_cb_t async_callback, 22596 void *async_cookie) 22597 { 22598 bcmx_async_req_t *async; 22599 22600 async = sal_alloc(sizeof(*async), "bcmx_async"); 22601 if (async == NULL) { 22602 if (async_callback != NULL) { 22603 (*async_callback)(async_cookie, BCM_E_MEMORY); 22604 } 22605 return; 22606 } 22607 async->next = NULL; 22608 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_MEMBER_SET; 22609 async->run = bcmx_async_run; 22610 async->callback = async_callback; 22611 async->cookie = async_cookie; 22612 async->args.port_vlan_member_set.port = port; 22613 async->args.port_vlan_member_set.flags = flags; 22614 bcm_async_add((bcm_async_req_t *)async); 22615 } 22616 22617 void 22618 bcmx_port_vlan_priority_map_get_async( 22619 bcmx_lport_t port, 22620 int pkt_pri, 22621 int cfi, 22622 int * internal_pri, 22623 bcm_color_t * color, 22624 bcmx_async_cb_t async_callback, 22625 void *async_cookie) 22626 { 22627 bcmx_async_req_t *async; 22628 22629 async = sal_alloc(sizeof(*async), "bcmx_async"); 22630 if (async == NULL) { 22631 if (async_callback != NULL) { 22632 (*async_callback)(async_cookie, BCM_E_MEMORY); 22633 } 22634 return; 22635 } 22636 async->next = NULL; 22637 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_MAP_GET; 22638 async->run = bcmx_async_run; 22639 async->callback = async_callback; 22640 async->cookie = async_cookie; 22641 async->args.port_vlan_priority_map_get.port = port; 22642 async->args.port_vlan_priority_map_get.pkt_pri = pkt_pri; 22643 async->args.port_vlan_priority_map_get.cfi = cfi; 22644 async->args.port_vlan_priority_map_get.internal_pri = internal_pri; 22645 async->args.port_vlan_priority_map_get.color = color; 22646 bcm_async_add((bcm_async_req_t *)async); 22647 } 22648 22649 void 22650 bcmx_port_vlan_priority_map_set_async( 22651 bcmx_lport_t port, 22652 int pkt_pri, 22653 int cfi, 22654 int internal_pri, 22655 bcm_color_t color, 22656 bcmx_async_cb_t async_callback, 22657 void *async_cookie) 22658 { 22659 bcmx_async_req_t *async; 22660 22661 async = sal_alloc(sizeof(*async), "bcmx_async"); 22662 if (async == NULL) { 22663 if (async_callback != NULL) { 22664 (*async_callback)(async_cookie, BCM_E_MEMORY); 22665 } 22666 return; 22667 } 22668 async->next = NULL; 22669 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_MAP_SET; 22670 async->run = bcmx_async_run; 22671 async->callback = async_callback; 22672 async->cookie = async_cookie; 22673 async->args.port_vlan_priority_map_set.port = port; 22674 async->args.port_vlan_priority_map_set.pkt_pri = pkt_pri; 22675 async->args.port_vlan_priority_map_set.cfi = cfi; 22676 async->args.port_vlan_priority_map_set.internal_pri = internal_pri; 22677 async->args.port_vlan_priority_map_set.color = color; 22678 bcm_async_add((bcm_async_req_t *)async); 22679 } 22680 22681 void 22682 bcmx_port_vlan_priority_unmap_get_async( 22683 bcmx_lport_t port, 22684 int internal_pri, 22685 bcm_color_t color, 22686 int * pkt_pri, 22687 int * cfi, 22688 bcmx_async_cb_t async_callback, 22689 void *async_cookie) 22690 { 22691 bcmx_async_req_t *async; 22692 22693 async = sal_alloc(sizeof(*async), "bcmx_async"); 22694 if (async == NULL) { 22695 if (async_callback != NULL) { 22696 (*async_callback)(async_cookie, BCM_E_MEMORY); 22697 } 22698 return; 22699 } 22700 async->next = NULL; 22701 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_UNMAP_GET; 22702 async->run = bcmx_async_run; 22703 async->callback = async_callback; 22704 async->cookie = async_cookie; 22705 async->args.port_vlan_priority_unmap_get.port = port; 22706 async->args.port_vlan_priority_unmap_get.internal_pri = internal_pri; 22707 async->args.port_vlan_priority_unmap_get.color = color; 22708 async->args.port_vlan_priority_unmap_get.pkt_pri = pkt_pri; 22709 async->args.port_vlan_priority_unmap_get.cfi = cfi; 22710 bcm_async_add((bcm_async_req_t *)async); 22711 } 22712 22713 void 22714 bcmx_port_vlan_priority_unmap_set_async( 22715 bcmx_lport_t port, 22716 int internal_pri, 22717 bcm_color_t color, 22718 int pkt_pri, 22719 int cfi, 22720 bcmx_async_cb_t async_callback, 22721 void *async_cookie) 22722 { 22723 bcmx_async_req_t *async; 22724 22725 async = sal_alloc(sizeof(*async), "bcmx_async"); 22726 if (async == NULL) { 22727 if (async_callback != NULL) { 22728 (*async_callback)(async_cookie, BCM_E_MEMORY); 22729 } 22730 return; 22731 } 22732 async->next = NULL; 22733 async->type = BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_UNMAP_SET; 22734 async->run = bcmx_async_run; 22735 async->callback = async_callback; 22736 async->cookie = async_cookie; 22737 async->args.port_vlan_priority_unmap_set.port = port; 22738 async->args.port_vlan_priority_unmap_set.internal_pri = internal_pri; 22739 async->args.port_vlan_priority_unmap_set.color = color; 22740 async->args.port_vlan_priority_unmap_set.pkt_pri = pkt_pri; 22741 async->args.port_vlan_priority_unmap_set.cfi = cfi; 22742 bcm_async_add((bcm_async_req_t *)async); 22743 } 22744 22745 #ifdef INCLUDE_L3 22746 22747 void 22748 bcmx_proxy_cleanup_async( 22749 bcmx_async_cb_t async_callback, 22750 void *async_cookie) 22751 { 22752 bcmx_async_req_t *async; 22753 22754 async = sal_alloc(sizeof(*async), "bcmx_async"); 22755 if (async == NULL) { 22756 if (async_callback != NULL) { 22757 (*async_callback)(async_cookie, BCM_E_MEMORY); 22758 } 22759 return; 22760 } 22761 async->next = NULL; 22762 async->type = BCMX_ASYNC_ENTRY_PROXY_CLEANUP; 22763 async->run = bcmx_async_run; 22764 async->callback = async_callback; 22765 async->cookie = async_cookie; 22766 bcm_async_add((bcm_async_req_t *)async); 22767 } 22768 22769 void 22770 bcmx_proxy_client_set_async( 22771 bcmx_lport_t client_port, 22772 bcm_proxy_proto_type_t proto_type, 22773 bcmx_lport_t server_lport, 22774 int enable, 22775 bcmx_async_cb_t async_callback, 22776 void *async_cookie) 22777 { 22778 bcmx_async_req_t *async; 22779 22780 async = sal_alloc(sizeof(*async), "bcmx_async"); 22781 if (async == NULL) { 22782 if (async_callback != NULL) { 22783 (*async_callback)(async_cookie, BCM_E_MEMORY); 22784 } 22785 return; 22786 } 22787 async->next = NULL; 22788 async->type = BCMX_ASYNC_ENTRY_PROXY_CLIENT_SET; 22789 async->run = bcmx_async_run; 22790 async->callback = async_callback; 22791 async->cookie = async_cookie; 22792 async->args.proxy_client_set.client_port = client_port; 22793 async->args.proxy_client_set.proto_type = proto_type; 22794 async->args.proxy_client_set.server_lport = server_lport; 22795 async->args.proxy_client_set.enable = enable; 22796 bcm_async_add((bcm_async_req_t *)async); 22797 } 22798 22799 void 22800 bcmx_proxy_init_async( 22801 bcmx_async_cb_t async_callback, 22802 void *async_cookie) 22803 { 22804 bcmx_async_req_t *async; 22805 22806 async = sal_alloc(sizeof(*async), "bcmx_async"); 22807 if (async == NULL) { 22808 if (async_callback != NULL) { 22809 (*async_callback)(async_cookie, BCM_E_MEMORY); 22810 } 22811 return; 22812 } 22813 async->next = NULL; 22814 async->type = BCMX_ASYNC_ENTRY_PROXY_INIT; 22815 async->run = bcmx_async_run; 22816 async->callback = async_callback; 22817 async->cookie = async_cookie; 22818 bcm_async_add((bcm_async_req_t *)async); 22819 } 22820 22821 void 22822 bcmx_proxy_server_get_async( 22823 bcmx_lport_t server_lport, 22824 bcm_proxy_mode_t mode, 22825 int * enable, 22826 bcmx_async_cb_t async_callback, 22827 void *async_cookie) 22828 { 22829 bcmx_async_req_t *async; 22830 22831 async = sal_alloc(sizeof(*async), "bcmx_async"); 22832 if (async == NULL) { 22833 if (async_callback != NULL) { 22834 (*async_callback)(async_cookie, BCM_E_MEMORY); 22835 } 22836 return; 22837 } 22838 async->next = NULL; 22839 async->type = BCMX_ASYNC_ENTRY_PROXY_SERVER_GET; 22840 async->run = bcmx_async_run; 22841 async->callback = async_callback; 22842 async->cookie = async_cookie; 22843 async->args.proxy_server_get.server_lport = server_lport; 22844 async->args.proxy_server_get.mode = mode; 22845 async->args.proxy_server_get.enable = enable; 22846 bcm_async_add((bcm_async_req_t *)async); 22847 } 22848 22849 void 22850 bcmx_proxy_server_set_async( 22851 bcmx_lport_t server_lport, 22852 bcm_proxy_mode_t mode, 22853 int enable, 22854 bcmx_async_cb_t async_callback, 22855 void *async_cookie) 22856 { 22857 bcmx_async_req_t *async; 22858 22859 async = sal_alloc(sizeof(*async), "bcmx_async"); 22860 if (async == NULL) { 22861 if (async_callback != NULL) { 22862 (*async_callback)(async_cookie, BCM_E_MEMORY); 22863 } 22864 return; 22865 } 22866 async->next = NULL; 22867 async->type = BCMX_ASYNC_ENTRY_PROXY_SERVER_SET; 22868 async->run = bcmx_async_run; 22869 async->callback = async_callback; 22870 async->cookie = async_cookie; 22871 async->args.proxy_server_set.server_lport = server_lport; 22872 async->args.proxy_server_set.mode = mode; 22873 async->args.proxy_server_set.enable = enable; 22874 bcm_async_add((bcm_async_req_t *)async); 22875 } 22876 22877 #endif /* INCLUDE_L3 */ 22878 22879 void 22880 bcmx_qos_detach_async( 22881 bcmx_async_cb_t async_callback, 22882 void *async_cookie) 22883 { 22884 bcmx_async_req_t *async; 22885 22886 async = sal_alloc(sizeof(*async), "bcmx_async"); 22887 if (async == NULL) { 22888 if (async_callback != NULL) { 22889 (*async_callback)(async_cookie, BCM_E_MEMORY); 22890 } 22891 return; 22892 } 22893 async->next = NULL; 22894 async->type = BCMX_ASYNC_ENTRY_QOS_DETACH; 22895 async->run = bcmx_async_run; 22896 async->callback = async_callback; 22897 async->cookie = async_cookie; 22898 bcm_async_add((bcm_async_req_t *)async); 22899 } 22900 22901 void 22902 bcmx_qos_init_async( 22903 bcmx_async_cb_t async_callback, 22904 void *async_cookie) 22905 { 22906 bcmx_async_req_t *async; 22907 22908 async = sal_alloc(sizeof(*async), "bcmx_async"); 22909 if (async == NULL) { 22910 if (async_callback != NULL) { 22911 (*async_callback)(async_cookie, BCM_E_MEMORY); 22912 } 22913 return; 22914 } 22915 async->next = NULL; 22916 async->type = BCMX_ASYNC_ENTRY_QOS_INIT; 22917 async->run = bcmx_async_run; 22918 async->callback = async_callback; 22919 async->cookie = async_cookie; 22920 bcm_async_add((bcm_async_req_t *)async); 22921 } 22922 22923 void 22924 bcmx_qos_map_add_async( 22925 uint32 flags, 22926 bcmx_qos_map_t * map, 22927 int map_id, 22928 bcmx_async_cb_t async_callback, 22929 void *async_cookie) 22930 { 22931 bcmx_async_req_t *async; 22932 22933 async = sal_alloc(sizeof(*async), "bcmx_async"); 22934 if (async == NULL) { 22935 if (async_callback != NULL) { 22936 (*async_callback)(async_cookie, BCM_E_MEMORY); 22937 } 22938 return; 22939 } 22940 async->next = NULL; 22941 async->type = BCMX_ASYNC_ENTRY_QOS_MAP_ADD; 22942 async->run = bcmx_async_run; 22943 async->callback = async_callback; 22944 async->cookie = async_cookie; 22945 async->args.qos_map_add.flags = flags; 22946 async->args.qos_map_add.map = map; 22947 async->args.qos_map_add.map_id = map_id; 22948 bcm_async_add((bcm_async_req_t *)async); 22949 } 22950 22951 void 22952 bcmx_qos_map_create_async( 22953 uint32 flags, 22954 int * map_id, 22955 bcmx_async_cb_t async_callback, 22956 void *async_cookie) 22957 { 22958 bcmx_async_req_t *async; 22959 22960 async = sal_alloc(sizeof(*async), "bcmx_async"); 22961 if (async == NULL) { 22962 if (async_callback != NULL) { 22963 (*async_callback)(async_cookie, BCM_E_MEMORY); 22964 } 22965 return; 22966 } 22967 async->next = NULL; 22968 async->type = BCMX_ASYNC_ENTRY_QOS_MAP_CREATE; 22969 async->run = bcmx_async_run; 22970 async->callback = async_callback; 22971 async->cookie = async_cookie; 22972 async->args.qos_map_create.flags = flags; 22973 async->args.qos_map_create.map_id = map_id; 22974 bcm_async_add((bcm_async_req_t *)async); 22975 } 22976 22977 void 22978 bcmx_qos_map_delete_async( 22979 uint32 flags, 22980 bcmx_qos_map_t * map, 22981 int map_id, 22982 bcmx_async_cb_t async_callback, 22983 void *async_cookie) 22984 { 22985 bcmx_async_req_t *async; 22986 22987 async = sal_alloc(sizeof(*async), "bcmx_async"); 22988 if (async == NULL) { 22989 if (async_callback != NULL) { 22990 (*async_callback)(async_cookie, BCM_E_MEMORY); 22991 } 22992 return; 22993 } 22994 async->next = NULL; 22995 async->type = BCMX_ASYNC_ENTRY_QOS_MAP_DELETE; 22996 async->run = bcmx_async_run; 22997 async->callback = async_callback; 22998 async->cookie = async_cookie; 22999 async->args.qos_map_delete.flags = flags; 23000 async->args.qos_map_delete.map = map; 23001 async->args.qos_map_delete.map_id = map_id; 23002 bcm_async_add((bcm_async_req_t *)async); 23003 } 23004 23005 void 23006 bcmx_qos_map_destroy_async( 23007 int map_id, 23008 bcmx_async_cb_t async_callback, 23009 void *async_cookie) 23010 { 23011 bcmx_async_req_t *async; 23012 23013 async = sal_alloc(sizeof(*async), "bcmx_async"); 23014 if (async == NULL) { 23015 if (async_callback != NULL) { 23016 (*async_callback)(async_cookie, BCM_E_MEMORY); 23017 } 23018 return; 23019 } 23020 async->next = NULL; 23021 async->type = BCMX_ASYNC_ENTRY_QOS_MAP_DESTROY; 23022 async->run = bcmx_async_run; 23023 async->callback = async_callback; 23024 async->cookie = async_cookie; 23025 async->args.qos_map_destroy.map_id = map_id; 23026 bcm_async_add((bcm_async_req_t *)async); 23027 } 23028 23029 void 23030 bcmx_qos_map_multi_get_async( 23031 uint32 flags, 23032 int map_id, 23033 int array_size, 23034 bcmx_qos_map_t * array, 23035 int * array_count, 23036 bcmx_async_cb_t async_callback, 23037 void *async_cookie) 23038 { 23039 bcmx_async_req_t *async; 23040 23041 async = sal_alloc(sizeof(*async), "bcmx_async"); 23042 if (async == NULL) { 23043 if (async_callback != NULL) { 23044 (*async_callback)(async_cookie, BCM_E_MEMORY); 23045 } 23046 return; 23047 } 23048 async->next = NULL; 23049 async->type = BCMX_ASYNC_ENTRY_QOS_MAP_MULTI_GET; 23050 async->run = bcmx_async_run; 23051 async->callback = async_callback; 23052 async->cookie = async_cookie; 23053 async->args.qos_map_multi_get.flags = flags; 23054 async->args.qos_map_multi_get.map_id = map_id; 23055 async->args.qos_map_multi_get.array_size = array_size; 23056 async->args.qos_map_multi_get.array = array; 23057 async->args.qos_map_multi_get.array_count = array_count; 23058 bcm_async_add((bcm_async_req_t *)async); 23059 } 23060 23061 void 23062 bcmx_qos_multi_get_async( 23063 int array_size, 23064 int * map_ids_array, 23065 int * flags_array, 23066 int * array_count, 23067 bcmx_async_cb_t async_callback, 23068 void *async_cookie) 23069 { 23070 bcmx_async_req_t *async; 23071 23072 async = sal_alloc(sizeof(*async), "bcmx_async"); 23073 if (async == NULL) { 23074 if (async_callback != NULL) { 23075 (*async_callback)(async_cookie, BCM_E_MEMORY); 23076 } 23077 return; 23078 } 23079 async->next = NULL; 23080 async->type = BCMX_ASYNC_ENTRY_QOS_MULTI_GET; 23081 async->run = bcmx_async_run; 23082 async->callback = async_callback; 23083 async->cookie = async_cookie; 23084 async->args.qos_multi_get.array_size = array_size; 23085 async->args.qos_multi_get.map_ids_array = map_ids_array; 23086 async->args.qos_multi_get.flags_array = flags_array; 23087 async->args.qos_multi_get.array_count = array_count; 23088 bcm_async_add((bcm_async_req_t *)async); 23089 } 23090 23091 void 23092 bcmx_qos_port_map_get_async( 23093 bcm_gport_t port, 23094 int * ing_map, 23095 int * egr_map, 23096 bcmx_async_cb_t async_callback, 23097 void *async_cookie) 23098 { 23099 bcmx_async_req_t *async; 23100 23101 async = sal_alloc(sizeof(*async), "bcmx_async"); 23102 if (async == NULL) { 23103 if (async_callback != NULL) { 23104 (*async_callback)(async_cookie, BCM_E_MEMORY); 23105 } 23106 return; 23107 } 23108 async->next = NULL; 23109 async->type = BCMX_ASYNC_ENTRY_QOS_PORT_MAP_GET; 23110 async->run = bcmx_async_run; 23111 async->callback = async_callback; 23112 async->cookie = async_cookie; 23113 async->args.qos_port_map_get.port = port; 23114 async->args.qos_port_map_get.ing_map = ing_map; 23115 async->args.qos_port_map_get.egr_map = egr_map; 23116 bcm_async_add((bcm_async_req_t *)async); 23117 } 23118 23119 void 23120 bcmx_qos_port_map_set_async( 23121 bcm_gport_t port, 23122 int ing_map, 23123 int egr_map, 23124 bcmx_async_cb_t async_callback, 23125 void *async_cookie) 23126 { 23127 bcmx_async_req_t *async; 23128 23129 async = sal_alloc(sizeof(*async), "bcmx_async"); 23130 if (async == NULL) { 23131 if (async_callback != NULL) { 23132 (*async_callback)(async_cookie, BCM_E_MEMORY); 23133 } 23134 return; 23135 } 23136 async->next = NULL; 23137 async->type = BCMX_ASYNC_ENTRY_QOS_PORT_MAP_SET; 23138 async->run = bcmx_async_run; 23139 async->callback = async_callback; 23140 async->cookie = async_cookie; 23141 async->args.qos_port_map_set.port = port; 23142 async->args.qos_port_map_set.ing_map = ing_map; 23143 async->args.qos_port_map_set.egr_map = egr_map; 23144 bcm_async_add((bcm_async_req_t *)async); 23145 } 23146 23147 void 23148 bcmx_qos_port_vlan_map_get_async( 23149 bcm_gport_t port, 23150 bcm_vlan_t vid, 23151 int * ing_map, 23152 int * egr_map, 23153 bcmx_async_cb_t async_callback, 23154 void *async_cookie) 23155 { 23156 bcmx_async_req_t *async; 23157 23158 async = sal_alloc(sizeof(*async), "bcmx_async"); 23159 if (async == NULL) { 23160 if (async_callback != NULL) { 23161 (*async_callback)(async_cookie, BCM_E_MEMORY); 23162 } 23163 return; 23164 } 23165 async->next = NULL; 23166 async->type = BCMX_ASYNC_ENTRY_QOS_PORT_VLAN_MAP_GET; 23167 async->run = bcmx_async_run; 23168 async->callback = async_callback; 23169 async->cookie = async_cookie; 23170 async->args.qos_port_vlan_map_get.port = port; 23171 async->args.qos_port_vlan_map_get.vid = vid; 23172 async->args.qos_port_vlan_map_get.ing_map = ing_map; 23173 async->args.qos_port_vlan_map_get.egr_map = egr_map; 23174 bcm_async_add((bcm_async_req_t *)async); 23175 } 23176 23177 void 23178 bcmx_qos_port_vlan_map_set_async( 23179 bcm_gport_t port, 23180 bcm_vlan_t vid, 23181 int ing_map, 23182 int egr_map, 23183 bcmx_async_cb_t async_callback, 23184 void *async_cookie) 23185 { 23186 bcmx_async_req_t *async; 23187 23188 async = sal_alloc(sizeof(*async), "bcmx_async"); 23189 if (async == NULL) { 23190 if (async_callback != NULL) { 23191 (*async_callback)(async_cookie, BCM_E_MEMORY); 23192 } 23193 return; 23194 } 23195 async->next = NULL; 23196 async->type = BCMX_ASYNC_ENTRY_QOS_PORT_VLAN_MAP_SET; 23197 async->run = bcmx_async_run; 23198 async->callback = async_callback; 23199 async->cookie = async_cookie; 23200 async->args.qos_port_vlan_map_set.port = port; 23201 async->args.qos_port_vlan_map_set.vid = vid; 23202 async->args.qos_port_vlan_map_set.ing_map = ing_map; 23203 async->args.qos_port_vlan_map_set.egr_map = egr_map; 23204 bcm_async_add((bcm_async_req_t *)async); 23205 } 23206 23207 void 23208 bcmx_rate_bandwidth_get_async( 23209 bcmx_lport_t port, 23210 int flags, 23211 uint32 * kbits_sec, 23212 uint32 * kbits_burst, 23213 bcmx_async_cb_t async_callback, 23214 void *async_cookie) 23215 { 23216 bcmx_async_req_t *async; 23217 23218 async = sal_alloc(sizeof(*async), "bcmx_async"); 23219 if (async == NULL) { 23220 if (async_callback != NULL) { 23221 (*async_callback)(async_cookie, BCM_E_MEMORY); 23222 } 23223 return; 23224 } 23225 async->next = NULL; 23226 async->type = BCMX_ASYNC_ENTRY_RATE_BANDWIDTH_GET; 23227 async->run = bcmx_async_run; 23228 async->callback = async_callback; 23229 async->cookie = async_cookie; 23230 async->args.rate_bandwidth_get.port = port; 23231 async->args.rate_bandwidth_get.flags = flags; 23232 async->args.rate_bandwidth_get.kbits_sec = kbits_sec; 23233 async->args.rate_bandwidth_get.kbits_burst = kbits_burst; 23234 bcm_async_add((bcm_async_req_t *)async); 23235 } 23236 23237 void 23238 bcmx_rate_bandwidth_set_async( 23239 bcmx_lport_t port, 23240 int flags, 23241 uint32 kbits_sec, 23242 uint32 kbits_burst, 23243 bcmx_async_cb_t async_callback, 23244 void *async_cookie) 23245 { 23246 bcmx_async_req_t *async; 23247 23248 async = sal_alloc(sizeof(*async), "bcmx_async"); 23249 if (async == NULL) { 23250 if (async_callback != NULL) { 23251 (*async_callback)(async_cookie, BCM_E_MEMORY); 23252 } 23253 return; 23254 } 23255 async->next = NULL; 23256 async->type = BCMX_ASYNC_ENTRY_RATE_BANDWIDTH_SET; 23257 async->run = bcmx_async_run; 23258 async->callback = async_callback; 23259 async->cookie = async_cookie; 23260 async->args.rate_bandwidth_set.port = port; 23261 async->args.rate_bandwidth_set.flags = flags; 23262 async->args.rate_bandwidth_set.kbits_sec = kbits_sec; 23263 async->args.rate_bandwidth_set.kbits_burst = kbits_burst; 23264 bcm_async_add((bcm_async_req_t *)async); 23265 } 23266 23267 void 23268 bcmx_rate_bcast_get_async( 23269 int * limit, 23270 int * flags, 23271 bcmx_lport_t port, 23272 bcmx_async_cb_t async_callback, 23273 void *async_cookie) 23274 { 23275 bcmx_async_req_t *async; 23276 23277 async = sal_alloc(sizeof(*async), "bcmx_async"); 23278 if (async == NULL) { 23279 if (async_callback != NULL) { 23280 (*async_callback)(async_cookie, BCM_E_MEMORY); 23281 } 23282 return; 23283 } 23284 async->next = NULL; 23285 async->type = BCMX_ASYNC_ENTRY_RATE_BCAST_GET; 23286 async->run = bcmx_async_run; 23287 async->callback = async_callback; 23288 async->cookie = async_cookie; 23289 async->args.rate_bcast_get.limit = limit; 23290 async->args.rate_bcast_get.flags = flags; 23291 async->args.rate_bcast_get.port = port; 23292 bcm_async_add((bcm_async_req_t *)async); 23293 } 23294 23295 void 23296 bcmx_rate_bcast_set_async( 23297 int limit, 23298 int flags, 23299 bcmx_lport_t port, 23300 bcmx_async_cb_t async_callback, 23301 void *async_cookie) 23302 { 23303 bcmx_async_req_t *async; 23304 23305 async = sal_alloc(sizeof(*async), "bcmx_async"); 23306 if (async == NULL) { 23307 if (async_callback != NULL) { 23308 (*async_callback)(async_cookie, BCM_E_MEMORY); 23309 } 23310 return; 23311 } 23312 async->next = NULL; 23313 async->type = BCMX_ASYNC_ENTRY_RATE_BCAST_SET; 23314 async->run = bcmx_async_run; 23315 async->callback = async_callback; 23316 async->cookie = async_cookie; 23317 async->args.rate_bcast_set.limit = limit; 23318 async->args.rate_bcast_set.flags = flags; 23319 async->args.rate_bcast_set.port = port; 23320 bcm_async_add((bcm_async_req_t *)async); 23321 } 23322 23323 void 23324 bcmx_rate_dlfbc_get_async( 23325 int * limit, 23326 int * flags, 23327 bcmx_lport_t port, 23328 bcmx_async_cb_t async_callback, 23329 void *async_cookie) 23330 { 23331 bcmx_async_req_t *async; 23332 23333 async = sal_alloc(sizeof(*async), "bcmx_async"); 23334 if (async == NULL) { 23335 if (async_callback != NULL) { 23336 (*async_callback)(async_cookie, BCM_E_MEMORY); 23337 } 23338 return; 23339 } 23340 async->next = NULL; 23341 async->type = BCMX_ASYNC_ENTRY_RATE_DLFBC_GET; 23342 async->run = bcmx_async_run; 23343 async->callback = async_callback; 23344 async->cookie = async_cookie; 23345 async->args.rate_dlfbc_get.limit = limit; 23346 async->args.rate_dlfbc_get.flags = flags; 23347 async->args.rate_dlfbc_get.port = port; 23348 bcm_async_add((bcm_async_req_t *)async); 23349 } 23350 23351 void 23352 bcmx_rate_dlfbc_set_async( 23353 int limit, 23354 int flags, 23355 bcmx_lport_t port, 23356 bcmx_async_cb_t async_callback, 23357 void *async_cookie) 23358 { 23359 bcmx_async_req_t *async; 23360 23361 async = sal_alloc(sizeof(*async), "bcmx_async"); 23362 if (async == NULL) { 23363 if (async_callback != NULL) { 23364 (*async_callback)(async_cookie, BCM_E_MEMORY); 23365 } 23366 return; 23367 } 23368 async->next = NULL; 23369 async->type = BCMX_ASYNC_ENTRY_RATE_DLFBC_SET; 23370 async->run = bcmx_async_run; 23371 async->callback = async_callback; 23372 async->cookie = async_cookie; 23373 async->args.rate_dlfbc_set.limit = limit; 23374 async->args.rate_dlfbc_set.flags = flags; 23375 async->args.rate_dlfbc_set.port = port; 23376 bcm_async_add((bcm_async_req_t *)async); 23377 } 23378 23379 void 23380 bcmx_rate_get_async( 23381 int * val, 23382 int * flags, 23383 bcmx_async_cb_t async_callback, 23384 void *async_cookie) 23385 { 23386 bcmx_async_req_t *async; 23387 23388 async = sal_alloc(sizeof(*async), "bcmx_async"); 23389 if (async == NULL) { 23390 if (async_callback != NULL) { 23391 (*async_callback)(async_cookie, BCM_E_MEMORY); 23392 } 23393 return; 23394 } 23395 async->next = NULL; 23396 async->type = BCMX_ASYNC_ENTRY_RATE_GET; 23397 async->run = bcmx_async_run; 23398 async->callback = async_callback; 23399 async->cookie = async_cookie; 23400 async->args.rate_get.val = val; 23401 async->args.rate_get.flags = flags; 23402 bcm_async_add((bcm_async_req_t *)async); 23403 } 23404 23405 void 23406 bcmx_rate_mcast_get_async( 23407 int * limit, 23408 int * flags, 23409 bcmx_lport_t port, 23410 bcmx_async_cb_t async_callback, 23411 void *async_cookie) 23412 { 23413 bcmx_async_req_t *async; 23414 23415 async = sal_alloc(sizeof(*async), "bcmx_async"); 23416 if (async == NULL) { 23417 if (async_callback != NULL) { 23418 (*async_callback)(async_cookie, BCM_E_MEMORY); 23419 } 23420 return; 23421 } 23422 async->next = NULL; 23423 async->type = BCMX_ASYNC_ENTRY_RATE_MCAST_GET; 23424 async->run = bcmx_async_run; 23425 async->callback = async_callback; 23426 async->cookie = async_cookie; 23427 async->args.rate_mcast_get.limit = limit; 23428 async->args.rate_mcast_get.flags = flags; 23429 async->args.rate_mcast_get.port = port; 23430 bcm_async_add((bcm_async_req_t *)async); 23431 } 23432 23433 void 23434 bcmx_rate_mcast_set_async( 23435 int limit, 23436 int flags, 23437 bcmx_lport_t port, 23438 bcmx_async_cb_t async_callback, 23439 void *async_cookie) 23440 { 23441 bcmx_async_req_t *async; 23442 23443 async = sal_alloc(sizeof(*async), "bcmx_async"); 23444 if (async == NULL) { 23445 if (async_callback != NULL) { 23446 (*async_callback)(async_cookie, BCM_E_MEMORY); 23447 } 23448 return; 23449 } 23450 async->next = NULL; 23451 async->type = BCMX_ASYNC_ENTRY_RATE_MCAST_SET; 23452 async->run = bcmx_async_run; 23453 async->callback = async_callback; 23454 async->cookie = async_cookie; 23455 async->args.rate_mcast_set.limit = limit; 23456 async->args.rate_mcast_set.flags = flags; 23457 async->args.rate_mcast_set.port = port; 23458 bcm_async_add((bcm_async_req_t *)async); 23459 } 23460 23461 void 23462 bcmx_rate_set_async( 23463 int val, 23464 int flags, 23465 bcmx_async_cb_t async_callback, 23466 void *async_cookie) 23467 { 23468 bcmx_async_req_t *async; 23469 23470 async = sal_alloc(sizeof(*async), "bcmx_async"); 23471 if (async == NULL) { 23472 if (async_callback != NULL) { 23473 (*async_callback)(async_cookie, BCM_E_MEMORY); 23474 } 23475 return; 23476 } 23477 async->next = NULL; 23478 async->type = BCMX_ASYNC_ENTRY_RATE_SET; 23479 async->run = bcmx_async_run; 23480 async->callback = async_callback; 23481 async->cookie = async_cookie; 23482 async->args.rate_set.val = val; 23483 async->args.rate_set.flags = flags; 23484 bcm_async_add((bcm_async_req_t *)async); 23485 } 23486 23487 void 23488 bcmx_rate_type_get_async( 23489 bcm_rate_limit_t * rl, 23490 bcmx_async_cb_t async_callback, 23491 void *async_cookie) 23492 { 23493 bcmx_async_req_t *async; 23494 23495 async = sal_alloc(sizeof(*async), "bcmx_async"); 23496 if (async == NULL) { 23497 if (async_callback != NULL) { 23498 (*async_callback)(async_cookie, BCM_E_MEMORY); 23499 } 23500 return; 23501 } 23502 async->next = NULL; 23503 async->type = BCMX_ASYNC_ENTRY_RATE_TYPE_GET; 23504 async->run = bcmx_async_run; 23505 async->callback = async_callback; 23506 async->cookie = async_cookie; 23507 async->args.rate_type_get.rl = rl; 23508 bcm_async_add((bcm_async_req_t *)async); 23509 } 23510 23511 void 23512 bcmx_rate_type_set_async( 23513 bcm_rate_limit_t * rl, 23514 bcmx_async_cb_t async_callback, 23515 void *async_cookie) 23516 { 23517 bcmx_async_req_t *async; 23518 23519 async = sal_alloc(sizeof(*async), "bcmx_async"); 23520 if (async == NULL) { 23521 if (async_callback != NULL) { 23522 (*async_callback)(async_cookie, BCM_E_MEMORY); 23523 } 23524 return; 23525 } 23526 async->next = NULL; 23527 async->type = BCMX_ASYNC_ENTRY_RATE_TYPE_SET; 23528 async->run = bcmx_async_run; 23529 async->callback = async_callback; 23530 async->cookie = async_cookie; 23531 async->args.rate_type_set.rl = rl; 23532 bcm_async_add((bcm_async_req_t *)async); 23533 } 23534 23535 void 23536 bcmx_rx_control_get_async( 23537 bcm_rx_control_t type, 23538 int * arg, 23539 bcmx_async_cb_t async_callback, 23540 void *async_cookie) 23541 { 23542 bcmx_async_req_t *async; 23543 23544 async = sal_alloc(sizeof(*async), "bcmx_async"); 23545 if (async == NULL) { 23546 if (async_callback != NULL) { 23547 (*async_callback)(async_cookie, BCM_E_MEMORY); 23548 } 23549 return; 23550 } 23551 async->next = NULL; 23552 async->type = BCMX_ASYNC_ENTRY_RX_CONTROL_GET; 23553 async->run = bcmx_async_run; 23554 async->callback = async_callback; 23555 async->cookie = async_cookie; 23556 async->args.rx_control_get.type = type; 23557 async->args.rx_control_get.arg = arg; 23558 bcm_async_add((bcm_async_req_t *)async); 23559 } 23560 23561 void 23562 bcmx_rx_control_set_async( 23563 bcm_rx_control_t type, 23564 int arg, 23565 bcmx_async_cb_t async_callback, 23566 void *async_cookie) 23567 { 23568 bcmx_async_req_t *async; 23569 23570 async = sal_alloc(sizeof(*async), "bcmx_async"); 23571 if (async == NULL) { 23572 if (async_callback != NULL) { 23573 (*async_callback)(async_cookie, BCM_E_MEMORY); 23574 } 23575 return; 23576 } 23577 async->next = NULL; 23578 async->type = BCMX_ASYNC_ENTRY_RX_CONTROL_SET; 23579 async->run = bcmx_async_run; 23580 async->callback = async_callback; 23581 async->cookie = async_cookie; 23582 async->args.rx_control_set.type = type; 23583 async->args.rx_control_set.arg = arg; 23584 bcm_async_add((bcm_async_req_t *)async); 23585 } 23586 23587 void 23588 bcmx_rx_device_add_async( 23589 int unit, 23590 bcmx_async_cb_t async_callback, 23591 void *async_cookie) 23592 { 23593 bcmx_async_req_t *async; 23594 23595 async = sal_alloc(sizeof(*async), "bcmx_async"); 23596 if (async == NULL) { 23597 if (async_callback != NULL) { 23598 (*async_callback)(async_cookie, BCM_E_MEMORY); 23599 } 23600 return; 23601 } 23602 async->next = NULL; 23603 async->type = BCMX_ASYNC_ENTRY_RX_DEVICE_ADD; 23604 async->run = bcmx_async_run; 23605 async->callback = async_callback; 23606 async->cookie = async_cookie; 23607 async->args.rx_device_add.unit = unit; 23608 bcm_async_add((bcm_async_req_t *)async); 23609 } 23610 23611 void 23612 bcmx_rx_device_remove_async( 23613 int unit, 23614 bcmx_async_cb_t async_callback, 23615 void *async_cookie) 23616 { 23617 bcmx_async_req_t *async; 23618 23619 async = sal_alloc(sizeof(*async), "bcmx_async"); 23620 if (async == NULL) { 23621 if (async_callback != NULL) { 23622 (*async_callback)(async_cookie, BCM_E_MEMORY); 23623 } 23624 return; 23625 } 23626 async->next = NULL; 23627 async->type = BCMX_ASYNC_ENTRY_RX_DEVICE_REMOVE; 23628 async->run = bcmx_async_run; 23629 async->callback = async_callback; 23630 async->cookie = async_cookie; 23631 async->args.rx_device_remove.unit = unit; 23632 bcm_async_add((bcm_async_req_t *)async); 23633 } 23634 23635 void 23636 bcmx_rx_register_async( 23637 const char * name, 23638 bcm_rx_cb_f fn, 23639 int priority, 23640 void * cookie, 23641 uint32 flags, 23642 bcmx_async_cb_t async_callback, 23643 void *async_cookie) 23644 { 23645 bcmx_async_req_t *async; 23646 23647 async = sal_alloc(sizeof(*async), "bcmx_async"); 23648 if (async == NULL) { 23649 if (async_callback != NULL) { 23650 (*async_callback)(async_cookie, BCM_E_MEMORY); 23651 } 23652 return; 23653 } 23654 async->next = NULL; 23655 async->type = BCMX_ASYNC_ENTRY_RX_REGISTER; 23656 async->run = bcmx_async_run; 23657 async->callback = async_callback; 23658 async->cookie = async_cookie; 23659 async->args.rx_register.name = (char *)name; 23660 async->args.rx_register.fn = fn; 23661 async->args.rx_register.priority = priority; 23662 async->args.rx_register.cookie = cookie; 23663 async->args.rx_register.flags = flags; 23664 bcm_async_add((bcm_async_req_t *)async); 23665 } 23666 23667 void 23668 bcmx_rx_running_async( 23669 bcmx_async_cb_t async_callback, 23670 void *async_cookie) 23671 { 23672 bcmx_async_req_t *async; 23673 23674 async = sal_alloc(sizeof(*async), "bcmx_async"); 23675 if (async == NULL) { 23676 if (async_callback != NULL) { 23677 (*async_callback)(async_cookie, BCM_E_MEMORY); 23678 } 23679 return; 23680 } 23681 async->next = NULL; 23682 async->type = BCMX_ASYNC_ENTRY_RX_RUNNING; 23683 async->run = bcmx_async_run; 23684 async->callback = async_callback; 23685 async->cookie = async_cookie; 23686 bcm_async_add((bcm_async_req_t *)async); 23687 } 23688 23689 void 23690 bcmx_rx_start_async( 23691 bcmx_async_cb_t async_callback, 23692 void *async_cookie) 23693 { 23694 bcmx_async_req_t *async; 23695 23696 async = sal_alloc(sizeof(*async), "bcmx_async"); 23697 if (async == NULL) { 23698 if (async_callback != NULL) { 23699 (*async_callback)(async_cookie, BCM_E_MEMORY); 23700 } 23701 return; 23702 } 23703 async->next = NULL; 23704 async->type = BCMX_ASYNC_ENTRY_RX_START; 23705 async->run = bcmx_async_run; 23706 async->callback = async_callback; 23707 async->cookie = async_cookie; 23708 bcm_async_add((bcm_async_req_t *)async); 23709 } 23710 23711 void 23712 bcmx_rx_stop_async( 23713 bcmx_async_cb_t async_callback, 23714 void *async_cookie) 23715 { 23716 bcmx_async_req_t *async; 23717 23718 async = sal_alloc(sizeof(*async), "bcmx_async"); 23719 if (async == NULL) { 23720 if (async_callback != NULL) { 23721 (*async_callback)(async_cookie, BCM_E_MEMORY); 23722 } 23723 return; 23724 } 23725 async->next = NULL; 23726 async->type = BCMX_ASYNC_ENTRY_RX_STOP; 23727 async->run = bcmx_async_run; 23728 async->callback = async_callback; 23729 async->cookie = async_cookie; 23730 bcm_async_add((bcm_async_req_t *)async); 23731 } 23732 23733 void 23734 bcmx_rx_unregister_async( 23735 bcm_rx_cb_f fn, 23736 int pri, 23737 bcmx_async_cb_t async_callback, 23738 void *async_cookie) 23739 { 23740 bcmx_async_req_t *async; 23741 23742 async = sal_alloc(sizeof(*async), "bcmx_async"); 23743 if (async == NULL) { 23744 if (async_callback != NULL) { 23745 (*async_callback)(async_cookie, BCM_E_MEMORY); 23746 } 23747 return; 23748 } 23749 async->next = NULL; 23750 async->type = BCMX_ASYNC_ENTRY_RX_UNREGISTER; 23751 async->run = bcmx_async_run; 23752 async->callback = async_callback; 23753 async->cookie = async_cookie; 23754 async->args.rx_unregister.fn = fn; 23755 async->args.rx_unregister.pri = pri; 23756 bcm_async_add((bcm_async_req_t *)async); 23757 } 23758 23759 void 23760 bcmx_stat_clear_async( 23761 bcmx_lport_t port, 23762 bcmx_async_cb_t async_callback, 23763 void *async_cookie) 23764 { 23765 bcmx_async_req_t *async; 23766 23767 async = sal_alloc(sizeof(*async), "bcmx_async"); 23768 if (async == NULL) { 23769 if (async_callback != NULL) { 23770 (*async_callback)(async_cookie, BCM_E_MEMORY); 23771 } 23772 return; 23773 } 23774 async->next = NULL; 23775 async->type = BCMX_ASYNC_ENTRY_STAT_CLEAR; 23776 async->run = bcmx_async_run; 23777 async->callback = async_callback; 23778 async->cookie = async_cookie; 23779 async->args.stat_clear.port = port; 23780 bcm_async_add((bcm_async_req_t *)async); 23781 } 23782 23783 void 23784 bcmx_stat_custom_add_async( 23785 bcmx_lport_t port, 23786 bcm_stat_val_t type, 23787 bcm_custom_stat_trigger_t trigger, 23788 bcmx_async_cb_t async_callback, 23789 void *async_cookie) 23790 { 23791 bcmx_async_req_t *async; 23792 23793 async = sal_alloc(sizeof(*async), "bcmx_async"); 23794 if (async == NULL) { 23795 if (async_callback != NULL) { 23796 (*async_callback)(async_cookie, BCM_E_MEMORY); 23797 } 23798 return; 23799 } 23800 async->next = NULL; 23801 async->type = BCMX_ASYNC_ENTRY_STAT_CUSTOM_ADD; 23802 async->run = bcmx_async_run; 23803 async->callback = async_callback; 23804 async->cookie = async_cookie; 23805 async->args.stat_custom_add.port = port; 23806 async->args.stat_custom_add.type = type; 23807 async->args.stat_custom_add.trigger = trigger; 23808 bcm_async_add((bcm_async_req_t *)async); 23809 } 23810 23811 void 23812 bcmx_stat_custom_check_async( 23813 bcmx_lport_t port, 23814 bcm_stat_val_t type, 23815 bcm_custom_stat_trigger_t trigger, 23816 int * result, 23817 bcmx_async_cb_t async_callback, 23818 void *async_cookie) 23819 { 23820 bcmx_async_req_t *async; 23821 23822 async = sal_alloc(sizeof(*async), "bcmx_async"); 23823 if (async == NULL) { 23824 if (async_callback != NULL) { 23825 (*async_callback)(async_cookie, BCM_E_MEMORY); 23826 } 23827 return; 23828 } 23829 async->next = NULL; 23830 async->type = BCMX_ASYNC_ENTRY_STAT_CUSTOM_CHECK; 23831 async->run = bcmx_async_run; 23832 async->callback = async_callback; 23833 async->cookie = async_cookie; 23834 async->args.stat_custom_check.port = port; 23835 async->args.stat_custom_check.type = type; 23836 async->args.stat_custom_check.trigger = trigger; 23837 async->args.stat_custom_check.result = result; 23838 bcm_async_add((bcm_async_req_t *)async); 23839 } 23840 23841 void 23842 bcmx_stat_custom_delete_async( 23843 bcmx_lport_t port, 23844 bcm_stat_val_t type, 23845 bcm_custom_stat_trigger_t trigger, 23846 bcmx_async_cb_t async_callback, 23847 void *async_cookie) 23848 { 23849 bcmx_async_req_t *async; 23850 23851 async = sal_alloc(sizeof(*async), "bcmx_async"); 23852 if (async == NULL) { 23853 if (async_callback != NULL) { 23854 (*async_callback)(async_cookie, BCM_E_MEMORY); 23855 } 23856 return; 23857 } 23858 async->next = NULL; 23859 async->type = BCMX_ASYNC_ENTRY_STAT_CUSTOM_DELETE; 23860 async->run = bcmx_async_run; 23861 async->callback = async_callback; 23862 async->cookie = async_cookie; 23863 async->args.stat_custom_delete.port = port; 23864 async->args.stat_custom_delete.type = type; 23865 async->args.stat_custom_delete.trigger = trigger; 23866 bcm_async_add((bcm_async_req_t *)async); 23867 } 23868 23869 void 23870 bcmx_stat_custom_delete_all_async( 23871 bcmx_lport_t port, 23872 bcm_stat_val_t type, 23873 bcmx_async_cb_t async_callback, 23874 void *async_cookie) 23875 { 23876 bcmx_async_req_t *async; 23877 23878 async = sal_alloc(sizeof(*async), "bcmx_async"); 23879 if (async == NULL) { 23880 if (async_callback != NULL) { 23881 (*async_callback)(async_cookie, BCM_E_MEMORY); 23882 } 23883 return; 23884 } 23885 async->next = NULL; 23886 async->type = BCMX_ASYNC_ENTRY_STAT_CUSTOM_DELETE_ALL; 23887 async->run = bcmx_async_run; 23888 async->callback = async_callback; 23889 async->cookie = async_cookie; 23890 async->args.stat_custom_delete_all.port = port; 23891 async->args.stat_custom_delete_all.type = type; 23892 bcm_async_add((bcm_async_req_t *)async); 23893 } 23894 23895 void 23896 bcmx_stat_custom_get_async( 23897 bcmx_lport_t port, 23898 bcm_stat_val_t type, 23899 uint32 * flags, 23900 bcmx_async_cb_t async_callback, 23901 void *async_cookie) 23902 { 23903 bcmx_async_req_t *async; 23904 23905 async = sal_alloc(sizeof(*async), "bcmx_async"); 23906 if (async == NULL) { 23907 if (async_callback != NULL) { 23908 (*async_callback)(async_cookie, BCM_E_MEMORY); 23909 } 23910 return; 23911 } 23912 async->next = NULL; 23913 async->type = BCMX_ASYNC_ENTRY_STAT_CUSTOM_GET; 23914 async->run = bcmx_async_run; 23915 async->callback = async_callback; 23916 async->cookie = async_cookie; 23917 async->args.stat_custom_get.port = port; 23918 async->args.stat_custom_get.type = type; 23919 async->args.stat_custom_get.flags = flags; 23920 bcm_async_add((bcm_async_req_t *)async); 23921 } 23922 23923 void 23924 bcmx_stat_custom_set_async( 23925 bcmx_lport_t port, 23926 bcm_stat_val_t type, 23927 uint32 flags, 23928 bcmx_async_cb_t async_callback, 23929 void *async_cookie) 23930 { 23931 bcmx_async_req_t *async; 23932 23933 async = sal_alloc(sizeof(*async), "bcmx_async"); 23934 if (async == NULL) { 23935 if (async_callback != NULL) { 23936 (*async_callback)(async_cookie, BCM_E_MEMORY); 23937 } 23938 return; 23939 } 23940 async->next = NULL; 23941 async->type = BCMX_ASYNC_ENTRY_STAT_CUSTOM_SET; 23942 async->run = bcmx_async_run; 23943 async->callback = async_callback; 23944 async->cookie = async_cookie; 23945 async->args.stat_custom_set.port = port; 23946 async->args.stat_custom_set.type = type; 23947 async->args.stat_custom_set.flags = flags; 23948 bcm_async_add((bcm_async_req_t *)async); 23949 } 23950 23951 void 23952 bcmx_stat_get_async( 23953 bcmx_lport_t port, 23954 bcm_stat_val_t type, 23955 uint64 * value, 23956 bcmx_async_cb_t async_callback, 23957 void *async_cookie) 23958 { 23959 bcmx_async_req_t *async; 23960 23961 async = sal_alloc(sizeof(*async), "bcmx_async"); 23962 if (async == NULL) { 23963 if (async_callback != NULL) { 23964 (*async_callback)(async_cookie, BCM_E_MEMORY); 23965 } 23966 return; 23967 } 23968 async->next = NULL; 23969 async->type = BCMX_ASYNC_ENTRY_STAT_GET; 23970 async->run = bcmx_async_run; 23971 async->callback = async_callback; 23972 async->cookie = async_cookie; 23973 async->args.stat_get.port = port; 23974 async->args.stat_get.type = type; 23975 async->args.stat_get.value = value; 23976 bcm_async_add((bcm_async_req_t *)async); 23977 } 23978 23979 void 23980 bcmx_stat_get32_async( 23981 bcmx_lport_t port, 23982 bcm_stat_val_t type, 23983 uint32 * value, 23984 bcmx_async_cb_t async_callback, 23985 void *async_cookie) 23986 { 23987 bcmx_async_req_t *async; 23988 23989 async = sal_alloc(sizeof(*async), "bcmx_async"); 23990 if (async == NULL) { 23991 if (async_callback != NULL) { 23992 (*async_callback)(async_cookie, BCM_E_MEMORY); 23993 } 23994 return; 23995 } 23996 async->next = NULL; 23997 async->type = BCMX_ASYNC_ENTRY_STAT_GET32; 23998 async->run = bcmx_async_run; 23999 async->callback = async_callback; 24000 async->cookie = async_cookie; 24001 async->args.stat_get32.port = port; 24002 async->args.stat_get32.type = type; 24003 async->args.stat_get32.value = value; 24004 bcm_async_add((bcm_async_req_t *)async); 24005 } 24006 24007 void 24008 bcmx_stat_init_async( 24009 bcmx_async_cb_t async_callback, 24010 void *async_cookie) 24011 { 24012 bcmx_async_req_t *async; 24013 24014 async = sal_alloc(sizeof(*async), "bcmx_async"); 24015 if (async == NULL) { 24016 if (async_callback != NULL) { 24017 (*async_callback)(async_cookie, BCM_E_MEMORY); 24018 } 24019 return; 24020 } 24021 async->next = NULL; 24022 async->type = BCMX_ASYNC_ENTRY_STAT_INIT; 24023 async->run = bcmx_async_run; 24024 async->callback = async_callback; 24025 async->cookie = async_cookie; 24026 bcm_async_add((bcm_async_req_t *)async); 24027 } 24028 24029 void 24030 bcmx_stat_multi_get_async( 24031 bcm_gport_t port, 24032 int nstat, 24033 bcm_stat_val_t * stat_arr, 24034 uint64 * value_arr, 24035 bcmx_async_cb_t async_callback, 24036 void *async_cookie) 24037 { 24038 bcmx_async_req_t *async; 24039 24040 async = sal_alloc(sizeof(*async), "bcmx_async"); 24041 if (async == NULL) { 24042 if (async_callback != NULL) { 24043 (*async_callback)(async_cookie, BCM_E_MEMORY); 24044 } 24045 return; 24046 } 24047 async->next = NULL; 24048 async->type = BCMX_ASYNC_ENTRY_STAT_MULTI_GET; 24049 async->run = bcmx_async_run; 24050 async->callback = async_callback; 24051 async->cookie = async_cookie; 24052 async->args.stat_multi_get.port = port; 24053 async->args.stat_multi_get.nstat = nstat; 24054 async->args.stat_multi_get.stat_arr = stat_arr; 24055 async->args.stat_multi_get.value_arr = value_arr; 24056 bcm_async_add((bcm_async_req_t *)async); 24057 } 24058 24059 void 24060 bcmx_stat_multi_get32_async( 24061 bcm_gport_t port, 24062 int nstat, 24063 bcm_stat_val_t * stat_arr, 24064 uint32 * value_arr, 24065 bcmx_async_cb_t async_callback, 24066 void *async_cookie) 24067 { 24068 bcmx_async_req_t *async; 24069 24070 async = sal_alloc(sizeof(*async), "bcmx_async"); 24071 if (async == NULL) { 24072 if (async_callback != NULL) { 24073 (*async_callback)(async_cookie, BCM_E_MEMORY); 24074 } 24075 return; 24076 } 24077 async->next = NULL; 24078 async->type = BCMX_ASYNC_ENTRY_STAT_MULTI_GET32; 24079 async->run = bcmx_async_run; 24080 async->callback = async_callback; 24081 async->cookie = async_cookie; 24082 async->args.stat_multi_get32.port = port; 24083 async->args.stat_multi_get32.nstat = nstat; 24084 async->args.stat_multi_get32.stat_arr = stat_arr; 24085 async->args.stat_multi_get32.value_arr = value_arr; 24086 bcm_async_add((bcm_async_req_t *)async); 24087 } 24088 24089 void 24090 bcmx_stat_sync_async( 24091 bcmx_async_cb_t async_callback, 24092 void *async_cookie) 24093 { 24094 bcmx_async_req_t *async; 24095 24096 async = sal_alloc(sizeof(*async), "bcmx_async"); 24097 if (async == NULL) { 24098 if (async_callback != NULL) { 24099 (*async_callback)(async_cookie, BCM_E_MEMORY); 24100 } 24101 return; 24102 } 24103 async->next = NULL; 24104 async->type = BCMX_ASYNC_ENTRY_STAT_SYNC; 24105 async->run = bcmx_async_run; 24106 async->callback = async_callback; 24107 async->cookie = async_cookie; 24108 bcm_async_add((bcm_async_req_t *)async); 24109 } 24110 24111 void 24112 bcmx_stg_count_get_async( 24113 int * max_stg, 24114 bcmx_async_cb_t async_callback, 24115 void *async_cookie) 24116 { 24117 bcmx_async_req_t *async; 24118 24119 async = sal_alloc(sizeof(*async), "bcmx_async"); 24120 if (async == NULL) { 24121 if (async_callback != NULL) { 24122 (*async_callback)(async_cookie, BCM_E_MEMORY); 24123 } 24124 return; 24125 } 24126 async->next = NULL; 24127 async->type = BCMX_ASYNC_ENTRY_STG_COUNT_GET; 24128 async->run = bcmx_async_run; 24129 async->callback = async_callback; 24130 async->cookie = async_cookie; 24131 async->args.stg_count_get.max_stg = max_stg; 24132 bcm_async_add((bcm_async_req_t *)async); 24133 } 24134 24135 void 24136 bcmx_stg_create_async( 24137 bcm_stg_t * stg_ptr, 24138 bcmx_async_cb_t async_callback, 24139 void *async_cookie) 24140 { 24141 bcmx_async_req_t *async; 24142 24143 async = sal_alloc(sizeof(*async), "bcmx_async"); 24144 if (async == NULL) { 24145 if (async_callback != NULL) { 24146 (*async_callback)(async_cookie, BCM_E_MEMORY); 24147 } 24148 return; 24149 } 24150 async->next = NULL; 24151 async->type = BCMX_ASYNC_ENTRY_STG_CREATE; 24152 async->run = bcmx_async_run; 24153 async->callback = async_callback; 24154 async->cookie = async_cookie; 24155 async->args.stg_create.stg_ptr = stg_ptr; 24156 bcm_async_add((bcm_async_req_t *)async); 24157 } 24158 24159 void 24160 bcmx_stg_create_id_async( 24161 bcm_stg_t stg, 24162 bcmx_async_cb_t async_callback, 24163 void *async_cookie) 24164 { 24165 bcmx_async_req_t *async; 24166 24167 async = sal_alloc(sizeof(*async), "bcmx_async"); 24168 if (async == NULL) { 24169 if (async_callback != NULL) { 24170 (*async_callback)(async_cookie, BCM_E_MEMORY); 24171 } 24172 return; 24173 } 24174 async->next = NULL; 24175 async->type = BCMX_ASYNC_ENTRY_STG_CREATE_ID; 24176 async->run = bcmx_async_run; 24177 async->callback = async_callback; 24178 async->cookie = async_cookie; 24179 async->args.stg_create_id.stg = stg; 24180 bcm_async_add((bcm_async_req_t *)async); 24181 } 24182 24183 void 24184 bcmx_stg_default_get_async( 24185 bcm_stg_t * stg_ptr, 24186 bcmx_async_cb_t async_callback, 24187 void *async_cookie) 24188 { 24189 bcmx_async_req_t *async; 24190 24191 async = sal_alloc(sizeof(*async), "bcmx_async"); 24192 if (async == NULL) { 24193 if (async_callback != NULL) { 24194 (*async_callback)(async_cookie, BCM_E_MEMORY); 24195 } 24196 return; 24197 } 24198 async->next = NULL; 24199 async->type = BCMX_ASYNC_ENTRY_STG_DEFAULT_GET; 24200 async->run = bcmx_async_run; 24201 async->callback = async_callback; 24202 async->cookie = async_cookie; 24203 async->args.stg_default_get.stg_ptr = stg_ptr; 24204 bcm_async_add((bcm_async_req_t *)async); 24205 } 24206 24207 void 24208 bcmx_stg_default_set_async( 24209 bcm_stg_t stg, 24210 bcmx_async_cb_t async_callback, 24211 void *async_cookie) 24212 { 24213 bcmx_async_req_t *async; 24214 24215 async = sal_alloc(sizeof(*async), "bcmx_async"); 24216 if (async == NULL) { 24217 if (async_callback != NULL) { 24218 (*async_callback)(async_cookie, BCM_E_MEMORY); 24219 } 24220 return; 24221 } 24222 async->next = NULL; 24223 async->type = BCMX_ASYNC_ENTRY_STG_DEFAULT_SET; 24224 async->run = bcmx_async_run; 24225 async->callback = async_callback; 24226 async->cookie = async_cookie; 24227 async->args.stg_default_set.stg = stg; 24228 bcm_async_add((bcm_async_req_t *)async); 24229 } 24230 24231 void 24232 bcmx_stg_destroy_async( 24233 bcm_stg_t stg, 24234 bcmx_async_cb_t async_callback, 24235 void *async_cookie) 24236 { 24237 bcmx_async_req_t *async; 24238 24239 async = sal_alloc(sizeof(*async), "bcmx_async"); 24240 if (async == NULL) { 24241 if (async_callback != NULL) { 24242 (*async_callback)(async_cookie, BCM_E_MEMORY); 24243 } 24244 return; 24245 } 24246 async->next = NULL; 24247 async->type = BCMX_ASYNC_ENTRY_STG_DESTROY; 24248 async->run = bcmx_async_run; 24249 async->callback = async_callback; 24250 async->cookie = async_cookie; 24251 async->args.stg_destroy.stg = stg; 24252 bcm_async_add((bcm_async_req_t *)async); 24253 } 24254 24255 void 24256 bcmx_stg_init_async( 24257 bcmx_async_cb_t async_callback, 24258 void *async_cookie) 24259 { 24260 bcmx_async_req_t *async; 24261 24262 async = sal_alloc(sizeof(*async), "bcmx_async"); 24263 if (async == NULL) { 24264 if (async_callback != NULL) { 24265 (*async_callback)(async_cookie, BCM_E_MEMORY); 24266 } 24267 return; 24268 } 24269 async->next = NULL; 24270 async->type = BCMX_ASYNC_ENTRY_STG_INIT; 24271 async->run = bcmx_async_run; 24272 async->callback = async_callback; 24273 async->cookie = async_cookie; 24274 bcm_async_add((bcm_async_req_t *)async); 24275 } 24276 24277 void 24278 bcmx_stg_list_async( 24279 bcm_stg_t ** list, 24280 int * count, 24281 bcmx_async_cb_t async_callback, 24282 void *async_cookie) 24283 { 24284 bcmx_async_req_t *async; 24285 24286 async = sal_alloc(sizeof(*async), "bcmx_async"); 24287 if (async == NULL) { 24288 if (async_callback != NULL) { 24289 (*async_callback)(async_cookie, BCM_E_MEMORY); 24290 } 24291 return; 24292 } 24293 async->next = NULL; 24294 async->type = BCMX_ASYNC_ENTRY_STG_LIST; 24295 async->run = bcmx_async_run; 24296 async->callback = async_callback; 24297 async->cookie = async_cookie; 24298 async->args.stg_list.list = (bcm_stg_t * *)list; 24299 async->args.stg_list.count = count; 24300 bcm_async_add((bcm_async_req_t *)async); 24301 } 24302 24303 void 24304 bcmx_stg_list_destroy_async( 24305 bcm_stg_t * list, 24306 int count, 24307 bcmx_async_cb_t async_callback, 24308 void *async_cookie) 24309 { 24310 bcmx_async_req_t *async; 24311 24312 async = sal_alloc(sizeof(*async), "bcmx_async"); 24313 if (async == NULL) { 24314 if (async_callback != NULL) { 24315 (*async_callback)(async_cookie, BCM_E_MEMORY); 24316 } 24317 return; 24318 } 24319 async->next = NULL; 24320 async->type = BCMX_ASYNC_ENTRY_STG_LIST_DESTROY; 24321 async->run = bcmx_async_run; 24322 async->callback = async_callback; 24323 async->cookie = async_cookie; 24324 async->args.stg_list_destroy.list = list; 24325 async->args.stg_list_destroy.count = count; 24326 bcm_async_add((bcm_async_req_t *)async); 24327 } 24328 24329 void 24330 bcmx_stg_stp_get_async( 24331 bcm_stg_t stg, 24332 bcmx_lport_t port, 24333 int * stp_state, 24334 bcmx_async_cb_t async_callback, 24335 void *async_cookie) 24336 { 24337 bcmx_async_req_t *async; 24338 24339 async = sal_alloc(sizeof(*async), "bcmx_async"); 24340 if (async == NULL) { 24341 if (async_callback != NULL) { 24342 (*async_callback)(async_cookie, BCM_E_MEMORY); 24343 } 24344 return; 24345 } 24346 async->next = NULL; 24347 async->type = BCMX_ASYNC_ENTRY_STG_STP_GET; 24348 async->run = bcmx_async_run; 24349 async->callback = async_callback; 24350 async->cookie = async_cookie; 24351 async->args.stg_stp_get.stg = stg; 24352 async->args.stg_stp_get.port = port; 24353 async->args.stg_stp_get.stp_state = stp_state; 24354 bcm_async_add((bcm_async_req_t *)async); 24355 } 24356 24357 void 24358 bcmx_stg_stp_set_async( 24359 bcm_stg_t stg, 24360 bcmx_lport_t port, 24361 int stp_state, 24362 bcmx_async_cb_t async_callback, 24363 void *async_cookie) 24364 { 24365 bcmx_async_req_t *async; 24366 24367 async = sal_alloc(sizeof(*async), "bcmx_async"); 24368 if (async == NULL) { 24369 if (async_callback != NULL) { 24370 (*async_callback)(async_cookie, BCM_E_MEMORY); 24371 } 24372 return; 24373 } 24374 async->next = NULL; 24375 async->type = BCMX_ASYNC_ENTRY_STG_STP_SET; 24376 async->run = bcmx_async_run; 24377 async->callback = async_callback; 24378 async->cookie = async_cookie; 24379 async->args.stg_stp_set.stg = stg; 24380 async->args.stg_stp_set.port = port; 24381 async->args.stg_stp_set.stp_state = stp_state; 24382 bcm_async_add((bcm_async_req_t *)async); 24383 } 24384 24385 void 24386 bcmx_stg_vlan_add_async( 24387 bcm_stg_t stg, 24388 bcm_vlan_t vid, 24389 bcmx_async_cb_t async_callback, 24390 void *async_cookie) 24391 { 24392 bcmx_async_req_t *async; 24393 24394 async = sal_alloc(sizeof(*async), "bcmx_async"); 24395 if (async == NULL) { 24396 if (async_callback != NULL) { 24397 (*async_callback)(async_cookie, BCM_E_MEMORY); 24398 } 24399 return; 24400 } 24401 async->next = NULL; 24402 async->type = BCMX_ASYNC_ENTRY_STG_VLAN_ADD; 24403 async->run = bcmx_async_run; 24404 async->callback = async_callback; 24405 async->cookie = async_cookie; 24406 async->args.stg_vlan_add.stg = stg; 24407 async->args.stg_vlan_add.vid = vid; 24408 bcm_async_add((bcm_async_req_t *)async); 24409 } 24410 24411 void 24412 bcmx_stg_vlan_list_async( 24413 bcm_stg_t stg, 24414 bcm_vlan_t ** list, 24415 int * count, 24416 bcmx_async_cb_t async_callback, 24417 void *async_cookie) 24418 { 24419 bcmx_async_req_t *async; 24420 24421 async = sal_alloc(sizeof(*async), "bcmx_async"); 24422 if (async == NULL) { 24423 if (async_callback != NULL) { 24424 (*async_callback)(async_cookie, BCM_E_MEMORY); 24425 } 24426 return; 24427 } 24428 async->next = NULL; 24429 async->type = BCMX_ASYNC_ENTRY_STG_VLAN_LIST; 24430 async->run = bcmx_async_run; 24431 async->callback = async_callback; 24432 async->cookie = async_cookie; 24433 async->args.stg_vlan_list.stg = stg; 24434 async->args.stg_vlan_list.list = (bcm_vlan_t * *)list; 24435 async->args.stg_vlan_list.count = count; 24436 bcm_async_add((bcm_async_req_t *)async); 24437 } 24438 24439 void 24440 bcmx_stg_vlan_list_destroy_async( 24441 bcm_vlan_t * list, 24442 int count, 24443 bcmx_async_cb_t async_callback, 24444 void *async_cookie) 24445 { 24446 bcmx_async_req_t *async; 24447 24448 async = sal_alloc(sizeof(*async), "bcmx_async"); 24449 if (async == NULL) { 24450 if (async_callback != NULL) { 24451 (*async_callback)(async_cookie, BCM_E_MEMORY); 24452 } 24453 return; 24454 } 24455 async->next = NULL; 24456 async->type = BCMX_ASYNC_ENTRY_STG_VLAN_LIST_DESTROY; 24457 async->run = bcmx_async_run; 24458 async->callback = async_callback; 24459 async->cookie = async_cookie; 24460 async->args.stg_vlan_list_destroy.list = list; 24461 async->args.stg_vlan_list_destroy.count = count; 24462 bcm_async_add((bcm_async_req_t *)async); 24463 } 24464 24465 void 24466 bcmx_stg_vlan_remove_async( 24467 bcm_stg_t stg, 24468 bcm_vlan_t vid, 24469 bcmx_async_cb_t async_callback, 24470 void *async_cookie) 24471 { 24472 bcmx_async_req_t *async; 24473 24474 async = sal_alloc(sizeof(*async), "bcmx_async"); 24475 if (async == NULL) { 24476 if (async_callback != NULL) { 24477 (*async_callback)(async_cookie, BCM_E_MEMORY); 24478 } 24479 return; 24480 } 24481 async->next = NULL; 24482 async->type = BCMX_ASYNC_ENTRY_STG_VLAN_REMOVE; 24483 async->run = bcmx_async_run; 24484 async->callback = async_callback; 24485 async->cookie = async_cookie; 24486 async->args.stg_vlan_remove.stg = stg; 24487 async->args.stg_vlan_remove.vid = vid; 24488 bcm_async_add((bcm_async_req_t *)async); 24489 } 24490 24491 void 24492 bcmx_stg_vlan_remove_all_async( 24493 bcm_stg_t stg, 24494 bcmx_async_cb_t async_callback, 24495 void *async_cookie) 24496 { 24497 bcmx_async_req_t *async; 24498 24499 async = sal_alloc(sizeof(*async), "bcmx_async"); 24500 if (async == NULL) { 24501 if (async_callback != NULL) { 24502 (*async_callback)(async_cookie, BCM_E_MEMORY); 24503 } 24504 return; 24505 } 24506 async->next = NULL; 24507 async->type = BCMX_ASYNC_ENTRY_STG_VLAN_REMOVE_ALL; 24508 async->run = bcmx_async_run; 24509 async->callback = async_callback; 24510 async->cookie = async_cookie; 24511 async->args.stg_vlan_remove_all.stg = stg; 24512 bcm_async_add((bcm_async_req_t *)async); 24513 } 24514 24515 void 24516 bcmx_subport_cleanup_async( 24517 bcmx_async_cb_t async_callback, 24518 void *async_cookie) 24519 { 24520 bcmx_async_req_t *async; 24521 24522 async = sal_alloc(sizeof(*async), "bcmx_async"); 24523 if (async == NULL) { 24524 if (async_callback != NULL) { 24525 (*async_callback)(async_cookie, BCM_E_MEMORY); 24526 } 24527 return; 24528 } 24529 async->next = NULL; 24530 async->type = BCMX_ASYNC_ENTRY_SUBPORT_CLEANUP; 24531 async->run = bcmx_async_run; 24532 async->callback = async_callback; 24533 async->cookie = async_cookie; 24534 bcm_async_add((bcm_async_req_t *)async); 24535 } 24536 24537 void 24538 bcmx_subport_group_create_async( 24539 bcmx_subport_group_config_t * config, 24540 bcm_gport_t * group, 24541 bcmx_async_cb_t async_callback, 24542 void *async_cookie) 24543 { 24544 bcmx_async_req_t *async; 24545 24546 async = sal_alloc(sizeof(*async), "bcmx_async"); 24547 if (async == NULL) { 24548 if (async_callback != NULL) { 24549 (*async_callback)(async_cookie, BCM_E_MEMORY); 24550 } 24551 return; 24552 } 24553 async->next = NULL; 24554 async->type = BCMX_ASYNC_ENTRY_SUBPORT_GROUP_CREATE; 24555 async->run = bcmx_async_run; 24556 async->callback = async_callback; 24557 async->cookie = async_cookie; 24558 async->args.subport_group_create.config = config; 24559 async->args.subport_group_create.group = group; 24560 bcm_async_add((bcm_async_req_t *)async); 24561 } 24562 24563 void 24564 bcmx_subport_group_destroy_async( 24565 bcm_gport_t group, 24566 bcmx_async_cb_t async_callback, 24567 void *async_cookie) 24568 { 24569 bcmx_async_req_t *async; 24570 24571 async = sal_alloc(sizeof(*async), "bcmx_async"); 24572 if (async == NULL) { 24573 if (async_callback != NULL) { 24574 (*async_callback)(async_cookie, BCM_E_MEMORY); 24575 } 24576 return; 24577 } 24578 async->next = NULL; 24579 async->type = BCMX_ASYNC_ENTRY_SUBPORT_GROUP_DESTROY; 24580 async->run = bcmx_async_run; 24581 async->callback = async_callback; 24582 async->cookie = async_cookie; 24583 async->args.subport_group_destroy.group = group; 24584 bcm_async_add((bcm_async_req_t *)async); 24585 } 24586 24587 void 24588 bcmx_subport_group_get_async( 24589 bcm_gport_t group, 24590 bcmx_subport_group_config_t * config, 24591 bcmx_async_cb_t async_callback, 24592 void *async_cookie) 24593 { 24594 bcmx_async_req_t *async; 24595 24596 async = sal_alloc(sizeof(*async), "bcmx_async"); 24597 if (async == NULL) { 24598 if (async_callback != NULL) { 24599 (*async_callback)(async_cookie, BCM_E_MEMORY); 24600 } 24601 return; 24602 } 24603 async->next = NULL; 24604 async->type = BCMX_ASYNC_ENTRY_SUBPORT_GROUP_GET; 24605 async->run = bcmx_async_run; 24606 async->callback = async_callback; 24607 async->cookie = async_cookie; 24608 async->args.subport_group_get.group = group; 24609 async->args.subport_group_get.config = config; 24610 bcm_async_add((bcm_async_req_t *)async); 24611 } 24612 24613 void 24614 bcmx_subport_init_async( 24615 bcmx_async_cb_t async_callback, 24616 void *async_cookie) 24617 { 24618 bcmx_async_req_t *async; 24619 24620 async = sal_alloc(sizeof(*async), "bcmx_async"); 24621 if (async == NULL) { 24622 if (async_callback != NULL) { 24623 (*async_callback)(async_cookie, BCM_E_MEMORY); 24624 } 24625 return; 24626 } 24627 async->next = NULL; 24628 async->type = BCMX_ASYNC_ENTRY_SUBPORT_INIT; 24629 async->run = bcmx_async_run; 24630 async->callback = async_callback; 24631 async->cookie = async_cookie; 24632 bcm_async_add((bcm_async_req_t *)async); 24633 } 24634 24635 void 24636 bcmx_subport_port_add_async( 24637 bcmx_subport_config_t * config, 24638 bcm_gport_t * port, 24639 bcmx_async_cb_t async_callback, 24640 void *async_cookie) 24641 { 24642 bcmx_async_req_t *async; 24643 24644 async = sal_alloc(sizeof(*async), "bcmx_async"); 24645 if (async == NULL) { 24646 if (async_callback != NULL) { 24647 (*async_callback)(async_cookie, BCM_E_MEMORY); 24648 } 24649 return; 24650 } 24651 async->next = NULL; 24652 async->type = BCMX_ASYNC_ENTRY_SUBPORT_PORT_ADD; 24653 async->run = bcmx_async_run; 24654 async->callback = async_callback; 24655 async->cookie = async_cookie; 24656 async->args.subport_port_add.config = config; 24657 async->args.subport_port_add.port = port; 24658 bcm_async_add((bcm_async_req_t *)async); 24659 } 24660 24661 void 24662 bcmx_subport_port_delete_async( 24663 bcm_gport_t port, 24664 bcmx_async_cb_t async_callback, 24665 void *async_cookie) 24666 { 24667 bcmx_async_req_t *async; 24668 24669 async = sal_alloc(sizeof(*async), "bcmx_async"); 24670 if (async == NULL) { 24671 if (async_callback != NULL) { 24672 (*async_callback)(async_cookie, BCM_E_MEMORY); 24673 } 24674 return; 24675 } 24676 async->next = NULL; 24677 async->type = BCMX_ASYNC_ENTRY_SUBPORT_PORT_DELETE; 24678 async->run = bcmx_async_run; 24679 async->callback = async_callback; 24680 async->cookie = async_cookie; 24681 async->args.subport_port_delete.port = port; 24682 bcm_async_add((bcm_async_req_t *)async); 24683 } 24684 24685 void 24686 bcmx_subport_port_get_async( 24687 bcm_gport_t port, 24688 bcmx_subport_config_t * config, 24689 bcmx_async_cb_t async_callback, 24690 void *async_cookie) 24691 { 24692 bcmx_async_req_t *async; 24693 24694 async = sal_alloc(sizeof(*async), "bcmx_async"); 24695 if (async == NULL) { 24696 if (async_callback != NULL) { 24697 (*async_callback)(async_cookie, BCM_E_MEMORY); 24698 } 24699 return; 24700 } 24701 async->next = NULL; 24702 async->type = BCMX_ASYNC_ENTRY_SUBPORT_PORT_GET; 24703 async->run = bcmx_async_run; 24704 async->callback = async_callback; 24705 async->cookie = async_cookie; 24706 async->args.subport_port_get.port = port; 24707 async->args.subport_port_get.config = config; 24708 bcm_async_add((bcm_async_req_t *)async); 24709 } 24710 24711 void 24712 bcmx_switch_control_get_async( 24713 bcm_switch_control_t type, 24714 int * arg, 24715 bcmx_async_cb_t async_callback, 24716 void *async_cookie) 24717 { 24718 bcmx_async_req_t *async; 24719 24720 async = sal_alloc(sizeof(*async), "bcmx_async"); 24721 if (async == NULL) { 24722 if (async_callback != NULL) { 24723 (*async_callback)(async_cookie, BCM_E_MEMORY); 24724 } 24725 return; 24726 } 24727 async->next = NULL; 24728 async->type = BCMX_ASYNC_ENTRY_SWITCH_CONTROL_GET; 24729 async->run = bcmx_async_run; 24730 async->callback = async_callback; 24731 async->cookie = async_cookie; 24732 async->args.switch_control_get.type = type; 24733 async->args.switch_control_get.arg = arg; 24734 bcm_async_add((bcm_async_req_t *)async); 24735 } 24736 24737 void 24738 bcmx_switch_control_port_get_async( 24739 bcmx_lport_t port, 24740 bcm_switch_control_t type, 24741 int * arg, 24742 bcmx_async_cb_t async_callback, 24743 void *async_cookie) 24744 { 24745 bcmx_async_req_t *async; 24746 24747 async = sal_alloc(sizeof(*async), "bcmx_async"); 24748 if (async == NULL) { 24749 if (async_callback != NULL) { 24750 (*async_callback)(async_cookie, BCM_E_MEMORY); 24751 } 24752 return; 24753 } 24754 async->next = NULL; 24755 async->type = BCMX_ASYNC_ENTRY_SWITCH_CONTROL_PORT_GET; 24756 async->run = bcmx_async_run; 24757 async->callback = async_callback; 24758 async->cookie = async_cookie; 24759 async->args.switch_control_port_get.port = port; 24760 async->args.switch_control_port_get.type = type; 24761 async->args.switch_control_port_get.arg = arg; 24762 bcm_async_add((bcm_async_req_t *)async); 24763 } 24764 24765 void 24766 bcmx_switch_control_port_set_async( 24767 bcmx_lport_t port, 24768 bcm_switch_control_t type, 24769 int arg, 24770 bcmx_async_cb_t async_callback, 24771 void *async_cookie) 24772 { 24773 bcmx_async_req_t *async; 24774 24775 async = sal_alloc(sizeof(*async), "bcmx_async"); 24776 if (async == NULL) { 24777 if (async_callback != NULL) { 24778 (*async_callback)(async_cookie, BCM_E_MEMORY); 24779 } 24780 return; 24781 } 24782 async->next = NULL; 24783 async->type = BCMX_ASYNC_ENTRY_SWITCH_CONTROL_PORT_SET; 24784 async->run = bcmx_async_run; 24785 async->callback = async_callback; 24786 async->cookie = async_cookie; 24787 async->args.switch_control_port_set.port = port; 24788 async->args.switch_control_port_set.type = type; 24789 async->args.switch_control_port_set.arg = arg; 24790 bcm_async_add((bcm_async_req_t *)async); 24791 } 24792 24793 void 24794 bcmx_switch_control_set_async( 24795 bcm_switch_control_t type, 24796 int arg, 24797 bcmx_async_cb_t async_callback, 24798 void *async_cookie) 24799 { 24800 bcmx_async_req_t *async; 24801 24802 async = sal_alloc(sizeof(*async), "bcmx_async"); 24803 if (async == NULL) { 24804 if (async_callback != NULL) { 24805 (*async_callback)(async_cookie, BCM_E_MEMORY); 24806 } 24807 return; 24808 } 24809 async->next = NULL; 24810 async->type = BCMX_ASYNC_ENTRY_SWITCH_CONTROL_SET; 24811 async->run = bcmx_async_run; 24812 async->callback = async_callback; 24813 async->cookie = async_cookie; 24814 async->args.switch_control_set.type = type; 24815 async->args.switch_control_set.arg = arg; 24816 bcm_async_add((bcm_async_req_t *)async); 24817 } 24818 24819 void 24820 bcmx_switch_rcpu_encap_priority_map_get_async( 24821 uint32 flags, 24822 int internal_cpu_pri, 24823 int * encap_pri, 24824 bcmx_async_cb_t async_callback, 24825 void *async_cookie) 24826 { 24827 bcmx_async_req_t *async; 24828 24829 async = sal_alloc(sizeof(*async), "bcmx_async"); 24830 if (async == NULL) { 24831 if (async_callback != NULL) { 24832 (*async_callback)(async_cookie, BCM_E_MEMORY); 24833 } 24834 return; 24835 } 24836 async->next = NULL; 24837 async->type = BCMX_ASYNC_ENTRY_SWITCH_RCPU_ENCAP_PRIORITY_MAP_GET; 24838 async->run = bcmx_async_run; 24839 async->callback = async_callback; 24840 async->cookie = async_cookie; 24841 async->args.switch_rcpu_encap_priority_map_get.flags = flags; 24842 async->args.switch_rcpu_encap_priority_map_get.internal_cpu_pri = internal_cpu_pri; 24843 async->args.switch_rcpu_encap_priority_map_get.encap_pri = encap_pri; 24844 bcm_async_add((bcm_async_req_t *)async); 24845 } 24846 24847 void 24848 bcmx_switch_rcpu_encap_priority_map_set_async( 24849 uint32 flags, 24850 int internal_cpu_pri, 24851 int encap_pri, 24852 bcmx_async_cb_t async_callback, 24853 void *async_cookie) 24854 { 24855 bcmx_async_req_t *async; 24856 24857 async = sal_alloc(sizeof(*async), "bcmx_async"); 24858 if (async == NULL) { 24859 if (async_callback != NULL) { 24860 (*async_callback)(async_cookie, BCM_E_MEMORY); 24861 } 24862 return; 24863 } 24864 async->next = NULL; 24865 async->type = BCMX_ASYNC_ENTRY_SWITCH_RCPU_ENCAP_PRIORITY_MAP_SET; 24866 async->run = bcmx_async_run; 24867 async->callback = async_callback; 24868 async->cookie = async_cookie; 24869 async->args.switch_rcpu_encap_priority_map_set.flags = flags; 24870 async->args.switch_rcpu_encap_priority_map_set.internal_cpu_pri = internal_cpu_pri; 24871 async->args.switch_rcpu_encap_priority_map_set.encap_pri = encap_pri; 24872 bcm_async_add((bcm_async_req_t *)async); 24873 } 24874 24875 #ifdef INCLUDE_L3 24876 24877 void 24878 bcmx_trill_cleanup_async( 24879 bcmx_async_cb_t async_callback, 24880 void *async_cookie) 24881 { 24882 bcmx_async_req_t *async; 24883 24884 async = sal_alloc(sizeof(*async), "bcmx_async"); 24885 if (async == NULL) { 24886 if (async_callback != NULL) { 24887 (*async_callback)(async_cookie, BCM_E_MEMORY); 24888 } 24889 return; 24890 } 24891 async->next = NULL; 24892 async->type = BCMX_ASYNC_ENTRY_TRILL_CLEANUP; 24893 async->run = bcmx_async_run; 24894 async->callback = async_callback; 24895 async->cookie = async_cookie; 24896 bcm_async_add((bcm_async_req_t *)async); 24897 } 24898 24899 void 24900 bcmx_trill_init_async( 24901 bcmx_async_cb_t async_callback, 24902 void *async_cookie) 24903 { 24904 bcmx_async_req_t *async; 24905 24906 async = sal_alloc(sizeof(*async), "bcmx_async"); 24907 if (async == NULL) { 24908 if (async_callback != NULL) { 24909 (*async_callback)(async_cookie, BCM_E_MEMORY); 24910 } 24911 return; 24912 } 24913 async->next = NULL; 24914 async->type = BCMX_ASYNC_ENTRY_TRILL_INIT; 24915 async->run = bcmx_async_run; 24916 async->callback = async_callback; 24917 async->cookie = async_cookie; 24918 bcm_async_add((bcm_async_req_t *)async); 24919 } 24920 24921 void 24922 bcmx_trill_multicast_delete_all_async( 24923 bcm_trill_name_t root_name, 24924 bcmx_async_cb_t async_callback, 24925 void *async_cookie) 24926 { 24927 bcmx_async_req_t *async; 24928 24929 async = sal_alloc(sizeof(*async), "bcmx_async"); 24930 if (async == NULL) { 24931 if (async_callback != NULL) { 24932 (*async_callback)(async_cookie, BCM_E_MEMORY); 24933 } 24934 return; 24935 } 24936 async->next = NULL; 24937 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_DELETE_ALL; 24938 async->run = bcmx_async_run; 24939 async->callback = async_callback; 24940 async->cookie = async_cookie; 24941 async->args.trill_multicast_delete_all.root_name = root_name; 24942 bcm_async_add((bcm_async_req_t *)async); 24943 } 24944 24945 void 24946 bcmx_trill_multicast_entry_add_async( 24947 bcm_trill_multicast_entry_t * trill_mc_entry, 24948 bcmx_async_cb_t async_callback, 24949 void *async_cookie) 24950 { 24951 bcmx_async_req_t *async; 24952 24953 async = sal_alloc(sizeof(*async), "bcmx_async"); 24954 if (async == NULL) { 24955 if (async_callback != NULL) { 24956 (*async_callback)(async_cookie, BCM_E_MEMORY); 24957 } 24958 return; 24959 } 24960 async->next = NULL; 24961 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_ENTRY_ADD; 24962 async->run = bcmx_async_run; 24963 async->callback = async_callback; 24964 async->cookie = async_cookie; 24965 async->args.trill_multicast_entry_add.trill_mc_entry = trill_mc_entry; 24966 bcm_async_add((bcm_async_req_t *)async); 24967 } 24968 24969 void 24970 bcmx_trill_multicast_entry_delete_async( 24971 bcm_trill_multicast_entry_t * trill_mc_entry, 24972 bcmx_async_cb_t async_callback, 24973 void *async_cookie) 24974 { 24975 bcmx_async_req_t *async; 24976 24977 async = sal_alloc(sizeof(*async), "bcmx_async"); 24978 if (async == NULL) { 24979 if (async_callback != NULL) { 24980 (*async_callback)(async_cookie, BCM_E_MEMORY); 24981 } 24982 return; 24983 } 24984 async->next = NULL; 24985 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_ENTRY_DELETE; 24986 async->run = bcmx_async_run; 24987 async->callback = async_callback; 24988 async->cookie = async_cookie; 24989 async->args.trill_multicast_entry_delete.trill_mc_entry = trill_mc_entry; 24990 bcm_async_add((bcm_async_req_t *)async); 24991 } 24992 24993 void 24994 bcmx_trill_multicast_entry_get_async( 24995 bcm_trill_multicast_entry_t * trill_mc_entry, 24996 bcmx_async_cb_t async_callback, 24997 void *async_cookie) 24998 { 24999 bcmx_async_req_t *async; 25000 25001 async = sal_alloc(sizeof(*async), "bcmx_async"); 25002 if (async == NULL) { 25003 if (async_callback != NULL) { 25004 (*async_callback)(async_cookie, BCM_E_MEMORY); 25005 } 25006 return; 25007 } 25008 async->next = NULL; 25009 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_ENTRY_GET; 25010 async->run = bcmx_async_run; 25011 async->callback = async_callback; 25012 async->cookie = async_cookie; 25013 async->args.trill_multicast_entry_get.trill_mc_entry = trill_mc_entry; 25014 bcm_async_add((bcm_async_req_t *)async); 25015 } 25016 25017 void 25018 bcmx_trill_multicast_source_add_async( 25019 bcm_trill_name_t root_name, 25020 bcm_trill_name_t source_rbridge_name, 25021 bcm_gport_t port, 25022 bcm_if_t encap_intf, 25023 bcmx_async_cb_t async_callback, 25024 void *async_cookie) 25025 { 25026 bcmx_async_req_t *async; 25027 25028 async = sal_alloc(sizeof(*async), "bcmx_async"); 25029 if (async == NULL) { 25030 if (async_callback != NULL) { 25031 (*async_callback)(async_cookie, BCM_E_MEMORY); 25032 } 25033 return; 25034 } 25035 async->next = NULL; 25036 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_SOURCE_ADD; 25037 async->run = bcmx_async_run; 25038 async->callback = async_callback; 25039 async->cookie = async_cookie; 25040 async->args.trill_multicast_source_add.root_name = root_name; 25041 async->args.trill_multicast_source_add.source_rbridge_name = source_rbridge_name; 25042 async->args.trill_multicast_source_add.port = port; 25043 async->args.trill_multicast_source_add.encap_intf = encap_intf; 25044 bcm_async_add((bcm_async_req_t *)async); 25045 } 25046 25047 void 25048 bcmx_trill_multicast_source_delete_async( 25049 bcm_trill_name_t root_name, 25050 bcm_trill_name_t source_rbridge_name, 25051 bcm_gport_t port, 25052 bcm_if_t encap_intf, 25053 bcmx_async_cb_t async_callback, 25054 void *async_cookie) 25055 { 25056 bcmx_async_req_t *async; 25057 25058 async = sal_alloc(sizeof(*async), "bcmx_async"); 25059 if (async == NULL) { 25060 if (async_callback != NULL) { 25061 (*async_callback)(async_cookie, BCM_E_MEMORY); 25062 } 25063 return; 25064 } 25065 async->next = NULL; 25066 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_SOURCE_DELETE; 25067 async->run = bcmx_async_run; 25068 async->callback = async_callback; 25069 async->cookie = async_cookie; 25070 async->args.trill_multicast_source_delete.root_name = root_name; 25071 async->args.trill_multicast_source_delete.source_rbridge_name = source_rbridge_name; 25072 async->args.trill_multicast_source_delete.port = port; 25073 async->args.trill_multicast_source_delete.encap_intf = encap_intf; 25074 bcm_async_add((bcm_async_req_t *)async); 25075 } 25076 25077 void 25078 bcmx_trill_multicast_source_get_async( 25079 bcm_trill_name_t root_name, 25080 bcm_trill_name_t source_rbridge_name, 25081 bcm_gport_t * port, 25082 bcmx_async_cb_t async_callback, 25083 void *async_cookie) 25084 { 25085 bcmx_async_req_t *async; 25086 25087 async = sal_alloc(sizeof(*async), "bcmx_async"); 25088 if (async == NULL) { 25089 if (async_callback != NULL) { 25090 (*async_callback)(async_cookie, BCM_E_MEMORY); 25091 } 25092 return; 25093 } 25094 async->next = NULL; 25095 async->type = BCMX_ASYNC_ENTRY_TRILL_MULTICAST_SOURCE_GET; 25096 async->run = bcmx_async_run; 25097 async->callback = async_callback; 25098 async->cookie = async_cookie; 25099 async->args.trill_multicast_source_get.root_name = root_name; 25100 async->args.trill_multicast_source_get.source_rbridge_name = source_rbridge_name; 25101 async->args.trill_multicast_source_get.port = port; 25102 bcm_async_add((bcm_async_req_t *)async); 25103 } 25104 25105 void 25106 bcmx_trill_port_add_async( 25107 bcmx_trill_port_t * trill_port, 25108 bcmx_async_cb_t async_callback, 25109 void *async_cookie) 25110 { 25111 bcmx_async_req_t *async; 25112 25113 async = sal_alloc(sizeof(*async), "bcmx_async"); 25114 if (async == NULL) { 25115 if (async_callback != NULL) { 25116 (*async_callback)(async_cookie, BCM_E_MEMORY); 25117 } 25118 return; 25119 } 25120 async->next = NULL; 25121 async->type = BCMX_ASYNC_ENTRY_TRILL_PORT_ADD; 25122 async->run = bcmx_async_run; 25123 async->callback = async_callback; 25124 async->cookie = async_cookie; 25125 async->args.trill_port_add.trill_port = trill_port; 25126 bcm_async_add((bcm_async_req_t *)async); 25127 } 25128 25129 void 25130 bcmx_trill_port_delete_async( 25131 bcm_gport_t trill_port_id, 25132 bcmx_async_cb_t async_callback, 25133 void *async_cookie) 25134 { 25135 bcmx_async_req_t *async; 25136 25137 async = sal_alloc(sizeof(*async), "bcmx_async"); 25138 if (async == NULL) { 25139 if (async_callback != NULL) { 25140 (*async_callback)(async_cookie, BCM_E_MEMORY); 25141 } 25142 return; 25143 } 25144 async->next = NULL; 25145 async->type = BCMX_ASYNC_ENTRY_TRILL_PORT_DELETE; 25146 async->run = bcmx_async_run; 25147 async->callback = async_callback; 25148 async->cookie = async_cookie; 25149 async->args.trill_port_delete.trill_port_id = trill_port_id; 25150 bcm_async_add((bcm_async_req_t *)async); 25151 } 25152 25153 void 25154 bcmx_trill_port_delete_all_async( 25155 bcmx_async_cb_t async_callback, 25156 void *async_cookie) 25157 { 25158 bcmx_async_req_t *async; 25159 25160 async = sal_alloc(sizeof(*async), "bcmx_async"); 25161 if (async == NULL) { 25162 if (async_callback != NULL) { 25163 (*async_callback)(async_cookie, BCM_E_MEMORY); 25164 } 25165 return; 25166 } 25167 async->next = NULL; 25168 async->type = BCMX_ASYNC_ENTRY_TRILL_PORT_DELETE_ALL; 25169 async->run = bcmx_async_run; 25170 async->callback = async_callback; 25171 async->cookie = async_cookie; 25172 bcm_async_add((bcm_async_req_t *)async); 25173 } 25174 25175 void 25176 bcmx_trill_port_get_async( 25177 bcmx_trill_port_t * trill_port, 25178 bcmx_async_cb_t async_callback, 25179 void *async_cookie) 25180 { 25181 bcmx_async_req_t *async; 25182 25183 async = sal_alloc(sizeof(*async), "bcmx_async"); 25184 if (async == NULL) { 25185 if (async_callback != NULL) { 25186 (*async_callback)(async_cookie, BCM_E_MEMORY); 25187 } 25188 return; 25189 } 25190 async->next = NULL; 25191 async->type = BCMX_ASYNC_ENTRY_TRILL_PORT_GET; 25192 async->run = bcmx_async_run; 25193 async->callback = async_callback; 25194 async->cookie = async_cookie; 25195 async->args.trill_port_get.trill_port = trill_port; 25196 bcm_async_add((bcm_async_req_t *)async); 25197 } 25198 25199 void 25200 bcmx_trill_port_get_all_async( 25201 int port_max, 25202 bcmx_trill_port_t * port_array, 25203 int * port_count, 25204 bcmx_async_cb_t async_callback, 25205 void *async_cookie) 25206 { 25207 bcmx_async_req_t *async; 25208 25209 async = sal_alloc(sizeof(*async), "bcmx_async"); 25210 if (async == NULL) { 25211 if (async_callback != NULL) { 25212 (*async_callback)(async_cookie, BCM_E_MEMORY); 25213 } 25214 return; 25215 } 25216 async->next = NULL; 25217 async->type = BCMX_ASYNC_ENTRY_TRILL_PORT_GET_ALL; 25218 async->run = bcmx_async_run; 25219 async->callback = async_callback; 25220 async->cookie = async_cookie; 25221 async->args.trill_port_get_all.port_max = port_max; 25222 async->args.trill_port_get_all.port_array = port_array; 25223 async->args.trill_port_get_all.port_count = port_count; 25224 bcm_async_add((bcm_async_req_t *)async); 25225 } 25226 25227 void 25228 bcmx_trill_stat_clear_async( 25229 bcm_gport_t port, 25230 bcm_trill_stat_t stat, 25231 bcmx_async_cb_t async_callback, 25232 void *async_cookie) 25233 { 25234 bcmx_async_req_t *async; 25235 25236 async = sal_alloc(sizeof(*async), "bcmx_async"); 25237 if (async == NULL) { 25238 if (async_callback != NULL) { 25239 (*async_callback)(async_cookie, BCM_E_MEMORY); 25240 } 25241 return; 25242 } 25243 async->next = NULL; 25244 async->type = BCMX_ASYNC_ENTRY_TRILL_STAT_CLEAR; 25245 async->run = bcmx_async_run; 25246 async->callback = async_callback; 25247 async->cookie = async_cookie; 25248 async->args.trill_stat_clear.port = port; 25249 async->args.trill_stat_clear.stat = stat; 25250 bcm_async_add((bcm_async_req_t *)async); 25251 } 25252 25253 void 25254 bcmx_trill_stat_get_async( 25255 bcm_gport_t port, 25256 bcm_trill_stat_t stat, 25257 uint64 * val, 25258 bcmx_async_cb_t async_callback, 25259 void *async_cookie) 25260 { 25261 bcmx_async_req_t *async; 25262 25263 async = sal_alloc(sizeof(*async), "bcmx_async"); 25264 if (async == NULL) { 25265 if (async_callback != NULL) { 25266 (*async_callback)(async_cookie, BCM_E_MEMORY); 25267 } 25268 return; 25269 } 25270 async->next = NULL; 25271 async->type = BCMX_ASYNC_ENTRY_TRILL_STAT_GET; 25272 async->run = bcmx_async_run; 25273 async->callback = async_callback; 25274 async->cookie = async_cookie; 25275 async->args.trill_stat_get.port = port; 25276 async->args.trill_stat_get.stat = stat; 25277 async->args.trill_stat_get.val = val; 25278 bcm_async_add((bcm_async_req_t *)async); 25279 } 25280 25281 void 25282 bcmx_trill_stat_get32_async( 25283 bcm_gport_t port, 25284 bcm_trill_stat_t stat, 25285 uint32 * val, 25286 bcmx_async_cb_t async_callback, 25287 void *async_cookie) 25288 { 25289 bcmx_async_req_t *async; 25290 25291 async = sal_alloc(sizeof(*async), "bcmx_async"); 25292 if (async == NULL) { 25293 if (async_callback != NULL) { 25294 (*async_callback)(async_cookie, BCM_E_MEMORY); 25295 } 25296 return; 25297 } 25298 async->next = NULL; 25299 async->type = BCMX_ASYNC_ENTRY_TRILL_STAT_GET32; 25300 async->run = bcmx_async_run; 25301 async->callback = async_callback; 25302 async->cookie = async_cookie; 25303 async->args.trill_stat_get32.port = port; 25304 async->args.trill_stat_get32.stat = stat; 25305 async->args.trill_stat_get32.val = val; 25306 bcm_async_add((bcm_async_req_t *)async); 25307 } 25308 25309 #endif /* INCLUDE_L3 */ 25310 25311 void 25312 bcmx_trunk_chip_info_get_async( 25313 bcm_trunk_chip_info_t * ta_info, 25314 bcmx_async_cb_t async_callback, 25315 void *async_cookie) 25316 { 25317 bcmx_async_req_t *async; 25318 25319 async = sal_alloc(sizeof(*async), "bcmx_async"); 25320 if (async == NULL) { 25321 if (async_callback != NULL) { 25322 (*async_callback)(async_cookie, BCM_E_MEMORY); 25323 } 25324 return; 25325 } 25326 async->next = NULL; 25327 async->type = BCMX_ASYNC_ENTRY_TRUNK_CHIP_INFO_GET; 25328 async->run = bcmx_async_run; 25329 async->callback = async_callback; 25330 async->cookie = async_cookie; 25331 async->args.trunk_chip_info_get.ta_info = ta_info; 25332 bcm_async_add((bcm_async_req_t *)async); 25333 } 25334 25335 void 25336 bcmx_trunk_create_async( 25337 bcm_trunk_t * tid, 25338 bcmx_async_cb_t async_callback, 25339 void *async_cookie) 25340 { 25341 bcmx_async_req_t *async; 25342 25343 async = sal_alloc(sizeof(*async), "bcmx_async"); 25344 if (async == NULL) { 25345 if (async_callback != NULL) { 25346 (*async_callback)(async_cookie, BCM_E_MEMORY); 25347 } 25348 return; 25349 } 25350 async->next = NULL; 25351 async->type = BCMX_ASYNC_ENTRY_TRUNK_CREATE; 25352 async->run = bcmx_async_run; 25353 async->callback = async_callback; 25354 async->cookie = async_cookie; 25355 async->args.trunk_create.tid = tid; 25356 bcm_async_add((bcm_async_req_t *)async); 25357 } 25358 25359 void 25360 bcmx_trunk_create_id_async( 25361 bcm_trunk_t tid, 25362 bcmx_async_cb_t async_callback, 25363 void *async_cookie) 25364 { 25365 bcmx_async_req_t *async; 25366 25367 async = sal_alloc(sizeof(*async), "bcmx_async"); 25368 if (async == NULL) { 25369 if (async_callback != NULL) { 25370 (*async_callback)(async_cookie, BCM_E_MEMORY); 25371 } 25372 return; 25373 } 25374 async->next = NULL; 25375 async->type = BCMX_ASYNC_ENTRY_TRUNK_CREATE_ID; 25376 async->run = bcmx_async_run; 25377 async->callback = async_callback; 25378 async->cookie = async_cookie; 25379 async->args.trunk_create_id.tid = tid; 25380 bcm_async_add((bcm_async_req_t *)async); 25381 } 25382 25383 void 25384 bcmx_trunk_destroy_async( 25385 bcm_trunk_t tid, 25386 bcmx_async_cb_t async_callback, 25387 void *async_cookie) 25388 { 25389 bcmx_async_req_t *async; 25390 25391 async = sal_alloc(sizeof(*async), "bcmx_async"); 25392 if (async == NULL) { 25393 if (async_callback != NULL) { 25394 (*async_callback)(async_cookie, BCM_E_MEMORY); 25395 } 25396 return; 25397 } 25398 async->next = NULL; 25399 async->type = BCMX_ASYNC_ENTRY_TRUNK_DESTROY; 25400 async->run = bcmx_async_run; 25401 async->callback = async_callback; 25402 async->cookie = async_cookie; 25403 async->args.trunk_destroy.tid = tid; 25404 bcm_async_add((bcm_async_req_t *)async); 25405 } 25406 25407 void 25408 bcmx_trunk_detach_async( 25409 bcmx_async_cb_t async_callback, 25410 void *async_cookie) 25411 { 25412 bcmx_async_req_t *async; 25413 25414 async = sal_alloc(sizeof(*async), "bcmx_async"); 25415 if (async == NULL) { 25416 if (async_callback != NULL) { 25417 (*async_callback)(async_cookie, BCM_E_MEMORY); 25418 } 25419 return; 25420 } 25421 async->next = NULL; 25422 async->type = BCMX_ASYNC_ENTRY_TRUNK_DETACH; 25423 async->run = bcmx_async_run; 25424 async->callback = async_callback; 25425 async->cookie = async_cookie; 25426 bcm_async_add((bcm_async_req_t *)async); 25427 } 25428 25429 void 25430 bcmx_trunk_egress_get_async( 25431 bcm_trunk_t tid, 25432 bcmx_lplist_t * lplist, 25433 bcmx_async_cb_t async_callback, 25434 void *async_cookie) 25435 { 25436 bcmx_async_req_t *async; 25437 25438 async = sal_alloc(sizeof(*async), "bcmx_async"); 25439 if (async == NULL) { 25440 if (async_callback != NULL) { 25441 (*async_callback)(async_cookie, BCM_E_MEMORY); 25442 } 25443 return; 25444 } 25445 async->next = NULL; 25446 async->type = BCMX_ASYNC_ENTRY_TRUNK_EGRESS_GET; 25447 async->run = bcmx_async_run; 25448 async->callback = async_callback; 25449 async->cookie = async_cookie; 25450 async->args.trunk_egress_get.tid = tid; 25451 async->args.trunk_egress_get.lplist = lplist; 25452 bcm_async_add((bcm_async_req_t *)async); 25453 } 25454 25455 void 25456 bcmx_trunk_egress_set_async( 25457 bcm_trunk_t tid, 25458 bcmx_lplist_t lplist, 25459 bcmx_async_cb_t async_callback, 25460 void *async_cookie) 25461 { 25462 bcmx_async_req_t *async; 25463 25464 async = sal_alloc(sizeof(*async), "bcmx_async"); 25465 if (async == NULL) { 25466 if (async_callback != NULL) { 25467 (*async_callback)(async_cookie, BCM_E_MEMORY); 25468 } 25469 return; 25470 } 25471 async->next = NULL; 25472 async->type = BCMX_ASYNC_ENTRY_TRUNK_EGRESS_SET; 25473 async->run = bcmx_async_run; 25474 async->callback = async_callback; 25475 async->cookie = async_cookie; 25476 async->args.trunk_egress_set.tid = tid; 25477 async->args.trunk_egress_set.lplist = lplist; 25478 bcm_async_add((bcm_async_req_t *)async); 25479 } 25480 25481 void 25482 bcmx_trunk_failover_get_async( 25483 bcm_trunk_t tid, 25484 bcm_gport_t failport, 25485 int * psc, 25486 uint32 * flags, 25487 int array_size, 25488 bcm_gport_t * fail_to_array, 25489 int * array_count, 25490 bcmx_async_cb_t async_callback, 25491 void *async_cookie) 25492 { 25493 bcmx_async_req_t *async; 25494 25495 async = sal_alloc(sizeof(*async), "bcmx_async"); 25496 if (async == NULL) { 25497 if (async_callback != NULL) { 25498 (*async_callback)(async_cookie, BCM_E_MEMORY); 25499 } 25500 return; 25501 } 25502 async->next = NULL; 25503 async->type = BCMX_ASYNC_ENTRY_TRUNK_FAILOVER_GET; 25504 async->run = bcmx_async_run; 25505 async->callback = async_callback; 25506 async->cookie = async_cookie; 25507 async->args.trunk_failover_get.tid = tid; 25508 async->args.trunk_failover_get.failport = failport; 25509 async->args.trunk_failover_get.psc = psc; 25510 async->args.trunk_failover_get.flags = flags; 25511 async->args.trunk_failover_get.array_size = array_size; 25512 async->args.trunk_failover_get.fail_to_array = fail_to_array; 25513 async->args.trunk_failover_get.array_count = array_count; 25514 bcm_async_add((bcm_async_req_t *)async); 25515 } 25516 25517 void 25518 bcmx_trunk_failover_set_async( 25519 bcm_trunk_t tid, 25520 bcm_gport_t failport, 25521 int psc, 25522 uint32 flags, 25523 int count, 25524 bcm_gport_t * fail_to_array, 25525 bcmx_async_cb_t async_callback, 25526 void *async_cookie) 25527 { 25528 bcmx_async_req_t *async; 25529 25530 async = sal_alloc(sizeof(*async), "bcmx_async"); 25531 if (async == NULL) { 25532 if (async_callback != NULL) { 25533 (*async_callback)(async_cookie, BCM_E_MEMORY); 25534 } 25535 return; 25536 } 25537 async->next = NULL; 25538 async->type = BCMX_ASYNC_ENTRY_TRUNK_FAILOVER_SET; 25539 async->run = bcmx_async_run; 25540 async->callback = async_callback; 25541 async->cookie = async_cookie; 25542 async->args.trunk_failover_set.tid = tid; 25543 async->args.trunk_failover_set.failport = failport; 25544 async->args.trunk_failover_set.psc = psc; 25545 async->args.trunk_failover_set.flags = flags; 25546 async->args.trunk_failover_set.count = count; 25547 async->args.trunk_failover_set.fail_to_array = fail_to_array; 25548 bcm_async_add((bcm_async_req_t *)async); 25549 } 25550 25551 void 25552 bcmx_trunk_find_async( 25553 bcmx_lport_t port, 25554 bcm_trunk_t * tid, 25555 bcmx_async_cb_t async_callback, 25556 void *async_cookie) 25557 { 25558 bcmx_async_req_t *async; 25559 25560 async = sal_alloc(sizeof(*async), "bcmx_async"); 25561 if (async == NULL) { 25562 if (async_callback != NULL) { 25563 (*async_callback)(async_cookie, BCM_E_MEMORY); 25564 } 25565 return; 25566 } 25567 async->next = NULL; 25568 async->type = BCMX_ASYNC_ENTRY_TRUNK_FIND; 25569 async->run = bcmx_async_run; 25570 async->callback = async_callback; 25571 async->cookie = async_cookie; 25572 async->args.trunk_find.port = port; 25573 async->args.trunk_find.tid = tid; 25574 bcm_async_add((bcm_async_req_t *)async); 25575 } 25576 25577 void 25578 bcmx_trunk_get_async( 25579 bcm_trunk_t tid, 25580 bcmx_trunk_add_info_t * t_data, 25581 bcmx_async_cb_t async_callback, 25582 void *async_cookie) 25583 { 25584 bcmx_async_req_t *async; 25585 25586 async = sal_alloc(sizeof(*async), "bcmx_async"); 25587 if (async == NULL) { 25588 if (async_callback != NULL) { 25589 (*async_callback)(async_cookie, BCM_E_MEMORY); 25590 } 25591 return; 25592 } 25593 async->next = NULL; 25594 async->type = BCMX_ASYNC_ENTRY_TRUNK_GET; 25595 async->run = bcmx_async_run; 25596 async->callback = async_callback; 25597 async->cookie = async_cookie; 25598 async->args.trunk_get.tid = tid; 25599 async->args.trunk_get.t_data = t_data; 25600 bcm_async_add((bcm_async_req_t *)async); 25601 } 25602 25603 void 25604 bcmx_trunk_init_async( 25605 bcmx_async_cb_t async_callback, 25606 void *async_cookie) 25607 { 25608 bcmx_async_req_t *async; 25609 25610 async = sal_alloc(sizeof(*async), "bcmx_async"); 25611 if (async == NULL) { 25612 if (async_callback != NULL) { 25613 (*async_callback)(async_cookie, BCM_E_MEMORY); 25614 } 25615 return; 25616 } 25617 async->next = NULL; 25618 async->type = BCMX_ASYNC_ENTRY_TRUNK_INIT; 25619 async->run = bcmx_async_run; 25620 async->callback = async_callback; 25621 async->cookie = async_cookie; 25622 bcm_async_add((bcm_async_req_t *)async); 25623 } 25624 25625 void 25626 bcmx_trunk_mcast_join_async( 25627 bcm_trunk_t tid, 25628 bcm_vlan_t vid, 25629 bcm_mac_t mac, 25630 bcmx_async_cb_t async_callback, 25631 void *async_cookie) 25632 { 25633 bcmx_async_req_t *async; 25634 25635 async = sal_alloc(sizeof(*async), "bcmx_async"); 25636 if (async == NULL) { 25637 if (async_callback != NULL) { 25638 (*async_callback)(async_cookie, BCM_E_MEMORY); 25639 } 25640 return; 25641 } 25642 async->next = NULL; 25643 async->type = BCMX_ASYNC_ENTRY_TRUNK_MCAST_JOIN; 25644 async->run = bcmx_async_run; 25645 async->callback = async_callback; 25646 async->cookie = async_cookie; 25647 async->args.trunk_mcast_join.tid = tid; 25648 async->args.trunk_mcast_join.vid = vid; 25649 async->args.trunk_mcast_join.mac = (uint8 *)mac; 25650 bcm_async_add((bcm_async_req_t *)async); 25651 } 25652 25653 void 25654 bcmx_trunk_member_add_async( 25655 bcm_trunk_t tid, 25656 bcmx_trunk_member_t * member, 25657 bcmx_async_cb_t async_callback, 25658 void *async_cookie) 25659 { 25660 bcmx_async_req_t *async; 25661 25662 async = sal_alloc(sizeof(*async), "bcmx_async"); 25663 if (async == NULL) { 25664 if (async_callback != NULL) { 25665 (*async_callback)(async_cookie, BCM_E_MEMORY); 25666 } 25667 return; 25668 } 25669 async->next = NULL; 25670 async->type = BCMX_ASYNC_ENTRY_TRUNK_MEMBER_ADD; 25671 async->run = bcmx_async_run; 25672 async->callback = async_callback; 25673 async->cookie = async_cookie; 25674 async->args.trunk_member_add.tid = tid; 25675 async->args.trunk_member_add.member = member; 25676 bcm_async_add((bcm_async_req_t *)async); 25677 } 25678 25679 void 25680 bcmx_trunk_member_delete_async( 25681 bcm_trunk_t tid, 25682 bcmx_trunk_member_t * member, 25683 bcmx_async_cb_t async_callback, 25684 void *async_cookie) 25685 { 25686 bcmx_async_req_t *async; 25687 25688 async = sal_alloc(sizeof(*async), "bcmx_async"); 25689 if (async == NULL) { 25690 if (async_callback != NULL) { 25691 (*async_callback)(async_cookie, BCM_E_MEMORY); 25692 } 25693 return; 25694 } 25695 async->next = NULL; 25696 async->type = BCMX_ASYNC_ENTRY_TRUNK_MEMBER_DELETE; 25697 async->run = bcmx_async_run; 25698 async->callback = async_callback; 25699 async->cookie = async_cookie; 25700 async->args.trunk_member_delete.tid = tid; 25701 async->args.trunk_member_delete.member = member; 25702 bcm_async_add((bcm_async_req_t *)async); 25703 } 25704 25705 void 25706 bcmx_trunk_member_delete_all_async( 25707 bcm_trunk_t tid, 25708 bcmx_async_cb_t async_callback, 25709 void *async_cookie) 25710 { 25711 bcmx_async_req_t *async; 25712 25713 async = sal_alloc(sizeof(*async), "bcmx_async"); 25714 if (async == NULL) { 25715 if (async_callback != NULL) { 25716 (*async_callback)(async_cookie, BCM_E_MEMORY); 25717 } 25718 return; 25719 } 25720 async->next = NULL; 25721 async->type = BCMX_ASYNC_ENTRY_TRUNK_MEMBER_DELETE_ALL; 25722 async->run = bcmx_async_run; 25723 async->callback = async_callback; 25724 async->cookie = async_cookie; 25725 async->args.trunk_member_delete_all.tid = tid; 25726 bcm_async_add((bcm_async_req_t *)async); 25727 } 25728 25729 void 25730 bcmx_trunk_member_get_async( 25731 bcm_trunk_t tid, 25732 int member_max, 25733 bcmx_trunk_member_t * member_array, 25734 int * member_count, 25735 bcmx_async_cb_t async_callback, 25736 void *async_cookie) 25737 { 25738 bcmx_async_req_t *async; 25739 25740 async = sal_alloc(sizeof(*async), "bcmx_async"); 25741 if (async == NULL) { 25742 if (async_callback != NULL) { 25743 (*async_callback)(async_cookie, BCM_E_MEMORY); 25744 } 25745 return; 25746 } 25747 async->next = NULL; 25748 async->type = BCMX_ASYNC_ENTRY_TRUNK_MEMBER_GET; 25749 async->run = bcmx_async_run; 25750 async->callback = async_callback; 25751 async->cookie = async_cookie; 25752 async->args.trunk_member_get.tid = tid; 25753 async->args.trunk_member_get.member_max = member_max; 25754 async->args.trunk_member_get.member_array = member_array; 25755 async->args.trunk_member_get.member_count = member_count; 25756 bcm_async_add((bcm_async_req_t *)async); 25757 } 25758 25759 void 25760 bcmx_trunk_member_set_async( 25761 bcm_trunk_t tid, 25762 int member_count, 25763 bcmx_trunk_member_t * member_array, 25764 bcmx_async_cb_t async_callback, 25765 void *async_cookie) 25766 { 25767 bcmx_async_req_t *async; 25768 25769 async = sal_alloc(sizeof(*async), "bcmx_async"); 25770 if (async == NULL) { 25771 if (async_callback != NULL) { 25772 (*async_callback)(async_cookie, BCM_E_MEMORY); 25773 } 25774 return; 25775 } 25776 async->next = NULL; 25777 async->type = BCMX_ASYNC_ENTRY_TRUNK_MEMBER_SET; 25778 async->run = bcmx_async_run; 25779 async->callback = async_callback; 25780 async->cookie = async_cookie; 25781 async->args.trunk_member_set.tid = tid; 25782 async->args.trunk_member_set.member_count = member_count; 25783 async->args.trunk_member_set.member_array = member_array; 25784 bcm_async_add((bcm_async_req_t *)async); 25785 } 25786 25787 void 25788 bcmx_trunk_psc_get_async( 25789 bcm_trunk_t tid, 25790 int * psc, 25791 bcmx_async_cb_t async_callback, 25792 void *async_cookie) 25793 { 25794 bcmx_async_req_t *async; 25795 25796 async = sal_alloc(sizeof(*async), "bcmx_async"); 25797 if (async == NULL) { 25798 if (async_callback != NULL) { 25799 (*async_callback)(async_cookie, BCM_E_MEMORY); 25800 } 25801 return; 25802 } 25803 async->next = NULL; 25804 async->type = BCMX_ASYNC_ENTRY_TRUNK_PSC_GET; 25805 async->run = bcmx_async_run; 25806 async->callback = async_callback; 25807 async->cookie = async_cookie; 25808 async->args.trunk_psc_get.tid = tid; 25809 async->args.trunk_psc_get.psc = psc; 25810 bcm_async_add((bcm_async_req_t *)async); 25811 } 25812 25813 void 25814 bcmx_trunk_psc_set_async( 25815 bcm_trunk_t tid, 25816 int psc, 25817 bcmx_async_cb_t async_callback, 25818 void *async_cookie) 25819 { 25820 bcmx_async_req_t *async; 25821 25822 async = sal_alloc(sizeof(*async), "bcmx_async"); 25823 if (async == NULL) { 25824 if (async_callback != NULL) { 25825 (*async_callback)(async_cookie, BCM_E_MEMORY); 25826 } 25827 return; 25828 } 25829 async->next = NULL; 25830 async->type = BCMX_ASYNC_ENTRY_TRUNK_PSC_SET; 25831 async->run = bcmx_async_run; 25832 async->callback = async_callback; 25833 async->cookie = async_cookie; 25834 async->args.trunk_psc_set.tid = tid; 25835 async->args.trunk_psc_set.psc = psc; 25836 bcm_async_add((bcm_async_req_t *)async); 25837 } 25838 25839 void 25840 bcmx_trunk_set_async( 25841 bcm_trunk_t tid, 25842 bcmx_trunk_add_info_t * add_info, 25843 bcmx_async_cb_t async_callback, 25844 void *async_cookie) 25845 { 25846 bcmx_async_req_t *async; 25847 25848 async = sal_alloc(sizeof(*async), "bcmx_async"); 25849 if (async == NULL) { 25850 if (async_callback != NULL) { 25851 (*async_callback)(async_cookie, BCM_E_MEMORY); 25852 } 25853 return; 25854 } 25855 async->next = NULL; 25856 async->type = BCMX_ASYNC_ENTRY_TRUNK_SET; 25857 async->run = bcmx_async_run; 25858 async->callback = async_callback; 25859 async->cookie = async_cookie; 25860 async->args.trunk_set.tid = tid; 25861 async->args.trunk_set.add_info = add_info; 25862 bcm_async_add((bcm_async_req_t *)async); 25863 } 25864 25865 #ifdef INCLUDE_L3 25866 25867 void 25868 bcmx_tunnel_config_get_async( 25869 bcmx_tunnel_config_t * tconfig, 25870 bcmx_async_cb_t async_callback, 25871 void *async_cookie) 25872 { 25873 bcmx_async_req_t *async; 25874 25875 async = sal_alloc(sizeof(*async), "bcmx_async"); 25876 if (async == NULL) { 25877 if (async_callback != NULL) { 25878 (*async_callback)(async_cookie, BCM_E_MEMORY); 25879 } 25880 return; 25881 } 25882 async->next = NULL; 25883 async->type = BCMX_ASYNC_ENTRY_TUNNEL_CONFIG_GET; 25884 async->run = bcmx_async_run; 25885 async->callback = async_callback; 25886 async->cookie = async_cookie; 25887 async->args.tunnel_config_get.tconfig = tconfig; 25888 bcm_async_add((bcm_async_req_t *)async); 25889 } 25890 25891 void 25892 bcmx_tunnel_config_set_async( 25893 bcmx_tunnel_config_t * tconfig, 25894 bcmx_async_cb_t async_callback, 25895 void *async_cookie) 25896 { 25897 bcmx_async_req_t *async; 25898 25899 async = sal_alloc(sizeof(*async), "bcmx_async"); 25900 if (async == NULL) { 25901 if (async_callback != NULL) { 25902 (*async_callback)(async_cookie, BCM_E_MEMORY); 25903 } 25904 return; 25905 } 25906 async->next = NULL; 25907 async->type = BCMX_ASYNC_ENTRY_TUNNEL_CONFIG_SET; 25908 async->run = bcmx_async_run; 25909 async->callback = async_callback; 25910 async->cookie = async_cookie; 25911 async->args.tunnel_config_set.tconfig = tconfig; 25912 bcm_async_add((bcm_async_req_t *)async); 25913 } 25914 25915 void 25916 bcmx_tunnel_dscp_map_create_async( 25917 uint32 flags, 25918 int * dscp_map_id, 25919 bcmx_async_cb_t async_callback, 25920 void *async_cookie) 25921 { 25922 bcmx_async_req_t *async; 25923 25924 async = sal_alloc(sizeof(*async), "bcmx_async"); 25925 if (async == NULL) { 25926 if (async_callback != NULL) { 25927 (*async_callback)(async_cookie, BCM_E_MEMORY); 25928 } 25929 return; 25930 } 25931 async->next = NULL; 25932 async->type = BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_CREATE; 25933 async->run = bcmx_async_run; 25934 async->callback = async_callback; 25935 async->cookie = async_cookie; 25936 async->args.tunnel_dscp_map_create.flags = flags; 25937 async->args.tunnel_dscp_map_create.dscp_map_id = dscp_map_id; 25938 bcm_async_add((bcm_async_req_t *)async); 25939 } 25940 25941 void 25942 bcmx_tunnel_dscp_map_destroy_async( 25943 int dscp_map_id, 25944 bcmx_async_cb_t async_callback, 25945 void *async_cookie) 25946 { 25947 bcmx_async_req_t *async; 25948 25949 async = sal_alloc(sizeof(*async), "bcmx_async"); 25950 if (async == NULL) { 25951 if (async_callback != NULL) { 25952 (*async_callback)(async_cookie, BCM_E_MEMORY); 25953 } 25954 return; 25955 } 25956 async->next = NULL; 25957 async->type = BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_DESTROY; 25958 async->run = bcmx_async_run; 25959 async->callback = async_callback; 25960 async->cookie = async_cookie; 25961 async->args.tunnel_dscp_map_destroy.dscp_map_id = dscp_map_id; 25962 bcm_async_add((bcm_async_req_t *)async); 25963 } 25964 25965 void 25966 bcmx_tunnel_dscp_map_get_async( 25967 int dscp_map_id, 25968 bcm_tunnel_dscp_map_t * dscp_map, 25969 bcmx_async_cb_t async_callback, 25970 void *async_cookie) 25971 { 25972 bcmx_async_req_t *async; 25973 25974 async = sal_alloc(sizeof(*async), "bcmx_async"); 25975 if (async == NULL) { 25976 if (async_callback != NULL) { 25977 (*async_callback)(async_cookie, BCM_E_MEMORY); 25978 } 25979 return; 25980 } 25981 async->next = NULL; 25982 async->type = BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_GET; 25983 async->run = bcmx_async_run; 25984 async->callback = async_callback; 25985 async->cookie = async_cookie; 25986 async->args.tunnel_dscp_map_get.dscp_map_id = dscp_map_id; 25987 async->args.tunnel_dscp_map_get.dscp_map = dscp_map; 25988 bcm_async_add((bcm_async_req_t *)async); 25989 } 25990 25991 void 25992 bcmx_tunnel_dscp_map_port_get_async( 25993 bcmx_lport_t port, 25994 bcm_tunnel_dscp_map_t * dscp_map, 25995 bcmx_async_cb_t async_callback, 25996 void *async_cookie) 25997 { 25998 bcmx_async_req_t *async; 25999 26000 async = sal_alloc(sizeof(*async), "bcmx_async"); 26001 if (async == NULL) { 26002 if (async_callback != NULL) { 26003 (*async_callback)(async_cookie, BCM_E_MEMORY); 26004 } 26005 return; 26006 } 26007 async->next = NULL; 26008 async->type = BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_PORT_GET; 26009 async->run = bcmx_async_run; 26010 async->callback = async_callback; 26011 async->cookie = async_cookie; 26012 async->args.tunnel_dscp_map_port_get.port = port; 26013 async->args.tunnel_dscp_map_port_get.dscp_map = dscp_map; 26014 bcm_async_add((bcm_async_req_t *)async); 26015 } 26016 26017 void 26018 bcmx_tunnel_dscp_map_port_set_async( 26019 bcmx_lport_t port, 26020 bcm_tunnel_dscp_map_t * dscp_map, 26021 bcmx_async_cb_t async_callback, 26022 void *async_cookie) 26023 { 26024 bcmx_async_req_t *async; 26025 26026 async = sal_alloc(sizeof(*async), "bcmx_async"); 26027 if (async == NULL) { 26028 if (async_callback != NULL) { 26029 (*async_callback)(async_cookie, BCM_E_MEMORY); 26030 } 26031 return; 26032 } 26033 async->next = NULL; 26034 async->type = BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_PORT_SET; 26035 async->run = bcmx_async_run; 26036 async->callback = async_callback; 26037 async->cookie = async_cookie; 26038 async->args.tunnel_dscp_map_port_set.port = port; 26039 async->args.tunnel_dscp_map_port_set.dscp_map = dscp_map; 26040 bcm_async_add((bcm_async_req_t *)async); 26041 } 26042 26043 void 26044 bcmx_tunnel_dscp_map_set_async( 26045 int dscp_map_id, 26046 bcm_tunnel_dscp_map_t * dscp_map, 26047 bcmx_async_cb_t async_callback, 26048 void *async_cookie) 26049 { 26050 bcmx_async_req_t *async; 26051 26052 async = sal_alloc(sizeof(*async), "bcmx_async"); 26053 if (async == NULL) { 26054 if (async_callback != NULL) { 26055 (*async_callback)(async_cookie, BCM_E_MEMORY); 26056 } 26057 return; 26058 } 26059 async->next = NULL; 26060 async->type = BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_SET; 26061 async->run = bcmx_async_run; 26062 async->callback = async_callback; 26063 async->cookie = async_cookie; 26064 async->args.tunnel_dscp_map_set.dscp_map_id = dscp_map_id; 26065 async->args.tunnel_dscp_map_set.dscp_map = dscp_map; 26066 bcm_async_add((bcm_async_req_t *)async); 26067 } 26068 26069 void 26070 bcmx_tunnel_initiator_clear_async( 26071 bcmx_l3_intf_t * intf, 26072 bcmx_async_cb_t async_callback, 26073 void *async_cookie) 26074 { 26075 bcmx_async_req_t *async; 26076 26077 async = sal_alloc(sizeof(*async), "bcmx_async"); 26078 if (async == NULL) { 26079 if (async_callback != NULL) { 26080 (*async_callback)(async_cookie, BCM_E_MEMORY); 26081 } 26082 return; 26083 } 26084 async->next = NULL; 26085 async->type = BCMX_ASYNC_ENTRY_TUNNEL_INITIATOR_CLEAR; 26086 async->run = bcmx_async_run; 26087 async->callback = async_callback; 26088 async->cookie = async_cookie; 26089 async->args.tunnel_initiator_clear.intf = intf; 26090 bcm_async_add((bcm_async_req_t *)async); 26091 } 26092 26093 void 26094 bcmx_tunnel_initiator_get_async( 26095 bcmx_l3_intf_t * intf, 26096 bcmx_tunnel_initiator_t * tunnel, 26097 bcmx_async_cb_t async_callback, 26098 void *async_cookie) 26099 { 26100 bcmx_async_req_t *async; 26101 26102 async = sal_alloc(sizeof(*async), "bcmx_async"); 26103 if (async == NULL) { 26104 if (async_callback != NULL) { 26105 (*async_callback)(async_cookie, BCM_E_MEMORY); 26106 } 26107 return; 26108 } 26109 async->next = NULL; 26110 async->type = BCMX_ASYNC_ENTRY_TUNNEL_INITIATOR_GET; 26111 async->run = bcmx_async_run; 26112 async->callback = async_callback; 26113 async->cookie = async_cookie; 26114 async->args.tunnel_initiator_get.intf = intf; 26115 async->args.tunnel_initiator_get.tunnel = tunnel; 26116 bcm_async_add((bcm_async_req_t *)async); 26117 } 26118 26119 void 26120 bcmx_tunnel_initiator_set_async( 26121 bcmx_l3_intf_t * intf, 26122 bcmx_tunnel_initiator_t * tunnel, 26123 bcmx_async_cb_t async_callback, 26124 void *async_cookie) 26125 { 26126 bcmx_async_req_t *async; 26127 26128 async = sal_alloc(sizeof(*async), "bcmx_async"); 26129 if (async == NULL) { 26130 if (async_callback != NULL) { 26131 (*async_callback)(async_cookie, BCM_E_MEMORY); 26132 } 26133 return; 26134 } 26135 async->next = NULL; 26136 async->type = BCMX_ASYNC_ENTRY_TUNNEL_INITIATOR_SET; 26137 async->run = bcmx_async_run; 26138 async->callback = async_callback; 26139 async->cookie = async_cookie; 26140 async->args.tunnel_initiator_set.intf = intf; 26141 async->args.tunnel_initiator_set.tunnel = tunnel; 26142 bcm_async_add((bcm_async_req_t *)async); 26143 } 26144 26145 void 26146 bcmx_tunnel_terminator_add_async( 26147 bcmx_tunnel_terminator_t * info, 26148 bcmx_async_cb_t async_callback, 26149 void *async_cookie) 26150 { 26151 bcmx_async_req_t *async; 26152 26153 async = sal_alloc(sizeof(*async), "bcmx_async"); 26154 if (async == NULL) { 26155 if (async_callback != NULL) { 26156 (*async_callback)(async_cookie, BCM_E_MEMORY); 26157 } 26158 return; 26159 } 26160 async->next = NULL; 26161 async->type = BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_ADD; 26162 async->run = bcmx_async_run; 26163 async->callback = async_callback; 26164 async->cookie = async_cookie; 26165 async->args.tunnel_terminator_add.info = info; 26166 bcm_async_add((bcm_async_req_t *)async); 26167 } 26168 26169 void 26170 bcmx_tunnel_terminator_delete_async( 26171 bcmx_tunnel_terminator_t * info, 26172 bcmx_async_cb_t async_callback, 26173 void *async_cookie) 26174 { 26175 bcmx_async_req_t *async; 26176 26177 async = sal_alloc(sizeof(*async), "bcmx_async"); 26178 if (async == NULL) { 26179 if (async_callback != NULL) { 26180 (*async_callback)(async_cookie, BCM_E_MEMORY); 26181 } 26182 return; 26183 } 26184 async->next = NULL; 26185 async->type = BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_DELETE; 26186 async->run = bcmx_async_run; 26187 async->callback = async_callback; 26188 async->cookie = async_cookie; 26189 async->args.tunnel_terminator_delete.info = info; 26190 bcm_async_add((bcm_async_req_t *)async); 26191 } 26192 26193 void 26194 bcmx_tunnel_terminator_get_async( 26195 bcmx_tunnel_terminator_t * info, 26196 bcmx_async_cb_t async_callback, 26197 void *async_cookie) 26198 { 26199 bcmx_async_req_t *async; 26200 26201 async = sal_alloc(sizeof(*async), "bcmx_async"); 26202 if (async == NULL) { 26203 if (async_callback != NULL) { 26204 (*async_callback)(async_cookie, BCM_E_MEMORY); 26205 } 26206 return; 26207 } 26208 async->next = NULL; 26209 async->type = BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_GET; 26210 async->run = bcmx_async_run; 26211 async->callback = async_callback; 26212 async->cookie = async_cookie; 26213 async->args.tunnel_terminator_get.info = info; 26214 bcm_async_add((bcm_async_req_t *)async); 26215 } 26216 26217 void 26218 bcmx_tunnel_terminator_update_async( 26219 bcmx_tunnel_terminator_t * info, 26220 bcmx_async_cb_t async_callback, 26221 void *async_cookie) 26222 { 26223 bcmx_async_req_t *async; 26224 26225 async = sal_alloc(sizeof(*async), "bcmx_async"); 26226 if (async == NULL) { 26227 if (async_callback != NULL) { 26228 (*async_callback)(async_cookie, BCM_E_MEMORY); 26229 } 26230 return; 26231 } 26232 async->next = NULL; 26233 async->type = BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_UPDATE; 26234 async->run = bcmx_async_run; 26235 async->callback = async_callback; 26236 async->cookie = async_cookie; 26237 async->args.tunnel_terminator_update.info = info; 26238 bcm_async_add((bcm_async_req_t *)async); 26239 } 26240 26241 void 26242 bcmx_tunnel_terminator_vlan_get_async( 26243 bcm_gport_t tunnel, 26244 bcm_vlan_vector_t * vlan_vec, 26245 bcmx_async_cb_t async_callback, 26246 void *async_cookie) 26247 { 26248 bcmx_async_req_t *async; 26249 26250 async = sal_alloc(sizeof(*async), "bcmx_async"); 26251 if (async == NULL) { 26252 if (async_callback != NULL) { 26253 (*async_callback)(async_cookie, BCM_E_MEMORY); 26254 } 26255 return; 26256 } 26257 async->next = NULL; 26258 async->type = BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_VLAN_GET; 26259 async->run = bcmx_async_run; 26260 async->callback = async_callback; 26261 async->cookie = async_cookie; 26262 async->args.tunnel_terminator_vlan_get.tunnel = tunnel; 26263 async->args.tunnel_terminator_vlan_get.vlan_vec = vlan_vec; 26264 bcm_async_add((bcm_async_req_t *)async); 26265 } 26266 26267 void 26268 bcmx_tunnel_terminator_vlan_set_async( 26269 bcm_gport_t tunnel, 26270 bcm_vlan_vector_t vlan_vec, 26271 bcmx_async_cb_t async_callback, 26272 void *async_cookie) 26273 { 26274 bcmx_async_req_t *async; 26275 26276 async = sal_alloc(sizeof(*async), "bcmx_async"); 26277 if (async == NULL) { 26278 if (async_callback != NULL) { 26279 (*async_callback)(async_cookie, BCM_E_MEMORY); 26280 } 26281 return; 26282 } 26283 async->next = NULL; 26284 async->type = BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_VLAN_SET; 26285 async->run = bcmx_async_run; 26286 async->callback = async_callback; 26287 async->cookie = async_cookie; 26288 async->args.tunnel_terminator_vlan_set.tunnel = tunnel; 26289 async->args.tunnel_terminator_vlan_set.vlan_vec = (uint32 *)vlan_vec; 26290 bcm_async_add((bcm_async_req_t *)async); 26291 } 26292 26293 #endif /* INCLUDE_L3 */ 26294 26295 void 26296 bcmx_tx_async( 26297 bcm_pkt_t * pkt, 26298 uint32 flags, 26299 bcmx_async_cb_t async_callback, 26300 void *async_cookie) 26301 { 26302 bcmx_async_req_t *async; 26303 26304 async = sal_alloc(sizeof(*async), "bcmx_async"); 26305 if (async == NULL) { 26306 if (async_callback != NULL) { 26307 (*async_callback)(async_cookie, BCM_E_MEMORY); 26308 } 26309 return; 26310 } 26311 async->next = NULL; 26312 async->type = BCMX_ASYNC_ENTRY_TX; 26313 async->run = bcmx_async_run; 26314 async->callback = async_callback; 26315 async->cookie = async_cookie; 26316 async->args.tx.pkt = pkt; 26317 async->args.tx.flags = flags; 26318 bcm_async_add((bcm_async_req_t *)async); 26319 } 26320 26321 void 26322 bcmx_tx_flood_async( 26323 bcm_pkt_t * pkt, 26324 uint32 flags, 26325 bcmx_async_cb_t async_callback, 26326 void *async_cookie) 26327 { 26328 bcmx_async_req_t *async; 26329 26330 async = sal_alloc(sizeof(*async), "bcmx_async"); 26331 if (async == NULL) { 26332 if (async_callback != NULL) { 26333 (*async_callback)(async_cookie, BCM_E_MEMORY); 26334 } 26335 return; 26336 } 26337 async->next = NULL; 26338 async->type = BCMX_ASYNC_ENTRY_TX_FLOOD; 26339 async->run = bcmx_async_run; 26340 async->callback = async_callback; 26341 async->cookie = async_cookie; 26342 async->args.tx_flood.pkt = pkt; 26343 async->args.tx_flood.flags = flags; 26344 bcm_async_add((bcm_async_req_t *)async); 26345 } 26346 26347 void 26348 bcmx_tx_lplist_async( 26349 bcm_pkt_t * pkt, 26350 bcmx_lplist_t * tx_ports, 26351 bcmx_lplist_t * untagged_ports, 26352 uint32 flags, 26353 bcmx_async_cb_t async_callback, 26354 void *async_cookie) 26355 { 26356 bcmx_async_req_t *async; 26357 26358 async = sal_alloc(sizeof(*async), "bcmx_async"); 26359 if (async == NULL) { 26360 if (async_callback != NULL) { 26361 (*async_callback)(async_cookie, BCM_E_MEMORY); 26362 } 26363 return; 26364 } 26365 async->next = NULL; 26366 async->type = BCMX_ASYNC_ENTRY_TX_LPLIST; 26367 async->run = bcmx_async_run; 26368 async->callback = async_callback; 26369 async->cookie = async_cookie; 26370 async->args.tx_lplist.pkt = pkt; 26371 async->args.tx_lplist.tx_ports = tx_ports; 26372 async->args.tx_lplist.untagged_ports = untagged_ports; 26373 async->args.tx_lplist.flags = flags; 26374 bcm_async_add((bcm_async_req_t *)async); 26375 } 26376 26377 void 26378 bcmx_tx_pkt_l3_set_async( 26379 bcm_pkt_t * pkt, 26380 int l3, 26381 bcmx_async_cb_t async_callback, 26382 void *async_cookie) 26383 { 26384 bcmx_async_req_t *async; 26385 26386 async = sal_alloc(sizeof(*async), "bcmx_async"); 26387 if (async == NULL) { 26388 if (async_callback != NULL) { 26389 (*async_callback)(async_cookie, BCM_E_MEMORY); 26390 } 26391 return; 26392 } 26393 async->next = NULL; 26394 async->type = BCMX_ASYNC_ENTRY_TX_PKT_L3_SET; 26395 async->run = bcmx_async_run; 26396 async->callback = async_callback; 26397 async->cookie = async_cookie; 26398 async->args.tx_pkt_l3_set.pkt = pkt; 26399 async->args.tx_pkt_l3_set.l3 = l3; 26400 bcm_async_add((bcm_async_req_t *)async); 26401 } 26402 26403 void 26404 bcmx_tx_pkt_untagged_set_async( 26405 bcm_pkt_t * pkt, 26406 int untagged, 26407 bcmx_async_cb_t async_callback, 26408 void *async_cookie) 26409 { 26410 bcmx_async_req_t *async; 26411 26412 async = sal_alloc(sizeof(*async), "bcmx_async"); 26413 if (async == NULL) { 26414 if (async_callback != NULL) { 26415 (*async_callback)(async_cookie, BCM_E_MEMORY); 26416 } 26417 return; 26418 } 26419 async->next = NULL; 26420 async->type = BCMX_ASYNC_ENTRY_TX_PKT_UNTAGGED_SET; 26421 async->run = bcmx_async_run; 26422 async->callback = async_callback; 26423 async->cookie = async_cookie; 26424 async->args.tx_pkt_untagged_set.pkt = pkt; 26425 async->args.tx_pkt_untagged_set.untagged = untagged; 26426 bcm_async_add((bcm_async_req_t *)async); 26427 } 26428 26429 void 26430 bcmx_tx_port_list_async( 26431 bcmx_lplist_t * lplist, 26432 bcm_pkt_t * pkt, 26433 bcmx_async_cb_t async_callback, 26434 void *async_cookie) 26435 { 26436 bcmx_async_req_t *async; 26437 26438 async = sal_alloc(sizeof(*async), "bcmx_async"); 26439 if (async == NULL) { 26440 if (async_callback != NULL) { 26441 (*async_callback)(async_cookie, BCM_E_MEMORY); 26442 } 26443 return; 26444 } 26445 async->next = NULL; 26446 async->type = BCMX_ASYNC_ENTRY_TX_PORT_LIST; 26447 async->run = bcmx_async_run; 26448 async->callback = async_callback; 26449 async->cookie = async_cookie; 26450 async->args.tx_port_list.lplist = lplist; 26451 async->args.tx_port_list.pkt = pkt; 26452 bcm_async_add((bcm_async_req_t *)async); 26453 } 26454 26455 void 26456 bcmx_tx_uc_async( 26457 bcm_pkt_t * pkt, 26458 bcmx_lport_t d_port, 26459 uint32 flags, 26460 bcmx_async_cb_t async_callback, 26461 void *async_cookie) 26462 { 26463 bcmx_async_req_t *async; 26464 26465 async = sal_alloc(sizeof(*async), "bcmx_async"); 26466 if (async == NULL) { 26467 if (async_callback != NULL) { 26468 (*async_callback)(async_cookie, BCM_E_MEMORY); 26469 } 26470 return; 26471 } 26472 async->next = NULL; 26473 async->type = BCMX_ASYNC_ENTRY_TX_UC; 26474 async->run = bcmx_async_run; 26475 async->callback = async_callback; 26476 async->cookie = async_cookie; 26477 async->args.tx_uc.pkt = pkt; 26478 async->args.tx_uc.d_port = d_port; 26479 async->args.tx_uc.flags = flags; 26480 bcm_async_add((bcm_async_req_t *)async); 26481 } 26482 26483 void 26484 bcmx_uport_create_callback_set_async( 26485 bcmx_uport_create_f create_callback, 26486 bcmx_async_cb_t async_callback, 26487 void *async_cookie) 26488 { 26489 bcmx_async_req_t *async; 26490 26491 async = sal_alloc(sizeof(*async), "bcmx_async"); 26492 if (async == NULL) { 26493 if (async_callback != NULL) { 26494 (*async_callback)(async_cookie, BCM_E_MEMORY); 26495 } 26496 return; 26497 } 26498 async->next = NULL; 26499 async->type = BCMX_ASYNC_ENTRY_UPORT_CREATE_CALLBACK_SET; 26500 async->run = bcmx_async_run; 26501 async->callback = async_callback; 26502 async->cookie = async_cookie; 26503 async->args.uport_create_callback_set.create_callback = create_callback; 26504 bcm_async_add((bcm_async_req_t *)async); 26505 } 26506 26507 void 26508 bcmx_vlan_block_get_async( 26509 bcm_vlan_t vlan, 26510 bcmx_vlan_block_t * vlan_block, 26511 bcmx_async_cb_t async_callback, 26512 void *async_cookie) 26513 { 26514 bcmx_async_req_t *async; 26515 26516 async = sal_alloc(sizeof(*async), "bcmx_async"); 26517 if (async == NULL) { 26518 if (async_callback != NULL) { 26519 (*async_callback)(async_cookie, BCM_E_MEMORY); 26520 } 26521 return; 26522 } 26523 async->next = NULL; 26524 async->type = BCMX_ASYNC_ENTRY_VLAN_BLOCK_GET; 26525 async->run = bcmx_async_run; 26526 async->callback = async_callback; 26527 async->cookie = async_cookie; 26528 async->args.vlan_block_get.vlan = vlan; 26529 async->args.vlan_block_get.vlan_block = vlan_block; 26530 bcm_async_add((bcm_async_req_t *)async); 26531 } 26532 26533 void 26534 bcmx_vlan_block_set_async( 26535 bcm_vlan_t vlan, 26536 bcmx_vlan_block_t * vlan_block, 26537 bcmx_async_cb_t async_callback, 26538 void *async_cookie) 26539 { 26540 bcmx_async_req_t *async; 26541 26542 async = sal_alloc(sizeof(*async), "bcmx_async"); 26543 if (async == NULL) { 26544 if (async_callback != NULL) { 26545 (*async_callback)(async_cookie, BCM_E_MEMORY); 26546 } 26547 return; 26548 } 26549 async->next = NULL; 26550 async->type = BCMX_ASYNC_ENTRY_VLAN_BLOCK_SET; 26551 async->run = bcmx_async_run; 26552 async->callback = async_callback; 26553 async->cookie = async_cookie; 26554 async->args.vlan_block_set.vlan = vlan; 26555 async->args.vlan_block_set.vlan_block = vlan_block; 26556 bcm_async_add((bcm_async_req_t *)async); 26557 } 26558 26559 void 26560 bcmx_vlan_control_get_async( 26561 bcm_vlan_control_t type, 26562 int * arg, 26563 bcmx_async_cb_t async_callback, 26564 void *async_cookie) 26565 { 26566 bcmx_async_req_t *async; 26567 26568 async = sal_alloc(sizeof(*async), "bcmx_async"); 26569 if (async == NULL) { 26570 if (async_callback != NULL) { 26571 (*async_callback)(async_cookie, BCM_E_MEMORY); 26572 } 26573 return; 26574 } 26575 async->next = NULL; 26576 async->type = BCMX_ASYNC_ENTRY_VLAN_CONTROL_GET; 26577 async->run = bcmx_async_run; 26578 async->callback = async_callback; 26579 async->cookie = async_cookie; 26580 async->args.vlan_control_get.type = type; 26581 async->args.vlan_control_get.arg = arg; 26582 bcm_async_add((bcm_async_req_t *)async); 26583 } 26584 26585 void 26586 bcmx_vlan_control_port_get_async( 26587 bcmx_lport_t port, 26588 bcm_vlan_control_port_t type, 26589 int * arg, 26590 bcmx_async_cb_t async_callback, 26591 void *async_cookie) 26592 { 26593 bcmx_async_req_t *async; 26594 26595 async = sal_alloc(sizeof(*async), "bcmx_async"); 26596 if (async == NULL) { 26597 if (async_callback != NULL) { 26598 (*async_callback)(async_cookie, BCM_E_MEMORY); 26599 } 26600 return; 26601 } 26602 async->next = NULL; 26603 async->type = BCMX_ASYNC_ENTRY_VLAN_CONTROL_PORT_GET; 26604 async->run = bcmx_async_run; 26605 async->callback = async_callback; 26606 async->cookie = async_cookie; 26607 async->args.vlan_control_port_get.port = port; 26608 async->args.vlan_control_port_get.type = type; 26609 async->args.vlan_control_port_get.arg = arg; 26610 bcm_async_add((bcm_async_req_t *)async); 26611 } 26612 26613 void 26614 bcmx_vlan_control_port_set_async( 26615 bcmx_lport_t port, 26616 bcm_vlan_control_port_t type, 26617 int arg, 26618 bcmx_async_cb_t async_callback, 26619 void *async_cookie) 26620 { 26621 bcmx_async_req_t *async; 26622 26623 async = sal_alloc(sizeof(*async), "bcmx_async"); 26624 if (async == NULL) { 26625 if (async_callback != NULL) { 26626 (*async_callback)(async_cookie, BCM_E_MEMORY); 26627 } 26628 return; 26629 } 26630 async->next = NULL; 26631 async->type = BCMX_ASYNC_ENTRY_VLAN_CONTROL_PORT_SET; 26632 async->run = bcmx_async_run; 26633 async->callback = async_callback; 26634 async->cookie = async_cookie; 26635 async->args.vlan_control_port_set.port = port; 26636 async->args.vlan_control_port_set.type = type; 26637 async->args.vlan_control_port_set.arg = arg; 26638 bcm_async_add((bcm_async_req_t *)async); 26639 } 26640 26641 void 26642 bcmx_vlan_control_set_async( 26643 bcm_vlan_control_t type, 26644 int arg, 26645 bcmx_async_cb_t async_callback, 26646 void *async_cookie) 26647 { 26648 bcmx_async_req_t *async; 26649 26650 async = sal_alloc(sizeof(*async), "bcmx_async"); 26651 if (async == NULL) { 26652 if (async_callback != NULL) { 26653 (*async_callback)(async_cookie, BCM_E_MEMORY); 26654 } 26655 return; 26656 } 26657 async->next = NULL; 26658 async->type = BCMX_ASYNC_ENTRY_VLAN_CONTROL_SET; 26659 async->run = bcmx_async_run; 26660 async->callback = async_callback; 26661 async->cookie = async_cookie; 26662 async->args.vlan_control_set.type = type; 26663 async->args.vlan_control_set.arg = arg; 26664 bcm_async_add((bcm_async_req_t *)async); 26665 } 26666 26667 void 26668 bcmx_vlan_control_vlan_get_async( 26669 bcm_vlan_t vlan, 26670 bcm_vlan_control_vlan_t * control, 26671 bcmx_async_cb_t async_callback, 26672 void *async_cookie) 26673 { 26674 bcmx_async_req_t *async; 26675 26676 async = sal_alloc(sizeof(*async), "bcmx_async"); 26677 if (async == NULL) { 26678 if (async_callback != NULL) { 26679 (*async_callback)(async_cookie, BCM_E_MEMORY); 26680 } 26681 return; 26682 } 26683 async->next = NULL; 26684 async->type = BCMX_ASYNC_ENTRY_VLAN_CONTROL_VLAN_GET; 26685 async->run = bcmx_async_run; 26686 async->callback = async_callback; 26687 async->cookie = async_cookie; 26688 async->args.vlan_control_vlan_get.vlan = vlan; 26689 async->args.vlan_control_vlan_get.control = control; 26690 bcm_async_add((bcm_async_req_t *)async); 26691 } 26692 26693 void 26694 bcmx_vlan_control_vlan_set_async( 26695 bcm_vlan_t vlan, 26696 bcm_vlan_control_vlan_t control, 26697 bcmx_async_cb_t async_callback, 26698 void *async_cookie) 26699 { 26700 bcmx_async_req_t *async; 26701 26702 async = sal_alloc(sizeof(*async), "bcmx_async"); 26703 if (async == NULL) { 26704 if (async_callback != NULL) { 26705 (*async_callback)(async_cookie, BCM_E_MEMORY); 26706 } 26707 return; 26708 } 26709 async->next = NULL; 26710 async->type = BCMX_ASYNC_ENTRY_VLAN_CONTROL_VLAN_SET; 26711 async->run = bcmx_async_run; 26712 async->callback = async_callback; 26713 async->cookie = async_cookie; 26714 async->args.vlan_control_vlan_set.vlan = vlan; 26715 async->args.vlan_control_vlan_set.control = control; 26716 bcm_async_add((bcm_async_req_t *)async); 26717 } 26718 26719 void 26720 bcmx_vlan_create_async( 26721 bcm_vlan_t vid, 26722 bcmx_async_cb_t async_callback, 26723 void *async_cookie) 26724 { 26725 bcmx_async_req_t *async; 26726 26727 async = sal_alloc(sizeof(*async), "bcmx_async"); 26728 if (async == NULL) { 26729 if (async_callback != NULL) { 26730 (*async_callback)(async_cookie, BCM_E_MEMORY); 26731 } 26732 return; 26733 } 26734 async->next = NULL; 26735 async->type = BCMX_ASYNC_ENTRY_VLAN_CREATE; 26736 async->run = bcmx_async_run; 26737 async->callback = async_callback; 26738 async->cookie = async_cookie; 26739 async->args.vlan_create.vid = vid; 26740 bcm_async_add((bcm_async_req_t *)async); 26741 } 26742 26743 void 26744 bcmx_vlan_cross_connect_add_async( 26745 bcm_vlan_t outer_vlan, 26746 bcm_vlan_t inner_vlan, 26747 bcm_gport_t port_1, 26748 bcm_gport_t port_2, 26749 bcmx_async_cb_t async_callback, 26750 void *async_cookie) 26751 { 26752 bcmx_async_req_t *async; 26753 26754 async = sal_alloc(sizeof(*async), "bcmx_async"); 26755 if (async == NULL) { 26756 if (async_callback != NULL) { 26757 (*async_callback)(async_cookie, BCM_E_MEMORY); 26758 } 26759 return; 26760 } 26761 async->next = NULL; 26762 async->type = BCMX_ASYNC_ENTRY_VLAN_CROSS_CONNECT_ADD; 26763 async->run = bcmx_async_run; 26764 async->callback = async_callback; 26765 async->cookie = async_cookie; 26766 async->args.vlan_cross_connect_add.outer_vlan = outer_vlan; 26767 async->args.vlan_cross_connect_add.inner_vlan = inner_vlan; 26768 async->args.vlan_cross_connect_add.port_1 = port_1; 26769 async->args.vlan_cross_connect_add.port_2 = port_2; 26770 bcm_async_add((bcm_async_req_t *)async); 26771 } 26772 26773 void 26774 bcmx_vlan_cross_connect_delete_async( 26775 bcm_vlan_t outer_vlan, 26776 bcm_vlan_t inner_vlan, 26777 bcmx_async_cb_t async_callback, 26778 void *async_cookie) 26779 { 26780 bcmx_async_req_t *async; 26781 26782 async = sal_alloc(sizeof(*async), "bcmx_async"); 26783 if (async == NULL) { 26784 if (async_callback != NULL) { 26785 (*async_callback)(async_cookie, BCM_E_MEMORY); 26786 } 26787 return; 26788 } 26789 async->next = NULL; 26790 async->type = BCMX_ASYNC_ENTRY_VLAN_CROSS_CONNECT_DELETE; 26791 async->run = bcmx_async_run; 26792 async->callback = async_callback; 26793 async->cookie = async_cookie; 26794 async->args.vlan_cross_connect_delete.outer_vlan = outer_vlan; 26795 async->args.vlan_cross_connect_delete.inner_vlan = inner_vlan; 26796 bcm_async_add((bcm_async_req_t *)async); 26797 } 26798 26799 void 26800 bcmx_vlan_cross_connect_delete_all_async( 26801 bcmx_async_cb_t async_callback, 26802 void *async_cookie) 26803 { 26804 bcmx_async_req_t *async; 26805 26806 async = sal_alloc(sizeof(*async), "bcmx_async"); 26807 if (async == NULL) { 26808 if (async_callback != NULL) { 26809 (*async_callback)(async_cookie, BCM_E_MEMORY); 26810 } 26811 return; 26812 } 26813 async->next = NULL; 26814 async->type = BCMX_ASYNC_ENTRY_VLAN_CROSS_CONNECT_DELETE_ALL; 26815 async->run = bcmx_async_run; 26816 async->callback = async_callback; 26817 async->cookie = async_cookie; 26818 bcm_async_add((bcm_async_req_t *)async); 26819 } 26820 26821 void 26822 bcmx_vlan_default_get_async( 26823 bcm_vlan_t * vid_ptr, 26824 bcmx_async_cb_t async_callback, 26825 void *async_cookie) 26826 { 26827 bcmx_async_req_t *async; 26828 26829 async = sal_alloc(sizeof(*async), "bcmx_async"); 26830 if (async == NULL) { 26831 if (async_callback != NULL) { 26832 (*async_callback)(async_cookie, BCM_E_MEMORY); 26833 } 26834 return; 26835 } 26836 async->next = NULL; 26837 async->type = BCMX_ASYNC_ENTRY_VLAN_DEFAULT_GET; 26838 async->run = bcmx_async_run; 26839 async->callback = async_callback; 26840 async->cookie = async_cookie; 26841 async->args.vlan_default_get.vid_ptr = vid_ptr; 26842 bcm_async_add((bcm_async_req_t *)async); 26843 } 26844 26845 void 26846 bcmx_vlan_default_set_async( 26847 bcm_vlan_t vid, 26848 bcmx_async_cb_t async_callback, 26849 void *async_cookie) 26850 { 26851 bcmx_async_req_t *async; 26852 26853 async = sal_alloc(sizeof(*async), "bcmx_async"); 26854 if (async == NULL) { 26855 if (async_callback != NULL) { 26856 (*async_callback)(async_cookie, BCM_E_MEMORY); 26857 } 26858 return; 26859 } 26860 async->next = NULL; 26861 async->type = BCMX_ASYNC_ENTRY_VLAN_DEFAULT_SET; 26862 async->run = bcmx_async_run; 26863 async->callback = async_callback; 26864 async->cookie = async_cookie; 26865 async->args.vlan_default_set.vid = vid; 26866 bcm_async_add((bcm_async_req_t *)async); 26867 } 26868 26869 void 26870 bcmx_vlan_destroy_async( 26871 bcm_vlan_t vid, 26872 bcmx_async_cb_t async_callback, 26873 void *async_cookie) 26874 { 26875 bcmx_async_req_t *async; 26876 26877 async = sal_alloc(sizeof(*async), "bcmx_async"); 26878 if (async == NULL) { 26879 if (async_callback != NULL) { 26880 (*async_callback)(async_cookie, BCM_E_MEMORY); 26881 } 26882 return; 26883 } 26884 async->next = NULL; 26885 async->type = BCMX_ASYNC_ENTRY_VLAN_DESTROY; 26886 async->run = bcmx_async_run; 26887 async->callback = async_callback; 26888 async->cookie = async_cookie; 26889 async->args.vlan_destroy.vid = vid; 26890 bcm_async_add((bcm_async_req_t *)async); 26891 } 26892 26893 void 26894 bcmx_vlan_destroy_all_async( 26895 bcmx_async_cb_t async_callback, 26896 void *async_cookie) 26897 { 26898 bcmx_async_req_t *async; 26899 26900 async = sal_alloc(sizeof(*async), "bcmx_async"); 26901 if (async == NULL) { 26902 if (async_callback != NULL) { 26903 (*async_callback)(async_cookie, BCM_E_MEMORY); 26904 } 26905 return; 26906 } 26907 async->next = NULL; 26908 async->type = BCMX_ASYNC_ENTRY_VLAN_DESTROY_ALL; 26909 async->run = bcmx_async_run; 26910 async->callback = async_callback; 26911 async->cookie = async_cookie; 26912 bcm_async_add((bcm_async_req_t *)async); 26913 } 26914 26915 void 26916 bcmx_vlan_dtag_add_async( 26917 bcmx_lport_t port, 26918 bcm_vlan_t old_vid, 26919 bcm_vlan_t new_vid, 26920 int prio, 26921 bcmx_async_cb_t async_callback, 26922 void *async_cookie) 26923 { 26924 bcmx_async_req_t *async; 26925 26926 async = sal_alloc(sizeof(*async), "bcmx_async"); 26927 if (async == NULL) { 26928 if (async_callback != NULL) { 26929 (*async_callback)(async_cookie, BCM_E_MEMORY); 26930 } 26931 return; 26932 } 26933 async->next = NULL; 26934 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_ADD; 26935 async->run = bcmx_async_run; 26936 async->callback = async_callback; 26937 async->cookie = async_cookie; 26938 async->args.vlan_dtag_add.port = port; 26939 async->args.vlan_dtag_add.old_vid = old_vid; 26940 async->args.vlan_dtag_add.new_vid = new_vid; 26941 async->args.vlan_dtag_add.prio = prio; 26942 bcm_async_add((bcm_async_req_t *)async); 26943 } 26944 26945 void 26946 bcmx_vlan_dtag_delete_async( 26947 bcmx_lport_t port, 26948 bcm_vlan_t old_vid, 26949 bcmx_async_cb_t async_callback, 26950 void *async_cookie) 26951 { 26952 bcmx_async_req_t *async; 26953 26954 async = sal_alloc(sizeof(*async), "bcmx_async"); 26955 if (async == NULL) { 26956 if (async_callback != NULL) { 26957 (*async_callback)(async_cookie, BCM_E_MEMORY); 26958 } 26959 return; 26960 } 26961 async->next = NULL; 26962 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_DELETE; 26963 async->run = bcmx_async_run; 26964 async->callback = async_callback; 26965 async->cookie = async_cookie; 26966 async->args.vlan_dtag_delete.port = port; 26967 async->args.vlan_dtag_delete.old_vid = old_vid; 26968 bcm_async_add((bcm_async_req_t *)async); 26969 } 26970 26971 void 26972 bcmx_vlan_dtag_delete_all_async( 26973 bcmx_async_cb_t async_callback, 26974 void *async_cookie) 26975 { 26976 bcmx_async_req_t *async; 26977 26978 async = sal_alloc(sizeof(*async), "bcmx_async"); 26979 if (async == NULL) { 26980 if (async_callback != NULL) { 26981 (*async_callback)(async_cookie, BCM_E_MEMORY); 26982 } 26983 return; 26984 } 26985 async->next = NULL; 26986 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_DELETE_ALL; 26987 async->run = bcmx_async_run; 26988 async->callback = async_callback; 26989 async->cookie = async_cookie; 26990 bcm_async_add((bcm_async_req_t *)async); 26991 } 26992 26993 void 26994 bcmx_vlan_dtag_get_async( 26995 bcmx_lport_t port, 26996 bcm_vlan_t old_vid, 26997 bcm_vlan_t * new_vid, 26998 int * prio, 26999 bcmx_async_cb_t async_callback, 27000 void *async_cookie) 27001 { 27002 bcmx_async_req_t *async; 27003 27004 async = sal_alloc(sizeof(*async), "bcmx_async"); 27005 if (async == NULL) { 27006 if (async_callback != NULL) { 27007 (*async_callback)(async_cookie, BCM_E_MEMORY); 27008 } 27009 return; 27010 } 27011 async->next = NULL; 27012 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_GET; 27013 async->run = bcmx_async_run; 27014 async->callback = async_callback; 27015 async->cookie = async_cookie; 27016 async->args.vlan_dtag_get.port = port; 27017 async->args.vlan_dtag_get.old_vid = old_vid; 27018 async->args.vlan_dtag_get.new_vid = new_vid; 27019 async->args.vlan_dtag_get.prio = prio; 27020 bcm_async_add((bcm_async_req_t *)async); 27021 } 27022 27023 void 27024 bcmx_vlan_dtag_range_add_async( 27025 bcmx_lport_t port, 27026 bcm_vlan_t old_vid_low, 27027 bcm_vlan_t old_vid_high, 27028 bcm_vlan_t new_vid, 27029 int int_prio, 27030 bcmx_async_cb_t async_callback, 27031 void *async_cookie) 27032 { 27033 bcmx_async_req_t *async; 27034 27035 async = sal_alloc(sizeof(*async), "bcmx_async"); 27036 if (async == NULL) { 27037 if (async_callback != NULL) { 27038 (*async_callback)(async_cookie, BCM_E_MEMORY); 27039 } 27040 return; 27041 } 27042 async->next = NULL; 27043 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_ADD; 27044 async->run = bcmx_async_run; 27045 async->callback = async_callback; 27046 async->cookie = async_cookie; 27047 async->args.vlan_dtag_range_add.port = port; 27048 async->args.vlan_dtag_range_add.old_vid_low = old_vid_low; 27049 async->args.vlan_dtag_range_add.old_vid_high = old_vid_high; 27050 async->args.vlan_dtag_range_add.new_vid = new_vid; 27051 async->args.vlan_dtag_range_add.int_prio = int_prio; 27052 bcm_async_add((bcm_async_req_t *)async); 27053 } 27054 27055 void 27056 bcmx_vlan_dtag_range_delete_async( 27057 bcmx_lport_t port, 27058 bcm_vlan_t old_vid_low, 27059 bcm_vlan_t old_vid_high, 27060 bcmx_async_cb_t async_callback, 27061 void *async_cookie) 27062 { 27063 bcmx_async_req_t *async; 27064 27065 async = sal_alloc(sizeof(*async), "bcmx_async"); 27066 if (async == NULL) { 27067 if (async_callback != NULL) { 27068 (*async_callback)(async_cookie, BCM_E_MEMORY); 27069 } 27070 return; 27071 } 27072 async->next = NULL; 27073 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_DELETE; 27074 async->run = bcmx_async_run; 27075 async->callback = async_callback; 27076 async->cookie = async_cookie; 27077 async->args.vlan_dtag_range_delete.port = port; 27078 async->args.vlan_dtag_range_delete.old_vid_low = old_vid_low; 27079 async->args.vlan_dtag_range_delete.old_vid_high = old_vid_high; 27080 bcm_async_add((bcm_async_req_t *)async); 27081 } 27082 27083 void 27084 bcmx_vlan_dtag_range_delete_all_async( 27085 bcmx_async_cb_t async_callback, 27086 void *async_cookie) 27087 { 27088 bcmx_async_req_t *async; 27089 27090 async = sal_alloc(sizeof(*async), "bcmx_async"); 27091 if (async == NULL) { 27092 if (async_callback != NULL) { 27093 (*async_callback)(async_cookie, BCM_E_MEMORY); 27094 } 27095 return; 27096 } 27097 async->next = NULL; 27098 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_DELETE_ALL; 27099 async->run = bcmx_async_run; 27100 async->callback = async_callback; 27101 async->cookie = async_cookie; 27102 bcm_async_add((bcm_async_req_t *)async); 27103 } 27104 27105 void 27106 bcmx_vlan_dtag_range_get_async( 27107 bcmx_lport_t port, 27108 bcm_vlan_t old_vid_low, 27109 bcm_vlan_t old_vid_high, 27110 bcm_vlan_t * new_vid, 27111 int * prio, 27112 bcmx_async_cb_t async_callback, 27113 void *async_cookie) 27114 { 27115 bcmx_async_req_t *async; 27116 27117 async = sal_alloc(sizeof(*async), "bcmx_async"); 27118 if (async == NULL) { 27119 if (async_callback != NULL) { 27120 (*async_callback)(async_cookie, BCM_E_MEMORY); 27121 } 27122 return; 27123 } 27124 async->next = NULL; 27125 async->type = BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_GET; 27126 async->run = bcmx_async_run; 27127 async->callback = async_callback; 27128 async->cookie = async_cookie; 27129 async->args.vlan_dtag_range_get.port = port; 27130 async->args.vlan_dtag_range_get.old_vid_low = old_vid_low; 27131 async->args.vlan_dtag_range_get.old_vid_high = old_vid_high; 27132 async->args.vlan_dtag_range_get.new_vid = new_vid; 27133 async->args.vlan_dtag_range_get.prio = prio; 27134 bcm_async_add((bcm_async_req_t *)async); 27135 } 27136 27137 void 27138 bcmx_vlan_gport_add_async( 27139 bcm_vlan_t vlan, 27140 bcm_gport_t port, 27141 int flags, 27142 bcmx_async_cb_t async_callback, 27143 void *async_cookie) 27144 { 27145 bcmx_async_req_t *async; 27146 27147 async = sal_alloc(sizeof(*async), "bcmx_async"); 27148 if (async == NULL) { 27149 if (async_callback != NULL) { 27150 (*async_callback)(async_cookie, BCM_E_MEMORY); 27151 } 27152 return; 27153 } 27154 async->next = NULL; 27155 async->type = BCMX_ASYNC_ENTRY_VLAN_GPORT_ADD; 27156 async->run = bcmx_async_run; 27157 async->callback = async_callback; 27158 async->cookie = async_cookie; 27159 async->args.vlan_gport_add.vlan = vlan; 27160 async->args.vlan_gport_add.port = port; 27161 async->args.vlan_gport_add.flags = flags; 27162 bcm_async_add((bcm_async_req_t *)async); 27163 } 27164 27165 void 27166 bcmx_vlan_gport_delete_async( 27167 bcm_vlan_t vlan, 27168 bcm_gport_t port, 27169 bcmx_async_cb_t async_callback, 27170 void *async_cookie) 27171 { 27172 bcmx_async_req_t *async; 27173 27174 async = sal_alloc(sizeof(*async), "bcmx_async"); 27175 if (async == NULL) { 27176 if (async_callback != NULL) { 27177 (*async_callback)(async_cookie, BCM_E_MEMORY); 27178 } 27179 return; 27180 } 27181 async->next = NULL; 27182 async->type = BCMX_ASYNC_ENTRY_VLAN_GPORT_DELETE; 27183 async->run = bcmx_async_run; 27184 async->callback = async_callback; 27185 async->cookie = async_cookie; 27186 async->args.vlan_gport_delete.vlan = vlan; 27187 async->args.vlan_gport_delete.port = port; 27188 bcm_async_add((bcm_async_req_t *)async); 27189 } 27190 27191 void 27192 bcmx_vlan_gport_delete_all_async( 27193 bcm_vlan_t vlan, 27194 bcmx_async_cb_t async_callback, 27195 void *async_cookie) 27196 { 27197 bcmx_async_req_t *async; 27198 27199 async = sal_alloc(sizeof(*async), "bcmx_async"); 27200 if (async == NULL) { 27201 if (async_callback != NULL) { 27202 (*async_callback)(async_cookie, BCM_E_MEMORY); 27203 } 27204 return; 27205 } 27206 async->next = NULL; 27207 async->type = BCMX_ASYNC_ENTRY_VLAN_GPORT_DELETE_ALL; 27208 async->run = bcmx_async_run; 27209 async->callback = async_callback; 27210 async->cookie = async_cookie; 27211 async->args.vlan_gport_delete_all.vlan = vlan; 27212 bcm_async_add((bcm_async_req_t *)async); 27213 } 27214 27215 void 27216 bcmx_vlan_gport_get_async( 27217 bcm_vlan_t vlan, 27218 bcm_gport_t port, 27219 int * flags, 27220 bcmx_async_cb_t async_callback, 27221 void *async_cookie) 27222 { 27223 bcmx_async_req_t *async; 27224 27225 async = sal_alloc(sizeof(*async), "bcmx_async"); 27226 if (async == NULL) { 27227 if (async_callback != NULL) { 27228 (*async_callback)(async_cookie, BCM_E_MEMORY); 27229 } 27230 return; 27231 } 27232 async->next = NULL; 27233 async->type = BCMX_ASYNC_ENTRY_VLAN_GPORT_GET; 27234 async->run = bcmx_async_run; 27235 async->callback = async_callback; 27236 async->cookie = async_cookie; 27237 async->args.vlan_gport_get.vlan = vlan; 27238 async->args.vlan_gport_get.port = port; 27239 async->args.vlan_gport_get.flags = flags; 27240 bcm_async_add((bcm_async_req_t *)async); 27241 } 27242 27243 void 27244 bcmx_vlan_gport_get_all_async( 27245 bcm_vlan_t vlan, 27246 int array_max, 27247 bcm_gport_t * gport_array, 27248 int * flags_array, 27249 int * array_size, 27250 bcmx_async_cb_t async_callback, 27251 void *async_cookie) 27252 { 27253 bcmx_async_req_t *async; 27254 27255 async = sal_alloc(sizeof(*async), "bcmx_async"); 27256 if (async == NULL) { 27257 if (async_callback != NULL) { 27258 (*async_callback)(async_cookie, BCM_E_MEMORY); 27259 } 27260 return; 27261 } 27262 async->next = NULL; 27263 async->type = BCMX_ASYNC_ENTRY_VLAN_GPORT_GET_ALL; 27264 async->run = bcmx_async_run; 27265 async->callback = async_callback; 27266 async->cookie = async_cookie; 27267 async->args.vlan_gport_get_all.vlan = vlan; 27268 async->args.vlan_gport_get_all.array_max = array_max; 27269 async->args.vlan_gport_get_all.gport_array = gport_array; 27270 async->args.vlan_gport_get_all.flags_array = flags_array; 27271 async->args.vlan_gport_get_all.array_size = array_size; 27272 bcm_async_add((bcm_async_req_t *)async); 27273 } 27274 27275 void 27276 bcmx_vlan_ip_action_add_async( 27277 bcm_vlan_ip_t * vlan_ip, 27278 bcm_vlan_action_set_t * action, 27279 bcmx_async_cb_t async_callback, 27280 void *async_cookie) 27281 { 27282 bcmx_async_req_t *async; 27283 27284 async = sal_alloc(sizeof(*async), "bcmx_async"); 27285 if (async == NULL) { 27286 if (async_callback != NULL) { 27287 (*async_callback)(async_cookie, BCM_E_MEMORY); 27288 } 27289 return; 27290 } 27291 async->next = NULL; 27292 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_ADD; 27293 async->run = bcmx_async_run; 27294 async->callback = async_callback; 27295 async->cookie = async_cookie; 27296 async->args.vlan_ip_action_add.vlan_ip = vlan_ip; 27297 async->args.vlan_ip_action_add.action = action; 27298 bcm_async_add((bcm_async_req_t *)async); 27299 } 27300 27301 void 27302 bcmx_vlan_ip_action_delete_async( 27303 bcm_vlan_ip_t * vlan_ip, 27304 bcmx_async_cb_t async_callback, 27305 void *async_cookie) 27306 { 27307 bcmx_async_req_t *async; 27308 27309 async = sal_alloc(sizeof(*async), "bcmx_async"); 27310 if (async == NULL) { 27311 if (async_callback != NULL) { 27312 (*async_callback)(async_cookie, BCM_E_MEMORY); 27313 } 27314 return; 27315 } 27316 async->next = NULL; 27317 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_DELETE; 27318 async->run = bcmx_async_run; 27319 async->callback = async_callback; 27320 async->cookie = async_cookie; 27321 async->args.vlan_ip_action_delete.vlan_ip = vlan_ip; 27322 bcm_async_add((bcm_async_req_t *)async); 27323 } 27324 27325 void 27326 bcmx_vlan_ip_action_delete_all_async( 27327 bcmx_async_cb_t async_callback, 27328 void *async_cookie) 27329 { 27330 bcmx_async_req_t *async; 27331 27332 async = sal_alloc(sizeof(*async), "bcmx_async"); 27333 if (async == NULL) { 27334 if (async_callback != NULL) { 27335 (*async_callback)(async_cookie, BCM_E_MEMORY); 27336 } 27337 return; 27338 } 27339 async->next = NULL; 27340 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_DELETE_ALL; 27341 async->run = bcmx_async_run; 27342 async->callback = async_callback; 27343 async->cookie = async_cookie; 27344 bcm_async_add((bcm_async_req_t *)async); 27345 } 27346 27347 void 27348 bcmx_vlan_ip_action_get_async( 27349 bcm_vlan_ip_t * vlan_ip, 27350 bcm_vlan_action_set_t * action, 27351 bcmx_async_cb_t async_callback, 27352 void *async_cookie) 27353 { 27354 bcmx_async_req_t *async; 27355 27356 async = sal_alloc(sizeof(*async), "bcmx_async"); 27357 if (async == NULL) { 27358 if (async_callback != NULL) { 27359 (*async_callback)(async_cookie, BCM_E_MEMORY); 27360 } 27361 return; 27362 } 27363 async->next = NULL; 27364 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_GET; 27365 async->run = bcmx_async_run; 27366 async->callback = async_callback; 27367 async->cookie = async_cookie; 27368 async->args.vlan_ip_action_get.vlan_ip = vlan_ip; 27369 async->args.vlan_ip_action_get.action = action; 27370 bcm_async_add((bcm_async_req_t *)async); 27371 } 27372 27373 void 27374 bcmx_vlan_ip_add_async( 27375 bcm_vlan_ip_t * vlan_ip, 27376 bcmx_async_cb_t async_callback, 27377 void *async_cookie) 27378 { 27379 bcmx_async_req_t *async; 27380 27381 async = sal_alloc(sizeof(*async), "bcmx_async"); 27382 if (async == NULL) { 27383 if (async_callback != NULL) { 27384 (*async_callback)(async_cookie, BCM_E_MEMORY); 27385 } 27386 return; 27387 } 27388 async->next = NULL; 27389 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_ADD; 27390 async->run = bcmx_async_run; 27391 async->callback = async_callback; 27392 async->cookie = async_cookie; 27393 async->args.vlan_ip_add.vlan_ip = vlan_ip; 27394 bcm_async_add((bcm_async_req_t *)async); 27395 } 27396 27397 void 27398 bcmx_vlan_ip_delete_async( 27399 bcm_vlan_ip_t * vlan_ip, 27400 bcmx_async_cb_t async_callback, 27401 void *async_cookie) 27402 { 27403 bcmx_async_req_t *async; 27404 27405 async = sal_alloc(sizeof(*async), "bcmx_async"); 27406 if (async == NULL) { 27407 if (async_callback != NULL) { 27408 (*async_callback)(async_cookie, BCM_E_MEMORY); 27409 } 27410 return; 27411 } 27412 async->next = NULL; 27413 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_DELETE; 27414 async->run = bcmx_async_run; 27415 async->callback = async_callback; 27416 async->cookie = async_cookie; 27417 async->args.vlan_ip_delete.vlan_ip = vlan_ip; 27418 bcm_async_add((bcm_async_req_t *)async); 27419 } 27420 27421 void 27422 bcmx_vlan_ip_delete_all_async( 27423 bcmx_async_cb_t async_callback, 27424 void *async_cookie) 27425 { 27426 bcmx_async_req_t *async; 27427 27428 async = sal_alloc(sizeof(*async), "bcmx_async"); 27429 if (async == NULL) { 27430 if (async_callback != NULL) { 27431 (*async_callback)(async_cookie, BCM_E_MEMORY); 27432 } 27433 return; 27434 } 27435 async->next = NULL; 27436 async->type = BCMX_ASYNC_ENTRY_VLAN_IP_DELETE_ALL; 27437 async->run = bcmx_async_run; 27438 async->callback = async_callback; 27439 async->cookie = async_cookie; 27440 bcm_async_add((bcm_async_req_t *)async); 27441 } 27442 27443 void 27444 bcmx_vlan_mac_action_add_async( 27445 bcm_mac_t mac, 27446 bcm_vlan_action_set_t * action, 27447 bcmx_async_cb_t async_callback, 27448 void *async_cookie) 27449 { 27450 bcmx_async_req_t *async; 27451 27452 async = sal_alloc(sizeof(*async), "bcmx_async"); 27453 if (async == NULL) { 27454 if (async_callback != NULL) { 27455 (*async_callback)(async_cookie, BCM_E_MEMORY); 27456 } 27457 return; 27458 } 27459 async->next = NULL; 27460 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_ADD; 27461 async->run = bcmx_async_run; 27462 async->callback = async_callback; 27463 async->cookie = async_cookie; 27464 async->args.vlan_mac_action_add.mac = (uint8 *)mac; 27465 async->args.vlan_mac_action_add.action = action; 27466 bcm_async_add((bcm_async_req_t *)async); 27467 } 27468 27469 void 27470 bcmx_vlan_mac_action_delete_async( 27471 bcm_mac_t mac, 27472 bcmx_async_cb_t async_callback, 27473 void *async_cookie) 27474 { 27475 bcmx_async_req_t *async; 27476 27477 async = sal_alloc(sizeof(*async), "bcmx_async"); 27478 if (async == NULL) { 27479 if (async_callback != NULL) { 27480 (*async_callback)(async_cookie, BCM_E_MEMORY); 27481 } 27482 return; 27483 } 27484 async->next = NULL; 27485 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_DELETE; 27486 async->run = bcmx_async_run; 27487 async->callback = async_callback; 27488 async->cookie = async_cookie; 27489 async->args.vlan_mac_action_delete.mac = (uint8 *)mac; 27490 bcm_async_add((bcm_async_req_t *)async); 27491 } 27492 27493 void 27494 bcmx_vlan_mac_action_delete_all_async( 27495 bcmx_async_cb_t async_callback, 27496 void *async_cookie) 27497 { 27498 bcmx_async_req_t *async; 27499 27500 async = sal_alloc(sizeof(*async), "bcmx_async"); 27501 if (async == NULL) { 27502 if (async_callback != NULL) { 27503 (*async_callback)(async_cookie, BCM_E_MEMORY); 27504 } 27505 return; 27506 } 27507 async->next = NULL; 27508 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_DELETE_ALL; 27509 async->run = bcmx_async_run; 27510 async->callback = async_callback; 27511 async->cookie = async_cookie; 27512 bcm_async_add((bcm_async_req_t *)async); 27513 } 27514 27515 void 27516 bcmx_vlan_mac_action_get_async( 27517 bcm_mac_t mac, 27518 bcm_vlan_action_set_t * action, 27519 bcmx_async_cb_t async_callback, 27520 void *async_cookie) 27521 { 27522 bcmx_async_req_t *async; 27523 27524 async = sal_alloc(sizeof(*async), "bcmx_async"); 27525 if (async == NULL) { 27526 if (async_callback != NULL) { 27527 (*async_callback)(async_cookie, BCM_E_MEMORY); 27528 } 27529 return; 27530 } 27531 async->next = NULL; 27532 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_GET; 27533 async->run = bcmx_async_run; 27534 async->callback = async_callback; 27535 async->cookie = async_cookie; 27536 async->args.vlan_mac_action_get.mac = (uint8 *)mac; 27537 async->args.vlan_mac_action_get.action = action; 27538 bcm_async_add((bcm_async_req_t *)async); 27539 } 27540 27541 void 27542 bcmx_vlan_mac_add_async( 27543 bcm_mac_t mac, 27544 bcm_vlan_t vid, 27545 int prio, 27546 bcmx_async_cb_t async_callback, 27547 void *async_cookie) 27548 { 27549 bcmx_async_req_t *async; 27550 27551 async = sal_alloc(sizeof(*async), "bcmx_async"); 27552 if (async == NULL) { 27553 if (async_callback != NULL) { 27554 (*async_callback)(async_cookie, BCM_E_MEMORY); 27555 } 27556 return; 27557 } 27558 async->next = NULL; 27559 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_ADD; 27560 async->run = bcmx_async_run; 27561 async->callback = async_callback; 27562 async->cookie = async_cookie; 27563 async->args.vlan_mac_add.mac = (uint8 *)mac; 27564 async->args.vlan_mac_add.vid = vid; 27565 async->args.vlan_mac_add.prio = prio; 27566 bcm_async_add((bcm_async_req_t *)async); 27567 } 27568 27569 void 27570 bcmx_vlan_mac_delete_async( 27571 bcm_mac_t mac, 27572 bcmx_async_cb_t async_callback, 27573 void *async_cookie) 27574 { 27575 bcmx_async_req_t *async; 27576 27577 async = sal_alloc(sizeof(*async), "bcmx_async"); 27578 if (async == NULL) { 27579 if (async_callback != NULL) { 27580 (*async_callback)(async_cookie, BCM_E_MEMORY); 27581 } 27582 return; 27583 } 27584 async->next = NULL; 27585 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_DELETE; 27586 async->run = bcmx_async_run; 27587 async->callback = async_callback; 27588 async->cookie = async_cookie; 27589 async->args.vlan_mac_delete.mac = (uint8 *)mac; 27590 bcm_async_add((bcm_async_req_t *)async); 27591 } 27592 27593 void 27594 bcmx_vlan_mac_delete_all_async( 27595 bcmx_async_cb_t async_callback, 27596 void *async_cookie) 27597 { 27598 bcmx_async_req_t *async; 27599 27600 async = sal_alloc(sizeof(*async), "bcmx_async"); 27601 if (async == NULL) { 27602 if (async_callback != NULL) { 27603 (*async_callback)(async_cookie, BCM_E_MEMORY); 27604 } 27605 return; 27606 } 27607 async->next = NULL; 27608 async->type = BCMX_ASYNC_ENTRY_VLAN_MAC_DELETE_ALL; 27609 async->run = bcmx_async_run; 27610 async->callback = async_callback; 27611 async->cookie = async_cookie; 27612 bcm_async_add((bcm_async_req_t *)async); 27613 } 27614 27615 void 27616 bcmx_vlan_mcast_flood_get_async( 27617 bcm_vlan_t vlan, 27618 bcm_vlan_mcast_flood_t * mode, 27619 bcmx_async_cb_t async_callback, 27620 void *async_cookie) 27621 { 27622 bcmx_async_req_t *async; 27623 27624 async = sal_alloc(sizeof(*async), "bcmx_async"); 27625 if (async == NULL) { 27626 if (async_callback != NULL) { 27627 (*async_callback)(async_cookie, BCM_E_MEMORY); 27628 } 27629 return; 27630 } 27631 async->next = NULL; 27632 async->type = BCMX_ASYNC_ENTRY_VLAN_MCAST_FLOOD_GET; 27633 async->run = bcmx_async_run; 27634 async->callback = async_callback; 27635 async->cookie = async_cookie; 27636 async->args.vlan_mcast_flood_get.vlan = vlan; 27637 async->args.vlan_mcast_flood_get.mode = mode; 27638 bcm_async_add((bcm_async_req_t *)async); 27639 } 27640 27641 void 27642 bcmx_vlan_mcast_flood_set_async( 27643 bcm_vlan_t vlan, 27644 bcm_vlan_mcast_flood_t mode, 27645 bcmx_async_cb_t async_callback, 27646 void *async_cookie) 27647 { 27648 bcmx_async_req_t *async; 27649 27650 async = sal_alloc(sizeof(*async), "bcmx_async"); 27651 if (async == NULL) { 27652 if (async_callback != NULL) { 27653 (*async_callback)(async_cookie, BCM_E_MEMORY); 27654 } 27655 return; 27656 } 27657 async->next = NULL; 27658 async->type = BCMX_ASYNC_ENTRY_VLAN_MCAST_FLOOD_SET; 27659 async->run = bcmx_async_run; 27660 async->callback = async_callback; 27661 async->cookie = async_cookie; 27662 async->args.vlan_mcast_flood_set.vlan = vlan; 27663 async->args.vlan_mcast_flood_set.mode = mode; 27664 bcm_async_add((bcm_async_req_t *)async); 27665 } 27666 27667 void 27668 bcmx_vlan_port_add_async( 27669 bcm_vlan_t vid, 27670 bcmx_lplist_t lplist, 27671 bcmx_lplist_t ubmp, 27672 bcmx_async_cb_t async_callback, 27673 void *async_cookie) 27674 { 27675 bcmx_async_req_t *async; 27676 27677 async = sal_alloc(sizeof(*async), "bcmx_async"); 27678 if (async == NULL) { 27679 if (async_callback != NULL) { 27680 (*async_callback)(async_cookie, BCM_E_MEMORY); 27681 } 27682 return; 27683 } 27684 async->next = NULL; 27685 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_ADD; 27686 async->run = bcmx_async_run; 27687 async->callback = async_callback; 27688 async->cookie = async_cookie; 27689 async->args.vlan_port_add.vid = vid; 27690 async->args.vlan_port_add.lplist = lplist; 27691 async->args.vlan_port_add.ubmp = ubmp; 27692 bcm_async_add((bcm_async_req_t *)async); 27693 } 27694 27695 void 27696 bcmx_vlan_port_create_async( 27697 bcmx_vlan_port_t * vlan_port, 27698 bcmx_async_cb_t async_callback, 27699 void *async_cookie) 27700 { 27701 bcmx_async_req_t *async; 27702 27703 async = sal_alloc(sizeof(*async), "bcmx_async"); 27704 if (async == NULL) { 27705 if (async_callback != NULL) { 27706 (*async_callback)(async_cookie, BCM_E_MEMORY); 27707 } 27708 return; 27709 } 27710 async->next = NULL; 27711 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_CREATE; 27712 async->run = bcmx_async_run; 27713 async->callback = async_callback; 27714 async->cookie = async_cookie; 27715 async->args.vlan_port_create.vlan_port = vlan_port; 27716 bcm_async_add((bcm_async_req_t *)async); 27717 } 27718 27719 void 27720 bcmx_vlan_port_default_action_delete_async( 27721 bcmx_lport_t port, 27722 bcmx_async_cb_t async_callback, 27723 void *async_cookie) 27724 { 27725 bcmx_async_req_t *async; 27726 27727 async = sal_alloc(sizeof(*async), "bcmx_async"); 27728 if (async == NULL) { 27729 if (async_callback != NULL) { 27730 (*async_callback)(async_cookie, BCM_E_MEMORY); 27731 } 27732 return; 27733 } 27734 async->next = NULL; 27735 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_DEFAULT_ACTION_DELETE; 27736 async->run = bcmx_async_run; 27737 async->callback = async_callback; 27738 async->cookie = async_cookie; 27739 async->args.vlan_port_default_action_delete.port = port; 27740 bcm_async_add((bcm_async_req_t *)async); 27741 } 27742 27743 void 27744 bcmx_vlan_port_default_action_get_async( 27745 bcmx_lport_t port, 27746 bcm_vlan_action_set_t * action, 27747 bcmx_async_cb_t async_callback, 27748 void *async_cookie) 27749 { 27750 bcmx_async_req_t *async; 27751 27752 async = sal_alloc(sizeof(*async), "bcmx_async"); 27753 if (async == NULL) { 27754 if (async_callback != NULL) { 27755 (*async_callback)(async_cookie, BCM_E_MEMORY); 27756 } 27757 return; 27758 } 27759 async->next = NULL; 27760 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_DEFAULT_ACTION_GET; 27761 async->run = bcmx_async_run; 27762 async->callback = async_callback; 27763 async->cookie = async_cookie; 27764 async->args.vlan_port_default_action_get.port = port; 27765 async->args.vlan_port_default_action_get.action = action; 27766 bcm_async_add((bcm_async_req_t *)async); 27767 } 27768 27769 void 27770 bcmx_vlan_port_default_action_set_async( 27771 bcmx_lport_t port, 27772 bcm_vlan_action_set_t * action, 27773 bcmx_async_cb_t async_callback, 27774 void *async_cookie) 27775 { 27776 bcmx_async_req_t *async; 27777 27778 async = sal_alloc(sizeof(*async), "bcmx_async"); 27779 if (async == NULL) { 27780 if (async_callback != NULL) { 27781 (*async_callback)(async_cookie, BCM_E_MEMORY); 27782 } 27783 return; 27784 } 27785 async->next = NULL; 27786 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_DEFAULT_ACTION_SET; 27787 async->run = bcmx_async_run; 27788 async->callback = async_callback; 27789 async->cookie = async_cookie; 27790 async->args.vlan_port_default_action_set.port = port; 27791 async->args.vlan_port_default_action_set.action = action; 27792 bcm_async_add((bcm_async_req_t *)async); 27793 } 27794 27795 void 27796 bcmx_vlan_port_destroy_async( 27797 bcm_gport_t gport, 27798 bcmx_async_cb_t async_callback, 27799 void *async_cookie) 27800 { 27801 bcmx_async_req_t *async; 27802 27803 async = sal_alloc(sizeof(*async), "bcmx_async"); 27804 if (async == NULL) { 27805 if (async_callback != NULL) { 27806 (*async_callback)(async_cookie, BCM_E_MEMORY); 27807 } 27808 return; 27809 } 27810 async->next = NULL; 27811 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_DESTROY; 27812 async->run = bcmx_async_run; 27813 async->callback = async_callback; 27814 async->cookie = async_cookie; 27815 async->args.vlan_port_destroy.gport = gport; 27816 bcm_async_add((bcm_async_req_t *)async); 27817 } 27818 27819 void 27820 bcmx_vlan_port_egress_default_action_delete_async( 27821 bcmx_lport_t port, 27822 bcmx_async_cb_t async_callback, 27823 void *async_cookie) 27824 { 27825 bcmx_async_req_t *async; 27826 27827 async = sal_alloc(sizeof(*async), "bcmx_async"); 27828 if (async == NULL) { 27829 if (async_callback != NULL) { 27830 (*async_callback)(async_cookie, BCM_E_MEMORY); 27831 } 27832 return; 27833 } 27834 async->next = NULL; 27835 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_EGRESS_DEFAULT_ACTION_DELETE; 27836 async->run = bcmx_async_run; 27837 async->callback = async_callback; 27838 async->cookie = async_cookie; 27839 async->args.vlan_port_egress_default_action_delete.port = port; 27840 bcm_async_add((bcm_async_req_t *)async); 27841 } 27842 27843 void 27844 bcmx_vlan_port_egress_default_action_get_async( 27845 bcmx_lport_t port, 27846 bcm_vlan_action_set_t * action, 27847 bcmx_async_cb_t async_callback, 27848 void *async_cookie) 27849 { 27850 bcmx_async_req_t *async; 27851 27852 async = sal_alloc(sizeof(*async), "bcmx_async"); 27853 if (async == NULL) { 27854 if (async_callback != NULL) { 27855 (*async_callback)(async_cookie, BCM_E_MEMORY); 27856 } 27857 return; 27858 } 27859 async->next = NULL; 27860 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_EGRESS_DEFAULT_ACTION_GET; 27861 async->run = bcmx_async_run; 27862 async->callback = async_callback; 27863 async->cookie = async_cookie; 27864 async->args.vlan_port_egress_default_action_get.port = port; 27865 async->args.vlan_port_egress_default_action_get.action = action; 27866 bcm_async_add((bcm_async_req_t *)async); 27867 } 27868 27869 void 27870 bcmx_vlan_port_egress_default_action_set_async( 27871 bcmx_lport_t port, 27872 bcm_vlan_action_set_t * action, 27873 bcmx_async_cb_t async_callback, 27874 void *async_cookie) 27875 { 27876 bcmx_async_req_t *async; 27877 27878 async = sal_alloc(sizeof(*async), "bcmx_async"); 27879 if (async == NULL) { 27880 if (async_callback != NULL) { 27881 (*async_callback)(async_cookie, BCM_E_MEMORY); 27882 } 27883 return; 27884 } 27885 async->next = NULL; 27886 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_EGRESS_DEFAULT_ACTION_SET; 27887 async->run = bcmx_async_run; 27888 async->callback = async_callback; 27889 async->cookie = async_cookie; 27890 async->args.vlan_port_egress_default_action_set.port = port; 27891 async->args.vlan_port_egress_default_action_set.action = action; 27892 bcm_async_add((bcm_async_req_t *)async); 27893 } 27894 27895 void 27896 bcmx_vlan_port_find_async( 27897 bcmx_vlan_port_t * vlan_port, 27898 bcmx_async_cb_t async_callback, 27899 void *async_cookie) 27900 { 27901 bcmx_async_req_t *async; 27902 27903 async = sal_alloc(sizeof(*async), "bcmx_async"); 27904 if (async == NULL) { 27905 if (async_callback != NULL) { 27906 (*async_callback)(async_cookie, BCM_E_MEMORY); 27907 } 27908 return; 27909 } 27910 async->next = NULL; 27911 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_FIND; 27912 async->run = bcmx_async_run; 27913 async->callback = async_callback; 27914 async->cookie = async_cookie; 27915 async->args.vlan_port_find.vlan_port = vlan_port; 27916 bcm_async_add((bcm_async_req_t *)async); 27917 } 27918 27919 void 27920 bcmx_vlan_port_get_async( 27921 bcm_vlan_t vid, 27922 bcmx_lplist_t * lplist, 27923 bcmx_lplist_t * ubmp, 27924 bcmx_async_cb_t async_callback, 27925 void *async_cookie) 27926 { 27927 bcmx_async_req_t *async; 27928 27929 async = sal_alloc(sizeof(*async), "bcmx_async"); 27930 if (async == NULL) { 27931 if (async_callback != NULL) { 27932 (*async_callback)(async_cookie, BCM_E_MEMORY); 27933 } 27934 return; 27935 } 27936 async->next = NULL; 27937 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_GET; 27938 async->run = bcmx_async_run; 27939 async->callback = async_callback; 27940 async->cookie = async_cookie; 27941 async->args.vlan_port_get.vid = vid; 27942 async->args.vlan_port_get.lplist = lplist; 27943 async->args.vlan_port_get.ubmp = ubmp; 27944 bcm_async_add((bcm_async_req_t *)async); 27945 } 27946 27947 void 27948 bcmx_vlan_port_protocol_action_add_async( 27949 bcmx_lport_t port, 27950 bcm_port_frametype_t frame, 27951 bcm_port_ethertype_t ether, 27952 bcm_vlan_action_set_t * action, 27953 bcmx_async_cb_t async_callback, 27954 void *async_cookie) 27955 { 27956 bcmx_async_req_t *async; 27957 27958 async = sal_alloc(sizeof(*async), "bcmx_async"); 27959 if (async == NULL) { 27960 if (async_callback != NULL) { 27961 (*async_callback)(async_cookie, BCM_E_MEMORY); 27962 } 27963 return; 27964 } 27965 async->next = NULL; 27966 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_ADD; 27967 async->run = bcmx_async_run; 27968 async->callback = async_callback; 27969 async->cookie = async_cookie; 27970 async->args.vlan_port_protocol_action_add.port = port; 27971 async->args.vlan_port_protocol_action_add.frame = frame; 27972 async->args.vlan_port_protocol_action_add.ether = ether; 27973 async->args.vlan_port_protocol_action_add.action = action; 27974 bcm_async_add((bcm_async_req_t *)async); 27975 } 27976 27977 void 27978 bcmx_vlan_port_protocol_action_delete_async( 27979 bcmx_lport_t port, 27980 bcm_port_frametype_t frame, 27981 bcm_port_ethertype_t ether, 27982 bcmx_async_cb_t async_callback, 27983 void *async_cookie) 27984 { 27985 bcmx_async_req_t *async; 27986 27987 async = sal_alloc(sizeof(*async), "bcmx_async"); 27988 if (async == NULL) { 27989 if (async_callback != NULL) { 27990 (*async_callback)(async_cookie, BCM_E_MEMORY); 27991 } 27992 return; 27993 } 27994 async->next = NULL; 27995 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_DELETE; 27996 async->run = bcmx_async_run; 27997 async->callback = async_callback; 27998 async->cookie = async_cookie; 27999 async->args.vlan_port_protocol_action_delete.port = port; 28000 async->args.vlan_port_protocol_action_delete.frame = frame; 28001 async->args.vlan_port_protocol_action_delete.ether = ether; 28002 bcm_async_add((bcm_async_req_t *)async); 28003 } 28004 28005 void 28006 bcmx_vlan_port_protocol_action_delete_all_async( 28007 bcmx_lport_t port, 28008 bcmx_async_cb_t async_callback, 28009 void *async_cookie) 28010 { 28011 bcmx_async_req_t *async; 28012 28013 async = sal_alloc(sizeof(*async), "bcmx_async"); 28014 if (async == NULL) { 28015 if (async_callback != NULL) { 28016 (*async_callback)(async_cookie, BCM_E_MEMORY); 28017 } 28018 return; 28019 } 28020 async->next = NULL; 28021 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_DELETE_ALL; 28022 async->run = bcmx_async_run; 28023 async->callback = async_callback; 28024 async->cookie = async_cookie; 28025 async->args.vlan_port_protocol_action_delete_all.port = port; 28026 bcm_async_add((bcm_async_req_t *)async); 28027 } 28028 28029 void 28030 bcmx_vlan_port_protocol_action_get_async( 28031 bcmx_lport_t port, 28032 bcm_port_frametype_t frame, 28033 bcm_port_ethertype_t ether, 28034 bcm_vlan_action_set_t * action, 28035 bcmx_async_cb_t async_callback, 28036 void *async_cookie) 28037 { 28038 bcmx_async_req_t *async; 28039 28040 async = sal_alloc(sizeof(*async), "bcmx_async"); 28041 if (async == NULL) { 28042 if (async_callback != NULL) { 28043 (*async_callback)(async_cookie, BCM_E_MEMORY); 28044 } 28045 return; 28046 } 28047 async->next = NULL; 28048 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_GET; 28049 async->run = bcmx_async_run; 28050 async->callback = async_callback; 28051 async->cookie = async_cookie; 28052 async->args.vlan_port_protocol_action_get.port = port; 28053 async->args.vlan_port_protocol_action_get.frame = frame; 28054 async->args.vlan_port_protocol_action_get.ether = ether; 28055 async->args.vlan_port_protocol_action_get.action = action; 28056 bcm_async_add((bcm_async_req_t *)async); 28057 } 28058 28059 void 28060 bcmx_vlan_port_remove_async( 28061 bcm_vlan_t vid, 28062 bcmx_lplist_t lplist, 28063 bcmx_async_cb_t async_callback, 28064 void *async_cookie) 28065 { 28066 bcmx_async_req_t *async; 28067 28068 async = sal_alloc(sizeof(*async), "bcmx_async"); 28069 if (async == NULL) { 28070 if (async_callback != NULL) { 28071 (*async_callback)(async_cookie, BCM_E_MEMORY); 28072 } 28073 return; 28074 } 28075 async->next = NULL; 28076 async->type = BCMX_ASYNC_ENTRY_VLAN_PORT_REMOVE; 28077 async->run = bcmx_async_run; 28078 async->callback = async_callback; 28079 async->cookie = async_cookie; 28080 async->args.vlan_port_remove.vid = vid; 28081 async->args.vlan_port_remove.lplist = lplist; 28082 bcm_async_add((bcm_async_req_t *)async); 28083 } 28084 28085 void 28086 bcmx_vlan_queue_map_attach_async( 28087 bcm_vlan_t vlan, 28088 int qmid, 28089 bcmx_async_cb_t async_callback, 28090 void *async_cookie) 28091 { 28092 bcmx_async_req_t *async; 28093 28094 async = sal_alloc(sizeof(*async), "bcmx_async"); 28095 if (async == NULL) { 28096 if (async_callback != NULL) { 28097 (*async_callback)(async_cookie, BCM_E_MEMORY); 28098 } 28099 return; 28100 } 28101 async->next = NULL; 28102 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_ATTACH; 28103 async->run = bcmx_async_run; 28104 async->callback = async_callback; 28105 async->cookie = async_cookie; 28106 async->args.vlan_queue_map_attach.vlan = vlan; 28107 async->args.vlan_queue_map_attach.qmid = qmid; 28108 bcm_async_add((bcm_async_req_t *)async); 28109 } 28110 28111 void 28112 bcmx_vlan_queue_map_attach_get_async( 28113 bcm_vlan_t vlan, 28114 int * qmid, 28115 bcmx_async_cb_t async_callback, 28116 void *async_cookie) 28117 { 28118 bcmx_async_req_t *async; 28119 28120 async = sal_alloc(sizeof(*async), "bcmx_async"); 28121 if (async == NULL) { 28122 if (async_callback != NULL) { 28123 (*async_callback)(async_cookie, BCM_E_MEMORY); 28124 } 28125 return; 28126 } 28127 async->next = NULL; 28128 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_ATTACH_GET; 28129 async->run = bcmx_async_run; 28130 async->callback = async_callback; 28131 async->cookie = async_cookie; 28132 async->args.vlan_queue_map_attach_get.vlan = vlan; 28133 async->args.vlan_queue_map_attach_get.qmid = qmid; 28134 bcm_async_add((bcm_async_req_t *)async); 28135 } 28136 28137 void 28138 bcmx_vlan_queue_map_create_async( 28139 uint32 flags, 28140 int * qmid, 28141 bcmx_async_cb_t async_callback, 28142 void *async_cookie) 28143 { 28144 bcmx_async_req_t *async; 28145 28146 async = sal_alloc(sizeof(*async), "bcmx_async"); 28147 if (async == NULL) { 28148 if (async_callback != NULL) { 28149 (*async_callback)(async_cookie, BCM_E_MEMORY); 28150 } 28151 return; 28152 } 28153 async->next = NULL; 28154 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_CREATE; 28155 async->run = bcmx_async_run; 28156 async->callback = async_callback; 28157 async->cookie = async_cookie; 28158 async->args.vlan_queue_map_create.flags = flags; 28159 async->args.vlan_queue_map_create.qmid = qmid; 28160 bcm_async_add((bcm_async_req_t *)async); 28161 } 28162 28163 void 28164 bcmx_vlan_queue_map_destroy_async( 28165 int qmid, 28166 bcmx_async_cb_t async_callback, 28167 void *async_cookie) 28168 { 28169 bcmx_async_req_t *async; 28170 28171 async = sal_alloc(sizeof(*async), "bcmx_async"); 28172 if (async == NULL) { 28173 if (async_callback != NULL) { 28174 (*async_callback)(async_cookie, BCM_E_MEMORY); 28175 } 28176 return; 28177 } 28178 async->next = NULL; 28179 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DESTROY; 28180 async->run = bcmx_async_run; 28181 async->callback = async_callback; 28182 async->cookie = async_cookie; 28183 async->args.vlan_queue_map_destroy.qmid = qmid; 28184 bcm_async_add((bcm_async_req_t *)async); 28185 } 28186 28187 void 28188 bcmx_vlan_queue_map_destroy_all_async( 28189 bcmx_async_cb_t async_callback, 28190 void *async_cookie) 28191 { 28192 bcmx_async_req_t *async; 28193 28194 async = sal_alloc(sizeof(*async), "bcmx_async"); 28195 if (async == NULL) { 28196 if (async_callback != NULL) { 28197 (*async_callback)(async_cookie, BCM_E_MEMORY); 28198 } 28199 return; 28200 } 28201 async->next = NULL; 28202 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DESTROY_ALL; 28203 async->run = bcmx_async_run; 28204 async->callback = async_callback; 28205 async->cookie = async_cookie; 28206 bcm_async_add((bcm_async_req_t *)async); 28207 } 28208 28209 void 28210 bcmx_vlan_queue_map_detach_async( 28211 bcm_vlan_t vlan, 28212 bcmx_async_cb_t async_callback, 28213 void *async_cookie) 28214 { 28215 bcmx_async_req_t *async; 28216 28217 async = sal_alloc(sizeof(*async), "bcmx_async"); 28218 if (async == NULL) { 28219 if (async_callback != NULL) { 28220 (*async_callback)(async_cookie, BCM_E_MEMORY); 28221 } 28222 return; 28223 } 28224 async->next = NULL; 28225 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DETACH; 28226 async->run = bcmx_async_run; 28227 async->callback = async_callback; 28228 async->cookie = async_cookie; 28229 async->args.vlan_queue_map_detach.vlan = vlan; 28230 bcm_async_add((bcm_async_req_t *)async); 28231 } 28232 28233 void 28234 bcmx_vlan_queue_map_detach_all_async( 28235 bcmx_async_cb_t async_callback, 28236 void *async_cookie) 28237 { 28238 bcmx_async_req_t *async; 28239 28240 async = sal_alloc(sizeof(*async), "bcmx_async"); 28241 if (async == NULL) { 28242 if (async_callback != NULL) { 28243 (*async_callback)(async_cookie, BCM_E_MEMORY); 28244 } 28245 return; 28246 } 28247 async->next = NULL; 28248 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DETACH_ALL; 28249 async->run = bcmx_async_run; 28250 async->callback = async_callback; 28251 async->cookie = async_cookie; 28252 bcm_async_add((bcm_async_req_t *)async); 28253 } 28254 28255 void 28256 bcmx_vlan_queue_map_get_async( 28257 int qmid, 28258 int pkt_pri, 28259 int cfi, 28260 int * queue, 28261 int * color, 28262 bcmx_async_cb_t async_callback, 28263 void *async_cookie) 28264 { 28265 bcmx_async_req_t *async; 28266 28267 async = sal_alloc(sizeof(*async), "bcmx_async"); 28268 if (async == NULL) { 28269 if (async_callback != NULL) { 28270 (*async_callback)(async_cookie, BCM_E_MEMORY); 28271 } 28272 return; 28273 } 28274 async->next = NULL; 28275 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_GET; 28276 async->run = bcmx_async_run; 28277 async->callback = async_callback; 28278 async->cookie = async_cookie; 28279 async->args.vlan_queue_map_get.qmid = qmid; 28280 async->args.vlan_queue_map_get.pkt_pri = pkt_pri; 28281 async->args.vlan_queue_map_get.cfi = cfi; 28282 async->args.vlan_queue_map_get.queue = queue; 28283 async->args.vlan_queue_map_get.color = color; 28284 bcm_async_add((bcm_async_req_t *)async); 28285 } 28286 28287 void 28288 bcmx_vlan_queue_map_set_async( 28289 int qmid, 28290 int pkt_pri, 28291 int cfi, 28292 int queue, 28293 int color, 28294 bcmx_async_cb_t async_callback, 28295 void *async_cookie) 28296 { 28297 bcmx_async_req_t *async; 28298 28299 async = sal_alloc(sizeof(*async), "bcmx_async"); 28300 if (async == NULL) { 28301 if (async_callback != NULL) { 28302 (*async_callback)(async_cookie, BCM_E_MEMORY); 28303 } 28304 return; 28305 } 28306 async->next = NULL; 28307 async->type = BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_SET; 28308 async->run = bcmx_async_run; 28309 async->callback = async_callback; 28310 async->cookie = async_cookie; 28311 async->args.vlan_queue_map_set.qmid = qmid; 28312 async->args.vlan_queue_map_set.pkt_pri = pkt_pri; 28313 async->args.vlan_queue_map_set.cfi = cfi; 28314 async->args.vlan_queue_map_set.queue = queue; 28315 async->args.vlan_queue_map_set.color = color; 28316 bcm_async_add((bcm_async_req_t *)async); 28317 } 28318 28319 void 28320 bcmx_vlan_stat_enable_set_async( 28321 bcm_vlan_t vlan, 28322 int enable, 28323 bcmx_async_cb_t async_callback, 28324 void *async_cookie) 28325 { 28326 bcmx_async_req_t *async; 28327 28328 async = sal_alloc(sizeof(*async), "bcmx_async"); 28329 if (async == NULL) { 28330 if (async_callback != NULL) { 28331 (*async_callback)(async_cookie, BCM_E_MEMORY); 28332 } 28333 return; 28334 } 28335 async->next = NULL; 28336 async->type = BCMX_ASYNC_ENTRY_VLAN_STAT_ENABLE_SET; 28337 async->run = bcmx_async_run; 28338 async->callback = async_callback; 28339 async->cookie = async_cookie; 28340 async->args.vlan_stat_enable_set.vlan = vlan; 28341 async->args.vlan_stat_enable_set.enable = enable; 28342 bcm_async_add((bcm_async_req_t *)async); 28343 } 28344 28345 void 28346 bcmx_vlan_stat_multi_get_async( 28347 bcm_vlan_t vlan, 28348 bcm_cos_t cos, 28349 int nstat, 28350 bcm_vlan_stat_t * stat_arr, 28351 uint64 * value_arr, 28352 bcmx_async_cb_t async_callback, 28353 void *async_cookie) 28354 { 28355 bcmx_async_req_t *async; 28356 28357 async = sal_alloc(sizeof(*async), "bcmx_async"); 28358 if (async == NULL) { 28359 if (async_callback != NULL) { 28360 (*async_callback)(async_cookie, BCM_E_MEMORY); 28361 } 28362 return; 28363 } 28364 async->next = NULL; 28365 async->type = BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_GET; 28366 async->run = bcmx_async_run; 28367 async->callback = async_callback; 28368 async->cookie = async_cookie; 28369 async->args.vlan_stat_multi_get.vlan = vlan; 28370 async->args.vlan_stat_multi_get.cos = cos; 28371 async->args.vlan_stat_multi_get.nstat = nstat; 28372 async->args.vlan_stat_multi_get.stat_arr = stat_arr; 28373 async->args.vlan_stat_multi_get.value_arr = value_arr; 28374 bcm_async_add((bcm_async_req_t *)async); 28375 } 28376 28377 void 28378 bcmx_vlan_stat_multi_get32_async( 28379 bcm_vlan_t vlan, 28380 bcm_cos_t cos, 28381 int nstat, 28382 bcm_vlan_stat_t * stat_arr, 28383 uint32 * value_arr, 28384 bcmx_async_cb_t async_callback, 28385 void *async_cookie) 28386 { 28387 bcmx_async_req_t *async; 28388 28389 async = sal_alloc(sizeof(*async), "bcmx_async"); 28390 if (async == NULL) { 28391 if (async_callback != NULL) { 28392 (*async_callback)(async_cookie, BCM_E_MEMORY); 28393 } 28394 return; 28395 } 28396 async->next = NULL; 28397 async->type = BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_GET32; 28398 async->run = bcmx_async_run; 28399 async->callback = async_callback; 28400 async->cookie = async_cookie; 28401 async->args.vlan_stat_multi_get32.vlan = vlan; 28402 async->args.vlan_stat_multi_get32.cos = cos; 28403 async->args.vlan_stat_multi_get32.nstat = nstat; 28404 async->args.vlan_stat_multi_get32.stat_arr = stat_arr; 28405 async->args.vlan_stat_multi_get32.value_arr = value_arr; 28406 bcm_async_add((bcm_async_req_t *)async); 28407 } 28408 28409 void 28410 bcmx_vlan_stat_multi_set_async( 28411 bcm_vlan_t vlan, 28412 bcm_cos_t cos, 28413 int nstat, 28414 bcm_vlan_stat_t * stat_arr, 28415 uint64 * value_arr, 28416 bcmx_async_cb_t async_callback, 28417 void *async_cookie) 28418 { 28419 bcmx_async_req_t *async; 28420 28421 async = sal_alloc(sizeof(*async), "bcmx_async"); 28422 if (async == NULL) { 28423 if (async_callback != NULL) { 28424 (*async_callback)(async_cookie, BCM_E_MEMORY); 28425 } 28426 return; 28427 } 28428 async->next = NULL; 28429 async->type = BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_SET; 28430 async->run = bcmx_async_run; 28431 async->callback = async_callback; 28432 async->cookie = async_cookie; 28433 async->args.vlan_stat_multi_set.vlan = vlan; 28434 async->args.vlan_stat_multi_set.cos = cos; 28435 async->args.vlan_stat_multi_set.nstat = nstat; 28436 async->args.vlan_stat_multi_set.stat_arr = stat_arr; 28437 async->args.vlan_stat_multi_set.value_arr = value_arr; 28438 bcm_async_add((bcm_async_req_t *)async); 28439 } 28440 28441 void 28442 bcmx_vlan_stat_multi_set32_async( 28443 bcm_vlan_t vlan, 28444 bcm_cos_t cos, 28445 int nstat, 28446 bcm_vlan_stat_t * stat_arr, 28447 uint32 * value_arr, 28448 bcmx_async_cb_t async_callback, 28449 void *async_cookie) 28450 { 28451 bcmx_async_req_t *async; 28452 28453 async = sal_alloc(sizeof(*async), "bcmx_async"); 28454 if (async == NULL) { 28455 if (async_callback != NULL) { 28456 (*async_callback)(async_cookie, BCM_E_MEMORY); 28457 } 28458 return; 28459 } 28460 async->next = NULL; 28461 async->type = BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_SET32; 28462 async->run = bcmx_async_run; 28463 async->callback = async_callback; 28464 async->cookie = async_cookie; 28465 async->args.vlan_stat_multi_set32.vlan = vlan; 28466 async->args.vlan_stat_multi_set32.cos = cos; 28467 async->args.vlan_stat_multi_set32.nstat = nstat; 28468 async->args.vlan_stat_multi_set32.stat_arr = stat_arr; 28469 async->args.vlan_stat_multi_set32.value_arr = value_arr; 28470 bcm_async_add((bcm_async_req_t *)async); 28471 } 28472 28473 void 28474 bcmx_vlan_stg_get_async( 28475 bcm_vlan_t vid, 28476 bcm_stg_t * stg_ptr, 28477 bcmx_async_cb_t async_callback, 28478 void *async_cookie) 28479 { 28480 bcmx_async_req_t *async; 28481 28482 async = sal_alloc(sizeof(*async), "bcmx_async"); 28483 if (async == NULL) { 28484 if (async_callback != NULL) { 28485 (*async_callback)(async_cookie, BCM_E_MEMORY); 28486 } 28487 return; 28488 } 28489 async->next = NULL; 28490 async->type = BCMX_ASYNC_ENTRY_VLAN_STG_GET; 28491 async->run = bcmx_async_run; 28492 async->callback = async_callback; 28493 async->cookie = async_cookie; 28494 async->args.vlan_stg_get.vid = vid; 28495 async->args.vlan_stg_get.stg_ptr = stg_ptr; 28496 bcm_async_add((bcm_async_req_t *)async); 28497 } 28498 28499 void 28500 bcmx_vlan_stg_set_async( 28501 bcm_vlan_t vid, 28502 bcm_stg_t stg, 28503 bcmx_async_cb_t async_callback, 28504 void *async_cookie) 28505 { 28506 bcmx_async_req_t *async; 28507 28508 async = sal_alloc(sizeof(*async), "bcmx_async"); 28509 if (async == NULL) { 28510 if (async_callback != NULL) { 28511 (*async_callback)(async_cookie, BCM_E_MEMORY); 28512 } 28513 return; 28514 } 28515 async->next = NULL; 28516 async->type = BCMX_ASYNC_ENTRY_VLAN_STG_SET; 28517 async->run = bcmx_async_run; 28518 async->callback = async_callback; 28519 async->cookie = async_cookie; 28520 async->args.vlan_stg_set.vid = vid; 28521 async->args.vlan_stg_set.stg = stg; 28522 bcm_async_add((bcm_async_req_t *)async); 28523 } 28524 28525 void 28526 bcmx_vlan_translate_action_add_async( 28527 bcm_gport_t port, 28528 bcm_vlan_translate_key_t key_type, 28529 bcm_vlan_t outer_vlan, 28530 bcm_vlan_t inner_vlan, 28531 bcm_vlan_action_set_t * action, 28532 bcmx_async_cb_t async_callback, 28533 void *async_cookie) 28534 { 28535 bcmx_async_req_t *async; 28536 28537 async = sal_alloc(sizeof(*async), "bcmx_async"); 28538 if (async == NULL) { 28539 if (async_callback != NULL) { 28540 (*async_callback)(async_cookie, BCM_E_MEMORY); 28541 } 28542 return; 28543 } 28544 async->next = NULL; 28545 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_ADD; 28546 async->run = bcmx_async_run; 28547 async->callback = async_callback; 28548 async->cookie = async_cookie; 28549 async->args.vlan_translate_action_add.port = port; 28550 async->args.vlan_translate_action_add.key_type = key_type; 28551 async->args.vlan_translate_action_add.outer_vlan = outer_vlan; 28552 async->args.vlan_translate_action_add.inner_vlan = inner_vlan; 28553 async->args.vlan_translate_action_add.action = action; 28554 bcm_async_add((bcm_async_req_t *)async); 28555 } 28556 28557 void 28558 bcmx_vlan_translate_action_delete_async( 28559 bcm_gport_t port, 28560 bcm_vlan_translate_key_t key_type, 28561 bcm_vlan_t outer_vlan, 28562 bcm_vlan_t inner_vlan, 28563 bcmx_async_cb_t async_callback, 28564 void *async_cookie) 28565 { 28566 bcmx_async_req_t *async; 28567 28568 async = sal_alloc(sizeof(*async), "bcmx_async"); 28569 if (async == NULL) { 28570 if (async_callback != NULL) { 28571 (*async_callback)(async_cookie, BCM_E_MEMORY); 28572 } 28573 return; 28574 } 28575 async->next = NULL; 28576 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_DELETE; 28577 async->run = bcmx_async_run; 28578 async->callback = async_callback; 28579 async->cookie = async_cookie; 28580 async->args.vlan_translate_action_delete.port = port; 28581 async->args.vlan_translate_action_delete.key_type = key_type; 28582 async->args.vlan_translate_action_delete.outer_vlan = outer_vlan; 28583 async->args.vlan_translate_action_delete.inner_vlan = inner_vlan; 28584 bcm_async_add((bcm_async_req_t *)async); 28585 } 28586 28587 void 28588 bcmx_vlan_translate_action_get_async( 28589 bcm_gport_t port, 28590 bcm_vlan_translate_key_t key_type, 28591 bcm_vlan_t outer_vlan, 28592 bcm_vlan_t inner_vlan, 28593 bcm_vlan_action_set_t * action, 28594 bcmx_async_cb_t async_callback, 28595 void *async_cookie) 28596 { 28597 bcmx_async_req_t *async; 28598 28599 async = sal_alloc(sizeof(*async), "bcmx_async"); 28600 if (async == NULL) { 28601 if (async_callback != NULL) { 28602 (*async_callback)(async_cookie, BCM_E_MEMORY); 28603 } 28604 return; 28605 } 28606 async->next = NULL; 28607 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_GET; 28608 async->run = bcmx_async_run; 28609 async->callback = async_callback; 28610 async->cookie = async_cookie; 28611 async->args.vlan_translate_action_get.port = port; 28612 async->args.vlan_translate_action_get.key_type = key_type; 28613 async->args.vlan_translate_action_get.outer_vlan = outer_vlan; 28614 async->args.vlan_translate_action_get.inner_vlan = inner_vlan; 28615 async->args.vlan_translate_action_get.action = action; 28616 bcm_async_add((bcm_async_req_t *)async); 28617 } 28618 28619 void 28620 bcmx_vlan_translate_action_range_add_async( 28621 bcm_gport_t port, 28622 bcm_vlan_t outer_vlan_low, 28623 bcm_vlan_t outer_vlan_high, 28624 bcm_vlan_t inner_vlan_low, 28625 bcm_vlan_t inner_vlan_high, 28626 bcm_vlan_action_set_t * action, 28627 bcmx_async_cb_t async_callback, 28628 void *async_cookie) 28629 { 28630 bcmx_async_req_t *async; 28631 28632 async = sal_alloc(sizeof(*async), "bcmx_async"); 28633 if (async == NULL) { 28634 if (async_callback != NULL) { 28635 (*async_callback)(async_cookie, BCM_E_MEMORY); 28636 } 28637 return; 28638 } 28639 async->next = NULL; 28640 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_ADD; 28641 async->run = bcmx_async_run; 28642 async->callback = async_callback; 28643 async->cookie = async_cookie; 28644 async->args.vlan_translate_action_range_add.port = port; 28645 async->args.vlan_translate_action_range_add.outer_vlan_low = outer_vlan_low; 28646 async->args.vlan_translate_action_range_add.outer_vlan_high = outer_vlan_high; 28647 async->args.vlan_translate_action_range_add.inner_vlan_low = inner_vlan_low; 28648 async->args.vlan_translate_action_range_add.inner_vlan_high = inner_vlan_high; 28649 async->args.vlan_translate_action_range_add.action = action; 28650 bcm_async_add((bcm_async_req_t *)async); 28651 } 28652 28653 void 28654 bcmx_vlan_translate_action_range_delete_async( 28655 bcm_gport_t port, 28656 bcm_vlan_t outer_vlan_low, 28657 bcm_vlan_t outer_vlan_high, 28658 bcm_vlan_t inner_vlan_low, 28659 bcm_vlan_t inner_vlan_high, 28660 bcmx_async_cb_t async_callback, 28661 void *async_cookie) 28662 { 28663 bcmx_async_req_t *async; 28664 28665 async = sal_alloc(sizeof(*async), "bcmx_async"); 28666 if (async == NULL) { 28667 if (async_callback != NULL) { 28668 (*async_callback)(async_cookie, BCM_E_MEMORY); 28669 } 28670 return; 28671 } 28672 async->next = NULL; 28673 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_DELETE; 28674 async->run = bcmx_async_run; 28675 async->callback = async_callback; 28676 async->cookie = async_cookie; 28677 async->args.vlan_translate_action_range_delete.port = port; 28678 async->args.vlan_translate_action_range_delete.outer_vlan_low = outer_vlan_low; 28679 async->args.vlan_translate_action_range_delete.outer_vlan_high = outer_vlan_high; 28680 async->args.vlan_translate_action_range_delete.inner_vlan_low = inner_vlan_low; 28681 async->args.vlan_translate_action_range_delete.inner_vlan_high = inner_vlan_high; 28682 bcm_async_add((bcm_async_req_t *)async); 28683 } 28684 28685 void 28686 bcmx_vlan_translate_action_range_delete_all_async( 28687 bcmx_async_cb_t async_callback, 28688 void *async_cookie) 28689 { 28690 bcmx_async_req_t *async; 28691 28692 async = sal_alloc(sizeof(*async), "bcmx_async"); 28693 if (async == NULL) { 28694 if (async_callback != NULL) { 28695 (*async_callback)(async_cookie, BCM_E_MEMORY); 28696 } 28697 return; 28698 } 28699 async->next = NULL; 28700 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_DELETE_ALL; 28701 async->run = bcmx_async_run; 28702 async->callback = async_callback; 28703 async->cookie = async_cookie; 28704 bcm_async_add((bcm_async_req_t *)async); 28705 } 28706 28707 void 28708 bcmx_vlan_translate_action_range_get_async( 28709 bcm_gport_t port, 28710 bcm_vlan_t outer_vlan_low, 28711 bcm_vlan_t outer_vlan_high, 28712 bcm_vlan_t inner_vlan_low, 28713 bcm_vlan_t inner_vlan_high, 28714 bcm_vlan_action_set_t * action, 28715 bcmx_async_cb_t async_callback, 28716 void *async_cookie) 28717 { 28718 bcmx_async_req_t *async; 28719 28720 async = sal_alloc(sizeof(*async), "bcmx_async"); 28721 if (async == NULL) { 28722 if (async_callback != NULL) { 28723 (*async_callback)(async_cookie, BCM_E_MEMORY); 28724 } 28725 return; 28726 } 28727 async->next = NULL; 28728 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_GET; 28729 async->run = bcmx_async_run; 28730 async->callback = async_callback; 28731 async->cookie = async_cookie; 28732 async->args.vlan_translate_action_range_get.port = port; 28733 async->args.vlan_translate_action_range_get.outer_vlan_low = outer_vlan_low; 28734 async->args.vlan_translate_action_range_get.outer_vlan_high = outer_vlan_high; 28735 async->args.vlan_translate_action_range_get.inner_vlan_low = inner_vlan_low; 28736 async->args.vlan_translate_action_range_get.inner_vlan_high = inner_vlan_high; 28737 async->args.vlan_translate_action_range_get.action = action; 28738 bcm_async_add((bcm_async_req_t *)async); 28739 } 28740 28741 void 28742 bcmx_vlan_translate_add_async( 28743 bcmx_lport_t port, 28744 bcm_vlan_t old_vid, 28745 bcm_vlan_t new_vid, 28746 int prio, 28747 bcmx_async_cb_t async_callback, 28748 void *async_cookie) 28749 { 28750 bcmx_async_req_t *async; 28751 28752 async = sal_alloc(sizeof(*async), "bcmx_async"); 28753 if (async == NULL) { 28754 if (async_callback != NULL) { 28755 (*async_callback)(async_cookie, BCM_E_MEMORY); 28756 } 28757 return; 28758 } 28759 async->next = NULL; 28760 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ADD; 28761 async->run = bcmx_async_run; 28762 async->callback = async_callback; 28763 async->cookie = async_cookie; 28764 async->args.vlan_translate_add.port = port; 28765 async->args.vlan_translate_add.old_vid = old_vid; 28766 async->args.vlan_translate_add.new_vid = new_vid; 28767 async->args.vlan_translate_add.prio = prio; 28768 bcm_async_add((bcm_async_req_t *)async); 28769 } 28770 28771 void 28772 bcmx_vlan_translate_delete_async( 28773 bcmx_lport_t port, 28774 bcm_vlan_t old_vid, 28775 bcmx_async_cb_t async_callback, 28776 void *async_cookie) 28777 { 28778 bcmx_async_req_t *async; 28779 28780 async = sal_alloc(sizeof(*async), "bcmx_async"); 28781 if (async == NULL) { 28782 if (async_callback != NULL) { 28783 (*async_callback)(async_cookie, BCM_E_MEMORY); 28784 } 28785 return; 28786 } 28787 async->next = NULL; 28788 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_DELETE; 28789 async->run = bcmx_async_run; 28790 async->callback = async_callback; 28791 async->cookie = async_cookie; 28792 async->args.vlan_translate_delete.port = port; 28793 async->args.vlan_translate_delete.old_vid = old_vid; 28794 bcm_async_add((bcm_async_req_t *)async); 28795 } 28796 28797 void 28798 bcmx_vlan_translate_delete_all_async( 28799 bcmx_async_cb_t async_callback, 28800 void *async_cookie) 28801 { 28802 bcmx_async_req_t *async; 28803 28804 async = sal_alloc(sizeof(*async), "bcmx_async"); 28805 if (async == NULL) { 28806 if (async_callback != NULL) { 28807 (*async_callback)(async_cookie, BCM_E_MEMORY); 28808 } 28809 return; 28810 } 28811 async->next = NULL; 28812 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_DELETE_ALL; 28813 async->run = bcmx_async_run; 28814 async->callback = async_callback; 28815 async->cookie = async_cookie; 28816 bcm_async_add((bcm_async_req_t *)async); 28817 } 28818 28819 void 28820 bcmx_vlan_translate_egress_action_add_async( 28821 int port_class, 28822 bcm_vlan_t outer_vlan, 28823 bcm_vlan_t inner_vlan, 28824 bcm_vlan_action_set_t * action, 28825 bcmx_async_cb_t async_callback, 28826 void *async_cookie) 28827 { 28828 bcmx_async_req_t *async; 28829 28830 async = sal_alloc(sizeof(*async), "bcmx_async"); 28831 if (async == NULL) { 28832 if (async_callback != NULL) { 28833 (*async_callback)(async_cookie, BCM_E_MEMORY); 28834 } 28835 return; 28836 } 28837 async->next = NULL; 28838 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ACTION_ADD; 28839 async->run = bcmx_async_run; 28840 async->callback = async_callback; 28841 async->cookie = async_cookie; 28842 async->args.vlan_translate_egress_action_add.port_class = port_class; 28843 async->args.vlan_translate_egress_action_add.outer_vlan = outer_vlan; 28844 async->args.vlan_translate_egress_action_add.inner_vlan = inner_vlan; 28845 async->args.vlan_translate_egress_action_add.action = action; 28846 bcm_async_add((bcm_async_req_t *)async); 28847 } 28848 28849 void 28850 bcmx_vlan_translate_egress_action_delete_async( 28851 int port_class, 28852 bcm_vlan_t outer_vlan, 28853 bcm_vlan_t inner_vlan, 28854 bcmx_async_cb_t async_callback, 28855 void *async_cookie) 28856 { 28857 bcmx_async_req_t *async; 28858 28859 async = sal_alloc(sizeof(*async), "bcmx_async"); 28860 if (async == NULL) { 28861 if (async_callback != NULL) { 28862 (*async_callback)(async_cookie, BCM_E_MEMORY); 28863 } 28864 return; 28865 } 28866 async->next = NULL; 28867 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ACTION_DELETE; 28868 async->run = bcmx_async_run; 28869 async->callback = async_callback; 28870 async->cookie = async_cookie; 28871 async->args.vlan_translate_egress_action_delete.port_class = port_class; 28872 async->args.vlan_translate_egress_action_delete.outer_vlan = outer_vlan; 28873 async->args.vlan_translate_egress_action_delete.inner_vlan = inner_vlan; 28874 bcm_async_add((bcm_async_req_t *)async); 28875 } 28876 28877 void 28878 bcmx_vlan_translate_egress_action_get_async( 28879 int port_class, 28880 bcm_vlan_t outer_vlan, 28881 bcm_vlan_t inner_vlan, 28882 bcm_vlan_action_set_t * action, 28883 bcmx_async_cb_t async_callback, 28884 void *async_cookie) 28885 { 28886 bcmx_async_req_t *async; 28887 28888 async = sal_alloc(sizeof(*async), "bcmx_async"); 28889 if (async == NULL) { 28890 if (async_callback != NULL) { 28891 (*async_callback)(async_cookie, BCM_E_MEMORY); 28892 } 28893 return; 28894 } 28895 async->next = NULL; 28896 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ACTION_GET; 28897 async->run = bcmx_async_run; 28898 async->callback = async_callback; 28899 async->cookie = async_cookie; 28900 async->args.vlan_translate_egress_action_get.port_class = port_class; 28901 async->args.vlan_translate_egress_action_get.outer_vlan = outer_vlan; 28902 async->args.vlan_translate_egress_action_get.inner_vlan = inner_vlan; 28903 async->args.vlan_translate_egress_action_get.action = action; 28904 bcm_async_add((bcm_async_req_t *)async); 28905 } 28906 28907 void 28908 bcmx_vlan_translate_egress_add_async( 28909 bcmx_lport_t port, 28910 bcm_vlan_t old_vid, 28911 bcm_vlan_t new_vid, 28912 int prio, 28913 bcmx_async_cb_t async_callback, 28914 void *async_cookie) 28915 { 28916 bcmx_async_req_t *async; 28917 28918 async = sal_alloc(sizeof(*async), "bcmx_async"); 28919 if (async == NULL) { 28920 if (async_callback != NULL) { 28921 (*async_callback)(async_cookie, BCM_E_MEMORY); 28922 } 28923 return; 28924 } 28925 async->next = NULL; 28926 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ADD; 28927 async->run = bcmx_async_run; 28928 async->callback = async_callback; 28929 async->cookie = async_cookie; 28930 async->args.vlan_translate_egress_add.port = port; 28931 async->args.vlan_translate_egress_add.old_vid = old_vid; 28932 async->args.vlan_translate_egress_add.new_vid = new_vid; 28933 async->args.vlan_translate_egress_add.prio = prio; 28934 bcm_async_add((bcm_async_req_t *)async); 28935 } 28936 28937 void 28938 bcmx_vlan_translate_egress_delete_async( 28939 bcmx_lport_t port, 28940 bcm_vlan_t old_vid, 28941 bcmx_async_cb_t async_callback, 28942 void *async_cookie) 28943 { 28944 bcmx_async_req_t *async; 28945 28946 async = sal_alloc(sizeof(*async), "bcmx_async"); 28947 if (async == NULL) { 28948 if (async_callback != NULL) { 28949 (*async_callback)(async_cookie, BCM_E_MEMORY); 28950 } 28951 return; 28952 } 28953 async->next = NULL; 28954 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_DELETE; 28955 async->run = bcmx_async_run; 28956 async->callback = async_callback; 28957 async->cookie = async_cookie; 28958 async->args.vlan_translate_egress_delete.port = port; 28959 async->args.vlan_translate_egress_delete.old_vid = old_vid; 28960 bcm_async_add((bcm_async_req_t *)async); 28961 } 28962 28963 void 28964 bcmx_vlan_translate_egress_delete_all_async( 28965 bcmx_async_cb_t async_callback, 28966 void *async_cookie) 28967 { 28968 bcmx_async_req_t *async; 28969 28970 async = sal_alloc(sizeof(*async), "bcmx_async"); 28971 if (async == NULL) { 28972 if (async_callback != NULL) { 28973 (*async_callback)(async_cookie, BCM_E_MEMORY); 28974 } 28975 return; 28976 } 28977 async->next = NULL; 28978 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_DELETE_ALL; 28979 async->run = bcmx_async_run; 28980 async->callback = async_callback; 28981 async->cookie = async_cookie; 28982 bcm_async_add((bcm_async_req_t *)async); 28983 } 28984 28985 void 28986 bcmx_vlan_translate_egress_get_async( 28987 bcmx_lport_t port, 28988 bcm_vlan_t old_vid, 28989 bcm_vlan_t * new_vid, 28990 int * prio, 28991 bcmx_async_cb_t async_callback, 28992 void *async_cookie) 28993 { 28994 bcmx_async_req_t *async; 28995 28996 async = sal_alloc(sizeof(*async), "bcmx_async"); 28997 if (async == NULL) { 28998 if (async_callback != NULL) { 28999 (*async_callback)(async_cookie, BCM_E_MEMORY); 29000 } 29001 return; 29002 } 29003 async->next = NULL; 29004 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_GET; 29005 async->run = bcmx_async_run; 29006 async->callback = async_callback; 29007 async->cookie = async_cookie; 29008 async->args.vlan_translate_egress_get.port = port; 29009 async->args.vlan_translate_egress_get.old_vid = old_vid; 29010 async->args.vlan_translate_egress_get.new_vid = new_vid; 29011 async->args.vlan_translate_egress_get.prio = prio; 29012 bcm_async_add((bcm_async_req_t *)async); 29013 } 29014 29015 void 29016 bcmx_vlan_translate_egress_stat_enable_set_async( 29017 int port_class, 29018 bcm_vlan_t outer_vlan, 29019 bcm_vlan_t inner_vlan, 29020 int enable, 29021 bcmx_async_cb_t async_callback, 29022 void *async_cookie) 29023 { 29024 bcmx_async_req_t *async; 29025 29026 async = sal_alloc(sizeof(*async), "bcmx_async"); 29027 if (async == NULL) { 29028 if (async_callback != NULL) { 29029 (*async_callback)(async_cookie, BCM_E_MEMORY); 29030 } 29031 return; 29032 } 29033 async->next = NULL; 29034 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_ENABLE_SET; 29035 async->run = bcmx_async_run; 29036 async->callback = async_callback; 29037 async->cookie = async_cookie; 29038 async->args.vlan_translate_egress_stat_enable_set.port_class = port_class; 29039 async->args.vlan_translate_egress_stat_enable_set.outer_vlan = outer_vlan; 29040 async->args.vlan_translate_egress_stat_enable_set.inner_vlan = inner_vlan; 29041 async->args.vlan_translate_egress_stat_enable_set.enable = enable; 29042 bcm_async_add((bcm_async_req_t *)async); 29043 } 29044 29045 void 29046 bcmx_vlan_translate_egress_stat_get_async( 29047 int port_class, 29048 bcm_vlan_t outer_vlan, 29049 bcm_vlan_t inner_vlan, 29050 bcm_vlan_stat_t stat, 29051 uint64 * val, 29052 bcmx_async_cb_t async_callback, 29053 void *async_cookie) 29054 { 29055 bcmx_async_req_t *async; 29056 29057 async = sal_alloc(sizeof(*async), "bcmx_async"); 29058 if (async == NULL) { 29059 if (async_callback != NULL) { 29060 (*async_callback)(async_cookie, BCM_E_MEMORY); 29061 } 29062 return; 29063 } 29064 async->next = NULL; 29065 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_GET; 29066 async->run = bcmx_async_run; 29067 async->callback = async_callback; 29068 async->cookie = async_cookie; 29069 async->args.vlan_translate_egress_stat_get.port_class = port_class; 29070 async->args.vlan_translate_egress_stat_get.outer_vlan = outer_vlan; 29071 async->args.vlan_translate_egress_stat_get.inner_vlan = inner_vlan; 29072 async->args.vlan_translate_egress_stat_get.stat = stat; 29073 async->args.vlan_translate_egress_stat_get.val = val; 29074 bcm_async_add((bcm_async_req_t *)async); 29075 } 29076 29077 void 29078 bcmx_vlan_translate_egress_stat_get32_async( 29079 int port_class, 29080 bcm_vlan_t outer_vlan, 29081 bcm_vlan_t inner_vlan, 29082 bcm_vlan_stat_t stat, 29083 uint32 * val, 29084 bcmx_async_cb_t async_callback, 29085 void *async_cookie) 29086 { 29087 bcmx_async_req_t *async; 29088 29089 async = sal_alloc(sizeof(*async), "bcmx_async"); 29090 if (async == NULL) { 29091 if (async_callback != NULL) { 29092 (*async_callback)(async_cookie, BCM_E_MEMORY); 29093 } 29094 return; 29095 } 29096 async->next = NULL; 29097 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_GET32; 29098 async->run = bcmx_async_run; 29099 async->callback = async_callback; 29100 async->cookie = async_cookie; 29101 async->args.vlan_translate_egress_stat_get32.port_class = port_class; 29102 async->args.vlan_translate_egress_stat_get32.outer_vlan = outer_vlan; 29103 async->args.vlan_translate_egress_stat_get32.inner_vlan = inner_vlan; 29104 async->args.vlan_translate_egress_stat_get32.stat = stat; 29105 async->args.vlan_translate_egress_stat_get32.val = val; 29106 bcm_async_add((bcm_async_req_t *)async); 29107 } 29108 29109 void 29110 bcmx_vlan_translate_egress_stat_multi_get_async( 29111 int port_class, 29112 bcm_vlan_t outer_vlan, 29113 bcm_vlan_t inner_vlan, 29114 int nstat, 29115 bcm_vlan_stat_t * stat_arr, 29116 uint64 * value_arr, 29117 bcmx_async_cb_t async_callback, 29118 void *async_cookie) 29119 { 29120 bcmx_async_req_t *async; 29121 29122 async = sal_alloc(sizeof(*async), "bcmx_async"); 29123 if (async == NULL) { 29124 if (async_callback != NULL) { 29125 (*async_callback)(async_cookie, BCM_E_MEMORY); 29126 } 29127 return; 29128 } 29129 async->next = NULL; 29130 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_GET; 29131 async->run = bcmx_async_run; 29132 async->callback = async_callback; 29133 async->cookie = async_cookie; 29134 async->args.vlan_translate_egress_stat_multi_get.port_class = port_class; 29135 async->args.vlan_translate_egress_stat_multi_get.outer_vlan = outer_vlan; 29136 async->args.vlan_translate_egress_stat_multi_get.inner_vlan = inner_vlan; 29137 async->args.vlan_translate_egress_stat_multi_get.nstat = nstat; 29138 async->args.vlan_translate_egress_stat_multi_get.stat_arr = stat_arr; 29139 async->args.vlan_translate_egress_stat_multi_get.value_arr = value_arr; 29140 bcm_async_add((bcm_async_req_t *)async); 29141 } 29142 29143 void 29144 bcmx_vlan_translate_egress_stat_multi_get32_async( 29145 int port_class, 29146 bcm_vlan_t outer_vlan, 29147 bcm_vlan_t inner_vlan, 29148 int nstat, 29149 bcm_vlan_stat_t * stat_arr, 29150 uint32 * value_arr, 29151 bcmx_async_cb_t async_callback, 29152 void *async_cookie) 29153 { 29154 bcmx_async_req_t *async; 29155 29156 async = sal_alloc(sizeof(*async), "bcmx_async"); 29157 if (async == NULL) { 29158 if (async_callback != NULL) { 29159 (*async_callback)(async_cookie, BCM_E_MEMORY); 29160 } 29161 return; 29162 } 29163 async->next = NULL; 29164 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_GET32; 29165 async->run = bcmx_async_run; 29166 async->callback = async_callback; 29167 async->cookie = async_cookie; 29168 async->args.vlan_translate_egress_stat_multi_get32.port_class = port_class; 29169 async->args.vlan_translate_egress_stat_multi_get32.outer_vlan = outer_vlan; 29170 async->args.vlan_translate_egress_stat_multi_get32.inner_vlan = inner_vlan; 29171 async->args.vlan_translate_egress_stat_multi_get32.nstat = nstat; 29172 async->args.vlan_translate_egress_stat_multi_get32.stat_arr = stat_arr; 29173 async->args.vlan_translate_egress_stat_multi_get32.value_arr = value_arr; 29174 bcm_async_add((bcm_async_req_t *)async); 29175 } 29176 29177 void 29178 bcmx_vlan_translate_egress_stat_multi_set_async( 29179 int port_class, 29180 bcm_vlan_t outer_vlan, 29181 bcm_vlan_t inner_vlan, 29182 int nstat, 29183 bcm_vlan_stat_t * stat_arr, 29184 uint64 * value_arr, 29185 bcmx_async_cb_t async_callback, 29186 void *async_cookie) 29187 { 29188 bcmx_async_req_t *async; 29189 29190 async = sal_alloc(sizeof(*async), "bcmx_async"); 29191 if (async == NULL) { 29192 if (async_callback != NULL) { 29193 (*async_callback)(async_cookie, BCM_E_MEMORY); 29194 } 29195 return; 29196 } 29197 async->next = NULL; 29198 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_SET; 29199 async->run = bcmx_async_run; 29200 async->callback = async_callback; 29201 async->cookie = async_cookie; 29202 async->args.vlan_translate_egress_stat_multi_set.port_class = port_class; 29203 async->args.vlan_translate_egress_stat_multi_set.outer_vlan = outer_vlan; 29204 async->args.vlan_translate_egress_stat_multi_set.inner_vlan = inner_vlan; 29205 async->args.vlan_translate_egress_stat_multi_set.nstat = nstat; 29206 async->args.vlan_translate_egress_stat_multi_set.stat_arr = stat_arr; 29207 async->args.vlan_translate_egress_stat_multi_set.value_arr = value_arr; 29208 bcm_async_add((bcm_async_req_t *)async); 29209 } 29210 29211 void 29212 bcmx_vlan_translate_egress_stat_multi_set32_async( 29213 int port_class, 29214 bcm_vlan_t outer_vlan, 29215 bcm_vlan_t inner_vlan, 29216 int nstat, 29217 bcm_vlan_stat_t * stat_arr, 29218 uint32 * value_arr, 29219 bcmx_async_cb_t async_callback, 29220 void *async_cookie) 29221 { 29222 bcmx_async_req_t *async; 29223 29224 async = sal_alloc(sizeof(*async), "bcmx_async"); 29225 if (async == NULL) { 29226 if (async_callback != NULL) { 29227 (*async_callback)(async_cookie, BCM_E_MEMORY); 29228 } 29229 return; 29230 } 29231 async->next = NULL; 29232 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_SET32; 29233 async->run = bcmx_async_run; 29234 async->callback = async_callback; 29235 async->cookie = async_cookie; 29236 async->args.vlan_translate_egress_stat_multi_set32.port_class = port_class; 29237 async->args.vlan_translate_egress_stat_multi_set32.outer_vlan = outer_vlan; 29238 async->args.vlan_translate_egress_stat_multi_set32.inner_vlan = inner_vlan; 29239 async->args.vlan_translate_egress_stat_multi_set32.nstat = nstat; 29240 async->args.vlan_translate_egress_stat_multi_set32.stat_arr = stat_arr; 29241 async->args.vlan_translate_egress_stat_multi_set32.value_arr = value_arr; 29242 bcm_async_add((bcm_async_req_t *)async); 29243 } 29244 29245 void 29246 bcmx_vlan_translate_egress_stat_set_async( 29247 int port_class, 29248 bcm_vlan_t outer_vlan, 29249 bcm_vlan_t inner_vlan, 29250 bcm_vlan_stat_t stat, 29251 uint64 val, 29252 bcmx_async_cb_t async_callback, 29253 void *async_cookie) 29254 { 29255 bcmx_async_req_t *async; 29256 29257 async = sal_alloc(sizeof(*async), "bcmx_async"); 29258 if (async == NULL) { 29259 if (async_callback != NULL) { 29260 (*async_callback)(async_cookie, BCM_E_MEMORY); 29261 } 29262 return; 29263 } 29264 async->next = NULL; 29265 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_SET; 29266 async->run = bcmx_async_run; 29267 async->callback = async_callback; 29268 async->cookie = async_cookie; 29269 async->args.vlan_translate_egress_stat_set.port_class = port_class; 29270 async->args.vlan_translate_egress_stat_set.outer_vlan = outer_vlan; 29271 async->args.vlan_translate_egress_stat_set.inner_vlan = inner_vlan; 29272 async->args.vlan_translate_egress_stat_set.stat = stat; 29273 async->args.vlan_translate_egress_stat_set.val = val; 29274 bcm_async_add((bcm_async_req_t *)async); 29275 } 29276 29277 void 29278 bcmx_vlan_translate_egress_stat_set32_async( 29279 int port_class, 29280 bcm_vlan_t outer_vlan, 29281 bcm_vlan_t inner_vlan, 29282 bcm_vlan_stat_t stat, 29283 uint32 val, 29284 bcmx_async_cb_t async_callback, 29285 void *async_cookie) 29286 { 29287 bcmx_async_req_t *async; 29288 29289 async = sal_alloc(sizeof(*async), "bcmx_async"); 29290 if (async == NULL) { 29291 if (async_callback != NULL) { 29292 (*async_callback)(async_cookie, BCM_E_MEMORY); 29293 } 29294 return; 29295 } 29296 async->next = NULL; 29297 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_SET32; 29298 async->run = bcmx_async_run; 29299 async->callback = async_callback; 29300 async->cookie = async_cookie; 29301 async->args.vlan_translate_egress_stat_set32.port_class = port_class; 29302 async->args.vlan_translate_egress_stat_set32.outer_vlan = outer_vlan; 29303 async->args.vlan_translate_egress_stat_set32.inner_vlan = inner_vlan; 29304 async->args.vlan_translate_egress_stat_set32.stat = stat; 29305 async->args.vlan_translate_egress_stat_set32.val = val; 29306 bcm_async_add((bcm_async_req_t *)async); 29307 } 29308 29309 void 29310 bcmx_vlan_translate_get_async( 29311 bcmx_lport_t port, 29312 bcm_vlan_t old_vid, 29313 bcm_vlan_t * new_vid, 29314 int * prio, 29315 bcmx_async_cb_t async_callback, 29316 void *async_cookie) 29317 { 29318 bcmx_async_req_t *async; 29319 29320 async = sal_alloc(sizeof(*async), "bcmx_async"); 29321 if (async == NULL) { 29322 if (async_callback != NULL) { 29323 (*async_callback)(async_cookie, BCM_E_MEMORY); 29324 } 29325 return; 29326 } 29327 async->next = NULL; 29328 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_GET; 29329 async->run = bcmx_async_run; 29330 async->callback = async_callback; 29331 async->cookie = async_cookie; 29332 async->args.vlan_translate_get.port = port; 29333 async->args.vlan_translate_get.old_vid = old_vid; 29334 async->args.vlan_translate_get.new_vid = new_vid; 29335 async->args.vlan_translate_get.prio = prio; 29336 bcm_async_add((bcm_async_req_t *)async); 29337 } 29338 29339 void 29340 bcmx_vlan_translate_range_add_async( 29341 bcmx_lport_t port, 29342 bcm_vlan_t old_vid_low, 29343 bcm_vlan_t old_vid_high, 29344 bcm_vlan_t new_vid, 29345 int int_prio, 29346 bcmx_async_cb_t async_callback, 29347 void *async_cookie) 29348 { 29349 bcmx_async_req_t *async; 29350 29351 async = sal_alloc(sizeof(*async), "bcmx_async"); 29352 if (async == NULL) { 29353 if (async_callback != NULL) { 29354 (*async_callback)(async_cookie, BCM_E_MEMORY); 29355 } 29356 return; 29357 } 29358 async->next = NULL; 29359 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_ADD; 29360 async->run = bcmx_async_run; 29361 async->callback = async_callback; 29362 async->cookie = async_cookie; 29363 async->args.vlan_translate_range_add.port = port; 29364 async->args.vlan_translate_range_add.old_vid_low = old_vid_low; 29365 async->args.vlan_translate_range_add.old_vid_high = old_vid_high; 29366 async->args.vlan_translate_range_add.new_vid = new_vid; 29367 async->args.vlan_translate_range_add.int_prio = int_prio; 29368 bcm_async_add((bcm_async_req_t *)async); 29369 } 29370 29371 void 29372 bcmx_vlan_translate_range_delete_async( 29373 bcmx_lport_t port, 29374 bcm_vlan_t old_vid_low, 29375 bcm_vlan_t old_vid_high, 29376 bcmx_async_cb_t async_callback, 29377 void *async_cookie) 29378 { 29379 bcmx_async_req_t *async; 29380 29381 async = sal_alloc(sizeof(*async), "bcmx_async"); 29382 if (async == NULL) { 29383 if (async_callback != NULL) { 29384 (*async_callback)(async_cookie, BCM_E_MEMORY); 29385 } 29386 return; 29387 } 29388 async->next = NULL; 29389 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_DELETE; 29390 async->run = bcmx_async_run; 29391 async->callback = async_callback; 29392 async->cookie = async_cookie; 29393 async->args.vlan_translate_range_delete.port = port; 29394 async->args.vlan_translate_range_delete.old_vid_low = old_vid_low; 29395 async->args.vlan_translate_range_delete.old_vid_high = old_vid_high; 29396 bcm_async_add((bcm_async_req_t *)async); 29397 } 29398 29399 void 29400 bcmx_vlan_translate_range_delete_all_async( 29401 bcmx_async_cb_t async_callback, 29402 void *async_cookie) 29403 { 29404 bcmx_async_req_t *async; 29405 29406 async = sal_alloc(sizeof(*async), "bcmx_async"); 29407 if (async == NULL) { 29408 if (async_callback != NULL) { 29409 (*async_callback)(async_cookie, BCM_E_MEMORY); 29410 } 29411 return; 29412 } 29413 async->next = NULL; 29414 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_DELETE_ALL; 29415 async->run = bcmx_async_run; 29416 async->callback = async_callback; 29417 async->cookie = async_cookie; 29418 bcm_async_add((bcm_async_req_t *)async); 29419 } 29420 29421 void 29422 bcmx_vlan_translate_range_get_async( 29423 bcmx_lport_t port, 29424 bcm_vlan_t old_vid_low, 29425 bcm_vlan_t old_vid_high, 29426 bcm_vlan_t * new_vid, 29427 int * int_prio, 29428 bcmx_async_cb_t async_callback, 29429 void *async_cookie) 29430 { 29431 bcmx_async_req_t *async; 29432 29433 async = sal_alloc(sizeof(*async), "bcmx_async"); 29434 if (async == NULL) { 29435 if (async_callback != NULL) { 29436 (*async_callback)(async_cookie, BCM_E_MEMORY); 29437 } 29438 return; 29439 } 29440 async->next = NULL; 29441 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_GET; 29442 async->run = bcmx_async_run; 29443 async->callback = async_callback; 29444 async->cookie = async_cookie; 29445 async->args.vlan_translate_range_get.port = port; 29446 async->args.vlan_translate_range_get.old_vid_low = old_vid_low; 29447 async->args.vlan_translate_range_get.old_vid_high = old_vid_high; 29448 async->args.vlan_translate_range_get.new_vid = new_vid; 29449 async->args.vlan_translate_range_get.int_prio = int_prio; 29450 bcm_async_add((bcm_async_req_t *)async); 29451 } 29452 29453 void 29454 bcmx_vlan_translate_stat_enable_set_async( 29455 bcm_gport_t port, 29456 bcm_vlan_translate_key_t key_type, 29457 bcm_vlan_t outer_vlan, 29458 bcm_vlan_t inner_vlan, 29459 int enable, 29460 bcmx_async_cb_t async_callback, 29461 void *async_cookie) 29462 { 29463 bcmx_async_req_t *async; 29464 29465 async = sal_alloc(sizeof(*async), "bcmx_async"); 29466 if (async == NULL) { 29467 if (async_callback != NULL) { 29468 (*async_callback)(async_cookie, BCM_E_MEMORY); 29469 } 29470 return; 29471 } 29472 async->next = NULL; 29473 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_ENABLE_SET; 29474 async->run = bcmx_async_run; 29475 async->callback = async_callback; 29476 async->cookie = async_cookie; 29477 async->args.vlan_translate_stat_enable_set.port = port; 29478 async->args.vlan_translate_stat_enable_set.key_type = key_type; 29479 async->args.vlan_translate_stat_enable_set.outer_vlan = outer_vlan; 29480 async->args.vlan_translate_stat_enable_set.inner_vlan = inner_vlan; 29481 async->args.vlan_translate_stat_enable_set.enable = enable; 29482 bcm_async_add((bcm_async_req_t *)async); 29483 } 29484 29485 void 29486 bcmx_vlan_translate_stat_get_async( 29487 bcm_gport_t port, 29488 bcm_vlan_translate_key_t key_type, 29489 bcm_vlan_t outer_vlan, 29490 bcm_vlan_t inner_vlan, 29491 bcm_vlan_stat_t stat, 29492 uint64 * val, 29493 bcmx_async_cb_t async_callback, 29494 void *async_cookie) 29495 { 29496 bcmx_async_req_t *async; 29497 29498 async = sal_alloc(sizeof(*async), "bcmx_async"); 29499 if (async == NULL) { 29500 if (async_callback != NULL) { 29501 (*async_callback)(async_cookie, BCM_E_MEMORY); 29502 } 29503 return; 29504 } 29505 async->next = NULL; 29506 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_GET; 29507 async->run = bcmx_async_run; 29508 async->callback = async_callback; 29509 async->cookie = async_cookie; 29510 async->args.vlan_translate_stat_get.port = port; 29511 async->args.vlan_translate_stat_get.key_type = key_type; 29512 async->args.vlan_translate_stat_get.outer_vlan = outer_vlan; 29513 async->args.vlan_translate_stat_get.inner_vlan = inner_vlan; 29514 async->args.vlan_translate_stat_get.stat = stat; 29515 async->args.vlan_translate_stat_get.val = val; 29516 bcm_async_add((bcm_async_req_t *)async); 29517 } 29518 29519 void 29520 bcmx_vlan_translate_stat_get32_async( 29521 bcm_gport_t port, 29522 bcm_vlan_translate_key_t key_type, 29523 bcm_vlan_t outer_vlan, 29524 bcm_vlan_t inner_vlan, 29525 bcm_vlan_stat_t stat, 29526 uint32 * val, 29527 bcmx_async_cb_t async_callback, 29528 void *async_cookie) 29529 { 29530 bcmx_async_req_t *async; 29531 29532 async = sal_alloc(sizeof(*async), "bcmx_async"); 29533 if (async == NULL) { 29534 if (async_callback != NULL) { 29535 (*async_callback)(async_cookie, BCM_E_MEMORY); 29536 } 29537 return; 29538 } 29539 async->next = NULL; 29540 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_GET32; 29541 async->run = bcmx_async_run; 29542 async->callback = async_callback; 29543 async->cookie = async_cookie; 29544 async->args.vlan_translate_stat_get32.port = port; 29545 async->args.vlan_translate_stat_get32.key_type = key_type; 29546 async->args.vlan_translate_stat_get32.outer_vlan = outer_vlan; 29547 async->args.vlan_translate_stat_get32.inner_vlan = inner_vlan; 29548 async->args.vlan_translate_stat_get32.stat = stat; 29549 async->args.vlan_translate_stat_get32.val = val; 29550 bcm_async_add((bcm_async_req_t *)async); 29551 } 29552 29553 void 29554 bcmx_vlan_translate_stat_multi_get_async( 29555 bcm_gport_t port, 29556 bcm_vlan_translate_key_t key_type, 29557 bcm_vlan_t outer_vlan, 29558 bcm_vlan_t inner_vlan, 29559 int nstat, 29560 bcm_vlan_stat_t * stat_arr, 29561 uint64 * value_arr, 29562 bcmx_async_cb_t async_callback, 29563 void *async_cookie) 29564 { 29565 bcmx_async_req_t *async; 29566 29567 async = sal_alloc(sizeof(*async), "bcmx_async"); 29568 if (async == NULL) { 29569 if (async_callback != NULL) { 29570 (*async_callback)(async_cookie, BCM_E_MEMORY); 29571 } 29572 return; 29573 } 29574 async->next = NULL; 29575 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_GET; 29576 async->run = bcmx_async_run; 29577 async->callback = async_callback; 29578 async->cookie = async_cookie; 29579 async->args.vlan_translate_stat_multi_get.port = port; 29580 async->args.vlan_translate_stat_multi_get.key_type = key_type; 29581 async->args.vlan_translate_stat_multi_get.outer_vlan = outer_vlan; 29582 async->args.vlan_translate_stat_multi_get.inner_vlan = inner_vlan; 29583 async->args.vlan_translate_stat_multi_get.nstat = nstat; 29584 async->args.vlan_translate_stat_multi_get.stat_arr = stat_arr; 29585 async->args.vlan_translate_stat_multi_get.value_arr = value_arr; 29586 bcm_async_add((bcm_async_req_t *)async); 29587 } 29588 29589 void 29590 bcmx_vlan_translate_stat_multi_get32_async( 29591 bcm_gport_t port, 29592 bcm_vlan_translate_key_t key_type, 29593 bcm_vlan_t outer_vlan, 29594 bcm_vlan_t inner_vlan, 29595 int nstat, 29596 bcm_vlan_stat_t * stat_arr, 29597 uint32 * value_arr, 29598 bcmx_async_cb_t async_callback, 29599 void *async_cookie) 29600 { 29601 bcmx_async_req_t *async; 29602 29603 async = sal_alloc(sizeof(*async), "bcmx_async"); 29604 if (async == NULL) { 29605 if (async_callback != NULL) { 29606 (*async_callback)(async_cookie, BCM_E_MEMORY); 29607 } 29608 return; 29609 } 29610 async->next = NULL; 29611 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_GET32; 29612 async->run = bcmx_async_run; 29613 async->callback = async_callback; 29614 async->cookie = async_cookie; 29615 async->args.vlan_translate_stat_multi_get32.port = port; 29616 async->args.vlan_translate_stat_multi_get32.key_type = key_type; 29617 async->args.vlan_translate_stat_multi_get32.outer_vlan = outer_vlan; 29618 async->args.vlan_translate_stat_multi_get32.inner_vlan = inner_vlan; 29619 async->args.vlan_translate_stat_multi_get32.nstat = nstat; 29620 async->args.vlan_translate_stat_multi_get32.stat_arr = stat_arr; 29621 async->args.vlan_translate_stat_multi_get32.value_arr = value_arr; 29622 bcm_async_add((bcm_async_req_t *)async); 29623 } 29624 29625 void 29626 bcmx_vlan_translate_stat_multi_set_async( 29627 bcm_gport_t port, 29628 bcm_vlan_translate_key_t key_type, 29629 bcm_vlan_t outer_vlan, 29630 bcm_vlan_t inner_vlan, 29631 int nstat, 29632 bcm_vlan_stat_t * stat_arr, 29633 uint64 * value_arr, 29634 bcmx_async_cb_t async_callback, 29635 void *async_cookie) 29636 { 29637 bcmx_async_req_t *async; 29638 29639 async = sal_alloc(sizeof(*async), "bcmx_async"); 29640 if (async == NULL) { 29641 if (async_callback != NULL) { 29642 (*async_callback)(async_cookie, BCM_E_MEMORY); 29643 } 29644 return; 29645 } 29646 async->next = NULL; 29647 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_SET; 29648 async->run = bcmx_async_run; 29649 async->callback = async_callback; 29650 async->cookie = async_cookie; 29651 async->args.vlan_translate_stat_multi_set.port = port; 29652 async->args.vlan_translate_stat_multi_set.key_type = key_type; 29653 async->args.vlan_translate_stat_multi_set.outer_vlan = outer_vlan; 29654 async->args.vlan_translate_stat_multi_set.inner_vlan = inner_vlan; 29655 async->args.vlan_translate_stat_multi_set.nstat = nstat; 29656 async->args.vlan_translate_stat_multi_set.stat_arr = stat_arr; 29657 async->args.vlan_translate_stat_multi_set.value_arr = value_arr; 29658 bcm_async_add((bcm_async_req_t *)async); 29659 } 29660 29661 void 29662 bcmx_vlan_translate_stat_multi_set32_async( 29663 bcm_gport_t port, 29664 bcm_vlan_translate_key_t key_type, 29665 bcm_vlan_t outer_vlan, 29666 bcm_vlan_t inner_vlan, 29667 int nstat, 29668 bcm_vlan_stat_t * stat_arr, 29669 uint32 * value_arr, 29670 bcmx_async_cb_t async_callback, 29671 void *async_cookie) 29672 { 29673 bcmx_async_req_t *async; 29674 29675 async = sal_alloc(sizeof(*async), "bcmx_async"); 29676 if (async == NULL) { 29677 if (async_callback != NULL) { 29678 (*async_callback)(async_cookie, BCM_E_MEMORY); 29679 } 29680 return; 29681 } 29682 async->next = NULL; 29683 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_SET32; 29684 async->run = bcmx_async_run; 29685 async->callback = async_callback; 29686 async->cookie = async_cookie; 29687 async->args.vlan_translate_stat_multi_set32.port = port; 29688 async->args.vlan_translate_stat_multi_set32.key_type = key_type; 29689 async->args.vlan_translate_stat_multi_set32.outer_vlan = outer_vlan; 29690 async->args.vlan_translate_stat_multi_set32.inner_vlan = inner_vlan; 29691 async->args.vlan_translate_stat_multi_set32.nstat = nstat; 29692 async->args.vlan_translate_stat_multi_set32.stat_arr = stat_arr; 29693 async->args.vlan_translate_stat_multi_set32.value_arr = value_arr; 29694 bcm_async_add((bcm_async_req_t *)async); 29695 } 29696 29697 void 29698 bcmx_vlan_translate_stat_set_async( 29699 bcm_gport_t port, 29700 bcm_vlan_translate_key_t key_type, 29701 bcm_vlan_t outer_vlan, 29702 bcm_vlan_t inner_vlan, 29703 bcm_vlan_stat_t stat, 29704 uint64 val, 29705 bcmx_async_cb_t async_callback, 29706 void *async_cookie) 29707 { 29708 bcmx_async_req_t *async; 29709 29710 async = sal_alloc(sizeof(*async), "bcmx_async"); 29711 if (async == NULL) { 29712 if (async_callback != NULL) { 29713 (*async_callback)(async_cookie, BCM_E_MEMORY); 29714 } 29715 return; 29716 } 29717 async->next = NULL; 29718 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_SET; 29719 async->run = bcmx_async_run; 29720 async->callback = async_callback; 29721 async->cookie = async_cookie; 29722 async->args.vlan_translate_stat_set.port = port; 29723 async->args.vlan_translate_stat_set.key_type = key_type; 29724 async->args.vlan_translate_stat_set.outer_vlan = outer_vlan; 29725 async->args.vlan_translate_stat_set.inner_vlan = inner_vlan; 29726 async->args.vlan_translate_stat_set.stat = stat; 29727 async->args.vlan_translate_stat_set.val = val; 29728 bcm_async_add((bcm_async_req_t *)async); 29729 } 29730 29731 void 29732 bcmx_vlan_translate_stat_set32_async( 29733 bcm_gport_t port, 29734 bcm_vlan_translate_key_t key_type, 29735 bcm_vlan_t outer_vlan, 29736 bcm_vlan_t inner_vlan, 29737 bcm_vlan_stat_t stat, 29738 uint32 val, 29739 bcmx_async_cb_t async_callback, 29740 void *async_cookie) 29741 { 29742 bcmx_async_req_t *async; 29743 29744 async = sal_alloc(sizeof(*async), "bcmx_async"); 29745 if (async == NULL) { 29746 if (async_callback != NULL) { 29747 (*async_callback)(async_cookie, BCM_E_MEMORY); 29748 } 29749 return; 29750 } 29751 async->next = NULL; 29752 async->type = BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_SET32; 29753 async->run = bcmx_async_run; 29754 async->callback = async_callback; 29755 async->cookie = async_cookie; 29756 async->args.vlan_translate_stat_set32.port = port; 29757 async->args.vlan_translate_stat_set32.key_type = key_type; 29758 async->args.vlan_translate_stat_set32.outer_vlan = outer_vlan; 29759 async->args.vlan_translate_stat_set32.inner_vlan = inner_vlan; 29760 async->args.vlan_translate_stat_set32.stat = stat; 29761 async->args.vlan_translate_stat_set32.val = val; 29762 bcm_async_add((bcm_async_req_t *)async); 29763 } 29764 29765 void 29766 bcmx_vlan_vector_flags_set_async( 29767 bcm_vlan_vector_t vlan_vector, 29768 uint32 flags_mask, 29769 uint32 flags_value, 29770 bcmx_async_cb_t async_callback, 29771 void *async_cookie) 29772 { 29773 bcmx_async_req_t *async; 29774 29775 async = sal_alloc(sizeof(*async), "bcmx_async"); 29776 if (async == NULL) { 29777 if (async_callback != NULL) { 29778 (*async_callback)(async_cookie, BCM_E_MEMORY); 29779 } 29780 return; 29781 } 29782 async->next = NULL; 29783 async->type = BCMX_ASYNC_ENTRY_VLAN_VECTOR_FLAGS_SET; 29784 async->run = bcmx_async_run; 29785 async->callback = async_callback; 29786 async->cookie = async_cookie; 29787 async->args.vlan_vector_flags_set.vlan_vector = (uint32 *)vlan_vector; 29788 async->args.vlan_vector_flags_set.flags_mask = flags_mask; 29789 async->args.vlan_vector_flags_set.flags_value = flags_value; 29790 bcm_async_add((bcm_async_req_t *)async); 29791 } 29792 29793 #ifdef INCLUDE_L3 29794 29795 void 29796 bcmx_wlan_client_add_async( 29797 bcmx_wlan_client_t * info, 29798 bcmx_async_cb_t async_callback, 29799 void *async_cookie) 29800 { 29801 bcmx_async_req_t *async; 29802 29803 async = sal_alloc(sizeof(*async), "bcmx_async"); 29804 if (async == NULL) { 29805 if (async_callback != NULL) { 29806 (*async_callback)(async_cookie, BCM_E_MEMORY); 29807 } 29808 return; 29809 } 29810 async->next = NULL; 29811 async->type = BCMX_ASYNC_ENTRY_WLAN_CLIENT_ADD; 29812 async->run = bcmx_async_run; 29813 async->callback = async_callback; 29814 async->cookie = async_cookie; 29815 async->args.wlan_client_add.info = info; 29816 bcm_async_add((bcm_async_req_t *)async); 29817 } 29818 29819 void 29820 bcmx_wlan_client_delete_async( 29821 bcm_mac_t mac, 29822 bcmx_async_cb_t async_callback, 29823 void *async_cookie) 29824 { 29825 bcmx_async_req_t *async; 29826 29827 async = sal_alloc(sizeof(*async), "bcmx_async"); 29828 if (async == NULL) { 29829 if (async_callback != NULL) { 29830 (*async_callback)(async_cookie, BCM_E_MEMORY); 29831 } 29832 return; 29833 } 29834 async->next = NULL; 29835 async->type = BCMX_ASYNC_ENTRY_WLAN_CLIENT_DELETE; 29836 async->run = bcmx_async_run; 29837 async->callback = async_callback; 29838 async->cookie = async_cookie; 29839 async->args.wlan_client_delete.mac = (uint8 *)mac; 29840 bcm_async_add((bcm_async_req_t *)async); 29841 } 29842 29843 void 29844 bcmx_wlan_client_delete_all_async( 29845 bcmx_async_cb_t async_callback, 29846 void *async_cookie) 29847 { 29848 bcmx_async_req_t *async; 29849 29850 async = sal_alloc(sizeof(*async), "bcmx_async"); 29851 if (async == NULL) { 29852 if (async_callback != NULL) { 29853 (*async_callback)(async_cookie, BCM_E_MEMORY); 29854 } 29855 return; 29856 } 29857 async->next = NULL; 29858 async->type = BCMX_ASYNC_ENTRY_WLAN_CLIENT_DELETE_ALL; 29859 async->run = bcmx_async_run; 29860 async->callback = async_callback; 29861 async->cookie = async_cookie; 29862 bcm_async_add((bcm_async_req_t *)async); 29863 } 29864 29865 void 29866 bcmx_wlan_client_get_async( 29867 bcm_mac_t mac, 29868 bcmx_wlan_client_t * info, 29869 bcmx_async_cb_t async_callback, 29870 void *async_cookie) 29871 { 29872 bcmx_async_req_t *async; 29873 29874 async = sal_alloc(sizeof(*async), "bcmx_async"); 29875 if (async == NULL) { 29876 if (async_callback != NULL) { 29877 (*async_callback)(async_cookie, BCM_E_MEMORY); 29878 } 29879 return; 29880 } 29881 async->next = NULL; 29882 async->type = BCMX_ASYNC_ENTRY_WLAN_CLIENT_GET; 29883 async->run = bcmx_async_run; 29884 async->callback = async_callback; 29885 async->cookie = async_cookie; 29886 async->args.wlan_client_get.mac = (uint8 *)mac; 29887 async->args.wlan_client_get.info = info; 29888 bcm_async_add((bcm_async_req_t *)async); 29889 } 29890 29891 void 29892 bcmx_wlan_detach_async( 29893 bcmx_async_cb_t async_callback, 29894 void *async_cookie) 29895 { 29896 bcmx_async_req_t *async; 29897 29898 async = sal_alloc(sizeof(*async), "bcmx_async"); 29899 if (async == NULL) { 29900 if (async_callback != NULL) { 29901 (*async_callback)(async_cookie, BCM_E_MEMORY); 29902 } 29903 return; 29904 } 29905 async->next = NULL; 29906 async->type = BCMX_ASYNC_ENTRY_WLAN_DETACH; 29907 async->run = bcmx_async_run; 29908 async->callback = async_callback; 29909 async->cookie = async_cookie; 29910 bcm_async_add((bcm_async_req_t *)async); 29911 } 29912 29913 void 29914 bcmx_wlan_init_async( 29915 bcmx_async_cb_t async_callback, 29916 void *async_cookie) 29917 { 29918 bcmx_async_req_t *async; 29919 29920 async = sal_alloc(sizeof(*async), "bcmx_async"); 29921 if (async == NULL) { 29922 if (async_callback != NULL) { 29923 (*async_callback)(async_cookie, BCM_E_MEMORY); 29924 } 29925 return; 29926 } 29927 async->next = NULL; 29928 async->type = BCMX_ASYNC_ENTRY_WLAN_INIT; 29929 async->run = bcmx_async_run; 29930 async->callback = async_callback; 29931 async->cookie = async_cookie; 29932 bcm_async_add((bcm_async_req_t *)async); 29933 } 29934 29935 void 29936 bcmx_wlan_port_add_async( 29937 bcmx_wlan_port_t * info, 29938 bcmx_async_cb_t async_callback, 29939 void *async_cookie) 29940 { 29941 bcmx_async_req_t *async; 29942 29943 async = sal_alloc(sizeof(*async), "bcmx_async"); 29944 if (async == NULL) { 29945 if (async_callback != NULL) { 29946 (*async_callback)(async_cookie, BCM_E_MEMORY); 29947 } 29948 return; 29949 } 29950 async->next = NULL; 29951 async->type = BCMX_ASYNC_ENTRY_WLAN_PORT_ADD; 29952 async->run = bcmx_async_run; 29953 async->callback = async_callback; 29954 async->cookie = async_cookie; 29955 async->args.wlan_port_add.info = info; 29956 bcm_async_add((bcm_async_req_t *)async); 29957 } 29958 29959 void 29960 bcmx_wlan_port_delete_async( 29961 bcm_gport_t wlan_port_id, 29962 bcmx_async_cb_t async_callback, 29963 void *async_cookie) 29964 { 29965 bcmx_async_req_t *async; 29966 29967 async = sal_alloc(sizeof(*async), "bcmx_async"); 29968 if (async == NULL) { 29969 if (async_callback != NULL) { 29970 (*async_callback)(async_cookie, BCM_E_MEMORY); 29971 } 29972 return; 29973 } 29974 async->next = NULL; 29975 async->type = BCMX_ASYNC_ENTRY_WLAN_PORT_DELETE; 29976 async->run = bcmx_async_run; 29977 async->callback = async_callback; 29978 async->cookie = async_cookie; 29979 async->args.wlan_port_delete.wlan_port_id = wlan_port_id; 29980 bcm_async_add((bcm_async_req_t *)async); 29981 } 29982 29983 void 29984 bcmx_wlan_port_delete_all_async( 29985 bcmx_async_cb_t async_callback, 29986 void *async_cookie) 29987 { 29988 bcmx_async_req_t *async; 29989 29990 async = sal_alloc(sizeof(*async), "bcmx_async"); 29991 if (async == NULL) { 29992 if (async_callback != NULL) { 29993 (*async_callback)(async_cookie, BCM_E_MEMORY); 29994 } 29995 return; 29996 } 29997 async->next = NULL; 29998 async->type = BCMX_ASYNC_ENTRY_WLAN_PORT_DELETE_ALL; 29999 async->run = bcmx_async_run; 30000 async->callback = async_callback; 30001 async->cookie = async_cookie; 30002 bcm_async_add((bcm_async_req_t *)async); 30003 } 30004 30005 void 30006 bcmx_wlan_port_get_async( 30007 bcm_gport_t wlan_port_id, 30008 bcmx_wlan_port_t * info, 30009 bcmx_async_cb_t async_callback, 30010 void *async_cookie) 30011 { 30012 bcmx_async_req_t *async; 30013 30014 async = sal_alloc(sizeof(*async), "bcmx_async"); 30015 if (async == NULL) { 30016 if (async_callback != NULL) { 30017 (*async_callback)(async_cookie, BCM_E_MEMORY); 30018 } 30019 return; 30020 } 30021 async->next = NULL; 30022 async->type = BCMX_ASYNC_ENTRY_WLAN_PORT_GET; 30023 async->run = bcmx_async_run; 30024 async->callback = async_callback; 30025 async->cookie = async_cookie; 30026 async->args.wlan_port_get.wlan_port_id = wlan_port_id; 30027 async->args.wlan_port_get.info = info; 30028 bcm_async_add((bcm_async_req_t *)async); 30029 } 30030 30031 void 30032 bcmx_wlan_tunnel_initiator_create_async( 30033 bcmx_tunnel_initiator_t * info, 30034 bcmx_async_cb_t async_callback, 30035 void *async_cookie) 30036 { 30037 bcmx_async_req_t *async; 30038 30039 async = sal_alloc(sizeof(*async), "bcmx_async"); 30040 if (async == NULL) { 30041 if (async_callback != NULL) { 30042 (*async_callback)(async_cookie, BCM_E_MEMORY); 30043 } 30044 return; 30045 } 30046 async->next = NULL; 30047 async->type = BCMX_ASYNC_ENTRY_WLAN_TUNNEL_INITIATOR_CREATE; 30048 async->run = bcmx_async_run; 30049 async->callback = async_callback; 30050 async->cookie = async_cookie; 30051 async->args.wlan_tunnel_initiator_create.info = info; 30052 bcm_async_add((bcm_async_req_t *)async); 30053 } 30054 30055 void 30056 bcmx_wlan_tunnel_initiator_destroy_async( 30057 bcm_gport_t wlan_tunnel_id, 30058 bcmx_async_cb_t async_callback, 30059 void *async_cookie) 30060 { 30061 bcmx_async_req_t *async; 30062 30063 async = sal_alloc(sizeof(*async), "bcmx_async"); 30064 if (async == NULL) { 30065 if (async_callback != NULL) { 30066 (*async_callback)(async_cookie, BCM_E_MEMORY); 30067 } 30068 return; 30069 } 30070 async->next = NULL; 30071 async->type = BCMX_ASYNC_ENTRY_WLAN_TUNNEL_INITIATOR_DESTROY; 30072 async->run = bcmx_async_run; 30073 async->callback = async_callback; 30074 async->cookie = async_cookie; 30075 async->args.wlan_tunnel_initiator_destroy.wlan_tunnel_id = wlan_tunnel_id; 30076 bcm_async_add((bcm_async_req_t *)async); 30077 } 30078 30079 void 30080 bcmx_wlan_tunnel_initiator_get_async( 30081 bcmx_tunnel_initiator_t * info, 30082 bcmx_async_cb_t async_callback, 30083 void *async_cookie) 30084 { 30085 bcmx_async_req_t *async; 30086 30087 async = sal_alloc(sizeof(*async), "bcmx_async"); 30088 if (async == NULL) { 30089 if (async_callback != NULL) { 30090 (*async_callback)(async_cookie, BCM_E_MEMORY); 30091 } 30092 return; 30093 } 30094 async->next = NULL; 30095 async->type = BCMX_ASYNC_ENTRY_WLAN_TUNNEL_INITIATOR_GET; 30096 async->run = bcmx_async_run; 30097 async->callback = async_callback; 30098 async->cookie = async_cookie; 30099 async->args.wlan_tunnel_initiator_get.info = info; 30100 bcm_async_add((bcm_async_req_t *)async); 30101 } 30102 30103 #endif /* INCLUDE_L3 */ 30104 #endif /* BCM_ASYNC_SUPPORT */