ax1800/axt1800: upgrade wlan-ap to v2.6.0

Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
This commit is contained in:
Jianhui Zhao 2022-07-12 16:43:39 +08:00
parent c02c57816d
commit 3fbc3ec336
70 changed files with 3036 additions and 3373 deletions

View File

@ -1,13 +1,9 @@
repo: https://github.com/Telecominfraproject/wlan-ap.git
branch: main
branch: v2.6.0
git_clone_dir: wlan-ap
openwrt_root_dir: wlan-ap/openwrt
revision: 8529d7471a7c41b63c35d31537457f90be8fcf69
patch_folders:
- patches-wlan-ap
files_folders:
- files-wlan-ap/
wlan_ap: true
wlan_ap: true

View File

@ -1,635 +0,0 @@
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=qca-nss-clients
PKG_SOURCE_PROTO:=git
PKG_BRANCH:=master
PKG_RELEASE:=2
PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/nss-clients/
PKG_MIRROR_HASH:=802bf8b2dac8da0549e108b873afd982d127370c07d6574ece71f902eafe7698
PKG_VERSION:=153998d70fdba508a59a28c13a606032cbf32686
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_VERSION)
#PKG_BUILD_DEPENDS := PACKAGE_kmod-qca-nss-crypto:kmod-qca-nss-crypto
MAKE_OPTS:=
include $(INCLUDE_DIR)/package.mk
# Keep default as ipq806x for branches that does not have subtarget framework
subtarget:=$(SUBTARGET)
# DTLS Manager v2.0 for Hawkeye/Cypress
DTLSMGR_DIR:=v2.0
# IPsec Manager v2.0 for Hawkeye/Cypress
IPSECMGR_DIR:=v2.0
define KernelPackage/qca-nss-drv-tun6rd
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - tun6rd
DEPENDS:=+kmod-qca-nss-drv +kmod-sit @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/qca-nss-tun6rd.ko
AUTOLOAD:=$(call AutoLoad,60,qca-nss-tun6rd)
endef
define KernelPackage/qca-nss-drv-tun6rd/Description
Kernel modules for NSS connection manager - Support for 6rd tunnel
endef
define KernelPackage/qca-nss-drv-dtlsmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - dtlsmgr
DEPENDS:=+kmod-qca-nss-drv +kmod-qca-nss-cfi-cryptoapi @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/dtls/$(DTLSMGR_DIR)/qca-nss-dtlsmgr.ko
endef
define KernelPackage/qca-nss-drv-dtls/Description
Kernel modules for NSS connection manager - Support for DTLS sessions
endef
define KernelPackage/qca-nss-drv-tlsmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - tlsmgr
DEPENDS:=@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq807x||TARGET_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx +kmod-qca-nss-drv +kmod-qca-nss-cfi @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/tls/qca-nss-tlsmgr.ko
endef
define KernelPackage/qca-nss-drv-tls/Description
Kernel modules for NSS connection manager - Support for TLS sessions
endef
define KernelPackage/qca-nss-drv-l2tpv2
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - l2tp
DEPENDS:=+kmod-qca-nss-drv +kmod-ppp +kmod-l2tp @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/l2tp/l2tpv2/qca-nss-l2tpv2.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-l2tpv2)
endef
define KernelPackage/qca-nss-drv-l2tp/Description
Kernel modules for NSS connection manager - Support for l2tp tunnel
endef
define KernelPackage/qca-nss-drv-pptp
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - PPTP
DEPENDS:=+kmod-qca-nss-drv +kmod-pptp @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/pptp/qca-nss-pptp.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-pptp)
endef
define KernelPackage/qca-nss-drv-pptp/Description
Kernel modules for NSS connection manager - Support for PPTP tunnel
endef
define KernelPackage/qca-nss-drv-pppoe
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - PPPoE
DEPENDS:=+kmod-qca-nss-drv +kmod-pppoe @!LINUX_3_18 \
+!(TARGET_ipq_ipq807x_QSDK_256||TARGET_ipq_ipq60xx_QSDK_256):kmod-bonding
FILES:=$(PKG_BUILD_DIR)/pppoe/qca-nss-pppoe.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-pppoe)
endef
define KernelPackage/qca-nss-drv-pppoe/Description
Kernel modules for NSS connection manager - Support for PPPoE
endef
define KernelPackage/qca-nss-drv-map-t
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - MAP-T
DEPENDS:=+kmod-qca-nss-drv +kmod-nat46 @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/map/map-t/qca-nss-map-t.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-map-t)
endef
define KernelPackage/qca-nss-drv-map-t/Description
Kernel modules for NSS connection manager - Support for MAP-T
endef
define KernelPackage/qca-nss-drv-gre
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - GRE
DEPENDS:=@TARGET_ipq_ipq806x||TARGET_ipq806x||TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq807x||TARGET_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64 \
+kmod-qca-nss-drv @!LINUX_3_18 +kmod-gre6
FILES:=$(PKG_BUILD_DIR)/gre/qca-nss-gre.ko $(PKG_BUILD_DIR)/gre/test/qca-nss-gre-test.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-gre)
endef
define KernelPackage/qca-nss-drv-gre/Description
Kernel modules for NSS connection manager - Support for GRE
endef
define KernelPackage/qca-nss-drv-tunipip6
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (connection manager) - DS-lite and ipip6 Tunnel
DEPENDS:=+kmod-qca-nss-drv +kmod-iptunnel6 +kmod-ip6-tunnel @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/tunipip6/qca-nss-tunipip6.ko
AUTOLOAD:=$(call AutoLoad,60,qca-nss-tunipip6)
endef
define KernelPackage/qca-nss-drv-tunipip6/Description
Kernel modules for NSS connection manager
Add support for DS-lite and ipip6 tunnel
endef
define KernelPackage/qca-nss-drv-profile
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
TITLE:=Profiler for QCA NSS driver (IPQ806x)
FILES:=$(PKG_BUILD_DIR)/profiler/qca-nss-profile-drv.ko
endef
define KernelPackage/qca-nss-drv-profile/Description
This package contains a NSS driver profiler for QCA chipset
endef
define KernelPackage/qca-nss-drv-ipsecmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (ipsec manager) - ipsecmgr
DEPENDS:=@TARGET_ipq806x||TARGET_ipq_ipq806x||TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq807x||TARGET_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx \
+kmod-qca-nss-drv +kmod-qca-nss-cfi-cryptoapi +kmod-qca-nss-cfi-ocf @!LINUX_3_18
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-l2tpv2),)
DEPENDS:=+kmod-qca-nss-drv-l2tpv2
endif
FILES:=$(PKG_BUILD_DIR)/ipsecmgr/$(IPSECMGR_DIR)/qca-nss-ipsecmgr.ko
AUTOLOAD:=$(call AutoLoad,60,qca-nss-ipsecmgr)
endef
define KernelPackage/qca-nss-drv-ipsecmgr/Description
Kernel module for NSS IPsec offload manager
endef
define KernelPackage/qca-nss-drv-ipsecmgr-klips
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS (ipsec klips)
DEPENDS:=@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx \
+kmod-qca-nss-drv-ipsecmgr kmod-qca-nss-ecm
FILES:=$(PKG_BUILD_DIR)/ipsecmgr/$(IPSECMGR_DIR)/plugins/klips/qca-nss-ipsec-klips.ko
endef
define KernelPackage/qca-nss-drv-ipsecmgr-klips/Description
NSS Kernel module for IPsec klips offload
endef
define KernelPackage/qca-nss-drv-capwapmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv +kmod-qca-nss-drv-dtlsmgr @!LINUX_3_18
TITLE:=NSS CAPWAP Manager for QCA NSS driver (IPQ806x)
FILES:=$(PKG_BUILD_DIR)/capwapmgr/qca-nss-capwapmgr.ko
endef
define KernelPackage/qca-nss-drv-capwapmgr/Description
This package contains a NSS CAPWAP Manager
endef
define KernelPackage/qca-nss-drv-bridge-mgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS bridge manager
DEPENDS:=@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq807x||TARGET_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx \
+TARGET_ipq_ipq807x:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq_ipq807x_ipq807x:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq807x:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq807x_ipq807x:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq_ipq60xx:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq807x_ipq60xx:kmod-qca-nss-drv-vlan-mgr @!LINUX_3_18 \
+!(TARGET_ipq_ipq807x_QSDK_256||TARGET_ipq_ipq60xx_QSDK_256):kmod-bonding
FILES:=$(PKG_BUILD_DIR)/bridge/qca-nss-bridge-mgr.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-bridge-mgr)
endef
define KernelPackage/qca-nss-drv-bridge-mgr/Description
Kernel modules for NSS bridge manager
endef
define KernelPackage/qca-nss-drv-vlan-mgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS vlan manager
DEPENDS:=@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq807x||TARGET_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx +kmod-qca-nss-drv @!LINUX_3_18 \
+!(TARGET_ipq_ipq807x_QSDK_256||TARGET_ipq_ipq60xx_QSDK_256):kmod-bonding
FILES:=$(PKG_BUILD_DIR)/vlan/qca-nss-vlan.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-vlan)
endef
define KernelPackage/qca-nss-drv-vlan-mgr/Description
Kernel modules for NSS vlan manager
endef
define KernelPackage/qca-nss-drv-qdisc
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Support
TITLE:=Qdisc for configuring shapers in NSS
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/nss_qdisc/qca-nss-qdisc.ko
AUTOLOAD:=$(call AutoLoad,58,qca-nss-qdisc)
endef
define KernelPackage/qca-nss-drv-qdisc/Description
Linux qdisc that aids in configuring shapers in the NSS
endef
define KernelPackage/qca-nss-drv-igs
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Support
TITLE:=Action for offloading traffic to an IFB interface to perform ingress shaping.
DEPENDS:=@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64 \
+kmod-qca-nss-drv +kmod-sched-core +kmod-ifb +kmod-qca-nss-drv-qdisc @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/nss_qdisc/igs/act_nssmirred.ko
endef
define KernelPackage/qca-nss-drv-igs/Description
Linux action that helps in offloading traffic to an IFB interface to perform ingress shaping.
endef
define KernelPackage/qca-nss-drv-lag-mgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS LAG manager
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18 \
+TARGET_ipq_ipq807x:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq_ipq807x_ipq807x:kmod-qca-nss-drv-vlan-mgr @!LINUX_3_18 \
+TARGET_ipq807x:kmod-qca-nss-drv-vlan-mgr \
+TARGET_ipq807x_ipq807x:kmod-qca-nss-drv-vlan-mgr @!LINUX_3_18 \
+TARGET_ipq_ipq60xx:kmod-qca-nss-drv-vlan-mgr @!LINUX_3_18 \
+TARGET_ipq807x_ipq60xx:kmod-qca-nss-drv-vlan-mgr @!LINUX_3_18 \
+kmod-bonding
FILES:=$(PKG_BUILD_DIR)/lag/qca-nss-lag-mgr.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-lag-mgr)
endef
define KernelPackage/qca-nss-drv-lag-mgr/Description
Kernel modules for NSS LAG manager
endef
define KernelPackage/qca-nss-drv-netlink
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=@TARGET_ipq807x||TARGET_ipq_ipq807x||TARGET_ipq807x_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64 \
+kmod-qca-nss-drv @!LINUX_3_18 \
+PACKAGE_kmod-qca-nss-drv-ipsecmgr:kmod-qca-nss-drv-ipsecmgr \
+PACKAGE_kmod-qca-nss-drv-dtlsmgr:kmod-qca-nss-drv-dtlsmgr \
+PACKAGE_kmod-qca-nss-drv-capwapmgr:kmod-qca-nss-drv-capwapmgr @!LINUX_3_18
TITLE:=NSS NETLINK Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/netlink/qca-nss-netlink.ko
endef
define KernelPackage/qca-nss-drv-netlink/Description
Kernel module for NSS netlink manager
endef
define KernelPackage/qca-nss-drv-ovpn-mgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for NSS OpenVPN manager
DEPENDS:=+kmod-qca-nss-drv +kmod-qca-nss-cfi +kmod-tun +kmod-ipt-conntrack @!LINUX_3_18 \
@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx
FILES:=$(PKG_BUILD_DIR)/openvpn/src/qca-nss-ovpn-mgr.ko
endef
define KernelPackage/qca-nss-drv-ovpn-mgr/Description
Kernel module for NSS OpenVPN manager
endef
define KernelPackage/qca-nss-drv-ovpn-link
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
TITLE:=Kernel driver for interfacing NSS OpenVPN manager with ECM
DEPENDS:=+kmod-qca-nss-drv-ovpn-mgr +kmod-qca-nss-ecm-premium @!LINUX_3_18 \
@TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_ipq807x||TARGET_ipq_ipq60xx||TARGET_ipq807x_ipq60xx
FILES:=$(PKG_BUILD_DIR)/openvpn/plugins/qca-nss-ovpn-link.ko
endef
define KernelPackage/qca-nss-drv-ovpn-link/Description
This module registers with ECM and communicates with NSS OpenVPN manager for supporting OpenVPN offload.
endef
define KernelPackage/qca-nss-drv-pvxlanmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
TITLE:=NSS PVXLAN Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/pvxlanmgr/qca-nss-pvxlanmgr.ko
endef
define KernelPackage/qca-nss-drv-pvxlanmgr/Description
Kernel module for managing NSS PVxLAN
endef
define KernelPackage/qca-nss-drv-eogremgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv +kmod-qca-nss-drv-gre @!LINUX_3_18
TITLE:=NSS EOGRE Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/eogremgr/qca-nss-eogremgr.ko
endef
define KernelPackage/qca-nss-drv-eogremgr/Description
Kernel module for managing NSS EoGRE
endef
define KernelPackage/qca-nss-drv-clmapmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv +kmod-qca-nss-drv-eogremgr @!LINUX_3_18
TITLE:=NSS clmap Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/clmapmgr/qca-nss-clmapmgr.ko
endef
define KernelPackage/qca-nss-drv-clmapmgr/Description
Kernel module for managing NSS clmap
endef
define KernelPackage/qca-nss-drv-vxlanmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv +kmod-vxlan @!LINUX_3_18
TITLE:=NSS VxLAN Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/vxlanmgr/qca-nss-vxlanmgr.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-vxlanmgr)
endef
define KernelPackage/qca-nss-drv-vxlanmgr/Description
Kernel module for managing NSS VxLAN
endef
define KernelPackage/qca-nss-drv-match
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
TITLE:=NSS Match for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/match/qca-nss-match.ko
endef
define KernelPackage/qca-nss-drv-match/Description
Kernel module for managing NSS Match
endef
define KernelPackage/qca-nss-drv-mirror
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Support
TITLE:=Module for mirroring packets from NSS to host.
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
FILES:=$(PKG_BUILD_DIR)/mirror/qca-nss-mirror.ko
endef
define KernelPackage/qca-nss-drv-mirror/Description
Kernel module for managing NSS Mirror
endef
define Build/InstallDev/qca-nss-clients
$(INSTALL_DIR) $(1)/usr/include/qca-nss-clients
$(CP) $(PKG_BUILD_DIR)/netlink/include/* $(1)/usr/include/qca-nss-clients/
$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-clients/
endef
define KernelPackage/qca-nss-drv-wifi-meshmgr
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Network Devices
DEPENDS:=+kmod-qca-nss-drv @!LINUX_3_18
TITLE:=NSS WiFi-Mesh Manager for QCA NSS driver
FILES:=$(PKG_BUILD_DIR)/wifi_meshmgr/qca-nss-wifi-meshmgr.ko
AUTOLOAD:=$(call AutoLoad,51,qca-nss-wifi-meshmgr)
endef
define KernelPackage/qca-nss-drv-wifi-meshmgr/Description
Kernel module for WiFi Mesh manager
endef
define Build/InstallDev
$(call Build/InstallDev/qca-nss-clients,$(1))
endef
define KernelPackage/qca-nss-drv-ovpn-mgr/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/qca-nss-ovpn.init $(1)/etc/init.d/qca-nss-ovpn
endef
define KernelPackage/qca-nss-drv-ipsecmgr-klips/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/qca-nss-ipsec $(1)/etc/init.d/qca-nss-ipsec
endef
define KernelPackage/qca-nss-drv-igs/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/qca-nss-mirred.init $(1)/etc/init.d/qca-nss-mirred
endef
EXTRA_CFLAGS+= \
-I$(STAGING_DIR)/usr/include/qca-nss-drv \
-I$(STAGING_DIR)/usr/include/qca-nss-crypto \
-I$(STAGING_DIR)/usr/include/qca-nss-cfi \
-I$(STAGING_DIR)/usr/include/qca-nss-gmac \
-I$(STAGING_DIR)/usr/include/qca-ssdk \
-I$(STAGING_DIR)/usr/include/qca-ssdk/fal \
-I$(STAGING_DIR)/usr/include/nat46
# Build individual packages if selected
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-profile),)
MAKE_OPTS+=profile=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-capwapmgr),)
MAKE_OPTS+=capwapmgr=y
EXTRA_CFLAGS += -DNSS_CAPWAPMGR_ONE_NETDEV
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-tun6rd),)
MAKE_OPTS+=tun6rd=m
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-dtlsmgr),)
MAKE_OPTS+=dtlsmgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-tlsmgr),)
MAKE_OPTS+=tlsmgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-l2tpv2),)
MAKE_OPTS+=l2tpv2=y
EXTRA_CFLAGS += -DNSS_L2TPV2_ENABLED
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-pptp),)
MAKE_OPTS+=pptp=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-map-t),)
MAKE_OPTS+=map-t=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-tunipip6),)
MAKE_OPTS+=tunipip6=m
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-qdisc),)
MAKE_OPTS+=qdisc=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-igs),)
MAKE_OPTS+=igs=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-ipsecmgr),)
EXTRA_CFLAGS+= -I$(PKG_BUILD_DIR)/exports
MAKE_OPTS+=ipsecmgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-ipsecmgr-klips),)
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/qca-nss-ecm
MAKE_OPTS+=ipsecmgr-klips=m
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-bridge-mgr),)
MAKE_OPTS+=bridge-mgr=y
#enable OVS bridge if ovsmgr is enabled
ifneq ($(CONFIG_PACKAGE_kmod-qca-ovsmgr),)
MAKE_OPTS+= NSS_BRIDGE_MGR_OVS_ENABLE=y
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/qca-ovsmgr
endif
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-vlan-mgr),)
MAKE_OPTS+=vlan-mgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-lag-mgr),)
MAKE_OPTS+=lag-mgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-gre),)
EXTRA_CFLAGS+= -I$(PKG_BUILD_DIR)/exports
MAKE_OPTS+=gre=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-pppoe),)
MAKE_OPTS+=pppoe=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-netlink),)
MAKE_OPTS+=netlink=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-ovpn-mgr),)
MAKE_OPTS+=ovpn-mgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-ovpn-link),)
MAKE_OPTS+=ovpn-link=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-pvxlanmgr),)
MAKE_OPTS+=pvxlanmgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-eogremgr),)
MAKE_OPTS+=eogremgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-clmapmgr),)
MAKE_OPTS+=clmapmgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-vxlanmgr),)
MAKE_OPTS+=vxlanmgr=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-match),)
MAKE_OPTS+=match=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-mirror),)
MAKE_OPTS+=mirror=y
endif
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-wifi-meshmgr),)
MAKE_OPTS+=wifi-meshmgr=y
endif
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" $(strip $(MAKE_OPTS)) \
CROSS_COMPILE="$(TARGET_CROSS)" \
ARCH="$(LINUX_KARCH)" \
M="$(PKG_BUILD_DIR)" \
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
SoC="$(subtarget)" \
DTLSMGR_DIR="$(DTLSMGR_DIR)" \
IPSECMGR_DIR="$(IPSECMGR_DIR)" \
modules
endef
$(eval $(call KernelPackage,qca-nss-drv-profile))
#$(eval $(call KernelPackage,qca-nss-drv-capwapmgr))
$(eval $(call KernelPackage,qca-nss-drv-tun6rd))
#$(eval $(call KernelPackage,qca-nss-drv-dtlsmgr))
$(eval $(call KernelPackage,qca-nss-drv-l2tpv2))
$(eval $(call KernelPackage,qca-nss-drv-pptp))
$(eval $(call KernelPackage,qca-nss-drv-pppoe))
$(eval $(call KernelPackage,qca-nss-drv-map-t))
$(eval $(call KernelPackage,qca-nss-drv-tunipip6))
$(eval $(call KernelPackage,qca-nss-drv-qdisc))
$(eval $(call KernelPackage,qca-nss-drv-igs))
#$(eval $(call KernelPackage,qca-nss-drv-netlink))
#$(eval $(call KernelPackage,qca-nss-drv-ipsecmgr))
#$(eval $(call KernelPackage,qca-nss-drv-ipsecmgr-klips))
$(eval $(call KernelPackage,qca-nss-drv-bridge-mgr))
$(eval $(call KernelPackage,qca-nss-drv-vlan-mgr))
$(eval $(call KernelPackage,qca-nss-drv-lag-mgr))
$(eval $(call KernelPackage,qca-nss-drv-gre))
#$(eval $(call KernelPackage,qca-nss-drv-ovpn-mgr))
#$(eval $(call KernelPackage,qca-nss-drv-ovpn-link))
$(eval $(call KernelPackage,qca-nss-drv-pvxlanmgr))
$(eval $(call KernelPackage,qca-nss-drv-eogremgr))
$(eval $(call KernelPackage,qca-nss-drv-clmapmgr))
$(eval $(call KernelPackage,qca-nss-drv-vxlanmgr))
$(eval $(call KernelPackage,qca-nss-drv-match))
#$(eval $(call KernelPackage,qca-nss-drv-tlsmgr))
$(eval $(call KernelPackage,qca-nss-drv-mirror))
$(eval $(call KernelPackage,qca-nss-drv-wifi-meshmgr))

View File

@ -1,13 +0,0 @@
Index: netifd-2021-10-20-c61a1d43/scripts/netifd-wireless.sh
===================================================================
--- netifd-2021-10-20-c61a1d43.orig/scripts/netifd-wireless.sh
+++ netifd-2021-10-20-c61a1d43/scripts/netifd-wireless.sh
@@ -69,7 +69,7 @@ _wdev_prepare_channel() {
esac
case "$band" in
- 2g) hwmode=g;;
+ 2g) [ -z "$hwmode" ] && hwmode=g;;
5g|6g|60g) hwmode=a;;
*)
case "$hwmode" in

View File

@ -1,13 +0,0 @@
Index: dnsmasq-2.85/src/rfc2131.c
===================================================================
--- dnsmasq-2.85.orig/src/rfc2131.c
+++ dnsmasq-2.85/src/rfc2131.c
@@ -724,7 +724,7 @@ size_t dhcp_reply(struct dhcp_context *c
borken_opt = 1;
else
daemon->dhcp_buff[len] = 0;
- if (legal_hostname(daemon->dhcp_buff))
+ // if (legal_hostname(daemon->dhcp_buff))
client_hostname = daemon->dhcp_buff;
}

View File

@ -1,339 +0,0 @@
#!/bin/sh
[ -x /usr/sbin/pppd ] || exit 0
[ -n "$INCLUDE_ONLY" ] || {
. /lib/functions.sh
. /lib/functions/network.sh
. ../netifd-proto.sh
init_proto "$@"
}
ppp_select_ipaddr()
{
local subnets=$1
local res
local res_mask
for subnet in $subnets; do
local addr="${subnet%%/*}"
local mask="${subnet#*/}"
if [ -n "$res_mask" -a "$mask" != 32 ]; then
[ "$mask" -gt "$res_mask" ] || [ "$res_mask" = 32 ] && {
res="$addr"
res_mask="$mask"
}
elif [ -z "$res_mask" ]; then
res="$addr"
res_mask="$mask"
fi
done
echo "$res"
}
ppp_exitcode_tostring()
{
local errorcode=$1
[ -n "$errorcode" ] || errorcode=5
case "$errorcode" in
0) echo "OK" ;;
1) echo "FATAL_ERROR" ;;
2) echo "OPTION_ERROR" ;;
3) echo "NOT_ROOT" ;;
4) echo "NO_KERNEL_SUPPORT" ;;
5) echo "USER_REQUEST" ;;
6) echo "LOCK_FAILED" ;;
7) echo "OPEN_FAILED" ;;
8) echo "CONNECT_FAILED" ;;
9) echo "PTYCMD_FAILED" ;;
10) echo "NEGOTIATION_FAILED" ;;
11) echo "PEER_AUTH_FAILED" ;;
12) echo "IDLE_TIMEOUT" ;;
13) echo "CONNECT_TIME" ;;
14) echo "CALLBACK" ;;
15) echo "PEER_DEAD" ;;
16) echo "HANGUP" ;;
17) echo "LOOPBACK" ;;
18) echo "INIT_FAILED" ;;
19) echo "AUTH_TOPEER_FAILED" ;;
20) echo "TRAFFIC_LIMIT" ;;
21) echo "CNID_AUTH_FAILED";;
*) echo "UNKNOWN_ERROR" ;;
esac
}
ppp_generic_init_config() {
proto_config_add_string username
proto_config_add_string password
proto_config_add_string keepalive
proto_config_add_boolean keepalive_adaptive
proto_config_add_int demand
proto_config_add_string pppd_options
proto_config_add_string 'connect:file'
proto_config_add_string 'disconnect:file'
[ -e /proc/sys/net/ipv6 ] && proto_config_add_string ipv6
proto_config_add_boolean authfail
proto_config_add_int mtu
proto_config_add_string pppname
proto_config_add_string unnumbered
proto_config_add_boolean persist
proto_config_add_int maxfail
proto_config_add_int holdoff
}
ppp_generic_setup() {
local config="$1"; shift
local localip
json_get_vars ip6table demand keepalive keepalive_adaptive username password pppd_options pppname unnumbered persist maxfail holdoff peerdns
[ ! -e /proc/sys/net/ipv6 ] && ipv6=0 || json_get_var ipv6 ipv6
if [ "$ipv6" = 0 ]; then
ipv6=""
elif [ -z "$ipv6" -o "$ipv6" = auto ]; then
ipv6=1
autoipv6=1
fi
if [ "${demand:-0}" -gt 0 ]; then
demand="precompiled-active-filter /etc/ppp/filter demand idle $demand"
else
demand=""
fi
if [ -n "$persist" ]; then
[ "${persist}" -lt 1 ] && persist="nopersist" || persist="persist"
fi
if [ -z "$maxfail" ]; then
[ "$persist" = "persist" ] && maxfail=0 || maxfail=1
fi
[ -n "$mtu" ] || json_get_var mtu mtu
[ -n "$pppname" ] || pppname="${proto:-ppp}-$config"
[ -n "$unnumbered" ] && {
local subnets
( proto_add_host_dependency "$config" "" "$unnumbered" )
network_get_subnets subnets "$unnumbered"
localip=$(ppp_select_ipaddr "$subnets")
[ -n "$localip" ] || {
proto_block_restart "$config"
return
}
}
[ -n "$keepalive" ] || keepalive="5 1"
local lcp_failure="${keepalive%%[, ]*}"
local lcp_interval="${keepalive##*[, ]}"
local lcp_adaptive="lcp-echo-adaptive"
[ "${lcp_failure:-0}" -lt 1 ] && lcp_failure=""
[ "$lcp_interval" != "$keepalive" ] || lcp_interval=5
[ "${keepalive_adaptive:-1}" -lt 1 ] && lcp_adaptive=""
[ -n "$connect" ] || json_get_var connect connect
[ -n "$disconnect" ] || json_get_var disconnect disconnect
proto_run_command "$config" /usr/sbin/pppd \
nodetach ipparam "$config" \
ifname "$pppname" \
${localip:+$localip:} \
${lcp_failure:+lcp-echo-interval $lcp_interval lcp-echo-failure $lcp_failure $lcp_adaptive} \
${ipv6:++ipv6} \
${ipv6:-noipv6} \
${autoipv6:+set AUTOIPV6=1} \
${ip6table:+set IP6TABLE=$ip6table} \
${peerdns:+set PEERDNS=$peerdns} \
nodefaultroute \
usepeerdns \
$demand $persist maxfail $maxfail \
${holdoff:+holdoff "$holdoff"} \
${username:+user "$username" password "$password"} \
${connect:+connect "$connect"} \
${disconnect:+disconnect "$disconnect"} \
ip-up-script /lib/netifd/ppp-up \
${ipv6:+ipv6-up-script /lib/netifd/ppp6-up} \
ip-down-script /lib/netifd/ppp-down \
${ipv6:+ipv6-down-script /lib/netifd/ppp-down} \
${mtu:+mtu $mtu mru $mtu} \
"$@" $pppd_options
}
ppp_generic_teardown() {
local interface="$1"
local errorstring=$(ppp_exitcode_tostring $ERROR)
case "$ERROR" in
0)
;;
2)
proto_notify_error "$interface" "$errorstring"
proto_block_restart "$interface"
;;
11|19)
json_get_var authfail authfail
proto_notify_error "$interface" "$errorstring"
if [ "${authfail:-0}" -gt 0 ]; then
proto_block_restart "$interface"
fi
;;
*)
proto_notify_error "$interface" "$errorstring"
;;
esac
proto_kill_command "$interface"
}
# PPP on serial device
proto_ppp_init_config() {
proto_config_add_string "device"
ppp_generic_init_config
no_device=1
available=1
lasterror=1
}
proto_ppp_setup() {
local config="$1"
json_get_var device device
ppp_generic_setup "$config" "$device"
}
proto_ppp_teardown() {
ppp_generic_teardown "$@"
}
proto_pppoe_init_config() {
ppp_generic_init_config
proto_config_add_string "ac"
proto_config_add_string "service"
proto_config_add_string "host_uniq"
proto_config_add_int "padi_attempts"
proto_config_add_int "padi_timeout"
lasterror=1
}
proto_pppoe_setup() {
local config="$1"
local iface="$2"
for module in slhc ppp_generic pppox pppoe; do
/sbin/insmod $module 2>&- >&-
done
json_get_var mtu mtu
mtu="${mtu:-1492}"
json_get_var ac ac
json_get_var service service
json_get_var host_uniq host_uniq
json_get_var padi_attempts padi_attempts
json_get_var padi_timeout padi_timeout
ppp_generic_setup "$config" \
plugin rp-pppoe.so \
${ac:+rp_pppoe_ac "$ac"} \
${service:+rp_pppoe_service "$service"} \
${host_uniq:+host-uniq "$host_uniq"} \
${padi_attempts:+pppoe-padi-attempts $padi_attempts} \
${padi_timeout:+pppoe-padi-timeout $padi_timeout} \
"nic-$iface"
}
proto_pppoe_teardown() {
ppp_generic_teardown "$@"
}
proto_pppoa_init_config() {
ppp_generic_init_config
proto_config_add_int "atmdev"
proto_config_add_int "vci"
proto_config_add_int "vpi"
proto_config_add_string "encaps"
no_device=1
available=1
lasterror=1
}
proto_pppoa_setup() {
local config="$1"
local iface="$2"
for module in slhc ppp_generic pppox pppoatm; do
/sbin/insmod $module 2>&- >&-
done
json_get_vars atmdev vci vpi encaps
case "$encaps" in
1|vc) encaps="vc-encaps" ;;
*) encaps="llc-encaps" ;;
esac
ppp_generic_setup "$config" \
plugin pppoatm.so \
${atmdev:+$atmdev.}${vpi:-8}.${vci:-35} \
${encaps}
}
proto_pppoa_teardown() {
ppp_generic_teardown "$@"
}
proto_pptp_init_config() {
ppp_generic_init_config
proto_config_add_string "server"
proto_config_add_string "interface"
available=1
no_device=1
lasterror=1
}
proto_pptp_setup() {
local config="$1"
local iface="$2"
local ip serv_addr server interface
json_get_vars interface server
[ -n "$server" ] && {
for ip in $(resolveip -t 5 "$server"); do
( proto_add_host_dependency "$config" "$ip" $interface )
serv_addr=1
done
}
[ -n "$serv_addr" ] || {
echo "Could not resolve server address"
sleep 5
proto_setup_failed "$config"
exit 1
}
local load
for module in slhc ppp_generic ppp_async ppp_mppe ip_gre gre pptp; do
grep -q "^$module " /proc/modules && continue
/sbin/insmod $module 2>&- >&-
load=1
done
[ "$load" = "1" ] && sleep 1
ppp_generic_setup "$config" \
plugin pptp.so \
pptp_server $server \
file /etc/ppp/options.pptp
}
proto_pptp_teardown() {
ppp_generic_teardown "$@"
}
[ -n "$INCLUDE_ONLY" ] || {
add_protocol ppp
[ -f /usr/lib/pppd/*/rp-pppoe.so ] && add_protocol pppoe
[ -f /usr/lib/pppd/*/pppoatm.so ] && add_protocol pppoa
[ -f /usr/lib/pppd/*/pptp.so ] && add_protocol pptp
}

View File

@ -1,13 +0,0 @@
Index: libiwinfo-2021-06-09-c0414642/iwinfo_lib.c
===================================================================
--- libiwinfo-2021-06-09-c0414642.orig/iwinfo_lib.c
+++ libiwinfo-2021-06-09-c0414642/iwinfo_lib.c
@@ -37,6 +37,8 @@ const char *IWINFO_KMGMT_NAMES[] = {
"NONE",
"802.1X",
"PSK",
+ "SAE",
+ "OWE",
};
const char *IWINFO_AUTH_NAMES[] = {

View File

@ -1,60 +0,0 @@
--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -41,6 +41,29 @@
#include "opkg_configure.h"
#include "xsystem.h"
+int exec_command(const char *command)
+{
+ opkg_msg(NOTICE, "Updating database.\n");
+ remove("/var/lock/opkg.lock");
+
+ FILE *fp;
+
+ fp = popen(command, "r");
+ if (fp == NULL) {
+ return -1;
+ }
+ pclose(fp);
+
+ fp = fopen("/var/lock/opkg.lock", "w+");
+ if (fp != NULL) {
+ fclose(fp);
+ }
+
+ opkg_msg(NOTICE, "Database update completed.\n");
+
+ return 0;
+}
+
static void print_pkg(pkg_t * pkg)
{
char *version = pkg_version_str_alloc(pkg);
@@ -200,7 +224,7 @@ static int opkg_update_cmd(int argc, cha
rmdir(tmp);
free(tmp);
free(lists_dir);
-
+ exec_command("update_plugins_db update");
return failures;
}
@@ -486,7 +510,8 @@ static int opkg_install_cmd(int argc, ch
err = -1;
write_status_files_if_changed();
-
+ if (err == 0)
+ exec_command("update_plugins_db install");
return err;
}
@@ -914,6 +939,8 @@ static int opkg_remove_cmd(int argc, cha
opkg_msg(NOTICE, "No packages removed.\n");
write_status_files_if_changed();
+ if (err == 0)
+ exec_command("update_plugins_db remove");
return err;
}

View File

@ -1,22 +0,0 @@
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
@@ -1151,7 +1151,7 @@ static int resolve_conffiles(pkg_t * pkg
char *new_conffile;
sprintf_alloc(&new_conffile, "%s-opkg",
root_filename);
- opkg_msg(ERROR,
+ opkg_msg(NOTICE,
"Existing conffile %s "
"is different from the conffile in the new package."
" The new conffile will be placed at %s.\n",
--- a/opkg-2021-06-13-1bf042dd/libopkg/pkg.c
+++ b/libopkg/pkg.c
@@ -1409,7 +1409,7 @@ int pkg_run_script(pkg_t * pkg, const ch
return 0;
}
- sprintf_alloc(&cmd, "%s %s", path, args);
+ sprintf_alloc(&cmd, "%s %s 2>&1", path, args);
free(path);
{
const char *argv[] = { "/bin/sh", "-c", cmd, NULL };

View File

@ -1,18 +0,0 @@
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "../../../arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts"
#include "qcom-ipq6018.dtsi"

View File

@ -1,18 +0,0 @@
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "../../../arm64/boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts"
#include "qcom-ipq6018.dtsi"

View File

@ -1,84 +0,0 @@
/dts-v1/;
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "qcom-ipq6018-gl-ax1800.dtsi"
/ {
model = "GL Technologies, Inc. AX1800";
compatible = "glinet,ax1800", "qcom,ipq6018-cp03", "qcom,ipq6018";
aliases {
ethernet3 = "/soc/dp4";
ethernet4 = "/soc/dp5";
};
};
&gl_hw {
model = "ax1800";
lan = "eth1 eth2 eth3 eth4";
usb-port = "1-1";
};
&mdio0 {
phy3: ethernet-phy@3 {
reg = <3>;
};
phy4: ethernet-phy@4 {
reg = <4>;
};
};
&ess0 {
switch_lan_bmp = <0x3c>; /* lan port bitmap */
qcom,port_phyinfo {
port@3 {
port_id = <4>;
phy_address = <3>;
};
port@4 {
port_id = <5>;
phy_address = <4>;
};
};
};
&soc {
dp4 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <4>;
reg = <0x3a001600 0x200>;
qcom,mactype = <0>;
local-mac-address = [000000000000];
qcom,link-poll = <1>;
qcom,phy-mdio-addr = <3>;
phy-mode = "sgmii";
};
dp5 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <5>;
reg = <0x3a001800 0x200>;
qcom,mactype = <0>;
local-mac-address = [000000000000];
qcom,link-poll = <1>;
qcom,phy-mdio-addr = <4>;
phy-mode = "sgmii";
};
};

