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

Merge tag 'mac80211-next-for-davem-2020-08-03' of...

Merge tag 'mac80211-next-for-davem-2020-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next

Johannes Berg says:

====================
A few more changes, notably:
 * handle new SAE (WPA3 authentication) status codes in the correct way
 * fix a while that should be an if instead, avoiding infinite loops
 * handle beacon filtering changing better
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 01f4d47a 0b91111f
...@@ -2561,6 +2561,8 @@ enum ieee80211_statuscode { ...@@ -2561,6 +2561,8 @@ enum ieee80211_statuscode {
/* 802.11ai */ /* 802.11ai */
WLAN_STATUS_FILS_AUTHENTICATION_FAILURE = 108, WLAN_STATUS_FILS_AUTHENTICATION_FAILURE = 108,
WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER = 109, WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER = 109,
WLAN_STATUS_SAE_HASH_TO_ELEMENT = 126,
WLAN_STATUS_SAE_PK = 127,
}; };
......
...@@ -477,7 +477,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, ...@@ -477,7 +477,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,
size_t len) size_t len)
{ {
u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num; u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num;
struct ieee802_11_elems elems = { 0 }; struct ieee802_11_elems elems = { };
u8 dialog_token; u8 dialog_token;
int ies_len; int ies_len;
......
...@@ -2988,7 +2988,10 @@ static void ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata, ...@@ -2988,7 +2988,10 @@ static void ieee80211_rx_mgmt_auth(struct ieee80211_sub_if_data *sdata,
cfg80211_rx_mlme_mgmt(sdata->dev, (u8 *)mgmt, len); cfg80211_rx_mlme_mgmt(sdata->dev, (u8 *)mgmt, len);
if (auth_alg == WLAN_AUTH_SAE && if (auth_alg == WLAN_AUTH_SAE &&
status_code == WLAN_STATUS_ANTI_CLOG_REQUIRED) (status_code == WLAN_STATUS_ANTI_CLOG_REQUIRED ||
(auth_transaction == 1 &&
(status_code == WLAN_STATUS_SAE_HASH_TO_ELEMENT ||
status_code == WLAN_STATUS_SAE_PK))))
return; return;
sdata_info(sdata, "%pM denied authentication (status %d)\n", sdata_info(sdata, "%pM denied authentication (status %d)\n",
...@@ -4560,6 +4563,9 @@ static void ieee80211_sta_bcn_mon_timer(struct timer_list *t) ...@@ -4560,6 +4563,9 @@ static void ieee80211_sta_bcn_mon_timer(struct timer_list *t)
if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn)
return; return;
if (sdata->vif.driver_flags & IEEE80211_VIF_BEACON_FILTER)
return;
sdata->u.mgd.connection_loss = false; sdata->u.mgd.connection_loss = false;
ieee80211_queue_work(&sdata->local->hw, ieee80211_queue_work(&sdata->local->hw,
&sdata->u.mgd.beacon_connection_loss_work); &sdata->u.mgd.beacon_connection_loss_work);
......
...@@ -1050,7 +1050,7 @@ static void __sta_info_destroy_part2(struct sta_info *sta) ...@@ -1050,7 +1050,7 @@ static void __sta_info_destroy_part2(struct sta_info *sta)
might_sleep(); might_sleep();
lockdep_assert_held(&local->sta_mtx); lockdep_assert_held(&local->sta_mtx);
while (sta->sta_state == IEEE80211_STA_AUTHORIZED) { if (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC); ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC);
WARN_ON_ONCE(ret); WARN_ON_ONCE(ret);
} }
......
...@@ -22,7 +22,8 @@ ...@@ -22,7 +22,8 @@
#define LOCAL_PR_ARG __entry->wiphy_name #define LOCAL_PR_ARG __entry->wiphy_name
#define STA_ENTRY __array(char, sta_addr, ETH_ALEN) #define STA_ENTRY __array(char, sta_addr, ETH_ALEN)
#define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : memset(__entry->sta_addr, 0, ETH_ALEN)) #define STA_ASSIGN (sta ? memcpy(__entry->sta_addr, sta->addr, ETH_ALEN) : \
eth_zero_addr(__entry->sta_addr))
#define STA_NAMED_ASSIGN(s) memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN) #define STA_NAMED_ASSIGN(s) memcpy(__entry->sta_addr, (s)->addr, ETH_ALEN)
#define STA_PR_FMT " sta:%pM" #define STA_PR_FMT " sta:%pM"
#define STA_PR_ARG __entry->sta_addr #define STA_PR_ARG __entry->sta_addr
......
...@@ -10400,8 +10400,7 @@ static int nl80211_connect(struct sk_buff *skb, struct genl_info *info) ...@@ -10400,8 +10400,7 @@ static int nl80211_connect(struct sk_buff *skb, struct genl_info *info)
memcpy(dev->ieee80211_ptr->disconnect_bssid, memcpy(dev->ieee80211_ptr->disconnect_bssid,
connect.bssid, ETH_ALEN); connect.bssid, ETH_ALEN);
else else
memset(dev->ieee80211_ptr->disconnect_bssid, eth_zero_addr(dev->ieee80211_ptr->disconnect_bssid);
0, ETH_ALEN);
} }
wdev_unlock(dev->ieee80211_ptr); wdev_unlock(dev->ieee80211_ptr);
......
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