blob: dc04e36034f520ad77ed0ab07c3e27d597537290 [file] [log] [blame]
developer16c34c82022-07-06 22:25:57 +08001From 5b712b2ec82bb9e88346b379b5c6645b1fa7d7fe Mon Sep 17 00:00:00 2001
2From: Shayne Chen <shayne.chen@mediatek.com>
3Date: Wed, 6 Jul 2022 21:52:45 +0800
4Subject: [PATCH] mt76: testmode: use random payload for tx packets
5
6Compared to fixed payload packets, random payload packets have better
7measured EVM under the same txpower. Our tests show EVM becomes at least
83 dB better in test cases with high rate and long tx length, which also
9aligns the testing result of proprietary driver.
10
11Suggested-by: Jm Chen <jm.chen@mediatek.com>
12Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
13---
14 drivers/net/wireless/mediatek/mt76/testmode.c | 8 ++++++--
15 1 file changed, 6 insertions(+), 2 deletions(-)
16
17diff --git a/testmode.c b/testmode.c
18index 4a24f6c9..31439b39 100644
19--- a/testmode.c
20+++ b/testmode.c
21@@ -1,5 +1,7 @@
22 // SPDX-License-Identifier: ISC
23 /* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
24+
25+#include <linux/random.h>
26 #include "mt76.h"
27
28 const struct nla_policy mt76_tm_policy[NUM_MT76_TM_ATTRS] = {
29@@ -124,12 +126,14 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
30 if (!head)
31 return -ENOMEM;
32
33- hdr = __skb_put_zero(head, head_len);
34+ hdr = __skb_put_zero(head, sizeof(*hdr));
35 hdr->frame_control = cpu_to_le16(fc);
36 memcpy(hdr->addr1, td->addr[0], ETH_ALEN);
37 memcpy(hdr->addr2, td->addr[1], ETH_ALEN);
38 memcpy(hdr->addr3, td->addr[2], ETH_ALEN);
39 skb_set_queue_mapping(head, IEEE80211_AC_BE);
40+ get_random_bytes(__skb_put(head, head_len - sizeof(*hdr)),
41+ head_len - sizeof(*hdr));
42
43 info = IEEE80211_SKB_CB(head);
44 info->flags = IEEE80211_TX_CTL_INJECTED |
45@@ -157,7 +161,7 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
46 return -ENOMEM;
47 }
48
49- __skb_put_zero(frag, frag_len);
50+ get_random_bytes(__skb_put(frag, frag_len), frag_len);
51 head->len += frag->len;
52 head->data_len += frag->len;
53
54--
552.25.1
56