View File

@ -1,395 +0,0 @@
/*
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "qcom-ipq6018.dtsi"
#include <dt-bindings/input/input.h>
/ {
#address-cells = <0x2>;
#size-cells = <0x2>;
interrupt-parent = <&intc>;
qcom,msm-id = <0x1A5 0x0>;
aliases {
ethernet0 = "/soc/dp1";
ethernet1 = "/soc/dp2";
ethernet2 = "/soc/dp3";
//led-boot = &led_run;
//led-failsafe = &led_run;
//led-running = &led_run;
//led-upgrade = &led_run;
};
chosen {
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
bootargs-append = " swiotlb=1 coherent_pool=2M";
};
gl_hw: gl_hw {
compatible = "gl-hw-info";
#address-cells = <1>;
#size-cells = <1>;
model = "axt1800";
wan = "eth0";
reset-button = "gpio-50";
usb-port = "1-1";
flash_size = <128>;
temperature = "/sys/devices/virtual/thermal/thermal_zone0/temp";
factory_data {
device_mac = "0:ART", "0x0";
device_ddns = "0:ART", "0x20";
device_sn_bak = "0:ART", "0x30";
device_sn = "0:ART", "0x40";
country_code = "0:ART", "0x98";
};
};
};
&tlmm {
uart_pins: uart_pins {
mux {
pins = "gpio44", "gpio45";
function = "blsp2_uart";
drive-strength = <8>;
bias-pull-down;
};
};
qpic_pins: qpic_pins {
data_0 {
pins = "gpio15";
function = "qpic_pad0";
drive-strength = <8>;
bias-pull-down;
};
data_1 {
pins = "gpio12";
function = "qpic_pad1";
drive-strength = <8>;
bias-pull-down;
};
data_2 {
pins = "gpio13";
function = "qpic_pad2";
drive-strength = <8>;
bias-pull-down;
};
data_3 {
pins = "gpio14";
function = "qpic_pad3";
drive-strength = <8>;
bias-pull-down;
};
data_4 {
pins = "gpio5";
function = "qpic_pad4";
drive-strength = <8>;
bias-pull-down;
};
data_5 {
pins = "gpio6";
function = "qpic_pad5";
drive-strength = <8>;
bias-pull-down;
};
data_6 {
pins = "gpio7";
function = "qpic_pad6";
drive-strength = <8>;
bias-pull-down;
};
data_7 {
pins = "gpio8";
function = "qpic_pad7";
drive-strength = <8>;
bias-pull-down;
};
qpic_pad {
pins = "gpio1", "gpio3", "gpio4",
"gpio10", "gpio11", "gpio17";
function = "qpic_pad";
drive-strength = <8>;
bias-pull-down;
};
};
button_pins: button_pins {
switch_button {
pins = "gpio9";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
reset_button {
pins = "gpio18";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
};
mdio_pins: mdio_pinmux {
mux_0 {
pins = "gpio64";
function = "mdc";
drive-strength = <8>;
bias-pull-up;
};
mux_1 {
pins = "gpio65";
function = "mdio";
drive-strength = <8>;
bias-pull-up;
};
mux_2 {
pins = "gpio74";
function = "gpio";
bias-pull-up;
};
};
leds_pins: leds_pins {
white {
pins = "gpio35";
function = "gpio";
drive-strength = <8>;
bias-pull-down;
};
blue {
pins = "gpio37";
function = "gpio";
drive-strength = <8>;
bias-pull-down;
};
};
usb_pins: usb_pins {
usb_pwr {
pins = "gpio0";
function = "gpio";
bias-pull-up;
output-high;
};
};
};
&soc {
mdio0: mdio@90000 {
pinctrl-0 = <&mdio_pins>;
pinctrl-names = "default";
phy-reset-gpio = <&tlmm 74 GPIO_ACTIVE_HIGH>;
status = "ok";
phy0: ethernet-phy@0 {
reg = <0>;
};
phy1: ethernet-phy@1 {
reg = <1>;
};
phy2: ethernet-phy@2 {
reg = <2>;
};
};
ess0: ess-switch@3a000000 {
switch_cpu_bmp = <0x1>; /* cpu port bitmap */
switch_lan_bmp = <0x0c>; /* lan port bitmap */
switch_wan_bmp = <0x02>; /* wan port bitmap */
switch_inner_bmp = <0xc0>; /*inner port bitmap*/
switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/
switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/
switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/
qcom,port_phyinfo {
port@0 {
port_id = <1>;
phy_address = <0>;
};
port@1 {
port_id = <2>;
phy_address = <1>;
};
port@2 {
port_id = <3>;
phy_address = <2>;
};
};
};
dp1 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <1>;
reg = <0x3a001000 0x200>;
qcom,mactype = <0>;
local-mac-address = [000000000000];
qcom,link-poll = <1>;
qcom,phy-mdio-addr = <0>;
phy-mode = "sgmii";
};
dp2 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <2>;
reg = <0x3a001200 0x200>;
qcom,mactype = <0>;
local-mac-address = [000000000000];
qcom,link-poll = <1>;
qcom,phy-mdio-addr = <1>;
phy-mode = "sgmii";
};
dp3 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <3>;
reg = <0x3a001400 0x200>;
qcom,mactype = <0>;
local-mac-address = [000000000000];
qcom,link-poll = <1>;
qcom,phy-mdio-addr = <2>;
phy-mode = "sgmii";
};
leds {
compatible = "gpio-leds";
pinctrl-0 = <&leds_pins>;
pinctrl-names = "default";
led_run: white {
label = "white_led";
gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
blue {
label = "blue_led";
gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
default-state = "on";
};
};
gpio_keys {
compatible = "gpio-keys";
pinctrl-0 = <&button_pins>;
pinctrl-names = "default";
switch {
label = "switch";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&tlmm 9 GPIO_ACTIVE_HIGH>;
linux,input-type = <1>;
debounce-interval = <60>;
};
reset {
label = "reset";
linux,code = <KEY_RESTART>;
gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
debounce-interval = <60>;
};
};
gpio-export {
compatible = "gpio-export";
pinctrl-0 = <&usb_pins>;
pinctrl-names = "default";
usb_power {
gpio-export,name = "usb_power";
gpio-export,output = <1>;
gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
};
};
};
&blsp1_uart3 {
pinctrl-0 = <&uart_pins>;
pinctrl-names = "default";
status = "ok";
};
&qpic_bam {
status = "ok";
};
&nand {
pinctrl-0 = <&qpic_pins>;
pinctrl-names = "default";
status = "ok";
};
&ssphy_0 {
status = "ok";
};
&qusb_phy_0 {
status = "ok";
};
&usb3 {
pinctrl-0 = <&usb_pins>;
pinctrl-names = "default";
status = "ok";
};
&nss_crypto {
status = "ok";
};
&q6_region {
reg = <0x0 0x4ab00000 0x0 0x05500000>;
};
&CPU0 {
operating-points = <
/* kHz uV (fixed) */
864000 1100000
1056000 1100000
1200000 1100000
>;
clock-latency = <200000>;
};
&CPU1 {
operating-points = <
/* kHz uV (fixed) */
864000 1100000
1056000 1100000
1200000 1100000
>;
clock-latency = <200000>;
};
&CPU2 {
operating-points = <
/* kHz uV (fixed) */
864000 1100000
1056000 1100000
1200000 1100000
>;
clock-latency = <200000>;
};
&CPU3 {
operating-points = <
/* kHz uV (fixed) */
864000 1100000
1056000 1100000
1200000 1100000
>;
clock-latency = <200000>;
};

View File

