openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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