This is a preliminary patch for WED's TxS support.
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
        void (*reset_q)(struct mt76_dev *dev, struct mt76_queue *q);
 };
 
+enum mt76_phy_type {
+       MT_PHY_TYPE_CCK,
+       MT_PHY_TYPE_OFDM,
+       MT_PHY_TYPE_HT,
+       MT_PHY_TYPE_HT_GF,
+       MT_PHY_TYPE_VHT,
+       MT_PHY_TYPE_HE_SU = 8,
+       MT_PHY_TYPE_HE_EXT_SU,
+       MT_PHY_TYPE_HE_TB,
+       MT_PHY_TYPE_HE_MU,
+       __MT_PHY_TYPE_HE_MAX,
+};
+
+struct mt76_sta_stats {
+       u64 tx_mode[__MT_PHY_TYPE_HE_MAX];
+       u64 tx_bw[4];           /* 20, 40, 80, 160 */
+       u64 tx_nss[4];          /* 1, 2, 3, 4 */
+       u64 tx_mcs[16];         /* mcs idx */
+};
+
 enum mt76_wcid_flags {
        MT_WCID_FLAG_CHECK_PS,
        MT_WCID_FLAG_PS,
 
        struct list_head list;
        struct idr pktid;
+
+       struct mt76_sta_stats stats;
 };
 
 struct mt76_txq {
        s8 ru[7][12];
 };
 
-enum mt76_phy_type {
-       MT_PHY_TYPE_CCK,
-       MT_PHY_TYPE_OFDM,
-       MT_PHY_TYPE_HT,
-       MT_PHY_TYPE_HT_GF,
-       MT_PHY_TYPE_VHT,
-       MT_PHY_TYPE_HE_SU = 8,
-       MT_PHY_TYPE_HE_EXT_SU,
-       MT_PHY_TYPE_HE_TB,
-       MT_PHY_TYPE_HE_MU,
-       __MT_PHY_TYPE_HE_MAX,
-};
-
-struct mt76_sta_stats {
-       u64 tx_mode[__MT_PHY_TYPE_HE_MAX];
-       u64 tx_bw[4];           /* 20, 40, 80, 160 */
-       u64 tx_nss[4];          /* 1, 2, 3, 4 */
-       u64 tx_mcs[16];         /* mcs idx */
-};
-
 struct mt76_ethtool_worker_info {
        u64 *data;
        int idx;
 
                                 struct ieee80211_key_conf *key, int pid,
                                 enum mt76_txq_id qid, u32 changed);
 bool mt76_connac2_mac_add_txs_skb(struct mt76_dev *dev, struct mt76_wcid *wcid,
-                                 int pid, __le32 *txs_data,
-                                 struct mt76_sta_stats *stats);
+                                 int pid, __le32 *txs_data);
 void mt76_connac2_mac_decode_he_radiotap(struct mt76_dev *dev,
                                         struct sk_buff *skb,
                                         __le32 *rxv, u32 mode);
 
 EXPORT_SYMBOL_GPL(mt76_connac2_mac_write_txwi);
 
 bool mt76_connac2_mac_add_txs_skb(struct mt76_dev *dev, struct mt76_wcid *wcid,
-                                 int pid, __le32 *txs_data,
-                                 struct mt76_sta_stats *stats)
+                                 int pid, __le32 *txs_data)
 {
+       struct mt76_sta_stats *stats = &wcid->stats;
        struct ieee80211_supported_band *sband;
        struct mt76_phy *mphy;
        struct ieee80211_tx_info *info;
 
 
        msta = container_of(wcid, struct mt7915_sta, wcid);
 
-       mt76_connac2_mac_add_txs_skb(&dev->mt76, wcid, pid, txs_data,
-                                    &msta->stats);
+       mt76_connac2_mac_add_txs_skb(&dev->mt76, wcid, pid, txs_data);
        if (!wcid->sta)
                goto out;
 
 
        if (msta->vif->mt76.idx != wi->idx)
                return;
 
-       mt76_ethtool_worker(wi, &msta->stats);
+       mt76_ethtool_worker(wi, &msta->wcid.stats);
 }
 
 static
 
        unsigned long jiffies;
        unsigned long ampdu_state;
 
-       struct mt76_sta_stats stats;
-
        struct mt76_connac_sta_key_conf bip;
 
        struct {
 
 
        msta = container_of(wcid, struct mt7921_sta, wcid);
 
-       mt76_connac2_mac_add_txs_skb(&dev->mt76, wcid, pid, txs_data,
-                                    &msta->stats);
+       mt76_connac2_mac_add_txs_skb(&dev->mt76, wcid, pid, txs_data);
        if (!wcid->sta)
                goto out;
 
 
        if (msta->vif->mt76.idx != wi->idx)
                return;
 
-       mt76_ethtool_worker(wi, &msta->stats);
+       mt76_ethtool_worker(wi, &msta->wcid.stats);
 }
 
 static
 
 
        unsigned long last_txs;
        unsigned long ampdu_state;
-       struct mt76_sta_stats stats;
 
        struct mt76_connac_sta_key_conf bip;
 };