]> www.infradead.org Git - linux-platform-drivers-x86.git/commitdiff
mt76: mt7915: rework mt7915_tm_set_tx_len()
authorShayne Chen <shayne.chen@mediatek.com>
Mon, 12 Apr 2021 05:39:53 +0000 (13:39 +0800)
committerFelix Fietkau <nbd@nbd.name>
Wed, 21 Apr 2021 09:42:19 +0000 (11:42 +0200)
Rework mt7915_tm_set_tx_len() with mt76_testmode_alloc_skb() to support
larger packet based on a longer tx_time.

Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/testmode.c

index bd798df748ba5ea107ae38b95fd762670c21b85e..f9d81e36ef09a2979444578b105ce48f119438d3 100644 (file)
@@ -257,13 +257,13 @@ mt7915_tm_set_tx_len(struct mt7915_phy *phy, u32 tx_time)
 {
        struct mt76_phy *mphy = phy->mt76;
        struct mt76_testmode_data *td = &mphy->test;
-       struct sk_buff *old = td->tx_skb, *new;
        struct ieee80211_supported_band *sband;
        struct rate_info rate = {};
        u16 flags = 0, tx_len;
        u32 bitrate;
+       int ret;
 
-       if (!tx_time || !old)
+       if (!tx_time)
                return 0;
 
        rate.mcs = td->tx_rate_idx;
@@ -323,21 +323,9 @@ mt7915_tm_set_tx_len(struct mt7915_phy *phy, u32 tx_time)
        bitrate = cfg80211_calculate_bitrate(&rate);
        tx_len = bitrate * tx_time / 10 / 8;
 
-       if (tx_len < sizeof(struct ieee80211_hdr))
-               tx_len = sizeof(struct ieee80211_hdr);
-       else if (tx_len > IEEE80211_MAX_FRAME_LEN)
-               tx_len = IEEE80211_MAX_FRAME_LEN;
-
-       new = alloc_skb(tx_len, GFP_KERNEL);
-       if (!new)
-               return -ENOMEM;
-
-       skb_copy_header(new, old);
-       __skb_put_zero(new, tx_len);
-       memcpy(new->data, old->data, sizeof(struct ieee80211_hdr));
-
-       dev_kfree_skb(old);
-       td->tx_skb = new;
+       ret = mt76_testmode_alloc_skb(phy->mt76, tx_len);
+       if (ret)
+               return ret;
 
        return 0;
 }