mac80211: clean up rx handling wrt. found_sta
authorJohannes Berg <johannes.berg@intel.com>
Fri, 24 Sep 2010 09:21:07 +0000 (11:21 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 27 Sep 2010 19:57:52 +0000 (15:57 -0400)
If a station was found, then we'll have exited
the function already, so it is not necessary to
have a variable keeping track of it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/rx.c

index 13311f8960ab9c0122959a6ecac5ea2d1a90b485..2b6b4eab44dde883c0fed92b66822b44e93a04ce 100644 (file)
@@ -2651,7 +2651,6 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
        struct ieee80211_rx_data rx;
        struct ieee80211_sub_if_data *prev;
        struct sta_info *sta, *tmp, *prev_sta;
-       bool found_sta = false;
        int err = 0;
 
        fc = ((struct ieee80211_hdr *)skb->data)->frame_control;
@@ -2684,8 +2683,6 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
                prev_sta = NULL;
 
                for_each_sta_info(local, hdr->addr2, sta, tmp) {
-                       found_sta = true;
-
                        if (!prev_sta) {
                                prev_sta = sta;
                                continue;
@@ -2707,43 +2704,40 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
                }
        }
 
-       if (!found_sta) {
-               prev = NULL;
-
-               list_for_each_entry_rcu(sdata, &local->interfaces, list) {
-                       if (!ieee80211_sdata_running(sdata))
-                               continue;
-
-                       if (sdata->vif.type == NL80211_IFTYPE_MONITOR ||
-                           sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
-                               continue;
+       prev = NULL;
 
-                       /*
-                        * frame is destined for this interface, but if it's
-                        * not also for the previous one we handle that after
-                        * the loop to avoid copying the SKB once too much
-                        */
+       list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+               if (!ieee80211_sdata_running(sdata))
+                       continue;
 
-                       if (!prev) {
-                               prev = sdata;
-                               continue;
-                       }
+               if (sdata->vif.type == NL80211_IFTYPE_MONITOR ||
+                   sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
+                       continue;
 
-                       rx.sta = sta_info_get_bss(prev, hdr->addr2);
-                       rx.sdata = prev;
-                       ieee80211_prepare_and_rx_handle(&rx, skb, false);
+               /*
+                * frame is destined for this interface, but if it's
+                * not also for the previous one we handle that after
+                * the loop to avoid copying the SKB once too much
+                */
 
+               if (!prev) {
                        prev = sdata;
+                       continue;
                }
 
-               if (prev) {
-                       rx.sta = sta_info_get_bss(prev, hdr->addr2);
-                       rx.sdata = prev;
+               rx.sta = sta_info_get_bss(prev, hdr->addr2);
+               rx.sdata = prev;
+               ieee80211_prepare_and_rx_handle(&rx, skb, false);
 
-                       if (ieee80211_prepare_and_rx_handle(&rx, skb, true))
-                               return;
-               }
+               prev = sdata;
+       }
+
+       if (prev) {
+               rx.sta = sta_info_get_bss(prev, hdr->addr2);
+               rx.sdata = prev;
 
+               if (ieee80211_prepare_and_rx_handle(&rx, skb, true))
+                       return;
        }
 
        dev_kfree_skb(skb);