rx_msdu_details.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  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_MSDU_DETAILS_H_
  16. #define _RX_MSDU_DETAILS_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #include "rx_msdu_desc_info.h"
  20. #include "rx_msdu_ext_desc_info.h"
  21. #include "buffer_addr_info.h"
  22. #define NUM_OF_DWORDS_RX_MSDU_DETAILS 4
  23. struct rx_msdu_details {
  24. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  25. struct buffer_addr_info buffer_addr_info_details;
  26. struct rx_msdu_desc_info rx_msdu_desc_info_details;
  27. struct rx_msdu_ext_desc_info rx_msdu_ext_desc_info_details;
  28. #else
  29. struct buffer_addr_info buffer_addr_info_details;
  30. struct rx_msdu_desc_info rx_msdu_desc_info_details;
  31. struct rx_msdu_ext_desc_info rx_msdu_ext_desc_info_details;
  32. #endif
  33. };
  34. /* Description BUFFER_ADDR_INFO_DETAILS
  35. Consumer: REO/SW
  36. Producer: RXDMA
  37. Details of the physical address of the buffer containing
  38. an MSDU (or entire MPDU)
  39. */
  40. /* Description BUFFER_ADDR_31_0
  41. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  42. descriptor OR Link Descriptor
  43. In case of 'NULL' pointer, this field is set to 0
  44. <legal all>
  45. */
  46. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000000
  47. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  48. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  49. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  50. /* Description BUFFER_ADDR_39_32
  51. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  52. descriptor OR Link Descriptor
  53. In case of 'NULL' pointer, this field is set to 0
  54. <legal all>
  55. */
  56. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000004
  57. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  58. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  59. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  60. /* Description RETURN_BUFFER_MANAGER
  61. Consumer: WBM
  62. Producer: SW/FW
  63. In case of 'NULL' pointer, this field is set to 0
  64. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  65. descriptor OR link descriptor that is being pointed to
  66. shall be returned after the frame has been processed. It
  67. is used by WBM for routing purposes.
  68. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  69. to the WMB buffer idle list
  70. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  71. to the WBM idle link descriptor idle list, where the chip
  72. 0 WBM is chosen in case of a multi-chip config
  73. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  74. to the chip 1 WBM idle link descriptor idle list
  75. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  76. to the chip 2 WBM idle link descriptor idle list
  77. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  78. returned to chip 3 WBM idle link descriptor idle list
  79. <enum 4 FW_BM> This buffer shall be returned to the FW
  80. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  81. ring 0
  82. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  83. ring 1
  84. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  85. ring 2
  86. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  87. ring 3
  88. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  89. ring 4
  90. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  91. ring 5
  92. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  93. ring 6
  94. <legal 0-12>
  95. */
  96. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
  97. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  98. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  99. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  100. /* Description SW_BUFFER_COOKIE
  101. Cookie field exclusively used by SW.
  102. In case of 'NULL' pointer, this field is set to 0
  103. HW ignores the contents, accept that it passes the programmed
  104. value on to other descriptors together with the physical
  105. address
  106. Field can be used by SW to for example associate the buffers
  107. physical address with the virtual address
  108. The bit definitions as used by SW are within SW HLD specification
  109. NOTE1:
  110. The three most significant bits can have a special meaning
  111. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  112. and field transmit_bw_restriction is set
  113. In case of NON punctured transmission:
  114. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  115. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  116. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  117. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  118. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  119. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  120. Sw_buffer_cookie[19:18] = 2'b11: reserved
  121. In case of punctured transmission:
  122. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  123. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  124. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  125. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  126. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  127. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  128. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  129. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  130. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  131. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  132. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  133. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  134. Sw_buffer_cookie[19:18] = 2'b11: reserved
  135. Note: a punctured transmission is indicated by the presence
  136. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  137. <legal all>
  138. */
  139. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000004
  140. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  141. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  142. #define RX_MSDU_DETAILS_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  143. /* Description RX_MSDU_DESC_INFO_DETAILS
  144. Consumer: REO/SW
  145. Producer: RXDMA
  146. General information related to the MSDU that should be passed
  147. on from RXDMA all the way to to the REO destination ring.
  148. */
  149. /* Description FIRST_MSDU_IN_MPDU_FLAG
  150. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  151. multiple buffers, this field will be valid in the Last
  152. buffer used by the MSDU
  153. <enum 0 Not_first_msdu> This is not the first MSDU in the
  154. MPDU.
  155. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  156. <legal all>
  157. */
  158. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000008
  159. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  160. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  161. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  162. /* Description LAST_MSDU_IN_MPDU_FLAG
  163. Consumer: WBM/REO/SW/FW
  164. Producer: RXDMA
  165. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  166. multiple buffers, this field will be valid in the Last
  167. buffer used by the MSDU
  168. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  169. MSDU that belongs to this MPDU
  170. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  171. This setting is only allowed in combination with 'Msdu_continuation'
  172. set to 0. This implies that when an msdu is spread out over
  173. multiple buffers and thus msdu_continuation is set, only
  174. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  175. be set.
  176. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  177. are set, the MPDU that this MSDU belongs to only contains
  178. a single MSDU.
  179. <legal all>
  180. */
  181. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000008
  182. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  183. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  184. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  185. /* Description MSDU_CONTINUATION
  186. When set, this MSDU buffer was not able to hold the entire
  187. MSDU. The next buffer will therefor contain additional
  188. information related to this MSDU.
  189. <legal all>
  190. */
  191. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000008
  192. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  193. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  194. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  195. /* Description MSDU_LENGTH
  196. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  197. multiple buffers, this field will be valid in the First
  198. buffer used by MSDU.
  199. Full MSDU length in bytes after decapsulation.
  200. This field is still valid for MPDU frames without A-MSDU.
  201. It still represents MSDU length after decapsulation
  202. Or in case of RAW MPDUs, it indicates the length of the
  203. entire MPDU (without FCS field)
  204. <legal all>
  205. */
  206. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000008
  207. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  208. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  209. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  210. /* Description MSDU_DROP
  211. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  212. multiple buffers, this field will be valid in the Last
  213. buffer used by the MSDU
  214. When set, REO shall drop this MSDU and not forward it to
  215. any other ring...
  216. <legal all>
  217. */
  218. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000008
  219. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  220. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  221. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  222. /* Description SA_IS_VALID
  223. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  224. multiple buffers, this field will be valid in the Last
  225. buffer used by the MSDU
  226. Indicates that OLE found a valid SA entry for this MSDU
  227. <legal all>
  228. */
  229. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000008
  230. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  231. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  232. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  233. /* Description DA_IS_VALID
  234. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  235. multiple buffers, this field will be valid in the Last
  236. buffer used by the MSDU
  237. Indicates that OLE found a valid DA entry for this MSDU
  238. <legal all>
  239. */
  240. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000008
  241. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  242. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  243. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  244. /* Description DA_IS_MCBC
  245. Field Only valid if "da_is_valid" is set
  246. Indicates the DA address was a Multicast of Broadcast address
  247. for this MSDU
  248. <legal all>
  249. */
  250. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000008
  251. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  252. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  253. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  254. /* Description L3_HEADER_PADDING_MSB
  255. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  256. as the LSB is always zero)
  257. Number of bytes padded to make sure that the L3 header will
  258. always start of a Dword boundary
  259. <legal all>
  260. */
  261. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000008
  262. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  263. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  264. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  265. /* Description TCP_UDP_CHKSUM_FAIL
  266. Passed on from 'RX_ATTENTION' TLV
  267. Indicates that the computed checksum did not match the checksum
  268. in the TCP/UDP header.
  269. <legal all>
  270. */
  271. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000008
  272. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  273. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  274. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  275. /* Description IP_CHKSUM_FAIL
  276. Passed on from 'RX_ATTENTION' TLV
  277. Indicates that the computed checksum did not match the checksum
  278. in the IP header.
  279. <legal all>
  280. */
  281. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000008
  282. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  283. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  284. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  285. /* Description FR_DS
  286. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  287. TLV
  288. Set if the 'from DS' bit is set in the frame control.
  289. <legal all>
  290. */
  291. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000008
  292. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  293. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  294. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  295. /* Description TO_DS
  296. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  297. TLV
  298. Set if the 'to DS' bit is set in the frame control.
  299. <legal all>
  300. */
  301. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000008
  302. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  303. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  304. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  305. /* Description INTRA_BSS
  306. This packet needs intra-BSS routing by SW as the 'vdev_id'
  307. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  308. that this MSDU was got in.
  309. <legal all>
  310. */
  311. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000008
  312. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  313. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  314. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  315. /* Description DEST_CHIP_ID
  316. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  317. to support intra-BSS routing with multi-chip multi-link
  318. operation.
  319. This indicates into which chip's TCL the packet should be
  320. queued.
  321. <legal all>
  322. */
  323. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000008
  324. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  325. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  326. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  327. /* Description DECAP_FORMAT
  328. Indicates the format after decapsulation:
  329. <enum 0 RAW> No encapsulation
  330. <enum 1 Native_WiFi>
  331. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  332. <enum 3 802_3> Indicate Ethernet
  333. <legal all>
  334. */
  335. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000008
  336. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  337. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  338. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  339. /* Description DEST_CHIP_PMAC_ID
  340. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  341. to support intra-BSS routing with multi-chip multi-link
  342. operation.
  343. This indicates into which link/'vdev' the packet should
  344. be queued in TCL.
  345. <legal all>
  346. */
  347. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000008
  348. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  349. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  350. #define RX_MSDU_DETAILS_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  351. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  352. Consumer: REO/SW
  353. Producer: RXDMA
  354. Extended information related to the MSDU that is passed
  355. on from RXDMA to REO but not part of the REO destination
  356. ring. Some fields are passed on to PPE.
  357. */
  358. /* Description REO_DESTINATION_INDICATION
  359. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  360. multiple buffers, this field will be valid in the Last
  361. buffer used by the MSDU
  362. The ID of the REO exit ring where the MSDU frame shall push
  363. after (MPDU level) reordering has finished.
  364. <enum 0 reo_destination_sw0> Reo will push the frame into
  365. the REO2SW0 ring
  366. <enum 1 reo_destination_sw1> Reo will push the frame into
  367. the REO2SW1 ring
  368. <enum 2 reo_destination_sw2> Reo will push the frame into
  369. the REO2SW2 ring
  370. <enum 3 reo_destination_sw3> Reo will push the frame into
  371. the REO2SW3 ring
  372. <enum 4 reo_destination_sw4> Reo will push the frame into
  373. the REO2SW4 ring
  374. <enum 5 reo_destination_release> Reo will push the frame
  375. into the REO_release ring
  376. <enum 6 reo_destination_fw> Reo will push the frame into
  377. the REO2FW ring
  378. <enum 7 reo_destination_sw5> Reo will push the frame into
  379. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  380. ring, e.g. Pine)
  381. <enum 8 reo_destination_sw6> Reo will push the frame into
  382. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  383. ring, e.g. Pine)
  384. <enum 9 reo_destination_sw7> Reo will push the frame into
  385. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  386. ring)
  387. <enum 10 reo_destination_sw8> Reo will push the frame into
  388. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  389. ring)
  390. <enum 11 reo_destination_11> REO remaps this
  391. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  392. REO remaps this
  393. <enum 14 reo_destination_14> REO remaps this
  394. <enum 15 reo_destination_15> REO remaps this
  395. <enum 16 reo_destination_16> REO remaps this
  396. <enum 17 reo_destination_17> REO remaps this
  397. <enum 18 reo_destination_18> REO remaps this
  398. <enum 19 reo_destination_19> REO remaps this
  399. <enum 20 reo_destination_20> REO remaps this
  400. <enum 21 reo_destination_21> REO remaps this
  401. <enum 22 reo_destination_22> REO remaps this
  402. <enum 23 reo_destination_23> REO remaps this
  403. <enum 24 reo_destination_24> REO remaps this
  404. <enum 25 reo_destination_25> REO remaps this
  405. <enum 26 reo_destination_26> REO remaps this
  406. <enum 27 reo_destination_27> REO remaps this
  407. <enum 28 reo_destination_28> REO remaps this
  408. <enum 29 reo_destination_29> REO remaps this
  409. <enum 30 reo_destination_30> REO remaps this
  410. <enum 31 reo_destination_31> REO remaps this
  411. <legal all>
  412. */
  413. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000000c
  414. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  415. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  416. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  417. /* Description SERVICE_CODE
  418. Opaque service code between PPE and Wi-Fi
  419. This field gets passed on by REO to PPE in the EDMA descriptor
  420. ('REO_TO_PPE_RING').
  421. <legal all>
  422. */
  423. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000000c
  424. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  425. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  426. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  427. /* Description PRIORITY_VALID
  428. This field gets passed on by REO to PPE in the EDMA descriptor
  429. ('REO_TO_PPE_RING').
  430. <legal all>
  431. */
  432. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000000c
  433. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  434. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  435. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  436. /* Description DATA_OFFSET
  437. The offset to Rx packet data within the buffer (including
  438. Rx DMA offset programming and L3 header padding inserted
  439. by Rx OLE).
  440. This field gets passed on by REO to PPE in the EDMA descriptor
  441. ('REO_TO_PPE_RING').
  442. <legal all>
  443. */
  444. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000000c
  445. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  446. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  447. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  448. /* Description SRC_LINK_ID
  449. Consumer: SW
  450. Producer: RXDMA
  451. Set to the link ID of the PMAC that received the frame
  452. <legal all>
  453. */
  454. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000000c
  455. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  456. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  457. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  458. /* Description RESERVED_0A
  459. <legal 0>
  460. */
  461. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000000c
  462. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  463. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  464. #define RX_MSDU_DETAILS_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  465. #endif // RX_MSDU_DETAILS