827 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Marvell RVU Admin Function driver3 *4 * Copyright (C) 2018 Marvell.5 *6 */7 8#ifndef RVU_STRUCT_H9#define RVU_STRUCT_H10 11/* RVU Block revision IDs */12#define RVU_BLK_RVUM_REVID 0x0113 14#define RVU_MULTI_BLK_VER 0x7ULL15 16/* RVU Block Address Enumeration */17enum rvu_block_addr_e {18 BLKADDR_RVUM = 0x0ULL,19 BLKADDR_LMT = 0x1ULL,20 BLKADDR_MSIX = 0x2ULL,21 BLKADDR_NPA = 0x3ULL,22 BLKADDR_NIX0 = 0x4ULL,23 BLKADDR_NIX1 = 0x5ULL,24 BLKADDR_NPC = 0x6ULL,25 BLKADDR_SSO = 0x7ULL,26 BLKADDR_SSOW = 0x8ULL,27 BLKADDR_TIM = 0x9ULL,28 BLKADDR_CPT0 = 0xaULL,29 BLKADDR_CPT1 = 0xbULL,30 BLKADDR_NDC_NIX0_RX = 0xcULL,31 BLKADDR_NDC_NIX0_TX = 0xdULL,32 BLKADDR_NDC_NPA0 = 0xeULL,33 BLKADDR_NDC_NIX1_RX = 0x10ULL,34 BLKADDR_NDC_NIX1_TX = 0x11ULL,35 BLKADDR_APR = 0x16ULL,36 BLK_COUNT = 0x17ULL,37};38 39/* RVU Block Type Enumeration */40enum rvu_block_type_e {41 BLKTYPE_RVUM = 0x0,42 BLKTYPE_MSIX = 0x1,43 BLKTYPE_LMT = 0x2,44 BLKTYPE_NIX = 0x3,45 BLKTYPE_NPA = 0x4,46 BLKTYPE_NPC = 0x5,47 BLKTYPE_SSO = 0x6,48 BLKTYPE_SSOW = 0x7,49 BLKTYPE_TIM = 0x8,50 BLKTYPE_CPT = 0x9,51 BLKTYPE_NDC = 0xa,52 BLKTYPE_MAX = 0xa,53};54 55/* RVU Admin function Interrupt Vector Enumeration */56enum rvu_af_int_vec_e {57 RVU_AF_INT_VEC_POISON = 0x0,58 RVU_AF_INT_VEC_PFFLR = 0x1,59 RVU_AF_INT_VEC_PFME = 0x2,60 RVU_AF_INT_VEC_GEN = 0x3,61 RVU_AF_INT_VEC_MBOX = 0x4,62 RVU_AF_INT_VEC_CNT = 0x5,63};64 65/* CPT Admin function Interrupt Vector Enumeration */66enum cpt_af_int_vec_e {67 CPT_AF_INT_VEC_FLT0 = 0x0,68 CPT_AF_INT_VEC_FLT1 = 0x1,69 CPT_AF_INT_VEC_RVU = 0x2,70 CPT_AF_INT_VEC_RAS = 0x3,71 CPT_AF_INT_VEC_CNT = 0x4,72};73 74enum cpt_cn10k_flt_int_vec_e {75 CPT_10K_AF_INT_VEC_FLT0 = 0x0,76 CPT_10K_AF_INT_VEC_FLT1 = 0x1,77 CPT_10K_AF_INT_VEC_FLT2 = 0x2,78 CPT_10K_AF_INT_VEC_FLT_MAX = 0x3,79};80 81/* NPA Admin function Interrupt Vector Enumeration */82enum npa_af_int_vec_e {83 NPA_AF_INT_VEC_RVU = 0x0,84 NPA_AF_INT_VEC_GEN = 0x1,85 NPA_AF_INT_VEC_AQ_DONE = 0x2,86 NPA_AF_INT_VEC_AF_ERR = 0x3,87 NPA_AF_INT_VEC_POISON = 0x4,88 NPA_AF_INT_VEC_CNT = 0x5,89};90 91/* NIX Admin function Interrupt Vector Enumeration */92enum nix_af_int_vec_e {93 NIX_AF_INT_VEC_RVU = 0x0,94 NIX_AF_INT_VEC_GEN = 0x1,95 NIX_AF_INT_VEC_AQ_DONE = 0x2,96 NIX_AF_INT_VEC_AF_ERR = 0x3,97 NIX_AF_INT_VEC_POISON = 0x4,98 NIX_AF_INT_VEC_CNT = 0x5,99};100 101/**102 * RVU PF Interrupt Vector Enumeration103 */104enum rvu_pf_int_vec_e {105 RVU_PF_INT_VEC_VFFLR0 = 0x0,106 RVU_PF_INT_VEC_VFFLR1 = 0x1,107 RVU_PF_INT_VEC_VFME0 = 0x2,108 RVU_PF_INT_VEC_VFME1 = 0x3,109 RVU_PF_INT_VEC_VFPF_MBOX0 = 0x4,110 RVU_PF_INT_VEC_VFPF_MBOX1 = 0x5,111 RVU_PF_INT_VEC_AFPF_MBOX = 0x6,112 RVU_PF_INT_VEC_CNT = 0x7,113};114 115/* NPA admin queue completion enumeration */116enum npa_aq_comp {117 NPA_AQ_COMP_NOTDONE = 0x0,118 NPA_AQ_COMP_GOOD = 0x1,119 NPA_AQ_COMP_SWERR = 0x2,120 NPA_AQ_COMP_CTX_POISON = 0x3,121 NPA_AQ_COMP_CTX_FAULT = 0x4,122 NPA_AQ_COMP_LOCKERR = 0x5,123};124 125/* NPA admin queue context types */126enum npa_aq_ctype {127 NPA_AQ_CTYPE_AURA = 0x0,128 NPA_AQ_CTYPE_POOL = 0x1,129};130 131/* NPA admin queue instruction opcodes */132enum npa_aq_instop {133 NPA_AQ_INSTOP_NOP = 0x0,134 NPA_AQ_INSTOP_INIT = 0x1,135 NPA_AQ_INSTOP_WRITE = 0x2,136 NPA_AQ_INSTOP_READ = 0x3,137 NPA_AQ_INSTOP_LOCK = 0x4,138 NPA_AQ_INSTOP_UNLOCK = 0x5,139};140 141/* ALLOC/FREE input queues Enumeration from coprocessors */142enum npa_inpq {143 NPA_INPQ_NIX0_RX = 0x0,144 NPA_INPQ_NIX0_TX = 0x1,145 NPA_INPQ_NIX1_RX = 0x2,146 NPA_INPQ_NIX1_TX = 0x3,147 NPA_INPQ_SSO = 0x4,148 NPA_INPQ_TIM = 0x5,149 NPA_INPQ_DPI = 0x6,150 NPA_INPQ_AURA_OP = 0xe,151 NPA_INPQ_INTERNAL_RSV = 0xf,152};153 154/* NPA admin queue instruction structure */155struct npa_aq_inst_s {156 u64 op : 4; /* W0 */157 u64 ctype : 4;158 u64 lf : 9;159 u64 reserved_17_23 : 7;160 u64 cindex : 20;161 u64 reserved_44_62 : 19;162 u64 doneint : 1;163 u64 res_addr; /* W1 */164};165 166/* NPA admin queue result structure */167struct npa_aq_res_s {168 u64 op : 4; /* W0 */169 u64 ctype : 4;170 u64 compcode : 8;171 u64 doneint : 1;172 u64 reserved_17_63 : 47;173 u64 reserved_64_127; /* W1 */174};175 176struct npa_aura_s {177 u64 pool_addr; /* W0 */178 u64 ena : 1; /* W1 */179 u64 reserved_65 : 2;180 u64 pool_caching : 1;181 u64 pool_way_mask : 16;182 u64 avg_con : 9;183 u64 reserved_93 : 1;184 u64 pool_drop_ena : 1;185 u64 aura_drop_ena : 1;186 u64 bp_ena : 2;187 u64 reserved_98_103 : 6;188 u64 aura_drop : 8;189 u64 shift : 6;190 u64 reserved_118_119 : 2;191 u64 avg_level : 8;192 u64 count : 36; /* W2 */193 u64 reserved_164_167 : 4;194 u64 nix0_bpid : 9;195 u64 reserved_177_179 : 3;196 u64 nix1_bpid : 9;197 u64 reserved_189_191 : 3;198 u64 limit : 36; /* W3 */199 u64 reserved_228_231 : 4;200 u64 bp : 8;201 u64 reserved_241_243 : 3;202 u64 fc_be : 1;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 u64 fc_addr; /* W4 */209 u64 pool_drop : 8; /* W5 */210 u64 update_time : 16;211 u64 err_int : 8;212 u64 err_int_ena : 8;213 u64 thresh_int : 1;214 u64 thresh_int_ena : 1;215 u64 thresh_up : 1;216 u64 reserved_363 : 1;217 u64 thresh_qint_idx : 7;218 u64 reserved_371 : 1;219 u64 err_qint_idx : 7;220 u64 reserved_379_383 : 5;221 u64 thresh : 36; /* W6*/222 u64 rsvd_423_420 : 4;223 u64 fc_msh_dst : 11;224 u64 reserved_435_447 : 13;225 u64 reserved_448_511; /* W7 */226};227 228struct npa_pool_s {229 u64 stack_base; /* W0 */230 u64 ena : 1;231 u64 nat_align : 1;232 u64 reserved_66_67 : 2;233 u64 stack_caching : 1;234 u64 reserved_70_71 : 3;235 u64 stack_way_mask : 16;236 u64 buf_offset : 12;237 u64 reserved_100_103 : 4;238 u64 buf_size : 11;239 u64 reserved_115_127 : 13;240 u64 stack_max_pages : 32;241 u64 stack_pages : 32;242 u64 op_pc : 48;243 u64 reserved_240_255 : 16;244 u64 stack_offset : 4;245 u64 reserved_260_263 : 4;246 u64 shift : 6;247 u64 reserved_270_271 : 2;248 u64 avg_level : 8;249 u64 avg_con : 9;250 u64 fc_ena : 1;251 u64 fc_stype : 2;252 u64 fc_hyst_bits : 4;253 u64 fc_up_crossing : 1;254 u64 fc_be : 1;255 u64 reserved_298_299 : 2;256 u64 update_time : 16;257 u64 reserved_316_319 : 4;258 u64 fc_addr; /* W5 */259 u64 ptr_start; /* W6 */260 u64 ptr_end; /* W7 */261 u64 reserved_512_535 : 24;262 u64 err_int : 8;263 u64 err_int_ena : 8;264 u64 thresh_int : 1;265 u64 thresh_int_ena : 1;266 u64 thresh_up : 1;267 u64 reserved_555 : 1;268 u64 thresh_qint_idx : 7;269 u64 reserved_563 : 1;270 u64 err_qint_idx : 7;271 u64 reserved_571_575 : 5;272 u64 thresh : 36;273 u64 rsvd_615_612 : 4;274 u64 fc_msh_dst : 11;275 u64 reserved_627_639 : 13;276 u64 reserved_640_703; /* W10 */277 u64 reserved_704_767; /* W11 */278 u64 reserved_768_831; /* W12 */279 u64 reserved_832_895; /* W13 */280 u64 reserved_896_959; /* W14 */281 u64 reserved_960_1023; /* W15 */282};283 284/* NIX admin queue completion status */285enum nix_aq_comp {286 NIX_AQ_COMP_NOTDONE = 0x0,287 NIX_AQ_COMP_GOOD = 0x1,288 NIX_AQ_COMP_SWERR = 0x2,289 NIX_AQ_COMP_CTX_POISON = 0x3,290 NIX_AQ_COMP_CTX_FAULT = 0x4,291 NIX_AQ_COMP_LOCKERR = 0x5,292 NIX_AQ_COMP_SQB_ALLOC_FAIL = 0x6,293};294 295/* NIX admin queue context types */296enum nix_aq_ctype {297 NIX_AQ_CTYPE_RQ = 0x0,298 NIX_AQ_CTYPE_SQ = 0x1,299 NIX_AQ_CTYPE_CQ = 0x2,300 NIX_AQ_CTYPE_MCE = 0x3,301 NIX_AQ_CTYPE_RSS = 0x4,302 NIX_AQ_CTYPE_DYNO = 0x5,303 NIX_AQ_CTYPE_BANDPROF = 0x6,304};305 306/* NIX admin queue instruction opcodes */307enum nix_aq_instop {308 NIX_AQ_INSTOP_NOP = 0x0,309 NIX_AQ_INSTOP_INIT = 0x1,310 NIX_AQ_INSTOP_WRITE = 0x2,311 NIX_AQ_INSTOP_READ = 0x3,312 NIX_AQ_INSTOP_LOCK = 0x4,313 NIX_AQ_INSTOP_UNLOCK = 0x5,314};315 316/* NIX admin queue instruction structure */317struct nix_aq_inst_s {318 u64 op : 4;319 u64 ctype : 4;320 u64 lf : 9;321 u64 reserved_17_23 : 7;322 u64 cindex : 20;323 u64 reserved_44_62 : 19;324 u64 doneint : 1;325 u64 res_addr; /* W1 */326};327 328/* NIX admin queue result structure */329struct nix_aq_res_s {330 u64 op : 4;331 u64 ctype : 4;332 u64 compcode : 8;333 u64 doneint : 1;334 u64 reserved_17_63 : 47;335 u64 reserved_64_127; /* W1 */336};337 338/* NIX Completion queue context structure */339struct nix_cq_ctx_s {340 u64 base;341 u64 lbp_ena : 1;342 u64 lbpid_low : 3;343 u64 bp_ena : 1;344 u64 lbpid_med : 3;345 u64 bpid : 9;346 u64 lbpid_high : 3;347 u64 qint_idx : 7;348 u64 cq_err : 1;349 u64 cint_idx : 7;350 u64 avg_con : 9;351 u64 wrptr : 20;352 u64 tail : 20;353 u64 head : 20;354 u64 avg_level : 8;355 u64 update_time : 16;356 u64 bp : 8;357 u64 drop : 8;358 u64 drop_ena : 1;359 u64 ena : 1;360 u64 cpt_drop_err_en : 1;361 u64 rsvd_211 : 1;362 u64 substream : 12;363 u64 stash_thresh : 4;364 u64 lbp_frac : 4;365 u64 caching : 1;366 u64 stashing : 1;367 u64 rsvd_234_235 : 2;368 u64 qsize : 4;369 u64 cq_err_int : 8;370 u64 cq_err_int_ena : 8;371};372 373/* CN10K NIX Receive queue context structure */374struct nix_cn10k_rq_ctx_s {375 u64 ena : 1;376 u64 sso_ena : 1;377 u64 ipsech_ena : 1;378 u64 ena_wqwd : 1;379 u64 cq : 20;380 u64 rsvd_36_24 : 13;381 u64 lenerr_dis : 1;382 u64 csum_il4_dis : 1;383 u64 csum_ol4_dis : 1;384 u64 len_il4_dis : 1;385 u64 len_il3_dis : 1;386 u64 len_ol4_dis : 1;387 u64 len_ol3_dis : 1;388 u64 wqe_aura : 20;389 u64 spb_aura : 20;390 u64 lpb_aura : 20;391 u64 sso_grp : 10;392 u64 sso_tt : 2;393 u64 pb_caching : 2;394 u64 wqe_caching : 1;395 u64 xqe_drop_ena : 1;396 u64 spb_drop_ena : 1;397 u64 lpb_drop_ena : 1;398 u64 pb_stashing : 1;399 u64 ipsecd_drop_ena : 1;400 u64 chi_ena : 1;401 u64 rsvd_127_125 : 3;402 u64 band_prof_id : 10; /* W2 */403 u64 rsvd_138 : 1;404 u64 policer_ena : 1;405 u64 spb_sizem1 : 6;406 u64 wqe_skip : 2;407 u64 rsvd_150_148 : 3;408 u64 spb_ena : 1;409 u64 lpb_sizem1 : 12;410 u64 first_skip : 7;411 u64 rsvd_171 : 1;412 u64 later_skip : 6;413 u64 xqe_imm_size : 6;414 u64 rsvd_189_184 : 6;415 u64 xqe_imm_copy : 1;416 u64 xqe_hdr_split : 1;417 u64 xqe_drop : 8; /* W3 */418 u64 xqe_pass : 8;419 u64 wqe_pool_drop : 8;420 u64 wqe_pool_pass : 8;421 u64 spb_aura_drop : 8;422 u64 spb_aura_pass : 8;423 u64 spb_pool_drop : 8;424 u64 spb_pool_pass : 8;425 u64 lpb_aura_drop : 8; /* W4 */426 u64 lpb_aura_pass : 8;427 u64 lpb_pool_drop : 8;428 u64 lpb_pool_pass : 8;429 u64 rsvd_291_288 : 4;430 u64 rq_int : 8;431 u64 rq_int_ena : 8;432 u64 qint_idx : 7;433 u64 rsvd_319_315 : 5;434 u64 ltag : 24; /* W5 */435 u64 good_utag : 8;436 u64 bad_utag : 8;437 u64 flow_tagw : 6;438 u64 ipsec_vwqe : 1;439 u64 vwqe_ena : 1;440 u64 vwqe_wait : 8;441 u64 max_vsize_exp : 4;442 u64 vwqe_skip : 2;443 u64 rsvd_383_382 : 2;444 u64 octs : 48; /* W6 */445 u64 rsvd_447_432 : 16;446 u64 pkts : 48; /* W7 */447 u64 rsvd_511_496 : 16;448 u64 drop_octs : 48; /* W8 */449 u64 rsvd_575_560 : 16;450 u64 drop_pkts : 48; /* W9 */451 u64 rsvd_639_624 : 16;452 u64 re_pkts : 48; /* W10 */453 u64 rsvd_703_688 : 16;454 u64 rsvd_767_704; /* W11 */455 u64 rsvd_831_768; /* W12 */456 u64 rsvd_895_832; /* W13 */457 u64 rsvd_959_896; /* W14 */458 u64 rsvd_1023_960; /* W15 */459};460 461/* CN10K NIX Send queue context structure */462struct nix_cn10k_sq_ctx_s {463 u64 ena : 1;464 u64 qint_idx : 6;465 u64 substream : 20;466 u64 sdp_mcast : 1;467 u64 cq : 20;468 u64 sqe_way_mask : 16;469 u64 smq : 10; /* W1 */470 u64 cq_ena : 1;471 u64 xoff : 1;472 u64 sso_ena : 1;473 u64 smq_rr_weight : 14;474 u64 default_chan : 12;475 u64 sqb_count : 16;476 u64 rsvd_120_119 : 2;477 u64 smq_rr_count_lb : 7;478 u64 smq_rr_count_ub : 25; /* W2 */479 u64 sqb_aura : 20;480 u64 sq_int : 8;481 u64 sq_int_ena : 8;482 u64 sqe_stype : 2;483 u64 rsvd_191 : 1;484 u64 max_sqe_size : 2; /* W3 */485 u64 cq_limit : 8;486 u64 lmt_dis : 1;487 u64 mnq_dis : 1;488 u64 smq_next_sq : 20;489 u64 smq_lso_segnum : 8;490 u64 tail_offset : 6;491 u64 smenq_offset : 6;492 u64 head_offset : 6;493 u64 smenq_next_sqb_vld : 1;494 u64 smq_pend : 1;495 u64 smq_next_sq_vld : 1;496 u64 rsvd_255_253 : 3;497 u64 next_sqb : 64; /* W4 */498 u64 tail_sqb : 64; /* W5 */499 u64 smenq_sqb : 64; /* W6 */500 u64 smenq_next_sqb : 64; /* W7 */501 u64 head_sqb : 64; /* W8 */502 u64 rsvd_583_576 : 8; /* W9 */503 u64 vfi_lso_total : 18;504 u64 vfi_lso_sizem1 : 3;505 u64 vfi_lso_sb : 8;506 u64 vfi_lso_mps : 14;507 u64 vfi_lso_vlan0_ins_ena : 1;508 u64 vfi_lso_vlan1_ins_ena : 1;509 u64 vfi_lso_vld : 1;510 u64 rsvd_639_630 : 10;511 u64 scm_lso_rem : 18; /* W10 */512 u64 rsvd_703_658 : 46;513 u64 octs : 48; /* W11 */514 u64 rsvd_767_752 : 16;515 u64 pkts : 48; /* W12 */516 u64 rsvd_831_816 : 16;517 u64 rsvd_895_832 : 64; /* W13 */518 u64 dropped_octs : 48;519 u64 rsvd_959_944 : 16;520 u64 dropped_pkts : 48;521 u64 rsvd_1023_1008 : 16;522};523 524/* NIX Receive queue context structure */525struct nix_rq_ctx_s {526 u64 ena : 1;527 u64 sso_ena : 1;528 u64 ipsech_ena : 1;529 u64 ena_wqwd : 1;530 u64 cq : 20;531 u64 substream : 20;532 u64 wqe_aura : 20;533 u64 spb_aura : 20;534 u64 lpb_aura : 20;535 u64 sso_grp : 10;536 u64 sso_tt : 2;537 u64 pb_caching : 2;538 u64 wqe_caching : 1;539 u64 xqe_drop_ena : 1;540 u64 spb_drop_ena : 1;541 u64 lpb_drop_ena : 1;542 u64 rsvd_127_122 : 6;543 u64 rsvd_139_128 : 12; /* W2 */544 u64 spb_sizem1 : 6;545 u64 wqe_skip : 2;546 u64 rsvd_150_148 : 3;547 u64 spb_ena : 1;548 u64 lpb_sizem1 : 12;549 u64 first_skip : 7;550 u64 rsvd_171 : 1;551 u64 later_skip : 6;552 u64 xqe_imm_size : 6;553 u64 rsvd_189_184 : 6;554 u64 xqe_imm_copy : 1;555 u64 xqe_hdr_split : 1;556 u64 xqe_drop : 8; /* W3*/557 u64 xqe_pass : 8;558 u64 wqe_pool_drop : 8;559 u64 wqe_pool_pass : 8;560 u64 spb_aura_drop : 8;561 u64 spb_aura_pass : 8;562 u64 spb_pool_drop : 8;563 u64 spb_pool_pass : 8;564 u64 lpb_aura_drop : 8; /* W4 */565 u64 lpb_aura_pass : 8;566 u64 lpb_pool_drop : 8;567 u64 lpb_pool_pass : 8;568 u64 rsvd_291_288 : 4;569 u64 rq_int : 8;570 u64 rq_int_ena : 8;571 u64 qint_idx : 7;572 u64 rsvd_319_315 : 5;573 u64 ltag : 24; /* W5 */574 u64 good_utag : 8;575 u64 bad_utag : 8;576 u64 flow_tagw : 6;577 u64 rsvd_383_366 : 18;578 u64 octs : 48; /* W6 */579 u64 rsvd_447_432 : 16;580 u64 pkts : 48; /* W7 */581 u64 rsvd_511_496 : 16;582 u64 drop_octs : 48; /* W8 */583 u64 rsvd_575_560 : 16;584 u64 drop_pkts : 48; /* W9 */585 u64 rsvd_639_624 : 16;586 u64 re_pkts : 48; /* W10 */587 u64 rsvd_703_688 : 16;588 u64 rsvd_767_704; /* W11 */589 u64 rsvd_831_768; /* W12 */590 u64 rsvd_895_832; /* W13 */591 u64 rsvd_959_896; /* W14 */592 u64 rsvd_1023_960; /* W15 */593};594 595/* NIX sqe sizes */596enum nix_maxsqesz {597 NIX_MAXSQESZ_W16 = 0x0,598 NIX_MAXSQESZ_W8 = 0x1,599};600 601/* NIX SQB caching type */602enum nix_stype {603 NIX_STYPE_STF = 0x0,604 NIX_STYPE_STT = 0x1,605 NIX_STYPE_STP = 0x2,606};607 608/* NIX Send queue context structure */609struct nix_sq_ctx_s {610 u64 ena : 1;611 u64 qint_idx : 6;612 u64 substream : 20;613 u64 sdp_mcast : 1;614 u64 cq : 20;615 u64 sqe_way_mask : 16;616 u64 smq : 9;617 u64 cq_ena : 1;618 u64 xoff : 1;619 u64 sso_ena : 1;620 u64 smq_rr_quantum : 24;621 u64 default_chan : 12;622 u64 sqb_count : 16;623 u64 smq_rr_count : 25;624 u64 sqb_aura : 20;625 u64 sq_int : 8;626 u64 sq_int_ena : 8;627 u64 sqe_stype : 2;628 u64 rsvd_191 : 1;629 u64 max_sqe_size : 2;630 u64 cq_limit : 8;631 u64 lmt_dis : 1;632 u64 mnq_dis : 1;633 u64 smq_next_sq : 20;634 u64 smq_lso_segnum : 8;635 u64 tail_offset : 6;636 u64 smenq_offset : 6;637 u64 head_offset : 6;638 u64 smenq_next_sqb_vld : 1;639 u64 smq_pend : 1;640 u64 smq_next_sq_vld : 1;641 u64 rsvd_255_253 : 3;642 u64 next_sqb : 64;/* W4 */643 u64 tail_sqb : 64;/* W5 */644 u64 smenq_sqb : 64;/* W6 */645 u64 smenq_next_sqb : 64;/* W7 */646 u64 head_sqb : 64;/* W8 */647 u64 rsvd_583_576 : 8;648 u64 vfi_lso_total : 18;649 u64 vfi_lso_sizem1 : 3;650 u64 vfi_lso_sb : 8;651 u64 vfi_lso_mps : 14;652 u64 vfi_lso_vlan0_ins_ena : 1;653 u64 vfi_lso_vlan1_ins_ena : 1;654 u64 vfi_lso_vld : 1;655 u64 rsvd_639_630 : 10;656 u64 scm_lso_rem : 18;657 u64 rsvd_703_658 : 46;658 u64 octs : 48;659 u64 rsvd_767_752 : 16;660 u64 pkts : 48;661 u64 rsvd_831_816 : 16;662 u64 rsvd_895_832 : 64;/* W13 */663 u64 dropped_octs : 48;664 u64 rsvd_959_944 : 16;665 u64 dropped_pkts : 48;666 u64 rsvd_1023_1008 : 16;667};668 669/* NIX Receive side scaling entry structure*/670struct nix_rsse_s {671 uint32_t rq : 20;672 uint32_t reserved_20_31 : 12;673 674};675 676/* NIX receive multicast/mirror entry structure */677struct nix_rx_mce_s {678 uint64_t op : 2;679 uint64_t rsvd_2 : 1;680 uint64_t eol : 1;681 uint64_t index : 20;682 uint64_t rsvd_31_24 : 8;683 uint64_t pf_func : 16;684 uint64_t next : 16;685};686 687enum nix_band_prof_layers {688 BAND_PROF_LEAF_LAYER = 0,689 BAND_PROF_INVAL_LAYER = 1,690 BAND_PROF_MID_LAYER = 2,691 BAND_PROF_TOP_LAYER = 3,692 BAND_PROF_NUM_LAYERS = 4,693};694 695enum NIX_RX_BAND_PROF_ACTIONRESULT_E {696 NIX_RX_BAND_PROF_ACTIONRESULT_PASS = 0x0,697 NIX_RX_BAND_PROF_ACTIONRESULT_DROP = 0x1,698 NIX_RX_BAND_PROF_ACTIONRESULT_RED = 0x2,699};700 701enum nix_band_prof_pc_mode {702 NIX_RX_PC_MODE_VLAN = 0,703 NIX_RX_PC_MODE_DSCP = 1,704 NIX_RX_PC_MODE_GEN = 2,705 NIX_RX_PC_MODE_RSVD = 3,706};707 708/* NIX ingress policer bandwidth profile structure */709struct nix_bandprof_s {710 uint64_t pc_mode : 2; /* W0 */711 uint64_t icolor : 2;712 uint64_t tnl_ena : 1;713 uint64_t reserved_5_7 : 3;714 uint64_t peir_exponent : 5;715 uint64_t reserved_13_15 : 3;716 uint64_t pebs_exponent : 5;717 uint64_t reserved_21_23 : 3;718 uint64_t cir_exponent : 5;719 uint64_t reserved_29_31 : 3;720 uint64_t cbs_exponent : 5;721 uint64_t reserved_37_39 : 3;722 uint64_t peir_mantissa : 8;723 uint64_t pebs_mantissa : 8;724 uint64_t cir_mantissa : 8;725 uint64_t cbs_mantissa : 8; /* W1 */726 uint64_t lmode : 1;727 uint64_t l_sellect : 3;728 uint64_t rdiv : 4;729 uint64_t adjust_exponent : 5;730 uint64_t reserved_85_86 : 2;731 uint64_t adjust_mantissa : 9;732 uint64_t gc_action : 2;733 uint64_t yc_action : 2;734 uint64_t rc_action : 2;735 uint64_t meter_algo : 2;736 uint64_t band_prof_id : 7;737 uint64_t reserved_111_118 : 8;738 uint64_t hl_en : 1;739 uint64_t reserved_120_127 : 8;740 uint64_t ts : 48; /* W2 */741 uint64_t reserved_176_191 : 16;742 uint64_t pe_accum : 32; /* W3 */743 uint64_t c_accum : 32;744 uint64_t green_pkt_pass : 48; /* W4 */745 uint64_t reserved_304_319 : 16;746 uint64_t yellow_pkt_pass : 48; /* W5 */747 uint64_t reserved_368_383 : 16;748 uint64_t red_pkt_pass : 48; /* W6 */749 uint64_t reserved_432_447 : 16;750 uint64_t green_octs_pass : 48; /* W7 */751 uint64_t reserved_496_511 : 16;752 uint64_t yellow_octs_pass : 48; /* W8 */753 uint64_t reserved_560_575 : 16;754 uint64_t red_octs_pass : 48; /* W9 */755 uint64_t reserved_624_639 : 16;756 uint64_t green_pkt_drop : 48; /* W10 */757 uint64_t reserved_688_703 : 16;758 uint64_t yellow_pkt_drop : 48; /* W11 */759 uint64_t reserved_752_767 : 16;760 uint64_t red_pkt_drop : 48; /* W12 */761 uint64_t reserved_816_831 : 16;762 uint64_t green_octs_drop : 48; /* W13 */763 uint64_t reserved_880_895 : 16;764 uint64_t yellow_octs_drop : 48; /* W14 */765 uint64_t reserved_944_959 : 16;766 uint64_t red_octs_drop : 48; /* W15 */767 uint64_t reserved_1008_1023 : 16;768};769 770enum nix_lsoalg {771 NIX_LSOALG_NOP,772 NIX_LSOALG_ADD_SEGNUM,773 NIX_LSOALG_ADD_PAYLEN,774 NIX_LSOALG_ADD_OFFSET,775 NIX_LSOALG_TCP_FLAGS,776};777 778enum nix_txlayer {779 NIX_TXLAYER_OL3,780 NIX_TXLAYER_OL4,781 NIX_TXLAYER_IL3,782 NIX_TXLAYER_IL4,783};784 785struct nix_lso_format {786 u64 offset : 8;787 u64 layer : 2;788 u64 rsvd_10_11 : 2;789 u64 sizem1 : 2;790 u64 rsvd_14_15 : 2;791 u64 alg : 3;792 u64 rsvd_19_63 : 45;793};794 795struct nix_rx_flowkey_alg {796 u64 key_offset :6;797 u64 ln_mask :1;798 u64 fn_mask :1;799 u64 hdr_offset :8;800 u64 bytesm1 :5;801 u64 lid :3;802 u64 reserved_24_24 :1;803 u64 ena :1;804 u64 sel_chan :1;805 u64 ltype_mask :4;806 u64 ltype_match :4;807 u64 reserved_35_63 :29;808};809 810/* NIX VTAG size */811enum nix_vtag_size {812 VTAGSIZE_T4 = 0x0,813 VTAGSIZE_T8 = 0x1,814};815 816enum nix_tx_vtag_op {817 NOP = 0x0,818 VTAG_INSERT = 0x1,819 VTAG_REPLACE = 0x2,820};821 822/* NIX RX VTAG actions */823#define VTAG_STRIP BIT_ULL(4)824#define VTAG_CAPTURE BIT_ULL(5)825 826#endif /* RVU_STRUCT_H */827