rx_msdu_link.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. /*
  2. * Copyright (c) 2016 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. // $ATH_LICENSE_HW_HDR_C$
  19. //
  20. // DO NOT EDIT! This file is automatically generated
  21. // These definitions are tied to a particular hardware layout
  22. #ifndef _RX_MSDU_LINK_H_
  23. #define _RX_MSDU_LINK_H_
  24. #if !defined(__ASSEMBLER__)
  25. #endif
  26. #include "uniform_descriptor_header.h"
  27. #include "buffer_addr_info.h"
  28. #include "rx_msdu_details.h"
  29. // ################ START SUMMARY #################
  30. //
  31. // Dword Fields
  32. // 0 struct uniform_descriptor_header descriptor_header;
  33. // 1-2 struct buffer_addr_info next_msdu_link_desc_addr_info;
  34. // 3 receive_queue_number[15:0], first_rx_msdu_link_struct[16], reserved_3a[31:17]
  35. // 4 pn_31_0[31:0]
  36. // 5 pn_63_32[31:0]
  37. // 6 pn_95_64[31:0]
  38. // 7 pn_127_96[31:0]
  39. // 8-11 struct rx_msdu_details msdu_0;
  40. // 12-15 struct rx_msdu_details msdu_1;
  41. // 16-19 struct rx_msdu_details msdu_2;
  42. // 20-23 struct rx_msdu_details msdu_3;
  43. // 24-27 struct rx_msdu_details msdu_4;
  44. // 28-31 struct rx_msdu_details msdu_5;
  45. //
  46. // ################ END SUMMARY #################
  47. #define NUM_OF_DWORDS_RX_MSDU_LINK 32
  48. struct rx_msdu_link {
  49. struct uniform_descriptor_header descriptor_header;
  50. struct buffer_addr_info next_msdu_link_desc_addr_info;
  51. uint32_t receive_queue_number : 16, //[15:0]
  52. first_rx_msdu_link_struct : 1, //[16]
  53. reserved_3a : 15; //[31:17]
  54. uint32_t pn_31_0 : 32; //[31:0]
  55. uint32_t pn_63_32 : 32; //[31:0]
  56. uint32_t pn_95_64 : 32; //[31:0]
  57. uint32_t pn_127_96 : 32; //[31:0]
  58. struct rx_msdu_details msdu_0;
  59. struct rx_msdu_details msdu_1;
  60. struct rx_msdu_details msdu_2;
  61. struct rx_msdu_details msdu_3;
  62. struct rx_msdu_details msdu_4;
  63. struct rx_msdu_details msdu_5;
  64. };
  65. /*
  66. struct uniform_descriptor_header descriptor_header
  67. Details about which module owns this struct.
  68. Note that sub field Buffer_type shall be set to
  69. Receive_MSDU_Link_descriptor
  70. struct buffer_addr_info next_msdu_link_desc_addr_info
  71. Details of the physical address of the next MSDU link
  72. descriptor that contains info about additional MSDUs that
  73. are part of this MPDU.
  74. receive_queue_number
  75. Indicates the Receive queue to which this MPDU
  76. descriptor belongs
  77. Used for tracking, finding bugs and debugging.
  78. <legal all>
  79. first_rx_msdu_link_struct
  80. When set, this RX_MSDU_link descriptor is the first one
  81. in the MSDU link list. Field MSDU_0 points to the very first
  82. MSDU buffer descriptor in the MPDU
  83. <legal all>
  84. reserved_3a
  85. <legal 0>
  86. pn_31_0
  87. 31-0 bits of the 256-bit packet number bitmap.
  88. <legal all>
  89. pn_63_32
  90. 63-32 bits of the 256-bit packet number bitmap.
  91. <legal all>
  92. pn_95_64
  93. 95-64 bits of the 256-bit packet number bitmap.
  94. <legal all>
  95. pn_127_96
  96. 127-96 bits of the 256-bit packet number bitmap.
  97. <legal all>
  98. struct rx_msdu_details msdu_0
  99. When First_RX_MSDU_link_struct is set, this MSDU is the
  100. first in the MPDU
  101. When First_RX_MSDU_link_struct is NOT set, this MSDU
  102. follows the last MSDU in the previous RX_MSDU_link data
  103. structure
  104. struct rx_msdu_details msdu_1
  105. Details of next MSDU in this (MSDU flow) linked list
  106. struct rx_msdu_details msdu_2
  107. Details of next MSDU in this (MSDU flow) linked list
  108. struct rx_msdu_details msdu_3
  109. Details of next MSDU in this (MSDU flow) linked list
  110. struct rx_msdu_details msdu_4
  111. Details of next MSDU in this (MSDU flow) linked list
  112. struct rx_msdu_details msdu_5
  113. Details of next MSDU in this (MSDU flow) linked list
  114. */
  115. #define RX_MSDU_LINK_0_UNIFORM_DESCRIPTOR_HEADER_DESCRIPTOR_HEADER_OFFSET 0x00000000
  116. #define RX_MSDU_LINK_0_UNIFORM_DESCRIPTOR_HEADER_DESCRIPTOR_HEADER_LSB 0
  117. #define RX_MSDU_LINK_0_UNIFORM_DESCRIPTOR_HEADER_DESCRIPTOR_HEADER_MASK 0xffffffff
  118. #define RX_MSDU_LINK_1_BUFFER_ADDR_INFO_NEXT_MSDU_LINK_DESC_ADDR_INFO_OFFSET 0x00000004
  119. #define RX_MSDU_LINK_1_BUFFER_ADDR_INFO_NEXT_MSDU_LINK_DESC_ADDR_INFO_LSB 0
  120. #define RX_MSDU_LINK_1_BUFFER_ADDR_INFO_NEXT_MSDU_LINK_DESC_ADDR_INFO_MASK 0xffffffff
  121. #define RX_MSDU_LINK_2_BUFFER_ADDR_INFO_NEXT_MSDU_LINK_DESC_ADDR_INFO_OFFSET 0x00000008
  122. #define RX_MSDU_LINK_2_BUFFER_ADDR_INFO_NEXT_MSDU_LINK_DESC_ADDR_INFO_LSB 0
  123. #define RX_MSDU_LINK_2_BUFFER_ADDR_INFO_NEXT_MSDU_LINK_DESC_ADDR_INFO_MASK 0xffffffff
  124. /* Description RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER
  125. Indicates the Receive queue to which this MPDU
  126. descriptor belongs
  127. Used for tracking, finding bugs and debugging.
  128. <legal all>
  129. */
  130. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_OFFSET 0x0000000c
  131. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_LSB 0
  132. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_MASK 0x0000ffff
  133. /* Description RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT
  134. When set, this RX_MSDU_link descriptor is the first one
  135. in the MSDU link list. Field MSDU_0 points to the very first
  136. MSDU buffer descriptor in the MPDU
  137. <legal all>
  138. */
  139. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_OFFSET 0x0000000c
  140. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_LSB 16
  141. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_MASK 0x00010000
  142. /* Description RX_MSDU_LINK_3_RESERVED_3A
  143. <legal 0>
  144. */
  145. #define RX_MSDU_LINK_3_RESERVED_3A_OFFSET 0x0000000c
  146. #define RX_MSDU_LINK_3_RESERVED_3A_LSB 17
  147. #define RX_MSDU_LINK_3_RESERVED_3A_MASK 0xfffe0000
  148. /* Description RX_MSDU_LINK_4_PN_31_0
  149. 31-0 bits of the 256-bit packet number bitmap.
  150. <legal all>
  151. */
  152. #define RX_MSDU_LINK_4_PN_31_0_OFFSET 0x00000010
  153. #define RX_MSDU_LINK_4_PN_31_0_LSB 0
  154. #define RX_MSDU_LINK_4_PN_31_0_MASK 0xffffffff
  155. /* Description RX_MSDU_LINK_5_PN_63_32
  156. 63-32 bits of the 256-bit packet number bitmap.
  157. <legal all>
  158. */
  159. #define RX_MSDU_LINK_5_PN_63_32_OFFSET 0x00000014
  160. #define RX_MSDU_LINK_5_PN_63_32_LSB 0
  161. #define RX_MSDU_LINK_5_PN_63_32_MASK 0xffffffff
  162. /* Description RX_MSDU_LINK_6_PN_95_64
  163. 95-64 bits of the 256-bit packet number bitmap.
  164. <legal all>
  165. */
  166. #define RX_MSDU_LINK_6_PN_95_64_OFFSET 0x00000018
  167. #define RX_MSDU_LINK_6_PN_95_64_LSB 0
  168. #define RX_MSDU_LINK_6_PN_95_64_MASK 0xffffffff
  169. /* Description RX_MSDU_LINK_7_PN_127_96
  170. 127-96 bits of the 256-bit packet number bitmap.
  171. <legal all>
  172. */
  173. #define RX_MSDU_LINK_7_PN_127_96_OFFSET 0x0000001c
  174. #define RX_MSDU_LINK_7_PN_127_96_LSB 0
  175. #define RX_MSDU_LINK_7_PN_127_96_MASK 0xffffffff
  176. #define RX_MSDU_LINK_8_RX_MSDU_DETAILS_MSDU_0_OFFSET 0x00000020
  177. #define RX_MSDU_LINK_8_RX_MSDU_DETAILS_MSDU_0_LSB 0
  178. #define RX_MSDU_LINK_8_RX_MSDU_DETAILS_MSDU_0_MASK 0xffffffff
  179. #define RX_MSDU_LINK_9_RX_MSDU_DETAILS_MSDU_0_OFFSET 0x00000024
  180. #define RX_MSDU_LINK_9_RX_MSDU_DETAILS_MSDU_0_LSB 0
  181. #define RX_MSDU_LINK_9_RX_MSDU_DETAILS_MSDU_0_MASK 0xffffffff
  182. #define RX_MSDU_LINK_10_RX_MSDU_DETAILS_MSDU_0_OFFSET 0x00000028
  183. #define RX_MSDU_LINK_10_RX_MSDU_DETAILS_MSDU_0_LSB 0
  184. #define RX_MSDU_LINK_10_RX_MSDU_DETAILS_MSDU_0_MASK 0xffffffff
  185. #define RX_MSDU_LINK_11_RX_MSDU_DETAILS_MSDU_0_OFFSET 0x0000002c
  186. #define RX_MSDU_LINK_11_RX_MSDU_DETAILS_MSDU_0_LSB 0
  187. #define RX_MSDU_LINK_11_RX_MSDU_DETAILS_MSDU_0_MASK 0xffffffff
  188. #define RX_MSDU_LINK_12_RX_MSDU_DETAILS_MSDU_1_OFFSET 0x00000030
  189. #define RX_MSDU_LINK_12_RX_MSDU_DETAILS_MSDU_1_LSB 0
  190. #define RX_MSDU_LINK_12_RX_MSDU_DETAILS_MSDU_1_MASK 0xffffffff
  191. #define RX_MSDU_LINK_13_RX_MSDU_DETAILS_MSDU_1_OFFSET 0x00000034
  192. #define RX_MSDU_LINK_13_RX_MSDU_DETAILS_MSDU_1_LSB 0
  193. #define RX_MSDU_LINK_13_RX_MSDU_DETAILS_MSDU_1_MASK 0xffffffff
  194. #define RX_MSDU_LINK_14_RX_MSDU_DETAILS_MSDU_1_OFFSET 0x00000038
  195. #define RX_MSDU_LINK_14_RX_MSDU_DETAILS_MSDU_1_LSB 0
  196. #define RX_MSDU_LINK_14_RX_MSDU_DETAILS_MSDU_1_MASK 0xffffffff
  197. #define RX_MSDU_LINK_15_RX_MSDU_DETAILS_MSDU_1_OFFSET 0x0000003c
  198. #define RX_MSDU_LINK_15_RX_MSDU_DETAILS_MSDU_1_LSB 0
  199. #define RX_MSDU_LINK_15_RX_MSDU_DETAILS_MSDU_1_MASK 0xffffffff
  200. #define RX_MSDU_LINK_16_RX_MSDU_DETAILS_MSDU_2_OFFSET 0x00000040
  201. #define RX_MSDU_LINK_16_RX_MSDU_DETAILS_MSDU_2_LSB 0
  202. #define RX_MSDU_LINK_16_RX_MSDU_DETAILS_MSDU_2_MASK 0xffffffff
  203. #define RX_MSDU_LINK_17_RX_MSDU_DETAILS_MSDU_2_OFFSET 0x00000044
  204. #define RX_MSDU_LINK_17_RX_MSDU_DETAILS_MSDU_2_LSB 0
  205. #define RX_MSDU_LINK_17_RX_MSDU_DETAILS_MSDU_2_MASK 0xffffffff
  206. #define RX_MSDU_LINK_18_RX_MSDU_DETAILS_MSDU_2_OFFSET 0x00000048
  207. #define RX_MSDU_LINK_18_RX_MSDU_DETAILS_MSDU_2_LSB 0
  208. #define RX_MSDU_LINK_18_RX_MSDU_DETAILS_MSDU_2_MASK 0xffffffff
  209. #define RX_MSDU_LINK_19_RX_MSDU_DETAILS_MSDU_2_OFFSET 0x0000004c
  210. #define RX_MSDU_LINK_19_RX_MSDU_DETAILS_MSDU_2_LSB 0
  211. #define RX_MSDU_LINK_19_RX_MSDU_DETAILS_MSDU_2_MASK 0xffffffff
  212. #define RX_MSDU_LINK_20_RX_MSDU_DETAILS_MSDU_3_OFFSET 0x00000050
  213. #define RX_MSDU_LINK_20_RX_MSDU_DETAILS_MSDU_3_LSB 0
  214. #define RX_MSDU_LINK_20_RX_MSDU_DETAILS_MSDU_3_MASK 0xffffffff
  215. #define RX_MSDU_LINK_21_RX_MSDU_DETAILS_MSDU_3_OFFSET 0x00000054
  216. #define RX_MSDU_LINK_21_RX_MSDU_DETAILS_MSDU_3_LSB 0
  217. #define RX_MSDU_LINK_21_RX_MSDU_DETAILS_MSDU_3_MASK 0xffffffff
  218. #define RX_MSDU_LINK_22_RX_MSDU_DETAILS_MSDU_3_OFFSET 0x00000058
  219. #define RX_MSDU_LINK_22_RX_MSDU_DETAILS_MSDU_3_LSB 0
  220. #define RX_MSDU_LINK_22_RX_MSDU_DETAILS_MSDU_3_MASK 0xffffffff
  221. #define RX_MSDU_LINK_23_RX_MSDU_DETAILS_MSDU_3_OFFSET 0x0000005c
  222. #define RX_MSDU_LINK_23_RX_MSDU_DETAILS_MSDU_3_LSB 0
  223. #define RX_MSDU_LINK_23_RX_MSDU_DETAILS_MSDU_3_MASK 0xffffffff
  224. #define RX_MSDU_LINK_24_RX_MSDU_DETAILS_MSDU_4_OFFSET 0x00000060
  225. #define RX_MSDU_LINK_24_RX_MSDU_DETAILS_MSDU_4_LSB 0
  226. #define RX_MSDU_LINK_24_RX_MSDU_DETAILS_MSDU_4_MASK 0xffffffff
  227. #define RX_MSDU_LINK_25_RX_MSDU_DETAILS_MSDU_4_OFFSET 0x00000064
  228. #define RX_MSDU_LINK_25_RX_MSDU_DETAILS_MSDU_4_LSB 0
  229. #define RX_MSDU_LINK_25_RX_MSDU_DETAILS_MSDU_4_MASK 0xffffffff
  230. #define RX_MSDU_LINK_26_RX_MSDU_DETAILS_MSDU_4_OFFSET 0x00000068
  231. #define RX_MSDU_LINK_26_RX_MSDU_DETAILS_MSDU_4_LSB 0
  232. #define RX_MSDU_LINK_26_RX_MSDU_DETAILS_MSDU_4_MASK 0xffffffff
  233. #define RX_MSDU_LINK_27_RX_MSDU_DETAILS_MSDU_4_OFFSET 0x0000006c
  234. #define RX_MSDU_LINK_27_RX_MSDU_DETAILS_MSDU_4_LSB 0
  235. #define RX_MSDU_LINK_27_RX_MSDU_DETAILS_MSDU_4_MASK 0xffffffff
  236. #define RX_MSDU_LINK_28_RX_MSDU_DETAILS_MSDU_5_OFFSET 0x00000070
  237. #define RX_MSDU_LINK_28_RX_MSDU_DETAILS_MSDU_5_LSB 0
  238. #define RX_MSDU_LINK_28_RX_MSDU_DETAILS_MSDU_5_MASK 0xffffffff
  239. #define RX_MSDU_LINK_29_RX_MSDU_DETAILS_MSDU_5_OFFSET 0x00000074
  240. #define RX_MSDU_LINK_29_RX_MSDU_DETAILS_MSDU_5_LSB 0
  241. #define RX_MSDU_LINK_29_RX_MSDU_DETAILS_MSDU_5_MASK 0xffffffff
  242. #define RX_MSDU_LINK_30_RX_MSDU_DETAILS_MSDU_5_OFFSET 0x00000078
  243. #define RX_MSDU_LINK_30_RX_MSDU_DETAILS_MSDU_5_LSB 0
  244. #define RX_MSDU_LINK_30_RX_MSDU_DETAILS_MSDU_5_MASK 0xffffffff
  245. #define RX_MSDU_LINK_31_RX_MSDU_DETAILS_MSDU_5_OFFSET 0x0000007c
  246. #define RX_MSDU_LINK_31_RX_MSDU_DETAILS_MSDU_5_LSB 0
  247. #define RX_MSDU_LINK_31_RX_MSDU_DETAILS_MSDU_5_MASK 0xffffffff
  248. #endif // _RX_MSDU_LINK_H_