mirror of https://gitee.com/openkylin/linux.git
mac80211: let sta_info_get_by_idx get sta by sdata
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>
This commit is contained in:
parent
cb53a150ca
commit
3b53fde8ac
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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().
|
||||
|
|
Loading…
Reference in New Issue