From 83e1baa6c1d75e4e73b361da26c1cbb5e9518ab5 Mon Sep 17 00:00:00 2001 From: kimocoder Date: Thu, 14 Nov 2019 02:03:02 +0100 Subject: [PATCH] Don't place signal strength into radiotap header if not available --- core/rtw_recv.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) 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 */