diff --git a/core/rtw_recv.c b/core/rtw_recv.c index 38ee29e..64edefd 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -4013,7 +4013,7 @@ 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; - if(pHalData->NumTotalRFPath>0) { + if(pHalData->NumTotalRFPath>0 && pattrib->physt) { rtap_hdr->it_present |= (1<it_present |= (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL); - hdr_buf[rt_len] = pattrib->phy_info.recv_signal_power; - rt_len += 1; + if(pattrib->physt) { + /* dBm Antenna Signal */ + rtap_hdr->it_present |= (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL); + hdr_buf[rt_len] = pattrib->phy_info.recv_signal_power; + rt_len += 1; #if 0 /* dBm Antenna Noise */ @@ -4139,7 +4140,9 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, rt_len += 1; #endif - rt_len++; // alignment + rt_len++; // alignment + } + /* Signal Quality */ rtap_hdr->it_present |= (1 << IEEE80211_RADIOTAP_LOCK_QUALITY); tmp_16bit = cpu_to_le16(pattrib->phy_info.signal_quality); @@ -4264,11 +4267,13 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, rt_len += 2; } - for(i=0; iNumTotalRFPath; i++) { - hdr_buf[rt_len] = pattrib->phy_info.rx_pwr[i]; - rt_len ++; - hdr_buf[rt_len] = i; - rt_len ++; + if (pattrib->physt) { + for(i=0; iNumTotalRFPath; i++) { + hdr_buf[rt_len] = pattrib->phy_info.rx_pwr[i]; + rt_len ++; + hdr_buf[rt_len] = i; + rt_len ++; + } } /* push to skb */