expected_response.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716
  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 _EXPECTED_RESPONSE_H_
  16. #define _EXPECTED_RESPONSE_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_EXPECTED_RESPONSE 6
  20. #define NUM_OF_QWORDS_EXPECTED_RESPONSE 3
  21. struct expected_response {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t tx_ad2_31_0 : 32; // [31:0]
  24. uint32_t tx_ad2_47_32 : 16, // [15:0]
  25. expected_response_type : 5, // [20:16]
  26. response_to_response : 3, // [23:21]
  27. su_ba_user_number : 1, // [24:24]
  28. response_info_part2_required : 1, // [25:25]
  29. transmitted_bssid_check_en : 1, // [26:26]
  30. reserved_1 : 5; // [31:27]
  31. uint32_t ndp_sta_partial_aid_2_8_0 : 11, // [10:0]
  32. reserved_2 : 10, // [20:11]
  33. ndp_sta_partial_aid1_8_0 : 11; // [31:21]
  34. uint32_t ast_index : 16, // [15:0]
  35. capture_ack_ba_sounding : 1, // [16:16]
  36. capture_sounding_1str_20mhz : 1, // [17:17]
  37. capture_sounding_1str_40mhz : 1, // [18:18]
  38. capture_sounding_1str_80mhz : 1, // [19:19]
  39. capture_sounding_1str_160mhz : 1, // [20:20]
  40. capture_sounding_1str_240mhz : 1, // [21:21]
  41. capture_sounding_1str_320mhz : 1, // [22:22]
  42. reserved_3a : 9; // [31:23]
  43. uint32_t fcs : 9, // [8:0]
  44. reserved_4a : 1, // [9:9]
  45. crc : 4, // [13:10]
  46. scrambler_seed : 7, // [20:14]
  47. reserved_4b : 11; // [31:21]
  48. uint32_t tlv64_padding : 32; // [31:0]
  49. #else
  50. uint32_t tx_ad2_31_0 : 32; // [31:0]
  51. uint32_t reserved_1 : 5, // [31:27]
  52. transmitted_bssid_check_en : 1, // [26:26]
  53. response_info_part2_required : 1, // [25:25]
  54. su_ba_user_number : 1, // [24:24]
  55. response_to_response : 3, // [23:21]
  56. expected_response_type : 5, // [20:16]
  57. tx_ad2_47_32 : 16; // [15:0]
  58. uint32_t ndp_sta_partial_aid1_8_0 : 11, // [31:21]
  59. reserved_2 : 10, // [20:11]
  60. ndp_sta_partial_aid_2_8_0 : 11; // [10:0]
  61. uint32_t reserved_3a : 9, // [31:23]
  62. capture_sounding_1str_320mhz : 1, // [22:22]
  63. capture_sounding_1str_240mhz : 1, // [21:21]
  64. capture_sounding_1str_160mhz : 1, // [20:20]
  65. capture_sounding_1str_80mhz : 1, // [19:19]
  66. capture_sounding_1str_40mhz : 1, // [18:18]
  67. capture_sounding_1str_20mhz : 1, // [17:17]
  68. capture_ack_ba_sounding : 1, // [16:16]
  69. ast_index : 16; // [15:0]
  70. uint32_t reserved_4b : 11, // [31:21]
  71. scrambler_seed : 7, // [20:14]
  72. crc : 4, // [13:10]
  73. reserved_4a : 1, // [9:9]
  74. fcs : 9; // [8:0]
  75. uint32_t tlv64_padding : 32; // [31:0]
  76. #endif
  77. };
  78. /* Description TX_AD2_31_0
  79. Lower 32 bits of the transmitter address (AD2) of the last
  80. packet which was transmitted, which is used by RXPCU in
  81. Proxy STA mode.
  82. */
  83. #define EXPECTED_RESPONSE_TX_AD2_31_0_OFFSET 0x0000000000000000
  84. #define EXPECTED_RESPONSE_TX_AD2_31_0_LSB 0
  85. #define EXPECTED_RESPONSE_TX_AD2_31_0_MSB 31
  86. #define EXPECTED_RESPONSE_TX_AD2_31_0_MASK 0x00000000ffffffff
  87. /* Description TX_AD2_47_32
  88. Upper 16 bits of the transmitter address (AD2) of the last
  89. packet which was transmitted, which is used by RXPCU in
  90. Proxy STA mode.
  91. */
  92. #define EXPECTED_RESPONSE_TX_AD2_47_32_OFFSET 0x0000000000000000
  93. #define EXPECTED_RESPONSE_TX_AD2_47_32_LSB 32
  94. #define EXPECTED_RESPONSE_TX_AD2_47_32_MSB 47
  95. #define EXPECTED_RESPONSE_TX_AD2_47_32_MASK 0x0000ffff00000000
  96. /* Description EXPECTED_RESPONSE_TYPE
  97. Provides insight for RXPCU of what type of response is expected
  98. in the medium.
  99. Mainly used for debugging purposes.
  100. No matter what RXPCU receives, it shall always report it
  101. to TXPCU.
  102. Only special scenario where RXPCU will have to generate
  103. a RECEIVED_RESPONSE_INFO TLV , even when no actual MPDU
  104. with passing FCS was received is when the response_type
  105. is set to: frameless_phyrx_response_accepted
  106. <enum 0 no_response_expected>After transmission of this
  107. frame, no response in SIFS time is expected
  108. When TXPCU sees this setting, it shall not generated the
  109. EXPECTED_RESPONSE TLV.
  110. RXPCU should never see this setting
  111. <enum 1 ack_expected>An ACK frame is expected as response
  112. RXPCU is just expecting any response. It is TXPCU who checks
  113. that the right response was received.
  114. <enum 2 ba_64_bitmap_expected>BA with 64 bitmap is expected.
  115. PDG DOES NOT use the size info to calculated response duration.
  116. The length of the response will have to be programmed by
  117. SW in the per-BW 'Expected_ppdu_resp_length' field.
  118. For TXPCU only the fact that it is a BA is important. Actual
  119. received BA size is not important
  120. RXPCU is just expecting any response. It is TXPCU who checks
  121. that the right response was received.
  122. <enum 3 ba_256_expected>BA with 256 bitmap is expected.
  123. PDG DOES NOT use the size info to calculated response duration.
  124. The length of the response will have to be programmed by
  125. SW in the per-BW 'Expected_ppdu_resp_length' field.
  126. For TXPCU only the fact that it is a BA is important. Actual
  127. received BA size is not important
  128. RXPCU is just expecting any response. It is TXPCU who checks
  129. that the right response was received.
  130. <enum 4 actionnoack_expected>SW sets this after sending
  131. NDP or BR-Poll.
  132. As PDG has no idea on how long the reception is going to
  133. be, the reception time of the response will have to be
  134. programmed by SW in the 'Extend_duration_value_bw...' field
  135. RXPCU is just expecting any response. It is TXPCU who checks
  136. that the right response was received.
  137. <enum 5 ack_ba_expected>PDG uses the size info and assumes
  138. single BA format with ACK and 64 bitmap embedded.
  139. If SW expects more bitmaps in case of multi-TID, is shall
  140. program the 'Extend_duration_value_bw...' field for additional
  141. duration time.
  142. For TXPCU only the fact that an ACK and/or BA is received
  143. is important. Reception of only ACK or BA is also considered
  144. a success.
  145. SW also typically sets this when sending VHT single MPDU.
  146. Some chip vendors might send BA rather than ACK in response
  147. to VHT single MPDU but still we want to accept BA as well.
  148. RXPCU is just expecting any response. It is TXPCU who checks
  149. that the right response was received.
  150. <enum 6 cts_expected>SW sets this after queuing RTS frame
  151. as standalone packet and sending it.
  152. RXPCU is just expecting any response. It is TXPCU who checks
  153. that the right response was received.
  154. <enum 7 ack_data_expected>SW sets this after sending PS-Poll.
  155. For TXPCU either ACK and/or data reception is considered
  156. success.
  157. PDG basis it's response duration calculation on an ACK.
  158. For the data portion, SW shall program the 'Extend_duration_value_bw...'
  159. field
  160. <enum 8 ndp_ack_expected>Reserved for 11ah usage.
  161. <enum 9 ndp_modified_ack>Reserved for 11ah usage
  162. <enum 10 ndp_ba_expected>Reserved for 11ah usage.
  163. <enum 11 ndp_cts_expected>Reserved for 11ah usage
  164. <enum 12 ndp_ack_or_ndp_modified_ack_expected>Reserved for
  165. 11ah usage
  166. <enum 13 ul_mu_ba_expected>NOT SUPPORTED IN NAPIER AX AND
  167. HASTINGS
  168. TXPCU expects UL MU OFDMA or UL MU MIMO reception.
  169. As PDG does not know how RUs are assigned for the uplink
  170. portion, PDG can not calculate the uplink duration. Therefor
  171. SW shall program the 'Extend_duration_value_bw...' field
  172. RXPCU will report any frame received, irrespective of it
  173. having been UL MU or SU It is TXPCUs responsibility to
  174. distinguish between the UL MU or SU
  175. TXPCU can check in TLV RECEIVED_RESPONSE_INFO MU_Response_BA_bitmap
  176. if indeed BA was received
  177. <enum 14 ul_mu_ba_and_data_expected>NOT SUPPORTED IN NAPIER
  178. AX AND HASTINGS
  179. TXPCU expects UL MU OFDMA or UL MU MIMO reception.
  180. As PDG does not know how RUs are assigned for the uplink
  181. portion, PDG can not calculate the uplink duration. Therefor
  182. SW shall program the 'Extend_duration_value_bw...' field
  183. RXPCU will report any frame received, irrespective of it
  184. having been UL MU or SU It is TXPCUs responsibility to
  185. distinguish between the UL MU or SU
  186. TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_data_bitmap
  187. and MU_Response_BA_bitmap if indeed BA and data was received
  188. <enum 15 ul_mu_cbf_expected>NOT SUPPORTED IN NAPIER AX AND
  189. HASTINGS
  190. When selected, CBF frames are expected to be received in
  191. MU reception (uplink OFDMA or uplink MIMO)
  192. RXPCU is just expecting any response. It is TXPCU who checks
  193. that the right response was received
  194. TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_cbf_bitmap
  195. if indeed CBF frames were received.
  196. <enum 16 ul_mu_frames_expected>When selected, MPDU frames
  197. are expected in the MU reception (uplink OFDMA or uplink
  198. MIMO)
  199. RXPCU is just expecting any response. It is TXPCU who checks
  200. that the right response was received
  201. TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_bitmap
  202. if indeed frames were received.
  203. <enum 17 any_response_to_this_device>Any response expected
  204. to be send to this device in SIFS time is acceptable.
  205. RXPCU is just expecting any response. It is TXPCU who checks
  206. that the right response was received
  207. For TXPCU, UL MU or SU is both acceptable.
  208. Can be used for complex OFDMA scenarios. PDG can not calculate
  209. the uplink duration. Therefor SW shall program the 'Extend_duration_value_bw...'
  210. field
  211. <enum 18 any_response_accepted>Any frame in the medium to
  212. this or any other device, is acceptable as response.
  213. RXPCU is just expecting any response. It is TXPCU who checks
  214. that the right response was received
  215. For TXPCU, UL MU or SU is both acceptable.
  216. Can be used for complex OFDMA scenarios. PDG can not calculate
  217. the uplink duration. Therefor SW shall program the 'Extend_duration_value_bw...'
  218. field
  219. <enum 19 frameless_phyrx_response_accepted>Any MU frameless
  220. reception generated by the PHY is acceptable.
  221. PHY indicates this type of reception explicitly in TLV PHYRX_RSSI_LEGACY,
  222. field Reception_type == reception_is_frameless
  223. RXPCU will report any frame received, irrespective of it
  224. having been UL MU or SU.
  225. This can be used for complex MU-MIMO or OFDMA scenarios,
  226. like receiving MU-CTS.
  227. PDG can not calculate the uplink duration. Therefor SW shall
  228. program the 'Extend_duration_value_bw...' field
  229. <enum 20 ranging_ndp_and_lmr_expected>SW sets this after
  230. sending ranging NDPA followed by NDP as an ISTA and NDP
  231. and LMR (Action No Ack) are expected as back-to-back reception
  232. in SIFS.
  233. As PDG has no idea on how long the reception is going to
  234. be, the reception time of the response will have to be
  235. programmed by SW in the 'Extend_duration_value_bw...' field
  236. RXPCU is just expecting any response. It is TXPCU who checks
  237. that the right response was received.
  238. <enum 21 ba_512_expected>BA with 512 bitmap is expected.
  239. PDG DOES NOT use the size info to calculated response duration.
  240. The length of the response will have to be programmed by
  241. SW in the per-BW 'Expected_ppdu_resp_length' field.
  242. For TXPCU only the fact that it is a BA is important. Actual
  243. received BA size is not important
  244. RXPCU is just expecting any response. It is TXPCU who checks
  245. that the right response was received.
  246. <enum 22 ba_1024_expected>BA with 1024 bitmap is expected.
  247. PDG DOES NOT use the size info to calculated response duration.
  248. The length of the response will have to be programmed by
  249. SW in the per-BW 'Expected_ppdu_resp_length' field.
  250. For TXPCU only the fact that it is a BA is important. Actual
  251. received BA size is not important
  252. RXPCU is just expecting any response. It is TXPCU who checks
  253. that the right response was received.
  254. <enum 23 ul_mu_ranging_cts2s_expected>When selected, CTS2S
  255. frames are expected to be received in MU reception (uplink
  256. OFDMA)
  257. RXPCU shall check each response for CTS2S and report to
  258. TXPCU.
  259. TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields
  260. 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed CTS2S
  261. frames were received.
  262. <enum 24 ul_mu_ranging_ndp_expected>When selected, UL NDP
  263. frames are expected to be received in MU reception (uplink
  264. spatial multiplexing)
  265. RXPCU shall check each response for NDP and report to TXPCU.
  266. TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields
  267. 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed NDP
  268. frames were received.
  269. <enum 25 ul_mu_ranging_lmr_expected>When selected, LMR frames
  270. are expected to be received in MU reception (uplink OFDMA
  271. or uplink MIMO)
  272. RXPCU shall check each response for LMR and report to TXPCU.
  273. TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields
  274. 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed LMR
  275. frames were received.
  276. */
  277. #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_OFFSET 0x0000000000000000
  278. #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_LSB 48
  279. #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_MSB 52
  280. #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_MASK 0x001f000000000000
  281. /* Description RESPONSE_TO_RESPONSE
  282. Field indicates if after receiving the PPDU response (indicated
  283. in the field above), TXPCU is expected to generate a reponse
  284. to the response
  285. In case a response to response is expected, RXPCU shall
  286. first acknowledge the proper reception of the received frames,
  287. so that TXPCU can first wrapup that portion of the FES.
  288. <enum 0 None> No response after response allowed.
  289. <enum 1 SU_BA> The response after response that TXPCU is
  290. allowed to generate is a single BA. Even if RXPCU is indicating
  291. that multiple users are received, TXPCU shall only send
  292. a BA for 1 STA. Response_to_response rates can be found
  293. in fields 'response_to_response_rate_info_bw...'
  294. <enum 2 MU_BA> The response after response that TXPCU is
  295. allowed to generate is only Multi Destination Multi User
  296. BA. Response_to_response rates can be found in fields 'response_to_response_rate_info_bw...'
  297. <enum 3 RESPONSE_TO_RESPONSE_CMD> A response to response
  298. is expected to be generated. In other words, RXPCU will
  299. likely indicate to TXPCU at the end of upcoming reception
  300. that a response is needed. TXPCU is however to ignore this
  301. indication from RXPCU, and assume for a moment that no
  302. response to response is needed, as all the details on how
  303. to handle this is provided in the next scheduling command,
  304. which is marked as a 'response_to_response' type.
  305. <legal 0-3>
  306. */
  307. #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_OFFSET 0x0000000000000000
  308. #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_LSB 53
  309. #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_MSB 55
  310. #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_MASK 0x00e0000000000000
  311. /* Description SU_BA_USER_NUMBER
  312. Field only valid when Response_to_response is SU_BA
  313. Indicates the user number of which the BA will be send after
  314. receiving the uplink OFDMA.
  315. */
  316. #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_OFFSET 0x0000000000000000
  317. #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_LSB 56
  318. #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_MSB 56
  319. #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_MASK 0x0100000000000000
  320. /* Description RESPONSE_INFO_PART2_REQUIRED
  321. Field only valid when Response_type is NOT set to No_response_expected
  322. When set to 1, RXPCU shall generate the RECEIVED_RESPONSE_INFO_PART2
  323. TLV after having received the response frame. TXPCU shall
  324. wait for this TLV before sending the TX_FES_STATUS_END
  325. TLV.
  326. When NOT set, RXPCU shall NOT generate the above mentioned
  327. TLV. TXPCU shall not wait for this TLV and after having
  328. received RECEIVED_RESPONSE_INFO TLV, it can immediately
  329. generate the TX_FES_STATUS_END TLV.
  330. <legal all>
  331. */
  332. #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_OFFSET 0x0000000000000000
  333. #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_LSB 57
  334. #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_MSB 57
  335. #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_MASK 0x0200000000000000
  336. /* Description TRANSMITTED_BSSID_CHECK_EN
  337. When set to 1, RXPCU shall assume group addressed frame
  338. with Tx_AD2 equal to TBSSID was sent. RxPCU should properly
  339. handle receive frame(s) from STA(s) which A1 is TBSSID
  340. or any VAPs.When NOT set, RXPCU shall compare received frame's
  341. A1 with Tx_AD2 only.
  342. <legal all>
  343. */
  344. #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_OFFSET 0x0000000000000000
  345. #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_LSB 58
  346. #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_MSB 58
  347. #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_MASK 0x0400000000000000
  348. /* Description RESERVED_1
  349. <legal 0>
  350. */
  351. #define EXPECTED_RESPONSE_RESERVED_1_OFFSET 0x0000000000000000
  352. #define EXPECTED_RESPONSE_RESERVED_1_LSB 59
  353. #define EXPECTED_RESPONSE_RESERVED_1_MSB 63
  354. #define EXPECTED_RESPONSE_RESERVED_1_MASK 0xf800000000000000
  355. /* Description NDP_STA_PARTIAL_AID_2_8_0
  356. This field is applicable only in 11ah mode of operation.
  357. This field carries the information needed for RxPCU to qualify
  358. valid NDP-CTS
  359. When an RTS is being transmitted, this field provides the
  360. partial AID of STA/BSSID of the transmitter,so the received
  361. RA/BSSID of the NDP CTS response frame can be compared
  362. to validate it. This value is provided by SW for valiadating
  363. the NDP CTS.
  364. This filed also carries information for TA of the NDP Modified
  365. ACK when an NDP PS-Poll is transmitted.
  366. */
  367. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_OFFSET 0x0000000000000008
  368. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_LSB 0
  369. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_MSB 10
  370. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_MASK 0x00000000000007ff
  371. /* Description RESERVED_2
  372. Reserved: Generator should set to 0, consumer shall ignore
  373. <legal 0>
  374. */
  375. #define EXPECTED_RESPONSE_RESERVED_2_OFFSET 0x0000000000000008
  376. #define EXPECTED_RESPONSE_RESERVED_2_LSB 11
  377. #define EXPECTED_RESPONSE_RESERVED_2_MSB 20
  378. #define EXPECTED_RESPONSE_RESERVED_2_MASK 0x00000000001ff800
  379. /* Description NDP_STA_PARTIAL_AID1_8_0
  380. This field is applicable only in 11ah mode of operation.
  381. This field carries the information needed for RxPCU to qualify
  382. valid NDP Modified ACK
  383. TxPCU provides the partial AID (RA) of the NDP PS-Poll frame.
  384. */
  385. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_OFFSET 0x0000000000000008
  386. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_LSB 21
  387. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_MSB 31
  388. #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_MASK 0x00000000ffe00000
  389. /* Description AST_INDEX
  390. The AST index of the receive Ack/BA. This information is
  391. provided from the TXPCU to the RXPCU for receive Ack/BA.
  392. */
  393. #define EXPECTED_RESPONSE_AST_INDEX_OFFSET 0x0000000000000008
  394. #define EXPECTED_RESPONSE_AST_INDEX_LSB 32
  395. #define EXPECTED_RESPONSE_AST_INDEX_MSB 47
  396. #define EXPECTED_RESPONSE_AST_INDEX_MASK 0x0000ffff00000000
  397. /* Description CAPTURE_ACK_BA_SOUNDING
  398. If set enables capture of 1str and 2str sounding on Ack
  399. or BA as long as the corresponding capture_sounding_1str_##mhz
  400. bits is set.
  401. If clear the capture of sounding on Ack or BA is disabled
  402. even if the corresponding capture_sounding_1str_##mhz is
  403. set.
  404. */
  405. #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_OFFSET 0x0000000000000008
  406. #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_LSB 48
  407. #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_MSB 48
  408. #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_MASK 0x0001000000000000
  409. /* Description CAPTURE_SOUNDING_1STR_20MHZ
  410. Capture sounding for 1 stream 20 MHz receive packets
  411. */
  412. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_OFFSET 0x0000000000000008
  413. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_LSB 49
  414. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_MSB 49
  415. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_MASK 0x0002000000000000
  416. /* Description CAPTURE_SOUNDING_1STR_40MHZ
  417. Capture sounding for 1 stream 40 MHz receive packets
  418. */
  419. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_OFFSET 0x0000000000000008
  420. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_LSB 50
  421. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_MSB 50
  422. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_MASK 0x0004000000000000
  423. /* Description CAPTURE_SOUNDING_1STR_80MHZ
  424. Capture sounding for 1 stream 80 MHz receive packets
  425. */
  426. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_OFFSET 0x0000000000000008
  427. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_LSB 51
  428. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_MSB 51
  429. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_MASK 0x0008000000000000
  430. /* Description CAPTURE_SOUNDING_1STR_160MHZ
  431. Capture sounding for 1 stream 160 MHz receive packets
  432. */
  433. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_OFFSET 0x0000000000000008
  434. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_LSB 52
  435. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_MSB 52
  436. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_MASK 0x0010000000000000
  437. /* Description CAPTURE_SOUNDING_1STR_240MHZ
  438. Capture sounding for 1 stream 240 MHz receive packets
  439. */
  440. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_OFFSET 0x0000000000000008
  441. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_LSB 53
  442. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_MSB 53
  443. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_MASK 0x0020000000000000
  444. /* Description CAPTURE_SOUNDING_1STR_320MHZ
  445. Capture sounding for 1 stream 320 MHz receive packets
  446. */
  447. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_OFFSET 0x0000000000000008
  448. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_LSB 54
  449. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_MSB 54
  450. #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_MASK 0x0040000000000000
  451. /* Description RESERVED_3A
  452. Reserved: Generator should set to 0, consumer shall ignore
  453. <legal 0>
  454. */
  455. #define EXPECTED_RESPONSE_RESERVED_3A_OFFSET 0x0000000000000008
  456. #define EXPECTED_RESPONSE_RESERVED_3A_LSB 55
  457. #define EXPECTED_RESPONSE_RESERVED_3A_MSB 63
  458. #define EXPECTED_RESPONSE_RESERVED_3A_MASK 0xff80000000000000
  459. /* Description FCS
  460. Tx Frame's FCS[31:23]
  461. TODO: describe what this is used for ...
  462. For aggregates and NDP frames, this field is reserved and
  463. TxPCU should populate this to Zero.
  464. */
  465. #define EXPECTED_RESPONSE_FCS_OFFSET 0x0000000000000010
  466. #define EXPECTED_RESPONSE_FCS_LSB 0
  467. #define EXPECTED_RESPONSE_FCS_MSB 8
  468. #define EXPECTED_RESPONSE_FCS_MASK 0x00000000000001ff
  469. /* Description RESERVED_4A
  470. Reserved: Generator should set to 0, consumer shall ignore
  471. <legal 0>
  472. */
  473. #define EXPECTED_RESPONSE_RESERVED_4A_OFFSET 0x0000000000000010
  474. #define EXPECTED_RESPONSE_RESERVED_4A_LSB 9
  475. #define EXPECTED_RESPONSE_RESERVED_4A_MSB 9
  476. #define EXPECTED_RESPONSE_RESERVED_4A_MASK 0x0000000000000200
  477. /* Description CRC
  478. TODO: describe what this is used for ...
  479. Tx SIG's CRC[3:0]
  480. */
  481. #define EXPECTED_RESPONSE_CRC_OFFSET 0x0000000000000010
  482. #define EXPECTED_RESPONSE_CRC_LSB 10
  483. #define EXPECTED_RESPONSE_CRC_MSB 13
  484. #define EXPECTED_RESPONSE_CRC_MASK 0x0000000000003c00
  485. /* Description SCRAMBLER_SEED
  486. TODO: describe what this is used for ...
  487. Tx Frames SERVICE[6:0]
  488. */
  489. #define EXPECTED_RESPONSE_SCRAMBLER_SEED_OFFSET 0x0000000000000010
  490. #define EXPECTED_RESPONSE_SCRAMBLER_SEED_LSB 14
  491. #define EXPECTED_RESPONSE_SCRAMBLER_SEED_MSB 20
  492. #define EXPECTED_RESPONSE_SCRAMBLER_SEED_MASK 0x00000000001fc000
  493. /* Description RESERVED_4B
  494. Reserved: Generator should set to 0, consumer shall ignore
  495. <legal 0>
  496. */
  497. #define EXPECTED_RESPONSE_RESERVED_4B_OFFSET 0x0000000000000010
  498. #define EXPECTED_RESPONSE_RESERVED_4B_LSB 21
  499. #define EXPECTED_RESPONSE_RESERVED_4B_MSB 31
  500. #define EXPECTED_RESPONSE_RESERVED_4B_MASK 0x00000000ffe00000
  501. /* Description TLV64_PADDING
  502. Automatic DWORD padding inserted while converting TLV32
  503. to TLV64 for 64 bit ARCH
  504. <legal 0>
  505. */
  506. #define EXPECTED_RESPONSE_TLV64_PADDING_OFFSET 0x0000000000000010
  507. #define EXPECTED_RESPONSE_TLV64_PADDING_LSB 32
  508. #define EXPECTED_RESPONSE_TLV64_PADDING_MSB 63
  509. #define EXPECTED_RESPONSE_TLV64_PADDING_MASK 0xffffffff00000000
  510. #endif // EXPECTED_RESPONSE