diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-09-29 10:04:36 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-09-30 15:57:19 -0400 |
commit | c2c98fdeb5c897499644eb247285c8e3dacc6450 (patch) | |
tree | aaa9c0f8dd16ab896308470e21a0813041094670 /net/mac80211/mlme.c | |
parent | deeaee197b0fa694ba6c8f02cdb57b3be7115b4f (diff) |
mac80211: optimise station flags
The flaglock in struct sta_info has long been
something that I wanted to get rid of, this
finally does the conversion to atomic bitops.
The conversion itself is straight-forward in
most places, a few things needed to change a
bit since we can no longer use multiple bits
at the same time.
On x86-64, this is a fairly significant code
size reduction:
text data bss dec hex
427861 23648 1008 452517 6e7a5 before
425383 23648 976 450007 6ddd7 after
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index b98c43a7f191..c4e8901c96f6 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -627,7 +627,7 @@ static bool ieee80211_powersave_allowed(struct ieee80211_sub_if_data *sdata) | |||
627 | { | 627 | { |
628 | struct ieee80211_if_managed *mgd = &sdata->u.mgd; | 628 | struct ieee80211_if_managed *mgd = &sdata->u.mgd; |
629 | struct sta_info *sta = NULL; | 629 | struct sta_info *sta = NULL; |
630 | u32 sta_flags = 0; | 630 | bool authorized = false; |
631 | 631 | ||
632 | if (!mgd->powersave) | 632 | if (!mgd->powersave) |
633 | return false; | 633 | return false; |
@@ -645,13 +645,10 @@ static bool ieee80211_powersave_allowed(struct ieee80211_sub_if_data *sdata) | |||
645 | rcu_read_lock(); | 645 | rcu_read_lock(); |
646 | sta = sta_info_get(sdata, mgd->bssid); | 646 | sta = sta_info_get(sdata, mgd->bssid); |
647 | if (sta) | 647 | if (sta) |
648 | sta_flags = get_sta_flags(sta); | 648 | authorized = test_sta_flag(sta, WLAN_STA_AUTHORIZED); |
649 | rcu_read_unlock(); | 649 | rcu_read_unlock(); |
650 | 650 | ||
651 | if (!(sta_flags & WLAN_STA_AUTHORIZED)) | 651 | return authorized; |
652 | return false; | ||
653 | |||
654 | return true; | ||
655 | } | 652 | } |
656 | 653 | ||
657 | /* need to hold RTNL or interface lock */ | 654 | /* need to hold RTNL or interface lock */ |
@@ -1095,7 +1092,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, | |||
1095 | mutex_lock(&local->sta_mtx); | 1092 | mutex_lock(&local->sta_mtx); |
1096 | sta = sta_info_get(sdata, bssid); | 1093 | sta = sta_info_get(sdata, bssid); |
1097 | if (sta) { | 1094 | if (sta) { |
1098 | set_sta_flags(sta, WLAN_STA_BLOCK_BA); | 1095 | set_sta_flag(sta, WLAN_STA_BLOCK_BA); |
1099 | ieee80211_sta_tear_down_BA_sessions(sta, tx); | 1096 | ieee80211_sta_tear_down_BA_sessions(sta, tx); |
1100 | } | 1097 | } |
1101 | mutex_unlock(&local->sta_mtx); | 1098 | mutex_unlock(&local->sta_mtx); |
@@ -1513,10 +1510,11 @@ static bool ieee80211_assoc_success(struct ieee80211_work *wk, | |||
1513 | return false; | 1510 | return false; |
1514 | } | 1511 | } |
1515 | 1512 | ||
1516 | set_sta_flags(sta, WLAN_STA_AUTH | WLAN_STA_ASSOC | | 1513 | set_sta_flag(sta, WLAN_STA_AUTH); |
1517 | WLAN_STA_ASSOC_AP); | 1514 | set_sta_flag(sta, WLAN_STA_ASSOC); |
1515 | set_sta_flag(sta, WLAN_STA_ASSOC_AP); | ||
1518 | if (!(ifmgd->flags & IEEE80211_STA_CONTROL_PORT)) | 1516 | if (!(ifmgd->flags & IEEE80211_STA_CONTROL_PORT)) |
1519 | set_sta_flags(sta, WLAN_STA_AUTHORIZED); | 1517 | set_sta_flag(sta, WLAN_STA_AUTHORIZED); |
1520 | 1518 | ||
1521 | rates = 0; | 1519 | rates = 0; |
1522 | basic_rates = 0; | 1520 | basic_rates = 0; |
@@ -1575,10 +1573,10 @@ static bool ieee80211_assoc_success(struct ieee80211_work *wk, | |||
1575 | rate_control_rate_init(sta); | 1573 | rate_control_rate_init(sta); |
1576 | 1574 | ||
1577 | if (ifmgd->flags & IEEE80211_STA_MFP_ENABLED) | 1575 | if (ifmgd->flags & IEEE80211_STA_MFP_ENABLED) |
1578 | set_sta_flags(sta, WLAN_STA_MFP); | 1576 | set_sta_flag(sta, WLAN_STA_MFP); |
1579 | 1577 | ||
1580 | if (elems.wmm_param) | 1578 | if (elems.wmm_param) |
1581 | set_sta_flags(sta, WLAN_STA_WME); | 1579 | set_sta_flag(sta, WLAN_STA_WME); |
1582 | 1580 | ||
1583 | /* sta_info_reinsert will also unlock the mutex lock */ | 1581 | /* sta_info_reinsert will also unlock the mutex lock */ |
1584 | err = sta_info_reinsert(sta); | 1582 | err = sta_info_reinsert(sta); |