@ -1,122 +0,0 @@
/dts-v1/;
/*
* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "qcom-ipq6018-gl-ax1800.dtsi"
/ {
model = "GL Technologies, Inc. AXT1800";
compatible = "glinet,axt1800", "qcom,ipq6018-cp03", "qcom,ipq6018";
aliases {
sdhc0 = &sdhc_2;
};
gl_fan {
compatible = "gl-fan";
#address-cells = <1>;
#size-cells = <0>;
fan_speed_gpio = <31>;
};
};
&gl_hw {
model = "axt1800";
lan = "eth1 eth2";
usb-port = "1-1";
fan = "pwmchip0";
switch-button = "gpio-16";
dfs;
};
&tlmm {
sd_pins: sd_pins {
mux_0 {
pins = "gpio62";
function = "sd_card";
bias-pull-up;
};
mux_1 {
pins = "gpio66";
function = "gpio";
bias-pull-up;
};
};
pwm_pins: pwm_pinmux {
mux {
pins = "gpio30";
function = "pwm13";
drive-strength = <8>;
};
};
fan_pins: fan_pins {
pwr {
pins = "gpio29";
function = "gpio";
bias-pull-up;
output-high;
};
speed {
pins = "gpio31";
function = "gpio";
drive-strength = <8>;
bias-pull-down;
};
};
};
&soc {
pwm:pwm {
#pwm-cells = <2>;
pinctrl-0 = <&pwm_pins>;
pinctrl-names = "default";
used-pwm-indices = <0>, <1>, <0>, <0>;
status = "ok";
};
fan0: pwm-fan {
compatible = "pwm-fan";
pinctrl-0 = <&fan_pins>;
pinctrl-names = "default";
cooling-min-state = <0>;
cooling-max-state = <255>;
#cooling-cells = <2>;
pwms = <&pwm 1 40000 0>;
cooling-levels = <0 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255>;
};
};
&sdhc_2 {
pinctrl-0 = <&sd_pins>;
pinctrl-names = "default";
cd-gpios = <&tlmm 62 1>;
sd-ldo-gpios = <&tlmm 66 1>;
status = "ok";
};

View File

@ -1,13 +0,0 @@
Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/net/ipv4/Kconfig
===================================================================
--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/net/ipv4/Kconfig
+++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/net/ipv4/Kconfig
@@ -308,7 +308,7 @@ config NET_IPVTI
on top.
config NET_UDP_TUNNEL
- tristate
+ tristate "udp tunnel"
select NET_IP_TUNNEL
default n

View File

@ -1,193 +0,0 @@
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -70,7 +70,7 @@
#define IPHETH_USBINTF_SUBCLASS 253
#define IPHETH_USBINTF_PROTO 1
-#define IPHETH_BUF_SIZE 1516
+#define IPHETH_BUF_SIZE 1514
#define IPHETH_IP_ALIGN 2 /* padding at front of URB */
#define IPHETH_TX_TIMEOUT (5 * HZ)
@@ -87,7 +87,7 @@
#define IPHETH_CARRIER_CHECK_TIMEOUT round_jiffies_relative(1 * HZ)
#define IPHETH_CARRIER_ON 0x04
-static struct usb_device_id ipheth_table[] = {
+static const struct usb_device_id ipheth_table[] = {
{ USB_DEVICE_AND_INTERFACE_INFO(
USB_VENDOR_APPLE, USB_PRODUCT_IPHONE,
IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
@@ -140,7 +140,6 @@ struct ipheth_device {
struct usb_device *udev;
struct usb_interface *intf;
struct net_device *net;
- struct sk_buff *tx_skb;
struct urb *tx_urb;
struct urb *rx_urb;
unsigned char *tx_buf;
@@ -149,6 +148,8 @@ struct ipheth_device {
u8 bulk_in;
u8 bulk_out;
struct delayed_work carrier_work;
+ bool confirmed_pairing;
+ int tx_in_use;
};
static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags);
@@ -229,6 +230,7 @@ static void ipheth_rcvbulk_callback(stru
case -ENOENT:
case -ECONNRESET:
case -ESHUTDOWN:
+ case -EPROTO:
return;
case 0:
break;
@@ -253,13 +255,13 @@ static void ipheth_rcvbulk_callback(stru
return;
}
- memcpy(skb_put(skb, len), buf, len);
+ skb_put_data(skb, buf, len);
skb->dev = dev->net;
skb->protocol = eth_type_trans(skb, dev->net);
dev->net->stats.rx_packets++;
dev->net->stats.rx_bytes += len;
-
+ dev->confirmed_pairing = true;
netif_rx(skb);
ipheth_rx_submit(dev, GFP_ATOMIC);
}
@@ -280,15 +282,26 @@ static void ipheth_sndbulk_callback(stru
dev_err(&dev->intf->dev, "%s: urb status: %d\n",
__func__, status);
- dev_kfree_skb_irq(dev->tx_skb);
- netif_wake_queue(dev->net);
+ dev->tx_in_use = false;
+
+ if (status == 0)
+ netif_wake_queue(dev->net);
+ else
+ // on URB error, trigger immediate poll
+ schedule_delayed_work(&dev->carrier_work, 0);
}
static int ipheth_carrier_set(struct ipheth_device *dev)
{
- struct usb_device *udev = dev->udev;
+ struct usb_device *udev;
int retval;
+ if (!dev)
+ return 0;
+ if (!dev->confirmed_pairing)
+ return 0;
+
+ udev = dev->udev;
retval = usb_control_msg(udev,
usb_rcvctrlpipe(udev, IPHETH_CTRL_ENDP),
IPHETH_CMD_CARRIER_CHECK, /* request */
@@ -303,11 +316,14 @@ static int ipheth_carrier_set(struct iph
return retval;
}
- if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON)
+ if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON) {
netif_carrier_on(dev->net);
- else
+ if (dev->tx_urb->status != -EINPROGRESS && dev->tx_in_use == false)
+ netif_wake_queue(dev->net);
+ } else {
netif_carrier_off(dev->net);
-
+ netif_stop_queue(dev->net);
+ }
return 0;
}
@@ -376,6 +392,8 @@ static int ipheth_open(struct net_device
struct usb_device *udev = dev->udev;
int retval = 0;
+ dev->tx_in_use = false;
+
usb_set_interface(udev, IPHETH_INTFNUM, IPHETH_ALT_INTFNUM);
retval = ipheth_carrier_set(dev);
@@ -387,7 +405,6 @@ static int ipheth_open(struct net_device
return retval;
schedule_delayed_work(&dev->carrier_work, IPHETH_CARRIER_CHECK_TIMEOUT);
- netif_start_queue(net);
return retval;
}
@@ -410,10 +427,18 @@ static int ipheth_tx(struct sk_buff *skb
if (skb->len > IPHETH_BUF_SIZE) {
WARN(1, "%s: skb too large: %d bytes\n", __func__, skb->len);
dev->net->stats.tx_dropped++;
- dev_kfree_skb_irq(skb);
+ dev_kfree_skb_any(skb);
+ return NETDEV_TX_OK;
+ }
+
+ if (dev->tx_in_use) {
+ dev->net->stats.tx_dropped++;
+ dev_kfree_skb_any(skb);
return NETDEV_TX_OK;
}
+ dev->tx_in_use = true;
+
memcpy(dev->tx_buf, skb->data, skb->len);
if (skb->len < IPHETH_BUF_SIZE)
memset(dev->tx_buf + skb->len, 0, IPHETH_BUF_SIZE - skb->len);
@@ -425,18 +450,22 @@ static int ipheth_tx(struct sk_buff *skb
dev);
dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+ netif_stop_queue(net);
retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC);
if (retval) {
dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n",
__func__, retval);
dev->net->stats.tx_errors++;
- dev_kfree_skb_irq(skb);
+ dev_kfree_skb_any(skb);
+ netif_wake_queue(net);
+ if (atomic_read(&dev->tx_urb->use_count) != 0) {
+ atomic_dec(&dev->tx_urb->use_count);
+ }
+ dev->tx_in_use = false;
} else {
- dev->tx_skb = skb;
-
dev->net->stats.tx_packets++;
dev->net->stats.tx_bytes += skb->len;
- netif_stop_queue(net);
+ dev_consume_skb_any(skb);
}
return NETDEV_TX_OK;
@@ -491,7 +520,7 @@ static int ipheth_probe(struct usb_inter
dev->udev = udev;
dev->net = netdev;
dev->intf = intf;
-
+ dev->confirmed_pairing = false;
/* Set up endpoints */
hintf = usb_altnum_to_altsetting(intf, IPHETH_ALT_INTFNUM);
if (hintf == NULL) {
@@ -542,7 +571,9 @@ static int ipheth_probe(struct usb_inter
retval = -EIO;
goto err_register_netdev;
}
-
+ // carrier down and transmit queues stopped until packet from device
+ netif_carrier_off(netdev);
+ netif_tx_stop_all_queues(netdev);
dev_info(&intf->dev, "Apple iPhone USB Ethernet device attached\n");
return 0;

View File

@ -1,56 +0,0 @@
--- a/drivers/mtd/mtdoops.c
+++ b/drivers/mtd/mtdoops.c
@@ -220,8 +220,26 @@ static void mtdoops_write(struct mtdoops
hdr[1] = MTDOOPS_KERNMSG_MAGIC;
if (panic) {
- ret = mtd_panic_write(mtd, cxt->nextpage * record_size,
- record_size, &retlen, cxt->oops_buf);
+ int count = record_size / 0x800;
+ int i = 0;
+ const u_char * p = cxt->oops_buf;
+ while(count--) {
+ ret = mtd_write(mtd, cxt->nextpage * record_size + i * 0x800,
+ record_size - i * 0x800, &retlen, p);
+ if (ret == 0) {
+ break;
+ }
+ else {
+ if ((p + 0x800) != NULL) {
+ p = p + 0x800;
+ i++;
+ }
+ else {
+ break;
+ }
+ }
+ }
+
if (ret == -EOPNOTSUPP) {
printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n");
return;
@@ -230,9 +248,11 @@ static void mtdoops_write(struct mtdoops
ret = mtd_write(mtd, cxt->nextpage * record_size,
record_size, &retlen, cxt->oops_buf);
+#if 0
if (retlen != record_size || ret < 0)
printk(KERN_ERR "mtdoops: write failure at %ld (%td of %ld written), error %d\n",
cxt->nextpage * record_size, retlen, record_size, ret);
+#endif
mark_page_used(cxt, cxt->nextpage);
memset(cxt->oops_buf, 0xff, record_size);
@@ -241,10 +261,12 @@ static void mtdoops_write(struct mtdoops
static void mtdoops_workfunc_write(struct work_struct *work)
{
+#if 0
struct mtdoops_context *cxt =
container_of(work, struct mtdoops_context, work_write);
mtdoops_write(cxt, 0);
+#endif
}
static void find_next_position(struct mtdoops_context *cxt)

View File

@ -1,319 +0,0 @@
--- linux-4.4.60.orig/drivers/net/usb/qmi_wwan.c
+++ linux-4.4.60/drivers/net/usb/qmi_wwan.c
@@ -58,6 +58,24 @@ static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3};
static const u8 buggy_fw_addr[ETH_ALEN] = {0x00, 0xa0, 0xc6, 0x00, 0x00, 0x00};
+#if 1 //Added by Quectel
+#include <linux/etherdevice.h>
+struct sk_buff *qmi_wwan_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
+{
+ if (dev->udev->descriptor.idVendor != cpu_to_le16(0x2C7C))
+ return skb;
+ // Skip Ethernet header from message
+ if (skb_pull(skb, ETH_HLEN)) {
+ return skb;
+ } else {
+ dev_err(&dev->intf->dev, "Packet Dropped ");
+ }
+ // Filter the packet out, release it
+ dev_kfree_skb_any(skb);
+ return NULL;
+}
+#endif
+
/* Make up an ethernet header if the packet doesn't have one.
*
* A firmware bug common among several devices cause them to send raw
@@ -294,6 +312,21 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
dev->net->dev_addr[0] &= 0xbf; /* clear "IP" bit */
}
dev->net->netdev_ops = &qmi_wwan_netdev_ops;
+ //dev->net->sysfs_groups[0] = &qmi_wwan_sysfs_attr_group;
+#if 1 //Added by Quectel
+ if (dev->udev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
+ dev_info(&intf->dev, "QuectelEC25&EC21&EG91&EG95&EG06&EP06&EM06&BG96&AG35 work on RawIP mode\n");
+ dev->net->flags |= IFF_NOARP;
+ usb_control_msg(
+ interface_to_usbdev(intf),
+ usb_sndctrlpipe(interface_to_usbdev(intf), 0),
+ 0x22, //USB_CDC_REQ_SET_CONTROL_LINE_STATE
+ 0x21, //USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE
+ 1, //active CDC DTR
+ intf->cur_altsetting->desc.bInterfaceNumber,
+ NULL, 0, 100);
+ }
+#endif
err:
return status;
}
@@ -378,7 +411,11 @@ static const struct driver_info qmi_wwan_info = {
.bind = qmi_wwan_bind,
.unbind = qmi_wwan_unbind,
.manage_power = qmi_wwan_manage_power,
- .rx_fixup = qmi_wwan_rx_fixup,
+ //.rx_fixup = qmi_wwan_rx_fixup,
+ #if 1 //Added by Quectel
+ .tx_fixup = qmi_wwan_tx_fixup,
+ .rx_fixup = qmi_wwan_rx_fixup,
+ #endif
};
#define HUAWEI_VENDOR_ID 0x12D1
@@ -397,6 +434,18 @@ static const struct driver_info qmi_wwan_info = {
QMI_FIXED_INTF(vend, prod, 0)
static const struct usb_device_id products[] = {
+#if 1 //Added by Quectel
+ { QMI_FIXED_INTF(0x05C6, 0x9003, 4) }, /* Quectel UC20 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0125, 4) }, /* Quectel EC25 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0121, 4) }, /* Quectel EC21 */
+ { QMI_FIXED_INTF(0x05C6, 0x9215, 4) }, /* Quectel EC20 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0191, 4) }, /* Quectel EG91 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0195, 4) }, /* Quectel EG95 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0306, 4) }, /* Quectel EG06/EP06/EM06 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0296, 4) }, /* Quectel BG96 */
+ { QMI_FIXED_INTF(0x2C7C, 0x0435, 4) }, /* Quectel AG35 */
+#endif
+
/* 1. CDC ECM like devices match on the control interface */
{ /* Huawei E392, E398 and possibly others sharing both device id and more... */
USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, USB_CLASS_VENDOR_SPEC, 1, 9),
@@ -753,6 +802,8 @@ static const struct usb_device_id products[] = {
{QMI_FIXED_INTF(0x413c, 0x81a9, 8)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */
{QMI_FIXED_INTF(0x413c, 0x81b1, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card */
{QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */
+ {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
+ {QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
{QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
/* 4. Gobi 1000 devices */
@@ -783,7 +834,7 @@ static const struct usb_device_id products[] = {
{QMI_GOBI_DEVICE(0x05c6, 0x9225)}, /* Sony Gobi 2000 Modem device (N0279, VU730) */
{QMI_GOBI_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
{QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
- {QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
+// {QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
{QMI_FIXED_INTF(0x05c6, 0x9215, 4)}, /* Quectel EC20 Mini PCIe */
{QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
{QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
--- linux-4.4.60.orig/drivers/usb/serial/option.c
+++ linux-4.4.60/drivers/usb/serial/option.c
@@ -241,6 +241,7 @@ static void option_instat_callback(struct urb *urb);
/* These Quectel products use Quectel's vendor ID */
#define QUECTEL_PRODUCT_EC21 0x0121
#define QUECTEL_PRODUCT_EC25 0x0125
+#define QUECTEL_PRODUCT_EP06 0x0306
#define CMOTECH_VENDOR_ID 0x16d8
#define CMOTECH_PRODUCT_6001 0x6001
@@ -541,6 +542,23 @@ static void option_instat_callback(struct urb *urb);
#define WETELECOM_PRODUCT_6802 0x6802
#define WETELECOM_PRODUCT_WMD300 0x6803
+#define LONGSUNG_PRODUCT_U9300C 0x9b3c
+
+/* FORGE PRODUCT */
+#define FORGE_VENDOR_ID 0x05c6
+
+#define FORGE_PRODUCT_SLM750 0xf601
+
+/* NODECOM PRODUCT */
+#define NODECOM_VENDOR_ID 0x1508
+
+#define NODECOM_PRODUCT_NL660 0x1001
+
+/* NEOWAY PRODUCT */
+#define NEOWAY_VENDOR_ID 0x2949
+
+#define NEOWAY_PRODUCT_N720 0x8243
+
struct option_blacklist_info {
/* bitmask of interface numbers blacklisted for send_setup */
const unsigned long sendsetup;
@@ -670,6 +688,27 @@ static const struct option_blacklist_info cinterion_rmnet2_blacklist = {
};
static const struct usb_device_id option_ids[] = {
+#if 1 //Added by Quectel
+ { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
+ { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
+ { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25 */
+ { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
+ { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */
+ { USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
+ { USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
+ { USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
+ { USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
+ { USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
+ { USB_DEVICE(0x2C7C, 0x6026) }, /* Quectel AG35 */
+#endif
+ { USB_DEVICE(0x19d2, 0x0536) },/* MZ386 */
+ { USB_DEVICE(0x19d2, 0x0117) },
+ { USB_DEVICE(0x19d2, 0x0199) },
+ { USB_DEVICE(0x19d2, 0x1476) },
+ { USB_DEVICE(LONGCHEER_VENDOR_ID, LONGSUNG_PRODUCT_U9300C) },
+ { USB_DEVICE(FORGE_VENDOR_ID, FORGE_PRODUCT_SLM750) },
+ { USB_DEVICE(NODECOM_VENDOR_ID, NODECOM_PRODUCT_NL660) },
+ { USB_DEVICE(NEOWAY_VENDOR_ID, NEOWAY_PRODUCT_N720) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
@@ -1178,6 +1217,8 @@ static const struct usb_device_id option_ids[] = {
.driver_info = (kernel_ulong_t)&net_intf4_blacklist },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),
.driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),
@@ -2057,6 +2098,9 @@ static struct usb_serial_driver option_1port_device = {
#ifdef CONFIG_PM
.suspend = usb_wwan_suspend,
.resume = usb_wwan_resume,
+#if 1 //Added by Quectel
+ .reset_resume = usb_wwan_resume,
+#endif
#endif
};
@@ -2072,6 +2116,8 @@ static int option_probe(struct usb_serial *serial,
struct usb_interface_descriptor *iface_desc =
&serial->interface->cur_altsetting->desc;
struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;
+
+ //unsigned long device_flags = id->driver_info;
const struct option_blacklist_info *blacklist;
/* Never bind to the CD-Rom emulation interface */
@@ -2092,13 +2138,91 @@ static int option_probe(struct usb_serial *serial,
* a separate module.
*/
if (dev_desc->idVendor == cpu_to_le16(SAMSUNG_VENDOR_ID) &&
- dev_desc->idProduct == cpu_to_le16(SAMSUNG_PRODUCT_GT_B3730) &&
- iface_desc->bInterfaceClass != USB_CLASS_CDC_DATA)
+ dev_desc->idProduct == cpu_to_le16(SAMSUNG_PRODUCT_GT_B3730) &&
+ iface_desc->bInterfaceClass != USB_CLASS_CDC_DATA)
return -ENODEV;
/* Store the blacklist info so we can use it during attach. */
- usb_set_serial_data(serial, (void *)blacklist);
-
+ //usb_set_serial_data(serial, (void *)blacklist);
+#if 1 //Added by Quectel
+ //Quectel UC20's interface 4 can be used as USB network device
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && \
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9003) \
+ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
+ return -ENODEV;
+ //Quectel EC20's interface 4 can be used as USB network device
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && \
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9215) \
+ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
+ return -ENODEV;
+ //Quectel EC25&EC21&EG91&EG95&EG06&EP06&EM06&BG96/AG35's interface 4 can be used as USB network device
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) && \
+ serial->dev->descriptor.idProduct != cpu_to_le16(0x6026) \
+ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
+ return -ENODEV;
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) && \
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x6026) \
+ && serial->interface->cur_altsetting->desc.bInterfaceNumber<= 1)
+ return -ENODEV;
+#endif
+#if 0 //Added by Quectel
+ //For USB Auto Suspend
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9090)) {
+ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
+ usb_enable_autosuspend(serial->dev);
+ }
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)) {
+ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
+ usb_enable_autosuspend(serial->dev);
+ }
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)) {
+ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
+ usb_set_serial_data(serial, (void *)device_flags);
+ usb_enable_autosuspend(serial->dev);
+ }
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) &&
+ serial->dev->descriptor.idProduct != cpu_to_le16(0x0306)) {
+ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
+ usb_enable_autosuspend(serial->dev);
+ }
+#endif
+#if 0 //Added by Quectel
+ //For USB Remote Wakeup
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9090)) {
+ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
+ }
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)) {
+ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
+ }
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)) {
+ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
+ }
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
+ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
+ }
+#endif
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x1476) &&
+ serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
+ return -ENODEV;
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x1476) &&
+ serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
+ return -ENODEV;
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x1509) &&
+ serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
+ return -ENODEV;
+ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
+ serial->dev->descriptor.idProduct == cpu_to_le16(0x1509) &&
+ serial->interface->cur_altsetting->desc. bInterfaceNumber == 5)
+ return -ENODEV;
return 0;
}
--- linux-4.4.60.orig/drivers/usb/serial/qcserial.c
+++ linux-4.4.60/drivers/usb/serial/qcserial.c
@@ -92,7 +92,7 @@ static const struct usb_device_id id_table[] = {
{USB_DEVICE(0x03f0, 0x241d)}, /* HP Gobi 2000 QDL device (VP412) */
{USB_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
{USB_DEVICE(0x05c6, 0x9214)}, /* Acer Gobi 2000 QDL device (VP413) */
- {USB_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
+// {USB_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
{USB_DEVICE(0x05c6, 0x9264)}, /* Asus Gobi 2000 QDL device (VR305) */
{USB_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
{USB_DEVICE(0x05c6, 0x9234)}, /* Top Global Gobi 2000 QDL device (VR306) */
--- linux-4.4.60.orig/drivers/usb/serial/usb_wwan.c
+++ linux-4.4.60/drivers/usb/serial/usb_wwan.c
@@ -504,7 +504,19 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
usb_fill_bulk_urb(urb, serial->dev,
usb_sndbulkpipe(serial->dev, endpoint) | dir,
buf, len, callback, ctx);
-
+#if 1 //Added by Quectel for zero packet
+ if (dir == USB_DIR_OUT) {
+ struct usb_device_descriptor *desc = &serial->dev->descriptor;
+ if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090))
+ urb->transfer_flags |= URB_ZERO_PACKET;
+ if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003))
+ urb->transfer_flags |= URB_ZERO_PACKET;
+ if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215))
+ urb->transfer_flags |= URB_ZERO_PACKET;
+ if (desc->idVendor == cpu_to_le16(0x2C7C))
+ urb->transfer_flags |= URB_ZERO_PACKET;
+ }
+#endif
return urb;
}

View File

@ -1,136 +0,0 @@
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
@@ -23,6 +23,8 @@
#include <linux/pinctrl/pinctrl.h>
#include <linux/slab.h>
#include <linux/gpio/machine.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
#include "gpiolib.h"
@@ -450,3 +452,68 @@ void of_gpiochip_remove(struct gpio_chip
gpiochip_remove_pin_ranges(chip);
of_node_put(chip->of_node);
}
+
+static struct of_device_id gpio_export_ids[] = {
+ { .compatible = "gpio-export" },
+ { /* sentinel */ }
+};
+
+static int of_gpio_export_probe(struct platform_device *pdev)
+{
+ struct device_node *np = pdev->dev.of_node;
+ struct device_node *cnp;
+ u32 val;
+ int nb = 0;
+
+ for_each_child_of_node(np, cnp) {
+ const char *name = NULL;
+ int gpio;
+ bool dmc;
+ int max_gpio = 1;
+ int i;
+
+ of_property_read_string(cnp, "gpio-export,name", &name);
+
+ if (!name)
+ max_gpio = of_gpio_count(cnp);
+
+ for (i = 0; i < max_gpio; i++) {
+ unsigned flags = 0;
+ enum of_gpio_flags of_flags;
+
+ gpio = of_get_gpio_flags(cnp, i, &of_flags);
+ if (!gpio_is_valid(gpio))
+ return gpio;
+
+ if (of_flags == OF_GPIO_ACTIVE_LOW)
+ flags |= GPIOF_ACTIVE_LOW;
+
+ if (!of_property_read_u32(cnp, "gpio-export,output", &val))
+ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
+ else
+ flags |= GPIOF_IN;
+
+ if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np)))
+ continue;
+
+ dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
+ gpio_export_with_name(gpio, dmc, name);
+ nb++;
+ }
+ }
+
+ dev_info(&pdev->dev, "%d gpio(s) exported\n", nb);
+
+ return 0;
+}
+
+static struct platform_driver gpio_export_driver = {
+ .driver = {
+ .name = "gpio-export",
+ .owner = THIS_MODULE,
+ .of_match_table = of_match_ptr(gpio_export_ids),
+ },
+ .probe = of_gpio_export_probe,
+};
+
+module_platform_driver(gpio_export_driver);
--- a/drivers/gpio/gpiolib-sysfs.c
+++ b/drivers/gpio/gpiolib-sysfs.c
@@ -2,6 +2,7 @@
#include <linux/mutex.h>
#include <linux/device.h>
#include <linux/sysfs.h>
+#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio/driver.h>
#include <linux/interrupt.h>
@@ -544,7 +545,7 @@ static struct class gpio_class = {
*
* Returns zero on success, else an error.
*/
-int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name)
{
struct gpio_chip *chip;
struct gpiod_data *data;
@@ -604,6 +605,8 @@ int gpiod_export(struct gpio_desc *desc,
offset = gpio_chip_hwgpio(desc);
if (chip->names && chip->names[offset])
ioname = chip->names[offset];
+ if (name)
+ ioname = name;
dev = device_create_with_groups(&gpio_class, chip->dev,
MKDEV(0, 0), data, gpio_groups,
@@ -625,6 +628,12 @@ err_unlock:
gpiod_dbg(desc, "%s: status %d\n", __func__, status);
return status;
}
+EXPORT_SYMBOL_GPL(__gpiod_export);
+
+int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
+{
+ return __gpiod_export(desc, direction_may_change, NULL);
+}
EXPORT_SYMBOL_GPL(gpiod_export);
static int match_export(struct device *dev, const void *desc)
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -122,6 +122,12 @@ static inline int gpio_export(unsigned g
return gpiod_export(gpio_to_desc(gpio), direction_may_change);
}
+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
+static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
+{
+ return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
+}
+
static inline int gpio_export_link(struct device *dev, const char *name,
unsigned gpio)
{

View File

@ -1,49 +0,0 @@
Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/cdc_ether.c
===================================================================
--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/net/usb/cdc_ether.c
+++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/cdc_ether.c
@@ -54,11 +54,19 @@ static int is_wireless_rndis(struct usb_
desc->bInterfaceProtocol == 3);
}
+static int is_novatel_rndis(struct usb_interface_descriptor *desc)
+{
+ return (desc->bInterfaceClass == USB_CLASS_MISC &&
+ desc->bInterfaceSubClass == 4 &&
+ desc->bInterfaceProtocol == 1);
+}
+
#else
#define is_rndis(desc) 0
#define is_activesync(desc) 0
#define is_wireless_rndis(desc) 0
+#define is_novatel_rndis(desc) 0
#endif
@@ -150,7 +158,8 @@ int usbnet_generic_cdc_bind(struct usbne
*/
rndis = (is_rndis(&intf->cur_altsetting->desc) ||
is_activesync(&intf->cur_altsetting->desc) ||
- is_wireless_rndis(&intf->cur_altsetting->desc));
+ is_wireless_rndis(&intf->cur_altsetting->desc) ||
+ is_novatel_rndis(&intf->cur_altsetting->desc));
memset(info, 0, sizeof(*info));
info->control = intf;
Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/rndis_host.c
===================================================================
--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/net/usb/rndis_host.c
+++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/rndis_host.c
@@ -627,6 +627,10 @@ static const struct usb_device_id produc
/* RNDIS for tethering */
USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
.driver_info = (unsigned long) &rndis_info,
+}, {
+ /* Novatel Verizon USB730L */
+ USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1),
+ .driver_info = (unsigned long) &rndis_info,
},
{ }, // END
};

File diff suppressed because it is too large Load Diff

View File

@ -1,51 +0,0 @@
From 11163887a70eb3a5e5a4ece4bbec1a63d1ea4107 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Thu, 20 Jan 2022 17:56:32 +0800
Subject: [PATCH] bdf: add bdf for gl-axt1800
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
feeds/wifi-ax/ath11k-wifi/Makefile | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/feeds/wifi-ax/ath11k-wifi/Makefile b/feeds/wifi-ax/ath11k-wifi/Makefile
index b2e0f0e3..55f46672 100644
--- a/feeds/wifi-ax/ath11k-wifi/Makefile
+++ b/feeds/wifi-ax/ath11k-wifi/Makefile
@@ -35,7 +35,8 @@ ALLWIFIBOARDS:= \
wallys-dr6018 \
wallys-dr6018-v4 \
tplink-ex227 \
- tplink-ex447
+ tplink-ex447 \
+ gl-axt1800
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ath11k-wifi-$(BOARD))
@@ -72,6 +73,11 @@ $(call Package/ath11k-wifi-default)
TITLE:=cig-wf196 6G bdf
endef
+define Package/ath11k-wifi-gl-axt1800
+$(call Package/ath11k-wifi-default)
+ TITLE:=gl-axt1800 bdf
+endef
+
define ath11k-wifi-install-one-to
$(INSTALL_DIR) $(2)/lib/firmware/$(3)/
$(INSTALL_DATA) $(1) $(2)/lib/firmware/$(3)/board.bin
@@ -140,6 +146,11 @@ define Package/ath11k-wifi-cig-wf196_6g/install
$(INSTALL_DATA) ./board-cig-wf196_6g.bin.QCN9074 $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board.bin
endef
+define Package/ath11k-wifi-gl-axt1800/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/
+ $(INSTALL_DATA) ./board-gl-axt1800.bin.IPQ6018 $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/board-2.bin
+endef
+
$(eval $(call generate-ath11k-wifi-package,cig-wf188,Cigtech WF188))
$(eval $(call generate-ath11k-wifi-package,cig-wf188n,Cigtech WF188n))
$(eval $(call generate-ath11k-wifi-package,cig-wf194c,Cigtech WF194c))
--
2.25.1

View File

@ -0,0 +1,33 @@
From 3d91d9afabf88bd4cd830938282599de65f4db02 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 11:36:35 +0800
Subject: [PATCH] ipq807x: use append-gl-metadata for gl-ax(t)1800
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
feeds/ipq807x/ipq807x/image/ipq60xx.mk | 2 ++
1 file changed, 2 insertions(+)
diff --git a/feeds/ipq807x/ipq807x/image/ipq60xx.mk b/feeds/ipq807x/ipq807x/image/ipq60xx.mk
index 23057a99..efbd6f38 100644
--- a/feeds/ipq807x/ipq807x/image/ipq60xx.mk
+++ b/feeds/ipq807x/ipq807x/image/ipq60xx.mk
@@ -68,6 +68,7 @@ define Device/glinet_ax1800
SUPPORTED_DEVICES := glinet,ax1800
DEVICE_DTS_CONFIG := config@cp03-c1
DEVICE_PACKAGES := ath11k-wifi-gl-ax1800 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3
+ IMAGE/sysupgrade.tar := sysupgrade-tar | append-gl-metadata
endef
TARGET_DEVICES += glinet_ax1800
@@ -77,6 +78,7 @@ define Device/glinet_axt1800
SUPPORTED_DEVICES := glinet,axt1800
DEVICE_DTS_CONFIG := config@cp03-c1
DEVICE_PACKAGES := ath11k-wifi-gl-axt1800 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3
+ IMAGE/sysupgrade.tar := sysupgrade-tar | append-gl-metadata
endef
TARGET_DEVICES += glinet_axt1800
--
2.25.1

View File

@ -1,48 +0,0 @@
From d31f3fe4cc7f78fcef3b441143290b03991d25d6 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Thu, 12 May 2022 16:10:25 +0800
Subject: [PATCH] wifiax: fix gen macaddr
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../mac80211/files/lib/netifd/wireless/mac80211.sh | 9 ++++-----
feeds/wifi-ax/mac80211/files/lib/wifi/mac80211.sh | 1 -
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
index 97c56703..e6b17f6e 100644
--- a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -540,13 +540,12 @@ mac80211_generate_mac() {
local oIFS="$IFS"; IFS=":"; set -- $ref; IFS="$oIFS"
[ "$multiple_bssid" -eq 1 ] && {
- printf "02:%s:%s:%s:%s:%02x" $b1 $2 $3 $4 $5 $macidx
- return
- }
- macidx=$(($id + 1))
+ printf "02:%s:%s:%s:%s:%02x" $b1 $2 $3 $4 $5 $macidx
+ return
+ }
local use_global=0
- [ "$id" -gt 0 -a "$macidx" -le "$num_global_macaddr" ] && use_global=1
+ [ "$id" -gt 0 -a "$id" -lt "$num_global_macaddr" ] && use_global=1
[ "$((0x$mask1))" -gt 0 -a "$use_global" -lt 1 ] && {
b1="0x$1"
diff --git a/feeds/wifi-ax/mac80211/files/lib/wifi/mac80211.sh b/feeds/wifi-ax/mac80211/files/lib/wifi/mac80211.sh
index 9b1f05a3..115e5b79 100644
--- a/feeds/wifi-ax/mac80211/files/lib/wifi/mac80211.sh
+++ b/feeds/wifi-ax/mac80211/files/lib/wifi/mac80211.sh
@@ -178,7 +178,6 @@ detect_mac80211() {
set wireless.radio${devidx}.channel=${channel}
set wireless.radio${devidx}.band=${mode_band}
set wireless.radio${devidx}.htmode=$htmode
- set wireless.radio${devidx}.num_global_macaddr=8
${scanning}
set wireless.radio${devidx}.disabled=1
--
2.25.1

View File

@ -1,16 +1,17 @@
From f0cb3a04d08608cf17f26e9557292df740daa95e Mon Sep 17 00:00:00 2001
From: "GL.iNet-Xinfa.Deng" <xinfa.deng@gl-inet.com>
Date: Sat, 12 Feb 2022 14:41:56 +0800
Subject: [PATCH] target: change name nand-factory.img
From e041d883da5fdfc2bbea2056867dd94b20cfe928 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 11:58:12 +0800
Subject: [PATCH] ipq807x: change name nand-factory.img
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
target/linux/ipq807x/image/Makefile | 4 ++--
feeds/ipq807x/ipq807x/image/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/linux/ipq807x/image/Makefile b/target/linux/ipq807x/image/Makefile
index 3a219e6..49c6cc5 100644
--- a/target/linux/ipq807x/image/Makefile
+++ b/target/linux/ipq807x/image/Makefile
diff --git a/feeds/ipq807x/ipq807x/image/Makefile b/feeds/ipq807x/ipq807x/image/Makefile
index 3a219e6d..49c6cc5a 100644
--- a/feeds/ipq807x/ipq807x/image/Makefile
+++ b/feeds/ipq807x/ipq807x/image/Makefile
@@ -13,9 +13,9 @@ define Device/Default
ROOTFSNAME_IN_UBI := ubi_rootfs
BLOCKSIZE := 128k
@ -24,5 +25,5 @@ index 3a219e6..49c6cc5 100644
KERNEL = kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
KERNEL_INITRAMFS = kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
--
2.7.4
2.25.1

View File

@ -1,34 +0,0 @@
From 673c18865111faf0be0a7b22aded49a21508e075 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Fri, 13 May 2022 16:20:32 +0800
Subject: [PATCH] mac80211: automatically restart wifi if bringup failed
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../mac80211/files/lib/netifd/wireless/mac80211.sh | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
index e6b17f6e..5db55170 100644
--- a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -1161,10 +1161,14 @@ drv_mac80211_setup() {
if [ "$no_reload" != "0" ]; then
add_ap=1
ubus wait_for hostapd
- local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")"
+ local hostapd_res
+
+ [ -f /tmp/wifi_fail_test ] || hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")"
ret="$?"
+ rm -f /tmp/wifi_fail_test
[ "$ret" != 0 -o -z "$hostapd_res" ] && {
- wireless_setup_failed HOSTAPD_START_FAILED
+ logger failed to start wifi trying again
+ #wireless_setup_failed HOSTAPD_START_FAILED
return
}
wireless_add_process "$(jsonfilter -s "$hostapd_res" -l 1 -e @.pid)" "/usr/sbin/hostapd" 1 1
--
2.25.1

View File

@ -0,0 +1,34 @@
From 51c6862c8764ba91d42578a3056a9753414a0ac2 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 12:05:33 +0800
Subject: [PATCH] ipq807x: fix bridge isolate
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../etc/uci-defaults/14_fix_bridge_isolate | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/base-files/etc/uci-defaults/14_fix_bridge_isolate
diff --git a/feeds/ipq807x/ipq807x/base-files/etc/uci-defaults/14_fix_bridge_isolate b/feeds/ipq807x/ipq807x/base-files/etc/uci-defaults/14_fix_bridge_isolate
new file mode 100644
index 00000000..46c8e678
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/base-files/etc/uci-defaults/14_fix_bridge_isolate
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. /lib/functions.sh
+board=$(board_name)
+
+case "$board" in
+ glinet,axt1800|\
+ glinet,ax1800)
+ uci set network.@device[0].multicast_to_unicast='0'
+ uci commit network
+ ;;
+esac
+
+
--
2.25.1

View File

@ -1,63 +0,0 @@
From 14b75a6c0720558f4fe08b6b45542ffbd0728ff3 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Fri, 13 May 2022 16:35:04 +0800
Subject: [PATCH] wifi: fix channel select when using ACS
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../800-fix-ap-sta-channel-setup-failed.patch | 29 +++++++++++++++++++
.../files/lib/netifd/wireless/mac80211.sh | 2 +-
2 files changed, 30 insertions(+), 1 deletion(-)
create mode 100644 feeds/wifi-ax/hostapd/patches/800-fix-ap-sta-channel-setup-failed.patch
diff --git a/feeds/wifi-ax/hostapd/patches/800-fix-ap-sta-channel-setup-failed.patch b/feeds/wifi-ax/hostapd/patches/800-fix-ap-sta-channel-setup-failed.patch
new file mode 100644
index 00000000..de7a6115
--- /dev/null
+++ b/feeds/wifi-ax/hostapd/patches/800-fix-ap-sta-channel-setup-failed.patch
@@ -0,0 +1,29 @@
+diff --git a/src/common/hw_features_common.c b/src/common/hw_features_common.c
+index ad2aebf..355b4a8 100644
+--- a/src/common/hw_features_common.c
++++ b/src/common/hw_features_common.c
+@@ -615,9 +615,21 @@ int hostapd_set_freq_params(struct hostapd_freq_params *data,
+ center_segment0 == channel - 6)
+ data->center_freq1 = 5000 + center_segment0 * 5;
+ else {
+- wpa_printf(MSG_ERROR,
+- "Wrong coupling between HT and VHT/HE channel setting");
+- return -1;
++ if (channel <= 48)
++ center_segment0 = 42;
++ else if (channel <= 64)
++ center_segment0 = 58;
++ else if (channel <= 112)
++ center_segment0 = 106;
++ else if (channel <= 128)
++ center_segment0 = 122;
++ else if (channel <= 144)
++ center_segment0 = 138;
++ else if (channel <= 161)
++ center_segment0 = 155;
++ else if (channel <= 177)
++ center_segment0 = 171;
++ data->center_freq1 = 5000 + center_segment0 * 5;
+ }
+ }
+ break;
diff --git a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
index 5db55170..5be94573 100644
--- a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -132,7 +132,7 @@ mac80211_hostapd_setup_base() {
json_select config
- [ "$auto_channel" -gt 0 ] && channel=acs_survey
+ [ "$auto_channel" -gt 0 ] && channel=0
[ "$auto_channel" -gt 0 ] && json_get_vars acs_exclude_dfs
[ -n "$acs_exclude_dfs" ] && [ "$acs_exclude_dfs" -gt 0 ] &&
--
2.25.1

View File

@ -0,0 +1,220 @@
From efd3b13e3360712b38caa7be8675e4d287cdf8a7 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 15:03:35 +0800
Subject: [PATCH] ipq807x: fit dts for gl-ax(t)1800
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts | 6 ++
.../boot/dts/qcom/qcom-ipq6018-gl-ax1800.dtsi | 55 +++++++++++++++----
.../boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts | 42 +++++++++++---
3 files changed, 84 insertions(+), 19 deletions(-)
diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts
index 77682246..9f98ef6d 100644
--- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts
+++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts
@@ -27,6 +27,12 @@
};
};
+&gl_hw {
+ model = "ax1800";
+ lan = "eth1 eth2 eth3 eth4";
+ usb-port = "1-1";
+};
+
&mdio0 {
phy3: ethernet-phy@3 {
reg = <3>;
diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dtsi b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dtsi
index 25f8717a..3fea6475 100644
--- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dtsi
+++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dtsi
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -28,16 +28,35 @@
ethernet1 = "/soc/dp2";
ethernet2 = "/soc/dp3";
- led-boot = &led_run;
- led-failsafe = &led_run;
- led-running = &led_run;
- led-upgrade = &led_run;
+ //led-boot = &led_run;
+ //led-failsafe = &led_run;
+ //led-running = &led_run;
+ //led-upgrade = &led_run;
};
chosen {
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
bootargs-append = " swiotlb=1 coherent_pool=2M";
};
+
+ gl_hw: gl_hw {
+ compatible = "gl-hw-info";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ model = "axt1800";
+ wan = "eth0";
+ reset-button = "gpio-50";
+ usb-port = "1-1";
+ flash_size = <128>;
+ temperature = "/sys/devices/virtual/thermal/thermal_zone0/temp";
+ factory_data {
+ device_mac = "0:ART", "0x0";
+ device_ddns = "0:ART", "0x20";
+ device_sn_bak = "0:ART", "0x30";
+ device_sn = "0:ART", "0x40";
+ country_code = "0:ART", "0x98";
+ };
+ };
};
&tlmm {
@@ -101,7 +120,7 @@
};
qpic_pad {
pins = "gpio1", "gpio3", "gpio4",
- "gpio10", "gpio11", "gpio17";
+ "gpio10", "gpio11", "gpio17";
function = "qpic_pad";
drive-strength = <8>;
bias-pull-down;
@@ -250,14 +269,14 @@
pinctrl-0 = <&leds_pins>;
pinctrl-names = "default";
- led_run: led@35 {
- label = "white:sys";
+ led_run: white {
+ label = "white_led";
gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;
- default-state = "on";
+ default-state = "off";
};
- led@37 {
- label = "blue:wan";
+ blue {
+ label = "blue_led";
gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>;
default-state = "on";
};
@@ -271,7 +290,7 @@
switch {
label = "switch";
linux,code = <KEY_WPS_BUTTON>;
- gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
+ gpios = <&tlmm 9 GPIO_ACTIVE_HIGH>;
linux,input-type = <1>;
debounce-interval = <60>;
};
@@ -283,6 +302,18 @@
debounce-interval = <60>;
};
};
+
+ gpio-export {
+ compatible = "gpio-export";
+ pinctrl-0 = <&usb_pins>;
+ pinctrl-names = "default";
+
+ usb_power {
+ gpio-export,name = "usb_power";
+ gpio-export,output = <1>;
+ gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
+ };
+ };
};
&blsp1_uart3 {
diff --git a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts
index 0e5de3f1..4da836cf 100644
--- a/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts
+++ b/feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts
@@ -24,16 +24,32 @@
aliases {
sdhc0 = &sdhc_2;
};
+
+ gl_fan {
+ compatible = "gl-fan";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ fan_speed_gpio = <31>;
+ };
+};
+
+&gl_hw {
+ model = "axt1800";
+ lan = "eth1 eth2";
+ usb-port = "1-1";
+ fan = "pwmchip0";
+ switch-button = "gpio-16";
+ dfs;
};
&tlmm {
sd_pins: sd_pins {
- sd {
+ mux_0 {
pins = "gpio62";
function = "sd_card";
bias-pull-up;
};
- ldo {
+ mux_1 {
pins = "gpio66";
function = "gpio";
bias-pull-up;
@@ -41,7 +57,7 @@
};
pwm_pins: pwm_pinmux {
- pwm {
+ mux {
pins = "gpio30";
function = "pwm13";
drive-strength = <8>;
@@ -73,15 +89,27 @@
status = "ok";
};
- pwm-fan {
+ fan0: pwm-fan {
compatible = "pwm-fan";
pinctrl-0 = <&fan_pins>;
pinctrl-names = "default";
cooling-min-state = <0>;
- cooling-max-state = <3>;
+ cooling-max-state = <255>;
#cooling-cells = <2>;
- pwms = <&pwm 1 255>;
- cooling-levels = <0 150 200 255>;
+ pwms = <&pwm 1 40000 0>;
+ cooling-levels = <0 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38 39
+ 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
+ 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
+ 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
+ 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
+ 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
+ 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
+ 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
+ 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
+ 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
+ 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
+ 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255>;
};
};
--
2.25.1

View File

@ -1,49 +0,0 @@
From 82d31e0c854771dbef5b28d9b225bc81599b7d75 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Sat, 28 May 2022 17:33:42 +0800
Subject: [PATCH] wifi-ax: update bdf for gl-axt1800
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
feeds/wifi-ax/ath11k-wifi/Makefile | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/feeds/wifi-ax/ath11k-wifi/Makefile b/feeds/wifi-ax/ath11k-wifi/Makefile
index 55f46672..830e34e7 100644
--- a/feeds/wifi-ax/ath11k-wifi/Makefile
+++ b/feeds/wifi-ax/ath11k-wifi/Makefile
@@ -36,6 +36,7 @@ ALLWIFIBOARDS:= \
wallys-dr6018-v4 \
tplink-ex227 \
tplink-ex447 \
+ gl-ax1800 \
gl-axt1800
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ath11k-wifi-$(BOARD))
@@ -73,6 +74,11 @@ $(call Package/ath11k-wifi-default)
TITLE:=cig-wf196 6G bdf
endef
+define Package/ath11k-wifi-gl-ax1800
+$(call Package/ath11k-wifi-default)
+ TITLE:=gl-ax1800 bdf
+endef
+
define Package/ath11k-wifi-gl-axt1800
$(call Package/ath11k-wifi-default)
TITLE:=gl-axt1800 bdf
@@ -146,6 +152,11 @@ define Package/ath11k-wifi-cig-wf196_6g/install
$(INSTALL_DATA) ./board-cig-wf196_6g.bin.QCN9074 $(1)/lib/firmware/ath11k/QCN9074/hw1.0/board.bin
endef
+define Package/ath11k-wifi-gl-ax1800/install
+ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/
+ $(INSTALL_DATA) ./board-gl-ax1800.bin.IPQ6018 $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/board-2.bin
+endef
+
define Package/ath11k-wifi-gl-axt1800/install
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/
$(INSTALL_DATA) ./board-gl-axt1800.bin.IPQ6018 $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/board-2.bin
--
2.25.1

View File

@ -0,0 +1,156 @@
From 2a0b184f32784da195cb0f04353b1ea25f091e30 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 15:06:24 +0800
Subject: [PATCH] ipq807x: add support gpio-export driver
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../204-add-support-gpio-export-driver.patch | 136 ++++++++++++++++++
1 file changed, 136 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/204-add-support-gpio-export-driver.patch
diff --git a/feeds/ipq807x/ipq807x/patches/204-add-support-gpio-export-driver.patch b/feeds/ipq807x/ipq807x/patches/204-add-support-gpio-export-driver.patch
new file mode 100644
index 00000000..0be35e24
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/204-add-support-gpio-export-driver.patch
@@ -0,0 +1,136 @@
+--- a/drivers/gpio/gpiolib-of.c
++++ b/drivers/gpio/gpiolib-of.c
+@@ -23,6 +23,8 @@
+ #include <linux/pinctrl/pinctrl.h>
+ #include <linux/slab.h>
+ #include <linux/gpio/machine.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
+
+ #include "gpiolib.h"
+
+@@ -450,3 +452,68 @@ void of_gpiochip_remove(struct gpio_chip
+ gpiochip_remove_pin_ranges(chip);
+ of_node_put(chip->of_node);
+ }
++
++static struct of_device_id gpio_export_ids[] = {
++ { .compatible = "gpio-export" },
++ { /* sentinel */ }
++};
++
++static int of_gpio_export_probe(struct platform_device *pdev)
++{
++ struct device_node *np = pdev->dev.of_node;
++ struct device_node *cnp;
++ u32 val;
++ int nb = 0;
++
++ for_each_child_of_node(np, cnp) {
++ const char *name = NULL;
++ int gpio;
++ bool dmc;
++ int max_gpio = 1;
++ int i;
++
++ of_property_read_string(cnp, "gpio-export,name", &name);
++
++ if (!name)
++ max_gpio = of_gpio_count(cnp);
++
++ for (i = 0; i < max_gpio; i++) {
++ unsigned flags = 0;
++ enum of_gpio_flags of_flags;
++
++ gpio = of_get_gpio_flags(cnp, i, &of_flags);
++ if (!gpio_is_valid(gpio))
++ return gpio;
++
++ if (of_flags == OF_GPIO_ACTIVE_LOW)
++ flags |= GPIOF_ACTIVE_LOW;
++
++ if (!of_property_read_u32(cnp, "gpio-export,output", &val))
++ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
++ else
++ flags |= GPIOF_IN;
++
++ if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np)))
++ continue;
++
++ dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
++ gpio_export_with_name(gpio, dmc, name);
++ nb++;
++ }
++ }
++
++ dev_info(&pdev->dev, "%d gpio(s) exported\n", nb);
++
++ return 0;
++}
++
++static struct platform_driver gpio_export_driver = {
++ .driver = {
++ .name = "gpio-export",
++ .owner = THIS_MODULE,
++ .of_match_table = of_match_ptr(gpio_export_ids),
++ },
++ .probe = of_gpio_export_probe,
++};
++
++module_platform_driver(gpio_export_driver);
+--- a/drivers/gpio/gpiolib-sysfs.c
++++ b/drivers/gpio/gpiolib-sysfs.c
+@@ -2,6 +2,7 @@
+ #include <linux/mutex.h>
+ #include <linux/device.h>
+ #include <linux/sysfs.h>
++#include <linux/gpio.h>
+ #include <linux/gpio/consumer.h>
+ #include <linux/gpio/driver.h>
+ #include <linux/interrupt.h>
+@@ -544,7 +545,7 @@ static struct class gpio_class = {
+ *
+ * Returns zero on success, else an error.
+ */
+-int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
++int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name)
+ {
+ struct gpio_chip *chip;
+ struct gpiod_data *data;
+@@ -604,6 +605,8 @@ int gpiod_export(struct gpio_desc *desc,
+ offset = gpio_chip_hwgpio(desc);
+ if (chip->names && chip->names[offset])
+ ioname = chip->names[offset];
++ if (name)
++ ioname = name;
+
+ dev = device_create_with_groups(&gpio_class, chip->dev,
+ MKDEV(0, 0), data, gpio_groups,
+@@ -625,6 +628,12 @@ err_unlock:
+ gpiod_dbg(desc, "%s: status %d\n", __func__, status);
+ return status;
+ }
++EXPORT_SYMBOL_GPL(__gpiod_export);
++
++int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
++{
++ return __gpiod_export(desc, direction_may_change, NULL);
++}
+ EXPORT_SYMBOL_GPL(gpiod_export);
+
+ static int match_export(struct device *dev, const void *desc)
+--- a/include/asm-generic/gpio.h
++++ b/include/asm-generic/gpio.h
+@@ -122,6 +122,12 @@ static inline int gpio_export(unsigned g
+ return gpiod_export(gpio_to_desc(gpio), direction_may_change);
+ }
+
++int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
++static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
++{
++ return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
++}
++
+ static inline int gpio_export_link(struct device *dev, const char *name,
+ unsigned gpio)
+ {
--
2.25.1

View File

@ -0,0 +1,24 @@
From ef9b7f1af3c56025407739347cb8419af37010b6 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 15:51:01 +0800
Subject: [PATCH] ipq807x: fix missing kernel symbol
CONFIG_IP6_NF_TARGET_MASQUERADE
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
feeds/ipq807x/ipq807x/config-4.4 | 1 +
1 file changed, 1 insertion(+)
diff --git a/feeds/ipq807x/ipq807x/config-4.4 b/feeds/ipq807x/ipq807x/config-4.4
index af9953ae..2f8d74a7 100644
--- a/feeds/ipq807x/ipq807x/config-4.4
+++ b/feeds/ipq807x/ipq807x/config-4.4
@@ -827,3 +827,4 @@ CONFIG_DIAG_CHAR=y
# CONFIG_CRYPTO_DEV_QCEDEV is not set
# CONFIG_CRYPTO_DEV_QCRYPTO is not set
# CONFIG_MHI_BUS_TEST is not set
+# CONFIG_IP6_NF_TARGET_MASQUERADE is not set
--
2.25.1

View File

@ -0,0 +1,195 @@
From 378fcdef77712134fb5aecea651a1b4bbf524e01 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 17:39:47 +0800
Subject: [PATCH] ipq807x: wireguard: support hotplug for gl
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../patches/150-support-hotplug-for-gl.patch | 64 +++++++++++++++
feeds/ipq807x/wireguard/src/src/hotplug.c | 82 +++++++++++++++++++
feeds/ipq807x/wireguard/src/src/hotplug.h | 13 +++
3 files changed, 159 insertions(+)
create mode 100644 feeds/ipq807x/wireguard/patches/150-support-hotplug-for-gl.patch
create mode 100644 feeds/ipq807x/wireguard/src/src/hotplug.c
create mode 100644 feeds/ipq807x/wireguard/src/src/hotplug.h
diff --git a/feeds/ipq807x/wireguard/patches/150-support-hotplug-for-gl.patch b/feeds/ipq807x/wireguard/patches/150-support-hotplug-for-gl.patch
new file mode 100644
index 00000000..f9bb1f0d
--- /dev/null
+++ b/feeds/ipq807x/wireguard/patches/150-support-hotplug-for-gl.patch
@@ -0,0 +1,64 @@
+Index: wireguard-linux-compat-1.0.20211208/src/Kbuild
+===================================================================
+--- wireguard-linux-compat-1.0.20211208.orig/src/Kbuild
++++ wireguard-linux-compat-1.0.20211208/src/Kbuild
+@@ -7,7 +7,7 @@ ccflags-y += -Wframe-larger-than=2048
+ ccflags-$(CONFIG_WIREGUARD_DEBUG) += -DDEBUG -g
+ ccflags-$(if $(WIREGUARD_VERSION),y,) += -D'WIREGUARD_VERSION="$(WIREGUARD_VERSION)"'
+
+-wireguard-y := main.o noise.o device.o peer.o timers.o queueing.o send.o receive.o socket.o peerlookup.o allowedips.o ratelimiter.o cookie.o netlink.o
++wireguard-y := main.o noise.o device.o peer.o timers.o queueing.o send.o receive.o socket.o peerlookup.o allowedips.o ratelimiter.o cookie.o netlink.o hotplug.o
+
+ include $(src)/crypto/Kbuild.include
+ include $(src)/compat/Kbuild.include
+Index: wireguard-linux-compat-1.0.20211208/src/noise.c
+===================================================================
+--- wireguard-linux-compat-1.0.20211208.orig/src/noise.c
++++ wireguard-linux-compat-1.0.20211208/src/noise.c
+@@ -9,6 +9,7 @@
+ #include "messages.h"
+ #include "queueing.h"
+ #include "peerlookup.h"
++#include "hotplug.h"
+
+ #include <linux/rcupdate.h>
+ #include <linux/slab.h>
+@@ -819,6 +820,8 @@ bool wg_noise_handshake_begin_session(st
+ ret = wg_index_hashtable_replace(
+ handshake->entry.peer->device->index_hashtable,
+ &handshake->entry, &new_keypair->entry);
++
++ wireguard_hotplug(handshake->entry.peer->device->dev->name, KEYPAIR_CREATED_EVENT);
+ } else {
+ kfree_sensitive(new_keypair);
+ }
+Index: wireguard-linux-compat-1.0.20211208/src/timers.c
+===================================================================
+--- wireguard-linux-compat-1.0.20211208.orig/src/timers.c
++++ wireguard-linux-compat-1.0.20211208/src/timers.c
+@@ -8,6 +8,7 @@
+ #include "peer.h"
+ #include "queueing.h"
+ #include "socket.h"
++#include "hotplug.h"
+
+ /*
+ * - Timer for retransmitting the handshake if we don't hear back after
+@@ -60,6 +61,8 @@ static void wg_expired_retransmit_handsh
+ if (!timer_pending(&peer->timer_zero_key_material))
+ mod_peer_timer(peer, &peer->timer_zero_key_material,
+ jiffies + REJECT_AFTER_TIME * 3 * HZ);
++
++ wireguard_hotplug(peer->device->dev->name, REKEY_GIVEUP_EVENT);
+ } else {
+ ++peer->timer_handshake_attempts;
+ pr_debug("%s: Handshake for peer %llu (%pISpfsc) did not complete after %d seconds, retrying (try %d)\n",
+@@ -73,6 +76,8 @@ static void wg_expired_retransmit_handsh
+ wg_socket_clear_peer_endpoint_src(peer);
+
+ wg_packet_send_queued_handshake_initiation(peer, true);
++
++ wireguard_hotplug(peer->device->dev->name, REKEY_TIMEOUT_EVENT);
+ }
+ }
+
diff --git a/feeds/ipq807x/wireguard/src/src/hotplug.c b/feeds/ipq807x/wireguard/src/src/hotplug.c
new file mode 100644
index 00000000..62cfe092
--- /dev/null
+++ b/feeds/ipq807x/wireguard/src/src/hotplug.c
@@ -0,0 +1,82 @@
+#include <linux/workqueue.h>
+#include <linux/netlink.h>
+#include <linux/kobject.h>
+#include <linux/skbuff.h>
+#include <linux/if.h>
+
+#define SUBSYSTEM_NAME "wireguard"
+
+#define EVENT_BUF_SIZE 2048
+
+struct wg_event {
+ struct work_struct work;
+ char ifname[IFNAMSIZ];
+ const char *action;
+};
+
+
+/* -------------------------------------------------------------------------*/
+static int bh_event_add_var(struct sk_buff *skb, int argv,
+ const char *format, ...)
+{
+ static char buf[128];
+ char *s;
+ va_list args;
+ int len;
+
+ if (argv)
+ return 0;
+
+ va_start(args, format);
+ len = vsnprintf(buf, sizeof(buf), format, args);
+ va_end(args);
+
+ if (len >= sizeof(buf)) {
+ //WARN(1, "buffer size too small\n");
+ return -ENOMEM;
+ }
+
+ s = skb_put(skb, len + 1);
+ strcpy(s, buf);
+
+ return 0;
+}
+
+static void hotplug_work(struct work_struct *work)
+{
+ struct wg_event *event = container_of(work, struct wg_event, work);
+ struct sk_buff *skb;
+
+ skb = alloc_skb(EVENT_BUF_SIZE, GFP_KERNEL);
+ if (!skb)
+ goto out_free_event;
+
+ bh_event_add_var(skb, 0, "SUBSYSTEM=%s", SUBSYSTEM_NAME);
+ bh_event_add_var(skb, 0, "ACTION=%s", event->action);
+ bh_event_add_var(skb, 0, "ifname=%s", event->ifname);
+
+ NETLINK_CB(skb).dst_group = 1;
+ broadcast_uevent(skb, 0, 1, GFP_KERNEL);
+
+out_free_event:
+ kfree(event);
+}
+
+void wireguard_hotplug(const char *ifname, const char *action)
+{
+ struct wg_event *event;
+
+ if (!strcmp(ifname, "wgserver"))
+ return;
+
+ event = kzalloc(sizeof(struct wg_event), GFP_ATOMIC);
+ if (!event)
+ return;
+
+ memcpy(event->ifname, ifname, IFNAMSIZ);
+
+ event->action = action;
+
+ INIT_WORK(&event->work, hotplug_work);
+ schedule_work(&event->work);
+}
diff --git a/feeds/ipq807x/wireguard/src/src/hotplug.h b/feeds/ipq807x/wireguard/src/src/hotplug.h
new file mode 100644
index 00000000..7fb54d9d
--- /dev/null
+++ b/feeds/ipq807x/wireguard/src/src/hotplug.h
@@ -0,0 +1,13 @@
+#ifndef __HOTPLUG_H__
+#define __HOTPLUG_H__
+
+#define REKEY_GIVEUP_EVENT "REKEY-GIVEUP"
+#define REKEY_TIMEOUT_EVENT "REKEY-TIMEOUT"
+#define KEYPAIR_CREATED_EVENT "KEYPAIR-CREATED"
+
+extern void wireguard_hotplug(const char *ifname, const char *action);
+extern void wg_hotplug_init(void);
+extern void wg_hotplug_free(void);
+
+#endif
+
--
2.25.1

View File

@ -0,0 +1,33 @@
From 474233728e7d9b863424bc62a263fbf0e24895d0 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Tue, 12 Jul 2022 11:49:05 +0800
Subject: [PATCH] ipq807x: show symbol udp-tunnel for wireguard
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../patches/113-show-symbol-udp-tunnel.patch | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/113-show-symbol-udp-tunnel.patch
diff --git a/feeds/ipq807x/ipq807x/patches/113-show-symbol-udp-tunnel.patch b/feeds/ipq807x/ipq807x/patches/113-show-symbol-udp-tunnel.patch
new file mode 100644
index 00000000..b8e93e7d
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/113-show-symbol-udp-tunnel.patch
@@ -0,0 +1,13 @@
+Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/net/ipv4/Kconfig
+===================================================================
+--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/net/ipv4/Kconfig
++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/net/ipv4/Kconfig
+@@ -308,7 +308,7 @@ config NET_IPVTI
+ on top.
+
+ config NET_UDP_TUNNEL
+- tristate
++ tristate "udp tunnel"
+ select NET_IP_TUNNEL
+ default n
+
--
2.25.1

View File

@ -0,0 +1,70 @@
From 2fded821c4f46fa7b95adbf02c88aa2ff42c702f Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Tue, 12 Jul 2022 11:50:29 +0800
Subject: [PATCH] ipq807x: fix usb net ipheth
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../patches/300-fix-usb-net-ipheth.patch | 50 +++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/300-fix-usb-net-ipheth.patch
diff --git a/feeds/ipq807x/ipq807x/patches/300-fix-usb-net-ipheth.patch b/feeds/ipq807x/ipq807x/patches/300-fix-usb-net-ipheth.patch
new file mode 100644
index 00000000..abd47fbf
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/300-fix-usb-net-ipheth.patch
@@ -0,0 +1,50 @@
+From 6bc083e643a37ef114d4cdb75555a32d5275ec56 Mon Sep 17 00:00:00 2001
+From: "GL.iNet-Hongjian.Zhang" <hongjian.zhang@gl-inet.com>
+Date: Tue, 31 May 2022 09:44:38 +0800
+Subject: [PATCH] fix: usb net ipheth
+
+---
+ .../790-usb-net-ipheth-hotplug.patch | 31 +++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+ create mode 100644 target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch
+
+diff --git a/target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch b/target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch
+new file mode 100644
+index 0000000000..0187546f45
+--- /dev/null
++++ b/target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch
+@@ -0,0 +1,31 @@
++Index: b/drivers/net/usb/ipheth.c
++===================================================================
++--- a/drivers/net/usb/ipheth.c 2021-08-18 14:57:05.000000000 +0800
+++++ b/drivers/net/usb/ipheth.c 2022-05-30 19:32:40.843791147 +0800
++@@ -52,6 +52,7 @@
++ #include <linux/ethtool.h>
++ #include <linux/usb.h>
++ #include <linux/workqueue.h>
+++#include <linux/proc_fs.h>
++
++ #define USB_VENDOR_APPLE 0x05ac
++
++@@ -504,6 +505,10 @@ static int ipheth_probe(struct usb_inter
++ netif_carrier_off(netdev);
++ netif_tx_stop_all_queues(netdev);
++ dev_info(&intf->dev, "Apple iPhone USB Ethernet device attached\n");
+++ static const struct file_operations proc_fops = {
+++ .owner = THIS_MODULE,
+++ };
+++ proc_create("iphoneconn",0644,NULL,&proc_fops);
++ return 0;
++
++ err_register_netdev:
++@@ -531,6 +536,7 @@ static void ipheth_disconnect(struct usb
++ }
++ usb_set_intfdata(intf, NULL);
++ dev_info(&intf->dev, "Apple iPhone USB Ethernet now disconnected\n");
+++ remove_proc_entry("iphoneconn",NULL);
++ }
++
++ static struct usb_driver ipheth_driver = {
+--
+2.17.1
+
--
2.25.1

View File

@ -0,0 +1,213 @@
From 12426b29d67c759c44e7a4ec0adea7dc0c98c486 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Tue, 12 Jul 2022 12:20:54 +0800
Subject: [PATCH] ipq807x: fix tethering ipheth
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../patches/201-fix-tethering-ipheth.patch | 193 ++++++++++++++++++
1 file changed, 193 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/201-fix-tethering-ipheth.patch
diff --git a/feeds/ipq807x/ipq807x/patches/201-fix-tethering-ipheth.patch b/feeds/ipq807x/ipq807x/patches/201-fix-tethering-ipheth.patch
new file mode 100644
index 00000000..2b43b132
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/201-fix-tethering-ipheth.patch
@@ -0,0 +1,193 @@
+--- a/drivers/net/usb/ipheth.c
++++ b/drivers/net/usb/ipheth.c
+@@ -70,7 +70,7 @@
+ #define IPHETH_USBINTF_SUBCLASS 253
+ #define IPHETH_USBINTF_PROTO 1
+
+-#define IPHETH_BUF_SIZE 1516
++#define IPHETH_BUF_SIZE 1514
+ #define IPHETH_IP_ALIGN 2 /* padding at front of URB */
+ #define IPHETH_TX_TIMEOUT (5 * HZ)
+
+@@ -87,7 +87,7 @@
+ #define IPHETH_CARRIER_CHECK_TIMEOUT round_jiffies_relative(1 * HZ)
+ #define IPHETH_CARRIER_ON 0x04
+
+-static struct usb_device_id ipheth_table[] = {
++static const struct usb_device_id ipheth_table[] = {
+ { USB_DEVICE_AND_INTERFACE_INFO(
+ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE,
+ IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
+@@ -140,7 +140,6 @@ struct ipheth_device {
+ struct usb_device *udev;
+ struct usb_interface *intf;
+ struct net_device *net;
+- struct sk_buff *tx_skb;
+ struct urb *tx_urb;
+ struct urb *rx_urb;
+ unsigned char *tx_buf;
+@@ -149,6 +148,8 @@ struct ipheth_device {
+ u8 bulk_in;
+ u8 bulk_out;
+ struct delayed_work carrier_work;
++ bool confirmed_pairing;
++ int tx_in_use;
+ };
+
+ static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags);
+@@ -229,6 +230,7 @@ static void ipheth_rcvbulk_callback(stru
+ case -ENOENT:
+ case -ECONNRESET:
+ case -ESHUTDOWN:
++ case -EPROTO:
+ return;
+ case 0:
+ break;
+@@ -253,13 +255,13 @@ static void ipheth_rcvbulk_callback(stru
+ return;
+ }
+
+- memcpy(skb_put(skb, len), buf, len);
++ skb_put_data(skb, buf, len);
+ skb->dev = dev->net;
+ skb->protocol = eth_type_trans(skb, dev->net);
+
+ dev->net->stats.rx_packets++;
+ dev->net->stats.rx_bytes += len;
+-
++ dev->confirmed_pairing = true;
+ netif_rx(skb);
+ ipheth_rx_submit(dev, GFP_ATOMIC);
+ }
+@@ -280,15 +282,26 @@ static void ipheth_sndbulk_callback(stru
+ dev_err(&dev->intf->dev, "%s: urb status: %d\n",
+ __func__, status);
+
+- dev_kfree_skb_irq(dev->tx_skb);
+- netif_wake_queue(dev->net);
++ dev->tx_in_use = false;
++
++ if (status == 0)
++ netif_wake_queue(dev->net);
++ else
++ // on URB error, trigger immediate poll
++ schedule_delayed_work(&dev->carrier_work, 0);
+ }
+
+ static int ipheth_carrier_set(struct ipheth_device *dev)
+ {
+- struct usb_device *udev = dev->udev;
++ struct usb_device *udev;
+ int retval;
+
++ if (!dev)
++ return 0;
++ if (!dev->confirmed_pairing)
++ return 0;
++
++ udev = dev->udev;
+ retval = usb_control_msg(udev,
+ usb_rcvctrlpipe(udev, IPHETH_CTRL_ENDP),
+ IPHETH_CMD_CARRIER_CHECK, /* request */
+@@ -303,11 +316,14 @@ static int ipheth_carrier_set(struct iph
+ return retval;
+ }
+
+- if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON)
++ if (dev->ctrl_buf[0] == IPHETH_CARRIER_ON) {
+ netif_carrier_on(dev->net);
+- else
++ if (dev->tx_urb->status != -EINPROGRESS && dev->tx_in_use == false)
++ netif_wake_queue(dev->net);
++ } else {
+ netif_carrier_off(dev->net);
+-
++ netif_stop_queue(dev->net);
++ }
+ return 0;
+ }
+
+@@ -376,6 +392,8 @@ static int ipheth_open(struct net_device
+ struct usb_device *udev = dev->udev;
+ int retval = 0;
+
++ dev->tx_in_use = false;
++
+ usb_set_interface(udev, IPHETH_INTFNUM, IPHETH_ALT_INTFNUM);
+
+ retval = ipheth_carrier_set(dev);
+@@ -387,7 +405,6 @@ static int ipheth_open(struct net_device
+ return retval;
+
+ schedule_delayed_work(&dev->carrier_work, IPHETH_CARRIER_CHECK_TIMEOUT);
+- netif_start_queue(net);
+ return retval;
+ }
+
+@@ -410,10 +427,18 @@ static int ipheth_tx(struct sk_buff *skb
+ if (skb->len > IPHETH_BUF_SIZE) {
+ WARN(1, "%s: skb too large: %d bytes\n", __func__, skb->len);
+ dev->net->stats.tx_dropped++;
+- dev_kfree_skb_irq(skb);
++ dev_kfree_skb_any(skb);
++ return NETDEV_TX_OK;
++ }
++
++ if (dev->tx_in_use) {
++ dev->net->stats.tx_dropped++;
++ dev_kfree_skb_any(skb);
+ return NETDEV_TX_OK;
+ }
+
++ dev->tx_in_use = true;
++
+ memcpy(dev->tx_buf, skb->data, skb->len);
+ if (skb->len < IPHETH_BUF_SIZE)
+ memset(dev->tx_buf + skb->len, 0, IPHETH_BUF_SIZE - skb->len);
+@@ -425,18 +450,22 @@ static int ipheth_tx(struct sk_buff *skb
+ dev);
+ dev->tx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+
++ netif_stop_queue(net);
+ retval = usb_submit_urb(dev->tx_urb, GFP_ATOMIC);
+ if (retval) {
+ dev_err(&dev->intf->dev, "%s: usb_submit_urb: %d\n",
+ __func__, retval);
+ dev->net->stats.tx_errors++;
+- dev_kfree_skb_irq(skb);
++ dev_kfree_skb_any(skb);
++ netif_wake_queue(net);
++ if (atomic_read(&dev->tx_urb->use_count) != 0) {
++ atomic_dec(&dev->tx_urb->use_count);
++ }
++ dev->tx_in_use = false;
+ } else {
+- dev->tx_skb = skb;
+-
+ dev->net->stats.tx_packets++;
+ dev->net->stats.tx_bytes += skb->len;
+- netif_stop_queue(net);
++ dev_consume_skb_any(skb);
+ }
+
+ return NETDEV_TX_OK;
+@@ -491,7 +520,7 @@ static int ipheth_probe(struct usb_inter
+ dev->udev = udev;
+ dev->net = netdev;
+ dev->intf = intf;
+-
++ dev->confirmed_pairing = false;
+ /* Set up endpoints */
+ hintf = usb_altnum_to_altsetting(intf, IPHETH_ALT_INTFNUM);
+ if (hintf == NULL) {
+@@ -542,7 +571,9 @@ static int ipheth_probe(struct usb_inter
+ retval = -EIO;
+ goto err_register_netdev;
+ }
+-
++ // carrier down and transmit queues stopped until packet from device
++ netif_carrier_off(netdev);
++ netif_tx_stop_all_queues(netdev);
+ dev_info(&intf->dev, "Apple iPhone USB Ethernet device attached\n");
+ return 0;
+
--
2.25.1

View File

@ -0,0 +1,76 @@
From ab07a139bad8941fe6687c46f67b1080e0753a1a Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Tue, 12 Jul 2022 12:21:37 +0800
Subject: [PATCH] ipq807x: hack mtdoops for gl
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../patches/202-fix-qcom-mtdoops.patch | 56 +++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/202-fix-qcom-mtdoops.patch
diff --git a/feeds/ipq807x/ipq807x/patches/202-fix-qcom-mtdoops.patch b/feeds/ipq807x/ipq807x/patches/202-fix-qcom-mtdoops.patch
new file mode 100644
index 00000000..9ed2175a
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/202-fix-qcom-mtdoops.patch
@@ -0,0 +1,56 @@
+--- a/drivers/mtd/mtdoops.c
++++ b/drivers/mtd/mtdoops.c
+@@ -220,8 +220,26 @@ static void mtdoops_write(struct mtdoops
+ hdr[1] = MTDOOPS_KERNMSG_MAGIC;
+
+ if (panic) {
+- ret = mtd_panic_write(mtd, cxt->nextpage * record_size,
+- record_size, &retlen, cxt->oops_buf);
++ int count = record_size / 0x800;
++ int i = 0;
++ const u_char * p = cxt->oops_buf;
++ while(count--) {
++ ret = mtd_write(mtd, cxt->nextpage * record_size + i * 0x800,
++ record_size - i * 0x800, &retlen, p);
++ if (ret == 0) {
++ break;
++ }
++ else {
++ if ((p + 0x800) != NULL) {
++ p = p + 0x800;
++ i++;
++ }
++ else {
++ break;
++ }
++ }
++ }
++
+ if (ret == -EOPNOTSUPP) {
+ printk(KERN_ERR "mtdoops: Cannot write from panic without panic_write\n");
+ return;
+@@ -230,9 +248,11 @@ static void mtdoops_write(struct mtdoops
+ ret = mtd_write(mtd, cxt->nextpage * record_size,
+ record_size, &retlen, cxt->oops_buf);
+
++#if 0
+ if (retlen != record_size || ret < 0)
+ printk(KERN_ERR "mtdoops: write failure at %ld (%td of %ld written), error %d\n",
+ cxt->nextpage * record_size, retlen, record_size, ret);
++#endif
+ mark_page_used(cxt, cxt->nextpage);
+ memset(cxt->oops_buf, 0xff, record_size);
+
+@@ -241,10 +261,12 @@ static void mtdoops_write(struct mtdoops
+
+ static void mtdoops_workfunc_write(struct work_struct *work)
+ {
++#if 0
+ struct mtdoops_context *cxt =
+ container_of(work, struct mtdoops_context, work_write);
+
+ mtdoops_write(cxt, 0);
++#endif
+ }
+
+ static void find_next_position(struct mtdoops_context *cxt)
--
2.25.1

View File

@ -0,0 +1,339 @@
From 6faf6bac518f866657ccf6583531804006181c0c Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Tue, 12 Jul 2022 12:22:33 +0800
Subject: [PATCH] ipq807x: fix usb modem driver for gl
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../patches/203-fix-usb-modem-driver.patch | 319 ++++++++++++++++++
1 file changed, 319 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/203-fix-usb-modem-driver.patch
diff --git a/feeds/ipq807x/ipq807x/patches/203-fix-usb-modem-driver.patch b/feeds/ipq807x/ipq807x/patches/203-fix-usb-modem-driver.patch
new file mode 100644
index 00000000..b3f109d2
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/203-fix-usb-modem-driver.patch
@@ -0,0 +1,319 @@
+--- linux-4.4.60.orig/drivers/net/usb/qmi_wwan.c
++++ linux-4.4.60/drivers/net/usb/qmi_wwan.c
+@@ -58,6 +58,24 @@ static const u8 default_modem_addr[ETH_ALEN] = {0x02, 0x50, 0xf3};
+
+ static const u8 buggy_fw_addr[ETH_ALEN] = {0x00, 0xa0, 0xc6, 0x00, 0x00, 0x00};
+
++#if 1 //Added by Quectel
++#include <linux/etherdevice.h>
++struct sk_buff *qmi_wwan_tx_fixup(struct usbnet *dev, struct sk_buff *skb, gfp_t flags)
++{
++ if (dev->udev->descriptor.idVendor != cpu_to_le16(0x2C7C))
++ return skb;
++ // Skip Ethernet header from message
++ if (skb_pull(skb, ETH_HLEN)) {
++ return skb;
++ } else {
++ dev_err(&dev->intf->dev, "Packet Dropped ");
++ }
++ // Filter the packet out, release it
++ dev_kfree_skb_any(skb);
++ return NULL;
++}
++#endif
++
+ /* Make up an ethernet header if the packet doesn't have one.
+ *
+ * A firmware bug common among several devices cause them to send raw
+@@ -294,6 +312,21 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
+ dev->net->dev_addr[0] &= 0xbf; /* clear "IP" bit */
+ }
+ dev->net->netdev_ops = &qmi_wwan_netdev_ops;
++ //dev->net->sysfs_groups[0] = &qmi_wwan_sysfs_attr_group;
++#if 1 //Added by Quectel
++ if (dev->udev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
++ dev_info(&intf->dev, "QuectelEC25&EC21&EG91&EG95&EG06&EP06&EM06&BG96&AG35 work on RawIP mode\n");
++ dev->net->flags |= IFF_NOARP;
++ usb_control_msg(
++ interface_to_usbdev(intf),
++ usb_sndctrlpipe(interface_to_usbdev(intf), 0),
++ 0x22, //USB_CDC_REQ_SET_CONTROL_LINE_STATE
++ 0x21, //USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE
++ 1, //active CDC DTR
++ intf->cur_altsetting->desc.bInterfaceNumber,
++ NULL, 0, 100);
++ }
++#endif
+ err:
+ return status;
+ }
+@@ -378,7 +411,11 @@ static const struct driver_info qmi_wwan_info = {
+ .bind = qmi_wwan_bind,
+ .unbind = qmi_wwan_unbind,
+ .manage_power = qmi_wwan_manage_power,
+- .rx_fixup = qmi_wwan_rx_fixup,
++ //.rx_fixup = qmi_wwan_rx_fixup,
++ #if 1 //Added by Quectel
++ .tx_fixup = qmi_wwan_tx_fixup,
++ .rx_fixup = qmi_wwan_rx_fixup,
++ #endif
+ };
+
+ #define HUAWEI_VENDOR_ID 0x12D1
+@@ -397,6 +434,18 @@ static const struct driver_info qmi_wwan_info = {
+ QMI_FIXED_INTF(vend, prod, 0)
+
+ static const struct usb_device_id products[] = {
++#if 1 //Added by Quectel
++ { QMI_FIXED_INTF(0x05C6, 0x9003, 4) }, /* Quectel UC20 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0125, 4) }, /* Quectel EC25 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0121, 4) }, /* Quectel EC21 */
++ { QMI_FIXED_INTF(0x05C6, 0x9215, 4) }, /* Quectel EC20 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0191, 4) }, /* Quectel EG91 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0195, 4) }, /* Quectel EG95 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0306, 4) }, /* Quectel EG06/EP06/EM06 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0296, 4) }, /* Quectel BG96 */
++ { QMI_FIXED_INTF(0x2C7C, 0x0435, 4) }, /* Quectel AG35 */
++#endif
++
+ /* 1. CDC ECM like devices match on the control interface */
+ { /* Huawei E392, E398 and possibly others sharing both device id and more... */
+ USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, USB_CLASS_VENDOR_SPEC, 1, 9),
+@@ -753,6 +802,8 @@ static const struct usb_device_id products[] = {
+ {QMI_FIXED_INTF(0x413c, 0x81a9, 8)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */
+ {QMI_FIXED_INTF(0x413c, 0x81b1, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card */
+ {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */
++ {QMI_FIXED_INTF(0x03f0, 0x9d1d, 1)}, /* HP lt4120 Snapdragon X5 LTE */
++ {QMI_FIXED_INTF(0x1e0e, 0x9001, 5)}, /* SIMCom 7230E */
+ {QMI_FIXED_INTF(0x22de, 0x9061, 3)}, /* WeTelecom WPD-600N */
+
+ /* 4. Gobi 1000 devices */
+@@ -783,7 +834,7 @@ static const struct usb_device_id products[] = {
+ {QMI_GOBI_DEVICE(0x05c6, 0x9225)}, /* Sony Gobi 2000 Modem device (N0279, VU730) */
+ {QMI_GOBI_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
+ {QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
+- {QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
++// {QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
+ {QMI_FIXED_INTF(0x05c6, 0x9215, 4)}, /* Quectel EC20 Mini PCIe */
+ {QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
+ {QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
+--- linux-4.4.60.orig/drivers/usb/serial/option.c
++++ linux-4.4.60/drivers/usb/serial/option.c
+@@ -241,6 +241,7 @@ static void option_instat_callback(struct urb *urb);
+ /* These Quectel products use Quectel's vendor ID */
+ #define QUECTEL_PRODUCT_EC21 0x0121
+ #define QUECTEL_PRODUCT_EC25 0x0125
++#define QUECTEL_PRODUCT_EP06 0x0306
+
+ #define CMOTECH_VENDOR_ID 0x16d8
+ #define CMOTECH_PRODUCT_6001 0x6001
+@@ -541,6 +542,23 @@ static void option_instat_callback(struct urb *urb);
+ #define WETELECOM_PRODUCT_6802 0x6802
+ #define WETELECOM_PRODUCT_WMD300 0x6803
+
++#define LONGSUNG_PRODUCT_U9300C 0x9b3c
++
++/* FORGE PRODUCT */
++#define FORGE_VENDOR_ID 0x05c6
++
++#define FORGE_PRODUCT_SLM750 0xf601
++
++/* NODECOM PRODUCT */
++#define NODECOM_VENDOR_ID 0x1508
++
++#define NODECOM_PRODUCT_NL660 0x1001
++
++/* NEOWAY PRODUCT */
++#define NEOWAY_VENDOR_ID 0x2949
++
++#define NEOWAY_PRODUCT_N720 0x8243
++
+ struct option_blacklist_info {
+ /* bitmask of interface numbers blacklisted for send_setup */
+ const unsigned long sendsetup;
+@@ -670,6 +688,27 @@ static const struct option_blacklist_info cinterion_rmnet2_blacklist = {
+ };
+
+ static const struct usb_device_id option_ids[] = {
++#if 1 //Added by Quectel
++ { USB_DEVICE(0x05C6, 0x9090) }, /* Quectel UC15 */
++ { USB_DEVICE(0x05C6, 0x9003) }, /* Quectel UC20 */
++ { USB_DEVICE(0x2C7C, 0x0125) }, /* Quectel EC25 */
++ { USB_DEVICE(0x2C7C, 0x0121) }, /* Quectel EC21 */
++ { USB_DEVICE(0x05C6, 0x9215) }, /* Quectel EC20 */
++ { USB_DEVICE(0x2C7C, 0x0191) }, /* Quectel EG91 */
++ { USB_DEVICE(0x2C7C, 0x0195) }, /* Quectel EG95 */
++ { USB_DEVICE(0x2C7C, 0x0306) }, /* Quectel EG06/EP06/EM06 */
++ { USB_DEVICE(0x2C7C, 0x0296) }, /* Quectel BG96 */
++ { USB_DEVICE(0x2C7C, 0x0435) }, /* Quectel AG35 */
++ { USB_DEVICE(0x2C7C, 0x6026) }, /* Quectel AG35 */
++#endif
++ { USB_DEVICE(0x19d2, 0x0536) },/* MZ386 */
++ { USB_DEVICE(0x19d2, 0x0117) },
++ { USB_DEVICE(0x19d2, 0x0199) },
++ { USB_DEVICE(0x19d2, 0x1476) },
++ { USB_DEVICE(LONGCHEER_VENDOR_ID, LONGSUNG_PRODUCT_U9300C) },
++ { USB_DEVICE(FORGE_VENDOR_ID, FORGE_PRODUCT_SLM750) },
++ { USB_DEVICE(NODECOM_VENDOR_ID, NODECOM_PRODUCT_NL660) },
++ { USB_DEVICE(NEOWAY_VENDOR_ID, NEOWAY_PRODUCT_N720) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
+@@ -1178,6 +1217,8 @@ static const struct usb_device_id option_ids[] = {
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC25),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
++ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EP06),
++ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
+ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) },
+ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) },
+ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003),
+@@ -2057,6 +2098,9 @@ static struct usb_serial_driver option_1port_device = {
+ #ifdef CONFIG_PM
+ .suspend = usb_wwan_suspend,
+ .resume = usb_wwan_resume,
++#if 1 //Added by Quectel
++ .reset_resume = usb_wwan_resume,
++#endif
+ #endif
+ };
+
+@@ -2072,6 +2116,8 @@ static int option_probe(struct usb_serial *serial,
+ struct usb_interface_descriptor *iface_desc =
+ &serial->interface->cur_altsetting->desc;
+ struct usb_device_descriptor *dev_desc = &serial->dev->descriptor;
++
++ //unsigned long device_flags = id->driver_info;
+ const struct option_blacklist_info *blacklist;
+
+ /* Never bind to the CD-Rom emulation interface */
+@@ -2092,13 +2138,91 @@ static int option_probe(struct usb_serial *serial,
+ * a separate module.
+ */
+ if (dev_desc->idVendor == cpu_to_le16(SAMSUNG_VENDOR_ID) &&
+- dev_desc->idProduct == cpu_to_le16(SAMSUNG_PRODUCT_GT_B3730) &&
+- iface_desc->bInterfaceClass != USB_CLASS_CDC_DATA)
++ dev_desc->idProduct == cpu_to_le16(SAMSUNG_PRODUCT_GT_B3730) &&
++ iface_desc->bInterfaceClass != USB_CLASS_CDC_DATA)
+ return -ENODEV;
+
+ /* Store the blacklist info so we can use it during attach. */
+- usb_set_serial_data(serial, (void *)blacklist);
+-
++ //usb_set_serial_data(serial, (void *)blacklist);
++#if 1 //Added by Quectel
++ //Quectel UC20's interface 4 can be used as USB network device
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && \
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9003) \
++ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
++ return -ENODEV;
++ //Quectel EC20's interface 4 can be used as USB network device
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) && \
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9215) \
++ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
++ return -ENODEV;
++ //Quectel EC25&EC21&EG91&EG95&EG06&EP06&EM06&BG96/AG35's interface 4 can be used as USB network device
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) && \
++ serial->dev->descriptor.idProduct != cpu_to_le16(0x6026) \
++ && serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
++ return -ENODEV;
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) && \
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x6026) \
++ && serial->interface->cur_altsetting->desc.bInterfaceNumber<= 1)
++ return -ENODEV;
++#endif
++#if 0 //Added by Quectel
++ //For USB Auto Suspend
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9090)) {
++ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
++ usb_enable_autosuspend(serial->dev);
++ }
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)) {
++ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
++ usb_enable_autosuspend(serial->dev);
++ }
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)) {
++ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
++ usb_set_serial_data(serial, (void *)device_flags);
++ usb_enable_autosuspend(serial->dev);
++ }
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C) &&
++ serial->dev->descriptor.idProduct != cpu_to_le16(0x0306)) {
++ pm_runtime_set_autosuspend_delay(&serial->dev->dev, 3000);
++ usb_enable_autosuspend(serial->dev);
++ }
++#endif
++#if 0 //Added by Quectel
++ //For USB Remote Wakeup
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9090)) {
++ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
++ }
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9003)) {
++ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
++ }
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x05C6) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x9215)) {
++ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
++ }
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x2C7C)) {
++ device_init_wakeup(&serial->dev->dev, 1); //usb remote wakeup
++ }
++#endif
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x1476) &&
++ serial->interface->cur_altsetting->desc. bInterfaceNumber == 3)
++ return -ENODEV;
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x1476) &&
++ serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
++ return -ENODEV;
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x1509) &&
++ serial->interface->cur_altsetting->desc. bInterfaceNumber == 4)
++ return -ENODEV;
++ if (serial->dev->descriptor.idVendor == cpu_to_le16(0x19d2) &&
++ serial->dev->descriptor.idProduct == cpu_to_le16(0x1509) &&
++ serial->interface->cur_altsetting->desc. bInterfaceNumber == 5)
++ return -ENODEV;
+ return 0;
+ }
+
+--- linux-4.4.60.orig/drivers/usb/serial/qcserial.c
++++ linux-4.4.60/drivers/usb/serial/qcserial.c
+@@ -92,7 +92,7 @@ static const struct usb_device_id id_table[] = {
+ {USB_DEVICE(0x03f0, 0x241d)}, /* HP Gobi 2000 QDL device (VP412) */
+ {USB_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
+ {USB_DEVICE(0x05c6, 0x9214)}, /* Acer Gobi 2000 QDL device (VP413) */
+- {USB_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
++// {USB_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
+ {USB_DEVICE(0x05c6, 0x9264)}, /* Asus Gobi 2000 QDL device (VR305) */
+ {USB_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
+ {USB_DEVICE(0x05c6, 0x9234)}, /* Top Global Gobi 2000 QDL device (VR306) */
+--- linux-4.4.60.orig/drivers/usb/serial/usb_wwan.c
++++ linux-4.4.60/drivers/usb/serial/usb_wwan.c
+@@ -504,7 +504,19 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port,
+ usb_fill_bulk_urb(urb, serial->dev,
+ usb_sndbulkpipe(serial->dev, endpoint) | dir,
+ buf, len, callback, ctx);
+-
++#if 1 //Added by Quectel for zero packet
++ if (dir == USB_DIR_OUT) {
++ struct usb_device_descriptor *desc = &serial->dev->descriptor;
++ if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9090))
++ urb->transfer_flags |= URB_ZERO_PACKET;
++ if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9003))
++ urb->transfer_flags |= URB_ZERO_PACKET;
++ if (desc->idVendor == cpu_to_le16(0x05C6) && desc->idProduct == cpu_to_le16(0x9215))
++ urb->transfer_flags |= URB_ZERO_PACKET;
++ if (desc->idVendor == cpu_to_le16(0x2C7C))
++ urb->transfer_flags |= URB_ZERO_PACKET;
++ }
++#endif
+ return urb;
+ }
+
--
2.25.1

