rx_mpdu_details.h 14 KB

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