|
@@ -1609,11 +1609,115 @@ hal_txmon_status_parse_tlv_generic_be(void *data_ppdu_info,
|
|
|
|
|
|
case WIFIMACTX_HE_SIG_A_SU_E:
|
|
case WIFIMACTX_HE_SIG_A_SU_E:
|
|
{
|
|
{
|
|
|
|
+ uint8_t mcs_of_sig_b = 0;
|
|
|
|
+ uint8_t dcm_of_sig_b = 0;
|
|
|
|
+ uint8_t sig_a_bw = 0;
|
|
|
|
+ uint16_t he_mu_flag_1 = 0;
|
|
|
|
+ uint16_t he_mu_flag_2 = 0;
|
|
|
|
+
|
|
|
|
+ status = HAL_MON_MACTX_HE_SIG_A_SU;
|
|
|
|
+
|
|
|
|
+ mcs_of_sig_b = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_SU_MACTX_HE_SIG_A_SU_INFO_DETAILS,
|
|
|
|
+ TRANSMIT_MCS);
|
|
|
|
+ dcm_of_sig_b = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_SU_MACTX_HE_SIG_A_SU_INFO_DETAILS,
|
|
|
|
+ DCM);
|
|
|
|
+ sig_a_bw = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_SU_MACTX_HE_SIG_A_SU_INFO_DETAILS,
|
|
|
|
+ TRANSMIT_BW);
|
|
|
|
+
|
|
|
|
+ he_mu_flag_1 |= QDF_MON_STATUS_SIG_B_MCS_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_SIG_B_DCM_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_2_CENTER_26_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_1_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_2_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_1_CENTER_26_RU_KNOWN;
|
|
|
|
+
|
|
|
|
+ /* MCS */
|
|
|
|
+ he_mu_flag_1 |= mcs_of_sig_b <<
|
|
|
|
+ QDF_MON_STATUS_SIG_B_MCS_SHIFT;
|
|
|
|
+ /* DCM */
|
|
|
|
+ he_mu_flag_1 |= dcm_of_sig_b <<
|
|
|
|
+ QDF_MON_STATUS_SIG_B_DCM_SHIFT;
|
|
|
|
+ /* bandwidth */
|
|
|
|
+ he_mu_flag_2 |= QDF_MON_STATUS_SIG_A_BANDWIDTH_KNOWN;
|
|
|
|
+ he_mu_flag_2 |= sig_a_bw <<
|
|
|
|
+ QDF_MON_STATUS_SIG_A_BANDWIDTH_SHIFT;
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_flags1) = he_mu_flag_1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_flags2) = he_mu_flag_2;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_A_SU_E);
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_A_SU_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFIMACTX_HE_SIG_A_MU_DL_E:
|
|
case WIFIMACTX_HE_SIG_A_MU_DL_E:
|
|
{
|
|
{
|
|
|
|
+ uint8_t mcs_of_sig_b = 0;
|
|
|
|
+ uint8_t dcm_of_sig_b = 0;
|
|
|
|
+ uint8_t sig_a_bw = 0;
|
|
|
|
+ uint8_t num_sig_b_symb = 0;
|
|
|
|
+ uint8_t comp_mode_sig_b = 0;
|
|
|
|
+ uint8_t punc_bw = 0;
|
|
|
|
+ uint16_t he_mu_flag_1 = 0;
|
|
|
|
+ uint16_t he_mu_flag_2 = 0;
|
|
|
|
+
|
|
|
|
+ status = HAL_MON_MACTX_HE_SIG_A_MU_DL;
|
|
|
|
+ mcs_of_sig_b = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_MU_DL_MACTX_HE_SIG_A_MU_DL_INFO_DETAILS,
|
|
|
|
+ MCS_OF_SIG_B);
|
|
|
|
+ dcm_of_sig_b = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_MU_DL_MACTX_HE_SIG_A_MU_DL_INFO_DETAILS,
|
|
|
|
+ DCM_OF_SIG_B);
|
|
|
|
+ sig_a_bw = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_MU_DL_MACTX_HE_SIG_A_MU_DL_INFO_DETAILS,
|
|
|
|
+ TRANSMIT_BW);
|
|
|
|
+ num_sig_b_symb = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_MU_DL_MACTX_HE_SIG_A_MU_DL_INFO_DETAILS,
|
|
|
|
+ NUM_SIG_B_SYMBOLS);
|
|
|
|
+ comp_mode_sig_b = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_A_MU_DL_MACTX_HE_SIG_A_MU_DL_INFO_DETAILS,
|
|
|
|
+ COMP_MODE_SIG_B);
|
|
|
|
+
|
|
|
|
+ he_mu_flag_1 |= QDF_MON_STATUS_SIG_B_MCS_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_SIG_B_DCM_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_SIG_B_SYM_NUM_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_2_CENTER_26_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_1_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_2_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_CHANNEL_1_CENTER_26_RU_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_SIG_B_COMPRESSION_FLAG_1_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_SIG_B_SYMBOL_USER_KNOWN;
|
|
|
|
+
|
|
|
|
+ /* MCS */
|
|
|
|
+ he_mu_flag_1 |= mcs_of_sig_b <<
|
|
|
|
+ QDF_MON_STATUS_SIG_B_MCS_SHIFT;
|
|
|
|
+ /* DCM */
|
|
|
|
+ he_mu_flag_1 |= dcm_of_sig_b <<
|
|
|
|
+ QDF_MON_STATUS_SIG_B_DCM_SHIFT;
|
|
|
|
+ /* Compression */
|
|
|
|
+ he_mu_flag_2 |= comp_mode_sig_b <<
|
|
|
|
+ QDF_MON_STATUS_SIG_B_COMPRESSION_FLAG_2_SHIFT;
|
|
|
|
+ /* bandwidth */
|
|
|
|
+ he_mu_flag_2 |= QDF_MON_STATUS_SIG_A_BANDWIDTH_KNOWN;
|
|
|
|
+ he_mu_flag_2 |= sig_a_bw <<
|
|
|
|
+ QDF_MON_STATUS_SIG_A_BANDWIDTH_SHIFT;
|
|
|
|
+ he_mu_flag_2 |= comp_mode_sig_b <<
|
|
|
|
+ QDF_MON_STATUS_SIG_B_COMPRESSION_FLAG_2_SHIFT;
|
|
|
|
+ /* number of symbol */
|
|
|
|
+ he_mu_flag_2 |= num_sig_b_symb <<
|
|
|
|
+ QDF_MON_STATUS_NUM_SIG_B_SYMBOLS_SHIFT;
|
|
|
|
+ /* puncture bw */
|
|
|
|
+ he_mu_flag_2 |= QDF_MON_STATUS_SIG_A_PUNC_BANDWIDTH_KNOWN;
|
|
|
|
+ punc_bw = sig_a_bw;
|
|
|
|
+ he_mu_flag_2 |=
|
|
|
|
+ punc_bw << QDF_MON_STATUS_SIG_A_PUNC_BANDWIDTH_SHIFT;
|
|
|
|
+
|
|
|
|
+ /* copy per user info to all user */
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_mu_flags) = 1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_flags1) = he_mu_flag_1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_flags2) = he_mu_flag_2;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_A_MU_DL_E);
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_A_MU_DL_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -1631,38 +1735,366 @@ hal_txmon_status_parse_tlv_generic_be(void *data_ppdu_info,
|
|
case WIFIMACTX_HE_SIG_B2_MU_E:
|
|
case WIFIMACTX_HE_SIG_B2_MU_E:
|
|
{
|
|
{
|
|
/* user tlv */
|
|
/* user tlv */
|
|
|
|
+ uint16_t sta_id = 0;
|
|
|
|
+ uint16_t sta_spatial_config = 0;
|
|
|
|
+ uint8_t sta_mcs = 0;
|
|
|
|
+ uint8_t coding = 0;
|
|
|
|
+ uint8_t nss = 0;
|
|
|
|
+ uint8_t user_order = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_HE_SIG_B2_MU;
|
|
status = HAL_MON_MACTX_HE_SIG_B2_MU;
|
|
|
|
+
|
|
|
|
+ TXMON_HAL(ppdu_info, cur_usr_idx) = user_id;
|
|
|
|
+
|
|
|
|
+ sta_id = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS,
|
|
|
|
+ STA_ID);
|
|
|
|
+ sta_spatial_config = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS,
|
|
|
|
+ STA_SPATIAL_CONFIG);
|
|
|
|
+ sta_mcs = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS,
|
|
|
|
+ STA_MCS);
|
|
|
|
+ coding = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS,
|
|
|
|
+ STA_CODING);
|
|
|
|
+ nss = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS,
|
|
|
|
+ NSTS);
|
|
|
|
+ user_order = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_MU_MACTX_HE_SIG_B2_MU_INFO_DETAILS,
|
|
|
|
+ USER_ORDER);
|
|
|
|
+
|
|
|
|
+ /* HE data 1 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data1) |=
|
|
|
|
+ QDF_MON_STATUS_HE_MCS_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_HE_CODING_KNOWN;
|
|
|
|
+ /* HE data 2 */
|
|
|
|
+
|
|
|
|
+ /* HE data 3 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, mcs) = sta_mcs;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data3) |=
|
|
|
|
+ sta_mcs << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data3) |=
|
|
|
|
+ coding << QDF_MON_STATUS_CODING_SHIFT;
|
|
|
|
+
|
|
|
|
+ /* HE data 4 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data4) |=
|
|
|
|
+ sta_id << QDF_MON_STATUS_STA_ID_SHIFT;
|
|
|
|
+
|
|
|
|
+ /* HE data 5 */
|
|
|
|
+
|
|
|
|
+ /* HE data 6 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, nss) = nss;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data6) |= nss;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_B2_MU_E);
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_B2_MU_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFIMACTX_HE_SIG_B2_OFDMA_E:
|
|
case WIFIMACTX_HE_SIG_B2_OFDMA_E:
|
|
{
|
|
{
|
|
/* user tlv */
|
|
/* user tlv */
|
|
|
|
+ uint8_t *he_sig_b2_ofdma_info = NULL;
|
|
|
|
+ uint16_t sta_id = 0;
|
|
|
|
+ uint8_t nss = 0;
|
|
|
|
+ uint8_t txbf = 0;
|
|
|
|
+ uint8_t sta_mcs = 0;
|
|
|
|
+ uint8_t sta_dcm = 0;
|
|
|
|
+ uint8_t coding = 0;
|
|
|
|
+ uint8_t user_order = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_HE_SIG_B2_OFDMA;
|
|
status = HAL_MON_MACTX_HE_SIG_B2_OFDMA;
|
|
|
|
+
|
|
|
|
+ TXMON_HAL(ppdu_info, cur_usr_idx) = user_id;
|
|
|
|
+
|
|
|
|
+ he_sig_b2_ofdma_info = (uint8_t *)tx_tlv +
|
|
|
|
+ HAL_OFFSET(MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ STA_ID);
|
|
|
|
+
|
|
|
|
+ sta_id = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ STA_ID);
|
|
|
|
+ nss = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ NSTS);
|
|
|
|
+ txbf = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ TXBF);
|
|
|
|
+ sta_mcs = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ STA_MCS);
|
|
|
|
+ sta_dcm = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ STA_DCM);
|
|
|
|
+ coding = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ STA_CODING);
|
|
|
|
+ user_order = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_HE_SIG_B2_OFDMA_MACTX_HE_SIG_B2_OFDMA_INFO_DETAILS,
|
|
|
|
+ USER_ORDER);
|
|
|
|
+
|
|
|
|
+ /* HE data 1 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data1) |=
|
|
|
|
+ QDF_MON_STATUS_HE_MCS_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_HE_CODING_KNOWN |
|
|
|
|
+ QDF_MON_STATUS_HE_DCM_KNOWN;
|
|
|
|
+ /* HE data 2 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data2) |=
|
|
|
|
+ QDF_MON_STATUS_TXBF_KNOWN;
|
|
|
|
+
|
|
|
|
+ /* HE data 3 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, mcs) = sta_mcs;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data3) |=
|
|
|
|
+ sta_mcs << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data3) |=
|
|
|
|
+ sta_dcm << QDF_MON_STATUS_DCM_SHIFT;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data3) |=
|
|
|
|
+ coding << QDF_MON_STATUS_CODING_SHIFT;
|
|
|
|
+
|
|
|
|
+ /* HE data 4 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data4) |=
|
|
|
|
+ sta_id << QDF_MON_STATUS_STA_ID_SHIFT;
|
|
|
|
+
|
|
|
|
+ /* HE data 5 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data5) |=
|
|
|
|
+ txbf << QDF_MON_STATUS_TXBF_SHIFT;
|
|
|
|
+
|
|
|
|
+ /* HE data 6 */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, nss) = nss;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data6) |= nss;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_B2_OFDMA_E);
|
|
SHOW_DEFINED(WIFIMACTX_HE_SIG_B2_OFDMA_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFIMACTX_L_SIG_A_E:
|
|
case WIFIMACTX_L_SIG_A_E:
|
|
{
|
|
{
|
|
|
|
+ uint8_t *l_sig_a_info = NULL;
|
|
|
|
+ uint8_t rate = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_L_SIG_A;
|
|
status = HAL_MON_MACTX_L_SIG_A;
|
|
|
|
+
|
|
|
|
+ l_sig_a_info = (uint8_t *)tx_tlv +
|
|
|
|
+ HAL_OFFSET(MACTX_L_SIG_A_MACTX_L_SIG_A_INFO_DETAILS,
|
|
|
|
+ RATE);
|
|
|
|
+ rate = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_L_SIG_A_MACTX_L_SIG_A_INFO_DETAILS,
|
|
|
|
+ RATE);
|
|
|
|
+
|
|
|
|
+ switch (rate) {
|
|
|
|
+ case 8:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_0MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS0;
|
|
|
|
+ break;
|
|
|
|
+ case 9:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_1MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS1;
|
|
|
|
+ break;
|
|
|
|
+ case 10:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_2MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS2;
|
|
|
|
+ break;
|
|
|
|
+ case 11:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_3MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS3;
|
|
|
|
+ break;
|
|
|
|
+ case 12:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_4MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS4;
|
|
|
|
+ break;
|
|
|
|
+ case 13:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_5MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS5;
|
|
|
|
+ break;
|
|
|
|
+ case 14:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_6MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS6;
|
|
|
|
+ break;
|
|
|
|
+ case 15:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11A_RATE_7MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS7;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, ofdm_flag) = 1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, reception_type) = HAL_RX_TYPE_SU;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, l_sig_a_info) = *l_sig_a_info;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_L_SIG_A_E);
|
|
SHOW_DEFINED(WIFIMACTX_L_SIG_A_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFIMACTX_L_SIG_B_E:
|
|
case WIFIMACTX_L_SIG_B_E:
|
|
{
|
|
{
|
|
|
|
+ uint8_t *l_sig_b_info = NULL;
|
|
|
|
+ uint8_t rate = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_L_SIG_B;
|
|
status = HAL_MON_MACTX_L_SIG_B;
|
|
|
|
+
|
|
|
|
+ l_sig_b_info = (uint8_t *)tx_tlv +
|
|
|
|
+ HAL_OFFSET(MACTX_L_SIG_B_MACTX_L_SIG_B_INFO_DETAILS,
|
|
|
|
+ RATE);
|
|
|
|
+ rate = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_L_SIG_B_MACTX_L_SIG_B_INFO_DETAILS,
|
|
|
|
+ RATE);
|
|
|
|
+
|
|
|
|
+ switch (rate) {
|
|
|
|
+ case 1:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_3MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS3;
|
|
|
|
+ break;
|
|
|
|
+ case 2:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_2MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS2;
|
|
|
|
+ break;
|
|
|
|
+ case 3:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_1MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS1;
|
|
|
|
+ break;
|
|
|
|
+ case 4:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_0MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS0;
|
|
|
|
+ break;
|
|
|
|
+ case 5:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_6MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS6;
|
|
|
|
+ break;
|
|
|
|
+ case 6:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_5MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS5;
|
|
|
|
+ break;
|
|
|
|
+ case 7:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, rate) = HAL_11B_RATE_4MCS;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = HAL_LEGACY_MCS4;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, cck_flag) = 1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, reception_type) = HAL_RX_TYPE_SU;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, l_sig_b_info) = *l_sig_b_info;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_L_SIG_B_E);
|
|
SHOW_DEFINED(WIFIMACTX_L_SIG_B_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFIMACTX_HT_SIG_E:
|
|
case WIFIMACTX_HT_SIG_E:
|
|
{
|
|
{
|
|
|
|
+ uint8_t mcs = 0;
|
|
|
|
+ uint8_t bw = 0;
|
|
|
|
+ uint8_t is_stbc = 0;
|
|
|
|
+ uint8_t coding = 0;
|
|
|
|
+ uint8_t gi = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_HT_SIG;
|
|
status = HAL_MON_MACTX_HT_SIG;
|
|
|
|
+ mcs = HAL_TX_DESC_GET_64(tx_tlv, HT_SIG_INFO, MCS);
|
|
|
|
+ bw = HAL_TX_DESC_GET_64(tx_tlv, HT_SIG_INFO, CBW);
|
|
|
|
+ is_stbc = HAL_TX_DESC_GET_64(tx_tlv, HT_SIG_INFO, STBC);
|
|
|
|
+ coding = HAL_TX_DESC_GET_64(tx_tlv, HT_SIG_INFO, FEC_CODING);
|
|
|
|
+ gi = HAL_TX_DESC_GET_64(tx_tlv, HT_SIG_INFO, SHORT_GI);
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, ldpc) =
|
|
|
|
+ (coding == HAL_SU_MU_CODING_LDPC) ? 1 : 0;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, ht_mcs) = mcs;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, bw) = bw;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, sgi) = gi;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, is_stbc) = is_stbc;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, reception_type) = HAL_RX_TYPE_SU;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_HT_SIG_E);
|
|
SHOW_DEFINED(WIFIMACTX_HT_SIG_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
case WIFIMACTX_VHT_SIG_A_E:
|
|
case WIFIMACTX_VHT_SIG_A_E:
|
|
{
|
|
{
|
|
|
|
+ uint8_t bandwidth = 0;
|
|
|
|
+ uint8_t is_stbc = 0;
|
|
|
|
+ uint8_t group_id = 0;
|
|
|
|
+ uint32_t nss_comb = 0;
|
|
|
|
+ uint8_t nss_su = 0;
|
|
|
|
+ uint8_t nss_mu[4] = {0};
|
|
|
|
+ uint8_t sgi = 0;
|
|
|
|
+ uint8_t coding = 0;
|
|
|
|
+ uint8_t mcs = 0;
|
|
|
|
+ uint8_t beamformed = 0;
|
|
|
|
+ uint8_t partial_aid = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_VHT_SIG_A;
|
|
status = HAL_MON_MACTX_VHT_SIG_A;
|
|
|
|
+ bandwidth = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ BANDWIDTH);
|
|
|
|
+ is_stbc = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ STBC);
|
|
|
|
+ group_id = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ GROUP_ID);
|
|
|
|
+ /* nss_comb is su nss, MU nss and partial AID */
|
|
|
|
+ nss_comb = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ N_STS);
|
|
|
|
+ /* if it is SU */
|
|
|
|
+ nss_su = nss_comb & 0x7;
|
|
|
|
+ /* partial aid - applicable only for SU */
|
|
|
|
+ partial_aid = (nss_comb >> 3) & 0x1F;
|
|
|
|
+ /* if it is MU */
|
|
|
|
+ nss_mu[0] = nss_comb & 0x7;
|
|
|
|
+ nss_mu[1] = (nss_comb >> 3) & 0x7;
|
|
|
|
+ nss_mu[2] = (nss_comb >> 6) & 0x7;
|
|
|
|
+ nss_mu[3] = (nss_comb >> 9) & 0x7;
|
|
|
|
+
|
|
|
|
+ sgi = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ GI_SETTING);
|
|
|
|
+ coding = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ SU_MU_CODING);
|
|
|
|
+ mcs = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ MCS);
|
|
|
|
+ beamformed = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS,
|
|
|
|
+ BEAMFORMED);
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, ldpc) =
|
|
|
|
+ (coding == HAL_SU_MU_CODING_LDPC) ? 1 : 0;
|
|
|
|
+ TXMON_STATUS_INFO(tx_status_info, sw_frame_group_id) = group_id;
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, sgi) = sgi;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, is_stbc) = is_stbc;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, bw) = bandwidth;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, beamformed) = beamformed;
|
|
|
|
+
|
|
|
|
+ if (group_id == 0 || group_id == 63) {
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, reception_type) =
|
|
|
|
+ HAL_RX_TYPE_SU;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = mcs;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, nss) =
|
|
|
|
+ nss_su & VHT_SIG_SU_NSS_MASK;
|
|
|
|
+ } else {
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, reception_type) =
|
|
|
|
+ HAL_RX_TYPE_MU_MIMO;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, mcs) = mcs;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, nss) =
|
|
|
|
+ nss_su & VHT_SIG_SU_NSS_MASK;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* TODO: loop over multiple user */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values2) = bandwidth;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values3[0]) = (mcs << 4) | nss_su;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values3[1]) = (mcs << 4) | nss_mu[1];
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values3[2]) = (mcs << 4) | nss_mu[2];
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values3[3]) = (mcs << 4) | nss_mu[3];
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values4) = coding;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values5) = group_id;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id,
|
|
|
|
+ vht_flag_values6) = partial_aid;
|
|
SHOW_DEFINED(WIFIMACTX_VHT_SIG_A_E);
|
|
SHOW_DEFINED(WIFIMACTX_VHT_SIG_A_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -1713,7 +2145,76 @@ hal_txmon_status_parse_tlv_generic_be(void *data_ppdu_info,
|
|
}
|
|
}
|
|
case WIFIMACTX_USER_DESC_PER_USER_E:
|
|
case WIFIMACTX_USER_DESC_PER_USER_E:
|
|
{
|
|
{
|
|
|
|
+ uint32_t psdu_length = 0;
|
|
|
|
+ uint8_t ru_start_index = 0;
|
|
|
|
+ uint8_t ru_size = 0;
|
|
|
|
+ uint8_t nss = 0;
|
|
|
|
+ uint8_t mcs = 0;
|
|
|
|
+ uint8_t dcm = 0;
|
|
|
|
+ uint8_t fec_type = 0;
|
|
|
|
+ uint8_t is_ldpc_extra_symb = 0;
|
|
|
|
+ uint32_t he_data1 = 0;
|
|
|
|
+ uint32_t he_data2 = 0;
|
|
|
|
+ uint32_t he_data3 = 0;
|
|
|
|
+ uint32_t he_data4 = 0;
|
|
|
|
+ uint32_t he_data5 = 0;
|
|
|
|
+ uint32_t he_data6 = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_USER_DESC_PER_USER;
|
|
status = HAL_MON_MACTX_USER_DESC_PER_USER;
|
|
|
|
+
|
|
|
|
+ TXMON_HAL(ppdu_info, cur_usr_idx) = user_id;
|
|
|
|
+
|
|
|
|
+ psdu_length = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_USER_DESC_PER_USER,
|
|
|
|
+ PSDU_LENGTH);
|
|
|
|
+ ru_start_index = HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_USER_DESC_PER_USER,
|
|
|
|
+ RU_START_INDEX);
|
|
|
|
+ ru_size = HAL_TX_DESC_GET_64(tx_tlv, MACTX_USER_DESC_PER_USER,
|
|
|
|
+ RU_SIZE);
|
|
|
|
+ nss = HAL_TX_DESC_GET_64(tx_tlv, MACTX_USER_DESC_PER_USER, NSS);
|
|
|
|
+ mcs = HAL_TX_DESC_GET_64(tx_tlv, MACTX_USER_DESC_PER_USER, MCS);
|
|
|
|
+ dcm = HAL_TX_DESC_GET_64(tx_tlv, MACTX_USER_DESC_PER_USER, DCM);
|
|
|
|
+ fec_type = HAL_TX_DESC_GET_64(tx_tlv, MACTX_USER_DESC_PER_USER,
|
|
|
|
+ FEC_TYPE);
|
|
|
|
+ is_ldpc_extra_symb =
|
|
|
|
+ HAL_TX_DESC_GET_64(tx_tlv, MACTX_USER_DESC_PER_USER,
|
|
|
|
+ LDPC_EXTRA_SYMBOL);
|
|
|
|
+
|
|
|
|
+ if (!TXMON_HAL_STATUS(ppdu_info, he_flags))
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ /* update */
|
|
|
|
+ /* MCS */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_MCS_KNOWN;
|
|
|
|
+ he_data3 |= (mcs << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT);
|
|
|
|
+ /* DCM */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_DCM_KNOWN;
|
|
|
|
+ he_data3 |= (dcm << QDF_MON_STATUS_DCM_SHIFT);
|
|
|
|
+ /* LDPC EXTRA SYMB */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_LDPC_EXTRA_SYMBOL_KNOWN;
|
|
|
|
+ he_data3 |= (is_ldpc_extra_symb <<
|
|
|
|
+ QDF_MON_STATUS_LDPC_EXTRA_SYMBOL_SHIFT);
|
|
|
|
+ /* RU offset and RU */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_DATA_BW_RU_KNOWN;
|
|
|
|
+ he_data2 |= QDF_MON_STATUS_RU_ALLOCATION_OFFSET_KNOWN;
|
|
|
|
+ he_data2 |= (ru_start_index <<
|
|
|
|
+ QDF_MON_STATUS_RU_ALLOCATION_SHIFT);
|
|
|
|
+
|
|
|
|
+ /* Data BW and RU allocation */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_DATA_BW_RU_KNOWN;
|
|
|
|
+ he_data5 |= ru_size << 2;
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, mcs) = mcs;
|
|
|
|
+
|
|
|
|
+ /* update stack variable to ppdu_info */
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data1) |= he_data1;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data2) |= he_data2;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data3) |= he_data3;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data4) |= he_data4;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data5) |= he_data5;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, user_id, he_data6) |= he_data6;
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_USER_DESC_PER_USER_E);
|
|
SHOW_DEFINED(WIFIMACTX_USER_DESC_PER_USER_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -1724,7 +2225,162 @@ hal_txmon_status_parse_tlv_generic_be(void *data_ppdu_info,
|
|
}
|
|
}
|
|
case WIFIMACTX_PHY_DESC_E:
|
|
case WIFIMACTX_PHY_DESC_E:
|
|
{
|
|
{
|
|
|
|
+ uint32_t bf_type = 0;
|
|
|
|
+ /* pkt_type - preamble type */
|
|
|
|
+ uint32_t pkt_type = 0;
|
|
|
|
+ uint8_t bandwidth = 0;
|
|
|
|
+ uint8_t mcs = 0;
|
|
|
|
+ uint8_t is_stbc = 0;
|
|
|
|
+ uint8_t nss = 0;
|
|
|
|
+ uint8_t is_triggered = 0;
|
|
|
|
+ uint8_t gi = 0;
|
|
|
|
+ uint8_t he_ppdu_subtype = 0;
|
|
|
|
+ uint32_t ltf_size = 0;
|
|
|
|
+ uint32_t ru_start = 0;
|
|
|
|
+ uint32_t he_data1 = 0;
|
|
|
|
+ uint32_t he_data2 = 0;
|
|
|
|
+ uint32_t he_data3 = 0;
|
|
|
|
+ uint32_t he_data4 = 0;
|
|
|
|
+ uint32_t he_data5 = 0;
|
|
|
|
+ uint32_t he_data6 = 0;
|
|
|
|
+ uint16_t he_mu_flag_1 = 0;
|
|
|
|
+ uint16_t he_mu_flag_2 = 0;
|
|
|
|
+ uint8_t i = 0;
|
|
|
|
+
|
|
status = HAL_MON_MACTX_PHY_DESC;
|
|
status = HAL_MON_MACTX_PHY_DESC;
|
|
|
|
+
|
|
|
|
+ bf_type = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC, BF_TYPE);
|
|
|
|
+ pkt_type = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC, PKT_TYPE);
|
|
|
|
+
|
|
|
|
+ mcs = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC, MCS);
|
|
|
|
+ is_stbc = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC, STBC);
|
|
|
|
+ is_triggered = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC,
|
|
|
|
+ TRIGGERED);
|
|
|
|
+ if (!is_triggered) {
|
|
|
|
+ nss = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC,
|
|
|
|
+ HEAVY_CLIP_NSS);
|
|
|
|
+ bandwidth = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC,
|
|
|
|
+ BANDWIDTH);
|
|
|
|
+ } else {
|
|
|
|
+ nss = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC, NSS);
|
|
|
|
+ /*
|
|
|
|
+ * is_triggered, bw is minimum of AP pkt bw
|
|
|
|
+ * or STA bw
|
|
|
|
+ */
|
|
|
|
+ bandwidth = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC,
|
|
|
|
+ AP_PKT_BW);
|
|
|
|
+ if (pkt_type == TXMON_PKT_TYPE_11AX ||
|
|
|
|
+ pkt_type == TXMON_PKT_TYPE_11BE)
|
|
|
|
+ ru_start =
|
|
|
|
+ HAL_TX_DESC_GET_64(tx_tlv,
|
|
|
|
+ MACTX_PHY_DESC,
|
|
|
|
+ RU_SIZE_UPDATED_V2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ gi = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC,
|
|
|
|
+ CP_SETTING);
|
|
|
|
+ ltf_size = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC, LTF_SIZE);
|
|
|
|
+ he_ppdu_subtype = HAL_TX_DESC_GET_64(tx_tlv, MACTX_PHY_DESC,
|
|
|
|
+ HE_PPDU_SUBTYPE);
|
|
|
|
+
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, beamformed) = bf_type;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, preamble_type) = pkt_type;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, mcs) = mcs;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, ltf_size) = ltf_size;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, nss) = nss;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, is_stbc) = is_stbc;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, bw) = bandwidth;
|
|
|
|
+
|
|
|
|
+ switch (ppdu_info->rx_status.preamble_type) {
|
|
|
|
+ case TXMON_PKT_TYPE_11N_MM:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, ht_flags) = 1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info,
|
|
|
|
+ rtap_flags) |= HT_SGI_PRESENT;
|
|
|
|
+ break;
|
|
|
|
+ case TXMON_PKT_TYPE_11AC:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, vht_flags) = 1;
|
|
|
|
+ break;
|
|
|
|
+ case TXMON_PKT_TYPE_11AX:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_flags) = 1;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!TXMON_HAL_STATUS(ppdu_info, he_flags))
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ /* update he flags */
|
|
|
|
+ /* PPDU FORMAT */
|
|
|
|
+ switch (he_ppdu_subtype) {
|
|
|
|
+ case TXMON_HE_SUBTYPE_SU:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data1) |=
|
|
|
|
+ QDF_MON_STATUS_HE_SU_FORMAT_TYPE;
|
|
|
|
+ break;
|
|
|
|
+ case TXMON_HE_SUBTYPE_TRIG:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data1) |=
|
|
|
|
+ QDF_MON_STATUS_HE_TRIG_FORMAT_TYPE;
|
|
|
|
+ break;
|
|
|
|
+ case TXMON_HE_SUBTYPE_MU:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data1) |=
|
|
|
|
+ QDF_MON_STATUS_HE_MU_FORMAT_TYPE;
|
|
|
|
+ break;
|
|
|
|
+ case TXMON_HE_SUBTYPE_EXT_SU:
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data1) |=
|
|
|
|
+ QDF_MON_STATUS_HE_EXT_SU_FORMAT_TYPE;
|
|
|
|
+ break;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ /* BEAM CHANGE */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_BEAM_CHANGE_KNOWN;
|
|
|
|
+ if (ppdu_info->rx_status.beamformed) {
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_TXBF_KNOWN;
|
|
|
|
+ he_data5 |= (1 << QDF_MON_STATUS_TXBF_SHIFT);
|
|
|
|
+ he_data3 |= (1 << QDF_MON_STATUS_BEAM_CHANGE_SHIFT);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* UL/DL known */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_DL_UL_KNOWN;
|
|
|
|
+ he_data3 |= (1 << QDF_MON_STATUS_DL_UL_SHIFT);
|
|
|
|
+
|
|
|
|
+ /* MCS */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_MCS_KNOWN;
|
|
|
|
+ he_data3 |= (mcs << QDF_MON_STATUS_TRANSMIT_MCS_SHIFT);
|
|
|
|
+
|
|
|
|
+ /* STBC */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_STBC_KNOWN;
|
|
|
|
+ he_data3 |= (is_stbc << QDF_MON_STATUS_STBC_SHIFT);
|
|
|
|
+
|
|
|
|
+ /* GI */
|
|
|
|
+ he_data2 |= QDF_MON_STATUS_HE_GI_KNOWN;
|
|
|
|
+ he_data5 |= (gi << QDF_MON_STATUS_GI_SHIFT);
|
|
|
|
+
|
|
|
|
+ /* NSS */
|
|
|
|
+ he_data6 |= (nss << QDF_MON_STATUS_HE_DATA_6_NSS_SHIFT);
|
|
|
|
+
|
|
|
|
+ /* Data BW and RU allocation */
|
|
|
|
+ he_data1 |= QDF_MON_STATUS_HE_DATA_BW_RU_KNOWN;
|
|
|
|
+ he_data5 |= bandwidth;
|
|
|
|
+
|
|
|
|
+ /* update stack variable to ppdu_info */
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data1) |= he_data1;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data2) |= he_data2;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data3) |= he_data3;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data4) |= he_data4;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data5) |= he_data5;
|
|
|
|
+ TXMON_HAL_STATUS(ppdu_info, he_data6) |= he_data6;
|
|
|
|
+
|
|
|
|
+ for (i = 0; i < TXMON_HAL(ppdu_info, num_users); i++) {
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_data1) |= he_data1;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_data2) |= he_data2;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_data3) |= he_data3;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_data4) |= he_data4;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_data5) |= he_data5;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_data6) |= he_data6;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_flags1) = he_mu_flag_1;
|
|
|
|
+ TXMON_HAL_USER(ppdu_info, i, he_flags2) = he_mu_flag_2;
|
|
|
|
+ }
|
|
|
|
+
|
|
SHOW_DEFINED(WIFIMACTX_PHY_DESC_E);
|
|
SHOW_DEFINED(WIFIMACTX_PHY_DESC_E);
|
|
break;
|
|
break;
|
|
}
|
|
}
|