View File

@ -0,0 +1,69 @@
From 312017d0884366a9862abcc1e1df06acc8e7cf69 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Tue, 12 Jul 2022 12:23:17 +0800
Subject: [PATCH] ipq807x: add support novatel rndis
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../205-add-support-novatel-rndis.patch | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 feeds/ipq807x/ipq807x/patches/205-add-support-novatel-rndis.patch
diff --git a/feeds/ipq807x/ipq807x/patches/205-add-support-novatel-rndis.patch b/feeds/ipq807x/ipq807x/patches/205-add-support-novatel-rndis.patch
new file mode 100644
index 00000000..23145826
--- /dev/null
+++ b/feeds/ipq807x/ipq807x/patches/205-add-support-novatel-rndis.patch
@@ -0,0 +1,49 @@
+Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/cdc_ether.c
+===================================================================
+--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/net/usb/cdc_ether.c
++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/cdc_ether.c
+@@ -54,11 +54,19 @@ static int is_wireless_rndis(struct usb_
+ desc->bInterfaceProtocol == 3);
+ }
+
++static int is_novatel_rndis(struct usb_interface_descriptor *desc)
++{
++ return (desc->bInterfaceClass == USB_CLASS_MISC &&
++ desc->bInterfaceSubClass == 4 &&
++ desc->bInterfaceProtocol == 1);
++}
++
+ #else
+
+ #define is_rndis(desc) 0
+ #define is_activesync(desc) 0
+ #define is_wireless_rndis(desc) 0
++#define is_novatel_rndis(desc) 0
+
+ #endif
+
+@@ -150,7 +158,8 @@ int usbnet_generic_cdc_bind(struct usbne
+ */
+ rndis = (is_rndis(&intf->cur_altsetting->desc) ||
+ is_activesync(&intf->cur_altsetting->desc) ||
+- is_wireless_rndis(&intf->cur_altsetting->desc));
++ is_wireless_rndis(&intf->cur_altsetting->desc) ||
++ is_novatel_rndis(&intf->cur_altsetting->desc));
+
+ memset(info, 0, sizeof(*info));
+ info->control = intf;
+Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/rndis_host.c
+===================================================================
+--- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/net/usb/rndis_host.c
++++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/net/usb/rndis_host.c
+@@ -627,6 +627,10 @@ static const struct usb_device_id produc
+ /* RNDIS for tethering */
+ USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
+ .driver_info = (unsigned long) &rndis_info,
++}, {
++ /* Novatel Verizon USB730L */
++ USB_INTERFACE_INFO(USB_CLASS_MISC, 4, 1),
++ .driver_info = (unsigned long) &rndis_info,
+ },
+ { }, // END
+ };
--
2.25.1

