[][MAC80211][app][Add HQADLL support in eagle testmode]
[Description]
Add HQADLL support in eagle testmode
[Release-log]
N/A
Change-Id: I5589826c264dbabcf7ca25581ec217d3a1fcea54
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7488681
diff --git a/feed/atenl/src/atenl.h b/feed/atenl/src/atenl.h
index 9f8b796..1286c55 100644
--- a/feed/atenl/src/atenl.h
+++ b/feed/atenl/src/atenl.h
@@ -233,6 +233,9 @@
ATENL_PHY_TYPE_HE_EXT_SU,
ATENL_PHY_TYPE_HE_TB,
ATENL_PHY_TYPE_HE_MU,
+ ATENL_PHY_TYPE_EHT_SU = 13,
+ ATENL_PHY_TYPE_EHT_TRIG,
+ ATENL_PHY_TYPE_EHT_MU,
};
enum atenl_e2p_mode {
@@ -306,8 +309,9 @@
TEST_CBW_5MHZ,
TEST_CBW_160MHZ,
TEST_CBW_8080MHZ,
+ TEST_CBW_320MHZ = 12,
- TEST_CBW_MAX = TEST_CBW_8080MHZ - 1,
+ TEST_CBW_MAX = TEST_CBW_320MHZ,
};
struct atenl_rx_info_hdr {
diff --git a/feed/atenl/src/eeprom.c b/feed/atenl/src/eeprom.c
index f63bc9e..0182187 100644
--- a/feed/atenl/src/eeprom.c
+++ b/feed/atenl/src/eeprom.c
@@ -329,6 +329,9 @@
if (get_band_val(an, 1, valid))
set_band_val(an, 1, phy_idx, phy_idx + 1);
+ if (get_band_val(an, 2, valid))
+ set_band_val(an, 2, phy_idx, phy_idx + 2);
+
return 0;
}
diff --git a/feed/atenl/src/hqa.c b/feed/atenl/src/hqa.c
index eabfce5..2f25043 100644
--- a/feed/atenl/src/hqa.c
+++ b/feed/atenl/src/hqa.c
@@ -16,6 +16,8 @@
/* center ch */
u16 ch_80;
u16 ch_160;
+ u16 ch_320_1;
+ u16 ch_320_2;
/* only use for channels that don't have 80 but has 40 */
u16 ch_40;
};
@@ -72,65 +74,65 @@
static const struct atenl_channel atenl_channels_6ghz[] = {
/* UNII-5 */
- CHAN(1, 5955, 7, 15),
- CHAN(5, 5975, 7, 15),
- CHAN(9, 5995, 7, 15),
- CHAN(13, 6015, 7, 15),
- CHAN(17, 6035, 23, 15),
- CHAN(21, 6055, 23, 15),
- CHAN(25, 6075, 23, 15),
- CHAN(29, 6095, 23, 15),
- CHAN(33, 6115, 39, 47),
- CHAN(37, 6135, 39, 47),
- CHAN(41, 6155, 39, 47),
- CHAN(45, 6175, 39, 47),
- CHAN(49, 6195, 55, 47),
- CHAN(53, 6215, 55, 47),
- CHAN(57, 6235, 55, 47),
- CHAN(61, 6255, 55, 47),
- CHAN(65, 6275, 71, 79),
- CHAN(69, 6295, 71, 79),
- CHAN(73, 6315, 71, 79),
- CHAN(77, 6335, 71, 79),
- CHAN(81, 6355, 87, 79),
- CHAN(85, 6375, 87, 79),
- CHAN(89, 6395, 87, 79),
- CHAN(93, 6415, 87, 79),
+ CHAN(1, 5955, 7, 15, .ch_320_1 = 31),
+ CHAN(5, 5975, 7, 15, .ch_320_1 = 31),
+ CHAN(9, 5995, 7, 15, .ch_320_1 = 31),
+ CHAN(13, 6015, 7, 15, .ch_320_1 = 31),
+ CHAN(17, 6035, 23, 15, .ch_320_1 = 31),
+ CHAN(21, 6055, 23, 15, .ch_320_1 = 31),
+ CHAN(25, 6075, 23, 15, .ch_320_1 = 31),
+ CHAN(29, 6095, 23, 15, .ch_320_1 = 31),
+ CHAN(33, 6115, 39, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(37, 6135, 39, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(41, 6155, 39, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(45, 6175, 39, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(49, 6195, 55, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(53, 6215, 55, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(57, 6235, 55, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(61, 6255, 55, 47, .ch_320_1 = 31, .ch_320_2 = 63),
+ CHAN(65, 6275, 71, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(69, 6295, 71, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(73, 6315, 71, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(77, 6335, 71, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(81, 6355, 87, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(85, 6375, 87, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(89, 6395, 87, 79, .ch_320_1 = 95, .ch_320_2 = 63),
+ CHAN(93, 6415, 87, 79, .ch_320_1 = 95, .ch_320_2 = 63),
/* UNII-6 */
- CHAN(97, 6435, 103, 111),
- CHAN(101, 6455, 103, 111),
- CHAN(105, 6475, 103, 111),
- CHAN(109, 6495, 103, 111),
- CHAN(113, 6515, 119, 111),
- CHAN(117, 6535, 119, 111),
+ CHAN(97, 6435, 103, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(101, 6455, 103, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(105, 6475, 103, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(109, 6495, 103, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(113, 6515, 119, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(117, 6535, 119, 111, .ch_320_1 = 95, .ch_320_2 = 127),
/* UNII-7 */
- CHAN(121, 6555, 119, 111),
- CHAN(125, 6575, 119, 111),
- CHAN(129, 6595, 135, 143),
- CHAN(133, 6615, 135, 143),
- CHAN(137, 6635, 135, 143),
- CHAN(141, 6655, 135, 143),
- CHAN(145, 6675, 151, 143),
- CHAN(149, 6695, 151, 143),
- CHAN(153, 6715, 151, 143),
- CHAN(157, 6735, 151, 143),
- CHAN(161, 6755, 167, 175),
- CHAN(165, 6775, 167, 175),
- CHAN(169, 6795, 167, 175),
- CHAN(173, 6815, 167, 175),
- CHAN(177, 6835, 183, 175),
- CHAN(181, 6855, 183, 175),
- CHAN(185, 6875, 183, 175),
+ CHAN(121, 6555, 119, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(125, 6575, 119, 111, .ch_320_1 = 95, .ch_320_2 = 127),
+ CHAN(129, 6595, 135, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(133, 6615, 135, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(137, 6635, 135, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(141, 6655, 135, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(145, 6675, 151, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(149, 6695, 151, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(153, 6715, 151, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(157, 6735, 151, 143, .ch_320_1 = 159, .ch_320_2 = 127),
+ CHAN(161, 6755, 167, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(165, 6775, 167, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(169, 6795, 167, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(173, 6815, 167, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(177, 6835, 183, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(181, 6855, 183, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(185, 6875, 183, 175, .ch_320_1 = 159, .ch_320_2 = 191),
/* UNII-8 */
- CHAN(189, 6895, 183, 175),
- CHAN(193, 6915, 199, 207),
- CHAN(197, 6935, 199, 207),
- CHAN(201, 6955, 199, 207),
- CHAN(205, 6975, 199, 207),
- CHAN(209, 6995, 215, 207),
- CHAN(213, 7015, 215, 207),
- CHAN(217, 7035, 215, 207),
- CHAN(221, 7055, 215, 207),
+ CHAN(189, 6895, 183, 175, .ch_320_1 = 159, .ch_320_2 = 191),
+ CHAN(193, 6915, 199, 207, .ch_320_2 = 191),
+ CHAN(197, 6935, 199, 207, .ch_320_2 = 191),
+ CHAN(201, 6955, 199, 207, .ch_320_2 = 191),
+ CHAN(205, 6975, 199, 207, .ch_320_2 = 191),
+ CHAN(209, 6995, 215, 207, .ch_320_2 = 191),
+ CHAN(213, 7015, 215, 207, .ch_320_2 = 191),
+ CHAN(217, 7035, 215, 207, .ch_320_2 = 191),
+ CHAN(221, 7055, 215, 207, .ch_320_2 = 191),
CHAN(225, 7075, 0, 0, .ch_40 = 227),
CHAN(229, 7095, 0, 0, .ch_40 = 227),
CHAN(233, 7115, 0, 0),
@@ -158,7 +160,6 @@
/* set a special-defined country */
sprintf(cmd, "iw reg set VV");
system(cmd);
- atenl_nl_set_state(an, i, MT76_TM_STATE_IDLE);
} else {
atenl_nl_set_state(an, i, MT76_TM_STATE_OFF);
sprintf(cmd, "iw reg set 00");
@@ -170,6 +171,9 @@
}
}
+ for (i = 0; i < MAX_BAND_NUM; i++)
+ atenl_nl_set_state(an, i, MT76_TM_STATE_IDLE);
+
return 0;
}
@@ -566,6 +570,9 @@
static void atenl_get_bw_string(u8 bw, char *buf)
{
switch (bw) {
+ case TEST_CBW_320MHZ:
+ sprintf(buf, "320");
+ break;
case TEST_CBW_160MHZ:
sprintf(buf, "160");
break;
@@ -627,7 +634,8 @@
if (band >= MAX_BAND_NUM)
return -EINVAL;
- if ((bw == TEST_CBW_160MHZ && pri_sel > 7) ||
+ if ((bw == TEST_CBW_320MHZ && pri_sel > 15) ||
+ (bw == TEST_CBW_160MHZ && pri_sel > 7) ||
(bw == TEST_CBW_80MHZ && pri_sel > 3) ||
(bw == TEST_CBW_40MHZ && pri_sel > 1)) {
atenl_err("%s: ctrl channel select error\n", __func__);
@@ -664,7 +672,17 @@
ch_num = ARRAY_SIZE(atenl_channels_5ghz);
}
- if (bw == TEST_CBW_160MHZ) {
+ if (bw == TEST_CBW_320MHZ) {
+ for (i = 0; i < ch_num; i++) {
+ if (ch1 == ch_list[i].ch_320_1) {
+ chan = &ch_list[i];
+ break;
+ } else if (ch1 == ch_list[i].ch_320_2) {
+ chan = &ch_list[i];
+ break;
+ }
+ }
+ } else if (bw == TEST_CBW_160MHZ) {
for (i = 0; i < ch_num; i++) {
if (ch1 == ch_list[i].ch_160) {
chan = &ch_list[i];
diff --git a/feed/atenl/src/nl.c b/feed/atenl/src/nl.c
index a8e2ea9..def663f 100644
--- a/feed/atenl/src/nl.c
+++ b/feed/atenl/src/nl.c
@@ -101,6 +101,9 @@
[ATENL_PHY_TYPE_HE_EXT_SU] = MT76_TM_TX_MODE_HE_EXT_SU,
[ATENL_PHY_TYPE_HE_TB] = MT76_TM_TX_MODE_HE_TB,
[ATENL_PHY_TYPE_HE_MU] = MT76_TM_TX_MODE_HE_MU,
+ [ATENL_PHY_TYPE_EHT_SU] = MT76_TM_TX_MODE_EHT_SU,
+ [ATENL_PHY_TYPE_EHT_TRIG] = MT76_TM_TX_MODE_EHT_TRIG,
+ [ATENL_PHY_TYPE_EHT_MU] = MT76_TM_TX_MODE_EHT_MU,
};
if (phy_type >= ARRAY_SIZE(phy_type_to_attr))
@@ -287,7 +290,7 @@
if (get_band_val(an, band, use_tx_time))
nla_put_u32(msg, MT76_TM_ATTR_TX_TIME,
get_band_val(an, band, tx_time));
- else
+ else if (get_band_val(an, band, tx_mpdu_len))
nla_put_u32(msg, MT76_TM_ATTR_TX_LENGTH,
get_band_val(an, band, tx_mpdu_len));
@@ -304,7 +307,7 @@
atenl_set_attr_antenna(an, msg, tx_antenna);
}
- if (tx_rate_mode >= MT76_TM_TX_MODE_HE_SU) {
+ if (!is_mt7996(an) && tx_rate_mode >= MT76_TM_TX_MODE_HE_SU) {
u8 ofs = sgi;
size_t i;
@@ -364,7 +367,14 @@
v = (u32 *)(hdr->data + 18);
atenl_set_attr_antenna(an, msg, ntohl(v[0]));
- nla_put_u8(msg, MT76_TM_ATTR_AID, ntohl(v[1]));
+ if (is_mt7996(an)) {
+ nla_put_u8(msg, MT76_TM_ATTR_TX_RATE_MODE,
+ phy_type_to_attr(ntohl(v[2])));
+ nla_put_u8(msg, MT76_TM_ATTR_TX_RATE_SGI, ntohl(v[3]));
+ nla_put_u8(msg, MT76_TM_ATTR_AID, ntohl(v[4]));
+ } else {
+ nla_put_u8(msg, MT76_TM_ATTR_AID, ntohl(v[1]));
+ }
atenl_set_attr_state(an, msg, band, MT76_TM_STATE_RX_FRAMES);
anb->reset_rx_cnt = false;
@@ -901,7 +911,10 @@
case TXBF_ACT_TX_PKT:
nla_put_u8(msg, MT76_TM_ATTR_AID, val[1]);
nla_put_u8(msg, MT76_TM_ATTR_TXBF_ACT, MT76_TM_TXBF_ACT_TX_PREP);
- nla_put_u32(msg, MT76_TM_ATTR_TX_COUNT, 10000000);
+ if (!val[2])
+ nla_put_u32(msg, MT76_TM_ATTR_TX_COUNT, 0xFFFFFFFF);
+ else
+ nla_put_u32(msg, MT76_TM_ATTR_TX_COUNT, val[2]);
nla_put_u32(msg, MT76_TM_ATTR_TX_LENGTH, 1024);
a = nla_nest_start(msg, MT76_TM_ATTR_TXBF_PARAM);
if (!a)
diff --git a/feed/atenl/src/nl.h b/feed/atenl/src/nl.h
index b76abfe..bfd8fb8 100644
--- a/feed/atenl/src/nl.h
+++ b/feed/atenl/src/nl.h
@@ -241,6 +241,9 @@
MT76_TM_TX_MODE_HE_EXT_SU,
MT76_TM_TX_MODE_HE_TB,
MT76_TM_TX_MODE_HE_MU,
+ MT76_TM_TX_MODE_EHT_SU,
+ MT76_TM_TX_MODE_EHT_TRIG,
+ MT76_TM_TX_MODE_EHT_MU,
/* keep last */
NUM_MT76_TM_TX_MODES,