Browse Source

qcacmn: Fix GI and LTF in radiotap field of HE

Fix GI and LTF fields for HE SU PPDU and HE ER SU PPDU
when DCM and STBC is 1.

Change-Id: I2f1f6cf52a7ca4182541fe7e95bf27e560ad60b8
CRs-fixed: 2185322
sumedh baikady 7 years ago
parent
commit
3303889557
1 changed files with 11 additions and 2 deletions
  1. 11 2
      hal/wifi3.0/hal_api_mon.h

+ 11 - 2
hal/wifi3.0/hal_api_mon.h

@@ -477,6 +477,8 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info)
 {
 	uint32_t tlv_tag, user_id, tlv_len, value;
 	uint8_t group_id = 0;
+	uint8_t he_dcm = 0;
+	uint8_t he_stbc = 0;
 	uint16_t he_gi = 0;
 	uint16_t he_ltf = 0;
 
@@ -789,6 +791,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info)
 		ppdu_info->rx_status.he_data3 |= value;
 		value = HAL_RX_GET(he_sig_a_su_info,
 				HE_SIG_A_SU_INFO_0, DCM);
+		he_dcm = value;
 		value = value << QDF_MON_STATUS_DCM_SHIFT;
 		ppdu_info->rx_status.he_data3 |= value;
 		value = HAL_RX_GET(he_sig_a_su_info,
@@ -802,6 +805,7 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info)
 		ppdu_info->rx_status.he_data3 |= value;
 		value = HAL_RX_GET(he_sig_a_su_info,
 				HE_SIG_A_SU_INFO_1, STBC);
+		he_stbc = value;
 		value = value << QDF_MON_STATUS_STBC_SHIFT;
 		ppdu_info->rx_status.he_data3 |= value;
 
@@ -831,8 +835,13 @@ hal_rx_status_get_tlv_info(void *rx_tlv, struct hal_rx_ppdu_info *ppdu_info)
 				he_ltf = HE_LTF_2_X;
 				break;
 		case 3:
-				he_gi = HE_GI_3_2;
-				he_ltf = HE_LTF_4_X;
+				if (he_dcm && he_stbc) {
+					he_gi = HE_GI_0_8;
+					he_ltf = HE_LTF_4_X;
+				} else {
+					he_gi = HE_GI_3_2;
+					he_ltf = HE_LTF_4_X;
+				}
 				break;
 		}
 		ppdu_info->rx_status.sgi = he_gi;