Commit e469b626 authored by David S. Miller's avatar David S. Miller

Merge tag 'wireless-next-2023-02-17' of...

Merge tag 'wireless-next-2023-02-17' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next

Kalle Valo says:

====================
wireless-next patches for v6.3

Third set of patches for v6.3. This time only a set of small fixes
submitted during the last day or two.
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 1155a228 38ae3192
...@@ -4020,7 +4020,7 @@ il4965_hdl_alive(struct il_priv *il, struct il_rx_buf *rxb) ...@@ -4020,7 +4020,7 @@ il4965_hdl_alive(struct il_priv *il, struct il_rx_buf *rxb)
if (palive->ver_subtype == INITIALIZE_SUBTYPE) { if (palive->ver_subtype == INITIALIZE_SUBTYPE) {
D_INFO("Initialization Alive received.\n"); D_INFO("Initialization Alive received.\n");
memcpy(&il->card_alive_init, &pkt->u.alive_frame, memcpy(&il->card_alive_init, &pkt->u.raw,
sizeof(struct il_init_alive_resp)); sizeof(struct il_init_alive_resp));
pwork = &il->init_alive_start; pwork = &il->init_alive_start;
} else { } else {
......
...@@ -438,13 +438,6 @@ static ssize_t iwl_dbgfs_bf_params_read(struct file *file, ...@@ -438,13 +438,6 @@ static ssize_t iwl_dbgfs_bf_params_read(struct file *file,
return simple_read_from_buffer(user_buf, count, ppos, buf, pos); return simple_read_from_buffer(user_buf, count, ppos, buf, pos);
} }
static inline char *iwl_dbgfs_is_match(char *name, char *buf)
{
int len = strlen(name);
return !strncmp(name, buf, len) ? buf + len : NULL;
}
static ssize_t iwl_dbgfs_os_device_timediff_read(struct file *file, static ssize_t iwl_dbgfs_os_device_timediff_read(struct file *file,
char __user *user_buf, char __user *user_buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
config RTL8XXXU config RTL8XXXU
tristate "Realtek 802.11n USB wireless chips support" tristate "Realtek 802.11n USB wireless chips support"
depends on MAC80211 && USB depends on MAC80211 && USB
depends on LEDS_CLASS
help help
This is an alternative driver for various Realtek RTL8XXX This is an alternative driver for various Realtek RTL8XXX
parts written to utilize the Linux mac80211 stack. parts written to utilize the Linux mac80211 stack.
......
...@@ -4056,7 +4056,7 @@ void rtw_coex_display_coex_info(struct rtw_dev *rtwdev, struct seq_file *m) ...@@ -4056,7 +4056,7 @@ void rtw_coex_display_coex_info(struct rtw_dev *rtwdev, struct seq_file *m)
rtwdev->stats.tx_throughput, rtwdev->stats.rx_throughput); rtwdev->stats.tx_throughput, rtwdev->stats.rx_throughput);
seq_printf(m, "%-40s = %u/ %u/ %u\n", seq_printf(m, "%-40s = %u/ %u/ %u\n",
"IPS/ Low Power/ PS mode", "IPS/ Low Power/ PS mode",
test_bit(RTW_FLAG_INACTIVE_PS, rtwdev->flags), !test_bit(RTW_FLAG_POWERON, rtwdev->flags),
test_bit(RTW_FLAG_LEISURE_PS_DEEP, rtwdev->flags), test_bit(RTW_FLAG_LEISURE_PS_DEEP, rtwdev->flags),
rtwdev->lps_conf.mode); rtwdev->lps_conf.mode);
......
...@@ -273,6 +273,11 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on) ...@@ -273,6 +273,11 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on)
if (rtw_pwr_seq_parser(rtwdev, pwr_seq)) if (rtw_pwr_seq_parser(rtwdev, pwr_seq))
return -EINVAL; return -EINVAL;
if (pwr_on)
set_bit(RTW_FLAG_POWERON, rtwdev->flags);
else
clear_bit(RTW_FLAG_POWERON, rtwdev->flags);
return 0; return 0;
} }
...@@ -335,6 +340,11 @@ int rtw_mac_power_on(struct rtw_dev *rtwdev) ...@@ -335,6 +340,11 @@ int rtw_mac_power_on(struct rtw_dev *rtwdev)
ret = rtw_mac_power_switch(rtwdev, true); ret = rtw_mac_power_switch(rtwdev, true);
if (ret == -EALREADY) { if (ret == -EALREADY) {
rtw_mac_power_switch(rtwdev, false); rtw_mac_power_switch(rtwdev, false);
ret = rtw_mac_pre_system_cfg(rtwdev);
if (ret)
goto err;
ret = rtw_mac_power_switch(rtwdev, true); ret = rtw_mac_power_switch(rtwdev, true);
if (ret) if (ret)
goto err; goto err;
......
...@@ -356,7 +356,7 @@ enum rtw_flags { ...@@ -356,7 +356,7 @@ enum rtw_flags {
RTW_FLAG_RUNNING, RTW_FLAG_RUNNING,
RTW_FLAG_FW_RUNNING, RTW_FLAG_FW_RUNNING,
RTW_FLAG_SCANNING, RTW_FLAG_SCANNING,
RTW_FLAG_INACTIVE_PS, RTW_FLAG_POWERON,
RTW_FLAG_LEISURE_PS, RTW_FLAG_LEISURE_PS,
RTW_FLAG_LEISURE_PS_DEEP, RTW_FLAG_LEISURE_PS_DEEP,
RTW_FLAG_DIG_DISABLE, RTW_FLAG_DIG_DISABLE,
......
...@@ -25,7 +25,7 @@ static int rtw_ips_pwr_up(struct rtw_dev *rtwdev) ...@@ -25,7 +25,7 @@ static int rtw_ips_pwr_up(struct rtw_dev *rtwdev)
int rtw_enter_ips(struct rtw_dev *rtwdev) int rtw_enter_ips(struct rtw_dev *rtwdev)
{ {
if (test_and_set_bit(RTW_FLAG_INACTIVE_PS, rtwdev->flags)) if (!test_bit(RTW_FLAG_POWERON, rtwdev->flags))
return 0; return 0;
rtw_coex_ips_notify(rtwdev, COEX_IPS_ENTER); rtw_coex_ips_notify(rtwdev, COEX_IPS_ENTER);
...@@ -50,7 +50,7 @@ int rtw_leave_ips(struct rtw_dev *rtwdev) ...@@ -50,7 +50,7 @@ int rtw_leave_ips(struct rtw_dev *rtwdev)
{ {
int ret; int ret;
if (!test_and_clear_bit(RTW_FLAG_INACTIVE_PS, rtwdev->flags)) if (test_bit(RTW_FLAG_POWERON, rtwdev->flags))
return 0; return 0;
rtw_hci_link_ps(rtwdev, false); rtw_hci_link_ps(rtwdev, false);
......
...@@ -592,7 +592,7 @@ static int rtw_wow_leave_no_link_ps(struct rtw_dev *rtwdev) ...@@ -592,7 +592,7 @@ static int rtw_wow_leave_no_link_ps(struct rtw_dev *rtwdev)
if (rtw_get_lps_deep_mode(rtwdev) != LPS_DEEP_MODE_NONE) if (rtw_get_lps_deep_mode(rtwdev) != LPS_DEEP_MODE_NONE)
rtw_leave_lps_deep(rtwdev); rtw_leave_lps_deep(rtwdev);
} else { } else {
if (test_bit(RTW_FLAG_INACTIVE_PS, rtwdev->flags)) { if (!test_bit(RTW_FLAG_POWERON, rtwdev->flags)) {
rtw_wow->ips_enabled = true; rtw_wow->ips_enabled = true;
ret = rtw_leave_ips(rtwdev); ret = rtw_leave_ips(rtwdev);
if (ret) if (ret)
......
...@@ -2435,6 +2435,7 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev, ...@@ -2435,6 +2435,7 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev,
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv; struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv; struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
int i; int i;
int ret;
rtwsta->rtwdev = rtwdev; rtwsta->rtwdev = rtwdev;
rtwsta->rtwvif = rtwvif; rtwsta->rtwvif = rtwvif;
...@@ -2459,6 +2460,21 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev, ...@@ -2459,6 +2460,21 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev,
RTW89_MAX_MAC_ID_NUM); RTW89_MAX_MAC_ID_NUM);
if (rtwsta->mac_id == RTW89_MAX_MAC_ID_NUM) if (rtwsta->mac_id == RTW89_MAX_MAC_ID_NUM)
return -ENOSPC; return -ENOSPC;
ret = rtw89_mac_set_macid_pause(rtwdev, rtwsta->mac_id, false);
if (ret) {
rtw89_core_release_bit_map(rtwdev->mac_id_map, rtwsta->mac_id);
rtw89_warn(rtwdev, "failed to send h2c macid pause\n");
return ret;
}
ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, rtwsta,
RTW89_ROLE_CREATE);
if (ret) {
rtw89_core_release_bit_map(rtwdev->mac_id_map, rtwsta->mac_id);
rtw89_warn(rtwdev, "failed to send h2c role info\n");
return ret;
}
} }
return 0; return 0;
...@@ -2513,14 +2529,6 @@ int rtw89_core_sta_disconnect(struct rtw89_dev *rtwdev, ...@@ -2513,14 +2529,6 @@ int rtw89_core_sta_disconnect(struct rtw89_dev *rtwdev,
return ret; return ret;
} }
if (vif->type == NL80211_IFTYPE_AP || sta->tdls) {
ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, rtwsta, RTW89_ROLE_REMOVE);
if (ret) {
rtw89_warn(rtwdev, "failed to send h2c role info\n");
return ret;
}
}
/* update cam aid mac_id net_type */ /* update cam aid mac_id net_type */
ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, rtwsta, NULL); ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, rtwsta, NULL);
if (ret) { if (ret) {
...@@ -2541,18 +2549,6 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev, ...@@ -2541,18 +2549,6 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev,
int ret; int ret;
if (vif->type == NL80211_IFTYPE_AP || sta->tdls) { if (vif->type == NL80211_IFTYPE_AP || sta->tdls) {
ret = rtw89_mac_set_macid_pause(rtwdev, rtwsta->mac_id, false);
if (ret) {
rtw89_warn(rtwdev, "failed to send h2c macid pause\n");
return ret;
}
ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, rtwsta, RTW89_ROLE_CREATE);
if (ret) {
rtw89_warn(rtwdev, "failed to send h2c role info\n");
return ret;
}
if (sta->tdls) { if (sta->tdls) {
ret = rtw89_cam_init_bssid_cam(rtwdev, rtwvif, bssid_cam, sta->addr); ret = rtw89_cam_init_bssid_cam(rtwdev, rtwvif, bssid_cam, sta->addr);
if (ret) { if (ret) {
...@@ -2622,13 +2618,22 @@ int rtw89_core_sta_remove(struct rtw89_dev *rtwdev, ...@@ -2622,13 +2618,22 @@ int rtw89_core_sta_remove(struct rtw89_dev *rtwdev,
{ {
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv; struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv; struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
int ret;
if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls) if (vif->type == NL80211_IFTYPE_STATION && !sta->tdls)
rtw89_btc_ntfy_role_info(rtwdev, rtwvif, rtwsta, rtw89_btc_ntfy_role_info(rtwdev, rtwvif, rtwsta,
BTC_ROLE_MSTS_STA_DIS_CONN); BTC_ROLE_MSTS_STA_DIS_CONN);
else if (vif->type == NL80211_IFTYPE_AP || sta->tdls) else if (vif->type == NL80211_IFTYPE_AP || sta->tdls) {
rtw89_core_release_bit_map(rtwdev->mac_id_map, rtwsta->mac_id); rtw89_core_release_bit_map(rtwdev->mac_id_map, rtwsta->mac_id);
ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, rtwsta,
RTW89_ROLE_REMOVE);
if (ret) {
rtw89_warn(rtwdev, "failed to send h2c role info\n");
return ret;
}
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment