mac80211: let sta_info_get_by_idx get sta by sdata
authorJohannes Berg <johannes@sipsolutions.net>
Mon, 16 Nov 2009 11:00:37 +0000 (12:00 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 18 Nov 2009 22:09:14 +0000 (17:09 -0500)
Instead of filtering by device, directly look up by sdata.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/cfg.c
net/mac80211/sta_info.c
net/mac80211/sta_info.h

index 7f18c8f..7d59181 100644 (file)
@@ -398,13 +398,13 @@ static void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
 static int ieee80211_dump_station(struct wiphy *wiphy, struct net_device *dev,
                                 int idx, u8 *mac, struct station_info *sinfo)
 {
-       struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
+       struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
        struct sta_info *sta;
        int ret = -ENOENT;
 
        rcu_read_lock();
 
-       sta = sta_info_get_by_idx(local, idx, dev);
+       sta = sta_info_get_by_idx(sdata, idx);
        if (sta) {
                ret = 0;
                memcpy(mac, sta->sta.addr, ETH_ALEN);
index 396a948..aa017a5 100644 (file)
@@ -116,14 +116,15 @@ struct sta_info *sta_info_get(struct ieee80211_local *local, const u8 *addr)
        return sta;
 }
 
-struct sta_info *sta_info_get_by_idx(struct ieee80211_local *local, int idx,
-                                    struct net_device *dev)
+struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata,
+                                    int idx)
 {
+       struct ieee80211_local *local = sdata->local;
        struct sta_info *sta;
        int i = 0;
 
        list_for_each_entry_rcu(sta, &local->sta_list, list) {
-               if (dev && dev != sta->sdata->dev)
+               if (sdata != sta->sdata)
                        continue;
                if (i < idx) {
                        ++i;
index 4673454..4c84c22 100644 (file)
@@ -409,8 +409,8 @@ struct sta_info *sta_info_get(struct ieee80211_local *local, const u8 *addr);
 /*
  * Get STA info by index, BROKEN!
  */
-struct sta_info *sta_info_get_by_idx(struct ieee80211_local *local, int idx,
-                                     struct net_device *dev);
+struct sta_info *sta_info_get_by_idx(struct ieee80211_sub_if_data *sdata,
+                                    int idx);
 /*
  * Create a new STA info, caller owns returned structure
  * until sta_info_insert().