rx_flow_search_entry.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_FLOW_SEARCH_ENTRY_H_
  17. #define _RX_FLOW_SEARCH_ENTRY_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_RX_FLOW_SEARCH_ENTRY 16
  21. struct rx_flow_search_entry {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t src_ip_127_96 : 32; // [31:0]
  24. uint32_t src_ip_95_64 : 32; // [31:0]
  25. uint32_t src_ip_63_32 : 32; // [31:0]
  26. uint32_t src_ip_31_0 : 32; // [31:0]
  27. uint32_t dest_ip_127_96 : 32; // [31:0]
  28. uint32_t dest_ip_95_64 : 32; // [31:0]
  29. uint32_t dest_ip_63_32 : 32; // [31:0]
  30. uint32_t dest_ip_31_0 : 32; // [31:0]
  31. uint32_t src_port : 16, // [15:0]
  32. dest_port : 16; // [31:16]
  33. uint32_t l4_protocol : 8, // [7:0]
  34. valid : 1, // [8:8]
  35. reserved_9 : 4, // [12:9]
  36. service_code : 9, // [21:13]
  37. priority_valid : 1, // [22:22]
  38. use_ppe : 1, // [23:23]
  39. reo_destination_indication : 5, // [28:24]
  40. msdu_drop : 1, // [29:29]
  41. reo_destination_handler : 2; // [31:30]
  42. uint32_t metadata : 32; // [31:0]
  43. uint32_t aggregation_count : 7, // [6:0]
  44. lro_eligible : 1, // [7:7]
  45. msdu_count : 24; // [31:8]
  46. uint32_t msdu_byte_count : 32; // [31:0]
  47. uint32_t timestamp : 32; // [31:0]
  48. uint32_t cumulative_ip_length_pmac1 : 16, // [15:0]
  49. cumulative_ip_length : 16; // [31:16]
  50. uint32_t tcp_sequence_number : 32; // [31:0]
  51. #else
  52. uint32_t src_ip_127_96 : 32; // [31:0]
  53. uint32_t src_ip_95_64 : 32; // [31:0]
  54. uint32_t src_ip_63_32 : 32; // [31:0]
  55. uint32_t src_ip_31_0 : 32; // [31:0]
  56. uint32_t dest_ip_127_96 : 32; // [31:0]
  57. uint32_t dest_ip_95_64 : 32; // [31:0]
  58. uint32_t dest_ip_63_32 : 32; // [31:0]
  59. uint32_t dest_ip_31_0 : 32; // [31:0]
  60. uint32_t dest_port : 16, // [31:16]
  61. src_port : 16; // [15:0]
  62. uint32_t reo_destination_handler : 2, // [31:30]
  63. msdu_drop : 1, // [29:29]
  64. reo_destination_indication : 5, // [28:24]
  65. use_ppe : 1, // [23:23]
  66. priority_valid : 1, // [22:22]
  67. service_code : 9, // [21:13]
  68. reserved_9 : 4, // [12:9]
  69. valid : 1, // [8:8]
  70. l4_protocol : 8; // [7:0]
  71. uint32_t metadata : 32; // [31:0]
  72. uint32_t msdu_count : 24, // [31:8]
  73. lro_eligible : 1, // [7:7]
  74. aggregation_count : 7; // [6:0]
  75. uint32_t msdu_byte_count : 32; // [31:0]
  76. uint32_t timestamp : 32; // [31:0]
  77. uint32_t cumulative_ip_length : 16, // [31:16]
  78. cumulative_ip_length_pmac1 : 16; // [15:0]
  79. uint32_t tcp_sequence_number : 32; // [31:0]
  80. #endif
  81. };
  82. /* Description SRC_IP_127_96
  83. Uppermost 32 bits of source IPv6 address or prefix as per
  84. Common Parser register field IP_DA_SA_PREFIX (with the
  85. first byte in the MSB and the last byte in the LSB, i.e.
  86. requiring a byte-swap for little-endian SW w.r.t. the byte
  87. order in an IPv6 packet)
  88. <legal all>
  89. */
  90. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_127_96_OFFSET 0x00000000
  91. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_127_96_LSB 0
  92. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_127_96_MSB 31
  93. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_127_96_MASK 0xffffffff
  94. /* Description SRC_IP_95_64
  95. Next 32 bits of source IPv6 address or prefix (requiring
  96. a byte-swap for little-endian SW) <legal all>
  97. */
  98. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_95_64_OFFSET 0x00000004
  99. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_95_64_LSB 0
  100. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_95_64_MSB 31
  101. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_95_64_MASK 0xffffffff
  102. /* Description SRC_IP_63_32
  103. Next 32 bits of source IPv6 address or lowest 32 bits of
  104. prefix (requiring a byte-swap for little-endian SW)
  105. <legal all>
  106. */
  107. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_63_32_OFFSET 0x00000008
  108. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_63_32_LSB 0
  109. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_63_32_MSB 31
  110. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_63_32_MASK 0xffffffff
  111. /* Description SRC_IP_31_0
  112. Lowest 32 bits of source IPv6 address, or source IPv4 address
  113. (requiring a byte-swap for little-endian SW w.r.t. the
  114. byte order in an IPv6 or IPv4 packet)
  115. <legal all>
  116. */
  117. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_31_0_OFFSET 0x0000000c
  118. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_31_0_LSB 0
  119. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_31_0_MSB 31
  120. #define RX_FLOW_SEARCH_ENTRY_SRC_IP_31_0_MASK 0xffffffff
  121. /* Description DEST_IP_127_96
  122. Uppermost 32 bits of destination IPv6 address or prefix
  123. as per Common Parser register field IP_DA_SA_PREFIX (with
  124. the first byte in the MSB and the last byte in the LSB,
  125. i.e. requiring a byte-swap for little-endian SW w.r.t. the
  126. byte order as in an IPv6 packet)
  127. <legal all>
  128. */
  129. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_127_96_OFFSET 0x00000010
  130. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_127_96_LSB 0
  131. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_127_96_MSB 31
  132. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_127_96_MASK 0xffffffff
  133. /* Description DEST_IP_95_64
  134. Next 32 bits of destination IPv6 address or prefix (requiring
  135. a byte-swap for little-endian SW)
  136. <legal all>
  137. */
  138. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_95_64_OFFSET 0x00000014
  139. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_95_64_LSB 0
  140. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_95_64_MSB 31
  141. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_95_64_MASK 0xffffffff
  142. /* Description DEST_IP_63_32
  143. Next 32 bits of destination IPv6 address or lowest 32 bits
  144. of prefix (requiring a byte-swap for little-endian SW)
  145. <legal all>
  146. */
  147. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_63_32_OFFSET 0x00000018
  148. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_63_32_LSB 0
  149. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_63_32_MSB 31
  150. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_63_32_MASK 0xffffffff
  151. /* Description DEST_IP_31_0
  152. Lowest 32 bits of destination IPv6 address, or destination
  153. IPv4 address (requiring a byte-swap for little-endian SW
  154. w.r.t. the byte order in an IPv6 or IPv4 packet)
  155. <legal all>
  156. */
  157. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_31_0_OFFSET 0x0000001c
  158. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_31_0_LSB 0
  159. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_31_0_MSB 31
  160. #define RX_FLOW_SEARCH_ENTRY_DEST_IP_31_0_MASK 0xffffffff
  161. /* Description SRC_PORT
  162. LSB of SPI in case of ESP/AH
  163. else source port in case of TCP/UDP without IPsec,
  164. else zeros in case of ICMP (with the first/third byte in
  165. the MSB and the second/fourth byte in the LSB, i.e. requiring
  166. a byte-swap for little-endian SW w.r.t. the byte order
  167. as in an IPv6 or IPv4 packet) <legal all>
  168. */
  169. #define RX_FLOW_SEARCH_ENTRY_SRC_PORT_OFFSET 0x00000020
  170. #define RX_FLOW_SEARCH_ENTRY_SRC_PORT_LSB 0
  171. #define RX_FLOW_SEARCH_ENTRY_SRC_PORT_MSB 15
  172. #define RX_FLOW_SEARCH_ENTRY_SRC_PORT_MASK 0x0000ffff
  173. /* Description DEST_PORT
  174. MSB of SPI in case of ESP/AH
  175. else destination port in case of TCP/UDP without IPsec,
  176. else zeros in case of ICMP (with the first byte in the MSB
  177. and the second byte in the LSB, i.e. requiring a byte-swap
  178. for little-endian SW w.r.t. the byte order as in an IPv6
  179. or IPv4 packet)
  180. <legal all>
  181. */
  182. #define RX_FLOW_SEARCH_ENTRY_DEST_PORT_OFFSET 0x00000020
  183. #define RX_FLOW_SEARCH_ENTRY_DEST_PORT_LSB 16
  184. #define RX_FLOW_SEARCH_ENTRY_DEST_PORT_MSB 31
  185. #define RX_FLOW_SEARCH_ENTRY_DEST_PORT_MASK 0xffff0000
  186. /* Description L4_PROTOCOL
  187. IPsec or L4 protocol
  188. <enum 1 ICMPV4>
  189. <enum 6 TCP>
  190. <enum 17 UDP>
  191. <enum 50 ESP>
  192. <enum 51 AH>
  193. <enum 58 ICMPV6>
  194. <legal 1, 6, 17, 50, 51, 58>
  195. */
  196. #define RX_FLOW_SEARCH_ENTRY_L4_PROTOCOL_OFFSET 0x00000024
  197. #define RX_FLOW_SEARCH_ENTRY_L4_PROTOCOL_LSB 0
  198. #define RX_FLOW_SEARCH_ENTRY_L4_PROTOCOL_MSB 7
  199. #define RX_FLOW_SEARCH_ENTRY_L4_PROTOCOL_MASK 0x000000ff
  200. /* Description VALID
  201. Indicates validity of entry
  202. <legal all>
  203. */
  204. #define RX_FLOW_SEARCH_ENTRY_VALID_OFFSET 0x00000024
  205. #define RX_FLOW_SEARCH_ENTRY_VALID_LSB 8
  206. #define RX_FLOW_SEARCH_ENTRY_VALID_MSB 8
  207. #define RX_FLOW_SEARCH_ENTRY_VALID_MASK 0x00000100
  208. /* Description RESERVED_9
  209. <legal 0>
  210. */
  211. #define RX_FLOW_SEARCH_ENTRY_RESERVED_9_OFFSET 0x00000024
  212. #define RX_FLOW_SEARCH_ENTRY_RESERVED_9_LSB 9
  213. #define RX_FLOW_SEARCH_ENTRY_RESERVED_9_MSB 12
  214. #define RX_FLOW_SEARCH_ENTRY_RESERVED_9_MASK 0x00001e00
  215. /* Description SERVICE_CODE
  216. Opaque service code between PPE and Wi-Fi
  217. This field gets passed on by REO to PPE in the EDMA descriptor
  218. ('REO_TO_PPE_RING').
  219. <legal all>
  220. */
  221. #define RX_FLOW_SEARCH_ENTRY_SERVICE_CODE_OFFSET 0x00000024
  222. #define RX_FLOW_SEARCH_ENTRY_SERVICE_CODE_LSB 13
  223. #define RX_FLOW_SEARCH_ENTRY_SERVICE_CODE_MSB 21
  224. #define RX_FLOW_SEARCH_ENTRY_SERVICE_CODE_MASK 0x003fe000
  225. /* Description PRIORITY_VALID
  226. This field gets passed on by REO to PPE in the EDMA descriptor
  227. ('REO_TO_PPE_RING').
  228. <legal all>
  229. */
  230. #define RX_FLOW_SEARCH_ENTRY_PRIORITY_VALID_OFFSET 0x00000024
  231. #define RX_FLOW_SEARCH_ENTRY_PRIORITY_VALID_LSB 22
  232. #define RX_FLOW_SEARCH_ENTRY_PRIORITY_VALID_MSB 22
  233. #define RX_FLOW_SEARCH_ENTRY_PRIORITY_VALID_MASK 0x00400000
  234. /* Description USE_PPE
  235. Indicates to RXDMA to ignore the REO_destination_indication
  236. and use a programmed value corresponding to the REO2PPE
  237. ring
  238. This override to REO2PPE for packets requiring multiple
  239. buffers shall be disabled based on an RXDMA configuration,
  240. as PPE may not support such packets.
  241. <legal all>
  242. */
  243. #define RX_FLOW_SEARCH_ENTRY_USE_PPE_OFFSET 0x00000024
  244. #define RX_FLOW_SEARCH_ENTRY_USE_PPE_LSB 23
  245. #define RX_FLOW_SEARCH_ENTRY_USE_PPE_MSB 23
  246. #define RX_FLOW_SEARCH_ENTRY_USE_PPE_MASK 0x00800000
  247. /* Description REO_DESTINATION_INDICATION
  248. The ID of the REO exit ring where the MSDU frame shall push
  249. after (MPDU level) reordering has finished.
  250. <enum 0 reo_destination_sw0> Reo will push the frame into
  251. the REO2SW0 ring
  252. <enum 1 reo_destination_sw1> Reo will push the frame into
  253. the REO2SW1 ring
  254. <enum 2 reo_destination_sw2> Reo will push the frame into
  255. the REO2SW2 ring
  256. <enum 3 reo_destination_sw3> Reo will push the frame into
  257. the REO2SW3 ring
  258. <enum 4 reo_destination_sw4> Reo will push the frame into
  259. the REO2SW4 ring
  260. <enum 5 reo_destination_release> Reo will push the frame
  261. into the REO_release ring
  262. <enum 6 reo_destination_fw> Reo will push the frame into
  263. the REO2FW ring
  264. <enum 7 reo_destination_sw5> Reo will push the frame into
  265. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  266. ring)
  267. <enum 8 reo_destination_sw6> Reo will push the frame into
  268. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  269. ring)
  270. <enum 9 reo_destination_sw7> Reo will push the frame into
  271. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  272. ring)
  273. <enum 10 reo_destination_sw8> Reo will push the frame into
  274. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  275. ring)
  276. <enum 11 reo_destination_11> REO remaps this
  277. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  278. REO remaps this
  279. <enum 14 reo_destination_14> REO remaps this
  280. <enum 15 reo_destination_15> REO remaps this
  281. <enum 16 reo_destination_16> REO remaps this
  282. <enum 17 reo_destination_17> REO remaps this
  283. <enum 18 reo_destination_18> REO remaps this
  284. <enum 19 reo_destination_19> REO remaps this
  285. <enum 20 reo_destination_20> REO remaps this
  286. <enum 21 reo_destination_21> REO remaps this
  287. <enum 22 reo_destination_22> REO remaps this
  288. <enum 23 reo_destination_23> REO remaps this
  289. <enum 24 reo_destination_24> REO remaps this
  290. <enum 25 reo_destination_25> REO remaps this
  291. <enum 26 reo_destination_26> REO remaps this
  292. <enum 27 reo_destination_27> REO remaps this
  293. <enum 28 reo_destination_28> REO remaps this
  294. <enum 29 reo_destination_29> REO remaps this
  295. <enum 30 reo_destination_30> REO remaps this
  296. <enum 31 reo_destination_31> REO remaps this
  297. <legal all>
  298. */
  299. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_INDICATION_OFFSET 0x00000024
  300. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_INDICATION_LSB 24
  301. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_INDICATION_MSB 28
  302. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_INDICATION_MASK 0x1f000000
  303. /* Description MSDU_DROP
  304. Overriding indication to REO to forward to REO release ring
  305. <legal all>
  306. */
  307. #define RX_FLOW_SEARCH_ENTRY_MSDU_DROP_OFFSET 0x00000024
  308. #define RX_FLOW_SEARCH_ENTRY_MSDU_DROP_LSB 29
  309. #define RX_FLOW_SEARCH_ENTRY_MSDU_DROP_MSB 29
  310. #define RX_FLOW_SEARCH_ENTRY_MSDU_DROP_MASK 0x20000000
  311. /* Description REO_DESTINATION_HANDLER
  312. Indicates how to decide the REO destination indication
  313. <enum 0 RXFT_USE_FT> Follow this entry
  314. <enum 1 RXFT_USE_ASPT> Use address search+peer table entry
  315. <enum 2 RXFT_USE_FT2> Follow this entry
  316. <enum 3 RXFT_USE_CCE> Use CCE super-rule
  317. <legal all>
  318. */
  319. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_HANDLER_OFFSET 0x00000024
  320. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_HANDLER_LSB 30
  321. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_HANDLER_MSB 31
  322. #define RX_FLOW_SEARCH_ENTRY_REO_DESTINATION_HANDLER_MASK 0xc0000000
  323. /* Description METADATA
  324. Value to be passed to SW if this flow search entry matches
  325. <legal all>
  326. */
  327. #define RX_FLOW_SEARCH_ENTRY_METADATA_OFFSET 0x00000028
  328. #define RX_FLOW_SEARCH_ENTRY_METADATA_LSB 0
  329. #define RX_FLOW_SEARCH_ENTRY_METADATA_MSB 31
  330. #define RX_FLOW_SEARCH_ENTRY_METADATA_MASK 0xffffffff
  331. /* Description AGGREGATION_COUNT
  332. FISA: Number'of MSDU's aggregated so far
  333. Based on an RXOLE register, this can be changed to reflect
  334. aggregation of MSDUs from PMAC0 only.
  335. Set to zero in chips not supporting FISA
  336. <legal all>
  337. */
  338. #define RX_FLOW_SEARCH_ENTRY_AGGREGATION_COUNT_OFFSET 0x0000002c
  339. #define RX_FLOW_SEARCH_ENTRY_AGGREGATION_COUNT_LSB 0
  340. #define RX_FLOW_SEARCH_ENTRY_AGGREGATION_COUNT_MSB 6
  341. #define RX_FLOW_SEARCH_ENTRY_AGGREGATION_COUNT_MASK 0x0000007f
  342. /* Description LRO_ELIGIBLE
  343. FISA:
  344. To indicate whether the previous MSDU for this flow is eligible
  345. for LRO/FISA
  346. Based on an RXOLE register, this can be changed to reflect
  347. the LRO/FISA eligibility for MSDUs from PMAC0 only.
  348. This bit is also known as RDI_invalid.
  349. When RXOLE is configured to enable flow search (but ignore
  350. the REO_destination_indication) for the first fragment,
  351. it will set this bit if a flow entry matches.
  352. Subsequently when RXOLE matches this flow entry for any
  353. other packet, the REO_destination_indication in this entry
  354. is considered invalid and w.r.t. REO routing the flow search
  355. is considered to have failed.
  356. <legal all>
  357. */
  358. #define RX_FLOW_SEARCH_ENTRY_LRO_ELIGIBLE_OFFSET 0x0000002c
  359. #define RX_FLOW_SEARCH_ENTRY_LRO_ELIGIBLE_LSB 7
  360. #define RX_FLOW_SEARCH_ENTRY_LRO_ELIGIBLE_MSB 7
  361. #define RX_FLOW_SEARCH_ENTRY_LRO_ELIGIBLE_MASK 0x00000080
  362. /* Description MSDU_COUNT
  363. Number of Rx MSDUs matching this flow
  364. Based on an RXOLE register, this can be changed to reflect
  365. the number of Rx MSDUs from PMAC0 matching the flow.
  366. <legal all>
  367. */
  368. #define RX_FLOW_SEARCH_ENTRY_MSDU_COUNT_OFFSET 0x0000002c
  369. #define RX_FLOW_SEARCH_ENTRY_MSDU_COUNT_LSB 8
  370. #define RX_FLOW_SEARCH_ENTRY_MSDU_COUNT_MSB 31
  371. #define RX_FLOW_SEARCH_ENTRY_MSDU_COUNT_MASK 0xffffff00
  372. /* Description MSDU_BYTE_COUNT
  373. Number of bytes in Rx MSDUs matching this flow
  374. Based on an RXOLE register, this can be changed to reflect
  375. the number of Rx MSDUs from PMAC1 matching the flow.
  376. Based on an RXOLE register, the MSB 8 bits can be changed
  377. to reflect the 'aggregation_count' and 'LRO_eligible' of
  378. MSDUs from PMAC1.
  379. <legal all>
  380. */
  381. #define RX_FLOW_SEARCH_ENTRY_MSDU_BYTE_COUNT_OFFSET 0x00000030
  382. #define RX_FLOW_SEARCH_ENTRY_MSDU_BYTE_COUNT_LSB 0
  383. #define RX_FLOW_SEARCH_ENTRY_MSDU_BYTE_COUNT_MSB 31
  384. #define RX_FLOW_SEARCH_ENTRY_MSDU_BYTE_COUNT_MASK 0xffffffff
  385. /* Description TIMESTAMP
  386. Time of last reception (as measured at Rx OLE) matching
  387. this flow
  388. <legal all>
  389. */
  390. #define RX_FLOW_SEARCH_ENTRY_TIMESTAMP_OFFSET 0x00000034
  391. #define RX_FLOW_SEARCH_ENTRY_TIMESTAMP_LSB 0
  392. #define RX_FLOW_SEARCH_ENTRY_TIMESTAMP_MSB 31
  393. #define RX_FLOW_SEARCH_ENTRY_TIMESTAMP_MASK 0xffffffff
  394. /* Description CUMULATIVE_IP_LENGTH_PMAC1
  395. Based on an RXOLE register, this can be changed to reflect
  396. the 'cumulative_IP_length' for MSDUs from PMAC1.
  397. <legal all>
  398. */
  399. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_PMAC1_OFFSET 0x00000038
  400. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_PMAC1_LSB 0
  401. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_PMAC1_MSB 15
  402. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_PMAC1_MASK 0x0000ffff
  403. /* Description CUMULATIVE_IP_LENGTH
  404. FISA: Total MSDU length that is part of this flow aggregated
  405. so far
  406. Based on an RXOLE register, this can be changed to reflect
  407. aggregation of MSDUs from PMAC0 only.
  408. Set to zero in chips not supporting FISA
  409. <legal all>
  410. */
  411. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_OFFSET 0x00000038
  412. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_LSB 16
  413. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_MSB 31
  414. #define RX_FLOW_SEARCH_ENTRY_CUMULATIVE_IP_LENGTH_MASK 0xffff0000
  415. /* Description TCP_SEQUENCE_NUMBER
  416. FISA: TCP Sequence number of the last packet in this flow
  417. to detect sequence number jump
  418. Based on an RXOLE register, this can be changed so that
  419. the bottom half of this field reflects the LSBs of the TCP
  420. sequence number of the last packet from PMAC0 and the top
  421. half reflects the LSBs of the TCP sequence number of the
  422. last packet from PMAC1.
  423. Set to zero in chips not supporting FISA
  424. <legal all>
  425. */
  426. #define RX_FLOW_SEARCH_ENTRY_TCP_SEQUENCE_NUMBER_OFFSET 0x0000003c
  427. #define RX_FLOW_SEARCH_ENTRY_TCP_SEQUENCE_NUMBER_LSB 0
  428. #define RX_FLOW_SEARCH_ENTRY_TCP_SEQUENCE_NUMBER_MSB 31
  429. #define RX_FLOW_SEARCH_ENTRY_TCP_SEQUENCE_NUMBER_MASK 0xffffffff
  430. #endif // RX_FLOW_SEARCH_ENTRY