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