wifi: mt76: testmode: use random payload for tx packets
authorShayne Chen <shayne.chen@mediatek.com>
Mon, 11 Jul 2022 14:19:10 +0000 (22:19 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 15 Sep 2022 10:53:56 +0000 (12:53 +0200)
Compared to fixed payload packets, random payload packets have better
measured EVM under the same txpower. Our tests show EVM becomes at least
2-3 dB better in test cases with high rate and long tx length, which also
aligns the testing results to proprietary driver.

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

index 71fd3fb..0accc71 100644 (file)
@@ -1,5 +1,7 @@
 // SPDX-License-Identifier: ISC
 /* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
+
+#include <linux/random.h>
 #include "mt76.h"
 
 const struct nla_policy mt76_tm_policy[NUM_MT76_TM_ATTRS] = {
@@ -123,12 +125,14 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
        if (!head)
                return -ENOMEM;
 
-       hdr = __skb_put_zero(head, head_len);
+       hdr = __skb_put_zero(head, sizeof(*hdr));
        hdr->frame_control = cpu_to_le16(fc);
        memcpy(hdr->addr1, td->addr[0], ETH_ALEN);
        memcpy(hdr->addr2, td->addr[1], ETH_ALEN);
        memcpy(hdr->addr3, td->addr[2], ETH_ALEN);
        skb_set_queue_mapping(head, IEEE80211_AC_BE);
+       get_random_bytes(__skb_put(head, head_len - sizeof(*hdr)),
+                        head_len - sizeof(*hdr));
 
        info = IEEE80211_SKB_CB(head);
        info->flags = IEEE80211_TX_CTL_INJECTED |
@@ -154,7 +158,7 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
                        return -ENOMEM;
                }
 
-               __skb_put_zero(frag, frag_len);
+               get_random_bytes(__skb_put(frag, frag_len), frag_len);
                head->len += frag->len;
                head->data_len += frag->len;