t4fw_ri_api.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. /*
  2. * Copyright (c) 2009-2010 Chelsio, Inc. All rights reserved.
  3. *
  4. * This software is available to you under a choice of one of two
  5. * licenses. You may choose to be licensed under the terms of the GNU
  6. * General Public License (GPL) Version 2, available from the file
  7. * COPYING in the main directory of this source tree, or the
  8. * OpenIB.org BSD license below:
  9. *
  10. * Redistribution and use in source and binary forms, with or
  11. * without modification, are permitted provided that the following
  12. * conditions are met:
  13. *
  14. * - Redistributions of source code must retain the above
  15. * copyright notice, this list of conditions and the following
  16. * disclaimer.
  17. * - Redistributions in binary form must reproduce the above
  18. * copyright notice, this list of conditions and the following
  19. * disclaimer in the documentation and/or other materials
  20. * provided with the distribution.
  21. *
  22. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  23. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  24. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  25. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  26. * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  27. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  28. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  29. * SOFTWARE.
  30. */
  31. #ifndef _T4FW_RI_API_H_
  32. #define _T4FW_RI_API_H_
  33. #include "t4fw_api.h"
  34. enum fw_ri_wr_opcode {
  35. FW_RI_RDMA_WRITE = 0x0, /* IETF RDMAP v1.0 ... */
  36. FW_RI_READ_REQ = 0x1,
  37. FW_RI_READ_RESP = 0x2,
  38. FW_RI_SEND = 0x3,
  39. FW_RI_SEND_WITH_INV = 0x4,
  40. FW_RI_SEND_WITH_SE = 0x5,
  41. FW_RI_SEND_WITH_SE_INV = 0x6,
  42. FW_RI_TERMINATE = 0x7,
  43. FW_RI_RDMA_INIT = 0x8, /* CHELSIO RI specific ... */
  44. FW_RI_BIND_MW = 0x9,
  45. FW_RI_FAST_REGISTER = 0xa,
  46. FW_RI_LOCAL_INV = 0xb,
  47. FW_RI_QP_MODIFY = 0xc,
  48. FW_RI_BYPASS = 0xd,
  49. FW_RI_RECEIVE = 0xe,
  50. FW_RI_SGE_EC_CR_RETURN = 0xf
  51. };
  52. enum fw_ri_wr_flags {
  53. FW_RI_COMPLETION_FLAG = 0x01,
  54. FW_RI_NOTIFICATION_FLAG = 0x02,
  55. FW_RI_SOLICITED_EVENT_FLAG = 0x04,
  56. FW_RI_READ_FENCE_FLAG = 0x08,
  57. FW_RI_LOCAL_FENCE_FLAG = 0x10,
  58. FW_RI_RDMA_READ_INVALIDATE = 0x20
  59. };
  60. enum fw_ri_mpa_attrs {
  61. FW_RI_MPA_RX_MARKER_ENABLE = 0x01,
  62. FW_RI_MPA_TX_MARKER_ENABLE = 0x02,
  63. FW_RI_MPA_CRC_ENABLE = 0x04,
  64. FW_RI_MPA_IETF_ENABLE = 0x08
  65. };
  66. enum fw_ri_qp_caps {
  67. FW_RI_QP_RDMA_READ_ENABLE = 0x01,
  68. FW_RI_QP_RDMA_WRITE_ENABLE = 0x02,
  69. FW_RI_QP_BIND_ENABLE = 0x04,
  70. FW_RI_QP_FAST_REGISTER_ENABLE = 0x08,
  71. FW_RI_QP_STAG0_ENABLE = 0x10
  72. };
  73. enum fw_ri_addr_type {
  74. FW_RI_ZERO_BASED_TO = 0x00,
  75. FW_RI_VA_BASED_TO = 0x01
  76. };
  77. enum fw_ri_mem_perms {
  78. FW_RI_MEM_ACCESS_REM_WRITE = 0x01,
  79. FW_RI_MEM_ACCESS_REM_READ = 0x02,
  80. FW_RI_MEM_ACCESS_REM = 0x03,
  81. FW_RI_MEM_ACCESS_LOCAL_WRITE = 0x04,
  82. FW_RI_MEM_ACCESS_LOCAL_READ = 0x08,
  83. FW_RI_MEM_ACCESS_LOCAL = 0x0C
  84. };
  85. enum fw_ri_stag_type {
  86. FW_RI_STAG_NSMR = 0x00,
  87. FW_RI_STAG_SMR = 0x01,
  88. FW_RI_STAG_MW = 0x02,
  89. FW_RI_STAG_MW_RELAXED = 0x03
  90. };
  91. enum fw_ri_data_op {
  92. FW_RI_DATA_IMMD = 0x81,
  93. FW_RI_DATA_DSGL = 0x82,
  94. FW_RI_DATA_ISGL = 0x83
  95. };
  96. enum fw_ri_sgl_depth {
  97. FW_RI_SGL_DEPTH_MAX_SQ = 16,
  98. FW_RI_SGL_DEPTH_MAX_RQ = 4
  99. };
  100. struct fw_ri_dsge_pair {
  101. __be32 len[2];
  102. __be64 addr[2];
  103. };
  104. struct fw_ri_dsgl {
  105. __u8 op;
  106. __u8 r1;
  107. __be16 nsge;
  108. __be32 len0;
  109. __be64 addr0;
  110. #ifndef C99_NOT_SUPPORTED
  111. struct fw_ri_dsge_pair sge[0];
  112. #endif
  113. };
  114. struct fw_ri_sge {
  115. __be32 stag;
  116. __be32 len;
  117. __be64 to;
  118. };
  119. struct fw_ri_isgl {
  120. __u8 op;
  121. __u8 r1;
  122. __be16 nsge;
  123. __be32 r2;
  124. #ifndef C99_NOT_SUPPORTED
  125. struct fw_ri_sge sge[0];
  126. #endif
  127. };
  128. struct fw_ri_immd {
  129. __u8 op;
  130. __u8 r1;
  131. __be16 r2;
  132. __be32 immdlen;
  133. #ifndef C99_NOT_SUPPORTED
  134. __u8 data[0];
  135. #endif
  136. };
  137. struct fw_ri_tpte {
  138. __be32 valid_to_pdid;
  139. __be32 locread_to_qpid;
  140. __be32 nosnoop_pbladdr;
  141. __be32 len_lo;
  142. __be32 va_hi;
  143. __be32 va_lo_fbo;
  144. __be32 dca_mwbcnt_pstag;
  145. __be32 len_hi;
  146. };
  147. #define S_FW_RI_TPTE_VALID 31
  148. #define M_FW_RI_TPTE_VALID 0x1
  149. #define V_FW_RI_TPTE_VALID(x) ((x) << S_FW_RI_TPTE_VALID)
  150. #define G_FW_RI_TPTE_VALID(x) \
  151. (((x) >> S_FW_RI_TPTE_VALID) & M_FW_RI_TPTE_VALID)
  152. #define F_FW_RI_TPTE_VALID V_FW_RI_TPTE_VALID(1U)
  153. #define S_FW_RI_TPTE_STAGKEY 23
  154. #define M_FW_RI_TPTE_STAGKEY 0xff
  155. #define V_FW_RI_TPTE_STAGKEY(x) ((x) << S_FW_RI_TPTE_STAGKEY)
  156. #define G_FW_RI_TPTE_STAGKEY(x) \
  157. (((x) >> S_FW_RI_TPTE_STAGKEY) & M_FW_RI_TPTE_STAGKEY)
  158. #define S_FW_RI_TPTE_STAGSTATE 22
  159. #define M_FW_RI_TPTE_STAGSTATE 0x1
  160. #define V_FW_RI_TPTE_STAGSTATE(x) ((x) << S_FW_RI_TPTE_STAGSTATE)
  161. #define G_FW_RI_TPTE_STAGSTATE(x) \
  162. (((x) >> S_FW_RI_TPTE_STAGSTATE) & M_FW_RI_TPTE_STAGSTATE)
  163. #define F_FW_RI_TPTE_STAGSTATE V_FW_RI_TPTE_STAGSTATE(1U)
  164. #define S_FW_RI_TPTE_STAGTYPE 20
  165. #define M_FW_RI_TPTE_STAGTYPE 0x3
  166. #define V_FW_RI_TPTE_STAGTYPE(x) ((x) << S_FW_RI_TPTE_STAGTYPE)
  167. #define G_FW_RI_TPTE_STAGTYPE(x) \
  168. (((x) >> S_FW_RI_TPTE_STAGTYPE) & M_FW_RI_TPTE_STAGTYPE)
  169. #define S_FW_RI_TPTE_PDID 0
  170. #define M_FW_RI_TPTE_PDID 0xfffff
  171. #define V_FW_RI_TPTE_PDID(x) ((x) << S_FW_RI_TPTE_PDID)
  172. #define G_FW_RI_TPTE_PDID(x) \
  173. (((x) >> S_FW_RI_TPTE_PDID) & M_FW_RI_TPTE_PDID)
  174. #define S_FW_RI_TPTE_PERM 28
  175. #define M_FW_RI_TPTE_PERM 0xf
  176. #define V_FW_RI_TPTE_PERM(x) ((x) << S_FW_RI_TPTE_PERM)
  177. #define G_FW_RI_TPTE_PERM(x) \
  178. (((x) >> S_FW_RI_TPTE_PERM) & M_FW_RI_TPTE_PERM)
  179. #define S_FW_RI_TPTE_REMINVDIS 27
  180. #define M_FW_RI_TPTE_REMINVDIS 0x1
  181. #define V_FW_RI_TPTE_REMINVDIS(x) ((x) << S_FW_RI_TPTE_REMINVDIS)
  182. #define G_FW_RI_TPTE_REMINVDIS(x) \
  183. (((x) >> S_FW_RI_TPTE_REMINVDIS) & M_FW_RI_TPTE_REMINVDIS)
  184. #define F_FW_RI_TPTE_REMINVDIS V_FW_RI_TPTE_REMINVDIS(1U)
  185. #define S_FW_RI_TPTE_ADDRTYPE 26
  186. #define M_FW_RI_TPTE_ADDRTYPE 1
  187. #define V_FW_RI_TPTE_ADDRTYPE(x) ((x) << S_FW_RI_TPTE_ADDRTYPE)
  188. #define G_FW_RI_TPTE_ADDRTYPE(x) \
  189. (((x) >> S_FW_RI_TPTE_ADDRTYPE) & M_FW_RI_TPTE_ADDRTYPE)
  190. #define F_FW_RI_TPTE_ADDRTYPE V_FW_RI_TPTE_ADDRTYPE(1U)
  191. #define S_FW_RI_TPTE_MWBINDEN 25
  192. #define M_FW_RI_TPTE_MWBINDEN 0x1
  193. #define V_FW_RI_TPTE_MWBINDEN(x) ((x) << S_FW_RI_TPTE_MWBINDEN)
  194. #define G_FW_RI_TPTE_MWBINDEN(x) \
  195. (((x) >> S_FW_RI_TPTE_MWBINDEN) & M_FW_RI_TPTE_MWBINDEN)
  196. #define F_FW_RI_TPTE_MWBINDEN V_FW_RI_TPTE_MWBINDEN(1U)
  197. #define S_FW_RI_TPTE_PS 20
  198. #define M_FW_RI_TPTE_PS 0x1f
  199. #define V_FW_RI_TPTE_PS(x) ((x) << S_FW_RI_TPTE_PS)
  200. #define G_FW_RI_TPTE_PS(x) \
  201. (((x) >> S_FW_RI_TPTE_PS) & M_FW_RI_TPTE_PS)
  202. #define S_FW_RI_TPTE_QPID 0
  203. #define M_FW_RI_TPTE_QPID 0xfffff
  204. #define V_FW_RI_TPTE_QPID(x) ((x) << S_FW_RI_TPTE_QPID)
  205. #define G_FW_RI_TPTE_QPID(x) \
  206. (((x) >> S_FW_RI_TPTE_QPID) & M_FW_RI_TPTE_QPID)
  207. #define S_FW_RI_TPTE_NOSNOOP 30
  208. #define M_FW_RI_TPTE_NOSNOOP 0x1
  209. #define V_FW_RI_TPTE_NOSNOOP(x) ((x) << S_FW_RI_TPTE_NOSNOOP)
  210. #define G_FW_RI_TPTE_NOSNOOP(x) \
  211. (((x) >> S_FW_RI_TPTE_NOSNOOP) & M_FW_RI_TPTE_NOSNOOP)
  212. #define F_FW_RI_TPTE_NOSNOOP V_FW_RI_TPTE_NOSNOOP(1U)
  213. #define S_FW_RI_TPTE_PBLADDR 0
  214. #define M_FW_RI_TPTE_PBLADDR 0x1fffffff
  215. #define V_FW_RI_TPTE_PBLADDR(x) ((x) << S_FW_RI_TPTE_PBLADDR)
  216. #define G_FW_RI_TPTE_PBLADDR(x) \
  217. (((x) >> S_FW_RI_TPTE_PBLADDR) & M_FW_RI_TPTE_PBLADDR)
  218. #define S_FW_RI_TPTE_DCA 24
  219. #define M_FW_RI_TPTE_DCA 0x1f
  220. #define V_FW_RI_TPTE_DCA(x) ((x) << S_FW_RI_TPTE_DCA)
  221. #define G_FW_RI_TPTE_DCA(x) \
  222. (((x) >> S_FW_RI_TPTE_DCA) & M_FW_RI_TPTE_DCA)
  223. #define S_FW_RI_TPTE_MWBCNT_PSTAG 0
  224. #define M_FW_RI_TPTE_MWBCNT_PSTAG 0xffffff
  225. #define V_FW_RI_TPTE_MWBCNT_PSTAT(x) \
  226. ((x) << S_FW_RI_TPTE_MWBCNT_PSTAG)
  227. #define G_FW_RI_TPTE_MWBCNT_PSTAG(x) \
  228. (((x) >> S_FW_RI_TPTE_MWBCNT_PSTAG) & M_FW_RI_TPTE_MWBCNT_PSTAG)
  229. enum fw_ri_res_type {
  230. FW_RI_RES_TYPE_SQ,
  231. FW_RI_RES_TYPE_RQ,
  232. FW_RI_RES_TYPE_CQ,
  233. };
  234. enum fw_ri_res_op {
  235. FW_RI_RES_OP_WRITE,
  236. FW_RI_RES_OP_RESET,
  237. };
  238. struct fw_ri_res {
  239. union fw_ri_restype {
  240. struct fw_ri_res_sqrq {
  241. __u8 restype;
  242. __u8 op;
  243. __be16 r3;
  244. __be32 eqid;
  245. __be32 r4[2];
  246. __be32 fetchszm_to_iqid;
  247. __be32 dcaen_to_eqsize;
  248. __be64 eqaddr;
  249. } sqrq;
  250. struct fw_ri_res_cq {
  251. __u8 restype;
  252. __u8 op;
  253. __be16 r3;
  254. __be32 iqid;
  255. __be32 r4[2];
  256. __be32 iqandst_to_iqandstindex;
  257. __be16 iqdroprss_to_iqesize;
  258. __be16 iqsize;
  259. __be64 iqaddr;
  260. __be32 iqns_iqro;
  261. __be32 r6_lo;
  262. __be64 r7;
  263. } cq;
  264. } u;
  265. };
  266. struct fw_ri_res_wr {
  267. __be32 op_nres;
  268. __be32 len16_pkd;
  269. __u64 cookie;
  270. #ifndef C99_NOT_SUPPORTED
  271. struct fw_ri_res res[0];
  272. #endif
  273. };
  274. #define S_FW_RI_RES_WR_NRES 0
  275. #define M_FW_RI_RES_WR_NRES 0xff
  276. #define V_FW_RI_RES_WR_NRES(x) ((x) << S_FW_RI_RES_WR_NRES)
  277. #define G_FW_RI_RES_WR_NRES(x) \
  278. (((x) >> S_FW_RI_RES_WR_NRES) & M_FW_RI_RES_WR_NRES)
  279. #define S_FW_RI_RES_WR_FETCHSZM 26
  280. #define M_FW_RI_RES_WR_FETCHSZM 0x1
  281. #define V_FW_RI_RES_WR_FETCHSZM(x) ((x) << S_FW_RI_RES_WR_FETCHSZM)
  282. #define G_FW_RI_RES_WR_FETCHSZM(x) \
  283. (((x) >> S_FW_RI_RES_WR_FETCHSZM) & M_FW_RI_RES_WR_FETCHSZM)
  284. #define F_FW_RI_RES_WR_FETCHSZM V_FW_RI_RES_WR_FETCHSZM(1U)
  285. #define S_FW_RI_RES_WR_STATUSPGNS 25
  286. #define M_FW_RI_RES_WR_STATUSPGNS 0x1
  287. #define V_FW_RI_RES_WR_STATUSPGNS(x) ((x) << S_FW_RI_RES_WR_STATUSPGNS)
  288. #define G_FW_RI_RES_WR_STATUSPGNS(x) \
  289. (((x) >> S_FW_RI_RES_WR_STATUSPGNS) & M_FW_RI_RES_WR_STATUSPGNS)
  290. #define F_FW_RI_RES_WR_STATUSPGNS V_FW_RI_RES_WR_STATUSPGNS(1U)
  291. #define S_FW_RI_RES_WR_STATUSPGRO 24
  292. #define M_FW_RI_RES_WR_STATUSPGRO 0x1
  293. #define V_FW_RI_RES_WR_STATUSPGRO(x) ((x) << S_FW_RI_RES_WR_STATUSPGRO)
  294. #define G_FW_RI_RES_WR_STATUSPGRO(x) \
  295. (((x) >> S_FW_RI_RES_WR_STATUSPGRO) & M_FW_RI_RES_WR_STATUSPGRO)
  296. #define F_FW_RI_RES_WR_STATUSPGRO V_FW_RI_RES_WR_STATUSPGRO(1U)
  297. #define S_FW_RI_RES_WR_FETCHNS 23
  298. #define M_FW_RI_RES_WR_FETCHNS 0x1
  299. #define V_FW_RI_RES_WR_FETCHNS(x) ((x) << S_FW_RI_RES_WR_FETCHNS)
  300. #define G_FW_RI_RES_WR_FETCHNS(x) \
  301. (((x) >> S_FW_RI_RES_WR_FETCHNS) & M_FW_RI_RES_WR_FETCHNS)
  302. #define F_FW_RI_RES_WR_FETCHNS V_FW_RI_RES_WR_FETCHNS(1U)
  303. #define S_FW_RI_RES_WR_FETCHRO 22
  304. #define M_FW_RI_RES_WR_FETCHRO 0x1
  305. #define V_FW_RI_RES_WR_FETCHRO(x) ((x) << S_FW_RI_RES_WR_FETCHRO)
  306. #define G_FW_RI_RES_WR_FETCHRO(x) \
  307. (((x) >> S_FW_RI_RES_WR_FETCHRO) & M_FW_RI_RES_WR_FETCHRO)
  308. #define F_FW_RI_RES_WR_FETCHRO V_FW_RI_RES_WR_FETCHRO(1U)
  309. #define S_FW_RI_RES_WR_HOSTFCMODE 20
  310. #define M_FW_RI_RES_WR_HOSTFCMODE 0x3
  311. #define V_FW_RI_RES_WR_HOSTFCMODE(x) ((x) << S_FW_RI_RES_WR_HOSTFCMODE)
  312. #define G_FW_RI_RES_WR_HOSTFCMODE(x) \
  313. (((x) >> S_FW_RI_RES_WR_HOSTFCMODE) & M_FW_RI_RES_WR_HOSTFCMODE)
  314. #define S_FW_RI_RES_WR_CPRIO 19
  315. #define M_FW_RI_RES_WR_CPRIO 0x1
  316. #define V_FW_RI_RES_WR_CPRIO(x) ((x) << S_FW_RI_RES_WR_CPRIO)
  317. #define G_FW_RI_RES_WR_CPRIO(x) \
  318. (((x) >> S_FW_RI_RES_WR_CPRIO) & M_FW_RI_RES_WR_CPRIO)
  319. #define F_FW_RI_RES_WR_CPRIO V_FW_RI_RES_WR_CPRIO(1U)
  320. #define S_FW_RI_RES_WR_ONCHIP 18
  321. #define M_FW_RI_RES_WR_ONCHIP 0x1
  322. #define V_FW_RI_RES_WR_ONCHIP(x) ((x) << S_FW_RI_RES_WR_ONCHIP)
  323. #define G_FW_RI_RES_WR_ONCHIP(x) \
  324. (((x) >> S_FW_RI_RES_WR_ONCHIP) & M_FW_RI_RES_WR_ONCHIP)
  325. #define F_FW_RI_RES_WR_ONCHIP V_FW_RI_RES_WR_ONCHIP(1U)
  326. #define S_FW_RI_RES_WR_PCIECHN 16
  327. #define M_FW_RI_RES_WR_PCIECHN 0x3
  328. #define V_FW_RI_RES_WR_PCIECHN(x) ((x) << S_FW_RI_RES_WR_PCIECHN)
  329. #define G_FW_RI_RES_WR_PCIECHN(x) \
  330. (((x) >> S_FW_RI_RES_WR_PCIECHN) & M_FW_RI_RES_WR_PCIECHN)
  331. #define S_FW_RI_RES_WR_IQID 0
  332. #define M_FW_RI_RES_WR_IQID 0xffff
  333. #define V_FW_RI_RES_WR_IQID(x) ((x) << S_FW_RI_RES_WR_IQID)
  334. #define G_FW_RI_RES_WR_IQID(x) \
  335. (((x) >> S_FW_RI_RES_WR_IQID) & M_FW_RI_RES_WR_IQID)
  336. #define S_FW_RI_RES_WR_DCAEN 31
  337. #define M_FW_RI_RES_WR_DCAEN 0x1
  338. #define V_FW_RI_RES_WR_DCAEN(x) ((x) << S_FW_RI_RES_WR_DCAEN)
  339. #define G_FW_RI_RES_WR_DCAEN(x) \
  340. (((x) >> S_FW_RI_RES_WR_DCAEN) & M_FW_RI_RES_WR_DCAEN)
  341. #define F_FW_RI_RES_WR_DCAEN V_FW_RI_RES_WR_DCAEN(1U)
  342. #define S_FW_RI_RES_WR_DCACPU 26
  343. #define M_FW_RI_RES_WR_DCACPU 0x1f
  344. #define V_FW_RI_RES_WR_DCACPU(x) ((x) << S_FW_RI_RES_WR_DCACPU)
  345. #define G_FW_RI_RES_WR_DCACPU(x) \
  346. (((x) >> S_FW_RI_RES_WR_DCACPU) & M_FW_RI_RES_WR_DCACPU)
  347. #define S_FW_RI_RES_WR_FBMIN 23
  348. #define M_FW_RI_RES_WR_FBMIN 0x7
  349. #define V_FW_RI_RES_WR_FBMIN(x) ((x) << S_FW_RI_RES_WR_FBMIN)
  350. #define G_FW_RI_RES_WR_FBMIN(x) \
  351. (((x) >> S_FW_RI_RES_WR_FBMIN) & M_FW_RI_RES_WR_FBMIN)
  352. #define S_FW_RI_RES_WR_FBMAX 20
  353. #define M_FW_RI_RES_WR_FBMAX 0x7
  354. #define V_FW_RI_RES_WR_FBMAX(x) ((x) << S_FW_RI_RES_WR_FBMAX)
  355. #define G_FW_RI_RES_WR_FBMAX(x) \
  356. (((x) >> S_FW_RI_RES_WR_FBMAX) & M_FW_RI_RES_WR_FBMAX)
  357. #define S_FW_RI_RES_WR_CIDXFTHRESHO 19
  358. #define M_FW_RI_RES_WR_CIDXFTHRESHO 0x1
  359. #define V_FW_RI_RES_WR_CIDXFTHRESHO(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESHO)
  360. #define G_FW_RI_RES_WR_CIDXFTHRESHO(x) \
  361. (((x) >> S_FW_RI_RES_WR_CIDXFTHRESHO) & M_FW_RI_RES_WR_CIDXFTHRESHO)
  362. #define F_FW_RI_RES_WR_CIDXFTHRESHO V_FW_RI_RES_WR_CIDXFTHRESHO(1U)
  363. #define S_FW_RI_RES_WR_CIDXFTHRESH 16
  364. #define M_FW_RI_RES_WR_CIDXFTHRESH 0x7
  365. #define V_FW_RI_RES_WR_CIDXFTHRESH(x) ((x) << S_FW_RI_RES_WR_CIDXFTHRESH)
  366. #define G_FW_RI_RES_WR_CIDXFTHRESH(x) \
  367. (((x) >> S_FW_RI_RES_WR_CIDXFTHRESH) & M_FW_RI_RES_WR_CIDXFTHRESH)
  368. #define S_FW_RI_RES_WR_EQSIZE 0
  369. #define M_FW_RI_RES_WR_EQSIZE 0xffff
  370. #define V_FW_RI_RES_WR_EQSIZE(x) ((x) << S_FW_RI_RES_WR_EQSIZE)
  371. #define G_FW_RI_RES_WR_EQSIZE(x) \
  372. (((x) >> S_FW_RI_RES_WR_EQSIZE) & M_FW_RI_RES_WR_EQSIZE)
  373. #define S_FW_RI_RES_WR_IQANDST 15
  374. #define M_FW_RI_RES_WR_IQANDST 0x1
  375. #define V_FW_RI_RES_WR_IQANDST(x) ((x) << S_FW_RI_RES_WR_IQANDST)
  376. #define G_FW_RI_RES_WR_IQANDST(x) \
  377. (((x) >> S_FW_RI_RES_WR_IQANDST) & M_FW_RI_RES_WR_IQANDST)
  378. #define F_FW_RI_RES_WR_IQANDST V_FW_RI_RES_WR_IQANDST(1U)
  379. #define S_FW_RI_RES_WR_IQANUS 14
  380. #define M_FW_RI_RES_WR_IQANUS 0x1
  381. #define V_FW_RI_RES_WR_IQANUS(x) ((x) << S_FW_RI_RES_WR_IQANUS)
  382. #define G_FW_RI_RES_WR_IQANUS(x) \
  383. (((x) >> S_FW_RI_RES_WR_IQANUS) & M_FW_RI_RES_WR_IQANUS)
  384. #define F_FW_RI_RES_WR_IQANUS V_FW_RI_RES_WR_IQANUS(1U)
  385. #define S_FW_RI_RES_WR_IQANUD 12
  386. #define M_FW_RI_RES_WR_IQANUD 0x3
  387. #define V_FW_RI_RES_WR_IQANUD(x) ((x) << S_FW_RI_RES_WR_IQANUD)
  388. #define G_FW_RI_RES_WR_IQANUD(x) \
  389. (((x) >> S_FW_RI_RES_WR_IQANUD) & M_FW_RI_RES_WR_IQANUD)
  390. #define S_FW_RI_RES_WR_IQANDSTINDEX 0
  391. #define M_FW_RI_RES_WR_IQANDSTINDEX 0xfff
  392. #define V_FW_RI_RES_WR_IQANDSTINDEX(x) ((x) << S_FW_RI_RES_WR_IQANDSTINDEX)
  393. #define G_FW_RI_RES_WR_IQANDSTINDEX(x) \
  394. (((x) >> S_FW_RI_RES_WR_IQANDSTINDEX) & M_FW_RI_RES_WR_IQANDSTINDEX)
  395. #define S_FW_RI_RES_WR_IQDROPRSS 15
  396. #define M_FW_RI_RES_WR_IQDROPRSS 0x1
  397. #define V_FW_RI_RES_WR_IQDROPRSS(x) ((x) << S_FW_RI_RES_WR_IQDROPRSS)
  398. #define G_FW_RI_RES_WR_IQDROPRSS(x) \
  399. (((x) >> S_FW_RI_RES_WR_IQDROPRSS) & M_FW_RI_RES_WR_IQDROPRSS)
  400. #define F_FW_RI_RES_WR_IQDROPRSS V_FW_RI_RES_WR_IQDROPRSS(1U)
  401. #define S_FW_RI_RES_WR_IQGTSMODE 14
  402. #define M_FW_RI_RES_WR_IQGTSMODE 0x1
  403. #define V_FW_RI_RES_WR_IQGTSMODE(x) ((x) << S_FW_RI_RES_WR_IQGTSMODE)
  404. #define G_FW_RI_RES_WR_IQGTSMODE(x) \
  405. (((x) >> S_FW_RI_RES_WR_IQGTSMODE) & M_FW_RI_RES_WR_IQGTSMODE)
  406. #define F_FW_RI_RES_WR_IQGTSMODE V_FW_RI_RES_WR_IQGTSMODE(1U)
  407. #define S_FW_RI_RES_WR_IQPCIECH 12
  408. #define M_FW_RI_RES_WR_IQPCIECH 0x3
  409. #define V_FW_RI_RES_WR_IQPCIECH(x) ((x) << S_FW_RI_RES_WR_IQPCIECH)
  410. #define G_FW_RI_RES_WR_IQPCIECH(x) \
  411. (((x) >> S_FW_RI_RES_WR_IQPCIECH) & M_FW_RI_RES_WR_IQPCIECH)
  412. #define S_FW_RI_RES_WR_IQDCAEN 11
  413. #define M_FW_RI_RES_WR_IQDCAEN 0x1
  414. #define V_FW_RI_RES_WR_IQDCAEN(x) ((x) << S_FW_RI_RES_WR_IQDCAEN)
  415. #define G_FW_RI_RES_WR_IQDCAEN(x) \
  416. (((x) >> S_FW_RI_RES_WR_IQDCAEN) & M_FW_RI_RES_WR_IQDCAEN)
  417. #define F_FW_RI_RES_WR_IQDCAEN V_FW_RI_RES_WR_IQDCAEN(1U)
  418. #define S_FW_RI_RES_WR_IQDCACPU 6
  419. #define M_FW_RI_RES_WR_IQDCACPU 0x1f
  420. #define V_FW_RI_RES_WR_IQDCACPU(x) ((x) << S_FW_RI_RES_WR_IQDCACPU)
  421. #define G_FW_RI_RES_WR_IQDCACPU(x) \
  422. (((x) >> S_FW_RI_RES_WR_IQDCACPU) & M_FW_RI_RES_WR_IQDCACPU)
  423. #define S_FW_RI_RES_WR_IQINTCNTTHRESH 4
  424. #define M_FW_RI_RES_WR_IQINTCNTTHRESH 0x3
  425. #define V_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
  426. ((x) << S_FW_RI_RES_WR_IQINTCNTTHRESH)
  427. #define G_FW_RI_RES_WR_IQINTCNTTHRESH(x) \
  428. (((x) >> S_FW_RI_RES_WR_IQINTCNTTHRESH) & M_FW_RI_RES_WR_IQINTCNTTHRESH)
  429. #define S_FW_RI_RES_WR_IQO 3
  430. #define M_FW_RI_RES_WR_IQO 0x1
  431. #define V_FW_RI_RES_WR_IQO(x) ((x) << S_FW_RI_RES_WR_IQO)
  432. #define G_FW_RI_RES_WR_IQO(x) \
  433. (((x) >> S_FW_RI_RES_WR_IQO) & M_FW_RI_RES_WR_IQO)
  434. #define F_FW_RI_RES_WR_IQO V_FW_RI_RES_WR_IQO(1U)
  435. #define S_FW_RI_RES_WR_IQCPRIO 2
  436. #define M_FW_RI_RES_WR_IQCPRIO 0x1
  437. #define V_FW_RI_RES_WR_IQCPRIO(x) ((x) << S_FW_RI_RES_WR_IQCPRIO)
  438. #define G_FW_RI_RES_WR_IQCPRIO(x) \
  439. (((x) >> S_FW_RI_RES_WR_IQCPRIO) & M_FW_RI_RES_WR_IQCPRIO)
  440. #define F_FW_RI_RES_WR_IQCPRIO V_FW_RI_RES_WR_IQCPRIO(1U)
  441. #define S_FW_RI_RES_WR_IQESIZE 0
  442. #define M_FW_RI_RES_WR_IQESIZE 0x3
  443. #define V_FW_RI_RES_WR_IQESIZE(x) ((x) << S_FW_RI_RES_WR_IQESIZE)
  444. #define G_FW_RI_RES_WR_IQESIZE(x) \
  445. (((x) >> S_FW_RI_RES_WR_IQESIZE) & M_FW_RI_RES_WR_IQESIZE)
  446. #define S_FW_RI_RES_WR_IQNS 31
  447. #define M_FW_RI_RES_WR_IQNS 0x1
  448. #define V_FW_RI_RES_WR_IQNS(x) ((x) << S_FW_RI_RES_WR_IQNS)
  449. #define G_FW_RI_RES_WR_IQNS(x) \
  450. (((x) >> S_FW_RI_RES_WR_IQNS) & M_FW_RI_RES_WR_IQNS)
  451. #define F_FW_RI_RES_WR_IQNS V_FW_RI_RES_WR_IQNS(1U)
  452. #define S_FW_RI_RES_WR_IQRO 30
  453. #define M_FW_RI_RES_WR_IQRO 0x1
  454. #define V_FW_RI_RES_WR_IQRO(x) ((x) << S_FW_RI_RES_WR_IQRO)
  455. #define G_FW_RI_RES_WR_IQRO(x) \
  456. (((x) >> S_FW_RI_RES_WR_IQRO) & M_FW_RI_RES_WR_IQRO)
  457. #define F_FW_RI_RES_WR_IQRO V_FW_RI_RES_WR_IQRO(1U)
  458. struct fw_ri_rdma_write_wr {
  459. __u8 opcode;
  460. __u8 flags;
  461. __u16 wrid;
  462. __u8 r1[3];
  463. __u8 len16;
  464. __be64 r2;
  465. __be32 plen;
  466. __be32 stag_sink;
  467. __be64 to_sink;
  468. #ifndef C99_NOT_SUPPORTED
  469. union {
  470. struct fw_ri_immd immd_src[0];
  471. struct fw_ri_isgl isgl_src[0];
  472. } u;
  473. #endif
  474. };
  475. struct fw_ri_send_wr {
  476. __u8 opcode;
  477. __u8 flags;
  478. __u16 wrid;
  479. __u8 r1[3];
  480. __u8 len16;
  481. __be32 sendop_pkd;
  482. __be32 stag_inv;
  483. __be32 plen;
  484. __be32 r3;
  485. __be64 r4;
  486. #ifndef C99_NOT_SUPPORTED
  487. union {
  488. struct fw_ri_immd immd_src[0];
  489. struct fw_ri_isgl isgl_src[0];
  490. } u;
  491. #endif
  492. };
  493. #define S_FW_RI_SEND_WR_SENDOP 0
  494. #define M_FW_RI_SEND_WR_SENDOP 0xf
  495. #define V_FW_RI_SEND_WR_SENDOP(x) ((x) << S_FW_RI_SEND_WR_SENDOP)
  496. #define G_FW_RI_SEND_WR_SENDOP(x) \
  497. (((x) >> S_FW_RI_SEND_WR_SENDOP) & M_FW_RI_SEND_WR_SENDOP)
  498. struct fw_ri_rdma_read_wr {
  499. __u8 opcode;
  500. __u8 flags;
  501. __u16 wrid;
  502. __u8 r1[3];
  503. __u8 len16;
  504. __be64 r2;
  505. __be32 stag_sink;
  506. __be32 to_sink_hi;
  507. __be32 to_sink_lo;
  508. __be32 plen;
  509. __be32 stag_src;
  510. __be32 to_src_hi;
  511. __be32 to_src_lo;
  512. __be32 r5;
  513. };
  514. struct fw_ri_recv_wr {
  515. __u8 opcode;
  516. __u8 r1;
  517. __u16 wrid;
  518. __u8 r2[3];
  519. __u8 len16;
  520. struct fw_ri_isgl isgl;
  521. };
  522. struct fw_ri_bind_mw_wr {
  523. __u8 opcode;
  524. __u8 flags;
  525. __u16 wrid;
  526. __u8 r1[3];
  527. __u8 len16;
  528. __u8 qpbinde_to_dcacpu;
  529. __u8 pgsz_shift;
  530. __u8 addr_type;
  531. __u8 mem_perms;
  532. __be32 stag_mr;
  533. __be32 stag_mw;
  534. __be32 r3;
  535. __be64 len_mw;
  536. __be64 va_fbo;
  537. __be64 r4;
  538. };
  539. #define S_FW_RI_BIND_MW_WR_QPBINDE 6
  540. #define M_FW_RI_BIND_MW_WR_QPBINDE 0x1
  541. #define V_FW_RI_BIND_MW_WR_QPBINDE(x) ((x) << S_FW_RI_BIND_MW_WR_QPBINDE)
  542. #define G_FW_RI_BIND_MW_WR_QPBINDE(x) \
  543. (((x) >> S_FW_RI_BIND_MW_WR_QPBINDE) & M_FW_RI_BIND_MW_WR_QPBINDE)
  544. #define F_FW_RI_BIND_MW_WR_QPBINDE V_FW_RI_BIND_MW_WR_QPBINDE(1U)
  545. #define S_FW_RI_BIND_MW_WR_NS 5
  546. #define M_FW_RI_BIND_MW_WR_NS 0x1
  547. #define V_FW_RI_BIND_MW_WR_NS(x) ((x) << S_FW_RI_BIND_MW_WR_NS)
  548. #define G_FW_RI_BIND_MW_WR_NS(x) \
  549. (((x) >> S_FW_RI_BIND_MW_WR_NS) & M_FW_RI_BIND_MW_WR_NS)
  550. #define F_FW_RI_BIND_MW_WR_NS V_FW_RI_BIND_MW_WR_NS(1U)
  551. #define S_FW_RI_BIND_MW_WR_DCACPU 0
  552. #define M_FW_RI_BIND_MW_WR_DCACPU 0x1f
  553. #define V_FW_RI_BIND_MW_WR_DCACPU(x) ((x) << S_FW_RI_BIND_MW_WR_DCACPU)
  554. #define G_FW_RI_BIND_MW_WR_DCACPU(x) \
  555. (((x) >> S_FW_RI_BIND_MW_WR_DCACPU) & M_FW_RI_BIND_MW_WR_DCACPU)
  556. struct fw_ri_fr_nsmr_wr {
  557. __u8 opcode;
  558. __u8 flags;
  559. __u16 wrid;
  560. __u8 r1[3];
  561. __u8 len16;
  562. __u8 qpbinde_to_dcacpu;
  563. __u8 pgsz_shift;
  564. __u8 addr_type;
  565. __u8 mem_perms;
  566. __be32 stag;
  567. __be32 len_hi;
  568. __be32 len_lo;
  569. __be32 va_hi;
  570. __be32 va_lo_fbo;
  571. };
  572. #define S_FW_RI_FR_NSMR_WR_QPBINDE 6
  573. #define M_FW_RI_FR_NSMR_WR_QPBINDE 0x1
  574. #define V_FW_RI_FR_NSMR_WR_QPBINDE(x) ((x) << S_FW_RI_FR_NSMR_WR_QPBINDE)
  575. #define G_FW_RI_FR_NSMR_WR_QPBINDE(x) \
  576. (((x) >> S_FW_RI_FR_NSMR_WR_QPBINDE) & M_FW_RI_FR_NSMR_WR_QPBINDE)
  577. #define F_FW_RI_FR_NSMR_WR_QPBINDE V_FW_RI_FR_NSMR_WR_QPBINDE(1U)
  578. #define S_FW_RI_FR_NSMR_WR_NS 5
  579. #define M_FW_RI_FR_NSMR_WR_NS 0x1
  580. #define V_FW_RI_FR_NSMR_WR_NS(x) ((x) << S_FW_RI_FR_NSMR_WR_NS)
  581. #define G_FW_RI_FR_NSMR_WR_NS(x) \
  582. (((x) >> S_FW_RI_FR_NSMR_WR_NS) & M_FW_RI_FR_NSMR_WR_NS)
  583. #define F_FW_RI_FR_NSMR_WR_NS V_FW_RI_FR_NSMR_WR_NS(1U)
  584. #define S_FW_RI_FR_NSMR_WR_DCACPU 0
  585. #define M_FW_RI_FR_NSMR_WR_DCACPU 0x1f
  586. #define V_FW_RI_FR_NSMR_WR_DCACPU(x) ((x) << S_FW_RI_FR_NSMR_WR_DCACPU)
  587. #define G_FW_RI_FR_NSMR_WR_DCACPU(x) \
  588. (((x) >> S_FW_RI_FR_NSMR_WR_DCACPU) & M_FW_RI_FR_NSMR_WR_DCACPU)
  589. struct fw_ri_inv_lstag_wr {
  590. __u8 opcode;
  591. __u8 flags;
  592. __u16 wrid;
  593. __u8 r1[3];
  594. __u8 len16;
  595. __be32 r2;
  596. __be32 stag_inv;
  597. };
  598. enum fw_ri_type {
  599. FW_RI_TYPE_INIT,
  600. FW_RI_TYPE_FINI,
  601. FW_RI_TYPE_TERMINATE
  602. };
  603. enum fw_ri_init_p2ptype {
  604. FW_RI_INIT_P2PTYPE_RDMA_WRITE = FW_RI_RDMA_WRITE,
  605. FW_RI_INIT_P2PTYPE_READ_REQ = FW_RI_READ_REQ,
  606. FW_RI_INIT_P2PTYPE_SEND = FW_RI_SEND,
  607. FW_RI_INIT_P2PTYPE_SEND_WITH_INV = FW_RI_SEND_WITH_INV,
  608. FW_RI_INIT_P2PTYPE_SEND_WITH_SE = FW_RI_SEND_WITH_SE,
  609. FW_RI_INIT_P2PTYPE_SEND_WITH_SE_INV = FW_RI_SEND_WITH_SE_INV,
  610. FW_RI_INIT_P2PTYPE_DISABLED = 0xf,
  611. };
  612. struct fw_ri_wr {
  613. __be32 op_compl;
  614. __be32 flowid_len16;
  615. __u64 cookie;
  616. union fw_ri {
  617. struct fw_ri_init {
  618. __u8 type;
  619. __u8 mpareqbit_p2ptype;
  620. __u8 r4[2];
  621. __u8 mpa_attrs;
  622. __u8 qp_caps;
  623. __be16 nrqe;
  624. __be32 pdid;
  625. __be32 qpid;
  626. __be32 sq_eqid;
  627. __be32 rq_eqid;
  628. __be32 scqid;
  629. __be32 rcqid;
  630. __be32 ord_max;
  631. __be32 ird_max;
  632. __be32 iss;
  633. __be32 irs;
  634. __be32 hwrqsize;
  635. __be32 hwrqaddr;
  636. __be64 r5;
  637. union fw_ri_init_p2p {
  638. struct fw_ri_rdma_write_wr write;
  639. struct fw_ri_rdma_read_wr read;
  640. struct fw_ri_send_wr send;
  641. } u;
  642. } init;
  643. struct fw_ri_fini {
  644. __u8 type;
  645. __u8 r3[7];
  646. __be64 r4;
  647. } fini;
  648. struct fw_ri_terminate {
  649. __u8 type;
  650. __u8 r3[3];
  651. __be32 immdlen;
  652. __u8 termmsg[40];
  653. } terminate;
  654. } u;
  655. };
  656. #define S_FW_RI_WR_MPAREQBIT 7
  657. #define M_FW_RI_WR_MPAREQBIT 0x1
  658. #define V_FW_RI_WR_MPAREQBIT(x) ((x) << S_FW_RI_WR_MPAREQBIT)
  659. #define G_FW_RI_WR_MPAREQBIT(x) \
  660. (((x) >> S_FW_RI_WR_MPAREQBIT) & M_FW_RI_WR_MPAREQBIT)
  661. #define F_FW_RI_WR_MPAREQBIT V_FW_RI_WR_MPAREQBIT(1U)
  662. #define S_FW_RI_WR_P2PTYPE 0
  663. #define M_FW_RI_WR_P2PTYPE 0xf
  664. #define V_FW_RI_WR_P2PTYPE(x) ((x) << S_FW_RI_WR_P2PTYPE)
  665. #define G_FW_RI_WR_P2PTYPE(x) \
  666. (((x) >> S_FW_RI_WR_P2PTYPE) & M_FW_RI_WR_P2PTYPE)
  667. struct tcp_options {
  668. __be16 mss;
  669. __u8 wsf;
  670. #if defined(__LITTLE_ENDIAN_BITFIELD)
  671. __u8:4;
  672. __u8 unknown:1;
  673. __u8:1;
  674. __u8 sack:1;
  675. __u8 tstamp:1;
  676. #else
  677. __u8 tstamp:1;
  678. __u8 sack:1;
  679. __u8:1;
  680. __u8 unknown:1;
  681. __u8:4;
  682. #endif
  683. };
  684. struct cpl_pass_accept_req {
  685. union opcode_tid ot;
  686. __be16 rsvd;
  687. __be16 len;
  688. __be32 hdr_len;
  689. __be16 vlan;
  690. __be16 l2info;
  691. __be32 tos_stid;
  692. struct tcp_options tcpopt;
  693. };
  694. /* cpl_pass_accept_req.hdr_len fields */
  695. #define S_SYN_RX_CHAN 0
  696. #define M_SYN_RX_CHAN 0xF
  697. #define V_SYN_RX_CHAN(x) ((x) << S_SYN_RX_CHAN)
  698. #define G_SYN_RX_CHAN(x) (((x) >> S_SYN_RX_CHAN) & M_SYN_RX_CHAN)
  699. #define S_TCP_HDR_LEN 10
  700. #define M_TCP_HDR_LEN 0x3F
  701. #define V_TCP_HDR_LEN(x) ((x) << S_TCP_HDR_LEN)
  702. #define G_TCP_HDR_LEN(x) (((x) >> S_TCP_HDR_LEN) & M_TCP_HDR_LEN)
  703. #define S_IP_HDR_LEN 16
  704. #define M_IP_HDR_LEN 0x3FF
  705. #define V_IP_HDR_LEN(x) ((x) << S_IP_HDR_LEN)
  706. #define G_IP_HDR_LEN(x) (((x) >> S_IP_HDR_LEN) & M_IP_HDR_LEN)
  707. #define S_ETH_HDR_LEN 26
  708. #define M_ETH_HDR_LEN 0x1F
  709. #define V_ETH_HDR_LEN(x) ((x) << S_ETH_HDR_LEN)
  710. #define G_ETH_HDR_LEN(x) (((x) >> S_ETH_HDR_LEN) & M_ETH_HDR_LEN)
  711. /* cpl_pass_accept_req.l2info fields */
  712. #define S_SYN_MAC_IDX 0
  713. #define M_SYN_MAC_IDX 0x1FF
  714. #define V_SYN_MAC_IDX(x) ((x) << S_SYN_MAC_IDX)
  715. #define G_SYN_MAC_IDX(x) (((x) >> S_SYN_MAC_IDX) & M_SYN_MAC_IDX)
  716. #define S_SYN_XACT_MATCH 9
  717. #define V_SYN_XACT_MATCH(x) ((x) << S_SYN_XACT_MATCH)
  718. #define F_SYN_XACT_MATCH V_SYN_XACT_MATCH(1U)
  719. #define S_SYN_INTF 12
  720. #define M_SYN_INTF 0xF
  721. #define V_SYN_INTF(x) ((x) << S_SYN_INTF)
  722. #define G_SYN_INTF(x) (((x) >> S_SYN_INTF) & M_SYN_INTF)
  723. struct ulptx_idata {
  724. __be32 cmd_more;
  725. __be32 len;
  726. };
  727. #define S_ULPTX_NSGE 0
  728. #define M_ULPTX_NSGE 0xFFFF
  729. #define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE)
  730. #define S_RX_DACK_MODE 29
  731. #define M_RX_DACK_MODE 0x3
  732. #define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE)
  733. #define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE)
  734. #define S_RX_DACK_CHANGE 31
  735. #define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE)
  736. #define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U)
  737. #endif /* _T4FW_RI_API_H_ */