]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: suspend DIG when remain-on-channel
authorChih-Kang Chang <gary.chang@realtek.com>
Mon, 20 Apr 2026 03:40:49 +0000 (11:40 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Wed, 29 Apr 2026 04:52:50 +0000 (12:52 +0800)
The PD (Packet Detection) lower bound is set after the STA interface
connects. When the P2P interface attempts to find peers, it enters
the remain-on-channel flow to listen for probe requests. However, if
the RSSI of the connected AP is too high, the P2P interface fails to
receive it. To resolve this, suspend the DIG during the
remain-on-channel period.

Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260420034051.17666-15-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/core.c

index 7fe979e47ad58e592c35e9258a7d63c3219d4567..41eefe901ab29ac74eb9b689f8185374b2d9c6b8 100644 (file)
@@ -4474,6 +4474,7 @@ void rtw89_roc_start(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
        reg = rtw89_mac_reg_by_idx(rtwdev, mac->rx_fltr, rtwvif_link->mac_idx);
        rtw89_write32_clr(rtwdev, reg, B_AX_A_UC_CAM_MATCH | B_AX_A_BC_CAM_MATCH);
 
+       rtw89_phy_dig_suspend(rtwdev);
        ieee80211_ready_on_channel(hw);
        wiphy_delayed_work_cancel(hw->wiphy, &rtwvif->roc.roc_work);
        wiphy_delayed_work_queue(hw->wiphy, &rtwvif->roc.roc_work,
@@ -4518,6 +4519,7 @@ void rtw89_roc_end(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
 
        rtw89_core_handle_sta_pending_tx(rtwdev, rtwvif_link);
        queue_work(rtwdev->txq_wq, &rtwdev->txq_work);
+       rtw89_phy_dig_resume(rtwdev, true);
 
        if (hw->conf.flags & IEEE80211_CONF_IDLE)
                wiphy_delayed_work_queue(hw->wiphy, &roc->roc_work,