diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 18f682b..f2e5ba2 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -4011,6 +4011,12 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe) rtap_hdr = (struct ieee80211_radiotap_header *)&hdr_buf[0]; rtap_hdr->it_version = PKTHDR_RADIOTAP_VERSION; +#ifdef CONFIG_RTL8814A + /* RTL8814AU rx descriptor has no bandwidth, ldpc, stbc and sgi info */ + /* fixup bandwidth */ + pattrib->bw = pattrib->phy_info.BandWidth & 0x03; +#endif + if(pHalData->NumTotalRFPath>0 && pattrib->physt) { rtap_hdr->it_present |= (1<physt) { - hdr_buf[rt_len] |= BIT0; - hdr_buf[rt_len+1] |= (pattrib->phy_info.BandWidth & 0x03); - } -#else hdr_buf[rt_len] |= BIT0; hdr_buf[rt_len+1] |= (pattrib->bw & 0x03); -#endif + /* guard interval */ +#ifndef CONFIG_RTL8814A hdr_buf[rt_len] |= BIT2; +#endif hdr_buf[rt_len+1] |= (pattrib->sgi & 0x01) << 2; /* STBC */ +#ifndef CONFIG_RTL8814A hdr_buf[rt_len] |= BIT5; +#endif hdr_buf[rt_len+1] |= (pattrib->stbc & 0x03) << 5; rt_len += 2; @@ -4206,15 +4210,21 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe) tmp_16bit |= BIT8; /* STBC */ +#ifndef CONFIG_RTL8814A tmp_16bit |= BIT0; +#endif hdr_buf[rt_len+2] |= (pattrib->stbc & 0x01); /* Guard interval */ +#ifndef CONFIG_RTL8814A tmp_16bit |= BIT2; +#endif hdr_buf[rt_len+2] |= (pattrib->sgi & 0x01) << 2; /* LDPC extra OFDM symbol */ +#ifndef CONFIG_RTL8814A tmp_16bit |= BIT4; +#endif hdr_buf[rt_len+2] |= (pattrib->ldpc & 0x01) << 4; memcpy(&hdr_buf[rt_len], &tmp_16bit, 2); @@ -4328,7 +4338,6 @@ int recv_frame_monitor(_adapter *padapter, union recv_frame *rframe) _queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue; _pkt *pskb = NULL; - /* fill radiotap header */ if (fill_radiotap_hdr(padapter, rframe) == _FAIL) { ret = _FAIL; diff --git a/hal/phydm/phydm_hwconfig.c b/hal/phydm/phydm_hwconfig.c index c18952c..b680849 100644 --- a/hal/phydm/phydm_hwconfig.c +++ b/hal/phydm/phydm_hwconfig.c @@ -1170,7 +1170,7 @@ odm_RxPhyBWJaguarSeries_Parsing( ) { - if(pPktinfo->DataRate <= ODM_RATE54M) { + if(pPktinfo->DataRate > ODM_RATE54M) { switch (pPhyStaRpt->r_RFMOD) { case 1: if (pPhyStaRpt->sub_chnl == 0) @@ -1193,8 +1193,8 @@ odm_RxPhyBWJaguarSeries_Parsing( pPhyInfo->BandWidth = 0; break; } - } - + } else + pPhyInfo->BandWidth = 0; } VOID