From 9c7deabd5937733a0f1c97da8f21ba7b9e52f8f9 Mon Sep 17 00:00:00 2001 From: Xianjun Jiao Date: Tue, 29 Mar 2022 12:21:25 +0200 Subject: [PATCH] Make the freq/band report in openwifi_rx_interrupt from our driver internal variable instead of Linux setting. The latter might be asynchronous and cause issue: if the received management frame has wrong freq/band info, the Linux mac80211 might reject some state or have issue according to Linux kernel doc somewhere --- driver/sdr.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/driver/sdr.c b/driver/sdr.c index e4d1a2d..64be6a1 100644 --- a/driver/sdr.c +++ b/driver/sdr.c @@ -500,8 +500,12 @@ static irqreturn_t openwifi_rx_interrupt(int irq, void *dev_id) // def in ieee80211_rate openwifi_rates 0~11. 0~3 11b(1M~11M), 4~11 11a/g(6M~54M) rx_status.rate_idx = wifi_rate_table_mapping[rate_idx]; rx_status.signal = signal; - rx_status.freq = dev->conf.chandef.chan->center_freq; - rx_status.band = dev->conf.chandef.chan->band; + + // rx_status.freq = dev->conf.chandef.chan->center_freq; + rx_status.freq = priv->actual_rx_lo; + // rx_status.band = dev->conf.chandef.chan->band; + rx_status.band = (rx_status.freq<2500?NL80211_BAND_2GHZ:NL80211_BAND_5GHZ); + rx_status.mactime = ( ( (u64)tsft_low ) | ( ((u64)tsft_high)<<32 ) ); rx_status.flag |= RX_FLAG_MACTIME_START; if (!fcs_ok)