0001
0002
0003
0004
0005
0006
0007
0008 #ifndef RVU_STRUCT_H
0009 #define RVU_STRUCT_H
0010
0011
0012 #define RVU_BLK_RVUM_REVID 0x01
0013
0014 #define RVU_MULTI_BLK_VER 0x7ULL
0015
0016
0017 enum rvu_block_addr_e {
0018 BLKADDR_RVUM = 0x0ULL,
0019 BLKADDR_LMT = 0x1ULL,
0020 BLKADDR_MSIX = 0x2ULL,
0021 BLKADDR_NPA = 0x3ULL,
0022 BLKADDR_NIX0 = 0x4ULL,
0023 BLKADDR_NIX1 = 0x5ULL,
0024 BLKADDR_NPC = 0x6ULL,
0025 BLKADDR_SSO = 0x7ULL,
0026 BLKADDR_SSOW = 0x8ULL,
0027 BLKADDR_TIM = 0x9ULL,
0028 BLKADDR_CPT0 = 0xaULL,
0029 BLKADDR_CPT1 = 0xbULL,
0030 BLKADDR_NDC_NIX0_RX = 0xcULL,
0031 BLKADDR_NDC_NIX0_TX = 0xdULL,
0032 BLKADDR_NDC_NPA0 = 0xeULL,
0033 BLKADDR_NDC_NIX1_RX = 0x10ULL,
0034 BLKADDR_NDC_NIX1_TX = 0x11ULL,
0035 BLKADDR_APR = 0x16ULL,
0036 BLK_COUNT = 0x17ULL,
0037 };
0038
0039
0040 enum rvu_block_type_e {
0041 BLKTYPE_RVUM = 0x0,
0042 BLKTYPE_MSIX = 0x1,
0043 BLKTYPE_LMT = 0x2,
0044 BLKTYPE_NIX = 0x3,
0045 BLKTYPE_NPA = 0x4,
0046 BLKTYPE_NPC = 0x5,
0047 BLKTYPE_SSO = 0x6,
0048 BLKTYPE_SSOW = 0x7,
0049 BLKTYPE_TIM = 0x8,
0050 BLKTYPE_CPT = 0x9,
0051 BLKTYPE_NDC = 0xa,
0052 BLKTYPE_MAX = 0xa,
0053 };
0054
0055
0056 enum rvu_af_int_vec_e {
0057 RVU_AF_INT_VEC_POISON = 0x0,
0058 RVU_AF_INT_VEC_PFFLR = 0x1,
0059 RVU_AF_INT_VEC_PFME = 0x2,
0060 RVU_AF_INT_VEC_GEN = 0x3,
0061 RVU_AF_INT_VEC_MBOX = 0x4,
0062 RVU_AF_INT_VEC_CNT = 0x5,
0063 };
0064
0065
0066 enum cpt_af_int_vec_e {
0067 CPT_AF_INT_VEC_FLT0 = 0x0,
0068 CPT_AF_INT_VEC_FLT1 = 0x1,
0069 CPT_AF_INT_VEC_RVU = 0x2,
0070 CPT_AF_INT_VEC_RAS = 0x3,
0071 CPT_AF_INT_VEC_CNT = 0x4,
0072 };
0073
0074 enum cpt_10k_af_int_vec_e {
0075 CPT_10K_AF_INT_VEC_FLT0 = 0x0,
0076 CPT_10K_AF_INT_VEC_FLT1 = 0x1,
0077 CPT_10K_AF_INT_VEC_FLT2 = 0x2,
0078 CPT_10K_AF_INT_VEC_RVU = 0x3,
0079 CPT_10K_AF_INT_VEC_RAS = 0x4,
0080 CPT_10K_AF_INT_VEC_CNT = 0x5,
0081 };
0082
0083
0084 enum npa_af_int_vec_e {
0085 NPA_AF_INT_VEC_RVU = 0x0,
0086 NPA_AF_INT_VEC_GEN = 0x1,
0087 NPA_AF_INT_VEC_AQ_DONE = 0x2,
0088 NPA_AF_INT_VEC_AF_ERR = 0x3,
0089 NPA_AF_INT_VEC_POISON = 0x4,
0090 NPA_AF_INT_VEC_CNT = 0x5,
0091 };
0092
0093
0094 enum nix_af_int_vec_e {
0095 NIX_AF_INT_VEC_RVU = 0x0,
0096 NIX_AF_INT_VEC_GEN = 0x1,
0097 NIX_AF_INT_VEC_AQ_DONE = 0x2,
0098 NIX_AF_INT_VEC_AF_ERR = 0x3,
0099 NIX_AF_INT_VEC_POISON = 0x4,
0100 NIX_AF_INT_VEC_CNT = 0x5,
0101 };
0102
0103
0104
0105
0106 enum rvu_pf_int_vec_e {
0107 RVU_PF_INT_VEC_VFFLR0 = 0x0,
0108 RVU_PF_INT_VEC_VFFLR1 = 0x1,
0109 RVU_PF_INT_VEC_VFME0 = 0x2,
0110 RVU_PF_INT_VEC_VFME1 = 0x3,
0111 RVU_PF_INT_VEC_VFPF_MBOX0 = 0x4,
0112 RVU_PF_INT_VEC_VFPF_MBOX1 = 0x5,
0113 RVU_PF_INT_VEC_AFPF_MBOX = 0x6,
0114 RVU_PF_INT_VEC_CNT = 0x7,
0115 };
0116
0117
0118 enum npa_aq_comp {
0119 NPA_AQ_COMP_NOTDONE = 0x0,
0120 NPA_AQ_COMP_GOOD = 0x1,
0121 NPA_AQ_COMP_SWERR = 0x2,
0122 NPA_AQ_COMP_CTX_POISON = 0x3,
0123 NPA_AQ_COMP_CTX_FAULT = 0x4,
0124 NPA_AQ_COMP_LOCKERR = 0x5,
0125 };
0126
0127
0128 enum npa_aq_ctype {
0129 NPA_AQ_CTYPE_AURA = 0x0,
0130 NPA_AQ_CTYPE_POOL = 0x1,
0131 };
0132
0133
0134 enum npa_aq_instop {
0135 NPA_AQ_INSTOP_NOP = 0x0,
0136 NPA_AQ_INSTOP_INIT = 0x1,
0137 NPA_AQ_INSTOP_WRITE = 0x2,
0138 NPA_AQ_INSTOP_READ = 0x3,
0139 NPA_AQ_INSTOP_LOCK = 0x4,
0140 NPA_AQ_INSTOP_UNLOCK = 0x5,
0141 };
0142
0143
0144 enum npa_inpq {
0145 NPA_INPQ_NIX0_RX = 0x0,
0146 NPA_INPQ_NIX0_TX = 0x1,
0147 NPA_INPQ_NIX1_RX = 0x2,
0148 NPA_INPQ_NIX1_TX = 0x3,
0149 NPA_INPQ_SSO = 0x4,
0150 NPA_INPQ_TIM = 0x5,
0151 NPA_INPQ_DPI = 0x6,
0152 NPA_INPQ_AURA_OP = 0xe,
0153 NPA_INPQ_INTERNAL_RSV = 0xf,
0154 };
0155
0156
0157 struct npa_aq_inst_s {
0158 u64 op : 4;
0159 u64 ctype : 4;
0160 u64 lf : 9;
0161 u64 reserved_17_23 : 7;
0162 u64 cindex : 20;
0163 u64 reserved_44_62 : 19;
0164 u64 doneint : 1;
0165 u64 res_addr;
0166 };
0167
0168
0169 struct npa_aq_res_s {
0170 u64 op : 4;
0171 u64 ctype : 4;
0172 u64 compcode : 8;
0173 u64 doneint : 1;
0174 u64 reserved_17_63 : 47;
0175 u64 reserved_64_127;
0176 };
0177
0178 struct npa_aura_s {
0179 u64 pool_addr;
0180 u64 ena : 1;
0181 u64 reserved_65 : 2;
0182 u64 pool_caching : 1;
0183 u64 pool_way_mask : 16;
0184 u64 avg_con : 9;
0185 u64 reserved_93 : 1;
0186 u64 pool_drop_ena : 1;
0187 u64 aura_drop_ena : 1;
0188 u64 bp_ena : 2;
0189 u64 reserved_98_103 : 6;
0190 u64 aura_drop : 8;
0191 u64 shift : 6;
0192 u64 reserved_118_119 : 2;
0193 u64 avg_level : 8;
0194 u64 count : 36;
0195 u64 reserved_164_167 : 4;
0196 u64 nix0_bpid : 9;
0197 u64 reserved_177_179 : 3;
0198 u64 nix1_bpid : 9;
0199 u64 reserved_189_191 : 3;
0200 u64 limit : 36;
0201 u64 reserved_228_231 : 4;
0202 u64 bp : 8;
0203 u64 reserved_241_243 : 3;
0204 u64 fc_be : 1;
0205 u64 fc_ena : 1;
0206 u64 fc_up_crossing : 1;
0207 u64 fc_stype : 2;
0208 u64 fc_hyst_bits : 4;
0209 u64 reserved_252_255 : 4;
0210 u64 fc_addr;
0211 u64 pool_drop : 8;
0212 u64 update_time : 16;
0213 u64 err_int : 8;
0214 u64 err_int_ena : 8;
0215 u64 thresh_int : 1;
0216 u64 thresh_int_ena : 1;
0217 u64 thresh_up : 1;
0218 u64 reserved_363 : 1;
0219 u64 thresh_qint_idx : 7;
0220 u64 reserved_371 : 1;
0221 u64 err_qint_idx : 7;
0222 u64 reserved_379_383 : 5;
0223 u64 thresh : 36;
0224 u64 rsvd_423_420 : 4;
0225 u64 fc_msh_dst : 11;
0226 u64 reserved_435_447 : 13;
0227 u64 reserved_448_511;
0228 };
0229
0230 struct npa_pool_s {
0231 u64 stack_base;
0232 u64 ena : 1;
0233 u64 nat_align : 1;
0234 u64 reserved_66_67 : 2;
0235 u64 stack_caching : 1;
0236 u64 reserved_70_71 : 3;
0237 u64 stack_way_mask : 16;
0238 u64 buf_offset : 12;
0239 u64 reserved_100_103 : 4;
0240 u64 buf_size : 11;
0241 u64 reserved_115_127 : 13;
0242 u64 stack_max_pages : 32;
0243 u64 stack_pages : 32;
0244 u64 op_pc : 48;
0245 u64 reserved_240_255 : 16;
0246 u64 stack_offset : 4;
0247 u64 reserved_260_263 : 4;
0248 u64 shift : 6;
0249 u64 reserved_270_271 : 2;
0250 u64 avg_level : 8;
0251 u64 avg_con : 9;
0252 u64 fc_ena : 1;
0253 u64 fc_stype : 2;
0254 u64 fc_hyst_bits : 4;
0255 u64 fc_up_crossing : 1;
0256 u64 fc_be : 1;
0257 u64 reserved_298_299 : 2;
0258 u64 update_time : 16;
0259 u64 reserved_316_319 : 4;
0260 u64 fc_addr;
0261 u64 ptr_start;
0262 u64 ptr_end;
0263 u64 reserved_512_535 : 24;
0264 u64 err_int : 8;
0265 u64 err_int_ena : 8;
0266 u64 thresh_int : 1;
0267 u64 thresh_int_ena : 1;
0268 u64 thresh_up : 1;
0269 u64 reserved_555 : 1;
0270 u64 thresh_qint_idx : 7;
0271 u64 reserved_563 : 1;
0272 u64 err_qint_idx : 7;
0273 u64 reserved_571_575 : 5;
0274 u64 thresh : 36;
0275 u64 rsvd_615_612 : 4;
0276 u64 fc_msh_dst : 11;
0277 u64 reserved_627_639 : 13;
0278 u64 reserved_640_703;
0279 u64 reserved_704_767;
0280 u64 reserved_768_831;
0281 u64 reserved_832_895;
0282 u64 reserved_896_959;
0283 u64 reserved_960_1023;
0284 };
0285
0286
0287 enum nix_aq_comp {
0288 NIX_AQ_COMP_NOTDONE = 0x0,
0289 NIX_AQ_COMP_GOOD = 0x1,
0290 NIX_AQ_COMP_SWERR = 0x2,
0291 NIX_AQ_COMP_CTX_POISON = 0x3,
0292 NIX_AQ_COMP_CTX_FAULT = 0x4,
0293 NIX_AQ_COMP_LOCKERR = 0x5,
0294 NIX_AQ_COMP_SQB_ALLOC_FAIL = 0x6,
0295 };
0296
0297
0298 enum nix_aq_ctype {
0299 NIX_AQ_CTYPE_RQ = 0x0,
0300 NIX_AQ_CTYPE_SQ = 0x1,
0301 NIX_AQ_CTYPE_CQ = 0x2,
0302 NIX_AQ_CTYPE_MCE = 0x3,
0303 NIX_AQ_CTYPE_RSS = 0x4,
0304 NIX_AQ_CTYPE_DYNO = 0x5,
0305 NIX_AQ_CTYPE_BANDPROF = 0x6,
0306 };
0307
0308
0309 enum nix_aq_instop {
0310 NIX_AQ_INSTOP_NOP = 0x0,
0311 NIX_AQ_INSTOP_INIT = 0x1,
0312 NIX_AQ_INSTOP_WRITE = 0x2,
0313 NIX_AQ_INSTOP_READ = 0x3,
0314 NIX_AQ_INSTOP_LOCK = 0x4,
0315 NIX_AQ_INSTOP_UNLOCK = 0x5,
0316 };
0317
0318
0319 struct nix_aq_inst_s {
0320 u64 op : 4;
0321 u64 ctype : 4;
0322 u64 lf : 9;
0323 u64 reserved_17_23 : 7;
0324 u64 cindex : 20;
0325 u64 reserved_44_62 : 19;
0326 u64 doneint : 1;
0327 u64 res_addr;
0328 };
0329
0330
0331 struct nix_aq_res_s {
0332 u64 op : 4;
0333 u64 ctype : 4;
0334 u64 compcode : 8;
0335 u64 doneint : 1;
0336 u64 reserved_17_63 : 47;
0337 u64 reserved_64_127;
0338 };
0339
0340
0341 struct nix_cq_ctx_s {
0342 u64 base;
0343 u64 rsvd_64_67 : 4;
0344 u64 bp_ena : 1;
0345 u64 rsvd_69_71 : 3;
0346 u64 bpid : 9;
0347 u64 rsvd_81_83 : 3;
0348 u64 qint_idx : 7;
0349 u64 cq_err : 1;
0350 u64 cint_idx : 7;
0351 u64 avg_con : 9;
0352 u64 wrptr : 20;
0353 u64 tail : 20;
0354 u64 head : 20;
0355 u64 avg_level : 8;
0356 u64 update_time : 16;
0357 u64 bp : 8;
0358 u64 drop : 8;
0359 u64 drop_ena : 1;
0360 u64 ena : 1;
0361 u64 rsvd_210_211 : 2;
0362 u64 substream : 20;
0363 u64 caching : 1;
0364 u64 rsvd_233_235 : 3;
0365 u64 qsize : 4;
0366 u64 cq_err_int : 8;
0367 u64 cq_err_int_ena : 8;
0368 };
0369
0370
0371 struct nix_cn10k_rq_ctx_s {
0372 u64 ena : 1;
0373 u64 sso_ena : 1;
0374 u64 ipsech_ena : 1;
0375 u64 ena_wqwd : 1;
0376 u64 cq : 20;
0377 u64 rsvd_36_24 : 13;
0378 u64 lenerr_dis : 1;
0379 u64 csum_il4_dis : 1;
0380 u64 csum_ol4_dis : 1;
0381 u64 len_il4_dis : 1;
0382 u64 len_il3_dis : 1;
0383 u64 len_ol4_dis : 1;
0384 u64 len_ol3_dis : 1;
0385 u64 wqe_aura : 20;
0386 u64 spb_aura : 20;
0387 u64 lpb_aura : 20;
0388 u64 sso_grp : 10;
0389 u64 sso_tt : 2;
0390 u64 pb_caching : 2;
0391 u64 wqe_caching : 1;
0392 u64 xqe_drop_ena : 1;
0393 u64 spb_drop_ena : 1;
0394 u64 lpb_drop_ena : 1;
0395 u64 pb_stashing : 1;
0396 u64 ipsecd_drop_ena : 1;
0397 u64 chi_ena : 1;
0398 u64 rsvd_127_125 : 3;
0399 u64 band_prof_id : 10;
0400 u64 rsvd_138 : 1;
0401 u64 policer_ena : 1;
0402 u64 spb_sizem1 : 6;
0403 u64 wqe_skip : 2;
0404 u64 rsvd_150_148 : 3;
0405 u64 spb_ena : 1;
0406 u64 lpb_sizem1 : 12;
0407 u64 first_skip : 7;
0408 u64 rsvd_171 : 1;
0409 u64 later_skip : 6;
0410 u64 xqe_imm_size : 6;
0411 u64 rsvd_189_184 : 6;
0412 u64 xqe_imm_copy : 1;
0413 u64 xqe_hdr_split : 1;
0414 u64 xqe_drop : 8;
0415 u64 xqe_pass : 8;
0416 u64 wqe_pool_drop : 8;
0417 u64 wqe_pool_pass : 8;
0418 u64 spb_aura_drop : 8;
0419 u64 spb_aura_pass : 8;
0420 u64 spb_pool_drop : 8;
0421 u64 spb_pool_pass : 8;
0422 u64 lpb_aura_drop : 8;
0423 u64 lpb_aura_pass : 8;
0424 u64 lpb_pool_drop : 8;
0425 u64 lpb_pool_pass : 8;
0426 u64 rsvd_291_288 : 4;
0427 u64 rq_int : 8;
0428 u64 rq_int_ena : 8;
0429 u64 qint_idx : 7;
0430 u64 rsvd_319_315 : 5;
0431 u64 ltag : 24;
0432 u64 good_utag : 8;
0433 u64 bad_utag : 8;
0434 u64 flow_tagw : 6;
0435 u64 ipsec_vwqe : 1;
0436 u64 vwqe_ena : 1;
0437 u64 vwqe_wait : 8;
0438 u64 max_vsize_exp : 4;
0439 u64 vwqe_skip : 2;
0440 u64 rsvd_383_382 : 2;
0441 u64 octs : 48;
0442 u64 rsvd_447_432 : 16;
0443 u64 pkts : 48;
0444 u64 rsvd_511_496 : 16;
0445 u64 drop_octs : 48;
0446 u64 rsvd_575_560 : 16;
0447 u64 drop_pkts : 48;
0448 u64 rsvd_639_624 : 16;
0449 u64 re_pkts : 48;
0450 u64 rsvd_703_688 : 16;
0451 u64 rsvd_767_704;
0452 u64 rsvd_831_768;
0453 u64 rsvd_895_832;
0454 u64 rsvd_959_896;
0455 u64 rsvd_1023_960;
0456 };
0457
0458
0459 struct nix_cn10k_sq_ctx_s {
0460 u64 ena : 1;
0461 u64 qint_idx : 6;
0462 u64 substream : 20;
0463 u64 sdp_mcast : 1;
0464 u64 cq : 20;
0465 u64 sqe_way_mask : 16;
0466 u64 smq : 10;
0467 u64 cq_ena : 1;
0468 u64 xoff : 1;
0469 u64 sso_ena : 1;
0470 u64 smq_rr_weight : 14;
0471 u64 default_chan : 12;
0472 u64 sqb_count : 16;
0473 u64 rsvd_120_119 : 2;
0474 u64 smq_rr_count_lb : 7;
0475 u64 smq_rr_count_ub : 25;
0476 u64 sqb_aura : 20;
0477 u64 sq_int : 8;
0478 u64 sq_int_ena : 8;
0479 u64 sqe_stype : 2;
0480 u64 rsvd_191 : 1;
0481 u64 max_sqe_size : 2;
0482 u64 cq_limit : 8;
0483 u64 lmt_dis : 1;
0484 u64 mnq_dis : 1;
0485 u64 smq_next_sq : 20;
0486 u64 smq_lso_segnum : 8;
0487 u64 tail_offset : 6;
0488 u64 smenq_offset : 6;
0489 u64 head_offset : 6;
0490 u64 smenq_next_sqb_vld : 1;
0491 u64 smq_pend : 1;
0492 u64 smq_next_sq_vld : 1;
0493 u64 rsvd_255_253 : 3;
0494 u64 next_sqb : 64;
0495 u64 tail_sqb : 64;
0496 u64 smenq_sqb : 64;
0497 u64 smenq_next_sqb : 64;
0498 u64 head_sqb : 64;
0499 u64 rsvd_583_576 : 8;
0500 u64 vfi_lso_total : 18;
0501 u64 vfi_lso_sizem1 : 3;
0502 u64 vfi_lso_sb : 8;
0503 u64 vfi_lso_mps : 14;
0504 u64 vfi_lso_vlan0_ins_ena : 1;
0505 u64 vfi_lso_vlan1_ins_ena : 1;
0506 u64 vfi_lso_vld : 1;
0507 u64 rsvd_639_630 : 10;
0508 u64 scm_lso_rem : 18;
0509 u64 rsvd_703_658 : 46;
0510 u64 octs : 48;
0511 u64 rsvd_767_752 : 16;
0512 u64 pkts : 48;
0513 u64 rsvd_831_816 : 16;
0514 u64 rsvd_895_832 : 64;
0515 u64 dropped_octs : 48;
0516 u64 rsvd_959_944 : 16;
0517 u64 dropped_pkts : 48;
0518 u64 rsvd_1023_1008 : 16;
0519 };
0520
0521
0522 struct nix_rq_ctx_s {
0523 u64 ena : 1;
0524 u64 sso_ena : 1;
0525 u64 ipsech_ena : 1;
0526 u64 ena_wqwd : 1;
0527 u64 cq : 20;
0528 u64 substream : 20;
0529 u64 wqe_aura : 20;
0530 u64 spb_aura : 20;
0531 u64 lpb_aura : 20;
0532 u64 sso_grp : 10;
0533 u64 sso_tt : 2;
0534 u64 pb_caching : 2;
0535 u64 wqe_caching : 1;
0536 u64 xqe_drop_ena : 1;
0537 u64 spb_drop_ena : 1;
0538 u64 lpb_drop_ena : 1;
0539 u64 rsvd_127_122 : 6;
0540 u64 rsvd_139_128 : 12;
0541 u64 spb_sizem1 : 6;
0542 u64 wqe_skip : 2;
0543 u64 rsvd_150_148 : 3;
0544 u64 spb_ena : 1;
0545 u64 lpb_sizem1 : 12;
0546 u64 first_skip : 7;
0547 u64 rsvd_171 : 1;
0548 u64 later_skip : 6;
0549 u64 xqe_imm_size : 6;
0550 u64 rsvd_189_184 : 6;
0551 u64 xqe_imm_copy : 1;
0552 u64 xqe_hdr_split : 1;
0553 u64 xqe_drop : 8;
0554 u64 xqe_pass : 8;
0555 u64 wqe_pool_drop : 8;
0556 u64 wqe_pool_pass : 8;
0557 u64 spb_aura_drop : 8;
0558 u64 spb_aura_pass : 8;
0559 u64 spb_pool_drop : 8;
0560 u64 spb_pool_pass : 8;
0561 u64 lpb_aura_drop : 8;
0562 u64 lpb_aura_pass : 8;
0563 u64 lpb_pool_drop : 8;
0564 u64 lpb_pool_pass : 8;
0565 u64 rsvd_291_288 : 4;
0566 u64 rq_int : 8;
0567 u64 rq_int_ena : 8;
0568 u64 qint_idx : 7;
0569 u64 rsvd_319_315 : 5;
0570 u64 ltag : 24;
0571 u64 good_utag : 8;
0572 u64 bad_utag : 8;
0573 u64 flow_tagw : 6;
0574 u64 rsvd_383_366 : 18;
0575 u64 octs : 48;
0576 u64 rsvd_447_432 : 16;
0577 u64 pkts : 48;
0578 u64 rsvd_511_496 : 16;
0579 u64 drop_octs : 48;
0580 u64 rsvd_575_560 : 16;
0581 u64 drop_pkts : 48;
0582 u64 rsvd_639_624 : 16;
0583 u64 re_pkts : 48;
0584 u64 rsvd_703_688 : 16;
0585 u64 rsvd_767_704;
0586 u64 rsvd_831_768;
0587 u64 rsvd_895_832;
0588 u64 rsvd_959_896;
0589 u64 rsvd_1023_960;
0590 };
0591
0592
0593 enum nix_maxsqesz {
0594 NIX_MAXSQESZ_W16 = 0x0,
0595 NIX_MAXSQESZ_W8 = 0x1,
0596 };
0597
0598
0599 enum nix_stype {
0600 NIX_STYPE_STF = 0x0,
0601 NIX_STYPE_STT = 0x1,
0602 NIX_STYPE_STP = 0x2,
0603 };
0604
0605
0606 struct nix_sq_ctx_s {
0607 u64 ena : 1;
0608 u64 qint_idx : 6;
0609 u64 substream : 20;
0610 u64 sdp_mcast : 1;
0611 u64 cq : 20;
0612 u64 sqe_way_mask : 16;
0613 u64 smq : 9;
0614 u64 cq_ena : 1;
0615 u64 xoff : 1;
0616 u64 sso_ena : 1;
0617 u64 smq_rr_quantum : 24;
0618 u64 default_chan : 12;
0619 u64 sqb_count : 16;
0620 u64 smq_rr_count : 25;
0621 u64 sqb_aura : 20;
0622 u64 sq_int : 8;
0623 u64 sq_int_ena : 8;
0624 u64 sqe_stype : 2;
0625 u64 rsvd_191 : 1;
0626 u64 max_sqe_size : 2;
0627 u64 cq_limit : 8;
0628 u64 lmt_dis : 1;
0629 u64 mnq_dis : 1;
0630 u64 smq_next_sq : 20;
0631 u64 smq_lso_segnum : 8;
0632 u64 tail_offset : 6;
0633 u64 smenq_offset : 6;
0634 u64 head_offset : 6;
0635 u64 smenq_next_sqb_vld : 1;
0636 u64 smq_pend : 1;
0637 u64 smq_next_sq_vld : 1;
0638 u64 rsvd_255_253 : 3;
0639 u64 next_sqb : 64;
0640 u64 tail_sqb : 64;
0641 u64 smenq_sqb : 64;
0642 u64 smenq_next_sqb : 64;
0643 u64 head_sqb : 64;
0644 u64 rsvd_583_576 : 8;
0645 u64 vfi_lso_total : 18;
0646 u64 vfi_lso_sizem1 : 3;
0647 u64 vfi_lso_sb : 8;
0648 u64 vfi_lso_mps : 14;
0649 u64 vfi_lso_vlan0_ins_ena : 1;
0650 u64 vfi_lso_vlan1_ins_ena : 1;
0651 u64 vfi_lso_vld : 1;
0652 u64 rsvd_639_630 : 10;
0653 u64 scm_lso_rem : 18;
0654 u64 rsvd_703_658 : 46;
0655 u64 octs : 48;
0656 u64 rsvd_767_752 : 16;
0657 u64 pkts : 48;
0658 u64 rsvd_831_816 : 16;
0659 u64 rsvd_895_832 : 64;
0660 u64 dropped_octs : 48;
0661 u64 rsvd_959_944 : 16;
0662 u64 dropped_pkts : 48;
0663 u64 rsvd_1023_1008 : 16;
0664 };
0665
0666
0667 struct nix_rsse_s {
0668 uint32_t rq : 20;
0669 uint32_t reserved_20_31 : 12;
0670
0671 };
0672
0673
0674 struct nix_rx_mce_s {
0675 uint64_t op : 2;
0676 uint64_t rsvd_2 : 1;
0677 uint64_t eol : 1;
0678 uint64_t index : 20;
0679 uint64_t rsvd_31_24 : 8;
0680 uint64_t pf_func : 16;
0681 uint64_t next : 16;
0682 };
0683
0684 enum nix_band_prof_layers {
0685 BAND_PROF_LEAF_LAYER = 0,
0686 BAND_PROF_INVAL_LAYER = 1,
0687 BAND_PROF_MID_LAYER = 2,
0688 BAND_PROF_TOP_LAYER = 3,
0689 BAND_PROF_NUM_LAYERS = 4,
0690 };
0691
0692 enum NIX_RX_BAND_PROF_ACTIONRESULT_E {
0693 NIX_RX_BAND_PROF_ACTIONRESULT_PASS = 0x0,
0694 NIX_RX_BAND_PROF_ACTIONRESULT_DROP = 0x1,
0695 NIX_RX_BAND_PROF_ACTIONRESULT_RED = 0x2,
0696 };
0697
0698 enum nix_band_prof_pc_mode {
0699 NIX_RX_PC_MODE_VLAN = 0,
0700 NIX_RX_PC_MODE_DSCP = 1,
0701 NIX_RX_PC_MODE_GEN = 2,
0702 NIX_RX_PC_MODE_RSVD = 3,
0703 };
0704
0705
0706 struct nix_bandprof_s {
0707 uint64_t pc_mode : 2;
0708 uint64_t icolor : 2;
0709 uint64_t tnl_ena : 1;
0710 uint64_t reserved_5_7 : 3;
0711 uint64_t peir_exponent : 5;
0712 uint64_t reserved_13_15 : 3;
0713 uint64_t pebs_exponent : 5;
0714 uint64_t reserved_21_23 : 3;
0715 uint64_t cir_exponent : 5;
0716 uint64_t reserved_29_31 : 3;
0717 uint64_t cbs_exponent : 5;
0718 uint64_t reserved_37_39 : 3;
0719 uint64_t peir_mantissa : 8;
0720 uint64_t pebs_mantissa : 8;
0721 uint64_t cir_mantissa : 8;
0722 uint64_t cbs_mantissa : 8;
0723 uint64_t lmode : 1;
0724 uint64_t l_sellect : 3;
0725 uint64_t rdiv : 4;
0726 uint64_t adjust_exponent : 5;
0727 uint64_t reserved_85_86 : 2;
0728 uint64_t adjust_mantissa : 9;
0729 uint64_t gc_action : 2;
0730 uint64_t yc_action : 2;
0731 uint64_t rc_action : 2;
0732 uint64_t meter_algo : 2;
0733 uint64_t band_prof_id : 7;
0734 uint64_t reserved_111_118 : 8;
0735 uint64_t hl_en : 1;
0736 uint64_t reserved_120_127 : 8;
0737 uint64_t ts : 48;
0738 uint64_t reserved_176_191 : 16;
0739 uint64_t pe_accum : 32;
0740 uint64_t c_accum : 32;
0741 uint64_t green_pkt_pass : 48;
0742 uint64_t reserved_304_319 : 16;
0743 uint64_t yellow_pkt_pass : 48;
0744 uint64_t reserved_368_383 : 16;
0745 uint64_t red_pkt_pass : 48;
0746 uint64_t reserved_432_447 : 16;
0747 uint64_t green_octs_pass : 48;
0748 uint64_t reserved_496_511 : 16;
0749 uint64_t yellow_octs_pass : 48;
0750 uint64_t reserved_560_575 : 16;
0751 uint64_t red_octs_pass : 48;
0752 uint64_t reserved_624_639 : 16;
0753 uint64_t green_pkt_drop : 48;
0754 uint64_t reserved_688_703 : 16;
0755 uint64_t yellow_pkt_drop : 48;
0756 uint64_t reserved_752_767 : 16;
0757 uint64_t red_pkt_drop : 48;
0758 uint64_t reserved_816_831 : 16;
0759 uint64_t green_octs_drop : 48;
0760 uint64_t reserved_880_895 : 16;
0761 uint64_t yellow_octs_drop : 48;
0762 uint64_t reserved_944_959 : 16;
0763 uint64_t red_octs_drop : 48;
0764 uint64_t reserved_1008_1023 : 16;
0765 };
0766
0767 enum nix_lsoalg {
0768 NIX_LSOALG_NOP,
0769 NIX_LSOALG_ADD_SEGNUM,
0770 NIX_LSOALG_ADD_PAYLEN,
0771 NIX_LSOALG_ADD_OFFSET,
0772 NIX_LSOALG_TCP_FLAGS,
0773 };
0774
0775 enum nix_txlayer {
0776 NIX_TXLAYER_OL3,
0777 NIX_TXLAYER_OL4,
0778 NIX_TXLAYER_IL3,
0779 NIX_TXLAYER_IL4,
0780 };
0781
0782 struct nix_lso_format {
0783 u64 offset : 8;
0784 u64 layer : 2;
0785 u64 rsvd_10_11 : 2;
0786 u64 sizem1 : 2;
0787 u64 rsvd_14_15 : 2;
0788 u64 alg : 3;
0789 u64 rsvd_19_63 : 45;
0790 };
0791
0792 struct nix_rx_flowkey_alg {
0793 u64 key_offset :6;
0794 u64 ln_mask :1;
0795 u64 fn_mask :1;
0796 u64 hdr_offset :8;
0797 u64 bytesm1 :5;
0798 u64 lid :3;
0799 u64 reserved_24_24 :1;
0800 u64 ena :1;
0801 u64 sel_chan :1;
0802 u64 ltype_mask :4;
0803 u64 ltype_match :4;
0804 u64 reserved_35_63 :29;
0805 };
0806
0807
0808 enum nix_vtag_size {
0809 VTAGSIZE_T4 = 0x0,
0810 VTAGSIZE_T8 = 0x1,
0811 };
0812
0813 enum nix_tx_vtag_op {
0814 NOP = 0x0,
0815 VTAG_INSERT = 0x1,
0816 VTAG_REPLACE = 0x2,
0817 };
0818
0819
0820 #define VTAG_STRIP BIT_ULL(4)
0821 #define VTAG_CAPTURE BIT_ULL(5)
0822
0823 #endif