wifi: rtw89: suspend DIG when remain-on-channel

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
This commit is contained in:
Chih-Kang Chang 2026-04-20 11:40:49 +08:00 committed by Ping-Ke Shih
parent 6a9b4babeb
commit 602b58bb45

View 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,