rx_mpdu_details.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. /*
  2. * Copyright (c) 2020 The Linux Foundation. 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. // $ATH_LICENSE_HW_HDR_C$
  17. //
  18. // DO NOT EDIT! This file is automatically generated
  19. // These definitions are tied to a particular hardware layout
  20. #ifndef _RX_MPDU_DETAILS_H_
  21. #define _RX_MPDU_DETAILS_H_
  22. #if !defined(__ASSEMBLER__)
  23. #endif
  24. #include "buffer_addr_info.h"
  25. #include "rx_mpdu_desc_info.h"
  26. // ################ START SUMMARY #################
  27. //
  28. // Dword Fields
  29. // 0-1 struct buffer_addr_info msdu_link_desc_addr_info;
  30. // 2-3 struct rx_mpdu_desc_info rx_mpdu_desc_info_details;
  31. //
  32. // ################ END SUMMARY #################
  33. #define NUM_OF_DWORDS_RX_MPDU_DETAILS 4
  34. struct rx_mpdu_details {
  35. struct buffer_addr_info msdu_link_desc_addr_info;
  36. struct rx_mpdu_desc_info rx_mpdu_desc_info_details;
  37. };
  38. /*
  39. struct buffer_addr_info msdu_link_desc_addr_info
  40. Consumer: REO/SW/FW
  41. Producer: RXDMA
  42. Details of the physical address of the MSDU link
  43. descriptor that contains pointers to MSDUs related to this
  44. MPDU
  45. struct rx_mpdu_desc_info rx_mpdu_desc_info_details
  46. Consumer: REO/SW/FW
  47. Producer: RXDMA
  48. General information related to the MPDU that should be
  49. */
  50. /* EXTERNAL REFERENCE : struct buffer_addr_info msdu_link_desc_addr_info */
  51. /* Description RX_MPDU_DETAILS_0_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0
  52. Address (lower 32 bits) of the MSDU buffer OR
  53. MSDU_EXTENSION descriptor OR Link Descriptor
  54. In case of 'NULL' pointer, this field is set to 0
  55. <legal all>
  56. */
  57. #define RX_MPDU_DETAILS_0_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
  58. #define RX_MPDU_DETAILS_0_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  59. #define RX_MPDU_DETAILS_0_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  60. /* Description RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32
  61. Address (upper 8 bits) of the MSDU buffer OR
  62. MSDU_EXTENSION descriptor OR Link Descriptor
  63. In case of 'NULL' pointer, this field is set to 0
  64. <legal all>
  65. */
  66. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
  67. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  68. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  69. /* Description RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER
  70. Consumer: WBM
  71. Producer: SW/FW
  72. In case of 'NULL' pointer, this field is set to 0
  73. Indicates to which buffer manager the buffer OR
  74. MSDU_EXTENSION descriptor OR link descriptor that is being
  75. pointed to shall be returned after the frame has been
  76. processed. It is used by WBM for routing purposes.
  77. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  78. to the WMB buffer idle list
  79. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  80. returned to the WMB idle link descriptor idle list
  81. <enum 2 FW_BM> This buffer shall be returned to the FW
  82. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  83. ring 0
  84. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  85. ring 1
  86. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  87. ring 2
  88. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  89. ring 3
  90. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  91. ring 3
  92. <legal all>
  93. */
  94. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
  95. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  96. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
  97. /* Description RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE
  98. Cookie field exclusively used by SW.
  99. In case of 'NULL' pointer, this field is set to 0
  100. HW ignores the contents, accept that it passes the
  101. programmed value on to other descriptors together with the
  102. physical address
  103. Field can be used by SW to for example associate the
  104. buffers physical address with the virtual address
  105. The bit definitions as used by SW are within SW HLD
  106. specification
  107. NOTE:
  108. The three most significant bits can have a special
  109. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  110. STRUCT, and field transmit_bw_restriction is set
  111. In case of NON punctured transmission:
  112. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  113. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  114. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  115. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  116. In case of punctured transmission:
  117. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  118. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  119. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  120. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  121. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  122. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  123. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  124. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  125. Note: a punctured transmission is indicated by the
  126. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  127. TLV
  128. <legal all>
  129. */
  130. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
  131. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
  132. #define RX_MPDU_DETAILS_1_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
  133. /* EXTERNAL REFERENCE : struct rx_mpdu_desc_info rx_mpdu_desc_info_details */
  134. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT
  135. Consumer: REO/SW/FW
  136. Producer: RXDMA
  137. The number of MSDUs within the MPDU
  138. <legal all>
  139. */
  140. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_OFFSET 0x00000008
  141. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_LSB 0
  142. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_MASK 0x000000ff
  143. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER
  144. Consumer: REO/SW/FW
  145. Producer: RXDMA
  146. The field can have two different meanings based on the
  147. setting of field 'BAR_frame':
  148. 'BAR_frame' is NOT set:
  149. The MPDU sequence number of the received frame.
  150. 'BAR_frame' is set.
  151. The MPDU Start sequence number from the BAR frame
  152. <legal all>
  153. */
  154. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_OFFSET 0x00000008
  155. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_LSB 8
  156. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_MASK 0x000fff00
  157. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG
  158. Consumer: REO/SW/FW
  159. Producer: RXDMA
  160. When set, this MPDU is a fragment and REO should forward
  161. this fragment MPDU to the REO destination ring without any
  162. reorder checks, pn checks or bitmap update. This implies
  163. that REO is forwarding the pointer to the MSDU link
  164. descriptor. The destination ring is coming from a
  165. programmable register setting in REO
  166. <legal all>
  167. */
  168. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_OFFSET 0x00000008
  169. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_LSB 20
  170. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_MASK 0x00100000
  171. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT
  172. Consumer: REO/SW/FW
  173. Producer: RXDMA
  174. The retry bit setting from the MPDU header of the
  175. received frame
  176. <legal all>
  177. */
  178. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_OFFSET 0x00000008
  179. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_LSB 21
  180. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_MASK 0x00200000
  181. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG
  182. Consumer: REO/SW/FW
  183. Producer: RXDMA
  184. When set, the MPDU was received as part of an A-MPDU.
  185. <legal all>
  186. */
  187. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_OFFSET 0x00000008
  188. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_LSB 22
  189. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_MASK 0x00400000
  190. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME
  191. Consumer: REO/SW/FW
  192. Producer: RXDMA
  193. When set, the received frame is a BAR frame. After
  194. processing, this frame shall be pushed to SW or deleted.
  195. <legal all>
  196. */
  197. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_OFFSET 0x00000008
  198. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_LSB 23
  199. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_MASK 0x00800000
  200. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO
  201. Consumer: REO/SW/FW
  202. Producer: RXDMA
  203. Copied here by RXDMA from RX_MPDU_END
  204. When not set, REO will Not perform a PN sequence number
  205. check
  206. */
  207. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET 0x00000008
  208. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_LSB 24
  209. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_MASK 0x01000000
  210. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID
  211. When set, OLE found a valid SA entry for all MSDUs in
  212. this MPDU
  213. <legal all>
  214. */
  215. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000008
  216. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 25
  217. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x02000000
  218. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  219. When set, at least 1 MSDU within the MPDU has an
  220. unsuccessful MAC source address search due to the expiration
  221. of the search timer.
  222. <legal all>
  223. */
  224. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000008
  225. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 26
  226. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x04000000
  227. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID
  228. When set, OLE found a valid DA entry for all MSDUs in
  229. this MPDU
  230. <legal all>
  231. */
  232. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000008
  233. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 27
  234. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x08000000
  235. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC
  236. Field Only valid if da_is_valid is set
  237. When set, at least one of the DA addresses is a
  238. Multicast or Broadcast address.
  239. <legal all>
  240. */
  241. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000008
  242. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 28
  243. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x10000000
  244. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  245. When set, at least 1 MSDU within the MPDU has an
  246. unsuccessful MAC destination address search due to the
  247. expiration of the search timer.
  248. <legal all>
  249. */
  250. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000008
  251. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 29
  252. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x20000000
  253. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU
  254. Field only valid when first_msdu_in_mpdu_flag is set.
  255. When set, the contents in the MSDU buffer contains a
  256. 'RAW' MPDU. This 'RAW' MPDU might be spread out over
  257. multiple MSDU buffers.
  258. <legal all>
  259. */
  260. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000008
  261. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 30
  262. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x40000000
  263. /* Description RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG
  264. The More Fragment bit setting from the MPDU header of
  265. the received frame
  266. <legal all>
  267. */
  268. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_OFFSET 0x00000008
  269. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_LSB 31
  270. #define RX_MPDU_DETAILS_2_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_MASK 0x80000000
  271. /* Description RX_MPDU_DETAILS_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA
  272. Meta data that SW has programmed in the Peer table entry
  273. of the transmitting STA.
  274. <legal all>
  275. */
  276. #define RX_MPDU_DETAILS_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_OFFSET 0x0000000c
  277. #define RX_MPDU_DETAILS_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_LSB 0
  278. #define RX_MPDU_DETAILS_3_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_MASK 0xffffffff
  279. #endif // _RX_MPDU_DETAILS_H_