diff options
Diffstat (limited to 'net/mac80211/status.c')
-rw-r--r-- | net/mac80211/status.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index d78f36c64c7b..32fe327acf4e 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c | |||
@@ -146,7 +146,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
146 | struct ieee80211_tx_status_rtap_hdr *rthdr; | 146 | struct ieee80211_tx_status_rtap_hdr *rthdr; |
147 | struct ieee80211_sub_if_data *sdata; | 147 | struct ieee80211_sub_if_data *sdata; |
148 | struct net_device *prev_dev = NULL; | 148 | struct net_device *prev_dev = NULL; |
149 | struct sta_info *sta; | 149 | struct sta_info *sta, *tmp; |
150 | int retry_count = -1, i; | 150 | int retry_count = -1, i; |
151 | bool injected; | 151 | bool injected; |
152 | 152 | ||
@@ -166,9 +166,11 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
166 | 166 | ||
167 | sband = local->hw.wiphy->bands[info->band]; | 167 | sband = local->hw.wiphy->bands[info->band]; |
168 | 168 | ||
169 | sta = sta_info_get(local, hdr->addr1); | 169 | for_each_sta_info(local, hdr->addr1, sta, tmp) { |
170 | /* skip wrong virtual interface */ | ||
171 | if (memcmp(hdr->addr2, sta->sdata->dev->dev_addr, ETH_ALEN)) | ||
172 | continue; | ||
170 | 173 | ||
171 | if (sta) { | ||
172 | if (!(info->flags & IEEE80211_TX_STAT_ACK) && | 174 | if (!(info->flags & IEEE80211_TX_STAT_ACK) && |
173 | test_sta_flags(sta, WLAN_STA_PS_STA)) { | 175 | test_sta_flags(sta, WLAN_STA_PS_STA)) { |
174 | /* | 176 | /* |