aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorBen Greear <greearb@candelatech.com>2010-09-23 12:44:36 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-09-27 15:57:45 -0400
commit686b9cb994f5f74be790df4cd12873dfdc8a6984 (patch)
tree960bae4d7613e4420c28d0c422e3c63c2a569ed3 /include/net
parent295bafb47b0d365e1b4f747dffef29e590f13233 (diff)
mac80211/ath9k: Support AMPDU with multiple VIFs.
The old ieee80211_find_sta_by_hw method didn't properly find VIFS when there was more than one per AP. This caused AMPDU logic in ath9k to get the wrong VIF when trying to account for transmitted SKBs. This patch changes ieee80211_find_sta_by_hw to take a localaddr argument to distinguish between VIFs with the same AP but different local addresses. The method name is changed to ieee80211_find_sta_by_ifaddr. Signed-off-by: Ben Greear <greearb@candelatech.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mac80211.h25
1 files changed, 14 insertions, 11 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 5d1187d7c5e5..73469d8b64bb 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2432,25 +2432,28 @@ struct ieee80211_sta *ieee80211_find_sta(struct ieee80211_vif *vif,
2432 const u8 *addr); 2432 const u8 *addr);
2433 2433
2434/** 2434/**
2435 * ieee80211_find_sta_by_hw - find a station on hardware 2435 * ieee80211_find_sta_by_ifaddr - find a station on hardware
2436 * 2436 *
2437 * @hw: pointer as obtained from ieee80211_alloc_hw() 2437 * @hw: pointer as obtained from ieee80211_alloc_hw()
2438 * @addr: station's address 2438 * @addr: remote station's address
2439 * @localaddr: local address (vif->sdata->vif.addr). Use NULL for 'any'.
2439 * 2440 *
2440 * This function must be called under RCU lock and the 2441 * This function must be called under RCU lock and the
2441 * resulting pointer is only valid under RCU lock as well. 2442 * resulting pointer is only valid under RCU lock as well.
2442 * 2443 *
2443 * NOTE: This function should not be used! When mac80211 is converted 2444 * NOTE: You may pass NULL for localaddr, but then you will just get
2444 * internally to properly keep track of stations on multiple 2445 * the first STA that matches the remote address 'addr'.
2445 * virtual interfaces, it will not always know which station to 2446 * We can have multiple STA associated with multiple
2446 * return here since a single address might be used by multiple 2447 * logical stations (e.g. consider a station connecting to another
2447 * logical stations (e.g. consider a station connecting to another 2448 * BSSID on the same AP hardware without disconnecting first).
2448 * BSSID on the same AP hardware without disconnecting first). 2449 * In this case, the result of this method with localaddr NULL
2450 * is not reliable.
2449 * 2451 *
2450 * DO NOT USE THIS FUNCTION. 2452 * DO NOT USE THIS FUNCTION with localaddr NULL if at all possible.
2451 */ 2453 */
2452struct ieee80211_sta *ieee80211_find_sta_by_hw(struct ieee80211_hw *hw, 2454struct ieee80211_sta *ieee80211_find_sta_by_ifaddr(struct ieee80211_hw *hw,
2453 const u8 *addr); 2455 const u8 *addr,
2456 const u8 *localaddr);
2454 2457
2455/** 2458/**
2456 * ieee80211_sta_block_awake - block station from waking up 2459 * ieee80211_sta_block_awake - block station from waking up