xref: /OK3568_Linux_fs/kernel/drivers/net/ethernet/cavium/thunder/q_struct.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * This file contains HW queue descriptor formats, config register
4*4882a593Smuzhiyun  * structures etc
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Copyright (C) 2015 Cavium, Inc.
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef Q_STRUCT_H
10*4882a593Smuzhiyun #define Q_STRUCT_H
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun /* Load transaction types for reading segment bytes specified by
13*4882a593Smuzhiyun  * NIC_SEND_GATHER_S[LD_TYPE].
14*4882a593Smuzhiyun  */
15*4882a593Smuzhiyun enum nic_send_ld_type_e {
16*4882a593Smuzhiyun 	NIC_SEND_LD_TYPE_E_LDD = 0x0,
17*4882a593Smuzhiyun 	NIC_SEND_LD_TYPE_E_LDT = 0x1,
18*4882a593Smuzhiyun 	NIC_SEND_LD_TYPE_E_LDWB = 0x2,
19*4882a593Smuzhiyun 	NIC_SEND_LD_TYPE_E_ENUM_LAST = 0x3,
20*4882a593Smuzhiyun };
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun enum ether_type_algorithm {
23*4882a593Smuzhiyun 	ETYPE_ALG_NONE = 0x0,
24*4882a593Smuzhiyun 	ETYPE_ALG_SKIP = 0x1,
25*4882a593Smuzhiyun 	ETYPE_ALG_ENDPARSE = 0x2,
26*4882a593Smuzhiyun 	ETYPE_ALG_VLAN = 0x3,
27*4882a593Smuzhiyun 	ETYPE_ALG_VLAN_STRIP = 0x4,
28*4882a593Smuzhiyun };
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun enum layer3_type {
31*4882a593Smuzhiyun 	L3TYPE_NONE = 0x00,
32*4882a593Smuzhiyun 	L3TYPE_GRH = 0x01,
33*4882a593Smuzhiyun 	L3TYPE_IPV4 = 0x04,
34*4882a593Smuzhiyun 	L3TYPE_IPV4_OPTIONS = 0x05,
35*4882a593Smuzhiyun 	L3TYPE_IPV6 = 0x06,
36*4882a593Smuzhiyun 	L3TYPE_IPV6_OPTIONS = 0x07,
37*4882a593Smuzhiyun 	L3TYPE_ET_STOP = 0x0D,
38*4882a593Smuzhiyun 	L3TYPE_OTHER = 0x0E,
39*4882a593Smuzhiyun };
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun enum layer4_type {
42*4882a593Smuzhiyun 	L4TYPE_NONE = 0x00,
43*4882a593Smuzhiyun 	L4TYPE_IPSEC_ESP = 0x01,
44*4882a593Smuzhiyun 	L4TYPE_IPFRAG = 0x02,
45*4882a593Smuzhiyun 	L4TYPE_IPCOMP = 0x03,
46*4882a593Smuzhiyun 	L4TYPE_TCP = 0x04,
47*4882a593Smuzhiyun 	L4TYPE_UDP = 0x05,
48*4882a593Smuzhiyun 	L4TYPE_SCTP = 0x06,
49*4882a593Smuzhiyun 	L4TYPE_GRE = 0x07,
50*4882a593Smuzhiyun 	L4TYPE_ROCE_BTH = 0x08,
51*4882a593Smuzhiyun 	L4TYPE_OTHER = 0x0E,
52*4882a593Smuzhiyun };
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /* CPI and RSSI configuration */
55*4882a593Smuzhiyun enum cpi_algorithm_type {
56*4882a593Smuzhiyun 	CPI_ALG_NONE = 0x0,
57*4882a593Smuzhiyun 	CPI_ALG_VLAN = 0x1,
58*4882a593Smuzhiyun 	CPI_ALG_VLAN16 = 0x2,
59*4882a593Smuzhiyun 	CPI_ALG_DIFF = 0x3,
60*4882a593Smuzhiyun };
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun enum rss_algorithm_type {
63*4882a593Smuzhiyun 	RSS_ALG_NONE = 0x00,
64*4882a593Smuzhiyun 	RSS_ALG_PORT = 0x01,
65*4882a593Smuzhiyun 	RSS_ALG_IP = 0x02,
66*4882a593Smuzhiyun 	RSS_ALG_TCP_IP = 0x03,
67*4882a593Smuzhiyun 	RSS_ALG_UDP_IP = 0x04,
68*4882a593Smuzhiyun 	RSS_ALG_SCTP_IP = 0x05,
69*4882a593Smuzhiyun 	RSS_ALG_GRE_IP = 0x06,
70*4882a593Smuzhiyun 	RSS_ALG_ROCE = 0x07,
71*4882a593Smuzhiyun };
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun enum rss_hash_cfg {
74*4882a593Smuzhiyun 	RSS_HASH_L2ETC = 0x00,
75*4882a593Smuzhiyun 	RSS_HASH_IP = 0x01,
76*4882a593Smuzhiyun 	RSS_HASH_TCP = 0x02,
77*4882a593Smuzhiyun 	RSS_HASH_TCP_SYN_DIS = 0x03,
78*4882a593Smuzhiyun 	RSS_HASH_UDP = 0x04,
79*4882a593Smuzhiyun 	RSS_HASH_L4ETC = 0x05,
80*4882a593Smuzhiyun 	RSS_HASH_ROCE = 0x06,
81*4882a593Smuzhiyun 	RSS_L3_BIDI = 0x07,
82*4882a593Smuzhiyun 	RSS_L4_BIDI = 0x08,
83*4882a593Smuzhiyun };
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /* Completion queue entry types */
86*4882a593Smuzhiyun enum cqe_type {
87*4882a593Smuzhiyun 	CQE_TYPE_INVALID = 0x0,
88*4882a593Smuzhiyun 	CQE_TYPE_RX = 0x2,
89*4882a593Smuzhiyun 	CQE_TYPE_RX_SPLIT = 0x3,
90*4882a593Smuzhiyun 	CQE_TYPE_RX_TCP = 0x4,
91*4882a593Smuzhiyun 	CQE_TYPE_SEND = 0x8,
92*4882a593Smuzhiyun 	CQE_TYPE_SEND_PTP = 0x9,
93*4882a593Smuzhiyun };
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun enum cqe_rx_tcp_status {
96*4882a593Smuzhiyun 	CQE_RX_STATUS_VALID_TCP_CNXT = 0x00,
97*4882a593Smuzhiyun 	CQE_RX_STATUS_INVALID_TCP_CNXT = 0x0F,
98*4882a593Smuzhiyun };
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun enum cqe_send_status {
101*4882a593Smuzhiyun 	CQE_SEND_STATUS_GOOD = 0x00,
102*4882a593Smuzhiyun 	CQE_SEND_STATUS_DESC_FAULT = 0x01,
103*4882a593Smuzhiyun 	CQE_SEND_STATUS_HDR_CONS_ERR = 0x11,
104*4882a593Smuzhiyun 	CQE_SEND_STATUS_SUBDESC_ERR = 0x12,
105*4882a593Smuzhiyun 	CQE_SEND_STATUS_IMM_SIZE_OFLOW = 0x80,
106*4882a593Smuzhiyun 	CQE_SEND_STATUS_CRC_SEQ_ERR = 0x81,
107*4882a593Smuzhiyun 	CQE_SEND_STATUS_DATA_SEQ_ERR = 0x82,
108*4882a593Smuzhiyun 	CQE_SEND_STATUS_MEM_SEQ_ERR = 0x83,
109*4882a593Smuzhiyun 	CQE_SEND_STATUS_LOCK_VIOL = 0x84,
110*4882a593Smuzhiyun 	CQE_SEND_STATUS_LOCK_UFLOW = 0x85,
111*4882a593Smuzhiyun 	CQE_SEND_STATUS_DATA_FAULT = 0x86,
112*4882a593Smuzhiyun 	CQE_SEND_STATUS_TSTMP_CONFLICT = 0x87,
113*4882a593Smuzhiyun 	CQE_SEND_STATUS_TSTMP_TIMEOUT = 0x88,
114*4882a593Smuzhiyun 	CQE_SEND_STATUS_MEM_FAULT = 0x89,
115*4882a593Smuzhiyun 	CQE_SEND_STATUS_CSUM_OVERLAP = 0x8A,
116*4882a593Smuzhiyun 	CQE_SEND_STATUS_CSUM_OVERFLOW = 0x8B,
117*4882a593Smuzhiyun };
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun enum cqe_rx_tcp_end_reason {
120*4882a593Smuzhiyun 	CQE_RX_TCP_END_FIN_FLAG_DET = 0,
121*4882a593Smuzhiyun 	CQE_RX_TCP_END_INVALID_FLAG = 1,
122*4882a593Smuzhiyun 	CQE_RX_TCP_END_TIMEOUT = 2,
123*4882a593Smuzhiyun 	CQE_RX_TCP_END_OUT_OF_SEQ = 3,
124*4882a593Smuzhiyun 	CQE_RX_TCP_END_PKT_ERR = 4,
125*4882a593Smuzhiyun 	CQE_RX_TCP_END_QS_DISABLED = 0x0F,
126*4882a593Smuzhiyun };
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /* Packet protocol level error enumeration */
129*4882a593Smuzhiyun enum cqe_rx_err_level {
130*4882a593Smuzhiyun 	CQE_RX_ERRLVL_RE = 0x0,
131*4882a593Smuzhiyun 	CQE_RX_ERRLVL_L2 = 0x1,
132*4882a593Smuzhiyun 	CQE_RX_ERRLVL_L3 = 0x2,
133*4882a593Smuzhiyun 	CQE_RX_ERRLVL_L4 = 0x3,
134*4882a593Smuzhiyun };
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun /* Packet protocol level error type enumeration */
137*4882a593Smuzhiyun enum cqe_rx_err_opcode {
138*4882a593Smuzhiyun 	CQE_RX_ERR_RE_NONE = 0x0,
139*4882a593Smuzhiyun 	CQE_RX_ERR_RE_PARTIAL = 0x1,
140*4882a593Smuzhiyun 	CQE_RX_ERR_RE_JABBER = 0x2,
141*4882a593Smuzhiyun 	CQE_RX_ERR_RE_FCS = 0x7,
142*4882a593Smuzhiyun 	CQE_RX_ERR_RE_TERMINATE = 0x9,
143*4882a593Smuzhiyun 	CQE_RX_ERR_RE_RX_CTL = 0xb,
144*4882a593Smuzhiyun 	CQE_RX_ERR_PREL2_ERR = 0x1f,
145*4882a593Smuzhiyun 	CQE_RX_ERR_L2_FRAGMENT = 0x20,
146*4882a593Smuzhiyun 	CQE_RX_ERR_L2_OVERRUN = 0x21,
147*4882a593Smuzhiyun 	CQE_RX_ERR_L2_PFCS = 0x22,
148*4882a593Smuzhiyun 	CQE_RX_ERR_L2_PUNY = 0x23,
149*4882a593Smuzhiyun 	CQE_RX_ERR_L2_MAL = 0x24,
150*4882a593Smuzhiyun 	CQE_RX_ERR_L2_OVERSIZE = 0x25,
151*4882a593Smuzhiyun 	CQE_RX_ERR_L2_UNDERSIZE = 0x26,
152*4882a593Smuzhiyun 	CQE_RX_ERR_L2_LENMISM = 0x27,
153*4882a593Smuzhiyun 	CQE_RX_ERR_L2_PCLP = 0x28,
154*4882a593Smuzhiyun 	CQE_RX_ERR_IP_NOT = 0x41,
155*4882a593Smuzhiyun 	CQE_RX_ERR_IP_CHK = 0x42,
156*4882a593Smuzhiyun 	CQE_RX_ERR_IP_MAL = 0x43,
157*4882a593Smuzhiyun 	CQE_RX_ERR_IP_MALD = 0x44,
158*4882a593Smuzhiyun 	CQE_RX_ERR_IP_HOP = 0x45,
159*4882a593Smuzhiyun 	CQE_RX_ERR_L3_ICRC = 0x46,
160*4882a593Smuzhiyun 	CQE_RX_ERR_L3_PCLP = 0x47,
161*4882a593Smuzhiyun 	CQE_RX_ERR_L4_MAL = 0x61,
162*4882a593Smuzhiyun 	CQE_RX_ERR_L4_CHK = 0x62,
163*4882a593Smuzhiyun 	CQE_RX_ERR_UDP_LEN = 0x63,
164*4882a593Smuzhiyun 	CQE_RX_ERR_L4_PORT = 0x64,
165*4882a593Smuzhiyun 	CQE_RX_ERR_TCP_FLAG = 0x65,
166*4882a593Smuzhiyun 	CQE_RX_ERR_TCP_OFFSET = 0x66,
167*4882a593Smuzhiyun 	CQE_RX_ERR_L4_PCLP = 0x67,
168*4882a593Smuzhiyun 	CQE_RX_ERR_RBDR_TRUNC = 0x70,
169*4882a593Smuzhiyun };
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun struct cqe_rx_t {
172*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
173*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
174*4882a593Smuzhiyun 	u64   stdn_fault:1;
175*4882a593Smuzhiyun 	u64   rsvd0:1;
176*4882a593Smuzhiyun 	u64   rq_qs:7;
177*4882a593Smuzhiyun 	u64   rq_idx:3;
178*4882a593Smuzhiyun 	u64   rsvd1:12;
179*4882a593Smuzhiyun 	u64   rss_alg:4;
180*4882a593Smuzhiyun 	u64   rsvd2:4;
181*4882a593Smuzhiyun 	u64   rb_cnt:4;
182*4882a593Smuzhiyun 	u64   vlan_found:1;
183*4882a593Smuzhiyun 	u64   vlan_stripped:1;
184*4882a593Smuzhiyun 	u64   vlan2_found:1;
185*4882a593Smuzhiyun 	u64   vlan2_stripped:1;
186*4882a593Smuzhiyun 	u64   l4_type:4;
187*4882a593Smuzhiyun 	u64   l3_type:4;
188*4882a593Smuzhiyun 	u64   l2_present:1;
189*4882a593Smuzhiyun 	u64   err_level:3;
190*4882a593Smuzhiyun 	u64   err_opcode:8;
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun 	u64   pkt_len:16; /* W1 */
193*4882a593Smuzhiyun 	u64   l2_ptr:8;
194*4882a593Smuzhiyun 	u64   l3_ptr:8;
195*4882a593Smuzhiyun 	u64   l4_ptr:8;
196*4882a593Smuzhiyun 	u64   cq_pkt_len:8;
197*4882a593Smuzhiyun 	u64   align_pad:3;
198*4882a593Smuzhiyun 	u64   rsvd3:1;
199*4882a593Smuzhiyun 	u64   chan:12;
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun 	u64   rss_tag:32; /* W2 */
202*4882a593Smuzhiyun 	u64   vlan_tci:16;
203*4882a593Smuzhiyun 	u64   vlan_ptr:8;
204*4882a593Smuzhiyun 	u64   vlan2_ptr:8;
205*4882a593Smuzhiyun 
206*4882a593Smuzhiyun 	u64   rb3_sz:16; /* W3 */
207*4882a593Smuzhiyun 	u64   rb2_sz:16;
208*4882a593Smuzhiyun 	u64   rb1_sz:16;
209*4882a593Smuzhiyun 	u64   rb0_sz:16;
210*4882a593Smuzhiyun 
211*4882a593Smuzhiyun 	u64   rb7_sz:16; /* W4 */
212*4882a593Smuzhiyun 	u64   rb6_sz:16;
213*4882a593Smuzhiyun 	u64   rb5_sz:16;
214*4882a593Smuzhiyun 	u64   rb4_sz:16;
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun 	u64   rb11_sz:16; /* W5 */
217*4882a593Smuzhiyun 	u64   rb10_sz:16;
218*4882a593Smuzhiyun 	u64   rb9_sz:16;
219*4882a593Smuzhiyun 	u64   rb8_sz:16;
220*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
221*4882a593Smuzhiyun 	u64   err_opcode:8;
222*4882a593Smuzhiyun 	u64   err_level:3;
223*4882a593Smuzhiyun 	u64   l2_present:1;
224*4882a593Smuzhiyun 	u64   l3_type:4;
225*4882a593Smuzhiyun 	u64   l4_type:4;
226*4882a593Smuzhiyun 	u64   vlan2_stripped:1;
227*4882a593Smuzhiyun 	u64   vlan2_found:1;
228*4882a593Smuzhiyun 	u64   vlan_stripped:1;
229*4882a593Smuzhiyun 	u64   vlan_found:1;
230*4882a593Smuzhiyun 	u64   rb_cnt:4;
231*4882a593Smuzhiyun 	u64   rsvd2:4;
232*4882a593Smuzhiyun 	u64   rss_alg:4;
233*4882a593Smuzhiyun 	u64   rsvd1:12;
234*4882a593Smuzhiyun 	u64   rq_idx:3;
235*4882a593Smuzhiyun 	u64   rq_qs:7;
236*4882a593Smuzhiyun 	u64   rsvd0:1;
237*4882a593Smuzhiyun 	u64   stdn_fault:1;
238*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
239*4882a593Smuzhiyun 	u64   chan:12;
240*4882a593Smuzhiyun 	u64   rsvd3:1;
241*4882a593Smuzhiyun 	u64   align_pad:3;
242*4882a593Smuzhiyun 	u64   cq_pkt_len:8;
243*4882a593Smuzhiyun 	u64   l4_ptr:8;
244*4882a593Smuzhiyun 	u64   l3_ptr:8;
245*4882a593Smuzhiyun 	u64   l2_ptr:8;
246*4882a593Smuzhiyun 	u64   pkt_len:16; /* W1 */
247*4882a593Smuzhiyun 	u64   vlan2_ptr:8;
248*4882a593Smuzhiyun 	u64   vlan_ptr:8;
249*4882a593Smuzhiyun 	u64   vlan_tci:16;
250*4882a593Smuzhiyun 	u64   rss_tag:32; /* W2 */
251*4882a593Smuzhiyun 	u64   rb0_sz:16;
252*4882a593Smuzhiyun 	u64   rb1_sz:16;
253*4882a593Smuzhiyun 	u64   rb2_sz:16;
254*4882a593Smuzhiyun 	u64   rb3_sz:16; /* W3 */
255*4882a593Smuzhiyun 	u64   rb4_sz:16;
256*4882a593Smuzhiyun 	u64   rb5_sz:16;
257*4882a593Smuzhiyun 	u64   rb6_sz:16;
258*4882a593Smuzhiyun 	u64   rb7_sz:16; /* W4 */
259*4882a593Smuzhiyun 	u64   rb8_sz:16;
260*4882a593Smuzhiyun 	u64   rb9_sz:16;
261*4882a593Smuzhiyun 	u64   rb10_sz:16;
262*4882a593Smuzhiyun 	u64   rb11_sz:16; /* W5 */
263*4882a593Smuzhiyun #endif
264*4882a593Smuzhiyun 	u64   rb0_ptr:64;
265*4882a593Smuzhiyun 	u64   rb1_ptr:64;
266*4882a593Smuzhiyun 	u64   rb2_ptr:64;
267*4882a593Smuzhiyun 	u64   rb3_ptr:64;
268*4882a593Smuzhiyun 	u64   rb4_ptr:64;
269*4882a593Smuzhiyun 	u64   rb5_ptr:64;
270*4882a593Smuzhiyun 	u64   rb6_ptr:64;
271*4882a593Smuzhiyun 	u64   rb7_ptr:64;
272*4882a593Smuzhiyun 	u64   rb8_ptr:64;
273*4882a593Smuzhiyun 	u64   rb9_ptr:64;
274*4882a593Smuzhiyun 	u64   rb10_ptr:64;
275*4882a593Smuzhiyun 	u64   rb11_ptr:64;
276*4882a593Smuzhiyun };
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun struct cqe_rx_tcp_err_t {
279*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
280*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
281*4882a593Smuzhiyun 	u64   rsvd0:60;
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun 	u64   rsvd1:4; /* W1 */
284*4882a593Smuzhiyun 	u64   partial_first:1;
285*4882a593Smuzhiyun 	u64   rsvd2:27;
286*4882a593Smuzhiyun 	u64   rbdr_bytes:8;
287*4882a593Smuzhiyun 	u64   rsvd3:24;
288*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
289*4882a593Smuzhiyun 	u64   rsvd0:60;
290*4882a593Smuzhiyun 	u64   cqe_type:4;
291*4882a593Smuzhiyun 
292*4882a593Smuzhiyun 	u64   rsvd3:24;
293*4882a593Smuzhiyun 	u64   rbdr_bytes:8;
294*4882a593Smuzhiyun 	u64   rsvd2:27;
295*4882a593Smuzhiyun 	u64   partial_first:1;
296*4882a593Smuzhiyun 	u64   rsvd1:4;
297*4882a593Smuzhiyun #endif
298*4882a593Smuzhiyun };
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun struct cqe_rx_tcp_t {
301*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
302*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
303*4882a593Smuzhiyun 	u64   rsvd0:52;
304*4882a593Smuzhiyun 	u64   cq_tcp_status:8;
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun 	u64   rsvd1:32; /* W1 */
307*4882a593Smuzhiyun 	u64   tcp_cntx_bytes:8;
308*4882a593Smuzhiyun 	u64   rsvd2:8;
309*4882a593Smuzhiyun 	u64   tcp_err_bytes:16;
310*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
311*4882a593Smuzhiyun 	u64   cq_tcp_status:8;
312*4882a593Smuzhiyun 	u64   rsvd0:52;
313*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun 	u64   tcp_err_bytes:16;
316*4882a593Smuzhiyun 	u64   rsvd2:8;
317*4882a593Smuzhiyun 	u64   tcp_cntx_bytes:8;
318*4882a593Smuzhiyun 	u64   rsvd1:32; /* W1 */
319*4882a593Smuzhiyun #endif
320*4882a593Smuzhiyun };
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun struct cqe_send_t {
323*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
324*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
325*4882a593Smuzhiyun 	u64   rsvd0:4;
326*4882a593Smuzhiyun 	u64   sqe_ptr:16;
327*4882a593Smuzhiyun 	u64   rsvd1:4;
328*4882a593Smuzhiyun 	u64   rsvd2:10;
329*4882a593Smuzhiyun 	u64   sq_qs:7;
330*4882a593Smuzhiyun 	u64   sq_idx:3;
331*4882a593Smuzhiyun 	u64   rsvd3:8;
332*4882a593Smuzhiyun 	u64   send_status:8;
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun 	u64   ptp_timestamp:64; /* W1 */
335*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
336*4882a593Smuzhiyun 	u64   send_status:8;
337*4882a593Smuzhiyun 	u64   rsvd3:8;
338*4882a593Smuzhiyun 	u64   sq_idx:3;
339*4882a593Smuzhiyun 	u64   sq_qs:7;
340*4882a593Smuzhiyun 	u64   rsvd2:10;
341*4882a593Smuzhiyun 	u64   rsvd1:4;
342*4882a593Smuzhiyun 	u64   sqe_ptr:16;
343*4882a593Smuzhiyun 	u64   rsvd0:4;
344*4882a593Smuzhiyun 	u64   cqe_type:4; /* W0 */
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun 	u64   ptp_timestamp:64; /* W1 */
347*4882a593Smuzhiyun #endif
348*4882a593Smuzhiyun };
349*4882a593Smuzhiyun 
350*4882a593Smuzhiyun union cq_desc_t {
351*4882a593Smuzhiyun 	u64    u[64];
352*4882a593Smuzhiyun 	struct cqe_send_t snd_hdr;
353*4882a593Smuzhiyun 	struct cqe_rx_t rx_hdr;
354*4882a593Smuzhiyun 	struct cqe_rx_tcp_t rx_tcp_hdr;
355*4882a593Smuzhiyun 	struct cqe_rx_tcp_err_t rx_tcp_err_hdr;
356*4882a593Smuzhiyun };
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun struct rbdr_entry_t {
359*4882a593Smuzhiyun 	u64   buf_addr;
360*4882a593Smuzhiyun };
361*4882a593Smuzhiyun 
362*4882a593Smuzhiyun /* TCP reassembly context */
363*4882a593Smuzhiyun struct rbe_tcp_cnxt_t {
364*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
365*4882a593Smuzhiyun 	u64   tcp_pkt_cnt:12;
366*4882a593Smuzhiyun 	u64   rsvd1:4;
367*4882a593Smuzhiyun 	u64   align_hdr_bytes:4;
368*4882a593Smuzhiyun 	u64   align_ptr_bytes:4;
369*4882a593Smuzhiyun 	u64   ptr_bytes:16;
370*4882a593Smuzhiyun 	u64   rsvd2:24;
371*4882a593Smuzhiyun 	u64   cqe_type:4;
372*4882a593Smuzhiyun 	u64   rsvd0:54;
373*4882a593Smuzhiyun 	u64   tcp_end_reason:2;
374*4882a593Smuzhiyun 	u64   tcp_status:4;
375*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
376*4882a593Smuzhiyun 	u64   tcp_status:4;
377*4882a593Smuzhiyun 	u64   tcp_end_reason:2;
378*4882a593Smuzhiyun 	u64   rsvd0:54;
379*4882a593Smuzhiyun 	u64   cqe_type:4;
380*4882a593Smuzhiyun 	u64   rsvd2:24;
381*4882a593Smuzhiyun 	u64   ptr_bytes:16;
382*4882a593Smuzhiyun 	u64   align_ptr_bytes:4;
383*4882a593Smuzhiyun 	u64   align_hdr_bytes:4;
384*4882a593Smuzhiyun 	u64   rsvd1:4;
385*4882a593Smuzhiyun 	u64   tcp_pkt_cnt:12;
386*4882a593Smuzhiyun #endif
387*4882a593Smuzhiyun };
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun /* Always Big endian */
390*4882a593Smuzhiyun struct rx_hdr_t {
391*4882a593Smuzhiyun 	u64   opaque:32;
392*4882a593Smuzhiyun 	u64   rss_flow:8;
393*4882a593Smuzhiyun 	u64   skip_length:6;
394*4882a593Smuzhiyun 	u64   disable_rss:1;
395*4882a593Smuzhiyun 	u64   disable_tcp_reassembly:1;
396*4882a593Smuzhiyun 	u64   nodrop:1;
397*4882a593Smuzhiyun 	u64   dest_alg:2;
398*4882a593Smuzhiyun 	u64   rsvd0:2;
399*4882a593Smuzhiyun 	u64   dest_rq:11;
400*4882a593Smuzhiyun };
401*4882a593Smuzhiyun 
402*4882a593Smuzhiyun enum send_l4_csum_type {
403*4882a593Smuzhiyun 	SEND_L4_CSUM_DISABLE = 0x00,
404*4882a593Smuzhiyun 	SEND_L4_CSUM_UDP = 0x01,
405*4882a593Smuzhiyun 	SEND_L4_CSUM_TCP = 0x02,
406*4882a593Smuzhiyun 	SEND_L4_CSUM_SCTP = 0x03,
407*4882a593Smuzhiyun };
408*4882a593Smuzhiyun 
409*4882a593Smuzhiyun enum send_crc_alg {
410*4882a593Smuzhiyun 	SEND_CRCALG_CRC32 = 0x00,
411*4882a593Smuzhiyun 	SEND_CRCALG_CRC32C = 0x01,
412*4882a593Smuzhiyun 	SEND_CRCALG_ICRC = 0x02,
413*4882a593Smuzhiyun };
414*4882a593Smuzhiyun 
415*4882a593Smuzhiyun enum send_load_type {
416*4882a593Smuzhiyun 	SEND_LD_TYPE_LDD = 0x00,
417*4882a593Smuzhiyun 	SEND_LD_TYPE_LDT = 0x01,
418*4882a593Smuzhiyun 	SEND_LD_TYPE_LDWB = 0x02,
419*4882a593Smuzhiyun };
420*4882a593Smuzhiyun 
421*4882a593Smuzhiyun enum send_mem_alg_type {
422*4882a593Smuzhiyun 	SEND_MEMALG_SET = 0x00,
423*4882a593Smuzhiyun 	SEND_MEMALG_ADD = 0x08,
424*4882a593Smuzhiyun 	SEND_MEMALG_SUB = 0x09,
425*4882a593Smuzhiyun 	SEND_MEMALG_ADDLEN = 0x0A,
426*4882a593Smuzhiyun 	SEND_MEMALG_SUBLEN = 0x0B,
427*4882a593Smuzhiyun };
428*4882a593Smuzhiyun 
429*4882a593Smuzhiyun enum send_mem_dsz_type {
430*4882a593Smuzhiyun 	SEND_MEMDSZ_B64 = 0x00,
431*4882a593Smuzhiyun 	SEND_MEMDSZ_B32 = 0x01,
432*4882a593Smuzhiyun 	SEND_MEMDSZ_B8 = 0x03,
433*4882a593Smuzhiyun };
434*4882a593Smuzhiyun 
435*4882a593Smuzhiyun enum sq_subdesc_type {
436*4882a593Smuzhiyun 	SQ_DESC_TYPE_INVALID = 0x00,
437*4882a593Smuzhiyun 	SQ_DESC_TYPE_HEADER = 0x01,
438*4882a593Smuzhiyun 	SQ_DESC_TYPE_CRC = 0x02,
439*4882a593Smuzhiyun 	SQ_DESC_TYPE_IMMEDIATE = 0x03,
440*4882a593Smuzhiyun 	SQ_DESC_TYPE_GATHER = 0x04,
441*4882a593Smuzhiyun 	SQ_DESC_TYPE_MEMORY = 0x05,
442*4882a593Smuzhiyun };
443*4882a593Smuzhiyun 
444*4882a593Smuzhiyun struct sq_crc_subdesc {
445*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
446*4882a593Smuzhiyun 	u64    rsvd1:32;
447*4882a593Smuzhiyun 	u64    crc_ival:32;
448*4882a593Smuzhiyun 	u64    subdesc_type:4;
449*4882a593Smuzhiyun 	u64    crc_alg:2;
450*4882a593Smuzhiyun 	u64    rsvd0:10;
451*4882a593Smuzhiyun 	u64    crc_insert_pos:16;
452*4882a593Smuzhiyun 	u64    hdr_start:16;
453*4882a593Smuzhiyun 	u64    crc_len:16;
454*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
455*4882a593Smuzhiyun 	u64    crc_len:16;
456*4882a593Smuzhiyun 	u64    hdr_start:16;
457*4882a593Smuzhiyun 	u64    crc_insert_pos:16;
458*4882a593Smuzhiyun 	u64    rsvd0:10;
459*4882a593Smuzhiyun 	u64    crc_alg:2;
460*4882a593Smuzhiyun 	u64    subdesc_type:4;
461*4882a593Smuzhiyun 	u64    crc_ival:32;
462*4882a593Smuzhiyun 	u64    rsvd1:32;
463*4882a593Smuzhiyun #endif
464*4882a593Smuzhiyun };
465*4882a593Smuzhiyun 
466*4882a593Smuzhiyun struct sq_gather_subdesc {
467*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
468*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
469*4882a593Smuzhiyun 	u64    ld_type:2;
470*4882a593Smuzhiyun 	u64    rsvd0:42;
471*4882a593Smuzhiyun 	u64    size:16;
472*4882a593Smuzhiyun 
473*4882a593Smuzhiyun 	u64    rsvd1:15; /* W1 */
474*4882a593Smuzhiyun 	u64    addr:49;
475*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
476*4882a593Smuzhiyun 	u64    size:16;
477*4882a593Smuzhiyun 	u64    rsvd0:42;
478*4882a593Smuzhiyun 	u64    ld_type:2;
479*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
480*4882a593Smuzhiyun 
481*4882a593Smuzhiyun 	u64    addr:49;
482*4882a593Smuzhiyun 	u64    rsvd1:15; /* W1 */
483*4882a593Smuzhiyun #endif
484*4882a593Smuzhiyun };
485*4882a593Smuzhiyun 
486*4882a593Smuzhiyun /* SQ immediate subdescriptor */
487*4882a593Smuzhiyun struct sq_imm_subdesc {
488*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
489*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
490*4882a593Smuzhiyun 	u64    rsvd0:46;
491*4882a593Smuzhiyun 	u64    len:14;
492*4882a593Smuzhiyun 
493*4882a593Smuzhiyun 	u64    data:64; /* W1 */
494*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
495*4882a593Smuzhiyun 	u64    len:14;
496*4882a593Smuzhiyun 	u64    rsvd0:46;
497*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
498*4882a593Smuzhiyun 
499*4882a593Smuzhiyun 	u64    data:64; /* W1 */
500*4882a593Smuzhiyun #endif
501*4882a593Smuzhiyun };
502*4882a593Smuzhiyun 
503*4882a593Smuzhiyun struct sq_mem_subdesc {
504*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
505*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
506*4882a593Smuzhiyun 	u64    mem_alg:4;
507*4882a593Smuzhiyun 	u64    mem_dsz:2;
508*4882a593Smuzhiyun 	u64    wmem:1;
509*4882a593Smuzhiyun 	u64    rsvd0:21;
510*4882a593Smuzhiyun 	u64    offset:32;
511*4882a593Smuzhiyun 
512*4882a593Smuzhiyun 	u64    rsvd1:15; /* W1 */
513*4882a593Smuzhiyun 	u64    addr:49;
514*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
515*4882a593Smuzhiyun 	u64    offset:32;
516*4882a593Smuzhiyun 	u64    rsvd0:21;
517*4882a593Smuzhiyun 	u64    wmem:1;
518*4882a593Smuzhiyun 	u64    mem_dsz:2;
519*4882a593Smuzhiyun 	u64    mem_alg:4;
520*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
521*4882a593Smuzhiyun 
522*4882a593Smuzhiyun 	u64    addr:49;
523*4882a593Smuzhiyun 	u64    rsvd1:15; /* W1 */
524*4882a593Smuzhiyun #endif
525*4882a593Smuzhiyun };
526*4882a593Smuzhiyun 
527*4882a593Smuzhiyun struct sq_hdr_subdesc {
528*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
529*4882a593Smuzhiyun 	u64    subdesc_type:4;
530*4882a593Smuzhiyun 	u64    tso:1;
531*4882a593Smuzhiyun 	u64    post_cqe:1; /* Post CQE on no error also */
532*4882a593Smuzhiyun 	u64    dont_send:1;
533*4882a593Smuzhiyun 	u64    tstmp:1;
534*4882a593Smuzhiyun 	u64    subdesc_cnt:8;
535*4882a593Smuzhiyun 	u64    csum_l4:2;
536*4882a593Smuzhiyun 	u64    csum_l3:1;
537*4882a593Smuzhiyun 	u64    csum_inner_l4:2;
538*4882a593Smuzhiyun 	u64    csum_inner_l3:1;
539*4882a593Smuzhiyun 	u64    rsvd0:2;
540*4882a593Smuzhiyun 	u64    l4_offset:8;
541*4882a593Smuzhiyun 	u64    l3_offset:8;
542*4882a593Smuzhiyun 	u64    rsvd1:4;
543*4882a593Smuzhiyun 	u64    tot_len:20; /* W0 */
544*4882a593Smuzhiyun 
545*4882a593Smuzhiyun 	u64    rsvd2:24;
546*4882a593Smuzhiyun 	u64    inner_l4_offset:8;
547*4882a593Smuzhiyun 	u64    inner_l3_offset:8;
548*4882a593Smuzhiyun 	u64    tso_start:8;
549*4882a593Smuzhiyun 	u64    rsvd3:2;
550*4882a593Smuzhiyun 	u64    tso_max_paysize:14; /* W1 */
551*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
552*4882a593Smuzhiyun 	u64    tot_len:20;
553*4882a593Smuzhiyun 	u64    rsvd1:4;
554*4882a593Smuzhiyun 	u64    l3_offset:8;
555*4882a593Smuzhiyun 	u64    l4_offset:8;
556*4882a593Smuzhiyun 	u64    rsvd0:2;
557*4882a593Smuzhiyun 	u64    csum_inner_l3:1;
558*4882a593Smuzhiyun 	u64    csum_inner_l4:2;
559*4882a593Smuzhiyun 	u64    csum_l3:1;
560*4882a593Smuzhiyun 	u64    csum_l4:2;
561*4882a593Smuzhiyun 	u64    subdesc_cnt:8;
562*4882a593Smuzhiyun 	u64    tstmp:1;
563*4882a593Smuzhiyun 	u64    dont_send:1;
564*4882a593Smuzhiyun 	u64    post_cqe:1; /* Post CQE on no error also */
565*4882a593Smuzhiyun 	u64    tso:1;
566*4882a593Smuzhiyun 	u64    subdesc_type:4; /* W0 */
567*4882a593Smuzhiyun 
568*4882a593Smuzhiyun 	u64    tso_max_paysize:14;
569*4882a593Smuzhiyun 	u64    rsvd3:2;
570*4882a593Smuzhiyun 	u64    tso_start:8;
571*4882a593Smuzhiyun 	u64    inner_l3_offset:8;
572*4882a593Smuzhiyun 	u64    inner_l4_offset:8;
573*4882a593Smuzhiyun 	u64    rsvd2:24; /* W1 */
574*4882a593Smuzhiyun #endif
575*4882a593Smuzhiyun };
576*4882a593Smuzhiyun 
577*4882a593Smuzhiyun /* Queue config register formats */
578*4882a593Smuzhiyun struct rq_cfg {
579*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
580*4882a593Smuzhiyun 	u64 reserved_2_63:62;
581*4882a593Smuzhiyun 	u64 ena:1;
582*4882a593Smuzhiyun 	u64 tcp_ena:1;
583*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
584*4882a593Smuzhiyun 	u64 tcp_ena:1;
585*4882a593Smuzhiyun 	u64 ena:1;
586*4882a593Smuzhiyun 	u64 reserved_2_63:62;
587*4882a593Smuzhiyun #endif
588*4882a593Smuzhiyun };
589*4882a593Smuzhiyun 
590*4882a593Smuzhiyun struct cq_cfg {
591*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
592*4882a593Smuzhiyun 	u64 reserved_43_63:21;
593*4882a593Smuzhiyun 	u64 ena:1;
594*4882a593Smuzhiyun 	u64 reset:1;
595*4882a593Smuzhiyun 	u64 caching:1;
596*4882a593Smuzhiyun 	u64 reserved_35_39:5;
597*4882a593Smuzhiyun 	u64 qsize:3;
598*4882a593Smuzhiyun 	u64 reserved_25_31:7;
599*4882a593Smuzhiyun 	u64 avg_con:9;
600*4882a593Smuzhiyun 	u64 reserved_0_15:16;
601*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
602*4882a593Smuzhiyun 	u64 reserved_0_15:16;
603*4882a593Smuzhiyun 	u64 avg_con:9;
604*4882a593Smuzhiyun 	u64 reserved_25_31:7;
605*4882a593Smuzhiyun 	u64 qsize:3;
606*4882a593Smuzhiyun 	u64 reserved_35_39:5;
607*4882a593Smuzhiyun 	u64 caching:1;
608*4882a593Smuzhiyun 	u64 reset:1;
609*4882a593Smuzhiyun 	u64 ena:1;
610*4882a593Smuzhiyun 	u64 reserved_43_63:21;
611*4882a593Smuzhiyun #endif
612*4882a593Smuzhiyun };
613*4882a593Smuzhiyun 
614*4882a593Smuzhiyun struct sq_cfg {
615*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
616*4882a593Smuzhiyun 	u64 reserved_32_63:32;
617*4882a593Smuzhiyun 	u64 cq_limit:8;
618*4882a593Smuzhiyun 	u64 reserved_20_23:4;
619*4882a593Smuzhiyun 	u64 ena:1;
620*4882a593Smuzhiyun 	u64 reserved_18_18:1;
621*4882a593Smuzhiyun 	u64 reset:1;
622*4882a593Smuzhiyun 	u64 ldwb:1;
623*4882a593Smuzhiyun 	u64 reserved_11_15:5;
624*4882a593Smuzhiyun 	u64 qsize:3;
625*4882a593Smuzhiyun 	u64 reserved_3_7:5;
626*4882a593Smuzhiyun 	u64 tstmp_bgx_intf:3;
627*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
628*4882a593Smuzhiyun 	u64 tstmp_bgx_intf:3;
629*4882a593Smuzhiyun 	u64 reserved_3_7:5;
630*4882a593Smuzhiyun 	u64 qsize:3;
631*4882a593Smuzhiyun 	u64 reserved_11_15:5;
632*4882a593Smuzhiyun 	u64 ldwb:1;
633*4882a593Smuzhiyun 	u64 reset:1;
634*4882a593Smuzhiyun 	u64 reserved_18_18:1;
635*4882a593Smuzhiyun 	u64 ena:1;
636*4882a593Smuzhiyun 	u64 reserved_20_23:4;
637*4882a593Smuzhiyun 	u64 cq_limit:8;
638*4882a593Smuzhiyun 	u64 reserved_32_63:32;
639*4882a593Smuzhiyun #endif
640*4882a593Smuzhiyun };
641*4882a593Smuzhiyun 
642*4882a593Smuzhiyun struct rbdr_cfg {
643*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
644*4882a593Smuzhiyun 	u64 reserved_45_63:19;
645*4882a593Smuzhiyun 	u64 ena:1;
646*4882a593Smuzhiyun 	u64 reset:1;
647*4882a593Smuzhiyun 	u64 ldwb:1;
648*4882a593Smuzhiyun 	u64 reserved_36_41:6;
649*4882a593Smuzhiyun 	u64 qsize:4;
650*4882a593Smuzhiyun 	u64 reserved_25_31:7;
651*4882a593Smuzhiyun 	u64 avg_con:9;
652*4882a593Smuzhiyun 	u64 reserved_12_15:4;
653*4882a593Smuzhiyun 	u64 lines:12;
654*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
655*4882a593Smuzhiyun 	u64 lines:12;
656*4882a593Smuzhiyun 	u64 reserved_12_15:4;
657*4882a593Smuzhiyun 	u64 avg_con:9;
658*4882a593Smuzhiyun 	u64 reserved_25_31:7;
659*4882a593Smuzhiyun 	u64 qsize:4;
660*4882a593Smuzhiyun 	u64 reserved_36_41:6;
661*4882a593Smuzhiyun 	u64 ldwb:1;
662*4882a593Smuzhiyun 	u64 reset:1;
663*4882a593Smuzhiyun 	u64 ena: 1;
664*4882a593Smuzhiyun 	u64 reserved_45_63:19;
665*4882a593Smuzhiyun #endif
666*4882a593Smuzhiyun };
667*4882a593Smuzhiyun 
668*4882a593Smuzhiyun struct qs_cfg {
669*4882a593Smuzhiyun #if defined(__BIG_ENDIAN_BITFIELD)
670*4882a593Smuzhiyun 	u64 reserved_32_63:32;
671*4882a593Smuzhiyun 	u64 ena:1;
672*4882a593Smuzhiyun 	u64 reserved_27_30:4;
673*4882a593Smuzhiyun 	u64 sq_ins_ena:1;
674*4882a593Smuzhiyun 	u64 sq_ins_pos:6;
675*4882a593Smuzhiyun 	u64 lock_ena:1;
676*4882a593Smuzhiyun 	u64 lock_viol_cqe_ena:1;
677*4882a593Smuzhiyun 	u64 send_tstmp_ena:1;
678*4882a593Smuzhiyun 	u64 be:1;
679*4882a593Smuzhiyun 	u64 reserved_7_15:9;
680*4882a593Smuzhiyun 	u64 vnic:7;
681*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN_BITFIELD)
682*4882a593Smuzhiyun 	u64 vnic:7;
683*4882a593Smuzhiyun 	u64 reserved_7_15:9;
684*4882a593Smuzhiyun 	u64 be:1;
685*4882a593Smuzhiyun 	u64 send_tstmp_ena:1;
686*4882a593Smuzhiyun 	u64 lock_viol_cqe_ena:1;
687*4882a593Smuzhiyun 	u64 lock_ena:1;
688*4882a593Smuzhiyun 	u64 sq_ins_pos:6;
689*4882a593Smuzhiyun 	u64 sq_ins_ena:1;
690*4882a593Smuzhiyun 	u64 reserved_27_30:4;
691*4882a593Smuzhiyun 	u64 ena:1;
692*4882a593Smuzhiyun 	u64 reserved_32_63:32;
693*4882a593Smuzhiyun #endif
694*4882a593Smuzhiyun };
695*4882a593Smuzhiyun 
696*4882a593Smuzhiyun #endif /* Q_STRUCT_H */
697