mac80211: redesign auth/assoc
This is the second part of the auth/assoc redesign, the mac80211 part. This moves the auth/assoc code out of the work abstraction and into the MLME, so that we don't flip channels all the time etc. The only downside is that when we are associated, we need to drop the association in order to create a connection to another AP, but for most drivers this is actually desirable and the ability to do was never used by any applications. If we want to implement resource reservation with FT-OTA, we'd probably best do it with explicit R-O-C in wpa_s. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
4c0c0b75e0
commit
66e67e4189
@@ -2484,14 +2484,9 @@ static ieee80211_rx_result debug_noinline
|
||||
ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = rx->sdata;
|
||||
ieee80211_rx_result rxs;
|
||||
struct ieee80211_mgmt *mgmt = (void *)rx->skb->data;
|
||||
__le16 stype;
|
||||
|
||||
rxs = ieee80211_work_rx_mgmt(rx->sdata, rx->skb);
|
||||
if (rxs != RX_CONTINUE)
|
||||
return rxs;
|
||||
|
||||
stype = mgmt->frame_control & cpu_to_le16(IEEE80211_FCTL_STYPE);
|
||||
|
||||
if (!ieee80211_vif_is_mesh(&sdata->vif) &&
|
||||
@@ -2500,10 +2495,13 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
|
||||
return RX_DROP_MONITOR;
|
||||
|
||||
switch (stype) {
|
||||
case cpu_to_le16(IEEE80211_STYPE_AUTH):
|
||||
case cpu_to_le16(IEEE80211_STYPE_BEACON):
|
||||
case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP):
|
||||
/* process for all: mesh, mlme, ibss */
|
||||
break;
|
||||
case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
|
||||
case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
|
||||
case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
|
||||
case cpu_to_le16(IEEE80211_STYPE_DISASSOC):
|
||||
if (is_multicast_ether_addr(mgmt->da) &&
|
||||
@@ -2515,7 +2513,6 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
|
||||
return RX_DROP_MONITOR;
|
||||
break;
|
||||
case cpu_to_le16(IEEE80211_STYPE_PROBE_REQ):
|
||||
case cpu_to_le16(IEEE80211_STYPE_AUTH):
|
||||
/* process only for ibss */
|
||||
if (sdata->vif.type != NL80211_IFTYPE_ADHOC)
|
||||
return RX_DROP_MONITOR;
|
||||
|
Reference in New Issue
Block a user