root/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*  Marvell OcteonTx2 RVU Admin Function driver
   3  *
   4  * Copyright (C) 2018 Marvell International Ltd.
   5  *
   6  * This program is free software; you can redistribute it and/or modify
   7  * it under the terms of the GNU General Public License version 2 as
   8  * published by the Free Software Foundation.
   9  */
  10 
  11 #ifndef RVU_STRUCT_H
  12 #define RVU_STRUCT_H
  13 
  14 /* RVU Block Address Enumeration */
  15 enum rvu_block_addr_e {
  16         BLKADDR_RVUM    = 0x0ULL,
  17         BLKADDR_LMT     = 0x1ULL,
  18         BLKADDR_MSIX    = 0x2ULL,
  19         BLKADDR_NPA     = 0x3ULL,
  20         BLKADDR_NIX0    = 0x4ULL,
  21         BLKADDR_NIX1    = 0x5ULL,
  22         BLKADDR_NPC     = 0x6ULL,
  23         BLKADDR_SSO     = 0x7ULL,
  24         BLKADDR_SSOW    = 0x8ULL,
  25         BLKADDR_TIM     = 0x9ULL,
  26         BLKADDR_CPT0    = 0xaULL,
  27         BLKADDR_CPT1    = 0xbULL,
  28         BLKADDR_NDC0    = 0xcULL,
  29         BLKADDR_NDC1    = 0xdULL,
  30         BLKADDR_NDC2    = 0xeULL,
  31         BLK_COUNT       = 0xfULL,
  32 };
  33 
  34 /* RVU Block Type Enumeration */
  35 enum rvu_block_type_e {
  36         BLKTYPE_RVUM = 0x0,
  37         BLKTYPE_MSIX = 0x1,
  38         BLKTYPE_LMT  = 0x2,
  39         BLKTYPE_NIX  = 0x3,
  40         BLKTYPE_NPA  = 0x4,
  41         BLKTYPE_NPC  = 0x5,
  42         BLKTYPE_SSO  = 0x6,
  43         BLKTYPE_SSOW = 0x7,
  44         BLKTYPE_TIM  = 0x8,
  45         BLKTYPE_CPT  = 0x9,
  46         BLKTYPE_NDC  = 0xa,
  47         BLKTYPE_MAX  = 0xa,
  48 };
  49 
  50 /* RVU Admin function Interrupt Vector Enumeration */
  51 enum rvu_af_int_vec_e {
  52         RVU_AF_INT_VEC_POISON = 0x0,
  53         RVU_AF_INT_VEC_PFFLR  = 0x1,
  54         RVU_AF_INT_VEC_PFME   = 0x2,
  55         RVU_AF_INT_VEC_GEN    = 0x3,
  56         RVU_AF_INT_VEC_MBOX   = 0x4,
  57         RVU_AF_INT_VEC_CNT    = 0x5,
  58 };
  59 
  60 /**
  61  * RVU PF Interrupt Vector Enumeration
  62  */
  63 enum rvu_pf_int_vec_e {
  64         RVU_PF_INT_VEC_VFFLR0     = 0x0,
  65         RVU_PF_INT_VEC_VFFLR1     = 0x1,
  66         RVU_PF_INT_VEC_VFME0      = 0x2,
  67         RVU_PF_INT_VEC_VFME1      = 0x3,
  68         RVU_PF_INT_VEC_VFPF_MBOX0 = 0x4,
  69         RVU_PF_INT_VEC_VFPF_MBOX1 = 0x5,
  70         RVU_PF_INT_VEC_AFPF_MBOX  = 0x6,
  71         RVU_PF_INT_VEC_CNT        = 0x7,
  72 };
  73 
  74 /* NPA admin queue completion enumeration */
  75 enum npa_aq_comp {
  76         NPA_AQ_COMP_NOTDONE    = 0x0,
  77         NPA_AQ_COMP_GOOD       = 0x1,
  78         NPA_AQ_COMP_SWERR      = 0x2,
  79         NPA_AQ_COMP_CTX_POISON = 0x3,
  80         NPA_AQ_COMP_CTX_FAULT  = 0x4,
  81         NPA_AQ_COMP_LOCKERR    = 0x5,
  82 };
  83 
  84 /* NPA admin queue context types */
  85 enum npa_aq_ctype {
  86         NPA_AQ_CTYPE_AURA = 0x0,
  87         NPA_AQ_CTYPE_POOL = 0x1,
  88 };
  89 
  90 /* NPA admin queue instruction opcodes */
  91 enum npa_aq_instop {
  92         NPA_AQ_INSTOP_NOP    = 0x0,
  93         NPA_AQ_INSTOP_INIT   = 0x1,
  94         NPA_AQ_INSTOP_WRITE  = 0x2,
  95         NPA_AQ_INSTOP_READ   = 0x3,
  96         NPA_AQ_INSTOP_LOCK   = 0x4,
  97         NPA_AQ_INSTOP_UNLOCK = 0x5,
  98 };
  99 
 100 /* NPA admin queue instruction structure */
 101 struct npa_aq_inst_s {
 102 #if defined(__BIG_ENDIAN_BITFIELD)
 103         u64 doneint               : 1;  /* W0 */
 104         u64 reserved_44_62        : 19;
 105         u64 cindex                : 20;
 106         u64 reserved_17_23        : 7;
 107         u64 lf                    : 9;
 108         u64 ctype                 : 4;
 109         u64 op                    : 4;
 110 #else
 111         u64 op                    : 4;
 112         u64 ctype                 : 4;
 113         u64 lf                    : 9;
 114         u64 reserved_17_23        : 7;
 115         u64 cindex                : 20;
 116         u64 reserved_44_62        : 19;
 117         u64 doneint               : 1;
 118 #endif
 119         u64 res_addr;                   /* W1 */
 120 };
 121 
 122 /* NPA admin queue result structure */
 123 struct npa_aq_res_s {
 124 #if defined(__BIG_ENDIAN_BITFIELD)
 125         u64 reserved_17_63        : 47; /* W0 */
 126         u64 doneint               : 1;
 127         u64 compcode              : 8;
 128         u64 ctype                 : 4;
 129         u64 op                    : 4;
 130 #else
 131         u64 op                    : 4;
 132         u64 ctype                 : 4;
 133         u64 compcode              : 8;
 134         u64 doneint               : 1;
 135         u64 reserved_17_63        : 47;
 136 #endif
 137         u64 reserved_64_127;            /* W1 */
 138 };
 139 
 140 struct npa_aura_s {
 141         u64 pool_addr;                  /* W0 */
 142 #if defined(__BIG_ENDIAN_BITFIELD)      /* W1 */
 143         u64 avg_level             : 8;
 144         u64 reserved_118_119      : 2;
 145         u64 shift                 : 6;
 146         u64 aura_drop             : 8;
 147         u64 reserved_98_103       : 6;
 148         u64 bp_ena                : 2;
 149         u64 aura_drop_ena         : 1;
 150         u64 pool_drop_ena         : 1;
 151         u64 reserved_93           : 1;
 152         u64 avg_con               : 9;
 153         u64 pool_way_mask         : 16;
 154         u64 pool_caching          : 1;
 155         u64 reserved_65           : 2;
 156         u64 ena                   : 1;
 157 #else
 158         u64 ena                   : 1;
 159         u64 reserved_65           : 2;
 160         u64 pool_caching          : 1;
 161         u64 pool_way_mask         : 16;
 162         u64 avg_con               : 9;
 163         u64 reserved_93           : 1;
 164         u64 pool_drop_ena         : 1;
 165         u64 aura_drop_ena         : 1;
 166         u64 bp_ena                : 2;
 167         u64 reserved_98_103       : 6;
 168         u64 aura_drop             : 8;
 169         u64 shift                 : 6;
 170         u64 reserved_118_119      : 2;
 171         u64 avg_level             : 8;
 172 #endif
 173 #if defined(__BIG_ENDIAN_BITFIELD)      /* W2 */
 174         u64 reserved_189_191      : 3;
 175         u64 nix1_bpid             : 9;
 176         u64 reserved_177_179      : 3;
 177         u64 nix0_bpid             : 9;
 178         u64 reserved_164_167      : 4;
 179         u64 count                 : 36;
 180 #else
 181         u64 count                 : 36;
 182         u64 reserved_164_167      : 4;
 183         u64 nix0_bpid             : 9;
 184         u64 reserved_177_179      : 3;
 185         u64 nix1_bpid             : 9;
 186         u64 reserved_189_191      : 3;
 187 #endif
 188 #if defined(__BIG_ENDIAN_BITFIELD)      /* W3 */
 189         u64 reserved_252_255      : 4;
 190         u64 fc_hyst_bits          : 4;
 191         u64 fc_stype              : 2;
 192         u64 fc_up_crossing        : 1;
 193         u64 fc_ena                : 1;
 194         u64 reserved_240_243      : 4;
 195         u64 bp                    : 8;
 196         u64 reserved_228_231      : 4;
 197         u64 limit                 : 36;
 198 #else
 199         u64 limit                 : 36;
 200         u64 reserved_228_231      : 4;
 201         u64 bp                    : 8;
 202         u64 reserved_240_243      : 4;
 203         u64 fc_ena                : 1;
 204         u64 fc_up_crossing        : 1;
 205         u64 fc_stype              : 2;
 206         u64 fc_hyst_bits          : 4;
 207         u64 reserved_252_255      : 4;
 208 #endif
 209         u64 fc_addr;                    /* W4 */
 210 #if defined(__BIG_ENDIAN_BITFIELD)      /* W5 */
 211         u64 reserved_379_383      : 5;
 212         u64 err_qint_idx          : 7;
 213         u64 reserved_371          : 1;
 214         u64 thresh_qint_idx       : 7;
 215         u64 reserved_363          : 1;
 216         u64 thresh_up             : 1;
 217         u64 thresh_int_ena        : 1;
 218         u64 thresh_int            : 1;
 219         u64 err_int_ena           : 8;
 220         u64 err_int               : 8;
 221         u64 update_time           : 16;
 222         u64 pool_drop             : 8;
 223 #else
 224         u64 pool_drop             : 8;
 225         u64 update_time           : 16;
 226         u64 err_int               : 8;
 227         u64 err_int_ena           : 8;
 228         u64 thresh_int            : 1;
 229         u64 thresh_int_ena        : 1;
 230         u64 thresh_up             : 1;
 231         u64 reserved_363          : 1;
 232         u64 thresh_qint_idx       : 7;
 233         u64 reserved_371          : 1;
 234         u64 err_qint_idx          : 7;
 235         u64 reserved_379_383      : 5;
 236 #endif
 237 #if defined(__BIG_ENDIAN_BITFIELD)      /* W6 */
 238         u64 reserved_420_447      : 28;
 239         u64 thresh                : 36;
 240 #else
 241         u64 thresh                : 36;
 242         u64 reserved_420_447      : 28;
 243 #endif
 244         u64 reserved_448_511;           /* W7 */
 245 };
 246 
 247 struct npa_pool_s {
 248         u64 stack_base;                 /* W0 */
 249 #if defined(__BIG_ENDIAN_BITFIELD)      /* W1 */
 250         u64 reserved_115_127      : 13;
 251         u64 buf_size              : 11;
 252         u64 reserved_100_103      : 4;
 253         u64 buf_offset            : 12;
 254         u64 stack_way_mask        : 16;
 255         u64 reserved_70_71        : 3;
 256         u64 stack_caching         : 1;
 257         u64 reserved_66_67        : 2;
 258         u64 nat_align             : 1;
 259         u64 ena                   : 1;
 260 #else
 261         u64 ena                   : 1;
 262         u64 nat_align             : 1;
 263         u64 reserved_66_67        : 2;
 264         u64 stack_caching         : 1;
 265         u64 reserved_70_71        : 3;
 266         u64 stack_way_mask        : 16;
 267         u64 buf_offset            : 12;
 268         u64 reserved_100_103      : 4;
 269         u64 buf_size              : 11;
 270         u64 reserved_115_127      : 13;
 271 #endif
 272 #if defined(__BIG_ENDIAN_BITFIELD)      /* W2 */
 273         u64 stack_pages           : 32;
 274         u64 stack_max_pages       : 32;
 275 #else
 276         u64 stack_max_pages       : 32;
 277         u64 stack_pages           : 32;
 278 #endif
 279 #if defined(__BIG_ENDIAN_BITFIELD)      /* W3 */
 280         u64 reserved_240_255      : 16;
 281         u64 op_pc                 : 48;
 282 #else
 283         u64 op_pc                 : 48;
 284         u64 reserved_240_255      : 16;
 285 #endif
 286 #if defined(__BIG_ENDIAN_BITFIELD)      /* W4 */
 287         u64 reserved_316_319      : 4;
 288         u64 update_time           : 16;
 289         u64 reserved_297_299      : 3;
 290         u64 fc_up_crossing        : 1;
 291         u64 fc_hyst_bits          : 4;
 292         u64 fc_stype              : 2;
 293         u64 fc_ena                : 1;
 294         u64 avg_con               : 9;
 295         u64 avg_level             : 8;
 296         u64 reserved_270_271      : 2;
 297         u64 shift                 : 6;
 298         u64 reserved_260_263      : 4;
 299         u64 stack_offset          : 4;
 300 #else
 301         u64 stack_offset          : 4;
 302         u64 reserved_260_263      : 4;
 303         u64 shift                 : 6;
 304         u64 reserved_270_271      : 2;
 305         u64 avg_level             : 8;
 306         u64 avg_con               : 9;
 307         u64 fc_ena                : 1;
 308         u64 fc_stype              : 2;
 309         u64 fc_hyst_bits          : 4;
 310         u64 fc_up_crossing        : 1;
 311         u64 reserved_297_299      : 3;
 312         u64 update_time           : 16;
 313         u64 reserved_316_319      : 4;
 314 #endif
 315         u64 fc_addr;                    /* W5 */
 316         u64 ptr_start;                  /* W6 */
 317         u64 ptr_end;                    /* W7 */
 318 #if defined(__BIG_ENDIAN_BITFIELD)      /* W8 */
 319         u64 reserved_571_575      : 5;
 320         u64 err_qint_idx          : 7;
 321         u64 reserved_563          : 1;
 322         u64 thresh_qint_idx       : 7;
 323         u64 reserved_555          : 1;
 324         u64 thresh_up             : 1;
 325         u64 thresh_int_ena        : 1;
 326         u64 thresh_int            : 1;
 327         u64 err_int_ena           : 8;
 328         u64 err_int               : 8;
 329         u64 reserved_512_535      : 24;
 330 #else
 331         u64 reserved_512_535      : 24;
 332         u64 err_int               : 8;
 333         u64 err_int_ena           : 8;
 334         u64 thresh_int            : 1;
 335         u64 thresh_int_ena        : 1;
 336         u64 thresh_up             : 1;
 337         u64 reserved_555          : 1;
 338         u64 thresh_qint_idx       : 7;
 339         u64 reserved_563          : 1;
 340         u64 err_qint_idx          : 7;
 341         u64 reserved_571_575      : 5;
 342 #endif
 343 #if defined(__BIG_ENDIAN_BITFIELD)      /* W9 */
 344         u64 reserved_612_639      : 28;
 345         u64 thresh                : 36;
 346 #else
 347         u64 thresh                : 36;
 348         u64 reserved_612_639      : 28;
 349 #endif
 350         u64 reserved_640_703;           /* W10 */
 351         u64 reserved_704_767;           /* W11 */
 352         u64 reserved_768_831;           /* W12 */
 353         u64 reserved_832_895;           /* W13 */
 354         u64 reserved_896_959;           /* W14 */
 355         u64 reserved_960_1023;          /* W15 */
 356 };
 357 
 358 /* NIX admin queue completion status */
 359 enum nix_aq_comp {
 360         NIX_AQ_COMP_NOTDONE        = 0x0,
 361         NIX_AQ_COMP_GOOD           = 0x1,
 362         NIX_AQ_COMP_SWERR          = 0x2,
 363         NIX_AQ_COMP_CTX_POISON     = 0x3,
 364         NIX_AQ_COMP_CTX_FAULT      = 0x4,
 365         NIX_AQ_COMP_LOCKERR        = 0x5,
 366         NIX_AQ_COMP_SQB_ALLOC_FAIL = 0x6,
 367 };
 368 
 369 /* NIX admin queue context types */
 370 enum nix_aq_ctype {
 371         NIX_AQ_CTYPE_RQ   = 0x0,
 372         NIX_AQ_CTYPE_SQ   = 0x1,
 373         NIX_AQ_CTYPE_CQ   = 0x2,
 374         NIX_AQ_CTYPE_MCE  = 0x3,
 375         NIX_AQ_CTYPE_RSS  = 0x4,
 376         NIX_AQ_CTYPE_DYNO = 0x5,
 377 };
 378 
 379 /* NIX admin queue instruction opcodes */
 380 enum nix_aq_instop {
 381         NIX_AQ_INSTOP_NOP    = 0x0,
 382         NIX_AQ_INSTOP_INIT   = 0x1,
 383         NIX_AQ_INSTOP_WRITE  = 0x2,
 384         NIX_AQ_INSTOP_READ   = 0x3,
 385         NIX_AQ_INSTOP_LOCK   = 0x4,
 386         NIX_AQ_INSTOP_UNLOCK = 0x5,
 387 };
 388 
 389 /* NIX admin queue instruction structure */
 390 struct nix_aq_inst_s {
 391 #if defined(__BIG_ENDIAN_BITFIELD)
 392         u64 doneint             : 1;    /* W0 */
 393         u64 reserved_44_62      : 19;
 394         u64 cindex              : 20;
 395         u64 reserved_15_23      : 9;
 396         u64 lf                  : 7;
 397         u64 ctype               : 4;
 398         u64 op                  : 4;
 399 #else
 400         u64 op                  : 4;
 401         u64 ctype               : 4;
 402         u64 lf                  : 7;
 403         u64 reserved_15_23      : 9;
 404         u64 cindex              : 20;
 405         u64 reserved_44_62      : 19;
 406         u64 doneint             : 1;
 407 #endif
 408         u64 res_addr;                   /* W1 */
 409 };
 410 
 411 /* NIX admin queue result structure */
 412 struct nix_aq_res_s {
 413 #if defined(__BIG_ENDIAN_BITFIELD)
 414         u64 reserved_17_63      : 47;   /* W0 */
 415         u64 doneint             : 1;
 416         u64 compcode            : 8;
 417         u64 ctype               : 4;
 418         u64 op                  : 4;
 419 #else
 420         u64 op                  : 4;
 421         u64 ctype               : 4;
 422         u64 compcode            : 8;
 423         u64 doneint             : 1;
 424         u64 reserved_17_63      : 47;
 425 #endif
 426         u64 reserved_64_127;            /* W1 */
 427 };
 428 
 429 /* NIX Completion queue context structure */
 430 struct nix_cq_ctx_s {
 431         u64 base;
 432 #if defined(__BIG_ENDIAN_BITFIELD)      /* W1 */
 433         u64 wrptr               : 20;
 434         u64 avg_con             : 9;
 435         u64 cint_idx            : 7;
 436         u64 cq_err              : 1;
 437         u64 qint_idx            : 7;
 438         u64 rsvd_81_83          : 3;
 439         u64 bpid                : 9;
 440         u64 rsvd_69_71          : 3;
 441         u64 bp_ena              : 1;
 442         u64 rsvd_64_67          : 4;
 443 #else
 444         u64 rsvd_64_67          : 4;
 445         u64 bp_ena              : 1;
 446         u64 rsvd_69_71          : 3;
 447         u64 bpid                : 9;
 448         u64 rsvd_81_83          : 3;
 449         u64 qint_idx            : 7;
 450         u64 cq_err              : 1;
 451         u64 cint_idx            : 7;
 452         u64 avg_con             : 9;
 453         u64 wrptr               : 20;
 454 #endif
 455 #if defined(__BIG_ENDIAN_BITFIELD)  /* W2 */
 456         u64 update_time         : 16;
 457         u64 avg_level           : 8;
 458         u64 head                : 20;
 459         u64 tail                : 20;
 460 #else
 461         u64 tail                : 20;
 462         u64 head                : 20;
 463         u64 avg_level           : 8;
 464         u64 update_time         : 16;
 465 #endif
 466 #if defined(__BIG_ENDIAN_BITFIELD)  /* W3 */
 467         u64 cq_err_int_ena      : 8;
 468         u64 cq_err_int          : 8;
 469         u64 qsize               : 4;
 470         u64 rsvd_233_235        : 3;
 471         u64 caching             : 1;
 472         u64 substream           : 20;
 473         u64 rsvd_210_211        : 2;
 474         u64 ena                 : 1;
 475         u64 drop_ena            : 1;
 476         u64 drop                : 8;
 477         u64 dp                  : 8;
 478 #else
 479         u64 dp                  : 8;
 480         u64 drop                : 8;
 481         u64 drop_ena            : 1;
 482         u64 ena                 : 1;
 483         u64 rsvd_210_211        : 2;
 484         u64 substream           : 20;
 485         u64 caching             : 1;
 486         u64 rsvd_233_235        : 3;
 487         u64 qsize               : 4;
 488         u64 cq_err_int          : 8;
 489         u64 cq_err_int_ena      : 8;
 490 #endif
 491 };
 492 
 493 /* NIX Receive queue context structure */
 494 struct nix_rq_ctx_s {
 495 #if defined(__BIG_ENDIAN_BITFIELD)  /* W0 */
 496         u64 wqe_aura      : 20;
 497         u64 substream     : 20;
 498         u64 cq            : 20;
 499         u64 ena_wqwd      : 1;
 500         u64 ipsech_ena    : 1;
 501         u64 sso_ena       : 1;
 502         u64 ena           : 1;
 503 #else
 504         u64 ena           : 1;
 505         u64 sso_ena       : 1;
 506         u64 ipsech_ena    : 1;
 507         u64 ena_wqwd      : 1;
 508         u64 cq            : 20;
 509         u64 substream     : 20;
 510         u64 wqe_aura      : 20;
 511 #endif
 512 #if defined(__BIG_ENDIAN_BITFIELD)  /* W1 */
 513         u64 rsvd_127_122  : 6;
 514         u64 lpb_drop_ena  : 1;
 515         u64 spb_drop_ena  : 1;
 516         u64 xqe_drop_ena  : 1;
 517         u64 wqe_caching   : 1;
 518         u64 pb_caching    : 2;
 519         u64 sso_tt        : 2;
 520         u64 sso_grp       : 10;
 521         u64 lpb_aura      : 20;
 522         u64 spb_aura      : 20;
 523 #else
 524         u64 spb_aura      : 20;
 525         u64 lpb_aura      : 20;
 526         u64 sso_grp       : 10;
 527         u64 sso_tt        : 2;
 528         u64 pb_caching    : 2;
 529         u64 wqe_caching   : 1;
 530         u64 xqe_drop_ena  : 1;
 531         u64 spb_drop_ena  : 1;
 532         u64 lpb_drop_ena  : 1;
 533         u64 rsvd_127_122  : 6;
 534 #endif
 535 #if defined(__BIG_ENDIAN_BITFIELD)  /* W2 */
 536         u64 xqe_hdr_split : 1;
 537         u64 xqe_imm_copy  : 1;
 538         u64 rsvd_189_184  : 6;
 539         u64 xqe_imm_size  : 6;
 540         u64 later_skip    : 6;
 541         u64 rsvd_171      : 1;
 542         u64 first_skip    : 7;
 543         u64 lpb_sizem1    : 12;
 544         u64 spb_ena       : 1;
 545         u64 rsvd_150_148  : 3;
 546         u64 wqe_skip      : 2;
 547         u64 spb_sizem1    : 6;
 548         u64 rsvd_139_128  : 12;
 549 #else
 550         u64 rsvd_139_128  : 12;
 551         u64 spb_sizem1    : 6;
 552         u64 wqe_skip      : 2;
 553         u64 rsvd_150_148  : 3;
 554         u64 spb_ena       : 1;
 555         u64 lpb_sizem1    : 12;
 556         u64 first_skip    : 7;
 557         u64 rsvd_171      : 1;
 558         u64 later_skip    : 6;
 559         u64 xqe_imm_size  : 6;
 560         u64 rsvd_189_184  : 6;
 561         u64 xqe_imm_copy  : 1;
 562         u64 xqe_hdr_split : 1;
 563 #endif
 564 #if defined(__BIG_ENDIAN_BITFIELD)  /* W3 */
 565         u64 spb_pool_pass : 8;
 566         u64 spb_pool_drop : 8;
 567         u64 spb_aura_pass : 8;
 568         u64 spb_aura_drop : 8;
 569         u64 wqe_pool_pass : 8;
 570         u64 wqe_pool_drop : 8;
 571         u64 xqe_pass      : 8;
 572         u64 xqe_drop      : 8;
 573 #else
 574         u64 xqe_drop      : 8;
 575         u64 xqe_pass      : 8;
 576         u64 wqe_pool_drop : 8;
 577         u64 wqe_pool_pass : 8;
 578         u64 spb_aura_drop : 8;
 579         u64 spb_aura_pass : 8;
 580         u64 spb_pool_drop : 8;
 581         u64 spb_pool_pass : 8;
 582 #endif
 583 #if defined(__BIG_ENDIAN_BITFIELD)  /* W4 */
 584         u64 rsvd_319_315  : 5;
 585         u64 qint_idx      : 7;
 586         u64 rq_int_ena    : 8;
 587         u64 rq_int        : 8;
 588         u64 rsvd_291_288  : 4;
 589         u64 lpb_pool_pass : 8;
 590         u64 lpb_pool_drop : 8;
 591         u64 lpb_aura_pass : 8;
 592         u64 lpb_aura_drop : 8;
 593 #else
 594         u64 lpb_aura_drop : 8;
 595         u64 lpb_aura_pass : 8;
 596         u64 lpb_pool_drop : 8;
 597         u64 lpb_pool_pass : 8;
 598         u64 rsvd_291_288  : 4;
 599         u64 rq_int        : 8;
 600         u64 rq_int_ena    : 8;
 601         u64 qint_idx      : 7;
 602         u64 rsvd_319_315  : 5;
 603 #endif
 604 #if defined(__BIG_ENDIAN_BITFIELD)  /* W5 */
 605         u64 rsvd_383_366  : 18;
 606         u64 flow_tagw     : 6;
 607         u64 bad_utag      : 8;
 608         u64 good_utag     : 8;
 609         u64 ltag          : 24;
 610 #else
 611         u64 ltag          : 24;
 612         u64 good_utag     : 8;
 613         u64 bad_utag      : 8;
 614         u64 flow_tagw     : 6;
 615         u64 rsvd_383_366  : 18;
 616 #endif
 617 #if defined(__BIG_ENDIAN_BITFIELD)  /* W6 */
 618         u64 rsvd_447_432  : 16;
 619         u64 octs          : 48;
 620 #else
 621         u64 octs          : 48;
 622         u64 rsvd_447_432  : 16;
 623 #endif
 624 #if defined(__BIG_ENDIAN_BITFIELD)  /* W7 */
 625         u64 rsvd_511_496  : 16;
 626         u64 pkts          : 48;
 627 #else
 628         u64 pkts          : 48;
 629         u64 rsvd_511_496  : 16;
 630 #endif
 631 #if defined(__BIG_ENDIAN_BITFIELD)  /* W8 */
 632         u64 rsvd_575_560  : 16;
 633         u64 drop_octs     : 48;
 634 #else
 635         u64 drop_octs     : 48;
 636         u64 rsvd_575_560  : 16;
 637 #endif
 638 #if defined(__BIG_ENDIAN_BITFIELD)      /* W9 */
 639         u64 rsvd_639_624  : 16;
 640         u64 drop_pkts     : 48;
 641 #else
 642         u64 drop_pkts     : 48;
 643         u64 rsvd_639_624  : 16;
 644 #endif
 645 #if defined(__BIG_ENDIAN_BITFIELD)      /* W10 */
 646         u64 rsvd_703_688  : 16;
 647         u64 re_pkts       : 48;
 648 #else
 649         u64 re_pkts       : 48;
 650         u64 rsvd_703_688  : 16;
 651 #endif
 652         u64 rsvd_767_704;               /* W11 */
 653         u64 rsvd_831_768;               /* W12 */
 654         u64 rsvd_895_832;               /* W13 */
 655         u64 rsvd_959_896;               /* W14 */
 656         u64 rsvd_1023_960;              /* W15 */
 657 };
 658 
 659 /* NIX sqe sizes */
 660 enum nix_maxsqesz {
 661         NIX_MAXSQESZ_W16 = 0x0,
 662         NIX_MAXSQESZ_W8  = 0x1,
 663 };
 664 
 665 /* NIX SQB caching type */
 666 enum nix_stype {
 667         NIX_STYPE_STF = 0x0,
 668         NIX_STYPE_STT = 0x1,
 669         NIX_STYPE_STP = 0x2,
 670 };
 671 
 672 /* NIX Send queue context structure */
 673 struct nix_sq_ctx_s {
 674 #if defined(__BIG_ENDIAN_BITFIELD)  /* W0 */
 675         u64 sqe_way_mask          : 16;
 676         u64 cq                    : 20;
 677         u64 sdp_mcast             : 1;
 678         u64 substream             : 20;
 679         u64 qint_idx              : 6;
 680         u64 ena                   : 1;
 681 #else
 682         u64 ena                   : 1;
 683         u64 qint_idx              : 6;
 684         u64 substream             : 20;
 685         u64 sdp_mcast             : 1;
 686         u64 cq                    : 20;
 687         u64 sqe_way_mask          : 16;
 688 #endif
 689 #if defined(__BIG_ENDIAN_BITFIELD)  /* W1 */
 690         u64 sqb_count             : 16;
 691         u64 default_chan          : 12;
 692         u64 smq_rr_quantum        : 24;
 693         u64 sso_ena               : 1;
 694         u64 xoff                  : 1;
 695         u64 cq_ena                : 1;
 696         u64 smq                   : 9;
 697 #else
 698         u64 smq                   : 9;
 699         u64 cq_ena                : 1;
 700         u64 xoff                  : 1;
 701         u64 sso_ena               : 1;
 702         u64 smq_rr_quantum        : 24;
 703         u64 default_chan          : 12;
 704         u64 sqb_count             : 16;
 705 #endif
 706 #if defined(__BIG_ENDIAN_BITFIELD)  /* W2 */
 707         u64 rsvd_191              : 1;
 708         u64 sqe_stype             : 2;
 709         u64 sq_int_ena            : 8;
 710         u64 sq_int                : 8;
 711         u64 sqb_aura              : 20;
 712         u64 smq_rr_count          : 25;
 713 #else
 714         u64 smq_rr_count          : 25;
 715         u64 sqb_aura              : 20;
 716         u64 sq_int                : 8;
 717         u64 sq_int_ena            : 8;
 718         u64 sqe_stype             : 2;
 719         u64 rsvd_191              : 1;
 720 #endif
 721 #if defined(__BIG_ENDIAN_BITFIELD)  /* W3 */
 722         u64 rsvd_255_253          : 3;
 723         u64 smq_next_sq_vld       : 1;
 724         u64 smq_pend              : 1;
 725         u64 smenq_next_sqb_vld    : 1;
 726         u64 head_offset           : 6;
 727         u64 smenq_offset          : 6;
 728         u64 tail_offset           : 6;
 729         u64 smq_lso_segnum        : 8;
 730         u64 smq_next_sq           : 20;
 731         u64 mnq_dis               : 1;
 732         u64 lmt_dis               : 1;
 733         u64 cq_limit              : 8;
 734         u64 max_sqe_size          : 2;
 735 #else
 736         u64 max_sqe_size          : 2;
 737         u64 cq_limit              : 8;
 738         u64 lmt_dis               : 1;
 739         u64 mnq_dis               : 1;
 740         u64 smq_next_sq           : 20;
 741         u64 smq_lso_segnum        : 8;
 742         u64 tail_offset           : 6;
 743         u64 smenq_offset          : 6;
 744         u64 head_offset           : 6;
 745         u64 smenq_next_sqb_vld    : 1;
 746         u64 smq_pend              : 1;
 747         u64 smq_next_sq_vld       : 1;
 748         u64 rsvd_255_253          : 3;
 749 #endif
 750         u64 next_sqb              : 64;/* W4 */
 751         u64 tail_sqb              : 64;/* W5 */
 752         u64 smenq_sqb             : 64;/* W6 */
 753         u64 smenq_next_sqb        : 64;/* W7 */
 754         u64 head_sqb              : 64;/* W8 */
 755 #if defined(__BIG_ENDIAN_BITFIELD)  /* W9 */
 756         u64 rsvd_639_630          : 10;
 757         u64 vfi_lso_vld           : 1;
 758         u64 vfi_lso_vlan1_ins_ena : 1;
 759         u64 vfi_lso_vlan0_ins_ena : 1;
 760         u64 vfi_lso_mps           : 14;
 761         u64 vfi_lso_sb            : 8;
 762         u64 vfi_lso_sizem1        : 3;
 763         u64 vfi_lso_total         : 18;
 764         u64 rsvd_583_576          : 8;
 765 #else
 766         u64 rsvd_583_576          : 8;
 767         u64 vfi_lso_total         : 18;
 768         u64 vfi_lso_sizem1        : 3;
 769         u64 vfi_lso_sb            : 8;
 770         u64 vfi_lso_mps           : 14;
 771         u64 vfi_lso_vlan0_ins_ena : 1;
 772         u64 vfi_lso_vlan1_ins_ena : 1;
 773         u64 vfi_lso_vld           : 1;
 774         u64 rsvd_639_630          : 10;
 775 #endif
 776 #if defined(__BIG_ENDIAN_BITFIELD) /* W10 */
 777         u64 rsvd_703_658          : 46;
 778         u64 scm_lso_rem           : 18;
 779 #else
 780         u64 scm_lso_rem           : 18;
 781         u64 rsvd_703_658          : 46;
 782 #endif
 783 #if defined(__BIG_ENDIAN_BITFIELD) /* W11 */
 784         u64 rsvd_767_752          : 16;
 785         u64 octs                  : 48;
 786 #else
 787         u64 octs                  : 48;
 788         u64 rsvd_767_752          : 16;
 789 #endif
 790 #if defined(__BIG_ENDIAN_BITFIELD) /* W12 */
 791         u64 rsvd_831_816          : 16;
 792         u64 pkts                  : 48;
 793 #else
 794         u64 pkts                  : 48;
 795         u64 rsvd_831_816          : 16;
 796 #endif
 797         u64 rsvd_895_832          : 64;/* W13 */
 798 #if defined(__BIG_ENDIAN_BITFIELD) /* W14 */
 799         u64 rsvd_959_944          : 16;
 800         u64 dropped_octs          : 48;
 801 #else
 802         u64 dropped_octs          : 48;
 803         u64 rsvd_959_944          : 16;
 804 #endif
 805 #if defined(__BIG_ENDIAN_BITFIELD) /* W15 */
 806         u64 rsvd_1023_1008        : 16;
 807         u64 dropped_pkts          : 48;
 808 #else
 809         u64 dropped_pkts          : 48;
 810         u64 rsvd_1023_1008        : 16;
 811 #endif
 812 };
 813 
 814 /* NIX Receive side scaling entry structure*/
 815 struct nix_rsse_s {
 816 #if defined(__BIG_ENDIAN_BITFIELD)
 817         uint32_t reserved_20_31         : 12;
 818         uint32_t rq                     : 20;
 819 #else
 820         uint32_t rq                     : 20;
 821         uint32_t reserved_20_31         : 12;
 822 
 823 #endif
 824 };
 825 
 826 /* NIX receive multicast/mirror entry structure */
 827 struct nix_rx_mce_s {
 828 #if defined(__BIG_ENDIAN_BITFIELD)  /* W0 */
 829         uint64_t next       : 16;
 830         uint64_t pf_func    : 16;
 831         uint64_t rsvd_31_24 : 8;
 832         uint64_t index      : 20;
 833         uint64_t eol        : 1;
 834         uint64_t rsvd_2     : 1;
 835         uint64_t op         : 2;
 836 #else
 837         uint64_t op         : 2;
 838         uint64_t rsvd_2     : 1;
 839         uint64_t eol        : 1;
 840         uint64_t index      : 20;
 841         uint64_t rsvd_31_24 : 8;
 842         uint64_t pf_func    : 16;
 843         uint64_t next       : 16;
 844 #endif
 845 };
 846 
 847 enum nix_lsoalg {
 848         NIX_LSOALG_NOP,
 849         NIX_LSOALG_ADD_SEGNUM,
 850         NIX_LSOALG_ADD_PAYLEN,
 851         NIX_LSOALG_ADD_OFFSET,
 852         NIX_LSOALG_TCP_FLAGS,
 853 };
 854 
 855 enum nix_txlayer {
 856         NIX_TXLAYER_OL3,
 857         NIX_TXLAYER_OL4,
 858         NIX_TXLAYER_IL3,
 859         NIX_TXLAYER_IL4,
 860 };
 861 
 862 struct nix_lso_format {
 863 #if defined(__BIG_ENDIAN_BITFIELD)
 864         u64 rsvd_19_63          : 45;
 865         u64 alg                 : 3;
 866         u64 rsvd_14_15          : 2;
 867         u64 sizem1              : 2;
 868         u64 rsvd_10_11          : 2;
 869         u64 layer               : 2;
 870         u64 offset              : 8;
 871 #else
 872         u64 offset              : 8;
 873         u64 layer               : 2;
 874         u64 rsvd_10_11          : 2;
 875         u64 sizem1              : 2;
 876         u64 rsvd_14_15          : 2;
 877         u64 alg                 : 3;
 878         u64 rsvd_19_63          : 45;
 879 #endif
 880 };
 881 
 882 struct nix_rx_flowkey_alg {
 883 #if defined(__BIG_ENDIAN_BITFIELD)
 884         u64 reserved_35_63      :29;
 885         u64 ltype_match         :4;
 886         u64 ltype_mask          :4;
 887         u64 sel_chan            :1;
 888         u64 ena                 :1;
 889         u64 reserved_24_24      :1;
 890         u64 lid                 :3;
 891         u64 bytesm1             :5;
 892         u64 hdr_offset          :8;
 893         u64 fn_mask             :1;
 894         u64 ln_mask             :1;
 895         u64 key_offset          :6;
 896 #else
 897         u64 key_offset          :6;
 898         u64 ln_mask             :1;
 899         u64 fn_mask             :1;
 900         u64 hdr_offset          :8;
 901         u64 bytesm1             :5;
 902         u64 lid                 :3;
 903         u64 reserved_24_24      :1;
 904         u64 ena                 :1;
 905         u64 sel_chan            :1;
 906         u64 ltype_mask          :4;
 907         u64 ltype_match         :4;
 908         u64 reserved_35_63      :29;
 909 #endif
 910 };
 911 
 912 /* NIX VTAG size */
 913 enum nix_vtag_size {
 914         VTAGSIZE_T4   = 0x0,
 915         VTAGSIZE_T8   = 0x1,
 916 };
 917 #endif /* RVU_STRUCT_H */

/* [<][>][^][v][top][bottom][index][help] */