Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60f4b626 authored by Johannes Berg's avatar Johannes Berg
Browse files

mac80211: fix rhashtable conversion



My conversion of the mac80211 station hash table to rhashtable
completely broke the lookup in sta_info_get() as it no longer
took into account the virtual interface. Fix that.

Fixes: 7bedd0cf ("mac80211: use rhashtable for station table")
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 5eb8f4d7
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -157,8 +157,24 @@ struct sta_info *sta_info_get(struct ieee80211_sub_if_data *sdata,
			      const u8 *addr)
			      const u8 *addr)
{
{
	struct ieee80211_local *local = sdata->local;
	struct ieee80211_local *local = sdata->local;
	struct sta_info *sta;
	struct rhash_head *tmp;
	const struct bucket_table *tbl;

	rcu_read_lock();
	tbl = rht_dereference_rcu(local->sta_hash.tbl, &local->sta_hash);


	return rhashtable_lookup_fast(&local->sta_hash, addr, sta_rht_params);
	for_each_sta_info(local, tbl, addr, sta, tmp) {
		if (sta->sdata == sdata) {
			rcu_read_unlock();
			/* this is safe as the caller must already hold
			 * another rcu read section or the mutex
			 */
			return sta;
		}
	}
	rcu_read_unlock();
	return NULL;
}
}


/*
/*