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

alpm_th3_acc.h (87773B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        alpm_th3_acc.h
      8  * Purpose:     Function declarations for ALPM Internal functions.
      9  */
     10 
     11 #ifndef _BCM_INT_ALPM_TH3_ACC_H_
     12 #define _BCM_INT_ALPM_TH3_ACC_H_
     13 
     14 typedef struct {
     15 #ifdef  LE_HOST
     16     uint32  DEST_TYPE:1,
     17             DESTINATION:15,
     18             PRI:4,
     19             RPE:1,
     20             DST_DISCARD:1,
     21             CLASS_ID:6,
     22             FLEX_CTR_POOL_NUMBER:4;
     23 #else
     24     uint32  FLEX_CTR_POOL_NUMBER:4,
     25             CLASS_ID:6,
     26             DST_DISCARD:1,
     27             RPE:1,
     28             PRI:4,
     29             DESTINATION:15,
     30             DEST_TYPE:1;
     31 #endif  /* LE_HOST */
     32 
     33 #ifdef  LE_HOST
     34     uint32  FLEX_CTR_OFFSET_MODE:2,
     35             FLEX_CTR_BASE_COUNTER_IDX:12,
     36             __PAD0:18;
     37 #else
     38     uint32  __PAD0:18,
     39             FLEX_CTR_BASE_COUNTER_IDX:12,
     40             FLEX_CTR_OFFSET_MODE:2;
     41 #endif  /* LE_HOST */
     42 } th3_fmt_ASSOC_DATA_FULL_t;
     43 
     44 typedef struct {
     45 #ifdef  LE_HOST
     46     uint32  DEST_TYPE:1,
     47             DESTINATION:15,
     48             __PAD0:16;
     49 #else
     50     uint32  __PAD0:16,
     51             DESTINATION:15,
     52             DEST_TYPE:1;
     53 #endif  /* LE_HOST */
     54 
     55 } th3_fmt_ASSOC_DATA_REDUCED_t;
     56 
     57 typedef struct {
     58 #ifdef  LE_HOST
     59     uint32  SUB_DB_PRIORITY:2,
     60             __PAD0:30;
     61 #else
     62     uint32  __PAD0:30,
     63             SUB_DB_PRIORITY:2;
     64 #endif  /* LE_HOST */
     65 } th3_fmt_FIXED_DATA_t;
     66 
     67 typedef struct {
     68 #ifdef  LE_HOST
     69     uint32  KEY_MODE:2,
     70             KEY_TYPE:1,
     71             IP_ADDR_0_28:29;
     72 #else
     73     uint32  IP_ADDR_0_28:29,
     74             KEY_TYPE:1,
     75             KEY_MODE:2;
     76 #endif  /* LE_HOST */
     77 
     78 #ifdef  LE_HOST
     79     uint32  IP_ADDR_29_31:3,
     80             VRF_ID:12,
     81             RESERVED:1,
     82             __PAD0:16;
     83 #else
     84     uint32  __PAD0:16,
     85             RESERVED:1,
     86             VRF_ID:12,
     87             IP_ADDR_29_31:3;
     88 #endif  /* LE_HOST */
     89 } th3_fmt_L3_DEFIP_TCAM_KEY_t;
     90 
     91 typedef struct {
     92 #ifdef  LE_HOST
     93     uint32  DEFAULT_MISS:1,
     94             DIRECT_ROUTE:1,
     95             BKT_PTR:10,
     96             KSHIFT:7,
     97             ROFS:3,
     98             FMT0:4,
     99             FMT1:4,
    100             FMT2_0_1:2;
    101 #else
    102     uint32  FMT2_0_1:2,
    103             FMT1:4,
    104             FMT0:4,
    105             ROFS:3,
    106             KSHIFT:7,
    107             BKT_PTR:10,
    108             DIRECT_ROUTE:1,
    109             DEFAULT_MISS:1;
    110 #endif  /* LE_HOST */
    111 
    112 #ifdef  LE_HOST
    113     uint32  FMT2_2_3:2,
    114             FMT3:4,
    115             FMT4:4,
    116             __PAD0:22;
    117 #else
    118     uint32  __PAD0:22,
    119             FMT4:4,
    120             FMT3:4,
    121             FMT2_2_3:2;
    122 #endif  /* LE_HOST */
    123 } th3_fmt_ALPM1_DATA_t;
    124 
    125 typedef struct {
    126 #ifdef  LE_HOST
    127     uint32  DEFAULT_MISS:1,
    128             BKT_PTR:13,
    129             KSHIFT:7,
    130             ROFS:3,
    131             FMT0:4,
    132             FMT1:4;
    133 #else
    134     uint32  FMT1:4,
    135             FMT0:4,
    136             ROFS:3,
    137             KSHIFT:7,
    138             BKT_PTR:13,
    139             DEFAULT_MISS:1;
    140 #endif  /* LE_HOST */
    141 
    142 #ifdef  LE_HOST
    143     uint32  FMT2:4,
    144             FMT3:4,
    145             FMT4:4,
    146             FMT5:4,
    147             FMT6:4,
    148             FMT7:4,
    149             __PAD0:8;
    150 #else
    151     uint32  __PAD0:8,
    152             FMT7:4,
    153             FMT6:4,
    154             FMT5:4,
    155             FMT4:4,
    156             FMT3:4,
    157             FMT2:4;
    158 #endif  /* LE_HOST */
    159 } th3_fmt_ALPM2_DATA_t;
    160 
    161 #if 0
    162 /* L3_DEFIP_ALPM_PIVOT_FMT type */
    163 typedef struct {
    164 #ifdef  LE_HOST
    165     uint32  PREFIX:8,
    166             ASSOC_DATA:16,
    167             ALPM2_DATA_0_7:8;
    168 #else
    169     uint32  ALPM2_DATA_0_7:8,
    170             ASSOC_DATA:16,
    171             PREFIX:8;
    172 #endif  /* LE_HOST */
    173 
    174     uint32 ALPM2_DATA_8_39;
    175 
    176 #ifdef  LE_HOST
    177     uint32  ALPM2_DATA_40_55:16,
    178             __PAD0:16;
    179 #else
    180     uint32  __PAD0:16,
    181             ALPM2_DATA_40_55:16;
    182 #endif  /* LE_HOST */
    183 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_t;
    184 
    185 typedef struct {
    186 #ifdef  LE_HOST
    187     uint32  PREFIX:24,
    188             ASSOC_DATA_0_7:8;
    189 #else
    190     uint32  ASSOC_DATA_0_7:8,
    191             PREFIX:24;
    192 #endif  /* LE_HOST */
    193 
    194 #ifdef  LE_HOST
    195     uint32  ASSOC_DATA_8_15:8,
    196             ALPM2_DATA_0_23:24;
    197 #else
    198     uint32  ALPM2_DATA_0_23:24,
    199             ASSOC_DATA_8_15:8;
    200 #endif  /* LE_HOST */
    201 
    202     uint32  ALPM2_DATA_24_55;
    203 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_t;
    204 
    205 typedef struct {
    206     uint32  PREFIX_0_31;
    207 
    208 #ifdef  LE_HOST
    209     uint32  PREFIX_32_47:16,
    210             ASSOC_DATA:16;
    211 #else
    212     uint32  ASSOC_DATA:16,
    213             PREFIX_32_47:16;
    214 #endif  /* LE_HOST */
    215 
    216     uint32  ALPM2_DATA_0_31;
    217 
    218 #ifdef  LE_HOST
    219     uint32  ALPM2_DATA_32_55:24,
    220             __PAD0:8;
    221 #else
    222     uint32  __PAD0:8,
    223             ALPM2_DATA_32_55:24;
    224 #endif  /* LE_HOST */
    225 
    226 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_t;
    227 
    228 typedef struct {
    229     uint32  PREFIX_0_31;
    230     uint32  PREFIX_32_63;
    231 
    232 #ifdef  LE_HOST
    233     uint32  PREFIX_64_87:24,
    234             ASSOC_DATA_0_7:8;
    235 #else
    236     uint32  ASSOC_DATA_0_7:8,
    237             PREFIX_64_87:24;
    238 #endif  /* LE_HOST */
    239 
    240 #ifdef  LE_HOST
    241     uint32  ASSOC_DATA_8_15:8,
    242             ALPM2_DATA_0_23:24;
    243 #else
    244     uint32  ALPM2_DATA_0_23:24,
    245             ASSOC_DATA_8_15:8;
    246 #endif  /* LE_HOST */
    247 
    248     uint32  ALPM2_DATA_24_55;
    249 
    250 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_t;
    251 
    252 typedef struct {
    253     uint32  PREFIX_0_31;
    254     uint32  PREFIX_32_63;
    255     uint32  PREFIX_64_95;
    256     uint32  PREFIX_96_127;
    257 
    258 #ifdef  LE_HOST
    259     uint32  PREFIX_128:1,
    260             RESERVED:7,
    261             ASSOC_DATA:16,
    262             ALPM2_DATA_0_7:8;
    263 #else
    264     uint32  ALPM2_DATA_0_7:8,
    265             ASSOC_DATA:16,
    266             RESERVED:7,
    267             PREFIX_128:1;
    268 #endif  /* LE_HOST */
    269 
    270     uint32  ALPM2_DATA_8_39;
    271 
    272 #ifdef  LE_HOST
    273     uint32  ALPM2_DATA_40_55:16,
    274             __PAD0:16;
    275 #else
    276     uint32  __PAD0:16,
    277             ALPM2_DATA_40_55:16;
    278 #endif  /* LE_HOST */
    279 
    280 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_t;
    281 
    282 typedef struct {
    283 #ifdef  LE_HOST
    284     uint32  PREFIX:18,
    285             ASSOC_DATA_0_13:14;
    286 #else
    287     uint32  ASSOC_DATA_0_13:14,
    288             PREFIX:18;
    289 #endif  /* LE_HOST */
    290 
    291     uint32  ASSOC_DATA_14_45;
    292     uint32  ALPM2_DATA_0_31;
    293 
    294 #ifdef  LE_HOST
    295     uint32  ALPM2_DATA_32_55:24,
    296             __PAD0:8;
    297 #else
    298     uint32  __PAD0:8,
    299             ALPM2_DATA_32_55:24;
    300 #endif  /* LE_HOST */
    301 
    302 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_t;
    303 
    304 typedef struct {
    305     uint32  PREFIX_0_31;
    306 #ifdef  LE_HOST
    307     uint32  PREFIX_32_57:26,
    308             ASSOC_DATA_0_5:6;
    309 #else
    310     uint32  ASSOC_DATA_0_5:6,
    311             PREFIX_32_57:26;
    312 #endif  /* LE_HOST */
    313 
    314     uint32  ASSOC_DATA_6_37;
    315 
    316 #ifdef  LE_HOST
    317     uint32  ASSOC_DATA_38_45:8,
    318             ALPM2_DATA_0_23:24;
    319 #else
    320     uint32  ALPM2_DATA_0_23:24,
    321             ASSOC_DATA_38_45:8;
    322 #endif  /* LE_HOST */
    323     uint32  ALPM2_DATA_24_55;
    324 
    325 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_t;
    326 
    327 typedef struct {
    328     uint32  PREFIX_0_31;
    329     uint32  PREFIX_32_63;
    330     uint32  PREFIX_64_95;
    331     uint32  PREFIX_96_127;
    332 
    333 #ifdef  LE_HOST
    334     uint32  PREFIX_128:1,
    335             RESERVED:1,
    336             ASSOC_DATA_0_29:30;
    337 #else
    338     uint32  ASSOC_DATA_0_29:30,
    339             RESERVED:1,
    340             PREFIX_128:1;
    341 #endif  /* LE_HOST */
    342 
    343 #ifdef  LE_HOST
    344     uint32  ASSOC_DATA_30_45:16,
    345             ALPM2_DATA_0_15:16;
    346 #else
    347     uint32  ALPM2_DATA_0_15:16,
    348             ASSOC_DATA_30_45:16;
    349 #endif  /* LE_HOST */
    350 
    351     uint32  ALPM2_DATA_16_47;
    352 
    353 #ifdef  LE_HOST
    354     uint32  ALPM2_DATA_48_55:8,
    355             __PAD0:24;
    356 #else
    357     uint32  __PAD0:24,
    358             ALPM2_DATA_48_55:8;
    359 #endif  /* LE_HOST */
    360 
    361 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_t;
    362 
    363 /* L3_DEFIP_ALPM_ROUTE_FMT type */
    364 typedef struct {
    365 #ifdef  LE_HOST
    366     uint32  PREFIX:16,
    367             ASSOC_DATA:16;
    368 #else
    369     uint32  ASSOC_DATA:16,
    370             PREFIX:16;
    371 #endif  /* LE_HOST */
    372 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_t;
    373 
    374 typedef struct {
    375 #ifdef  LE_HOST
    376     uint32  PREFIX:24,
    377             ASSOC_DATA_0_7:8;
    378 #else
    379     uint32  ASSOC_DATA_0_7:8,
    380             PREFIX:24;
    381 #endif  /* LE_HOST */
    382 
    383 #ifdef  LE_HOST
    384     uint32  ASSOC_DATA_8_15:8,
    385             __PAD0:24;
    386 #else
    387     uint32  __PAD0:24,
    388             ASSOC_DATA_8_15:8;
    389 #endif  /* LE_HOST */
    390 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_t;
    391 
    392 typedef struct {
    393     uint32  PREFIX;
    394 
    395 #ifdef  LE_HOST
    396     uint32  ASSOC_DATA:16,
    397             __PAD0:16;
    398 #else
    399     uint32  __PAD0:16,
    400             ASSOC_DATA:16;
    401 #endif  /* LE_HOST */
    402 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_t;
    403 
    404 typedef struct {
    405     uint32  PREFIX_0_31;
    406 
    407 #ifdef  LE_HOST
    408     uint32  PREFIX_32_39:8,
    409             ASSOC_DATA:16,
    410             __PAD0:8;
    411 #else
    412     uint32  __PAD0:8,
    413             ASSOC_DATA:16,
    414             PREFIX_32_39:8;
    415 #endif  /* LE_HOST */
    416 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_t;
    417 
    418 typedef struct {
    419     uint32  PREFIX_0_31;
    420 
    421 #ifdef  LE_HOST
    422     uint32  PREFIX_32_47:16,
    423             ASSOC_DATA:16;
    424 #else
    425     uint32  ASSOC_DATA:16,
    426             PREFIX_32_47:16;
    427 #endif  /* LE_HOST */
    428 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_t;
    429 
    430 typedef struct {
    431     uint32  PREFIX_0_31;
    432     uint32  PREFIX_32_63;
    433 
    434 #ifdef  LE_HOST
    435     uint32  ASSOC_DATA:16,
    436             __PAD0:16;
    437 #else
    438     uint32  __PAD0:16,
    439             ASSOC_DATA:16;
    440 #endif  /* LE_HOST */
    441 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_t;
    442 
    443 typedef struct {
    444     uint32  PREFIX_0_31;
    445     uint32  PREFIX_32_63;
    446 
    447 #ifdef  LE_HOST
    448     uint32  PREFIX_64_79:16,
    449             ASSOC_DATA:16;
    450 #else
    451     uint32  ASSOC_DATA:16,
    452             PREFIX_64_79:16;
    453 #endif  /* LE_HOST */
    454 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_t;
    455 
    456 typedef struct {
    457     uint32  PREFIX_0_31;
    458     uint32  PREFIX_32_63;
    459     uint32  PREFIX_64_95;
    460 
    461 #ifdef  LE_HOST
    462     uint32  PREFIX_96_103:8,
    463             ASSOC_DATA:16,
    464             __PAD0:8;
    465 #else
    466     uint32  __PAD0:8,
    467             ASSOC_DATA:16,
    468             PREFIX_96_103:8;
    469 #endif  /* LE_HOST */
    470 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_t;
    471 
    472 typedef struct {
    473     uint32  PREFIX_0_31;
    474     uint32  PREFIX_32_63;
    475     uint32  PREFIX_64_95;
    476     uint32  PREFIX_96_127;
    477 
    478 #ifdef  LE_HOST
    479     uint32  PREFIX_128:1,
    480             RESERVED:7,
    481             ASSOC_DATA:16,
    482             __PAD0:8;
    483 #else
    484     uint32  __PAD0:8,
    485             ASSOC_DATA:16,
    486             RESERVED:7,
    487             PREFIX_128:1;
    488 #endif  /* LE_HOST */
    489 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_t;
    490 
    491 typedef struct {
    492     uint32  PREFIX_0_31;
    493 
    494 #ifdef  LE_HOST
    495     uint32  PREFIX_32_33:2,
    496             ASSOC_DATA_0_29:30;
    497 #else
    498     uint32  ASSOC_DATA_0_29:30,
    499             PREFIX_32_33:2;
    500 #endif  /* LE_HOST */
    501 
    502 #ifdef  LE_HOST
    503     uint32  ASSOC_DATA_30_45:16,
    504             __PAD0:16;
    505 #else
    506     uint32  __PAD0:16,
    507             ASSOC_DATA_30_45:16;
    508 #endif  /* LE_HOST */
    509 
    510 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_t;
    511 
    512 typedef struct {
    513     uint32  PREFIX_0_31;
    514     uint32  PREFIX_32_63;
    515 
    516 #ifdef  LE_HOST
    517     uint32  PREFIX_64_73:10,
    518             ASSOC_DATA_0_21:22;
    519 #else
    520     uint32  ASSOC_DATA_0_21:22,
    521             PREFIX_64_73:10;
    522 #endif  /* LE_HOST */
    523 
    524 #ifdef  LE_HOST
    525     uint32  ASSOC_DATA_22_45:24,
    526             __PAD0:8;
    527 #else
    528     uint32  __PAD0:8,
    529             ASSOC_DATA_22_45:24;
    530 #endif  /* LE_HOST */
    531 
    532 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_t;
    533 
    534 typedef struct {
    535     uint32  PREFIX_0_31;
    536     uint32  PREFIX_32_63;
    537     uint32  PREFIX_64_95;
    538     uint32  PREFIX_96_127;
    539 
    540 #ifdef  LE_HOST
    541     uint32  PREFIX_128:1,
    542             RESERVED:1,
    543             ASSOC_DATA_0_29:30;
    544 #else
    545     uint32  ASSOC_DATA_0_29:30,
    546             RESERVED:1,
    547             PREFIX_128:1;
    548 #endif  /* LE_HOST */
    549 
    550 #ifdef  LE_HOST
    551     uint32  ASSOC_DATA_30_45:16,
    552             __PAD0:16;
    553 #else
    554     uint32  __PAD0:16,
    555             ASSOC_DATA_30_45:16;
    556 #endif  /* LE_HOST */
    557 
    558 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_t;
    559 
    560 
    561 /* PIVOT FULL */
    562 typedef struct {
    563     uint32  ENTRY_0_0_31;
    564     uint32  ENTRY_0_32_63;
    565 
    566 #ifdef  LE_HOST
    567     uint32  ENTRY_0_64_79:16,
    568             ENTRY_1_0_15:16;
    569 #else
    570     uint32  ENTRY_1_0_15:16,
    571             ENTRY_0_64_79:16;
    572 #endif  /* LE_HOST */
    573 
    574     uint32  ENTRY_1_16_47;
    575     uint32  ENTRY_1_48_79;
    576     uint32  ENTRY_2_0_31;
    577     uint32  ENTRY_2_32_63;
    578 
    579 #ifdef  LE_HOST
    580     uint32  ENTRY_2_64_79:16,
    581             ENTRY_3_0_15:16;
    582 #else
    583     uint32  ENTRY_3_0_15:16,
    584             ENTRY_2_64_79:16;
    585 #endif  /* LE_HOST */
    586 
    587     uint32  ENTRY_3_16_47;
    588     uint32  ENTRY_3_48_79;
    589     uint32  ENTRY_4_0_31;
    590     uint32  ENTRY_4_32_63;
    591 
    592 #ifdef  LE_HOST
    593     uint32  ENTRY_4_64_79:16,
    594             ENTRY_5_0_15:16;
    595 #else
    596     uint32  ENTRY_5_0_15:16,
    597             ENTRY_4_64_79:16;
    598 #endif  /* LE_HOST */
    599     uint32  ENTRY_5_16_47;
    600     uint32  ENTRY_5_48_79;
    601 
    602 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t;
    603 
    604 typedef struct {
    605     uint32  ENTRY_0_0_31;
    606     uint32  ENTRY_0_32_63;
    607     uint32  ENTRY_0_64_95;
    608 
    609     uint32  ENTRY_1_0_31;
    610     uint32  ENTRY_1_32_63;
    611     uint32  ENTRY_1_64_95;
    612 
    613     uint32  ENTRY_2_0_31;
    614     uint32  ENTRY_2_32_63;
    615     uint32  ENTRY_2_64_95;
    616 
    617     uint32  ENTRY_3_0_31;
    618     uint32  ENTRY_3_32_63;
    619     uint32  ENTRY_3_64_95;
    620 
    621     uint32  ENTRY_4_0_31;
    622     uint32  ENTRY_4_32_63;
    623     uint32  ENTRY_4_64_95;
    624 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t;
    625 
    626 typedef struct {
    627     uint32  ENTRY_0_0_31;
    628     uint32  ENTRY_0_32_63;
    629     uint32  ENTRY_0_64_95;
    630 
    631 #ifdef  LE_HOST
    632     uint32  ENTRY_0_96_119:24,
    633             ENTRY_1_0_7:8;
    634 #else
    635     uint32  ENTRY_1_0_7:8,
    636             ENTRY_0_96_119:24;
    637 #endif  /* LE_HOST */
    638 
    639     uint32  ENTRY_1_8_39;
    640     uint32  ENTRY_1_40_71;
    641     uint32  ENTRY_1_72_103;
    642 
    643 #ifdef  LE_HOST
    644     uint32  ENTRY_1_104_119:16,
    645             ENTRY_2_0_15:16;
    646 #else
    647     uint32  ENTRY_2_0_15:16,
    648             ENTRY_1_104_119:16;
    649 #endif  /* LE_HOST */
    650 
    651     uint32  ENTRY_2_16_47;
    652     uint32  ENTRY_2_48_79;
    653     uint32  ENTRY_2_80_111;
    654 
    655 #ifdef  LE_HOST
    656     uint32  ENTRY_2_112_119:8,
    657             ENTRY_3_0_23:24;
    658 #else
    659     uint32  ENTRY_3_0_23:24,
    660             ENTRY_2_112_119:8;
    661 #endif  /* LE_HOST */
    662 
    663     uint32  ENTRY_3_24_55;
    664     uint32  ENTRY_3_56_87;
    665     uint32  ENTRY_3_88_119;
    666 
    667 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t;
    668 
    669 typedef struct {
    670     uint32  ENTRY_0_0_31;
    671     uint32  ENTRY_0_32_63;
    672     uint32  ENTRY_0_64_95;
    673     uint32  ENTRY_0_96_127;
    674     uint32  ENTRY_0_128_159;
    675 
    676     uint32  ENTRY_1_0_31;
    677     uint32  ENTRY_1_32_63;
    678     uint32  ENTRY_1_64_95;
    679     uint32  ENTRY_1_96_127;
    680     uint32  ENTRY_1_128_159;
    681 
    682     uint32  ENTRY_2_0_31;
    683     uint32  ENTRY_2_32_63;
    684     uint32  ENTRY_2_64_95;
    685     uint32  ENTRY_2_96_127;
    686     uint32  ENTRY_2_128_159;
    687 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t;
    688 
    689 typedef struct {
    690     uint32  ENTRY_0_0_31;
    691     uint32  ENTRY_0_32_63;
    692     uint32  ENTRY_0_64_95;
    693     uint32  ENTRY_0_96_127;
    694     uint32  ENTRY_0_128_159;
    695     uint32  ENTRY_0_160_191;
    696 
    697 #ifdef  LE_HOST
    698     uint32  ENTRY_0_192_207:16,
    699             ENTRY_1_0_15:16;
    700 #else
    701     uint32  ENTRY_1_0_15:16,
    702             ENTRY_0_192_207:16;
    703 #endif  /* LE_HOST */
    704 
    705     uint32  ENTRY_1_16_47;
    706     uint32  ENTRY_1_48_79;
    707     uint32  ENTRY_1_80_111;
    708     uint32  ENTRY_1_112_143;
    709     uint32  ENTRY_1_144_175;
    710     uint32  ENTRY_1_176_207;
    711 
    712     uint32  RESERVED_0_31;
    713     uint32  RESERVED_32_63;
    714 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_FULL_t;
    715 
    716 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_FULL_t;
    717 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_FULL_t;
    718 
    719 typedef struct {
    720     uint32  ENTRY_0_0_31;
    721     uint32  ENTRY_0_32_63;
    722     uint32  ENTRY_0_64_95;
    723     uint32  ENTRY_0_96_127;
    724     uint32  ENTRY_0_128_159;
    725     uint32  ENTRY_0_160_191;
    726     uint32  ENTRY_0_192_223;
    727 
    728 #ifdef  LE_HOST
    729     uint32  ENTRY_0_224_231:8,
    730             ENTRY_1_0_23:24;
    731 #else
    732     uint32  ENTRY_1_0_23:24,
    733             ENTRY_0_224_231:8;
    734 #endif  /* LE_HOST */
    735 
    736     uint32  ENTRY_1_24_55;
    737     uint32  ENTRY_1_56_87;
    738     uint32  ENTRY_1_88_119;
    739     uint32  ENTRY_1_120_151;
    740     uint32  ENTRY_1_152_183;
    741     uint32  ENTRY_1_184_215;
    742 
    743 #ifdef  LE_HOST
    744     uint32  ENTRY_1_216_231:16,
    745             RESERVED:16;
    746 #else
    747     uint32  RESERVED:24,
    748             ENTRY_1_216_231:8;
    749 #endif  /* LE_HOST */
    750 } th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_FULL_t;
    751 
    752 /* ROUTE FULL fmt */
    753 typedef struct {
    754     uint32  ENTRY_0;
    755     uint32  ENTRY_1;
    756     uint32  ENTRY_2;
    757     uint32  ENTRY_3;
    758     uint32  ENTRY_4;
    759     uint32  ENTRY_5;
    760     uint32  ENTRY_6;
    761     uint32  ENTRY_7;
    762     uint32  ENTRY_8;
    763     uint32  ENTRY_9;
    764     uint32  ENTRY_10;
    765     uint32  ENTRY_11;
    766     uint32  ENTRY_12;
    767     uint32  ENTRY_13;
    768     uint32  ENTRY_14;
    769 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_FULL_t;
    770 
    771 typedef struct {
    772     uint32  ENTRY_0_0_31;
    773 #ifdef  LE_HOST
    774     uint32  ENTRY_0_32_39:8,
    775             ENTRY_1_0_23:24;
    776 #else
    777     uint32  ENTRY_1_0_23:24,
    778             ENTRY_0_32_39:8;
    779 #endif  /* LE_HOST */
    780 
    781 #ifdef  LE_HOST
    782     uint32  ENTRY_1_24_39:16,
    783             ENTRY_2_0_15:16;
    784 #else
    785     uint32  ENTRY_2_0_15:16,
    786             ENTRY_1_24_39:16;
    787 #endif  /* LE_HOST */
    788 
    789 #ifdef  LE_HOST
    790     uint32  ENTRY_2_16_39:24,
    791             ENTRY_3_0_7:8;
    792 #else
    793     uint32  ENTRY_3_0_7:8,
    794             ENTRY_2_16_39:24;
    795 #endif  /* LE_HOST */
    796 
    797     uint32  ENTRY_3_8_39;
    798 
    799     uint32  ENTRY_4_0_31;
    800 #ifdef  LE_HOST
    801     uint32  ENTRY_4_32_39:8,
    802             ENTRY_5_0_23:24;
    803 #else
    804     uint32  ENTRY_5_0_23:24,
    805             ENTRY_4_32_39:8;
    806 #endif  /* LE_HOST */
    807 
    808 #ifdef  LE_HOST
    809     uint32  ENTRY_5_24_39:16,
    810             ENTRY_6_0_15:16;
    811 #else
    812     uint32  ENTRY_6_0_15:16,
    813             ENTRY_5_24_39:16;
    814 #endif  /* LE_HOST */
    815 
    816 #ifdef  LE_HOST
    817     uint32  ENTRY_6_16_39:24,
    818             ENTRY_7_0_7:8;
    819 #else
    820     uint32  ENTRY_7_0_7:8,
    821             ENTRY_6_16_39:24;
    822 #endif  /* LE_HOST */
    823 
    824     uint32  ENTRY_7_8_39;
    825 
    826     uint32  ENTRY_8_0_31;
    827 #ifdef  LE_HOST
    828     uint32  ENTRY_8_32_39:8,
    829             ENTRY_9_0_23:24;
    830 #else
    831     uint32  ENTRY_9_0_23:24,
    832             ENTRY_8_32_39:8;
    833 #endif  /* LE_HOST */
    834 
    835 #ifdef  LE_HOST
    836     uint32  ENTRY_9_24_39:16,
    837             ENTRY_10_0_15:16;
    838 #else
    839     uint32  ENTRY_10_0_15:16,
    840             ENTRY_9_24_39:16;
    841 #endif  /* LE_HOST */
    842 
    843 #ifdef  LE_HOST
    844     uint32  ENTRY_10_16_39:24,
    845             ENTRY_11_0_7:8;
    846 #else
    847     uint32  ENTRY_11_0_7:8,
    848             ENTRY_10_16_39:24;
    849 #endif  /* LE_HOST */
    850     uint32  ENTRY_11_8_39;
    851 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_FULL_t;
    852 
    853 typedef struct {
    854     uint32  ENTRY_0_0_31;
    855 #ifdef  LE_HOST
    856     uint32  ENTRY_0_32_47:16,
    857             ENTRY_1_0_15:16;
    858 #else
    859     uint32  ENTRY_1_0_15:16,
    860             ENTRY_0_32_47:16;
    861 #endif  /* LE_HOST */
    862     uint32  ENTRY_1_16_47;
    863 
    864     uint32  ENTRY_2_0_31;
    865 #ifdef  LE_HOST
    866     uint32  ENTRY_2_32_47:16,
    867             ENTRY_3_0_15:16;
    868 #else
    869     uint32  ENTRY_3_0_15:16,
    870             ENTRY_2_32_47:16;
    871 #endif  /* LE_HOST */
    872     uint32  ENTRY_3_16_47;
    873 
    874     uint32  ENTRY_4_0_31;
    875 #ifdef  LE_HOST
    876     uint32  ENTRY_4_32_47:16,
    877             ENTRY_5_0_15:16;
    878 #else
    879     uint32  ENTRY_5_0_15:16,
    880             ENTRY_4_32_47:16;
    881 #endif  /* LE_HOST */
    882     uint32  ENTRY_5_16_47;
    883 
    884     uint32  ENTRY_6_0_31;
    885 #ifdef  LE_HOST
    886     uint32  ENTRY_6_32_47:16,
    887             ENTRY_7_0_15:16;
    888 #else
    889     uint32  ENTRY_7_0_15:16,
    890             ENTRY_6_32_47:16;
    891 #endif  /* LE_HOST */
    892     uint32  ENTRY_7_16_47;
    893 
    894     uint32  ENTRY_8_0_31;
    895 #ifdef  LE_HOST
    896     uint32  ENTRY_8_32_47:16,
    897             ENTRY_9_0_15:16;
    898 #else
    899     uint32  ENTRY_9_0_15:16,
    900             ENTRY_8_32_47:16;
    901 #endif  /* LE_HOST */
    902     uint32  ENTRY_9_16_47;
    903 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_FULL_t;
    904 
    905 typedef struct {
    906     uint32  ENTRY_0_0_31;
    907 #ifdef  LE_HOST
    908     uint32  ENTRY_0_32_55:24,
    909             ENTRY_1_0_7:8;
    910 #else
    911     uint32  ENTRY_1_0_7:8,
    912             ENTRY_0_32_55:24;
    913 #endif  /* LE_HOST */
    914     uint32  ENTRY_1_8_39;
    915 #ifdef  LE_HOST
    916     uint32  ENTRY_1_40_55:16,
    917             ENTRY_2_0_15:16;
    918 #else
    919     uint32  ENTRY_2_0_15:16,
    920             ENTRY_1_40_55:16;
    921 #endif  /* LE_HOST */
    922     uint32  ENTRY_2_16_47;
    923 #ifdef  LE_HOST
    924     uint32  ENTRY_2_48_55:8,
    925             ENTRY_3_0_23:24;
    926 #else
    927     uint32  ENTRY_3_0_23:24,
    928             ENTRY_2_48_55:8;
    929 #endif  /* LE_HOST */
    930     uint32  ENTRY_3_24_55;
    931 
    932     uint32  ENTRY_4_0_31;
    933 #ifdef  LE_HOST
    934     uint32  ENTRY_4_32_55:24,
    935             ENTRY_5_0_7:8;
    936 #else
    937     uint32  ENTRY_5_0_7:8,
    938             ENTRY_4_32_55:24;
    939 #endif  /* LE_HOST */
    940     uint32  ENTRY_5_8_39;
    941 #ifdef  LE_HOST
    942     uint32  ENTRY_5_40_55:16,
    943             ENTRY_6_0_15:16;
    944 #else
    945     uint32  ENTRY_6_0_15:16,
    946             ENTRY_5_40_55:16;
    947 #endif  /* LE_HOST */
    948     uint32  ENTRY_6_16_47;
    949 #ifdef  LE_HOST
    950     uint32  ENTRY_6_48_55:8,
    951             ENTRY_7_0_23:24;
    952 #else
    953     uint32  ENTRY_7_0_23:24,
    954             ENTRY_6_48_55:8;
    955 #endif  /* LE_HOST */
    956     uint32  ENTRY_7_24_55;
    957 
    958     uint32  RESERVED;
    959 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_FULL_t;
    960 
    961 typedef struct {
    962     uint32  ENTRY_0_0_31;
    963     uint32  ENTRY_0_32_63;
    964 
    965     uint32  ENTRY_1_0_31;
    966     uint32  ENTRY_1_32_63;
    967 
    968     uint32  ENTRY_2_0_31;
    969     uint32  ENTRY_2_32_63;
    970 
    971     uint32  ENTRY_3_0_31;
    972     uint32  ENTRY_3_32_63;
    973 
    974     uint32  ENTRY_4_0_31;
    975     uint32  ENTRY_4_32_63;
    976 
    977     uint32  ENTRY_5_0_31;
    978     uint32  ENTRY_5_32_63;
    979 
    980     uint32  ENTRY_6_0_31;
    981     uint32  ENTRY_6_32_63;
    982 
    983     uint32  RESERVED;
    984 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_FULL_t;
    985 
    986 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_FULL_t;
    987 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_FULL_t;
    988 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_FULL_t;
    989 
    990 typedef struct {
    991     uint32  ENTRY_0_0_31;
    992     uint32  ENTRY_0_32_63;
    993     uint32  ENTRY_0_64_95;
    994     uint32  ENTRY_0_96_127;
    995 
    996 #ifdef  LE_HOST
    997     uint32  ENTRY_0_128_151:24,
    998             ENTRY_1_0_7:8;
    999 #else
   1000     uint32  ENTRY_1_0_7:8,
   1001             ENTRY_0_128_151:24;
   1002 #endif  /* LE_HOST */
   1003 
   1004     uint32  ENTRY_1_8_39;
   1005     uint32  ENTRY_1_40_71;
   1006     uint32  ENTRY_1_72_103;
   1007     uint32  ENTRY_1_104_135;
   1008 
   1009 #ifdef  LE_HOST
   1010     uint32  ENTRY_1_136_151:16,
   1011             ENTRY_2_0_15:16;
   1012 #else
   1013     uint32  ENTRY_2_0_15:16,
   1014             ENTRY_1_136_151:16;
   1015 #endif  /* LE_HOST */
   1016 
   1017     uint32  ENTRY_2_16_47;
   1018     uint32  ENTRY_2_48_79;
   1019     uint32  ENTRY_2_80_111;
   1020     uint32  ENTRY_2_112_143;
   1021 
   1022 #ifdef  LE_HOST
   1023     uint32  ENTRY_2_144_151:8,
   1024             RESERVED:24;
   1025 #else
   1026     uint32  RESERVED:24,
   1027             ENTRY_2_144_151:8;
   1028 #endif  /* LE_HOST */
   1029 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_FULL_t;
   1030 
   1031 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_FULL_t;
   1032 typedef th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_FULL_t;
   1033 
   1034 typedef struct {
   1035     uint32  ENTRY_0_0_31;
   1036     uint32  ENTRY_0_32_63;
   1037     uint32  ENTRY_0_64_95;
   1038     uint32  ENTRY_0_96_127;
   1039     uint32  ENTRY_0_128_159;
   1040 
   1041 #ifdef  LE_HOST
   1042     uint32  ENTRY_0_160_175:16,
   1043             ENTRY_1_0_15:16;
   1044 #else
   1045     uint32  ENTRY_1_0_15:16,
   1046             ENTRY_0_160_175:16;
   1047 #endif  /* LE_HOST */
   1048 
   1049     uint32  ENTRY_1_16_47;
   1050     uint32  ENTRY_1_48_79;
   1051     uint32  ENTRY_1_80_111;
   1052     uint32  ENTRY_1_112_143;
   1053     uint32  ENTRY_1_144_175;
   1054 
   1055     uint32  RESERVED_0_31;
   1056     uint32  RESERVED_32_63;
   1057     uint32  RESERVED_64_95;
   1058     uint32  RESERVED_96_127;
   1059 } th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_FULL_t;
   1060 
   1061 static void
   1062 th3_format_field_get(int unit, soc_format_t format, const uint32 *entbuf,
   1063                      soc_field_t field, uint32 *fldbuf)
   1064 {
   1065     switch (format) {
   1066     /* PIVOT format */
   1067     case L3_DEFIP_ALPM_PIVOT_FMT1fmt: {
   1068             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_t *fmt1 = (void *)entbuf;
   1069             if (field == PREFIXf) {
   1070                 fldbuf[0] = fmt1->PREFIX;
   1071             } else if (field == ASSOC_DATAf) {
   1072                 fldbuf[0] = fmt1->ASSOC_DATA;
   1073             } else if (field == ALPM2_DATAf) {
   1074                 fldbuf[0] = ((fmt1->ALPM2_DATA_8_39 & 0xffffff) << 8 ) | fmt1->ALPM2_DATA_0_7;
   1075                 fldbuf[1] = (fmt1->ALPM2_DATA_40_55 << 8) | ((fmt1->ALPM2_DATA_8_39 >> 24) & 0xff);
   1076             }
   1077         }
   1078         break;
   1079     case L3_DEFIP_ALPM_PIVOT_FMT2fmt: {
   1080             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_t *fmt2 = (void *)entbuf;
   1081             if (field == PREFIXf) {
   1082                 fldbuf[0] = fmt2->PREFIX;
   1083             } else if (field == ASSOC_DATAf) {
   1084                 fldbuf[0] = (fmt2->ASSOC_DATA_8_15 << 8) | fmt2->ASSOC_DATA_0_7;
   1085             } else if (field == ALPM2_DATAf) {
   1086                 fldbuf[0] = ((fmt2->ALPM2_DATA_24_55 & 0xff) << 24) | fmt2->ALPM2_DATA_0_23;
   1087                 fldbuf[1] = (fmt2->ALPM2_DATA_24_55 >> 8) & 0xffffff;
   1088             }
   1089         }
   1090         break;
   1091     case L3_DEFIP_ALPM_PIVOT_FMT3fmt: {
   1092             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_t *fmt3 = (void *)entbuf;
   1093             if (field == PREFIXf) {
   1094                 fldbuf[0] = fmt3->PREFIX_0_31;
   1095                 fldbuf[1] = fmt3->PREFIX_32_47;
   1096             } else if (field == ASSOC_DATAf) {
   1097                 fldbuf[0] = fmt3->ASSOC_DATA;
   1098             } else if (field == ALPM2_DATAf) {
   1099                 fldbuf[0] = fmt3->ALPM2_DATA_0_31;
   1100                 fldbuf[1] = fmt3->ALPM2_DATA_32_55;
   1101             }
   1102         }
   1103         break;
   1104     case L3_DEFIP_ALPM_PIVOT_FMT4fmt: {
   1105             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_t *fmt4 = (void *)entbuf;
   1106             if (field == PREFIXf) {
   1107                 fldbuf[0] = fmt4->PREFIX_0_31;
   1108                 fldbuf[1] = fmt4->PREFIX_32_63;
   1109                 fldbuf[2] = fmt4->PREFIX_64_87;
   1110             } else if (field == ASSOC_DATAf) {
   1111                 fldbuf[0] = (fmt4->ASSOC_DATA_8_15 << 8) | fmt4->ASSOC_DATA_0_7;
   1112             } else if (field == ALPM2_DATAf) {
   1113                 fldbuf[0] = ((fmt4->ALPM2_DATA_24_55 & 0xff) << 24) | fmt4->ALPM2_DATA_0_23;
   1114                 fldbuf[1] = (fmt4->ALPM2_DATA_24_55 >> 8) & 0xffffff;
   1115             }
   1116         }
   1117         break;
   1118     case L3_DEFIP_ALPM_PIVOT_FMT5fmt: {
   1119             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_t *fmt5 = (void *)entbuf;
   1120             if (field == PREFIXf) {
   1121                 fldbuf[0] = fmt5->PREFIX_0_31;
   1122                 fldbuf[1] = fmt5->PREFIX_32_63;
   1123                 fldbuf[2] = fmt5->PREFIX_64_95;
   1124                 fldbuf[3] = fmt5->PREFIX_96_127;
   1125                 fldbuf[4] = fmt5->PREFIX_128;
   1126             } else if (field == ASSOC_DATAf) {
   1127                 fldbuf[0] = fmt5->ASSOC_DATA;
   1128             } else if (field == ALPM2_DATAf) {
   1129                 fldbuf[0] = ((fmt5->ALPM2_DATA_8_39 & 0xffffff) << 8) | fmt5->ALPM2_DATA_0_7;
   1130                 fldbuf[1] = ((fmt5->ALPM2_DATA_40_55 & 0xffff) << 8) | ((fmt5->ALPM2_DATA_8_39 >> 24) & 0xff);
   1131             }
   1132         }
   1133         break;
   1134     case L3_DEFIP_ALPM_PIVOT_FMT6fmt: {
   1135             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_t *fmt6 = (void *)entbuf;
   1136             if (field == PREFIXf) {
   1137                 fldbuf[0] = fmt6->PREFIX;
   1138             } else if (field == ASSOC_DATAf) {
   1139                 fldbuf[0] = ((fmt6->ASSOC_DATA_14_45 & 0x3ffff) << 14) | fmt6->ASSOC_DATA_0_13;
   1140                 fldbuf[1] = (fmt6->ASSOC_DATA_14_45 >> 18) & 0x3fff;
   1141             } else if (field == ALPM2_DATAf) {
   1142                 fldbuf[0] = fmt6->ALPM2_DATA_0_31;
   1143                 fldbuf[1] = fmt6->ALPM2_DATA_32_55;
   1144             }
   1145         }
   1146         break;
   1147     case L3_DEFIP_ALPM_PIVOT_FMT7fmt: {
   1148             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_t *fmt7 = (void *)entbuf;
   1149             if (field == PREFIXf) {
   1150                 fldbuf[0] = fmt7->PREFIX_0_31;
   1151                 fldbuf[1] = fmt7->PREFIX_32_57;
   1152             } else if (field == ASSOC_DATAf) {
   1153                 fldbuf[0] = ((fmt7->ASSOC_DATA_6_37 & 0x3ffffff) << 6) | fmt7->ASSOC_DATA_0_5;
   1154                 fldbuf[1] = (fmt7->ASSOC_DATA_6_37 >> 26) & 0x3f;
   1155             } else if (field == ALPM2_DATAf) {
   1156                 fldbuf[0] = ((fmt7->ALPM2_DATA_24_55 & 0xff) << 24) | fmt7->ALPM2_DATA_0_23;
   1157                 fldbuf[1] = (fmt7->ALPM2_DATA_24_55 >> 8) & 0xffffff;
   1158             }
   1159         }
   1160         break;
   1161     case L3_DEFIP_ALPM_PIVOT_FMT8fmt: {
   1162             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_t *fmt8 = (void *)entbuf;
   1163             if (field == PREFIXf) {
   1164                 fldbuf[0] = fmt8->PREFIX_0_31;
   1165                 fldbuf[1] = fmt8->PREFIX_32_63;
   1166                 fldbuf[2] = fmt8->PREFIX_64_95;
   1167                 fldbuf[3] = fmt8->PREFIX_96_127;
   1168                 fldbuf[4] = fmt8->PREFIX_128;
   1169             } else if (field == ASSOC_DATAf) {
   1170                 fldbuf[0] = ((fmt8->ASSOC_DATA_30_45 & 0x3) << 30) | fmt8->ASSOC_DATA_0_29;
   1171                 fldbuf[1] = (fmt8->ASSOC_DATA_30_45 >> 2) & 0x3fff;
   1172             } else if (field == ALPM2_DATAf) {
   1173                 fldbuf[0] = ((fmt8->ALPM2_DATA_16_47 & 0xffff) << 16) | fmt8->ALPM2_DATA_0_15;
   1174                 fldbuf[1] = ((fmt8->ALPM2_DATA_48_55 & 0xff) << 16) | ((fmt8->ALPM2_DATA_16_47 >> 16) & 0xffff);
   1175             }
   1176         }
   1177         break;
   1178 
   1179     /* ROUTE format */
   1180     case L3_DEFIP_ALPM_ROUTE_FMT1fmt: {
   1181             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_t *fmt1 = (void *)entbuf;
   1182             if (field == PREFIXf) {
   1183                 fldbuf[0] = fmt1->PREFIX;
   1184             } else if (field == ASSOC_DATAf) {
   1185                 fldbuf[0] = fmt1->ASSOC_DATA;
   1186             }
   1187         }
   1188         break;
   1189     case L3_DEFIP_ALPM_ROUTE_FMT2fmt: {
   1190             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_t *fmt2 = (void *)entbuf;
   1191             if (field == PREFIXf) {
   1192                 fldbuf[0] = fmt2->PREFIX;
   1193             } else if (field == ASSOC_DATAf) {
   1194                 fldbuf[0] = ((fmt2->ASSOC_DATA_8_15 & 0xff) << 8) | fmt2->ASSOC_DATA_0_7;
   1195             }
   1196         }
   1197         break;
   1198     case L3_DEFIP_ALPM_ROUTE_FMT3fmt: {
   1199             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_t *fmt3 = (void *)entbuf;
   1200             if (field == PREFIXf) {
   1201                 fldbuf[0] = fmt3->PREFIX;
   1202             } else if (field == ASSOC_DATAf) {
   1203                 fldbuf[0] = fmt3->ASSOC_DATA;
   1204             }
   1205         }
   1206         break;
   1207     case L3_DEFIP_ALPM_ROUTE_FMT4fmt: {
   1208             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_t *fmt4 = (void *)entbuf;
   1209             if (field == PREFIXf) {
   1210                 fmt4->PREFIX_0_31 = fldbuf[0];
   1211                 fmt4->PREFIX_32_39 = fldbuf[1] & 0xff;
   1212             } else if (field == ASSOC_DATAf) {
   1213                 fmt4->ASSOC_DATA = fldbuf[0];
   1214             }
   1215         }
   1216         break;
   1217     case L3_DEFIP_ALPM_ROUTE_FMT5fmt: {
   1218             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_t *fmt5 = (void *)entbuf;
   1219             if (field == PREFIXf) {
   1220                 fldbuf[0] = fmt5->PREFIX_0_31;
   1221                 fldbuf[1] = fmt5->PREFIX_32_47;
   1222             } else if (field == ASSOC_DATAf) {
   1223                 fldbuf[0] = fmt5->ASSOC_DATA;
   1224             }
   1225         }
   1226         break;
   1227     case L3_DEFIP_ALPM_ROUTE_FMT6fmt: {
   1228             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_t *fmt6 = (void *)entbuf;
   1229             if (field == PREFIXf) {
   1230                 fldbuf[0] = fmt6->PREFIX_0_31;
   1231                 fldbuf[1] = fmt6->PREFIX_32_63;
   1232             } else if (field == ASSOC_DATAf) {
   1233                 fldbuf[0] = fmt6->ASSOC_DATA;
   1234             }
   1235         }
   1236         break;
   1237     case L3_DEFIP_ALPM_ROUTE_FMT7fmt: {
   1238             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_t *fmt7 = (void *)entbuf;
   1239             if (field == PREFIXf) {
   1240                 fldbuf[0] = fmt7->PREFIX_0_31;
   1241                 fldbuf[1] = fmt7->PREFIX_32_63;
   1242                 fldbuf[2] = fmt7->PREFIX_64_79;
   1243             } else if (field == ASSOC_DATAf) {
   1244                 fldbuf[0] = fmt7->ASSOC_DATA;
   1245             }
   1246         }
   1247         break;
   1248     case L3_DEFIP_ALPM_ROUTE_FMT8fmt: {
   1249             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_t *fmt8 = (void *)entbuf;
   1250             if (field == PREFIXf) {
   1251                 fldbuf[0] = fmt8->PREFIX_0_31;
   1252                 fldbuf[1] = fmt8->PREFIX_32_63;
   1253                 fldbuf[2] = fmt8->PREFIX_64_95;
   1254                 fldbuf[3] = fmt8->PREFIX_96_103;
   1255             } else if (field == ASSOC_DATAf) {
   1256                 fldbuf[0] = fmt8->ASSOC_DATA;
   1257             }
   1258         }
   1259         break;
   1260     case L3_DEFIP_ALPM_ROUTE_FMT9fmt: {
   1261             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_t *fmt9 = (void *)entbuf;
   1262             if (field == PREFIXf) {
   1263                 fldbuf[0] = fmt9->PREFIX_0_31;
   1264                 fldbuf[1] = fmt9->PREFIX_32_63;
   1265                 fldbuf[2] = fmt9->PREFIX_64_95;
   1266                 fldbuf[3] = fmt9->PREFIX_96_127;
   1267                 fldbuf[4] = fmt9->PREFIX_128;
   1268             } else if (field == ASSOC_DATAf) {
   1269                 fldbuf[0] = fmt9->ASSOC_DATA;
   1270             }
   1271         }
   1272         break;
   1273     case L3_DEFIP_ALPM_ROUTE_FMT10fmt: {
   1274             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_t *fmt10 = (void *)entbuf;
   1275             if (field == PREFIXf) {
   1276                 fldbuf[0] = fmt10->PREFIX_0_31;
   1277                 fldbuf[1] = fmt10->PREFIX_32_33;
   1278             } else if (field == ASSOC_DATAf) {
   1279                 fldbuf[0] = ((fmt10->ASSOC_DATA_30_45 & 0x3) << 30) | fmt10->ASSOC_DATA_0_29;
   1280                 fldbuf[1] = (fmt10->ASSOC_DATA_30_45 >> 2) & 0x3fff;
   1281             }
   1282         }
   1283         break;
   1284     case L3_DEFIP_ALPM_ROUTE_FMT11fmt: {
   1285             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_t *fmt11 = (void *)entbuf;
   1286             if (field == PREFIXf) {
   1287                 fldbuf[0] = fmt11->PREFIX_0_31;
   1288                 fldbuf[1] = fmt11->PREFIX_32_63;
   1289                 fldbuf[2] = fmt11->PREFIX_64_73;
   1290             } else if (field == ASSOC_DATAf) {
   1291                 fldbuf[0] = ((fmt11->ASSOC_DATA_22_45 & 0x3ff) << 22) | fmt11->ASSOC_DATA_0_21;
   1292                 fldbuf[1] = (fmt11->ASSOC_DATA_22_45 >> 10) & 0x3fff;
   1293             }
   1294         }
   1295         break;
   1296     case L3_DEFIP_ALPM_ROUTE_FMT12fmt: {
   1297             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_t *fmt12 = (void *)entbuf;
   1298             if (field == PREFIXf) {
   1299                 fldbuf[0] = fmt12->PREFIX_0_31;
   1300                 fldbuf[1] = fmt12->PREFIX_32_63;
   1301                 fldbuf[2] = fmt12->PREFIX_64_95;
   1302                 fldbuf[3] = fmt12->PREFIX_96_127;
   1303                 fldbuf[4] = fmt12->PREFIX_128;
   1304             } else if (field == ASSOC_DATAf) {
   1305                 fldbuf[0] = ((fmt12->ASSOC_DATA_30_45 & 0x3) << 30) | fmt12->ASSOC_DATA_0_29;
   1306                 fldbuf[1] = (fmt12->ASSOC_DATA_30_45 >> 2) & 0x3fff;
   1307             }
   1308         }
   1309         break;
   1310 
   1311     /* PIVOT FULL format */
   1312     case L3_DEFIP_ALPM_PIVOT_FMT1_FULLfmt:
   1313     case L3_DEFIP_ALPM_ROUTE_FMT6_FULLfmt:
   1314     case L3_DEFIP_ALPM_ROUTE_FMT10_FULLfmt: {
   1315             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t *fmt1pf = (void *)entbuf;
   1316             if (field == ENTRY_0f) {
   1317                 fldbuf[0] = fmt1pf->ENTRY_0_0_31;
   1318                 fldbuf[1] = fmt1pf->ENTRY_0_32_63;
   1319                 fldbuf[2] = fmt1pf->ENTRY_0_64_79;
   1320             } else if (field == ENTRY_1f) {
   1321                 fldbuf[0] = ((fmt1pf->ENTRY_1_16_47 & 0xffff) << 16) | fmt1pf->ENTRY_1_0_15;
   1322                 fldbuf[1] = ((fmt1pf->ENTRY_1_48_79 & 0xffff) << 16) | ((fmt1pf->ENTRY_1_16_47 >> 16) & 0xffff);
   1323                 fldbuf[2] = (fmt1pf->ENTRY_1_48_79 >> 16) & 0xffff;
   1324             } else if (field == ENTRY_2f) {
   1325                 fldbuf[0] = fmt1pf->ENTRY_2_0_31;
   1326                 fldbuf[1] = fmt1pf->ENTRY_2_32_63;
   1327                 fldbuf[2] = fmt1pf->ENTRY_2_64_79;
   1328             } else if (field == ENTRY_3f) {
   1329                 fldbuf[0] = ((fmt1pf->ENTRY_3_16_47 & 0xffff) << 16) | fmt1pf->ENTRY_3_0_15;
   1330                 fldbuf[1] = ((fmt1pf->ENTRY_3_48_79 & 0xffff) << 16) | ((fmt1pf->ENTRY_3_16_47 >> 16) & 0xffff);
   1331                 fldbuf[2] = (fmt1pf->ENTRY_3_48_79 >> 16) & 0xffff;
   1332             } else if (field == ENTRY_4f) {
   1333                 fldbuf[0] = fmt1pf->ENTRY_4_0_31;
   1334                 fldbuf[1] = fmt1pf->ENTRY_4_32_63;
   1335                 fldbuf[2] = fmt1pf->ENTRY_4_64_79;
   1336             } else if (field == ENTRY_5f) {
   1337                 fldbuf[0] = ((fmt1pf->ENTRY_5_16_47 & 0xffff) << 16) | fmt1pf->ENTRY_5_0_15;
   1338                 fldbuf[1] = ((fmt1pf->ENTRY_5_48_79 & 0xffff) << 16) | ((fmt1pf->ENTRY_5_16_47 >> 16) & 0xffff);
   1339                 fldbuf[2] = (fmt1pf->ENTRY_5_48_79 >> 16) & 0xffff;
   1340             }
   1341         }
   1342         break;
   1343 
   1344     case L3_DEFIP_ALPM_PIVOT_FMT2_FULLfmt:
   1345     case L3_DEFIP_ALPM_ROUTE_FMT7_FULLfmt: {
   1346             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t *fmt2pf = (void *)entbuf;
   1347             if (field == ENTRY_0f) {
   1348                 fldbuf[0] = fmt2pf->ENTRY_0_0_31;
   1349                 fldbuf[1] = fmt2pf->ENTRY_0_32_63;
   1350                 fldbuf[2] = fmt2pf->ENTRY_0_64_95;
   1351             } else if (field == ENTRY_1f) {
   1352                 fldbuf[0] = fmt2pf->ENTRY_1_0_31;
   1353                 fldbuf[1] = fmt2pf->ENTRY_1_32_63;
   1354                 fldbuf[2] = fmt2pf->ENTRY_1_64_95;
   1355             } else if (field == ENTRY_2f) {
   1356                 fldbuf[0] = fmt2pf->ENTRY_2_0_31;
   1357                 fldbuf[1] = fmt2pf->ENTRY_2_32_63;
   1358                 fldbuf[2] = fmt2pf->ENTRY_2_64_95;
   1359             } else if (field == ENTRY_3f) {
   1360                 fldbuf[0] = fmt2pf->ENTRY_3_0_31;
   1361                 fldbuf[1] = fmt2pf->ENTRY_3_32_63;
   1362                 fldbuf[2] = fmt2pf->ENTRY_3_64_95;
   1363             } else if (field == ENTRY_4f) {
   1364                 fldbuf[0] = fmt2pf->ENTRY_4_0_31;
   1365                 fldbuf[1] = fmt2pf->ENTRY_4_32_63;
   1366                 fldbuf[2] = fmt2pf->ENTRY_4_64_95;
   1367             }
   1368         }
   1369         break;
   1370 
   1371     case L3_DEFIP_ALPM_PIVOT_FMT3_FULLfmt:
   1372     case L3_DEFIP_ALPM_PIVOT_FMT6_FULLfmt:
   1373     case L3_DEFIP_ALPM_ROUTE_FMT8_FULLfmt:
   1374     case L3_DEFIP_ALPM_ROUTE_FMT11_FULLfmt: {
   1375             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t *fmt3pf = (void *)entbuf;
   1376             if (field == ENTRY_0f) {
   1377                 fldbuf[0] = fmt3pf->ENTRY_0_0_31;
   1378                 fldbuf[1] = fmt3pf->ENTRY_0_32_63;
   1379                 fldbuf[2] = fmt3pf->ENTRY_0_64_95;
   1380                 fldbuf[3] = fmt3pf->ENTRY_0_96_119;
   1381             } else if (field == ENTRY_1f) {
   1382                 fldbuf[0] = ((fmt3pf->ENTRY_1_8_39 & 0xffffff) << 8) | fmt3pf->ENTRY_1_0_7;
   1383                 fldbuf[1] = ((fmt3pf->ENTRY_1_40_71 & 0xffffff) << 8) | ((fmt3pf->ENTRY_1_8_39 >> 24) & 0xff);
   1384                 fldbuf[2] = ((fmt3pf->ENTRY_1_72_103 & 0xffffff) << 8) | ((fmt3pf->ENTRY_1_40_71 >> 24) & 0xff);
   1385                 fldbuf[3] = (fmt3pf->ENTRY_1_104_119 << 8) | ((fmt3pf->ENTRY_1_72_103 >> 24) & 0xff);
   1386             } else if (field == ENTRY_2f) {
   1387                 fldbuf[0] = ((fmt3pf->ENTRY_2_16_47 & 0xffff) << 16) | fmt3pf->ENTRY_2_0_15;
   1388                 fldbuf[1] = ((fmt3pf->ENTRY_2_48_79 & 0xffff) << 16) | ((fmt3pf->ENTRY_2_16_47 >> 16) & 0xffff);
   1389                 fldbuf[2] = ((fmt3pf->ENTRY_2_80_111 & 0xffff) << 16) | ((fmt3pf->ENTRY_2_48_79 >> 16) & 0xffff);
   1390                 fldbuf[3] = (fmt3pf->ENTRY_2_112_119 << 16) | ((fmt3pf->ENTRY_2_80_111 >> 16) & 0xffff);
   1391             } else if (field == ENTRY_3f) {
   1392                 fldbuf[0] = ((fmt3pf->ENTRY_3_24_55 & 0xff) << 24) | fmt3pf->ENTRY_3_0_23;
   1393                 fldbuf[1] = ((fmt3pf->ENTRY_3_56_87 & 0xff) << 24) | ((fmt3pf->ENTRY_3_24_55 >> 8) & 0xffffff);
   1394                 fldbuf[2] = ((fmt3pf->ENTRY_3_88_119 & 0xff) << 24) | ((fmt3pf->ENTRY_3_56_87 >> 8) & 0xffffff);
   1395                 fldbuf[3] = (fmt3pf->ENTRY_3_88_119 >> 8) & 0xffffff;
   1396             }
   1397         }
   1398         break;
   1399 
   1400     case L3_DEFIP_ALPM_PIVOT_FMT4_FULLfmt:
   1401     case L3_DEFIP_ALPM_PIVOT_FMT7_FULLfmt: {
   1402             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t *fmt4pf = (void *)entbuf;
   1403             if (field == ENTRY_0f) {
   1404                 fldbuf[0] = fmt4pf->ENTRY_0_0_31;
   1405                 fldbuf[1] = fmt4pf->ENTRY_0_32_63;
   1406                 fldbuf[2] = fmt4pf->ENTRY_0_64_95;
   1407                 fldbuf[3] = fmt4pf->ENTRY_0_96_127;
   1408                 fldbuf[4] = fmt4pf->ENTRY_0_128_159;
   1409             } else if (field == ENTRY_1f) {
   1410                 fldbuf[0] = fmt4pf->ENTRY_1_0_31;
   1411                 fldbuf[1] = fmt4pf->ENTRY_1_32_63;
   1412                 fldbuf[2] = fmt4pf->ENTRY_1_64_95;
   1413                 fldbuf[3] = fmt4pf->ENTRY_1_96_127;
   1414                 fldbuf[4] = fmt4pf->ENTRY_1_128_159;
   1415             } else if (field == ENTRY_2f) {
   1416                 fldbuf[0] = fmt4pf->ENTRY_2_0_31;
   1417                 fldbuf[1] = fmt4pf->ENTRY_2_32_63;
   1418                 fldbuf[2] = fmt4pf->ENTRY_2_64_95;
   1419                 fldbuf[3] = fmt4pf->ENTRY_2_96_127;
   1420                 fldbuf[4] = fmt4pf->ENTRY_2_128_159;
   1421             }
   1422         }
   1423         break;
   1424 
   1425     case L3_DEFIP_ALPM_PIVOT_FMT5_FULLfmt: {
   1426             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_FULL_t *fmt5pf = (void *)entbuf;
   1427             if (field == ENTRY_0f) {
   1428                 fldbuf[0] = fmt5pf->ENTRY_0_0_31;
   1429                 fldbuf[1] = fmt5pf->ENTRY_0_32_63;
   1430                 fldbuf[2] = fmt5pf->ENTRY_0_64_95;
   1431                 fldbuf[3] = fmt5pf->ENTRY_0_96_127;
   1432                 fldbuf[4] = fmt5pf->ENTRY_0_128_159;
   1433                 fldbuf[5] = fmt5pf->ENTRY_0_160_191;
   1434                 fldbuf[6] = fmt5pf->ENTRY_0_192_207;
   1435             } else if (field == ENTRY_1f) {
   1436                 fldbuf[0] = ((fmt5pf->ENTRY_1_16_47 & 0xffff) >> 16) | fmt5pf->ENTRY_1_0_15;
   1437                 fldbuf[1] = ((fmt5pf->ENTRY_1_48_79 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_16_47 >> 16) & 0xffff);
   1438                 fldbuf[2] = ((fmt5pf->ENTRY_1_80_111 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_48_79 >> 16) & 0xffff);
   1439                 fldbuf[3] = ((fmt5pf->ENTRY_1_112_143 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_80_111 >> 16) & 0xffff);
   1440                 fldbuf[4] = ((fmt5pf->ENTRY_1_144_175 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_112_143 >> 16) & 0xffff);
   1441                 fldbuf[5] = ((fmt5pf->ENTRY_1_176_207 & 0xffff) >> 16) | ((fmt5pf->ENTRY_1_144_175 >> 16) & 0xffff);
   1442                 fldbuf[6] = (fmt5pf->ENTRY_1_176_207 >> 16) & 0xffff;
   1443             }
   1444         }
   1445         break;
   1446 
   1447     case L3_DEFIP_ALPM_PIVOT_FMT8_FULLfmt: {
   1448             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_FULL_t *fmt8pf = (void *)entbuf;
   1449             if (field == ENTRY_0f) {
   1450                 fldbuf[0] = fmt8pf->ENTRY_0_0_31;
   1451                 fldbuf[1] = fmt8pf->ENTRY_0_32_63;
   1452                 fldbuf[2] = fmt8pf->ENTRY_0_64_95;
   1453                 fldbuf[3] = fmt8pf->ENTRY_0_96_127;
   1454                 fldbuf[4] = fmt8pf->ENTRY_0_128_159;
   1455                 fldbuf[5] = fmt8pf->ENTRY_0_160_191;
   1456                 fldbuf[6] = fmt8pf->ENTRY_0_192_223;
   1457                 fldbuf[7] = fmt8pf->ENTRY_0_224_231;
   1458             } else if (field == ENTRY_1f) {
   1459                 fldbuf[0] = ((fmt8pf->ENTRY_1_24_55 & 0xff) << 24) | fmt8pf->ENTRY_1_0_23;
   1460                 fldbuf[1] = ((fmt8pf->ENTRY_1_56_87 & 0xff) << 24) | ((fmt8pf->ENTRY_1_24_55 >> 8) & 0xffffff);
   1461                 fldbuf[2] = ((fmt8pf->ENTRY_1_88_119 & 0xff) << 24) | ((fmt8pf->ENTRY_1_56_87 >> 8) & 0xffffff);
   1462                 fldbuf[3] = ((fmt8pf->ENTRY_1_120_151 & 0xff) << 24) | ((fmt8pf->ENTRY_1_88_119 >> 8) & 0xffffff);
   1463                 fldbuf[4] = ((fmt8pf->ENTRY_1_152_183 & 0xff) << 24) | ((fmt8pf->ENTRY_1_120_151 >> 8) & 0xffffff);
   1464                 fldbuf[5] = ((fmt8pf->ENTRY_1_184_215 & 0xff) << 24) | ((fmt8pf->ENTRY_1_152_183 >> 8) & 0xffffff);
   1465                 fldbuf[6] = ((fmt8pf->ENTRY_1_216_231 & 0xff) << 24) | ((fmt8pf->ENTRY_1_184_215 >> 8) & 0xffffff);
   1466                 fldbuf[7] = (fmt8pf->ENTRY_1_216_231 >> 8) & 0xff;
   1467             }
   1468         }
   1469         break;
   1470 
   1471     /* ROUTE FULL fmt */
   1472     case L3_DEFIP_ALPM_ROUTE_FMT1_FULLfmt: {
   1473             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_FULL_t *fmt1rf = (void *)entbuf;
   1474             if (field == ENTRY_0f) {
   1475                 fldbuf[0] = fmt1rf->ENTRY_0;
   1476             } else if (field == ENTRY_1f) {
   1477                 fldbuf[0] = fmt1rf->ENTRY_1;
   1478             } else if (field == ENTRY_2f) {
   1479                 fldbuf[0] = fmt1rf->ENTRY_2;
   1480             } else if (field == ENTRY_3f) {
   1481                 fldbuf[0] = fmt1rf->ENTRY_3;
   1482             } else if (field == ENTRY_4f) {
   1483                 fldbuf[0] = fmt1rf->ENTRY_4;
   1484             } else if (field == ENTRY_5f) {
   1485                 fldbuf[0] = fmt1rf->ENTRY_5;
   1486             } else if (field == ENTRY_6f) {
   1487                 fldbuf[0] = fmt1rf->ENTRY_6;
   1488             } else if (field == ENTRY_7f) {
   1489                 fldbuf[0] = fmt1rf->ENTRY_7;
   1490             } else if (field == ENTRY_8f) {
   1491                 fldbuf[0] = fmt1rf->ENTRY_8;
   1492             } else if (field == ENTRY_9f) {
   1493                 fldbuf[0] = fmt1rf->ENTRY_9;
   1494             } else if (field == ENTRY_10f) {
   1495                 fldbuf[0] = fmt1rf->ENTRY_10;
   1496             } else if (field == ENTRY_11f) {
   1497                 fldbuf[0] = fmt1rf->ENTRY_11;
   1498             } else if (field == ENTRY_12f) {
   1499                 fldbuf[0] = fmt1rf->ENTRY_12;
   1500             } else if (field == ENTRY_13f) {
   1501                 fldbuf[0] = fmt1rf->ENTRY_13;
   1502             } else if (field == ENTRY_14f) {
   1503                 fldbuf[0] = fmt1rf->ENTRY_14;
   1504             }
   1505         }
   1506         break;
   1507 
   1508     case L3_DEFIP_ALPM_ROUTE_FMT2_FULLfmt: {
   1509             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_FULL_t *fmt2rf = (void *)entbuf;
   1510             if (field == ENTRY_0f) {
   1511                 fldbuf[0] = fmt2rf->ENTRY_0_0_31;
   1512                 fldbuf[1] = fmt2rf->ENTRY_0_32_39;
   1513             } else if (field == ENTRY_1f) {
   1514                 fldbuf[0] = ((fmt2rf->ENTRY_1_24_39 & 0xff) << 24) | fmt2rf->ENTRY_1_0_23;
   1515                 fldbuf[1] = (fmt2rf->ENTRY_1_24_39 >> 8) & 0xff;
   1516             } else if (field == ENTRY_2f) {
   1517                 fldbuf[0] = ((fmt2rf->ENTRY_2_16_39 & 0xffff) << 16) | fmt2rf->ENTRY_2_0_15;
   1518                 fldbuf[1] = (fmt2rf->ENTRY_2_16_39 >> 16) & 0xff;
   1519             } else if (field == ENTRY_3f) {
   1520                 fldbuf[0] = ((fmt2rf->ENTRY_3_8_39 & 0xffffff) << 8) | fmt2rf->ENTRY_3_0_7;
   1521                 fldbuf[1] = (fmt2rf->ENTRY_3_8_39 >> 24) & 0xff;
   1522             } else if (field == ENTRY_4f) {
   1523                 fldbuf[0] = fmt2rf->ENTRY_4_0_31;
   1524                 fldbuf[1] = fmt2rf->ENTRY_4_32_39;
   1525             } else if (field == ENTRY_5f) {
   1526                 fldbuf[0] = ((fmt2rf->ENTRY_5_24_39 & 0xff) << 24) | fmt2rf->ENTRY_5_0_23;
   1527                 fldbuf[1] = (fmt2rf->ENTRY_5_24_39 >> 8) & 0xff;
   1528             } else if (field == ENTRY_6f) {
   1529                 fldbuf[0] = ((fmt2rf->ENTRY_6_16_39 & 0xffff) << 16) | fmt2rf->ENTRY_6_0_15;
   1530                 fldbuf[1] = (fmt2rf->ENTRY_6_16_39 >> 16) & 0xff;
   1531             } else if (field == ENTRY_7f) {
   1532                 fldbuf[0] = ((fmt2rf->ENTRY_7_8_39 & 0xffffff) << 8) | fmt2rf->ENTRY_7_0_7;
   1533                 fldbuf[1] = (fmt2rf->ENTRY_7_8_39 >> 24) & 0xff;
   1534             } else if (field == ENTRY_8f) {
   1535                 fldbuf[0] = fmt2rf->ENTRY_8_0_31;
   1536                 fldbuf[1] = fmt2rf->ENTRY_8_32_39;
   1537             } else if (field == ENTRY_9f) {
   1538                 fldbuf[0] = ((fmt2rf->ENTRY_9_24_39 & 0xff) << 24) | fmt2rf->ENTRY_9_0_23;
   1539                 fldbuf[1] = (fmt2rf->ENTRY_9_24_39 >> 8) & 0xff;
   1540             } else if (field == ENTRY_10f) {
   1541                 fldbuf[0] = ((fmt2rf->ENTRY_10_16_39 & 0xffff) << 16) | fmt2rf->ENTRY_10_0_15;
   1542                 fldbuf[1] = (fmt2rf->ENTRY_10_16_39 >> 16) & 0xff;
   1543             } else if (field == ENTRY_11f) {
   1544                 fldbuf[0] = ((fmt2rf->ENTRY_11_8_39 & 0xffffff) << 8) | fmt2rf->ENTRY_11_0_7;
   1545                 fldbuf[1] = (fmt2rf->ENTRY_11_8_39 >> 24) & 0xff;
   1546             }
   1547         }
   1548         break;
   1549 
   1550     case L3_DEFIP_ALPM_ROUTE_FMT3_FULLfmt: {
   1551             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_FULL_t *fmt3rf = (void *)entbuf;
   1552             if (field == ENTRY_0f) {
   1553                 fldbuf[0] = fmt3rf->ENTRY_0_0_31;
   1554                 fldbuf[1] = fmt3rf->ENTRY_0_32_47;
   1555             } else if (field == ENTRY_1f) {
   1556                 fldbuf[0] = ((fmt3rf->ENTRY_1_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_1_0_15 >> 16) & 0xffff);
   1557                 fldbuf[1] = (fmt3rf->ENTRY_1_16_47 >> 16) & 0xffff;
   1558             } else if (field == ENTRY_2f) {
   1559                 fldbuf[0] = fmt3rf->ENTRY_2_0_31;
   1560                 fldbuf[1] = fmt3rf->ENTRY_2_32_47;
   1561             } else if (field == ENTRY_3f) {
   1562                 fldbuf[0] = ((fmt3rf->ENTRY_3_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_3_0_15 >> 16) & 0xffff);
   1563                 fldbuf[1] = (fmt3rf->ENTRY_3_16_47 >> 16) & 0xffff;
   1564             } else if (field == ENTRY_4f) {
   1565                 fldbuf[0] = fmt3rf->ENTRY_4_0_31;
   1566                 fldbuf[1] = fmt3rf->ENTRY_4_32_47;
   1567             } else if (field == ENTRY_5f) {
   1568                 fldbuf[0] = ((fmt3rf->ENTRY_5_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_5_0_15 >> 16) & 0xffff);
   1569                 fldbuf[1] = (fmt3rf->ENTRY_5_16_47 >> 16) & 0xffff;
   1570             } else if (field == ENTRY_6f) {
   1571                 fldbuf[0] = fmt3rf->ENTRY_6_0_31;
   1572                 fldbuf[1] = fmt3rf->ENTRY_6_32_47;
   1573             } else if (field == ENTRY_7f) {
   1574                 fldbuf[0] = ((fmt3rf->ENTRY_7_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_7_0_15 >> 16) & 0xffff);
   1575                 fldbuf[1] = (fmt3rf->ENTRY_7_16_47 >> 16) & 0xffff;
   1576             } else if (field == ENTRY_8f) {
   1577                 fldbuf[0] = fmt3rf->ENTRY_8_0_31;
   1578                 fldbuf[1] = fmt3rf->ENTRY_8_32_47;
   1579             } else if (field == ENTRY_9f) {
   1580                 fldbuf[0] = ((fmt3rf->ENTRY_9_16_47 & 0xffff) << 16) | ((fmt3rf->ENTRY_9_0_15 >> 16) & 0xffff);
   1581                 fldbuf[1] = (fmt3rf->ENTRY_9_16_47 >> 16) & 0xffff;
   1582             }
   1583         }
   1584         break;
   1585 
   1586     case L3_DEFIP_ALPM_ROUTE_FMT4_FULLfmt: {
   1587             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_FULL_t *fmt4rf = (void *)entbuf;
   1588             if (field == ENTRY_0f) {
   1589                 fldbuf[0] = fmt4rf->ENTRY_0_0_31;
   1590                 fldbuf[1] = fmt4rf->ENTRY_0_32_55;
   1591             } else if (field == ENTRY_1f) {
   1592                 fldbuf[0] = ((fmt4rf->ENTRY_1_8_39 & 0xffffff) << 8) | fmt4rf->ENTRY_1_0_7;
   1593                 fldbuf[1] = (fmt4rf->ENTRY_1_40_55 << 8) | ((fmt4rf->ENTRY_1_8_39 >> 24) & 0xff);
   1594             } else if (field == ENTRY_2f) {
   1595                 fldbuf[0] = ((fmt4rf->ENTRY_2_16_47 & 0xffff) << 16) | fmt4rf->ENTRY_2_0_15;
   1596                 fldbuf[1] = (fmt4rf->ENTRY_2_48_55 << 16) | ((fmt4rf->ENTRY_2_16_47 >> 16) & 0xffff);
   1597             } else if (field == ENTRY_3f) {
   1598                 fldbuf[0] = ((fmt4rf->ENTRY_3_24_55 & 0xff) << 24) | fmt4rf->ENTRY_3_0_23;
   1599                 fldbuf[1] = (fmt4rf->ENTRY_3_24_55 >> 8) & 0xffffff;
   1600             } else if (field == ENTRY_4f) {
   1601                 fldbuf[0] = fmt4rf->ENTRY_4_0_31;
   1602                 fldbuf[1] = fmt4rf->ENTRY_4_32_55;
   1603             } else if (field == ENTRY_5f) {
   1604                 fldbuf[0] = ((fmt4rf->ENTRY_5_8_39 & 0xffffff) << 8) | fmt4rf->ENTRY_5_0_7;
   1605                 fldbuf[1] = (fmt4rf->ENTRY_5_40_55 << 8) | ((fmt4rf->ENTRY_5_8_39 >> 24) & 0xff);
   1606             } else if (field == ENTRY_6f) {
   1607                 fldbuf[0] = ((fmt4rf->ENTRY_6_16_47 & 0xffff) << 16) | fmt4rf->ENTRY_6_0_15;
   1608                 fldbuf[1] = (fmt4rf->ENTRY_6_48_55 << 16) | ((fmt4rf->ENTRY_6_16_47 >> 16) & 0xffff);
   1609             } else if (field == ENTRY_7f) {
   1610                 fldbuf[0] = ((fmt4rf->ENTRY_7_24_55 & 0xff) << 24) | fmt4rf->ENTRY_7_0_23;
   1611                 fldbuf[1] = (fmt4rf->ENTRY_7_24_55 >> 8) & 0xffffff;
   1612             }
   1613         }
   1614         break;
   1615 
   1616     case L3_DEFIP_ALPM_ROUTE_FMT5_FULLfmt: {
   1617             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_FULL_t *fmt5rf = (void *)entbuf;
   1618             if (field == ENTRY_0f) {
   1619                 fldbuf[0] = fmt5rf->ENTRY_0_0_31;
   1620                 fldbuf[1] = fmt5rf->ENTRY_0_32_63;
   1621             } else if (field == ENTRY_1f) {
   1622                 fldbuf[0] = fmt5rf->ENTRY_1_0_31;
   1623                 fldbuf[1] = fmt5rf->ENTRY_1_32_63;
   1624             } else if (field == ENTRY_2f) {
   1625                 fldbuf[0] = fmt5rf->ENTRY_2_0_31;
   1626                 fldbuf[1] = fmt5rf->ENTRY_2_32_63;
   1627             } else if (field == ENTRY_3f) {
   1628                 fldbuf[0] = fmt5rf->ENTRY_3_0_31;
   1629                 fldbuf[1] = fmt5rf->ENTRY_3_32_63;
   1630             } else if (field == ENTRY_4f) {
   1631                 fldbuf[0] = fmt5rf->ENTRY_4_0_31;
   1632                 fldbuf[1] = fmt5rf->ENTRY_4_32_63;
   1633             } else if (field == ENTRY_5f) {
   1634                 fldbuf[0] = fmt5rf->ENTRY_5_0_31;
   1635                 fldbuf[1] = fmt5rf->ENTRY_5_32_63;
   1636             } else if (field == ENTRY_6f) {
   1637                 fldbuf[0] = fmt5rf->ENTRY_6_0_31;
   1638                 fldbuf[1] = fmt5rf->ENTRY_6_32_63;
   1639             }
   1640         }
   1641         break;
   1642 
   1643     case L3_DEFIP_ALPM_ROUTE_FMT9_FULLfmt: {
   1644             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_FULL_t *fmt9rf = (void *)entbuf;
   1645             if (field == ENTRY_0f) {
   1646                 fldbuf[0] = fmt9rf->ENTRY_0_0_31;
   1647                 fldbuf[1] = fmt9rf->ENTRY_0_32_63;
   1648                 fldbuf[2] = fmt9rf->ENTRY_0_64_95;
   1649                 fldbuf[3] = fmt9rf->ENTRY_0_96_127;
   1650                 fldbuf[4] = fmt9rf->ENTRY_0_128_151;
   1651             } else if (field == ENTRY_1f) {
   1652                 fldbuf[0] = ((fmt9rf->ENTRY_1_8_39 & 0xffffff) << 8) | fmt9rf->ENTRY_1_0_7;
   1653                 fldbuf[1] = ((fmt9rf->ENTRY_1_40_71 & 0xffffff) << 8) | ((fmt9rf->ENTRY_1_8_39 << 24) & 0xff);
   1654                 fldbuf[2] = ((fmt9rf->ENTRY_1_72_103 & 0xffffff) << 8) | ((fmt9rf->ENTRY_1_40_71 << 24) & 0xff);
   1655                 fldbuf[3] = ((fmt9rf->ENTRY_1_104_135 & 0xffffff) << 8) | ((fmt9rf->ENTRY_1_72_103 << 24) & 0xff);
   1656                 fldbuf[4] = (fmt9rf->ENTRY_1_136_151 << 8) | ((fmt9rf->ENTRY_1_104_135 << 24) & 0xff);
   1657             } else if (field == ENTRY_2f) {
   1658                 fldbuf[0] = ((fmt9rf->ENTRY_2_16_47 & 0xffff) << 16) | fmt9rf->ENTRY_2_0_15;
   1659                 fldbuf[1] = ((fmt9rf->ENTRY_2_48_79 & 0xffff) << 16) | ((fmt9rf->ENTRY_2_16_47 << 16) & 0xffff);
   1660                 fldbuf[2] = ((fmt9rf->ENTRY_2_80_111 & 0xffff) << 16) | ((fmt9rf->ENTRY_2_48_79 << 16) & 0xffff);
   1661                 fldbuf[3] = ((fmt9rf->ENTRY_2_112_143 & 0xffff) << 16) | ((fmt9rf->ENTRY_2_80_111 << 16) & 0xffff);
   1662                 fldbuf[4] = (fmt9rf->ENTRY_2_144_151 << 16) | ((fmt9rf->ENTRY_2_112_143 << 16) & 0xffff);
   1663             }
   1664         }
   1665         break;
   1666 
   1667     case L3_DEFIP_ALPM_ROUTE_FMT12_FULLfmt: {
   1668             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_FULL_t *fmt12rf = (void *)entbuf;
   1669             if (field == ENTRY_0f) {
   1670                 fldbuf[0] = fmt12rf->ENTRY_0_0_31;
   1671                 fldbuf[1] = fmt12rf->ENTRY_0_32_63;
   1672                 fldbuf[2] = fmt12rf->ENTRY_0_64_95;
   1673                 fldbuf[3] = fmt12rf->ENTRY_0_96_127;
   1674                 fldbuf[4] = fmt12rf->ENTRY_0_128_159;
   1675                 fldbuf[5] = fmt12rf->ENTRY_0_160_175;
   1676             } else if (field == ENTRY_1f) {
   1677                 fldbuf[0] = ((fmt12rf->ENTRY_1_16_47 & 0xffff) >> 16) | fmt12rf->ENTRY_1_0_15;
   1678                 fldbuf[1] = ((fmt12rf->ENTRY_1_48_79 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_16_47 >> 16) & 0xffff);
   1679                 fldbuf[2] = ((fmt12rf->ENTRY_1_80_111 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_48_79 >> 16) & 0xffff);
   1680                 fldbuf[3] = ((fmt12rf->ENTRY_1_112_143 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_80_111 >> 16) & 0xffff);
   1681                 fldbuf[4] = ((fmt12rf->ENTRY_1_144_175 & 0xffff) >> 16) | ((fmt12rf->ENTRY_1_112_143 >> 16) & 0xffff);
   1682                 fldbuf[5] = (fmt12rf->ENTRY_1_144_175 >> 16) & 0xffff;
   1683             }
   1684         }
   1685         break;
   1686 
   1687     default:
   1688         assert(0);
   1689         break;
   1690     }
   1691 }
   1692 
   1693 static void
   1694 th3_format_field_set(int u, soc_format_t format, uint32 *entbuf, soc_field_t field, uint32 *fldbuf)
   1695 {
   1696     switch (format) {
   1697     /* PIVOT format */
   1698     case L3_DEFIP_ALPM_PIVOT_FMT1fmt: {
   1699             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_t *fmt1 = (void *)entbuf;
   1700             if (field == PREFIXf) {
   1701                 fmt1->PREFIX = fldbuf[0];
   1702             } else if (field == ASSOC_DATAf) {
   1703                 fmt1->ASSOC_DATA = fldbuf[0];
   1704             } else if (field == ALPM2_DATAf) {
   1705                 fmt1->ALPM2_DATA_0_7 = fldbuf[0] & 0xff;
   1706                 fmt1->ALPM2_DATA_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   1707                 fmt1->ALPM2_DATA_40_55 = (fldbuf[1] >> 8) & 0xffff;
   1708             }
   1709         }
   1710         break;
   1711     case L3_DEFIP_ALPM_PIVOT_FMT2fmt: {
   1712             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_t *fmt2 = (void *)entbuf;
   1713             if (field == PREFIXf) {
   1714                 fmt2->PREFIX = fldbuf[0];
   1715             } else if (field == ASSOC_DATAf) {
   1716                 fmt2->ASSOC_DATA_0_7 = fldbuf[0] & 0xff;
   1717                 fmt2->ASSOC_DATA_8_15 = (fldbuf[0] >> 8) & 0xff;
   1718             } else if (field == ALPM2_DATAf) {
   1719                 fmt2->ALPM2_DATA_0_23 = fldbuf[0] & 0xffffff;
   1720                 fmt2->ALPM2_DATA_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   1721             }
   1722         }
   1723         break;
   1724     case L3_DEFIP_ALPM_PIVOT_FMT3fmt: {
   1725             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_t *fmt3 = (void *)entbuf;
   1726             if (field == PREFIXf) {
   1727                 fmt3->PREFIX_0_31 = fldbuf[0];
   1728                 fmt3->PREFIX_32_47 = fldbuf[1] & 0xffff;
   1729             } else if (field == ASSOC_DATAf) {
   1730                 fmt3->ASSOC_DATA = fldbuf[0];
   1731             } else if (field == ALPM2_DATAf) {
   1732                 fmt3->ALPM2_DATA_0_31 = fldbuf[0];
   1733                 fmt3->ALPM2_DATA_32_55 = fldbuf[1] & 0xffffff;
   1734             }
   1735         }
   1736         break;
   1737     case L3_DEFIP_ALPM_PIVOT_FMT4fmt: {
   1738             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_t *fmt4 = (void *)entbuf;
   1739             if (field == PREFIXf) {
   1740                 fmt4->PREFIX_0_31 = fldbuf[0];
   1741                 fmt4->PREFIX_32_63 = fldbuf[1];
   1742                 fmt4->PREFIX_64_87 = fldbuf[2] & 0xffffff;
   1743             } else if (field == ASSOC_DATAf) {
   1744                 fmt4->ASSOC_DATA_0_7 = fldbuf[0] & 0xff;
   1745                 fmt4->ASSOC_DATA_8_15 = (fldbuf[0] >> 8) & 0xff;
   1746             } else if (field == ALPM2_DATAf) {
   1747                 fmt4->ALPM2_DATA_0_23 = fldbuf[0] & 0xffffff;
   1748                 fmt4->ALPM2_DATA_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   1749             }
   1750         }
   1751         break;
   1752     case L3_DEFIP_ALPM_PIVOT_FMT5fmt: {
   1753             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_t *fmt5 = (void *)entbuf;
   1754             if (field == PREFIXf) {
   1755                 fmt5->PREFIX_0_31 = fldbuf[0];
   1756                 fmt5->PREFIX_32_63 = fldbuf[1];
   1757                 fmt5->PREFIX_64_95 = fldbuf[2];
   1758                 fmt5->PREFIX_96_127 = fldbuf[3];
   1759                 fmt5->PREFIX_128 = fldbuf[4] & 0x1;
   1760             } else if (field == ASSOC_DATAf) {
   1761                 fmt5->ASSOC_DATA = fldbuf[0];
   1762             } else if (field == ALPM2_DATAf) {
   1763                 fmt5->ALPM2_DATA_0_7 = fldbuf[0] & 0xff;
   1764                 fmt5->ALPM2_DATA_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   1765                 fmt5->ALPM2_DATA_40_55 = (fldbuf[1] >> 8) & 0xffff;
   1766             }
   1767         }
   1768         break;
   1769     case L3_DEFIP_ALPM_PIVOT_FMT6fmt: {
   1770             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT6_t *fmt6 = (void *)entbuf;
   1771             if (field == PREFIXf) {
   1772                 fmt6->PREFIX = fldbuf[0];
   1773             } else if (field == ASSOC_DATAf) {
   1774                 fmt6->ASSOC_DATA_0_13 = fldbuf[0] & 0x3fff;
   1775                 fmt6->ASSOC_DATA_14_45 = ((fldbuf[1] & 0x3fff) << 18) | ((fldbuf[0] >> 14) & 0x3ffff);
   1776             } else if (field == ALPM2_DATAf) {
   1777                 fmt6->ALPM2_DATA_0_31 = fldbuf[0];
   1778                 fmt6->ALPM2_DATA_32_55 = fldbuf[1] & 0xffffff;
   1779             }
   1780         }
   1781         break;
   1782     case L3_DEFIP_ALPM_PIVOT_FMT7fmt: {
   1783             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT7_t *fmt7 = (void *)entbuf;
   1784             if (field == PREFIXf) {
   1785                 fmt7->PREFIX_0_31 = fldbuf[0];
   1786                 fmt7->PREFIX_32_57 = fldbuf[1] & 0xffffff;
   1787             } else if (field == ASSOC_DATAf) {
   1788                 fmt7->ASSOC_DATA_0_5 = fldbuf[0] & 0x3f;
   1789                 fmt7->ASSOC_DATA_6_37 = ((fldbuf[1] & 0x3f) << 26) | ((fldbuf[0] >> 6) & 0x3ffffff);
   1790             } else if (field == ALPM2_DATAf) {
   1791                 fmt7->ALPM2_DATA_0_23 = fldbuf[0] & 0xffffff;
   1792                 fmt7->ALPM2_DATA_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   1793             }
   1794         }
   1795         break;
   1796     case L3_DEFIP_ALPM_PIVOT_FMT8fmt: {
   1797             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_t *fmt8 = (void *)entbuf;
   1798             if (field == PREFIXf) {
   1799                 fmt8->PREFIX_0_31 = fldbuf[0];
   1800                 fmt8->PREFIX_32_63 = fldbuf[1];
   1801                 fmt8->PREFIX_64_95 = fldbuf[2];
   1802                 fmt8->PREFIX_96_127 = fldbuf[3];
   1803                 fmt8->PREFIX_128 = fldbuf[4] & 0x1;
   1804             } else if (field == ASSOC_DATAf) {
   1805                 fmt8->ASSOC_DATA_0_29 = fldbuf[0] & 0x3fffffff;
   1806                 fmt8->ASSOC_DATA_30_45 = ((fldbuf[1] & 0x3fff) << 2) | ((fldbuf[0] >> 30) & 0x3);
   1807             } else if (field == ALPM2_DATAf) {
   1808                 fmt8->ALPM2_DATA_0_15 = fldbuf[0] & 0xffff;
   1809                 fmt8->ALPM2_DATA_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1810                 fmt8->ALPM2_DATA_48_55 = (fldbuf[1] >> 16) & 0xff;
   1811             }
   1812         }
   1813         break;
   1814 
   1815     /* ROUTE format */
   1816     case L3_DEFIP_ALPM_ROUTE_FMT1fmt: {
   1817             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_t *fmt1 = (void *)entbuf;
   1818             if (field == PREFIXf) {
   1819                 fmt1->PREFIX = fldbuf[0] & 0xffff;
   1820             } else if (field == ASSOC_DATAf) {
   1821                 fmt1->ASSOC_DATA = fldbuf[0] & 0xffff;
   1822             }
   1823         }
   1824         break;
   1825     case L3_DEFIP_ALPM_ROUTE_FMT2fmt: {
   1826             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_t *fmt2 = (void *)entbuf;
   1827             if (field == PREFIXf) {
   1828                 fmt2->PREFIX = fldbuf[0] & 0xffffff;
   1829             } else if (field == ASSOC_DATAf) {
   1830                 fmt2->ASSOC_DATA_0_7 = fldbuf[0] & 0xff;
   1831                 fmt2->ASSOC_DATA_8_15 = (fldbuf[0] >> 8) & 0xff;
   1832             }
   1833         }
   1834         break;
   1835     case L3_DEFIP_ALPM_ROUTE_FMT3fmt: {
   1836             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_t *fmt3 = (void *)entbuf;
   1837             if (field == PREFIXf) {
   1838                 fmt3->PREFIX = fldbuf[0];
   1839             } else if (field == ASSOC_DATAf) {
   1840                 fmt3->ASSOC_DATA = fldbuf[0] & 0xffff;
   1841             }
   1842         }
   1843         break;
   1844     case L3_DEFIP_ALPM_ROUTE_FMT4fmt: {
   1845             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_t *fmt4 = (void *)entbuf;
   1846             if (field == PREFIXf) {
   1847                 fmt4->PREFIX_0_31 = fldbuf[0];
   1848                 fmt4->PREFIX_32_39 = fldbuf[1] & 0xff;
   1849             } else if (field == ASSOC_DATAf) {
   1850                 fmt4->ASSOC_DATA = fldbuf[0] & 0xffff;
   1851             }
   1852         }
   1853         break;
   1854     case L3_DEFIP_ALPM_ROUTE_FMT5fmt: {
   1855             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_t *fmt5 = (void *)entbuf;
   1856             if (field == PREFIXf) {
   1857                 fmt5->PREFIX_0_31 = fldbuf[0];
   1858                 fmt5->PREFIX_32_47 = fldbuf[1] & 0xffff;
   1859             } else if (field == ASSOC_DATAf) {
   1860                 fmt5->ASSOC_DATA = fldbuf[0] & 0xffff;
   1861             }
   1862         }
   1863         break;
   1864     case L3_DEFIP_ALPM_ROUTE_FMT6fmt: {
   1865             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT6_t *fmt6 = (void *)entbuf;
   1866             if (field == PREFIXf) {
   1867                 fmt6->PREFIX_0_31 = fldbuf[0];
   1868                 fmt6->PREFIX_32_63 = fldbuf[1];
   1869             } else if (field == ASSOC_DATAf) {
   1870                 fmt6->ASSOC_DATA = fldbuf[0] & 0xffff;
   1871             }
   1872         }
   1873         break;
   1874     case L3_DEFIP_ALPM_ROUTE_FMT7fmt: {
   1875             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT7_t *fmt7 = (void *)entbuf;
   1876             if (field == PREFIXf) {
   1877                 fmt7->PREFIX_0_31 = fldbuf[0];
   1878                 fmt7->PREFIX_32_63 = fldbuf[1];
   1879                 fmt7->PREFIX_64_79 = fldbuf[2] & 0xffff;
   1880             } else if (field == ASSOC_DATAf) {
   1881                 fmt7->ASSOC_DATA = fldbuf[0] & 0xffff;
   1882             }
   1883         }
   1884         break;
   1885     case L3_DEFIP_ALPM_ROUTE_FMT8fmt: {
   1886             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT8_t *fmt8 = (void *)entbuf;
   1887             if (field == PREFIXf) {
   1888                 fmt8->PREFIX_0_31 = fldbuf[0];
   1889                 fmt8->PREFIX_32_63 = fldbuf[1];
   1890                 fmt8->PREFIX_64_95 = fldbuf[2];
   1891                 fmt8->PREFIX_96_103 = fldbuf[3] & 0xff;
   1892             } else if (field == ASSOC_DATAf) {
   1893                 fmt8->ASSOC_DATA = fldbuf[0] & 0xffff;
   1894             }
   1895         }
   1896         break;
   1897     case L3_DEFIP_ALPM_ROUTE_FMT9fmt: {
   1898             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_t *fmt9 = (void *)entbuf;
   1899             if (field == PREFIXf) {
   1900                 fmt9->PREFIX_0_31 = fldbuf[0];
   1901                 fmt9->PREFIX_32_63 = fldbuf[1];
   1902                 fmt9->PREFIX_64_95 = fldbuf[2];
   1903                 fmt9->PREFIX_96_127 = fldbuf[3];
   1904                 fmt9->PREFIX_128 = fldbuf[4] & 0x1;
   1905             } else if (field == ASSOC_DATAf) {
   1906                 fmt9->ASSOC_DATA = fldbuf[0] & 0xffff;
   1907             }
   1908         }
   1909         break;
   1910     case L3_DEFIP_ALPM_ROUTE_FMT10fmt: {
   1911             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT10_t *fmt10 = (void *)entbuf;
   1912             if (field == PREFIXf) {
   1913                 fmt10->PREFIX_0_31 = fldbuf[0];
   1914                 fmt10->PREFIX_32_33 = fldbuf[1] & 0x3;
   1915             } else if (field == ASSOC_DATAf) {
   1916                 fmt10->ASSOC_DATA_0_29 = fldbuf[0] & 0x3fffffff;
   1917                 fmt10->ASSOC_DATA_30_45 = ((fldbuf[1] & 0x3fff) << 2) | ((fldbuf[0] >> 30) & 0x3);
   1918             }
   1919         }
   1920         break;
   1921     case L3_DEFIP_ALPM_ROUTE_FMT11fmt: {
   1922             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT11_t *fmt11 = (void *)entbuf;
   1923             if (field == PREFIXf) {
   1924                 fmt11->PREFIX_0_31 = fldbuf[0];
   1925                 fmt11->PREFIX_32_63 = fldbuf[1];
   1926                 fmt11->PREFIX_64_73 = fldbuf[2] & 0x3ff;
   1927             } else if (field == ASSOC_DATAf) {
   1928                 fmt11->ASSOC_DATA_0_21 = fldbuf[0] & 0x3fffff;
   1929                 fmt11->ASSOC_DATA_22_45 = ((fldbuf[1] & 0x3fff) << 10) | ((fldbuf[0] >> 22) & 0x3ff);
   1930             }
   1931         }
   1932         break;
   1933     case L3_DEFIP_ALPM_ROUTE_FMT12fmt: {
   1934             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_t *fmt12 = (void *)entbuf;
   1935             if (field == PREFIXf) {
   1936                 fmt12->PREFIX_0_31 = fldbuf[0];
   1937                 fmt12->PREFIX_32_63 = fldbuf[1];
   1938                 fmt12->PREFIX_64_95 = fldbuf[2];
   1939                 fmt12->PREFIX_96_127 = fldbuf[3];
   1940                 fmt12->PREFIX_128 = fldbuf[4] & 0x1;
   1941             } else if (field == ASSOC_DATAf) {
   1942                 fmt12->ASSOC_DATA_0_29 = fldbuf[0] & 0x3fffffff;
   1943                 fmt12->ASSOC_DATA_30_45 = ((fldbuf[1] & 0x3fff) << 2) | ((fldbuf[0] >> 30) & 0x3);
   1944             }
   1945         }
   1946         break;
   1947 
   1948     /* PIVOT FULL format */
   1949     case L3_DEFIP_ALPM_PIVOT_FMT1_FULLfmt:
   1950     case L3_DEFIP_ALPM_ROUTE_FMT6_FULLfmt:
   1951     case L3_DEFIP_ALPM_ROUTE_FMT10_FULLfmt: {
   1952             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT1_FULL_t *fmt1pf = (void *)entbuf;
   1953             if (field == ENTRY_0f) {
   1954                 fmt1pf->ENTRY_0_0_31 = fldbuf[0];
   1955                 fmt1pf->ENTRY_0_32_63 = fldbuf[1];
   1956                 fmt1pf->ENTRY_0_64_79 = fldbuf[2] & 0xffff;
   1957             } else if (field == ENTRY_1f) {
   1958                 fmt1pf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   1959                 fmt1pf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1960                 fmt1pf->ENTRY_1_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   1961             } else if (field == ENTRY_2f) {
   1962                 fmt1pf->ENTRY_2_0_31 = fldbuf[0];
   1963                 fmt1pf->ENTRY_2_32_63 = fldbuf[1];
   1964                 fmt1pf->ENTRY_2_64_79 = fldbuf[2] & 0xffff;
   1965             } else if (field == ENTRY_3f) {
   1966                 fmt1pf->ENTRY_3_0_15 = fldbuf[0] & 0xffff;
   1967                 fmt1pf->ENTRY_3_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1968                 fmt1pf->ENTRY_3_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   1969             } else if (field == ENTRY_4f) {
   1970                 fmt1pf->ENTRY_4_0_31 = fldbuf[0];
   1971                 fmt1pf->ENTRY_4_32_63 = fldbuf[1];
   1972                 fmt1pf->ENTRY_4_64_79 = fldbuf[2] & 0xffff;
   1973             } else if (field == ENTRY_5f) {
   1974                 fmt1pf->ENTRY_5_0_15 = fldbuf[0] & 0xffff;
   1975                 fmt1pf->ENTRY_5_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   1976                 fmt1pf->ENTRY_5_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   1977             }
   1978         }
   1979         break;
   1980 
   1981     case L3_DEFIP_ALPM_PIVOT_FMT2_FULLfmt:
   1982     case L3_DEFIP_ALPM_ROUTE_FMT7_FULLfmt: {
   1983             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT2_FULL_t *fmt2pf = (void *)entbuf;
   1984             if (field == ENTRY_0f) {
   1985                 fmt2pf->ENTRY_0_0_31 = fldbuf[0];
   1986                 fmt2pf->ENTRY_0_32_63 = fldbuf[1];
   1987                 fmt2pf->ENTRY_0_64_95 = fldbuf[2];
   1988             } else if (field == ENTRY_1f) {
   1989                 fmt2pf->ENTRY_1_0_31 = fldbuf[0];
   1990                 fmt2pf->ENTRY_1_32_63 = fldbuf[1];
   1991                 fmt2pf->ENTRY_1_64_95 = fldbuf[2];
   1992             } else if (field == ENTRY_2f) {
   1993                 fmt2pf->ENTRY_2_0_31 = fldbuf[0];
   1994                 fmt2pf->ENTRY_2_32_63 = fldbuf[1];
   1995                 fmt2pf->ENTRY_2_64_95 = fldbuf[2];
   1996             } else if (field == ENTRY_3f) {
   1997                 fmt2pf->ENTRY_3_0_31 = fldbuf[0];
   1998                 fmt2pf->ENTRY_3_32_63 = fldbuf[1];
   1999                 fmt2pf->ENTRY_3_64_95 = fldbuf[2];
   2000             } else if (field == ENTRY_4f) {
   2001                 fmt2pf->ENTRY_4_0_31 = fldbuf[0];
   2002                 fmt2pf->ENTRY_4_32_63 = fldbuf[1];
   2003                 fmt2pf->ENTRY_4_64_95 = fldbuf[2];
   2004             }
   2005         }
   2006         break;
   2007 
   2008     case L3_DEFIP_ALPM_PIVOT_FMT3_FULLfmt:
   2009     case L3_DEFIP_ALPM_PIVOT_FMT6_FULLfmt:
   2010     case L3_DEFIP_ALPM_ROUTE_FMT8_FULLfmt:
   2011     case L3_DEFIP_ALPM_ROUTE_FMT11_FULLfmt: {
   2012             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT3_FULL_t *fmt3pf = (void *)entbuf;
   2013             if (field == ENTRY_0f) {
   2014                 fmt3pf->ENTRY_0_0_31 = fldbuf[0];
   2015                 fmt3pf->ENTRY_0_32_63 = fldbuf[1];
   2016                 fmt3pf->ENTRY_0_64_95 = fldbuf[2];
   2017                 fmt3pf->ENTRY_0_96_119 = fldbuf[3] & 0xffffff;
   2018             } else if (field == ENTRY_1f) {
   2019                 fmt3pf->ENTRY_1_0_7 = fldbuf[0] & 0xff;
   2020                 fmt3pf->ENTRY_1_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2021                 fmt3pf->ENTRY_1_40_71 = ((fldbuf[2] & 0xff) << 24) | ((fldbuf[1] >> 8) & 0xffffff);
   2022                 fmt3pf->ENTRY_1_72_103 = ((fldbuf[3] & 0xff) << 24) | ((fldbuf[2] >> 8) & 0xffffff);
   2023                 fmt3pf->ENTRY_1_104_119 = ((fldbuf[3] >> 8) & 0xffff);
   2024             } else if (field == ENTRY_2f) {
   2025                 fmt3pf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2026                 fmt3pf->ENTRY_2_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2027                 fmt3pf->ENTRY_2_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2028                 fmt3pf->ENTRY_2_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2029                 fmt3pf->ENTRY_2_112_119 = ((fldbuf[3] >> 16) & 0xff);
   2030             } else if (field == ENTRY_3f) {
   2031                 fmt3pf->ENTRY_3_0_23 = fldbuf[0] & 0xffffff;
   2032                 fmt3pf->ENTRY_3_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2033                 fmt3pf->ENTRY_3_56_87 = ((fldbuf[2] & 0xffffff) << 8) | ((fldbuf[1] >> 24) & 0xff);
   2034                 fmt3pf->ENTRY_3_88_119 = ((fldbuf[3] & 0xffffff) << 8) | ((fldbuf[2] >> 24) & 0xff);
   2035             }
   2036         }
   2037         break;
   2038 
   2039     case L3_DEFIP_ALPM_PIVOT_FMT4_FULLfmt:
   2040     case L3_DEFIP_ALPM_PIVOT_FMT7_FULLfmt: {
   2041             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT4_FULL_t *fmt4pf = (void *)entbuf;
   2042             if (field == ENTRY_0f) {
   2043                 fmt4pf->ENTRY_0_0_31 = fldbuf[0];
   2044                 fmt4pf->ENTRY_0_32_63 = fldbuf[1];
   2045                 fmt4pf->ENTRY_0_64_95 = fldbuf[2];
   2046                 fmt4pf->ENTRY_0_96_127 = fldbuf[3];
   2047                 fmt4pf->ENTRY_0_128_159 = fldbuf[4];
   2048             } else if (field == ENTRY_1f) {
   2049                 fmt4pf->ENTRY_1_0_31 = fldbuf[0];
   2050                 fmt4pf->ENTRY_1_32_63 = fldbuf[1];
   2051                 fmt4pf->ENTRY_1_64_95 = fldbuf[2];
   2052                 fmt4pf->ENTRY_1_96_127 = fldbuf[3];
   2053                 fmt4pf->ENTRY_1_128_159 = fldbuf[4];
   2054             } else if (field == ENTRY_2f) {
   2055                 fmt4pf->ENTRY_2_0_31 = fldbuf[0];
   2056                 fmt4pf->ENTRY_2_32_63 = fldbuf[1];
   2057                 fmt4pf->ENTRY_2_64_95 = fldbuf[2];
   2058                 fmt4pf->ENTRY_2_96_127 = fldbuf[3];
   2059                 fmt4pf->ENTRY_2_128_159 = fldbuf[4];
   2060             }
   2061         }
   2062         break;
   2063 
   2064     case L3_DEFIP_ALPM_PIVOT_FMT5_FULLfmt: {
   2065             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT5_FULL_t *fmt5pf = (void *)entbuf;
   2066             if (field == ENTRY_0f) {
   2067                 fmt5pf->ENTRY_0_0_31 = fldbuf[0];
   2068                 fmt5pf->ENTRY_0_32_63 = fldbuf[1];
   2069                 fmt5pf->ENTRY_0_64_95 = fldbuf[2];
   2070                 fmt5pf->ENTRY_0_96_127 = fldbuf[3];
   2071                 fmt5pf->ENTRY_0_128_159 = fldbuf[4];
   2072                 fmt5pf->ENTRY_0_160_191 = fldbuf[5];
   2073                 fmt5pf->ENTRY_0_192_207 = fldbuf[6] & 0xffff;
   2074             } else if (field == ENTRY_1f) {
   2075                 fmt5pf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   2076                 fmt5pf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2077                 fmt5pf->ENTRY_1_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2078                 fmt5pf->ENTRY_1_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2079                 fmt5pf->ENTRY_1_112_143 = ((fldbuf[4] & 0xffff) << 16) | ((fldbuf[3] >> 16) & 0xffff);
   2080                 fmt5pf->ENTRY_1_144_175 = ((fldbuf[5] & 0xffff) << 16) | ((fldbuf[4] >> 16) & 0xffff);
   2081                 fmt5pf->ENTRY_1_176_207 = ((fldbuf[6] & 0xffff) << 16) | ((fldbuf[5] >> 16) & 0xffff);
   2082             }
   2083         }
   2084         break;
   2085 
   2086     case L3_DEFIP_ALPM_PIVOT_FMT8_FULLfmt: {
   2087             th3_fmt_L3_DEFIP_ALPM_PIVOT_FMT8_FULL_t *fmt8pf = (void *)entbuf;
   2088             if (field == ENTRY_0f) {
   2089                 fmt8pf->ENTRY_0_0_31 = fldbuf[0];
   2090                 fmt8pf->ENTRY_0_32_63 = fldbuf[1];
   2091                 fmt8pf->ENTRY_0_64_95 = fldbuf[2];
   2092                 fmt8pf->ENTRY_0_96_127 = fldbuf[3];
   2093                 fmt8pf->ENTRY_0_128_159 = fldbuf[4];
   2094                 fmt8pf->ENTRY_0_160_191 = fldbuf[5];
   2095                 fmt8pf->ENTRY_0_192_223 = fldbuf[6];
   2096                 fmt8pf->ENTRY_0_224_231 = fldbuf[7] & 0xff;
   2097             } else if (field == ENTRY_1f) {
   2098                 fmt8pf->ENTRY_1_0_23 = fldbuf[0] & 0xffffff;
   2099                 fmt8pf->ENTRY_1_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2100                 fmt8pf->ENTRY_1_56_87 = ((fldbuf[2] & 0xffffff) << 8) | ((fldbuf[1] >> 24) & 0xff);
   2101                 fmt8pf->ENTRY_1_88_119 = ((fldbuf[3] & 0xffffff) << 8) | ((fldbuf[2] >> 24) & 0xff);
   2102                 fmt8pf->ENTRY_1_120_151 = ((fldbuf[4] & 0xffffff) << 8) | ((fldbuf[3] >> 24) & 0xff);
   2103                 fmt8pf->ENTRY_1_152_183 = ((fldbuf[5] & 0xffffff) << 8) | ((fldbuf[4] >> 24) & 0xff);
   2104                 fmt8pf->ENTRY_1_184_215 = ((fldbuf[6] & 0xffffff) << 8) | ((fldbuf[5] >> 24) & 0xff);
   2105                 fmt8pf->ENTRY_1_216_231 = ((fldbuf[7] & 0xff) << 8) | ((fldbuf[6] >> 24) & 0xff);
   2106             }
   2107         }
   2108         break;
   2109 
   2110     /* ROUTE FULL fmt */
   2111     case L3_DEFIP_ALPM_ROUTE_FMT1_FULLfmt: {
   2112             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT1_FULL_t *fmt1rf = (void *)entbuf;
   2113             if (field == ENTRY_0f) {
   2114                 fmt1rf->ENTRY_0 = fldbuf[0];
   2115             } else if (field == ENTRY_1f) {
   2116                 fmt1rf->ENTRY_1 = fldbuf[0];
   2117             } else if (field == ENTRY_2f) {
   2118                 fmt1rf->ENTRY_2 = fldbuf[0];
   2119             } else if (field == ENTRY_3f) {
   2120                 fmt1rf->ENTRY_3 = fldbuf[0];
   2121             } else if (field == ENTRY_4f) {
   2122                 fmt1rf->ENTRY_4 = fldbuf[0];
   2123             } else if (field == ENTRY_5f) {
   2124                 fmt1rf->ENTRY_5 = fldbuf[0];
   2125             } else if (field == ENTRY_6f) {
   2126                 fmt1rf->ENTRY_6 = fldbuf[0];
   2127             } else if (field == ENTRY_7f) {
   2128                 fmt1rf->ENTRY_7 = fldbuf[0];
   2129             } else if (field == ENTRY_8f) {
   2130                 fmt1rf->ENTRY_8 = fldbuf[0];
   2131             } else if (field == ENTRY_9f) {
   2132                 fmt1rf->ENTRY_9 = fldbuf[0];
   2133             } else if (field == ENTRY_10f) {
   2134                 fmt1rf->ENTRY_10 = fldbuf[0];
   2135             } else if (field == ENTRY_11f) {
   2136                 fmt1rf->ENTRY_11 = fldbuf[0];
   2137             } else if (field == ENTRY_12f) {
   2138                 fmt1rf->ENTRY_12 = fldbuf[0];
   2139             } else if (field == ENTRY_13f) {
   2140                 fmt1rf->ENTRY_13 = fldbuf[0];
   2141             } else if (field == ENTRY_14f) {
   2142                 fmt1rf->ENTRY_14 = fldbuf[0];
   2143             }
   2144         }
   2145         break;
   2146 
   2147     case L3_DEFIP_ALPM_ROUTE_FMT2_FULLfmt: {
   2148             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT2_FULL_t *fmt2rf = (void *)entbuf;
   2149             if (field == ENTRY_0f) {
   2150                 fmt2rf->ENTRY_0_0_31 = fldbuf[0];
   2151                 fmt2rf->ENTRY_0_32_39 = fldbuf[1] & 0xff;
   2152             } else if (field == ENTRY_1f) {
   2153                 fmt2rf->ENTRY_1_0_23 = fldbuf[0] & 0xffffff;
   2154                 fmt2rf->ENTRY_1_24_39 = ((fldbuf[1] & 0xff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2155             } else if (field == ENTRY_2f) {
   2156                 fmt2rf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2157                 fmt2rf->ENTRY_2_16_39 = ((fldbuf[1] & 0xff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2158             } else if (field == ENTRY_3f) {
   2159                 fmt2rf->ENTRY_3_0_7 = fldbuf[0] & 0xff;
   2160                 fmt2rf->ENTRY_3_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2161             } else if (field == ENTRY_4f) {
   2162                 fmt2rf->ENTRY_4_0_31 = fldbuf[0];
   2163                 fmt2rf->ENTRY_4_32_39 = fldbuf[1] & 0xff;
   2164             } else if (field == ENTRY_5f) {
   2165                 fmt2rf->ENTRY_5_0_23 = fldbuf[0] & 0xffffff;
   2166                 fmt2rf->ENTRY_5_24_39 = ((fldbuf[1] & 0xff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2167             } else if (field == ENTRY_6f) {
   2168                 fmt2rf->ENTRY_6_0_15 = fldbuf[0] & 0xffff;
   2169                 fmt2rf->ENTRY_6_16_39 = ((fldbuf[1] & 0xff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2170             } else if (field == ENTRY_7f) {
   2171                 fmt2rf->ENTRY_7_0_7 = fldbuf[0] & 0xff;
   2172                 fmt2rf->ENTRY_7_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2173             } else if (field == ENTRY_8f) {
   2174                 fmt2rf->ENTRY_8_0_31 = fldbuf[0];
   2175                 fmt2rf->ENTRY_8_32_39 = fldbuf[1] & 0xff;
   2176             } else if (field == ENTRY_9f) {
   2177                 fmt2rf->ENTRY_9_0_23 = fldbuf[0] & 0xffffff;
   2178                 fmt2rf->ENTRY_9_24_39 = ((fldbuf[1] & 0xff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2179             } else if (field == ENTRY_10f) {
   2180                 fmt2rf->ENTRY_10_0_15 = fldbuf[0] & 0xffff;
   2181                 fmt2rf->ENTRY_10_16_39 = ((fldbuf[1] & 0xff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2182             } else if (field == ENTRY_11f) {
   2183                 fmt2rf->ENTRY_11_0_7 = fldbuf[0] & 0xff;
   2184                 fmt2rf->ENTRY_11_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2185             }
   2186         }
   2187         break;
   2188 
   2189     case L3_DEFIP_ALPM_ROUTE_FMT3_FULLfmt: {
   2190             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT3_FULL_t *fmt3rf = (void *)entbuf;
   2191             if (field == ENTRY_0f) {
   2192                 fmt3rf->ENTRY_0_0_31 = fldbuf[0];
   2193                 fmt3rf->ENTRY_0_32_47 = fldbuf[1] & 0xff;
   2194             } else if (field == ENTRY_1f) {
   2195                 fmt3rf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   2196                 fmt3rf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2197             } else if (field == ENTRY_2f) {
   2198                 fmt3rf->ENTRY_2_0_31 = fldbuf[0];
   2199                 fmt3rf->ENTRY_2_32_47 = fldbuf[1] & 0xff;
   2200             } else if (field == ENTRY_3f) {
   2201                 fmt3rf->ENTRY_3_0_15 = fldbuf[0] & 0xffff;
   2202                 fmt3rf->ENTRY_3_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2203             } else if (field == ENTRY_4f) {
   2204                 fmt3rf->ENTRY_4_0_31 = fldbuf[0];
   2205                 fmt3rf->ENTRY_4_32_47 = fldbuf[1] & 0xff;
   2206             } else if (field == ENTRY_5f) {
   2207                 fmt3rf->ENTRY_5_0_15 = fldbuf[0] & 0xffff;
   2208                 fmt3rf->ENTRY_5_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2209             } else if (field == ENTRY_6f) {
   2210                 fmt3rf->ENTRY_6_0_31 = fldbuf[0];
   2211                 fmt3rf->ENTRY_6_32_47 = fldbuf[1] & 0xff;
   2212             } else if (field == ENTRY_7f) {
   2213                 fmt3rf->ENTRY_7_0_15 = fldbuf[0] & 0xffff;
   2214                 fmt3rf->ENTRY_7_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2215             } else if (field == ENTRY_8f) {
   2216                 fmt3rf->ENTRY_8_0_31 = fldbuf[0];
   2217                 fmt3rf->ENTRY_8_32_47 = fldbuf[1] & 0xff;
   2218             } else if (field == ENTRY_9f) {
   2219                 fmt3rf->ENTRY_9_0_15 = fldbuf[0] & 0xffff;
   2220                 fmt3rf->ENTRY_9_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2221             }
   2222         }
   2223         break;
   2224 
   2225     case L3_DEFIP_ALPM_ROUTE_FMT4_FULLfmt: {
   2226             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT4_FULL_t *fmt4rf = (void *)entbuf;
   2227             if (field == ENTRY_0f) {
   2228                 fmt4rf->ENTRY_0_0_31 = fldbuf[0];
   2229                 fmt4rf->ENTRY_0_32_55 = fldbuf[1] & 0xffffff;
   2230             } else if (field == ENTRY_1f) {
   2231                 fmt4rf->ENTRY_1_0_7 = fldbuf[0] & 0xff;
   2232                 fmt4rf->ENTRY_1_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2233                 fmt4rf->ENTRY_1_40_55 = ((fldbuf[1] >> 8) & 0xffff);
   2234             } else if (field == ENTRY_2f) {
   2235                 fmt4rf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2236                 fmt4rf->ENTRY_2_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2237                 fmt4rf->ENTRY_2_48_55 = (fldbuf[1] >> 16) & 0xff;
   2238             } else if (field == ENTRY_3f) {
   2239                 fmt4rf->ENTRY_3_0_23 = fldbuf[0] & 0xffffff;
   2240                 fmt4rf->ENTRY_3_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2241             } else if (field == ENTRY_4f) {
   2242                 fmt4rf->ENTRY_4_0_31 = fldbuf[0];
   2243                 fmt4rf->ENTRY_4_32_55 = fldbuf[1] & 0xffffff;
   2244             } else if (field == ENTRY_5f) {
   2245                 fmt4rf->ENTRY_5_0_7 = fldbuf[0] & 0xff;
   2246                 fmt4rf->ENTRY_5_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2247                 fmt4rf->ENTRY_5_40_55 = ((fldbuf[1] >> 8) & 0xffff);
   2248             } else if (field == ENTRY_6f) {
   2249                 fmt4rf->ENTRY_6_0_15 = fldbuf[0] & 0xffff;
   2250                 fmt4rf->ENTRY_6_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2251                 fmt4rf->ENTRY_6_48_55 = (fldbuf[1] >> 16) & 0xff;
   2252             } else if (field == ENTRY_7f) {
   2253                 fmt4rf->ENTRY_7_0_23 = fldbuf[0] & 0xffffff;
   2254                 fmt4rf->ENTRY_7_24_55 = ((fldbuf[1] & 0xffffff) << 8) | ((fldbuf[0] >> 24) & 0xff);
   2255             }
   2256         }
   2257         break;
   2258 
   2259     case L3_DEFIP_ALPM_ROUTE_FMT5_FULLfmt: {
   2260             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT5_FULL_t *fmt5rf = (void *)entbuf;
   2261             if (field == ENTRY_0f) {
   2262                 fmt5rf->ENTRY_0_0_31 = fldbuf[0];
   2263                 fmt5rf->ENTRY_0_32_63 = fldbuf[1];
   2264             } else if (field == ENTRY_1f) {
   2265                 fmt5rf->ENTRY_1_0_31 = fldbuf[0];
   2266                 fmt5rf->ENTRY_1_32_63 = fldbuf[1];
   2267             } else if (field == ENTRY_2f) {
   2268                 fmt5rf->ENTRY_2_0_31 = fldbuf[0];
   2269                 fmt5rf->ENTRY_2_32_63 = fldbuf[1];
   2270             } else if (field == ENTRY_3f) {
   2271                 fmt5rf->ENTRY_3_0_31 = fldbuf[0];
   2272                 fmt5rf->ENTRY_3_32_63 = fldbuf[1];
   2273             } else if (field == ENTRY_4f) {
   2274                 fmt5rf->ENTRY_4_0_31 = fldbuf[0];
   2275                 fmt5rf->ENTRY_4_32_63 = fldbuf[1];
   2276             } else if (field == ENTRY_5f) {
   2277                 fmt5rf->ENTRY_5_0_31 = fldbuf[0];
   2278                 fmt5rf->ENTRY_5_32_63 = fldbuf[1];
   2279             } else if (field == ENTRY_6f) {
   2280                 fmt5rf->ENTRY_6_0_31 = fldbuf[0];
   2281                 fmt5rf->ENTRY_6_32_63 = fldbuf[1];
   2282             }
   2283         }
   2284         break;
   2285 
   2286     case L3_DEFIP_ALPM_ROUTE_FMT9_FULLfmt: {
   2287             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT9_FULL_t *fmt9rf = (void *)entbuf;
   2288             if (field == ENTRY_0f) {
   2289                 fmt9rf->ENTRY_0_0_31 = fldbuf[0];
   2290                 fmt9rf->ENTRY_0_32_63 = fldbuf[1];
   2291                 fmt9rf->ENTRY_0_64_95 = fldbuf[2];
   2292                 fmt9rf->ENTRY_0_96_127 = fldbuf[3];
   2293                 fmt9rf->ENTRY_0_128_151 = fldbuf[4] & 0xffffff;
   2294             } else if (field == ENTRY_1f) {
   2295                 fmt9rf->ENTRY_1_0_7 = fldbuf[0] & 0xff;
   2296                 fmt9rf->ENTRY_1_8_39 = ((fldbuf[1] & 0xff) << 24) | ((fldbuf[0] >> 8) & 0xffffff);
   2297                 fmt9rf->ENTRY_1_40_71 = ((fldbuf[2] & 0xff) << 24) | ((fldbuf[1] >> 8) & 0xffffff);
   2298                 fmt9rf->ENTRY_1_72_103 = ((fldbuf[3] & 0xff) << 24) | ((fldbuf[2] >> 8) & 0xffffff);
   2299                 fmt9rf->ENTRY_1_104_135 = ((fldbuf[4] & 0xff) << 24) | ((fldbuf[3] >> 8) & 0xffffff);
   2300                 fmt9rf->ENTRY_1_136_151 = (fldbuf[4] >> 8) & 0xffff;
   2301             } else if (field == ENTRY_2f) {
   2302                 fmt9rf->ENTRY_2_0_15 = fldbuf[0] & 0xffff;
   2303                 fmt9rf->ENTRY_2_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2304                 fmt9rf->ENTRY_2_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2305                 fmt9rf->ENTRY_2_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2306                 fmt9rf->ENTRY_2_112_143 = ((fldbuf[4] & 0xffff) << 16) | ((fldbuf[3] >> 16) & 0xffff);
   2307                 fmt9rf->ENTRY_2_144_151 = (fldbuf[4] >> 16) & 0xff;
   2308             }
   2309         }
   2310         break;
   2311 
   2312     case L3_DEFIP_ALPM_ROUTE_FMT12_FULLfmt: {
   2313             th3_fmt_L3_DEFIP_ALPM_ROUTE_FMT12_FULL_t *fmt12rf = (void *)entbuf;
   2314             if (field == ENTRY_0f) {
   2315                 fmt12rf->ENTRY_0_0_31 = fldbuf[0];
   2316                 fmt12rf->ENTRY_0_32_63 = fldbuf[1];
   2317                 fmt12rf->ENTRY_0_64_95 = fldbuf[2];
   2318                 fmt12rf->ENTRY_0_96_127 = fldbuf[3];
   2319                 fmt12rf->ENTRY_0_128_159 = fldbuf[4];
   2320                 fmt12rf->ENTRY_0_160_175 = fldbuf[5] & 0xffff;
   2321             } else if (field == ENTRY_1f) {
   2322                 fmt12rf->ENTRY_1_0_15 = fldbuf[0] & 0xffff;
   2323                 fmt12rf->ENTRY_1_16_47 = ((fldbuf[1] & 0xffff) << 16) | ((fldbuf[0] >> 16) & 0xffff);
   2324                 fmt12rf->ENTRY_1_48_79 = ((fldbuf[2] & 0xffff) << 16) | ((fldbuf[1] >> 16) & 0xffff);
   2325                 fmt12rf->ENTRY_1_80_111 = ((fldbuf[3] & 0xffff) << 16) | ((fldbuf[2] >> 16) & 0xffff);
   2326                 fmt12rf->ENTRY_1_112_143 = ((fldbuf[4] & 0xffff) << 16) | ((fldbuf[3] >> 16) & 0xffff);
   2327                 fmt12rf->ENTRY_1_144_175 = ((fldbuf[5] & 0xffff) << 16) | ((fldbuf[4] >> 16) & 0xffff);
   2328             }
   2329         }
   2330         break;
   2331 
   2332     default:
   2333         assert(0);
   2334         break;
   2335     }
   2336 }
   2337 #endif
   2338 
   2339 typedef struct {
   2340 #ifdef  LE_HOST
   2341     uint32  VLAN_ID:12,
   2342             __PAD0:2,
   2343             PORT_NUM:8,
   2344             COPY_TO_CPU:1,
   2345             DROP:1,
   2346             ENTRY_TYPE:2,
   2347             T:1,
   2348             __PAD1:5;
   2349 #else
   2350     uint32  __PAD1:5,
   2351             T:1,
   2352             ENTRY_TYPE:2,
   2353             DROP:1,
   2354             COPY_TO_CPU:1,
   2355             PORT_NUM:8,
   2356             __PAD0:2,
   2357             VLAN_ID:12;
   2358 #endif  /* LE_HOST */
   2359 
   2360     uint32 __WORD_PAD0;
   2361 } th3_mem_ING_L3_NEXT_HOP_t;
   2362 
   2363 typedef struct {
   2364     /* Word0: bit 0 - bit 31 */
   2365 #ifdef  LE_HOST
   2366     uint32  ENTRY_TYPE:2,
   2367             __PAD0:8,
   2368             L3__CLASS_ID:7,
   2369             __PAD1:5,
   2370             IFP_ACTIONS__L3_UC_DA_DISABLE:1,
   2371             IFP_ACTIONS__L3_UC_SA_DISABLE:1,
   2372             IFP_ACTIONS__L3_UC_TTL_DISABLE:1,
   2373             IFP_ACTIONS__L3_UC_VLAN_DISABLE:1,
   2374             __PAD2:6;
   2375 #else
   2376     uint32  __PAD2:6,
   2377             IFP_ACTIONS__L3_UC_VLAN_DISABLE:1,
   2378             IFP_ACTIONS__L3_UC_TTL_DISABLE:1,
   2379             IFP_ACTIONS__L3_UC_SA_DISABLE:1,
   2380             IFP_ACTIONS__L3_UC_DA_DISABLE:1,
   2381             __PAD1:5,
   2382             L3__CLASS_ID:7,
   2383             __PAD0:8,
   2384             ENTRY_TYPE:2;
   2385 #endif  /* LE_HOST */
   2386 
   2387     /* Word1: bit 32 - bit 63 */
   2388 #ifdef  LE_HOST
   2389     uint32  __PAD3:1,
   2390             L3__L3_UC_DA_DISABLE:1,
   2391             L3__L3_UC_SA_DISABLE:1,
   2392             L3__L3_UC_TTL_DISABLE:1,
   2393             L3__L3_UC_VLAN_DISABLE:1,
   2394             __PAD4:11,
   2395             MPLS__MAC_DA_PROFILE_INDEX:9,
   2396             __PAD5:5,
   2397             MPLS__MPLS_LABEL_0_1:2;
   2398 #else
   2399     uint32  MPLS__MPLS_LABEL_0_1:2,
   2400             __PAD5:5,
   2401             MPLS__MAC_DA_PROFILE_INDEX:9,
   2402             __PAD4:11,
   2403             L3__L3_UC_VLAN_DISABLE:1,
   2404             L3__L3_UC_TTL_DISABLE:1,
   2405             L3__L3_UC_SA_DISABLE:1,
   2406             L3__L3_UC_DA_DISABLE:1,
   2407             __PAD3:1;
   2408 #endif  /* LE_HOST */
   2409 
   2410     /* Word2: bit 64 - bit 95 */
   2411 #ifdef  LE_HOST
   2412     uint32  MPLS__MPLS_LABEL_2_19:18,
   2413             __PAD6:14;
   2414 #else
   2415     uint32  __PAD6:14,
   2416             MPLS__MPLS_LABEL_2_19:18;
   2417 #endif  /* LE_HOST */
   2418 
   2419     /* Word3 */
   2420     uint32 __WORD_PAD0;
   2421 } th3_mem_EGR_L3_NEXT_HOP_t;
   2422 
   2423 typedef struct {
   2424 #ifdef  LE_HOST
   2425     uint32  INTF_NUM:13,
   2426             __PAD0:19;
   2427 #else
   2428     uint32  __PAD0:19,
   2429             INTF_NUM:13;
   2430 #endif  /* LE_HOST */
   2431 } th3_mem_EGR_L3_NEXT_HOP_2_t;
   2432 
   2433 #endif /* _BCM_INT_ALPM_TH3_ACC_H_ */
   2434