From 33d12b04c5ea57c44bf9a590dcddb64444be410c Mon Sep 17 00:00:00 2001 From: kimocoder Date: Wed, 22 May 2019 00:10:03 +0200 Subject: [PATCH] Fix radiotap header for 8814 --- core/rtw_recv.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/core/rtw_recv.c b/core/rtw_recv.c index ee51ced..12dd0bd 100644 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -3964,6 +3964,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.band_width & 0x03; +#endif + /* tsft */ if (pattrib->tsfl) { u64 tmp_64bit; @@ -4082,22 +4088,19 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, hdr_buf[rt_len] |= BIT1; /* MCS index known */ /* bandwidth */ -#ifdef CONFIG_RTL8814A - if(pattrib->physt) { - hdr_buf[rt_len] |= BIT0; - hdr_buf[rt_len+1] |= (pattrib->phy_info.band_width & 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; hdr_buf[rt_len + 1] |= (pattrib->sgi & 0x01) << 2; +#endif /* STBC */ +#ifndef CONFIG_RTL8814A hdr_buf[rt_len] |= BIT5; +#endif hdr_buf[rt_len + 1] |= (pattrib->stbc & 0x03) << 5; rt_len += 2; @@ -4132,7 +4135,9 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe, 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);