aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-09-08 05:05:08 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-09-11 15:53:34 -0400
commit69e6c010fd5f5015d3cc64718fbe266face93770 (patch)
tree77fef6e481637b3350346e795b24f1de44a2a46d /net/mac80211/mlme.c
parent940b7a3a6c257391bda0950448591dd79efebf59 (diff)
mac80211: move some RCU locking into an if branch
The if itself doesn't need to be protected, so move in the RCU locking to avoid doing anything at all when the condition isn't true. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index df12e746b03e..0abd5a4fe38d 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2612,13 +2612,12 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
2612 mesh_peer_accepts_plinks(elems)); 2612 mesh_peer_accepts_plinks(elems));
2613 } 2613 }
2614 2614
2615 rcu_read_lock();
2616
2617 if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && elems->supp_rates && 2615 if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && elems->supp_rates &&
2618 memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0) { 2616 memcmp(mgmt->bssid, sdata->u.sta.bssid, ETH_ALEN) == 0) {
2619
2620 supp_rates = ieee80211_sta_get_rates(local, elems, band); 2617 supp_rates = ieee80211_sta_get_rates(local, elems, band);
2621 2618
2619 rcu_read_lock();
2620
2622 sta = sta_info_get(local, mgmt->sa); 2621 sta = sta_info_get(local, mgmt->sa);
2623 if (sta) { 2622 if (sta) {
2624 u64 prev_rates; 2623 u64 prev_rates;
@@ -2642,9 +2641,9 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
2642 ieee80211_ibss_add_sta(sdata, NULL, mgmt->bssid, 2641 ieee80211_ibss_add_sta(sdata, NULL, mgmt->bssid,
2643 mgmt->sa, supp_rates); 2642 mgmt->sa, supp_rates);
2644 } 2643 }
2645 }
2646 2644
2647 rcu_read_unlock(); 2645 rcu_read_unlock();
2646 }
2648 2647
2649 if (elems->ds_params && elems->ds_params_len == 1) 2648 if (elems->ds_params && elems->ds_params_len == 1)
2650 freq = ieee80211_channel_to_frequency(elems->ds_params[0]); 2649 freq = ieee80211_channel_to_frequency(elems->ds_params[0]);