Skip to content

Commit

Permalink
mac80211: Track auth frame registrations on IBSS ifaces
Browse files Browse the repository at this point in the history
Track userspace registrations for authentication
frames received on an IBSS interface. This field
will be used to decide whether or not to send
"open system" authentication frames when a new
station joins an adhoc network.

Signed-off-by: Will Hawkins <hawkinsw@opentechinstitute.org>
[redesign the code flow a bit]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Will Hawkins authored and Johannes Berg committed Jun 20, 2012
1 parent 9ea4fa1 commit 6abe056
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
28 changes: 21 additions & 7 deletions net/mac80211/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -2516,16 +2516,30 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy,
u16 frame_type, bool reg)
{
struct ieee80211_local *local = wiphy_priv(wiphy);
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);

if (frame_type != (IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_REQ))
return;
switch (frame_type) {
case IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH:
if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;

if (reg)
local->probe_req_reg++;
else
local->probe_req_reg--;
if (reg)
ifibss->auth_frame_registrations++;
else
ifibss->auth_frame_registrations--;
}
break;
case IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_REQ:
if (reg)
local->probe_req_reg++;
else
local->probe_req_reg--;

ieee80211_queue_work(&local->hw, &local->reconfig_filter);
ieee80211_queue_work(&local->hw, &local->reconfig_filter);
break;
default:
break;
}
}

static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)
Expand Down
1 change: 1 addition & 0 deletions net/mac80211/ieee80211_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,7 @@ struct ieee80211_if_ibss {
bool privacy;

bool control_port;
unsigned int auth_frame_registrations;

u8 bssid[ETH_ALEN] __aligned(2);
u8 ssid[IEEE80211_MAX_SSID_LEN];
Expand Down

0 comments on commit 6abe056

Please sign in to comment.