1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2018, Intel Corporation. */
4 #ifndef _ICE_LAN_TX_RX_H_
5 #define _ICE_LAN_TX_RX_H_
7 union ice_32byte_rx_desc {
9 __le64 pkt_addr; /* Packet buffer address */
10 __le64 hdr_addr; /* Header buffer address */
11 /* bit 0 of hdr_addr is DD bit */
18 __le16 mirroring_status;
22 __le32 rss; /* RSS Hash */
23 __le32 fd_id; /* Flow Director filter ID */
27 /* status/error/PTYPE/length */
28 __le64 status_error_len;
31 __le16 ext_status; /* extended status */
43 struct ice_fltr_desc {
44 __le64 qidx_compq_space_stat;
45 __le64 dtype_cmd_vsi_fdid;
48 #define ICE_FXD_FLTR_QW0_QINDEX_S 0
49 #define ICE_FXD_FLTR_QW0_QINDEX_M (0x7FFULL << ICE_FXD_FLTR_QW0_QINDEX_S)
50 #define ICE_FXD_FLTR_QW0_COMP_Q_S 11
51 #define ICE_FXD_FLTR_QW0_COMP_Q_M BIT_ULL(ICE_FXD_FLTR_QW0_COMP_Q_S)
52 #define ICE_FXD_FLTR_QW0_COMP_Q_ZERO 0x0ULL
54 #define ICE_FXD_FLTR_QW0_COMP_REPORT_S 12
55 #define ICE_FXD_FLTR_QW0_COMP_REPORT_M \
56 (0x3ULL << ICE_FXD_FLTR_QW0_COMP_REPORT_S)
57 #define ICE_FXD_FLTR_QW0_COMP_REPORT_SW_FAIL 0x1ULL
58 #define ICE_FXD_FLTR_QW0_COMP_REPORT_SW 0x2ULL
60 #define ICE_FXD_FLTR_QW0_FD_SPACE_S 14
61 #define ICE_FXD_FLTR_QW0_FD_SPACE_M (0x3ULL << ICE_FXD_FLTR_QW0_FD_SPACE_S)
62 #define ICE_FXD_FLTR_QW0_FD_SPACE_GUAR_BEST 0x2ULL
64 #define ICE_FXD_FLTR_QW0_STAT_CNT_S 16
65 #define ICE_FXD_FLTR_QW0_STAT_CNT_M \
66 (0x1FFFULL << ICE_FXD_FLTR_QW0_STAT_CNT_S)
67 #define ICE_FXD_FLTR_QW0_STAT_ENA_S 29
68 #define ICE_FXD_FLTR_QW0_STAT_ENA_M (0x3ULL << ICE_FXD_FLTR_QW0_STAT_ENA_S)
69 #define ICE_FXD_FLTR_QW0_STAT_ENA_PKTS 0x1ULL
71 #define ICE_FXD_FLTR_QW0_EVICT_ENA_S 31
72 #define ICE_FXD_FLTR_QW0_EVICT_ENA_M BIT_ULL(ICE_FXD_FLTR_QW0_EVICT_ENA_S)
73 #define ICE_FXD_FLTR_QW0_EVICT_ENA_FALSE 0x0ULL
74 #define ICE_FXD_FLTR_QW0_EVICT_ENA_TRUE 0x1ULL
76 #define ICE_FXD_FLTR_QW0_TO_Q_S 32
77 #define ICE_FXD_FLTR_QW0_TO_Q_M (0x7ULL << ICE_FXD_FLTR_QW0_TO_Q_S)
78 #define ICE_FXD_FLTR_QW0_TO_Q_EQUALS_QINDEX 0x0ULL
80 #define ICE_FXD_FLTR_QW0_TO_Q_PRI_S 35
81 #define ICE_FXD_FLTR_QW0_TO_Q_PRI_M (0x7ULL << ICE_FXD_FLTR_QW0_TO_Q_PRI_S)
82 #define ICE_FXD_FLTR_QW0_TO_Q_PRIO1 0x1ULL
84 #define ICE_FXD_FLTR_QW0_DPU_RECIPE_S 38
85 #define ICE_FXD_FLTR_QW0_DPU_RECIPE_M \
86 (0x3ULL << ICE_FXD_FLTR_QW0_DPU_RECIPE_S)
87 #define ICE_FXD_FLTR_QW0_DPU_RECIPE_DFLT 0x0ULL
89 #define ICE_FXD_FLTR_QW0_DROP_S 40
90 #define ICE_FXD_FLTR_QW0_DROP_M BIT_ULL(ICE_FXD_FLTR_QW0_DROP_S)
91 #define ICE_FXD_FLTR_QW0_DROP_NO 0x0ULL
92 #define ICE_FXD_FLTR_QW0_DROP_YES 0x1ULL
94 #define ICE_FXD_FLTR_QW0_FLEX_PRI_S 41
95 #define ICE_FXD_FLTR_QW0_FLEX_PRI_M (0x7ULL << ICE_FXD_FLTR_QW0_FLEX_PRI_S)
96 #define ICE_FXD_FLTR_QW0_FLEX_PRI_NONE 0x0ULL
98 #define ICE_FXD_FLTR_QW0_FLEX_MDID_S 44
99 #define ICE_FXD_FLTR_QW0_FLEX_MDID_M (0xFULL << ICE_FXD_FLTR_QW0_FLEX_MDID_S)
100 #define ICE_FXD_FLTR_QW0_FLEX_MDID0 0x0ULL
102 #define ICE_FXD_FLTR_QW0_FLEX_VAL_S 48
103 #define ICE_FXD_FLTR_QW0_FLEX_VAL_M \
104 (0xFFFFULL << ICE_FXD_FLTR_QW0_FLEX_VAL_S)
105 #define ICE_FXD_FLTR_QW0_FLEX_VAL0 0x0ULL
107 #define ICE_FXD_FLTR_QW1_DTYPE_S 0
108 #define ICE_FXD_FLTR_QW1_DTYPE_M (0xFULL << ICE_FXD_FLTR_QW1_DTYPE_S)
109 #define ICE_FXD_FLTR_QW1_PCMD_S 4
110 #define ICE_FXD_FLTR_QW1_PCMD_M BIT_ULL(ICE_FXD_FLTR_QW1_PCMD_S)
111 #define ICE_FXD_FLTR_QW1_PCMD_ADD 0x0ULL
112 #define ICE_FXD_FLTR_QW1_PCMD_REMOVE 0x1ULL
114 #define ICE_FXD_FLTR_QW1_PROF_PRI_S 5
115 #define ICE_FXD_FLTR_QW1_PROF_PRI_M (0x7ULL << ICE_FXD_FLTR_QW1_PROF_PRI_S)
116 #define ICE_FXD_FLTR_QW1_PROF_PRIO_ZERO 0x0ULL
118 #define ICE_FXD_FLTR_QW1_PROF_S 8
119 #define ICE_FXD_FLTR_QW1_PROF_M (0x3FULL << ICE_FXD_FLTR_QW1_PROF_S)
120 #define ICE_FXD_FLTR_QW1_PROF_ZERO 0x0ULL
122 #define ICE_FXD_FLTR_QW1_FD_VSI_S 14
123 #define ICE_FXD_FLTR_QW1_FD_VSI_M (0x3FFULL << ICE_FXD_FLTR_QW1_FD_VSI_S)
124 #define ICE_FXD_FLTR_QW1_SWAP_S 24
125 #define ICE_FXD_FLTR_QW1_SWAP_M BIT_ULL(ICE_FXD_FLTR_QW1_SWAP_S)
126 #define ICE_FXD_FLTR_QW1_SWAP_NOT_SET 0x0ULL
127 #define ICE_FXD_FLTR_QW1_SWAP_SET 0x1ULL
129 #define ICE_FXD_FLTR_QW1_FDID_PRI_S 25
130 #define ICE_FXD_FLTR_QW1_FDID_PRI_M (0x7ULL << ICE_FXD_FLTR_QW1_FDID_PRI_S)
131 #define ICE_FXD_FLTR_QW1_FDID_PRI_ONE 0x1ULL
132 #define ICE_FXD_FLTR_QW1_FDID_PRI_THREE 0x3ULL
134 #define ICE_FXD_FLTR_QW1_FDID_MDID_S 28
135 #define ICE_FXD_FLTR_QW1_FDID_MDID_M (0xFULL << ICE_FXD_FLTR_QW1_FDID_MDID_S)
136 #define ICE_FXD_FLTR_QW1_FDID_MDID_FD 0x05ULL
138 #define ICE_FXD_FLTR_QW1_FDID_S 32
139 #define ICE_FXD_FLTR_QW1_FDID_M \
140 (0xFFFFFFFFULL << ICE_FXD_FLTR_QW1_FDID_S)
141 #define ICE_FXD_FLTR_QW1_FDID_ZERO 0x0ULL
143 /* definition for FD filter programming status descriptor WB format */
144 #define ICE_FXD_FLTR_WB_QW1_DD_S 0
145 #define ICE_FXD_FLTR_WB_QW1_DD_M (0x1ULL << ICE_FXD_FLTR_WB_QW1_DD_S)
146 #define ICE_FXD_FLTR_WB_QW1_DD_YES 0x1ULL
148 #define ICE_FXD_FLTR_WB_QW1_PROG_ID_S 1
149 #define ICE_FXD_FLTR_WB_QW1_PROG_ID_M \
150 (0x3ULL << ICE_FXD_FLTR_WB_QW1_PROG_ID_S)
151 #define ICE_FXD_FLTR_WB_QW1_PROG_ADD 0x0ULL
152 #define ICE_FXD_FLTR_WB_QW1_PROG_DEL 0x1ULL
154 #define ICE_FXD_FLTR_WB_QW1_FAIL_S 4
155 #define ICE_FXD_FLTR_WB_QW1_FAIL_M (0x1ULL << ICE_FXD_FLTR_WB_QW1_FAIL_S)
156 #define ICE_FXD_FLTR_WB_QW1_FAIL_YES 0x1ULL
158 #define ICE_FXD_FLTR_WB_QW1_FAIL_PROF_S 5
159 #define ICE_FXD_FLTR_WB_QW1_FAIL_PROF_M \
160 (0x1ULL << ICE_FXD_FLTR_WB_QW1_FAIL_PROF_S)
161 #define ICE_FXD_FLTR_WB_QW1_FAIL_PROF_YES 0x1ULL
163 /* Rx Flex Descriptor
164 * This descriptor is used instead of the legacy version descriptor when
165 * ice_rlan_ctx.adv_desc is set
167 union ice_32b_rx_flex_desc {
169 __le64 pkt_addr; /* Packet buffer address */
170 __le64 hdr_addr; /* Header buffer address */
171 /* bit 0 of hdr_addr is DD bit */
177 u8 rxdid; /* descriptor builder profile ID */
178 u8 mir_id_umb_cast; /* mirror=[5:0], umb=[7:6] */
179 __le16 ptype_flex_flags0; /* ptype=[9:0], ff0=[15:10] */
180 __le16 pkt_len; /* [15:14] are reserved */
181 __le16 hdr_len_sph_flex_flags1; /* header=[10:0] */
183 /* ff1/ext=[15:12] */
186 __le16 status_error0;
192 __le16 status_error1;
208 } wb; /* writeback */
211 /* Rx Flex Descriptor NIC Profile
212 * This descriptor corresponds to RxDID 2 which contains
213 * metadata fields for RSS, flow ID and timestamp info
215 struct ice_32b_rx_flex_desc_nic {
219 __le16 ptype_flexi_flags0;
221 __le16 hdr_len_sph_flex_flags1;
224 __le16 status_error0;
229 __le16 status_error1;
246 /* Rx Flex Descriptor NIC Profile
248 * Flex-field 0: RSS hash lower 16-bits
249 * Flex-field 1: RSS hash upper 16-bits
250 * Flex-field 2: Flow ID lower 16-bits
251 * Flex-field 3: Source VSI
252 * Flex-field 4: reserved, VLAN ID taken from L2Tag
254 struct ice_32b_rx_flex_desc_nic_2 {
258 __le16 ptype_flexi_flags0;
260 __le16 hdr_len_sph_flex_flags1;
263 __le16 status_error0;
268 __le16 status_error1;
286 /* Receive Flex Descriptor profile IDs: There are a total
287 * of 64 profiles where profile IDs 0/1 are for legacy; and
288 * profiles 2-63 are flex profiles that can be programmed
289 * with a specific metadata (profile 7 reserved for HW)
292 ICE_RXDID_LEGACY_0 = 0,
293 ICE_RXDID_LEGACY_1 = 1,
294 ICE_RXDID_FLEX_NIC = 2,
295 ICE_RXDID_FLEX_NIC_2 = 6,
300 /* Receive Flex Descriptor Rx opcode values */
301 #define ICE_RX_OPC_MDID 0x01
303 /* Receive Descriptor MDID values that access packet flags */
304 enum ice_flex_mdid_pkt_flags {
305 ICE_RX_MDID_PKT_FLAGS_15_0 = 20,
306 ICE_RX_MDID_PKT_FLAGS_31_16,
307 ICE_RX_MDID_PKT_FLAGS_47_32,
308 ICE_RX_MDID_PKT_FLAGS_63_48,
311 /* Receive Descriptor MDID values */
312 enum ice_flex_rx_mdid {
313 ICE_RX_MDID_FLOW_ID_LOWER = 5,
314 ICE_RX_MDID_FLOW_ID_HIGH,
315 ICE_RX_MDID_SRC_VSI = 19,
316 ICE_RX_MDID_HASH_LOW = 56,
317 ICE_RX_MDID_HASH_HIGH,
320 /* Rx/Tx Flag64 packet flag bits */
321 enum ice_flg64_bits {
323 ICE_FLG_EVLAN_x8100 = 14,
326 ICE_FLG_TNL_MAC = 22,
339 /* for ice_32byte_rx_flex_desc.ptype_flexi_flags0 member */
340 #define ICE_RX_FLEX_DESC_PTYPE_M (0x3FF) /* 10-bits */
342 /* for ice_32byte_rx_flex_desc.pkt_length member */
343 #define ICE_RX_FLX_DESC_PKT_LEN_M (0x3FFF) /* 14-bits */
345 enum ice_rx_flex_desc_status_error_0_bits {
346 /* Note: These are predefined bit offsets */
347 ICE_RX_FLEX_DESC_STATUS0_DD_S = 0,
348 ICE_RX_FLEX_DESC_STATUS0_EOF_S,
349 ICE_RX_FLEX_DESC_STATUS0_HBO_S,
350 ICE_RX_FLEX_DESC_STATUS0_L3L4P_S,
351 ICE_RX_FLEX_DESC_STATUS0_XSUM_IPE_S,
352 ICE_RX_FLEX_DESC_STATUS0_XSUM_L4E_S,
353 ICE_RX_FLEX_DESC_STATUS0_XSUM_EIPE_S,
354 ICE_RX_FLEX_DESC_STATUS0_XSUM_EUDPE_S,
355 ICE_RX_FLEX_DESC_STATUS0_LPBK_S,
356 ICE_RX_FLEX_DESC_STATUS0_IPV6EXADD_S,
357 ICE_RX_FLEX_DESC_STATUS0_RXE_S,
358 ICE_RX_FLEX_DESC_STATUS0_CRCP_S,
359 ICE_RX_FLEX_DESC_STATUS0_RSS_VALID_S,
360 ICE_RX_FLEX_DESC_STATUS0_L2TAG1P_S,
361 ICE_RX_FLEX_DESC_STATUS0_XTRMD0_VALID_S,
362 ICE_RX_FLEX_DESC_STATUS0_XTRMD1_VALID_S,
363 ICE_RX_FLEX_DESC_STATUS0_LAST /* this entry must be last!!! */
366 enum ice_rx_flex_desc_status_error_1_bits {
367 /* Note: These are predefined bit offsets */
368 ICE_RX_FLEX_DESC_STATUS1_NAT_S = 4,
369 /* [10:5] reserved */
370 ICE_RX_FLEX_DESC_STATUS1_L2TAG2P_S = 11,
371 ICE_RX_FLEX_DESC_STATUS1_LAST /* this entry must be last!!! */
374 #define ICE_RXQ_CTX_SIZE_DWORDS 8
375 #define ICE_RXQ_CTX_SZ (ICE_RXQ_CTX_SIZE_DWORDS * sizeof(u32))
376 #define ICE_TX_CMPLTNQ_CTX_SIZE_DWORDS 22
377 #define ICE_TX_DRBELL_Q_CTX_SIZE_DWORDS 5
378 #define GLTCLAN_CQ_CNTX(i, CQ) (GLTCLAN_CQ_CNTX0(CQ) + ((i) * 0x0800))
380 /* RLAN Rx queue context data
382 * The sizes of the variables may be larger than needed due to crossing byte
383 * boundaries. If we do not have the width of the variable set to the correct
384 * size then we could end up shifting bits off the top of the variable when the
385 * variable is at the top of a byte and crosses over into the next byte.
387 struct ice_rlan_ctx {
389 u16 cpuid; /* bigger than needed, see above for reason */
390 #define ICE_RLAN_BASE_S 7
393 #define ICE_RLAN_CTX_DBUF_S 7
394 u16 dbuf; /* bigger than needed, see above for reason */
395 #define ICE_RLAN_CTX_HBUF_S 6
396 u16 hbuf; /* bigger than needed, see above for reason */
404 u32 rxmax; /* bigger than needed, see above for reason */
409 u16 lrxqthresh; /* bigger than needed, see above for reason */
410 u8 prefena; /* NOTE: normally must be set to 1 at init */
420 #define ICE_CTX_STORE(_struct, _ele, _width, _lsb) { \
421 .offset = offsetof(struct _struct, _ele), \
422 .size_of = sizeof_field(struct _struct, _ele), \
427 /* for hsplit_0 field of Rx RLAN context */
428 enum ice_rlan_ctx_rx_hsplit_0 {
429 ICE_RLAN_RX_HSPLIT_0_NO_SPLIT = 0,
430 ICE_RLAN_RX_HSPLIT_0_SPLIT_L2 = 1,
431 ICE_RLAN_RX_HSPLIT_0_SPLIT_IP = 2,
432 ICE_RLAN_RX_HSPLIT_0_SPLIT_TCP_UDP = 4,
433 ICE_RLAN_RX_HSPLIT_0_SPLIT_SCTP = 8,
436 /* for hsplit_1 field of Rx RLAN context */
437 enum ice_rlan_ctx_rx_hsplit_1 {
438 ICE_RLAN_RX_HSPLIT_1_NO_SPLIT = 0,
439 ICE_RLAN_RX_HSPLIT_1_SPLIT_L2 = 1,
440 ICE_RLAN_RX_HSPLIT_1_SPLIT_ALWAYS = 2,
445 __le64 buf_addr; /* Address of descriptor's data buf */
446 __le64 cmd_type_offset_bsz;
449 enum ice_tx_desc_dtype_value {
450 ICE_TX_DESC_DTYPE_DATA = 0x0,
451 ICE_TX_DESC_DTYPE_CTX = 0x1,
452 ICE_TX_DESC_DTYPE_FLTR_PROG = 0x8,
453 /* DESC_DONE - HW has completed write-back of descriptor */
454 ICE_TX_DESC_DTYPE_DESC_DONE = 0xF,
457 #define ICE_TXD_QW1_CMD_S 4
458 #define ICE_TXD_QW1_CMD_M (0xFFFUL << ICE_TXD_QW1_CMD_S)
460 enum ice_tx_desc_cmd_bits {
461 ICE_TX_DESC_CMD_EOP = 0x0001,
462 ICE_TX_DESC_CMD_RS = 0x0002,
463 ICE_TX_DESC_CMD_IL2TAG1 = 0x0008,
464 ICE_TX_DESC_CMD_DUMMY = 0x0010,
465 ICE_TX_DESC_CMD_IIPT_IPV6 = 0x0020,
466 ICE_TX_DESC_CMD_IIPT_IPV4 = 0x0040,
467 ICE_TX_DESC_CMD_IIPT_IPV4_CSUM = 0x0060,
468 ICE_TX_DESC_CMD_L4T_EOFT_TCP = 0x0100,
469 ICE_TX_DESC_CMD_L4T_EOFT_SCTP = 0x0200,
470 ICE_TX_DESC_CMD_L4T_EOFT_UDP = 0x0300,
471 ICE_TX_DESC_CMD_RE = 0x0400,
474 #define ICE_TXD_QW1_OFFSET_S 16
475 #define ICE_TXD_QW1_OFFSET_M (0x3FFFFULL << ICE_TXD_QW1_OFFSET_S)
477 enum ice_tx_desc_len_fields {
478 /* Note: These are predefined bit offsets */
479 ICE_TX_DESC_LEN_MACLEN_S = 0, /* 7 BITS */
480 ICE_TX_DESC_LEN_IPLEN_S = 7, /* 7 BITS */
481 ICE_TX_DESC_LEN_L4_LEN_S = 14 /* 4 BITS */
484 #define ICE_TXD_QW1_MACLEN_M (0x7FUL << ICE_TX_DESC_LEN_MACLEN_S)
485 #define ICE_TXD_QW1_IPLEN_M (0x7FUL << ICE_TX_DESC_LEN_IPLEN_S)
486 #define ICE_TXD_QW1_L4LEN_M (0xFUL << ICE_TX_DESC_LEN_L4_LEN_S)
488 /* Tx descriptor field limits in bytes */
489 #define ICE_TXD_MACLEN_MAX ((ICE_TXD_QW1_MACLEN_M >> \
490 ICE_TX_DESC_LEN_MACLEN_S) * ICE_BYTES_PER_WORD)
491 #define ICE_TXD_IPLEN_MAX ((ICE_TXD_QW1_IPLEN_M >> \
492 ICE_TX_DESC_LEN_IPLEN_S) * ICE_BYTES_PER_DWORD)
493 #define ICE_TXD_L4LEN_MAX ((ICE_TXD_QW1_L4LEN_M >> \
494 ICE_TX_DESC_LEN_L4_LEN_S) * ICE_BYTES_PER_DWORD)
496 #define ICE_TXD_QW1_TX_BUF_SZ_S 34
497 #define ICE_TXD_QW1_L2TAG1_S 48
499 /* Context descriptors */
500 struct ice_tx_ctx_desc {
501 __le32 tunneling_params;
507 #define ICE_TXD_CTX_QW1_CMD_S 4
508 #define ICE_TXD_CTX_QW1_CMD_M (0x7FUL << ICE_TXD_CTX_QW1_CMD_S)
510 #define ICE_TXD_CTX_QW1_TSO_LEN_S 30
511 #define ICE_TXD_CTX_QW1_TSO_LEN_M \
512 (0x3FFFFULL << ICE_TXD_CTX_QW1_TSO_LEN_S)
514 #define ICE_TXD_CTX_QW1_MSS_S 50
515 #define ICE_TXD_CTX_MIN_MSS 64
517 #define ICE_TXD_CTX_QW1_VSI_S 50
518 #define ICE_TXD_CTX_QW1_VSI_M (0x3FFULL << ICE_TXD_CTX_QW1_VSI_S)
520 enum ice_tx_ctx_desc_cmd_bits {
521 ICE_TX_CTX_DESC_TSO = 0x01,
522 ICE_TX_CTX_DESC_TSYN = 0x02,
523 ICE_TX_CTX_DESC_IL2TAG2 = 0x04,
524 ICE_TX_CTX_DESC_IL2TAG2_IL2H = 0x08,
525 ICE_TX_CTX_DESC_SWTCH_NOTAG = 0x00,
526 ICE_TX_CTX_DESC_SWTCH_UPLINK = 0x10,
527 ICE_TX_CTX_DESC_SWTCH_LOCAL = 0x20,
528 ICE_TX_CTX_DESC_SWTCH_VSI = 0x30,
529 ICE_TX_CTX_DESC_RESERVED = 0x40
532 enum ice_tx_ctx_desc_eipt_offload {
533 ICE_TX_CTX_EIPT_NONE = 0x0,
534 ICE_TX_CTX_EIPT_IPV6 = 0x1,
535 ICE_TX_CTX_EIPT_IPV4_NO_CSUM = 0x2,
536 ICE_TX_CTX_EIPT_IPV4 = 0x3
539 #define ICE_TXD_CTX_QW0_EIPLEN_S 2
541 #define ICE_TXD_CTX_QW0_L4TUNT_S 9
543 #define ICE_TXD_CTX_UDP_TUNNELING BIT_ULL(ICE_TXD_CTX_QW0_L4TUNT_S)
544 #define ICE_TXD_CTX_GRE_TUNNELING (0x2ULL << ICE_TXD_CTX_QW0_L4TUNT_S)
546 #define ICE_TXD_CTX_QW0_NATLEN_S 12
548 #define ICE_TXD_CTX_QW0_L4T_CS_S 23
549 #define ICE_TXD_CTX_QW0_L4T_CS_M BIT_ULL(ICE_TXD_CTX_QW0_L4T_CS_S)
551 #define ICE_LAN_TXQ_MAX_QGRPS 127
552 #define ICE_LAN_TXQ_MAX_QDIS 1023
554 /* Tx queue context data
556 * The sizes of the variables may be larger than needed due to crossing byte
557 * boundaries. If we do not have the width of the variable set to the correct
558 * size then we could end up shifting bits off the top of the variable when the
559 * variable is at the top of a byte and crosses over into the next byte.
561 struct ice_tlan_ctx {
562 #define ICE_TLAN_CTX_BASE_S 7
563 u64 base; /* base is defined in 128-byte units */
565 u16 cgd_num; /* bigger than needed, see above for reason */
569 #define ICE_TLAN_CTX_VMVF_TYPE_VF 0
570 #define ICE_TLAN_CTX_VMVF_TYPE_VMQ 1
571 #define ICE_TLAN_CTX_VMVF_TYPE_PF 2
574 u8 internal_usage_flag;
576 u16 cpuid; /* bigger than needed, see above for reason */
583 u8 itr_notification_mode;
585 u32 qlen; /* bigger than needed, see above for reason */
592 u8 pkt_shaper_prof_idx;
593 u8 int_q_state; /* width not needed - internal - DO NOT WRITE!!! */
596 #endif /* _ICE_LAN_TX_RX_H_ */