1
2
3
4
5
6
7
8
9
10
11 #ifndef RVU_STRUCT_H
12 #define RVU_STRUCT_H
13
14
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
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
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
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
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
85 enum npa_aq_ctype {
86 NPA_AQ_CTYPE_AURA = 0x0,
87 NPA_AQ_CTYPE_POOL = 0x1,
88 };
89
90
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
101 struct npa_aq_inst_s {
102 #if defined(__BIG_ENDIAN_BITFIELD)
103 u64 doneint : 1;
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;
120 };
121
122
123 struct npa_aq_res_s {
124 #if defined(__BIG_ENDIAN_BITFIELD)
125 u64 reserved_17_63 : 47;
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;
138 };
139
140 struct npa_aura_s {
141 u64 pool_addr;
142 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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)
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;
210 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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;
245 };
246
247 struct npa_pool_s {
248 u64 stack_base;
249 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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)
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)
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;
316 u64 ptr_start;
317 u64 ptr_end;
318 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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;
351 u64 reserved_704_767;
352 u64 reserved_768_831;
353 u64 reserved_832_895;
354 u64 reserved_896_959;
355 u64 reserved_960_1023;
356 };
357
358
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
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
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
390 struct nix_aq_inst_s {
391 #if defined(__BIG_ENDIAN_BITFIELD)
392 u64 doneint : 1;
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;
409 };
410
411
412 struct nix_aq_res_s {
413 #if defined(__BIG_ENDIAN_BITFIELD)
414 u64 reserved_17_63 : 47;
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;
427 };
428
429
430 struct nix_cq_ctx_s {
431 u64 base;
432 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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)
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
494 struct nix_rq_ctx_s {
495 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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;
653 u64 rsvd_831_768;
654 u64 rsvd_895_832;
655 u64 rsvd_959_896;
656 u64 rsvd_1023_960;
657 };
658
659
660 enum nix_maxsqesz {
661 NIX_MAXSQESZ_W16 = 0x0,
662 NIX_MAXSQESZ_W8 = 0x1,
663 };
664
665
666 enum nix_stype {
667 NIX_STYPE_STF = 0x0,
668 NIX_STYPE_STT = 0x1,
669 NIX_STYPE_STP = 0x2,
670 };
671
672
673 struct nix_sq_ctx_s {
674 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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)
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)
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;
751 u64 tail_sqb : 64;
752 u64 smenq_sqb : 64;
753 u64 smenq_next_sqb : 64;
754 u64 head_sqb : 64;
755 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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)
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)
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;
798 #if defined(__BIG_ENDIAN_BITFIELD)
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)
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
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
827 struct nix_rx_mce_s {
828 #if defined(__BIG_ENDIAN_BITFIELD)
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
913 enum nix_vtag_size {
914 VTAGSIZE_T4 = 0x0,
915 VTAGSIZE_T8 = 0x1,
916 };
917 #endif