mac80211: refresh patches

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2024-07-12 13:07:27 +08:00
parent fab49a1289
commit c79ffb6839
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
36 changed files with 69 additions and 426 deletions

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -3534,7 +3534,8 @@ int ath10k_core_register(struct ath10k *
@@ -3537,7 +3537,8 @@ int ath10k_core_register(struct ath10k *
* Forcing the work to be done immediately works around this problem
* but may also delay the boot when firmware images cannot be found.
*/
@ -12,7 +12,7 @@
}
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -1261,6 +1261,9 @@ static int ath10k_debug_cal_data_fetch(s
@@ -1260,6 +1260,9 @@ static int ath10k_debug_cal_data_fetch(s
if (ar->hw_params.cal_data_len == 0)
return -EOPNOTSUPP;

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -5034,6 +5034,7 @@ static void ath10k_mac_setup_ht_vht_cap(
@@ -5036,6 +5036,7 @@ static void ath10k_mac_setup_ht_vht_cap(
if (ar->phy_capability & WHAL_WLAN_11G_CAPABILITY) {
band = &ar->mac.sbands[NL80211_BAND_2GHZ];
band->ht_cap = ht_cap;

View File

@ -18,7 +18,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -10089,7 +10089,6 @@ int ath10k_mac_register(struct ath10k *a
@@ -10090,7 +10090,6 @@ int ath10k_mac_register(struct ath10k *a
ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA);
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -2777,9 +2777,9 @@ static void ath11k_peer_assoc_h_phymode(
@@ -2773,9 +2773,9 @@ static void ath11k_peer_assoc_h_phymode(
} else if (sta->deflink.vht_cap.vht_supported &&
!ath11k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
@ -12,7 +12,7 @@
} else if (sta->deflink.ht_cap.ht_supported &&
!ath11k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
@@ -5615,6 +5615,9 @@ static void ath11k_mac_setup_ht_vht_cap(
@@ -5613,6 +5613,9 @@ static void ath11k_mac_setup_ht_vht_cap(
*ht_cap_info = ht_cap;
band->ht_cap = ath11k_create_ht_cap(ar, ht_cap,
rate_cap_rx_chainmask);

View File

@ -66,7 +66,7 @@ Link: https://lore.kernel.org/r/20221128075653.5221-1-pkshih@realtek.com
void rtw_fw_channel_switch(struct rtw_dev *rtwdev, bool enable);
--- a/drivers/net/wireless/realtek/rtw88/mac.c
+++ b/drivers/net/wireless/realtek/rtw88/mac.c
@@ -916,7 +916,8 @@ out:
@@ -918,7 +918,8 @@ out:
return ret;
}
@ -76,7 +76,7 @@ Link: https://lore.kernel.org/r/20221128075653.5221-1-pkshih@realtek.com
{
if (rtw_chip_wcpu_11n(rtwdev))
return __rtw_download_firmware_legacy(rtwdev, fw);
@@ -924,6 +925,21 @@ int rtw_download_firmware(struct rtw_dev
@@ -926,6 +927,21 @@ int rtw_download_firmware(struct rtw_dev
return __rtw_download_firmware(rtwdev, fw);
}

View File

@ -26,7 +26,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-2-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -1731,7 +1731,8 @@ static void rtw_load_firmware_cb(const s
@@ -1746,7 +1746,8 @@ static void rtw_load_firmware_cb(const s
update_firmware_info(rtwdev, fw);
complete_all(&fw->completion);
@ -36,7 +36,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-2-s.hauer@pengutronix.de
fw->version, fw->sub_version, fw->sub_index, fw->h2c_version);
}
@@ -1757,6 +1758,7 @@ static int rtw_load_firmware(struct rtw_
@@ -1772,6 +1773,7 @@ static int rtw_load_firmware(struct rtw_
return -ENOENT;
}
@ -46,7 +46,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-2-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1851,6 +1851,7 @@ struct rtw_fw_state {
@@ -1854,6 +1854,7 @@ struct rtw_fw_state {
u16 h2c_version;
u32 feature;
u32 feature_ext;

View File

@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-3-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -487,8 +487,8 @@ static int rtw_ops_sta_remove(struct iee
@@ -483,8 +483,8 @@ static int rtw_ops_sta_remove(struct iee
{
struct rtw_dev *rtwdev = hw->priv;

View File

@ -110,7 +110,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-4-s.hauer@pengutronix.de
static inline u32
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2067,7 +2067,6 @@ int rtw_core_init(struct rtw_dev *rtwdev
@@ -2080,7 +2080,6 @@ int rtw_core_init(struct rtw_dev *rtwdev
skb_queue_head_init(&rtwdev->coex.queue);
skb_queue_head_init(&rtwdev->tx_report.queue);
@ -120,7 +120,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-4-s.hauer@pengutronix.de
spin_lock_init(&rtwdev->tx_report.q_lock);
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1995,9 +1995,6 @@ struct rtw_dev {
@@ -1998,9 +1998,6 @@ struct rtw_dev {
/* ensures exclusive access from mac80211 callbacks */
struct mutex mutex;

View File

@ -89,7 +89,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-5-s.hauer@pengutronix.de
void
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2067,7 +2067,6 @@ int rtw_core_init(struct rtw_dev *rtwdev
@@ -2080,7 +2080,6 @@ int rtw_core_init(struct rtw_dev *rtwdev
skb_queue_head_init(&rtwdev->coex.queue);
skb_queue_head_init(&rtwdev->tx_report.queue);
@ -99,7 +99,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-5-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -2020,8 +2020,6 @@ struct rtw_dev {
@@ -2023,8 +2023,6 @@ struct rtw_dev {
struct {
/* incicate the mail box to use with fw */
u8 last_box_num;

View File

@ -52,7 +52,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-6-s.hauer@pengutronix.de
}
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2071,7 +2071,6 @@ int rtw_core_init(struct rtw_dev *rtwdev
@@ -2084,7 +2084,6 @@ int rtw_core_init(struct rtw_dev *rtwdev
spin_lock_init(&rtwdev->tx_report.q_lock);
mutex_init(&rtwdev->mutex);
@ -60,7 +60,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-6-s.hauer@pengutronix.de
mutex_init(&rtwdev->hal.tx_power_mutex);
init_waitqueue_head(&rtwdev->coex.wait);
@@ -2143,7 +2142,6 @@ void rtw_core_deinit(struct rtw_dev *rtw
@@ -2156,7 +2155,6 @@ void rtw_core_deinit(struct rtw_dev *rtw
}
mutex_destroy(&rtwdev->mutex);
@ -70,7 +70,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-6-s.hauer@pengutronix.de
EXPORT_SYMBOL(rtw_core_deinit);
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1501,8 +1501,6 @@ struct rtw_coex_stat {
@@ -1504,8 +1504,6 @@ struct rtw_coex_stat {
};
struct rtw_coex {

View File

@ -50,7 +50,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-8-s.hauer@pengutronix.de
+rtw88_usb-objs := usb.o
--- a/drivers/net/wireless/realtek/rtw88/mac.c
+++ b/drivers/net/wireless/realtek/rtw88/mac.c
@@ -1058,6 +1058,9 @@ static int txdma_queue_mapping(struct rt
@@ -1060,6 +1060,9 @@ static int txdma_queue_mapping(struct rt
if (rtw_chip_wcpu_11ac(rtwdev))
rtw_write32(rtwdev, REG_H2CQ_CSR, BIT_H2CQ_FULL);
@ -62,7 +62,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-8-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -1783,6 +1783,10 @@ static int rtw_chip_parameter_setup(stru
@@ -1798,6 +1798,10 @@ static int rtw_chip_parameter_setup(stru
rtwdev->hci.rpwm_addr = 0x03d9;
rtwdev->hci.cpwm_addr = 0x03da;
break;
@ -75,7 +75,7 @@ Link: https://lore.kernel.org/r/20221202081224.2779981-8-s.hauer@pengutronix.de
return -EINVAL;
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -871,6 +871,10 @@ struct rtw_chip_ops {
@@ -874,6 +874,10 @@ struct rtw_chip_ops {
bool is_tx2_path);
void (*config_txrx_mode)(struct rtw_dev *rtwdev, u8 tx_path,
u8 rx_path, bool is_tx2_path);

View File

@ -1,6 +1,6 @@
--- a/Kconfig.local
+++ b/Kconfig.local
@@ -1135,15 +1135,30 @@ config BACKPORTED_RTW88_CORE
@@ -1111,15 +1111,30 @@ config BACKPORTED_RTW88_CORE
config BACKPORTED_RTW88_PCI
tristate
default RTW88_PCI
@ -49,7 +49,7 @@
CPTCFG_SSB_PCMCIAHOST=y
--- a/local-symbols
+++ b/local-symbols
@@ -375,13 +375,18 @@ RTL8XXXU_UNTESTED=
@@ -367,13 +367,18 @@ RTL8XXXU_UNTESTED=
RTW88=
RTW88_CORE=
RTW88_PCI=

View File

@ -26,7 +26,7 @@ Link: https://lore.kernel.org/r/20230108211324.442823-4-martin.blumenstingl@goog
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -737,7 +737,7 @@ static void rtw_ra_mask_info_update(stru
@@ -733,7 +733,7 @@ static void rtw_ra_mask_info_update(stru
br_data.rtwdev = rtwdev;
br_data.vif = vif;
br_data.mask = mask;
@ -35,7 +35,7 @@ Link: https://lore.kernel.org/r/20230108211324.442823-4-martin.blumenstingl@goog
}
static int rtw_ops_set_bitrate_mask(struct ieee80211_hw *hw,
@@ -746,7 +746,9 @@ static int rtw_ops_set_bitrate_mask(stru
@@ -742,7 +742,9 @@ static int rtw_ops_set_bitrate_mask(stru
{
struct rtw_dev *rtwdev = hw->priv;

View File

@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20230218152944.48842-3-martin.blumenstingl@googl
--- a/drivers/net/wireless/realtek/rtw88/mac.c
+++ b/drivers/net/wireless/realtek/rtw88/mac.c
@@ -1043,6 +1043,9 @@ static int txdma_queue_mapping(struct rt
@@ -1045,6 +1045,9 @@ static int txdma_queue_mapping(struct rt
else
return -EINVAL;
break;
@ -28,7 +28,7 @@ Link: https://lore.kernel.org/r/20230218152944.48842-3-martin.blumenstingl@googl
default:
return -EINVAL;
}
@@ -1205,6 +1208,9 @@ static int priority_queue_cfg(struct rtw
@@ -1207,6 +1210,9 @@ static int priority_queue_cfg(struct rtw
else
return -EINVAL;
break;

View File

@ -1,30 +0,0 @@
From b7ed9fa2cb76ca7a3c3cd4a6d35748fe1fbda9f6 Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: Sun, 26 Feb 2023 23:10:03 +0100
Subject: [PATCH 59/85] wifi: rtw88: mac: Return the original error from
rtw_pwr_seq_parser()
rtw_pwr_seq_parser() calls rtw_sub_pwr_seq_parser() which can either
return -EBUSY, -EINVAL or 0. Propagate the original error code instead
of unconditionally returning -EBUSY in case of an error.
Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230226221004.138331-2-martin.blumenstingl@googlemail.com
---
drivers/net/wireless/realtek/rtw88/mac.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/wireless/realtek/rtw88/mac.c
+++ b/drivers/net/wireless/realtek/rtw88/mac.c
@@ -236,7 +236,7 @@ static int rtw_pwr_seq_parser(struct rtw
ret = rtw_sub_pwr_seq_parser(rtwdev, intf_mask, cut_mask, cmd);
if (ret)
- return -EBUSY;
+ return ret;
idx++;
} while (1);

View File

@ -1,41 +0,0 @@
From 15c8e267dfa62f207ee1db666c822324e3362b84 Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date: Sun, 26 Feb 2023 23:10:04 +0100
Subject: [PATCH 60/85] wifi: rtw88: mac: Return the original error from
rtw_mac_power_switch()
rtw_mac_power_switch() calls rtw_pwr_seq_parser() which can return
-EINVAL, -EBUSY or 0. Propagate the original error code instead of
unconditionally returning -EINVAL in case of an error.
Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230226221004.138331-3-martin.blumenstingl@googlemail.com
---
drivers/net/wireless/realtek/rtw88/mac.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/realtek/rtw88/mac.c
+++ b/drivers/net/wireless/realtek/rtw88/mac.c
@@ -250,6 +250,7 @@ static int rtw_mac_power_switch(struct r
const struct rtw_pwr_seq_cmd **pwr_seq;
u8 rpwm;
bool cur_pwr;
+ int ret;
if (rtw_chip_wcpu_11ac(rtwdev)) {
rpwm = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr);
@@ -273,8 +274,9 @@ static int rtw_mac_power_switch(struct r
return -EALREADY;
pwr_seq = pwr_on ? chip->pwr_on_seq : chip->pwr_off_seq;
- if (rtw_pwr_seq_parser(rtwdev, pwr_seq))
- return -EINVAL;
+ ret = rtw_pwr_seq_parser(rtwdev, pwr_seq);
+ if (ret)
+ return ret;
if (pwr_on)
set_bit(RTW_FLAG_POWERON, rtwdev->flags);

View File

@ -25,7 +25,7 @@ Link: https://lore.kernel.org/r/20230405200729.632435-5-martin.blumenstingl@goog
bool rtw_disable_lps_deep_mode;
EXPORT_SYMBOL(rtw_disable_lps_deep_mode);
@@ -1785,6 +1786,10 @@ static int rtw_chip_parameter_setup(stru
@@ -1800,6 +1801,10 @@ static int rtw_chip_parameter_setup(stru
rtwdev->hci.rpwm_addr = 0x03d9;
rtwdev->hci.cpwm_addr = 0x03da;
break;

View File

@ -23,7 +23,7 @@ Link: https://lore.kernel.org/r/20230405200729.632435-6-martin.blumenstingl@goog
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2163,9 +2163,11 @@ int rtw_register_hw(struct rtw_dev *rtwd
@@ -2176,9 +2176,11 @@ int rtw_register_hw(struct rtw_dev *rtwd
int max_tx_headroom = 0;
int ret;

View File

@ -20,7 +20,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-2-pkshih@realtek.com
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -155,25 +155,30 @@ static int rtw_ops_add_interface(struct
@@ -146,25 +146,30 @@ static int rtw_ops_add_interface(struct
struct rtw_vif *rtwvif = (struct rtw_vif *)vif->drv_priv;
enum rtw_net_type net_type;
u32 config = 0;
@ -54,7 +54,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-2-pkshih@realtek.com
rtw_leave_lps_deep(rtwdev);
switch (vif->type) {
@@ -195,6 +200,7 @@ static int rtw_ops_add_interface(struct
@@ -186,6 +191,7 @@ static int rtw_ops_add_interface(struct
break;
default:
WARN_ON(1);
@ -62,9 +62,9 @@ Link: https://lore.kernel.org/r/20230414121135.17828-2-pkshih@realtek.com
mutex_unlock(&rtwdev->mutex);
return -EINVAL;
}
@@ -236,6 +242,7 @@ static void rtw_ops_remove_interface(str
rtwvif->bcn_ctrl = 0;
config |= PORT_SET_BCN_CTRL;
@@ -425,6 +431,7 @@ static void rtw_ops_bss_info_changed(str
rtw_recalc_lps(rtwdev, NULL);
rtw_vif_port_config(rtwdev, rtwvif, config);
+ clear_bit(rtwvif->port, rtwdev->hw_port);
@ -72,7 +72,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-2-pkshih@realtek.com
}
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -610,6 +610,7 @@ free:
@@ -625,6 +625,7 @@ free:
rcu_read_unlock();
rtw_iterate_stas_atomic(rtwdev, rtw_reset_sta_iter, rtwdev);
rtw_iterate_vifs_atomic(rtwdev, rtw_reset_vif_iter, rtwdev);
@ -98,7 +98,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-2-pkshih@realtek.com
enum rtw_wow_flags {
RTW_WOW_FLAG_EN_MAGIC_PKT,
RTW_WOW_FLAG_EN_REKEY_PKT,
@@ -2036,6 +2045,7 @@ struct rtw_dev {
@@ -2039,6 +2048,7 @@ struct rtw_dev {
u8 sta_cnt;
u32 rts_threshold;

View File

@ -20,17 +20,17 @@ Link: https://lore.kernel.org/r/20230414121135.17828-3-pkshih@realtek.com
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -212,6 +212,7 @@ static int rtw_ops_add_interface(struct
@@ -203,6 +203,7 @@ static int rtw_ops_add_interface(struct
rtwvif->bcn_ctrl = bcn_ctrl;
config |= PORT_SET_BCN_CTRL;
rtw_vif_port_config(rtwdev, rtwvif, config);
+ rtw_core_port_switch(rtwdev, vif);
rtw_recalc_lps(rtwdev, vif);
mutex_unlock(&rtwdev->mutex);
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2251,6 +2251,85 @@ void rtw_unregister_hw(struct rtw_dev *r
@@ -2264,6 +2264,85 @@ void rtw_unregister_hw(struct rtw_dev *r
}
EXPORT_SYMBOL(rtw_unregister_hw);
@ -118,7 +118,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-3-pkshih@realtek.com
MODULE_LICENSE("Dual BSD/GPL");
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -2198,4 +2198,5 @@ void rtw_set_txrx_1ss(struct rtw_dev *rt
@@ -2201,4 +2201,5 @@ void rtw_set_txrx_1ss(struct rtw_dev *rt
void rtw_update_channel(struct rtw_dev *rtwdev, u8 center_channel,
u8 primary_channel, enum rtw_supported_band band,
enum rtw_bandwidth bandwidth);

View File

@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-4-pkshih@realtek.com
fifo->rsvd_pg_num = fifo->rsvd_drv_pg_num;
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1177,6 +1177,7 @@ struct rtw_chip_info {
@@ -1180,6 +1180,7 @@ struct rtw_chip_info {
u32 txff_size;
u32 rxff_size;
u32 fw_rxff_size;

View File

@ -17,7 +17,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-5-pkshih@realtek.com
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -449,12 +449,24 @@ static int rtw_ops_start_ap(struct ieee8
@@ -445,12 +445,24 @@ static int rtw_ops_start_ap(struct ieee8
const struct rtw_chip_info *chip = rtwdev->chip;
mutex_lock(&rtwdev->mutex);
@ -42,7 +42,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-5-pkshih@realtek.com
static int rtw_ops_conf_tx(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
unsigned int link_id, u16 ac,
@@ -916,6 +928,7 @@ const struct ieee80211_ops rtw_ops = {
@@ -912,6 +924,7 @@ const struct ieee80211_ops rtw_ops = {
.configure_filter = rtw_ops_configure_filter,
.bss_info_changed = rtw_ops_bss_info_changed,
.start_ap = rtw_ops_start_ap,
@ -63,7 +63,7 @@ Link: https://lore.kernel.org/r/20230414121135.17828-5-pkshih@realtek.com
rtwdev->watch_dog_cnt++;
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -2058,6 +2058,7 @@ struct rtw_dev {
@@ -2061,6 +2061,7 @@ struct rtw_dev {
bool need_rfk;
struct completion fw_scan_density;

View File

@ -40,7 +40,7 @@ Link: https://lore.kernel.org/r/20230414121300.17900-1-pkshih@realtek.com
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -417,6 +417,7 @@ static void rtw_ops_bss_info_changed(str
@@ -409,6 +409,7 @@ static void rtw_ops_bss_info_changed(str
if (changed & BSS_CHANGED_BEACON) {
rtw_set_dtim_period(rtwdev, conf->dtim_period);
rtw_fw_download_rsvd_page(rtwdev);

View File

@ -43,7 +43,7 @@ Link: https://lore.kernel.org/r/20230414121312.17954-1-pkshih@realtek.com
#endif
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -393,7 +393,8 @@ static void rtw_ops_bss_info_changed(str
@@ -385,7 +385,8 @@ static void rtw_ops_bss_info_changed(str
* when disconnected by peer
*/
if (test_bit(RTW_FLAG_SCANNING, rtwdev->flags))
@ -53,7 +53,7 @@ Link: https://lore.kernel.org/r/20230414121312.17954-1-pkshih@realtek.com
}
config |= PORT_SET_NET_TYPE;
@@ -870,7 +871,7 @@ static int rtw_ops_hw_scan(struct ieee80
@@ -866,7 +867,7 @@ static int rtw_ops_hw_scan(struct ieee80
rtw_hw_scan_start(rtwdev, vif, req);
ret = rtw_hw_scan_offload(rtwdev, vif, true);
if (ret) {
@ -62,7 +62,7 @@ Link: https://lore.kernel.org/r/20230414121312.17954-1-pkshih@realtek.com
rtw_err(rtwdev, "HW scan failed with status: %d\n", ret);
}
mutex_unlock(&rtwdev->mutex);
@@ -890,7 +891,7 @@ static void rtw_ops_cancel_hw_scan(struc
@@ -886,7 +887,7 @@ static void rtw_ops_cancel_hw_scan(struc
return;
mutex_lock(&rtwdev->mutex);

View File

@ -62,7 +62,7 @@ Link: https://lore.kernel.org/r/20230414121323.18008-1-pkshih@realtek.com
rtw_dbg(rtwdev, RTW_DBG_HW_SCAN,
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -404,7 +404,7 @@ static void rtw_ops_bss_info_changed(str
@@ -396,7 +396,7 @@ static void rtw_ops_bss_info_changed(str
if (changed & BSS_CHANGED_BSSID) {
ether_addr_copy(rtwvif->bssid, conf->bssid);
config |= PORT_SET_BSSID;
@ -71,7 +71,7 @@ Link: https://lore.kernel.org/r/20230414121323.18008-1-pkshih@realtek.com
rtw_clear_op_chan(rtwdev);
else
rtw_store_op_chan(rtwdev, true);
@@ -452,6 +452,7 @@ static int rtw_ops_start_ap(struct ieee8
@@ -448,6 +448,7 @@ static int rtw_ops_start_ap(struct ieee8
mutex_lock(&rtwdev->mutex);
rtwdev->ap_active = true;
@ -79,7 +79,7 @@ Link: https://lore.kernel.org/r/20230414121323.18008-1-pkshih@realtek.com
chip->ops->phy_calibration(rtwdev);
mutex_unlock(&rtwdev->mutex);
@@ -466,6 +467,8 @@ static void rtw_ops_stop_ap(struct ieee8
@@ -462,6 +463,8 @@ static void rtw_ops_stop_ap(struct ieee8
mutex_lock(&rtwdev->mutex);
rtwdev->ap_active = false;
@ -90,7 +90,7 @@ Link: https://lore.kernel.org/r/20230414121323.18008-1-pkshih@realtek.com
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -830,6 +830,9 @@ void rtw_set_channel(struct rtw_dev *rtw
@@ -845,6 +845,9 @@ void rtw_set_channel(struct rtw_dev *rtw
rtw_update_channel(rtwdev, center_chan, primary_chan, band, bandwidth);
@ -100,7 +100,7 @@ Link: https://lore.kernel.org/r/20230414121323.18008-1-pkshih@realtek.com
chip->ops->set_channel(rtwdev, center_chan, bandwidth,
hal->current_primary_channel_index);
@@ -2330,6 +2333,42 @@ void rtw_core_port_switch(struct rtw_dev
@@ -2343,6 +2346,42 @@ void rtw_core_port_switch(struct rtw_dev
rtw_iterate_vifs(rtwdev, rtw_port_switch_iter, &iter_data);
}
@ -145,7 +145,7 @@ Link: https://lore.kernel.org/r/20230414121323.18008-1-pkshih@realtek.com
MODULE_LICENSE("Dual BSD/GPL");
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -2201,4 +2201,6 @@ void rtw_update_channel(struct rtw_dev *
@@ -2204,4 +2204,6 @@ void rtw_update_channel(struct rtw_dev *
u8 primary_channel, enum rtw_supported_band band,
enum rtw_bandwidth bandwidth);
void rtw_core_port_switch(struct rtw_dev *rtwdev, struct ieee80211_vif *vif);

View File

@ -44,7 +44,7 @@ Link: https://lore.kernel.org/r/20230414121331.18062-1-pkshih@realtek.com
u16 rtw_desc_to_bitrate(u8 desc_rate)
{
struct ieee80211_rate rate;
@@ -2205,6 +2225,11 @@ int rtw_register_hw(struct rtw_dev *rtwd
@@ -2218,6 +2238,11 @@ int rtw_register_hw(struct rtw_dev *rtwd
hw->wiphy->max_scan_ssids = RTW_SCAN_MAX_SSIDS;
hw->wiphy->max_scan_ie_len = rtw_get_max_scan_ie_len(rtwdev);

View File

@ -39,15 +39,6 @@ Link: https://lore.kernel.org/r/20230417140358.2240429-3-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
@@ -53,7 +53,7 @@ static int rtw8821c_read_efuse(struct rt
map = (struct rtw8821c_efuse *)log_map;
- efuse->rfe_option = map->rfe_option;
+ efuse->rfe_option = map->rfe_option & 0x1f;
efuse->rf_board_option = map->rf_board_option;
efuse->crystal_cap = map->xtal_k;
efuse->pa_type_2g = map->pa_type;
@@ -1546,7 +1546,6 @@ static const struct rtw_rfe_def rtw8821c
[2] = RTW_DEF_RFE_EXT(8821c, 0, 0, 2),
[4] = RTW_DEF_RFE_EXT(8821c, 0, 0, 2),

View File

@ -26,7 +26,7 @@ Link: https://lore.kernel.org/r/20230417140358.2240429-4-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2008,7 +2008,7 @@ static int rtw_chip_board_info_setup(str
@@ -2023,7 +2023,7 @@ static int rtw_chip_board_info_setup(str
if (!rfe_def)
return -ENODEV;
@ -34,10 +34,10 @@ Link: https://lore.kernel.org/r/20230417140358.2240429-4-s.hauer@pengutronix.de
+ rtw_phy_setup_phy_cond(rtwdev, hal->pkg_type);
rtw_phy_init_tx_power(rtwdev);
if (rfe_def->agc_btg_tbl)
rtw_load_table(rtwdev, rfe_def->phy_pg_tbl);
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1900,6 +1900,7 @@ struct rtw_hal {
@@ -1903,6 +1903,7 @@ struct rtw_hal {
u8 cut_version;
u8 mp_chip;
u8 oem_id;

View File

@ -20,7 +20,7 @@ Link: https://lore.kernel.org/r/20230417140358.2240429-5-s.hauer@pengutronix.de
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1902,6 +1902,7 @@ struct rtw_hal {
@@ -1905,6 +1905,7 @@ struct rtw_hal {
u8 oem_id;
u8 pkg_type;
struct rtw_phy_cond phy_cond;

View File

@ -26,7 +26,7 @@ Link: https://lore.kernel.org/r/20230418-rtw88-starspell-v1-1-70e52a23979b@kerne
#define RTW_MAX_CHANNEL_WIDTH RTW_CHANNEL_WIDTH_80
enum rtw_bandwidth {
@@ -1881,7 +1881,7 @@ enum rtw_sar_bands {
@@ -1884,7 +1884,7 @@ enum rtw_sar_bands {
RTW_SAR_BAND_NR,
};
@ -35,7 +35,7 @@ Link: https://lore.kernel.org/r/20230418-rtw88-starspell-v1-1-70e52a23979b@kerne
* which might not re-use same format with array common.
*/
union rtw_sar_cfg {
@@ -2032,7 +2032,7 @@ struct rtw_dev {
@@ -2035,7 +2035,7 @@ struct rtw_dev {
struct rtw_tx_report tx_report;
struct {

View File

@ -17,7 +17,7 @@ Link: https://lore.kernel.org/r/ddd10a74-5982-4f65-8c59-c1cca558d239@kili.mounta
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -173,8 +173,10 @@ static int rtw_ops_add_interface(struct
@@ -164,8 +164,10 @@ static int rtw_ops_add_interface(struct
mutex_lock(&rtwdev->mutex);
port = find_first_zero_bit(rtwdev->hw_port, RTW_PORT_NUM);

View File

@ -1,132 +0,0 @@
From bcafcb959a57a6890e900199690c5fc47da1a304 Mon Sep 17 00:00:00 2001
From: Ping-Ke Shih <pkshih@realtek.com>
Date: Mon, 8 May 2023 16:54:29 +0800
Subject: [PATCH 04/12] wifi: rtw88: use work to update rate to avoid RCU
warning
The ieee80211_ops::sta_rc_update must be atomic, because
ieee80211_chan_bw_change() holds rcu_read lock while calling
drv_sta_rc_update(), so create a work to do original things.
Voluntary context switch within RCU read-side critical section!
WARNING: CPU: 0 PID: 4621 at kernel/rcu/tree_plugin.h:318
rcu_note_context_switch+0x571/0x5d0
CPU: 0 PID: 4621 Comm: kworker/u16:2 Tainted: G W OE
Workqueue: phy3 ieee80211_chswitch_work [mac80211]
RIP: 0010:rcu_note_context_switch+0x571/0x5d0
Call Trace:
<TASK>
__schedule+0xb0/0x1460
? __mod_timer+0x116/0x360
schedule+0x5a/0xc0
schedule_timeout+0x87/0x150
? trace_raw_output_tick_stop+0x60/0x60
wait_for_completion_timeout+0x7b/0x140
usb_start_wait_urb+0x82/0x160 [usbcore
usb_control_msg+0xe3/0x140 [usbcore
rtw_usb_read+0x88/0xe0 [rtw_usb
rtw_usb_read8+0xf/0x10 [rtw_usb
rtw_fw_send_h2c_command+0xa0/0x170 [rtw_core
rtw_fw_send_ra_info+0xc9/0xf0 [rtw_core
drv_sta_rc_update+0x7c/0x160 [mac80211
ieee80211_chan_bw_change+0xfb/0x110 [mac80211
ieee80211_change_chanctx+0x38/0x130 [mac80211
ieee80211_vif_use_reserved_switch+0x34e/0x900 [mac80211
ieee80211_link_use_reserved_context+0x88/0xe0 [mac80211
ieee80211_chswitch_work+0x95/0x170 [mac80211
process_one_work+0x201/0x410
worker_thread+0x4a/0x3b0
? process_one_work+0x410/0x410
kthread+0xe1/0x110
? kthread_complete_and_exit+0x20/0x20
ret_from_fork+0x1f/0x30
</TASK>
Cc: stable@vger.kernel.org
Fixes: c1edc86472fc ("rtw88: add ieee80211:sta_rc_update ops")
Reported-by: Larry Finger <Larry.Finger@lwfinger.net>
Link: https://lore.kernel.org/linux-wireless/f1e31e8e-f84e-3791-50fb-663a83c5c6e9@lwfinger.net/T/#t
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230508085429.46653-1-pkshih@realtek.com
---
drivers/net/wireless/realtek/rtw88/mac80211.c | 2 +-
drivers/net/wireless/realtek/rtw88/main.c | 15 +++++++++++++++
drivers/net/wireless/realtek/rtw88/main.h | 3 +++
3 files changed, 19 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -920,7 +920,7 @@ static void rtw_ops_sta_rc_update(struct
struct rtw_sta_info *si = (struct rtw_sta_info *)sta->drv_priv;
if (changed & IEEE80211_RC_BW_CHANGED)
- rtw_update_sta_info(rtwdev, si, true);
+ ieee80211_queue_work(rtwdev->hw, &si->rc_work);
}
const struct ieee80211_ops rtw_ops = {
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -319,6 +319,17 @@ static u8 rtw_acquire_macid(struct rtw_d
return mac_id;
}
+static void rtw_sta_rc_work(struct work_struct *work)
+{
+ struct rtw_sta_info *si = container_of(work, struct rtw_sta_info,
+ rc_work);
+ struct rtw_dev *rtwdev = si->rtwdev;
+
+ mutex_lock(&rtwdev->mutex);
+ rtw_update_sta_info(rtwdev, si, true);
+ mutex_unlock(&rtwdev->mutex);
+}
+
int rtw_sta_add(struct rtw_dev *rtwdev, struct ieee80211_sta *sta,
struct ieee80211_vif *vif)
{
@@ -329,12 +340,14 @@ int rtw_sta_add(struct rtw_dev *rtwdev,
if (si->mac_id >= RTW_MAX_MAC_ID_NUM)
return -ENOSPC;
+ si->rtwdev = rtwdev;
si->sta = sta;
si->vif = vif;
si->init_ra_lv = 1;
ewma_rssi_init(&si->avg_rssi);
for (i = 0; i < ARRAY_SIZE(sta->txq); i++)
rtw_txq_init(rtwdev, sta->txq[i]);
+ INIT_WORK(&si->rc_work, rtw_sta_rc_work);
rtw_update_sta_info(rtwdev, si, true);
rtw_fw_media_status_report(rtwdev, si->mac_id, true);
@@ -353,6 +366,8 @@ void rtw_sta_remove(struct rtw_dev *rtwd
struct rtw_sta_info *si = (struct rtw_sta_info *)sta->drv_priv;
int i;
+ cancel_work_sync(&si->rc_work);
+
rtw_release_macid(rtwdev, si->mac_id);
if (fw_exist)
rtw_fw_media_status_report(rtwdev, si->mac_id, false);
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -743,6 +743,7 @@ struct rtw_txq {
DECLARE_EWMA(rssi, 10, 16);
struct rtw_sta_info {
+ struct rtw_dev *rtwdev;
struct ieee80211_sta *sta;
struct ieee80211_vif *vif;
@@ -767,6 +768,8 @@ struct rtw_sta_info {
bool use_cfg_mask;
struct cfg80211_bitrate_mask *mask;
+
+ struct work_struct rc_work;
};
enum rtw_bfee_role {

View File

@ -1,145 +0,0 @@
From 3918dd0177ee08970683a2c22a3388825d82fd79 Mon Sep 17 00:00:00 2001
From: Ping-Ke Shih <pkshih@realtek.com>
Date: Sat, 27 May 2023 16:29:37 +0800
Subject: [PATCH 11/12] wifi: rtw88: correct PS calculation for
SUPPORTS_DYNAMIC_PS
This driver relies on IEEE80211_CONF_PS of hw->conf.flags to turn off PS or
turn on dynamic PS controlled by driver and firmware. Though this would be
incorrect, it did work before because the flag is always recalculated until
the commit 28977e790b5d ("wifi: mac80211: skip powersave recalc if driver SUPPORTS_DYNAMIC_PS")
is introduced by kernel 5.20 to skip to recalculate IEEE80211_CONF_PS
of hw->conf.flags if driver sets SUPPORTS_DYNAMIC_PS.
Correct this by doing recalculation while BSS_CHANGED_PS is changed and
interface is added or removed. It is allowed to enter PS only if single
one station vif is working. Without this fix, driver doesn't enter PS
anymore that causes higher power consumption.
Fixes: bcde60e599fb ("rtw88: remove misleading module parameter rtw_fw_support_lps")
Cc: stable@vger.kernel.org # 6.1+
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230527082939.11206-2-pkshih@realtek.com
---
drivers/net/wireless/realtek/rtw88/mac80211.c | 14 +++---
drivers/net/wireless/realtek/rtw88/main.c | 4 +-
drivers/net/wireless/realtek/rtw88/ps.c | 43 +++++++++++++++++++
drivers/net/wireless/realtek/rtw88/ps.h | 2 +
4 files changed, 52 insertions(+), 11 deletions(-)
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -88,15 +88,6 @@ static int rtw_ops_config(struct ieee802
}
}
- if (changed & IEEE80211_CONF_CHANGE_PS) {
- if (hw->conf.flags & IEEE80211_CONF_PS) {
- rtwdev->ps_enabled = true;
- } else {
- rtwdev->ps_enabled = false;
- rtw_leave_lps(rtwdev);
- }
- }
-
if (changed & IEEE80211_CONF_CHANGE_CHANNEL)
rtw_set_channel(rtwdev);
@@ -215,6 +206,7 @@ static int rtw_ops_add_interface(struct
config |= PORT_SET_BCN_CTRL;
rtw_vif_port_config(rtwdev, rtwvif, config);
rtw_core_port_switch(rtwdev, vif);
+ rtw_recalc_lps(rtwdev, vif);
mutex_unlock(&rtwdev->mutex);
@@ -246,6 +238,7 @@ static void rtw_ops_remove_interface(str
config |= PORT_SET_BCN_CTRL;
rtw_vif_port_config(rtwdev, rtwvif, config);
clear_bit(rtwvif->port, rtwdev->hw_port);
+ rtw_recalc_lps(rtwdev, NULL);
mutex_unlock(&rtwdev->mutex);
}
@@ -440,6 +433,9 @@ static void rtw_ops_bss_info_changed(str
if (changed & BSS_CHANGED_ERP_SLOT)
rtw_conf_tx(rtwdev, rtwvif);
+ if (changed & BSS_CHANGED_PS)
+ rtw_recalc_lps(rtwdev, NULL);
+
rtw_vif_port_config(rtwdev, rtwvif, config);
mutex_unlock(&rtwdev->mutex);
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -271,8 +271,8 @@ static void rtw_watch_dog_work(struct wo
* more than two stations associated to the AP, then we can not enter
* lps, because fw does not handle the overlapped beacon interval
*
- * mac80211 should iterate vifs and determine if driver can enter
- * ps by passing IEEE80211_CONF_PS to us, all we need to do is to
+ * rtw_recalc_lps() iterate vifs and determine if driver can enter
+ * ps by vif->type and vif->cfg.ps, all we need to do here is to
* get that vif and check if device is having traffic more than the
* threshold.
*/
--- a/drivers/net/wireless/realtek/rtw88/ps.c
+++ b/drivers/net/wireless/realtek/rtw88/ps.c
@@ -299,3 +299,46 @@ void rtw_leave_lps_deep(struct rtw_dev *
__rtw_leave_lps_deep(rtwdev);
}
+
+struct rtw_vif_recalc_lps_iter_data {
+ struct rtw_dev *rtwdev;
+ struct ieee80211_vif *found_vif;
+ int count;
+};
+
+static void __rtw_vif_recalc_lps(struct rtw_vif_recalc_lps_iter_data *data,
+ struct ieee80211_vif *vif)
+{
+ if (data->count < 0)
+ return;
+
+ if (vif->type != NL80211_IFTYPE_STATION) {
+ data->count = -1;
+ return;
+ }
+
+ data->count++;
+ data->found_vif = vif;
+}
+
+static void rtw_vif_recalc_lps_iter(void *data, u8 *mac,
+ struct ieee80211_vif *vif)
+{
+ __rtw_vif_recalc_lps(data, vif);
+}
+
+void rtw_recalc_lps(struct rtw_dev *rtwdev, struct ieee80211_vif *new_vif)
+{
+ struct rtw_vif_recalc_lps_iter_data data = { .rtwdev = rtwdev };
+
+ if (new_vif)
+ __rtw_vif_recalc_lps(&data, new_vif);
+ rtw_iterate_vifs(rtwdev, rtw_vif_recalc_lps_iter, &data);
+
+ if (data.count == 1 && data.found_vif->cfg.ps) {
+ rtwdev->ps_enabled = true;
+ } else {
+ rtwdev->ps_enabled = false;
+ rtw_leave_lps(rtwdev);
+ }
+}
--- a/drivers/net/wireless/realtek/rtw88/ps.h
+++ b/drivers/net/wireless/realtek/rtw88/ps.h
@@ -23,4 +23,6 @@ void rtw_enter_lps(struct rtw_dev *rtwde
void rtw_leave_lps(struct rtw_dev *rtwdev);
void rtw_leave_lps_deep(struct rtw_dev *rtwdev);
enum rtw_lps_deep_mode rtw_get_lps_deep_mode(struct rtw_dev *rtwdev);
+void rtw_recalc_lps(struct rtw_dev *rtwdev, struct ieee80211_vif *new_vif);
+
#endif

View File

@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20230616125540.36877-5-pkshih@realtek.com
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2403,10 +2403,13 @@ void rtw_core_enable_beacon(struct rtw_d
@@ -2401,10 +2401,13 @@ void rtw_core_enable_beacon(struct rtw_d
if (!rtwdev->ap_active)
return;

View File

@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20230616125540.36877-7-pkshih@realtek.com
void rtw_fw_inform_rfk_status(struct rtw_dev *rtwdev, bool start);
--- a/drivers/net/wireless/realtek/rtw88/mac80211.c
+++ b/drivers/net/wireless/realtek/rtw88/mac80211.c
@@ -382,6 +382,7 @@ static void rtw_ops_bss_info_changed(str
@@ -381,6 +381,7 @@ static void rtw_ops_bss_info_changed(str
rtw_fw_download_rsvd_page(rtwdev);
rtw_send_rsvd_page_h2c(rtwdev);
@ -108,7 +108,7 @@ Link: https://lore.kernel.org/r/20230616125540.36877-7-pkshih@realtek.com
si->rtwdev = rtwdev;
si->sta = sta;
si->vif = vif;
@@ -2340,6 +2343,9 @@ static void rtw_port_switch_iter(void *d
@@ -2338,6 +2341,9 @@ static void rtw_port_switch_iter(void *d
rtw_dbg(rtwdev, RTW_DBG_STATE, "AP port switch from %d -> %d\n",
rtwvif_ap->port, rtwvif_target->port);
@ -118,7 +118,7 @@ Link: https://lore.kernel.org/r/20230616125540.36877-7-pkshih@realtek.com
reg1 = &rtwvif_ap->conf->net_type;
reg2 = &rtwvif_target->conf->net_type;
rtw_swap_reg_mask(rtwdev, reg1, reg2);
@@ -2358,6 +2364,8 @@ static void rtw_port_switch_iter(void *d
@@ -2356,6 +2362,8 @@ static void rtw_port_switch_iter(void *d
swap(rtwvif_target->port, rtwvif_ap->port);
swap(rtwvif_target->conf, rtwvif_ap->conf);

View File

@ -1,6 +1,6 @@
--- a/net/mac80211/vht.c
+++ b/net/mac80211/vht.c
@@ -135,7 +135,8 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
@@ -137,7 +137,8 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
have_80mhz = false;
for (i = 0; i < sband->n_channels; i++) {
if (sband->channels[i].flags & (IEEE80211_CHAN_DISABLED |
@ -24,7 +24,7 @@
have_80mhz = true;
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -4744,7 +4744,8 @@ static int ieee80211_prep_channel(struct
@@ -4849,7 +4849,8 @@ static int ieee80211_prep_channel(struct
have_80mhz = false;
for (i = 0; i < sband->n_channels; i++) {
if (sband->channels[i].flags & (IEEE80211_CHAN_DISABLED |