From 104d2147e602728f572cb93dadbf68a83f538110 Mon Sep 17 00:00:00 2001 From: Rudy Andram Date: Tue, 24 Sep 2024 05:00:01 +0100 Subject: [PATCH 01/10] add AQR patch for forcing order of mdi pairs if enabled on the dts --- ...tia-allow-forcing-order-of-MDI-pairs.patch | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 target/linux/generic/pending-6.6/752-net-phy-aquantia-allow-forcing-order-of-MDI-pairs.patch diff --git a/target/linux/generic/pending-6.6/752-net-phy-aquantia-allow-forcing-order-of-MDI-pairs.patch b/target/linux/generic/pending-6.6/752-net-phy-aquantia-allow-forcing-order-of-MDI-pairs.patch new file mode 100644 index 00000000000000..f3ae893b32b99e --- /dev/null +++ b/target/linux/generic/pending-6.6/752-net-phy-aquantia-allow-forcing-order-of-MDI-pairs.patch @@ -0,0 +1,104 @@ +From 49d46df79404a37685e0f32deb36506f5723e3a0 Mon Sep 17 00:00:00 2001 +From: Daniel Golle +Date: Wed, 28 Aug 2024 23:52:09 +0100 +Subject: [PATCH] net: phy: aquantia: allow forcing order of MDI pairs + +Despite supporting Auto MDI-X, it looks like Aquantia only supports +swapping pair (1,2) with pair (3,6) like it used to be for MDI-X on +100MBit/s networks. + +When all 4 pairs are in use (for 1000MBit/s or faster) the link does not +come up with pair order is not configured correctly, either using +MDI_CFG pin or using the "PMA Receive Reserved Vendor Provisioning 1" +register. + +Normally, the order of MDI pairs being either ABCD or DCBA is configured +by pulling the MDI_CFG pin. + +However, some hardware designs require overriding the value configured +by that bootstrap pin. The PHY allows doing that by setting a bit in +"PMA Receive Reserved Vendor Provisioning 1" register which allows +ignoring the state of the MDI_CFG pin and another bit configuring +whether the order of MDI pairs should be normal (ABCD) or reverse +(DCBA). Pair polarity is not affected and remains identical in both +settings. + +Introduce property "marvell,mdi-cfg-order" which allows forcing either +normal or reverse order of the MDI pairs from DT. + +If the property isn't present, the behavior is unchanged and MDI pair +order configuration is untouched (ie. either the result of MDI_CFG pin +pull-up/pull-down, or pair order override already configured by the +bootloader before Linux is started). + +Forcing normal pair order is required on the Adtran SDG-8733A Wi-Fi 7 +residential gateway. + +Signed-off-by: Daniel Golle +--- + drivers/net/phy/aquantia/aquantia_main.c | 33 ++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +--- a/drivers/net/phy/aquantia/aquantia_main.c ++++ b/drivers/net/phy/aquantia/aquantia_main.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + #include + + #include "aquantia.h" +@@ -70,6 +71,11 @@ + #define MDIO_AN_TX_VEND_INT_MASK2 0xd401 + #define MDIO_AN_TX_VEND_INT_MASK2_LINK BIT(0) + ++#define PMAPMD_RSVD_VEND_PROV 0xe400 ++#define PMAPMD_RSVD_VEND_PROV_MDI_CONF GENMASK(1, 0) ++#define PMAPMD_RSVD_VEND_PROV_MDI_REVERSE BIT(0) ++#define PMAPMD_RSVD_VEND_PROV_MDI_FORCE BIT(1) ++ + #define MDIO_AN_RX_LP_STAT1 0xe820 + #define MDIO_AN_RX_LP_STAT1_1000BASET_FULL BIT(15) + #define MDIO_AN_RX_LP_STAT1_1000BASET_HALF BIT(14) +@@ -497,6 +503,29 @@ static int aqr107_wait_processor_intensi + return 0; + } + ++static int aqr107_config_mdi(struct phy_device *phydev) ++{ ++ struct device_node *np = phydev->mdio.dev.of_node; ++ u32 mdi_conf; ++ int ret; ++ ++ ret = of_property_read_u32(np, "marvell,mdi-cfg-order", &mdi_conf); ++ ++ /* Do nothing in case property "marvell,mdi-cfg-order" is not present */ ++ if (ret == -EINVAL) ++ return 0; ++ ++ if (ret) ++ return ret; ++ ++ if (mdi_conf & ~PMAPMD_RSVD_VEND_PROV_MDI_REVERSE) ++ return -EINVAL; ++ ++ return phy_modify_mmd(phydev, MDIO_MMD_PMAPMD, PMAPMD_RSVD_VEND_PROV, ++ PMAPMD_RSVD_VEND_PROV_MDI_CONF, ++ mdi_conf | PMAPMD_RSVD_VEND_PROV_MDI_FORCE); ++} ++ + static int aqr107_config_init(struct phy_device *phydev) + { + struct aqr107_priv *priv = phydev->priv; +@@ -535,6 +564,10 @@ static int aqr107_config_init(struct phy + if (ret) + return ret; + ++ ret = aqr107_config_mdi(phydev); ++ if (ret) ++ return ret; ++ + /* Restore LED polarity state after reset */ + for_each_set_bit(led_active_low, &priv->leds_active_low, AQR_MAX_LEDS) { + ret = aqr_phy_led_active_low_set(phydev, led_active_low, true); From 1f4bd694aa5339f8ba9637c3b96fa5c662ef4b8b Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 24 Sep 2024 09:03:57 +0200 Subject: [PATCH 02/10] mac80211: introduce EHT rate support in AQL airtime Backport required by mt76 for decent throughput with EHT rates Signed-off-by: Felix Fietkau --- ...troduce-EHT-rate-support-in-AQL-airt.patch | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 package/kernel/mac80211/patches/subsys/350-wifi-mac80211-introduce-EHT-rate-support-in-AQL-airt.patch diff --git a/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-introduce-EHT-rate-support-in-AQL-airt.patch b/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-introduce-EHT-rate-support-in-AQL-airt.patch new file mode 100644 index 00000000000000..0a3c8ec53b21a3 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/350-wifi-mac80211-introduce-EHT-rate-support-in-AQL-airt.patch @@ -0,0 +1,233 @@ +From: Ming Yen Hsieh +Date: Wed, 4 Sep 2024 19:12:56 +0800 +Subject: [PATCH] wifi: mac80211: introduce EHT rate support in AQL airtime + +Add definitions related to EHT mode and airtime calculation +according to the 802.11BE_D4.0. + +Co-developed-by: Bo Jiao +Signed-off-by: Bo Jiao +Signed-off-by: Deren Wu +Signed-off-by: Quan Zhou +Signed-off-by: Ming Yen Hsieh +Link: https://patch.msgid.link/20240904111256.11734-1-mingyen.hsieh@mediatek.com +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/airtime.c ++++ b/net/mac80211/airtime.c +@@ -55,10 +55,21 @@ + #define HE_DURATION_S(shift, streams, gi, bps) \ + (HE_DURATION(streams, gi, bps) >> shift) + ++/* gi in HE/EHT is identical. It matches enum nl80211_eht_gi as well */ ++#define EHT_GI_08 HE_GI_08 ++#define EHT_GI_16 HE_GI_16 ++#define EHT_GI_32 HE_GI_32 ++ ++#define EHT_DURATION(streams, gi, bps) \ ++ HE_DURATION(streams, gi, bps) ++#define EHT_DURATION_S(shift, streams, gi, bps) \ ++ HE_DURATION_S(shift, streams, gi, bps) ++ + #define BW_20 0 + #define BW_40 1 + #define BW_80 2 + #define BW_160 3 ++#define BW_320 4 + + /* + * Define group sort order: HT40 -> SGI -> #streams +@@ -68,17 +79,26 @@ + #define IEEE80211_VHT_STREAM_GROUPS 8 /* BW(=4) * SGI(=2) */ + + #define IEEE80211_HE_MAX_STREAMS 8 ++#define IEEE80211_HE_STREAM_GROUPS 12 /* BW(=4) * GI(=3) */ ++ ++#define IEEE80211_EHT_MAX_STREAMS 8 ++#define IEEE80211_EHT_STREAM_GROUPS 15 /* BW(=5) * GI(=3) */ + + #define IEEE80211_HT_GROUPS_NB (IEEE80211_MAX_STREAMS * \ + IEEE80211_HT_STREAM_GROUPS) + #define IEEE80211_VHT_GROUPS_NB (IEEE80211_MAX_STREAMS * \ + IEEE80211_VHT_STREAM_GROUPS) ++#define IEEE80211_HE_GROUPS_NB (IEEE80211_HE_MAX_STREAMS * \ ++ IEEE80211_HE_STREAM_GROUPS) ++#define IEEE80211_EHT_GROUPS_NB (IEEE80211_EHT_MAX_STREAMS * \ ++ IEEE80211_EHT_STREAM_GROUPS) + + #define IEEE80211_HT_GROUP_0 0 + #define IEEE80211_VHT_GROUP_0 (IEEE80211_HT_GROUP_0 + IEEE80211_HT_GROUPS_NB) + #define IEEE80211_HE_GROUP_0 (IEEE80211_VHT_GROUP_0 + IEEE80211_VHT_GROUPS_NB) ++#define IEEE80211_EHT_GROUP_0 (IEEE80211_HE_GROUP_0 + IEEE80211_HE_GROUPS_NB) + +-#define MCS_GROUP_RATES 12 ++#define MCS_GROUP_RATES 14 + + #define HT_GROUP_IDX(_streams, _sgi, _ht40) \ + IEEE80211_HT_GROUP_0 + \ +@@ -203,6 +223,69 @@ + #define HE_GROUP(_streams, _gi, _bw) \ + __HE_GROUP(_streams, _gi, _bw, \ + HE_GROUP_SHIFT(_streams, _gi, _bw)) ++ ++#define EHT_BW2VBPS(_bw, r5, r4, r3, r2, r1) \ ++ ((_bw) == BW_320 ? r5 : BW2VBPS(_bw, r4, r3, r2, r1)) ++ ++#define EHT_GROUP_IDX(_streams, _gi, _bw) \ ++ (IEEE80211_EHT_GROUP_0 + \ ++ IEEE80211_EHT_MAX_STREAMS * 3 * (_bw) + \ ++ IEEE80211_EHT_MAX_STREAMS * (_gi) + \ ++ (_streams) - 1) ++ ++#define __EHT_GROUP(_streams, _gi, _bw, _s) \ ++ [EHT_GROUP_IDX(_streams, _gi, _bw)] = { \ ++ .shift = _s, \ ++ .duration = { \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 1960, 980, 490, 234, 117)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 3920, 1960, 980, 468, 234)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 5880, 2937, 1470, 702, 351)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 7840, 3920, 1960, 936, 468)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 11760, 5880, 2940, 1404, 702)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 15680, 7840, 3920, 1872, 936)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 17640, 8820, 4410, 2106, 1053)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 19600, 9800, 4900, 2340, 1170)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 23520, 11760, 5880, 2808, 1404)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 26133, 13066, 6533, 3120, 1560)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 29400, 14700, 7350, 3510, 1755)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 32666, 16333, 8166, 3900, 1950)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 35280, 17640, 8820, 4212, 2106)), \ ++ EHT_DURATION_S(_s, _streams, _gi, \ ++ EHT_BW2VBPS(_bw, 39200, 19600, 9800, 4680, 2340)) \ ++ } \ ++} ++ ++#define EHT_GROUP_SHIFT(_streams, _gi, _bw) \ ++ GROUP_SHIFT(EHT_DURATION(_streams, _gi, \ ++ EHT_BW2VBPS(_bw, 1960, 980, 490, 234, 117))) ++ ++#define EHT_GROUP(_streams, _gi, _bw) \ ++ __EHT_GROUP(_streams, _gi, _bw, \ ++ EHT_GROUP_SHIFT(_streams, _gi, _bw)) ++ ++#define EHT_GROUP_RANGE(_gi, _bw) \ ++ EHT_GROUP(1, _gi, _bw), \ ++ EHT_GROUP(2, _gi, _bw), \ ++ EHT_GROUP(3, _gi, _bw), \ ++ EHT_GROUP(4, _gi, _bw), \ ++ EHT_GROUP(5, _gi, _bw), \ ++ EHT_GROUP(6, _gi, _bw), \ ++ EHT_GROUP(7, _gi, _bw), \ ++ EHT_GROUP(8, _gi, _bw) ++ + struct mcs_group { + u8 shift; + u16 duration[MCS_GROUP_RATES]; +@@ -376,6 +459,26 @@ static const struct mcs_group airtime_mc + HE_GROUP(6, HE_GI_32, BW_160), + HE_GROUP(7, HE_GI_32, BW_160), + HE_GROUP(8, HE_GI_32, BW_160), ++ ++ EHT_GROUP_RANGE(EHT_GI_08, BW_20), ++ EHT_GROUP_RANGE(EHT_GI_16, BW_20), ++ EHT_GROUP_RANGE(EHT_GI_32, BW_20), ++ ++ EHT_GROUP_RANGE(EHT_GI_08, BW_40), ++ EHT_GROUP_RANGE(EHT_GI_16, BW_40), ++ EHT_GROUP_RANGE(EHT_GI_32, BW_40), ++ ++ EHT_GROUP_RANGE(EHT_GI_08, BW_80), ++ EHT_GROUP_RANGE(EHT_GI_16, BW_80), ++ EHT_GROUP_RANGE(EHT_GI_32, BW_80), ++ ++ EHT_GROUP_RANGE(EHT_GI_08, BW_160), ++ EHT_GROUP_RANGE(EHT_GI_16, BW_160), ++ EHT_GROUP_RANGE(EHT_GI_32, BW_160), ++ ++ EHT_GROUP_RANGE(EHT_GI_08, BW_320), ++ EHT_GROUP_RANGE(EHT_GI_16, BW_320), ++ EHT_GROUP_RANGE(EHT_GI_32, BW_320), + }; + + static u32 +@@ -422,6 +525,9 @@ static u32 ieee80211_get_rate_duration(s + case RATE_INFO_BW_160: + bw = BW_160; + break; ++ case RATE_INFO_BW_320: ++ bw = BW_320; ++ break; + default: + WARN_ON_ONCE(1); + return 0; +@@ -443,14 +549,27 @@ static u32 ieee80211_get_rate_duration(s + idx = status->rate_idx; + group = HE_GROUP_IDX(streams, status->he_gi, bw); + break; ++ case RX_ENC_EHT: ++ streams = status->nss; ++ idx = status->rate_idx; ++ group = EHT_GROUP_IDX(streams, status->eht.gi, bw); ++ break; + default: + WARN_ON_ONCE(1); + return 0; + } + +- if (WARN_ON_ONCE((status->encoding != RX_ENC_HE && streams > 4) || +- (status->encoding == RX_ENC_HE && streams > 8))) +- return 0; ++ switch (status->encoding) { ++ case RX_ENC_EHT: ++ case RX_ENC_HE: ++ if (WARN_ON_ONCE(streams > 8)) ++ return 0; ++ break; ++ default: ++ if (WARN_ON_ONCE(streams > 4)) ++ return 0; ++ break; ++ } + + if (idx >= MCS_GROUP_RATES) + return 0; +@@ -517,7 +636,9 @@ static bool ieee80211_fill_rate_info(str + stat->nss = ri->nss; + stat->rate_idx = ri->mcs; + +- if (ri->flags & RATE_INFO_FLAGS_HE_MCS) ++ if (ri->flags & RATE_INFO_FLAGS_EHT_MCS) ++ stat->encoding = RX_ENC_EHT; ++ else if (ri->flags & RATE_INFO_FLAGS_HE_MCS) + stat->encoding = RX_ENC_HE; + else if (ri->flags & RATE_INFO_FLAGS_VHT_MCS) + stat->encoding = RX_ENC_VHT; +@@ -529,7 +650,14 @@ static bool ieee80211_fill_rate_info(str + if (ri->flags & RATE_INFO_FLAGS_SHORT_GI) + stat->enc_flags |= RX_ENC_FLAG_SHORT_GI; + +- stat->he_gi = ri->he_gi; ++ switch (stat->encoding) { ++ case RX_ENC_EHT: ++ stat->eht.gi = ri->eht_gi; ++ break; ++ default: ++ stat->he_gi = ri->he_gi; ++ break; ++ } + + if (stat->encoding != RX_ENC_LEGACY) + return true; From d39078c785d37961e8b9a96ba3612bc67c10bf2f Mon Sep 17 00:00:00 2001 From: Chukun Pan Date: Sun, 15 Sep 2024 23:10:15 +0800 Subject: [PATCH 03/10] kernel: r8125: add CONFLICT to rss variant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rss variant should conflict with the default. Signed-off-by: Chukun Pan Link: https://github.com/openwrt/openwrt/pull/16460 Signed-off-by: Álvaro Fernández Rojas --- package/kernel/r8125/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/package/kernel/r8125/Makefile b/package/kernel/r8125/Makefile index f05ec0d842b425..ef95b52e679549 100644 --- a/package/kernel/r8125/Makefile +++ b/package/kernel/r8125/Makefile @@ -27,6 +27,7 @@ endef define KernelPackage/r8125-rss $(call KernelPackage/r8125) + CONFLICTS:=kmod-r8125 TITLE+= (RSS) VARIANT:=rss endef From b83c7448d3ecd82d6c9e02aded784d6bc3c9ce3c Mon Sep 17 00:00:00 2001 From: Chukun Pan Date: Mon, 16 Sep 2024 23:10:20 +0800 Subject: [PATCH 04/10] kernel: r8126: add CONFLICT to rss variant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The rss variant should conflict with the default. Signed-off-by: Chukun Pan Link: https://github.com/openwrt/openwrt/pull/16460 Signed-off-by: Álvaro Fernández Rojas --- package/kernel/r8126/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/package/kernel/r8126/Makefile b/package/kernel/r8126/Makefile index 3cd77294b1485b..c269cdcadc4ba6 100644 --- a/package/kernel/r8126/Makefile +++ b/package/kernel/r8126/Makefile @@ -27,6 +27,7 @@ endef define KernelPackage/r8126-rss $(call KernelPackage/r8126) + CONFLICTS:=kmod-r8126 TITLE+= (RSS) VARIANT:=rss endef From 51aa9130f741919c208db663d2385fe43ad215e1 Mon Sep 17 00:00:00 2001 From: Goetz Goerisch Date: Sat, 21 Sep 2024 20:00:33 +0000 Subject: [PATCH 05/10] CI: update actions/labeler to v5 * Version 5 of this action updated the runtime to Node.js 20. All scripts are now run with Node.js 20 instead of Node.js 16 and are affected by any breaking changes between Node.js 16 and 20. * adapt the labeler configuration to the new format Follow-up to #16251 this was reverted with b870c16534c05ddc94149c6ff56976d8de8a353f Link: https://github.com/openwrt/openwrt/pull/16451 Signed-off-by: Goetz Goerisch Link: https://github.com/openwrt/openwrt/pull/16451 Signed-off-by: Robert Marko --- .github/labeler.yml | 260 +++++++++++++++++++++++----------- .github/workflows/labeler.yml | 4 +- 2 files changed, 177 insertions(+), 87 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index 3030d170095ecb..8ef308867870dc 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -1,137 +1,227 @@ # target/* "target/airoha": - - "target/linux/airoha/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/airoha/**" "target/apm821xx": - - "target/linux/apm821xx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/apm821xx/**" "target/archs38": - - "target/linux/archs38/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/archs38/**" "target/armsr": - - "target/linux/armsr/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/armsr/**" "target/at91": - - "target/linux/at91/**" - - "package/boot/at91bootstrap/**" - - "package/boot/uboot-at91/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/at91/**" + - "package/boot/at91bootstrap/**" + - "package/boot/uboot-at91/**" "target/ath79": - - "target/linux/ath79/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/ath79/**" "target/bcm27xx": - - "target/linux/bcm27xx/**" - - "package/kernel/bcm27xx-gpu-fw/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/bcm27xx/**" + - "package/kernel/bcm27xx-gpu-fw/**" "target/bcm47xx": - - "target/linux/bcm47xx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/bcm47xx/**" "target/bcm4908": - - "target/linux/bcm4908/**" - - "package/boot/uboot-bcm4908/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/bcm4908/**" + - "package/boot/uboot-bcm4908/**" "target/bcm53xx": - - "target/linux/bcm53xx/**" - - "package/boot/uboot-bcm53xx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/bcm53xx/**" + - "package/boot/uboot-bcm53xx/**" "target/bcm63xx": - - "target/linux/bcm63xx/**" - - "package/kernel/bcm63xx-cfe/**" - - "package/boot/arm-trusted-firmware-bcm63xx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/bcm63xx/**" + - "package/kernel/bcm63xx-cfe/**" + - "package/boot/arm-trusted-firmware-bcm63xx/**" "target/bmips": - - "target/linux/bmips/**" - - "package/boot/uboot-bmips/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/bmips/**" + - "package/boot/uboot-bmips/**" "target/d1": - - "target/linux/d1/**" - - "package/boot/uboot-d1/**" - - "package/boot/opensbi/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/d1/**" + - "package/boot/uboot-d1/**" + - "package/boot/opensbi/**" "target/gemini": - - "target/linux/gemini/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/gemini/**" "target/imx": - - "target/linux/imx/**" - - "package/boot/imx-bootlets/**" - - "package/boot/uboot-imx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/imx/**" + - "package/boot/imx-bootlets/**" + - "package/boot/uboot-imx/**" "target/ipq40xx": - - "target/linux/ipq40xx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/ipq40xx/**" "target/ipq806x": - - "target/linux/ipq806x/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/ipq806x/**" "target/qualcommax": - - "target/linux/qualcommax/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/qualcommax/**" "target/kirkwood": - - "target/linux/kirkwood/**" - - "package/boot/uboot-kirkwood/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/kirkwood/**" + - "package/boot/uboot-kirkwood/**" "target/lantiq": - - "target/linux/lantiq/**" - - "package/kernel/lantiq/**" - - "package/firmware/lantiq/**" - - "package/boot/uboot-lantiq/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/lantiq/**" + - "package/kernel/lantiq/**" + - "package/firmware/lantiq/**" + - "package/boot/uboot-lantiq/**" "target/layerscape": - - "target/linux/layerscape/**" - - "package/firmware/layerscape/**" - - "package/boot/tfa-layerscape/**" - - "package/boot/uboot-layerscape/**" - - "package/network/utils/layerscape/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/layerscape/**" + - "package/firmware/layerscape/**" + - "package/boot/tfa-layerscape/**" + - "package/boot/uboot-layerscape/**" + - "package/network/utils/layerscape/**" "target/malta": - - "target/linux/malta/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/malta/**" "target/mediatek": - - "target/linux/mediatek/**" - - "package/boot/arm-trusted-firmware-mediatek/**" - - "package/boot/uboot-mediatek/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/mediatek/**" + - "package/boot/arm-trusted-firmware-mediatek/**" + - "package/boot/uboot-mediatek/**" "target/mpc85xx": - - "target/linux/mpc85xx/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/mpc85xx/**" "target/mvebu": - - "target/linux/mvebu/**" - - "package/boot/arm-trusted-firmware-mvebu/**" - - "package/boot/uboot-mvebu/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/mvebu/**" + - "package/boot/arm-trusted-firmware-mvebu/**" + - "package/boot/uboot-mvebu/**" "target/mxs": - - "target/linux/mxs/**" - - "package/boot/uboot-mxs/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/mxs/**" + - "package/boot/uboot-mxs/**" "target/octeon": - - "target/linux/octeon/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/octeon/**" "target/omap": - - "target/linux/omap/**" - - "package/boot/uboot-omap/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/omap/**" + - "package/boot/uboot-omap/**" "target/pistachio": - - "target/linux/pistachio/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/pistachio/**" "target/qoriq": - - "target/linux/qoriq/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/qoriq/**" "target/ramips": - - "target/linux/ramips/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/ramips/**" "target/realtek": - - "target/linux/realtek/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/realtek/**" "target/rockchip": - - "target/linux/rockchip/**" - - "package/boot/arm-trusted-firmware-rockchip/**" - - "package/boot/uboot-rockchip/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/rockchip/**" + - "package/boot/arm-trusted-firmware-rockchip/**" + - "package/boot/uboot-rockchip/**" "target/sifiveu": - - "target/linux/sifiveu/**" - - "package/boot/uboot-sifiveu/**" - - "package/boot/opensbi/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/sifiveu/**" + - "package/boot/uboot-sifiveu/**" + - "package/boot/opensbi/**" "target/sunxi": - - "target/linux/sunxi/**" - - "package/boot/arm-trusted-firmware-sunxi/**" - - "package/boot/uboot-sunxi/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/sunxi/**" + - "package/boot/arm-trusted-firmware-sunxi/**" + - "package/boot/uboot-sunxi/**" "target/tegra": - - "target/linux/tegra/**" - - "package/boot/uboot-tegra/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/tegra/**" + - "package/boot/uboot-tegra/**" "target/uml": - - "target/linux/uml/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/uml/**" "target/x86": - - "target/linux/x86/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/x86/**" "target/zynq": - - "target/linux/zynq/**" - - "package/boot/uboot-zynq/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/zynq/**" + - "package/boot/uboot-zynq/**" # target/imagebuilder "target/imagebuilder": - - "target/imagebuilder/**" +- changed-files: + - any-glob-to-any-file: + - "target/imagebuilder/**" # kernel "kernel": - - "target/linux/generic/**" - - "target/linux/**/config-*" - - "target/linux/**/patches-*" - - "target/linux/**/files/**" - - "package/kernel/linux/**" +- changed-files: + - any-glob-to-any-file: + - "target/linux/generic/**" + - "target/linux/**/config-*" + - "target/linux/**/patches-*" + - "target/linux/**/files/**" + - "package/kernel/linux/**" # core packages "core packages": - - "package/**" +- changed-files: + - any-glob-to-any-file: + - "package/**" # build/scripts/tools "build/scripts/tools": - - "include/**" - - "scripts/**" - - "tools/**" +- changed-files: + - any-glob-to-any-file: + - "include/**" + - "scripts/**" + - "tools/**" # toolchain "toolchain": - - "toolchain/**" +- changed-files: + - any-glob-to-any-file: + - "toolchain/**" # GitHub/CI "GitHub/CI": - - ".github/**" +- changed-files: + - any-glob-to-any-file: + - ".github/**" diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 5f82b88a50a7dc..ba35e8e1dd619d 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -14,7 +14,7 @@ jobs: name: Pull Request Labeler runs-on: ubuntu-latest steps: - - uses: actions/labeler@v4 + - uses: actions/labeler@v5 with: repo-token: '${{ secrets.GITHUB_TOKEN }}' @@ -25,7 +25,7 @@ jobs: echo "release-tag=$(echo ${{ github.base_ref }} | sed 's/openwrt-/release\//')" >> $GITHUB_OUTPUT fi - - uses: buildsville/add-remove-label@v2.0.0 + - uses: buildsville/add-remove-label@v2.0.1 if: ${{ steps.check-branch.outputs.release-tag }} with: token: ${{secrets.GITHUB_TOKEN}} From bffcc3c775629a24dae2a1bcbde998a66f4d83db Mon Sep 17 00:00:00 2001 From: Janusz Dziedzic Date: Tue, 24 Sep 2024 12:21:52 +0200 Subject: [PATCH 06/10] mac80211: ath12k: add PCI_SUPPORT dependency Always depend on PCI and don't build on platforms without PCI. Signed-off-by: Janusz Dziedzic Link: https://github.com/openwrt/openwrt/pull/16475 Signed-off-by: Robert Marko --- package/kernel/mac80211/ath.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/kernel/mac80211/ath.mk b/package/kernel/mac80211/ath.mk index f56fd7a961ccef..eecaef4588871e 100644 --- a/package/kernel/mac80211/ath.mk +++ b/package/kernel/mac80211/ath.mk @@ -360,7 +360,7 @@ define KernelPackage/ath12k $(call KernelPackage/mac80211/Default) TITLE:=Qualcomm 802.11be wireless chipset support URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath12k - DEPENDS+= +kmod-ath +@DRIVER_11AC_SUPPORT +@DRIVER_11AX_SUPPORT \ + DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11AC_SUPPORT +@DRIVER_11AX_SUPPORT \ +kmod-crypto-michael-mic +kmod-qrtr-mhi \ +kmod-qcom-qmi-helpers FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath12k/ath12k.ko From d84fecfaf2f140786ad4dd971c69660b1deae942 Mon Sep 17 00:00:00 2001 From: Pawel Dembicki Date: Tue, 24 Sep 2024 09:05:11 +0200 Subject: [PATCH 07/10] tfa-layerscape: fix fiptool's build Platform specified fiptool files was moved before lf-6.6.23-2.0.0 bump. But PLAT_FIPTOOL_HELPER_MK still pointed to old location. This cause problems with ls-ddr-phy build. This patch fix PLAT_FIPTOOL_HELPER_MK path. Fixes: 0ec659bd2b7e ("tfa-layerscape: Bump to lf-6.6.23-2.0.0") Signed-off-by: Pawel Dembicki Link: https://github.com/openwrt/openwrt/pull/16472 Signed-off-by: Robert Marko --- package/boot/tfa-layerscape/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/boot/tfa-layerscape/Makefile b/package/boot/tfa-layerscape/Makefile index c97dd997ffa663..7304df55c713d8 100644 --- a/package/boot/tfa-layerscape/Makefile +++ b/package/boot/tfa-layerscape/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=tfa-layerscape PKG_VERSION:=6.6.23.2.0.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/nxp-qoriq/atf @@ -25,7 +25,7 @@ HOST_CFLAGS += -Wall -Werror -pedantic -std=c99 define Host/Compile $(MAKE) -C \ $(HOST_BUILD_DIR)/tools/fiptool \ - PLAT_FIPTOOL_HELPER_MK="$(HOST_BUILD_DIR)/tools/nxp/plat_fiptool/plat_fiptool.mk" \ + PLAT_FIPTOOL_HELPER_MK="$(HOST_BUILD_DIR)/tools/fiptool/plat_fiptool/nxp/plat_fiptool.mk" \ CFLAGS="$(HOST_CFLAGS)" \ LDFLAGS="$(HOST_LDFLAGS)" \ HOSTCCFLAGS="$(HOST_CFLAGS)" From 72accd078f20ed2a5caaa12b1bea463f40aadd73 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 7 Jul 2024 00:59:13 +0100 Subject: [PATCH 08/10] tools/flex: respect STAGING_DIR_HOST flex currently leaks the path of m4 as found on the build host. While it is possible to override this using the M4 environment variable (which we always did for autotools based builds) when using CMake or Ninja the M4 variable is not set. One easy fix is to make flex take STAGING_DIR_HOST into account and expect m4 there if that variable is set in the environment. Signed-off-by: Daniel Golle --- tools/flex/patches/300-m4-path.patch | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tools/flex/patches/300-m4-path.patch diff --git a/tools/flex/patches/300-m4-path.patch b/tools/flex/patches/300-m4-path.patch new file mode 100644 index 00000000000000..48e376f276f884 --- /dev/null +++ b/tools/flex/patches/300-m4-path.patch @@ -0,0 +1,23 @@ +--- a/src/main.c ++++ b/src/main.c +@@ -213,6 +213,8 @@ int main (int argc, char *argv[]) + + void check_options (void) + { ++ const char * staging_dir = NULL; ++ char * m4_staging = NULL; + int i; + const char * m4 = NULL; + +@@ -341,7 +343,10 @@ void check_options (void) + + /* Setup the filter chain. */ + output_chain = filter_create_int(NULL, filter_tee_header, headerfilename); +- if ( !(m4 = getenv("M4"))) { ++ if ( (staging_dir = getenv("STAGING_DIR_HOST"))) { ++ asprintf(&m4_staging, "%s/bin/m4", staging_dir); ++ m4 = m4_staging; ++ } else if ( !(m4 = getenv("M4"))) { + char *slash; + m4 = M4; + if ((slash = strrchr(M4, '/')) != NULL) { From 23ac1ad9515588321970985859b2ee0cc8243f91 Mon Sep 17 00:00:00 2001 From: Luiz Angelo Daros de Luca Date: Wed, 10 Jul 2024 20:20:06 -0300 Subject: [PATCH 09/10] realtek: d-link: add support for dgs-1210-28p-f General hardware info: ---------------------- D-Link DGS-1210-28P rev. F1 is a switch with 24 ethernet ports and 4 combo ports, all ports Gbit capable. It is based on a RTL8382 SoC @500MHz, DRAM 128MB and 32MB flash. 24 ethernet ports are 802.3af/at PoE capable with a total PoE power budget of 193W. Power over Ethernet: -------------------- The PSE hardware consists of three BCM59121 PSE chips, serving 8 ports each. They are controlled by a Nuvoton MCU. In order to enable PoE, the realtek-poe package is required. It is installed by default, but currently it requires the manual editing of /etc/config/poe. Keep in mind that the port number assignment does not match on this switch, alway 8 ports are in reversed order: 8-1, 16-9 and 24-17. LEDs and Buttons: ----------------- On stock firmware, the mode button is supposed to switch the LED indicators of all port LEDs between Link Activity and PoE status. The currently selected mode is visualized using the respective LEDs. PoE Max indicates that the maximum PoE budget has been reached. Since there is currently no support for this behavior, these LEDs and the mode button can be used independently. Serial connection: ------------------ The UART for the SoC (115200 8N1) is available via unpopulated standard 0.1" pin header marked J6. Pin1 is marked with arrow and square. Pin 1: Vcc 3.3V Pin 2: Tx Pin 3: Rx Pin 4: Gnd OEM installation from Web Interface: ------------------------------------ 1. Make sure you are booting using OEM in image 2 slot. If not, switch to image2 using the menus System > Firmware Information > Boot from image2 Tools > reboot 2. Upload image in vendor firmware via Tools > Backup / Upgrade Firmware > image1 3. Toggle startup image via System > Firmware Information > Boot from image1 4. Tools > reboot Other installation methods not tested, but since the device shares the board with the DGS-1210-28, the following should work: Boot initramfs image from U-Boot: --------------------------------- 1. Press Escape key during `Hit Esc key to stop autoboot` prompt 2. Press CTRL+C keys to get into real U-Boot prompt 3. Init network with `rtk network on` command 4. Load image with `tftpboot 0x8f000000 openwrt-rtl838x-generic-d-link_dgs-1210-28p-f-initramfs-kernel.bin` command 5. Boot the image with `bootm` command Signed-off-by: Luiz Angelo Daros de Luca Link: https://github.com/openwrt/openwrt/pull/15938 Signed-off-by: Sander Vanheule --- .../realtek/base-files/etc/board.d/02_network | 4 ++ .../base-files/etc/uci-defaults/04_dlinkfan | 2 +- .../dts/rtl8382_d-link_dgs-1210-28mp-f.dts | 45 +---------------- .../dts/rtl8382_d-link_dgs-1210-28p-f.dts | 13 +++++ .../rtl8382_d-link_dgs-1210-28p_common.dtsi | 48 +++++++++++++++++++ target/linux/realtek/image/rtl838x.mk | 9 ++++ 6 files changed, 76 insertions(+), 45 deletions(-) create mode 100644 target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p-f.dts create mode 100644 target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p_common.dtsi diff --git a/target/linux/realtek/base-files/etc/board.d/02_network b/target/linux/realtek/base-files/etc/board.d/02_network index e856ad7479ac67..5073dbcc31e90b 100644 --- a/target/linux/realtek/base-files/etc/board.d/02_network +++ b/target/linux/realtek/base-files/etc/board.d/02_network @@ -82,6 +82,10 @@ d-link,dgs-1210-28mp-f) ucidef_set_poe 370 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23 lan22 lan21 lan20 lan19 lan18 lan17" ;; +d-link,dgs-1210-28p-f) + ucidef_set_poe 193 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23 + lan22 lan21 lan20 lan19 lan18 lan17" + ;; engenius,ews2910p) ucidef_set_poe 60 "$(filter_port_list "$lan_list" "lan9 lan10")" ;; diff --git a/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan b/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan index 1a5fd3606f24c8..17cc6494388f25 100644 --- a/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan +++ b/target/linux/realtek/base-files/etc/uci-defaults/04_dlinkfan @@ -7,7 +7,7 @@ board=$(board_name) case "$board" in -d-link,dgs-1210-28mp-f) +d-link,dgs-1210-28p-f|d-link,dgs-1210-28mp-f) # Enable fan control FAN_CTRL='/sys/class/hwmon/hwmon0' echo 1 > "$FAN_PATH/pwm1_enable" diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts index 4c20a4ae6e2aa6..4aa6498b03e93a 100644 --- a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28mp-f.dts @@ -5,53 +5,10 @@ #include "rtl83xx_d-link_dgs-1210_gpio.dtsi" #include "rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi" #include "rtl8382_d-link_dgs-1210-28_common.dtsi" +#include "rtl8382_d-link_dgs-1210-28p_common.dtsi" / { compatible = "d-link,dgs-1210-28mp-f", "realtek,rtl8382-soc", "realtek,rtl838x-soc"; model = "D-Link DGS-1210-28MP F"; - /* LM63 */ - i2c-gpio-4 { - compatible = "i2c-gpio"; - sda-gpios = <&gpio1 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; - scl-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>; - i2c-gpio,delay-us = <2>; - i2c-gpio,scl-open-drain; /* should be replaced by i2c-gpio,scl-has-no-pullup in kernel 6.6 */ - #address-cells = <1>; - #size-cells = <0>; - - lm63@4c { - compatible = "national,lm63"; - reg = <0x4c>; - }; - }; -}; - -&leds { - link_act { - label = "green:link_act"; - gpios = <&gpio1 28 GPIO_ACTIVE_LOW>; - }; - - poe { - label = "green:poe"; - gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; - }; - - poe_max { - label = "yellow:poe_max"; - gpios = <&gpio1 27 GPIO_ACTIVE_LOW>; - }; -}; - -&keys { - mode { - label = "mode"; - gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; - linux,code = ; - }; -}; - -&uart1 { - status = "okay"; }; diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p-f.dts b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p-f.dts new file mode 100644 index 00000000000000..6cb8db81bcf3c1 --- /dev/null +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p-f.dts @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "rtl838x.dtsi" +#include "rtl83xx_d-link_dgs-1210_common.dtsi" +#include "rtl83xx_d-link_dgs-1210_gpio.dtsi" +#include "rtl83xx_d-link_dgs-1210_gpio_sfp.dtsi" +#include "rtl8382_d-link_dgs-1210-28_common.dtsi" +#include "rtl8382_d-link_dgs-1210-28p_common.dtsi" + +/ { + compatible = "d-link,dgs-1210-28p-f", "realtek,rtl8382-soc", "realtek,rtl838x-soc"; + model = "D-Link DGS-1210-28P F"; +}; diff --git a/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p_common.dtsi b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p_common.dtsi new file mode 100644 index 00000000000000..8aaa637afe8b16 --- /dev/null +++ b/target/linux/realtek/dts/rtl8382_d-link_dgs-1210-28p_common.dtsi @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +/ { + /* LM63 */ + i2c-gpio-4 { + compatible = "i2c-gpio"; + sda-gpios = <&gpio1 32 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + scl-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>; + i2c-gpio,delay-us = <2>; + i2c-gpio,scl-open-drain; /* should be replaced by i2c-gpio,scl-has-no-pullup in kernel 6.6 */ + #address-cells = <1>; + #size-cells = <0>; + + lm63@4c { + compatible = "national,lm63"; + reg = <0x4c>; + }; + }; +}; + +&leds { + link_act { + label = "green:link_act"; + gpios = <&gpio1 28 GPIO_ACTIVE_LOW>; + }; + + poe { + label = "green:poe"; + gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; + }; + + poe_max { + label = "yellow:poe_max"; + gpios = <&gpio1 27 GPIO_ACTIVE_LOW>; + }; +}; + +&keys { + mode { + label = "mode"; + gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; + linux,code = ; + }; +}; + +&uart1 { + status = "okay"; +}; diff --git a/target/linux/realtek/image/rtl838x.mk b/target/linux/realtek/image/rtl838x.mk index c44e3a74f7ecca..c8e1c481ec9280 100644 --- a/target/linux/realtek/image/rtl838x.mk +++ b/target/linux/realtek/image/rtl838x.mk @@ -75,6 +75,15 @@ define Device/d-link_dgs-1210-28mp-f endef TARGET_DEVICES += d-link_dgs-1210-28mp-f +define Device/d-link_dgs-1210-28p-f + $(Device/d-link_dgs-1210) + SOC := rtl8382 + DEVICE_MODEL := DGS-1210-28P + DEVICE_VARIANT := F + DEVICE_PACKAGES += realtek-poe kmod-hwmon-lm63 +endef +TARGET_DEVICES += d-link_dgs-1210-28p-f + # The "IMG-" uImage name allows flashing the iniramfs from the vendor Web UI. # Avoided for sysupgrade, as the vendor FW would do an incomplete flash. define Device/engenius_ews2910p From 4b2f622256ac714f667b8c4b26d958034c8cb6fa Mon Sep 17 00:00:00 2001 From: Rudy Andram Date: Wed, 25 Sep 2024 07:56:47 +0100 Subject: [PATCH 10/10] several updates / sync patches --- feeds.conf.default | 3 +- ...80211-add-rate-duration-for-EHT-rate.patch | 437 ------------------ package/kernel/mt76/Makefile | 4 +- .../files/lib/netifd/wireless/mac80211.sh | 2 +- package/network/services/hostapd/Config.in | 4 +- .../hostapd/files/hostapd-basic.config | 2 +- .../hostapd/files/hostapd-full.config | 2 +- .../hostapd/files/hostapd-mini.config | 2 +- 8 files changed, 11 insertions(+), 445 deletions(-) delete mode 100644 package/kernel/mac80211/patches/subsys/0002-mtk-mac80211-add-rate-duration-for-EHT-rate.patch diff --git a/feeds.conf.default b/feeds.conf.default index 4ad5c9c515b9b1..a03547a83c2729 100644 --- a/feeds.conf.default +++ b/feeds.conf.default @@ -6,4 +6,5 @@ src-git telephony https://git.openwrt.org/feed/telephony.git #src-git targets https://github.com/openwrt/targets.git #src-git oldpackages http://git.openwrt.org/packages.git #src-link custom /usr/src/openwrt/custom-feed -src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds;master +#src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds;master +src-git mtk_openwrt_feed https://github.com/rmandrad/mtk-openwrt-feeds.git;rmandrad diff --git a/package/kernel/mac80211/patches/subsys/0002-mtk-mac80211-add-rate-duration-for-EHT-rate.patch b/package/kernel/mac80211/patches/subsys/0002-mtk-mac80211-add-rate-duration-for-EHT-rate.patch deleted file mode 100644 index 5e3d05862bf109..00000000000000 --- a/package/kernel/mac80211/patches/subsys/0002-mtk-mac80211-add-rate-duration-for-EHT-rate.patch +++ /dev/null @@ -1,437 +0,0 @@ -From 87774509ec7a9c7dea18a542eddd895dd2158b1a Mon Sep 17 00:00:00 2001 -From: Evelyn Tsai -Date: Wed, 28 Aug 2024 02:17:57 +0800 -mtk: mac80211: add rate duration for EHT rate. ---- - net/mac80211/airtime.c | 349 ++++++++++++++++++++++++++++++++++++++++- - 1 file changed, 346 insertions(+), 3 deletions(-) -diff --git a/net/mac80211/airtime.c b/net/mac80211/airtime.c -index fdf8b65..370477c 100644 ---- a/net/mac80211/airtime.c -+++ b/net/mac80211/airtime.c -@@ -55,10 +55,21 @@ - #define HE_DURATION_S(shift, streams, gi, bps) \ - (HE_DURATION(streams, gi, bps) >> shift) - -+/* Transmit duration for the raw data part of an average sized packet */ -+#define EHT_GI_08 HE_GI_08 -+#define EHT_GI_16 HE_GI_16 -+#define EHT_GI_32 HE_GI_32 -+ -+#define EHT_DURATION(streams, gi, bps) \ -+ HE_DURATION(streams, gi, bps) -+#define EHT_DURATION_S(shift, streams, gi, bps) \ -+ HE_DURATION_S(shift, streams, gi, bps) -+ - #define BW_20 0 - #define BW_40 1 - #define BW_80 2 - #define BW_160 3 -+#define BW_320 4 - - /* - * Define group sort order: HT40 -> SGI -> #streams -@@ -68,17 +79,26 @@ - #define IEEE80211_VHT_STREAM_GROUPS 8 /* BW(=4) * SGI(=2) */ - - #define IEEE80211_HE_MAX_STREAMS 8 -+#define IEEE80211_HE_STREAM_GROUPS 12 /* BW(=4) * GI(=3) */ -+ -+#define IEEE80211_EHT_MAX_STREAMS 16 -+#define IEEE80211_EHT_STREAM_GROUPS 15 /* BW(=5) * GI(=3) */ - - #define IEEE80211_HT_GROUPS_NB (IEEE80211_MAX_STREAMS * \ - IEEE80211_HT_STREAM_GROUPS) - #define IEEE80211_VHT_GROUPS_NB (IEEE80211_MAX_STREAMS * \ - IEEE80211_VHT_STREAM_GROUPS) -+#define IEEE80211_HE_GROUPS_NB (IEEE80211_HE_MAX_STREAMS * \ -+ IEEE80211_HE_STREAM_GROUPS) -+#define IEEE80211_EHT_GROUPS_NB (IEEE80211_EHT_MAX_STREAMS * \ -+ IEEE80211_EHT_STREAM_GROUPS) - - #define IEEE80211_HT_GROUP_0 0 - #define IEEE80211_VHT_GROUP_0 (IEEE80211_HT_GROUP_0 + IEEE80211_HT_GROUPS_NB) - #define IEEE80211_HE_GROUP_0 (IEEE80211_VHT_GROUP_0 + IEEE80211_VHT_GROUPS_NB) -+#define IEEE80211_EHT_GROUP_0 (IEEE80211_HE_GROUP_0 + IEEE80211_HE_GROUPS_NB) - --#define MCS_GROUP_RATES 12 -+#define MCS_GROUP_RATES 14 - - #define HT_GROUP_IDX(_streams, _sgi, _ht40) \ - IEEE80211_HT_GROUP_0 + \ -@@ -203,6 +223,59 @@ - #define HE_GROUP(_streams, _gi, _bw) \ - __HE_GROUP(_streams, _gi, _bw, \ - HE_GROUP_SHIFT(_streams, _gi, _bw)) -+ -+#define EHT_BW2VBPS(_bw, r5, r4, r3, r2, r1) \ -+ (_bw == BW_320 ? r5 : _bw == BW_160 ? r4 : _bw == BW_80 ? r3 : _bw == BW_40 ? r2 : r1) -+ -+#define EHT_GROUP_IDX(_streams, _gi, _bw) \ -+ (IEEE80211_EHT_GROUP_0 + \ -+ IEEE80211_EHT_MAX_STREAMS * 3 * (_bw) + \ -+ IEEE80211_EHT_MAX_STREAMS * (_gi) + \ -+ (_streams) - 1) -+ -+#define __EHT_GROUP(_streams, _gi, _bw, _s) \ -+ [EHT_GROUP_IDX(_streams, _gi, _bw)] = { \ -+ .shift = _s, \ -+ .duration = { \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 1960, 979, 489, 230, 115)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 3920, 1958, 979, 475, 230)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 5880, 2937, 1468, 705, 345)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 7840, 3916, 1958, 936, 475)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 11760, 5875, 2937, 1411, 705)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 15680, 7833, 3916, 1872, 936)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 17640, 8827, 4406, 2102, 1051)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 19600, 9806, 4896, 2347, 1166)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 23520, 11764, 5875, 2808, 1411)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 26133, 13060, 6523, 3124, 1555)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 29400, 14702, 7344, 3513, 1756)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 32666, 16329, 8164, 3902, 1944)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 35280, 17640, 8820, 4212, 2106)), \ -+ EHT_DURATION_S(_s, _streams, _gi, \ -+ EHT_BW2VBPS(_bw, 39200, 19600, 9800, 4680, 2340)) \ -+ } \ -+} -+ -+#define EHT_GROUP_SHIFT(_streams, _gi, _bw) \ -+ GROUP_SHIFT(EHT_DURATION(_streams, _gi, \ -+ EHT_BW2VBPS(_bw, 1960, 979, 489, 230, 115))) -+ -+#define EHT_GROUP(_streams, _gi, _bw) \ -+ __EHT_GROUP(_streams, _gi, _bw, \ -+ EHT_GROUP_SHIFT(_streams, _gi, _bw)) -+ - struct mcs_group { - u8 shift; - u16 duration[MCS_GROUP_RATES]; -@@ -376,6 +449,262 @@ static const struct mcs_group airtime_mcs_groups[] = { - HE_GROUP(6, HE_GI_32, BW_160), - HE_GROUP(7, HE_GI_32, BW_160), - HE_GROUP(8, HE_GI_32, BW_160), -+ -+ /* EHT */ -+ EHT_GROUP( 1, EHT_GI_08, BW_20), -+ EHT_GROUP( 2, EHT_GI_08, BW_20), -+ EHT_GROUP( 3, EHT_GI_08, BW_20), -+ EHT_GROUP( 4, EHT_GI_08, BW_20), -+ EHT_GROUP( 5, EHT_GI_08, BW_20), -+ EHT_GROUP( 6, EHT_GI_08, BW_20), -+ EHT_GROUP( 7, EHT_GI_08, BW_20), -+ EHT_GROUP( 8, EHT_GI_08, BW_20), -+ EHT_GROUP( 9, EHT_GI_08, BW_20), -+ EHT_GROUP(10, EHT_GI_08, BW_20), -+ EHT_GROUP(11, EHT_GI_08, BW_20), -+ EHT_GROUP(12, EHT_GI_08, BW_20), -+ EHT_GROUP(13, EHT_GI_08, BW_20), -+ EHT_GROUP(14, EHT_GI_08, BW_20), -+ EHT_GROUP(15, EHT_GI_08, BW_20), -+ EHT_GROUP(16, EHT_GI_08, BW_20), -+ -+ EHT_GROUP( 1, EHT_GI_16, BW_20), -+ EHT_GROUP( 2, EHT_GI_16, BW_20), -+ EHT_GROUP( 3, EHT_GI_16, BW_20), -+ EHT_GROUP( 4, EHT_GI_16, BW_20), -+ EHT_GROUP( 5, EHT_GI_16, BW_20), -+ EHT_GROUP( 6, EHT_GI_16, BW_20), -+ EHT_GROUP( 7, EHT_GI_16, BW_20), -+ EHT_GROUP( 8, EHT_GI_16, BW_20), -+ EHT_GROUP( 9, EHT_GI_16, BW_20), -+ EHT_GROUP(10, EHT_GI_16, BW_20), -+ EHT_GROUP(11, EHT_GI_16, BW_20), -+ EHT_GROUP(12, EHT_GI_16, BW_20), -+ EHT_GROUP(13, EHT_GI_16, BW_20), -+ EHT_GROUP(14, EHT_GI_16, BW_20), -+ EHT_GROUP(15, EHT_GI_16, BW_20), -+ EHT_GROUP(16, EHT_GI_16, BW_20), -+ -+ EHT_GROUP( 1, EHT_GI_32, BW_20), -+ EHT_GROUP( 2, EHT_GI_32, BW_20), -+ EHT_GROUP( 3, EHT_GI_32, BW_20), -+ EHT_GROUP( 4, EHT_GI_32, BW_20), -+ EHT_GROUP( 5, EHT_GI_32, BW_20), -+ EHT_GROUP( 6, EHT_GI_32, BW_20), -+ EHT_GROUP( 7, EHT_GI_32, BW_20), -+ EHT_GROUP( 8, EHT_GI_32, BW_20), -+ EHT_GROUP( 9, EHT_GI_32, BW_20), -+ EHT_GROUP(10, EHT_GI_32, BW_20), -+ EHT_GROUP(11, EHT_GI_32, BW_20), -+ EHT_GROUP(12, EHT_GI_32, BW_20), -+ EHT_GROUP(13, EHT_GI_32, BW_20), -+ EHT_GROUP(14, EHT_GI_32, BW_20), -+ EHT_GROUP(15, EHT_GI_32, BW_20), -+ EHT_GROUP(16, EHT_GI_32, BW_20), -+ -+ EHT_GROUP( 1, EHT_GI_08, BW_40), -+ EHT_GROUP( 2, EHT_GI_08, BW_40), -+ EHT_GROUP( 3, EHT_GI_08, BW_40), -+ EHT_GROUP( 4, EHT_GI_08, BW_40), -+ EHT_GROUP( 5, EHT_GI_08, BW_40), -+ EHT_GROUP( 6, EHT_GI_08, BW_40), -+ EHT_GROUP( 7, EHT_GI_08, BW_40), -+ EHT_GROUP( 8, EHT_GI_08, BW_40), -+ EHT_GROUP( 9, EHT_GI_08, BW_40), -+ EHT_GROUP(10, EHT_GI_08, BW_40), -+ EHT_GROUP(11, EHT_GI_08, BW_40), -+ EHT_GROUP(12, EHT_GI_08, BW_40), -+ EHT_GROUP(13, EHT_GI_08, BW_40), -+ EHT_GROUP(14, EHT_GI_08, BW_40), -+ EHT_GROUP(15, EHT_GI_08, BW_40), -+ EHT_GROUP(16, EHT_GI_08, BW_40), -+ -+ EHT_GROUP( 1, EHT_GI_16, BW_40), -+ EHT_GROUP( 2, EHT_GI_16, BW_40), -+ EHT_GROUP( 3, EHT_GI_16, BW_40), -+ EHT_GROUP( 4, EHT_GI_16, BW_40), -+ EHT_GROUP( 5, EHT_GI_16, BW_40), -+ EHT_GROUP( 6, EHT_GI_16, BW_40), -+ EHT_GROUP( 7, EHT_GI_16, BW_40), -+ EHT_GROUP( 8, EHT_GI_16, BW_40), -+ EHT_GROUP( 9, EHT_GI_16, BW_40), -+ EHT_GROUP(10, EHT_GI_16, BW_40), -+ EHT_GROUP(11, EHT_GI_16, BW_40), -+ EHT_GROUP(12, EHT_GI_16, BW_40), -+ EHT_GROUP(13, EHT_GI_16, BW_40), -+ EHT_GROUP(14, EHT_GI_16, BW_40), -+ EHT_GROUP(15, EHT_GI_16, BW_40), -+ EHT_GROUP(16, EHT_GI_16, BW_40), -+ -+ EHT_GROUP( 1, EHT_GI_32, BW_40), -+ EHT_GROUP( 2, EHT_GI_32, BW_40), -+ EHT_GROUP( 3, EHT_GI_32, BW_40), -+ EHT_GROUP( 4, EHT_GI_32, BW_40), -+ EHT_GROUP( 5, EHT_GI_32, BW_40), -+ EHT_GROUP( 6, EHT_GI_32, BW_40), -+ EHT_GROUP( 7, EHT_GI_32, BW_40), -+ EHT_GROUP( 8, EHT_GI_32, BW_40), -+ EHT_GROUP( 9, EHT_GI_32, BW_40), -+ EHT_GROUP(10, EHT_GI_32, BW_40), -+ EHT_GROUP(11, EHT_GI_32, BW_40), -+ EHT_GROUP(12, EHT_GI_32, BW_40), -+ EHT_GROUP(13, EHT_GI_32, BW_40), -+ EHT_GROUP(14, EHT_GI_32, BW_40), -+ EHT_GROUP(15, EHT_GI_32, BW_40), -+ EHT_GROUP(16, EHT_GI_32, BW_40), -+ -+ EHT_GROUP( 1, EHT_GI_08, BW_80), -+ EHT_GROUP( 2, EHT_GI_08, BW_80), -+ EHT_GROUP( 3, EHT_GI_08, BW_80), -+ EHT_GROUP( 4, EHT_GI_08, BW_80), -+ EHT_GROUP( 5, EHT_GI_08, BW_80), -+ EHT_GROUP( 6, EHT_GI_08, BW_80), -+ EHT_GROUP( 7, EHT_GI_08, BW_80), -+ EHT_GROUP( 8, EHT_GI_08, BW_80), -+ EHT_GROUP( 9, EHT_GI_08, BW_80), -+ EHT_GROUP(10, EHT_GI_08, BW_80), -+ EHT_GROUP(11, EHT_GI_08, BW_80), -+ EHT_GROUP(12, EHT_GI_08, BW_80), -+ EHT_GROUP(13, EHT_GI_08, BW_80), -+ EHT_GROUP(14, EHT_GI_08, BW_80), -+ EHT_GROUP(15, EHT_GI_08, BW_80), -+ EHT_GROUP(16, EHT_GI_08, BW_80), -+ -+ EHT_GROUP( 1, EHT_GI_16, BW_80), -+ EHT_GROUP( 2, EHT_GI_16, BW_80), -+ EHT_GROUP( 3, EHT_GI_16, BW_80), -+ EHT_GROUP( 4, EHT_GI_16, BW_80), -+ EHT_GROUP( 5, EHT_GI_16, BW_80), -+ EHT_GROUP( 6, EHT_GI_16, BW_80), -+ EHT_GROUP( 7, EHT_GI_16, BW_80), -+ EHT_GROUP( 8, EHT_GI_16, BW_80), -+ EHT_GROUP( 9, EHT_GI_16, BW_80), -+ EHT_GROUP(10, EHT_GI_16, BW_80), -+ EHT_GROUP(11, EHT_GI_16, BW_80), -+ EHT_GROUP(12, EHT_GI_16, BW_80), -+ EHT_GROUP(13, EHT_GI_16, BW_80), -+ EHT_GROUP(14, EHT_GI_16, BW_80), -+ EHT_GROUP(15, EHT_GI_16, BW_80), -+ EHT_GROUP(16, EHT_GI_16, BW_80), -+ -+ EHT_GROUP( 1, EHT_GI_32, BW_80), -+ EHT_GROUP( 2, EHT_GI_32, BW_80), -+ EHT_GROUP( 3, EHT_GI_32, BW_80), -+ EHT_GROUP( 4, EHT_GI_32, BW_80), -+ EHT_GROUP( 5, EHT_GI_32, BW_80), -+ EHT_GROUP( 6, EHT_GI_32, BW_80), -+ EHT_GROUP( 7, EHT_GI_32, BW_80), -+ EHT_GROUP( 8, EHT_GI_32, BW_80), -+ EHT_GROUP( 9, EHT_GI_32, BW_80), -+ EHT_GROUP(10, EHT_GI_32, BW_80), -+ EHT_GROUP(11, EHT_GI_32, BW_80), -+ EHT_GROUP(12, EHT_GI_32, BW_80), -+ EHT_GROUP(13, EHT_GI_32, BW_80), -+ EHT_GROUP(14, EHT_GI_32, BW_80), -+ EHT_GROUP(15, EHT_GI_32, BW_80), -+ EHT_GROUP(16, EHT_GI_32, BW_80), -+ -+ EHT_GROUP( 1, EHT_GI_08, BW_160), -+ EHT_GROUP( 2, EHT_GI_08, BW_160), -+ EHT_GROUP( 3, EHT_GI_08, BW_160), -+ EHT_GROUP( 4, EHT_GI_08, BW_160), -+ EHT_GROUP( 5, EHT_GI_08, BW_160), -+ EHT_GROUP( 6, EHT_GI_08, BW_160), -+ EHT_GROUP( 7, EHT_GI_08, BW_160), -+ EHT_GROUP( 8, EHT_GI_08, BW_160), -+ EHT_GROUP( 9, EHT_GI_08, BW_160), -+ EHT_GROUP(10, EHT_GI_08, BW_160), -+ EHT_GROUP(11, EHT_GI_08, BW_160), -+ EHT_GROUP(12, EHT_GI_08, BW_160), -+ EHT_GROUP(13, EHT_GI_08, BW_160), -+ EHT_GROUP(14, EHT_GI_08, BW_160), -+ EHT_GROUP(15, EHT_GI_08, BW_160), -+ EHT_GROUP(16, EHT_GI_08, BW_160), -+ -+ EHT_GROUP( 1, EHT_GI_16, BW_160), -+ EHT_GROUP( 2, EHT_GI_16, BW_160), -+ EHT_GROUP( 3, EHT_GI_16, BW_160), -+ EHT_GROUP( 4, EHT_GI_16, BW_160), -+ EHT_GROUP( 5, EHT_GI_16, BW_160), -+ EHT_GROUP( 6, EHT_GI_16, BW_160), -+ EHT_GROUP( 7, EHT_GI_16, BW_160), -+ EHT_GROUP( 8, EHT_GI_16, BW_160), -+ EHT_GROUP( 9, EHT_GI_16, BW_160), -+ EHT_GROUP(10, EHT_GI_16, BW_160), -+ EHT_GROUP(11, EHT_GI_16, BW_160), -+ EHT_GROUP(12, EHT_GI_16, BW_160), -+ EHT_GROUP(13, EHT_GI_16, BW_160), -+ EHT_GROUP(14, EHT_GI_16, BW_160), -+ EHT_GROUP(15, EHT_GI_16, BW_160), -+ EHT_GROUP(16, EHT_GI_16, BW_160), -+ -+ EHT_GROUP( 1, EHT_GI_32, BW_160), -+ EHT_GROUP( 2, EHT_GI_32, BW_160), -+ EHT_GROUP( 3, EHT_GI_32, BW_160), -+ EHT_GROUP( 4, EHT_GI_32, BW_160), -+ EHT_GROUP( 5, EHT_GI_32, BW_160), -+ EHT_GROUP( 6, EHT_GI_32, BW_160), -+ EHT_GROUP( 7, EHT_GI_32, BW_160), -+ EHT_GROUP( 8, EHT_GI_32, BW_160), -+ EHT_GROUP( 9, EHT_GI_32, BW_160), -+ EHT_GROUP(10, EHT_GI_32, BW_160), -+ EHT_GROUP(11, EHT_GI_32, BW_160), -+ EHT_GROUP(12, EHT_GI_32, BW_160), -+ EHT_GROUP(13, EHT_GI_32, BW_160), -+ EHT_GROUP(14, EHT_GI_32, BW_160), -+ EHT_GROUP(15, EHT_GI_32, BW_160), -+ EHT_GROUP(16, EHT_GI_32, BW_160), -+ -+ EHT_GROUP( 1, EHT_GI_08, BW_320), -+ EHT_GROUP( 2, EHT_GI_08, BW_320), -+ EHT_GROUP( 3, EHT_GI_08, BW_320), -+ EHT_GROUP( 4, EHT_GI_08, BW_320), -+ EHT_GROUP( 5, EHT_GI_08, BW_320), -+ EHT_GROUP( 6, EHT_GI_08, BW_320), -+ EHT_GROUP( 7, EHT_GI_08, BW_320), -+ EHT_GROUP( 8, EHT_GI_08, BW_320), -+ EHT_GROUP( 9, EHT_GI_08, BW_320), -+ EHT_GROUP(10, EHT_GI_08, BW_320), -+ EHT_GROUP(11, EHT_GI_08, BW_320), -+ EHT_GROUP(12, EHT_GI_08, BW_320), -+ EHT_GROUP(13, EHT_GI_08, BW_320), -+ EHT_GROUP(14, EHT_GI_08, BW_320), -+ EHT_GROUP(15, EHT_GI_08, BW_320), -+ EHT_GROUP(16, EHT_GI_08, BW_320), -+ -+ EHT_GROUP( 1, EHT_GI_16, BW_320), -+ EHT_GROUP( 2, EHT_GI_16, BW_320), -+ EHT_GROUP( 3, EHT_GI_16, BW_320), -+ EHT_GROUP( 4, EHT_GI_16, BW_320), -+ EHT_GROUP( 5, EHT_GI_16, BW_320), -+ EHT_GROUP( 6, EHT_GI_16, BW_320), -+ EHT_GROUP( 7, EHT_GI_16, BW_320), -+ EHT_GROUP( 8, EHT_GI_16, BW_320), -+ EHT_GROUP( 9, EHT_GI_16, BW_320), -+ EHT_GROUP(10, EHT_GI_16, BW_320), -+ EHT_GROUP(11, EHT_GI_16, BW_320), -+ EHT_GROUP(12, EHT_GI_16, BW_320), -+ EHT_GROUP(13, EHT_GI_16, BW_320), -+ EHT_GROUP(14, EHT_GI_16, BW_320), -+ EHT_GROUP(15, EHT_GI_16, BW_320), -+ EHT_GROUP(16, EHT_GI_16, BW_320), -+ -+ EHT_GROUP( 1, EHT_GI_32, BW_320), -+ EHT_GROUP( 2, EHT_GI_32, BW_320), -+ EHT_GROUP( 3, EHT_GI_32, BW_320), -+ EHT_GROUP( 4, EHT_GI_32, BW_320), -+ EHT_GROUP( 5, EHT_GI_32, BW_320), -+ EHT_GROUP( 6, EHT_GI_32, BW_320), -+ EHT_GROUP( 7, EHT_GI_32, BW_320), -+ EHT_GROUP( 8, EHT_GI_32, BW_320), -+ EHT_GROUP( 9, EHT_GI_32, BW_320), -+ EHT_GROUP(10, EHT_GI_32, BW_320), -+ EHT_GROUP(11, EHT_GI_32, BW_320), -+ EHT_GROUP(12, EHT_GI_32, BW_320), -+ EHT_GROUP(13, EHT_GI_32, BW_320), -+ EHT_GROUP(14, EHT_GI_32, BW_320), -+ EHT_GROUP(15, EHT_GI_32, BW_320), -+ EHT_GROUP(16, EHT_GI_32, BW_320), - }; - - static u32 -@@ -422,6 +751,9 @@ static u32 ieee80211_get_rate_duration(struct ieee80211_hw *hw, - case RATE_INFO_BW_160: - bw = BW_160; - break; -+ case RATE_INFO_BW_320: -+ bw = BW_320; -+ break; - default: - WARN_ON_ONCE(1); - return 0; -@@ -443,11 +775,20 @@ static u32 ieee80211_get_rate_duration(struct ieee80211_hw *hw, - idx = status->rate_idx; - group = HE_GROUP_IDX(streams, status->he_gi, bw); - break; -+ case RX_ENC_EHT: -+ streams = status->nss; -+ idx = status->rate_idx; -+ group = EHT_GROUP_IDX(streams, status->he_gi, bw); -+ break; - default: - WARN_ON_ONCE(1); - return 0; - } - -+ if (WARN_ON_ONCE((status->encoding != RX_ENC_EHT && streams > 8) || -+ (status->encoding == RX_ENC_EHT && streams > 16))) -+ return 0; -+ - if (WARN_ON_ONCE((status->encoding != RX_ENC_HE && streams > 4) || - (status->encoding == RX_ENC_HE && streams > 8))) - return 0; -@@ -517,7 +858,9 @@ static bool ieee80211_fill_rate_info(struct ieee80211_hw *hw, - stat->nss = ri->nss; - stat->rate_idx = ri->mcs; - -- if (ri->flags & RATE_INFO_FLAGS_HE_MCS) -+ if (ri->flags & RATE_INFO_FLAGS_EHT_MCS) -+ stat->encoding = RX_ENC_EHT; -+ else if (ri->flags & RATE_INFO_FLAGS_HE_MCS) - stat->encoding = RX_ENC_HE; - else if (ri->flags & RATE_INFO_FLAGS_VHT_MCS) - stat->encoding = RX_ENC_VHT; -@@ -529,7 +872,7 @@ static bool ieee80211_fill_rate_info(struct ieee80211_hw *hw, - if (ri->flags & RATE_INFO_FLAGS_SHORT_GI) - stat->enc_flags |= RX_ENC_FLAG_SHORT_GI; - -- stat->he_gi = ri->he_gi; -+ stat->he_gi = (ri->flags & RATE_INFO_FLAGS_EHT_MCS) ? ri->eht_gi : ri->he_gi; - - if (stat->encoding != RX_ENC_LEGACY) - return true; --- -2.45.2 diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile index 50251d3d59e59b..630485ba6f969e 100644 --- a/package/kernel/mt76/Makefile +++ b/package/kernel/mt76/Makefile @@ -11,7 +11,7 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2024-09-23 PKG_SOURCE_VERSION:=09ae763c65539f2177430c44a1eb5dcb2b734bdd -PKG_MIRROR_HASH:=771d9992ef837f0c4a58329ed425fb8b00334ab73834216596b3ee9872ab3f79 +PKG_MIRROR_HASH:=a68df9981167ccb1731537035f7a48bf481b1f090c9ecf856eda4d931ab545d4 PKG_MAINTAINER:=Felix Fietkau PKG_USE_NINJA:=0 @@ -42,6 +42,8 @@ define KernelPackage/mt76-default DEPENDS:= \ +kmod-mac80211 \ +@DRIVER_11AC_SUPPORT \ + +@DRIVER_11AX_SUPPORT \ + +@DRIVER_11BE_SUPPORT \ +@KERNEL_PAGE_POOL endef diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh index ede13bb01c2c32..98e6bfbe94b7ef 100755 --- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh +++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh @@ -578,7 +578,7 @@ mac80211_hostapd_setup_base() { append base_cfg "he_mu_edca_ac_vo_timer=3" "$N" fi - set_default tx_burst 2 + set_default tx_burst 2.0 # 802.11be enable_be=0 diff --git a/package/network/services/hostapd/Config.in b/package/network/services/hostapd/Config.in index 742cd78a14627b..25df1efbd6a79d 100644 --- a/package/network/services/hostapd/Config.in +++ b/package/network/services/hostapd/Config.in @@ -37,12 +37,12 @@ config DRIVER_11AC_SUPPORT config DRIVER_11AX_SUPPORT bool - default n + default y select WPA_MBO_SUPPORT config DRIVER_11BE_SUPPORT bool - default n + default y config WPA_ENABLE_WEP bool "Enable support for unsecure and obsolete WEP" diff --git a/package/network/services/hostapd/files/hostapd-basic.config b/package/network/services/hostapd/files/hostapd-basic.config index fa06a95043f3a4..6924cc1ffe8ada 100644 --- a/package/network/services/hostapd/files/hostapd-basic.config +++ b/package/network/services/hostapd/files/hostapd-basic.config @@ -170,7 +170,7 @@ CONFIG_IEEE80211AC=y # final IEEE 802.11ax version. #CONFIG_IEEE80211AX=y -#CONFIG_IEEE80211BE=y +CONFIG_IEEE80211BE=y # Remove debugging code that is printing out debug messages to stdout. # This can be used to reduce the size of the hostapd considerably if debugging diff --git a/package/network/services/hostapd/files/hostapd-full.config b/package/network/services/hostapd/files/hostapd-full.config index e2561e6424ca12..d2397c850568f6 100644 --- a/package/network/services/hostapd/files/hostapd-full.config +++ b/package/network/services/hostapd/files/hostapd-full.config @@ -170,7 +170,7 @@ CONFIG_IEEE80211AC=y # final IEEE 802.11ax version. #CONFIG_IEEE80211AX=y -#CONFIG_IEEE80211BE=y +CONFIG_IEEE80211BE=y # Remove debugging code that is printing out debug messages to stdout. # This can be used to reduce the size of the hostapd considerably if debugging diff --git a/package/network/services/hostapd/files/hostapd-mini.config b/package/network/services/hostapd/files/hostapd-mini.config index 5d38b777636b62..9a3aa838ce59cf 100644 --- a/package/network/services/hostapd/files/hostapd-mini.config +++ b/package/network/services/hostapd/files/hostapd-mini.config @@ -170,7 +170,7 @@ CONFIG_IEEE80211AC=y # final IEEE 802.11ax version. #CONFIG_IEEE80211AX=y -#CONFIG_IEEE80211BE=y +CONFIG_IEEE80211BE=y # Remove debugging code that is printing out debug messages to stdout. # This can be used to reduce the size of the hostapd considerably if debugging