diff options
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 8834cc93c716..b913bfc34a9f 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1055,7 +1055,7 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata, | |||
1055 | if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) | 1055 | if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) |
1056 | tx->sta = rcu_dereference(sdata->u.vlan.sta); | 1056 | tx->sta = rcu_dereference(sdata->u.vlan.sta); |
1057 | if (!tx->sta) | 1057 | if (!tx->sta) |
1058 | tx->sta = sta_info_get(local, hdr->addr1); | 1058 | tx->sta = sta_info_get(sdata, hdr->addr1); |
1059 | 1059 | ||
1060 | if (tx->sta && ieee80211_is_data_qos(hdr->frame_control) && | 1060 | if (tx->sta && ieee80211_is_data_qos(hdr->frame_control) && |
1061 | (local->hw.flags & IEEE80211_HW_AMPDU_AGGREGATION)) { | 1061 | (local->hw.flags & IEEE80211_HW_AMPDU_AGGREGATION)) { |
@@ -1761,9 +1761,8 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, | |||
1761 | */ | 1761 | */ |
1762 | if (!is_multicast_ether_addr(hdr.addr1)) { | 1762 | if (!is_multicast_ether_addr(hdr.addr1)) { |
1763 | rcu_read_lock(); | 1763 | rcu_read_lock(); |
1764 | sta = sta_info_get(local, hdr.addr1); | 1764 | sta = sta_info_get(sdata, hdr.addr1); |
1765 | /* XXX: in the future, use sdata to look up the sta */ | 1765 | if (sta) |
1766 | if (sta && sta->sdata == sdata) | ||
1767 | sta_flags = get_sta_flags(sta); | 1766 | sta_flags = get_sta_flags(sta); |
1768 | rcu_read_unlock(); | 1767 | rcu_read_unlock(); |
1769 | } | 1768 | } |
@@ -1922,7 +1921,7 @@ static bool ieee80211_tx_pending_skb(struct ieee80211_local *local, | |||
1922 | ieee80211_tx(sdata, skb, true); | 1921 | ieee80211_tx(sdata, skb, true); |
1923 | } else { | 1922 | } else { |
1924 | hdr = (struct ieee80211_hdr *)skb->data; | 1923 | hdr = (struct ieee80211_hdr *)skb->data; |
1925 | sta = sta_info_get(local, hdr->addr1); | 1924 | sta = sta_info_get(sdata, hdr->addr1); |
1926 | 1925 | ||
1927 | ret = __ieee80211_tx(local, &skb, sta, true); | 1926 | ret = __ieee80211_tx(local, &skb, sta, true); |
1928 | if (ret != IEEE80211_TX_OK) | 1927 | if (ret != IEEE80211_TX_OK) |