View File

@ -1,15 +1,15 @@
From 3f74fb618703eca0ec38eb406275f07ac7d1786d Mon Sep 17 00:00:00 2001
From: "GL.iNet-Xinfa.Deng" <xinfa.deng@gl-inet.com>
Date: Sat, 12 Feb 2022 14:10:41 +0800
Subject: [PATCH] target: use gl metadata
From 257d12954c631deced9b3157cdca03ca3b95bc31 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 11:33:24 +0800
Subject: [PATCH] image: support append-gl-metadata
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
include/image-commands.mk | 30 ++++++++++++++++++++++++++++++
target/linux/ipq807x/image/ipq60xx.mk | 2 +-
2 files changed, 31 insertions(+), 1 deletion(-)
include/image-commands.mk | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/include/image-commands.mk b/include/image-commands.mk
index aa574d2..b29b868 100644
index 541ec4f575..aaf550c749 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -64,6 +64,36 @@ define Build/append-metadata
@ -49,19 +49,6 @@ index aa574d2..b29b868 100644
define Build/append-rootfs
dd if=$(IMAGE_ROOTFS) >> $@
endef
diff --git a/target/linux/ipq807x/image/ipq60xx.mk b/target/linux/ipq807x/image/ipq60xx.mk
index d95e393..5367b95 100644
--- a/target/linux/ipq807x/image/ipq60xx.mk
+++ b/target/linux/ipq807x/image/ipq60xx.mk
@@ -6,7 +6,7 @@ define Device/cig_wf188
DEVICE_DTS_CONFIG := config@cp03-c1
SUPPORTED_DEVICES := cig,wf188
IMAGES := sysupgrade.tar
- IMAGE/sysupgrade.tar/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata
+ IMAGE/sysupgrade.tar/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-gl-metadata
DEVICE_PACKAGES := ath11k-wifi-cig-wf188 uboot-env
endef
TARGET_DEVICES += cig_wf188
--
2.7.4
2.25.1

