/drivers/net/ethernet/broadcom/cnic_defs.h

http://github.com/mirrors/linux · C Header · 5462 lines · 4643 code · 326 blank · 493 comment · 0 complexity · 9a57cf539585108f1b1ae737b568c5e1 MD5 · raw file

Large files are truncated click here to view the full file

  1. /* cnic.c: QLogic CNIC core network driver.
  2. *
  3. * Copyright (c) 2006-2014 Broadcom Corporation
  4. * Copyright (c) 2014 QLogic Corporation
  5. *
  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.
  9. *
  10. */
  11. #ifndef CNIC_DEFS_H
  12. #define CNIC_DEFS_H
  13. /* KWQ (kernel work queue) request op codes */
  14. #define L2_KWQE_OPCODE_VALUE_FLUSH (4)
  15. #define L2_KWQE_OPCODE_VALUE_VM_FREE_RX_QUEUE (8)
  16. #define L4_KWQE_OPCODE_VALUE_CONNECT1 (50)
  17. #define L4_KWQE_OPCODE_VALUE_CONNECT2 (51)
  18. #define L4_KWQE_OPCODE_VALUE_CONNECT3 (52)
  19. #define L4_KWQE_OPCODE_VALUE_RESET (53)
  20. #define L4_KWQE_OPCODE_VALUE_CLOSE (54)
  21. #define L4_KWQE_OPCODE_VALUE_UPDATE_SECRET (60)
  22. #define L4_KWQE_OPCODE_VALUE_INIT_ULP (61)
  23. #define L4_KWQE_OPCODE_VALUE_OFFLOAD_PG (1)
  24. #define L4_KWQE_OPCODE_VALUE_UPDATE_PG (9)
  25. #define L4_KWQE_OPCODE_VALUE_UPLOAD_PG (14)
  26. #define L5CM_RAMROD_CMD_ID_BASE (0x80)
  27. #define L5CM_RAMROD_CMD_ID_TCP_CONNECT (L5CM_RAMROD_CMD_ID_BASE + 3)
  28. #define L5CM_RAMROD_CMD_ID_CLOSE (L5CM_RAMROD_CMD_ID_BASE + 12)
  29. #define L5CM_RAMROD_CMD_ID_ABORT (L5CM_RAMROD_CMD_ID_BASE + 13)
  30. #define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE (L5CM_RAMROD_CMD_ID_BASE + 14)
  31. #define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD (L5CM_RAMROD_CMD_ID_BASE + 15)
  32. #define FCOE_RAMROD_CMD_ID_INIT_FUNC (FCOE_KCQE_OPCODE_INIT_FUNC)
  33. #define FCOE_RAMROD_CMD_ID_DESTROY_FUNC (FCOE_KCQE_OPCODE_DESTROY_FUNC)
  34. #define FCOE_RAMROD_CMD_ID_STAT_FUNC (FCOE_KCQE_OPCODE_STAT_FUNC)
  35. #define FCOE_RAMROD_CMD_ID_OFFLOAD_CONN (FCOE_KCQE_OPCODE_OFFLOAD_CONN)
  36. #define FCOE_RAMROD_CMD_ID_ENABLE_CONN (FCOE_KCQE_OPCODE_ENABLE_CONN)
  37. #define FCOE_RAMROD_CMD_ID_DISABLE_CONN (FCOE_KCQE_OPCODE_DISABLE_CONN)
  38. #define FCOE_RAMROD_CMD_ID_DESTROY_CONN (FCOE_KCQE_OPCODE_DESTROY_CONN)
  39. #define FCOE_RAMROD_CMD_ID_TERMINATE_CONN (0x81)
  40. /* KCQ (kernel completion queue) response op codes */
  41. #define L4_KCQE_OPCODE_VALUE_CLOSE_COMP (53)
  42. #define L4_KCQE_OPCODE_VALUE_RESET_COMP (54)
  43. #define L4_KCQE_OPCODE_VALUE_FW_TCP_UPDATE (55)
  44. #define L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE (56)
  45. #define L4_KCQE_OPCODE_VALUE_RESET_RECEIVED (57)
  46. #define L4_KCQE_OPCODE_VALUE_CLOSE_RECEIVED (58)
  47. #define L4_KCQE_OPCODE_VALUE_INIT_ULP (61)
  48. #define L4_KCQE_OPCODE_VALUE_OFFLOAD_PG (1)
  49. #define L4_KCQE_OPCODE_VALUE_UPDATE_PG (9)
  50. #define L4_KCQE_OPCODE_VALUE_UPLOAD_PG (14)
  51. /* KCQ (kernel completion queue) completion status */
  52. #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0)
  53. #define L4_KCQE_COMPLETION_STATUS_NIC_ERROR (4)
  54. #define L4_KCQE_COMPLETION_STATUS_PARITY_ERROR (0x81)
  55. #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93)
  56. #define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL (0x83)
  57. #define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG (0x89)
  58. #define L4_KCQE_OPCODE_VALUE_OOO_EVENT_NOTIFICATION (0xa0)
  59. #define L4_KCQE_OPCODE_VALUE_OOO_FLUSH (0xa1)
  60. #define L4_LAYER_CODE (4)
  61. #define L2_LAYER_CODE (2)
  62. /*
  63. * L4 KCQ CQE
  64. */
  65. struct l4_kcq {
  66. u32 cid;
  67. u32 pg_cid;
  68. u32 conn_id;
  69. u32 pg_host_opaque;
  70. #if defined(__BIG_ENDIAN)
  71. u16 status;
  72. u16 reserved1;
  73. #elif defined(__LITTLE_ENDIAN)
  74. u16 reserved1;
  75. u16 status;
  76. #endif
  77. u32 reserved2[2];
  78. #if defined(__BIG_ENDIAN)
  79. u8 flags;
  80. #define L4_KCQ_RESERVED3 (0x7<<0)
  81. #define L4_KCQ_RESERVED3_SHIFT 0
  82. #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
  83. #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
  84. #define L4_KCQ_LAYER_CODE (0x7<<4)
  85. #define L4_KCQ_LAYER_CODE_SHIFT 4
  86. #define L4_KCQ_RESERVED4 (0x1<<7)
  87. #define L4_KCQ_RESERVED4_SHIFT 7
  88. u8 op_code;
  89. u16 qe_self_seq;
  90. #elif defined(__LITTLE_ENDIAN)
  91. u16 qe_self_seq;
  92. u8 op_code;
  93. u8 flags;
  94. #define L4_KCQ_RESERVED3 (0xF<<0)
  95. #define L4_KCQ_RESERVED3_SHIFT 0
  96. #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
  97. #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
  98. #define L4_KCQ_LAYER_CODE (0x7<<4)
  99. #define L4_KCQ_LAYER_CODE_SHIFT 4
  100. #define L4_KCQ_RESERVED4 (0x1<<7)
  101. #define L4_KCQ_RESERVED4_SHIFT 7
  102. #endif
  103. };
  104. /*
  105. * L4 KCQ CQE PG upload
  106. */
  107. struct l4_kcq_upload_pg {
  108. u32 pg_cid;
  109. #if defined(__BIG_ENDIAN)
  110. u16 pg_status;
  111. u16 pg_ipid_count;
  112. #elif defined(__LITTLE_ENDIAN)
  113. u16 pg_ipid_count;
  114. u16 pg_status;
  115. #endif
  116. u32 reserved1[5];
  117. #if defined(__BIG_ENDIAN)
  118. u8 flags;
  119. #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
  120. #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
  121. #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
  122. #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
  123. #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
  124. #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
  125. u8 op_code;
  126. u16 qe_self_seq;
  127. #elif defined(__LITTLE_ENDIAN)
  128. u16 qe_self_seq;
  129. u8 op_code;
  130. u8 flags;
  131. #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
  132. #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
  133. #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
  134. #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
  135. #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
  136. #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
  137. #endif
  138. };
  139. /*
  140. * Gracefully close the connection request
  141. */
  142. struct l4_kwq_close_req {
  143. #if defined(__BIG_ENDIAN)
  144. u8 flags;
  145. #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
  146. #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
  147. #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
  148. #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
  149. #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
  150. #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
  151. u8 op_code;
  152. u16 reserved0;
  153. #elif defined(__LITTLE_ENDIAN)
  154. u16 reserved0;
  155. u8 op_code;
  156. u8 flags;
  157. #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
  158. #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
  159. #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
  160. #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
  161. #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
  162. #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
  163. #endif
  164. u32 cid;
  165. u32 reserved2[6];
  166. };
  167. /*
  168. * The first request to be passed in order to establish connection in option2
  169. */
  170. struct l4_kwq_connect_req1 {
  171. #if defined(__BIG_ENDIAN)
  172. u8 flags;
  173. #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
  174. #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
  175. #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
  176. #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
  177. #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
  178. #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
  179. u8 op_code;
  180. u8 reserved0;
  181. u8 conn_flags;
  182. #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
  183. #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
  184. #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
  185. #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
  186. #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
  187. #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
  188. #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
  189. #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
  190. #elif defined(__LITTLE_ENDIAN)
  191. u8 conn_flags;
  192. #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
  193. #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
  194. #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
  195. #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
  196. #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
  197. #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
  198. #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
  199. #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
  200. u8 reserved0;
  201. u8 op_code;
  202. u8 flags;
  203. #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
  204. #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
  205. #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
  206. #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
  207. #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
  208. #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
  209. #endif
  210. u32 cid;
  211. u32 pg_cid;
  212. u32 src_ip;
  213. u32 dst_ip;
  214. #if defined(__BIG_ENDIAN)
  215. u16 dst_port;
  216. u16 src_port;
  217. #elif defined(__LITTLE_ENDIAN)
  218. u16 src_port;
  219. u16 dst_port;
  220. #endif
  221. #if defined(__BIG_ENDIAN)
  222. u8 rsrv1[3];
  223. u8 tcp_flags;
  224. #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
  225. #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
  226. #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
  227. #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
  228. #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
  229. #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
  230. #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
  231. #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
  232. #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
  233. #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
  234. #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
  235. #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
  236. #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
  237. #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
  238. #elif defined(__LITTLE_ENDIAN)
  239. u8 tcp_flags;
  240. #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
  241. #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
  242. #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
  243. #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
  244. #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
  245. #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
  246. #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
  247. #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
  248. #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
  249. #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
  250. #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
  251. #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
  252. #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
  253. #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
  254. u8 rsrv1[3];
  255. #endif
  256. u32 rsrv2;
  257. };
  258. /*
  259. * The second ( optional )request to be passed in order to establish
  260. * connection in option2 - for IPv6 only
  261. */
  262. struct l4_kwq_connect_req2 {
  263. #if defined(__BIG_ENDIAN)
  264. u8 flags;
  265. #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
  266. #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
  267. #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
  268. #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
  269. #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
  270. #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
  271. u8 op_code;
  272. u8 reserved0;
  273. u8 rsrv;
  274. #elif defined(__LITTLE_ENDIAN)
  275. u8 rsrv;
  276. u8 reserved0;
  277. u8 op_code;
  278. u8 flags;
  279. #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
  280. #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
  281. #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
  282. #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
  283. #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
  284. #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
  285. #endif
  286. u32 reserved2;
  287. u32 src_ip_v6_2;
  288. u32 src_ip_v6_3;
  289. u32 src_ip_v6_4;
  290. u32 dst_ip_v6_2;
  291. u32 dst_ip_v6_3;
  292. u32 dst_ip_v6_4;
  293. };
  294. /*
  295. * The third ( and last )request to be passed in order to establish
  296. * connection in option2
  297. */
  298. struct l4_kwq_connect_req3 {
  299. #if defined(__BIG_ENDIAN)
  300. u8 flags;
  301. #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
  302. #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
  303. #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
  304. #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
  305. #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
  306. #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
  307. u8 op_code;
  308. u16 reserved0;
  309. #elif defined(__LITTLE_ENDIAN)
  310. u16 reserved0;
  311. u8 op_code;
  312. u8 flags;
  313. #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
  314. #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
  315. #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
  316. #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
  317. #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
  318. #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
  319. #endif
  320. u32 ka_timeout;
  321. u32 ka_interval ;
  322. #if defined(__BIG_ENDIAN)
  323. u8 snd_seq_scale;
  324. u8 ttl;
  325. u8 tos;
  326. u8 ka_max_probe_count;
  327. #elif defined(__LITTLE_ENDIAN)
  328. u8 ka_max_probe_count;
  329. u8 tos;
  330. u8 ttl;
  331. u8 snd_seq_scale;
  332. #endif
  333. #if defined(__BIG_ENDIAN)
  334. u16 pmtu;
  335. u16 mss;
  336. #elif defined(__LITTLE_ENDIAN)
  337. u16 mss;
  338. u16 pmtu;
  339. #endif
  340. u32 rcv_buf;
  341. u32 snd_buf;
  342. u32 seed;
  343. };
  344. /*
  345. * a KWQE request to offload a PG connection
  346. */
  347. struct l4_kwq_offload_pg {
  348. #if defined(__BIG_ENDIAN)
  349. u8 flags;
  350. #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
  351. #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
  352. #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
  353. #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
  354. #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
  355. #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
  356. u8 op_code;
  357. u16 reserved0;
  358. #elif defined(__LITTLE_ENDIAN)
  359. u16 reserved0;
  360. u8 op_code;
  361. u8 flags;
  362. #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
  363. #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
  364. #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
  365. #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
  366. #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
  367. #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
  368. #endif
  369. #if defined(__BIG_ENDIAN)
  370. u8 l2hdr_nbytes;
  371. u8 pg_flags;
  372. #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
  373. #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
  374. #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
  375. #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
  376. #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
  377. #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
  378. u8 da0;
  379. u8 da1;
  380. #elif defined(__LITTLE_ENDIAN)
  381. u8 da1;
  382. u8 da0;
  383. u8 pg_flags;
  384. #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
  385. #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
  386. #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
  387. #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
  388. #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
  389. #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
  390. u8 l2hdr_nbytes;
  391. #endif
  392. #if defined(__BIG_ENDIAN)
  393. u8 da2;
  394. u8 da3;
  395. u8 da4;
  396. u8 da5;
  397. #elif defined(__LITTLE_ENDIAN)
  398. u8 da5;
  399. u8 da4;
  400. u8 da3;
  401. u8 da2;
  402. #endif
  403. #if defined(__BIG_ENDIAN)
  404. u8 sa0;
  405. u8 sa1;
  406. u8 sa2;
  407. u8 sa3;
  408. #elif defined(__LITTLE_ENDIAN)
  409. u8 sa3;
  410. u8 sa2;
  411. u8 sa1;
  412. u8 sa0;
  413. #endif
  414. #if defined(__BIG_ENDIAN)
  415. u8 sa4;
  416. u8 sa5;
  417. u16 etype;
  418. #elif defined(__LITTLE_ENDIAN)
  419. u16 etype;
  420. u8 sa5;
  421. u8 sa4;
  422. #endif
  423. #if defined(__BIG_ENDIAN)
  424. u16 vlan_tag;
  425. u16 ipid_start;
  426. #elif defined(__LITTLE_ENDIAN)
  427. u16 ipid_start;
  428. u16 vlan_tag;
  429. #endif
  430. #if defined(__BIG_ENDIAN)
  431. u16 ipid_count;
  432. u16 reserved3;
  433. #elif defined(__LITTLE_ENDIAN)
  434. u16 reserved3;
  435. u16 ipid_count;
  436. #endif
  437. u32 host_opaque;
  438. };
  439. /*
  440. * Abortively close the connection request
  441. */
  442. struct l4_kwq_reset_req {
  443. #if defined(__BIG_ENDIAN)
  444. u8 flags;
  445. #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
  446. #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
  447. #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
  448. #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
  449. #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
  450. #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
  451. u8 op_code;
  452. u16 reserved0;
  453. #elif defined(__LITTLE_ENDIAN)
  454. u16 reserved0;
  455. u8 op_code;
  456. u8 flags;
  457. #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
  458. #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
  459. #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
  460. #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
  461. #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
  462. #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
  463. #endif
  464. u32 cid;
  465. u32 reserved2[6];
  466. };
  467. /*
  468. * a KWQE request to update a PG connection
  469. */
  470. struct l4_kwq_update_pg {
  471. #if defined(__BIG_ENDIAN)
  472. u8 flags;
  473. #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
  474. #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
  475. #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
  476. #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
  477. #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
  478. #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
  479. u8 opcode;
  480. u16 oper16;
  481. #elif defined(__LITTLE_ENDIAN)
  482. u16 oper16;
  483. u8 opcode;
  484. u8 flags;
  485. #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
  486. #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
  487. #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
  488. #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
  489. #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
  490. #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
  491. #endif
  492. u32 pg_cid;
  493. u32 pg_host_opaque;
  494. #if defined(__BIG_ENDIAN)
  495. u8 pg_valids;
  496. #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
  497. #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
  498. #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
  499. #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
  500. #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
  501. #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
  502. u8 pg_unused_a;
  503. u16 pg_ipid_count;
  504. #elif defined(__LITTLE_ENDIAN)
  505. u16 pg_ipid_count;
  506. u8 pg_unused_a;
  507. u8 pg_valids;
  508. #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
  509. #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
  510. #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
  511. #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
  512. #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
  513. #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
  514. #endif
  515. #if defined(__BIG_ENDIAN)
  516. u16 reserved3;
  517. u8 da0;
  518. u8 da1;
  519. #elif defined(__LITTLE_ENDIAN)
  520. u8 da1;
  521. u8 da0;
  522. u16 reserved3;
  523. #endif
  524. #if defined(__BIG_ENDIAN)
  525. u8 da2;
  526. u8 da3;
  527. u8 da4;
  528. u8 da5;
  529. #elif defined(__LITTLE_ENDIAN)
  530. u8 da5;
  531. u8 da4;
  532. u8 da3;
  533. u8 da2;
  534. #endif
  535. u32 reserved4;
  536. u32 reserved5;
  537. };
  538. /*
  539. * a KWQE request to upload a PG or L4 context
  540. */
  541. struct l4_kwq_upload {
  542. #if defined(__BIG_ENDIAN)
  543. u8 flags;
  544. #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
  545. #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
  546. #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
  547. #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
  548. #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
  549. #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
  550. u8 opcode;
  551. u16 oper16;
  552. #elif defined(__LITTLE_ENDIAN)
  553. u16 oper16;
  554. u8 opcode;
  555. u8 flags;
  556. #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
  557. #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
  558. #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
  559. #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
  560. #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
  561. #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
  562. #endif
  563. u32 cid;
  564. u32 reserved2[6];
  565. };
  566. /*
  567. * bnx2x structures
  568. */
  569. /*
  570. * The iscsi aggregative context of Cstorm
  571. */
  572. struct cstorm_iscsi_ag_context {
  573. u32 agg_vars1;
  574. #define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0)
  575. #define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0
  576. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8)
  577. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8
  578. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9)
  579. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9
  580. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10)
  581. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10
  582. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11)
  583. #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11
  584. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12)
  585. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12
  586. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13)
  587. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13
  588. #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<14)
  589. #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 14
  590. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16)
  591. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16
  592. #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18)
  593. #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18
  594. #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<19)
  595. #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 19
  596. #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN (0x1<<20)
  597. #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN_SHIFT 20
  598. #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<21)
  599. #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 21
  600. #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<22)
  601. #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 22
  602. #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23)
  603. #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23
  604. #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26)
  605. #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26
  606. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28)
  607. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28
  608. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30)
  609. #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30
  610. #if defined(__BIG_ENDIAN)
  611. u8 __aux1_th;
  612. u8 __aux1_val;
  613. u16 __agg_vars2;
  614. #elif defined(__LITTLE_ENDIAN)
  615. u16 __agg_vars2;
  616. u8 __aux1_val;
  617. u8 __aux1_th;
  618. #endif
  619. u32 rel_seq;
  620. u32 rel_seq_th;
  621. #if defined(__BIG_ENDIAN)
  622. u16 hq_cons;
  623. u16 hq_prod;
  624. #elif defined(__LITTLE_ENDIAN)
  625. u16 hq_prod;
  626. u16 hq_cons;
  627. #endif
  628. #if defined(__BIG_ENDIAN)
  629. u8 __reserved62;
  630. u8 __reserved61;
  631. u8 __reserved60;
  632. u8 __reserved59;
  633. #elif defined(__LITTLE_ENDIAN)
  634. u8 __reserved59;
  635. u8 __reserved60;
  636. u8 __reserved61;
  637. u8 __reserved62;
  638. #endif
  639. #if defined(__BIG_ENDIAN)
  640. u16 __reserved64;
  641. u16 cq_u_prod;
  642. #elif defined(__LITTLE_ENDIAN)
  643. u16 cq_u_prod;
  644. u16 __reserved64;
  645. #endif
  646. u32 __cq_u_prod1;
  647. #if defined(__BIG_ENDIAN)
  648. u16 __agg_vars3;
  649. u16 cq_u_pend;
  650. #elif defined(__LITTLE_ENDIAN)
  651. u16 cq_u_pend;
  652. u16 __agg_vars3;
  653. #endif
  654. #if defined(__BIG_ENDIAN)
  655. u16 __aux2_th;
  656. u16 aux2_val;
  657. #elif defined(__LITTLE_ENDIAN)
  658. u16 aux2_val;
  659. u16 __aux2_th;
  660. #endif
  661. };
  662. /*
  663. * The fcoe extra aggregative context section of Tstorm
  664. */
  665. struct tstorm_fcoe_extra_ag_context_section {
  666. u32 __agg_val1;
  667. #if defined(__BIG_ENDIAN)
  668. u8 __tcp_agg_vars2;
  669. u8 __agg_val3;
  670. u16 __agg_val2;
  671. #elif defined(__LITTLE_ENDIAN)
  672. u16 __agg_val2;
  673. u8 __agg_val3;
  674. u8 __tcp_agg_vars2;
  675. #endif
  676. #if defined(__BIG_ENDIAN)
  677. u16 __agg_val5;
  678. u8 __agg_val6;
  679. u8 __tcp_agg_vars3;
  680. #elif defined(__LITTLE_ENDIAN)
  681. u8 __tcp_agg_vars3;
  682. u8 __agg_val6;
  683. u16 __agg_val5;
  684. #endif
  685. u32 __lcq_prod;
  686. u32 rtt_seq;
  687. u32 rtt_time;
  688. u32 __reserved66;
  689. u32 wnd_right_edge;
  690. u32 tcp_agg_vars1;
  691. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
  692. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
  693. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
  694. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
  695. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
  696. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
  697. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
  698. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
  699. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
  700. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
  701. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
  702. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
  703. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
  704. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
  705. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9)
  706. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9
  707. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
  708. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
  709. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
  710. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
  711. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
  712. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
  713. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
  714. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
  715. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
  716. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
  717. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
  718. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
  719. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
  720. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
  721. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
  722. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
  723. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
  724. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
  725. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
  726. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
  727. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
  728. #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
  729. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
  730. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
  731. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
  732. #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
  733. u32 snd_max;
  734. u32 __lcq_cons;
  735. u32 __reserved2;
  736. };
  737. /*
  738. * The fcoe aggregative context of Tstorm
  739. */
  740. struct tstorm_fcoe_ag_context {
  741. #if defined(__BIG_ENDIAN)
  742. u16 ulp_credit;
  743. u8 agg_vars1;
  744. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  745. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  746. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  747. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  748. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  749. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  750. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  751. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  752. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
  753. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
  754. #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
  755. #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
  756. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
  757. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
  758. u8 state;
  759. #elif defined(__LITTLE_ENDIAN)
  760. u8 state;
  761. u8 agg_vars1;
  762. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  763. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  764. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  765. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  766. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  767. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  768. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  769. #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  770. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
  771. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
  772. #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
  773. #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
  774. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
  775. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
  776. u16 ulp_credit;
  777. #endif
  778. #if defined(__BIG_ENDIAN)
  779. u16 __agg_val4;
  780. u16 agg_vars2;
  781. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
  782. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
  783. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
  784. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
  785. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
  786. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
  787. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
  788. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
  789. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
  790. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
  791. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
  792. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
  793. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
  794. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
  795. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
  796. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
  797. #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
  798. #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
  799. #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
  800. #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
  801. #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
  802. #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
  803. #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
  804. #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
  805. #elif defined(__LITTLE_ENDIAN)
  806. u16 agg_vars2;
  807. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
  808. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
  809. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
  810. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
  811. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
  812. #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
  813. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
  814. #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
  815. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
  816. #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
  817. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
  818. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
  819. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
  820. #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
  821. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
  822. #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
  823. #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
  824. #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
  825. #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
  826. #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
  827. #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
  828. #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
  829. #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
  830. #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
  831. u16 __agg_val4;
  832. #endif
  833. struct tstorm_fcoe_extra_ag_context_section __extra_section;
  834. };
  835. /*
  836. * The tcp aggregative context section of Tstorm
  837. */
  838. struct tstorm_tcp_tcp_ag_context_section {
  839. u32 __agg_val1;
  840. #if defined(__BIG_ENDIAN)
  841. u8 __tcp_agg_vars2;
  842. u8 __agg_val3;
  843. u16 __agg_val2;
  844. #elif defined(__LITTLE_ENDIAN)
  845. u16 __agg_val2;
  846. u8 __agg_val3;
  847. u8 __tcp_agg_vars2;
  848. #endif
  849. #if defined(__BIG_ENDIAN)
  850. u16 __agg_val5;
  851. u8 __agg_val6;
  852. u8 __tcp_agg_vars3;
  853. #elif defined(__LITTLE_ENDIAN)
  854. u8 __tcp_agg_vars3;
  855. u8 __agg_val6;
  856. u16 __agg_val5;
  857. #endif
  858. u32 snd_nxt;
  859. u32 rtt_seq;
  860. u32 rtt_time;
  861. u32 wnd_right_edge_local;
  862. u32 wnd_right_edge;
  863. u32 tcp_agg_vars1;
  864. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
  865. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
  866. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
  867. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
  868. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
  869. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
  870. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
  871. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
  872. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
  873. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
  874. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
  875. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
  876. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
  877. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
  878. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
  879. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
  880. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
  881. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
  882. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
  883. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
  884. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
  885. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
  886. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
  887. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
  888. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
  889. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
  890. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
  891. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
  892. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
  893. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
  894. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
  895. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
  896. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
  897. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
  898. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
  899. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
  900. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
  901. #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
  902. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
  903. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
  904. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
  905. #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
  906. u32 snd_max;
  907. u32 snd_una;
  908. u32 __reserved2;
  909. };
  910. /*
  911. * The iscsi aggregative context of Tstorm
  912. */
  913. struct tstorm_iscsi_ag_context {
  914. #if defined(__BIG_ENDIAN)
  915. u16 ulp_credit;
  916. u8 agg_vars1;
  917. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  918. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  919. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  920. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  921. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  922. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  923. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  924. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  925. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
  926. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
  927. #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
  928. #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
  929. #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
  930. #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
  931. u8 state;
  932. #elif defined(__LITTLE_ENDIAN)
  933. u8 state;
  934. u8 agg_vars1;
  935. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  936. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  937. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  938. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  939. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  940. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  941. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  942. #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  943. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
  944. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
  945. #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
  946. #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
  947. #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
  948. #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
  949. u16 ulp_credit;
  950. #endif
  951. #if defined(__BIG_ENDIAN)
  952. u16 __agg_val4;
  953. u16 agg_vars2;
  954. #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
  955. #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
  956. #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
  957. #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
  958. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
  959. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
  960. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
  961. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
  962. #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
  963. #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
  964. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
  965. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
  966. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
  967. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
  968. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
  969. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
  970. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
  971. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
  972. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
  973. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
  974. #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
  975. #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
  976. #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
  977. #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
  978. #elif defined(__LITTLE_ENDIAN)
  979. u16 agg_vars2;
  980. #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
  981. #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
  982. #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
  983. #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
  984. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
  985. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
  986. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
  987. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
  988. #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
  989. #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
  990. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
  991. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
  992. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
  993. #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
  994. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
  995. #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
  996. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
  997. #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
  998. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
  999. #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
  1000. #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
  1001. #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
  1002. #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
  1003. #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
  1004. u16 __agg_val4;
  1005. #endif
  1006. struct tstorm_tcp_tcp_ag_context_section tcp;
  1007. };
  1008. /*
  1009. * The fcoe aggregative context of Ustorm
  1010. */
  1011. struct ustorm_fcoe_ag_context {
  1012. #if defined(__BIG_ENDIAN)
  1013. u8 __aux_counter_flags;
  1014. u8 agg_vars2;
  1015. #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
  1016. #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
  1017. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
  1018. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
  1019. #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
  1020. #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
  1021. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
  1022. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
  1023. u8 agg_vars1;
  1024. #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1025. #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1026. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1027. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1028. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1029. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1030. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1031. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1032. #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
  1033. #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
  1034. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
  1035. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
  1036. u8 state;
  1037. #elif defined(__LITTLE_ENDIAN)
  1038. u8 state;
  1039. u8 agg_vars1;
  1040. #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1041. #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1042. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1043. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1044. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1045. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1046. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1047. #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1048. #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
  1049. #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
  1050. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
  1051. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
  1052. u8 agg_vars2;
  1053. #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
  1054. #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
  1055. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
  1056. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
  1057. #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
  1058. #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
  1059. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
  1060. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
  1061. u8 __aux_counter_flags;
  1062. #endif
  1063. #if defined(__BIG_ENDIAN)
  1064. u8 cdu_usage;
  1065. u8 agg_misc2;
  1066. u16 pbf_tx_seq_ack;
  1067. #elif defined(__LITTLE_ENDIAN)
  1068. u16 pbf_tx_seq_ack;
  1069. u8 agg_misc2;
  1070. u8 cdu_usage;
  1071. #endif
  1072. u32 agg_misc4;
  1073. #if defined(__BIG_ENDIAN)
  1074. u8 agg_val3_th;
  1075. u8 agg_val3;
  1076. u16 agg_misc3;
  1077. #elif defined(__LITTLE_ENDIAN)
  1078. u16 agg_misc3;
  1079. u8 agg_val3;
  1080. u8 agg_val3_th;
  1081. #endif
  1082. u32 expired_task_id;
  1083. u32 agg_misc4_th;
  1084. #if defined(__BIG_ENDIAN)
  1085. u16 cq_prod;
  1086. u16 cq_cons;
  1087. #elif defined(__LITTLE_ENDIAN)
  1088. u16 cq_cons;
  1089. u16 cq_prod;
  1090. #endif
  1091. #if defined(__BIG_ENDIAN)
  1092. u16 __reserved2;
  1093. u8 decision_rules;
  1094. #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
  1095. #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
  1096. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
  1097. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
  1098. #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
  1099. #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
  1100. #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
  1101. #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
  1102. u8 decision_rule_enable_bits;
  1103. #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
  1104. #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
  1105. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
  1106. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
  1107. #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
  1108. #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
  1109. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
  1110. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
  1111. #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
  1112. #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
  1113. #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
  1114. #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
  1115. #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
  1116. #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
  1117. #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1118. #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1119. #elif defined(__LITTLE_ENDIAN)
  1120. u8 decision_rule_enable_bits;
  1121. #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
  1122. #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
  1123. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
  1124. #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
  1125. #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
  1126. #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
  1127. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
  1128. #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
  1129. #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
  1130. #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
  1131. #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
  1132. #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
  1133. #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
  1134. #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
  1135. #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1136. #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1137. u8 decision_rules;
  1138. #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
  1139. #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
  1140. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
  1141. #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
  1142. #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
  1143. #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
  1144. #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
  1145. #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
  1146. u16 __reserved2;
  1147. #endif
  1148. };
  1149. /*
  1150. * The iscsi aggregative context of Ustorm
  1151. */
  1152. struct ustorm_iscsi_ag_context {
  1153. #if defined(__BIG_ENDIAN)
  1154. u8 __aux_counter_flags;
  1155. u8 agg_vars2;
  1156. #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
  1157. #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
  1158. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
  1159. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
  1160. #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
  1161. #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
  1162. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
  1163. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
  1164. u8 agg_vars1;
  1165. #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1166. #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1167. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1168. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1169. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1170. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1171. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1172. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1173. #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
  1174. #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
  1175. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
  1176. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
  1177. u8 state;
  1178. #elif defined(__LITTLE_ENDIAN)
  1179. u8 state;
  1180. u8 agg_vars1;
  1181. #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
  1182. #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
  1183. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
  1184. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
  1185. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
  1186. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
  1187. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
  1188. #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
  1189. #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
  1190. #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
  1191. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
  1192. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
  1193. u8 agg_vars2;
  1194. #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
  1195. #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
  1196. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
  1197. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
  1198. #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
  1199. #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
  1200. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
  1201. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
  1202. u8 __aux_counter_flags;
  1203. #endif
  1204. #if defined(__BIG_ENDIAN)
  1205. u8 cdu_usage;
  1206. u8 agg_misc2;
  1207. u16 __cq_local_comp_itt_val;
  1208. #elif defined(__LITTLE_ENDIAN)
  1209. u16 __cq_local_comp_itt_val;
  1210. u8 agg_misc2;
  1211. u8 cdu_usage;
  1212. #endif
  1213. u32 agg_misc4;
  1214. #if defined(__BIG_ENDIAN)
  1215. u8 agg_val3_th;
  1216. u8 agg_val3;
  1217. u16 agg_misc3;
  1218. #elif defined(__LITTLE_ENDIAN)
  1219. u16 agg_misc3;
  1220. u8 agg_val3;
  1221. u8 agg_val3_th;
  1222. #endif
  1223. u32 agg_val1;
  1224. u32 agg_misc4_th;
  1225. #if defined(__BIG_ENDIAN)
  1226. u16 agg_val2_th;
  1227. u16 agg_val2;
  1228. #elif defined(__LITTLE_ENDIAN)
  1229. u16 agg_val2;
  1230. u16 agg_val2_th;
  1231. #endif
  1232. #if defined(__BIG_ENDIAN)
  1233. u16 __reserved2;
  1234. u8 decision_rules;
  1235. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
  1236. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
  1237. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
  1238. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
  1239. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
  1240. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
  1241. #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
  1242. #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
  1243. u8 decision_rule_enable_bits;
  1244. #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
  1245. #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
  1246. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
  1247. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
  1248. #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
  1249. #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
  1250. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
  1251. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
  1252. #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
  1253. #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
  1254. #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
  1255. #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
  1256. #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
  1257. #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
  1258. #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1259. #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1260. #elif defined(__LITTLE_ENDIAN)
  1261. u8 decision_rule_enable_bits;
  1262. #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
  1263. #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
  1264. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
  1265. #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
  1266. #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
  1267. #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
  1268. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
  1269. #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
  1270. #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
  1271. #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
  1272. #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
  1273. #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
  1274. #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
  1275. #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
  1276. #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
  1277. #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
  1278. u8 decision_rules;
  1279. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
  1280. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
  1281. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
  1282. #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
  1283. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
  1284. #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
  1285. #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
  1286. #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
  1287. u16 __reserved2;
  1288. #endif
  1289. };
  1290. /*
  1291. * The fcoe aggregative context section of Xstorm
  1292. */
  1293. struct xstorm_fcoe_extra_ag_context_section {
  1294. #if defined(__BIG_ENDIAN)
  1295. u8 tcp_agg_vars1;
  1296. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0)
  1297. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
  1298. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
  1299. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
  1300. #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
  1301. #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
  1302. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
  1303. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
  1304. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
  1305. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
  1306. u8 __reserved_da_cnt;
  1307. u16 __mtu;
  1308. #elif defined(__LITTLE_ENDIAN)
  1309. u16 __mtu;
  1310. u8 __reserved_da_cnt;
  1311. u8 tcp_agg_vars1;
  1312. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0)
  1313. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
  1314. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
  1315. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
  1316. #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
  1317. #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
  1318. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
  1319. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
  1320. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
  1321. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
  1322. #endif
  1323. u32 snd_nxt;
  1324. u32 __xfrqe_bd_addr_lo;
  1325. u32 __xfrqe_bd_addr_hi;
  1326. u32 __xfrqe_data1;
  1327. #if defined(__BIG_ENDIAN)
  1328. u8 __agg_val8_th;
  1329. u8 __tx_dest;
  1330. u16 tcp_agg_vars2;
  1331. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
  1332. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0
  1333. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1)
  1334. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1
  1335. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2)
  1336. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2
  1337. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
  1338. #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
  1339. #de