2 /* cnic.c: Broadcom CNIC core network driver.
4 * Copyright (c) 2006-2009 Broadcom Corporation
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation.
15 /* KWQ (kernel work queue) request op codes */
16 #define L2_KWQE_OPCODE_VALUE_FLUSH (4)
18 #define L4_KWQE_OPCODE_VALUE_CONNECT1 (50)
19 #define L4_KWQE_OPCODE_VALUE_CONNECT2 (51)
20 #define L4_KWQE_OPCODE_VALUE_CONNECT3 (52)
21 #define L4_KWQE_OPCODE_VALUE_RESET (53)
22 #define L4_KWQE_OPCODE_VALUE_CLOSE (54)
23 #define L4_KWQE_OPCODE_VALUE_UPDATE_SECRET (60)
24 #define L4_KWQE_OPCODE_VALUE_INIT_ULP (61)
26 #define L4_KWQE_OPCODE_VALUE_OFFLOAD_PG (1)
27 #define L4_KWQE_OPCODE_VALUE_UPDATE_PG (9)
28 #define L4_KWQE_OPCODE_VALUE_UPLOAD_PG (14)
30 #define L5CM_RAMROD_CMD_ID_BASE (0x80)
31 #define L5CM_RAMROD_CMD_ID_TCP_CONNECT (L5CM_RAMROD_CMD_ID_BASE + 3)
32 #define L5CM_RAMROD_CMD_ID_CLOSE (L5CM_RAMROD_CMD_ID_BASE + 12)
33 #define L5CM_RAMROD_CMD_ID_ABORT (L5CM_RAMROD_CMD_ID_BASE + 13)
34 #define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE (L5CM_RAMROD_CMD_ID_BASE + 14)
35 #define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD (L5CM_RAMROD_CMD_ID_BASE + 15)
37 /* KCQ (kernel completion queue) response op codes */
38 #define L4_KCQE_OPCODE_VALUE_CLOSE_COMP (53)
39 #define L4_KCQE_OPCODE_VALUE_RESET_COMP (54)
40 #define L4_KCQE_OPCODE_VALUE_FW_TCP_UPDATE (55)
41 #define L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE (56)
42 #define L4_KCQE_OPCODE_VALUE_RESET_RECEIVED (57)
43 #define L4_KCQE_OPCODE_VALUE_CLOSE_RECEIVED (58)
44 #define L4_KCQE_OPCODE_VALUE_INIT_ULP (61)
46 #define L4_KCQE_OPCODE_VALUE_OFFLOAD_PG (1)
47 #define L4_KCQE_OPCODE_VALUE_UPDATE_PG (9)
48 #define L4_KCQE_OPCODE_VALUE_UPLOAD_PG (14)
50 /* KCQ (kernel completion queue) completion status */
51 #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0)
52 #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93)
54 #define L4_LAYER_CODE (4)
55 #define L2_LAYER_CODE (2)
65 #if defined(__BIG_ENDIAN)
68 #elif defined(__LITTLE_ENDIAN)
73 #if defined(__BIG_ENDIAN)
75 #define L4_KCQ_RESERVED3 (0x7<<0)
76 #define L4_KCQ_RESERVED3_SHIFT 0
77 #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
78 #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
79 #define L4_KCQ_LAYER_CODE (0x7<<4)
80 #define L4_KCQ_LAYER_CODE_SHIFT 4
81 #define L4_KCQ_RESERVED4 (0x1<<7)
82 #define L4_KCQ_RESERVED4_SHIFT 7
85 #elif defined(__LITTLE_ENDIAN)
89 #define L4_KCQ_RESERVED3 (0xF<<0)
90 #define L4_KCQ_RESERVED3_SHIFT 0
91 #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
92 #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
93 #define L4_KCQ_LAYER_CODE (0x7<<4)
94 #define L4_KCQ_LAYER_CODE_SHIFT 4
95 #define L4_KCQ_RESERVED4 (0x1<<7)
96 #define L4_KCQ_RESERVED4_SHIFT 7
102 * L4 KCQ CQE PG upload
104 struct l4_kcq_upload_pg {
106 #if defined(__BIG_ENDIAN)
109 #elif defined(__LITTLE_ENDIAN)
114 #if defined(__BIG_ENDIAN)
116 #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
117 #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
118 #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
119 #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
120 #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
121 #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
124 #elif defined(__LITTLE_ENDIAN)
128 #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
129 #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
130 #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
131 #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
132 #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
133 #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
139 * Gracefully close the connection request
141 struct l4_kwq_close_req {
142 #if defined(__BIG_ENDIAN)
144 #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
145 #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
146 #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
147 #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
148 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
149 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
152 #elif defined(__LITTLE_ENDIAN)
156 #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
157 #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
158 #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
159 #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
160 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
161 #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
169 * The first request to be passed in order to establish connection in option2
171 struct l4_kwq_connect_req1 {
172 #if defined(__BIG_ENDIAN)
174 #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
175 #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
176 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
177 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
178 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
179 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
183 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
184 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
185 #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
186 #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
187 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
188 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
189 #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
190 #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
191 #elif defined(__LITTLE_ENDIAN)
193 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
194 #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
195 #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
196 #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
197 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
198 #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
199 #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
200 #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
204 #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
205 #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
206 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
207 #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
208 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
209 #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
215 #if defined(__BIG_ENDIAN)
218 #elif defined(__LITTLE_ENDIAN)
222 #if defined(__BIG_ENDIAN)
225 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
226 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
227 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
228 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
229 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
230 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
231 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
232 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
233 #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
234 #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
235 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
236 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
237 #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
238 #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
239 #elif defined(__LITTLE_ENDIAN)
241 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
242 #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
243 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
244 #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
245 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
246 #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
247 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
248 #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
249 #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
250 #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
251 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
252 #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
253 #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
254 #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
262 * The second ( optional )request to be passed in order to establish
263 * connection in option2 - for IPv6 only
265 struct l4_kwq_connect_req2 {
266 #if defined(__BIG_ENDIAN)
268 #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
269 #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
270 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
271 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
272 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
273 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
277 #elif defined(__LITTLE_ENDIAN)
282 #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
283 #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
284 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
285 #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
286 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
287 #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
300 * The third ( and last )request to be passed in order to establish
301 * connection in option2
303 struct l4_kwq_connect_req3 {
304 #if defined(__BIG_ENDIAN)
306 #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
307 #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
308 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
309 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
310 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
311 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
314 #elif defined(__LITTLE_ENDIAN)
318 #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
319 #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
320 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
321 #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
322 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
323 #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
327 #if defined(__BIG_ENDIAN)
331 u8 ka_max_probe_count;
332 #elif defined(__LITTLE_ENDIAN)
333 u8 ka_max_probe_count;
338 #if defined(__BIG_ENDIAN)
341 #elif defined(__LITTLE_ENDIAN)
352 * a KWQE request to offload a PG connection
354 struct l4_kwq_offload_pg {
355 #if defined(__BIG_ENDIAN)
357 #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
358 #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
359 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
360 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
361 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
362 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
365 #elif defined(__LITTLE_ENDIAN)
369 #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
370 #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
371 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
372 #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
373 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
374 #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
376 #if defined(__BIG_ENDIAN)
379 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
380 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
381 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
382 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
383 #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
384 #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
387 #elif defined(__LITTLE_ENDIAN)
391 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
392 #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
393 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
394 #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
395 #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
396 #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
399 #if defined(__BIG_ENDIAN)
404 #elif defined(__LITTLE_ENDIAN)
410 #if defined(__BIG_ENDIAN)
415 #elif defined(__LITTLE_ENDIAN)
421 #if defined(__BIG_ENDIAN)
425 #elif defined(__LITTLE_ENDIAN)
430 #if defined(__BIG_ENDIAN)
433 #elif defined(__LITTLE_ENDIAN)
437 #if defined(__BIG_ENDIAN)
440 #elif defined(__LITTLE_ENDIAN)
449 * Abortively close the connection request
451 struct l4_kwq_reset_req {
452 #if defined(__BIG_ENDIAN)
454 #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
455 #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
456 #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
457 #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
458 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
459 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
462 #elif defined(__LITTLE_ENDIAN)
466 #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
467 #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
468 #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
469 #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
470 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
471 #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
479 * a KWQE request to update a PG connection
481 struct l4_kwq_update_pg {
482 #if defined(__BIG_ENDIAN)
484 #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
485 #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
486 #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
487 #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
488 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
489 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
492 #elif defined(__LITTLE_ENDIAN)
496 #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
497 #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
498 #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
499 #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
500 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
501 #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
505 #if defined(__BIG_ENDIAN)
507 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
508 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
509 #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
510 #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
511 #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
512 #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
515 #elif defined(__LITTLE_ENDIAN)
519 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
520 #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
521 #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
522 #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
523 #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
524 #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
526 #if defined(__BIG_ENDIAN)
530 #elif defined(__LITTLE_ENDIAN)
535 #if defined(__BIG_ENDIAN)
540 #elif defined(__LITTLE_ENDIAN)
552 * a KWQE request to upload a PG or L4 context
554 struct l4_kwq_upload {
555 #if defined(__BIG_ENDIAN)
557 #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
558 #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
559 #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
560 #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
561 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
562 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
565 #elif defined(__LITTLE_ENDIAN)
569 #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
570 #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
571 #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
572 #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
573 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
574 #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
580 #endif /* CNIC_DEFS_H */