View File

@ -1,27 +0,0 @@
From c689638ced025d1356661bff142fddd054494584 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Fri, 21 Jan 2022 18:16:03 +0800
Subject: [PATCH 4/4] kernel: fix missing symbol
CONFIG_IP6_NF_TARGET_MASQUERADE
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
target/linux/generic/config-4.4 | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/linux/generic/config-4.4 b/target/linux/generic/config-4.4
index 4e7602f236..a7d2bd9bcb 100644
--- a/target/linux/generic/config-4.4
+++ b/target/linux/generic/config-4.4
@@ -1643,6 +1643,7 @@ CONFIG_IOSCHED_NOOP=y
# CONFIG_IP6_NF_NAT is not set
# CONFIG_IP6_NF_RAW is not set
# CONFIG_IP6_NF_TARGET_HL is not set
+# CONFIG_IP6_NF_TARGET_MASQUERADE is not set
# CONFIG_IP6_NF_TARGET_REJECT is not set
# CONFIG_IP6_NF_TARGET_SYNPROXY is not set
# CONFIG_IPACK_BUS is not set
--
2.25.1

View File

@ -1,4 +1,4 @@
From 5c109232c238a74b872716f82987320087e74bef Mon Sep 17 00:00:00 2001
From b3e9fa747eb4cf7bd832b9096483a3d2243ae8c0 Mon Sep 17 00:00:00 2001
From: gl-luochongjun <luochongjun@gl-inet.com>
Date: Tue, 5 Jul 2022 18:01:34 +0800
Subject: [PATCH] support append glinet private packages
@ -23,7 +23,7 @@ index 0000000000..7501d73cfc
+ $(foreach pkg,$(shell ls $(GL_PKGDIR)/$(p)_*.ipk),$(pkg)$(call GetABISuffix,$(pkg))))
+endif
diff --git a/package/Makefile b/package/Makefile
index ec503dc527..2e714b3e89 100644
index 18a19fff13..bbbca1ddbf 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -9,6 +9,7 @@ curdir:=package
@ -34,7 +34,7 @@ index ec503dc527..2e714b3e89 100644
-include $(TMP_DIR)/.packagedeps
package-y += kernel/linux
@@ -67,7 +68,8 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DE
@@ -68,7 +69,8 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DE
rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
mkdir -p $(TARGET_DIR)/tmp
$(call opkg,$(TARGET_DIR)) install \

