mac80211: pass internal sta to ieee80211_tx_frags()
authorJohannes Berg <johannes.berg@intel.com>
Tue, 1 Oct 2019 21:26:35 +0000 (23:26 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 4 Oct 2019 11:57:50 +0000 (13:57 +0200)
This simplifies the code somewhat, and if necessary would let
us access the sta itself in that code.

Link: https://lore.kernel.org/r/1569965193-Id656db92703dded4bb2e3ec5dc329529f58e58f0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c

index 1fa422782905873cfac8fc4964cfecd012308346..938c10f7955bcb4516d493df6e783518c8fb3ba6 100644 (file)
@@ -1617,7 +1617,7 @@ static bool ieee80211_queue_skb(struct ieee80211_local *local,
 
 static bool ieee80211_tx_frags(struct ieee80211_local *local,
                               struct ieee80211_vif *vif,
-                              struct ieee80211_sta *sta,
+                              struct sta_info *sta,
                               struct sk_buff_head *skbs,
                               bool txpending)
 {
@@ -1679,7 +1679,7 @@ static bool ieee80211_tx_frags(struct ieee80211_local *local,
                spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
 
                info->control.vif = vif;
-               control.sta = sta;
+               control.sta = sta ? &sta->sta : NULL;
 
                __skb_unlink(skb, skbs);
                drv_tx(local, &control, skb);
@@ -1698,7 +1698,6 @@ static bool __ieee80211_tx(struct ieee80211_local *local,
        struct ieee80211_tx_info *info;
        struct ieee80211_sub_if_data *sdata;
        struct ieee80211_vif *vif;
-       struct ieee80211_sta *pubsta;
        struct sk_buff *skb;
        bool result = true;
        __le16 fc;
@@ -1713,11 +1712,6 @@ static bool __ieee80211_tx(struct ieee80211_local *local,
        if (sta && !sta->uploaded)
                sta = NULL;
 
-       if (sta)
-               pubsta = &sta->sta;
-       else
-               pubsta = NULL;
-
        switch (sdata->vif.type) {
        case NL80211_IFTYPE_MONITOR:
                if (sdata->u.mntr.flags & MONITOR_FLAG_ACTIVE) {
@@ -1744,8 +1738,7 @@ static bool __ieee80211_tx(struct ieee80211_local *local,
                break;
        }
 
-       result = ieee80211_tx_frags(local, vif, pubsta, skbs,
-                                   txpending);
+       result = ieee80211_tx_frags(local, vif, sta, skbs, txpending);
 
        ieee80211_tpt_led_trig_tx(local, fc, led_len);
 
@@ -3529,7 +3522,7 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
                                     struct ieee80211_sub_if_data, u.ap);
 
        __skb_queue_tail(&tx.skbs, skb);
-       ieee80211_tx_frags(local, &sdata->vif, &sta->sta, &tx.skbs, false);
+       ieee80211_tx_frags(local, &sdata->vif, sta, &tx.skbs, false);
        return true;
 }