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_run.c (220153B)


      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_run.c
     12  * Purpose:	Async BCMX - execute a request
     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 
     56 #include <shared/alloc.h>
     57 
     58 #ifdef	BCM_ASYNC_SUPPORT
     59 
     60 void
     61 bcmx_async_run(bcmx_async_req_t *req)
     62 {
     63 	int rv;
     64 
     65 	switch (req->type) {
     66 	case BCMX_ASYNC_ENTRY_AUTH_EGRESS_GET:
     67 		rv = bcmx_auth_egress_get(
     68 			req->args.auth_egress_get.port,
     69 			req->args.auth_egress_get.enable);
     70 		break;
     71 	case BCMX_ASYNC_ENTRY_AUTH_EGRESS_SET:
     72 		rv = bcmx_auth_egress_set(
     73 			req->args.auth_egress_set.port,
     74 			req->args.auth_egress_set.enable);
     75 		break;
     76 	case BCMX_ASYNC_ENTRY_AUTH_MAC_ADD:
     77 		rv = bcmx_auth_mac_add(
     78 			req->args.auth_mac_add.port,
     79 			req->args.auth_mac_add.mac);
     80 		break;
     81 	case BCMX_ASYNC_ENTRY_AUTH_MAC_DELETE:
     82 		rv = bcmx_auth_mac_delete(
     83 			req->args.auth_mac_delete.port,
     84 			req->args.auth_mac_delete.mac);
     85 		break;
     86 	case BCMX_ASYNC_ENTRY_AUTH_MAC_DELETE_ALL:
     87 		rv = bcmx_auth_mac_delete_all(
     88 			req->args.auth_mac_delete_all.port);
     89 		break;
     90 	case BCMX_ASYNC_ENTRY_AUTH_MODE_GET:
     91 		rv = bcmx_auth_mode_get(
     92 			req->args.auth_mode_get.port,
     93 			req->args.auth_mode_get.modep);
     94 		break;
     95 	case BCMX_ASYNC_ENTRY_AUTH_MODE_SET:
     96 		rv = bcmx_auth_mode_set(
     97 			req->args.auth_mode_set.port,
     98 			req->args.auth_mode_set.mode);
     99 		break;
    100 	case BCMX_ASYNC_ENTRY_AUTH_UNAUTH_CALLBACK:
    101 		rv = bcmx_auth_unauth_callback(
    102 			req->args.auth_unauth_callback.func,
    103 			req->args.auth_unauth_callback.cookie);
    104 		break;
    105 	case BCMX_ASYNC_ENTRY_COSQ_CONFIG_GET:
    106 		rv = bcmx_cosq_config_get(
    107 			req->args.cosq_config_get.numq);
    108 		break;
    109 	case BCMX_ASYNC_ENTRY_COSQ_CONFIG_SET:
    110 		rv = bcmx_cosq_config_set(
    111 			req->args.cosq_config_set.numq);
    112 		break;
    113 	case BCMX_ASYNC_ENTRY_COSQ_CONTROL_GET:
    114 		rv = bcmx_cosq_control_get(
    115 			req->args.cosq_control_get.port,
    116 			req->args.cosq_control_get.cosq,
    117 			req->args.cosq_control_get.type,
    118 			req->args.cosq_control_get.arg);
    119 		break;
    120 	case BCMX_ASYNC_ENTRY_COSQ_CONTROL_SET:
    121 		rv = bcmx_cosq_control_set(
    122 			req->args.cosq_control_set.port,
    123 			req->args.cosq_control_set.cosq,
    124 			req->args.cosq_control_set.type,
    125 			req->args.cosq_control_set.arg);
    126 		break;
    127 	case BCMX_ASYNC_ENTRY_COSQ_DETACH:
    128 		rv = bcmx_cosq_detach(
    129 			);
    130 		break;
    131 	case BCMX_ASYNC_ENTRY_COSQ_DISCARD_GET:
    132 		rv = bcmx_cosq_discard_get(
    133 			req->args.cosq_discard_get.flags);
    134 		break;
    135 	case BCMX_ASYNC_ENTRY_COSQ_DISCARD_PORT_GET:
    136 		rv = bcmx_cosq_discard_port_get(
    137 			req->args.cosq_discard_port_get.port,
    138 			req->args.cosq_discard_port_get.cosq,
    139 			req->args.cosq_discard_port_get.color,
    140 			req->args.cosq_discard_port_get.drop_start,
    141 			req->args.cosq_discard_port_get.drop_slope,
    142 			req->args.cosq_discard_port_get.average_time);
    143 		break;
    144 	case BCMX_ASYNC_ENTRY_COSQ_DISCARD_PORT_SET:
    145 		rv = bcmx_cosq_discard_port_set(
    146 			req->args.cosq_discard_port_set.port,
    147 			req->args.cosq_discard_port_set.cosq,
    148 			req->args.cosq_discard_port_set.color,
    149 			req->args.cosq_discard_port_set.drop_start,
    150 			req->args.cosq_discard_port_set.drop_slope,
    151 			req->args.cosq_discard_port_set.average_time);
    152 		break;
    153 	case BCMX_ASYNC_ENTRY_COSQ_DISCARD_SET:
    154 		rv = bcmx_cosq_discard_set(
    155 			req->args.cosq_discard_set.flags);
    156 		break;
    157 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_ADD:
    158 		rv = bcmx_cosq_gport_add(
    159 			req->args.cosq_gport_add.port,
    160 			req->args.cosq_gport_add.numq,
    161 			req->args.cosq_gport_add.flags,
    162 			req->args.cosq_gport_add.gport);
    163 		break;
    164 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_ATTACH:
    165 		rv = bcmx_cosq_gport_attach(
    166 			req->args.cosq_gport_attach.sched_port,
    167 			req->args.cosq_gport_attach.input_port,
    168 			req->args.cosq_gport_attach.cosq);
    169 		break;
    170 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_ATTACH_GET:
    171 		rv = bcmx_cosq_gport_attach_get(
    172 			req->args.cosq_gport_attach_get.sched_port,
    173 			req->args.cosq_gport_attach_get.input_port,
    174 			req->args.cosq_gport_attach_get.cosq);
    175 		break;
    176 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_BANDWIDTH_GET:
    177 		rv = bcmx_cosq_gport_bandwidth_get(
    178 			req->args.cosq_gport_bandwidth_get.gport,
    179 			req->args.cosq_gport_bandwidth_get.cosq,
    180 			req->args.cosq_gport_bandwidth_get.kbits_sec_min,
    181 			req->args.cosq_gport_bandwidth_get.kbits_sec_max,
    182 			req->args.cosq_gport_bandwidth_get.flags);
    183 		break;
    184 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_BANDWIDTH_SET:
    185 		rv = bcmx_cosq_gport_bandwidth_set(
    186 			req->args.cosq_gport_bandwidth_set.gport,
    187 			req->args.cosq_gport_bandwidth_set.cosq,
    188 			req->args.cosq_gport_bandwidth_set.kbits_sec_min,
    189 			req->args.cosq_gport_bandwidth_set.kbits_sec_max,
    190 			req->args.cosq_gport_bandwidth_set.flags);
    191 		break;
    192 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_DELETE:
    193 		rv = bcmx_cosq_gport_delete(
    194 			req->args.cosq_gport_delete.gport);
    195 		break;
    196 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_DESTMOD_ATTACH:
    197 		rv = bcmx_cosq_gport_destmod_attach(
    198 			req->args.cosq_gport_destmod_attach.gport,
    199 			req->args.cosq_gport_destmod_attach.ingress_port,
    200 			req->args.cosq_gport_destmod_attach.dest_modid,
    201 			req->args.cosq_gport_destmod_attach.fabric_egress_port);
    202 		break;
    203 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_DESTMOD_DETACH:
    204 		rv = bcmx_cosq_gport_destmod_detach(
    205 			req->args.cosq_gport_destmod_detach.gport,
    206 			req->args.cosq_gport_destmod_detach.ingress_port,
    207 			req->args.cosq_gport_destmod_detach.dest_modid,
    208 			req->args.cosq_gport_destmod_detach.fabric_egress_port);
    209 		break;
    210 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_DETACH:
    211 		rv = bcmx_cosq_gport_detach(
    212 			req->args.cosq_gport_detach.sched_port,
    213 			req->args.cosq_gport_detach.input_port,
    214 			req->args.cosq_gport_detach.cosq);
    215 		break;
    216 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_DISCARD_GET:
    217 		rv = bcmx_cosq_gport_discard_get(
    218 			req->args.cosq_gport_discard_get.gport,
    219 			req->args.cosq_gport_discard_get.cosq,
    220 			req->args.cosq_gport_discard_get.discard);
    221 		break;
    222 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_DISCARD_SET:
    223 		rv = bcmx_cosq_gport_discard_set(
    224 			req->args.cosq_gport_discard_set.gport,
    225 			req->args.cosq_gport_discard_set.cosq,
    226 			req->args.cosq_gport_discard_set.discard);
    227 		break;
    228 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_SCHED_GET:
    229 		rv = bcmx_cosq_gport_sched_get(
    230 			req->args.cosq_gport_sched_get.gport,
    231 			req->args.cosq_gport_sched_get.cosq,
    232 			req->args.cosq_gport_sched_get.mode,
    233 			req->args.cosq_gport_sched_get.weight);
    234 		break;
    235 	case BCMX_ASYNC_ENTRY_COSQ_GPORT_SCHED_SET:
    236 		rv = bcmx_cosq_gport_sched_set(
    237 			req->args.cosq_gport_sched_set.gport,
    238 			req->args.cosq_gport_sched_set.cosq,
    239 			req->args.cosq_gport_sched_set.mode,
    240 			req->args.cosq_gport_sched_set.weight);
    241 		break;
    242 	case BCMX_ASYNC_ENTRY_COSQ_INIT:
    243 		rv = bcmx_cosq_init(
    244 			);
    245 		break;
    246 	case BCMX_ASYNC_ENTRY_COSQ_MAPPING_GET:
    247 		rv = bcmx_cosq_mapping_get(
    248 			req->args.cosq_mapping_get.priority,
    249 			req->args.cosq_mapping_get.cosq);
    250 		break;
    251 	case BCMX_ASYNC_ENTRY_COSQ_MAPPING_SET:
    252 		rv = bcmx_cosq_mapping_set(
    253 			req->args.cosq_mapping_set.priority,
    254 			req->args.cosq_mapping_set.cosq);
    255 		break;
    256 	case BCMX_ASYNC_ENTRY_COSQ_PORT_BANDWIDTH_GET:
    257 		rv = bcmx_cosq_port_bandwidth_get(
    258 			req->args.cosq_port_bandwidth_get.port,
    259 			req->args.cosq_port_bandwidth_get.cosq,
    260 			req->args.cosq_port_bandwidth_get.kbits_sec_min,
    261 			req->args.cosq_port_bandwidth_get.kbits_sec_max,
    262 			req->args.cosq_port_bandwidth_get.flags);
    263 		break;
    264 	case BCMX_ASYNC_ENTRY_COSQ_PORT_BANDWIDTH_SET:
    265 		rv = bcmx_cosq_port_bandwidth_set(
    266 			req->args.cosq_port_bandwidth_set.port,
    267 			req->args.cosq_port_bandwidth_set.cosq,
    268 			req->args.cosq_port_bandwidth_set.kbits_sec_min,
    269 			req->args.cosq_port_bandwidth_set.kbits_sec_max,
    270 			req->args.cosq_port_bandwidth_set.flags);
    271 		break;
    272 	case BCMX_ASYNC_ENTRY_COSQ_PORT_MAPPING_GET:
    273 		rv = bcmx_cosq_port_mapping_get(
    274 			req->args.cosq_port_mapping_get.port,
    275 			req->args.cosq_port_mapping_get.priority,
    276 			req->args.cosq_port_mapping_get.cosq);
    277 		break;
    278 	case BCMX_ASYNC_ENTRY_COSQ_PORT_MAPPING_SET:
    279 		rv = bcmx_cosq_port_mapping_set(
    280 			req->args.cosq_port_mapping_set.port,
    281 			req->args.cosq_port_mapping_set.priority,
    282 			req->args.cosq_port_mapping_set.cosq);
    283 		break;
    284 	case BCMX_ASYNC_ENTRY_COSQ_PORT_SCHED_GET:
    285 		rv = bcmx_cosq_port_sched_get(
    286 			req->args.cosq_port_sched_get.lplist,
    287 			req->args.cosq_port_sched_get.mode,
    288 			req->args.cosq_port_sched_get.weights,
    289 			req->args.cosq_port_sched_get.delay);
    290 		break;
    291 	case BCMX_ASYNC_ENTRY_COSQ_PORT_SCHED_SET:
    292 		rv = bcmx_cosq_port_sched_set(
    293 			req->args.cosq_port_sched_set.lplist,
    294 			req->args.cosq_port_sched_set.mode,
    295 			req->args.cosq_port_sched_set.weights,
    296 			req->args.cosq_port_sched_set.delay);
    297 		break;
    298 	case BCMX_ASYNC_ENTRY_COSQ_SCHED_GET:
    299 		rv = bcmx_cosq_sched_get(
    300 			req->args.cosq_sched_get.mode,
    301 			req->args.cosq_sched_get.weights,
    302 			req->args.cosq_sched_get.delay);
    303 		break;
    304 	case BCMX_ASYNC_ENTRY_COSQ_SCHED_SET:
    305 		rv = bcmx_cosq_sched_set(
    306 			req->args.cosq_sched_set.mode,
    307 			req->args.cosq_sched_set.weights,
    308 			req->args.cosq_sched_set.delay);
    309 		break;
    310 	case BCMX_ASYNC_ENTRY_COSQ_SCHED_WEIGHT_MAX_GET:
    311 		rv = bcmx_cosq_sched_weight_max_get(
    312 			req->args.cosq_sched_weight_max_get.mode,
    313 			req->args.cosq_sched_weight_max_get.weight_max);
    314 		break;
    315 	case BCMX_ASYNC_ENTRY_COSQ_STAT_GET:
    316 		rv = bcmx_cosq_stat_get(
    317 			req->args.cosq_stat_get.gport,
    318 			req->args.cosq_stat_get.cosq,
    319 			req->args.cosq_stat_get.stat,
    320 			req->args.cosq_stat_get.value);
    321 		break;
    322 	case BCMX_ASYNC_ENTRY_COSQ_STAT_GET32:
    323 		rv = bcmx_cosq_stat_get32(
    324 			req->args.cosq_stat_get32.gport,
    325 			req->args.cosq_stat_get32.cosq,
    326 			req->args.cosq_stat_get32.stat,
    327 			req->args.cosq_stat_get32.value);
    328 		break;
    329 	case BCMX_ASYNC_ENTRY_COSQ_STAT_SET:
    330 		rv = bcmx_cosq_stat_set(
    331 			req->args.cosq_stat_set.gport,
    332 			req->args.cosq_stat_set.cosq,
    333 			req->args.cosq_stat_set.stat,
    334 			req->args.cosq_stat_set.value);
    335 		break;
    336 	case BCMX_ASYNC_ENTRY_COSQ_STAT_SET32:
    337 		rv = bcmx_cosq_stat_set32(
    338 			req->args.cosq_stat_set32.gport,
    339 			req->args.cosq_stat_set32.cosq,
    340 			req->args.cosq_stat_set32.stat,
    341 			req->args.cosq_stat_set32.value);
    342 		break;
    343 	case BCMX_ASYNC_ENTRY_CUSTOM_PORT_GET:
    344 		rv = bcmx_custom_port_get(
    345 			req->args.custom_port_get.port,
    346 			req->args.custom_port_get.type,
    347 			req->args.custom_port_get.max_len,
    348 			req->args.custom_port_get.args,
    349 			req->args.custom_port_get.actual_len);
    350 		break;
    351 	case BCMX_ASYNC_ENTRY_CUSTOM_PORT_SET:
    352 		rv = bcmx_custom_port_set(
    353 			req->args.custom_port_set.port,
    354 			req->args.custom_port_set.type,
    355 			req->args.custom_port_set.len,
    356 			req->args.custom_port_set.args);
    357 		break;
    358 	case BCMX_ASYNC_ENTRY_CUSTOM_UNIT_GET:
    359 		rv = bcmx_custom_unit_get(
    360 			req->args.custom_unit_get.type,
    361 			req->args.custom_unit_get.max_len,
    362 			req->args.custom_unit_get.args,
    363 			req->args.custom_unit_get.actual_len);
    364 		break;
    365 	case BCMX_ASYNC_ENTRY_CUSTOM_UNIT_SET:
    366 		rv = bcmx_custom_unit_set(
    367 			req->args.custom_unit_set.type,
    368 			req->args.custom_unit_set.len,
    369 			req->args.custom_unit_set.args);
    370 		break;
    371 	case BCMX_ASYNC_ENTRY_DEVICE_ATTACH:
    372 		rv = bcmx_device_attach(
    373 			req->args.device_attach.unit);
    374 		break;
    375 	case BCMX_ASYNC_ENTRY_DEVICE_DETACH:
    376 		rv = bcmx_device_detach(
    377 			req->args.device_detach.unit);
    378 		break;
    379 	case BCMX_ASYNC_ENTRY_FAILOVER_CLEANUP:
    380 		rv = bcmx_failover_cleanup(
    381 			);
    382 		break;
    383 	case BCMX_ASYNC_ENTRY_FAILOVER_CREATE:
    384 		rv = bcmx_failover_create(
    385 			req->args.failover_create.flags,
    386 			req->args.failover_create.failover_id);
    387 		break;
    388 	case BCMX_ASYNC_ENTRY_FAILOVER_DESTROY:
    389 		rv = bcmx_failover_destroy(
    390 			req->args.failover_destroy.failover_id);
    391 		break;
    392 	case BCMX_ASYNC_ENTRY_FAILOVER_GET:
    393 		rv = bcmx_failover_get(
    394 			req->args.failover_get.failover_id,
    395 			req->args.failover_get.enable);
    396 		break;
    397 	case BCMX_ASYNC_ENTRY_FAILOVER_INIT:
    398 		rv = bcmx_failover_init(
    399 			);
    400 		break;
    401 	case BCMX_ASYNC_ENTRY_FAILOVER_SET:
    402 		rv = bcmx_failover_set(
    403 			req->args.failover_set.failover_id,
    404 			req->args.failover_set.enable);
    405 		break;
    406 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_ADD:
    407 		rv = bcmx_field_action_add(
    408 			req->args.field_action_add.entry,
    409 			req->args.field_action_add.action,
    410 			req->args.field_action_add.param0,
    411 			req->args.field_action_add.param1);
    412 		break;
    413 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_DELETE:
    414 		rv = bcmx_field_action_delete(
    415 			req->args.field_action_delete.entry,
    416 			req->args.field_action_delete.action,
    417 			req->args.field_action_delete.param0,
    418 			req->args.field_action_delete.param1);
    419 		break;
    420 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_GET:
    421 		rv = bcmx_field_action_get(
    422 			req->args.field_action_get.entry,
    423 			req->args.field_action_get.action,
    424 			req->args.field_action_get.param0,
    425 			req->args.field_action_get.param1);
    426 		break;
    427 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_MAC_ADD:
    428 		rv = bcmx_field_action_mac_add(
    429 			req->args.field_action_mac_add.entry,
    430 			req->args.field_action_mac_add.action,
    431 			req->args.field_action_mac_add.mac);
    432 		break;
    433 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_MAC_GET:
    434 		rv = bcmx_field_action_mac_get(
    435 			req->args.field_action_mac_get.entry,
    436 			req->args.field_action_mac_get.action,
    437 			req->args.field_action_mac_get.mac);
    438 		break;
    439 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_PORTS_ADD:
    440 		rv = bcmx_field_action_ports_add(
    441 			req->args.field_action_ports_add.entry,
    442 			req->args.field_action_ports_add.action,
    443 			req->args.field_action_ports_add.lplist);
    444 		break;
    445 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_PORTS_GET:
    446 		rv = bcmx_field_action_ports_get(
    447 			req->args.field_action_ports_get.entry,
    448 			req->args.field_action_ports_get.action,
    449 			req->args.field_action_ports_get.lplist);
    450 		break;
    451 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_REMOVE:
    452 		rv = bcmx_field_action_remove(
    453 			req->args.field_action_remove.entry,
    454 			req->args.field_action_remove.action);
    455 		break;
    456 	case BCMX_ASYNC_ENTRY_FIELD_ACTION_REMOVE_ALL:
    457 		rv = bcmx_field_action_remove_all(
    458 			req->args.field_action_remove_all.entry);
    459 		break;
    460 	case BCMX_ASYNC_ENTRY_FIELD_CONTROL_GET:
    461 		rv = bcmx_field_control_get(
    462 			req->args.field_control_get.control,
    463 			req->args.field_control_get.state);
    464 		break;
    465 	case BCMX_ASYNC_ENTRY_FIELD_CONTROL_SET:
    466 		rv = bcmx_field_control_set(
    467 			req->args.field_control_set.control,
    468 			req->args.field_control_set.state);
    469 		break;
    470 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_CREATE:
    471 		rv = bcmx_field_data_qualifier_create(
    472 			req->args.field_data_qualifier_create.data_qualifier);
    473 		break;
    474 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_DESTROY:
    475 		rv = bcmx_field_data_qualifier_destroy(
    476 			req->args.field_data_qualifier_destroy.qual_id);
    477 		break;
    478 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_DESTROY_ALL:
    479 		rv = bcmx_field_data_qualifier_destroy_all(
    480 			);
    481 		break;
    482 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_ETHERTYPE_ADD:
    483 		rv = bcmx_field_data_qualifier_ethertype_add(
    484 			req->args.field_data_qualifier_ethertype_add.qual_id,
    485 			req->args.field_data_qualifier_ethertype_add.etype);
    486 		break;
    487 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_ETHERTYPE_DELETE:
    488 		rv = bcmx_field_data_qualifier_ethertype_delete(
    489 			req->args.field_data_qualifier_ethertype_delete.qual_id,
    490 			req->args.field_data_qualifier_ethertype_delete.etype);
    491 		break;
    492 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_GET:
    493 		rv = bcmx_field_data_qualifier_get(
    494 			req->args.field_data_qualifier_get.qual_id,
    495 			req->args.field_data_qualifier_get.qual);
    496 		break;
    497 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_IP_PROTOCOL_ADD:
    498 		rv = bcmx_field_data_qualifier_ip_protocol_add(
    499 			req->args.field_data_qualifier_ip_protocol_add.qual_id,
    500 			req->args.field_data_qualifier_ip_protocol_add.ip_protocol);
    501 		break;
    502 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_IP_PROTOCOL_DELETE:
    503 		rv = bcmx_field_data_qualifier_ip_protocol_delete(
    504 			req->args.field_data_qualifier_ip_protocol_delete.qual_id,
    505 			req->args.field_data_qualifier_ip_protocol_delete.ip_protocol);
    506 		break;
    507 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_MULTI_GET:
    508 		rv = bcmx_field_data_qualifier_multi_get(
    509 			req->args.field_data_qualifier_multi_get.qual_size,
    510 			req->args.field_data_qualifier_multi_get.qual_array,
    511 			req->args.field_data_qualifier_multi_get.qual_count);
    512 		break;
    513 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_PACKET_FORMAT_ADD:
    514 		rv = bcmx_field_data_qualifier_packet_format_add(
    515 			req->args.field_data_qualifier_packet_format_add.qual_id,
    516 			req->args.field_data_qualifier_packet_format_add.packet_format);
    517 		break;
    518 	case BCMX_ASYNC_ENTRY_FIELD_DATA_QUALIFIER_PACKET_FORMAT_DELETE:
    519 		rv = bcmx_field_data_qualifier_packet_format_delete(
    520 			req->args.field_data_qualifier_packet_format_delete.qual_id,
    521 			req->args.field_data_qualifier_packet_format_delete.packet_format);
    522 		break;
    523 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_COPY:
    524 		rv = bcmx_field_entry_copy(
    525 			req->args.field_entry_copy.src_entry,
    526 			req->args.field_entry_copy.dst_entry);
    527 		break;
    528 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_CREATE:
    529 		rv = bcmx_field_entry_create(
    530 			req->args.field_entry_create.group,
    531 			req->args.field_entry_create.entry);
    532 		break;
    533 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_CREATE_ID:
    534 		rv = bcmx_field_entry_create_id(
    535 			req->args.field_entry_create_id.group,
    536 			req->args.field_entry_create_id.entry);
    537 		break;
    538 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_DESTROY:
    539 		rv = bcmx_field_entry_destroy(
    540 			req->args.field_entry_destroy.entry);
    541 		break;
    542 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_DESTROY_ALL:
    543 		rv = bcmx_field_entry_destroy_all(
    544 			);
    545 		break;
    546 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_INSTALL:
    547 		rv = bcmx_field_entry_install(
    548 			req->args.field_entry_install.entry);
    549 		break;
    550 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_MULTI_GET:
    551 		rv = bcmx_field_entry_multi_get(
    552 			req->args.field_entry_multi_get.group,
    553 			req->args.field_entry_multi_get.entry_size,
    554 			req->args.field_entry_multi_get.entry_array,
    555 			req->args.field_entry_multi_get.entry_count);
    556 		break;
    557 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_ATTACH:
    558 		rv = bcmx_field_entry_policer_attach(
    559 			req->args.field_entry_policer_attach.entry_id,
    560 			req->args.field_entry_policer_attach.level,
    561 			req->args.field_entry_policer_attach.policer_id);
    562 		break;
    563 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_DETACH:
    564 		rv = bcmx_field_entry_policer_detach(
    565 			req->args.field_entry_policer_detach.entry_id,
    566 			req->args.field_entry_policer_detach.level);
    567 		break;
    568 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_DETACH_ALL:
    569 		rv = bcmx_field_entry_policer_detach_all(
    570 			req->args.field_entry_policer_detach_all.entry_id);
    571 		break;
    572 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_POLICER_GET:
    573 		rv = bcmx_field_entry_policer_get(
    574 			req->args.field_entry_policer_get.entry_id,
    575 			req->args.field_entry_policer_get.level,
    576 			req->args.field_entry_policer_get.policer_id);
    577 		break;
    578 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_PRIO_GET:
    579 		rv = bcmx_field_entry_prio_get(
    580 			req->args.field_entry_prio_get.entry,
    581 			req->args.field_entry_prio_get.prio);
    582 		break;
    583 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_PRIO_SET:
    584 		rv = bcmx_field_entry_prio_set(
    585 			req->args.field_entry_prio_set.entry,
    586 			req->args.field_entry_prio_set.prio);
    587 		break;
    588 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_REINSTALL:
    589 		rv = bcmx_field_entry_reinstall(
    590 			req->args.field_entry_reinstall.entry);
    591 		break;
    592 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_REMOVE:
    593 		rv = bcmx_field_entry_remove(
    594 			req->args.field_entry_remove.entry);
    595 		break;
    596 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_STAT_ATTACH:
    597 		rv = bcmx_field_entry_stat_attach(
    598 			req->args.field_entry_stat_attach.entry,
    599 			req->args.field_entry_stat_attach.stat_id);
    600 		break;
    601 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_STAT_DETACH:
    602 		rv = bcmx_field_entry_stat_detach(
    603 			req->args.field_entry_stat_detach.entry,
    604 			req->args.field_entry_stat_detach.stat_id);
    605 		break;
    606 	case BCMX_ASYNC_ENTRY_FIELD_ENTRY_STAT_GET:
    607 		rv = bcmx_field_entry_stat_get(
    608 			req->args.field_entry_stat_get.entry,
    609 			req->args.field_entry_stat_get.stat_id);
    610 		break;
    611 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_COMPRESS:
    612 		rv = bcmx_field_group_compress(
    613 			req->args.field_group_compress.group);
    614 		break;
    615 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE:
    616 		rv = bcmx_field_group_create(
    617 			req->args.field_group_create.qset,
    618 			req->args.field_group_create.pri,
    619 			req->args.field_group_create.group);
    620 		break;
    621 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE_ID:
    622 		rv = bcmx_field_group_create_id(
    623 			req->args.field_group_create_id.qset,
    624 			req->args.field_group_create_id.pri,
    625 			req->args.field_group_create_id.group);
    626 		break;
    627 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE_MODE:
    628 		rv = bcmx_field_group_create_mode(
    629 			req->args.field_group_create_mode.qset,
    630 			req->args.field_group_create_mode.pri,
    631 			req->args.field_group_create_mode.mode,
    632 			req->args.field_group_create_mode.group);
    633 		break;
    634 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_CREATE_MODE_ID:
    635 		rv = bcmx_field_group_create_mode_id(
    636 			req->args.field_group_create_mode_id.qset,
    637 			req->args.field_group_create_mode_id.pri,
    638 			req->args.field_group_create_mode_id.mode,
    639 			req->args.field_group_create_mode_id.group);
    640 		break;
    641 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_DESTROY:
    642 		rv = bcmx_field_group_destroy(
    643 			req->args.field_group_destroy.group);
    644 		break;
    645 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_ENABLE_GET:
    646 		rv = bcmx_field_group_enable_get(
    647 			req->args.field_group_enable_get.group,
    648 			req->args.field_group_enable_get.enable);
    649 		break;
    650 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_ENABLE_SET:
    651 		rv = bcmx_field_group_enable_set(
    652 			req->args.field_group_enable_set.group,
    653 			req->args.field_group_enable_set.enable);
    654 		break;
    655 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_GET:
    656 		rv = bcmx_field_group_get(
    657 			req->args.field_group_get.group,
    658 			req->args.field_group_get.qset);
    659 		break;
    660 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_INSTALL:
    661 		rv = bcmx_field_group_install(
    662 			req->args.field_group_install.group);
    663 		break;
    664 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_MODE_GET:
    665 		rv = bcmx_field_group_mode_get(
    666 			req->args.field_group_mode_get.group,
    667 			req->args.field_group_mode_get.mode);
    668 		break;
    669 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_PORT_CREATE_MODE:
    670 		rv = bcmx_field_group_port_create_mode(
    671 			req->args.field_group_port_create_mode.port,
    672 			req->args.field_group_port_create_mode.qset,
    673 			req->args.field_group_port_create_mode.pri,
    674 			req->args.field_group_port_create_mode.mode,
    675 			req->args.field_group_port_create_mode.group);
    676 		break;
    677 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_PORT_CREATE_MODE_ID:
    678 		rv = bcmx_field_group_port_create_mode_id(
    679 			req->args.field_group_port_create_mode_id.port,
    680 			req->args.field_group_port_create_mode_id.qset,
    681 			req->args.field_group_port_create_mode_id.pri,
    682 			req->args.field_group_port_create_mode_id.mode,
    683 			req->args.field_group_port_create_mode_id.group);
    684 		break;
    685 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_PORTS_CREATE_MODE:
    686 		rv = bcmx_field_group_ports_create_mode(
    687 			req->args.field_group_ports_create_mode.lplist,
    688 			req->args.field_group_ports_create_mode.qset,
    689 			req->args.field_group_ports_create_mode.pri,
    690 			req->args.field_group_ports_create_mode.mode,
    691 			req->args.field_group_ports_create_mode.group);
    692 		break;
    693 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_PORTS_CREATE_MODE_ID:
    694 		rv = bcmx_field_group_ports_create_mode_id(
    695 			req->args.field_group_ports_create_mode_id.lplist,
    696 			req->args.field_group_ports_create_mode_id.qset,
    697 			req->args.field_group_ports_create_mode_id.pri,
    698 			req->args.field_group_ports_create_mode_id.mode,
    699 			req->args.field_group_ports_create_mode_id.group);
    700 		break;
    701 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_PRIORITY_GET:
    702 		rv = bcmx_field_group_priority_get(
    703 			req->args.field_group_priority_get.group,
    704 			req->args.field_group_priority_get.priority);
    705 		break;
    706 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_PRIORITY_SET:
    707 		rv = bcmx_field_group_priority_set(
    708 			req->args.field_group_priority_set.group,
    709 			req->args.field_group_priority_set.priority);
    710 		break;
    711 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_REMOVE:
    712 		rv = bcmx_field_group_remove(
    713 			req->args.field_group_remove.group);
    714 		break;
    715 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_SET:
    716 		rv = bcmx_field_group_set(
    717 			req->args.field_group_set.group,
    718 			req->args.field_group_set.qset);
    719 		break;
    720 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_TRAVERSE:
    721 		rv = bcmx_field_group_traverse(
    722 			req->args.field_group_traverse.callback,
    723 			req->args.field_group_traverse.user_data);
    724 		break;
    725 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_WLAN_CREATE_MODE:
    726 		rv = bcmx_field_group_wlan_create_mode(
    727 			req->args.field_group_wlan_create_mode.qset,
    728 			req->args.field_group_wlan_create_mode.pri,
    729 			req->args.field_group_wlan_create_mode.mode,
    730 			req->args.field_group_wlan_create_mode.group);
    731 		break;
    732 	case BCMX_ASYNC_ENTRY_FIELD_GROUP_WLAN_CREATE_MODE_ID:
    733 		rv = bcmx_field_group_wlan_create_mode_id(
    734 			req->args.field_group_wlan_create_mode_id.qset,
    735 			req->args.field_group_wlan_create_mode_id.pri,
    736 			req->args.field_group_wlan_create_mode_id.mode,
    737 			req->args.field_group_wlan_create_mode_id.group);
    738 		break;
    739 	case BCMX_ASYNC_ENTRY_FIELD_INIT:
    740 		rv = bcmx_field_init(
    741 			);
    742 		break;
    743 	case BCMX_ASYNC_ENTRY_FIELD_QSET_DATA_QUALIFIER_ADD:
    744 		rv = bcmx_field_qset_data_qualifier_add(
    745 			req->args.field_qset_data_qualifier_add.qset,
    746 			req->args.field_qset_data_qualifier_add.qual_id);
    747 		break;
    748 	case BCMX_ASYNC_ENTRY_FIELD_QSET_DATA_QUALIFIER_GET:
    749 		rv = bcmx_field_qset_data_qualifier_get(
    750 			req->args.field_qset_data_qualifier_get.qset,
    751 			req->args.field_qset_data_qualifier_get.qual_max,
    752 			req->args.field_qset_data_qualifier_get.qual_arr,
    753 			req->args.field_qset_data_qualifier_get.qual_count);
    754 		break;
    755 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFIER_DELETE:
    756 		rv = bcmx_field_qualifier_delete(
    757 			req->args.field_qualifier_delete.entry,
    758 			req->args.field_qualifier_delete.qual_id);
    759 		break;
    760 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_CNTAG:
    761 		rv = bcmx_field_qualify_CnTag(
    762 			req->args.field_qualify_CnTag.entry,
    763 			req->args.field_qualify_CnTag.data,
    764 			req->args.field_qualify_CnTag.mask);
    765 		break;
    766 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_CNTAG_GET:
    767 		rv = bcmx_field_qualify_CnTag_get(
    768 			req->args.field_qualify_CnTag_get.entry,
    769 			req->args.field_qualify_CnTag_get.data,
    770 			req->args.field_qualify_CnTag_get.mask);
    771 		break;
    772 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_COLOR:
    773 		rv = bcmx_field_qualify_Color(
    774 			req->args.field_qualify_Color.entry,
    775 			req->args.field_qualify_Color.color);
    776 		break;
    777 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_COLOR_GET:
    778 		rv = bcmx_field_qualify_Color_get(
    779 			req->args.field_qualify_Color_get.entry,
    780 			req->args.field_qualify_Color_get.color);
    781 		break;
    782 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSCP:
    783 		rv = bcmx_field_qualify_DSCP(
    784 			req->args.field_qualify_DSCP.entry,
    785 			req->args.field_qualify_DSCP.data,
    786 			req->args.field_qualify_DSCP.mask);
    787 		break;
    788 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSCP_GET:
    789 		rv = bcmx_field_qualify_DSCP_get(
    790 			req->args.field_qualify_DSCP_get.entry,
    791 			req->args.field_qualify_DSCP_get.data,
    792 			req->args.field_qualify_DSCP_get.mask);
    793 		break;
    794 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DECAP:
    795 		rv = bcmx_field_qualify_Decap(
    796 			req->args.field_qualify_Decap.entry,
    797 			req->args.field_qualify_Decap.decap);
    798 		break;
    799 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DOSATTACK:
    800 		rv = bcmx_field_qualify_DosAttack(
    801 			req->args.field_qualify_DosAttack.entry,
    802 			req->args.field_qualify_DosAttack.data,
    803 			req->args.field_qualify_DosAttack.mask);
    804 		break;
    805 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DOSATTACK_GET:
    806 		rv = bcmx_field_qualify_DosAttack_get(
    807 			req->args.field_qualify_DosAttack_get.entry,
    808 			req->args.field_qualify_DosAttack_get.data,
    809 			req->args.field_qualify_DosAttack_get.mask);
    810 		break;
    811 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DROP:
    812 		rv = bcmx_field_qualify_Drop(
    813 			req->args.field_qualify_Drop.entry,
    814 			req->args.field_qualify_Drop.data,
    815 			req->args.field_qualify_Drop.mask);
    816 		break;
    817 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DROP_GET:
    818 		rv = bcmx_field_qualify_Drop_get(
    819 			req->args.field_qualify_Drop_get.entry,
    820 			req->args.field_qualify_Drop_get.data,
    821 			req->args.field_qualify_Drop_get.mask);
    822 		break;
    823 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSFIELD:
    824 		rv = bcmx_field_qualify_DstClassField(
    825 			req->args.field_qualify_DstClassField.entry,
    826 			req->args.field_qualify_DstClassField.data,
    827 			req->args.field_qualify_DstClassField.mask);
    828 		break;
    829 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSFIELD_GET:
    830 		rv = bcmx_field_qualify_DstClassField_get(
    831 			req->args.field_qualify_DstClassField_get.entry,
    832 			req->args.field_qualify_DstClassField_get.data,
    833 			req->args.field_qualify_DstClassField_get.mask);
    834 		break;
    835 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL2:
    836 		rv = bcmx_field_qualify_DstClassL2(
    837 			req->args.field_qualify_DstClassL2.entry,
    838 			req->args.field_qualify_DstClassL2.data,
    839 			req->args.field_qualify_DstClassL2.mask);
    840 		break;
    841 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL2_GET:
    842 		rv = bcmx_field_qualify_DstClassL2_get(
    843 			req->args.field_qualify_DstClassL2_get.entry,
    844 			req->args.field_qualify_DstClassL2_get.data,
    845 			req->args.field_qualify_DstClassL2_get.mask);
    846 		break;
    847 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL3:
    848 		rv = bcmx_field_qualify_DstClassL3(
    849 			req->args.field_qualify_DstClassL3.entry,
    850 			req->args.field_qualify_DstClassL3.data,
    851 			req->args.field_qualify_DstClassL3.mask);
    852 		break;
    853 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTCLASSL3_GET:
    854 		rv = bcmx_field_qualify_DstClassL3_get(
    855 			req->args.field_qualify_DstClassL3_get.entry,
    856 			req->args.field_qualify_DstClassL3_get.data,
    857 			req->args.field_qualify_DstClassL3_get.mask);
    858 		break;
    859 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTHIGIG:
    860 		rv = bcmx_field_qualify_DstHiGig(
    861 			req->args.field_qualify_DstHiGig.entry,
    862 			req->args.field_qualify_DstHiGig.data,
    863 			req->args.field_qualify_DstHiGig.mask);
    864 		break;
    865 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTHIGIG_GET:
    866 		rv = bcmx_field_qualify_DstHiGig_get(
    867 			req->args.field_qualify_DstHiGig_get.entry,
    868 			req->args.field_qualify_DstHiGig_get.data,
    869 			req->args.field_qualify_DstHiGig_get.mask);
    870 		break;
    871 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP:
    872 		rv = bcmx_field_qualify_DstIp(
    873 			req->args.field_qualify_DstIp.entry,
    874 			req->args.field_qualify_DstIp.data,
    875 			req->args.field_qualify_DstIp.mask);
    876 		break;
    877 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6:
    878 		rv = bcmx_field_qualify_DstIp6(
    879 			req->args.field_qualify_DstIp6.entry,
    880 			req->args.field_qualify_DstIp6.data,
    881 			req->args.field_qualify_DstIp6.mask);
    882 		break;
    883 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6HIGH:
    884 		rv = bcmx_field_qualify_DstIp6High(
    885 			req->args.field_qualify_DstIp6High.entry,
    886 			req->args.field_qualify_DstIp6High.data,
    887 			req->args.field_qualify_DstIp6High.mask);
    888 		break;
    889 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6HIGH_GET:
    890 		rv = bcmx_field_qualify_DstIp6High_get(
    891 			req->args.field_qualify_DstIp6High_get.entry,
    892 			req->args.field_qualify_DstIp6High_get.data,
    893 			req->args.field_qualify_DstIp6High_get.mask);
    894 		break;
    895 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6LOW:
    896 		rv = bcmx_field_qualify_DstIp6Low(
    897 			req->args.field_qualify_DstIp6Low.entry,
    898 			req->args.field_qualify_DstIp6Low.data,
    899 			req->args.field_qualify_DstIp6Low.mask);
    900 		break;
    901 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6LOW_GET:
    902 		rv = bcmx_field_qualify_DstIp6Low_get(
    903 			req->args.field_qualify_DstIp6Low_get.entry,
    904 			req->args.field_qualify_DstIp6Low_get.data,
    905 			req->args.field_qualify_DstIp6Low_get.mask);
    906 		break;
    907 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP6_GET:
    908 		rv = bcmx_field_qualify_DstIp6_get(
    909 			req->args.field_qualify_DstIp6_get.entry,
    910 			req->args.field_qualify_DstIp6_get.data,
    911 			req->args.field_qualify_DstIp6_get.mask);
    912 		break;
    913 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTIP_GET:
    914 		rv = bcmx_field_qualify_DstIp_get(
    915 			req->args.field_qualify_DstIp_get.entry,
    916 			req->args.field_qualify_DstIp_get.data,
    917 			req->args.field_qualify_DstIp_get.mask);
    918 		break;
    919 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTL3EGRESS:
    920 		rv = bcmx_field_qualify_DstL3Egress(
    921 			req->args.field_qualify_DstL3Egress.entry,
    922 			req->args.field_qualify_DstL3Egress.if_id);
    923 		break;
    924 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTL3EGRESS_GET:
    925 		rv = bcmx_field_qualify_DstL3Egress_get(
    926 			req->args.field_qualify_DstL3Egress_get.entry,
    927 			req->args.field_qualify_DstL3Egress_get.if_id);
    928 		break;
    929 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMAC:
    930 		rv = bcmx_field_qualify_DstMac(
    931 			req->args.field_qualify_DstMac.entry,
    932 			req->args.field_qualify_DstMac.data,
    933 			req->args.field_qualify_DstMac.mask);
    934 		break;
    935 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMAC_GET:
    936 		rv = bcmx_field_qualify_DstMac_get(
    937 			req->args.field_qualify_DstMac_get.entry,
    938 			req->args.field_qualify_DstMac_get.data,
    939 			req->args.field_qualify_DstMac_get.mask);
    940 		break;
    941 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMIMGPORT:
    942 		rv = bcmx_field_qualify_DstMimGport(
    943 			req->args.field_qualify_DstMimGport.entry,
    944 			req->args.field_qualify_DstMimGport.mim_port_id);
    945 		break;
    946 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMIMGPORT_GET:
    947 		rv = bcmx_field_qualify_DstMimGport_get(
    948 			req->args.field_qualify_DstMimGport_get.entry,
    949 			req->args.field_qualify_DstMimGport_get.mim_port_id);
    950 		break;
    951 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMPLSGPORT:
    952 		rv = bcmx_field_qualify_DstMplsGport(
    953 			req->args.field_qualify_DstMplsGport.entry,
    954 			req->args.field_qualify_DstMplsGport.mpls_port_id);
    955 		break;
    956 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMPLSGPORT_GET:
    957 		rv = bcmx_field_qualify_DstMplsGport_get(
    958 			req->args.field_qualify_DstMplsGport_get.entry,
    959 			req->args.field_qualify_DstMplsGport_get.mpls_port_id);
    960 		break;
    961 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTICASTGROUP:
    962 		rv = bcmx_field_qualify_DstMulticastGroup(
    963 			req->args.field_qualify_DstMulticastGroup.entry,
    964 			req->args.field_qualify_DstMulticastGroup.group);
    965 		break;
    966 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTICASTGROUP_GET:
    967 		rv = bcmx_field_qualify_DstMulticastGroup_get(
    968 			req->args.field_qualify_DstMulticastGroup_get.entry,
    969 			req->args.field_qualify_DstMulticastGroup_get.group);
    970 		break;
    971 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTIPATH:
    972 		rv = bcmx_field_qualify_DstMultipath(
    973 			req->args.field_qualify_DstMultipath.entry,
    974 			req->args.field_qualify_DstMultipath.mpintf);
    975 		break;
    976 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTMULTIPATH_GET:
    977 		rv = bcmx_field_qualify_DstMultipath_get(
    978 			req->args.field_qualify_DstMultipath_get.entry,
    979 			req->args.field_qualify_DstMultipath_get.mpintf);
    980 		break;
    981 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTPORT:
    982 		rv = bcmx_field_qualify_DstPort(
    983 			req->args.field_qualify_DstPort.entry,
    984 			req->args.field_qualify_DstPort.port);
    985 		break;
    986 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTPORT_GET:
    987 		rv = bcmx_field_qualify_DstPort_get(
    988 			req->args.field_qualify_DstPort_get.entry,
    989 			req->args.field_qualify_DstPort_get.data_modid,
    990 			req->args.field_qualify_DstPort_get.mask_modid,
    991 			req->args.field_qualify_DstPort_get.data_port,
    992 			req->args.field_qualify_DstPort_get.mask_port);
    993 		break;
    994 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTTRUNK:
    995 		rv = bcmx_field_qualify_DstTrunk(
    996 			req->args.field_qualify_DstTrunk.entry,
    997 			req->args.field_qualify_DstTrunk.tid);
    998 		break;
    999 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTTRUNK_GET:
   1000 		rv = bcmx_field_qualify_DstTrunk_get(
   1001 			req->args.field_qualify_DstTrunk_get.entry,
   1002 			req->args.field_qualify_DstTrunk_get.data,
   1003 			req->args.field_qualify_DstTrunk_get.mask);
   1004 		break;
   1005 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTWLANGPORT:
   1006 		rv = bcmx_field_qualify_DstWlanGport(
   1007 			req->args.field_qualify_DstWlanGport.entry,
   1008 			req->args.field_qualify_DstWlanGport.wlan_port_id);
   1009 		break;
   1010 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DSTWLANGPORT_GET:
   1011 		rv = bcmx_field_qualify_DstWlanGport_get(
   1012 			req->args.field_qualify_DstWlanGport_get.entry,
   1013 			req->args.field_qualify_DstWlanGport_get.wlan_port_id);
   1014 		break;
   1015 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_ETHERTYPE:
   1016 		rv = bcmx_field_qualify_EtherType(
   1017 			req->args.field_qualify_EtherType.entry,
   1018 			req->args.field_qualify_EtherType.data,
   1019 			req->args.field_qualify_EtherType.mask);
   1020 		break;
   1021 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_ETHERTYPE_GET:
   1022 		rv = bcmx_field_qualify_EtherType_get(
   1023 			req->args.field_qualify_EtherType_get.entry,
   1024 			req->args.field_qualify_EtherType_get.data,
   1025 			req->args.field_qualify_EtherType_get.mask);
   1026 		break;
   1027 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADER2TYPE:
   1028 		rv = bcmx_field_qualify_ExtensionHeader2Type(
   1029 			req->args.field_qualify_ExtensionHeader2Type.entry,
   1030 			req->args.field_qualify_ExtensionHeader2Type.data,
   1031 			req->args.field_qualify_ExtensionHeader2Type.mask);
   1032 		break;
   1033 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADER2TYPE_GET:
   1034 		rv = bcmx_field_qualify_ExtensionHeader2Type_get(
   1035 			req->args.field_qualify_ExtensionHeader2Type_get.entry,
   1036 			req->args.field_qualify_ExtensionHeader2Type_get.data,
   1037 			req->args.field_qualify_ExtensionHeader2Type_get.mask);
   1038 		break;
   1039 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERSUBCODE:
   1040 		rv = bcmx_field_qualify_ExtensionHeaderSubCode(
   1041 			req->args.field_qualify_ExtensionHeaderSubCode.entry,
   1042 			req->args.field_qualify_ExtensionHeaderSubCode.data,
   1043 			req->args.field_qualify_ExtensionHeaderSubCode.mask);
   1044 		break;
   1045 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERSUBCODE_GET:
   1046 		rv = bcmx_field_qualify_ExtensionHeaderSubCode_get(
   1047 			req->args.field_qualify_ExtensionHeaderSubCode_get.entry,
   1048 			req->args.field_qualify_ExtensionHeaderSubCode_get.data,
   1049 			req->args.field_qualify_ExtensionHeaderSubCode_get.mask);
   1050 		break;
   1051 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERTYPE:
   1052 		rv = bcmx_field_qualify_ExtensionHeaderType(
   1053 			req->args.field_qualify_ExtensionHeaderType.entry,
   1054 			req->args.field_qualify_ExtensionHeaderType.data,
   1055 			req->args.field_qualify_ExtensionHeaderType.mask);
   1056 		break;
   1057 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_EXTENSIONHEADERTYPE_GET:
   1058 		rv = bcmx_field_qualify_ExtensionHeaderType_get(
   1059 			req->args.field_qualify_ExtensionHeaderType_get.entry,
   1060 			req->args.field_qualify_ExtensionHeaderType_get.data,
   1061 			req->args.field_qualify_ExtensionHeaderType_get.mask);
   1062 		break;
   1063 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FABRICQUEUETAG:
   1064 		rv = bcmx_field_qualify_FabricQueueTag(
   1065 			req->args.field_qualify_FabricQueueTag.entry,
   1066 			req->args.field_qualify_FabricQueueTag.data,
   1067 			req->args.field_qualify_FabricQueueTag.mask);
   1068 		break;
   1069 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FABRICQUEUETAG_GET:
   1070 		rv = bcmx_field_qualify_FabricQueueTag_get(
   1071 			req->args.field_qualify_FabricQueueTag_get.entry,
   1072 			req->args.field_qualify_FabricQueueTag_get.data,
   1073 			req->args.field_qualify_FabricQueueTag_get.mask);
   1074 		break;
   1075 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANINNER:
   1076 		rv = bcmx_field_qualify_FibreChanInner(
   1077 			req->args.field_qualify_FibreChanInner.entry,
   1078 			req->args.field_qualify_FibreChanInner.fibre_chan_type);
   1079 		break;
   1080 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANINNER_GET:
   1081 		rv = bcmx_field_qualify_FibreChanInner_get(
   1082 			req->args.field_qualify_FibreChanInner_get.entry,
   1083 			req->args.field_qualify_FibreChanInner_get.fibre_chan_type);
   1084 		break;
   1085 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANOUTER:
   1086 		rv = bcmx_field_qualify_FibreChanOuter(
   1087 			req->args.field_qualify_FibreChanOuter.entry,
   1088 			req->args.field_qualify_FibreChanOuter.fibre_chan_type);
   1089 		break;
   1090 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FIBRECHANOUTER_GET:
   1091 		rv = bcmx_field_qualify_FibreChanOuter_get(
   1092 			req->args.field_qualify_FibreChanOuter_get.entry,
   1093 			req->args.field_qualify_FibreChanOuter_get.fibre_chan_type);
   1094 		break;
   1095 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGTYPE:
   1096 		rv = bcmx_field_qualify_ForwardingType(
   1097 			req->args.field_qualify_ForwardingType.entry,
   1098 			req->args.field_qualify_ForwardingType.type);
   1099 		break;
   1100 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGTYPE_GET:
   1101 		rv = bcmx_field_qualify_ForwardingType_get(
   1102 			req->args.field_qualify_ForwardingType_get.entry,
   1103 			req->args.field_qualify_ForwardingType_get.type);
   1104 		break;
   1105 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANID:
   1106 		rv = bcmx_field_qualify_ForwardingVlanId(
   1107 			req->args.field_qualify_ForwardingVlanId.entry,
   1108 			req->args.field_qualify_ForwardingVlanId.data,
   1109 			req->args.field_qualify_ForwardingVlanId.mask);
   1110 		break;
   1111 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANID_GET:
   1112 		rv = bcmx_field_qualify_ForwardingVlanId_get(
   1113 			req->args.field_qualify_ForwardingVlanId_get.entry,
   1114 			req->args.field_qualify_ForwardingVlanId_get.data,
   1115 			req->args.field_qualify_ForwardingVlanId_get.mask);
   1116 		break;
   1117 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANVALID:
   1118 		rv = bcmx_field_qualify_ForwardingVlanValid(
   1119 			req->args.field_qualify_ForwardingVlanValid.entry,
   1120 			req->args.field_qualify_ForwardingVlanValid.data,
   1121 			req->args.field_qualify_ForwardingVlanValid.mask);
   1122 		break;
   1123 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_FORWARDINGVLANVALID_GET:
   1124 		rv = bcmx_field_qualify_ForwardingVlanValid_get(
   1125 			req->args.field_qualify_ForwardingVlanValid_get.entry,
   1126 			req->args.field_qualify_ForwardingVlanValid_get.data,
   1127 			req->args.field_qualify_ForwardingVlanValid_get.mask);
   1128 		break;
   1129 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_HIGIG:
   1130 		rv = bcmx_field_qualify_HiGig(
   1131 			req->args.field_qualify_HiGig.entry,
   1132 			req->args.field_qualify_HiGig.data,
   1133 			req->args.field_qualify_HiGig.mask);
   1134 		break;
   1135 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_HIGIG_GET:
   1136 		rv = bcmx_field_qualify_HiGig_get(
   1137 			req->args.field_qualify_HiGig_get.entry,
   1138 			req->args.field_qualify_HiGig_get.data,
   1139 			req->args.field_qualify_HiGig_get.mask);
   1140 		break;
   1141 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_ICMPTYPECODE_GET:
   1142 		rv = bcmx_field_qualify_IcmpTypeCode_get(
   1143 			req->args.field_qualify_IcmpTypeCode_get.entry,
   1144 			req->args.field_qualify_IcmpTypeCode_get.data,
   1145 			req->args.field_qualify_IcmpTypeCode_get.mask);
   1146 		break;
   1147 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORT:
   1148 		rv = bcmx_field_qualify_InPort(
   1149 			req->args.field_qualify_InPort.entry,
   1150 			req->args.field_qualify_InPort.port);
   1151 		break;
   1152 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORT_GET:
   1153 		rv = bcmx_field_qualify_InPort_get(
   1154 			req->args.field_qualify_InPort_get.entry,
   1155 			req->args.field_qualify_InPort_get.data,
   1156 			req->args.field_qualify_InPort_get.mask);
   1157 		break;
   1158 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORTS:
   1159 		rv = bcmx_field_qualify_InPorts(
   1160 			req->args.field_qualify_InPorts.entry,
   1161 			req->args.field_qualify_InPorts.lplist);
   1162 		break;
   1163 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INPORTS_GET:
   1164 		rv = bcmx_field_qualify_InPorts_get(
   1165 			req->args.field_qualify_InPorts_get.entry,
   1166 			req->args.field_qualify_InPorts_get.data,
   1167 			req->args.field_qualify_InPorts_get.mask);
   1168 		break;
   1169 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INGRESSSTPSTATE:
   1170 		rv = bcmx_field_qualify_IngressStpState(
   1171 			req->args.field_qualify_IngressStpState.entry,
   1172 			req->args.field_qualify_IngressStpState.data,
   1173 			req->args.field_qualify_IngressStpState.mask);
   1174 		break;
   1175 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INGRESSSTPSTATE_GET:
   1176 		rv = bcmx_field_qualify_IngressStpState_get(
   1177 			req->args.field_qualify_IngressStpState_get.entry,
   1178 			req->args.field_qualify_IngressStpState_get.data,
   1179 			req->args.field_qualify_IngressStpState_get.mask);
   1180 		break;
   1181 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSCP:
   1182 		rv = bcmx_field_qualify_InnerDSCP(
   1183 			req->args.field_qualify_InnerDSCP.entry,
   1184 			req->args.field_qualify_InnerDSCP.data,
   1185 			req->args.field_qualify_InnerDSCP.mask);
   1186 		break;
   1187 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSCP_GET:
   1188 		rv = bcmx_field_qualify_InnerDSCP_get(
   1189 			req->args.field_qualify_InnerDSCP_get.entry,
   1190 			req->args.field_qualify_InnerDSCP_get.data,
   1191 			req->args.field_qualify_InnerDSCP_get.mask);
   1192 		break;
   1193 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP:
   1194 		rv = bcmx_field_qualify_InnerDstIp(
   1195 			req->args.field_qualify_InnerDstIp.entry,
   1196 			req->args.field_qualify_InnerDstIp.data,
   1197 			req->args.field_qualify_InnerDstIp.mask);
   1198 		break;
   1199 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6:
   1200 		rv = bcmx_field_qualify_InnerDstIp6(
   1201 			req->args.field_qualify_InnerDstIp6.entry,
   1202 			req->args.field_qualify_InnerDstIp6.data,
   1203 			req->args.field_qualify_InnerDstIp6.mask);
   1204 		break;
   1205 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6HIGH:
   1206 		rv = bcmx_field_qualify_InnerDstIp6High(
   1207 			req->args.field_qualify_InnerDstIp6High.entry,
   1208 			req->args.field_qualify_InnerDstIp6High.data,
   1209 			req->args.field_qualify_InnerDstIp6High.mask);
   1210 		break;
   1211 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6HIGH_GET:
   1212 		rv = bcmx_field_qualify_InnerDstIp6High_get(
   1213 			req->args.field_qualify_InnerDstIp6High_get.entry,
   1214 			req->args.field_qualify_InnerDstIp6High_get.data,
   1215 			req->args.field_qualify_InnerDstIp6High_get.mask);
   1216 		break;
   1217 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP6_GET:
   1218 		rv = bcmx_field_qualify_InnerDstIp6_get(
   1219 			req->args.field_qualify_InnerDstIp6_get.entry,
   1220 			req->args.field_qualify_InnerDstIp6_get.data,
   1221 			req->args.field_qualify_InnerDstIp6_get.mask);
   1222 		break;
   1223 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERDSTIP_GET:
   1224 		rv = bcmx_field_qualify_InnerDstIp_get(
   1225 			req->args.field_qualify_InnerDstIp_get.entry,
   1226 			req->args.field_qualify_InnerDstIp_get.data,
   1227 			req->args.field_qualify_InnerDstIp_get.mask);
   1228 		break;
   1229 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIP6FLOWLABEL:
   1230 		rv = bcmx_field_qualify_InnerIp6FlowLabel(
   1231 			req->args.field_qualify_InnerIp6FlowLabel.entry,
   1232 			req->args.field_qualify_InnerIp6FlowLabel.data,
   1233 			req->args.field_qualify_InnerIp6FlowLabel.mask);
   1234 		break;
   1235 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIP6FLOWLABEL_GET:
   1236 		rv = bcmx_field_qualify_InnerIp6FlowLabel_get(
   1237 			req->args.field_qualify_InnerIp6FlowLabel_get.entry,
   1238 			req->args.field_qualify_InnerIp6FlowLabel_get.data,
   1239 			req->args.field_qualify_InnerIp6FlowLabel_get.mask);
   1240 		break;
   1241 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPFRAG:
   1242 		rv = bcmx_field_qualify_InnerIpFrag(
   1243 			req->args.field_qualify_InnerIpFrag.entry,
   1244 			req->args.field_qualify_InnerIpFrag.frag_info);
   1245 		break;
   1246 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPFRAG_GET:
   1247 		rv = bcmx_field_qualify_InnerIpFrag_get(
   1248 			req->args.field_qualify_InnerIpFrag_get.entry,
   1249 			req->args.field_qualify_InnerIpFrag_get.frag_info);
   1250 		break;
   1251 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOL:
   1252 		rv = bcmx_field_qualify_InnerIpProtocol(
   1253 			req->args.field_qualify_InnerIpProtocol.entry,
   1254 			req->args.field_qualify_InnerIpProtocol.data,
   1255 			req->args.field_qualify_InnerIpProtocol.mask);
   1256 		break;
   1257 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOLCOMMON:
   1258 		rv = bcmx_field_qualify_InnerIpProtocolCommon(
   1259 			req->args.field_qualify_InnerIpProtocolCommon.entry,
   1260 			req->args.field_qualify_InnerIpProtocolCommon.protocol);
   1261 		break;
   1262 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOLCOMMON_GET:
   1263 		rv = bcmx_field_qualify_InnerIpProtocolCommon_get(
   1264 			req->args.field_qualify_InnerIpProtocolCommon_get.entry,
   1265 			req->args.field_qualify_InnerIpProtocolCommon_get.protocol);
   1266 		break;
   1267 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPPROTOCOL_GET:
   1268 		rv = bcmx_field_qualify_InnerIpProtocol_get(
   1269 			req->args.field_qualify_InnerIpProtocol_get.entry,
   1270 			req->args.field_qualify_InnerIpProtocol_get.data,
   1271 			req->args.field_qualify_InnerIpProtocol_get.mask);
   1272 		break;
   1273 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPTYPE:
   1274 		rv = bcmx_field_qualify_InnerIpType(
   1275 			req->args.field_qualify_InnerIpType.entry,
   1276 			req->args.field_qualify_InnerIpType.type);
   1277 		break;
   1278 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERIPTYPE_GET:
   1279 		rv = bcmx_field_qualify_InnerIpType_get(
   1280 			req->args.field_qualify_InnerIpType_get.entry,
   1281 			req->args.field_qualify_InnerIpType_get.type);
   1282 		break;
   1283 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4DSTPORT:
   1284 		rv = bcmx_field_qualify_InnerL4DstPort(
   1285 			req->args.field_qualify_InnerL4DstPort.entry,
   1286 			req->args.field_qualify_InnerL4DstPort.data,
   1287 			req->args.field_qualify_InnerL4DstPort.mask);
   1288 		break;
   1289 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4DSTPORT_GET:
   1290 		rv = bcmx_field_qualify_InnerL4DstPort_get(
   1291 			req->args.field_qualify_InnerL4DstPort_get.entry,
   1292 			req->args.field_qualify_InnerL4DstPort_get.data,
   1293 			req->args.field_qualify_InnerL4DstPort_get.mask);
   1294 		break;
   1295 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4SRCPORT:
   1296 		rv = bcmx_field_qualify_InnerL4SrcPort(
   1297 			req->args.field_qualify_InnerL4SrcPort.entry,
   1298 			req->args.field_qualify_InnerL4SrcPort.data,
   1299 			req->args.field_qualify_InnerL4SrcPort.mask);
   1300 		break;
   1301 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERL4SRCPORT_GET:
   1302 		rv = bcmx_field_qualify_InnerL4SrcPort_get(
   1303 			req->args.field_qualify_InnerL4SrcPort_get.entry,
   1304 			req->args.field_qualify_InnerL4SrcPort_get.data,
   1305 			req->args.field_qualify_InnerL4SrcPort_get.mask);
   1306 		break;
   1307 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP:
   1308 		rv = bcmx_field_qualify_InnerSrcIp(
   1309 			req->args.field_qualify_InnerSrcIp.entry,
   1310 			req->args.field_qualify_InnerSrcIp.data,
   1311 			req->args.field_qualify_InnerSrcIp.mask);
   1312 		break;
   1313 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6:
   1314 		rv = bcmx_field_qualify_InnerSrcIp6(
   1315 			req->args.field_qualify_InnerSrcIp6.entry,
   1316 			req->args.field_qualify_InnerSrcIp6.data,
   1317 			req->args.field_qualify_InnerSrcIp6.mask);
   1318 		break;
   1319 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6HIGH:
   1320 		rv = bcmx_field_qualify_InnerSrcIp6High(
   1321 			req->args.field_qualify_InnerSrcIp6High.entry,
   1322 			req->args.field_qualify_InnerSrcIp6High.data,
   1323 			req->args.field_qualify_InnerSrcIp6High.mask);
   1324 		break;
   1325 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6HIGH_GET:
   1326 		rv = bcmx_field_qualify_InnerSrcIp6High_get(
   1327 			req->args.field_qualify_InnerSrcIp6High_get.entry,
   1328 			req->args.field_qualify_InnerSrcIp6High_get.data,
   1329 			req->args.field_qualify_InnerSrcIp6High_get.mask);
   1330 		break;
   1331 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP6_GET:
   1332 		rv = bcmx_field_qualify_InnerSrcIp6_get(
   1333 			req->args.field_qualify_InnerSrcIp6_get.entry,
   1334 			req->args.field_qualify_InnerSrcIp6_get.data,
   1335 			req->args.field_qualify_InnerSrcIp6_get.mask);
   1336 		break;
   1337 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERSRCIP_GET:
   1338 		rv = bcmx_field_qualify_InnerSrcIp_get(
   1339 			req->args.field_qualify_InnerSrcIp_get.entry,
   1340 			req->args.field_qualify_InnerSrcIp_get.data,
   1341 			req->args.field_qualify_InnerSrcIp_get.mask);
   1342 		break;
   1343 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTOS:
   1344 		rv = bcmx_field_qualify_InnerTos(
   1345 			req->args.field_qualify_InnerTos.entry,
   1346 			req->args.field_qualify_InnerTos.data,
   1347 			req->args.field_qualify_InnerTos.mask);
   1348 		break;
   1349 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTOS_GET:
   1350 		rv = bcmx_field_qualify_InnerTos_get(
   1351 			req->args.field_qualify_InnerTos_get.entry,
   1352 			req->args.field_qualify_InnerTos_get.data,
   1353 			req->args.field_qualify_InnerTos_get.mask);
   1354 		break;
   1355 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTPID:
   1356 		rv = bcmx_field_qualify_InnerTpid(
   1357 			req->args.field_qualify_InnerTpid.entry,
   1358 			req->args.field_qualify_InnerTpid.tpid);
   1359 		break;
   1360 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTPID_GET:
   1361 		rv = bcmx_field_qualify_InnerTpid_get(
   1362 			req->args.field_qualify_InnerTpid_get.entry,
   1363 			req->args.field_qualify_InnerTpid_get.tpid);
   1364 		break;
   1365 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTTL:
   1366 		rv = bcmx_field_qualify_InnerTtl(
   1367 			req->args.field_qualify_InnerTtl.entry,
   1368 			req->args.field_qualify_InnerTtl.data,
   1369 			req->args.field_qualify_InnerTtl.mask);
   1370 		break;
   1371 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERTTL_GET:
   1372 		rv = bcmx_field_qualify_InnerTtl_get(
   1373 			req->args.field_qualify_InnerTtl_get.entry,
   1374 			req->args.field_qualify_InnerTtl_get.data,
   1375 			req->args.field_qualify_InnerTtl_get.mask);
   1376 		break;
   1377 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLAN:
   1378 		rv = bcmx_field_qualify_InnerVlan(
   1379 			req->args.field_qualify_InnerVlan.entry,
   1380 			req->args.field_qualify_InnerVlan.data,
   1381 			req->args.field_qualify_InnerVlan.mask);
   1382 		break;
   1383 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANCFI:
   1384 		rv = bcmx_field_qualify_InnerVlanCfi(
   1385 			req->args.field_qualify_InnerVlanCfi.entry,
   1386 			req->args.field_qualify_InnerVlanCfi.data,
   1387 			req->args.field_qualify_InnerVlanCfi.mask);
   1388 		break;
   1389 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANCFI_GET:
   1390 		rv = bcmx_field_qualify_InnerVlanCfi_get(
   1391 			req->args.field_qualify_InnerVlanCfi_get.entry,
   1392 			req->args.field_qualify_InnerVlanCfi_get.data,
   1393 			req->args.field_qualify_InnerVlanCfi_get.mask);
   1394 		break;
   1395 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANID:
   1396 		rv = bcmx_field_qualify_InnerVlanId(
   1397 			req->args.field_qualify_InnerVlanId.entry,
   1398 			req->args.field_qualify_InnerVlanId.data,
   1399 			req->args.field_qualify_InnerVlanId.mask);
   1400 		break;
   1401 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANID_GET:
   1402 		rv = bcmx_field_qualify_InnerVlanId_get(
   1403 			req->args.field_qualify_InnerVlanId_get.entry,
   1404 			req->args.field_qualify_InnerVlanId_get.data,
   1405 			req->args.field_qualify_InnerVlanId_get.mask);
   1406 		break;
   1407 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANPRI:
   1408 		rv = bcmx_field_qualify_InnerVlanPri(
   1409 			req->args.field_qualify_InnerVlanPri.entry,
   1410 			req->args.field_qualify_InnerVlanPri.data,
   1411 			req->args.field_qualify_InnerVlanPri.mask);
   1412 		break;
   1413 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLANPRI_GET:
   1414 		rv = bcmx_field_qualify_InnerVlanPri_get(
   1415 			req->args.field_qualify_InnerVlanPri_get.entry,
   1416 			req->args.field_qualify_InnerVlanPri_get.data,
   1417 			req->args.field_qualify_InnerVlanPri_get.mask);
   1418 		break;
   1419 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INNERVLAN_GET:
   1420 		rv = bcmx_field_qualify_InnerVlan_get(
   1421 			req->args.field_qualify_InnerVlan_get.entry,
   1422 			req->args.field_qualify_InnerVlan_get.data,
   1423 			req->args.field_qualify_InnerVlan_get.mask);
   1424 		break;
   1425 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTPRIORITY:
   1426 		rv = bcmx_field_qualify_IntPriority(
   1427 			req->args.field_qualify_IntPriority.entry,
   1428 			req->args.field_qualify_IntPriority.data,
   1429 			req->args.field_qualify_IntPriority.mask);
   1430 		break;
   1431 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTPRIORITY_GET:
   1432 		rv = bcmx_field_qualify_IntPriority_get(
   1433 			req->args.field_qualify_IntPriority_get.entry,
   1434 			req->args.field_qualify_IntPriority_get.data,
   1435 			req->args.field_qualify_IntPriority_get.mask);
   1436 		break;
   1437 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL2:
   1438 		rv = bcmx_field_qualify_InterfaceClassL2(
   1439 			req->args.field_qualify_InterfaceClassL2.entry,
   1440 			req->args.field_qualify_InterfaceClassL2.data,
   1441 			req->args.field_qualify_InterfaceClassL2.mask);
   1442 		break;
   1443 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL2_GET:
   1444 		rv = bcmx_field_qualify_InterfaceClassL2_get(
   1445 			req->args.field_qualify_InterfaceClassL2_get.entry,
   1446 			req->args.field_qualify_InterfaceClassL2_get.data,
   1447 			req->args.field_qualify_InterfaceClassL2_get.mask);
   1448 		break;
   1449 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL3:
   1450 		rv = bcmx_field_qualify_InterfaceClassL3(
   1451 			req->args.field_qualify_InterfaceClassL3.entry,
   1452 			req->args.field_qualify_InterfaceClassL3.data,
   1453 			req->args.field_qualify_InterfaceClassL3.mask);
   1454 		break;
   1455 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSL3_GET:
   1456 		rv = bcmx_field_qualify_InterfaceClassL3_get(
   1457 			req->args.field_qualify_InterfaceClassL3_get.entry,
   1458 			req->args.field_qualify_InterfaceClassL3_get.data,
   1459 			req->args.field_qualify_InterfaceClassL3_get.mask);
   1460 		break;
   1461 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSPORT:
   1462 		rv = bcmx_field_qualify_InterfaceClassPort(
   1463 			req->args.field_qualify_InterfaceClassPort.entry,
   1464 			req->args.field_qualify_InterfaceClassPort.data,
   1465 			req->args.field_qualify_InterfaceClassPort.mask);
   1466 		break;
   1467 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_INTERFACECLASSPORT_GET:
   1468 		rv = bcmx_field_qualify_InterfaceClassPort_get(
   1469 			req->args.field_qualify_InterfaceClassPort_get.entry,
   1470 			req->args.field_qualify_InterfaceClassPort_get.data,
   1471 			req->args.field_qualify_InterfaceClassPort_get.mask);
   1472 		break;
   1473 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6FLOWLABEL:
   1474 		rv = bcmx_field_qualify_Ip6FlowLabel(
   1475 			req->args.field_qualify_Ip6FlowLabel.entry,
   1476 			req->args.field_qualify_Ip6FlowLabel.data,
   1477 			req->args.field_qualify_Ip6FlowLabel.mask);
   1478 		break;
   1479 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6FLOWLABEL_GET:
   1480 		rv = bcmx_field_qualify_Ip6FlowLabel_get(
   1481 			req->args.field_qualify_Ip6FlowLabel_get.entry,
   1482 			req->args.field_qualify_Ip6FlowLabel_get.data,
   1483 			req->args.field_qualify_Ip6FlowLabel_get.mask);
   1484 		break;
   1485 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6HOPLIMIT:
   1486 		rv = bcmx_field_qualify_Ip6HopLimit(
   1487 			req->args.field_qualify_Ip6HopLimit.entry,
   1488 			req->args.field_qualify_Ip6HopLimit.data,
   1489 			req->args.field_qualify_Ip6HopLimit.mask);
   1490 		break;
   1491 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6HOPLIMIT_GET:
   1492 		rv = bcmx_field_qualify_Ip6HopLimit_get(
   1493 			req->args.field_qualify_Ip6HopLimit_get.entry,
   1494 			req->args.field_qualify_Ip6HopLimit_get.data,
   1495 			req->args.field_qualify_Ip6HopLimit_get.mask);
   1496 		break;
   1497 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6NEXTHEADER:
   1498 		rv = bcmx_field_qualify_Ip6NextHeader(
   1499 			req->args.field_qualify_Ip6NextHeader.entry,
   1500 			req->args.field_qualify_Ip6NextHeader.data,
   1501 			req->args.field_qualify_Ip6NextHeader.mask);
   1502 		break;
   1503 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6NEXTHEADER_GET:
   1504 		rv = bcmx_field_qualify_Ip6NextHeader_get(
   1505 			req->args.field_qualify_Ip6NextHeader_get.entry,
   1506 			req->args.field_qualify_Ip6NextHeader_get.data,
   1507 			req->args.field_qualify_Ip6NextHeader_get.mask);
   1508 		break;
   1509 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6TRAFFICCLASS:
   1510 		rv = bcmx_field_qualify_Ip6TrafficClass(
   1511 			req->args.field_qualify_Ip6TrafficClass.entry,
   1512 			req->args.field_qualify_Ip6TrafficClass.data,
   1513 			req->args.field_qualify_Ip6TrafficClass.mask);
   1514 		break;
   1515 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IP6TRAFFICCLASS_GET:
   1516 		rv = bcmx_field_qualify_Ip6TrafficClass_get(
   1517 			req->args.field_qualify_Ip6TrafficClass_get.entry,
   1518 			req->args.field_qualify_Ip6TrafficClass_get.data,
   1519 			req->args.field_qualify_Ip6TrafficClass_get.mask);
   1520 		break;
   1521 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFLAGS:
   1522 		rv = bcmx_field_qualify_IpFlags(
   1523 			req->args.field_qualify_IpFlags.entry,
   1524 			req->args.field_qualify_IpFlags.data,
   1525 			req->args.field_qualify_IpFlags.mask);
   1526 		break;
   1527 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFLAGS_GET:
   1528 		rv = bcmx_field_qualify_IpFlags_get(
   1529 			req->args.field_qualify_IpFlags_get.entry,
   1530 			req->args.field_qualify_IpFlags_get.data,
   1531 			req->args.field_qualify_IpFlags_get.mask);
   1532 		break;
   1533 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFRAG:
   1534 		rv = bcmx_field_qualify_IpFrag(
   1535 			req->args.field_qualify_IpFrag.entry,
   1536 			req->args.field_qualify_IpFrag.frag_info);
   1537 		break;
   1538 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPFRAG_GET:
   1539 		rv = bcmx_field_qualify_IpFrag_get(
   1540 			req->args.field_qualify_IpFrag_get.entry,
   1541 			req->args.field_qualify_IpFrag_get.frag_info);
   1542 		break;
   1543 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPINFO:
   1544 		rv = bcmx_field_qualify_IpInfo(
   1545 			req->args.field_qualify_IpInfo.entry,
   1546 			req->args.field_qualify_IpInfo.data,
   1547 			req->args.field_qualify_IpInfo.mask);
   1548 		break;
   1549 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPINFO_GET:
   1550 		rv = bcmx_field_qualify_IpInfo_get(
   1551 			req->args.field_qualify_IpInfo_get.entry,
   1552 			req->args.field_qualify_IpInfo_get.data,
   1553 			req->args.field_qualify_IpInfo_get.mask);
   1554 		break;
   1555 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOL:
   1556 		rv = bcmx_field_qualify_IpProtocol(
   1557 			req->args.field_qualify_IpProtocol.entry,
   1558 			req->args.field_qualify_IpProtocol.data,
   1559 			req->args.field_qualify_IpProtocol.mask);
   1560 		break;
   1561 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOLCOMMON:
   1562 		rv = bcmx_field_qualify_IpProtocolCommon(
   1563 			req->args.field_qualify_IpProtocolCommon.entry,
   1564 			req->args.field_qualify_IpProtocolCommon.protocol);
   1565 		break;
   1566 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOLCOMMON_GET:
   1567 		rv = bcmx_field_qualify_IpProtocolCommon_get(
   1568 			req->args.field_qualify_IpProtocolCommon_get.entry,
   1569 			req->args.field_qualify_IpProtocolCommon_get.protocol);
   1570 		break;
   1571 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPPROTOCOL_GET:
   1572 		rv = bcmx_field_qualify_IpProtocol_get(
   1573 			req->args.field_qualify_IpProtocol_get.entry,
   1574 			req->args.field_qualify_IpProtocol_get.data,
   1575 			req->args.field_qualify_IpProtocol_get.mask);
   1576 		break;
   1577 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPTYPE:
   1578 		rv = bcmx_field_qualify_IpType(
   1579 			req->args.field_qualify_IpType.entry,
   1580 			req->args.field_qualify_IpType.type);
   1581 		break;
   1582 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPTYPE_GET:
   1583 		rv = bcmx_field_qualify_IpType_get(
   1584 			req->args.field_qualify_IpType_get.entry,
   1585 			req->args.field_qualify_IpType_get.type);
   1586 		break;
   1587 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPMCSTARGROUPHIT:
   1588 		rv = bcmx_field_qualify_IpmcStarGroupHit(
   1589 			req->args.field_qualify_IpmcStarGroupHit.entry,
   1590 			req->args.field_qualify_IpmcStarGroupHit.data,
   1591 			req->args.field_qualify_IpmcStarGroupHit.mask);
   1592 		break;
   1593 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_IPMCSTARGROUPHIT_GET:
   1594 		rv = bcmx_field_qualify_IpmcStarGroupHit_get(
   1595 			req->args.field_qualify_IpmcStarGroupHit_get.entry,
   1596 			req->args.field_qualify_IpmcStarGroupHit_get.data,
   1597 			req->args.field_qualify_IpmcStarGroupHit_get.mask);
   1598 		break;
   1599 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2CACHEHIT:
   1600 		rv = bcmx_field_qualify_L2CacheHit(
   1601 			req->args.field_qualify_L2CacheHit.entry,
   1602 			req->args.field_qualify_L2CacheHit.data,
   1603 			req->args.field_qualify_L2CacheHit.mask);
   1604 		break;
   1605 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2CACHEHIT_GET:
   1606 		rv = bcmx_field_qualify_L2CacheHit_get(
   1607 			req->args.field_qualify_L2CacheHit_get.entry,
   1608 			req->args.field_qualify_L2CacheHit_get.data,
   1609 			req->args.field_qualify_L2CacheHit_get.mask);
   1610 		break;
   1611 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2DESTHIT:
   1612 		rv = bcmx_field_qualify_L2DestHit(
   1613 			req->args.field_qualify_L2DestHit.entry,
   1614 			req->args.field_qualify_L2DestHit.data,
   1615 			req->args.field_qualify_L2DestHit.mask);
   1616 		break;
   1617 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2DESTHIT_GET:
   1618 		rv = bcmx_field_qualify_L2DestHit_get(
   1619 			req->args.field_qualify_L2DestHit_get.entry,
   1620 			req->args.field_qualify_L2DestHit_get.data,
   1621 			req->args.field_qualify_L2DestHit_get.mask);
   1622 		break;
   1623 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2FORMAT:
   1624 		rv = bcmx_field_qualify_L2Format(
   1625 			req->args.field_qualify_L2Format.entry,
   1626 			req->args.field_qualify_L2Format.type);
   1627 		break;
   1628 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2FORMAT_GET:
   1629 		rv = bcmx_field_qualify_L2Format_get(
   1630 			req->args.field_qualify_L2Format_get.entry,
   1631 			req->args.field_qualify_L2Format_get.type);
   1632 		break;
   1633 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2PAYLOADFIRSTEIGHTBYTES:
   1634 		rv = bcmx_field_qualify_L2PayloadFirstEightBytes(
   1635 			req->args.field_qualify_L2PayloadFirstEightBytes.entry,
   1636 			req->args.field_qualify_L2PayloadFirstEightBytes.data1,
   1637 			req->args.field_qualify_L2PayloadFirstEightBytes.data2,
   1638 			req->args.field_qualify_L2PayloadFirstEightBytes.mask1,
   1639 			req->args.field_qualify_L2PayloadFirstEightBytes.mask2);
   1640 		break;
   1641 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2PAYLOADFIRSTEIGHTBYTES_GET:
   1642 		rv = bcmx_field_qualify_L2PayloadFirstEightBytes_get(
   1643 			req->args.field_qualify_L2PayloadFirstEightBytes_get.entry,
   1644 			req->args.field_qualify_L2PayloadFirstEightBytes_get.data1,
   1645 			req->args.field_qualify_L2PayloadFirstEightBytes_get.data2,
   1646 			req->args.field_qualify_L2PayloadFirstEightBytes_get.mask1,
   1647 			req->args.field_qualify_L2PayloadFirstEightBytes_get.mask2);
   1648 		break;
   1649 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCHIT:
   1650 		rv = bcmx_field_qualify_L2SrcHit(
   1651 			req->args.field_qualify_L2SrcHit.entry,
   1652 			req->args.field_qualify_L2SrcHit.data,
   1653 			req->args.field_qualify_L2SrcHit.mask);
   1654 		break;
   1655 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCHIT_GET:
   1656 		rv = bcmx_field_qualify_L2SrcHit_get(
   1657 			req->args.field_qualify_L2SrcHit_get.entry,
   1658 			req->args.field_qualify_L2SrcHit_get.data,
   1659 			req->args.field_qualify_L2SrcHit_get.mask);
   1660 		break;
   1661 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCSTATIC:
   1662 		rv = bcmx_field_qualify_L2SrcStatic(
   1663 			req->args.field_qualify_L2SrcStatic.entry,
   1664 			req->args.field_qualify_L2SrcStatic.data,
   1665 			req->args.field_qualify_L2SrcStatic.mask);
   1666 		break;
   1667 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2SRCSTATIC_GET:
   1668 		rv = bcmx_field_qualify_L2SrcStatic_get(
   1669 			req->args.field_qualify_L2SrcStatic_get.entry,
   1670 			req->args.field_qualify_L2SrcStatic_get.data,
   1671 			req->args.field_qualify_L2SrcStatic_get.mask);
   1672 		break;
   1673 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2STATIONMOVE:
   1674 		rv = bcmx_field_qualify_L2StationMove(
   1675 			req->args.field_qualify_L2StationMove.entry,
   1676 			req->args.field_qualify_L2StationMove.data,
   1677 			req->args.field_qualify_L2StationMove.mask);
   1678 		break;
   1679 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L2STATIONMOVE_GET:
   1680 		rv = bcmx_field_qualify_L2StationMove_get(
   1681 			req->args.field_qualify_L2StationMove_get.entry,
   1682 			req->args.field_qualify_L2StationMove_get.data,
   1683 			req->args.field_qualify_L2StationMove_get.mask);
   1684 		break;
   1685 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTHOSTHIT:
   1686 		rv = bcmx_field_qualify_L3DestHostHit(
   1687 			req->args.field_qualify_L3DestHostHit.entry,
   1688 			req->args.field_qualify_L3DestHostHit.data,
   1689 			req->args.field_qualify_L3DestHostHit.mask);
   1690 		break;
   1691 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTHOSTHIT_GET:
   1692 		rv = bcmx_field_qualify_L3DestHostHit_get(
   1693 			req->args.field_qualify_L3DestHostHit_get.entry,
   1694 			req->args.field_qualify_L3DestHostHit_get.data,
   1695 			req->args.field_qualify_L3DestHostHit_get.mask);
   1696 		break;
   1697 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTROUTEHIT:
   1698 		rv = bcmx_field_qualify_L3DestRouteHit(
   1699 			req->args.field_qualify_L3DestRouteHit.entry,
   1700 			req->args.field_qualify_L3DestRouteHit.data,
   1701 			req->args.field_qualify_L3DestRouteHit.mask);
   1702 		break;
   1703 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3DESTROUTEHIT_GET:
   1704 		rv = bcmx_field_qualify_L3DestRouteHit_get(
   1705 			req->args.field_qualify_L3DestRouteHit_get.entry,
   1706 			req->args.field_qualify_L3DestRouteHit_get.data,
   1707 			req->args.field_qualify_L3DestRouteHit_get.mask);
   1708 		break;
   1709 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3INGRESS:
   1710 		rv = bcmx_field_qualify_L3Ingress(
   1711 			req->args.field_qualify_L3Ingress.entry,
   1712 			req->args.field_qualify_L3Ingress.data,
   1713 			req->args.field_qualify_L3Ingress.mask);
   1714 		break;
   1715 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3INGRESS_GET:
   1716 		rv = bcmx_field_qualify_L3Ingress_get(
   1717 			req->args.field_qualify_L3Ingress_get.entry,
   1718 			req->args.field_qualify_L3Ingress_get.data,
   1719 			req->args.field_qualify_L3Ingress_get.mask);
   1720 		break;
   1721 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3ROUTABLE:
   1722 		rv = bcmx_field_qualify_L3Routable(
   1723 			req->args.field_qualify_L3Routable.entry,
   1724 			req->args.field_qualify_L3Routable.data,
   1725 			req->args.field_qualify_L3Routable.mask);
   1726 		break;
   1727 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3ROUTABLE_GET:
   1728 		rv = bcmx_field_qualify_L3Routable_get(
   1729 			req->args.field_qualify_L3Routable_get.entry,
   1730 			req->args.field_qualify_L3Routable_get.data,
   1731 			req->args.field_qualify_L3Routable_get.mask);
   1732 		break;
   1733 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3SRCHOSTHIT:
   1734 		rv = bcmx_field_qualify_L3SrcHostHit(
   1735 			req->args.field_qualify_L3SrcHostHit.entry,
   1736 			req->args.field_qualify_L3SrcHostHit.data,
   1737 			req->args.field_qualify_L3SrcHostHit.mask);
   1738 		break;
   1739 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L3SRCHOSTHIT_GET:
   1740 		rv = bcmx_field_qualify_L3SrcHostHit_get(
   1741 			req->args.field_qualify_L3SrcHostHit_get.entry,
   1742 			req->args.field_qualify_L3SrcHostHit_get.data,
   1743 			req->args.field_qualify_L3SrcHostHit_get.mask);
   1744 		break;
   1745 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4DSTPORT:
   1746 		rv = bcmx_field_qualify_L4DstPort(
   1747 			req->args.field_qualify_L4DstPort.entry,
   1748 			req->args.field_qualify_L4DstPort.data,
   1749 			req->args.field_qualify_L4DstPort.mask);
   1750 		break;
   1751 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4DSTPORT_GET:
   1752 		rv = bcmx_field_qualify_L4DstPort_get(
   1753 			req->args.field_qualify_L4DstPort_get.entry,
   1754 			req->args.field_qualify_L4DstPort_get.data,
   1755 			req->args.field_qualify_L4DstPort_get.mask);
   1756 		break;
   1757 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4PORTS:
   1758 		rv = bcmx_field_qualify_L4Ports(
   1759 			req->args.field_qualify_L4Ports.entry,
   1760 			req->args.field_qualify_L4Ports.data,
   1761 			req->args.field_qualify_L4Ports.mask);
   1762 		break;
   1763 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4PORTS_GET:
   1764 		rv = bcmx_field_qualify_L4Ports_get(
   1765 			req->args.field_qualify_L4Ports_get.entry,
   1766 			req->args.field_qualify_L4Ports_get.data,
   1767 			req->args.field_qualify_L4Ports_get.mask);
   1768 		break;
   1769 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4SRCPORT:
   1770 		rv = bcmx_field_qualify_L4SrcPort(
   1771 			req->args.field_qualify_L4SrcPort.entry,
   1772 			req->args.field_qualify_L4SrcPort.data,
   1773 			req->args.field_qualify_L4SrcPort.mask);
   1774 		break;
   1775 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_L4SRCPORT_GET:
   1776 		rv = bcmx_field_qualify_L4SrcPort_get(
   1777 			req->args.field_qualify_L4SrcPort_get.entry,
   1778 			req->args.field_qualify_L4SrcPort_get.data,
   1779 			req->args.field_qualify_L4SrcPort_get.mask);
   1780 		break;
   1781 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LLC:
   1782 		rv = bcmx_field_qualify_Llc(
   1783 			req->args.field_qualify_Llc.entry,
   1784 			req->args.field_qualify_Llc.data,
   1785 			req->args.field_qualify_Llc.mask);
   1786 		break;
   1787 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LLC_GET:
   1788 		rv = bcmx_field_qualify_Llc_get(
   1789 			req->args.field_qualify_Llc_get.entry,
   1790 			req->args.field_qualify_Llc_get.data,
   1791 			req->args.field_qualify_Llc_get.mask);
   1792 		break;
   1793 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACK:
   1794 		rv = bcmx_field_qualify_Loopback(
   1795 			req->args.field_qualify_Loopback.entry,
   1796 			req->args.field_qualify_Loopback.data,
   1797 			req->args.field_qualify_Loopback.mask);
   1798 		break;
   1799 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACKTYPE:
   1800 		rv = bcmx_field_qualify_LoopbackType(
   1801 			req->args.field_qualify_LoopbackType.entry,
   1802 			req->args.field_qualify_LoopbackType.loopback_type);
   1803 		break;
   1804 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACKTYPE_GET:
   1805 		rv = bcmx_field_qualify_LoopbackType_get(
   1806 			req->args.field_qualify_LoopbackType_get.entry,
   1807 			req->args.field_qualify_LoopbackType_get.loopback_type);
   1808 		break;
   1809 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_LOOPBACK_GET:
   1810 		rv = bcmx_field_qualify_Loopback_get(
   1811 			req->args.field_qualify_Loopback_get.entry,
   1812 			req->args.field_qualify_Loopback_get.data,
   1813 			req->args.field_qualify_Loopback_get.mask);
   1814 		break;
   1815 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MHOPCODE:
   1816 		rv = bcmx_field_qualify_MHOpcode(
   1817 			req->args.field_qualify_MHOpcode.entry,
   1818 			req->args.field_qualify_MHOpcode.data,
   1819 			req->args.field_qualify_MHOpcode.mask);
   1820 		break;
   1821 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MHOPCODE_GET:
   1822 		rv = bcmx_field_qualify_MHOpcode_get(
   1823 			req->args.field_qualify_MHOpcode_get.entry,
   1824 			req->args.field_qualify_MHOpcode_get.data,
   1825 			req->args.field_qualify_MHOpcode_get.mask);
   1826 		break;
   1827 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MIRRORCOPY:
   1828 		rv = bcmx_field_qualify_MirrorCopy(
   1829 			req->args.field_qualify_MirrorCopy.entry,
   1830 			req->args.field_qualify_MirrorCopy.data,
   1831 			req->args.field_qualify_MirrorCopy.mask);
   1832 		break;
   1833 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MIRRORCOPY_GET:
   1834 		rv = bcmx_field_qualify_MirrorCopy_get(
   1835 			req->args.field_qualify_MirrorCopy_get.entry,
   1836 			req->args.field_qualify_MirrorCopy_get.data,
   1837 			req->args.field_qualify_MirrorCopy_get.mask);
   1838 		break;
   1839 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MPLSTERMINATED:
   1840 		rv = bcmx_field_qualify_MplsTerminated(
   1841 			req->args.field_qualify_MplsTerminated.entry,
   1842 			req->args.field_qualify_MplsTerminated.data,
   1843 			req->args.field_qualify_MplsTerminated.mask);
   1844 		break;
   1845 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MPLSTERMINATED_GET:
   1846 		rv = bcmx_field_qualify_MplsTerminated_get(
   1847 			req->args.field_qualify_MplsTerminated_get.entry,
   1848 			req->args.field_qualify_MplsTerminated_get.data,
   1849 			req->args.field_qualify_MplsTerminated_get.mask);
   1850 		break;
   1851 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MYSTATIONHIT:
   1852 		rv = bcmx_field_qualify_MyStationHit(
   1853 			req->args.field_qualify_MyStationHit.entry,
   1854 			req->args.field_qualify_MyStationHit.data,
   1855 			req->args.field_qualify_MyStationHit.mask);
   1856 		break;
   1857 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_MYSTATIONHIT_GET:
   1858 		rv = bcmx_field_qualify_MyStationHit_get(
   1859 			req->args.field_qualify_MyStationHit_get.entry,
   1860 			req->args.field_qualify_MyStationHit_get.data,
   1861 			req->args.field_qualify_MyStationHit_get.mask);
   1862 		break;
   1863 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORT:
   1864 		rv = bcmx_field_qualify_OutPort(
   1865 			req->args.field_qualify_OutPort.entry,
   1866 			req->args.field_qualify_OutPort.port);
   1867 		break;
   1868 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORT_GET:
   1869 		rv = bcmx_field_qualify_OutPort_get(
   1870 			req->args.field_qualify_OutPort_get.entry,
   1871 			req->args.field_qualify_OutPort_get.data,
   1872 			req->args.field_qualify_OutPort_get.mask);
   1873 		break;
   1874 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORTS:
   1875 		rv = bcmx_field_qualify_OutPorts(
   1876 			req->args.field_qualify_OutPorts.entry,
   1877 			req->args.field_qualify_OutPorts.lplist);
   1878 		break;
   1879 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTPORTS_GET:
   1880 		rv = bcmx_field_qualify_OutPorts_get(
   1881 			req->args.field_qualify_OutPorts_get.entry,
   1882 			req->args.field_qualify_OutPorts_get.data,
   1883 			req->args.field_qualify_OutPorts_get.mask);
   1884 		break;
   1885 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERTPID:
   1886 		rv = bcmx_field_qualify_OuterTpid(
   1887 			req->args.field_qualify_OuterTpid.entry,
   1888 			req->args.field_qualify_OuterTpid.tpid);
   1889 		break;
   1890 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERTPID_GET:
   1891 		rv = bcmx_field_qualify_OuterTpid_get(
   1892 			req->args.field_qualify_OuterTpid_get.entry,
   1893 			req->args.field_qualify_OuterTpid_get.tpid);
   1894 		break;
   1895 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLAN:
   1896 		rv = bcmx_field_qualify_OuterVlan(
   1897 			req->args.field_qualify_OuterVlan.entry,
   1898 			req->args.field_qualify_OuterVlan.data,
   1899 			req->args.field_qualify_OuterVlan.mask);
   1900 		break;
   1901 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANCFI:
   1902 		rv = bcmx_field_qualify_OuterVlanCfi(
   1903 			req->args.field_qualify_OuterVlanCfi.entry,
   1904 			req->args.field_qualify_OuterVlanCfi.data,
   1905 			req->args.field_qualify_OuterVlanCfi.mask);
   1906 		break;
   1907 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANCFI_GET:
   1908 		rv = bcmx_field_qualify_OuterVlanCfi_get(
   1909 			req->args.field_qualify_OuterVlanCfi_get.entry,
   1910 			req->args.field_qualify_OuterVlanCfi_get.data,
   1911 			req->args.field_qualify_OuterVlanCfi_get.mask);
   1912 		break;
   1913 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANID:
   1914 		rv = bcmx_field_qualify_OuterVlanId(
   1915 			req->args.field_qualify_OuterVlanId.entry,
   1916 			req->args.field_qualify_OuterVlanId.data,
   1917 			req->args.field_qualify_OuterVlanId.mask);
   1918 		break;
   1919 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANID_GET:
   1920 		rv = bcmx_field_qualify_OuterVlanId_get(
   1921 			req->args.field_qualify_OuterVlanId_get.entry,
   1922 			req->args.field_qualify_OuterVlanId_get.data,
   1923 			req->args.field_qualify_OuterVlanId_get.mask);
   1924 		break;
   1925 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANPRI:
   1926 		rv = bcmx_field_qualify_OuterVlanPri(
   1927 			req->args.field_qualify_OuterVlanPri.entry,
   1928 			req->args.field_qualify_OuterVlanPri.data,
   1929 			req->args.field_qualify_OuterVlanPri.mask);
   1930 		break;
   1931 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLANPRI_GET:
   1932 		rv = bcmx_field_qualify_OuterVlanPri_get(
   1933 			req->args.field_qualify_OuterVlanPri_get.entry,
   1934 			req->args.field_qualify_OuterVlanPri_get.data,
   1935 			req->args.field_qualify_OuterVlanPri_get.mask);
   1936 		break;
   1937 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_OUTERVLAN_GET:
   1938 		rv = bcmx_field_qualify_OuterVlan_get(
   1939 			req->args.field_qualify_OuterVlan_get.entry,
   1940 			req->args.field_qualify_OuterVlan_get.data,
   1941 			req->args.field_qualify_OuterVlan_get.mask);
   1942 		break;
   1943 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_PACKETRES:
   1944 		rv = bcmx_field_qualify_PacketRes(
   1945 			req->args.field_qualify_PacketRes.entry,
   1946 			req->args.field_qualify_PacketRes.data,
   1947 			req->args.field_qualify_PacketRes.mask);
   1948 		break;
   1949 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_PACKETRES_GET:
   1950 		rv = bcmx_field_qualify_PacketRes_get(
   1951 			req->args.field_qualify_PacketRes_get.entry,
   1952 			req->args.field_qualify_PacketRes_get.data,
   1953 			req->args.field_qualify_PacketRes_get.mask);
   1954 		break;
   1955 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_RANGECHECK:
   1956 		rv = bcmx_field_qualify_RangeCheck(
   1957 			req->args.field_qualify_RangeCheck.entry,
   1958 			req->args.field_qualify_RangeCheck.range,
   1959 			req->args.field_qualify_RangeCheck.result);
   1960 		break;
   1961 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_RANGECHECK_GET:
   1962 		rv = bcmx_field_qualify_RangeCheck_get(
   1963 			req->args.field_qualify_RangeCheck_get.entry,
   1964 			req->args.field_qualify_RangeCheck_get.max_count,
   1965 			req->args.field_qualify_RangeCheck_get.range,
   1966 			req->args.field_qualify_RangeCheck_get.invert,
   1967 			req->args.field_qualify_RangeCheck_get.count);
   1968 		break;
   1969 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SNAP:
   1970 		rv = bcmx_field_qualify_Snap(
   1971 			req->args.field_qualify_Snap.entry,
   1972 			req->args.field_qualify_Snap.data,
   1973 			req->args.field_qualify_Snap.mask);
   1974 		break;
   1975 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SNAP_GET:
   1976 		rv = bcmx_field_qualify_Snap_get(
   1977 			req->args.field_qualify_Snap_get.entry,
   1978 			req->args.field_qualify_Snap_get.data,
   1979 			req->args.field_qualify_Snap_get.mask);
   1980 		break;
   1981 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSFIELD:
   1982 		rv = bcmx_field_qualify_SrcClassField(
   1983 			req->args.field_qualify_SrcClassField.entry,
   1984 			req->args.field_qualify_SrcClassField.data,
   1985 			req->args.field_qualify_SrcClassField.mask);
   1986 		break;
   1987 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSFIELD_GET:
   1988 		rv = bcmx_field_qualify_SrcClassField_get(
   1989 			req->args.field_qualify_SrcClassField_get.entry,
   1990 			req->args.field_qualify_SrcClassField_get.data,
   1991 			req->args.field_qualify_SrcClassField_get.mask);
   1992 		break;
   1993 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL2:
   1994 		rv = bcmx_field_qualify_SrcClassL2(
   1995 			req->args.field_qualify_SrcClassL2.entry,
   1996 			req->args.field_qualify_SrcClassL2.data,
   1997 			req->args.field_qualify_SrcClassL2.mask);
   1998 		break;
   1999 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL2_GET:
   2000 		rv = bcmx_field_qualify_SrcClassL2_get(
   2001 			req->args.field_qualify_SrcClassL2_get.entry,
   2002 			req->args.field_qualify_SrcClassL2_get.data,
   2003 			req->args.field_qualify_SrcClassL2_get.mask);
   2004 		break;
   2005 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL3:
   2006 		rv = bcmx_field_qualify_SrcClassL3(
   2007 			req->args.field_qualify_SrcClassL3.entry,
   2008 			req->args.field_qualify_SrcClassL3.data,
   2009 			req->args.field_qualify_SrcClassL3.mask);
   2010 		break;
   2011 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCCLASSL3_GET:
   2012 		rv = bcmx_field_qualify_SrcClassL3_get(
   2013 			req->args.field_qualify_SrcClassL3_get.entry,
   2014 			req->args.field_qualify_SrcClassL3_get.data,
   2015 			req->args.field_qualify_SrcClassL3_get.mask);
   2016 		break;
   2017 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP:
   2018 		rv = bcmx_field_qualify_SrcIp(
   2019 			req->args.field_qualify_SrcIp.entry,
   2020 			req->args.field_qualify_SrcIp.data,
   2021 			req->args.field_qualify_SrcIp.mask);
   2022 		break;
   2023 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6:
   2024 		rv = bcmx_field_qualify_SrcIp6(
   2025 			req->args.field_qualify_SrcIp6.entry,
   2026 			req->args.field_qualify_SrcIp6.data,
   2027 			req->args.field_qualify_SrcIp6.mask);
   2028 		break;
   2029 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6HIGH:
   2030 		rv = bcmx_field_qualify_SrcIp6High(
   2031 			req->args.field_qualify_SrcIp6High.entry,
   2032 			req->args.field_qualify_SrcIp6High.data,
   2033 			req->args.field_qualify_SrcIp6High.mask);
   2034 		break;
   2035 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6HIGH_GET:
   2036 		rv = bcmx_field_qualify_SrcIp6High_get(
   2037 			req->args.field_qualify_SrcIp6High_get.entry,
   2038 			req->args.field_qualify_SrcIp6High_get.data,
   2039 			req->args.field_qualify_SrcIp6High_get.mask);
   2040 		break;
   2041 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6LOW:
   2042 		rv = bcmx_field_qualify_SrcIp6Low(
   2043 			req->args.field_qualify_SrcIp6Low.entry,
   2044 			req->args.field_qualify_SrcIp6Low.data,
   2045 			req->args.field_qualify_SrcIp6Low.mask);
   2046 		break;
   2047 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6LOW_GET:
   2048 		rv = bcmx_field_qualify_SrcIp6Low_get(
   2049 			req->args.field_qualify_SrcIp6Low_get.entry,
   2050 			req->args.field_qualify_SrcIp6Low_get.data,
   2051 			req->args.field_qualify_SrcIp6Low_get.mask);
   2052 		break;
   2053 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP6_GET:
   2054 		rv = bcmx_field_qualify_SrcIp6_get(
   2055 			req->args.field_qualify_SrcIp6_get.entry,
   2056 			req->args.field_qualify_SrcIp6_get.data,
   2057 			req->args.field_qualify_SrcIp6_get.mask);
   2058 		break;
   2059 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCIP_GET:
   2060 		rv = bcmx_field_qualify_SrcIp_get(
   2061 			req->args.field_qualify_SrcIp_get.entry,
   2062 			req->args.field_qualify_SrcIp_get.data,
   2063 			req->args.field_qualify_SrcIp_get.mask);
   2064 		break;
   2065 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMAC:
   2066 		rv = bcmx_field_qualify_SrcMac(
   2067 			req->args.field_qualify_SrcMac.entry,
   2068 			req->args.field_qualify_SrcMac.data,
   2069 			req->args.field_qualify_SrcMac.mask);
   2070 		break;
   2071 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMAC_GET:
   2072 		rv = bcmx_field_qualify_SrcMac_get(
   2073 			req->args.field_qualify_SrcMac_get.entry,
   2074 			req->args.field_qualify_SrcMac_get.data,
   2075 			req->args.field_qualify_SrcMac_get.mask);
   2076 		break;
   2077 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMIMGPORT:
   2078 		rv = bcmx_field_qualify_SrcMimGport(
   2079 			req->args.field_qualify_SrcMimGport.entry,
   2080 			req->args.field_qualify_SrcMimGport.mim_port_id);
   2081 		break;
   2082 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMIMGPORT_GET:
   2083 		rv = bcmx_field_qualify_SrcMimGport_get(
   2084 			req->args.field_qualify_SrcMimGport_get.entry,
   2085 			req->args.field_qualify_SrcMimGport_get.mim_port_id);
   2086 		break;
   2087 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODPORTGPORT:
   2088 		rv = bcmx_field_qualify_SrcModPortGport(
   2089 			req->args.field_qualify_SrcModPortGport.entry,
   2090 			req->args.field_qualify_SrcModPortGport.data);
   2091 		break;
   2092 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODPORTGPORT_GET:
   2093 		rv = bcmx_field_qualify_SrcModPortGport_get(
   2094 			req->args.field_qualify_SrcModPortGport_get.entry,
   2095 			req->args.field_qualify_SrcModPortGport_get.data);
   2096 		break;
   2097 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODULEGPORT:
   2098 		rv = bcmx_field_qualify_SrcModuleGport(
   2099 			req->args.field_qualify_SrcModuleGport.entry,
   2100 			req->args.field_qualify_SrcModuleGport.data);
   2101 		break;
   2102 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMODULEGPORT_GET:
   2103 		rv = bcmx_field_qualify_SrcModuleGport_get(
   2104 			req->args.field_qualify_SrcModuleGport_get.entry,
   2105 			req->args.field_qualify_SrcModuleGport_get.data);
   2106 		break;
   2107 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMPLSGPORT:
   2108 		rv = bcmx_field_qualify_SrcMplsGport(
   2109 			req->args.field_qualify_SrcMplsGport.entry,
   2110 			req->args.field_qualify_SrcMplsGport.mpls_port_id);
   2111 		break;
   2112 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCMPLSGPORT_GET:
   2113 		rv = bcmx_field_qualify_SrcMplsGport_get(
   2114 			req->args.field_qualify_SrcMplsGport_get.entry,
   2115 			req->args.field_qualify_SrcMplsGport_get.mpls_port_id);
   2116 		break;
   2117 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCPORT:
   2118 		rv = bcmx_field_qualify_SrcPort(
   2119 			req->args.field_qualify_SrcPort.entry,
   2120 			req->args.field_qualify_SrcPort.port);
   2121 		break;
   2122 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCPORT_GET:
   2123 		rv = bcmx_field_qualify_SrcPort_get(
   2124 			req->args.field_qualify_SrcPort_get.entry,
   2125 			req->args.field_qualify_SrcPort_get.data_modid,
   2126 			req->args.field_qualify_SrcPort_get.mask_modid,
   2127 			req->args.field_qualify_SrcPort_get.data_port,
   2128 			req->args.field_qualify_SrcPort_get.mask_port);
   2129 		break;
   2130 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCTRUNK:
   2131 		rv = bcmx_field_qualify_SrcTrunk(
   2132 			req->args.field_qualify_SrcTrunk.entry,
   2133 			req->args.field_qualify_SrcTrunk.tid);
   2134 		break;
   2135 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCTRUNK_GET:
   2136 		rv = bcmx_field_qualify_SrcTrunk_get(
   2137 			req->args.field_qualify_SrcTrunk_get.entry,
   2138 			req->args.field_qualify_SrcTrunk_get.data,
   2139 			req->args.field_qualify_SrcTrunk_get.mask);
   2140 		break;
   2141 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCVIRTUALPORTVALID:
   2142 		rv = bcmx_field_qualify_SrcVirtualPortValid(
   2143 			req->args.field_qualify_SrcVirtualPortValid.entry,
   2144 			req->args.field_qualify_SrcVirtualPortValid.data,
   2145 			req->args.field_qualify_SrcVirtualPortValid.mask);
   2146 		break;
   2147 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCVIRTUALPORTVALID_GET:
   2148 		rv = bcmx_field_qualify_SrcVirtualPortValid_get(
   2149 			req->args.field_qualify_SrcVirtualPortValid_get.entry,
   2150 			req->args.field_qualify_SrcVirtualPortValid_get.data,
   2151 			req->args.field_qualify_SrcVirtualPortValid_get.mask);
   2152 		break;
   2153 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCWLANGPORT:
   2154 		rv = bcmx_field_qualify_SrcWlanGport(
   2155 			req->args.field_qualify_SrcWlanGport.entry,
   2156 			req->args.field_qualify_SrcWlanGport.wlan_port_id);
   2157 		break;
   2158 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_SRCWLANGPORT_GET:
   2159 		rv = bcmx_field_qualify_SrcWlanGport_get(
   2160 			req->args.field_qualify_SrcWlanGport_get.entry,
   2161 			req->args.field_qualify_SrcWlanGport_get.wlan_port_id);
   2162 		break;
   2163 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPCONTROL:
   2164 		rv = bcmx_field_qualify_TcpControl(
   2165 			req->args.field_qualify_TcpControl.entry,
   2166 			req->args.field_qualify_TcpControl.data,
   2167 			req->args.field_qualify_TcpControl.mask);
   2168 		break;
   2169 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPCONTROL_GET:
   2170 		rv = bcmx_field_qualify_TcpControl_get(
   2171 			req->args.field_qualify_TcpControl_get.entry,
   2172 			req->args.field_qualify_TcpControl_get.data,
   2173 			req->args.field_qualify_TcpControl_get.mask);
   2174 		break;
   2175 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPHEADERSIZE:
   2176 		rv = bcmx_field_qualify_TcpHeaderSize(
   2177 			req->args.field_qualify_TcpHeaderSize.entry,
   2178 			req->args.field_qualify_TcpHeaderSize.data,
   2179 			req->args.field_qualify_TcpHeaderSize.mask);
   2180 		break;
   2181 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPHEADERSIZE_GET:
   2182 		rv = bcmx_field_qualify_TcpHeaderSize_get(
   2183 			req->args.field_qualify_TcpHeaderSize_get.entry,
   2184 			req->args.field_qualify_TcpHeaderSize_get.data,
   2185 			req->args.field_qualify_TcpHeaderSize_get.mask);
   2186 		break;
   2187 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPSEQUENCEZERO:
   2188 		rv = bcmx_field_qualify_TcpSequenceZero(
   2189 			req->args.field_qualify_TcpSequenceZero.entry,
   2190 			req->args.field_qualify_TcpSequenceZero.flag);
   2191 		break;
   2192 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TCPSEQUENCEZERO_GET:
   2193 		rv = bcmx_field_qualify_TcpSequenceZero_get(
   2194 			req->args.field_qualify_TcpSequenceZero_get.entry,
   2195 			req->args.field_qualify_TcpSequenceZero_get.flag);
   2196 		break;
   2197 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TOS:
   2198 		rv = bcmx_field_qualify_Tos(
   2199 			req->args.field_qualify_Tos.entry,
   2200 			req->args.field_qualify_Tos.data,
   2201 			req->args.field_qualify_Tos.mask);
   2202 		break;
   2203 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TOS_GET:
   2204 		rv = bcmx_field_qualify_Tos_get(
   2205 			req->args.field_qualify_Tos_get.entry,
   2206 			req->args.field_qualify_Tos_get.data,
   2207 			req->args.field_qualify_Tos_get.mask);
   2208 		break;
   2209 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TRANSLATEDVLANFORMAT:
   2210 		rv = bcmx_field_qualify_TranslatedVlanFormat(
   2211 			req->args.field_qualify_TranslatedVlanFormat.entry,
   2212 			req->args.field_qualify_TranslatedVlanFormat.data,
   2213 			req->args.field_qualify_TranslatedVlanFormat.mask);
   2214 		break;
   2215 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TRANSLATEDVLANFORMAT_GET:
   2216 		rv = bcmx_field_qualify_TranslatedVlanFormat_get(
   2217 			req->args.field_qualify_TranslatedVlanFormat_get.entry,
   2218 			req->args.field_qualify_TranslatedVlanFormat_get.data,
   2219 			req->args.field_qualify_TranslatedVlanFormat_get.mask);
   2220 		break;
   2221 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TTL:
   2222 		rv = bcmx_field_qualify_Ttl(
   2223 			req->args.field_qualify_Ttl.entry,
   2224 			req->args.field_qualify_Ttl.data,
   2225 			req->args.field_qualify_Ttl.mask);
   2226 		break;
   2227 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TTL_GET:
   2228 		rv = bcmx_field_qualify_Ttl_get(
   2229 			req->args.field_qualify_Ttl_get.entry,
   2230 			req->args.field_qualify_Ttl_get.data,
   2231 			req->args.field_qualify_Ttl_get.mask);
   2232 		break;
   2233 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTERMINATED:
   2234 		rv = bcmx_field_qualify_TunnelTerminated(
   2235 			req->args.field_qualify_TunnelTerminated.entry,
   2236 			req->args.field_qualify_TunnelTerminated.data,
   2237 			req->args.field_qualify_TunnelTerminated.mask);
   2238 		break;
   2239 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTERMINATED_GET:
   2240 		rv = bcmx_field_qualify_TunnelTerminated_get(
   2241 			req->args.field_qualify_TunnelTerminated_get.entry,
   2242 			req->args.field_qualify_TunnelTerminated_get.data,
   2243 			req->args.field_qualify_TunnelTerminated_get.mask);
   2244 		break;
   2245 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTYPE:
   2246 		rv = bcmx_field_qualify_TunnelType(
   2247 			req->args.field_qualify_TunnelType.entry,
   2248 			req->args.field_qualify_TunnelType.tunnel_type);
   2249 		break;
   2250 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_TUNNELTYPE_GET:
   2251 		rv = bcmx_field_qualify_TunnelType_get(
   2252 			req->args.field_qualify_TunnelType_get.entry,
   2253 			req->args.field_qualify_TunnelType_get.tunnel_type);
   2254 		break;
   2255 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANFORMAT:
   2256 		rv = bcmx_field_qualify_VlanFormat(
   2257 			req->args.field_qualify_VlanFormat.entry,
   2258 			req->args.field_qualify_VlanFormat.data,
   2259 			req->args.field_qualify_VlanFormat.mask);
   2260 		break;
   2261 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANFORMAT_GET:
   2262 		rv = bcmx_field_qualify_VlanFormat_get(
   2263 			req->args.field_qualify_VlanFormat_get.entry,
   2264 			req->args.field_qualify_VlanFormat_get.data,
   2265 			req->args.field_qualify_VlanFormat_get.mask);
   2266 		break;
   2267 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANTRANSLATIONHIT:
   2268 		rv = bcmx_field_qualify_VlanTranslationHit(
   2269 			req->args.field_qualify_VlanTranslationHit.entry,
   2270 			req->args.field_qualify_VlanTranslationHit.data,
   2271 			req->args.field_qualify_VlanTranslationHit.mask);
   2272 		break;
   2273 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VLANTRANSLATIONHIT_GET:
   2274 		rv = bcmx_field_qualify_VlanTranslationHit_get(
   2275 			req->args.field_qualify_VlanTranslationHit_get.entry,
   2276 			req->args.field_qualify_VlanTranslationHit_get.data,
   2277 			req->args.field_qualify_VlanTranslationHit_get.mask);
   2278 		break;
   2279 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VNTAG:
   2280 		rv = bcmx_field_qualify_VnTag(
   2281 			req->args.field_qualify_VnTag.entry,
   2282 			req->args.field_qualify_VnTag.data,
   2283 			req->args.field_qualify_VnTag.mask);
   2284 		break;
   2285 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VNTAG_GET:
   2286 		rv = bcmx_field_qualify_VnTag_get(
   2287 			req->args.field_qualify_VnTag_get.entry,
   2288 			req->args.field_qualify_VnTag_get.data,
   2289 			req->args.field_qualify_VnTag_get.mask);
   2290 		break;
   2291 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VPN:
   2292 		rv = bcmx_field_qualify_Vpn(
   2293 			req->args.field_qualify_Vpn.entry,
   2294 			req->args.field_qualify_Vpn.data,
   2295 			req->args.field_qualify_Vpn.mask);
   2296 		break;
   2297 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VPN_GET:
   2298 		rv = bcmx_field_qualify_Vpn_get(
   2299 			req->args.field_qualify_Vpn_get.entry,
   2300 			req->args.field_qualify_Vpn_get.data,
   2301 			req->args.field_qualify_Vpn_get.mask);
   2302 		break;
   2303 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VRF:
   2304 		rv = bcmx_field_qualify_Vrf(
   2305 			req->args.field_qualify_Vrf.entry,
   2306 			req->args.field_qualify_Vrf.data,
   2307 			req->args.field_qualify_Vrf.mask);
   2308 		break;
   2309 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_VRF_GET:
   2310 		rv = bcmx_field_qualify_Vrf_get(
   2311 			req->args.field_qualify_Vrf_get.entry,
   2312 			req->args.field_qualify_Vrf_get.data,
   2313 			req->args.field_qualify_Vrf_get.mask);
   2314 		break;
   2315 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_CLEAR:
   2316 		rv = bcmx_field_qualify_clear(
   2317 			req->args.field_qualify_clear.entry);
   2318 		break;
   2319 	case BCMX_ASYNC_ENTRY_FIELD_QUALIFY_DATA:
   2320 		rv = bcmx_field_qualify_data(
   2321 			req->args.field_qualify_data.eid,
   2322 			req->args.field_qualify_data.qual_id,
   2323 			req->args.field_qualify_data.data,
   2324 			req->args.field_qualify_data.mask,
   2325 			req->args.field_qualify_data.length);
   2326 		break;
   2327 	case BCMX_ASYNC_ENTRY_FIELD_RANGE_CREATE:
   2328 		rv = bcmx_field_range_create(
   2329 			req->args.field_range_create.range,
   2330 			req->args.field_range_create.flags,
   2331 			req->args.field_range_create.min,
   2332 			req->args.field_range_create.max);
   2333 		break;
   2334 	case BCMX_ASYNC_ENTRY_FIELD_RANGE_CREATE_ID:
   2335 		rv = bcmx_field_range_create_id(
   2336 			req->args.field_range_create_id.range,
   2337 			req->args.field_range_create_id.flags,
   2338 			req->args.field_range_create_id.min,
   2339 			req->args.field_range_create_id.max);
   2340 		break;
   2341 	case BCMX_ASYNC_ENTRY_FIELD_RANGE_DESTROY:
   2342 		rv = bcmx_field_range_destroy(
   2343 			req->args.field_range_destroy.range);
   2344 		break;
   2345 	case BCMX_ASYNC_ENTRY_FIELD_RANGE_GET:
   2346 		rv = bcmx_field_range_get(
   2347 			req->args.field_range_get.range,
   2348 			req->args.field_range_get.flags,
   2349 			req->args.field_range_get.min,
   2350 			req->args.field_range_get.max);
   2351 		break;
   2352 	case BCMX_ASYNC_ENTRY_FIELD_RANGE_GROUP_CREATE:
   2353 		rv = bcmx_field_range_group_create(
   2354 			req->args.field_range_group_create.range,
   2355 			req->args.field_range_group_create.flags,
   2356 			req->args.field_range_group_create.min,
   2357 			req->args.field_range_group_create.max,
   2358 			req->args.field_range_group_create.group);
   2359 		break;
   2360 	case BCMX_ASYNC_ENTRY_FIELD_RANGE_GROUP_CREATE_ID:
   2361 		rv = bcmx_field_range_group_create_id(
   2362 			req->args.field_range_group_create_id.range,
   2363 			req->args.field_range_group_create_id.flags,
   2364 			req->args.field_range_group_create_id.min,
   2365 			req->args.field_range_group_create_id.max,
   2366 			req->args.field_range_group_create_id.group);
   2367 		break;
   2368 	case BCMX_ASYNC_ENTRY_FIELD_RESYNC:
   2369 		rv = bcmx_field_resync(
   2370 			);
   2371 		break;
   2372 	case BCMX_ASYNC_ENTRY_FIELD_STAT_ALL_SET:
   2373 		rv = bcmx_field_stat_all_set(
   2374 			req->args.field_stat_all_set.stat_id,
   2375 			req->args.field_stat_all_set.value);
   2376 		break;
   2377 	case BCMX_ASYNC_ENTRY_FIELD_STAT_ALL_SET32:
   2378 		rv = bcmx_field_stat_all_set32(
   2379 			req->args.field_stat_all_set32.stat_id,
   2380 			req->args.field_stat_all_set32.value);
   2381 		break;
   2382 	case BCMX_ASYNC_ENTRY_FIELD_STAT_CONFIG_GET:
   2383 		rv = bcmx_field_stat_config_get(
   2384 			req->args.field_stat_config_get.stat_id,
   2385 			req->args.field_stat_config_get.nstat,
   2386 			req->args.field_stat_config_get.stat_arr);
   2387 		break;
   2388 	case BCMX_ASYNC_ENTRY_FIELD_STAT_CREATE:
   2389 		rv = bcmx_field_stat_create(
   2390 			req->args.field_stat_create.group,
   2391 			req->args.field_stat_create.nstat,
   2392 			req->args.field_stat_create.stat_arr,
   2393 			req->args.field_stat_create.stat_id);
   2394 		break;
   2395 	case BCMX_ASYNC_ENTRY_FIELD_STAT_CREATE_ID:
   2396 		rv = bcmx_field_stat_create_id(
   2397 			req->args.field_stat_create_id.group,
   2398 			req->args.field_stat_create_id.nstat,
   2399 			req->args.field_stat_create_id.stat_arr,
   2400 			req->args.field_stat_create_id.stat_id);
   2401 		break;
   2402 	case BCMX_ASYNC_ENTRY_FIELD_STAT_DESTROY:
   2403 		rv = bcmx_field_stat_destroy(
   2404 			req->args.field_stat_destroy.stat_id);
   2405 		break;
   2406 	case BCMX_ASYNC_ENTRY_FIELD_STAT_GET:
   2407 		rv = bcmx_field_stat_get(
   2408 			req->args.field_stat_get.stat_id,
   2409 			req->args.field_stat_get.stat,
   2410 			req->args.field_stat_get.value);
   2411 		break;
   2412 	case BCMX_ASYNC_ENTRY_FIELD_STAT_GET32:
   2413 		rv = bcmx_field_stat_get32(
   2414 			req->args.field_stat_get32.stat_id,
   2415 			req->args.field_stat_get32.stat,
   2416 			req->args.field_stat_get32.value);
   2417 		break;
   2418 	case BCMX_ASYNC_ENTRY_FIELD_STAT_MULTI_GET:
   2419 		rv = bcmx_field_stat_multi_get(
   2420 			req->args.field_stat_multi_get.stat_id,
   2421 			req->args.field_stat_multi_get.nstat,
   2422 			req->args.field_stat_multi_get.stat_arr,
   2423 			req->args.field_stat_multi_get.value_arr);
   2424 		break;
   2425 	case BCMX_ASYNC_ENTRY_FIELD_STAT_MULTI_GET32:
   2426 		rv = bcmx_field_stat_multi_get32(
   2427 			req->args.field_stat_multi_get32.stat_id,
   2428 			req->args.field_stat_multi_get32.nstat,
   2429 			req->args.field_stat_multi_get32.stat_arr,
   2430 			req->args.field_stat_multi_get32.value_arr);
   2431 		break;
   2432 	case BCMX_ASYNC_ENTRY_FIELD_STAT_SET:
   2433 		rv = bcmx_field_stat_set(
   2434 			req->args.field_stat_set.stat_id,
   2435 			req->args.field_stat_set.stat,
   2436 			req->args.field_stat_set.value);
   2437 		break;
   2438 	case BCMX_ASYNC_ENTRY_FIELD_STAT_SET32:
   2439 		rv = bcmx_field_stat_set32(
   2440 			req->args.field_stat_set32.stat_id,
   2441 			req->args.field_stat_set32.stat,
   2442 			req->args.field_stat_set32.value);
   2443 		break;
   2444 	case BCMX_ASYNC_ENTRY_FIELD_STAT_SIZE:
   2445 		rv = bcmx_field_stat_size(
   2446 			req->args.field_stat_size.stat_id,
   2447 			req->args.field_stat_size.stat_size);
   2448 		break;
   2449 	case BCMX_ASYNC_ENTRY_INIT:
   2450 		rv = bcmx_init(
   2451 			);
   2452 		break;
   2453 	case BCMX_ASYNC_ENTRY_IPFIX_CONFIG_GET:
   2454 		rv = bcmx_ipfix_config_get(
   2455 			req->args.ipfix_config_get.stage,
   2456 			req->args.ipfix_config_get.port,
   2457 			req->args.ipfix_config_get.config);
   2458 		break;
   2459 	case BCMX_ASYNC_ENTRY_IPFIX_CONFIG_SET:
   2460 		rv = bcmx_ipfix_config_set(
   2461 			req->args.ipfix_config_set.stage,
   2462 			req->args.ipfix_config_set.port,
   2463 			req->args.ipfix_config_set.config);
   2464 		break;
   2465 	case BCMX_ASYNC_ENTRY_IPFIX_MIRROR_CONFIG_GET:
   2466 		rv = bcmx_ipfix_mirror_config_get(
   2467 			req->args.ipfix_mirror_config_get.stage,
   2468 			req->args.ipfix_mirror_config_get.port,
   2469 			req->args.ipfix_mirror_config_get.config);
   2470 		break;
   2471 	case BCMX_ASYNC_ENTRY_IPFIX_MIRROR_CONFIG_SET:
   2472 		rv = bcmx_ipfix_mirror_config_set(
   2473 			req->args.ipfix_mirror_config_set.stage,
   2474 			req->args.ipfix_mirror_config_set.port,
   2475 			req->args.ipfix_mirror_config_set.config);
   2476 		break;
   2477 	case BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_ADD:
   2478 		rv = bcmx_ipfix_mirror_port_dest_add(
   2479 			req->args.ipfix_mirror_port_dest_add.stage,
   2480 			req->args.ipfix_mirror_port_dest_add.port,
   2481 			req->args.ipfix_mirror_port_dest_add.mirror_dest_id);
   2482 		break;
   2483 	case BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_DELETE:
   2484 		rv = bcmx_ipfix_mirror_port_dest_delete(
   2485 			req->args.ipfix_mirror_port_dest_delete.stage,
   2486 			req->args.ipfix_mirror_port_dest_delete.port,
   2487 			req->args.ipfix_mirror_port_dest_delete.mirror_dest_id);
   2488 		break;
   2489 	case BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_DELETE_ALL:
   2490 		rv = bcmx_ipfix_mirror_port_dest_delete_all(
   2491 			req->args.ipfix_mirror_port_dest_delete_all.stage,
   2492 			req->args.ipfix_mirror_port_dest_delete_all.port);
   2493 		break;
   2494 	case BCMX_ASYNC_ENTRY_IPFIX_MIRROR_PORT_DEST_GET:
   2495 		rv = bcmx_ipfix_mirror_port_dest_get(
   2496 			req->args.ipfix_mirror_port_dest_get.stage,
   2497 			req->args.ipfix_mirror_port_dest_get.port,
   2498 			req->args.ipfix_mirror_port_dest_get.mirror_dest_size,
   2499 			req->args.ipfix_mirror_port_dest_get.mirror_dest_id,
   2500 			req->args.ipfix_mirror_port_dest_get.mirror_dest_count);
   2501 		break;
   2502 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_CREATE:
   2503 		rv = bcmx_ipfix_rate_create(
   2504 			req->args.ipfix_rate_create.rate_info);
   2505 		break;
   2506 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_DESTROY:
   2507 		rv = bcmx_ipfix_rate_destroy(
   2508 			req->args.ipfix_rate_destroy.rate_id);
   2509 		break;
   2510 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_DESTROY_ALL:
   2511 		rv = bcmx_ipfix_rate_destroy_all(
   2512 			);
   2513 		break;
   2514 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_GET:
   2515 		rv = bcmx_ipfix_rate_get(
   2516 			req->args.ipfix_rate_get.rate_info);
   2517 		break;
   2518 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_ADD:
   2519 		rv = bcmx_ipfix_rate_mirror_add(
   2520 			req->args.ipfix_rate_mirror_add.rate_id,
   2521 			req->args.ipfix_rate_mirror_add.mirror_dest_id);
   2522 		break;
   2523 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_DELETE:
   2524 		rv = bcmx_ipfix_rate_mirror_delete(
   2525 			req->args.ipfix_rate_mirror_delete.rate_id,
   2526 			req->args.ipfix_rate_mirror_delete.mirror_dest_id);
   2527 		break;
   2528 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_DELETE_ALL:
   2529 		rv = bcmx_ipfix_rate_mirror_delete_all(
   2530 			req->args.ipfix_rate_mirror_delete_all.rate_id);
   2531 		break;
   2532 	case BCMX_ASYNC_ENTRY_IPFIX_RATE_MIRROR_GET:
   2533 		rv = bcmx_ipfix_rate_mirror_get(
   2534 			req->args.ipfix_rate_mirror_get.rate_id,
   2535 			req->args.ipfix_rate_mirror_get.mirror_dest_size,
   2536 			req->args.ipfix_rate_mirror_get.mirror_dest_id,
   2537 			req->args.ipfix_rate_mirror_get.mirror_dest_count);
   2538 		break;
   2539 #ifdef	INCLUDE_L3
   2540 	case BCMX_ASYNC_ENTRY_IPMC_ADD:
   2541 		rv = bcmx_ipmc_add(
   2542 			req->args.ipmc_add.data);
   2543 		break;
   2544 	case BCMX_ASYNC_ENTRY_IPMC_AGE:
   2545 		rv = bcmx_ipmc_age(
   2546 			req->args.ipmc_age.flags,
   2547 			req->args.ipmc_age.age_cb,
   2548 			req->args.ipmc_age.user_data);
   2549 		break;
   2550 	case BCMX_ASYNC_ENTRY_IPMC_COUNTERS_GET:
   2551 		rv = bcmx_ipmc_counters_get(
   2552 			req->args.ipmc_counters_get.port,
   2553 			req->args.ipmc_counters_get.counters);
   2554 		break;
   2555 	case BCMX_ASYNC_ENTRY_IPMC_DETACH:
   2556 		rv = bcmx_ipmc_detach(
   2557 			);
   2558 		break;
   2559 	case BCMX_ASYNC_ENTRY_IPMC_EGRESS_PORT_GET:
   2560 		rv = bcmx_ipmc_egress_port_get(
   2561 			req->args.ipmc_egress_port_get.port,
   2562 			req->args.ipmc_egress_port_get.mac,
   2563 			req->args.ipmc_egress_port_get.untag,
   2564 			req->args.ipmc_egress_port_get.vid,
   2565 			req->args.ipmc_egress_port_get.ttl_threshold);
   2566 		break;
   2567 	case BCMX_ASYNC_ENTRY_IPMC_EGRESS_PORT_INIT:
   2568 		rv = bcmx_ipmc_egress_port_init(
   2569 			);
   2570 		break;
   2571 	case BCMX_ASYNC_ENTRY_IPMC_EGRESS_PORT_SET:
   2572 		rv = bcmx_ipmc_egress_port_set(
   2573 			req->args.ipmc_egress_port_set.port,
   2574 			req->args.ipmc_egress_port_set.mac,
   2575 			req->args.ipmc_egress_port_set.untag,
   2576 			req->args.ipmc_egress_port_set.vid,
   2577 			req->args.ipmc_egress_port_set.ttl_threshold);
   2578 		break;
   2579 	case BCMX_ASYNC_ENTRY_IPMC_ENABLE:
   2580 		rv = bcmx_ipmc_enable(
   2581 			req->args.ipmc_enable.enable);
   2582 		break;
   2583 	case BCMX_ASYNC_ENTRY_IPMC_FIND:
   2584 		rv = bcmx_ipmc_find(
   2585 			req->args.ipmc_find.data);
   2586 		break;
   2587 	case BCMX_ASYNC_ENTRY_IPMC_INIT:
   2588 		rv = bcmx_ipmc_init(
   2589 			);
   2590 		break;
   2591 	case BCMX_ASYNC_ENTRY_IPMC_REMOVE:
   2592 		rv = bcmx_ipmc_remove(
   2593 			req->args.ipmc_remove.data);
   2594 		break;
   2595 	case BCMX_ASYNC_ENTRY_IPMC_REMOVE_ALL:
   2596 		rv = bcmx_ipmc_remove_all(
   2597 			);
   2598 		break;
   2599 	case BCMX_ASYNC_ENTRY_IPMC_TRAVERSE:
   2600 		rv = bcmx_ipmc_traverse(
   2601 			req->args.ipmc_traverse.flags,
   2602 			req->args.ipmc_traverse.cb,
   2603 			req->args.ipmc_traverse.user_data);
   2604 		break;
   2605 #endif	/* INCLUDE_L3 */
   2606 	case BCMX_ASYNC_ENTRY_L2_ADDR_ADD:
   2607 		rv = bcmx_l2_addr_add(
   2608 			req->args.l2_addr_add.l2addr,
   2609 			req->args.l2_addr_add.port_block);
   2610 		break;
   2611 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE:
   2612 		rv = bcmx_l2_addr_delete(
   2613 			req->args.l2_addr_delete.mac,
   2614 			req->args.l2_addr_delete.vid);
   2615 		break;
   2616 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_MAC:
   2617 		rv = bcmx_l2_addr_delete_by_mac(
   2618 			req->args.l2_addr_delete_by_mac.mac,
   2619 			req->args.l2_addr_delete_by_mac.flags);
   2620 		break;
   2621 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_MAC_PORT:
   2622 		rv = bcmx_l2_addr_delete_by_mac_port(
   2623 			req->args.l2_addr_delete_by_mac_port.mac,
   2624 			req->args.l2_addr_delete_by_mac_port.port,
   2625 			req->args.l2_addr_delete_by_mac_port.flags);
   2626 		break;
   2627 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_PORT:
   2628 		rv = bcmx_l2_addr_delete_by_port(
   2629 			req->args.l2_addr_delete_by_port.port,
   2630 			req->args.l2_addr_delete_by_port.flags);
   2631 		break;
   2632 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_TRUNK:
   2633 		rv = bcmx_l2_addr_delete_by_trunk(
   2634 			req->args.l2_addr_delete_by_trunk.tid,
   2635 			req->args.l2_addr_delete_by_trunk.flags);
   2636 		break;
   2637 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_VLAN:
   2638 		rv = bcmx_l2_addr_delete_by_vlan(
   2639 			req->args.l2_addr_delete_by_vlan.vid,
   2640 			req->args.l2_addr_delete_by_vlan.flags);
   2641 		break;
   2642 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_VLAN_PORT:
   2643 		rv = bcmx_l2_addr_delete_by_vlan_port(
   2644 			req->args.l2_addr_delete_by_vlan_port.vid,
   2645 			req->args.l2_addr_delete_by_vlan_port.port,
   2646 			req->args.l2_addr_delete_by_vlan_port.flags);
   2647 		break;
   2648 	case BCMX_ASYNC_ENTRY_L2_ADDR_DELETE_BY_VLAN_TRUNK:
   2649 		rv = bcmx_l2_addr_delete_by_vlan_trunk(
   2650 			req->args.l2_addr_delete_by_vlan_trunk.vid,
   2651 			req->args.l2_addr_delete_by_vlan_trunk.tid,
   2652 			req->args.l2_addr_delete_by_vlan_trunk.flags);
   2653 		break;
   2654 	case BCMX_ASYNC_ENTRY_L2_ADDR_FREEZE:
   2655 		rv = bcmx_l2_addr_freeze(
   2656 			);
   2657 		break;
   2658 	case BCMX_ASYNC_ENTRY_L2_ADDR_FROM_BCM:
   2659 		rv = bcmx_l2_addr_from_bcm(
   2660 			req->args.l2_addr_from_bcm.dest,
   2661 			req->args.l2_addr_from_bcm.port_block,
   2662 			req->args.l2_addr_from_bcm.source);
   2663 		break;
   2664 	case BCMX_ASYNC_ENTRY_L2_ADDR_GET:
   2665 		rv = bcmx_l2_addr_get(
   2666 			req->args.l2_addr_get.mac_addr,
   2667 			req->args.l2_addr_get.vid,
   2668 			req->args.l2_addr_get.l2addr,
   2669 			req->args.l2_addr_get.port_block);
   2670 		break;
   2671 	case BCMX_ASYNC_ENTRY_L2_ADDR_NATIVE_GET:
   2672 		rv = bcmx_l2_addr_native_get(
   2673 			req->args.l2_addr_native_get.mac_addr,
   2674 			req->args.l2_addr_native_get.vid,
   2675 			req->args.l2_addr_native_get.l2addr);
   2676 		break;
   2677 	case BCMX_ASYNC_ENTRY_L2_ADDR_PORT_GET:
   2678 		rv = bcmx_l2_addr_port_get(
   2679 			req->args.l2_addr_port_get.port,
   2680 			req->args.l2_addr_port_get.mac_addr,
   2681 			req->args.l2_addr_port_get.vid,
   2682 			req->args.l2_addr_port_get.l2addr);
   2683 		break;
   2684 	case BCMX_ASYNC_ENTRY_L2_ADDR_REFRESH:
   2685 		rv = bcmx_l2_addr_refresh(
   2686 			req->args.l2_addr_refresh.l2addr,
   2687 			req->args.l2_addr_refresh.port_block);
   2688 		break;
   2689 	case BCMX_ASYNC_ENTRY_L2_ADDR_THAW:
   2690 		rv = bcmx_l2_addr_thaw(
   2691 			);
   2692 		break;
   2693 	case BCMX_ASYNC_ENTRY_L2_ADDR_TO_BCM:
   2694 		rv = bcmx_l2_addr_to_bcm(
   2695 			req->args.l2_addr_to_bcm.bcm_unit,
   2696 			req->args.l2_addr_to_bcm.dest,
   2697 			req->args.l2_addr_to_bcm.source,
   2698 			req->args.l2_addr_to_bcm.port_block);
   2699 		break;
   2700 	case BCMX_ASYNC_ENTRY_L2_AGE_TIMER_GET:
   2701 		rv = bcmx_l2_age_timer_get(
   2702 			req->args.l2_age_timer_get.age_seconds);
   2703 		break;
   2704 	case BCMX_ASYNC_ENTRY_L2_AGE_TIMER_SET:
   2705 		rv = bcmx_l2_age_timer_set(
   2706 			req->args.l2_age_timer_set.age_seconds);
   2707 		break;
   2708 	case BCMX_ASYNC_ENTRY_L2_CACHE_DELETE:
   2709 		rv = bcmx_l2_cache_delete(
   2710 			req->args.l2_cache_delete.index);
   2711 		break;
   2712 	case BCMX_ASYNC_ENTRY_L2_CACHE_DELETE_ALL:
   2713 		rv = bcmx_l2_cache_delete_all(
   2714 			);
   2715 		break;
   2716 	case BCMX_ASYNC_ENTRY_L2_CACHE_GET:
   2717 		rv = bcmx_l2_cache_get(
   2718 			req->args.l2_cache_get.index,
   2719 			req->args.l2_cache_get.addr);
   2720 		break;
   2721 	case BCMX_ASYNC_ENTRY_L2_CACHE_INIT:
   2722 		rv = bcmx_l2_cache_init(
   2723 			);
   2724 		break;
   2725 	case BCMX_ASYNC_ENTRY_L2_CACHE_SET:
   2726 		rv = bcmx_l2_cache_set(
   2727 			req->args.l2_cache_set.index,
   2728 			req->args.l2_cache_set.addr,
   2729 			req->args.l2_cache_set.index_used);
   2730 		break;
   2731 	case BCMX_ASYNC_ENTRY_L2_CACHE_SIZE_GET:
   2732 		rv = bcmx_l2_cache_size_get(
   2733 			req->args.l2_cache_size_get.size);
   2734 		break;
   2735 	case BCMX_ASYNC_ENTRY_L2_CONFLICT_GET:
   2736 		rv = bcmx_l2_conflict_get(
   2737 			req->args.l2_conflict_get.addr,
   2738 			req->args.l2_conflict_get.cf_array,
   2739 			req->args.l2_conflict_get.cf_max,
   2740 			req->args.l2_conflict_get.cf_count);
   2741 		break;
   2742 	case BCMX_ASYNC_ENTRY_L2_DEVICE_ADD:
   2743 		rv = bcmx_l2_device_add(
   2744 			req->args.l2_device_add.bcm_unit);
   2745 		break;
   2746 	case BCMX_ASYNC_ENTRY_L2_DEVICE_REMOVE:
   2747 		rv = bcmx_l2_device_remove(
   2748 			req->args.l2_device_remove.bcm_unit);
   2749 		break;
   2750 	case BCMX_ASYNC_ENTRY_L2_LEARN_CLASS_GET:
   2751 		rv = bcmx_l2_learn_class_get(
   2752 			req->args.l2_learn_class_get.lclass,
   2753 			req->args.l2_learn_class_get.lclass_prio,
   2754 			req->args.l2_learn_class_get.flags);
   2755 		break;
   2756 	case BCMX_ASYNC_ENTRY_L2_LEARN_CLASS_SET:
   2757 		rv = bcmx_l2_learn_class_set(
   2758 			req->args.l2_learn_class_set.lclass,
   2759 			req->args.l2_learn_class_set.lclass_prio,
   2760 			req->args.l2_learn_class_set.flags);
   2761 		break;
   2762 	case BCMX_ASYNC_ENTRY_L2_LEARN_LIMIT_GET:
   2763 		rv = bcmx_l2_learn_limit_get(
   2764 			req->args.l2_learn_limit_get.limit);
   2765 		break;
   2766 	case BCMX_ASYNC_ENTRY_L2_LEARN_LIMIT_SET:
   2767 		rv = bcmx_l2_learn_limit_set(
   2768 			req->args.l2_learn_limit_set.limit);
   2769 		break;
   2770 	case BCMX_ASYNC_ENTRY_L2_LEARN_PORT_CLASS_GET:
   2771 		rv = bcmx_l2_learn_port_class_get(
   2772 			req->args.l2_learn_port_class_get.port,
   2773 			req->args.l2_learn_port_class_get.lclass);
   2774 		break;
   2775 	case BCMX_ASYNC_ENTRY_L2_LEARN_PORT_CLASS_SET:
   2776 		rv = bcmx_l2_learn_port_class_set(
   2777 			req->args.l2_learn_port_class_set.port,
   2778 			req->args.l2_learn_port_class_set.lclass);
   2779 		break;
   2780 	case BCMX_ASYNC_ENTRY_L2_NOTIFY_REGISTER:
   2781 		rv = bcmx_l2_notify_register(
   2782 			req->args.l2_notify_register.callback,
   2783 			req->args.l2_notify_register.userdata);
   2784 		break;
   2785 	case BCMX_ASYNC_ENTRY_L2_NOTIFY_START:
   2786 		rv = bcmx_l2_notify_start(
   2787 			);
   2788 		break;
   2789 	case BCMX_ASYNC_ENTRY_L2_NOTIFY_STOP:
   2790 		rv = bcmx_l2_notify_stop(
   2791 			);
   2792 		break;
   2793 	case BCMX_ASYNC_ENTRY_L2_NOTIFY_UNREGISTER:
   2794 		rv = bcmx_l2_notify_unregister(
   2795 			req->args.l2_notify_unregister.callback,
   2796 			req->args.l2_notify_unregister.userdata);
   2797 		break;
   2798 	case BCMX_ASYNC_ENTRY_L2_REPLACE:
   2799 		rv = bcmx_l2_replace(
   2800 			req->args.l2_replace.flags,
   2801 			req->args.l2_replace.match_addr,
   2802 			req->args.l2_replace.new_port,
   2803 			req->args.l2_replace.new_trunk);
   2804 		break;
   2805 	case BCMX_ASYNC_ENTRY_L2_TUNNEL_ADD:
   2806 		rv = bcmx_l2_tunnel_add(
   2807 			req->args.l2_tunnel_add.mac,
   2808 			req->args.l2_tunnel_add.vlan);
   2809 		break;
   2810 	case BCMX_ASYNC_ENTRY_L2_TUNNEL_DELETE:
   2811 		rv = bcmx_l2_tunnel_delete(
   2812 			req->args.l2_tunnel_delete.mac,
   2813 			req->args.l2_tunnel_delete.vlan);
   2814 		break;
   2815 	case BCMX_ASYNC_ENTRY_L2_TUNNEL_DELETE_ALL:
   2816 		rv = bcmx_l2_tunnel_delete_all(
   2817 			);
   2818 		break;
   2819 #ifdef	INCLUDE_L3
   2820 	case BCMX_ASYNC_ENTRY_L3_CLEANUP:
   2821 		rv = bcmx_l3_cleanup(
   2822 			);
   2823 		break;
   2824 	case BCMX_ASYNC_ENTRY_L3_EGRESS_CREATE:
   2825 		rv = bcmx_l3_egress_create(
   2826 			req->args.l3_egress_create.flags,
   2827 			req->args.l3_egress_create.egr,
   2828 			req->args.l3_egress_create.intf);
   2829 		break;
   2830 	case BCMX_ASYNC_ENTRY_L3_EGRESS_DESTROY:
   2831 		rv = bcmx_l3_egress_destroy(
   2832 			req->args.l3_egress_destroy.intf);
   2833 		break;
   2834 	case BCMX_ASYNC_ENTRY_L3_EGRESS_FIND:
   2835 		rv = bcmx_l3_egress_find(
   2836 			req->args.l3_egress_find.egr,
   2837 			req->args.l3_egress_find.intf);
   2838 		break;
   2839 	case BCMX_ASYNC_ENTRY_L3_EGRESS_GET:
   2840 		rv = bcmx_l3_egress_get(
   2841 			req->args.l3_egress_get.intf,
   2842 			req->args.l3_egress_get.egr);
   2843 		break;
   2844 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_ADD:
   2845 		rv = bcmx_l3_egress_multipath_add(
   2846 			req->args.l3_egress_multipath_add.mpintf,
   2847 			req->args.l3_egress_multipath_add.intf);
   2848 		break;
   2849 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_CREATE:
   2850 		rv = bcmx_l3_egress_multipath_create(
   2851 			req->args.l3_egress_multipath_create.flags,
   2852 			req->args.l3_egress_multipath_create.intf_count,
   2853 			req->args.l3_egress_multipath_create.intf_array,
   2854 			req->args.l3_egress_multipath_create.mpintf);
   2855 		break;
   2856 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_DELETE:
   2857 		rv = bcmx_l3_egress_multipath_delete(
   2858 			req->args.l3_egress_multipath_delete.mpintf,
   2859 			req->args.l3_egress_multipath_delete.intf);
   2860 		break;
   2861 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_DESTROY:
   2862 		rv = bcmx_l3_egress_multipath_destroy(
   2863 			req->args.l3_egress_multipath_destroy.mpintf);
   2864 		break;
   2865 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_FIND:
   2866 		rv = bcmx_l3_egress_multipath_find(
   2867 			req->args.l3_egress_multipath_find.intf_count,
   2868 			req->args.l3_egress_multipath_find.intf_array,
   2869 			req->args.l3_egress_multipath_find.mpintf);
   2870 		break;
   2871 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_GET:
   2872 		rv = bcmx_l3_egress_multipath_get(
   2873 			req->args.l3_egress_multipath_get.mpintf,
   2874 			req->args.l3_egress_multipath_get.intf_size,
   2875 			req->args.l3_egress_multipath_get.intf_array,
   2876 			req->args.l3_egress_multipath_get.intf_count);
   2877 		break;
   2878 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_MAX_CREATE:
   2879 		rv = bcmx_l3_egress_multipath_max_create(
   2880 			req->args.l3_egress_multipath_max_create.flags,
   2881 			req->args.l3_egress_multipath_max_create.max_paths,
   2882 			req->args.l3_egress_multipath_max_create.intf_count,
   2883 			req->args.l3_egress_multipath_max_create.intf_array,
   2884 			req->args.l3_egress_multipath_max_create.mpintf);
   2885 		break;
   2886 	case BCMX_ASYNC_ENTRY_L3_EGRESS_MULTIPATH_TRAVERSE:
   2887 		rv = bcmx_l3_egress_multipath_traverse(
   2888 			req->args.l3_egress_multipath_traverse.trav_fn,
   2889 			req->args.l3_egress_multipath_traverse.user_data);
   2890 		break;
   2891 	case BCMX_ASYNC_ENTRY_L3_EGRESS_TRAVERSE:
   2892 		rv = bcmx_l3_egress_traverse(
   2893 			req->args.l3_egress_traverse.trav_fn,
   2894 			req->args.l3_egress_traverse.user_data);
   2895 		break;
   2896 	case BCMX_ASYNC_ENTRY_L3_ENABLE_SET:
   2897 		rv = bcmx_l3_enable_set(
   2898 			req->args.l3_enable_set.enable);
   2899 		break;
   2900 	case BCMX_ASYNC_ENTRY_L3_HOST_ADD:
   2901 		rv = bcmx_l3_host_add(
   2902 			req->args.l3_host_add.info);
   2903 		break;
   2904 	case BCMX_ASYNC_ENTRY_L3_HOST_AGE:
   2905 		rv = bcmx_l3_host_age(
   2906 			req->args.l3_host_age.flags,
   2907 			req->args.l3_host_age.age_cb,
   2908 			req->args.l3_host_age.user_data);
   2909 		break;
   2910 	case BCMX_ASYNC_ENTRY_L3_HOST_CONFLICT_GET:
   2911 		rv = bcmx_l3_host_conflict_get(
   2912 			req->args.l3_host_conflict_get.ipkey,
   2913 			req->args.l3_host_conflict_get.cf_array,
   2914 			req->args.l3_host_conflict_get.cf_max,
   2915 			req->args.l3_host_conflict_get.cf_count);
   2916 		break;
   2917 	case BCMX_ASYNC_ENTRY_L3_HOST_DELETE:
   2918 		rv = bcmx_l3_host_delete(
   2919 			req->args.l3_host_delete.ip_addr);
   2920 		break;
   2921 	case BCMX_ASYNC_ENTRY_L3_HOST_DELETE_ALL:
   2922 		rv = bcmx_l3_host_delete_all(
   2923 			req->args.l3_host_delete_all.info);
   2924 		break;
   2925 	case BCMX_ASYNC_ENTRY_L3_HOST_DELETE_BY_INTERFACE:
   2926 		rv = bcmx_l3_host_delete_by_interface(
   2927 			req->args.l3_host_delete_by_interface.info);
   2928 		break;
   2929 	case BCMX_ASYNC_ENTRY_L3_HOST_DELETE_BY_NETWORK:
   2930 		rv = bcmx_l3_host_delete_by_network(
   2931 			req->args.l3_host_delete_by_network.ip_addr);
   2932 		break;
   2933 	case BCMX_ASYNC_ENTRY_L3_HOST_FIND:
   2934 		rv = bcmx_l3_host_find(
   2935 			req->args.l3_host_find.info);
   2936 		break;
   2937 	case BCMX_ASYNC_ENTRY_L3_HOST_INVALIDATE_ENTRY:
   2938 		rv = bcmx_l3_host_invalidate_entry(
   2939 			req->args.l3_host_invalidate_entry.info);
   2940 		break;
   2941 	case BCMX_ASYNC_ENTRY_L3_HOST_TRAVERSE:
   2942 		rv = bcmx_l3_host_traverse(
   2943 			req->args.l3_host_traverse.flags,
   2944 			req->args.l3_host_traverse.start,
   2945 			req->args.l3_host_traverse.end,
   2946 			req->args.l3_host_traverse.cb,
   2947 			req->args.l3_host_traverse.user_data);
   2948 		break;
   2949 	case BCMX_ASYNC_ENTRY_L3_HOST_VALIDATE_ENTRY:
   2950 		rv = bcmx_l3_host_validate_entry(
   2951 			req->args.l3_host_validate_entry.info);
   2952 		break;
   2953 	case BCMX_ASYNC_ENTRY_L3_INFO:
   2954 		rv = bcmx_l3_info(
   2955 			req->args.l3_info.l3info);
   2956 		break;
   2957 	case BCMX_ASYNC_ENTRY_L3_INGRESS_CREATE:
   2958 		rv = bcmx_l3_ingress_create(
   2959 			req->args.l3_ingress_create.ing_intf,
   2960 			req->args.l3_ingress_create.intf_id);
   2961 		break;
   2962 	case BCMX_ASYNC_ENTRY_L3_INGRESS_DESTROY:
   2963 		rv = bcmx_l3_ingress_destroy(
   2964 			req->args.l3_ingress_destroy.intf_id);
   2965 		break;
   2966 	case BCMX_ASYNC_ENTRY_L3_INGRESS_FIND:
   2967 		rv = bcmx_l3_ingress_find(
   2968 			req->args.l3_ingress_find.ing_intf,
   2969 			req->args.l3_ingress_find.intf_id);
   2970 		break;
   2971 	case BCMX_ASYNC_ENTRY_L3_INGRESS_GET:
   2972 		rv = bcmx_l3_ingress_get(
   2973 			req->args.l3_ingress_get.intf,
   2974 			req->args.l3_ingress_get.ing_intf);
   2975 		break;
   2976 	case BCMX_ASYNC_ENTRY_L3_INIT:
   2977 		rv = bcmx_l3_init(
   2978 			);
   2979 		break;
   2980 	case BCMX_ASYNC_ENTRY_L3_INTF_CREATE:
   2981 		rv = bcmx_l3_intf_create(
   2982 			req->args.l3_intf_create.intf);
   2983 		break;
   2984 	case BCMX_ASYNC_ENTRY_L3_INTF_DELETE:
   2985 		rv = bcmx_l3_intf_delete(
   2986 			req->args.l3_intf_delete.intf);
   2987 		break;
   2988 	case BCMX_ASYNC_ENTRY_L3_INTF_DELETE_ALL:
   2989 		rv = bcmx_l3_intf_delete_all(
   2990 			);
   2991 		break;
   2992 	case BCMX_ASYNC_ENTRY_L3_INTF_FIND:
   2993 		rv = bcmx_l3_intf_find(
   2994 			req->args.l3_intf_find.intf);
   2995 		break;
   2996 	case BCMX_ASYNC_ENTRY_L3_INTF_FIND_VLAN:
   2997 		rv = bcmx_l3_intf_find_vlan(
   2998 			req->args.l3_intf_find_vlan.intf);
   2999 		break;
   3000 	case BCMX_ASYNC_ENTRY_L3_INTF_GET:
   3001 		rv = bcmx_l3_intf_get(
   3002 			req->args.l3_intf_get.intf);
   3003 		break;
   3004 	case BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_ADD:
   3005 		rv = bcmx_l3_ip6_prefix_map_add(
   3006 			req->args.l3_ip6_prefix_map_add.ip6_addr);
   3007 		break;
   3008 	case BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_DELETE:
   3009 		rv = bcmx_l3_ip6_prefix_map_delete(
   3010 			req->args.l3_ip6_prefix_map_delete.ip6_addr);
   3011 		break;
   3012 	case BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_DELETE_ALL:
   3013 		rv = bcmx_l3_ip6_prefix_map_delete_all(
   3014 			);
   3015 		break;
   3016 	case BCMX_ASYNC_ENTRY_L3_IP6_PREFIX_MAP_GET:
   3017 		rv = bcmx_l3_ip6_prefix_map_get(
   3018 			req->args.l3_ip6_prefix_map_get.map_size,
   3019 			req->args.l3_ip6_prefix_map_get.ip6_array,
   3020 			req->args.l3_ip6_prefix_map_get.ip6_count);
   3021 		break;
   3022 	case BCMX_ASYNC_ENTRY_L3_ROUTE_ADD:
   3023 		rv = bcmx_l3_route_add(
   3024 			req->args.l3_route_add.info);
   3025 		break;
   3026 	case BCMX_ASYNC_ENTRY_L3_ROUTE_AGE:
   3027 		rv = bcmx_l3_route_age(
   3028 			req->args.l3_route_age.flags,
   3029 			req->args.l3_route_age.age_out,
   3030 			req->args.l3_route_age.user_data);
   3031 		break;
   3032 	case BCMX_ASYNC_ENTRY_L3_ROUTE_DELETE:
   3033 		rv = bcmx_l3_route_delete(
   3034 			req->args.l3_route_delete.info);
   3035 		break;
   3036 	case BCMX_ASYNC_ENTRY_L3_ROUTE_DELETE_ALL:
   3037 		rv = bcmx_l3_route_delete_all(
   3038 			req->args.l3_route_delete_all.info);
   3039 		break;
   3040 	case BCMX_ASYNC_ENTRY_L3_ROUTE_DELETE_BY_INTERFACE:
   3041 		rv = bcmx_l3_route_delete_by_interface(
   3042 			req->args.l3_route_delete_by_interface.info);
   3043 		break;
   3044 	case BCMX_ASYNC_ENTRY_L3_ROUTE_GET:
   3045 		rv = bcmx_l3_route_get(
   3046 			req->args.l3_route_get.info);
   3047 		break;
   3048 	case BCMX_ASYNC_ENTRY_L3_ROUTE_MAX_ECMP_GET:
   3049 		rv = bcmx_l3_route_max_ecmp_get(
   3050 			req->args.l3_route_max_ecmp_get.max);
   3051 		break;
   3052 	case BCMX_ASYNC_ENTRY_L3_ROUTE_MAX_ECMP_SET:
   3053 		rv = bcmx_l3_route_max_ecmp_set(
   3054 			req->args.l3_route_max_ecmp_set.max);
   3055 		break;
   3056 	case BCMX_ASYNC_ENTRY_L3_ROUTE_MULTIPATH_GET:
   3057 		rv = bcmx_l3_route_multipath_get(
   3058 			req->args.l3_route_multipath_get.the_route,
   3059 			req->args.l3_route_multipath_get.path_array,
   3060 			req->args.l3_route_multipath_get.max_path,
   3061 			req->args.l3_route_multipath_get.path_count);
   3062 		break;
   3063 	case BCMX_ASYNC_ENTRY_L3_ROUTE_TRAVERSE:
   3064 		rv = bcmx_l3_route_traverse(
   3065 			req->args.l3_route_traverse.flags,
   3066 			req->args.l3_route_traverse.start,
   3067 			req->args.l3_route_traverse.end,
   3068 			req->args.l3_route_traverse.trav_fn,
   3069 			req->args.l3_route_traverse.user_data);
   3070 		break;
   3071 	case BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_ADD:
   3072 		rv = bcmx_l3_source_bind_add(
   3073 			req->args.l3_source_bind_add.info);
   3074 		break;
   3075 	case BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_DELETE:
   3076 		rv = bcmx_l3_source_bind_delete(
   3077 			req->args.l3_source_bind_delete.info);
   3078 		break;
   3079 	case BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_DELETE_ALL:
   3080 		rv = bcmx_l3_source_bind_delete_all(
   3081 			);
   3082 		break;
   3083 	case BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_ENABLE_GET:
   3084 		rv = bcmx_l3_source_bind_enable_get(
   3085 			req->args.l3_source_bind_enable_get.port,
   3086 			req->args.l3_source_bind_enable_get.enable);
   3087 		break;
   3088 	case BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_ENABLE_SET:
   3089 		rv = bcmx_l3_source_bind_enable_set(
   3090 			req->args.l3_source_bind_enable_set.port,
   3091 			req->args.l3_source_bind_enable_set.enable);
   3092 		break;
   3093 	case BCMX_ASYNC_ENTRY_L3_SOURCE_BIND_GET:
   3094 		rv = bcmx_l3_source_bind_get(
   3095 			req->args.l3_source_bind_get.info);
   3096 		break;
   3097 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_ENABLE_SET:
   3098 		rv = bcmx_l3_vrf_stat_enable_set(
   3099 			req->args.l3_vrf_stat_enable_set.vrf,
   3100 			req->args.l3_vrf_stat_enable_set.enable);
   3101 		break;
   3102 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_GET:
   3103 		rv = bcmx_l3_vrf_stat_get(
   3104 			req->args.l3_vrf_stat_get.vrf,
   3105 			req->args.l3_vrf_stat_get.stat,
   3106 			req->args.l3_vrf_stat_get.val);
   3107 		break;
   3108 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_GET32:
   3109 		rv = bcmx_l3_vrf_stat_get32(
   3110 			req->args.l3_vrf_stat_get32.vrf,
   3111 			req->args.l3_vrf_stat_get32.stat,
   3112 			req->args.l3_vrf_stat_get32.val);
   3113 		break;
   3114 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_GET:
   3115 		rv = bcmx_l3_vrf_stat_multi_get(
   3116 			req->args.l3_vrf_stat_multi_get.vrf,
   3117 			req->args.l3_vrf_stat_multi_get.nstat,
   3118 			req->args.l3_vrf_stat_multi_get.stat_arr,
   3119 			req->args.l3_vrf_stat_multi_get.value_arr);
   3120 		break;
   3121 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_GET32:
   3122 		rv = bcmx_l3_vrf_stat_multi_get32(
   3123 			req->args.l3_vrf_stat_multi_get32.vrf,
   3124 			req->args.l3_vrf_stat_multi_get32.nstat,
   3125 			req->args.l3_vrf_stat_multi_get32.stat_arr,
   3126 			req->args.l3_vrf_stat_multi_get32.value_arr);
   3127 		break;
   3128 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_SET:
   3129 		rv = bcmx_l3_vrf_stat_multi_set(
   3130 			req->args.l3_vrf_stat_multi_set.vrf,
   3131 			req->args.l3_vrf_stat_multi_set.nstat,
   3132 			req->args.l3_vrf_stat_multi_set.stat_arr,
   3133 			req->args.l3_vrf_stat_multi_set.value_arr);
   3134 		break;
   3135 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_MULTI_SET32:
   3136 		rv = bcmx_l3_vrf_stat_multi_set32(
   3137 			req->args.l3_vrf_stat_multi_set32.vrf,
   3138 			req->args.l3_vrf_stat_multi_set32.nstat,
   3139 			req->args.l3_vrf_stat_multi_set32.stat_arr,
   3140 			req->args.l3_vrf_stat_multi_set32.value_arr);
   3141 		break;
   3142 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_SET:
   3143 		rv = bcmx_l3_vrf_stat_set(
   3144 			req->args.l3_vrf_stat_set.vrf,
   3145 			req->args.l3_vrf_stat_set.stat,
   3146 			req->args.l3_vrf_stat_set.val);
   3147 		break;
   3148 	case BCMX_ASYNC_ENTRY_L3_VRF_STAT_SET32:
   3149 		rv = bcmx_l3_vrf_stat_set32(
   3150 			req->args.l3_vrf_stat_set32.vrf,
   3151 			req->args.l3_vrf_stat_set32.stat,
   3152 			req->args.l3_vrf_stat_set32.val);
   3153 		break;
   3154 	case BCMX_ASYNC_ENTRY_L3_VRRP_ADD:
   3155 		rv = bcmx_l3_vrrp_add(
   3156 			req->args.l3_vrrp_add.vlan,
   3157 			req->args.l3_vrrp_add.vrid);
   3158 		break;
   3159 	case BCMX_ASYNC_ENTRY_L3_VRRP_DELETE:
   3160 		rv = bcmx_l3_vrrp_delete(
   3161 			req->args.l3_vrrp_delete.vlan,
   3162 			req->args.l3_vrrp_delete.vrid);
   3163 		break;
   3164 	case BCMX_ASYNC_ENTRY_L3_VRRP_DELETE_ALL:
   3165 		rv = bcmx_l3_vrrp_delete_all(
   3166 			req->args.l3_vrrp_delete_all.vlan);
   3167 		break;
   3168 	case BCMX_ASYNC_ENTRY_L3_VRRP_GET:
   3169 		rv = bcmx_l3_vrrp_get(
   3170 			req->args.l3_vrrp_get.vlan,
   3171 			req->args.l3_vrrp_get.alloc_size,
   3172 			req->args.l3_vrrp_get.vrid_array,
   3173 			req->args.l3_vrrp_get.count);
   3174 		break;
   3175 #endif	/* INCLUDE_L3 */
   3176 	case BCMX_ASYNC_ENTRY_LINKSCAN_DEVICE_ADD:
   3177 		rv = bcmx_linkscan_device_add(
   3178 			req->args.linkscan_device_add.bcm_unit);
   3179 		break;
   3180 	case BCMX_ASYNC_ENTRY_LINKSCAN_DEVICE_REMOVE:
   3181 		rv = bcmx_linkscan_device_remove(
   3182 			req->args.linkscan_device_remove.bcm_unit);
   3183 		break;
   3184 	case BCMX_ASYNC_ENTRY_LINKSCAN_ENABLE_GET:
   3185 		rv = bcmx_linkscan_enable_get(
   3186 			req->args.linkscan_enable_get.us,
   3187 			req->args.linkscan_enable_get.consistent);
   3188 		break;
   3189 	case BCMX_ASYNC_ENTRY_LINKSCAN_ENABLE_PORT_GET:
   3190 		rv = bcmx_linkscan_enable_port_get(
   3191 			req->args.linkscan_enable_port_get.lport);
   3192 		break;
   3193 	case BCMX_ASYNC_ENTRY_LINKSCAN_ENABLE_SET:
   3194 		rv = bcmx_linkscan_enable_set(
   3195 			req->args.linkscan_enable_set.us);
   3196 		break;
   3197 	case BCMX_ASYNC_ENTRY_LINKSCAN_REGISTER:
   3198 		rv = bcmx_linkscan_register(
   3199 			req->args.linkscan_register.ln_cb);
   3200 		break;
   3201 	case BCMX_ASYNC_ENTRY_LINKSCAN_UNREGISTER:
   3202 		rv = bcmx_linkscan_unregister(
   3203 			req->args.linkscan_unregister.ln_cb);
   3204 		break;
   3205 	case BCMX_ASYNC_ENTRY_MCAST_ADDR_ADD:
   3206 		rv = bcmx_mcast_addr_add(
   3207 			req->args.mcast_addr_add.mcaddr);
   3208 		break;
   3209 	case BCMX_ASYNC_ENTRY_MCAST_ADDR_REMOVE:
   3210 		rv = bcmx_mcast_addr_remove(
   3211 			req->args.mcast_addr_remove.mac,
   3212 			req->args.mcast_addr_remove.vid);
   3213 		break;
   3214 	case BCMX_ASYNC_ENTRY_MCAST_INIT:
   3215 		rv = bcmx_mcast_init(
   3216 			);
   3217 		break;
   3218 	case BCMX_ASYNC_ENTRY_MCAST_JOIN:
   3219 		rv = bcmx_mcast_join(
   3220 			req->args.mcast_join.mac,
   3221 			req->args.mcast_join.vid,
   3222 			req->args.mcast_join.port,
   3223 			req->args.mcast_join.mcaddr,
   3224 			req->args.mcast_join.allrtr);
   3225 		break;
   3226 	case BCMX_ASYNC_ENTRY_MCAST_LEAVE:
   3227 		rv = bcmx_mcast_leave(
   3228 			req->args.mcast_leave.mac,
   3229 			req->args.mcast_leave.vid,
   3230 			req->args.mcast_leave.port);
   3231 		break;
   3232 	case BCMX_ASYNC_ENTRY_MCAST_PORT_ADD:
   3233 		rv = bcmx_mcast_port_add(
   3234 			req->args.mcast_port_add.mcaddr);
   3235 		break;
   3236 	case BCMX_ASYNC_ENTRY_MCAST_PORT_GET:
   3237 		rv = bcmx_mcast_port_get(
   3238 			req->args.mcast_port_get.mac,
   3239 			req->args.mcast_port_get.vid,
   3240 			req->args.mcast_port_get.mcaddr);
   3241 		break;
   3242 	case BCMX_ASYNC_ENTRY_MCAST_PORT_REMOVE:
   3243 		rv = bcmx_mcast_port_remove(
   3244 			req->args.mcast_port_remove.mcaddr);
   3245 		break;
   3246 #ifdef	INCLUDE_L3
   3247 	case BCMX_ASYNC_ENTRY_MIM_DETACH:
   3248 		rv = bcmx_mim_detach(
   3249 			);
   3250 		break;
   3251 	case BCMX_ASYNC_ENTRY_MIM_INIT:
   3252 		rv = bcmx_mim_init(
   3253 			);
   3254 		break;
   3255 	case BCMX_ASYNC_ENTRY_MIM_PORT_ADD:
   3256 		rv = bcmx_mim_port_add(
   3257 			req->args.mim_port_add.vpn,
   3258 			req->args.mim_port_add.mim_port);
   3259 		break;
   3260 	case BCMX_ASYNC_ENTRY_MIM_PORT_DELETE:
   3261 		rv = bcmx_mim_port_delete(
   3262 			req->args.mim_port_delete.vpn,
   3263 			req->args.mim_port_delete.mim_port_id);
   3264 		break;
   3265 	case BCMX_ASYNC_ENTRY_MIM_PORT_DELETE_ALL:
   3266 		rv = bcmx_mim_port_delete_all(
   3267 			req->args.mim_port_delete_all.vpn);
   3268 		break;
   3269 	case BCMX_ASYNC_ENTRY_MIM_PORT_GET:
   3270 		rv = bcmx_mim_port_get(
   3271 			req->args.mim_port_get.vpn,
   3272 			req->args.mim_port_get.mim_port);
   3273 		break;
   3274 	case BCMX_ASYNC_ENTRY_MIM_PORT_GET_ALL:
   3275 		rv = bcmx_mim_port_get_all(
   3276 			req->args.mim_port_get_all.vpn,
   3277 			req->args.mim_port_get_all.port_max,
   3278 			req->args.mim_port_get_all.port_array,
   3279 			req->args.mim_port_get_all.port_count);
   3280 		break;
   3281 	case BCMX_ASYNC_ENTRY_MIM_VPN_CREATE:
   3282 		rv = bcmx_mim_vpn_create(
   3283 			req->args.mim_vpn_create.info);
   3284 		break;
   3285 	case BCMX_ASYNC_ENTRY_MIM_VPN_DESTROY:
   3286 		rv = bcmx_mim_vpn_destroy(
   3287 			req->args.mim_vpn_destroy.vpn);
   3288 		break;
   3289 	case BCMX_ASYNC_ENTRY_MIM_VPN_DESTROY_ALL:
   3290 		rv = bcmx_mim_vpn_destroy_all(
   3291 			);
   3292 		break;
   3293 	case BCMX_ASYNC_ENTRY_MIM_VPN_GET:
   3294 		rv = bcmx_mim_vpn_get(
   3295 			req->args.mim_vpn_get.vpn,
   3296 			req->args.mim_vpn_get.info);
   3297 		break;
   3298 #endif	/* INCLUDE_L3 */
   3299 	case BCMX_ASYNC_ENTRY_MIRROR_DESTINATION_CREATE:
   3300 		rv = bcmx_mirror_destination_create(
   3301 			req->args.mirror_destination_create.mirror_dest);
   3302 		break;
   3303 	case BCMX_ASYNC_ENTRY_MIRROR_DESTINATION_DESTROY:
   3304 		rv = bcmx_mirror_destination_destroy(
   3305 			req->args.mirror_destination_destroy.mirror_dest_id);
   3306 		break;
   3307 	case BCMX_ASYNC_ENTRY_MIRROR_DESTINATION_GET:
   3308 		rv = bcmx_mirror_destination_get(
   3309 			req->args.mirror_destination_get.mirror_dest_id,
   3310 			req->args.mirror_destination_get.mirror_dest);
   3311 		break;
   3312 	case BCMX_ASYNC_ENTRY_MIRROR_EGRESS_GET:
   3313 		rv = bcmx_mirror_egress_get(
   3314 			req->args.mirror_egress_get.port,
   3315 			req->args.mirror_egress_get.val);
   3316 		break;
   3317 	case BCMX_ASYNC_ENTRY_MIRROR_EGRESS_SET:
   3318 		rv = bcmx_mirror_egress_set(
   3319 			req->args.mirror_egress_set.port,
   3320 			req->args.mirror_egress_set.val);
   3321 		break;
   3322 	case BCMX_ASYNC_ENTRY_MIRROR_FABRIC_LIST_GET:
   3323 		rv = bcmx_mirror_fabric_list_get(
   3324 			req->args.mirror_fabric_list_get.port,
   3325 			req->args.mirror_fabric_list_get.lplist);
   3326 		break;
   3327 	case BCMX_ASYNC_ENTRY_MIRROR_FABRIC_LIST_SET:
   3328 		rv = bcmx_mirror_fabric_list_set(
   3329 			req->args.mirror_fabric_list_set.port,
   3330 			req->args.mirror_fabric_list_set.lplist);
   3331 		break;
   3332 	case BCMX_ASYNC_ENTRY_MIRROR_INGRESS_GET:
   3333 		rv = bcmx_mirror_ingress_get(
   3334 			req->args.mirror_ingress_get.port,
   3335 			req->args.mirror_ingress_get.val);
   3336 		break;
   3337 	case BCMX_ASYNC_ENTRY_MIRROR_INGRESS_SET:
   3338 		rv = bcmx_mirror_ingress_set(
   3339 			req->args.mirror_ingress_set.port,
   3340 			req->args.mirror_ingress_set.val);
   3341 		break;
   3342 	case BCMX_ASYNC_ENTRY_MIRROR_INIT:
   3343 		rv = bcmx_mirror_init(
   3344 			);
   3345 		break;
   3346 	case BCMX_ASYNC_ENTRY_MIRROR_MODE_GET:
   3347 		rv = bcmx_mirror_mode_get(
   3348 			req->args.mirror_mode_get.mode);
   3349 		break;
   3350 	case BCMX_ASYNC_ENTRY_MIRROR_MODE_SET:
   3351 		rv = bcmx_mirror_mode_set(
   3352 			req->args.mirror_mode_set.mode);
   3353 		break;
   3354 	case BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_ADD:
   3355 		rv = bcmx_mirror_port_dest_add(
   3356 			req->args.mirror_port_dest_add.port,
   3357 			req->args.mirror_port_dest_add.flags,
   3358 			req->args.mirror_port_dest_add.mirror_dest_id);
   3359 		break;
   3360 	case BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_DELETE:
   3361 		rv = bcmx_mirror_port_dest_delete(
   3362 			req->args.mirror_port_dest_delete.port,
   3363 			req->args.mirror_port_dest_delete.flags,
   3364 			req->args.mirror_port_dest_delete.mirror_dest_id);
   3365 		break;
   3366 	case BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_DELETE_ALL:
   3367 		rv = bcmx_mirror_port_dest_delete_all(
   3368 			req->args.mirror_port_dest_delete_all.port,
   3369 			req->args.mirror_port_dest_delete_all.flags);
   3370 		break;
   3371 	case BCMX_ASYNC_ENTRY_MIRROR_PORT_DEST_GET:
   3372 		rv = bcmx_mirror_port_dest_get(
   3373 			req->args.mirror_port_dest_get.port,
   3374 			req->args.mirror_port_dest_get.flags,
   3375 			req->args.mirror_port_dest_get.mirror_dest_size,
   3376 			req->args.mirror_port_dest_get.mirror_dest,
   3377 			req->args.mirror_port_dest_get.mirror_dest_count);
   3378 		break;
   3379 	case BCMX_ASYNC_ENTRY_MIRROR_PORT_GET:
   3380 		rv = bcmx_mirror_port_get(
   3381 			req->args.mirror_port_get.port,
   3382 			req->args.mirror_port_get.dest_port,
   3383 			req->args.mirror_port_get.flags);
   3384 		break;
   3385 	case BCMX_ASYNC_ENTRY_MIRROR_PORT_SET:
   3386 		rv = bcmx_mirror_port_set(
   3387 			req->args.mirror_port_set.port,
   3388 			req->args.mirror_port_set.dest_port,
   3389 			req->args.mirror_port_set.flags);
   3390 		break;
   3391 	case BCMX_ASYNC_ENTRY_MIRROR_TO_GET:
   3392 		rv = bcmx_mirror_to_get(
   3393 			req->args.mirror_to_get.port);
   3394 		break;
   3395 	case BCMX_ASYNC_ENTRY_MIRROR_TO_SET:
   3396 		rv = bcmx_mirror_to_set(
   3397 			req->args.mirror_to_set.port);
   3398 		break;
   3399 	case BCMX_ASYNC_ENTRY_MIRROR_VLAN_GET:
   3400 		rv = bcmx_mirror_vlan_get(
   3401 			req->args.mirror_vlan_get.port,
   3402 			req->args.mirror_vlan_get.tpid,
   3403 			req->args.mirror_vlan_get.vlan);
   3404 		break;
   3405 	case BCMX_ASYNC_ENTRY_MIRROR_VLAN_SET:
   3406 		rv = bcmx_mirror_vlan_set(
   3407 			req->args.mirror_vlan_set.port,
   3408 			req->args.mirror_vlan_set.tpid,
   3409 			req->args.mirror_vlan_set.vlan);
   3410 		break;
   3411 #ifdef	INCLUDE_L3
   3412 	case BCMX_ASYNC_ENTRY_MPLS_CLEANUP:
   3413 		rv = bcmx_mpls_cleanup(
   3414 			);
   3415 		break;
   3416 	case BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_CREATE:
   3417 		rv = bcmx_mpls_exp_map_create(
   3418 			req->args.mpls_exp_map_create.flags,
   3419 			req->args.mpls_exp_map_create.exp_map_id);
   3420 		break;
   3421 	case BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_DESTROY:
   3422 		rv = bcmx_mpls_exp_map_destroy(
   3423 			req->args.mpls_exp_map_destroy.exp_map_id);
   3424 		break;
   3425 	case BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_GET:
   3426 		rv = bcmx_mpls_exp_map_get(
   3427 			req->args.mpls_exp_map_get.exp_map_id,
   3428 			req->args.mpls_exp_map_get.exp_map);
   3429 		break;
   3430 	case BCMX_ASYNC_ENTRY_MPLS_EXP_MAP_SET:
   3431 		rv = bcmx_mpls_exp_map_set(
   3432 			req->args.mpls_exp_map_set.exp_map_id,
   3433 			req->args.mpls_exp_map_set.exp_map);
   3434 		break;
   3435 	case BCMX_ASYNC_ENTRY_MPLS_INIT:
   3436 		rv = bcmx_mpls_init(
   3437 			);
   3438 		break;
   3439 	case BCMX_ASYNC_ENTRY_MPLS_LABEL_STAT_CLEAR:
   3440 		rv = bcmx_mpls_label_stat_clear(
   3441 			req->args.mpls_label_stat_clear.label,
   3442 			req->args.mpls_label_stat_clear.port,
   3443 			req->args.mpls_label_stat_clear.stat);
   3444 		break;
   3445 	case BCMX_ASYNC_ENTRY_MPLS_LABEL_STAT_GET:
   3446 		rv = bcmx_mpls_label_stat_get(
   3447 			req->args.mpls_label_stat_get.label,
   3448 			req->args.mpls_label_stat_get.port,
   3449 			req->args.mpls_label_stat_get.stat,
   3450 			req->args.mpls_label_stat_get.val);
   3451 		break;
   3452 	case BCMX_ASYNC_ENTRY_MPLS_LABEL_STAT_GET32:
   3453 		rv = bcmx_mpls_label_stat_get32(
   3454 			req->args.mpls_label_stat_get32.label,
   3455 			req->args.mpls_label_stat_get32.port,
   3456 			req->args.mpls_label_stat_get32.stat,
   3457 			req->args.mpls_label_stat_get32.val);
   3458 		break;
   3459 	case BCMX_ASYNC_ENTRY_MPLS_PORT_ADD:
   3460 		rv = bcmx_mpls_port_add(
   3461 			req->args.mpls_port_add.vpn,
   3462 			req->args.mpls_port_add.mpls_port);
   3463 		break;
   3464 	case BCMX_ASYNC_ENTRY_MPLS_PORT_DELETE:
   3465 		rv = bcmx_mpls_port_delete(
   3466 			req->args.mpls_port_delete.vpn,
   3467 			req->args.mpls_port_delete.mpls_port_id);
   3468 		break;
   3469 	case BCMX_ASYNC_ENTRY_MPLS_PORT_DELETE_ALL:
   3470 		rv = bcmx_mpls_port_delete_all(
   3471 			req->args.mpls_port_delete_all.vpn);
   3472 		break;
   3473 	case BCMX_ASYNC_ENTRY_MPLS_PORT_GET:
   3474 		rv = bcmx_mpls_port_get(
   3475 			req->args.mpls_port_get.vpn,
   3476 			req->args.mpls_port_get.mpls_port);
   3477 		break;
   3478 	case BCMX_ASYNC_ENTRY_MPLS_PORT_GET_ALL:
   3479 		rv = bcmx_mpls_port_get_all(
   3480 			req->args.mpls_port_get_all.vpn,
   3481 			req->args.mpls_port_get_all.port_max,
   3482 			req->args.mpls_port_get_all.port_array,
   3483 			req->args.mpls_port_get_all.port_count);
   3484 		break;
   3485 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_CLEAR:
   3486 		rv = bcmx_mpls_tunnel_initiator_clear(
   3487 			req->args.mpls_tunnel_initiator_clear.intf);
   3488 		break;
   3489 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_CLEAR_ALL:
   3490 		rv = bcmx_mpls_tunnel_initiator_clear_all(
   3491 			);
   3492 		break;
   3493 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_GET:
   3494 		rv = bcmx_mpls_tunnel_initiator_get(
   3495 			req->args.mpls_tunnel_initiator_get.intf,
   3496 			req->args.mpls_tunnel_initiator_get.label_max,
   3497 			req->args.mpls_tunnel_initiator_get.label_array,
   3498 			req->args.mpls_tunnel_initiator_get.label_count);
   3499 		break;
   3500 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_INITIATOR_SET:
   3501 		rv = bcmx_mpls_tunnel_initiator_set(
   3502 			req->args.mpls_tunnel_initiator_set.intf,
   3503 			req->args.mpls_tunnel_initiator_set.num_labels,
   3504 			req->args.mpls_tunnel_initiator_set.label_array);
   3505 		break;
   3506 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_ADD:
   3507 		rv = bcmx_mpls_tunnel_switch_add(
   3508 			req->args.mpls_tunnel_switch_add.info);
   3509 		break;
   3510 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_DELETE:
   3511 		rv = bcmx_mpls_tunnel_switch_delete(
   3512 			req->args.mpls_tunnel_switch_delete.info);
   3513 		break;
   3514 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_DELETE_ALL:
   3515 		rv = bcmx_mpls_tunnel_switch_delete_all(
   3516 			);
   3517 		break;
   3518 	case BCMX_ASYNC_ENTRY_MPLS_TUNNEL_SWITCH_GET:
   3519 		rv = bcmx_mpls_tunnel_switch_get(
   3520 			req->args.mpls_tunnel_switch_get.info);
   3521 		break;
   3522 	case BCMX_ASYNC_ENTRY_MPLS_VPN_ID_CREATE:
   3523 		rv = bcmx_mpls_vpn_id_create(
   3524 			req->args.mpls_vpn_id_create.info);
   3525 		break;
   3526 	case BCMX_ASYNC_ENTRY_MPLS_VPN_ID_DESTROY:
   3527 		rv = bcmx_mpls_vpn_id_destroy(
   3528 			req->args.mpls_vpn_id_destroy.vpn);
   3529 		break;
   3530 	case BCMX_ASYNC_ENTRY_MPLS_VPN_ID_DESTROY_ALL:
   3531 		rv = bcmx_mpls_vpn_id_destroy_all(
   3532 			);
   3533 		break;
   3534 	case BCMX_ASYNC_ENTRY_MPLS_VPN_ID_GET:
   3535 		rv = bcmx_mpls_vpn_id_get(
   3536 			req->args.mpls_vpn_id_get.vpn,
   3537 			req->args.mpls_vpn_id_get.info);
   3538 		break;
   3539 #endif	/* INCLUDE_L3 */
   3540 	case BCMX_ASYNC_ENTRY_MULTICAST_CONTROL_GET:
   3541 		rv = bcmx_multicast_control_get(
   3542 			req->args.multicast_control_get.group,
   3543 			req->args.multicast_control_get.type,
   3544 			req->args.multicast_control_get.arg);
   3545 		break;
   3546 	case BCMX_ASYNC_ENTRY_MULTICAST_CONTROL_SET:
   3547 		rv = bcmx_multicast_control_set(
   3548 			req->args.multicast_control_set.group,
   3549 			req->args.multicast_control_set.type,
   3550 			req->args.multicast_control_set.arg);
   3551 		break;
   3552 	case BCMX_ASYNC_ENTRY_MULTICAST_CREATE:
   3553 		rv = bcmx_multicast_create(
   3554 			req->args.multicast_create.flags,
   3555 			req->args.multicast_create.group);
   3556 		break;
   3557 	case BCMX_ASYNC_ENTRY_MULTICAST_DESTROY:
   3558 		rv = bcmx_multicast_destroy(
   3559 			req->args.multicast_destroy.group);
   3560 		break;
   3561 	case BCMX_ASYNC_ENTRY_MULTICAST_DETACH:
   3562 		rv = bcmx_multicast_detach(
   3563 			);
   3564 		break;
   3565 	case BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_ADD:
   3566 		rv = bcmx_multicast_egress_add(
   3567 			req->args.multicast_egress_add.group,
   3568 			req->args.multicast_egress_add.port,
   3569 			req->args.multicast_egress_add.encap_id);
   3570 		break;
   3571 	case BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_DELETE:
   3572 		rv = bcmx_multicast_egress_delete(
   3573 			req->args.multicast_egress_delete.group,
   3574 			req->args.multicast_egress_delete.port,
   3575 			req->args.multicast_egress_delete.encap_id);
   3576 		break;
   3577 	case BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_DELETE_ALL:
   3578 		rv = bcmx_multicast_egress_delete_all(
   3579 			req->args.multicast_egress_delete_all.group);
   3580 		break;
   3581 	case BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_GET:
   3582 		rv = bcmx_multicast_egress_get(
   3583 			req->args.multicast_egress_get.group,
   3584 			req->args.multicast_egress_get.port_max,
   3585 			req->args.multicast_egress_get.port_array,
   3586 			req->args.multicast_egress_get.encap_id_array,
   3587 			req->args.multicast_egress_get.port_count);
   3588 		break;
   3589 	case BCMX_ASYNC_ENTRY_MULTICAST_EGRESS_SET:
   3590 		rv = bcmx_multicast_egress_set(
   3591 			req->args.multicast_egress_set.group,
   3592 			req->args.multicast_egress_set.port_count,
   3593 			req->args.multicast_egress_set.port_array,
   3594 			req->args.multicast_egress_set.encap_id_array);
   3595 		break;
   3596 	case BCMX_ASYNC_ENTRY_MULTICAST_GROUP_GET:
   3597 		rv = bcmx_multicast_group_get(
   3598 			req->args.multicast_group_get.group,
   3599 			req->args.multicast_group_get.flags);
   3600 		break;
   3601 	case BCMX_ASYNC_ENTRY_MULTICAST_INIT:
   3602 		rv = bcmx_multicast_init(
   3603 			);
   3604 		break;
   3605 	case BCMX_ASYNC_ENTRY_MULTICAST_L2_ENCAP_GET:
   3606 		rv = bcmx_multicast_l2_encap_get(
   3607 			req->args.multicast_l2_encap_get.group,
   3608 			req->args.multicast_l2_encap_get.port,
   3609 			req->args.multicast_l2_encap_get.vlan,
   3610 			req->args.multicast_l2_encap_get.encap_id);
   3611 		break;
   3612 	case BCMX_ASYNC_ENTRY_MULTICAST_L3_ENCAP_GET:
   3613 		rv = bcmx_multicast_l3_encap_get(
   3614 			req->args.multicast_l3_encap_get.group,
   3615 			req->args.multicast_l3_encap_get.port,
   3616 			req->args.multicast_l3_encap_get.intf,
   3617 			req->args.multicast_l3_encap_get.encap_id);
   3618 		break;
   3619 	case BCMX_ASYNC_ENTRY_MULTICAST_MIM_ENCAP_GET:
   3620 		rv = bcmx_multicast_mim_encap_get(
   3621 			req->args.multicast_mim_encap_get.group,
   3622 			req->args.multicast_mim_encap_get.port,
   3623 			req->args.multicast_mim_encap_get.mim_port_id,
   3624 			req->args.multicast_mim_encap_get.encap_id);
   3625 		break;
   3626 	case BCMX_ASYNC_ENTRY_MULTICAST_NIV_ENCAP_GET:
   3627 		rv = bcmx_multicast_niv_encap_get(
   3628 			req->args.multicast_niv_encap_get.group,
   3629 			req->args.multicast_niv_encap_get.port,
   3630 			req->args.multicast_niv_encap_get.niv_port_id,
   3631 			req->args.multicast_niv_encap_get.encap_id);
   3632 		break;
   3633 	case BCMX_ASYNC_ENTRY_MULTICAST_REPL_GET:
   3634 		rv = bcmx_multicast_repl_get(
   3635 			req->args.multicast_repl_get.index,
   3636 			req->args.multicast_repl_get.port,
   3637 			req->args.multicast_repl_get.vlan_vec);
   3638 		break;
   3639 	case BCMX_ASYNC_ENTRY_MULTICAST_REPL_SET:
   3640 		rv = bcmx_multicast_repl_set(
   3641 			req->args.multicast_repl_set.index,
   3642 			req->args.multicast_repl_set.port,
   3643 			req->args.multicast_repl_set.vlan_vec);
   3644 		break;
   3645 	case BCMX_ASYNC_ENTRY_MULTICAST_SUBPORT_ENCAP_GET:
   3646 		rv = bcmx_multicast_subport_encap_get(
   3647 			req->args.multicast_subport_encap_get.group,
   3648 			req->args.multicast_subport_encap_get.port,
   3649 			req->args.multicast_subport_encap_get.subport,
   3650 			req->args.multicast_subport_encap_get.encap_id);
   3651 		break;
   3652 	case BCMX_ASYNC_ENTRY_MULTICAST_TRILL_ENCAP_GET:
   3653 		rv = bcmx_multicast_trill_encap_get(
   3654 			req->args.multicast_trill_encap_get.group,
   3655 			req->args.multicast_trill_encap_get.port,
   3656 			req->args.multicast_trill_encap_get.intf,
   3657 			req->args.multicast_trill_encap_get.encap_id);
   3658 		break;
   3659 	case BCMX_ASYNC_ENTRY_MULTICAST_VLAN_ENCAP_GET:
   3660 		rv = bcmx_multicast_vlan_encap_get(
   3661 			req->args.multicast_vlan_encap_get.group,
   3662 			req->args.multicast_vlan_encap_get.port,
   3663 			req->args.multicast_vlan_encap_get.vlan_port_id,
   3664 			req->args.multicast_vlan_encap_get.encap_id);
   3665 		break;
   3666 	case BCMX_ASYNC_ENTRY_MULTICAST_VPLS_ENCAP_GET:
   3667 		rv = bcmx_multicast_vpls_encap_get(
   3668 			req->args.multicast_vpls_encap_get.group,
   3669 			req->args.multicast_vpls_encap_get.port,
   3670 			req->args.multicast_vpls_encap_get.mpls_port_id,
   3671 			req->args.multicast_vpls_encap_get.encap_id);
   3672 		break;
   3673 	case BCMX_ASYNC_ENTRY_MULTICAST_WLAN_ENCAP_GET:
   3674 		rv = bcmx_multicast_wlan_encap_get(
   3675 			req->args.multicast_wlan_encap_get.group,
   3676 			req->args.multicast_wlan_encap_get.port,
   3677 			req->args.multicast_wlan_encap_get.wlan_port_id,
   3678 			req->args.multicast_wlan_encap_get.encap_id);
   3679 		break;
   3680 #ifdef	INCLUDE_L3
   3681 	case BCMX_ASYNC_ENTRY_NIV_CLEANUP:
   3682 		rv = bcmx_niv_cleanup(
   3683 			);
   3684 		break;
   3685 	case BCMX_ASYNC_ENTRY_NIV_FORWARD_ADD:
   3686 		rv = bcmx_niv_forward_add(
   3687 			req->args.niv_forward_add.iv_fwd_entry);
   3688 		break;
   3689 	case BCMX_ASYNC_ENTRY_NIV_FORWARD_DELETE:
   3690 		rv = bcmx_niv_forward_delete(
   3691 			req->args.niv_forward_delete.iv_fwd_entry);
   3692 		break;
   3693 	case BCMX_ASYNC_ENTRY_NIV_FORWARD_DELETE_ALL:
   3694 		rv = bcmx_niv_forward_delete_all(
   3695 			);
   3696 		break;
   3697 	case BCMX_ASYNC_ENTRY_NIV_FORWARD_GET:
   3698 		rv = bcmx_niv_forward_get(
   3699 			req->args.niv_forward_get.iv_fwd_entry);
   3700 		break;
   3701 	case BCMX_ASYNC_ENTRY_NIV_INIT:
   3702 		rv = bcmx_niv_init(
   3703 			);
   3704 		break;
   3705 	case BCMX_ASYNC_ENTRY_NIV_PORT_ADD:
   3706 		rv = bcmx_niv_port_add(
   3707 			req->args.niv_port_add.niv_port);
   3708 		break;
   3709 	case BCMX_ASYNC_ENTRY_NIV_PORT_DELETE:
   3710 		rv = bcmx_niv_port_delete(
   3711 			req->args.niv_port_delete.niv_port_id);
   3712 		break;
   3713 	case BCMX_ASYNC_ENTRY_NIV_PORT_DELETE_ALL:
   3714 		rv = bcmx_niv_port_delete_all(
   3715 			);
   3716 		break;
   3717 	case BCMX_ASYNC_ENTRY_NIV_PORT_GET:
   3718 		rv = bcmx_niv_port_get(
   3719 			req->args.niv_port_get.niv_port);
   3720 		break;
   3721 #endif	/* INCLUDE_L3 */
   3722 	case BCMX_ASYNC_ENTRY_OAM_DETACH:
   3723 		rv = bcmx_oam_detach(
   3724 			);
   3725 		break;
   3726 	case BCMX_ASYNC_ENTRY_OAM_ENDPOINT_CREATE:
   3727 		rv = bcmx_oam_endpoint_create(
   3728 			req->args.oam_endpoint_create.endpoint_info);
   3729 		break;
   3730 	case BCMX_ASYNC_ENTRY_OAM_ENDPOINT_DESTROY:
   3731 		rv = bcmx_oam_endpoint_destroy(
   3732 			req->args.oam_endpoint_destroy.endpoint);
   3733 		break;
   3734 	case BCMX_ASYNC_ENTRY_OAM_ENDPOINT_DESTROY_ALL:
   3735 		rv = bcmx_oam_endpoint_destroy_all(
   3736 			req->args.oam_endpoint_destroy_all.group);
   3737 		break;
   3738 	case BCMX_ASYNC_ENTRY_OAM_ENDPOINT_GET:
   3739 		rv = bcmx_oam_endpoint_get(
   3740 			req->args.oam_endpoint_get.endpoint,
   3741 			req->args.oam_endpoint_get.endpoint_info);
   3742 		break;
   3743 	case BCMX_ASYNC_ENTRY_OAM_GROUP_CREATE:
   3744 		rv = bcmx_oam_group_create(
   3745 			req->args.oam_group_create.group_info);
   3746 		break;
   3747 	case BCMX_ASYNC_ENTRY_OAM_GROUP_DESTROY:
   3748 		rv = bcmx_oam_group_destroy(
   3749 			req->args.oam_group_destroy.group);
   3750 		break;
   3751 	case BCMX_ASYNC_ENTRY_OAM_GROUP_DESTROY_ALL:
   3752 		rv = bcmx_oam_group_destroy_all(
   3753 			);
   3754 		break;
   3755 	case BCMX_ASYNC_ENTRY_OAM_GROUP_GET:
   3756 		rv = bcmx_oam_group_get(
   3757 			req->args.oam_group_get.group,
   3758 			req->args.oam_group_get.group_info);
   3759 		break;
   3760 	case BCMX_ASYNC_ENTRY_OAM_INIT:
   3761 		rv = bcmx_oam_init(
   3762 			);
   3763 		break;
   3764 	case BCMX_ASYNC_ENTRY_POLICER_CREATE:
   3765 		rv = bcmx_policer_create(
   3766 			req->args.policer_create.pol_cfg,
   3767 			req->args.policer_create.policer_id);
   3768 		break;
   3769 	case BCMX_ASYNC_ENTRY_POLICER_DESTROY:
   3770 		rv = bcmx_policer_destroy(
   3771 			req->args.policer_destroy.policer_id);
   3772 		break;
   3773 	case BCMX_ASYNC_ENTRY_POLICER_DESTROY_ALL:
   3774 		rv = bcmx_policer_destroy_all(
   3775 			);
   3776 		break;
   3777 	case BCMX_ASYNC_ENTRY_POLICER_GET:
   3778 		rv = bcmx_policer_get(
   3779 			req->args.policer_get.policer_id,
   3780 			req->args.policer_get.pol_cfg);
   3781 		break;
   3782 	case BCMX_ASYNC_ENTRY_POLICER_INIT:
   3783 		rv = bcmx_policer_init(
   3784 			);
   3785 		break;
   3786 	case BCMX_ASYNC_ENTRY_POLICER_SET:
   3787 		rv = bcmx_policer_set(
   3788 			req->args.policer_set.policer_id,
   3789 			req->args.policer_set.pol_cfg);
   3790 		break;
   3791 	case BCMX_ASYNC_ENTRY_PORT_ABILITY_ADVERT_GET:
   3792 		rv = bcmx_port_ability_advert_get(
   3793 			req->args.port_ability_advert_get.port,
   3794 			req->args.port_ability_advert_get.ability_mask);
   3795 		break;
   3796 	case BCMX_ASYNC_ENTRY_PORT_ABILITY_ADVERT_SET:
   3797 		rv = bcmx_port_ability_advert_set(
   3798 			req->args.port_ability_advert_set.port,
   3799 			req->args.port_ability_advert_set.ability_mask);
   3800 		break;
   3801 	case BCMX_ASYNC_ENTRY_PORT_ABILITY_GET:
   3802 		rv = bcmx_port_ability_get(
   3803 			req->args.port_ability_get.port,
   3804 			req->args.port_ability_get.local_ability_mask);
   3805 		break;
   3806 	case BCMX_ASYNC_ENTRY_PORT_ABILITY_LOCAL_GET:
   3807 		rv = bcmx_port_ability_local_get(
   3808 			req->args.port_ability_local_get.port,
   3809 			req->args.port_ability_local_get.local_ability_mask);
   3810 		break;
   3811 	case BCMX_ASYNC_ENTRY_PORT_ABILITY_REMOTE_GET:
   3812 		rv = bcmx_port_ability_remote_get(
   3813 			req->args.port_ability_remote_get.port,
   3814 			req->args.port_ability_remote_get.ability_mask);
   3815 		break;
   3816 	case BCMX_ASYNC_ENTRY_PORT_ADVERT_GET:
   3817 		rv = bcmx_port_advert_get(
   3818 			req->args.port_advert_get.port,
   3819 			req->args.port_advert_get.ability_mask);
   3820 		break;
   3821 	case BCMX_ASYNC_ENTRY_PORT_ADVERT_REMOTE_GET:
   3822 		rv = bcmx_port_advert_remote_get(
   3823 			req->args.port_advert_remote_get.port,
   3824 			req->args.port_advert_remote_get.ability_mask);
   3825 		break;
   3826 	case BCMX_ASYNC_ENTRY_PORT_ADVERT_SET:
   3827 		rv = bcmx_port_advert_set(
   3828 			req->args.port_advert_set.port,
   3829 			req->args.port_advert_set.ability_mask);
   3830 		break;
   3831 	case BCMX_ASYNC_ENTRY_PORT_AUTONEG_GET:
   3832 		rv = bcmx_port_autoneg_get(
   3833 			req->args.port_autoneg_get.port,
   3834 			req->args.port_autoneg_get.autoneg);
   3835 		break;
   3836 	case BCMX_ASYNC_ENTRY_PORT_AUTONEG_SET:
   3837 		rv = bcmx_port_autoneg_set(
   3838 			req->args.port_autoneg_set.port,
   3839 			req->args.port_autoneg_set.autoneg);
   3840 		break;
   3841 	case BCMX_ASYNC_ENTRY_PORT_BPDU_ENABLE_GET:
   3842 		rv = bcmx_port_bpdu_enable_get(
   3843 			req->args.port_bpdu_enable_get.port,
   3844 			req->args.port_bpdu_enable_get.enable);
   3845 		break;
   3846 	case BCMX_ASYNC_ENTRY_PORT_BPDU_ENABLE_SET:
   3847 		rv = bcmx_port_bpdu_enable_set(
   3848 			req->args.port_bpdu_enable_set.port,
   3849 			req->args.port_bpdu_enable_set.enable);
   3850 		break;
   3851 	case BCMX_ASYNC_ENTRY_PORT_CABLE_DIAG:
   3852 		rv = bcmx_port_cable_diag(
   3853 			req->args.port_cable_diag.port,
   3854 			req->args.port_cable_diag.status);
   3855 		break;
   3856 	case BCMX_ASYNC_ENTRY_PORT_CFI_COLOR_GET:
   3857 		rv = bcmx_port_cfi_color_get(
   3858 			req->args.port_cfi_color_get.port,
   3859 			req->args.port_cfi_color_get.cfi,
   3860 			req->args.port_cfi_color_get.color);
   3861 		break;
   3862 	case BCMX_ASYNC_ENTRY_PORT_CFI_COLOR_SET:
   3863 		rv = bcmx_port_cfi_color_set(
   3864 			req->args.port_cfi_color_set.port,
   3865 			req->args.port_cfi_color_set.cfi,
   3866 			req->args.port_cfi_color_set.color);
   3867 		break;
   3868 	case BCMX_ASYNC_ENTRY_PORT_CLASS_GET:
   3869 		rv = bcmx_port_class_get(
   3870 			req->args.port_class_get.port,
   3871 			req->args.port_class_get.pclass,
   3872 			req->args.port_class_get.class_id);
   3873 		break;
   3874 	case BCMX_ASYNC_ENTRY_PORT_CLASS_SET:
   3875 		rv = bcmx_port_class_set(
   3876 			req->args.port_class_set.port,
   3877 			req->args.port_class_set.pclass,
   3878 			req->args.port_class_set.class_id);
   3879 		break;
   3880 	case BCMX_ASYNC_ENTRY_PORT_CONFIG_GET:
   3881 		rv = bcmx_port_config_get(
   3882 			req->args.port_config_get.config);
   3883 		break;
   3884 	case BCMX_ASYNC_ENTRY_PORT_CONGESTION_CONFIG_GET:
   3885 		rv = bcmx_port_congestion_config_get(
   3886 			req->args.port_congestion_config_get.port,
   3887 			req->args.port_congestion_config_get.config);
   3888 		break;
   3889 	case BCMX_ASYNC_ENTRY_PORT_CONGESTION_CONFIG_SET:
   3890 		rv = bcmx_port_congestion_config_set(
   3891 			req->args.port_congestion_config_set.port,
   3892 			req->args.port_congestion_config_set.config);
   3893 		break;
   3894 	case BCMX_ASYNC_ENTRY_PORT_CONTROL_GET:
   3895 		rv = bcmx_port_control_get(
   3896 			req->args.port_control_get.port,
   3897 			req->args.port_control_get.type,
   3898 			req->args.port_control_get.value);
   3899 		break;
   3900 	case BCMX_ASYNC_ENTRY_PORT_CONTROL_PHY_TIMESYNC_GET:
   3901 		rv = bcmx_port_control_phy_timesync_get(
   3902 			req->args.port_control_phy_timesync_get.port,
   3903 			req->args.port_control_phy_timesync_get.type,
   3904 			req->args.port_control_phy_timesync_get.value);
   3905 		break;
   3906 	case BCMX_ASYNC_ENTRY_PORT_CONTROL_PHY_TIMESYNC_SET:
   3907 		rv = bcmx_port_control_phy_timesync_set(
   3908 			req->args.port_control_phy_timesync_set.port,
   3909 			req->args.port_control_phy_timesync_set.type,
   3910 			req->args.port_control_phy_timesync_set.value);
   3911 		break;
   3912 	case BCMX_ASYNC_ENTRY_PORT_CONTROL_SET:
   3913 		rv = bcmx_port_control_set(
   3914 			req->args.port_control_set.port,
   3915 			req->args.port_control_set.type,
   3916 			req->args.port_control_set.value);
   3917 		break;
   3918 	case BCMX_ASYNC_ENTRY_PORT_DISCARD_GET:
   3919 		rv = bcmx_port_discard_get(
   3920 			req->args.port_discard_get.port,
   3921 			req->args.port_discard_get.mode);
   3922 		break;
   3923 	case BCMX_ASYNC_ENTRY_PORT_DISCARD_SET:
   3924 		rv = bcmx_port_discard_set(
   3925 			req->args.port_discard_set.port,
   3926 			req->args.port_discard_set.mode);
   3927 		break;
   3928 	case BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_GET:
   3929 		rv = bcmx_port_dscp_map_get(
   3930 			req->args.port_dscp_map_get.port,
   3931 			req->args.port_dscp_map_get.srccp,
   3932 			req->args.port_dscp_map_get.mapcp,
   3933 			req->args.port_dscp_map_get.prio);
   3934 		break;
   3935 	case BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_MODE_GET:
   3936 		rv = bcmx_port_dscp_map_mode_get(
   3937 			req->args.port_dscp_map_mode_get.port,
   3938 			req->args.port_dscp_map_mode_get.mode);
   3939 		break;
   3940 	case BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_MODE_SET:
   3941 		rv = bcmx_port_dscp_map_mode_set(
   3942 			req->args.port_dscp_map_mode_set.port,
   3943 			req->args.port_dscp_map_mode_set.mode);
   3944 		break;
   3945 	case BCMX_ASYNC_ENTRY_PORT_DSCP_MAP_SET:
   3946 		rv = bcmx_port_dscp_map_set(
   3947 			req->args.port_dscp_map_set.port,
   3948 			req->args.port_dscp_map_set.srccp,
   3949 			req->args.port_dscp_map_set.mapcp,
   3950 			req->args.port_dscp_map_set.prio);
   3951 		break;
   3952 	case BCMX_ASYNC_ENTRY_PORT_DTAG_MODE_GET:
   3953 		rv = bcmx_port_dtag_mode_get(
   3954 			req->args.port_dtag_mode_get.port,
   3955 			req->args.port_dtag_mode_get.mode);
   3956 		break;
   3957 	case BCMX_ASYNC_ENTRY_PORT_DTAG_MODE_SET:
   3958 		rv = bcmx_port_dtag_mode_set(
   3959 			req->args.port_dtag_mode_set.port,
   3960 			req->args.port_dtag_mode_set.mode);
   3961 		break;
   3962 	case BCMX_ASYNC_ENTRY_PORT_DUPLEX_GET:
   3963 		rv = bcmx_port_duplex_get(
   3964 			req->args.port_duplex_get.port,
   3965 			req->args.port_duplex_get.duplex);
   3966 		break;
   3967 	case BCMX_ASYNC_ENTRY_PORT_DUPLEX_SET:
   3968 		rv = bcmx_port_duplex_set(
   3969 			req->args.port_duplex_set.port,
   3970 			req->args.port_duplex_set.duplex);
   3971 		break;
   3972 	case BCMX_ASYNC_ENTRY_PORT_EGRESS_GET:
   3973 		rv = bcmx_port_egress_get(
   3974 			req->args.port_egress_get.port,
   3975 			req->args.port_egress_get.modid,
   3976 			req->args.port_egress_get.lplist);
   3977 		break;
   3978 	case BCMX_ASYNC_ENTRY_PORT_EGRESS_SET:
   3979 		rv = bcmx_port_egress_set(
   3980 			req->args.port_egress_set.port,
   3981 			req->args.port_egress_set.modid,
   3982 			req->args.port_egress_set.lplist);
   3983 		break;
   3984 	case BCMX_ASYNC_ENTRY_PORT_ENABLE_GET:
   3985 		rv = bcmx_port_enable_get(
   3986 			req->args.port_enable_get.port,
   3987 			req->args.port_enable_get.enable);
   3988 		break;
   3989 	case BCMX_ASYNC_ENTRY_PORT_ENABLE_SET:
   3990 		rv = bcmx_port_enable_set(
   3991 			req->args.port_enable_set.port,
   3992 			req->args.port_enable_set.enable);
   3993 		break;
   3994 	case BCMX_ASYNC_ENTRY_PORT_ENCAP_CONFIG_GET:
   3995 		rv = bcmx_port_encap_config_get(
   3996 			req->args.port_encap_config_get.gport,
   3997 			req->args.port_encap_config_get.encap_config);
   3998 		break;
   3999 	case BCMX_ASYNC_ENTRY_PORT_ENCAP_CONFIG_SET:
   4000 		rv = bcmx_port_encap_config_set(
   4001 			req->args.port_encap_config_set.gport,
   4002 			req->args.port_encap_config_set.encap_config);
   4003 		break;
   4004 	case BCMX_ASYNC_ENTRY_PORT_ENCAP_GET:
   4005 		rv = bcmx_port_encap_get(
   4006 			req->args.port_encap_get.port,
   4007 			req->args.port_encap_get.mode);
   4008 		break;
   4009 	case BCMX_ASYNC_ENTRY_PORT_ENCAP_SET:
   4010 		rv = bcmx_port_encap_set(
   4011 			req->args.port_encap_set.port,
   4012 			req->args.port_encap_set.mode);
   4013 		break;
   4014 	case BCMX_ASYNC_ENTRY_PORT_FAULT_GET:
   4015 		rv = bcmx_port_fault_get(
   4016 			req->args.port_fault_get.port,
   4017 			req->args.port_fault_get.flags);
   4018 		break;
   4019 	case BCMX_ASYNC_ENTRY_PORT_FLOOD_BLOCK_GET:
   4020 		rv = bcmx_port_flood_block_get(
   4021 			req->args.port_flood_block_get.ingress_port,
   4022 			req->args.port_flood_block_get.egress_port,
   4023 			req->args.port_flood_block_get.flags);
   4024 		break;
   4025 	case BCMX_ASYNC_ENTRY_PORT_FLOOD_BLOCK_SET:
   4026 		rv = bcmx_port_flood_block_set(
   4027 			req->args.port_flood_block_set.ingress_port,
   4028 			req->args.port_flood_block_set.egress_port,
   4029 			req->args.port_flood_block_set.flags);
   4030 		break;
   4031 	case BCMX_ASYNC_ENTRY_PORT_FORCE_VLAN_GET:
   4032 		rv = bcmx_port_force_vlan_get(
   4033 			req->args.port_force_vlan_get.port,
   4034 			req->args.port_force_vlan_get.vlan,
   4035 			req->args.port_force_vlan_get.pkt_prio,
   4036 			req->args.port_force_vlan_get.flags);
   4037 		break;
   4038 	case BCMX_ASYNC_ENTRY_PORT_FORCE_VLAN_SET:
   4039 		rv = bcmx_port_force_vlan_set(
   4040 			req->args.port_force_vlan_set.port,
   4041 			req->args.port_force_vlan_set.vlan,
   4042 			req->args.port_force_vlan_set.pkt_prio,
   4043 			req->args.port_force_vlan_set.flags);
   4044 		break;
   4045 	case BCMX_ASYNC_ENTRY_PORT_FRAME_MAX_GET:
   4046 		rv = bcmx_port_frame_max_get(
   4047 			req->args.port_frame_max_get.port,
   4048 			req->args.port_frame_max_get.size);
   4049 		break;
   4050 	case BCMX_ASYNC_ENTRY_PORT_FRAME_MAX_SET:
   4051 		rv = bcmx_port_frame_max_set(
   4052 			req->args.port_frame_max_set.port,
   4053 			req->args.port_frame_max_set.size);
   4054 		break;
   4055 	case BCMX_ASYNC_ENTRY_PORT_GPORT_GET:
   4056 		rv = bcmx_port_gport_get(
   4057 			req->args.port_gport_get.port,
   4058 			req->args.port_gport_get.gport);
   4059 		break;
   4060 	case BCMX_ASYNC_ENTRY_PORT_IFG_GET:
   4061 		rv = bcmx_port_ifg_get(
   4062 			req->args.port_ifg_get.port,
   4063 			req->args.port_ifg_get.speed,
   4064 			req->args.port_ifg_get.duplex,
   4065 			req->args.port_ifg_get.bit_times);
   4066 		break;
   4067 	case BCMX_ASYNC_ENTRY_PORT_IFG_SET:
   4068 		rv = bcmx_port_ifg_set(
   4069 			req->args.port_ifg_set.port,
   4070 			req->args.port_ifg_set.speed,
   4071 			req->args.port_ifg_set.duplex,
   4072 			req->args.port_ifg_set.bit_times);
   4073 		break;
   4074 	case BCMX_ASYNC_ENTRY_PORT_IFILTER_GET:
   4075 		rv = bcmx_port_ifilter_get(
   4076 			req->args.port_ifilter_get.port,
   4077 			req->args.port_ifilter_get.mode);
   4078 		break;
   4079 	case BCMX_ASYNC_ENTRY_PORT_IFILTER_SET:
   4080 		rv = bcmx_port_ifilter_set(
   4081 			req->args.port_ifilter_set.port,
   4082 			req->args.port_ifilter_set.mode);
   4083 		break;
   4084 	case BCMX_ASYNC_ENTRY_PORT_INFO_GET:
   4085 		rv = bcmx_port_info_get(
   4086 			req->args.port_info_get.port,
   4087 			req->args.port_info_get.info);
   4088 		break;
   4089 	case BCMX_ASYNC_ENTRY_PORT_INFO_RESTORE:
   4090 		rv = bcmx_port_info_restore(
   4091 			req->args.port_info_restore.port,
   4092 			req->args.port_info_restore.info);
   4093 		break;
   4094 	case BCMX_ASYNC_ENTRY_PORT_INFO_SAVE:
   4095 		rv = bcmx_port_info_save(
   4096 			req->args.port_info_save.port,
   4097 			req->args.port_info_save.info);
   4098 		break;
   4099 	case BCMX_ASYNC_ENTRY_PORT_INFO_SET:
   4100 		rv = bcmx_port_info_set(
   4101 			req->args.port_info_set.port,
   4102 			req->args.port_info_set.info);
   4103 		break;
   4104 	case BCMX_ASYNC_ENTRY_PORT_INNER_TPID_GET:
   4105 		rv = bcmx_port_inner_tpid_get(
   4106 			req->args.port_inner_tpid_get.port,
   4107 			req->args.port_inner_tpid_get.tpid);
   4108 		break;
   4109 	case BCMX_ASYNC_ENTRY_PORT_INNER_TPID_SET:
   4110 		rv = bcmx_port_inner_tpid_set(
   4111 			req->args.port_inner_tpid_set.port,
   4112 			req->args.port_inner_tpid_set.tpid);
   4113 		break;
   4114 	case BCMX_ASYNC_ENTRY_PORT_INTERFACE_GET:
   4115 		rv = bcmx_port_interface_get(
   4116 			req->args.port_interface_get.port,
   4117 			req->args.port_interface_get.intf);
   4118 		break;
   4119 	case BCMX_ASYNC_ENTRY_PORT_INTERFACE_SET:
   4120 		rv = bcmx_port_interface_set(
   4121 			req->args.port_interface_set.port,
   4122 			req->args.port_interface_set.intf);
   4123 		break;
   4124 	case BCMX_ASYNC_ENTRY_PORT_IPMC_MODIFY_GET:
   4125 		rv = bcmx_port_ipmc_modify_get(
   4126 			req->args.port_ipmc_modify_get.port,
   4127 			req->args.port_ipmc_modify_get.flags);
   4128 		break;
   4129 	case BCMX_ASYNC_ENTRY_PORT_IPMC_MODIFY_SET:
   4130 		rv = bcmx_port_ipmc_modify_set(
   4131 			req->args.port_ipmc_modify_set.port,
   4132 			req->args.port_ipmc_modify_set.flags);
   4133 		break;
   4134 	case BCMX_ASYNC_ENTRY_PORT_JAM_GET:
   4135 		rv = bcmx_port_jam_get(
   4136 			req->args.port_jam_get.port,
   4137 			req->args.port_jam_get.enable);
   4138 		break;
   4139 	case BCMX_ASYNC_ENTRY_PORT_JAM_SET:
   4140 		rv = bcmx_port_jam_set(
   4141 			req->args.port_jam_set.port,
   4142 			req->args.port_jam_set.enable);
   4143 		break;
   4144 	case BCMX_ASYNC_ENTRY_PORT_L3_ENABLE_GET:
   4145 		rv = bcmx_port_l3_enable_get(
   4146 			req->args.port_l3_enable_get.port,
   4147 			req->args.port_l3_enable_get.enable);
   4148 		break;
   4149 	case BCMX_ASYNC_ENTRY_PORT_L3_ENABLE_SET:
   4150 		rv = bcmx_port_l3_enable_set(
   4151 			req->args.port_l3_enable_set.port,
   4152 			req->args.port_l3_enable_set.enable);
   4153 		break;
   4154 	case BCMX_ASYNC_ENTRY_PORT_L3_MODIFY_GET:
   4155 		rv = bcmx_port_l3_modify_get(
   4156 			req->args.port_l3_modify_get.port,
   4157 			req->args.port_l3_modify_get.flags);
   4158 		break;
   4159 	case BCMX_ASYNC_ENTRY_PORT_L3_MODIFY_SET:
   4160 		rv = bcmx_port_l3_modify_set(
   4161 			req->args.port_l3_modify_set.port,
   4162 			req->args.port_l3_modify_set.flags);
   4163 		break;
   4164 	case BCMX_ASYNC_ENTRY_PORT_L3_MTU_GET:
   4165 		rv = bcmx_port_l3_mtu_get(
   4166 			req->args.port_l3_mtu_get.port,
   4167 			req->args.port_l3_mtu_get.size);
   4168 		break;
   4169 	case BCMX_ASYNC_ENTRY_PORT_L3_MTU_SET:
   4170 		rv = bcmx_port_l3_mtu_set(
   4171 			req->args.port_l3_mtu_set.port,
   4172 			req->args.port_l3_mtu_set.size);
   4173 		break;
   4174 	case BCMX_ASYNC_ENTRY_PORT_LEARN_GET:
   4175 		rv = bcmx_port_learn_get(
   4176 			req->args.port_learn_get.port,
   4177 			req->args.port_learn_get.flags);
   4178 		break;
   4179 	case BCMX_ASYNC_ENTRY_PORT_LEARN_MODIFY:
   4180 		rv = bcmx_port_learn_modify(
   4181 			req->args.port_learn_modify.port,
   4182 			req->args.port_learn_modify.add,
   4183 			req->args.port_learn_modify.remove);
   4184 		break;
   4185 	case BCMX_ASYNC_ENTRY_PORT_LEARN_SET:
   4186 		rv = bcmx_port_learn_set(
   4187 			req->args.port_learn_set.port,
   4188 			req->args.port_learn_set.flags);
   4189 		break;
   4190 	case BCMX_ASYNC_ENTRY_PORT_LINK_FAILED_CLEAR:
   4191 		rv = bcmx_port_link_failed_clear(
   4192 			req->args.port_link_failed_clear.port);
   4193 		break;
   4194 	case BCMX_ASYNC_ENTRY_PORT_LINK_STATUS_GET:
   4195 		rv = bcmx_port_link_status_get(
   4196 			req->args.port_link_status_get.port,
   4197 			req->args.port_link_status_get.status);
   4198 		break;
   4199 	case BCMX_ASYNC_ENTRY_PORT_LINKSCAN_GET:
   4200 		rv = bcmx_port_linkscan_get(
   4201 			req->args.port_linkscan_get.port,
   4202 			req->args.port_linkscan_get.linkscan);
   4203 		break;
   4204 	case BCMX_ASYNC_ENTRY_PORT_LINKSCAN_SET:
   4205 		rv = bcmx_port_linkscan_set(
   4206 			req->args.port_linkscan_set.port,
   4207 			req->args.port_linkscan_set.linkscan);
   4208 		break;
   4209 	case BCMX_ASYNC_ENTRY_PORT_LOOPBACK_GET:
   4210 		rv = bcmx_port_loopback_get(
   4211 			req->args.port_loopback_get.port,
   4212 			req->args.port_loopback_get.loopback);
   4213 		break;
   4214 	case BCMX_ASYNC_ENTRY_PORT_LOOPBACK_SET:
   4215 		rv = bcmx_port_loopback_set(
   4216 			req->args.port_loopback_set.port,
   4217 			req->args.port_loopback_set.loopback);
   4218 		break;
   4219 	case BCMX_ASYNC_ENTRY_PORT_LPLIST_POPULATE:
   4220 		rv = bcmx_port_lplist_populate(
   4221 			req->args.port_lplist_populate.list,
   4222 			req->args.port_lplist_populate.flags);
   4223 		break;
   4224 	case BCMX_ASYNC_ENTRY_PORT_MASTER_GET:
   4225 		rv = bcmx_port_master_get(
   4226 			req->args.port_master_get.port,
   4227 			req->args.port_master_get.ms);
   4228 		break;
   4229 	case BCMX_ASYNC_ENTRY_PORT_MASTER_SET:
   4230 		rv = bcmx_port_master_set(
   4231 			req->args.port_master_set.port,
   4232 			req->args.port_master_set.ms);
   4233 		break;
   4234 	case BCMX_ASYNC_ENTRY_PORT_MATCH_ADD:
   4235 		rv = bcmx_port_match_add(
   4236 			req->args.port_match_add.port,
   4237 			req->args.port_match_add.match);
   4238 		break;
   4239 	case BCMX_ASYNC_ENTRY_PORT_MATCH_DELETE:
   4240 		rv = bcmx_port_match_delete(
   4241 			req->args.port_match_delete.port,
   4242 			req->args.port_match_delete.match);
   4243 		break;
   4244 	case BCMX_ASYNC_ENTRY_PORT_MATCH_DELETE_ALL:
   4245 		rv = bcmx_port_match_delete_all(
   4246 			req->args.port_match_delete_all.port);
   4247 		break;
   4248 	case BCMX_ASYNC_ENTRY_PORT_MATCH_MULTI_GET:
   4249 		rv = bcmx_port_match_multi_get(
   4250 			req->args.port_match_multi_get.port,
   4251 			req->args.port_match_multi_get.size,
   4252 			req->args.port_match_multi_get.match_array,
   4253 			req->args.port_match_multi_get.count);
   4254 		break;
   4255 	case BCMX_ASYNC_ENTRY_PORT_MATCH_REPLACE:
   4256 		rv = bcmx_port_match_replace(
   4257 			req->args.port_match_replace.port,
   4258 			req->args.port_match_replace.old_match,
   4259 			req->args.port_match_replace.new_match);
   4260 		break;
   4261 	case BCMX_ASYNC_ENTRY_PORT_MATCH_SET:
   4262 		rv = bcmx_port_match_set(
   4263 			req->args.port_match_set.port,
   4264 			req->args.port_match_set.size,
   4265 			req->args.port_match_set.match_array);
   4266 		break;
   4267 	case BCMX_ASYNC_ENTRY_PORT_MDIX_GET:
   4268 		rv = bcmx_port_mdix_get(
   4269 			req->args.port_mdix_get.port,
   4270 			req->args.port_mdix_get.mode);
   4271 		break;
   4272 	case BCMX_ASYNC_ENTRY_PORT_MDIX_SET:
   4273 		rv = bcmx_port_mdix_set(
   4274 			req->args.port_mdix_set.port,
   4275 			req->args.port_mdix_set.mode);
   4276 		break;
   4277 	case BCMX_ASYNC_ENTRY_PORT_MDIX_STATUS_GET:
   4278 		rv = bcmx_port_mdix_status_get(
   4279 			req->args.port_mdix_status_get.port,
   4280 			req->args.port_mdix_status_get.status);
   4281 		break;
   4282 	case BCMX_ASYNC_ENTRY_PORT_MEDIUM_CONFIG_GET:
   4283 		rv = bcmx_port_medium_config_get(
   4284 			req->args.port_medium_config_get.port,
   4285 			req->args.port_medium_config_get.medium,
   4286 			req->args.port_medium_config_get.config);
   4287 		break;
   4288 	case BCMX_ASYNC_ENTRY_PORT_MEDIUM_CONFIG_SET:
   4289 		rv = bcmx_port_medium_config_set(
   4290 			req->args.port_medium_config_set.port,
   4291 			req->args.port_medium_config_set.medium,
   4292 			req->args.port_medium_config_set.config);
   4293 		break;
   4294 	case BCMX_ASYNC_ENTRY_PORT_MEDIUM_GET:
   4295 		rv = bcmx_port_medium_get(
   4296 			req->args.port_medium_get.port,
   4297 			req->args.port_medium_get.medium);
   4298 		break;
   4299 	case BCMX_ASYNC_ENTRY_PORT_MODID_ENABLE_GET:
   4300 		rv = bcmx_port_modid_enable_get(
   4301 			req->args.port_modid_enable_get.port,
   4302 			req->args.port_modid_enable_get.modid,
   4303 			req->args.port_modid_enable_get.enable);
   4304 		break;
   4305 	case BCMX_ASYNC_ENTRY_PORT_MODID_ENABLE_SET:
   4306 		rv = bcmx_port_modid_enable_set(
   4307 			req->args.port_modid_enable_set.port,
   4308 			req->args.port_modid_enable_set.modid,
   4309 			req->args.port_modid_enable_set.enable);
   4310 		break;
   4311 	case BCMX_ASYNC_ENTRY_PORT_PAUSE_ADDR_GET:
   4312 		rv = bcmx_port_pause_addr_get(
   4313 			req->args.port_pause_addr_get.port,
   4314 			req->args.port_pause_addr_get.mac);
   4315 		break;
   4316 	case BCMX_ASYNC_ENTRY_PORT_PAUSE_ADDR_SET:
   4317 		rv = bcmx_port_pause_addr_set(
   4318 			req->args.port_pause_addr_set.port,
   4319 			req->args.port_pause_addr_set.mac);
   4320 		break;
   4321 	case BCMX_ASYNC_ENTRY_PORT_PAUSE_GET:
   4322 		rv = bcmx_port_pause_get(
   4323 			req->args.port_pause_get.port,
   4324 			req->args.port_pause_get.pause_tx,
   4325 			req->args.port_pause_get.pause_rx);
   4326 		break;
   4327 	case BCMX_ASYNC_ENTRY_PORT_PAUSE_SET:
   4328 		rv = bcmx_port_pause_set(
   4329 			req->args.port_pause_set.port,
   4330 			req->args.port_pause_set.pause_tx,
   4331 			req->args.port_pause_set.pause_rx);
   4332 		break;
   4333 	case BCMX_ASYNC_ENTRY_PORT_PAUSE_SYM_GET:
   4334 		rv = bcmx_port_pause_sym_get(
   4335 			req->args.port_pause_sym_get.port,
   4336 			req->args.port_pause_sym_get.pause);
   4337 		break;
   4338 	case BCMX_ASYNC_ENTRY_PORT_PAUSE_SYM_SET:
   4339 		rv = bcmx_port_pause_sym_set(
   4340 			req->args.port_pause_sym_set.port,
   4341 			req->args.port_pause_sym_set.pause);
   4342 		break;
   4343 	case BCMX_ASYNC_ENTRY_PORT_PFM_GET:
   4344 		rv = bcmx_port_pfm_get(
   4345 			req->args.port_pfm_get.port,
   4346 			req->args.port_pfm_get.mode);
   4347 		break;
   4348 	case BCMX_ASYNC_ENTRY_PORT_PFM_SET:
   4349 		rv = bcmx_port_pfm_set(
   4350 			req->args.port_pfm_set.port,
   4351 			req->args.port_pfm_set.mode);
   4352 		break;
   4353 	case BCMX_ASYNC_ENTRY_PORT_PHY_CONTROL_GET:
   4354 		rv = bcmx_port_phy_control_get(
   4355 			req->args.port_phy_control_get.port,
   4356 			req->args.port_phy_control_get.type,
   4357 			req->args.port_phy_control_get.value);
   4358 		break;
   4359 	case BCMX_ASYNC_ENTRY_PORT_PHY_CONTROL_SET:
   4360 		rv = bcmx_port_phy_control_set(
   4361 			req->args.port_phy_control_set.port,
   4362 			req->args.port_phy_control_set.type,
   4363 			req->args.port_phy_control_set.value);
   4364 		break;
   4365 	case BCMX_ASYNC_ENTRY_PORT_PHY_GET:
   4366 		rv = bcmx_port_phy_get(
   4367 			req->args.port_phy_get.port,
   4368 			req->args.port_phy_get.flags,
   4369 			req->args.port_phy_get.phy_reg_addr,
   4370 			req->args.port_phy_get.phy_data);
   4371 		break;
   4372 	case BCMX_ASYNC_ENTRY_PORT_PHY_MODIFY:
   4373 		rv = bcmx_port_phy_modify(
   4374 			req->args.port_phy_modify.port,
   4375 			req->args.port_phy_modify.flags,
   4376 			req->args.port_phy_modify.phy_reg_addr,
   4377 			req->args.port_phy_modify.phy_data,
   4378 			req->args.port_phy_modify.phy_mask);
   4379 		break;
   4380 	case BCMX_ASYNC_ENTRY_PORT_PHY_SET:
   4381 		rv = bcmx_port_phy_set(
   4382 			req->args.port_phy_set.port,
   4383 			req->args.port_phy_set.flags,
   4384 			req->args.port_phy_set.phy_reg_addr,
   4385 			req->args.port_phy_set.phy_data);
   4386 		break;
   4387 	case BCMX_ASYNC_ENTRY_PORT_PHY_TIMESYNC_CONFIG_GET:
   4388 		rv = bcmx_port_phy_timesync_config_get(
   4389 			req->args.port_phy_timesync_config_get.port,
   4390 			req->args.port_phy_timesync_config_get.conf);
   4391 		break;
   4392 	case BCMX_ASYNC_ENTRY_PORT_PHY_TIMESYNC_CONFIG_SET:
   4393 		rv = bcmx_port_phy_timesync_config_set(
   4394 			req->args.port_phy_timesync_config_set.port,
   4395 			req->args.port_phy_timesync_config_set.conf);
   4396 		break;
   4397 	case BCMX_ASYNC_ENTRY_PORT_PHY_TIMESYNC_ENHANCED_CAPTURE_GET:
   4398 		rv = bcmx_port_phy_timesync_enhanced_capture_get(
   4399 			req->args.port_phy_timesync_enhanced_capture_get.port,
   4400 			req->args.port_phy_timesync_enhanced_capture_get.conf);
   4401 		break;
   4402 	case BCMX_ASYNC_ENTRY_PORT_PRIORITY_COLOR_GET:
   4403 		rv = bcmx_port_priority_color_get(
   4404 			req->args.port_priority_color_get.port,
   4405 			req->args.port_priority_color_get.prio,
   4406 			req->args.port_priority_color_get.color);
   4407 		break;
   4408 	case BCMX_ASYNC_ENTRY_PORT_PRIORITY_COLOR_SET:
   4409 		rv = bcmx_port_priority_color_set(
   4410 			req->args.port_priority_color_set.port,
   4411 			req->args.port_priority_color_set.prio,
   4412 			req->args.port_priority_color_set.color);
   4413 		break;
   4414 	case BCMX_ASYNC_ENTRY_PORT_PROTOCOL_VLAN_ADD:
   4415 		rv = bcmx_port_protocol_vlan_add(
   4416 			req->args.port_protocol_vlan_add.port,
   4417 			req->args.port_protocol_vlan_add.frame,
   4418 			req->args.port_protocol_vlan_add.ether,
   4419 			req->args.port_protocol_vlan_add.vid);
   4420 		break;
   4421 	case BCMX_ASYNC_ENTRY_PORT_PROTOCOL_VLAN_DELETE:
   4422 		rv = bcmx_port_protocol_vlan_delete(
   4423 			req->args.port_protocol_vlan_delete.port,
   4424 			req->args.port_protocol_vlan_delete.frame,
   4425 			req->args.port_protocol_vlan_delete.ether);
   4426 		break;
   4427 	case BCMX_ASYNC_ENTRY_PORT_PROTOCOL_VLAN_DELETE_ALL:
   4428 		rv = bcmx_port_protocol_vlan_delete_all(
   4429 			req->args.port_protocol_vlan_delete_all.port);
   4430 		break;
   4431 	case BCMX_ASYNC_ENTRY_PORT_QUEUED_COUNT_GET:
   4432 		rv = bcmx_port_queued_count_get(
   4433 			req->args.port_queued_count_get.port,
   4434 			req->args.port_queued_count_get.count);
   4435 		break;
   4436 	case BCMX_ASYNC_ENTRY_PORT_RATE_EGRESS_GET:
   4437 		rv = bcmx_port_rate_egress_get(
   4438 			req->args.port_rate_egress_get.port,
   4439 			req->args.port_rate_egress_get.kbits_sec,
   4440 			req->args.port_rate_egress_get.kbits_burst);
   4441 		break;
   4442 	case BCMX_ASYNC_ENTRY_PORT_RATE_EGRESS_SET:
   4443 		rv = bcmx_port_rate_egress_set(
   4444 			req->args.port_rate_egress_set.port,
   4445 			req->args.port_rate_egress_set.kbits_sec,
   4446 			req->args.port_rate_egress_set.kbits_burst);
   4447 		break;
   4448 	case BCMX_ASYNC_ENTRY_PORT_RATE_INGRESS_GET:
   4449 		rv = bcmx_port_rate_ingress_get(
   4450 			req->args.port_rate_ingress_get.port,
   4451 			req->args.port_rate_ingress_get.kbits_sec,
   4452 			req->args.port_rate_ingress_get.kbits_burst);
   4453 		break;
   4454 	case BCMX_ASYNC_ENTRY_PORT_RATE_INGRESS_SET:
   4455 		rv = bcmx_port_rate_ingress_set(
   4456 			req->args.port_rate_ingress_set.port,
   4457 			req->args.port_rate_ingress_set.kbits_sec,
   4458 			req->args.port_rate_ingress_set.kbits_burst);
   4459 		break;
   4460 	case BCMX_ASYNC_ENTRY_PORT_RATE_PAUSE_GET:
   4461 		rv = bcmx_port_rate_pause_get(
   4462 			req->args.port_rate_pause_get.port,
   4463 			req->args.port_rate_pause_get.kbits_pause,
   4464 			req->args.port_rate_pause_get.kbits_resume);
   4465 		break;
   4466 	case BCMX_ASYNC_ENTRY_PORT_RATE_PAUSE_SET:
   4467 		rv = bcmx_port_rate_pause_set(
   4468 			req->args.port_rate_pause_set.port,
   4469 			req->args.port_rate_pause_set.kbits_pause,
   4470 			req->args.port_rate_pause_set.kbits_resume);
   4471 		break;
   4472 	case BCMX_ASYNC_ENTRY_PORT_SAMPLE_RATE_GET:
   4473 		rv = bcmx_port_sample_rate_get(
   4474 			req->args.port_sample_rate_get.port,
   4475 			req->args.port_sample_rate_get.ingress_rate,
   4476 			req->args.port_sample_rate_get.egress_rate);
   4477 		break;
   4478 	case BCMX_ASYNC_ENTRY_PORT_SAMPLE_RATE_SET:
   4479 		rv = bcmx_port_sample_rate_set(
   4480 			req->args.port_sample_rate_set.port,
   4481 			req->args.port_sample_rate_set.ingress_rate,
   4482 			req->args.port_sample_rate_set.egress_rate);
   4483 		break;
   4484 	case BCMX_ASYNC_ENTRY_PORT_SELECTIVE_GET:
   4485 		rv = bcmx_port_selective_get(
   4486 			req->args.port_selective_get.port,
   4487 			req->args.port_selective_get.info);
   4488 		break;
   4489 	case BCMX_ASYNC_ENTRY_PORT_SELECTIVE_SET:
   4490 		rv = bcmx_port_selective_set(
   4491 			req->args.port_selective_set.port,
   4492 			req->args.port_selective_set.info);
   4493 		break;
   4494 	case BCMX_ASYNC_ENTRY_PORT_SPEED_GET:
   4495 		rv = bcmx_port_speed_get(
   4496 			req->args.port_speed_get.port,
   4497 			req->args.port_speed_get.speed);
   4498 		break;
   4499 	case BCMX_ASYNC_ENTRY_PORT_SPEED_MAX:
   4500 		rv = bcmx_port_speed_max(
   4501 			req->args.port_speed_max.port,
   4502 			req->args.port_speed_max.speed);
   4503 		break;
   4504 	case BCMX_ASYNC_ENTRY_PORT_SPEED_SET:
   4505 		rv = bcmx_port_speed_set(
   4506 			req->args.port_speed_set.port,
   4507 			req->args.port_speed_set.speed);
   4508 		break;
   4509 	case BCMX_ASYNC_ENTRY_PORT_STAT_ENABLE_SET:
   4510 		rv = bcmx_port_stat_enable_set(
   4511 			req->args.port_stat_enable_set.port,
   4512 			req->args.port_stat_enable_set.enable);
   4513 		break;
   4514 	case BCMX_ASYNC_ENTRY_PORT_STAT_GET:
   4515 		rv = bcmx_port_stat_get(
   4516 			req->args.port_stat_get.port,
   4517 			req->args.port_stat_get.stat,
   4518 			req->args.port_stat_get.val);
   4519 		break;
   4520 	case BCMX_ASYNC_ENTRY_PORT_STAT_GET32:
   4521 		rv = bcmx_port_stat_get32(
   4522 			req->args.port_stat_get32.port,
   4523 			req->args.port_stat_get32.stat,
   4524 			req->args.port_stat_get32.val);
   4525 		break;
   4526 	case BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_GET:
   4527 		rv = bcmx_port_stat_multi_get(
   4528 			req->args.port_stat_multi_get.port,
   4529 			req->args.port_stat_multi_get.nstat,
   4530 			req->args.port_stat_multi_get.stat_arr,
   4531 			req->args.port_stat_multi_get.value_arr);
   4532 		break;
   4533 	case BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_GET32:
   4534 		rv = bcmx_port_stat_multi_get32(
   4535 			req->args.port_stat_multi_get32.port,
   4536 			req->args.port_stat_multi_get32.nstat,
   4537 			req->args.port_stat_multi_get32.stat_arr,
   4538 			req->args.port_stat_multi_get32.value_arr);
   4539 		break;
   4540 	case BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_SET:
   4541 		rv = bcmx_port_stat_multi_set(
   4542 			req->args.port_stat_multi_set.port,
   4543 			req->args.port_stat_multi_set.nstat,
   4544 			req->args.port_stat_multi_set.stat_arr,
   4545 			req->args.port_stat_multi_set.value_arr);
   4546 		break;
   4547 	case BCMX_ASYNC_ENTRY_PORT_STAT_MULTI_SET32:
   4548 		rv = bcmx_port_stat_multi_set32(
   4549 			req->args.port_stat_multi_set32.port,
   4550 			req->args.port_stat_multi_set32.nstat,
   4551 			req->args.port_stat_multi_set32.stat_arr,
   4552 			req->args.port_stat_multi_set32.value_arr);
   4553 		break;
   4554 	case BCMX_ASYNC_ENTRY_PORT_STAT_SET:
   4555 		rv = bcmx_port_stat_set(
   4556 			req->args.port_stat_set.port,
   4557 			req->args.port_stat_set.stat,
   4558 			req->args.port_stat_set.val);
   4559 		break;
   4560 	case BCMX_ASYNC_ENTRY_PORT_STAT_SET32:
   4561 		rv = bcmx_port_stat_set32(
   4562 			req->args.port_stat_set32.port,
   4563 			req->args.port_stat_set32.stat,
   4564 			req->args.port_stat_set32.val);
   4565 		break;
   4566 	case BCMX_ASYNC_ENTRY_PORT_STP_GET:
   4567 		rv = bcmx_port_stp_get(
   4568 			req->args.port_stp_get.port,
   4569 			req->args.port_stp_get.state);
   4570 		break;
   4571 	case BCMX_ASYNC_ENTRY_PORT_STP_SET:
   4572 		rv = bcmx_port_stp_set(
   4573 			req->args.port_stp_set.port,
   4574 			req->args.port_stp_set.state);
   4575 		break;
   4576 	case BCMX_ASYNC_ENTRY_PORT_SUBSIDIARY_PORTS_GET:
   4577 		rv = bcmx_port_subsidiary_ports_get(
   4578 			req->args.port_subsidiary_ports_get.port,
   4579 			req->args.port_subsidiary_ports_get.lplist);
   4580 		break;
   4581 	case BCMX_ASYNC_ENTRY_PORT_TGID_GET:
   4582 		rv = bcmx_port_tgid_get(
   4583 			req->args.port_tgid_get.port,
   4584 			req->args.port_tgid_get.tgid,
   4585 			req->args.port_tgid_get.psc);
   4586 		break;
   4587 	case BCMX_ASYNC_ENTRY_PORT_TGID_SET:
   4588 		rv = bcmx_port_tgid_set(
   4589 			req->args.port_tgid_set.port,
   4590 			req->args.port_tgid_set.tgid,
   4591 			req->args.port_tgid_set.psc);
   4592 		break;
   4593 	case BCMX_ASYNC_ENTRY_PORT_TPID_ADD:
   4594 		rv = bcmx_port_tpid_add(
   4595 			req->args.port_tpid_add.port,
   4596 			req->args.port_tpid_add.tpid,
   4597 			req->args.port_tpid_add.color_select);
   4598 		break;
   4599 	case BCMX_ASYNC_ENTRY_PORT_TPID_DELETE:
   4600 		rv = bcmx_port_tpid_delete(
   4601 			req->args.port_tpid_delete.port,
   4602 			req->args.port_tpid_delete.tpid);
   4603 		break;
   4604 	case BCMX_ASYNC_ENTRY_PORT_TPID_DELETE_ALL:
   4605 		rv = bcmx_port_tpid_delete_all(
   4606 			req->args.port_tpid_delete_all.port);
   4607 		break;
   4608 	case BCMX_ASYNC_ENTRY_PORT_TPID_GET:
   4609 		rv = bcmx_port_tpid_get(
   4610 			req->args.port_tpid_get.port,
   4611 			req->args.port_tpid_get.tpid);
   4612 		break;
   4613 	case BCMX_ASYNC_ENTRY_PORT_TPID_SET:
   4614 		rv = bcmx_port_tpid_set(
   4615 			req->args.port_tpid_set.port,
   4616 			req->args.port_tpid_set.tpid);
   4617 		break;
   4618 	case BCMX_ASYNC_ENTRY_PORT_UNTAGGED_PRIORITY_GET:
   4619 		rv = bcmx_port_untagged_priority_get(
   4620 			req->args.port_untagged_priority_get.port,
   4621 			req->args.port_untagged_priority_get.priority);
   4622 		break;
   4623 	case BCMX_ASYNC_ENTRY_PORT_UNTAGGED_PRIORITY_SET:
   4624 		rv = bcmx_port_untagged_priority_set(
   4625 			req->args.port_untagged_priority_set.port,
   4626 			req->args.port_untagged_priority_set.priority);
   4627 		break;
   4628 	case BCMX_ASYNC_ENTRY_PORT_UNTAGGED_VLAN_GET:
   4629 		rv = bcmx_port_untagged_vlan_get(
   4630 			req->args.port_untagged_vlan_get.port,
   4631 			req->args.port_untagged_vlan_get.vid_ptr);
   4632 		break;
   4633 	case BCMX_ASYNC_ENTRY_PORT_UNTAGGED_VLAN_SET:
   4634 		rv = bcmx_port_untagged_vlan_set(
   4635 			req->args.port_untagged_vlan_set.port,
   4636 			req->args.port_untagged_vlan_set.vid);
   4637 		break;
   4638 	case BCMX_ASYNC_ENTRY_PORT_UPDATE:
   4639 		rv = bcmx_port_update(
   4640 			req->args.port_update.port,
   4641 			req->args.port_update.link);
   4642 		break;
   4643 	case BCMX_ASYNC_ENTRY_PORT_VLAN_INNER_TAG_GET:
   4644 		rv = bcmx_port_vlan_inner_tag_get(
   4645 			req->args.port_vlan_inner_tag_get.port,
   4646 			req->args.port_vlan_inner_tag_get.inner_tag);
   4647 		break;
   4648 	case BCMX_ASYNC_ENTRY_PORT_VLAN_INNER_TAG_SET:
   4649 		rv = bcmx_port_vlan_inner_tag_set(
   4650 			req->args.port_vlan_inner_tag_set.port,
   4651 			req->args.port_vlan_inner_tag_set.inner_tag);
   4652 		break;
   4653 	case BCMX_ASYNC_ENTRY_PORT_VLAN_MEMBER_GET:
   4654 		rv = bcmx_port_vlan_member_get(
   4655 			req->args.port_vlan_member_get.port,
   4656 			req->args.port_vlan_member_get.flags);
   4657 		break;
   4658 	case BCMX_ASYNC_ENTRY_PORT_VLAN_MEMBER_SET:
   4659 		rv = bcmx_port_vlan_member_set(
   4660 			req->args.port_vlan_member_set.port,
   4661 			req->args.port_vlan_member_set.flags);
   4662 		break;
   4663 	case BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_MAP_GET:
   4664 		rv = bcmx_port_vlan_priority_map_get(
   4665 			req->args.port_vlan_priority_map_get.port,
   4666 			req->args.port_vlan_priority_map_get.pkt_pri,
   4667 			req->args.port_vlan_priority_map_get.cfi,
   4668 			req->args.port_vlan_priority_map_get.internal_pri,
   4669 			req->args.port_vlan_priority_map_get.color);
   4670 		break;
   4671 	case BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_MAP_SET:
   4672 		rv = bcmx_port_vlan_priority_map_set(
   4673 			req->args.port_vlan_priority_map_set.port,
   4674 			req->args.port_vlan_priority_map_set.pkt_pri,
   4675 			req->args.port_vlan_priority_map_set.cfi,
   4676 			req->args.port_vlan_priority_map_set.internal_pri,
   4677 			req->args.port_vlan_priority_map_set.color);
   4678 		break;
   4679 	case BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_UNMAP_GET:
   4680 		rv = bcmx_port_vlan_priority_unmap_get(
   4681 			req->args.port_vlan_priority_unmap_get.port,
   4682 			req->args.port_vlan_priority_unmap_get.internal_pri,
   4683 			req->args.port_vlan_priority_unmap_get.color,
   4684 			req->args.port_vlan_priority_unmap_get.pkt_pri,
   4685 			req->args.port_vlan_priority_unmap_get.cfi);
   4686 		break;
   4687 	case BCMX_ASYNC_ENTRY_PORT_VLAN_PRIORITY_UNMAP_SET:
   4688 		rv = bcmx_port_vlan_priority_unmap_set(
   4689 			req->args.port_vlan_priority_unmap_set.port,
   4690 			req->args.port_vlan_priority_unmap_set.internal_pri,
   4691 			req->args.port_vlan_priority_unmap_set.color,
   4692 			req->args.port_vlan_priority_unmap_set.pkt_pri,
   4693 			req->args.port_vlan_priority_unmap_set.cfi);
   4694 		break;
   4695 #ifdef	INCLUDE_L3
   4696 	case BCMX_ASYNC_ENTRY_PROXY_CLEANUP:
   4697 		rv = bcmx_proxy_cleanup(
   4698 			);
   4699 		break;
   4700 	case BCMX_ASYNC_ENTRY_PROXY_CLIENT_SET:
   4701 		rv = bcmx_proxy_client_set(
   4702 			req->args.proxy_client_set.client_port,
   4703 			req->args.proxy_client_set.proto_type,
   4704 			req->args.proxy_client_set.server_lport,
   4705 			req->args.proxy_client_set.enable);
   4706 		break;
   4707 	case BCMX_ASYNC_ENTRY_PROXY_INIT:
   4708 		rv = bcmx_proxy_init(
   4709 			);
   4710 		break;
   4711 	case BCMX_ASYNC_ENTRY_PROXY_SERVER_GET:
   4712 		rv = bcmx_proxy_server_get(
   4713 			req->args.proxy_server_get.server_lport,
   4714 			req->args.proxy_server_get.mode,
   4715 			req->args.proxy_server_get.enable);
   4716 		break;
   4717 	case BCMX_ASYNC_ENTRY_PROXY_SERVER_SET:
   4718 		rv = bcmx_proxy_server_set(
   4719 			req->args.proxy_server_set.server_lport,
   4720 			req->args.proxy_server_set.mode,
   4721 			req->args.proxy_server_set.enable);
   4722 		break;
   4723 #endif	/* INCLUDE_L3 */
   4724 	case BCMX_ASYNC_ENTRY_QOS_DETACH:
   4725 		rv = bcmx_qos_detach(
   4726 			);
   4727 		break;
   4728 	case BCMX_ASYNC_ENTRY_QOS_INIT:
   4729 		rv = bcmx_qos_init(
   4730 			);
   4731 		break;
   4732 	case BCMX_ASYNC_ENTRY_QOS_MAP_ADD:
   4733 		rv = bcmx_qos_map_add(
   4734 			req->args.qos_map_add.flags,
   4735 			req->args.qos_map_add.map,
   4736 			req->args.qos_map_add.map_id);
   4737 		break;
   4738 	case BCMX_ASYNC_ENTRY_QOS_MAP_CREATE:
   4739 		rv = bcmx_qos_map_create(
   4740 			req->args.qos_map_create.flags,
   4741 			req->args.qos_map_create.map_id);
   4742 		break;
   4743 	case BCMX_ASYNC_ENTRY_QOS_MAP_DELETE:
   4744 		rv = bcmx_qos_map_delete(
   4745 			req->args.qos_map_delete.flags,
   4746 			req->args.qos_map_delete.map,
   4747 			req->args.qos_map_delete.map_id);
   4748 		break;
   4749 	case BCMX_ASYNC_ENTRY_QOS_MAP_DESTROY:
   4750 		rv = bcmx_qos_map_destroy(
   4751 			req->args.qos_map_destroy.map_id);
   4752 		break;
   4753 	case BCMX_ASYNC_ENTRY_QOS_MAP_MULTI_GET:
   4754 		rv = bcmx_qos_map_multi_get(
   4755 			req->args.qos_map_multi_get.flags,
   4756 			req->args.qos_map_multi_get.map_id,
   4757 			req->args.qos_map_multi_get.array_size,
   4758 			req->args.qos_map_multi_get.array,
   4759 			req->args.qos_map_multi_get.array_count);
   4760 		break;
   4761 	case BCMX_ASYNC_ENTRY_QOS_MULTI_GET:
   4762 		rv = bcmx_qos_multi_get(
   4763 			req->args.qos_multi_get.array_size,
   4764 			req->args.qos_multi_get.map_ids_array,
   4765 			req->args.qos_multi_get.flags_array,
   4766 			req->args.qos_multi_get.array_count);
   4767 		break;
   4768 	case BCMX_ASYNC_ENTRY_QOS_PORT_MAP_GET:
   4769 		rv = bcmx_qos_port_map_get(
   4770 			req->args.qos_port_map_get.port,
   4771 			req->args.qos_port_map_get.ing_map,
   4772 			req->args.qos_port_map_get.egr_map);
   4773 		break;
   4774 	case BCMX_ASYNC_ENTRY_QOS_PORT_MAP_SET:
   4775 		rv = bcmx_qos_port_map_set(
   4776 			req->args.qos_port_map_set.port,
   4777 			req->args.qos_port_map_set.ing_map,
   4778 			req->args.qos_port_map_set.egr_map);
   4779 		break;
   4780 	case BCMX_ASYNC_ENTRY_QOS_PORT_VLAN_MAP_GET:
   4781 		rv = bcmx_qos_port_vlan_map_get(
   4782 			req->args.qos_port_vlan_map_get.port,
   4783 			req->args.qos_port_vlan_map_get.vid,
   4784 			req->args.qos_port_vlan_map_get.ing_map,
   4785 			req->args.qos_port_vlan_map_get.egr_map);
   4786 		break;
   4787 	case BCMX_ASYNC_ENTRY_QOS_PORT_VLAN_MAP_SET:
   4788 		rv = bcmx_qos_port_vlan_map_set(
   4789 			req->args.qos_port_vlan_map_set.port,
   4790 			req->args.qos_port_vlan_map_set.vid,
   4791 			req->args.qos_port_vlan_map_set.ing_map,
   4792 			req->args.qos_port_vlan_map_set.egr_map);
   4793 		break;
   4794 	case BCMX_ASYNC_ENTRY_RATE_BANDWIDTH_GET:
   4795 		rv = bcmx_rate_bandwidth_get(
   4796 			req->args.rate_bandwidth_get.port,
   4797 			req->args.rate_bandwidth_get.flags,
   4798 			req->args.rate_bandwidth_get.kbits_sec,
   4799 			req->args.rate_bandwidth_get.kbits_burst);
   4800 		break;
   4801 	case BCMX_ASYNC_ENTRY_RATE_BANDWIDTH_SET:
   4802 		rv = bcmx_rate_bandwidth_set(
   4803 			req->args.rate_bandwidth_set.port,
   4804 			req->args.rate_bandwidth_set.flags,
   4805 			req->args.rate_bandwidth_set.kbits_sec,
   4806 			req->args.rate_bandwidth_set.kbits_burst);
   4807 		break;
   4808 	case BCMX_ASYNC_ENTRY_RATE_BCAST_GET:
   4809 		rv = bcmx_rate_bcast_get(
   4810 			req->args.rate_bcast_get.limit,
   4811 			req->args.rate_bcast_get.flags,
   4812 			req->args.rate_bcast_get.port);
   4813 		break;
   4814 	case BCMX_ASYNC_ENTRY_RATE_BCAST_SET:
   4815 		rv = bcmx_rate_bcast_set(
   4816 			req->args.rate_bcast_set.limit,
   4817 			req->args.rate_bcast_set.flags,
   4818 			req->args.rate_bcast_set.port);
   4819 		break;
   4820 	case BCMX_ASYNC_ENTRY_RATE_DLFBC_GET:
   4821 		rv = bcmx_rate_dlfbc_get(
   4822 			req->args.rate_dlfbc_get.limit,
   4823 			req->args.rate_dlfbc_get.flags,
   4824 			req->args.rate_dlfbc_get.port);
   4825 		break;
   4826 	case BCMX_ASYNC_ENTRY_RATE_DLFBC_SET:
   4827 		rv = bcmx_rate_dlfbc_set(
   4828 			req->args.rate_dlfbc_set.limit,
   4829 			req->args.rate_dlfbc_set.flags,
   4830 			req->args.rate_dlfbc_set.port);
   4831 		break;
   4832 	case BCMX_ASYNC_ENTRY_RATE_GET:
   4833 		rv = bcmx_rate_get(
   4834 			req->args.rate_get.val,
   4835 			req->args.rate_get.flags);
   4836 		break;
   4837 	case BCMX_ASYNC_ENTRY_RATE_MCAST_GET:
   4838 		rv = bcmx_rate_mcast_get(
   4839 			req->args.rate_mcast_get.limit,
   4840 			req->args.rate_mcast_get.flags,
   4841 			req->args.rate_mcast_get.port);
   4842 		break;
   4843 	case BCMX_ASYNC_ENTRY_RATE_MCAST_SET:
   4844 		rv = bcmx_rate_mcast_set(
   4845 			req->args.rate_mcast_set.limit,
   4846 			req->args.rate_mcast_set.flags,
   4847 			req->args.rate_mcast_set.port);
   4848 		break;
   4849 	case BCMX_ASYNC_ENTRY_RATE_SET:
   4850 		rv = bcmx_rate_set(
   4851 			req->args.rate_set.val,
   4852 			req->args.rate_set.flags);
   4853 		break;
   4854 	case BCMX_ASYNC_ENTRY_RATE_TYPE_GET:
   4855 		rv = bcmx_rate_type_get(
   4856 			req->args.rate_type_get.rl);
   4857 		break;
   4858 	case BCMX_ASYNC_ENTRY_RATE_TYPE_SET:
   4859 		rv = bcmx_rate_type_set(
   4860 			req->args.rate_type_set.rl);
   4861 		break;
   4862 	case BCMX_ASYNC_ENTRY_RX_CONTROL_GET:
   4863 		rv = bcmx_rx_control_get(
   4864 			req->args.rx_control_get.type,
   4865 			req->args.rx_control_get.arg);
   4866 		break;
   4867 	case BCMX_ASYNC_ENTRY_RX_CONTROL_SET:
   4868 		rv = bcmx_rx_control_set(
   4869 			req->args.rx_control_set.type,
   4870 			req->args.rx_control_set.arg);
   4871 		break;
   4872 	case BCMX_ASYNC_ENTRY_RX_DEVICE_ADD:
   4873 		rv = bcmx_rx_device_add(
   4874 			req->args.rx_device_add.unit);
   4875 		break;
   4876 	case BCMX_ASYNC_ENTRY_RX_DEVICE_REMOVE:
   4877 		rv = bcmx_rx_device_remove(
   4878 			req->args.rx_device_remove.unit);
   4879 		break;
   4880 	case BCMX_ASYNC_ENTRY_RX_REGISTER:
   4881 		rv = bcmx_rx_register(
   4882 			req->args.rx_register.name,
   4883 			req->args.rx_register.fn,
   4884 			req->args.rx_register.priority,
   4885 			req->args.rx_register.cookie,
   4886 			req->args.rx_register.flags);
   4887 		break;
   4888 	case BCMX_ASYNC_ENTRY_RX_RUNNING:
   4889 		rv = bcmx_rx_running(
   4890 			);
   4891 		break;
   4892 	case BCMX_ASYNC_ENTRY_RX_START:
   4893 		rv = bcmx_rx_start(
   4894 			);
   4895 		break;
   4896 	case BCMX_ASYNC_ENTRY_RX_STOP:
   4897 		rv = bcmx_rx_stop(
   4898 			);
   4899 		break;
   4900 	case BCMX_ASYNC_ENTRY_RX_UNREGISTER:
   4901 		rv = bcmx_rx_unregister(
   4902 			req->args.rx_unregister.fn,
   4903 			req->args.rx_unregister.pri);
   4904 		break;
   4905 	case BCMX_ASYNC_ENTRY_STAT_CLEAR:
   4906 		rv = bcmx_stat_clear(
   4907 			req->args.stat_clear.port);
   4908 		break;
   4909 	case BCMX_ASYNC_ENTRY_STAT_CUSTOM_ADD:
   4910 		rv = bcmx_stat_custom_add(
   4911 			req->args.stat_custom_add.port,
   4912 			req->args.stat_custom_add.type,
   4913 			req->args.stat_custom_add.trigger);
   4914 		break;
   4915 	case BCMX_ASYNC_ENTRY_STAT_CUSTOM_CHECK:
   4916 		rv = bcmx_stat_custom_check(
   4917 			req->args.stat_custom_check.port,
   4918 			req->args.stat_custom_check.type,
   4919 			req->args.stat_custom_check.trigger,
   4920 			req->args.stat_custom_check.result);
   4921 		break;
   4922 	case BCMX_ASYNC_ENTRY_STAT_CUSTOM_DELETE:
   4923 		rv = bcmx_stat_custom_delete(
   4924 			req->args.stat_custom_delete.port,
   4925 			req->args.stat_custom_delete.type,
   4926 			req->args.stat_custom_delete.trigger);
   4927 		break;
   4928 	case BCMX_ASYNC_ENTRY_STAT_CUSTOM_DELETE_ALL:
   4929 		rv = bcmx_stat_custom_delete_all(
   4930 			req->args.stat_custom_delete_all.port,
   4931 			req->args.stat_custom_delete_all.type);
   4932 		break;
   4933 	case BCMX_ASYNC_ENTRY_STAT_CUSTOM_GET:
   4934 		rv = bcmx_stat_custom_get(
   4935 			req->args.stat_custom_get.port,
   4936 			req->args.stat_custom_get.type,
   4937 			req->args.stat_custom_get.flags);
   4938 		break;
   4939 	case BCMX_ASYNC_ENTRY_STAT_CUSTOM_SET:
   4940 		rv = bcmx_stat_custom_set(
   4941 			req->args.stat_custom_set.port,
   4942 			req->args.stat_custom_set.type,
   4943 			req->args.stat_custom_set.flags);
   4944 		break;
   4945 	case BCMX_ASYNC_ENTRY_STAT_GET:
   4946 		rv = bcmx_stat_get(
   4947 			req->args.stat_get.port,
   4948 			req->args.stat_get.type,
   4949 			req->args.stat_get.value);
   4950 		break;
   4951 	case BCMX_ASYNC_ENTRY_STAT_GET32:
   4952 		rv = bcmx_stat_get32(
   4953 			req->args.stat_get32.port,
   4954 			req->args.stat_get32.type,
   4955 			req->args.stat_get32.value);
   4956 		break;
   4957 	case BCMX_ASYNC_ENTRY_STAT_INIT:
   4958 		rv = bcmx_stat_init(
   4959 			);
   4960 		break;
   4961 	case BCMX_ASYNC_ENTRY_STAT_MULTI_GET:
   4962 		rv = bcmx_stat_multi_get(
   4963 			req->args.stat_multi_get.port,
   4964 			req->args.stat_multi_get.nstat,
   4965 			req->args.stat_multi_get.stat_arr,
   4966 			req->args.stat_multi_get.value_arr);
   4967 		break;
   4968 	case BCMX_ASYNC_ENTRY_STAT_MULTI_GET32:
   4969 		rv = bcmx_stat_multi_get32(
   4970 			req->args.stat_multi_get32.port,
   4971 			req->args.stat_multi_get32.nstat,
   4972 			req->args.stat_multi_get32.stat_arr,
   4973 			req->args.stat_multi_get32.value_arr);
   4974 		break;
   4975 	case BCMX_ASYNC_ENTRY_STAT_SYNC:
   4976 		rv = bcmx_stat_sync(
   4977 			);
   4978 		break;
   4979 	case BCMX_ASYNC_ENTRY_STG_COUNT_GET:
   4980 		rv = bcmx_stg_count_get(
   4981 			req->args.stg_count_get.max_stg);
   4982 		break;
   4983 	case BCMX_ASYNC_ENTRY_STG_CREATE:
   4984 		rv = bcmx_stg_create(
   4985 			req->args.stg_create.stg_ptr);
   4986 		break;
   4987 	case BCMX_ASYNC_ENTRY_STG_CREATE_ID:
   4988 		rv = bcmx_stg_create_id(
   4989 			req->args.stg_create_id.stg);
   4990 		break;
   4991 	case BCMX_ASYNC_ENTRY_STG_DEFAULT_GET:
   4992 		rv = bcmx_stg_default_get(
   4993 			req->args.stg_default_get.stg_ptr);
   4994 		break;
   4995 	case BCMX_ASYNC_ENTRY_STG_DEFAULT_SET:
   4996 		rv = bcmx_stg_default_set(
   4997 			req->args.stg_default_set.stg);
   4998 		break;
   4999 	case BCMX_ASYNC_ENTRY_STG_DESTROY:
   5000 		rv = bcmx_stg_destroy(
   5001 			req->args.stg_destroy.stg);
   5002 		break;
   5003 	case BCMX_ASYNC_ENTRY_STG_INIT:
   5004 		rv = bcmx_stg_init(
   5005 			);
   5006 		break;
   5007 	case BCMX_ASYNC_ENTRY_STG_LIST:
   5008 		rv = bcmx_stg_list(
   5009 			req->args.stg_list.list,
   5010 			req->args.stg_list.count);
   5011 		break;
   5012 	case BCMX_ASYNC_ENTRY_STG_LIST_DESTROY:
   5013 		rv = bcmx_stg_list_destroy(
   5014 			req->args.stg_list_destroy.list,
   5015 			req->args.stg_list_destroy.count);
   5016 		break;
   5017 	case BCMX_ASYNC_ENTRY_STG_STP_GET:
   5018 		rv = bcmx_stg_stp_get(
   5019 			req->args.stg_stp_get.stg,
   5020 			req->args.stg_stp_get.port,
   5021 			req->args.stg_stp_get.stp_state);
   5022 		break;
   5023 	case BCMX_ASYNC_ENTRY_STG_STP_SET:
   5024 		rv = bcmx_stg_stp_set(
   5025 			req->args.stg_stp_set.stg,
   5026 			req->args.stg_stp_set.port,
   5027 			req->args.stg_stp_set.stp_state);
   5028 		break;
   5029 	case BCMX_ASYNC_ENTRY_STG_VLAN_ADD:
   5030 		rv = bcmx_stg_vlan_add(
   5031 			req->args.stg_vlan_add.stg,
   5032 			req->args.stg_vlan_add.vid);
   5033 		break;
   5034 	case BCMX_ASYNC_ENTRY_STG_VLAN_LIST:
   5035 		rv = bcmx_stg_vlan_list(
   5036 			req->args.stg_vlan_list.stg,
   5037 			req->args.stg_vlan_list.list,
   5038 			req->args.stg_vlan_list.count);
   5039 		break;
   5040 	case BCMX_ASYNC_ENTRY_STG_VLAN_LIST_DESTROY:
   5041 		rv = bcmx_stg_vlan_list_destroy(
   5042 			req->args.stg_vlan_list_destroy.list,
   5043 			req->args.stg_vlan_list_destroy.count);
   5044 		break;
   5045 	case BCMX_ASYNC_ENTRY_STG_VLAN_REMOVE:
   5046 		rv = bcmx_stg_vlan_remove(
   5047 			req->args.stg_vlan_remove.stg,
   5048 			req->args.stg_vlan_remove.vid);
   5049 		break;
   5050 	case BCMX_ASYNC_ENTRY_STG_VLAN_REMOVE_ALL:
   5051 		rv = bcmx_stg_vlan_remove_all(
   5052 			req->args.stg_vlan_remove_all.stg);
   5053 		break;
   5054 	case BCMX_ASYNC_ENTRY_SUBPORT_CLEANUP:
   5055 		rv = bcmx_subport_cleanup(
   5056 			);
   5057 		break;
   5058 	case BCMX_ASYNC_ENTRY_SUBPORT_GROUP_CREATE:
   5059 		rv = bcmx_subport_group_create(
   5060 			req->args.subport_group_create.config,
   5061 			req->args.subport_group_create.group);
   5062 		break;
   5063 	case BCMX_ASYNC_ENTRY_SUBPORT_GROUP_DESTROY:
   5064 		rv = bcmx_subport_group_destroy(
   5065 			req->args.subport_group_destroy.group);
   5066 		break;
   5067 	case BCMX_ASYNC_ENTRY_SUBPORT_GROUP_GET:
   5068 		rv = bcmx_subport_group_get(
   5069 			req->args.subport_group_get.group,
   5070 			req->args.subport_group_get.config);
   5071 		break;
   5072 	case BCMX_ASYNC_ENTRY_SUBPORT_INIT:
   5073 		rv = bcmx_subport_init(
   5074 			);
   5075 		break;
   5076 	case BCMX_ASYNC_ENTRY_SUBPORT_PORT_ADD:
   5077 		rv = bcmx_subport_port_add(
   5078 			req->args.subport_port_add.config,
   5079 			req->args.subport_port_add.port);
   5080 		break;
   5081 	case BCMX_ASYNC_ENTRY_SUBPORT_PORT_DELETE:
   5082 		rv = bcmx_subport_port_delete(
   5083 			req->args.subport_port_delete.port);
   5084 		break;
   5085 	case BCMX_ASYNC_ENTRY_SUBPORT_PORT_GET:
   5086 		rv = bcmx_subport_port_get(
   5087 			req->args.subport_port_get.port,
   5088 			req->args.subport_port_get.config);
   5089 		break;
   5090 	case BCMX_ASYNC_ENTRY_SWITCH_CONTROL_GET:
   5091 		rv = bcmx_switch_control_get(
   5092 			req->args.switch_control_get.type,
   5093 			req->args.switch_control_get.arg);
   5094 		break;
   5095 	case BCMX_ASYNC_ENTRY_SWITCH_CONTROL_PORT_GET:
   5096 		rv = bcmx_switch_control_port_get(
   5097 			req->args.switch_control_port_get.port,
   5098 			req->args.switch_control_port_get.type,
   5099 			req->args.switch_control_port_get.arg);
   5100 		break;
   5101 	case BCMX_ASYNC_ENTRY_SWITCH_CONTROL_PORT_SET:
   5102 		rv = bcmx_switch_control_port_set(
   5103 			req->args.switch_control_port_set.port,
   5104 			req->args.switch_control_port_set.type,
   5105 			req->args.switch_control_port_set.arg);
   5106 		break;
   5107 	case BCMX_ASYNC_ENTRY_SWITCH_CONTROL_SET:
   5108 		rv = bcmx_switch_control_set(
   5109 			req->args.switch_control_set.type,
   5110 			req->args.switch_control_set.arg);
   5111 		break;
   5112 	case BCMX_ASYNC_ENTRY_SWITCH_RCPU_ENCAP_PRIORITY_MAP_GET:
   5113 		rv = bcmx_switch_rcpu_encap_priority_map_get(
   5114 			req->args.switch_rcpu_encap_priority_map_get.flags,
   5115 			req->args.switch_rcpu_encap_priority_map_get.internal_cpu_pri,
   5116 			req->args.switch_rcpu_encap_priority_map_get.encap_pri);
   5117 		break;
   5118 	case BCMX_ASYNC_ENTRY_SWITCH_RCPU_ENCAP_PRIORITY_MAP_SET:
   5119 		rv = bcmx_switch_rcpu_encap_priority_map_set(
   5120 			req->args.switch_rcpu_encap_priority_map_set.flags,
   5121 			req->args.switch_rcpu_encap_priority_map_set.internal_cpu_pri,
   5122 			req->args.switch_rcpu_encap_priority_map_set.encap_pri);
   5123 		break;
   5124 #ifdef	INCLUDE_L3
   5125 	case BCMX_ASYNC_ENTRY_TRILL_CLEANUP:
   5126 		rv = bcmx_trill_cleanup(
   5127 			);
   5128 		break;
   5129 	case BCMX_ASYNC_ENTRY_TRILL_INIT:
   5130 		rv = bcmx_trill_init(
   5131 			);
   5132 		break;
   5133 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_DELETE_ALL:
   5134 		rv = bcmx_trill_multicast_delete_all(
   5135 			req->args.trill_multicast_delete_all.root_name);
   5136 		break;
   5137 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_ENTRY_ADD:
   5138 		rv = bcmx_trill_multicast_entry_add(
   5139 			req->args.trill_multicast_entry_add.trill_mc_entry);
   5140 		break;
   5141 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_ENTRY_DELETE:
   5142 		rv = bcmx_trill_multicast_entry_delete(
   5143 			req->args.trill_multicast_entry_delete.trill_mc_entry);
   5144 		break;
   5145 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_ENTRY_GET:
   5146 		rv = bcmx_trill_multicast_entry_get(
   5147 			req->args.trill_multicast_entry_get.trill_mc_entry);
   5148 		break;
   5149 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_SOURCE_ADD:
   5150 		rv = bcmx_trill_multicast_source_add(
   5151 			req->args.trill_multicast_source_add.root_name,
   5152 			req->args.trill_multicast_source_add.source_rbridge_name,
   5153 			req->args.trill_multicast_source_add.port,
   5154 			req->args.trill_multicast_source_add.encap_intf);
   5155 		break;
   5156 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_SOURCE_DELETE:
   5157 		rv = bcmx_trill_multicast_source_delete(
   5158 			req->args.trill_multicast_source_delete.root_name,
   5159 			req->args.trill_multicast_source_delete.source_rbridge_name,
   5160 			req->args.trill_multicast_source_delete.port,
   5161 			req->args.trill_multicast_source_delete.encap_intf);
   5162 		break;
   5163 	case BCMX_ASYNC_ENTRY_TRILL_MULTICAST_SOURCE_GET:
   5164 		rv = bcmx_trill_multicast_source_get(
   5165 			req->args.trill_multicast_source_get.root_name,
   5166 			req->args.trill_multicast_source_get.source_rbridge_name,
   5167 			req->args.trill_multicast_source_get.port);
   5168 		break;
   5169 	case BCMX_ASYNC_ENTRY_TRILL_PORT_ADD:
   5170 		rv = bcmx_trill_port_add(
   5171 			req->args.trill_port_add.trill_port);
   5172 		break;
   5173 	case BCMX_ASYNC_ENTRY_TRILL_PORT_DELETE:
   5174 		rv = bcmx_trill_port_delete(
   5175 			req->args.trill_port_delete.trill_port_id);
   5176 		break;
   5177 	case BCMX_ASYNC_ENTRY_TRILL_PORT_DELETE_ALL:
   5178 		rv = bcmx_trill_port_delete_all(
   5179 			);
   5180 		break;
   5181 	case BCMX_ASYNC_ENTRY_TRILL_PORT_GET:
   5182 		rv = bcmx_trill_port_get(
   5183 			req->args.trill_port_get.trill_port);
   5184 		break;
   5185 	case BCMX_ASYNC_ENTRY_TRILL_PORT_GET_ALL:
   5186 		rv = bcmx_trill_port_get_all(
   5187 			req->args.trill_port_get_all.port_max,
   5188 			req->args.trill_port_get_all.port_array,
   5189 			req->args.trill_port_get_all.port_count);
   5190 		break;
   5191 	case BCMX_ASYNC_ENTRY_TRILL_STAT_CLEAR:
   5192 		rv = bcmx_trill_stat_clear(
   5193 			req->args.trill_stat_clear.port,
   5194 			req->args.trill_stat_clear.stat);
   5195 		break;
   5196 	case BCMX_ASYNC_ENTRY_TRILL_STAT_GET:
   5197 		rv = bcmx_trill_stat_get(
   5198 			req->args.trill_stat_get.port,
   5199 			req->args.trill_stat_get.stat,
   5200 			req->args.trill_stat_get.val);
   5201 		break;
   5202 	case BCMX_ASYNC_ENTRY_TRILL_STAT_GET32:
   5203 		rv = bcmx_trill_stat_get32(
   5204 			req->args.trill_stat_get32.port,
   5205 			req->args.trill_stat_get32.stat,
   5206 			req->args.trill_stat_get32.val);
   5207 		break;
   5208 #endif	/* INCLUDE_L3 */
   5209 	case BCMX_ASYNC_ENTRY_TRUNK_CHIP_INFO_GET:
   5210 		rv = bcmx_trunk_chip_info_get(
   5211 			req->args.trunk_chip_info_get.ta_info);
   5212 		break;
   5213 	case BCMX_ASYNC_ENTRY_TRUNK_CREATE:
   5214 		rv = bcmx_trunk_create(
   5215 			req->args.trunk_create.tid);
   5216 		break;
   5217 	case BCMX_ASYNC_ENTRY_TRUNK_CREATE_ID:
   5218 		rv = bcmx_trunk_create_id(
   5219 			req->args.trunk_create_id.tid);
   5220 		break;
   5221 	case BCMX_ASYNC_ENTRY_TRUNK_DESTROY:
   5222 		rv = bcmx_trunk_destroy(
   5223 			req->args.trunk_destroy.tid);
   5224 		break;
   5225 	case BCMX_ASYNC_ENTRY_TRUNK_DETACH:
   5226 		rv = bcmx_trunk_detach(
   5227 			);
   5228 		break;
   5229 	case BCMX_ASYNC_ENTRY_TRUNK_EGRESS_GET:
   5230 		rv = bcmx_trunk_egress_get(
   5231 			req->args.trunk_egress_get.tid,
   5232 			req->args.trunk_egress_get.lplist);
   5233 		break;
   5234 	case BCMX_ASYNC_ENTRY_TRUNK_EGRESS_SET:
   5235 		rv = bcmx_trunk_egress_set(
   5236 			req->args.trunk_egress_set.tid,
   5237 			req->args.trunk_egress_set.lplist);
   5238 		break;
   5239 	case BCMX_ASYNC_ENTRY_TRUNK_FAILOVER_GET:
   5240 		rv = bcmx_trunk_failover_get(
   5241 			req->args.trunk_failover_get.tid,
   5242 			req->args.trunk_failover_get.failport,
   5243 			req->args.trunk_failover_get.psc,
   5244 			req->args.trunk_failover_get.flags,
   5245 			req->args.trunk_failover_get.array_size,
   5246 			req->args.trunk_failover_get.fail_to_array,
   5247 			req->args.trunk_failover_get.array_count);
   5248 		break;
   5249 	case BCMX_ASYNC_ENTRY_TRUNK_FAILOVER_SET:
   5250 		rv = bcmx_trunk_failover_set(
   5251 			req->args.trunk_failover_set.tid,
   5252 			req->args.trunk_failover_set.failport,
   5253 			req->args.trunk_failover_set.psc,
   5254 			req->args.trunk_failover_set.flags,
   5255 			req->args.trunk_failover_set.count,
   5256 			req->args.trunk_failover_set.fail_to_array);
   5257 		break;
   5258 	case BCMX_ASYNC_ENTRY_TRUNK_FIND:
   5259 		rv = bcmx_trunk_find(
   5260 			req->args.trunk_find.port,
   5261 			req->args.trunk_find.tid);
   5262 		break;
   5263 	case BCMX_ASYNC_ENTRY_TRUNK_GET:
   5264 		rv = bcmx_trunk_get(
   5265 			req->args.trunk_get.tid,
   5266 			req->args.trunk_get.t_data);
   5267 		break;
   5268 	case BCMX_ASYNC_ENTRY_TRUNK_INIT:
   5269 		rv = bcmx_trunk_init(
   5270 			);
   5271 		break;
   5272 	case BCMX_ASYNC_ENTRY_TRUNK_MCAST_JOIN:
   5273 		rv = bcmx_trunk_mcast_join(
   5274 			req->args.trunk_mcast_join.tid,
   5275 			req->args.trunk_mcast_join.vid,
   5276 			req->args.trunk_mcast_join.mac);
   5277 		break;
   5278 	case BCMX_ASYNC_ENTRY_TRUNK_MEMBER_ADD:
   5279 		rv = bcmx_trunk_member_add(
   5280 			req->args.trunk_member_add.tid,
   5281 			req->args.trunk_member_add.member);
   5282 		break;
   5283 	case BCMX_ASYNC_ENTRY_TRUNK_MEMBER_DELETE:
   5284 		rv = bcmx_trunk_member_delete(
   5285 			req->args.trunk_member_delete.tid,
   5286 			req->args.trunk_member_delete.member);
   5287 		break;
   5288 	case BCMX_ASYNC_ENTRY_TRUNK_MEMBER_DELETE_ALL:
   5289 		rv = bcmx_trunk_member_delete_all(
   5290 			req->args.trunk_member_delete_all.tid);
   5291 		break;
   5292 	case BCMX_ASYNC_ENTRY_TRUNK_MEMBER_GET:
   5293 		rv = bcmx_trunk_member_get(
   5294 			req->args.trunk_member_get.tid,
   5295 			req->args.trunk_member_get.member_max,
   5296 			req->args.trunk_member_get.member_array,
   5297 			req->args.trunk_member_get.member_count);
   5298 		break;
   5299 	case BCMX_ASYNC_ENTRY_TRUNK_MEMBER_SET:
   5300 		rv = bcmx_trunk_member_set(
   5301 			req->args.trunk_member_set.tid,
   5302 			req->args.trunk_member_set.member_count,
   5303 			req->args.trunk_member_set.member_array);
   5304 		break;
   5305 	case BCMX_ASYNC_ENTRY_TRUNK_PSC_GET:
   5306 		rv = bcmx_trunk_psc_get(
   5307 			req->args.trunk_psc_get.tid,
   5308 			req->args.trunk_psc_get.psc);
   5309 		break;
   5310 	case BCMX_ASYNC_ENTRY_TRUNK_PSC_SET:
   5311 		rv = bcmx_trunk_psc_set(
   5312 			req->args.trunk_psc_set.tid,
   5313 			req->args.trunk_psc_set.psc);
   5314 		break;
   5315 	case BCMX_ASYNC_ENTRY_TRUNK_SET:
   5316 		rv = bcmx_trunk_set(
   5317 			req->args.trunk_set.tid,
   5318 			req->args.trunk_set.add_info);
   5319 		break;
   5320 #ifdef	INCLUDE_L3
   5321 	case BCMX_ASYNC_ENTRY_TUNNEL_CONFIG_GET:
   5322 		rv = bcmx_tunnel_config_get(
   5323 			req->args.tunnel_config_get.tconfig);
   5324 		break;
   5325 	case BCMX_ASYNC_ENTRY_TUNNEL_CONFIG_SET:
   5326 		rv = bcmx_tunnel_config_set(
   5327 			req->args.tunnel_config_set.tconfig);
   5328 		break;
   5329 	case BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_CREATE:
   5330 		rv = bcmx_tunnel_dscp_map_create(
   5331 			req->args.tunnel_dscp_map_create.flags,
   5332 			req->args.tunnel_dscp_map_create.dscp_map_id);
   5333 		break;
   5334 	case BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_DESTROY:
   5335 		rv = bcmx_tunnel_dscp_map_destroy(
   5336 			req->args.tunnel_dscp_map_destroy.dscp_map_id);
   5337 		break;
   5338 	case BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_GET:
   5339 		rv = bcmx_tunnel_dscp_map_get(
   5340 			req->args.tunnel_dscp_map_get.dscp_map_id,
   5341 			req->args.tunnel_dscp_map_get.dscp_map);
   5342 		break;
   5343 	case BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_PORT_GET:
   5344 		rv = bcmx_tunnel_dscp_map_port_get(
   5345 			req->args.tunnel_dscp_map_port_get.port,
   5346 			req->args.tunnel_dscp_map_port_get.dscp_map);
   5347 		break;
   5348 	case BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_PORT_SET:
   5349 		rv = bcmx_tunnel_dscp_map_port_set(
   5350 			req->args.tunnel_dscp_map_port_set.port,
   5351 			req->args.tunnel_dscp_map_port_set.dscp_map);
   5352 		break;
   5353 	case BCMX_ASYNC_ENTRY_TUNNEL_DSCP_MAP_SET:
   5354 		rv = bcmx_tunnel_dscp_map_set(
   5355 			req->args.tunnel_dscp_map_set.dscp_map_id,
   5356 			req->args.tunnel_dscp_map_set.dscp_map);
   5357 		break;
   5358 	case BCMX_ASYNC_ENTRY_TUNNEL_INITIATOR_CLEAR:
   5359 		rv = bcmx_tunnel_initiator_clear(
   5360 			req->args.tunnel_initiator_clear.intf);
   5361 		break;
   5362 	case BCMX_ASYNC_ENTRY_TUNNEL_INITIATOR_GET:
   5363 		rv = bcmx_tunnel_initiator_get(
   5364 			req->args.tunnel_initiator_get.intf,
   5365 			req->args.tunnel_initiator_get.tunnel);
   5366 		break;
   5367 	case BCMX_ASYNC_ENTRY_TUNNEL_INITIATOR_SET:
   5368 		rv = bcmx_tunnel_initiator_set(
   5369 			req->args.tunnel_initiator_set.intf,
   5370 			req->args.tunnel_initiator_set.tunnel);
   5371 		break;
   5372 	case BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_ADD:
   5373 		rv = bcmx_tunnel_terminator_add(
   5374 			req->args.tunnel_terminator_add.info);
   5375 		break;
   5376 	case BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_DELETE:
   5377 		rv = bcmx_tunnel_terminator_delete(
   5378 			req->args.tunnel_terminator_delete.info);
   5379 		break;
   5380 	case BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_GET:
   5381 		rv = bcmx_tunnel_terminator_get(
   5382 			req->args.tunnel_terminator_get.info);
   5383 		break;
   5384 	case BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_UPDATE:
   5385 		rv = bcmx_tunnel_terminator_update(
   5386 			req->args.tunnel_terminator_update.info);
   5387 		break;
   5388 	case BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_VLAN_GET:
   5389 		rv = bcmx_tunnel_terminator_vlan_get(
   5390 			req->args.tunnel_terminator_vlan_get.tunnel,
   5391 			req->args.tunnel_terminator_vlan_get.vlan_vec);
   5392 		break;
   5393 	case BCMX_ASYNC_ENTRY_TUNNEL_TERMINATOR_VLAN_SET:
   5394 		rv = bcmx_tunnel_terminator_vlan_set(
   5395 			req->args.tunnel_terminator_vlan_set.tunnel,
   5396 			req->args.tunnel_terminator_vlan_set.vlan_vec);
   5397 		break;
   5398 #endif	/* INCLUDE_L3 */
   5399 	case BCMX_ASYNC_ENTRY_TX:
   5400 		rv = bcmx_tx(
   5401 			req->args.tx.pkt,
   5402 			req->args.tx.flags);
   5403 		break;
   5404 	case BCMX_ASYNC_ENTRY_TX_FLOOD:
   5405 		rv = bcmx_tx_flood(
   5406 			req->args.tx_flood.pkt,
   5407 			req->args.tx_flood.flags);
   5408 		break;
   5409 	case BCMX_ASYNC_ENTRY_TX_LPLIST:
   5410 		rv = bcmx_tx_lplist(
   5411 			req->args.tx_lplist.pkt,
   5412 			req->args.tx_lplist.tx_ports,
   5413 			req->args.tx_lplist.untagged_ports,
   5414 			req->args.tx_lplist.flags);
   5415 		break;
   5416 	case BCMX_ASYNC_ENTRY_TX_PKT_L3_SET:
   5417 		rv = bcmx_tx_pkt_l3_set(
   5418 			req->args.tx_pkt_l3_set.pkt,
   5419 			req->args.tx_pkt_l3_set.l3);
   5420 		break;
   5421 	case BCMX_ASYNC_ENTRY_TX_PKT_UNTAGGED_SET:
   5422 		rv = bcmx_tx_pkt_untagged_set(
   5423 			req->args.tx_pkt_untagged_set.pkt,
   5424 			req->args.tx_pkt_untagged_set.untagged);
   5425 		break;
   5426 	case BCMX_ASYNC_ENTRY_TX_PORT_LIST:
   5427 		rv = bcmx_tx_port_list(
   5428 			req->args.tx_port_list.lplist,
   5429 			req->args.tx_port_list.pkt);
   5430 		break;
   5431 	case BCMX_ASYNC_ENTRY_TX_UC:
   5432 		rv = bcmx_tx_uc(
   5433 			req->args.tx_uc.pkt,
   5434 			req->args.tx_uc.d_port,
   5435 			req->args.tx_uc.flags);
   5436 		break;
   5437 	case BCMX_ASYNC_ENTRY_UPORT_CREATE_CALLBACK_SET:
   5438 		rv = bcmx_uport_create_callback_set(
   5439 			req->args.uport_create_callback_set.create_callback);
   5440 		break;
   5441 	case BCMX_ASYNC_ENTRY_VLAN_BLOCK_GET:
   5442 		rv = bcmx_vlan_block_get(
   5443 			req->args.vlan_block_get.vlan,
   5444 			req->args.vlan_block_get.vlan_block);
   5445 		break;
   5446 	case BCMX_ASYNC_ENTRY_VLAN_BLOCK_SET:
   5447 		rv = bcmx_vlan_block_set(
   5448 			req->args.vlan_block_set.vlan,
   5449 			req->args.vlan_block_set.vlan_block);
   5450 		break;
   5451 	case BCMX_ASYNC_ENTRY_VLAN_CONTROL_GET:
   5452 		rv = bcmx_vlan_control_get(
   5453 			req->args.vlan_control_get.type,
   5454 			req->args.vlan_control_get.arg);
   5455 		break;
   5456 	case BCMX_ASYNC_ENTRY_VLAN_CONTROL_PORT_GET:
   5457 		rv = bcmx_vlan_control_port_get(
   5458 			req->args.vlan_control_port_get.port,
   5459 			req->args.vlan_control_port_get.type,
   5460 			req->args.vlan_control_port_get.arg);
   5461 		break;
   5462 	case BCMX_ASYNC_ENTRY_VLAN_CONTROL_PORT_SET:
   5463 		rv = bcmx_vlan_control_port_set(
   5464 			req->args.vlan_control_port_set.port,
   5465 			req->args.vlan_control_port_set.type,
   5466 			req->args.vlan_control_port_set.arg);
   5467 		break;
   5468 	case BCMX_ASYNC_ENTRY_VLAN_CONTROL_SET:
   5469 		rv = bcmx_vlan_control_set(
   5470 			req->args.vlan_control_set.type,
   5471 			req->args.vlan_control_set.arg);
   5472 		break;
   5473 	case BCMX_ASYNC_ENTRY_VLAN_CONTROL_VLAN_GET:
   5474 		rv = bcmx_vlan_control_vlan_get(
   5475 			req->args.vlan_control_vlan_get.vlan,
   5476 			req->args.vlan_control_vlan_get.control);
   5477 		break;
   5478 	case BCMX_ASYNC_ENTRY_VLAN_CONTROL_VLAN_SET:
   5479 		rv = bcmx_vlan_control_vlan_set(
   5480 			req->args.vlan_control_vlan_set.vlan,
   5481 			req->args.vlan_control_vlan_set.control);
   5482 		break;
   5483 	case BCMX_ASYNC_ENTRY_VLAN_CREATE:
   5484 		rv = bcmx_vlan_create(
   5485 			req->args.vlan_create.vid);
   5486 		break;
   5487 	case BCMX_ASYNC_ENTRY_VLAN_CROSS_CONNECT_ADD:
   5488 		rv = bcmx_vlan_cross_connect_add(
   5489 			req->args.vlan_cross_connect_add.outer_vlan,
   5490 			req->args.vlan_cross_connect_add.inner_vlan,
   5491 			req->args.vlan_cross_connect_add.port_1,
   5492 			req->args.vlan_cross_connect_add.port_2);
   5493 		break;
   5494 	case BCMX_ASYNC_ENTRY_VLAN_CROSS_CONNECT_DELETE:
   5495 		rv = bcmx_vlan_cross_connect_delete(
   5496 			req->args.vlan_cross_connect_delete.outer_vlan,
   5497 			req->args.vlan_cross_connect_delete.inner_vlan);
   5498 		break;
   5499 	case BCMX_ASYNC_ENTRY_VLAN_CROSS_CONNECT_DELETE_ALL:
   5500 		rv = bcmx_vlan_cross_connect_delete_all(
   5501 			);
   5502 		break;
   5503 	case BCMX_ASYNC_ENTRY_VLAN_DEFAULT_GET:
   5504 		rv = bcmx_vlan_default_get(
   5505 			req->args.vlan_default_get.vid_ptr);
   5506 		break;
   5507 	case BCMX_ASYNC_ENTRY_VLAN_DEFAULT_SET:
   5508 		rv = bcmx_vlan_default_set(
   5509 			req->args.vlan_default_set.vid);
   5510 		break;
   5511 	case BCMX_ASYNC_ENTRY_VLAN_DESTROY:
   5512 		rv = bcmx_vlan_destroy(
   5513 			req->args.vlan_destroy.vid);
   5514 		break;
   5515 	case BCMX_ASYNC_ENTRY_VLAN_DESTROY_ALL:
   5516 		rv = bcmx_vlan_destroy_all(
   5517 			);
   5518 		break;
   5519 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_ADD:
   5520 		rv = bcmx_vlan_dtag_add(
   5521 			req->args.vlan_dtag_add.port,
   5522 			req->args.vlan_dtag_add.old_vid,
   5523 			req->args.vlan_dtag_add.new_vid,
   5524 			req->args.vlan_dtag_add.prio);
   5525 		break;
   5526 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_DELETE:
   5527 		rv = bcmx_vlan_dtag_delete(
   5528 			req->args.vlan_dtag_delete.port,
   5529 			req->args.vlan_dtag_delete.old_vid);
   5530 		break;
   5531 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_DELETE_ALL:
   5532 		rv = bcmx_vlan_dtag_delete_all(
   5533 			);
   5534 		break;
   5535 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_GET:
   5536 		rv = bcmx_vlan_dtag_get(
   5537 			req->args.vlan_dtag_get.port,
   5538 			req->args.vlan_dtag_get.old_vid,
   5539 			req->args.vlan_dtag_get.new_vid,
   5540 			req->args.vlan_dtag_get.prio);
   5541 		break;
   5542 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_ADD:
   5543 		rv = bcmx_vlan_dtag_range_add(
   5544 			req->args.vlan_dtag_range_add.port,
   5545 			req->args.vlan_dtag_range_add.old_vid_low,
   5546 			req->args.vlan_dtag_range_add.old_vid_high,
   5547 			req->args.vlan_dtag_range_add.new_vid,
   5548 			req->args.vlan_dtag_range_add.int_prio);
   5549 		break;
   5550 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_DELETE:
   5551 		rv = bcmx_vlan_dtag_range_delete(
   5552 			req->args.vlan_dtag_range_delete.port,
   5553 			req->args.vlan_dtag_range_delete.old_vid_low,
   5554 			req->args.vlan_dtag_range_delete.old_vid_high);
   5555 		break;
   5556 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_DELETE_ALL:
   5557 		rv = bcmx_vlan_dtag_range_delete_all(
   5558 			);
   5559 		break;
   5560 	case BCMX_ASYNC_ENTRY_VLAN_DTAG_RANGE_GET:
   5561 		rv = bcmx_vlan_dtag_range_get(
   5562 			req->args.vlan_dtag_range_get.port,
   5563 			req->args.vlan_dtag_range_get.old_vid_low,
   5564 			req->args.vlan_dtag_range_get.old_vid_high,
   5565 			req->args.vlan_dtag_range_get.new_vid,
   5566 			req->args.vlan_dtag_range_get.prio);
   5567 		break;
   5568 	case BCMX_ASYNC_ENTRY_VLAN_GPORT_ADD:
   5569 		rv = bcmx_vlan_gport_add(
   5570 			req->args.vlan_gport_add.vlan,
   5571 			req->args.vlan_gport_add.port,
   5572 			req->args.vlan_gport_add.flags);
   5573 		break;
   5574 	case BCMX_ASYNC_ENTRY_VLAN_GPORT_DELETE:
   5575 		rv = bcmx_vlan_gport_delete(
   5576 			req->args.vlan_gport_delete.vlan,
   5577 			req->args.vlan_gport_delete.port);
   5578 		break;
   5579 	case BCMX_ASYNC_ENTRY_VLAN_GPORT_DELETE_ALL:
   5580 		rv = bcmx_vlan_gport_delete_all(
   5581 			req->args.vlan_gport_delete_all.vlan);
   5582 		break;
   5583 	case BCMX_ASYNC_ENTRY_VLAN_GPORT_GET:
   5584 		rv = bcmx_vlan_gport_get(
   5585 			req->args.vlan_gport_get.vlan,
   5586 			req->args.vlan_gport_get.port,
   5587 			req->args.vlan_gport_get.flags);
   5588 		break;
   5589 	case BCMX_ASYNC_ENTRY_VLAN_GPORT_GET_ALL:
   5590 		rv = bcmx_vlan_gport_get_all(
   5591 			req->args.vlan_gport_get_all.vlan,
   5592 			req->args.vlan_gport_get_all.array_max,
   5593 			req->args.vlan_gport_get_all.gport_array,
   5594 			req->args.vlan_gport_get_all.flags_array,
   5595 			req->args.vlan_gport_get_all.array_size);
   5596 		break;
   5597 	case BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_ADD:
   5598 		rv = bcmx_vlan_ip_action_add(
   5599 			req->args.vlan_ip_action_add.vlan_ip,
   5600 			req->args.vlan_ip_action_add.action);
   5601 		break;
   5602 	case BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_DELETE:
   5603 		rv = bcmx_vlan_ip_action_delete(
   5604 			req->args.vlan_ip_action_delete.vlan_ip);
   5605 		break;
   5606 	case BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_DELETE_ALL:
   5607 		rv = bcmx_vlan_ip_action_delete_all(
   5608 			);
   5609 		break;
   5610 	case BCMX_ASYNC_ENTRY_VLAN_IP_ACTION_GET:
   5611 		rv = bcmx_vlan_ip_action_get(
   5612 			req->args.vlan_ip_action_get.vlan_ip,
   5613 			req->args.vlan_ip_action_get.action);
   5614 		break;
   5615 	case BCMX_ASYNC_ENTRY_VLAN_IP_ADD:
   5616 		rv = bcmx_vlan_ip_add(
   5617 			req->args.vlan_ip_add.vlan_ip);
   5618 		break;
   5619 	case BCMX_ASYNC_ENTRY_VLAN_IP_DELETE:
   5620 		rv = bcmx_vlan_ip_delete(
   5621 			req->args.vlan_ip_delete.vlan_ip);
   5622 		break;
   5623 	case BCMX_ASYNC_ENTRY_VLAN_IP_DELETE_ALL:
   5624 		rv = bcmx_vlan_ip_delete_all(
   5625 			);
   5626 		break;
   5627 	case BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_ADD:
   5628 		rv = bcmx_vlan_mac_action_add(
   5629 			req->args.vlan_mac_action_add.mac,
   5630 			req->args.vlan_mac_action_add.action);
   5631 		break;
   5632 	case BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_DELETE:
   5633 		rv = bcmx_vlan_mac_action_delete(
   5634 			req->args.vlan_mac_action_delete.mac);
   5635 		break;
   5636 	case BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_DELETE_ALL:
   5637 		rv = bcmx_vlan_mac_action_delete_all(
   5638 			);
   5639 		break;
   5640 	case BCMX_ASYNC_ENTRY_VLAN_MAC_ACTION_GET:
   5641 		rv = bcmx_vlan_mac_action_get(
   5642 			req->args.vlan_mac_action_get.mac,
   5643 			req->args.vlan_mac_action_get.action);
   5644 		break;
   5645 	case BCMX_ASYNC_ENTRY_VLAN_MAC_ADD:
   5646 		rv = bcmx_vlan_mac_add(
   5647 			req->args.vlan_mac_add.mac,
   5648 			req->args.vlan_mac_add.vid,
   5649 			req->args.vlan_mac_add.prio);
   5650 		break;
   5651 	case BCMX_ASYNC_ENTRY_VLAN_MAC_DELETE:
   5652 		rv = bcmx_vlan_mac_delete(
   5653 			req->args.vlan_mac_delete.mac);
   5654 		break;
   5655 	case BCMX_ASYNC_ENTRY_VLAN_MAC_DELETE_ALL:
   5656 		rv = bcmx_vlan_mac_delete_all(
   5657 			);
   5658 		break;
   5659 	case BCMX_ASYNC_ENTRY_VLAN_MCAST_FLOOD_GET:
   5660 		rv = bcmx_vlan_mcast_flood_get(
   5661 			req->args.vlan_mcast_flood_get.vlan,
   5662 			req->args.vlan_mcast_flood_get.mode);
   5663 		break;
   5664 	case BCMX_ASYNC_ENTRY_VLAN_MCAST_FLOOD_SET:
   5665 		rv = bcmx_vlan_mcast_flood_set(
   5666 			req->args.vlan_mcast_flood_set.vlan,
   5667 			req->args.vlan_mcast_flood_set.mode);
   5668 		break;
   5669 	case BCMX_ASYNC_ENTRY_VLAN_PORT_ADD:
   5670 		rv = bcmx_vlan_port_add(
   5671 			req->args.vlan_port_add.vid,
   5672 			req->args.vlan_port_add.lplist,
   5673 			req->args.vlan_port_add.ubmp);
   5674 		break;
   5675 	case BCMX_ASYNC_ENTRY_VLAN_PORT_CREATE:
   5676 		rv = bcmx_vlan_port_create(
   5677 			req->args.vlan_port_create.vlan_port);
   5678 		break;
   5679 	case BCMX_ASYNC_ENTRY_VLAN_PORT_DEFAULT_ACTION_DELETE:
   5680 		rv = bcmx_vlan_port_default_action_delete(
   5681 			req->args.vlan_port_default_action_delete.port);
   5682 		break;
   5683 	case BCMX_ASYNC_ENTRY_VLAN_PORT_DEFAULT_ACTION_GET:
   5684 		rv = bcmx_vlan_port_default_action_get(
   5685 			req->args.vlan_port_default_action_get.port,
   5686 			req->args.vlan_port_default_action_get.action);
   5687 		break;
   5688 	case BCMX_ASYNC_ENTRY_VLAN_PORT_DEFAULT_ACTION_SET:
   5689 		rv = bcmx_vlan_port_default_action_set(
   5690 			req->args.vlan_port_default_action_set.port,
   5691 			req->args.vlan_port_default_action_set.action);
   5692 		break;
   5693 	case BCMX_ASYNC_ENTRY_VLAN_PORT_DESTROY:
   5694 		rv = bcmx_vlan_port_destroy(
   5695 			req->args.vlan_port_destroy.gport);
   5696 		break;
   5697 	case BCMX_ASYNC_ENTRY_VLAN_PORT_EGRESS_DEFAULT_ACTION_DELETE:
   5698 		rv = bcmx_vlan_port_egress_default_action_delete(
   5699 			req->args.vlan_port_egress_default_action_delete.port);
   5700 		break;
   5701 	case BCMX_ASYNC_ENTRY_VLAN_PORT_EGRESS_DEFAULT_ACTION_GET:
   5702 		rv = bcmx_vlan_port_egress_default_action_get(
   5703 			req->args.vlan_port_egress_default_action_get.port,
   5704 			req->args.vlan_port_egress_default_action_get.action);
   5705 		break;
   5706 	case BCMX_ASYNC_ENTRY_VLAN_PORT_EGRESS_DEFAULT_ACTION_SET:
   5707 		rv = bcmx_vlan_port_egress_default_action_set(
   5708 			req->args.vlan_port_egress_default_action_set.port,
   5709 			req->args.vlan_port_egress_default_action_set.action);
   5710 		break;
   5711 	case BCMX_ASYNC_ENTRY_VLAN_PORT_FIND:
   5712 		rv = bcmx_vlan_port_find(
   5713 			req->args.vlan_port_find.vlan_port);
   5714 		break;
   5715 	case BCMX_ASYNC_ENTRY_VLAN_PORT_GET:
   5716 		rv = bcmx_vlan_port_get(
   5717 			req->args.vlan_port_get.vid,
   5718 			req->args.vlan_port_get.lplist,
   5719 			req->args.vlan_port_get.ubmp);
   5720 		break;
   5721 	case BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_ADD:
   5722 		rv = bcmx_vlan_port_protocol_action_add(
   5723 			req->args.vlan_port_protocol_action_add.port,
   5724 			req->args.vlan_port_protocol_action_add.frame,
   5725 			req->args.vlan_port_protocol_action_add.ether,
   5726 			req->args.vlan_port_protocol_action_add.action);
   5727 		break;
   5728 	case BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_DELETE:
   5729 		rv = bcmx_vlan_port_protocol_action_delete(
   5730 			req->args.vlan_port_protocol_action_delete.port,
   5731 			req->args.vlan_port_protocol_action_delete.frame,
   5732 			req->args.vlan_port_protocol_action_delete.ether);
   5733 		break;
   5734 	case BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_DELETE_ALL:
   5735 		rv = bcmx_vlan_port_protocol_action_delete_all(
   5736 			req->args.vlan_port_protocol_action_delete_all.port);
   5737 		break;
   5738 	case BCMX_ASYNC_ENTRY_VLAN_PORT_PROTOCOL_ACTION_GET:
   5739 		rv = bcmx_vlan_port_protocol_action_get(
   5740 			req->args.vlan_port_protocol_action_get.port,
   5741 			req->args.vlan_port_protocol_action_get.frame,
   5742 			req->args.vlan_port_protocol_action_get.ether,
   5743 			req->args.vlan_port_protocol_action_get.action);
   5744 		break;
   5745 	case BCMX_ASYNC_ENTRY_VLAN_PORT_REMOVE:
   5746 		rv = bcmx_vlan_port_remove(
   5747 			req->args.vlan_port_remove.vid,
   5748 			req->args.vlan_port_remove.lplist);
   5749 		break;
   5750 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_ATTACH:
   5751 		rv = bcmx_vlan_queue_map_attach(
   5752 			req->args.vlan_queue_map_attach.vlan,
   5753 			req->args.vlan_queue_map_attach.qmid);
   5754 		break;
   5755 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_ATTACH_GET:
   5756 		rv = bcmx_vlan_queue_map_attach_get(
   5757 			req->args.vlan_queue_map_attach_get.vlan,
   5758 			req->args.vlan_queue_map_attach_get.qmid);
   5759 		break;
   5760 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_CREATE:
   5761 		rv = bcmx_vlan_queue_map_create(
   5762 			req->args.vlan_queue_map_create.flags,
   5763 			req->args.vlan_queue_map_create.qmid);
   5764 		break;
   5765 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DESTROY:
   5766 		rv = bcmx_vlan_queue_map_destroy(
   5767 			req->args.vlan_queue_map_destroy.qmid);
   5768 		break;
   5769 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DESTROY_ALL:
   5770 		rv = bcmx_vlan_queue_map_destroy_all(
   5771 			);
   5772 		break;
   5773 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DETACH:
   5774 		rv = bcmx_vlan_queue_map_detach(
   5775 			req->args.vlan_queue_map_detach.vlan);
   5776 		break;
   5777 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_DETACH_ALL:
   5778 		rv = bcmx_vlan_queue_map_detach_all(
   5779 			);
   5780 		break;
   5781 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_GET:
   5782 		rv = bcmx_vlan_queue_map_get(
   5783 			req->args.vlan_queue_map_get.qmid,
   5784 			req->args.vlan_queue_map_get.pkt_pri,
   5785 			req->args.vlan_queue_map_get.cfi,
   5786 			req->args.vlan_queue_map_get.queue,
   5787 			req->args.vlan_queue_map_get.color);
   5788 		break;
   5789 	case BCMX_ASYNC_ENTRY_VLAN_QUEUE_MAP_SET:
   5790 		rv = bcmx_vlan_queue_map_set(
   5791 			req->args.vlan_queue_map_set.qmid,
   5792 			req->args.vlan_queue_map_set.pkt_pri,
   5793 			req->args.vlan_queue_map_set.cfi,
   5794 			req->args.vlan_queue_map_set.queue,
   5795 			req->args.vlan_queue_map_set.color);
   5796 		break;
   5797 	case BCMX_ASYNC_ENTRY_VLAN_STAT_ENABLE_SET:
   5798 		rv = bcmx_vlan_stat_enable_set(
   5799 			req->args.vlan_stat_enable_set.vlan,
   5800 			req->args.vlan_stat_enable_set.enable);
   5801 		break;
   5802 	case BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_GET:
   5803 		rv = bcmx_vlan_stat_multi_get(
   5804 			req->args.vlan_stat_multi_get.vlan,
   5805 			req->args.vlan_stat_multi_get.cos,
   5806 			req->args.vlan_stat_multi_get.nstat,
   5807 			req->args.vlan_stat_multi_get.stat_arr,
   5808 			req->args.vlan_stat_multi_get.value_arr);
   5809 		break;
   5810 	case BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_GET32:
   5811 		rv = bcmx_vlan_stat_multi_get32(
   5812 			req->args.vlan_stat_multi_get32.vlan,
   5813 			req->args.vlan_stat_multi_get32.cos,
   5814 			req->args.vlan_stat_multi_get32.nstat,
   5815 			req->args.vlan_stat_multi_get32.stat_arr,
   5816 			req->args.vlan_stat_multi_get32.value_arr);
   5817 		break;
   5818 	case BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_SET:
   5819 		rv = bcmx_vlan_stat_multi_set(
   5820 			req->args.vlan_stat_multi_set.vlan,
   5821 			req->args.vlan_stat_multi_set.cos,
   5822 			req->args.vlan_stat_multi_set.nstat,
   5823 			req->args.vlan_stat_multi_set.stat_arr,
   5824 			req->args.vlan_stat_multi_set.value_arr);
   5825 		break;
   5826 	case BCMX_ASYNC_ENTRY_VLAN_STAT_MULTI_SET32:
   5827 		rv = bcmx_vlan_stat_multi_set32(
   5828 			req->args.vlan_stat_multi_set32.vlan,
   5829 			req->args.vlan_stat_multi_set32.cos,
   5830 			req->args.vlan_stat_multi_set32.nstat,
   5831 			req->args.vlan_stat_multi_set32.stat_arr,
   5832 			req->args.vlan_stat_multi_set32.value_arr);
   5833 		break;
   5834 	case BCMX_ASYNC_ENTRY_VLAN_STG_GET:
   5835 		rv = bcmx_vlan_stg_get(
   5836 			req->args.vlan_stg_get.vid,
   5837 			req->args.vlan_stg_get.stg_ptr);
   5838 		break;
   5839 	case BCMX_ASYNC_ENTRY_VLAN_STG_SET:
   5840 		rv = bcmx_vlan_stg_set(
   5841 			req->args.vlan_stg_set.vid,
   5842 			req->args.vlan_stg_set.stg);
   5843 		break;
   5844 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_ADD:
   5845 		rv = bcmx_vlan_translate_action_add(
   5846 			req->args.vlan_translate_action_add.port,
   5847 			req->args.vlan_translate_action_add.key_type,
   5848 			req->args.vlan_translate_action_add.outer_vlan,
   5849 			req->args.vlan_translate_action_add.inner_vlan,
   5850 			req->args.vlan_translate_action_add.action);
   5851 		break;
   5852 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_DELETE:
   5853 		rv = bcmx_vlan_translate_action_delete(
   5854 			req->args.vlan_translate_action_delete.port,
   5855 			req->args.vlan_translate_action_delete.key_type,
   5856 			req->args.vlan_translate_action_delete.outer_vlan,
   5857 			req->args.vlan_translate_action_delete.inner_vlan);
   5858 		break;
   5859 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_GET:
   5860 		rv = bcmx_vlan_translate_action_get(
   5861 			req->args.vlan_translate_action_get.port,
   5862 			req->args.vlan_translate_action_get.key_type,
   5863 			req->args.vlan_translate_action_get.outer_vlan,
   5864 			req->args.vlan_translate_action_get.inner_vlan,
   5865 			req->args.vlan_translate_action_get.action);
   5866 		break;
   5867 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_ADD:
   5868 		rv = bcmx_vlan_translate_action_range_add(
   5869 			req->args.vlan_translate_action_range_add.port,
   5870 			req->args.vlan_translate_action_range_add.outer_vlan_low,
   5871 			req->args.vlan_translate_action_range_add.outer_vlan_high,
   5872 			req->args.vlan_translate_action_range_add.inner_vlan_low,
   5873 			req->args.vlan_translate_action_range_add.inner_vlan_high,
   5874 			req->args.vlan_translate_action_range_add.action);
   5875 		break;
   5876 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_DELETE:
   5877 		rv = bcmx_vlan_translate_action_range_delete(
   5878 			req->args.vlan_translate_action_range_delete.port,
   5879 			req->args.vlan_translate_action_range_delete.outer_vlan_low,
   5880 			req->args.vlan_translate_action_range_delete.outer_vlan_high,
   5881 			req->args.vlan_translate_action_range_delete.inner_vlan_low,
   5882 			req->args.vlan_translate_action_range_delete.inner_vlan_high);
   5883 		break;
   5884 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_DELETE_ALL:
   5885 		rv = bcmx_vlan_translate_action_range_delete_all(
   5886 			);
   5887 		break;
   5888 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ACTION_RANGE_GET:
   5889 		rv = bcmx_vlan_translate_action_range_get(
   5890 			req->args.vlan_translate_action_range_get.port,
   5891 			req->args.vlan_translate_action_range_get.outer_vlan_low,
   5892 			req->args.vlan_translate_action_range_get.outer_vlan_high,
   5893 			req->args.vlan_translate_action_range_get.inner_vlan_low,
   5894 			req->args.vlan_translate_action_range_get.inner_vlan_high,
   5895 			req->args.vlan_translate_action_range_get.action);
   5896 		break;
   5897 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_ADD:
   5898 		rv = bcmx_vlan_translate_add(
   5899 			req->args.vlan_translate_add.port,
   5900 			req->args.vlan_translate_add.old_vid,
   5901 			req->args.vlan_translate_add.new_vid,
   5902 			req->args.vlan_translate_add.prio);
   5903 		break;
   5904 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_DELETE:
   5905 		rv = bcmx_vlan_translate_delete(
   5906 			req->args.vlan_translate_delete.port,
   5907 			req->args.vlan_translate_delete.old_vid);
   5908 		break;
   5909 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_DELETE_ALL:
   5910 		rv = bcmx_vlan_translate_delete_all(
   5911 			);
   5912 		break;
   5913 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ACTION_ADD:
   5914 		rv = bcmx_vlan_translate_egress_action_add(
   5915 			req->args.vlan_translate_egress_action_add.port_class,
   5916 			req->args.vlan_translate_egress_action_add.outer_vlan,
   5917 			req->args.vlan_translate_egress_action_add.inner_vlan,
   5918 			req->args.vlan_translate_egress_action_add.action);
   5919 		break;
   5920 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ACTION_DELETE:
   5921 		rv = bcmx_vlan_translate_egress_action_delete(
   5922 			req->args.vlan_translate_egress_action_delete.port_class,
   5923 			req->args.vlan_translate_egress_action_delete.outer_vlan,
   5924 			req->args.vlan_translate_egress_action_delete.inner_vlan);
   5925 		break;
   5926 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ACTION_GET:
   5927 		rv = bcmx_vlan_translate_egress_action_get(
   5928 			req->args.vlan_translate_egress_action_get.port_class,
   5929 			req->args.vlan_translate_egress_action_get.outer_vlan,
   5930 			req->args.vlan_translate_egress_action_get.inner_vlan,
   5931 			req->args.vlan_translate_egress_action_get.action);
   5932 		break;
   5933 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_ADD:
   5934 		rv = bcmx_vlan_translate_egress_add(
   5935 			req->args.vlan_translate_egress_add.port,
   5936 			req->args.vlan_translate_egress_add.old_vid,
   5937 			req->args.vlan_translate_egress_add.new_vid,
   5938 			req->args.vlan_translate_egress_add.prio);
   5939 		break;
   5940 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_DELETE:
   5941 		rv = bcmx_vlan_translate_egress_delete(
   5942 			req->args.vlan_translate_egress_delete.port,
   5943 			req->args.vlan_translate_egress_delete.old_vid);
   5944 		break;
   5945 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_DELETE_ALL:
   5946 		rv = bcmx_vlan_translate_egress_delete_all(
   5947 			);
   5948 		break;
   5949 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_GET:
   5950 		rv = bcmx_vlan_translate_egress_get(
   5951 			req->args.vlan_translate_egress_get.port,
   5952 			req->args.vlan_translate_egress_get.old_vid,
   5953 			req->args.vlan_translate_egress_get.new_vid,
   5954 			req->args.vlan_translate_egress_get.prio);
   5955 		break;
   5956 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_ENABLE_SET:
   5957 		rv = bcmx_vlan_translate_egress_stat_enable_set(
   5958 			req->args.vlan_translate_egress_stat_enable_set.port_class,
   5959 			req->args.vlan_translate_egress_stat_enable_set.outer_vlan,
   5960 			req->args.vlan_translate_egress_stat_enable_set.inner_vlan,
   5961 			req->args.vlan_translate_egress_stat_enable_set.enable);
   5962 		break;
   5963 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_GET:
   5964 		rv = bcmx_vlan_translate_egress_stat_get(
   5965 			req->args.vlan_translate_egress_stat_get.port_class,
   5966 			req->args.vlan_translate_egress_stat_get.outer_vlan,
   5967 			req->args.vlan_translate_egress_stat_get.inner_vlan,
   5968 			req->args.vlan_translate_egress_stat_get.stat,
   5969 			req->args.vlan_translate_egress_stat_get.val);
   5970 		break;
   5971 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_GET32:
   5972 		rv = bcmx_vlan_translate_egress_stat_get32(
   5973 			req->args.vlan_translate_egress_stat_get32.port_class,
   5974 			req->args.vlan_translate_egress_stat_get32.outer_vlan,
   5975 			req->args.vlan_translate_egress_stat_get32.inner_vlan,
   5976 			req->args.vlan_translate_egress_stat_get32.stat,
   5977 			req->args.vlan_translate_egress_stat_get32.val);
   5978 		break;
   5979 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_GET:
   5980 		rv = bcmx_vlan_translate_egress_stat_multi_get(
   5981 			req->args.vlan_translate_egress_stat_multi_get.port_class,
   5982 			req->args.vlan_translate_egress_stat_multi_get.outer_vlan,
   5983 			req->args.vlan_translate_egress_stat_multi_get.inner_vlan,
   5984 			req->args.vlan_translate_egress_stat_multi_get.nstat,
   5985 			req->args.vlan_translate_egress_stat_multi_get.stat_arr,
   5986 			req->args.vlan_translate_egress_stat_multi_get.value_arr);
   5987 		break;
   5988 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_GET32:
   5989 		rv = bcmx_vlan_translate_egress_stat_multi_get32(
   5990 			req->args.vlan_translate_egress_stat_multi_get32.port_class,
   5991 			req->args.vlan_translate_egress_stat_multi_get32.outer_vlan,
   5992 			req->args.vlan_translate_egress_stat_multi_get32.inner_vlan,
   5993 			req->args.vlan_translate_egress_stat_multi_get32.nstat,
   5994 			req->args.vlan_translate_egress_stat_multi_get32.stat_arr,
   5995 			req->args.vlan_translate_egress_stat_multi_get32.value_arr);
   5996 		break;
   5997 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_SET:
   5998 		rv = bcmx_vlan_translate_egress_stat_multi_set(
   5999 			req->args.vlan_translate_egress_stat_multi_set.port_class,
   6000 			req->args.vlan_translate_egress_stat_multi_set.outer_vlan,
   6001 			req->args.vlan_translate_egress_stat_multi_set.inner_vlan,
   6002 			req->args.vlan_translate_egress_stat_multi_set.nstat,
   6003 			req->args.vlan_translate_egress_stat_multi_set.stat_arr,
   6004 			req->args.vlan_translate_egress_stat_multi_set.value_arr);
   6005 		break;
   6006 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_MULTI_SET32:
   6007 		rv = bcmx_vlan_translate_egress_stat_multi_set32(
   6008 			req->args.vlan_translate_egress_stat_multi_set32.port_class,
   6009 			req->args.vlan_translate_egress_stat_multi_set32.outer_vlan,
   6010 			req->args.vlan_translate_egress_stat_multi_set32.inner_vlan,
   6011 			req->args.vlan_translate_egress_stat_multi_set32.nstat,
   6012 			req->args.vlan_translate_egress_stat_multi_set32.stat_arr,
   6013 			req->args.vlan_translate_egress_stat_multi_set32.value_arr);
   6014 		break;
   6015 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_SET:
   6016 		rv = bcmx_vlan_translate_egress_stat_set(
   6017 			req->args.vlan_translate_egress_stat_set.port_class,
   6018 			req->args.vlan_translate_egress_stat_set.outer_vlan,
   6019 			req->args.vlan_translate_egress_stat_set.inner_vlan,
   6020 			req->args.vlan_translate_egress_stat_set.stat,
   6021 			req->args.vlan_translate_egress_stat_set.val);
   6022 		break;
   6023 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_EGRESS_STAT_SET32:
   6024 		rv = bcmx_vlan_translate_egress_stat_set32(
   6025 			req->args.vlan_translate_egress_stat_set32.port_class,
   6026 			req->args.vlan_translate_egress_stat_set32.outer_vlan,
   6027 			req->args.vlan_translate_egress_stat_set32.inner_vlan,
   6028 			req->args.vlan_translate_egress_stat_set32.stat,
   6029 			req->args.vlan_translate_egress_stat_set32.val);
   6030 		break;
   6031 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_GET:
   6032 		rv = bcmx_vlan_translate_get(
   6033 			req->args.vlan_translate_get.port,
   6034 			req->args.vlan_translate_get.old_vid,
   6035 			req->args.vlan_translate_get.new_vid,
   6036 			req->args.vlan_translate_get.prio);
   6037 		break;
   6038 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_ADD:
   6039 		rv = bcmx_vlan_translate_range_add(
   6040 			req->args.vlan_translate_range_add.port,
   6041 			req->args.vlan_translate_range_add.old_vid_low,
   6042 			req->args.vlan_translate_range_add.old_vid_high,
   6043 			req->args.vlan_translate_range_add.new_vid,
   6044 			req->args.vlan_translate_range_add.int_prio);
   6045 		break;
   6046 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_DELETE:
   6047 		rv = bcmx_vlan_translate_range_delete(
   6048 			req->args.vlan_translate_range_delete.port,
   6049 			req->args.vlan_translate_range_delete.old_vid_low,
   6050 			req->args.vlan_translate_range_delete.old_vid_high);
   6051 		break;
   6052 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_DELETE_ALL:
   6053 		rv = bcmx_vlan_translate_range_delete_all(
   6054 			);
   6055 		break;
   6056 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_RANGE_GET:
   6057 		rv = bcmx_vlan_translate_range_get(
   6058 			req->args.vlan_translate_range_get.port,
   6059 			req->args.vlan_translate_range_get.old_vid_low,
   6060 			req->args.vlan_translate_range_get.old_vid_high,
   6061 			req->args.vlan_translate_range_get.new_vid,
   6062 			req->args.vlan_translate_range_get.int_prio);
   6063 		break;
   6064 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_ENABLE_SET:
   6065 		rv = bcmx_vlan_translate_stat_enable_set(
   6066 			req->args.vlan_translate_stat_enable_set.port,
   6067 			req->args.vlan_translate_stat_enable_set.key_type,
   6068 			req->args.vlan_translate_stat_enable_set.outer_vlan,
   6069 			req->args.vlan_translate_stat_enable_set.inner_vlan,
   6070 			req->args.vlan_translate_stat_enable_set.enable);
   6071 		break;
   6072 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_GET:
   6073 		rv = bcmx_vlan_translate_stat_get(
   6074 			req->args.vlan_translate_stat_get.port,
   6075 			req->args.vlan_translate_stat_get.key_type,
   6076 			req->args.vlan_translate_stat_get.outer_vlan,
   6077 			req->args.vlan_translate_stat_get.inner_vlan,
   6078 			req->args.vlan_translate_stat_get.stat,
   6079 			req->args.vlan_translate_stat_get.val);
   6080 		break;
   6081 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_GET32:
   6082 		rv = bcmx_vlan_translate_stat_get32(
   6083 			req->args.vlan_translate_stat_get32.port,
   6084 			req->args.vlan_translate_stat_get32.key_type,
   6085 			req->args.vlan_translate_stat_get32.outer_vlan,
   6086 			req->args.vlan_translate_stat_get32.inner_vlan,
   6087 			req->args.vlan_translate_stat_get32.stat,
   6088 			req->args.vlan_translate_stat_get32.val);
   6089 		break;
   6090 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_GET:
   6091 		rv = bcmx_vlan_translate_stat_multi_get(
   6092 			req->args.vlan_translate_stat_multi_get.port,
   6093 			req->args.vlan_translate_stat_multi_get.key_type,
   6094 			req->args.vlan_translate_stat_multi_get.outer_vlan,
   6095 			req->args.vlan_translate_stat_multi_get.inner_vlan,
   6096 			req->args.vlan_translate_stat_multi_get.nstat,
   6097 			req->args.vlan_translate_stat_multi_get.stat_arr,
   6098 			req->args.vlan_translate_stat_multi_get.value_arr);
   6099 		break;
   6100 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_GET32:
   6101 		rv = bcmx_vlan_translate_stat_multi_get32(
   6102 			req->args.vlan_translate_stat_multi_get32.port,
   6103 			req->args.vlan_translate_stat_multi_get32.key_type,
   6104 			req->args.vlan_translate_stat_multi_get32.outer_vlan,
   6105 			req->args.vlan_translate_stat_multi_get32.inner_vlan,
   6106 			req->args.vlan_translate_stat_multi_get32.nstat,
   6107 			req->args.vlan_translate_stat_multi_get32.stat_arr,
   6108 			req->args.vlan_translate_stat_multi_get32.value_arr);
   6109 		break;
   6110 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_SET:
   6111 		rv = bcmx_vlan_translate_stat_multi_set(
   6112 			req->args.vlan_translate_stat_multi_set.port,
   6113 			req->args.vlan_translate_stat_multi_set.key_type,
   6114 			req->args.vlan_translate_stat_multi_set.outer_vlan,
   6115 			req->args.vlan_translate_stat_multi_set.inner_vlan,
   6116 			req->args.vlan_translate_stat_multi_set.nstat,
   6117 			req->args.vlan_translate_stat_multi_set.stat_arr,
   6118 			req->args.vlan_translate_stat_multi_set.value_arr);
   6119 		break;
   6120 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_MULTI_SET32:
   6121 		rv = bcmx_vlan_translate_stat_multi_set32(
   6122 			req->args.vlan_translate_stat_multi_set32.port,
   6123 			req->args.vlan_translate_stat_multi_set32.key_type,
   6124 			req->args.vlan_translate_stat_multi_set32.outer_vlan,
   6125 			req->args.vlan_translate_stat_multi_set32.inner_vlan,
   6126 			req->args.vlan_translate_stat_multi_set32.nstat,
   6127 			req->args.vlan_translate_stat_multi_set32.stat_arr,
   6128 			req->args.vlan_translate_stat_multi_set32.value_arr);
   6129 		break;
   6130 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_SET:
   6131 		rv = bcmx_vlan_translate_stat_set(
   6132 			req->args.vlan_translate_stat_set.port,
   6133 			req->args.vlan_translate_stat_set.key_type,
   6134 			req->args.vlan_translate_stat_set.outer_vlan,
   6135 			req->args.vlan_translate_stat_set.inner_vlan,
   6136 			req->args.vlan_translate_stat_set.stat,
   6137 			req->args.vlan_translate_stat_set.val);
   6138 		break;
   6139 	case BCMX_ASYNC_ENTRY_VLAN_TRANSLATE_STAT_SET32:
   6140 		rv = bcmx_vlan_translate_stat_set32(
   6141 			req->args.vlan_translate_stat_set32.port,
   6142 			req->args.vlan_translate_stat_set32.key_type,
   6143 			req->args.vlan_translate_stat_set32.outer_vlan,
   6144 			req->args.vlan_translate_stat_set32.inner_vlan,
   6145 			req->args.vlan_translate_stat_set32.stat,
   6146 			req->args.vlan_translate_stat_set32.val);
   6147 		break;
   6148 	case BCMX_ASYNC_ENTRY_VLAN_VECTOR_FLAGS_SET:
   6149 		rv = bcmx_vlan_vector_flags_set(
   6150 			req->args.vlan_vector_flags_set.vlan_vector,
   6151 			req->args.vlan_vector_flags_set.flags_mask,
   6152 			req->args.vlan_vector_flags_set.flags_value);
   6153 		break;
   6154 #ifdef	INCLUDE_L3
   6155 	case BCMX_ASYNC_ENTRY_WLAN_CLIENT_ADD:
   6156 		rv = bcmx_wlan_client_add(
   6157 			req->args.wlan_client_add.info);
   6158 		break;
   6159 	case BCMX_ASYNC_ENTRY_WLAN_CLIENT_DELETE:
   6160 		rv = bcmx_wlan_client_delete(
   6161 			req->args.wlan_client_delete.mac);
   6162 		break;
   6163 	case BCMX_ASYNC_ENTRY_WLAN_CLIENT_DELETE_ALL:
   6164 		rv = bcmx_wlan_client_delete_all(
   6165 			);
   6166 		break;
   6167 	case BCMX_ASYNC_ENTRY_WLAN_CLIENT_GET:
   6168 		rv = bcmx_wlan_client_get(
   6169 			req->args.wlan_client_get.mac,
   6170 			req->args.wlan_client_get.info);
   6171 		break;
   6172 	case BCMX_ASYNC_ENTRY_WLAN_DETACH:
   6173 		rv = bcmx_wlan_detach(
   6174 			);
   6175 		break;
   6176 	case BCMX_ASYNC_ENTRY_WLAN_INIT:
   6177 		rv = bcmx_wlan_init(
   6178 			);
   6179 		break;
   6180 	case BCMX_ASYNC_ENTRY_WLAN_PORT_ADD:
   6181 		rv = bcmx_wlan_port_add(
   6182 			req->args.wlan_port_add.info);
   6183 		break;
   6184 	case BCMX_ASYNC_ENTRY_WLAN_PORT_DELETE:
   6185 		rv = bcmx_wlan_port_delete(
   6186 			req->args.wlan_port_delete.wlan_port_id);
   6187 		break;
   6188 	case BCMX_ASYNC_ENTRY_WLAN_PORT_DELETE_ALL:
   6189 		rv = bcmx_wlan_port_delete_all(
   6190 			);
   6191 		break;
   6192 	case BCMX_ASYNC_ENTRY_WLAN_PORT_GET:
   6193 		rv = bcmx_wlan_port_get(
   6194 			req->args.wlan_port_get.wlan_port_id,
   6195 			req->args.wlan_port_get.info);
   6196 		break;
   6197 	case BCMX_ASYNC_ENTRY_WLAN_TUNNEL_INITIATOR_CREATE:
   6198 		rv = bcmx_wlan_tunnel_initiator_create(
   6199 			req->args.wlan_tunnel_initiator_create.info);
   6200 		break;
   6201 	case BCMX_ASYNC_ENTRY_WLAN_TUNNEL_INITIATOR_DESTROY:
   6202 		rv = bcmx_wlan_tunnel_initiator_destroy(
   6203 			req->args.wlan_tunnel_initiator_destroy.wlan_tunnel_id);
   6204 		break;
   6205 	case BCMX_ASYNC_ENTRY_WLAN_TUNNEL_INITIATOR_GET:
   6206 		rv = bcmx_wlan_tunnel_initiator_get(
   6207 			req->args.wlan_tunnel_initiator_get.info);
   6208 		break;
   6209 #endif	/* INCLUDE_L3 */
   6210 	default:
   6211 		rv = BCM_E_UNAVAIL;
   6212 	}
   6213 	if (req->callback != 0) {
   6214 		(*req->callback)(req->cookie, rv);
   6215 	}
   6216 	sal_free(req);
   6217 }
   6218 
   6219 #endif	/* BCM_ASYNC_SUPPORT */