blob: 0c413a1fd0e3b1aac2c9a0b80814e37532dff6eb [file] [log] [blame]
developer5e5d6802022-09-01 10:53:06 +08001From d5720c59e760004712e6bcdbdf112f82521fa72b Mon Sep 17 00:00:00 2001
developer16c34c82022-07-06 22:25:57 +08002From: Shayne Chen <shayne.chen@mediatek.com>
3Date: Wed, 6 Jul 2022 21:52:45 +0800
developer5ce5ea42022-08-31 14:12:29 +08004Subject: [PATCH 6/8] mt76: testmode: use random payload for tx packets
developer16c34c82022-07-06 22:25:57 +08005
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---
developer5ce5ea42022-08-31 14:12:29 +080014 testmode.c | 8 ++++++--
developer16c34c82022-07-06 22:25:57 +080015 1 file changed, 6 insertions(+), 2 deletions(-)
16
17diff --git a/testmode.c b/testmode.c
developer5ce5ea42022-08-31 14:12:29 +080018index ba9ac2d..1d0d5d3 100644
developer16c34c82022-07-06 22:25:57 +080019--- 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] = {
developer5ce5ea42022-08-31 14:12:29 +080029@@ -123,12 +125,14 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
developer16c34c82022-07-06 22:25:57 +080030 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 |
developer5ce5ea42022-08-31 14:12:29 +080045@@ -154,7 +158,7 @@ int mt76_testmode_alloc_skb(struct mt76_phy *phy, u32 len)
developer16c34c82022-07-06 22:25:57 +080046 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--
developer5ce5ea42022-08-31 14:12:29 +0800552.18.0
developer16c34c82022-07-06 22:25:57 +080056