Commit ffb7aa9f authored by Jakub Kicinski's avatar Jakub Kicinski

Merge tag 'wireless-2024-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless

Johannes Berg says:

====================
Just a few changes:
 - maintainers: Larry Finger sadly passed away
 - maintainers: ath trees are in their group now
 - TXQ FQ quantum configuration fix
 - TI wl driver: work around stuck FW in AP mode
 - mac80211: disable softirqs in some new code
   needing that

* tag 'wireless-2024-06-27' of git://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless:
  MAINTAINERS: wifi: update ath.git location
  MAINTAINERS: Remembering Larry Finger
  wifi: mac80211: disable softirqs for queued frame handling
  wifi: cfg80211: restrict NL80211_ATTR_TXQ_QUANTUM values
  wifi: wlcore: fix wlcore AP mode
====================

Link: https://patch.msgid.link/20240627083627.15312-3-johannes@sipsolutions.netSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents fd19d4a4 c40ff9b6
...@@ -1214,6 +1214,10 @@ D: UDF filesystem ...@@ -1214,6 +1214,10 @@ D: UDF filesystem
S: (ask for current address) S: (ask for current address)
S: USA S: USA
N: Larry Finger
E: Larry.Finger@lwfinger.net
D: Maintainer of wireless drivers, too many to list here
N: Jürgen Fischer N: Jürgen Fischer
E: fischer@norbit.de E: fischer@norbit.de
D: Author of Adaptec AHA-152x SCSI driver D: Author of Adaptec AHA-152x SCSI driver
......
...@@ -3601,10 +3601,9 @@ W: https://wireless.wiki.kernel.org/en/users/Drivers/b43 ...@@ -3601,10 +3601,9 @@ W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
F: drivers/net/wireless/broadcom/b43/ F: drivers/net/wireless/broadcom/b43/
B43LEGACY WIRELESS DRIVER B43LEGACY WIRELESS DRIVER
M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
L: b43-dev@lists.infradead.org L: b43-dev@lists.infradead.org
S: Maintained S: Orphan
W: https://wireless.wiki.kernel.org/en/users/Drivers/b43 W: https://wireless.wiki.kernel.org/en/users/Drivers/b43
F: drivers/net/wireless/broadcom/b43legacy/ F: drivers/net/wireless/broadcom/b43legacy/
...@@ -18374,7 +18373,7 @@ M: Jeff Johnson <jjohnson@kernel.org> ...@@ -18374,7 +18373,7 @@ M: Jeff Johnson <jjohnson@kernel.org>
L: ath12k@lists.infradead.org L: ath12k@lists.infradead.org
S: Supported S: Supported
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath12k
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
F: drivers/net/wireless/ath/ath12k/ F: drivers/net/wireless/ath/ath12k/
N: ath12k N: ath12k
...@@ -18384,7 +18383,7 @@ M: Jeff Johnson <jjohnson@kernel.org> ...@@ -18384,7 +18383,7 @@ M: Jeff Johnson <jjohnson@kernel.org>
L: ath10k@lists.infradead.org L: ath10k@lists.infradead.org
S: Supported S: Supported
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
F: drivers/net/wireless/ath/ath10k/ F: drivers/net/wireless/ath/ath10k/
N: ath10k N: ath10k
...@@ -18395,7 +18394,7 @@ L: ath11k@lists.infradead.org ...@@ -18395,7 +18394,7 @@ L: ath11k@lists.infradead.org
S: Supported S: Supported
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k
B: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport B: https://wireless.wiki.kernel.org/en/users/Drivers/ath11k/bugreport
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
F: drivers/net/wireless/ath/ath11k/ F: drivers/net/wireless/ath/ath11k/
N: ath11k N: ath11k
...@@ -18404,7 +18403,7 @@ M: Toke Høiland-Jørgensen <toke@toke.dk> ...@@ -18404,7 +18403,7 @@ M: Toke Høiland-Jørgensen <toke@toke.dk>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k W: https://wireless.wiki.kernel.org/en/users/Drivers/ath9k
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git
F: Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml F: Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
F: drivers/net/wireless/ath/ath9k/ F: drivers/net/wireless/ath/ath9k/
...@@ -19509,7 +19508,6 @@ F: drivers/net/wireless/realtek/rtl818x/rtl8180/ ...@@ -19509,7 +19508,6 @@ F: drivers/net/wireless/realtek/rtl818x/rtl8180/
RTL8187 WIRELESS DRIVER RTL8187 WIRELESS DRIVER
M: Hin-Tak Leung <hintak.leung@gmail.com> M: Hin-Tak Leung <hintak.leung@gmail.com>
M: Larry Finger <Larry.Finger@lwfinger.net>
L: linux-wireless@vger.kernel.org L: linux-wireless@vger.kernel.org
S: Maintained S: Maintained
T: git https://github.com/pkshih/rtw.git T: git https://github.com/pkshih/rtw.git
...@@ -21247,7 +21245,6 @@ W: http://wiki.laptop.org/go/DCON ...@@ -21247,7 +21245,6 @@ W: http://wiki.laptop.org/go/DCON
F: drivers/staging/olpc_dcon/ F: drivers/staging/olpc_dcon/
STAGING - REALTEK RTL8712U DRIVERS STAGING - REALTEK RTL8712U DRIVERS
M: Larry Finger <Larry.Finger@lwfinger.net>
M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>. M: Florian Schilhabel <florian.c.schilhabel@googlemail.com>.
S: Odd Fixes S: Odd Fixes
F: drivers/staging/rtl8712/ F: drivers/staging/rtl8712/
......
...@@ -1566,13 +1566,6 @@ int wl12xx_cmd_add_peer(struct wl1271 *wl, struct wl12xx_vif *wlvif, ...@@ -1566,13 +1566,6 @@ int wl12xx_cmd_add_peer(struct wl1271 *wl, struct wl12xx_vif *wlvif,
cpu_to_le32(wl1271_tx_enabled_rates_get(wl, sta_rates, cpu_to_le32(wl1271_tx_enabled_rates_get(wl, sta_rates,
wlvif->band)); wlvif->band));
if (!cmd->supported_rates) {
wl1271_debug(DEBUG_CMD,
"peer has no supported rates yet, configuring basic rates: 0x%x",
wlvif->basic_rate_set);
cmd->supported_rates = cpu_to_le32(wlvif->basic_rate_set);
}
wl1271_debug(DEBUG_CMD, "new peer rates=0x%x queues=0x%x", wl1271_debug(DEBUG_CMD, "new peer rates=0x%x queues=0x%x",
cmd->supported_rates, sta->uapsd_queues); cmd->supported_rates, sta->uapsd_queues);
......
...@@ -5139,19 +5139,23 @@ static int wl12xx_update_sta_state(struct wl1271 *wl, ...@@ -5139,19 +5139,23 @@ static int wl12xx_update_sta_state(struct wl1271 *wl,
/* Add station (AP mode) */ /* Add station (AP mode) */
if (is_ap && if (is_ap &&
old_state == IEEE80211_STA_NOTEXIST && old_state == IEEE80211_STA_AUTH &&
new_state == IEEE80211_STA_NONE) { new_state == IEEE80211_STA_ASSOC) {
ret = wl12xx_sta_add(wl, wlvif, sta); ret = wl12xx_sta_add(wl, wlvif, sta);
if (ret) if (ret)
return ret; return ret;
wl_sta->fw_added = true;
wlcore_update_inconn_sta(wl, wlvif, wl_sta, true); wlcore_update_inconn_sta(wl, wlvif, wl_sta, true);
} }
/* Remove station (AP mode) */ /* Remove station (AP mode) */
if (is_ap && if (is_ap &&
old_state == IEEE80211_STA_NONE && old_state == IEEE80211_STA_ASSOC &&
new_state == IEEE80211_STA_NOTEXIST) { new_state == IEEE80211_STA_AUTH) {
wl_sta->fw_added = false;
/* must not fail */ /* must not fail */
wl12xx_sta_remove(wl, wlvif, sta); wl12xx_sta_remove(wl, wlvif, sta);
...@@ -5165,11 +5169,6 @@ static int wl12xx_update_sta_state(struct wl1271 *wl, ...@@ -5165,11 +5169,6 @@ static int wl12xx_update_sta_state(struct wl1271 *wl,
if (ret < 0) if (ret < 0)
return ret; return ret;
/* reconfigure rates */
ret = wl12xx_cmd_add_peer(wl, wlvif, sta, wl_sta->hlid);
if (ret < 0)
return ret;
ret = wl1271_acx_set_ht_capabilities(wl, &sta->deflink.ht_cap, ret = wl1271_acx_set_ht_capabilities(wl, &sta->deflink.ht_cap,
true, true,
wl_sta->hlid); wl_sta->hlid);
......
...@@ -140,11 +140,8 @@ EXPORT_SYMBOL(wl12xx_is_dummy_packet); ...@@ -140,11 +140,8 @@ EXPORT_SYMBOL(wl12xx_is_dummy_packet);
static u8 wl12xx_tx_get_hlid_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif, static u8 wl12xx_tx_get_hlid_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif,
struct sk_buff *skb, struct ieee80211_sta *sta) struct sk_buff *skb, struct ieee80211_sta *sta)
{ {
if (sta) { if (sta && wl1271_station(sta)->fw_added) {
struct wl1271_station *wl_sta; return wl1271_station(sta)->hlid;
wl_sta = (struct wl1271_station *)sta->drv_priv;
return wl_sta->hlid;
} else { } else {
struct ieee80211_hdr *hdr; struct ieee80211_hdr *hdr;
......
...@@ -324,6 +324,7 @@ struct wl12xx_rx_filter { ...@@ -324,6 +324,7 @@ struct wl12xx_rx_filter {
struct wl1271_station { struct wl1271_station {
u8 hlid; u8 hlid;
bool fw_added;
bool in_connection; bool in_connection;
/* /*
...@@ -335,6 +336,11 @@ struct wl1271_station { ...@@ -335,6 +336,11 @@ struct wl1271_station {
u64 total_freed_pkts; u64 total_freed_pkts;
}; };
static inline struct wl1271_station *wl1271_station(struct ieee80211_sta *sta)
{
return (struct wl1271_station *)sta->drv_priv;
}
struct wl12xx_vif { struct wl12xx_vif {
struct wl1271 *wl; struct wl1271 *wl;
struct list_head list; struct list_head list;
......
...@@ -423,6 +423,7 @@ u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata) ...@@ -423,6 +423,7 @@ u64 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
BSS_CHANGED_ERP_SLOT; BSS_CHANGED_ERP_SLOT;
} }
/* context: requires softirqs disabled */
void ieee80211_handle_queued_frames(struct ieee80211_local *local) void ieee80211_handle_queued_frames(struct ieee80211_local *local)
{ {
struct sk_buff *skb; struct sk_buff *skb;
......
...@@ -1567,7 +1567,9 @@ u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata, ...@@ -1567,7 +1567,9 @@ u32 ieee80211_sta_get_rates(struct ieee80211_sub_if_data *sdata,
void ieee80211_stop_device(struct ieee80211_local *local) void ieee80211_stop_device(struct ieee80211_local *local)
{ {
local_bh_disable();
ieee80211_handle_queued_frames(local); ieee80211_handle_queued_frames(local);
local_bh_enable();
ieee80211_led_radio(local, false); ieee80211_led_radio(local, false);
ieee80211_mod_tpt_led_trig(local, 0, IEEE80211_TPT_LEDTRIG_FL_RADIO); ieee80211_mod_tpt_led_trig(local, 0, IEEE80211_TPT_LEDTRIG_FL_RADIO);
......
...@@ -468,6 +468,10 @@ static const struct netlink_range_validation nl80211_punct_bitmap_range = { ...@@ -468,6 +468,10 @@ static const struct netlink_range_validation nl80211_punct_bitmap_range = {
.max = 0xffff, .max = 0xffff,
}; };
static const struct netlink_range_validation q_range = {
.max = INT_MAX,
};
static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
[0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD }, [0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD },
[NL80211_ATTR_WIPHY] = { .type = NLA_U32 }, [NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
...@@ -754,7 +758,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = { ...@@ -754,7 +758,7 @@ static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
[NL80211_ATTR_TXQ_LIMIT] = { .type = NLA_U32 }, [NL80211_ATTR_TXQ_LIMIT] = { .type = NLA_U32 },
[NL80211_ATTR_TXQ_MEMORY_LIMIT] = { .type = NLA_U32 }, [NL80211_ATTR_TXQ_MEMORY_LIMIT] = { .type = NLA_U32 },
[NL80211_ATTR_TXQ_QUANTUM] = { .type = NLA_U32 }, [NL80211_ATTR_TXQ_QUANTUM] = NLA_POLICY_FULL_RANGE(NLA_U32, &q_range),
[NL80211_ATTR_HE_CAPABILITY] = [NL80211_ATTR_HE_CAPABILITY] =
NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_he_capa, NLA_POLICY_VALIDATE_FN(NLA_BINARY, validate_he_capa,
NL80211_HE_MAX_CAPABILITY_LEN), NL80211_HE_MAX_CAPABILITY_LEN),
......
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