View File

@ -1,4 +1,4 @@
From d612c9590e95795ee9429380847f24da57b44d45 Mon Sep 17 00:00:00 2001
From 17c966a382c534c5d087c561fb34534c1a018eea Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Sat, 22 Jan 2022 10:41:25 +0800
Subject: [PATCH] base-files: set default password to empty

View File

@ -1,30 +0,0 @@
From f10d460e9092633f860812d8a2cacec45036b1d4 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Sat, 22 Jan 2022 14:20:48 +0800
Subject: [PATCH] kernel: fix DEPENDS for kmod-usb-dwc3-qcom
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
package/kernel/linux/modules/usb.mk | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk
index 5530a18379..7183833e96 100644
--- a/package/kernel/linux/modules/usb.mk
+++ b/package/kernel/linux/modules/usb.mk
@@ -479,9 +479,10 @@ $(eval $(call KernelPackage,usb-dwc3-of-simple))
define KernelPackage/usb-dwc3-qcom
TITLE:=DWC3 Qualcomm USB driver
- DEPENDS:=@(!LINUX_4_14) @(TARGET_ipq40xx||TARGET_ipq806x) +kmod-usb-dwc3
+ DEPENDS:=@(!LINUX_4_14) @(TARGET_ipq40xx||TARGET_ipq806x||TARGET_ipq807x) +kmod-usb-dwc3
KCONFIG:= CONFIG_USB_DWC3_QCOM
- FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko
+ FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko \
+ $(LINUX_DIR)/drivers/usb/dwc3/dbm.ko
AUTOLOAD:=$(call AutoLoad,53,dwc3-qcom,1)
$(call AddDepends/usb)
endef
--
2.25.1

View File

