From 64366c9509a83db1153cde3f556ab15e7d7b9375 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 26 Aug 2022 19:48:45 +0200 Subject: [PATCH] mt76: update to the latest version 9485e3b47066 mt76: remove q->qid e5674c4aa402 mt76: mt7921: enable HW beacon filter not depending on PM flag 7fd299e3c921 mt76: mt7921: enable HW beacon filter in the initialization stage d5459efaaf14 mt76: mt7921: make mt7921_pci_driver static b8304b456e23 mt76: connac: move tx initialization/cleanup in mt76_connac module 6e0d7077486c mt76: mt7921: reduce log severity levels for informative messages cb80da974fe6 mt76: mt7921: reduce the mutex lock scope during reset a2d61f4f4063 mt76: mt7915 add ht mpdu density 08ea730c1130 mt76: add len parameter to __mt76_mcu_msg_alloc signature 60ef85fa352c mt76: introduce MT_RXQ_BAND2 and MT_RXQ_BAND2_WA in mt76_rxq_id 8ccbb38ca6e6 mt76: add phy_idx in mt76_rx_status eb19ac83c07e mt76: introduce phys array in mt76_dev structure 30887591e3ab mt76: add phy_idx to mt76_wcid 4bf8c20a9524 mt76: convert MT_TX_HW_QUEUE_EXT_PHY to MT_TX_HW_QUEUE_PHY e6c6bf8cee09 mt76: get rid of mt76_wcid_hw routine 120f73ad992a mediatek: mt76: mac80211: Fix missing of_node_put() in mt76_led_init() 111e92cf8c22 mediatek: mt76: eeprom: fix missing of_node_put() in mt76_find_power_limits_node() 13bedd62ff4a mt76: connac: introduce mt76_connac_reg_map structure 5ec78e1ec43d wifi: mt76: fix reading current per-tid starting sequence number for aggregation Signed-off-by: Felix Fietkau (cherry picked from commit ec7d32f3769fbd815f72a7471e4bb7a07aee359d) Signed-off-by: Tianling Shen --- package/kernel/mt76/Makefile | 29 +++++--- ...ss-the-dst-buffer-to-of_get_mac_addr.patch | 26 ------- ...ix-encap-offload-ethernet-type-check.patch | 63 ----------------- .../include/linux/soc/mediatek/mtk_wed.h | 68 +++++++++++++++++++ 4 files changed, 89 insertions(+), 97 deletions(-) delete mode 100644 package/kernel/mt76/patches/100-Revert-of-net-pass-the-dst-buffer-to-of_get_mac_addr.patch delete mode 100644 package/kernel/mt76/patches/101-fix-encap-offload-ethernet-type-check.patch create mode 100644 target/linux/generic/files/include/linux/soc/mediatek/mtk_wed.h diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile index 8210478c37..a18cca73a9 100644 --- a/package/kernel/mt76/Makefile +++ b/package/kernel/mt76/Makefile @@ -8,9 +8,9 @@ PKG_LICENSE_FILES:= PKG_SOURCE_URL:=https://github.com/openwrt/mt76 PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2021-12-03 -PKG_SOURCE_VERSION:=678071ef70297b7264661c356ddb3c8cf7f3c87b -PKG_MIRROR_HASH:=b1f8613f7c65ca6a893f83ed9efc3f7ce72b9b4904fd11b89264f57f4f2a3b5e +PKG_SOURCE_DATE:=2022-09-06 +PKG_SOURCE_VERSION:=d70546462b7b51ebc2bcdd5c534fdf3465be62a4 +PKG_MIRROR_HASH:=3d6b68d70a78c0072ed10ab2548344b6b3a70ad99e4edc258fafa16886f4abf9 PKG_MAINTAINER:=Felix Fietkau PKG_USE_NINJA:=0 @@ -221,22 +221,31 @@ endef define KernelPackage/mt7915e $(KernelPackage/mt76-default) TITLE:=MediaTek MT7915e wireless driver - DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT + DEPENDS+=@PCI_SUPPORT +kmod-mt7615-common +kmod-hwmon-core +kmod-thermal +@DRIVER_11AX_SUPPORT +@KERNEL_RELAY FILES:= $(PKG_BUILD_DIR)/mt7915/mt7915e.ko AUTOLOAD:=$(call AutoProbe,mt7915e) endef define KernelPackage/mt7921-common + $(KernelPackage/mt76-default) TITLE:=MediaTek MT7615 wireless driver common code HIDDEN:=1 - DEPENDS+=@PCI_SUPPORT +kmod-mt76-core +kmod-mt76-connac + DEPENDS+=+kmod-mt76-connac +@DRIVER_11AX_SUPPORT FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921-common.ko endef +define KernelPackage/mt7921u + $(KernelPackage/mt76-default) + TITLE:=MediaTek MT7921U wireless driver + DEPENDS+=+kmod-mt76-usb +kmod-mt7921-common + FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921u.ko + AUTOLOAD:=$(call AutoProbe,mt7921u) +endef + define KernelPackage/mt7921s $(KernelPackage/mt76-default) - TITLE:=MediaTek MT7921s wireless driver - DEPENDS+=@PCI_SUPPORT +kmod-mt76-connac +kmod-mt76-sdio +kmod-mt7921-common + TITLE:=MediaTek MT7921S wireless driver + DEPENDS+=+kmod-mt76-sdio +kmod-mt7921-common FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921s.ko AUTOLOAD:=$(call AutoProbe,mt7921s) endef @@ -244,7 +253,7 @@ endef define KernelPackage/mt7921e $(KernelPackage/mt76-default) TITLE:=MediaTek MT7921e wireless driver - DEPENDS+=@PCI_SUPPORT +kmod-mt76-connac +kmod-mt7921-common + DEPENDS+=@PCI_SUPPORT +kmod-mt7921-common FILES:= $(PKG_BUILD_DIR)/mt7921/mt7921e.ko AUTOLOAD:=$(call AutoProbe,mt7921e) endef @@ -338,6 +347,9 @@ endif ifdef CONFIG_PACKAGE_kmod-mt7921-common PKG_MAKE_FLAGS += CONFIG_MT7921_COMMON=m endif +ifdef CONFIG_PACKAGE_kmod-mt7921u + PKG_MAKE_FLAGS += CONFIG_MT7921U=m +endif ifdef CONFIG_PACKAGE_kmod-mt7921s PKG_MAKE_FLAGS += CONFIG_MT7921S=m endif @@ -474,6 +486,7 @@ $(eval $(call KernelPackage,mt7663u)) $(eval $(call KernelPackage,mt7663s)) $(eval $(call KernelPackage,mt7915e)) $(eval $(call KernelPackage,mt7921-common)) +$(eval $(call KernelPackage,mt7921u)) $(eval $(call KernelPackage,mt7921s)) $(eval $(call KernelPackage,mt7921e)) $(eval $(call KernelPackage,mt76)) diff --git a/package/kernel/mt76/patches/100-Revert-of-net-pass-the-dst-buffer-to-of_get_mac_addr.patch b/package/kernel/mt76/patches/100-Revert-of-net-pass-the-dst-buffer-to-of_get_mac_addr.patch deleted file mode 100644 index 24b1240548..0000000000 --- a/package/kernel/mt76/patches/100-Revert-of-net-pass-the-dst-buffer-to-of_get_mac_addr.patch +++ /dev/null @@ -1,26 +0,0 @@ -From: Felix Fietkau -Date: Tue, 23 Nov 2021 17:01:45 +0100 -Subject: [PATCH] Revert "of: net: pass the dst buffer to of_get_mac_address()" - -This reverts commit 4932c5d80153c336c77dbe8d7af9f8fdd879d01f. ---- - ---- a/eeprom.c -+++ b/eeprom.c -@@ -105,9 +105,15 @@ mt76_eeprom_override(struct mt76_phy *ph - { - struct mt76_dev *dev = phy->dev; - -+#ifdef CONFIG_OF - struct device_node *np = dev->dev->of_node; -+ const u8 *mac = NULL; - -- of_get_mac_address(np, phy->macaddr); -+ if (np) -+ mac = of_get_mac_address(np); -+ if (!IS_ERR_OR_NULL(mac)) -+ ether_addr_copy(phy->macaddr, mac); -+#endif - - if (!is_valid_ether_addr(phy->macaddr)) { - eth_random_addr(phy->macaddr); diff --git a/package/kernel/mt76/patches/101-fix-encap-offload-ethernet-type-check.patch b/package/kernel/mt76/patches/101-fix-encap-offload-ethernet-type-check.patch deleted file mode 100644 index d81aa4dfa3..0000000000 --- a/package/kernel/mt76/patches/101-fix-encap-offload-ethernet-type-check.patch +++ /dev/null @@ -1,63 +0,0 @@ -From: Felix Fietkau -To: linux-wireless@vger.kernel.org -Cc: =?utf-8?q?Thibaut_VAR=C3=88NE?= -Subject: [PATCH] mt76: fix encap offload ethernet type check -Date: Wed, 20 Apr 2022 14:33:08 +0200 -Message-Id: <20220420123308.70104-1-nbd@nbd.name> - -The driver needs to check if the format is 802.2 vs 802.3 in order to set -a tx descriptor flag. skb->protocol can't be used, since it may not be properly -initialized for packets coming in from a packet socket. -Fix misdetection by checking the ethertype from the skb data instead - -Reported-by: Thibaut VARĂˆNE -Signed-off-by: Felix Fietkau ---- - drivers/net/wireless/mediatek/mt76/mt7915/mac.c | 4 +++- - drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 4 +++- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mac.c b/drivers/net/wireless/mediatek/mt76/mt7915/mac.c -index 5f4a0e811137..e353e8c44d6c 100644 ---- a/mt7915/mac.c -+++ b/mt7915/mac.c -@@ -1016,6 +1016,7 @@ mt7915_mac_write_txwi_8023(struct mt7915_dev *dev, __le32 *txwi, - - u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; - u8 fc_type, fc_stype; -+ u16 ethertype; - bool wmm = false; - u32 val; - -@@ -1029,7 +1030,8 @@ mt7915_mac_write_txwi_8023(struct mt7915_dev *dev, __le32 *txwi, - val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_3) | - FIELD_PREP(MT_TXD1_TID, tid); - -- if (be16_to_cpu(skb->protocol) >= ETH_P_802_3_MIN) -+ ethertype = get_unaligned_be16(&skb->data[12]); -+ if (ethertype >= ETH_P_802_3_MIN) - val |= MT_TXD1_ETH_802_3; - - txwi[1] |= cpu_to_le32(val); -diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mac.c b/drivers/net/wireless/mediatek/mt76/mt7921/mac.c -index 368e54c53ddd..ac11e8b28f13 100644 ---- a/mt7921/mac.c -+++ b/mt7921/mac.c -@@ -814,6 +814,7 @@ mt7921_mac_write_txwi_8023(struct mt7921_dev *dev, __le32 *txwi, - { - u8 tid = skb->priority & IEEE80211_QOS_CTL_TID_MASK; - u8 fc_type, fc_stype; -+ u16 ethertype; - bool wmm = false; - u32 val; - -@@ -827,7 +828,8 @@ mt7921_mac_write_txwi_8023(struct mt7921_dev *dev, __le32 *txwi, - val = FIELD_PREP(MT_TXD1_HDR_FORMAT, MT_HDR_FORMAT_802_3) | - FIELD_PREP(MT_TXD1_TID, tid); - -- if (be16_to_cpu(skb->protocol) >= ETH_P_802_3_MIN) -+ ethertype = get_unaligned_be16(&skb->data[12]); -+ if (ethertype >= ETH_P_802_3_MIN) - val |= MT_TXD1_ETH_802_3; - - txwi[1] |= cpu_to_le32(val); diff --git a/target/linux/generic/files/include/linux/soc/mediatek/mtk_wed.h b/target/linux/generic/files/include/linux/soc/mediatek/mtk_wed.h new file mode 100644 index 0000000000..0a7197f55a --- /dev/null +++ b/target/linux/generic/files/include/linux/soc/mediatek/mtk_wed.h @@ -0,0 +1,68 @@ +#ifndef __MTK_WED_H +#define __MTK_WED_H + +#include +#include +#include +#include + +#define MTK_WED_TX_QUEUES 2 + +struct mtk_wed_hw; +struct mtk_wdma_desc; + +struct mtk_wed_ring { + struct mtk_wdma_desc *desc; + dma_addr_t desc_phys; + int size; + + u32 reg_base; + void __iomem *wpdma; +}; + +struct mtk_wed_device { +}; + +struct mtk_wed_ops { + int (*attach)(struct mtk_wed_device *dev); + int (*tx_ring_setup)(struct mtk_wed_device *dev, int ring, + void __iomem *regs); + int (*txfree_ring_setup)(struct mtk_wed_device *dev, + void __iomem *regs); + void (*detach)(struct mtk_wed_device *dev); + + void (*stop)(struct mtk_wed_device *dev); + void (*start)(struct mtk_wed_device *dev, u32 irq_mask); + void (*reset_dma)(struct mtk_wed_device *dev); + + u32 (*reg_read)(struct mtk_wed_device *dev, u32 reg); + void (*reg_write)(struct mtk_wed_device *dev, u32 reg, u32 val); + + u32 (*irq_get)(struct mtk_wed_device *dev, u32 mask); + void (*irq_set_mask)(struct mtk_wed_device *dev, u32 mask); +}; + +extern const struct mtk_wed_ops __rcu *mtk_soc_wed_ops; + +static inline int +mtk_wed_device_attach(struct mtk_wed_device *dev) +{ + int ret = -ENODEV; + + return ret; +} + +static inline bool mtk_wed_device_active(struct mtk_wed_device *dev) +{ + return false; +} +#define mtk_wed_device_detach(_dev) do {} while (0) +#define mtk_wed_device_start(_dev, _mask) do {} while (0) +#define mtk_wed_device_tx_ring_setup(_dev, _ring, _regs) -ENODEV +#define mtk_wed_device_txfree_ring_setup(_dev, _ring, _regs) -ENODEV +#define mtk_wed_device_reg_read(_dev, _reg) 0 +#define mtk_wed_device_reg_write(_dev, _reg, _val) do {} while (0) +#define mtk_wed_device_irq_get(_dev, _mask) 0 +#define mtk_wed_device_irq_set_mask(_dev, _mask) do {} while (0) + +#endif