rx_flow_search_entry.h 25 KB

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