@ -1,66 +0,0 @@
From 8dd91ef504bfab49c4105d4937d5a54524fac0a4 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Sat, 22 Jan 2022 10:01:13 +0800
Subject: [PATCH] exfat: replaced by gl-feed
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
package/kernel/exfat/Makefile | 46 -----------------------------------
1 file changed, 46 deletions(-)
delete mode 100644 package/kernel/exfat/Makefile
diff --git a/package/kernel/exfat/Makefile b/package/kernel/exfat/Makefile
deleted file mode 100644
index 4337b0f1aa..0000000000
--- a/package/kernel/exfat/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=exfat
-PKG_VERSION:=5.12.3
-PKG_RELEASE:=$(AUTORELEASE)
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://codeload.github.com/namjaejeon/linux-exfat-oot/tar.gz/$(PKG_VERSION)?
-PKG_HASH:=43889c73af76c466bbc904aff80354a62ecaa24c7b20e354ff735f5949907982
-PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/linux-exfat-oot-$(PKG_VERSION)
-
-PKG_MAINTAINER:=
-PKG_LICENSE:=GPL-2.0-only
-
-include $(INCLUDE_DIR)/package.mk
-
-define KernelPackage/fs-exfat
- SECTION:=kernel
- CATEGORY:=Kernel modules
- SUBMENU:=Filesystems
- TITLE:=exFAT kernel module
- URL:=https://github.com/namjaejeon/linux-exfat-oot
- FILES:=$(PKG_BUILD_DIR)/exfat.ko
- AUTOLOAD:=$(call AutoProbe,exfat)
- DEPENDS:= +kmod-nls-base
-endef
-
-define KernelPackage/exfat/description
- This package provides the kernel module for exfat.
-endef
-
-define Build/Compile
- $(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" \
- EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
- $(PKG_EXTRA_KCONFIG) \
- CONFIG_EXFAT_FS=m \
- modules
-endef
-
-$(eval $(call KernelPackage,fs-exfat))
--
2.25.1

View File

@ -1,46 +0,0 @@
From 0656fe636aa1bbafb60e6651e28675b4f7954299 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Sat, 22 Jan 2022 15:18:43 +0800
Subject: [PATCH] kmod-wireguard: replaced by gl-feeds
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
package/kernel/linux/modules/netsupport.mk | 27 ---
diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index 4343e850e9..3a4fcc0376 100644
--- a/package/kernel/linux/modules/netsupport.mk
+++ b/package/kernel/linux/modules/netsupport.mk
@@ -1258,30 +1258,3 @@ endef
$(eval $(call KernelPackage,netlink-diag))
-
-define KernelPackage/wireguard
- SUBMENU:=$(NETWORK_SUPPORT_MENU)
- TITLE:=WireGuard secure network tunnel
- DEPENDS:= \
- +kmod-crypto-lib-blake2s \
- +kmod-crypto-lib-chacha20poly1305 \
- +kmod-crypto-lib-curve25519 \
- +kmod-udptunnel4 \
- +IPV6:kmod-udptunnel6
- KCONFIG:= \
- CONFIG_WIREGUARD \
- CONFIG_WIREGUARD_DEBUG=n
- FILES:=$(LINUX_DIR)/drivers/net/wireguard/wireguard.ko
- AUTOLOAD:=$(call AutoProbe,wireguard)
-endef
-
-define KernelPackage/wireguard/description
- WireGuard is a novel VPN that runs inside the Linux Kernel and utilizes
- state-of-the-art cryptography. It aims to be faster, simpler, leaner, and
- more useful than IPSec, while avoiding the massive headache. It intends to
- be considerably more performant than OpenVPN. WireGuard is designed as a
- general purpose VPN for running on embedded interfaces and super computers
- alike, fit for many different circumstances. It uses UDP.
-endef
-
-$(eval $(call KernelPackage,wireguard))
2.25.1

View File

@ -1,69 +0,0 @@
From 7bb057919ba43b58afecf7fb426d1ae2708ea7f8 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Sat, 22 Jan 2022 15:54:15 +0800
Subject: [PATCH] kernel: add kmod-ipv6 and kmod-crypto-core
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
package/kernel/linux/modules/crypto.mk | 14 ++++++++++++++
package/kernel/linux/modules/netsupport.mk | 19 +++++++++++++++++++
2 files changed, 33 insertions(+)
diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk
index a68459d989..8872b37636 100644
--- a/package/kernel/linux/modules/crypto.mk
+++ b/package/kernel/linux/modules/crypto.mk
@@ -17,6 +17,20 @@ crypto_confvar=CONFIG_CRYPTO_$(word 1,$(subst =,$(space),$(1)))
crypto_file=$(LINUX_DIR)/crypto/$(word 2,$(subst =,$(space),$(1))).ko
crypto_name=$(if $(findstring y,$($(call crypto_confvar,$(1)))),,$(word 2,$(subst =,$(space),$(1))))
+define KernelPackage/crypto-core
+ SUBMENU:=$(CRYPTO_MENU)
+ TITLE:=Core CryptoAPI modules
+ KCONFIG:= \
+ CONFIG_CRYPTO=y \
+ CONFIG_CRYPTO_HW=y \
+ CONFIG_CRYPTO_BLKCIPHER \
+ CONFIG_CRYPTO_ALGAPI \
+ $(foreach mod,$(CRYPTO_MODULES),$(call crypto_confvar,$(mod)))
+ FILES:=$(foreach mod,$(CRYPTO_MODULES),$(call crypto_file,$(mod)))
+endef
+
+$(eval $(call KernelPackage,crypto-core))
+
define AddDepends/crypto
SUBMENU:=$(CRYPTO_MENU)
DEPENDS+= $(1)
diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk
index 3a4fcc0376..045dbc3aef 100644
--- a/package/kernel/linux/modules/netsupport.mk
+++ b/package/kernel/linux/modules/netsupport.mk
@@ -422,6 +422,25 @@ endef
$(eval $(call KernelPackage,iptunnel6))
+define KernelPackage/ipv6
+ SUBMENU:=$(NETWORK_SUPPORT_MENU)
+ TITLE:=IPv6 support
+ DEPENDS:=@IPV6
+ DEFAULT:=y
+ KCONFIG:= \
+ CONFIG_IPV6=y \
+ CONFIG_IPV6_PRIVACY=y \
+ CONFIG_IPV6_MULTIPLE_TABLES=y \
+ CONFIG_IPV6_MROUTE=y \
+ CONFIG_IPV6_PIMSM_V2=n \
+ CONFIG_IPV6_SUBTREES=y
+endef
+
+define KernelPackage/ipv6/description
+ Kernel modules for IPv6 support
+endef
+
+$(eval $(call KernelPackage,ipv6))
define KernelPackage/sit
SUBMENU:=$(NETWORK_SUPPORT_MENU)
--
2.25.1

View File

@ -1,14 +1,15 @@
From 2cc8787c704a278a6e454dca91c572e7249b757e Mon Sep 17 00:00:00 2001
From: gl-luochongjun <luochongjun@gl-inet.com>
Date: Thu, 17 Feb 2022 19:25:49 +0800
Subject: [PATCH] scripts gen_config add version info
From a0d43228ceb71f05f688c16b44fa01c99b07ba52 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 12:12:32 +0800
Subject: [PATCH] scripts: gen_config add version info
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
scripts/gen_config.py | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/scripts/gen_config.py b/scripts/gen_config.py
index 071e00bb4d..b45e0399df 100755
index 01c3f4050d..0cdbeab998 100755
--- a/scripts/gen_config.py
+++ b/scripts/gen_config.py
@@ -4,6 +4,8 @@ from os import getenv
@ -20,9 +21,9 @@ index 071e00bb4d..b45e0399df 100755
import sys
import yaml
@@ -61,6 +63,27 @@ def process_host_dependency(dependecy: dict, profile: dict):
else:
die("Can't continue without dependency and no `fallback_diffconfig` set")
@@ -191,6 +193,27 @@ CONFIG_TARGET_{profile["target"]}_{profile["subtarget"]}_DEVICE_{profile["profil
Path(".config").write_text(config_output)
print("Configuration written to .config")
+def load_metadata():
+ try:
@ -46,16 +47,16 @@ index 071e00bb4d..b45e0399df 100755
+ call("echo %s > %s" % (compile_time, "files/etc/version.date"), shell=True)
+ load_metadata()
def load_yaml(fname: str, profile: dict, include=True):
profile_file = (profile_folder / fname).with_suffix(".yml")
@@ -221,6 +244,7 @@ if __name__ == "__main__":
if __name__ == "__main__":
if "list" in sys.argv:
@@ -225,6 +248,7 @@ if __name__ == "__main__":
clean_tree()
setup_feeds(profile)
generate_config(profile)
+ generate_files(profile)
if profile["image"]:
Path("tmp/image-file").write_text(profile["image"])
run(["rm", "-rf", "tmp/"])
print("Running make defconfig")
if run(["make", "defconfig"]).returncode:
--
2.25.1

View File

@ -0,0 +1,26 @@
From 1a11604d2efb7c6ff6ea7ccefdc60785e3611e97 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 15:59:30 +0800
Subject: [PATCH] kernel: fix build br_netfilter fail
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
package/kernel/linux/modules/netfilter.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/kernel/linux/modules/netfilter.mk b/package/kernel/linux/modules/netfilter.mk
index 1be05e182a..8ad91784f3 100644
--- a/package/kernel/linux/modules/netfilter.mk
+++ b/package/kernel/linux/modules/netfilter.mk
@@ -859,7 +859,7 @@ define KernelPackage/br-netfilter
TITLE:=Bridge netfilter support modules
DEPENDS:=+kmod-ipt-core
FILES:=$(LINUX_DIR)/net/bridge/br_netfilter.ko
- KCONFIG:=CONFIG_BRIDGE_NETFILTER
+ KCONFIG:=CONFIG_BRIDGE_NETFILTER=y
AUTOLOAD:=$(call AutoProbe,br_netfilter)
endef
--
2.25.1

View File

@ -1,25 +0,0 @@
From 21c7031fd0e7165ca1957b63fd828b886e35dd0d Mon Sep 17 00:00:00 2001
From: "GL.iNet-Xinfa.Deng" <xinfa.deng@gl-inet.com>
Date: Tue, 25 Jan 2022 12:13:35 +0800
Subject: [PATCH] target: del bridge config
---
target/linux/ipq807x/base-files/etc/board.d/02_network | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network
index 42d33ad..6c240da 100755
--- a/target/linux/ipq807x/base-files/etc/board.d/02_network
+++ b/target/linux/ipq807x/base-files/etc/board.d/02_network
@@ -84,7 +84,7 @@ qcom_setup_macs()
board_config_update
board=$(board_name)
-ucidef_set_bridge_device bridge
+#ucidef_set_bridge_device bridge
qcom_setup_interfaces $board
qcom_setup_macs $board
board_config_flush
--
2.7.4

View File

@ -0,0 +1,25 @@
From e3193bb2501f93a10926acec4630f587889a0f9a Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 16:02:58 +0800
Subject: [PATCH] package/ppp: fix ipv6
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
package/network/services/ppp/files/ppp.sh | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/network/services/ppp/files/ppp.sh b/package/network/services/ppp/files/ppp.sh
index b553effd88..78a712b41a 100755
--- a/package/network/services/ppp/files/ppp.sh
+++ b/package/network/services/ppp/files/ppp.sh
@@ -140,6 +140,7 @@ ppp_generic_setup() {
${localip:+$localip:} \
${lcp_failure:+lcp-echo-interval $lcp_interval lcp-echo-failure $lcp_failure $lcp_adaptive} \
${ipv6:++ipv6} \
+ ${ipv6:-noipv6} \
${autoipv6:+set AUTOIPV6=1} \
${ip6table:+set IP6TABLE=$ip6table} \
${peerdns:+set PEERDNS=$peerdns} \
--
2.25.1

View File

@ -0,0 +1,33 @@
From 433edf8526efc5a8072330d6a22d9289fc9f3931 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 16:04:04 +0800
Subject: [PATCH] package/dnsmasq: remove limit hostname
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../dnsmasq/patches/300-remove-limit-hostname.patch | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 package/network/services/dnsmasq/patches/300-remove-limit-hostname.patch
diff --git a/package/network/services/dnsmasq/patches/300-remove-limit-hostname.patch b/package/network/services/dnsmasq/patches/300-remove-limit-hostname.patch
new file mode 100644
index 0000000000..3e9d7c53ea
--- /dev/null
+++ b/package/network/services/dnsmasq/patches/300-remove-limit-hostname.patch
@@ -0,0 +1,13 @@
+Index: dnsmasq-2.85/src/rfc2131.c
+===================================================================
+--- dnsmasq-2.85.orig/src/rfc2131.c
++++ dnsmasq-2.85/src/rfc2131.c
+@@ -724,7 +724,7 @@ size_t dhcp_reply(struct dhcp_context *c
+ borken_opt = 1;
+ else
+ daemon->dhcp_buff[len] = 0;
+- if (legal_hostname(daemon->dhcp_buff))
++ // if (legal_hostname(daemon->dhcp_buff))
+ client_hostname = daemon->dhcp_buff;
+ }
+
--
2.25.1

View File

@ -0,0 +1,33 @@
From 07ed17e88fec1b00fb05275a33ce44aa7d86cec3 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 16:05:34 +0800
Subject: [PATCH] package/iwinfo: fix kmgmt names
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../utils/iwinfo/patches/0002-fix-kmgmt-names.patch | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 package/network/utils/iwinfo/patches/0002-fix-kmgmt-names.patch
diff --git a/package/network/utils/iwinfo/patches/0002-fix-kmgmt-names.patch b/package/network/utils/iwinfo/patches/0002-fix-kmgmt-names.patch
new file mode 100644
index 0000000000..c8ef0c5a5d
--- /dev/null
+++ b/package/network/utils/iwinfo/patches/0002-fix-kmgmt-names.patch
@@ -0,0 +1,13 @@
+Index: libiwinfo-2021-06-09-c0414642/iwinfo_lib.c
+===================================================================
+--- libiwinfo-2021-06-09-c0414642.orig/iwinfo_lib.c
++++ libiwinfo-2021-06-09-c0414642/iwinfo_lib.c
+@@ -37,6 +37,8 @@ const char *IWINFO_KMGMT_NAMES[] = {
+ "NONE",
+ "802.1X",
+ "PSK",
++ "SAE",
++ "OWE",
+ };
+
+ const char *IWINFO_AUTH_NAMES[] = {
--
2.25.1

View File

@ -0,0 +1,110 @@
From cdad5fbc028b1a2c9ad5477692c46418fe1d6da6 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 16:06:46 +0800
Subject: [PATCH] opkg: use db and use standard output for conffile
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../system/opkg/patches/001-support-db.patch | 60 +++++++++++++++++++
.../002-conffile-use-standard-output.patch | 22 +++++++
2 files changed, 82 insertions(+)
create mode 100644 package/system/opkg/patches/001-support-db.patch
create mode 100644 package/system/opkg/patches/002-conffile-use-standard-output.patch
diff --git a/package/system/opkg/patches/001-support-db.patch b/package/system/opkg/patches/001-support-db.patch
new file mode 100644
index 0000000000..b37225f411
--- /dev/null
+++ b/package/system/opkg/patches/001-support-db.patch
@@ -0,0 +1,60 @@
+--- a/libopkg/opkg_cmd.c
++++ b/libopkg/opkg_cmd.c
+@@ -41,6 +41,29 @@
+ #include "opkg_configure.h"
+ #include "xsystem.h"
+
++int exec_command(const char *command)
++{
++ opkg_msg(NOTICE, "Updating database.\n");
++ remove("/var/lock/opkg.lock");
++
++ FILE *fp;
++
++ fp = popen(command, "r");
++ if (fp == NULL) {
++ return -1;
++ }
++ pclose(fp);
++
++ fp = fopen("/var/lock/opkg.lock", "w+");
++ if (fp != NULL) {
++ fclose(fp);
++ }
++
++ opkg_msg(NOTICE, "Database update completed.\n");
++
++ return 0;
++}
++
+ static void print_pkg(pkg_t * pkg)
+ {
+ char *version = pkg_version_str_alloc(pkg);
+@@ -200,7 +224,7 @@ static int opkg_update_cmd(int argc, cha
+ rmdir(tmp);
+ free(tmp);
+ free(lists_dir);
+-
++ exec_command("update_plugins_db update");
+ return failures;
+ }
+
+@@ -486,7 +510,8 @@ static int opkg_install_cmd(int argc, ch
+ err = -1;
+
+ write_status_files_if_changed();
+-
++ if (err == 0)
++ exec_command("update_plugins_db install");
+ return err;
+ }
+
+@@ -914,6 +939,8 @@ static int opkg_remove_cmd(int argc, cha
+ opkg_msg(NOTICE, "No packages removed.\n");
+
+ write_status_files_if_changed();
++ if (err == 0)
++ exec_command("update_plugins_db remove");
+ return err;
+ }
+
diff --git a/package/system/opkg/patches/002-conffile-use-standard-output.patch b/package/system/opkg/patches/002-conffile-use-standard-output.patch
new file mode 100644
index 0000000000..f587af4965
--- /dev/null
+++ b/package/system/opkg/patches/002-conffile-use-standard-output.patch
@@ -0,0 +1,22 @@
+--- a/libopkg/opkg_install.c
++++ b/libopkg/opkg_install.c
+@@ -1151,7 +1151,7 @@ static int resolve_conffiles(pkg_t * pkg
+ char *new_conffile;
+ sprintf_alloc(&new_conffile, "%s-opkg",
+ root_filename);
+- opkg_msg(ERROR,
++ opkg_msg(NOTICE,
+ "Existing conffile %s "
+ "is different from the conffile in the new package."
+ " The new conffile will be placed at %s.\n",
+--- a/opkg-2021-06-13-1bf042dd/libopkg/pkg.c
++++ b/libopkg/pkg.c
+@@ -1409,7 +1409,7 @@ int pkg_run_script(pkg_t * pkg, const ch
+ return 0;
+ }
+
+- sprintf_alloc(&cmd, "%s %s", path, args);
++ sprintf_alloc(&cmd, "%s %s 2>&1", path, args);
+ free(path);
+ {
+ const char *argv[] = { "/bin/sh", "-c", cmd, NULL };
--
2.25.1

View File

@ -0,0 +1,33 @@
From 7ec29795671f5629962106214e342fec4cb2ac5c Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 11 Jul 2022 17:00:52 +0800
Subject: [PATCH] package/exfat: fix build fail
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../kernel/exfat/patches/001-fix-build-fail.patch | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 package/kernel/exfat/patches/001-fix-build-fail.patch
diff --git a/package/kernel/exfat/patches/001-fix-build-fail.patch b/package/kernel/exfat/patches/001-fix-build-fail.patch
new file mode 100644
index 0000000000..9f72ff1bf0
--- /dev/null
+++ b/package/kernel/exfat/patches/001-fix-build-fail.patch
@@ -0,0 +1,13 @@
+Index: linux-exfat-oot-5.12.3/file.c
+===================================================================
+--- linux-exfat-oot-5.12.3.orig/file.c
++++ linux-exfat-oot-5.12.3/file.c
+@@ -243,7 +243,7 @@ void exfat_truncate(struct inode *inode,
+ {
+ struct super_block *sb = inode->i_sb;
+ struct exfat_sb_info *sbi = EXFAT_SB(sb);
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+ unsigned int blocksize = i_blocksize(inode);
+ #else
+ unsigned int blocksize = 1 << inode->i_blkbits;
--
2.25.1

View File

@ -1,13 +1,12 @@
From eae5b6ea255f5819e0423de012622b13ef2a1639 Mon Sep 17 00:00:00 2001
From 00f5e19dc6cf4a1a05b6da5b13824ea74103ec3a Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Fri, 21 Jan 2022 18:14:44 +0800
Subject: [PATCH 3/4] kernel: fix build fail for bridge
Date: Mon, 11 Jul 2022 17:29:26 +0800
Subject: [PATCH] kernel: fix dependency of kmod-nf-nat6
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
include/netfilter.mk | 1 +
package/kernel/linux/modules/netfilter.mk | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
include/netfilter.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/netfilter.mk b/include/netfilter.mk
index cee40ee008..9a3cdbbba8 100644
@ -21,19 +20,6 @@ index cee40ee008..9a3cdbbba8 100644
$(eval $(if $(NF_KMOD),$(call nf_add,NF_NAT,CONFIG_NF_NAT_MASQUERADE_IPV4, $(P_V4)nf_nat_masquerade_ipv4, lt 4.18),))
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_NAT,CONFIG_NETFILTER_XT_NAT, $(P_XT)xt_nat),))
diff --git a/package/kernel/linux/modules/netfilter.mk b/package/kernel/linux/modules/netfilter.mk
index 1be05e182a..8ad91784f3 100644
--- a/package/kernel/linux/modules/netfilter.mk
+++ b/package/kernel/linux/modules/netfilter.mk
@@ -859,7 +859,7 @@ define KernelPackage/br-netfilter
TITLE:=Bridge netfilter support modules
DEPENDS:=+kmod-ipt-core
FILES:=$(LINUX_DIR)/net/bridge/br_netfilter.ko
- KCONFIG:=CONFIG_BRIDGE_NETFILTER
+ KCONFIG:=CONFIG_BRIDGE_NETFILTER=y
AUTOLOAD:=$(call AutoProbe,br_netfilter)
endef
--
2.25.1

View File

@ -1,33 +0,0 @@
From 16e53377e20c9d0c7110d872e7dd30c8b24854d9 Mon Sep 17 00:00:00 2001
From: gl-luochongjun <luochongjun@gl-inet.com>
Date: Mon, 14 Feb 2022 17:40:17 +0800
Subject: [PATCH] fix bridge isolate
---
.../files/etc/uci-defaults/14_fix_bridge_isolate | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 package/base-files/files/etc/uci-defaults/14_fix_bridge_isolate
diff --git a/package/base-files/files/etc/uci-defaults/14_fix_bridge_isolate b/package/base-files/files/etc/uci-defaults/14_fix_bridge_isolate
new file mode 100644
index 0000000000..46c8e678a0
--- /dev/null
+++ b/package/base-files/files/etc/uci-defaults/14_fix_bridge_isolate
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+. /lib/functions.sh
+board=$(board_name)
+
+case "$board" in
+ glinet,axt1800|\
+ glinet,ax1800)
+ uci set network.@device[0].multicast_to_unicast='0'
+ uci commit network
+ ;;
+esac
+
+
--
2.25.1

View File

@ -1,6 +1,6 @@
From 8d82d53bcb6621fa2a42d25a018d573ca5ff5311 Mon Sep 17 00:00:00 2001
From 98d63f7d8526ea4d1e5249a49c46d0e759037e65 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 24 Jan 2022 10:23:47 +0800
Date: Mon, 11 Jul 2022 17:49:15 +0800
Subject: [PATCH] kmod-mmc: fix ko path
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
@ -9,10 +9,10 @@ Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk
index 784adcb744..bfcf0014f7 100644
index 8e3642ab9a..c297a1d004 100644
--- a/package/kernel/linux/modules/other.mk
+++ b/package/kernel/linux/modules/other.mk
@@ -381,7 +381,7 @@ define KernelPackage/mmc
@@ -380,7 +380,7 @@ define KernelPackage/mmc
CONFIG_SDIO_UART=n
FILES:= \
$(LINUX_DIR)/drivers/mmc/core/mmc_core.ko \

View File

@ -1,50 +0,0 @@
From 6bc083e643a37ef114d4cdb75555a32d5275ec56 Mon Sep 17 00:00:00 2001
From: "GL.iNet-Hongjian.Zhang" <hongjian.zhang@gl-inet.com>
Date: Tue, 31 May 2022 09:44:38 +0800
Subject: [PATCH] fix: usb net ipheth
---
.../790-usb-net-ipheth-hotplug.patch | 31 +++++++++++++++++++
1 file changed, 31 insertions(+)
create mode 100644 target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch
diff --git a/target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch b/target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch
new file mode 100644
index 0000000000..0187546f45
--- /dev/null
+++ b/target/linux/generic/backport-5.4/790-usb-net-ipheth-hotplug.patch
@@ -0,0 +1,31 @@
+Index: b/drivers/net/usb/ipheth.c
+===================================================================
+--- a/drivers/net/usb/ipheth.c 2021-08-18 14:57:05.000000000 +0800
++++ b/drivers/net/usb/ipheth.c 2022-05-30 19:32:40.843791147 +0800
+@@ -52,6 +52,7 @@
+ #include <linux/ethtool.h>
+ #include <linux/usb.h>
+ #include <linux/workqueue.h>
++#include <linux/proc_fs.h>
+
+ #define USB_VENDOR_APPLE 0x05ac
+
+@@ -504,6 +505,10 @@ static int ipheth_probe(struct usb_inter
+ netif_carrier_off(netdev);
+ netif_tx_stop_all_queues(netdev);
+ dev_info(&intf->dev, "Apple iPhone USB Ethernet device attached\n");
++ static const struct file_operations proc_fops = {
++ .owner = THIS_MODULE,
++ };
++ proc_create("iphoneconn",0644,NULL,&proc_fops);
+ return 0;
+
+ err_register_netdev:
+@@ -531,6 +536,7 @@ static void ipheth_disconnect(struct usb
+ }
+ usb_set_intfdata(intf, NULL);
+ dev_info(&intf->dev, "Apple iPhone USB Ethernet now disconnected\n");
++ remove_proc_entry("iphoneconn",NULL);
+ }
+
+ static struct usb_driver ipheth_driver = {
--
2.17.1

View File

@ -1,110 +0,0 @@
From f05fbc295d299e2e32cb568f55438b7d92c0dcf5 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Thu, 20 Jan 2022 17:53:37 +0800
Subject: [PATCH] target: support gl-axt1800
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
.../ipq807x/base-files/etc/board.d/02_network | 3 ++-
.../etc/hotplug.d/firmware/10-ath11k-caldata | 17 ++++++++++++++++-
.../ipq807x/base-files/lib/upgrade/platform.sh | 2 ++
target/linux/ipq807x/image/ipq60xx.mk | 10 ++++++++++
4 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network
index 7afc7de2e9..5ef107a2cb 100755
--- a/target/linux/ipq807x/base-files/etc/board.d/02_network
+++ b/target/linux/ipq807x/base-files/etc/board.d/02_network
@@ -36,7 +36,8 @@ qcom_setup_interfaces()
ucidef_set_interface_lan "eth0"
ucidef_set_interface_wan "eth1"
;;
- edgecore,eap101)
+ edgecore,eap101|\
+ glinet,axt1800)
ucidef_set_interface_lan "eth1 eth2"
ucidef_set_interface_wan "eth0"
;;
diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
index c8b4341aa1..7c1b216291 100755
--- a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
+++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
@@ -28,6 +28,17 @@ ath11k_generate_macs_wf194() {
echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs
}
+ath11k_generate_macs_gl_axt1800() {
+ mac=$(cat /proc/gl-hw-info/device_mac)
+ [ -z "$mac" ] && ath11k_generate_macs || {
+ touch /lib/firmware/ath11k-macs
+ mac1=$(macaddr_add $mac 2)
+ mac2=$(macaddr_add $mac 3)
+ echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs
+ echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs
+ }
+}
+
caldata_die() {
echo "caldata: " "$*"
exit 1
@@ -74,7 +85,8 @@ case "$FIRMWARE" in
wallys,dr6018|\
wallys,dr6018-v4|\
qcom,ipq6018-cp01|\
- xiaomi,ax1800)
+ xiaomi,ax1800|\
+ glinet,axt1800)
caldata_extract "0:ART" 0x1000 0x20000
;;
esac
@@ -106,6 +118,9 @@ ath11k-macs)
cig,wf194c)
ath11k_generate_macs_wf194
;;
+ glinet,axt1800)
+ ath11k_generate_macs_gl_axt1800
+ ;;
esac
;;
*)
diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
index 1cd40b29f5..b0191a6bfe 100755
--- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
@@ -24,6 +24,7 @@ platform_check_image() {
cig,wf188n|\
cig,wf194c|\
cig,wf194c4|\
+ glinet,axt1800|\
wallys,dr6018|\
wallys,dr6018-v4|\
edgecore,eap101|\
@@ -56,6 +57,7 @@ platform_do_upgrade() {
cig,wf188n|\
cig,wf194c|\
cig,wf194c4|\
+ glinet,axt1800|\
hfcl,ion4xi|\
hfcl,ion4xe|\
qcom,ipq6018-cp01|\
diff --git a/target/linux/ipq807x/image/ipq60xx.mk b/target/linux/ipq807x/image/ipq60xx.mk
index ed13cf02f0..96bc5f5ec1 100644
--- a/target/linux/ipq807x/image/ipq60xx.mk
+++ b/target/linux/ipq807x/image/ipq60xx.mk
@@ -81,3 +81,13 @@ define Device/xiaomi_ax1800
DEVICE_PACKAGES := ath11k-wifi-xiaomi-ax1800
endef
TARGET_DEVICES += xiaomi_ax1800
+
+define Device/glinet_axt1800
+ DEVICE_TITLE := GL-iNet AXT1800
+ DEVICE_DTS := qcom-ipq6018-gl-axt1800
+ SUPPORTED_DEVICES := glinet,axt1800
+ DEVICE_DTS_CONFIG := config@cp03-c1
+ DEVICE_PACKAGES := ath11k-wifi-gl-axt1800 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 kmod-qca-nss-drv-pppoe
+endef
+TARGET_DEVICES += glinet_axt1800
+
--
2.25.1

View File

@ -1,89 +0,0 @@
From 160c8c1f0b919d0e2f82ed36f119d10744b6df19 Mon Sep 17 00:00:00 2001
From: Jianhui Zhao <jianhui.zhao@gl-inet.com>
Date: Mon, 24 Jan 2022 15:58:37 +0800
Subject: [PATCH] target: support gl-ax1800
Signed-off-by: Jianhui Zhao <jianhui.zhao@gl-inet.com>
---
target/linux/ipq807x/base-files/etc/board.d/02_network | 3 ++-
.../base-files/etc/hotplug.d/firmware/10-ath11k-caldata | 4 +++-
target/linux/ipq807x/base-files/lib/upgrade/platform.sh | 2 ++
target/linux/ipq807x/image/ipq60xx.mk | 9 +++++++++
4 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/target/linux/ipq807x/base-files/etc/board.d/02_network b/target/linux/ipq807x/base-files/etc/board.d/02_network
index f23392f0ab..42d33ad9c9 100755
--- a/target/linux/ipq807x/base-files/etc/board.d/02_network
+++ b/target/linux/ipq807x/base-files/etc/board.d/02_network
@@ -51,7 +51,8 @@ qcom_setup_interfaces()
ucidef_set_interface_lan "eth0 eth1 eth2 eth3"
ucidef_set_interface_wan "eth4"
;;
- wallys,dr6018-v4)
+ wallys,dr6018-v4|\
+ glinet,ax1800)
ucidef_set_interface_lan "eth1 eth2 eth3 eth4"
ucidef_set_interface_wan "eth0"
;;
diff --git a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
index e3633b2b58..077f9be7c2 100755
--- a/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
+++ b/target/linux/ipq807x/base-files/etc/hotplug.d/firmware/10-ath11k-caldata
@@ -84,7 +84,8 @@ case "$FIRMWARE" in
wallys,dr6018-v4|\
qcom,ipq6018-cp01|\
xiaomi,ax1800|\
- glinet,axt1800)
+ glinet,axt1800|\
+ glinet,ax1800)
caldata_extract "0:ART" 0x1000 0x20000
;;
esac
@@ -116,6 +117,7 @@ ath11k-macs)
cig,wf194c)
ath11k_generate_macs_wf194
;;
+ glinet,ax1800|\
glinet,axt1800)
ath11k_generate_macs_gl_axt1800
;;
diff --git a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
index b0191a6bfe..a136630b05 100755
--- a/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq807x/base-files/lib/upgrade/platform.sh
@@ -25,6 +25,7 @@ platform_check_image() {
cig,wf194c|\
cig,wf194c4|\
glinet,axt1800|\
+ glinet,ax1800|\
wallys,dr6018|\
wallys,dr6018-v4|\
edgecore,eap101|\
@@ -58,6 +59,7 @@ platform_do_upgrade() {
cig,wf194c|\
cig,wf194c4|\
glinet,axt1800|\
+ glinet,ax1800|\
hfcl,ion4xi|\
hfcl,ion4xe|\
qcom,ipq6018-cp01|\
diff --git a/target/linux/ipq807x/image/ipq60xx.mk b/target/linux/ipq807x/image/ipq60xx.mk
index 7f3ccf23d3..ec4f45623b 100644
--- a/target/linux/ipq807x/image/ipq60xx.mk
+++ b/target/linux/ipq807x/image/ipq60xx.mk
@@ -91,3 +91,12 @@ define Device/glinet_axt1800
endef
TARGET_DEVICES += glinet_axt1800
+define Device/glinet_ax1800
+ DEVICE_TITLE := GL-iNet AX1800
+ DEVICE_DTS := qcom-ipq6018-gl-ax1800
+ SUPPORTED_DEVICES := glinet,ax1800
+ DEVICE_DTS_CONFIG := config@cp03-c1
+ DEVICE_PACKAGES := ath11k-wifi-gl-ax1800 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 kmod-qca-nss-drv-pppoe
+endef
+TARGET_DEVICES += glinet_ax1800
+
--
2.25.1

View File

@ -9,9 +9,6 @@ feeds:
- name: gl_feeds_common
uri: https://github.com/gl-inet/gl-feeds.git
revision: f4362cf288d723bae1d854976ef940730dc74bdf
- name: gl_feeds_wlan
uri: https://github.com/gl-inet/gl-feeds.git
revision: 4b1fdd875c5eb75b21508077909d5987440dddd1
- name: luci
uri: https://github.com/openwrt/luci.git
revision: 1c3b32dc1bec15e3076a447762b1c4f94eb75fb7
@ -19,3 +16,4 @@ feeds:
packages:
- wireless-regdb
- wget-ssl
- kmod-wireguard-backport

View File

@ -70,11 +70,7 @@ def qsdk_reset_tree():
def wlan_ap_reset_tree():
os.chdir(git_clone_dir)
run(["rm", "-rf", "openwrt"])
run(["git", "checkout", config["branch"]], check=True)
run(["git", "reset", "--hard", config.get("revision", config["branch"])], check=True)
if not config.get("next"):
run(["rm", "backports/0021-build-create-APK-files-parrallel-to-IPK.patch"], check=True)
run(["rm", "backports/0025-apk-backport-package.patch"], check=True)
run(["./setup.py", "--setup"])
def reset_tree():