]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw88: Report the signal strength only if it's known
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Tue, 22 Oct 2024 17:20:26 +0000 (20:20 +0300)
committerPing-Ke Shih <pkshih@realtek.com>
Tue, 29 Oct 2024 03:37:52 +0000 (11:37 +0800)
RTL8811CU doesn't report the signal strength for many (any?) data
frames. When the signal strength is not known, set
RX_FLAG_NO_SIGNAL_VAL in order to avoid reporting a signal
strength of 0.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/f7e1e448-2c9b-498f-b8b1-a14dd967d7d3@gmail.com
drivers/net/wireless/realtek/rtw88/rx.c

index 1de93fc9efe940755d8e8b363b142e8ee80ec70a..90fc8a5fa89e7d67ff273c3f89c8276efef18bfe 100644 (file)
@@ -234,10 +234,14 @@ static void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev,
        else
                rx_status->bw = RATE_INFO_BW_20;
 
-       rx_status->signal = pkt_stat->signal_power;
-       for (path = 0; path < rtwdev->hal.rf_path_num; path++) {
-               rx_status->chains |= BIT(path);
-               rx_status->chain_signal[path] = pkt_stat->rx_power[path];
+       if (pkt_stat->phy_status) {
+               rx_status->signal = pkt_stat->signal_power;
+               for (path = 0; path < rtwdev->hal.rf_path_num; path++) {
+                       rx_status->chains |= BIT(path);
+                       rx_status->chain_signal[path] = pkt_stat->rx_power[path];
+               }
+       } else {
+               rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL;
        }
 
        rtw_rx_addr_match(rtwdev, pkt_stat, hdr);