1*5113495bSYour Name 2*5113495bSYour Name /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for any 5*5113495bSYour Name * purpose with or without fee is hereby granted, provided that the above 6*5113495bSYour Name * copyright notice and this permission notice appear in all copies. 7*5113495bSYour Name * 8*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9*5113495bSYour Name * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10*5113495bSYour Name * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11*5113495bSYour Name * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12*5113495bSYour Name * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13*5113495bSYour Name * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14*5113495bSYour Name * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15*5113495bSYour Name */ 16*5113495bSYour Name 17*5113495bSYour Name 18*5113495bSYour Name 19*5113495bSYour Name 20*5113495bSYour Name 21*5113495bSYour Name 22*5113495bSYour Name 23*5113495bSYour Name 24*5113495bSYour Name 25*5113495bSYour Name 26*5113495bSYour Name #ifndef _EXPECTED_RESPONSE_H_ 27*5113495bSYour Name #define _EXPECTED_RESPONSE_H_ 28*5113495bSYour Name #if !defined(__ASSEMBLER__) 29*5113495bSYour Name #endif 30*5113495bSYour Name 31*5113495bSYour Name #define NUM_OF_DWORDS_EXPECTED_RESPONSE 6 32*5113495bSYour Name 33*5113495bSYour Name #define NUM_OF_QWORDS_EXPECTED_RESPONSE 3 34*5113495bSYour Name 35*5113495bSYour Name 36*5113495bSYour Name struct expected_response { 37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 38*5113495bSYour Name uint32_t tx_ad2_31_0 : 32; // [31:0] 39*5113495bSYour Name uint32_t tx_ad2_47_32 : 16, // [15:0] 40*5113495bSYour Name expected_response_type : 5, // [20:16] 41*5113495bSYour Name response_to_response : 3, // [23:21] 42*5113495bSYour Name su_ba_user_number : 1, // [24:24] 43*5113495bSYour Name response_info_part2_required : 1, // [25:25] 44*5113495bSYour Name transmitted_bssid_check_en : 1, // [26:26] 45*5113495bSYour Name reserved_1 : 5; // [31:27] 46*5113495bSYour Name uint32_t ndp_sta_partial_aid_2_8_0 : 11, // [10:0] 47*5113495bSYour Name reserved_2 : 10, // [20:11] 48*5113495bSYour Name ndp_sta_partial_aid1_8_0 : 11; // [31:21] 49*5113495bSYour Name uint32_t ast_index : 16, // [15:0] 50*5113495bSYour Name capture_ack_ba_sounding : 1, // [16:16] 51*5113495bSYour Name capture_sounding_1str_20mhz : 1, // [17:17] 52*5113495bSYour Name capture_sounding_1str_40mhz : 1, // [18:18] 53*5113495bSYour Name capture_sounding_1str_80mhz : 1, // [19:19] 54*5113495bSYour Name capture_sounding_1str_160mhz : 1, // [20:20] 55*5113495bSYour Name capture_sounding_1str_240mhz : 1, // [21:21] 56*5113495bSYour Name capture_sounding_1str_320mhz : 1, // [22:22] 57*5113495bSYour Name reserved_3a : 9; // [31:23] 58*5113495bSYour Name uint32_t fcs : 9, // [8:0] 59*5113495bSYour Name reserved_4a : 1, // [9:9] 60*5113495bSYour Name crc : 4, // [13:10] 61*5113495bSYour Name scrambler_seed : 7, // [20:14] 62*5113495bSYour Name reserved_4b : 11; // [31:21] 63*5113495bSYour Name uint32_t tlv64_padding : 32; // [31:0] 64*5113495bSYour Name #else 65*5113495bSYour Name uint32_t tx_ad2_31_0 : 32; // [31:0] 66*5113495bSYour Name uint32_t reserved_1 : 5, // [31:27] 67*5113495bSYour Name transmitted_bssid_check_en : 1, // [26:26] 68*5113495bSYour Name response_info_part2_required : 1, // [25:25] 69*5113495bSYour Name su_ba_user_number : 1, // [24:24] 70*5113495bSYour Name response_to_response : 3, // [23:21] 71*5113495bSYour Name expected_response_type : 5, // [20:16] 72*5113495bSYour Name tx_ad2_47_32 : 16; // [15:0] 73*5113495bSYour Name uint32_t ndp_sta_partial_aid1_8_0 : 11, // [31:21] 74*5113495bSYour Name reserved_2 : 10, // [20:11] 75*5113495bSYour Name ndp_sta_partial_aid_2_8_0 : 11; // [10:0] 76*5113495bSYour Name uint32_t reserved_3a : 9, // [31:23] 77*5113495bSYour Name capture_sounding_1str_320mhz : 1, // [22:22] 78*5113495bSYour Name capture_sounding_1str_240mhz : 1, // [21:21] 79*5113495bSYour Name capture_sounding_1str_160mhz : 1, // [20:20] 80*5113495bSYour Name capture_sounding_1str_80mhz : 1, // [19:19] 81*5113495bSYour Name capture_sounding_1str_40mhz : 1, // [18:18] 82*5113495bSYour Name capture_sounding_1str_20mhz : 1, // [17:17] 83*5113495bSYour Name capture_ack_ba_sounding : 1, // [16:16] 84*5113495bSYour Name ast_index : 16; // [15:0] 85*5113495bSYour Name uint32_t reserved_4b : 11, // [31:21] 86*5113495bSYour Name scrambler_seed : 7, // [20:14] 87*5113495bSYour Name crc : 4, // [13:10] 88*5113495bSYour Name reserved_4a : 1, // [9:9] 89*5113495bSYour Name fcs : 9; // [8:0] 90*5113495bSYour Name uint32_t tlv64_padding : 32; // [31:0] 91*5113495bSYour Name #endif 92*5113495bSYour Name }; 93*5113495bSYour Name 94*5113495bSYour Name 95*5113495bSYour Name /* Description TX_AD2_31_0 96*5113495bSYour Name 97*5113495bSYour Name Lower 32 bits of the transmitter address (AD2) of the last 98*5113495bSYour Name packet which was transmitted, which is used by RXPCU in 99*5113495bSYour Name Proxy STA mode. 100*5113495bSYour Name */ 101*5113495bSYour Name 102*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_31_0_OFFSET 0x0000000000000000 103*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_31_0_LSB 0 104*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_31_0_MSB 31 105*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_31_0_MASK 0x00000000ffffffff 106*5113495bSYour Name 107*5113495bSYour Name 108*5113495bSYour Name /* Description TX_AD2_47_32 109*5113495bSYour Name 110*5113495bSYour Name Upper 16 bits of the transmitter address (AD2) of the last 111*5113495bSYour Name packet which was transmitted, which is used by RXPCU in 112*5113495bSYour Name Proxy STA mode. 113*5113495bSYour Name */ 114*5113495bSYour Name 115*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_47_32_OFFSET 0x0000000000000000 116*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_47_32_LSB 32 117*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_47_32_MSB 47 118*5113495bSYour Name #define EXPECTED_RESPONSE_TX_AD2_47_32_MASK 0x0000ffff00000000 119*5113495bSYour Name 120*5113495bSYour Name 121*5113495bSYour Name /* Description EXPECTED_RESPONSE_TYPE 122*5113495bSYour Name 123*5113495bSYour Name Provides insight for RXPCU of what type of response is expected 124*5113495bSYour Name in the medium. 125*5113495bSYour Name 126*5113495bSYour Name Mainly used for debugging purposes. 127*5113495bSYour Name 128*5113495bSYour Name No matter what RXPCU receives, it shall always report it 129*5113495bSYour Name to TXPCU. 130*5113495bSYour Name 131*5113495bSYour Name Only special scenario where RXPCU will have to generate 132*5113495bSYour Name a RECEIVED_RESPONSE_INFO TLV , even when no actual MPDU 133*5113495bSYour Name with passing FCS was received is when the response_type 134*5113495bSYour Name is set to: frameless_phyrx_response_accepted 135*5113495bSYour Name 136*5113495bSYour Name <enum 0 no_response_expected>After transmission of this 137*5113495bSYour Name frame, no response in SIFS time is expected 138*5113495bSYour Name 139*5113495bSYour Name When TXPCU sees this setting, it shall not generated the 140*5113495bSYour Name EXPECTED_RESPONSE TLV. 141*5113495bSYour Name 142*5113495bSYour Name RXPCU should never see this setting 143*5113495bSYour Name <enum 1 ack_expected>An ACK frame is expected as response 144*5113495bSYour Name 145*5113495bSYour Name 146*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 147*5113495bSYour Name that the right response was received. 148*5113495bSYour Name <enum 2 ba_64_bitmap_expected>BA with 64 bitmap is expected. 149*5113495bSYour Name 150*5113495bSYour Name 151*5113495bSYour Name PDG DOES NOT use the size info to calculated response duration. 152*5113495bSYour Name The length of the response will have to be programmed by 153*5113495bSYour Name SW in the per-BW 'Expected_ppdu_resp_length' field. 154*5113495bSYour Name 155*5113495bSYour Name For TXPCU only the fact that it is a BA is important. Actual 156*5113495bSYour Name received BA size is not important 157*5113495bSYour Name 158*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 159*5113495bSYour Name that the right response was received. 160*5113495bSYour Name <enum 3 ba_256_expected>BA with 256 bitmap is expected. 161*5113495bSYour Name 162*5113495bSYour Name PDG DOES NOT use the size info to calculated response duration. 163*5113495bSYour Name The length of the response will have to be programmed by 164*5113495bSYour Name SW in the per-BW 'Expected_ppdu_resp_length' field. 165*5113495bSYour Name 166*5113495bSYour Name For TXPCU only the fact that it is a BA is important. Actual 167*5113495bSYour Name received BA size is not important 168*5113495bSYour Name 169*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 170*5113495bSYour Name that the right response was received. 171*5113495bSYour Name <enum 4 actionnoack_expected>SW sets this after sending 172*5113495bSYour Name NDP or BR-Poll. 173*5113495bSYour Name 174*5113495bSYour Name As PDG has no idea on how long the reception is going to 175*5113495bSYour Name be, the reception time of the response will have to be 176*5113495bSYour Name programmed by SW in the 'Extend_duration_value_bw...' field 177*5113495bSYour Name 178*5113495bSYour Name 179*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 180*5113495bSYour Name that the right response was received. 181*5113495bSYour Name <enum 5 ack_ba_expected>PDG uses the size info and assumes 182*5113495bSYour Name single BA format with ACK and 64 bitmap embedded. 183*5113495bSYour Name If SW expects more bitmaps in case of multi-TID, is shall 184*5113495bSYour Name program the 'Extend_duration_value_bw...' field for additional 185*5113495bSYour Name duration time. 186*5113495bSYour Name For TXPCU only the fact that an ACK and/or BA is received 187*5113495bSYour Name is important. Reception of only ACK or BA is also considered 188*5113495bSYour Name a success. 189*5113495bSYour Name SW also typically sets this when sending VHT single MPDU. 190*5113495bSYour Name Some chip vendors might send BA rather than ACK in response 191*5113495bSYour Name to VHT single MPDU but still we want to accept BA as well. 192*5113495bSYour Name 193*5113495bSYour Name 194*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 195*5113495bSYour Name that the right response was received. 196*5113495bSYour Name <enum 6 cts_expected>SW sets this after queuing RTS frame 197*5113495bSYour Name as standalone packet and sending it. 198*5113495bSYour Name 199*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 200*5113495bSYour Name that the right response was received. 201*5113495bSYour Name <enum 7 ack_data_expected>SW sets this after sending PS-Poll. 202*5113495bSYour Name 203*5113495bSYour Name 204*5113495bSYour Name For TXPCU either ACK and/or data reception is considered 205*5113495bSYour Name success. 206*5113495bSYour Name PDG basis it's response duration calculation on an ACK. 207*5113495bSYour Name For the data portion, SW shall program the 'Extend_duration_value_bw...' 208*5113495bSYour Name field 209*5113495bSYour Name <enum 8 ndp_ack_expected>Reserved for 11ah usage. 210*5113495bSYour Name <enum 9 ndp_modified_ack>Reserved for 11ah usage 211*5113495bSYour Name <enum 10 ndp_ba_expected>Reserved for 11ah usage. 212*5113495bSYour Name <enum 11 ndp_cts_expected>Reserved for 11ah usage 213*5113495bSYour Name <enum 12 ndp_ack_or_ndp_modified_ack_expected>Reserved for 214*5113495bSYour Name 11ah usage 215*5113495bSYour Name <enum 13 ul_mu_ba_expected>NOT SUPPORTED IN NAPIER AX AND 216*5113495bSYour Name HASTINGS 217*5113495bSYour Name 218*5113495bSYour Name TXPCU expects UL MU OFDMA or UL MU MIMO reception. 219*5113495bSYour Name As PDG does not know how RUs are assigned for the uplink 220*5113495bSYour Name portion, PDG can not calculate the uplink duration. Therefor 221*5113495bSYour Name SW shall program the 'Extend_duration_value_bw...' field 222*5113495bSYour Name 223*5113495bSYour Name 224*5113495bSYour Name RXPCU will report any frame received, irrespective of it 225*5113495bSYour Name having been UL MU or SU It is TXPCUs responsibility to 226*5113495bSYour Name distinguish between the UL MU or SU 227*5113495bSYour Name 228*5113495bSYour Name TXPCU can check in TLV RECEIVED_RESPONSE_INFO MU_Response_BA_bitmap 229*5113495bSYour Name if indeed BA was received 230*5113495bSYour Name <enum 14 ul_mu_ba_and_data_expected>NOT SUPPORTED IN NAPIER 231*5113495bSYour Name AX AND HASTINGS 232*5113495bSYour Name 233*5113495bSYour Name TXPCU expects UL MU OFDMA or UL MU MIMO reception. 234*5113495bSYour Name As PDG does not know how RUs are assigned for the uplink 235*5113495bSYour Name portion, PDG can not calculate the uplink duration. Therefor 236*5113495bSYour Name SW shall program the 'Extend_duration_value_bw...' field 237*5113495bSYour Name 238*5113495bSYour Name 239*5113495bSYour Name RXPCU will report any frame received, irrespective of it 240*5113495bSYour Name having been UL MU or SU It is TXPCUs responsibility to 241*5113495bSYour Name distinguish between the UL MU or SU 242*5113495bSYour Name 243*5113495bSYour Name TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_data_bitmap 244*5113495bSYour Name and MU_Response_BA_bitmap if indeed BA and data was received 245*5113495bSYour Name 246*5113495bSYour Name <enum 15 ul_mu_cbf_expected>NOT SUPPORTED IN NAPIER AX AND 247*5113495bSYour Name HASTINGS 248*5113495bSYour Name 249*5113495bSYour Name When selected, CBF frames are expected to be received in 250*5113495bSYour Name MU reception (uplink OFDMA or uplink MIMO) 251*5113495bSYour Name 252*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 253*5113495bSYour Name that the right response was received 254*5113495bSYour Name TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_cbf_bitmap 255*5113495bSYour Name if indeed CBF frames were received. 256*5113495bSYour Name <enum 16 ul_mu_frames_expected>When selected, MPDU frames 257*5113495bSYour Name are expected in the MU reception (uplink OFDMA or uplink 258*5113495bSYour Name MIMO) 259*5113495bSYour Name 260*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 261*5113495bSYour Name that the right response was received 262*5113495bSYour Name 263*5113495bSYour Name TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_bitmap 264*5113495bSYour Name if indeed frames were received. 265*5113495bSYour Name <enum 17 any_response_to_this_device>Any response expected 266*5113495bSYour Name to be send to this device in SIFS time is acceptable. 267*5113495bSYour Name 268*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 269*5113495bSYour Name that the right response was received 270*5113495bSYour Name 271*5113495bSYour Name For TXPCU, UL MU or SU is both acceptable. 272*5113495bSYour Name 273*5113495bSYour Name Can be used for complex OFDMA scenarios. PDG can not calculate 274*5113495bSYour Name the uplink duration. Therefor SW shall program the 'Extend_duration_value_bw...' 275*5113495bSYour Name field 276*5113495bSYour Name <enum 18 any_response_accepted>Any frame in the medium to 277*5113495bSYour Name this or any other device, is acceptable as response. 278*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 279*5113495bSYour Name that the right response was received 280*5113495bSYour Name 281*5113495bSYour Name For TXPCU, UL MU or SU is both acceptable. 282*5113495bSYour Name 283*5113495bSYour Name Can be used for complex OFDMA scenarios. PDG can not calculate 284*5113495bSYour Name the uplink duration. Therefor SW shall program the 'Extend_duration_value_bw...' 285*5113495bSYour Name field 286*5113495bSYour Name <enum 19 frameless_phyrx_response_accepted>Any MU frameless 287*5113495bSYour Name reception generated by the PHY is acceptable. 288*5113495bSYour Name 289*5113495bSYour Name PHY indicates this type of reception explicitly in TLV PHYRX_RSSI_LEGACY, 290*5113495bSYour Name field Reception_type == reception_is_frameless 291*5113495bSYour Name 292*5113495bSYour Name RXPCU will report any frame received, irrespective of it 293*5113495bSYour Name having been UL MU or SU. 294*5113495bSYour Name 295*5113495bSYour Name This can be used for complex MU-MIMO or OFDMA scenarios, 296*5113495bSYour Name like receiving MU-CTS. 297*5113495bSYour Name 298*5113495bSYour Name PDG can not calculate the uplink duration. Therefor SW shall 299*5113495bSYour Name program the 'Extend_duration_value_bw...' field 300*5113495bSYour Name <enum 20 ranging_ndp_and_lmr_expected>SW sets this after 301*5113495bSYour Name sending ranging NDPA followed by NDP as an ISTA and NDP 302*5113495bSYour Name and LMR (Action No Ack) are expected as back-to-back reception 303*5113495bSYour Name in SIFS. 304*5113495bSYour Name 305*5113495bSYour Name As PDG has no idea on how long the reception is going to 306*5113495bSYour Name be, the reception time of the response will have to be 307*5113495bSYour Name programmed by SW in the 'Extend_duration_value_bw...' field 308*5113495bSYour Name 309*5113495bSYour Name 310*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 311*5113495bSYour Name that the right response was received. 312*5113495bSYour Name <enum 21 ba_512_expected>BA with 512 bitmap is expected. 313*5113495bSYour Name 314*5113495bSYour Name 315*5113495bSYour Name PDG DOES NOT use the size info to calculated response duration. 316*5113495bSYour Name The length of the response will have to be programmed by 317*5113495bSYour Name SW in the per-BW 'Expected_ppdu_resp_length' field. 318*5113495bSYour Name 319*5113495bSYour Name For TXPCU only the fact that it is a BA is important. Actual 320*5113495bSYour Name received BA size is not important 321*5113495bSYour Name 322*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 323*5113495bSYour Name that the right response was received. 324*5113495bSYour Name <enum 22 ba_1024_expected>BA with 1024 bitmap is expected. 325*5113495bSYour Name 326*5113495bSYour Name 327*5113495bSYour Name PDG DOES NOT use the size info to calculated response duration. 328*5113495bSYour Name The length of the response will have to be programmed by 329*5113495bSYour Name SW in the per-BW 'Expected_ppdu_resp_length' field. 330*5113495bSYour Name 331*5113495bSYour Name For TXPCU only the fact that it is a BA is important. Actual 332*5113495bSYour Name received BA size is not important 333*5113495bSYour Name 334*5113495bSYour Name RXPCU is just expecting any response. It is TXPCU who checks 335*5113495bSYour Name that the right response was received. 336*5113495bSYour Name <enum 23 ul_mu_ranging_cts2s_expected>When selected, CTS2S 337*5113495bSYour Name frames are expected to be received in MU reception (uplink 338*5113495bSYour Name OFDMA) 339*5113495bSYour Name 340*5113495bSYour Name RXPCU shall check each response for CTS2S and report to 341*5113495bSYour Name TXPCU. 342*5113495bSYour Name 343*5113495bSYour Name TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields 344*5113495bSYour Name 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed CTS2S 345*5113495bSYour Name frames were received. 346*5113495bSYour Name <enum 24 ul_mu_ranging_ndp_expected>When selected, UL NDP 347*5113495bSYour Name frames are expected to be received in MU reception (uplink 348*5113495bSYour Name spatial multiplexing) 349*5113495bSYour Name 350*5113495bSYour Name RXPCU shall check each response for NDP and report to TXPCU. 351*5113495bSYour Name 352*5113495bSYour Name 353*5113495bSYour Name TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields 354*5113495bSYour Name 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed NDP 355*5113495bSYour Name frames were received. 356*5113495bSYour Name <enum 25 ul_mu_ranging_lmr_expected>When selected, LMR frames 357*5113495bSYour Name are expected to be received in MU reception (uplink OFDMA 358*5113495bSYour Name or uplink MIMO) 359*5113495bSYour Name 360*5113495bSYour Name RXPCU shall check each response for LMR and report to TXPCU. 361*5113495bSYour Name 362*5113495bSYour Name 363*5113495bSYour Name TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields 364*5113495bSYour Name 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed LMR 365*5113495bSYour Name frames were received. 366*5113495bSYour Name */ 367*5113495bSYour Name 368*5113495bSYour Name #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_OFFSET 0x0000000000000000 369*5113495bSYour Name #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_LSB 48 370*5113495bSYour Name #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_MSB 52 371*5113495bSYour Name #define EXPECTED_RESPONSE_EXPECTED_RESPONSE_TYPE_MASK 0x001f000000000000 372*5113495bSYour Name 373*5113495bSYour Name 374*5113495bSYour Name /* Description RESPONSE_TO_RESPONSE 375*5113495bSYour Name 376*5113495bSYour Name Field indicates if after receiving the PPDU response (indicated 377*5113495bSYour Name in the field above), TXPCU is expected to generate a reponse 378*5113495bSYour Name to the response 379*5113495bSYour Name 380*5113495bSYour Name In case a response to response is expected, RXPCU shall 381*5113495bSYour Name first acknowledge the proper reception of the received frames, 382*5113495bSYour Name so that TXPCU can first wrapup that portion of the FES. 383*5113495bSYour Name 384*5113495bSYour Name <enum 0 None> No response after response allowed. 385*5113495bSYour Name <enum 1 SU_BA> The response after response that TXPCU is 386*5113495bSYour Name allowed to generate is a single BA. Even if RXPCU is indicating 387*5113495bSYour Name that multiple users are received, TXPCU shall only send 388*5113495bSYour Name a BA for 1 STA. Response_to_response rates can be found 389*5113495bSYour Name in fields 'response_to_response_rate_info_bw...' 390*5113495bSYour Name <enum 2 MU_BA> The response after response that TXPCU is 391*5113495bSYour Name allowed to generate is only Multi Destination Multi User 392*5113495bSYour Name BA. Response_to_response rates can be found in fields 'response_to_response_rate_info_bw...' 393*5113495bSYour Name 394*5113495bSYour Name 395*5113495bSYour Name <enum 3 RESPONSE_TO_RESPONSE_CMD> A response to response 396*5113495bSYour Name is expected to be generated. In other words, RXPCU will 397*5113495bSYour Name likely indicate to TXPCU at the end of upcoming reception 398*5113495bSYour Name that a response is needed. TXPCU is however to ignore this 399*5113495bSYour Name indication from RXPCU, and assume for a moment that no 400*5113495bSYour Name response to response is needed, as all the details on how 401*5113495bSYour Name to handle this is provided in the next scheduling command, 402*5113495bSYour Name which is marked as a 'response_to_response' type. 403*5113495bSYour Name 404*5113495bSYour Name <legal 0-3> 405*5113495bSYour Name */ 406*5113495bSYour Name 407*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_OFFSET 0x0000000000000000 408*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_LSB 53 409*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_MSB 55 410*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_TO_RESPONSE_MASK 0x00e0000000000000 411*5113495bSYour Name 412*5113495bSYour Name 413*5113495bSYour Name /* Description SU_BA_USER_NUMBER 414*5113495bSYour Name 415*5113495bSYour Name Field only valid when Response_to_response is SU_BA 416*5113495bSYour Name 417*5113495bSYour Name Indicates the user number of which the BA will be send after 418*5113495bSYour Name receiving the uplink OFDMA. 419*5113495bSYour Name */ 420*5113495bSYour Name 421*5113495bSYour Name #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_OFFSET 0x0000000000000000 422*5113495bSYour Name #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_LSB 56 423*5113495bSYour Name #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_MSB 56 424*5113495bSYour Name #define EXPECTED_RESPONSE_SU_BA_USER_NUMBER_MASK 0x0100000000000000 425*5113495bSYour Name 426*5113495bSYour Name 427*5113495bSYour Name /* Description RESPONSE_INFO_PART2_REQUIRED 428*5113495bSYour Name 429*5113495bSYour Name Field only valid when Response_type is NOT set to No_response_expected 430*5113495bSYour Name 431*5113495bSYour Name 432*5113495bSYour Name When set to 1, RXPCU shall generate the RECEIVED_RESPONSE_INFO_PART2 433*5113495bSYour Name TLV after having received the response frame. TXPCU shall 434*5113495bSYour Name wait for this TLV before sending the TX_FES_STATUS_END 435*5113495bSYour Name TLV. 436*5113495bSYour Name 437*5113495bSYour Name When NOT set, RXPCU shall NOT generate the above mentioned 438*5113495bSYour Name TLV. TXPCU shall not wait for this TLV and after having 439*5113495bSYour Name received RECEIVED_RESPONSE_INFO TLV, it can immediately 440*5113495bSYour Name generate the TX_FES_STATUS_END TLV. 441*5113495bSYour Name 442*5113495bSYour Name <legal all> 443*5113495bSYour Name */ 444*5113495bSYour Name 445*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_OFFSET 0x0000000000000000 446*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_LSB 57 447*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_MSB 57 448*5113495bSYour Name #define EXPECTED_RESPONSE_RESPONSE_INFO_PART2_REQUIRED_MASK 0x0200000000000000 449*5113495bSYour Name 450*5113495bSYour Name 451*5113495bSYour Name /* Description TRANSMITTED_BSSID_CHECK_EN 452*5113495bSYour Name 453*5113495bSYour Name When set to 1, RXPCU shall assume group addressed frame 454*5113495bSYour Name with Tx_AD2 equal to TBSSID was sent. RxPCU should properly 455*5113495bSYour Name handle receive frame(s) from STA(s) which A1 is TBSSID 456*5113495bSYour Name or any VAPs.When NOT set, RXPCU shall compare received frame's 457*5113495bSYour Name A1 with Tx_AD2 only. 458*5113495bSYour Name <legal all> 459*5113495bSYour Name */ 460*5113495bSYour Name 461*5113495bSYour Name #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_OFFSET 0x0000000000000000 462*5113495bSYour Name #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_LSB 58 463*5113495bSYour Name #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_MSB 58 464*5113495bSYour Name #define EXPECTED_RESPONSE_TRANSMITTED_BSSID_CHECK_EN_MASK 0x0400000000000000 465*5113495bSYour Name 466*5113495bSYour Name 467*5113495bSYour Name /* Description RESERVED_1 468*5113495bSYour Name 469*5113495bSYour Name <legal 0> 470*5113495bSYour Name */ 471*5113495bSYour Name 472*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_1_OFFSET 0x0000000000000000 473*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_1_LSB 59 474*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_1_MSB 63 475*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_1_MASK 0xf800000000000000 476*5113495bSYour Name 477*5113495bSYour Name 478*5113495bSYour Name /* Description NDP_STA_PARTIAL_AID_2_8_0 479*5113495bSYour Name 480*5113495bSYour Name This field is applicable only in 11ah mode of operation. 481*5113495bSYour Name This field carries the information needed for RxPCU to qualify 482*5113495bSYour Name valid NDP-CTS 483*5113495bSYour Name 484*5113495bSYour Name When an RTS is being transmitted, this field provides the 485*5113495bSYour Name partial AID of STA/BSSID of the transmitter,so the received 486*5113495bSYour Name RA/BSSID of the NDP CTS response frame can be compared 487*5113495bSYour Name to validate it. This value is provided by SW for valiadating 488*5113495bSYour Name the NDP CTS. 489*5113495bSYour Name 490*5113495bSYour Name This filed also carries information for TA of the NDP Modified 491*5113495bSYour Name ACK when an NDP PS-Poll is transmitted. 492*5113495bSYour Name */ 493*5113495bSYour Name 494*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_OFFSET 0x0000000000000008 495*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_LSB 0 496*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_MSB 10 497*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID_2_8_0_MASK 0x00000000000007ff 498*5113495bSYour Name 499*5113495bSYour Name 500*5113495bSYour Name /* Description RESERVED_2 501*5113495bSYour Name 502*5113495bSYour Name Reserved: Generator should set to 0, consumer shall ignore 503*5113495bSYour Name <legal 0> 504*5113495bSYour Name */ 505*5113495bSYour Name 506*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_2_OFFSET 0x0000000000000008 507*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_2_LSB 11 508*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_2_MSB 20 509*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_2_MASK 0x00000000001ff800 510*5113495bSYour Name 511*5113495bSYour Name 512*5113495bSYour Name /* Description NDP_STA_PARTIAL_AID1_8_0 513*5113495bSYour Name 514*5113495bSYour Name This field is applicable only in 11ah mode of operation. 515*5113495bSYour Name This field carries the information needed for RxPCU to qualify 516*5113495bSYour Name valid NDP Modified ACK 517*5113495bSYour Name 518*5113495bSYour Name TxPCU provides the partial AID (RA) of the NDP PS-Poll frame. 519*5113495bSYour Name 520*5113495bSYour Name */ 521*5113495bSYour Name 522*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_OFFSET 0x0000000000000008 523*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_LSB 21 524*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_MSB 31 525*5113495bSYour Name #define EXPECTED_RESPONSE_NDP_STA_PARTIAL_AID1_8_0_MASK 0x00000000ffe00000 526*5113495bSYour Name 527*5113495bSYour Name 528*5113495bSYour Name /* Description AST_INDEX 529*5113495bSYour Name 530*5113495bSYour Name The AST index of the receive Ack/BA. This information is 531*5113495bSYour Name provided from the TXPCU to the RXPCU for receive Ack/BA. 532*5113495bSYour Name 533*5113495bSYour Name */ 534*5113495bSYour Name 535*5113495bSYour Name #define EXPECTED_RESPONSE_AST_INDEX_OFFSET 0x0000000000000008 536*5113495bSYour Name #define EXPECTED_RESPONSE_AST_INDEX_LSB 32 537*5113495bSYour Name #define EXPECTED_RESPONSE_AST_INDEX_MSB 47 538*5113495bSYour Name #define EXPECTED_RESPONSE_AST_INDEX_MASK 0x0000ffff00000000 539*5113495bSYour Name 540*5113495bSYour Name 541*5113495bSYour Name /* Description CAPTURE_ACK_BA_SOUNDING 542*5113495bSYour Name 543*5113495bSYour Name If set enables capture of 1str and 2str sounding on Ack 544*5113495bSYour Name or BA as long as the corresponding capture_sounding_1str_##mhz 545*5113495bSYour Name bits is set. 546*5113495bSYour Name 547*5113495bSYour Name If clear the capture of sounding on Ack or BA is disabled 548*5113495bSYour Name even if the corresponding capture_sounding_1str_##mhz is 549*5113495bSYour Name set. 550*5113495bSYour Name */ 551*5113495bSYour Name 552*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_OFFSET 0x0000000000000008 553*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_LSB 48 554*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_MSB 48 555*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_ACK_BA_SOUNDING_MASK 0x0001000000000000 556*5113495bSYour Name 557*5113495bSYour Name 558*5113495bSYour Name /* Description CAPTURE_SOUNDING_1STR_20MHZ 559*5113495bSYour Name 560*5113495bSYour Name Capture sounding for 1 stream 20 MHz receive packets 561*5113495bSYour Name */ 562*5113495bSYour Name 563*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_OFFSET 0x0000000000000008 564*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_LSB 49 565*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_MSB 49 566*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_20MHZ_MASK 0x0002000000000000 567*5113495bSYour Name 568*5113495bSYour Name 569*5113495bSYour Name /* Description CAPTURE_SOUNDING_1STR_40MHZ 570*5113495bSYour Name 571*5113495bSYour Name Capture sounding for 1 stream 40 MHz receive packets 572*5113495bSYour Name */ 573*5113495bSYour Name 574*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_OFFSET 0x0000000000000008 575*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_LSB 50 576*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_MSB 50 577*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_40MHZ_MASK 0x0004000000000000 578*5113495bSYour Name 579*5113495bSYour Name 580*5113495bSYour Name /* Description CAPTURE_SOUNDING_1STR_80MHZ 581*5113495bSYour Name 582*5113495bSYour Name Capture sounding for 1 stream 80 MHz receive packets 583*5113495bSYour Name */ 584*5113495bSYour Name 585*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_OFFSET 0x0000000000000008 586*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_LSB 51 587*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_MSB 51 588*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_80MHZ_MASK 0x0008000000000000 589*5113495bSYour Name 590*5113495bSYour Name 591*5113495bSYour Name /* Description CAPTURE_SOUNDING_1STR_160MHZ 592*5113495bSYour Name 593*5113495bSYour Name Capture sounding for 1 stream 160 MHz receive packets 594*5113495bSYour Name */ 595*5113495bSYour Name 596*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_OFFSET 0x0000000000000008 597*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_LSB 52 598*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_MSB 52 599*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_160MHZ_MASK 0x0010000000000000 600*5113495bSYour Name 601*5113495bSYour Name 602*5113495bSYour Name /* Description CAPTURE_SOUNDING_1STR_240MHZ 603*5113495bSYour Name 604*5113495bSYour Name Capture sounding for 1 stream 240 MHz receive packets 605*5113495bSYour Name */ 606*5113495bSYour Name 607*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_OFFSET 0x0000000000000008 608*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_LSB 53 609*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_MSB 53 610*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_240MHZ_MASK 0x0020000000000000 611*5113495bSYour Name 612*5113495bSYour Name 613*5113495bSYour Name /* Description CAPTURE_SOUNDING_1STR_320MHZ 614*5113495bSYour Name 615*5113495bSYour Name Capture sounding for 1 stream 320 MHz receive packets 616*5113495bSYour Name */ 617*5113495bSYour Name 618*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_OFFSET 0x0000000000000008 619*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_LSB 54 620*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_MSB 54 621*5113495bSYour Name #define EXPECTED_RESPONSE_CAPTURE_SOUNDING_1STR_320MHZ_MASK 0x0040000000000000 622*5113495bSYour Name 623*5113495bSYour Name 624*5113495bSYour Name /* Description RESERVED_3A 625*5113495bSYour Name 626*5113495bSYour Name Reserved: Generator should set to 0, consumer shall ignore 627*5113495bSYour Name <legal 0> 628*5113495bSYour Name */ 629*5113495bSYour Name 630*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_3A_OFFSET 0x0000000000000008 631*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_3A_LSB 55 632*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_3A_MSB 63 633*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_3A_MASK 0xff80000000000000 634*5113495bSYour Name 635*5113495bSYour Name 636*5113495bSYour Name /* Description FCS 637*5113495bSYour Name 638*5113495bSYour Name Tx Frame's FCS[31:23] 639*5113495bSYour Name 640*5113495bSYour Name TODO: describe what this is used for ... 641*5113495bSYour Name 642*5113495bSYour Name For aggregates and NDP frames, this field is reserved and 643*5113495bSYour Name TxPCU should populate this to Zero. 644*5113495bSYour Name */ 645*5113495bSYour Name 646*5113495bSYour Name #define EXPECTED_RESPONSE_FCS_OFFSET 0x0000000000000010 647*5113495bSYour Name #define EXPECTED_RESPONSE_FCS_LSB 0 648*5113495bSYour Name #define EXPECTED_RESPONSE_FCS_MSB 8 649*5113495bSYour Name #define EXPECTED_RESPONSE_FCS_MASK 0x00000000000001ff 650*5113495bSYour Name 651*5113495bSYour Name 652*5113495bSYour Name /* Description RESERVED_4A 653*5113495bSYour Name 654*5113495bSYour Name Reserved: Generator should set to 0, consumer shall ignore 655*5113495bSYour Name <legal 0> 656*5113495bSYour Name */ 657*5113495bSYour Name 658*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4A_OFFSET 0x0000000000000010 659*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4A_LSB 9 660*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4A_MSB 9 661*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4A_MASK 0x0000000000000200 662*5113495bSYour Name 663*5113495bSYour Name 664*5113495bSYour Name /* Description CRC 665*5113495bSYour Name 666*5113495bSYour Name TODO: describe what this is used for ... 667*5113495bSYour Name 668*5113495bSYour Name Tx SIG's CRC[3:0] 669*5113495bSYour Name */ 670*5113495bSYour Name 671*5113495bSYour Name #define EXPECTED_RESPONSE_CRC_OFFSET 0x0000000000000010 672*5113495bSYour Name #define EXPECTED_RESPONSE_CRC_LSB 10 673*5113495bSYour Name #define EXPECTED_RESPONSE_CRC_MSB 13 674*5113495bSYour Name #define EXPECTED_RESPONSE_CRC_MASK 0x0000000000003c00 675*5113495bSYour Name 676*5113495bSYour Name 677*5113495bSYour Name /* Description SCRAMBLER_SEED 678*5113495bSYour Name 679*5113495bSYour Name TODO: describe what this is used for ... 680*5113495bSYour Name 681*5113495bSYour Name Tx Frames SERVICE[6:0] 682*5113495bSYour Name */ 683*5113495bSYour Name 684*5113495bSYour Name #define EXPECTED_RESPONSE_SCRAMBLER_SEED_OFFSET 0x0000000000000010 685*5113495bSYour Name #define EXPECTED_RESPONSE_SCRAMBLER_SEED_LSB 14 686*5113495bSYour Name #define EXPECTED_RESPONSE_SCRAMBLER_SEED_MSB 20 687*5113495bSYour Name #define EXPECTED_RESPONSE_SCRAMBLER_SEED_MASK 0x00000000001fc000 688*5113495bSYour Name 689*5113495bSYour Name 690*5113495bSYour Name /* Description RESERVED_4B 691*5113495bSYour Name 692*5113495bSYour Name Reserved: Generator should set to 0, consumer shall ignore 693*5113495bSYour Name <legal 0> 694*5113495bSYour Name */ 695*5113495bSYour Name 696*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4B_OFFSET 0x0000000000000010 697*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4B_LSB 21 698*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4B_MSB 31 699*5113495bSYour Name #define EXPECTED_RESPONSE_RESERVED_4B_MASK 0x00000000ffe00000 700*5113495bSYour Name 701*5113495bSYour Name 702*5113495bSYour Name /* Description TLV64_PADDING 703*5113495bSYour Name 704*5113495bSYour Name Automatic DWORD padding inserted while converting TLV32 705*5113495bSYour Name to TLV64 for 64 bit ARCH 706*5113495bSYour Name <legal 0> 707*5113495bSYour Name */ 708*5113495bSYour Name 709*5113495bSYour Name #define EXPECTED_RESPONSE_TLV64_PADDING_OFFSET 0x0000000000000010 710*5113495bSYour Name #define EXPECTED_RESPONSE_TLV64_PADDING_LSB 32 711*5113495bSYour Name #define EXPECTED_RESPONSE_TLV64_PADDING_MSB 63 712*5113495bSYour Name #define EXPECTED_RESPONSE_TLV64_PADDING_MASK 0xffffffff00000000 713*5113495bSYour Name 714*5113495bSYour Name 715*5113495bSYour Name 716*5113495bSYour Name #endif // EXPECTED_RESPONSE 717