Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
@@ -157,16 +157,6 @@ config KERNEL_KASAN
|
||||
Currently CONFIG_KASAN doesn't work with CONFIG_DEBUG_SLAB
|
||||
(the resulting kernel does not boot).
|
||||
|
||||
config KERNEL_KASAN_EXTRA
|
||||
bool "KAsan: extra checks"
|
||||
depends on KERNEL_KASAN && KERNEL_DEBUG_KERNEL
|
||||
help
|
||||
This enables further checks in the kernel address sanitizer, for now
|
||||
it only includes the address-use-after-scope check that can lead
|
||||
to excessive kernel stack usage, frame size warnings and longer
|
||||
compile time.
|
||||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715 has more
|
||||
|
||||
config KERNEL_KASAN_VMALLOC
|
||||
bool "Back mappings in vmalloc space with real shadow memory"
|
||||
depends on KERNEL_KASAN
|
||||
|
||||
@@ -226,6 +226,43 @@ define Build/copy-file
|
||||
cat "$(1)" > "$@"
|
||||
endef
|
||||
|
||||
# Create a header for a D-Link AI series recovery image and add it at the beginning of the image
|
||||
# Currently supported: AQUILA M30, EAGLE M32 and R32
|
||||
# Arguments:
|
||||
# 1: Start string of the header
|
||||
# 2: Firmware version
|
||||
# 3: Block start address
|
||||
# 4: Block length
|
||||
# 5: Device FMID
|
||||
define Build/dlink-ai-recovery-header
|
||||
$(eval header_start=$(word 1,$(1)))
|
||||
$(eval firmware_version=$(word 2,$(1)))
|
||||
$(eval block_start=$(word 3,$(1)))
|
||||
$(eval block_length=$(word 4,$(1)))
|
||||
$(eval device_fmid=$(word 5,$(1)))
|
||||
# create $@.header without the checksum
|
||||
echo -en "$(header_start)\x00\x00" > "$@.header"
|
||||
# Calculate checksum over data area ($@) and append it to the header.
|
||||
# The checksum is the 2byte-sum over the whole data area.
|
||||
# Every overflow during the checksum calculation must increment the current checksum value by 1.
|
||||
od -v -w2 -tu2 -An --endian little "$@" | awk '{ s+=$$1; } END { s%=65535; printf "%c%c",s%256,s/256; }' >> "$@.header"
|
||||
echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00" >> "$@.header"
|
||||
echo -en "$(firmware_version)" >> "$@.header"
|
||||
# Only one block supported: Erase start/length is identical to data start/length
|
||||
echo -en "$(block_start)$(block_length)$(block_start)$(block_length)" >> "$@.header"
|
||||
# Only zeros
|
||||
echo -en "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" >> "$@.header"
|
||||
# Last 16 bytes, but without checksum
|
||||
echo -en "\x42\x48\x02\x00\x00\x00\x08\x00\x00\x00\x00\x00" >> "$@.header"
|
||||
echo -en "$(device_fmid)" >> "$@.header"
|
||||
# Calculate and append checksum: The checksum must be set so that the 2byte-sum of the whole header is 0.
|
||||
# Every overflow during the checksum calculation must increment the current checksum value by 1.
|
||||
od -v -w2 -tu2 -An --endian little "$@.header" | awk '{s+=65535-$$1;}END{s%=65535;printf "%c%c",s%256,s/256;}' >> "$@.header"
|
||||
cat "$@.header" "$@" > "$@.new"
|
||||
mv "$@.new" "$@"
|
||||
rm "$@.header"
|
||||
endef
|
||||
|
||||
define Build/dlink-sge-image
|
||||
$(STAGING_DIR_HOST)/bin/dlink-sge-image $(1) $@ $@.enc
|
||||
mv $@.enc $@
|
||||
|
||||
@@ -511,7 +511,7 @@ define Device/Build/initramfs
|
||||
$$(if $$(CONFIG_JSON_OVERVIEW_IMAGE_INFO), $(BUILD_DIR)/json_info_files/$$(KERNEL_INITRAMFS_IMAGE).json,))
|
||||
|
||||
$(KDIR)/$$(KERNEL_INITRAMFS_NAME):: image_prepare
|
||||
$(1)-images: $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE))
|
||||
$(1)-initramfs-images: $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE))
|
||||
$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
|
||||
cp $$^ $$@
|
||||
|
||||
@@ -639,7 +639,7 @@ define Device/Build/image
|
||||
ifndef IB
|
||||
$$(ROOTFS/$(1)/$(3)): $(if $(TARGET_PER_DEVICE_ROOTFS),target-dir-$$(ROOTFS_ID/$(3)))
|
||||
endif
|
||||
$(KDIR)/tmp/$(call DEVICE_IMG_NAME,$(1),$(2)): $$(KDIR_KERNEL_IMAGE) $$(ROOTFS/$(1)/$(3))
|
||||
$(KDIR)/tmp/$(call DEVICE_IMG_NAME,$(1),$(2)): $$(KDIR_KERNEL_IMAGE) $$(ROOTFS/$(1)/$(3)) $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(if $(IB),,$(3)-initramfs-images))
|
||||
@rm -f $$@
|
||||
[ -f $$(word 1,$$^) -a -f $$(word 2,$$^) ]
|
||||
$$(call concat_cmd,$(if $(IMAGE/$(2)/$(1)),$(IMAGE/$(2)/$(1)),$(IMAGE/$(2))))
|
||||
@@ -695,7 +695,7 @@ define Device/Build/artifact
|
||||
$(BUILD_DIR)/json_info_files/$(DEVICE_IMG_PREFIX)-$(1).json, \
|
||||
$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1))
|
||||
$(eval $(call Device/Export,$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1)))
|
||||
$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1): $$(KDIR_KERNEL_IMAGE) $(2)-images
|
||||
$(KDIR)/tmp/$(DEVICE_IMG_PREFIX)-$(1): $$(KDIR_KERNEL_IMAGE) $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS),$(if $(IB),,$(2)-initramfs-images)) $(2)-images
|
||||
@rm -f $$@
|
||||
$$(call concat_cmd,$(ARTIFACT/$(1)))
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .161
|
||||
LINUX_KERNEL_HASH-5.15.161 = d629f78680dc4b65e3d78b61406fb7757b960c83c206e63ad8c2606b3e3c474c
|
||||
LINUX_VERSION-5.15 = .162
|
||||
LINUX_KERNEL_HASH-5.15.162 = 91bfc0ea152ce7b102a0b79d35a7c92843874ebf085c99d2ba8b4d85e62b1a7c
|
||||
|
||||
@@ -253,8 +253,6 @@ $(eval $(call nf_add,IPT_LED,CONFIG_NETFILTER_XT_TARGET_LED, $(P_XT)xt_LED))
|
||||
# tee
|
||||
|
||||
$(eval $(call nf_add,IPT_TEE,CONFIG_NETFILTER_XT_TARGET_TEE, $(P_XT)xt_TEE))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_TEE,CONFIG_NF_DUP_IPV4, $(P_V4)nf_dup_ipv4),))
|
||||
$(eval $(if $(NF_KMOD),$(call nf_add,IPT_TEE,CONFIG_NF_DUP_IPV6, $(P_V6)nf_dup_ipv6),))
|
||||
|
||||
# u32
|
||||
|
||||
|
||||
@@ -329,7 +329,15 @@ ifeq ($(DUMP),1)
|
||||
ifneq ($(CONFIG_CPU_MIPS32_R2),)
|
||||
FEATURES += mips16
|
||||
endif
|
||||
FEATURES += $(foreach v,6 7,$(if $(CONFIG_CPU_V$(v)),arm_v$(v)))
|
||||
ifneq ($(CONFIG_CPU_V6),)
|
||||
FEATURES += arm_v6
|
||||
endif
|
||||
ifneq ($(CONFIG_CPU_V6K),)
|
||||
FEATURES += arm_v6
|
||||
endif
|
||||
ifneq ($(CONFIG_CPU_V7),)
|
||||
FEATURES += arm_v7
|
||||
endif
|
||||
|
||||
# remove duplicates
|
||||
FEATURES:=$(sort $(FEATURES))
|
||||
|
||||
@@ -371,7 +371,7 @@ group_add_next() {
|
||||
return
|
||||
fi
|
||||
gids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/group)
|
||||
gid=65536
|
||||
gid=32768
|
||||
while echo "$gids" | grep -q "^$gid$"; do
|
||||
gid=$((gid + 1))
|
||||
done
|
||||
@@ -402,7 +402,7 @@ user_add() {
|
||||
local rc
|
||||
[ -z "$uid" ] && {
|
||||
uids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/passwd)
|
||||
uid=65536
|
||||
uid=32768
|
||||
while echo "$uids" | grep -q "^$uid$"; do
|
||||
uid=$((uid + 1))
|
||||
done
|
||||
|
||||
@@ -81,6 +81,9 @@ glinet,gl-mt6000)
|
||||
glinet,gl-mt3000)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x80000" "0x20000"
|
||||
;;
|
||||
dlink,aquila-pro-ai-m30-a1)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x40000"
|
||||
;;
|
||||
h3c,magic-nx30-pro|\
|
||||
jcg,q30|\
|
||||
netcore,n60|\
|
||||
|
||||
@@ -33,7 +33,8 @@ jdcloud,re-cp-02|\
|
||||
yuncore,ax820)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x10000" "0x10000"
|
||||
;;
|
||||
arcadyan,we420223-99)
|
||||
arcadyan,we420223-99|\
|
||||
dlink,dir-806a-b1)
|
||||
ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x1000" "0x1000"
|
||||
;;
|
||||
ampedwireless,ally-00x19k|\
|
||||
@@ -76,6 +77,7 @@ h3c,tx1806|\
|
||||
jcg,q20|\
|
||||
jcg,q20-pb-boot|\
|
||||
linksys,e7350|\
|
||||
netgear,eax12|\
|
||||
netgear,wax202|\
|
||||
zyxel,wsm20)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
|
||||
|
||||
@@ -0,0 +1,324 @@
|
||||
--- /dev/null
|
||||
+++ b/configs/mt7986a_jdcloud_re-cp-03_defconfig
|
||||
@@ -0,0 +1,112 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
|
||||
+CONFIG_POSITION_INDEPENDENT=y
|
||||
+CONFIG_ARCH_MEDIATEK=y
|
||||
+CONFIG_TEXT_BASE=0x41e00000
|
||||
+CONFIG_SYS_MALLOC_F_LEN=0x4000
|
||||
+CONFIG_NR_DRAM_BANKS=1
|
||||
+CONFIG_ENV_SIZE=0x40000
|
||||
+CONFIG_ENV_OFFSET=0x400000
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="mt7986a-jdcloud_re-cp-03"
|
||||
+CONFIG_SYS_PROMPT="MT7986> "
|
||||
+CONFIG_OF_LIBFDT_OVERLAY=y
|
||||
+CONFIG_TARGET_MT7986=y
|
||||
+CONFIG_PRE_CON_BUF_ADDR=0x4007EF00
|
||||
+CONFIG_DEBUG_UART_BASE=0x11002000
|
||||
+CONFIG_DEBUG_UART_CLOCK=40000000
|
||||
+CONFIG_ENV_OFFSET_REDUND=0x440000
|
||||
+CONFIG_SYS_LOAD_ADDR=0x46000000
|
||||
+CONFIG_DEBUG_UART=y
|
||||
+CONFIG_FIT=y
|
||||
+CONFIG_BOOTDELAY=30
|
||||
+CONFIG_AUTOBOOT_KEYED=y
|
||||
+CONFIG_AUTOBOOT_MENU_SHOW=y
|
||||
+CONFIG_DEFAULT_FDT_FILE="mediatek/mt7986a-jdcloud_re-cp-03.dtb"
|
||||
+CONFIG_LOGLEVEL=7
|
||||
+CONFIG_PRE_CONSOLE_BUFFER=y
|
||||
+CONFIG_LOG=y
|
||||
+CONFIG_BOARD_LATE_INIT=y
|
||||
+CONFIG_HUSH_PARSER=y
|
||||
+CONFIG_CMD_CPU=y
|
||||
+CONFIG_CMD_LICENSE=y
|
||||
+CONFIG_CMD_BOOTMENU=y
|
||||
+CONFIG_CMD_ASKENV=y
|
||||
+CONFIG_CMD_ERASEENV=y
|
||||
+CONFIG_CMD_ENV_FLAGS=y
|
||||
+CONFIG_CMD_STRINGS=y
|
||||
+CONFIG_CMD_DM=y
|
||||
+CONFIG_CMD_GPIO=y
|
||||
+CONFIG_CMD_PWM=y
|
||||
+CONFIG_CMD_GPT=y
|
||||
+CONFIG_CMD_MMC=y
|
||||
+CONFIG_CMD_PART=y
|
||||
+CONFIG_CMD_DHCP=y
|
||||
+CONFIG_CMD_TFTPSRV=y
|
||||
+CONFIG_CMD_RARP=y
|
||||
+CONFIG_CMD_PING=y
|
||||
+CONFIG_CMD_CDP=y
|
||||
+CONFIG_CMD_SNTP=y
|
||||
+CONFIG_CMD_DNS=y
|
||||
+CONFIG_CMD_LINK_LOCAL=y
|
||||
+CONFIG_CMD_PXE=y
|
||||
+CONFIG_CMD_CACHE=y
|
||||
+CONFIG_CMD_PSTORE=y
|
||||
+CONFIG_CMD_PSTORE_MEM_ADDR=0x42ff0000
|
||||
+CONFIG_CMD_UUID=y
|
||||
+CONFIG_CMD_HASH=y
|
||||
+CONFIG_CMD_SMC=y
|
||||
+CONFIG_CMD_EXT4=y
|
||||
+CONFIG_CMD_FAT=y
|
||||
+CONFIG_CMD_FS_GENERIC=y
|
||||
+CONFIG_CMD_FS_UUID=y
|
||||
+CONFIG_OF_EMBED=y
|
||||
+CONFIG_ENV_OVERWRITE=y
|
||||
+CONFIG_ENV_IS_IN_MMC=y
|
||||
+CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
|
||||
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
+CONFIG_USE_DEFAULT_ENV_FILE=y
|
||||
+CONFIG_DEFAULT_ENV_FILE="jdcloud_re-cp-03_env"
|
||||
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
|
||||
+CONFIG_VERSION_VARIABLE=y
|
||||
+CONFIG_NET_RANDOM_ETHADDR=y
|
||||
+CONFIG_NETCONSOLE=y
|
||||
+CONFIG_USE_IPADDR=y
|
||||
+CONFIG_IPADDR="192.168.1.1"
|
||||
+CONFIG_USE_SERVERIP=y
|
||||
+CONFIG_SERVERIP="192.168.1.254"
|
||||
+CONFIG_REGMAP=y
|
||||
+CONFIG_SYSCON=y
|
||||
+CONFIG_BUTTON=y
|
||||
+CONFIG_BUTTON_GPIO=y
|
||||
+CONFIG_CLK=y
|
||||
+CONFIG_GPIO_HOG=y
|
||||
+CONFIG_LED=y
|
||||
+CONFIG_LED_BLINK=y
|
||||
+CONFIG_LED_GPIO=y
|
||||
+CONFIG_SUPPORT_EMMC_BOOT=y
|
||||
+CONFIG_MMC_HS200_SUPPORT=y
|
||||
+CONFIG_MMC_MTK=y
|
||||
+CONFIG_PHY_FIXED=y
|
||||
+CONFIG_DM_MDIO=y
|
||||
+CONFIG_MEDIATEK_ETH=y
|
||||
+CONFIG_PHY=y
|
||||
+CONFIG_PHY_MTK_TPHY=y
|
||||
+CONFIG_PINCTRL=y
|
||||
+CONFIG_PINCONF=y
|
||||
+CONFIG_PINCTRL_MT7622=y
|
||||
+CONFIG_PINCTRL_MT7986=y
|
||||
+CONFIG_POWER_DOMAIN=y
|
||||
+CONFIG_MTK_POWER_DOMAIN=y
|
||||
+CONFIG_DM_REGULATOR=y
|
||||
+CONFIG_DM_REGULATOR_FIXED=y
|
||||
+CONFIG_DM_REGULATOR_GPIO=y
|
||||
+CONFIG_DM_PWM=y
|
||||
+CONFIG_PWM_MTK=y
|
||||
+CONFIG_RAM=y
|
||||
+CONFIG_SCSI=y
|
||||
+CONFIG_DM_SCSI=y
|
||||
+CONFIG_DM_SERIAL=y
|
||||
+CONFIG_MTK_SERIAL=y
|
||||
+CONFIG_ZSTD=y
|
||||
+CONFIG_HEXDUMP=y
|
||||
+CONFIG_LMB_MAX_REGIONS=64
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/mt7986a-jdcloud_re-cp-03.dts
|
||||
@@ -0,0 +1,148 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
+
|
||||
+/dts-v1/;
|
||||
+#include <dt-bindings/input/linux-event-codes.h>
|
||||
+#include "mt7986.dtsi"
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+
|
||||
+/ {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ model = "JDCloud RE-CP-03";
|
||||
+ compatible = "mediatek,mt7986", "mediatek,mt7986-rfb";
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = &uart0;
|
||||
+ tick-timer = &timer0;
|
||||
+ };
|
||||
+
|
||||
+ memory@40000000 {
|
||||
+ device_type = "memory";
|
||||
+ reg = <0x40000000 0x40000000>;
|
||||
+ };
|
||||
+
|
||||
+ gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ button-joylink {
|
||||
+ label = "joylink";
|
||||
+ linux,code = <BTN_0>;
|
||||
+ gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+
|
||||
+ button-reset {
|
||||
+ label = "reset";
|
||||
+ linux,code = <KEY_RESTART>;
|
||||
+ gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led-0 {
|
||||
+ label = "blue:status";
|
||||
+ gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+
|
||||
+ led-1 {
|
||||
+ label = "red:status";
|
||||
+ gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
|
||||
+ default-state = "on";
|
||||
+ };
|
||||
+
|
||||
+ led-2 {
|
||||
+ label = "green:status";
|
||||
+ gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
||||
+ default-state = "off";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_1p8v: regulator-1p8v {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "fixed-1.8V";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ reg_3p3v: regulator-3p3v {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "fixed-3.3V";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+ð {
|
||||
+ status = "okay";
|
||||
+ mediatek,gmac-id = <0>;
|
||||
+ phy-mode = "2500base-x";
|
||||
+ mediatek,switch = "mt7531";
|
||||
+ reset-gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
|
||||
+
|
||||
+ fixed-link {
|
||||
+ speed = <2500>;
|
||||
+ full-duplex;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ bus-width = <8>;
|
||||
+ cap-mmc-highspeed;
|
||||
+ cap-mmc-hw-reset;
|
||||
+ max-frequency = <200000000>;
|
||||
+ non-removable;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc0_pins_default>;
|
||||
+ vmmc-supply = <®_3p3v>;
|
||||
+ vqmmc-supply = <®_1p8v>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pinctrl {
|
||||
+ mmc0_pins_default: mmc0default {
|
||||
+ mux {
|
||||
+ function = "flash";
|
||||
+ groups = "emmc_51";
|
||||
+ };
|
||||
+
|
||||
+ conf-cmd-dat {
|
||||
+ pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
|
||||
+ "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
|
||||
+ "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
|
||||
+ input-enable;
|
||||
+ drive-strength = <MTK_DRIVE_4mA>;
|
||||
+ bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
|
||||
+ };
|
||||
+
|
||||
+ conf-clk {
|
||||
+ pins = "EMMC_CK";
|
||||
+ drive-strength = <MTK_DRIVE_6mA>;
|
||||
+ bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
|
||||
+ };
|
||||
+
|
||||
+ conf-dsl {
|
||||
+ pins = "EMMC_DSL";
|
||||
+ bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
|
||||
+ };
|
||||
+
|
||||
+ conf-rst {
|
||||
+ pins = "EMMC_RSTB";
|
||||
+ drive-strength = <MTK_DRIVE_4mA>;
|
||||
+ bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&watchdog {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
--- /dev/null
|
||||
+++ b/jdcloud_re-cp-03_env
|
||||
@@ -0,0 +1,55 @@
|
||||
+ipaddr=192.168.1.1
|
||||
+serverip=192.168.1.254
|
||||
+loadaddr=0x46000000
|
||||
+console=earlycon=uart8250,mmio32,0x11002000 console=ttyS0
|
||||
+bootargs=root=/dev/mmcblk0p65
|
||||
+bootcmd=if pstore check ; then run boot_recovery ; else run boot_emmc ; fi
|
||||
+bootconf=config-1
|
||||
+bootdelay=0
|
||||
+bootfile=openwrt-mediatek-filogic-jdcloud_re-cp-03-initramfs-recovery.itb
|
||||
+bootfile_bl2=openwrt-mediatek-filogic-jdcloud_re-cp-03-preloader.bin
|
||||
+bootfile_fip=openwrt-mediatek-filogic-jdcloud_re-cp-03-bl31-uboot.fip
|
||||
+bootfile_upg=openwrt-mediatek-filogic-jdcloud_re-cp-03-squashfs-sysupgrade.itb
|
||||
+bootled_pwr=red:status
|
||||
+bootled_rec=blue:status
|
||||
+bootmenu_confirm_return=askenv - Press ENTER to return to menu ; bootmenu 60
|
||||
+bootmenu_default=0
|
||||
+bootmenu_delay=0
|
||||
+bootmenu_title= [0;34m( ( ( [1;39mOpenWrt[0;34m ) ) )
|
||||
+bootmenu_0=Initialize environment.=run _firstboot
|
||||
+bootmenu_0d=Run default boot command.=run boot_default
|
||||
+bootmenu_1=Boot system via TFTP.=run boot_tftp ; run bootmenu_confirm_return
|
||||
+bootmenu_2=Boot production system from eMMC.=run boot_production ; run bootmenu_confirm_return
|
||||
+bootmenu_3=Boot recovery system from eMMC.=run boot_recovery ; run bootmenu_confirm_return
|
||||
+bootmenu_4=Load production system via TFTP then write to eMMC.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_production ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
|
||||
+bootmenu_5=Load recovery system via TFTP then write to eMMC.=setenv noboot 1 ; setenv replacevol 1 ; run boot_tftp_recovery ; setenv noboot ; setenv replacevol ; run bootmenu_confirm_return
|
||||
+bootmenu_6=[31mLoad BL31+U-Boot FIP via TFTP then write to eMMC.[0m=run boot_tftp_write_fip ; run bootmenu_confirm_return
|
||||
+bootmenu_7=[31mLoad BL2 preloader via TFTP then write to eMMC.[0m=run boot_tftp_write_bl2 ; run bootmenu_confirm_return
|
||||
+bootmenu_8=Reboot.=reset
|
||||
+bootmenu_9=Reset all settings to factory defaults.=run reset_factory ; reset
|
||||
+boot_first=if button reset ; then led $bootled_rec on ; run boot_tftp_recovery ; setenv flag_recover 1 ; run boot_default ; fi ; bootmenu
|
||||
+boot_default=if env exists flag_recover ; then else run bootcmd ; fi ; run boot_recovery ; setenv replacevol 1 ; run boot_tftp_forever
|
||||
+boot_production=led $bootled_pwr on ; run emmc_read_production && bootm $loadaddr#$bootconf ; led $bootled_pwr off
|
||||
+boot_recovery=led $bootled_rec on ; run emmc_read_recovery && bootm $loadaddr#$bootconf ; led $bootled_rec off
|
||||
+boot_emmc=run boot_production ; run boot_recovery
|
||||
+boot_tftp_forever=led $bootled_rec on ; while true ; do run boot_tftp_recovery ; sleep 1 ; done
|
||||
+boot_tftp_production=tftpboot $loadaddr $bootfile_upg && env exists replacevol && iminfo $loadaddr && run emmc_write_production ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
|
||||
+boot_tftp_recovery=tftpboot $loadaddr $bootfile && env exists replacevol && iminfo $loadaddr && run emmc_write_recovery ; if env exists noboot ; then else bootm $loadaddr#$bootconf ; fi
|
||||
+boot_tftp_write_fip=tftpboot $loadaddr $bootfile_fip && run emmc_write_fip
|
||||
+boot_tftp_write_bl2=tftpboot $loadaddr $bootfile_bl2 && run emmc_write_bl2
|
||||
+boot_tftp=tftpboot $loadaddr $bootfile && bootm $loadaddr#$bootconf
|
||||
+mmc_write_vol=imszb $loadaddr image_size && test 0x$image_size -le 0x$part_size && mmc erase 0x$part_addr 0x$image_size && mmc write $loadaddr 0x$part_addr 0x$image_size
|
||||
+mmc_read_vol=mmc read $loadaddr $part_addr 0x100 && imszb $loadaddr image_size && test 0x$image_size -le 0x$part_size && mmc read $loadaddr 0x$part_addr 0x$image_size && setexpr filesize $image_size * 0x200
|
||||
+part_default=production
|
||||
+part_recovery=recovery
|
||||
+reset_factory=eraseenv && reset
|
||||
+emmc_read_production=part start mmc 0 $part_default part_addr && part size mmc 0 $part_default part_size && run mmc_read_vol
|
||||
+emmc_read_recovery=part start mmc 0 $part_recovery part_addr && part size mmc 0 $part_recovery part_size && run mmc_read_vol
|
||||
+emmc_write_bl2=mmc partconf 0 1 1 1 && mmc erase 0x0 0x400 && mmc write $fileaddr 0x0 0x400 ; mmc partconf 0 1 1 0
|
||||
+emmc_write_fip=mmc erase 0x3400 0x2000 && mmc write $fileaddr 0x3400 0x2000 && mmc erase 0x2000 0x800
|
||||
+emmc_write_production=part start mmc 0 $part_default part_addr && part size mmc 0 $part_default part_size && run mmc_write_vol
|
||||
+emmc_write_recovery=part start mmc 0 $part_recovery part_addr && part size mmc 0 $part_recovery part_size && run mmc_write_vol
|
||||
+_init_env=setenv _init_env ; setenv _create_env ; saveenv ; saveenv
|
||||
+_firstboot=setenv _firstboot ; run _switch_to_menu ; run _init_env ; run boot_first
|
||||
+_switch_to_menu=setenv _switch_to_menu ; setenv bootdelay 3 ; setenv bootmenu_delay 3 ; setenv bootmenu_0 $bootmenu_0d ; setenv bootmenu_0d ; run _bootmenu_update_title
|
||||
+_bootmenu_update_title=setenv _bootmenu_update_title ; setenv bootmenu_title "$bootmenu_title [33m$ver[0m"
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=intel-microcode
|
||||
PKG_VERSION:=20240312
|
||||
PKG_VERSION:=20240531
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
|
||||
PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
|
||||
PKG_HASH:=25f53bab1bf0c84aba927a77a97a9f1147c94199fa95b5187d874f839f022808
|
||||
PKG_HASH:=808cbb57a790dab7060b59b31e70e54ac47d3798d75e9784ed57a65b9f951fc4
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
|
||||
PKG_CPE_ID:=cpe:/a:intel:microcode
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ define Package/firmware-default
|
||||
URL:=http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git
|
||||
TITLE:=$(1)
|
||||
DEPENDS:=$(2)
|
||||
LICENSE_FILES:=$(3)
|
||||
LICENSE:=$(4)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode,@TARGET_x86)
|
||||
Package/amd64-microcode = $(call Package/firmware-default,AMD64 CPU microcode,@TARGET_x86,LICENSE.amd-ucode)
|
||||
define Package/amd64-microcode/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
|
||||
$(CP) \
|
||||
@@ -8,7 +8,7 @@ endef
|
||||
|
||||
$(eval $(call BuildPackage,amd64-microcode))
|
||||
|
||||
Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware)
|
||||
Package/amdgpu-firmware = $(call Package/firmware-default,AMDGPU Video Driver firmware,,LICENSE.amdgpura)
|
||||
define Package/amdgpu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/amdgpu
|
||||
$(CP) \
|
||||
@@ -18,7 +18,7 @@ endef
|
||||
|
||||
$(eval $(call BuildPackage,amdgpu-firmware))
|
||||
|
||||
Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware)
|
||||
Package/radeon-firmware = $(call Package/firmware-default,Radeon Video Driver firmware,,LICENSE.radeon)
|
||||
define Package/radeon-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/radeon
|
||||
$(CP) \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/brcmfmac-firmware-4339-sdio = $(call Package/firmware-default,Broadcom 4339 FullMAC SDIO firmware)
|
||||
Package/brcmfmac-firmware-4339-sdio = $(call Package/firmware-default,Broadcom 4339 FullMAC SDIO firmware,,LICENCE.cypressb)
|
||||
define Package/brcmfmac-firmware-4339-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/cypress
|
||||
$(INSTALL_DATA) \
|
||||
@@ -11,7 +11,7 @@ define Package/brcmfmac-firmware-4339-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-4339-sdio))
|
||||
|
||||
Package/brcmfmac-firmware-43602a1-pcie = $(call Package/firmware-default,Broadcom 43602a1 FullMAC PCIe firmware)
|
||||
Package/brcmfmac-firmware-43602a1-pcie = $(call Package/firmware-default,Broadcom 43602a1 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-firmware-43602a1-pcie/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -20,7 +20,7 @@ define Package/brcmfmac-firmware-43602a1-pcie/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43602a1-pcie))
|
||||
|
||||
Package/brcmfmac-firmware-4366b1-pcie = $(call Package/firmware-default,Broadcom 4366b1 FullMAC PCIe firmware)
|
||||
Package/brcmfmac-firmware-4366b1-pcie = $(call Package/firmware-default,Broadcom 4366b1 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-firmware-4366b1-pcie/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -29,7 +29,7 @@ define Package/brcmfmac-firmware-4366b1-pcie/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-4366b1-pcie))
|
||||
|
||||
Package/brcmfmac-firmware-4366c0-pcie = $(call Package/firmware-default,Broadcom 4366c0 FullMAC PCIe firmware)
|
||||
Package/brcmfmac-firmware-4366c0-pcie = $(call Package/firmware-default,Broadcom 4366c0 FullMAC PCIe firmware,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-firmware-4366c0-pcie/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -38,7 +38,7 @@ define Package/brcmfmac-firmware-4366c0-pcie/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-4366c0-pcie))
|
||||
|
||||
Package/brcmfmac-firmware-4329-sdio = $(call Package/firmware-default,Broadcom BCM4329 FullMac SDIO firmware)
|
||||
Package/brcmfmac-firmware-4329-sdio = $(call Package/firmware-default,Broadcom BCM4329 FullMac SDIO firmware,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-firmware-4329-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -47,7 +47,7 @@ define Package/brcmfmac-firmware-4329-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-4329-sdio))
|
||||
|
||||
Package/brcmfmac-nvram-43430-sdio = $(call Package/firmware-default,Broadcom BCM43430 SDIO NVRAM)
|
||||
Package/brcmfmac-nvram-43430-sdio = $(call Package/firmware-default,Broadcom BCM43430 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-nvram-43430-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -95,7 +95,7 @@ define Package/brcmfmac-nvram-43430-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-nvram-43430-sdio))
|
||||
|
||||
Package/brcmfmac-firmware-43430a0-sdio = $(call Package/firmware-default,Broadcom BCM43430a0 FullMac SDIO firmware)
|
||||
Package/brcmfmac-firmware-43430a0-sdio = $(call Package/firmware-default,Broadcom BCM43430a0 FullMac SDIO firmware,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-firmware-43430a0-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -104,7 +104,7 @@ define Package/brcmfmac-firmware-43430a0-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-43430a0-sdio))
|
||||
|
||||
Package/brcmfmac-nvram-43455-sdio = $(call Package/firmware-default,Broadcom BCM43455 SDIO NVRAM)
|
||||
Package/brcmfmac-nvram-43455-sdio = $(call Package/firmware-default,Broadcom BCM43455 SDIO NVRAM,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmfmac-nvram-43455-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
@@ -161,7 +161,7 @@ define Package/brcmfmac-firmware-usb/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,brcmfmac-firmware-usb))
|
||||
|
||||
Package/brcmsmac-firmware = $(call Package/firmware-default,Broadcom BCM43xx softmac PCIe firmware)
|
||||
Package/brcmsmac-firmware = $(call Package/firmware-default,Broadcom BCM43xx softmac PCIe firmware,,LICENCE.broadcom_bcm43xx)
|
||||
define Package/brcmsmac-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/brcm
|
||||
$(INSTALL_DATA) \
|
||||
|
||||
@@ -177,6 +177,13 @@ define Package/iwlwifi-firmware-ax200/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,iwlwifi-firmware-ax200))
|
||||
|
||||
Package/iwlwifi-firmware-ax201 = $(call Package/firmware-default,Intel AX201 firmware)
|
||||
define Package/iwlwifi-firmware-ax201/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/iwlwifi-QuZ-a0-hr-b0-72.ucode $(1)/lib/firmware
|
||||
endef
|
||||
$(eval $(call BuildPackage,iwlwifi-firmware-ax201))
|
||||
|
||||
Package/iwlwifi-firmware-ax210 = $(call Package/firmware-default,Intel AX210 firmware)
|
||||
define Package/iwlwifi-firmware-ax210/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/mwl8k-firmware = $(call Package/firmware-default,Marvell 8366/8687 firmware)
|
||||
Package/mwl8k-firmware = $(call Package/firmware-default,Marvell 8366/8687 firmware,,LICENCE.Marvell)
|
||||
define Package/mwl8k-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mwl8k
|
||||
$(INSTALL_DATA) \
|
||||
@@ -11,7 +11,7 @@ define Package/mwl8k-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mwl8k-firmware))
|
||||
|
||||
Package/mwifiex-pcie-firmware = $(call Package/firmware-default,Marvell 8897 firmware)
|
||||
Package/mwifiex-pcie-firmware = $(call Package/firmware-default,Marvell 8897 firmware,,LICENCE.Marvell)
|
||||
define Package/mwifiex-pcie-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mrvl
|
||||
$(INSTALL_DATA) \
|
||||
@@ -20,7 +20,7 @@ define Package/mwifiex-pcie-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mwifiex-pcie-firmware))
|
||||
|
||||
Package/mwifiex-sdio-firmware = $(call Package/firmware-default,Marvell 8887/8997 firmware)
|
||||
Package/mwifiex-sdio-firmware = $(call Package/firmware-default,Marvell 8887/8997 firmware,,LICENCE.Marvell)
|
||||
define Package/mwifiex-sdio-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mrvl
|
||||
$(INSTALL_DATA) \
|
||||
@@ -31,7 +31,7 @@ define Package/mwifiex-sdio-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mwifiex-sdio-firmware))
|
||||
|
||||
Package/libertas-usb-firmware = $(call Package/firmware-default,Marvell 8388/8682 USB firmware)
|
||||
Package/libertas-usb-firmware = $(call Package/firmware-default,Marvell 8388/8682 USB firmware,,LICENCE.Marvell)
|
||||
define Package/libertas-usb-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/libertas
|
||||
$(INSTALL_DATA) \
|
||||
@@ -41,7 +41,7 @@ define Package/libertas-usb-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,libertas-usb-firmware))
|
||||
|
||||
Package/libertas-sdio-firmware = $(call Package/firmware-default,Marvell 8385/8686/8688 SDIO firmware)
|
||||
Package/libertas-sdio-firmware = $(call Package/firmware-default,Marvell 8385/8686/8688 SDIO firmware,,LICENCE.Marvell)
|
||||
define Package/libertas-sdio-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/libertas
|
||||
$(INSTALL_DATA) \
|
||||
@@ -60,7 +60,7 @@ define Package/libertas-sdio-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,libertas-sdio-firmware))
|
||||
|
||||
Package/libertas-spi-firmware = $(call Package/firmware-default,Marvell 8686 SPI firmware)
|
||||
Package/libertas-spi-firmware = $(call Package/firmware-default,Marvell 8686 SPI firmware,,LICENCE.Marvell)
|
||||
define Package/libertas-spi-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/libertas
|
||||
$(INSTALL_DATA) \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/mt7601u-firmware = $(call Package/firmware-default,MediaTek MT7601U firmware)
|
||||
Package/mt7601u-firmware = $(call Package/firmware-default,MediaTek MT7601U firmware,,LICENCE.mediatek)
|
||||
define Package/mt7601u-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
$(INSTALL_DATA) \
|
||||
@@ -42,7 +42,7 @@ define Package/rt73-usb-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rt73-usb-firmware))
|
||||
|
||||
Package/mt7622bt-firmware = $(call Package/firmware-default,mt7622bt firmware)
|
||||
Package/mt7622bt-firmware = $(call Package/firmware-default,mt7622bt firmware,,LICENCE.mediatek)
|
||||
define Package/mt7622bt-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
$(INSTALL_DATA) \
|
||||
@@ -51,7 +51,7 @@ define Package/mt7622bt-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mt7622bt-firmware))
|
||||
|
||||
Package/mt7921bt-firmware = $(call Package/firmware-default,mt7921bt firmware)
|
||||
Package/mt7921bt-firmware = $(call Package/firmware-default,mt7921bt firmware,,LICENCE.mediatek)
|
||||
define Package/mt7921bt-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
$(INSTALL_DATA) \
|
||||
@@ -60,7 +60,7 @@ define Package/mt7921bt-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mt7921bt-firmware))
|
||||
|
||||
Package/mt7922bt-firmware = $(call Package/firmware-default,mt7922bt firmware)
|
||||
Package/mt7922bt-firmware = $(call Package/firmware-default,mt7922bt firmware,,LICENCE.mediatek)
|
||||
define Package/mt7922bt-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
$(INSTALL_DATA) \
|
||||
@@ -69,7 +69,7 @@ define Package/mt7922bt-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mt7922bt-firmware))
|
||||
|
||||
Package/mt7981-wo-firmware = $(call Package/firmware-default,MT7981 offload firmware)
|
||||
Package/mt7981-wo-firmware = $(call Package/firmware-default,MT7981 offload firmware,,LICENCE.mediatek)
|
||||
define Package/mt7981-wo-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
$(INSTALL_DATA) \
|
||||
@@ -78,7 +78,7 @@ define Package/mt7981-wo-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,mt7981-wo-firmware))
|
||||
|
||||
Package/mt7986-wo-firmware = $(call Package/firmware-default,MT7986 offload firmware)
|
||||
Package/mt7986-wo-firmware = $(call Package/firmware-default,MT7986 offload firmware,,LICENCE.mediatek)
|
||||
define Package/mt7986-wo-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
|
||||
$(INSTALL_DATA) \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/ar3k-firmware = $(call Package/firmware-default,ath3k firmware)
|
||||
Package/ar3k-firmware = $(call Package/firmware-default,ath3k firmware,,LICENSE.QualcommAtheros_ar3k)
|
||||
define Package/ar3k-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ar3k
|
||||
$(CP) \
|
||||
@@ -21,7 +21,7 @@ define Package/ath6k-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath6k-firmware))
|
||||
|
||||
Package/ath9k-htc-firmware = $(call Package/firmware-default,AR9271/AR7010 firmware)
|
||||
Package/ath9k-htc-firmware = $(call Package/firmware-default,AR9271/AR7010 firmware,,LICENCE.open-ath9k-htc-firmware)
|
||||
define Package/ath9k-htc-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath9k_htc
|
||||
$(INSTALL_DATA) \
|
||||
@@ -31,7 +31,7 @@ define Package/ath9k-htc-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath9k-htc-firmware))
|
||||
|
||||
Package/carl9170-firmware = $(call Package/firmware-default,AR9170 firmware)
|
||||
Package/carl9170-firmware = $(call Package/firmware-default,AR9170 firmware,,carl9170fw/GPL)
|
||||
define Package/carl9170-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/carl9170-1.fw $(1)/lib/firmware
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/ath10k-board-qca4019 = $(call Package/firmware-default,ath10k qca4019 board firmware)
|
||||
Package/ath10k-board-qca4019 = $(call Package/firmware-default,ath10k qca4019 board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca4019/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -6,7 +6,7 @@ define Package/ath10k-board-qca4019/install
|
||||
$(1)/lib/firmware/ath10k/QCA4019/hw1.0/
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca4019))
|
||||
Package/ath10k-firmware-qca4019 = $(call Package/firmware-default,ath10k qca4019 firmware)
|
||||
Package/ath10k-firmware-qca4019 = $(call Package/firmware-default,ath10k qca4019 firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca4019/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -15,7 +15,7 @@ define Package/ath10k-firmware-qca4019/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca4019))
|
||||
|
||||
Package/ath10k-board-qca9377 = $(call Package/firmware-default,ath10k qca9377 board firmware)
|
||||
Package/ath10k-board-qca9377 = $(call Package/firmware-default,ath10k qca9377 board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca9377/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -23,7 +23,7 @@ define Package/ath10k-board-qca9377/install
|
||||
$(1)/lib/firmware/ath10k/QCA9377/hw1.0/
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca9377))
|
||||
Package/ath10k-firmware-qca9377 = $(call Package/firmware-default,ath10k qca9377 firmware,+ath10k-board-qca9377)
|
||||
Package/ath10k-firmware-qca9377 = $(call Package/firmware-default,ath10k qca9377 firmware,+ath10k-board-qca9377,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca9377/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -32,7 +32,7 @@ define Package/ath10k-firmware-qca9377/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca9377))
|
||||
|
||||
Package/ath10k-board-qca9377-sdio = $(call Package/firmware-default,ath10k qca9377 board sdio firmware)
|
||||
Package/ath10k-board-qca9377-sdio = $(call Package/firmware-default,ath10k qca9377 board sdio firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca9377-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -40,7 +40,7 @@ define Package/ath10k-board-qca9377-sdio/install
|
||||
$(1)/lib/firmware/ath10k/QCA9377/hw1.0/board.bin
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca9377-sdio))
|
||||
Package/ath10k-firmware-qca9377-sdio = $(call Package/firmware-default,ath10k qca9377 sdio firmware,+ath10k-board-qca9377-sdio)
|
||||
Package/ath10k-firmware-qca9377-sdio = $(call Package/firmware-default,ath10k qca9377 sdio firmware,+ath10k-board-qca9377-sdio,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca9377-sdio/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9377/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -49,7 +49,7 @@ define Package/ath10k-firmware-qca9377-sdio/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca9377-sdio))
|
||||
|
||||
Package/ath10k-board-qca9887 = $(call Package/firmware-default,ath10k qca9887 board firmware)
|
||||
Package/ath10k-board-qca9887 = $(call Package/firmware-default,ath10k qca9887 board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca9887/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9887/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -57,7 +57,7 @@ define Package/ath10k-board-qca9887/install
|
||||
$(1)/lib/firmware/ath10k/QCA9887/hw1.0/board.bin
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca9887))
|
||||
Package/ath10k-firmware-qca9887 = $(call Package/firmware-default,ath10k qca9887 firmware,+ath10k-board-qca9887)
|
||||
Package/ath10k-firmware-qca9887 = $(call Package/firmware-default,ath10k qca9887 firmware,+ath10k-board-qca9887,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca9887/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9887/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -66,7 +66,7 @@ define Package/ath10k-firmware-qca9887/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca9887))
|
||||
|
||||
Package/ath10k-board-qca9888 = $(call Package/firmware-default,ath10k qca9888 board firmware)
|
||||
Package/ath10k-board-qca9888 = $(call Package/firmware-default,ath10k qca9888 board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca9888/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -74,7 +74,7 @@ define Package/ath10k-board-qca9888/install
|
||||
$(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca9888))
|
||||
Package/ath10k-firmware-qca9888 = $(call Package/firmware-default,ath10k qca9888 firmware,+ath10k-board-qca9888)
|
||||
Package/ath10k-firmware-qca9888 = $(call Package/firmware-default,ath10k qca9888 firmware,+ath10k-board-qca9888,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca9888/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -83,7 +83,7 @@ define Package/ath10k-firmware-qca9888/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca9888))
|
||||
|
||||
Package/ath10k-board-qca988x = $(call Package/firmware-default,ath10k qca988x board firmware)
|
||||
Package/ath10k-board-qca988x = $(call Package/firmware-default,ath10k qca988x board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca988x/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -91,7 +91,7 @@ define Package/ath10k-board-qca988x/install
|
||||
$(1)/lib/firmware/ath10k/QCA988X/hw2.0/
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca988x))
|
||||
Package/ath10k-firmware-qca988x = $(call Package/firmware-default,ath10k qca988x firmware,+ath10k-board-qca988x)
|
||||
Package/ath10k-firmware-qca988x = $(call Package/firmware-default,ath10k qca988x firmware,+ath10k-board-qca988x,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca988x/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -100,7 +100,7 @@ define Package/ath10k-firmware-qca988x/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca988x))
|
||||
|
||||
Package/ath10k-firmware-qca6174 = $(call Package/firmware-default,ath10k qca6174 firmware)
|
||||
Package/ath10k-firmware-qca6174 = $(call Package/firmware-default,ath10k qca6174 firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca6174/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA6174/hw2.1
|
||||
$(INSTALL_DATA) \
|
||||
@@ -119,7 +119,7 @@ define Package/ath10k-firmware-qca6174/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca6174))
|
||||
|
||||
Package/ath10k-board-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 board firmware)
|
||||
Package/ath10k-board-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca99x0/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -128,7 +128,7 @@ define Package/ath10k-board-qca99x0/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca99x0))
|
||||
|
||||
Package/ath10k-firmware-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 firmware,+ath10k-board-qca99x0)
|
||||
Package/ath10k-firmware-qca99x0 = $(call Package/firmware-default,ath10k qca99x0 firmware,+ath10k-board-qca99x0,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca99x0/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA99X0/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -137,7 +137,7 @@ define Package/ath10k-firmware-qca99x0/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-firmware-qca99x0))
|
||||
|
||||
Package/ath10k-board-qca9984 = $(call Package/firmware-default,ath10k qca9984 board firmware)
|
||||
Package/ath10k-board-qca9984 = $(call Package/firmware-default,ath10k qca9984 board firmware,,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-board-qca9984/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -145,7 +145,7 @@ define Package/ath10k-board-qca9984/install
|
||||
$(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath10k-board-qca9984))
|
||||
Package/ath10k-firmware-qca9984 = $(call Package/firmware-default,ath10k qca9984 firmware,+ath10k-board-qca9984)
|
||||
Package/ath10k-firmware-qca9984 = $(call Package/firmware-default,ath10k qca9984 firmware,+ath10k-board-qca9984,LICENSE.QualcommAtheros_ath10k)
|
||||
define Package/ath10k-firmware-qca9984/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/ath11k-firmware-qca6390 = $(call Package/firmware-default,QCA6390 ath11k firmware)
|
||||
Package/ath11k-firmware-qca6390 = $(call Package/firmware-default,QCA6390 ath11k firmware,,LICENCE.atheros_firmware)
|
||||
define Package/ath11k-firmware-qca6390/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/QCA6390/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -6,7 +6,7 @@ define Package/ath11k-firmware-qca6390/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath11k-firmware-qca6390))
|
||||
|
||||
Package/ath11k-firmware-wcn6750 = $(call Package/firmware-default,WCN6750 ath11k firmware)
|
||||
Package/ath11k-firmware-wcn6750 = $(call Package/firmware-default,WCN6750 ath11k firmware,,LICENCE.atheros_firmware)
|
||||
define Package/ath11k-firmware-wcn6750/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/WCN6750/hw1.0
|
||||
$(INSTALL_DATA) \
|
||||
@@ -14,7 +14,7 @@ define Package/ath11k-firmware-wcn6750/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,ath11k-firmware-wcn6750))
|
||||
|
||||
Package/ath11k-firmware-wcn6855 = $(call Package/firmware-default,WCN6855 ath11k firmware)
|
||||
Package/ath11k-firmware-wcn6855 = $(call Package/firmware-default,WCN6855 ath11k firmware,,LICENCE.atheros_firmware)
|
||||
define Package/ath11k-firmware-wcn6855/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath11k/WCN6855/hw2.0
|
||||
$(INSTALL_DATA) \
|
||||
|
||||
@@ -20,7 +20,7 @@ define Package/r8169-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,r8169-firmware))
|
||||
|
||||
Package/rtl8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware)
|
||||
Package/rtl8188eu-firmware = $(call Package/firmware-default,RealTek RTL8188EU firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8188eu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(CP) \
|
||||
@@ -38,7 +38,7 @@ define Package/rtl8192ce-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192ce-firmware))
|
||||
|
||||
Package/rtl8192cu-firmware = $(call Package/firmware-default,RealTek RTL8192CU firmware)
|
||||
Package/rtl8192cu-firmware = $(call Package/firmware-default,RealTek RTL8192CU firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8192cu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192cufw.bin $(1)/lib/firmware/rtlwifi
|
||||
@@ -48,28 +48,28 @@ define Package/rtl8192cu-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192cu-firmware))
|
||||
|
||||
Package/rtl8192de-firmware = $(call Package/firmware-default,RealTek RTL8192DE firmware)
|
||||
Package/rtl8192de-firmware = $(call Package/firmware-default,RealTek RTL8192DE firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8192de-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192defw.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192de-firmware))
|
||||
|
||||
Package/rtl8192eu-firmware = $(call Package/firmware-default,RealTek RTL8192EU firmware)
|
||||
Package/rtl8192eu-firmware = $(call Package/firmware-default,RealTek RTL8192EU firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8192eu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192eu_nic.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192eu-firmware))
|
||||
|
||||
Package/rtl8192se-firmware = $(call Package/firmware-default,RealTek RTL8192SE firmware)
|
||||
Package/rtl8192se-firmware = $(call Package/firmware-default,RealTek RTL8192SE firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8192se-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8192sefw.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8192se-firmware))
|
||||
|
||||
Package/rtl8723au-firmware = $(call Package/firmware-default,RealTek RTL8723AU firmware)
|
||||
Package/rtl8723au-firmware = $(call Package/firmware-default,RealTek RTL8723AU firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8723au-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723aufw_A.bin $(1)/lib/firmware/rtlwifi
|
||||
@@ -78,7 +78,7 @@ define Package/rtl8723au-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8723au-firmware))
|
||||
|
||||
Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU firmware)
|
||||
Package/rtl8723bu-firmware = $(call Package/firmware-default,RealTek RTL8723BU firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8723bu-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8723bu_nic.bin $(1)/lib/firmware/rtlwifi
|
||||
@@ -116,10 +116,10 @@ define Package/rtl8761bu-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8761bu-firmware))
|
||||
|
||||
Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware)
|
||||
Package/rtl8821ae-firmware = $(call Package/firmware-default,RealTek RTL8821AE firmware,,LICENCE.rtlwifi_firmware.txt)
|
||||
define Package/rtl8821ae-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8821aefw.bin $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8821aefw_29.bin $(1)/lib/firmware/rtlwifi
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/rtlwifi/rtl8821aefw_wowlan.bin $(1)/lib/firmware/rtlwifi
|
||||
endef
|
||||
$(eval $(call BuildPackage,rtl8821ae-firmware))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Package/wl12xx-firmware = $(call Package/firmware-default,TI WL12xx firmware)
|
||||
Package/wl12xx-firmware = $(call Package/firmware-default,TI WL12xx firmware,,LICENCE.ti-connectivity)
|
||||
define Package/wl12xx-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
|
||||
$(INSTALL_DATA) \
|
||||
@@ -15,7 +15,7 @@ define Package/wl12xx-firmware/install
|
||||
endef
|
||||
$(eval $(call BuildPackage,wl12xx-firmware))
|
||||
|
||||
Package/wl18xx-firmware = $(call Package/firmware-default,TI WL18xx firmware)
|
||||
Package/wl18xx-firmware = $(call Package/firmware-default,TI WL18xx firmware,,LICENCE.ti-connectivity)
|
||||
define Package/wl18xx-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
|
||||
$(INSTALL_DATA) \
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wireless-regdb
|
||||
PKG_VERSION:=2024.05.08
|
||||
PKG_VERSION:=2024.07.04
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=ISC
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
|
||||
PKG_HASH:=9aee1d86ebebb363b714bec941b2820f31e3b7f1a485ddc9fcbd9985c7d3e7c4
|
||||
PKG_HASH:=9832a14e1be24abff7be30dee3c9a1afb5fdfcf475a0d91aafef039f8d85f5eb
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/db.txt
|
||||
+++ b/db.txt
|
||||
@@ -406,8 +406,8 @@ country CL: DFS-JP
|
||||
@@ -415,8 +415,8 @@ country CL: DFS-JP
|
||||
# https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20236/d1dc19424d5a4cfe90d631adeee8dd58.pdf
|
||||
# Note: The transmit power for 5150-5350MHz bands can be raised by 3dBm when TPC is implemented
|
||||
country CN: DFS-FCC
|
||||
@@ -11,7 +11,7 @@
|
||||
(5725 - 5850 @ 80), (33)
|
||||
# 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm
|
||||
# ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf
|
||||
@@ -1789,14 +1789,12 @@ country US: DFS-FCC
|
||||
@@ -1857,14 +1857,12 @@ country US: DFS-FCC
|
||||
(920 - 928 @ 8), (30)
|
||||
(2400 - 2472 @ 40), (30)
|
||||
# 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients
|
||||
|
||||
34
package/kernel/leds-gca230718/Makefile
Normal file
34
package/kernel/leds-gca230718/Makefile
Normal file
@@ -0,0 +1,34 @@
|
||||
#
|
||||
# Copyright (C) 2008-2010 OpenWrt.org
|
||||
#
|
||||
# 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:=leds-gca230718
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define KernelPackage/leds-gca230718
|
||||
SUBMENU:=LED modules
|
||||
TITLE:=GCA230718 LED support (e.g. for D-Link M30)
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/leds-gca230718.ko
|
||||
AUTOLOAD:=$(call AutoProbe,leds-gca230718,1)
|
||||
DEPENDS:=@TARGET_mediatek_filogic
|
||||
endef
|
||||
|
||||
define KernelPackage/leds-gca230718/description
|
||||
GCA230718 LED support (e.g. for D-Link M30) using I2C.
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,leds-gca230718))
|
||||
1
package/kernel/leds-gca230718/src/Makefile
Normal file
1
package/kernel/leds-gca230718/src/Makefile
Normal file
@@ -0,0 +1 @@
|
||||
obj-m := leds-gca230718.o
|
||||
227
package/kernel/leds-gca230718/src/leds-gca230718.c
Normal file
227
package/kernel/leds-gca230718/src/leds-gca230718.c
Normal file
@@ -0,0 +1,227 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* GCA230718 LED support (e.g. for D-Link M30) using I2C
|
||||
*
|
||||
* Copyright 2022 Roland Reinl <reinlroland+github@gmail.com>
|
||||
*
|
||||
* This driver can control RGBW LEDs which are connected to a GCA230718.
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/led-class-multicolor.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
#define GCA230718_MAX_LEDS (4u)
|
||||
|
||||
#define GCA230718_OPMODE_DISABLED (0x00u)
|
||||
#define GCA230718_OPMODE_NO_TOGGLE (0x01u)
|
||||
#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_DISABLED (0x02u)
|
||||
#define GCA230718_OPMODE_TOGGLE_RAMP_CONTROL_ENSABLED (0x03u)
|
||||
|
||||
#define GCA230718_1ST_SEQUENCE_BYTE_1 (0x02u)
|
||||
#define GCA230718_2ND_SEQUENCE_BYTE_1 (0x01u)
|
||||
#define GCA230718_3RD_SEQUENCE_BYTE_1 (0x03u)
|
||||
|
||||
struct gca230718_led
|
||||
{
|
||||
enum led_brightness brightness;
|
||||
struct i2c_client *client;
|
||||
struct led_classdev ledClassDev;
|
||||
};
|
||||
|
||||
struct gca230718_private
|
||||
{
|
||||
struct mutex lock;
|
||||
struct gca230718_led leds[GCA230718_MAX_LEDS];
|
||||
};
|
||||
|
||||
static void gca230718_init_private_led_data(struct gca230718_private* data)
|
||||
{
|
||||
u8 ledIndex;
|
||||
for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++)
|
||||
{
|
||||
data->leds[ledIndex].client = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void gca230718_send_sequence(struct i2c_client *client, u8 byte0, struct gca230718_private* gca230718_privateData)
|
||||
{
|
||||
int status = 0;
|
||||
u8 ledIndex;
|
||||
const u8 resetCommand[2] = { 0x81, 0xE4 };
|
||||
const u8 resetCommandRegister = 0x00;
|
||||
|
||||
u8 controlCommand[13];
|
||||
const u8 controlCommandRegister = 0x03;
|
||||
|
||||
controlCommand[0] = 0x0C; /* Unknown */
|
||||
controlCommand[1] = byte0;
|
||||
controlCommand[2] = GCA230718_OPMODE_NO_TOGGLE;
|
||||
/* Byte 3-6 are set below to the brighness value of the individual LEDs */
|
||||
controlCommand[7] = 0x01; /* Frequency, doesn't care as long as GCA230718_OPMODE_NO_TOGGLE is used above */
|
||||
/* Byte 8-11 are set below to the brighness value of the individual LEDs */
|
||||
controlCommand[12] = 0x87;
|
||||
|
||||
for (ledIndex = 0; ledIndex < GCA230718_MAX_LEDS; ledIndex++)
|
||||
{
|
||||
controlCommand[3 + ledIndex] = gca230718_privateData->leds[ledIndex].brightness;
|
||||
controlCommand[8 + ledIndex] = gca230718_privateData->leds[ledIndex].brightness;
|
||||
}
|
||||
|
||||
mutex_lock(&(gca230718_privateData->lock));
|
||||
|
||||
if ((status = i2c_smbus_write_i2c_block_data(client, resetCommandRegister, sizeof(resetCommand), resetCommand)) != 0)
|
||||
{
|
||||
pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for reset command\n", status);
|
||||
}
|
||||
else if ((status = i2c_smbus_write_i2c_block_data(client, controlCommandRegister, sizeof(controlCommand), controlCommand)) != 0)
|
||||
{
|
||||
pr_info("Error %i during call of i2c_smbus_write_i2c_block_data for control command\n", status);
|
||||
}
|
||||
|
||||
mutex_unlock(&(gca230718_privateData->lock));
|
||||
}
|
||||
|
||||
static int gca230718_set_brightness(struct led_classdev *led_cdev, enum led_brightness value)
|
||||
{
|
||||
struct gca230718_led* led;
|
||||
struct i2c_client* client;
|
||||
|
||||
led = container_of(led_cdev, struct gca230718_led, ledClassDev);
|
||||
client = led->client;
|
||||
|
||||
if (client != NULL)
|
||||
{
|
||||
struct gca230718_private* gca230718_privateData;
|
||||
|
||||
led->brightness = value;
|
||||
gca230718_privateData = i2c_get_clientdata(client);
|
||||
|
||||
gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, gca230718_privateData);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int gca230718_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
||||
{
|
||||
int status = 0;
|
||||
struct gca230718_private* gca230718_privateData;
|
||||
|
||||
pr_info("Enter gca230718_probe for device address %u\n", client->addr);
|
||||
gca230718_privateData = devm_kzalloc(&(client->dev), sizeof(struct gca230718_private), GFP_KERNEL);
|
||||
|
||||
if (gca230718_privateData == NULL)
|
||||
{
|
||||
pr_info("Error during allocating memory for private data\n");
|
||||
status = -ENOMEM;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct device_node* ledNode;
|
||||
mutex_init(&gca230718_privateData->lock);
|
||||
gca230718_init_private_led_data(gca230718_privateData);
|
||||
i2c_set_clientdata(client, gca230718_privateData);
|
||||
|
||||
for_each_child_of_node(client->dev.of_node, ledNode)
|
||||
{
|
||||
u32 regValue = 0;
|
||||
if (of_property_read_u32(ledNode, "reg", ®Value) != 0)
|
||||
{
|
||||
pr_info("Missing entry \"reg\" in node %s\n", ledNode->name);
|
||||
}
|
||||
else if (regValue >= GCA230718_MAX_LEDS)
|
||||
{
|
||||
pr_info("Invalid entry \"reg\" in node %s (%u)\n", ledNode->name, regValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct led_classdev* ledClassDev = &(gca230718_privateData->leds[regValue].ledClassDev);
|
||||
struct led_init_data init_data = {};
|
||||
|
||||
gca230718_privateData->leds[regValue].client = client;
|
||||
init_data.fwnode = of_fwnode_handle(ledNode);
|
||||
|
||||
pr_info("Creating LED for node %s: reg=%u\n", ledNode->name, regValue);
|
||||
|
||||
ledClassDev->name = of_get_property(ledNode, "label", NULL);
|
||||
if (ledClassDev->name == NULL)
|
||||
{
|
||||
ledClassDev->name = ledNode->name;
|
||||
}
|
||||
|
||||
ledClassDev->brightness = LED_OFF;
|
||||
ledClassDev->max_brightness = LED_FULL;
|
||||
ledClassDev->brightness_set_blocking = gca230718_set_brightness;
|
||||
|
||||
if (devm_led_classdev_register_ext(&(client->dev), ledClassDev, &init_data) != 0)
|
||||
{
|
||||
pr_info("Error during call of devm_led_classdev_register_ext");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (status == 0)
|
||||
{
|
||||
/*
|
||||
Send full initialization sequence.
|
||||
Afterwards only GCA230718_2ND_SEQUENCE_BYTE_1 must be send to upddate the brightness values.
|
||||
*/
|
||||
gca230718_send_sequence(client, GCA230718_1ST_SEQUENCE_BYTE_1, gca230718_privateData);
|
||||
gca230718_send_sequence(client, GCA230718_2ND_SEQUENCE_BYTE_1, gca230718_privateData);
|
||||
gca230718_send_sequence(client, GCA230718_3RD_SEQUENCE_BYTE_1, gca230718_privateData);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,18,0)
|
||||
static void gca230718_remove(struct i2c_client *client)
|
||||
#else
|
||||
static int gca230718_remove(struct i2c_client *client)
|
||||
#endif
|
||||
{
|
||||
struct gca230718_private* gca230718_privateData;
|
||||
gca230718_privateData = i2c_get_clientdata(client);
|
||||
mutex_destroy(&gca230718_privateData->lock);
|
||||
gca230718_init_private_led_data(gca230718_privateData);
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,18,0)
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static const struct i2c_device_id gca230718_i2c_ids[] = {
|
||||
{ "gca230718", 0 },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, gca230718_i2c_ids);
|
||||
|
||||
static const struct of_device_id gca230718_dt_ids[] = {
|
||||
{ .compatible = "unknown,gca230718" },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, gca230718_dt_ids);
|
||||
|
||||
static struct i2c_driver gca230718_driver = {
|
||||
.probe = gca230718_probe,
|
||||
.remove = gca230718_remove,
|
||||
.id_table = gca230718_i2c_ids,
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.of_match_table = gca230718_dt_ids,
|
||||
},
|
||||
};
|
||||
|
||||
module_i2c_driver(gca230718_driver);
|
||||
|
||||
MODULE_AUTHOR("Roland Reinl <reinlroland+github@gmail.com>");
|
||||
MODULE_DESCRIPTION("GCA230718 LED support (e.g. for D-Link M30) using I2C");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -16,8 +16,8 @@ SUBTARGETS = $(sort $(filter-out feeds,$(notdir $(wildcard $(TOPDIR)/target/linu
|
||||
SUBTARGET_MODULES = $(foreach t,$(SUBTARGETS),$(firstword $(wildcard $(TOPDIR)/target/linux/feeds/$(t)/modules.mk $(TOPDIR)/target/linux/$(t)/modules.mk)))
|
||||
SCAN_DEPS=modules/*.mk $(SUBTARGET_MODULES) $(TOPDIR)/include/netfilter.mk
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
export SHELL:=/bin/sh
|
||||
.ONESHELL:
|
||||
|
||||
@@ -80,6 +80,18 @@ endef
|
||||
$(eval $(call KernelPackage,crypto-authenc))
|
||||
|
||||
|
||||
define KernelPackage/crypto-blake2b
|
||||
TITLE:=Support for BLAKE2b cryptographic hash function (RFC 7693)
|
||||
DEPENDS:=+kmod-crypto-hash
|
||||
KCONFIG:=CONFIG_CRYPTO_BLAKE2B
|
||||
FILES:=$(LINUX_DIR)/crypto/blake2b_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,blake2b_generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-blake2b))
|
||||
|
||||
|
||||
define KernelPackage/crypto-cbc
|
||||
TITLE:=Cipher Block Chaining CryptoAPI module
|
||||
DEPENDS:=+kmod-crypto-manager
|
||||
@@ -700,7 +712,6 @@ define KernelPackage/crypto-misc
|
||||
CONFIG_CRYPTO_CAMELLIA \
|
||||
CONFIG_CRYPTO_CAST5 \
|
||||
CONFIG_CRYPTO_CAST6 \
|
||||
CONFIG_CRYPTO_FCRYPT \
|
||||
CONFIG_CRYPTO_KHAZAD \
|
||||
CONFIG_CRYPTO_SERPENT \
|
||||
CONFIG_CRYPTO_TEA \
|
||||
@@ -1041,3 +1052,15 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-xts))
|
||||
|
||||
|
||||
define KernelPackage/crypto-xxhash
|
||||
TITLE:=xxHash non-cryptographic hash algorithm
|
||||
DEPENDS:=+kmod-crypto-hash +kmod-lib-xxhash
|
||||
KCONFIG:=CONFIG_CRYPTO_XXHASH
|
||||
FILES:=$(LINUX_DIR)/crypto/xxhash_generic.ko
|
||||
AUTOLOAD:=$(call AutoLoad,09,xxhash_generic)
|
||||
$(call AddDepends/crypto)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-xxhash))
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ $(eval $(call KernelPackage,fs-autofs4))
|
||||
define KernelPackage/fs-btrfs
|
||||
SUBMENU:=$(FS_MENU)
|
||||
TITLE:=BTRFS filesystem support
|
||||
DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor +kmod-lib-zstd
|
||||
DEPENDS:=+kmod-lib-crc32c +kmod-lib-lzo +kmod-lib-zlib-inflate +kmod-lib-zlib-deflate +kmod-lib-raid6 +kmod-lib-xor +kmod-lib-zstd +kmod-crypto-blake2b +kmod-crypto-xxhash
|
||||
KCONFIG:=\
|
||||
CONFIG_BTRFS_FS \
|
||||
CONFIG_BTRFS_FS_CHECK_INTEGRITY=n
|
||||
|
||||
@@ -116,7 +116,7 @@ define KernelPackage/hwmon-gsc
|
||||
$(LINUX_DIR)/drivers/mfd/gateworks-gsc.ko \
|
||||
$(LINUX_DIR)/drivers/hwmon/gsc-hwmon.ko
|
||||
AUTOLOAD:=$(call AutoLoad,20,gsc-hwmon,1)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core)
|
||||
$(call AddDepends/hwmon,+kmod-i2c-core +kmod-mfd)
|
||||
endef
|
||||
|
||||
define KernelPackage/hwmon-gsc/description
|
||||
|
||||
@@ -122,21 +122,30 @@ endef
|
||||
$(eval $(call KernelPackage,lib-lzo))
|
||||
|
||||
|
||||
define KernelPackage/lib-xxhash
|
||||
SUBMENU:=$(LIB_MENU)
|
||||
TITLE:=xxhash support
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_XXHASH
|
||||
FILES:=$(LINUX_DIR)/lib/xxhash.ko
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,lib-xxhash))
|
||||
|
||||
|
||||
define KernelPackage/lib-zstd
|
||||
SUBMENU:=$(LIB_MENU)
|
||||
TITLE:=ZSTD support
|
||||
DEPENDS:=+kmod-crypto-acompress
|
||||
DEPENDS:=+kmod-crypto-acompress +kmod-lib-xxhash
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_ZSTD \
|
||||
CONFIG_ZSTD_COMPRESS \
|
||||
CONFIG_ZSTD_DECOMPRESS \
|
||||
CONFIG_XXHASH
|
||||
CONFIG_ZSTD_DECOMPRESS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/zstd.ko \
|
||||
$(LINUX_DIR)/lib/xxhash.ko \
|
||||
$(LINUX_DIR)/lib/zstd/zstd_compress.ko \
|
||||
$(LINUX_DIR)/lib/zstd/zstd_decompress.ko
|
||||
AUTOLOAD:=$(call AutoProbe,xxhash zstd zstd_compress zstd_decompress)
|
||||
AUTOLOAD:=$(call AutoProbe,zstd zstd_compress zstd_decompress)
|
||||
endef
|
||||
|
||||
define KernelPackage/lib-zstd/description
|
||||
@@ -146,21 +155,28 @@ endef
|
||||
$(eval $(call KernelPackage,lib-zstd))
|
||||
|
||||
|
||||
define KernelPackage/lib-lz4-decompress
|
||||
SUBMENU:=$(LIB_MENU)
|
||||
TITLE:=LZ4 decompress
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_LZ4_DECOMPRESS
|
||||
FILES:=$(LINUX_DIR)/lib/lz4/lz4_decompress.ko
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,lib-lz4-decompress))
|
||||
|
||||
|
||||
define KernelPackage/lib-lz4
|
||||
SUBMENU:=$(LIB_MENU)
|
||||
TITLE:=LZ4 support
|
||||
DEPENDS:=+kmod-crypto-acompress
|
||||
DEPENDS:=+kmod-crypto-acompress +kmod-lib-lz4-decompress
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_LZ4 \
|
||||
CONFIG_CRYPTO_LZ4HC \
|
||||
CONFIG_LZ4_COMPRESS \
|
||||
CONFIG_LZ4_DECOMPRESS
|
||||
CONFIG_LZ4_COMPRESS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/lz4.ko \
|
||||
$(LINUX_DIR)/lib/lz4/lz4_compress.ko \
|
||||
$(LINUX_DIR)/lib/lz4/lz4hc_compress.ko \
|
||||
$(LINUX_DIR)/lib/lz4/lz4_decompress.ko
|
||||
AUTOLOAD:=$(call AutoProbe,lz4 lz4_compress lz4hc_compress lz4_decompress)
|
||||
$(LINUX_DIR)/lib/lz4/lz4_compress.ko
|
||||
AUTOLOAD:=$(call AutoProbe,lz4 lz4_compress)
|
||||
endef
|
||||
|
||||
define KernelPackage/lib-lz4/description
|
||||
@@ -170,6 +186,26 @@ endef
|
||||
$(eval $(call KernelPackage,lib-lz4))
|
||||
|
||||
|
||||
define KernelPackage/lib-lz4hc
|
||||
SUBMENU:=$(LIB_MENU)
|
||||
TITLE:=LZ4HC support
|
||||
DEPENDS:=+kmod-crypto-acompress +kmod-lib-lz4-decompress
|
||||
KCONFIG:= \
|
||||
CONFIG_CRYPTO_LZ4HC \
|
||||
CONFIG_LZ4HC_COMPRESS
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/crypto/lz4hc.ko \
|
||||
$(LINUX_DIR)/lib/lz4/lz4hc_compress.ko
|
||||
AUTOLOAD:=$(call AutoProbe,lz4hc lz4hc_compress)
|
||||
endef
|
||||
|
||||
define KernelPackage/lib-lz4hc/description
|
||||
Kernel module for LZ4HC compression/decompression support
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,lib-lz4hc))
|
||||
|
||||
|
||||
define KernelPackage/lib-842
|
||||
SUBMENU:=$(LIB_MENU)
|
||||
TITLE:=842 support
|
||||
|
||||
@@ -132,6 +132,22 @@ endef
|
||||
$(eval $(call KernelPackage,nf-conntrack6))
|
||||
|
||||
|
||||
define KernelPackage/nf-dup-inet
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables dup in ip/ip6/inet family support
|
||||
HIDDEN:=1
|
||||
DEPENDS:=+kmod-nf-conntrack +IPV6:kmod-nf-conntrack6
|
||||
KCONFIG:= \
|
||||
CONFIG_NF_DUP_IPV4 \
|
||||
CONFIG_NF_DUP_IPV6
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/ipv4/netfilter/nf_dup_ipv4.ko \
|
||||
$(LINUX_DIR)/net/ipv6/netfilter/nf_dup_ipv6.ko
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nf-dup-inet))
|
||||
|
||||
|
||||
define KernelPackage/nf-log
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter Logging
|
||||
@@ -716,7 +732,7 @@ $(eval $(call KernelPackage,ipt-tproxy))
|
||||
|
||||
define KernelPackage/ipt-tee
|
||||
TITLE:=TEE support
|
||||
DEPENDS:=+kmod-ipt-conntrack
|
||||
DEPENDS:=+kmod-ipt-conntrack +kmod-nf-dup-inet
|
||||
KCONFIG:=$(KCONFIG_IPT_TEE)
|
||||
FILES:=$(foreach mod,$(IPT_TEE-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir nf_tee $(IPT_TEE-m)))
|
||||
@@ -1150,18 +1166,14 @@ $(eval $(call KernelPackage,nft-bridge))
|
||||
define KernelPackage/nft-dup-inet
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter nf_tables dup in ip/ip6/inet family support
|
||||
DEPENDS:=+kmod-nft-core +kmod-nf-conntrack +IPV6:kmod-nf-conntrack6
|
||||
DEPENDS:=+kmod-nft-core +kmod-nf-dup-inet
|
||||
KCONFIG:= \
|
||||
CONFIG_NF_DUP_IPV4 \
|
||||
CONFIG_NF_DUP_IPV6 \
|
||||
CONFIG_NFT_DUP_IPV4 \
|
||||
CONFIG_NFT_DUP_IPV6
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/net/ipv4/netfilter/nf_dup_ipv4.ko \
|
||||
$(LINUX_DIR)/net/ipv6/netfilter/nf_dup_ipv6.ko \
|
||||
$(LINUX_DIR)/net/ipv4/netfilter/nft_dup_ipv4.ko \
|
||||
$(LINUX_DIR)/net/ipv6/netfilter/nft_dup_ipv6.ko
|
||||
AUTOLOAD:=$(call AutoProbe,nf_dup_ipv4 nf_dup_ipv6 nft_dup_ipv4 nft_dup_ipv6)
|
||||
AUTOLOAD:=$(call AutoProbe,nft_dup_ipv4 nft_dup_ipv6)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nft-dup-inet))
|
||||
|
||||
@@ -780,6 +780,18 @@ endef
|
||||
$(eval $(call KernelPackage,rtc-s35390a))
|
||||
|
||||
|
||||
define KernelPackage/mfd
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Multifunction device drivers
|
||||
HIDDEN:=1
|
||||
KCONFIG:=CONFIG_MFD_CORE
|
||||
FILES:=$(LINUX_DIR)/drivers/mfd/mfd-core.ko
|
||||
AUTOLOAD:=$(call AutoLoad,10,mfd-core)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mfd))
|
||||
|
||||
|
||||
define KernelPackage/mtdtests
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=MTD subsystem tests
|
||||
|
||||
@@ -10,11 +10,13 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=6.1.24
|
||||
PKG_RELEASE:=4
|
||||
# PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.58/
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
|
||||
PKG_HASH:=5d39aca7e34c33cb9b3e366117b2e86841b7bdd37933679d6b1e61be6b150648
|
||||
PKG_VERSION:=6.1.97-1
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-2.0-only
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v6.1.97/
|
||||
PKG_HASH:=8e9ae2d02f373252dd61f5c6a81c88eec67ca773464d9ef3d844752dc6775540
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
@@ -299,17 +301,14 @@ define Build/Prepare
|
||||
$(Build/Patch)
|
||||
rm -rf \
|
||||
$(PKG_BUILD_DIR)/include/linux/ssb \
|
||||
$(PKG_BUILD_DIR)/include/linux/bcma \
|
||||
$(PKG_BUILD_DIR)/include/net/bluetooth
|
||||
$(PKG_BUILD_DIR)/include/linux/bcma
|
||||
|
||||
rm -f \
|
||||
$(PKG_BUILD_DIR)/include/linux/cordic.h \
|
||||
$(PKG_BUILD_DIR)/include/linux/crc8.h \
|
||||
$(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \
|
||||
$(PKG_BUILD_DIR)/include/linux/wl12xx.h \
|
||||
$(PKG_BUILD_DIR)/include/linux/mhi.h \
|
||||
$(PKG_BUILD_DIR)/include/net/ieee80211.h \
|
||||
$(PKG_BUILD_DIR)/backport-include/linux/bcm47xx_nvram.h
|
||||
$(PKG_BUILD_DIR)/include/trace/events/qrtr.h \
|
||||
$(PKG_BUILD_DIR)/include/net/rsi_91x.h \
|
||||
$(PKG_BUILD_DIR)/backport-include/linux/platform_data/brcmnand.h \
|
||||
$(PKG_BUILD_DIR)/backport-include/linux/soc/mediatek/mtk_wed.h
|
||||
|
||||
echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
|
||||
endef
|
||||
@@ -325,7 +324,6 @@ endif
|
||||
ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
|
||||
ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"")
|
||||
define Build/Configure
|
||||
cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
|
||||
cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
|
||||
cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h
|
||||
endef
|
||||
|
||||
@@ -269,6 +269,7 @@ mac80211_hostapd_setup_base() {
|
||||
case "$channel" in
|
||||
36|40|44|48|52|56|60|64) idx=50;;
|
||||
100|104|108|112|116|120|124|128) idx=114;;
|
||||
149|153|157|161|165|169|173|177) idx=163;;
|
||||
esac
|
||||
fi
|
||||
enable_ac=1
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
CFLAGS_trace.o := -I$(src)
|
||||
--- a/drivers/net/wireless/ath/ath.h
|
||||
+++ b/drivers/net/wireless/ath/ath.h
|
||||
@@ -317,14 +317,7 @@ void _ath_dbg(struct ath_common *common,
|
||||
@@ -321,14 +321,7 @@ void _ath_dbg(struct ath_common *common,
|
||||
#endif /* CPTCFG_ATH_DEBUG */
|
||||
|
||||
/** Returns string describing opmode, or NULL if unknown mode. */
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
help
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -102,6 +102,7 @@ ADM8211=
|
||||
@@ -94,6 +94,7 @@ ADM8211=
|
||||
ATH_COMMON=
|
||||
WLAN_VENDOR_ATH=
|
||||
ATH_DEBUG=
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -3370,6 +3370,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -3373,6 +3373,8 @@ void regulatory_hint_country_ie(struct w
|
||||
enum environment_cap env = ENVIRON_ANY;
|
||||
struct regulatory_request *request = NULL, *lr;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* IE len must be evenly divisible by 2 */
|
||||
if (country_ie_len & 0x01)
|
||||
return;
|
||||
@@ -3621,6 +3623,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
@@ -3624,6 +3626,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
@@ -86,6 +86,12 @@ config ATH10K_TRACING
|
||||
@@ -87,6 +87,12 @@ config ATH10K_TRACING
|
||||
help
|
||||
Select this to ath10k use tracing infrastructure.
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
void ath10k_thermal_event_temperature(struct ath10k *ar, int temperature);
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -161,6 +161,7 @@ ATH10K_SNOC=
|
||||
@@ -153,6 +153,7 @@ ATH10K_SNOC=
|
||||
ATH10K_DEBUG=
|
||||
ATH10K_DEBUGFS=
|
||||
ATH10K_SPECTRAL=
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -3516,6 +3516,16 @@ int ath10k_core_register(struct ath10k *
|
||||
@@ -3510,6 +3510,16 @@ int ath10k_core_register(struct ath10k *
|
||||
|
||||
queue_work(ar->workqueue, &ar->register_work);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -9909,6 +9909,21 @@ static int ath10k_mac_init_rd(struct ath
|
||||
@@ -9918,6 +9918,21 @@ static int ath10k_mac_init_rd(struct ath
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
int ath10k_mac_register(struct ath10k *ar)
|
||||
{
|
||||
static const u32 cipher_suites[] = {
|
||||
@@ -10267,6 +10282,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -10276,6 +10291,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
|
||||
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ v13:
|
||||
create mode 100644 drivers/net/wireless/ath/ath10k/leds.h
|
||||
--- a/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
@@ -71,6 +71,16 @@ config ATH10K_DEBUGFS
|
||||
@@ -72,6 +72,16 @@ config ATH10K_DEBUGFS
|
||||
|
||||
If unsure, say Y to make it easier to debug problems.
|
||||
|
||||
@@ -114,7 +114,7 @@ v13:
|
||||
ath10k_core-$(CONFIG_DEV_COREDUMP) += coredump.o
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -162,6 +162,7 @@ ATH10K_DEBUG=
|
||||
@@ -154,6 +154,7 @@ ATH10K_DEBUG=
|
||||
ATH10K_DEBUGFS=
|
||||
ATH10K_SPECTRAL=
|
||||
ATH10K_THERMAL=
|
||||
@@ -172,7 +172,7 @@ v13:
|
||||
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||
@@ -3231,6 +3237,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
@@ -3225,6 +3231,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
goto err_hif_stop;
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ v13:
|
||||
return 0;
|
||||
|
||||
err_hif_stop:
|
||||
@@ -3489,9 +3499,18 @@ static void ath10k_core_register_work(st
|
||||
@@ -3483,9 +3493,18 @@ static void ath10k_core_register_work(st
|
||||
goto err_spectral_destroy;
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ v13:
|
||||
err_spectral_destroy:
|
||||
ath10k_spectral_destroy(ar);
|
||||
err_debug_destroy:
|
||||
@@ -3537,6 +3556,8 @@ void ath10k_core_unregister(struct ath10
|
||||
@@ -3531,6 +3550,8 @@ void ath10k_core_unregister(struct ath10
|
||||
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
|
||||
return;
|
||||
|
||||
@@ -221,7 +221,7 @@ v13:
|
||||
|
||||
#include "htt.h"
|
||||
#include "htc.h"
|
||||
@@ -1253,6 +1254,13 @@ struct ath10k {
|
||||
@@ -1256,6 +1257,13 @@ struct ath10k {
|
||||
} testmode;
|
||||
|
||||
struct {
|
||||
@@ -237,7 +237,7 @@ v13:
|
||||
u32 fw_crash_counter;
|
||||
--- a/drivers/net/wireless/ath/ath10k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/hw.h
|
||||
@@ -519,6 +519,7 @@ struct ath10k_hw_params {
|
||||
@@ -520,6 +520,7 @@ struct ath10k_hw_params {
|
||||
const char *name;
|
||||
u32 patch_load_addr;
|
||||
int uart_pin;
|
||||
@@ -456,7 +456,7 @@ v13:
|
||||
{
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
@@ -4594,6 +4594,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
@@ -4598,6 +4598,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
|
||||
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
|
||||
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
|
||||
@@ -467,7 +467,7 @@ v13:
|
||||
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -7472,6 +7472,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
@@ -7492,6 +7492,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
return skb;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ v13:
|
||||
static struct sk_buff *
|
||||
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
|
||||
enum wmi_sta_ps_mode psmode)
|
||||
@@ -9160,6 +9203,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
@@ -9180,6 +9223,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -527,7 +527,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9230,6 +9276,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
@@ -9250,6 +9296,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -536,7 +536,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9302,6 +9350,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
@@ -9322,6 +9370,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
@@ -545,7 +545,7 @@ v13:
|
||||
/* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
@@ -9373,6 +9423,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
@@ -9393,6 +9443,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
|
||||
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
|
||||
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
|
||||
@@ -554,7 +554,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9454,6 +9506,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
@@ -9474,6 +9526,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
|
||||
@@ -1309,6 +1309,10 @@ struct ath10k {
|
||||
@@ -1312,6 +1312,10 @@ struct ath10k {
|
||||
s32 tx_power_2g_limit;
|
||||
s32 tx_power_5g_limit;
|
||||
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
if (ret)
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -10284,7 +10284,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -10293,7 +10293,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
||||
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
#include <linux/property.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/ctype.h>
|
||||
@@ -3407,6 +3408,8 @@ static int ath10k_core_probe_fw(struct a
|
||||
@@ -3401,6 +3402,8 @@ static int ath10k_core_probe_fw(struct a
|
||||
|
||||
device_get_mac_address(ar->dev, ar->mac_addr);
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -10081,7 +10081,6 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -10089,7 +10089,6 @@ int ath10k_mac_register(struct ath10k *a
|
||||
ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA);
|
||||
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
|
||||
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
||||
|
||||
@@ -35,7 +35,7 @@ Link: https://lore.kernel.org/r/20220923170235.18873-1-quic_adisi@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -1641,7 +1641,7 @@ static void ath11k_update_11d(struct wor
|
||||
@@ -1668,7 +1668,7 @@ static void ath11k_update_11d(struct wor
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ Link: https://lore.kernel.org/r/20220923170235.18873-1-quic_adisi@quicinc.com
|
||||
{
|
||||
struct ath11k *ar;
|
||||
struct ath11k_pdev *pdev;
|
||||
@@ -1730,9 +1730,6 @@ static void ath11k_core_restart(struct w
|
||||
@@ -1757,9 +1757,6 @@ static void ath11k_core_restart(struct w
|
||||
struct ath11k_base *ab = container_of(work, struct ath11k_base, restart_work);
|
||||
int ret;
|
||||
|
||||
@@ -66,7 +66,7 @@ Link: https://lore.kernel.org/r/20220923170235.18873-1-quic_adisi@quicinc.com
|
||||
const char *filename);
|
||||
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
@@ -3164,6 +3164,9 @@ static void ath11k_qmi_driver_event_work
|
||||
@@ -3169,6 +3169,9 @@ static void ath11k_qmi_driver_event_work
|
||||
case ATH11K_QMI_EVENT_SERVER_EXIT:
|
||||
set_bit(ATH11K_FLAG_CRASH_FLUSH, &ab->dev_flags);
|
||||
set_bit(ATH11K_FLAG_RECOVERY, &ab->dev_flags);
|
||||
|
||||
@@ -20,7 +20,7 @@ Link: https://lore.kernel.org/r/20221006005842.8599-1-quic_periyasa@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6421,18 +6421,16 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6418,18 +6418,16 @@ static int ath11k_mac_op_add_interface(s
|
||||
|
||||
ath11k_dp_vdev_tx_attach(ar, arvif);
|
||||
|
||||
@@ -42,7 +42,7 @@ Link: https://lore.kernel.org/r/20221006005842.8599-1-quic_periyasa@quicinc.com
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
|
||||
return 0;
|
||||
@@ -6457,7 +6455,6 @@ err_vdev_del:
|
||||
@@ -6454,7 +6452,6 @@ err_vdev_del:
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
err:
|
||||
|
||||
@@ -43,7 +43,7 @@ Link: https://lore.kernel.org/r/20221007051130.6067-1-quic_mpubbise@quicinc.com
|
||||
|
||||
static const u32 ath11k_smps_map[] = {
|
||||
[WLAN_HT_CAP_SM_PS_STATIC] = WMI_PEER_SMPS_STATIC,
|
||||
@@ -3612,6 +3615,7 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3609,6 +3612,7 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
struct scan_req_params arg;
|
||||
int ret = 0;
|
||||
int i;
|
||||
@@ -51,7 +51,7 @@ Link: https://lore.kernel.org/r/20221007051130.6067-1-quic_mpubbise@quicinc.com
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
@@ -3681,6 +3685,26 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3678,6 +3682,26 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
ether_addr_copy(arg.mac_mask.addr, req->mac_addr_mask);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ Link: https://lore.kernel.org/r/20221007051130.6067-1-quic_mpubbise@quicinc.com
|
||||
ret = ath11k_start_scan(ar, &arg);
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to start hw scan: %d\n", ret);
|
||||
@@ -3689,10 +3713,8 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3686,10 +3710,8 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ Link: https://lore.kernel.org/r/20221007051130.6067-1-quic_mpubbise@quicinc.com
|
||||
|
||||
exit:
|
||||
kfree(arg.chan_list);
|
||||
@@ -9060,6 +9082,9 @@ static int __ath11k_mac_register(struct
|
||||
@@ -9065,6 +9087,9 @@ static int __ath11k_mac_register(struct
|
||||
NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/20221011095346.3901-1-quic_ssreeela@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6233,6 +6233,40 @@ void ath11k_mac_11d_scan_stop_all(struct
|
||||
@@ -6230,6 +6230,40 @@ void ath11k_mac_11d_scan_stop_all(struct
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ Link: https://lore.kernel.org/r/20221011095346.3901-1-quic_ssreeela@quicinc.com
|
||||
static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
@@ -6468,10 +6502,7 @@ err_peer_del:
|
||||
@@ -6465,10 +6499,7 @@ err_peer_del:
|
||||
}
|
||||
|
||||
err_vdev_del:
|
||||
@@ -74,7 +74,7 @@ Link: https://lore.kernel.org/r/20221011095346.3901-1-quic_ssreeela@quicinc.com
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
list_del(&arvif->list);
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
@@ -6499,7 +6530,6 @@ static void ath11k_mac_op_remove_interfa
|
||||
@@ -6496,7 +6527,6 @@ static void ath11k_mac_op_remove_interfa
|
||||
struct ath11k *ar = hw->priv;
|
||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20221011095346.3901-1-quic_ssreeela@quicinc.com
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
@@ -6520,29 +6550,13 @@ static void ath11k_mac_op_remove_interfa
|
||||
@@ -6517,29 +6547,13 @@ static void ath11k_mac_op_remove_interfa
|
||||
arvif->vdev_id, ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Link: https://lore.kernel.org/r/20221014155054.11471-1-quic_nmaran@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -1677,6 +1677,10 @@ void ath11k_core_pre_reconfigure_recover
|
||||
@@ -1704,6 +1704,10 @@ void ath11k_core_pre_reconfigure_recover
|
||||
ath11k_mac_tx_mgmt_pending_free, ar);
|
||||
idr_destroy(&ar->txmgmt_idr);
|
||||
wake_up(&ar->txmgmt_empty_waitq);
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
From dd1c2322694522f674c874f5fa02ac5ae39135dd Mon Sep 17 00:00:00 2001
|
||||
From: "Jiri Slaby (SUSE)" <jirislaby@kernel.org>
|
||||
Date: Mon, 31 Oct 2022 12:43:41 +0100
|
||||
Subject: [PATCH] wifi: ath11k: synchronize
|
||||
ath11k_mac_he_gi_to_nl80211_he_gi()'s return type
|
||||
|
||||
ath11k_mac_he_gi_to_nl80211_he_gi() generates a valid warning with gcc-13:
|
||||
drivers/net/wireless/ath/ath11k/mac.c:321:20: error: conflicting types for 'ath11k_mac_he_gi_to_nl80211_he_gi' due to enum/integer mismatch; have 'enum nl80211_he_gi(u8)'
|
||||
drivers/net/wireless/ath/ath11k/mac.h:166:5: note: previous declaration of 'ath11k_mac_he_gi_to_nl80211_he_gi' with type 'u32(u8)'
|
||||
|
||||
I.e. the type of the return value ath11k_mac_he_gi_to_nl80211_he_gi() in
|
||||
the declaration is u32, while the definition spells enum nl80211_he_gi.
|
||||
Synchronize them to the latter.
|
||||
|
||||
Cc: Martin Liska <mliska@suse.cz>
|
||||
Cc: Kalle Valo <kvalo@kernel.org>
|
||||
Cc: "David S. Miller" <davem@davemloft.net>
|
||||
Cc: Eric Dumazet <edumazet@google.com>
|
||||
Cc: Jakub Kicinski <kuba@kernel.org>
|
||||
Cc: Paolo Abeni <pabeni@redhat.com>
|
||||
Cc: ath11k@lists.infradead.org
|
||||
Cc: linux-wireless@vger.kernel.org
|
||||
Cc: netdev@vger.kernel.org
|
||||
Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
|
||||
Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20221031114341.10377-1-jirislaby@kernel.org
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.h
|
||||
@@ -163,7 +163,7 @@ void ath11k_mac_drain_tx(struct ath11k *
|
||||
void ath11k_mac_peer_cleanup_all(struct ath11k *ar);
|
||||
int ath11k_mac_tx_mgmt_pending_free(int buf_id, void *skb, void *ctx);
|
||||
u8 ath11k_mac_bw_to_mac80211_bw(u8 bw);
|
||||
-u32 ath11k_mac_he_gi_to_nl80211_he_gi(u8 sgi);
|
||||
+enum nl80211_he_gi ath11k_mac_he_gi_to_nl80211_he_gi(u8 sgi);
|
||||
enum nl80211_he_ru_alloc ath11k_mac_phy_he_ru_to_nl80211_he_ru_alloc(u16 ru_phy);
|
||||
enum nl80211_he_ru_alloc ath11k_mac_he_ru_tones_to_nl80211_he_ru_alloc(u16 ru_tones);
|
||||
enum ath11k_supported_bw ath11k_mac_mac80211_bw_to_ath11k_bw(enum rate_info_bw bw);
|
||||
@@ -96,7 +96,7 @@ Link: https://lore.kernel.org/r/20221104085403.11025-1-quic_youghand@quicinc.com
|
||||
struct ath11k_hw_ops {
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -8010,6 +8010,7 @@ ath11k_mac_op_reconfig_complete(struct i
|
||||
@@ -8007,6 +8007,7 @@ ath11k_mac_op_reconfig_complete(struct i
|
||||
struct ath11k *ar = hw->priv;
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
int recovery_count;
|
||||
@@ -104,7 +104,7 @@ Link: https://lore.kernel.org/r/20221104085403.11025-1-quic_youghand@quicinc.com
|
||||
|
||||
if (reconfig_type != IEEE80211_RECONFIG_TYPE_RESTART)
|
||||
return;
|
||||
@@ -8045,6 +8046,12 @@ ath11k_mac_op_reconfig_complete(struct i
|
||||
@@ -8042,6 +8043,12 @@ ath11k_mac_op_reconfig_complete(struct i
|
||||
ath11k_dbg(ab, ATH11K_DBG_BOOT, "reset success\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ Link: https://lore.kernel.org/r/20221122132152.17771-5-quic_kathirve@quicinc.com
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1142,10 +1154,26 @@ static int ath11k_ahb_probe(struct platf
|
||||
@@ -1148,10 +1160,26 @@ static int ath11k_ahb_probe(struct platf
|
||||
goto err_core_free;
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ Link: https://lore.kernel.org/r/20221122132152.17771-5-quic_kathirve@quicinc.com
|
||||
ret = ath11k_ahb_setup_resources(ab);
|
||||
if (ret)
|
||||
goto err_core_free;
|
||||
@@ -1236,6 +1264,10 @@ static void ath11k_ahb_free_resources(st
|
||||
@@ -1242,6 +1270,10 @@ static void ath11k_ahb_free_resources(st
|
||||
ath11k_ahb_release_smp2p_handle(ab);
|
||||
ath11k_ahb_fw_resource_deinit(ab);
|
||||
ath11k_ce_free_pipes(ab);
|
||||
@@ -340,7 +340,7 @@ Link: https://lore.kernel.org/r/20221122132152.17771-5-quic_kathirve@quicinc.com
|
||||
extern const struct ath11k_hw_hal_params ath11k_hw_hal_params_wcn6750;
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -543,6 +543,8 @@ static int ath11k_pci_claim(struct ath11
|
||||
@@ -547,6 +547,8 @@ static int ath11k_pci_claim(struct ath11
|
||||
goto clear_master;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Link: https://lore.kernel.org/r/20221205192125.13533-1-quic_kathirve@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -3612,7 +3612,7 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3609,7 +3609,7 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
struct ath11k *ar = hw->priv;
|
||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||
struct cfg80211_scan_request *req = &hw_req->req;
|
||||
@@ -32,7 +32,7 @@ Link: https://lore.kernel.org/r/20221205192125.13533-1-quic_kathirve@quicinc.com
|
||||
int ret = 0;
|
||||
int i;
|
||||
u32 scan_timeout;
|
||||
@@ -3640,72 +3640,78 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3637,72 +3637,78 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
if (ret)
|
||||
goto exit;
|
||||
|
||||
@@ -143,7 +143,7 @@ Link: https://lore.kernel.org/r/20221205192125.13533-1-quic_kathirve@quicinc.com
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to start hw scan: %d\n", ret);
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
@@ -3717,10 +3723,11 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3714,10 +3720,11 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
msecs_to_jiffies(scan_timeout));
|
||||
|
||||
exit:
|
||||
|
||||
@@ -116,7 +116,7 @@ Link: https://lore.kernel.org/r/20221220044435.10506-1-quic_rajkbhag@quicinc.com
|
||||
struct ath11k_hw_ops {
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -3110,7 +3110,7 @@ static void ath11k_mac_op_bss_info_chang
|
||||
@@ -3107,7 +3107,7 @@ static void ath11k_mac_op_bss_info_chang
|
||||
u16 bitrate;
|
||||
int ret = 0;
|
||||
u8 rateidx;
|
||||
@@ -125,7 +125,7 @@ Link: https://lore.kernel.org/r/20221220044435.10506-1-quic_rajkbhag@quicinc.com
|
||||
u32 ipv4_cnt;
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
@@ -3412,6 +3412,20 @@ static void ath11k_mac_op_bss_info_chang
|
||||
@@ -3409,6 +3409,20 @@ static void ath11k_mac_op_bss_info_chang
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ Link: https://lore.kernel.org/r/20221220044435.10506-1-quic_rajkbhag@quicinc.com
|
||||
if (changed & BSS_CHANGED_FILS_DISCOVERY ||
|
||||
changed & BSS_CHANGED_UNSOL_BCAST_PROBE_RESP)
|
||||
ath11k_mac_fils_discovery(arvif, info);
|
||||
@@ -9113,6 +9127,10 @@ static int __ath11k_mac_register(struct
|
||||
@@ -9118,6 +9132,10 @@ static int __ath11k_mac_register(struct
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_SET_SCAN_DWELL);
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20230113063209.7256-1-quic_rajkbhag@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
@@ -1157,12 +1157,16 @@ static int ath11k_ahb_probe(struct platf
|
||||
@@ -1163,12 +1163,16 @@ static int ath11k_ahb_probe(struct platf
|
||||
goto err_core_free;
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ Link: https://lore.kernel.org/r/20230113063209.7256-1-quic_rajkbhag@quicinc.com
|
||||
if (ab->hw_params.ce_remap) {
|
||||
const struct ce_remap *ce_remap = ab->hw_params.ce_remap;
|
||||
/* ce register space is moved out of wcss unlike ipq8074 or ipq6018
|
||||
@@ -1177,10 +1181,6 @@ static int ath11k_ahb_probe(struct platf
|
||||
@@ -1183,10 +1187,6 @@ static int ath11k_ahb_probe(struct platf
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/20230217030031.4021289-1-yangyingliang@huawei.co
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
@@ -1174,7 +1174,7 @@ static int ath11k_ahb_probe(struct platf
|
||||
@@ -1180,7 +1180,7 @@ static int ath11k_ahb_probe(struct platf
|
||||
* to a new space for accessing them.
|
||||
*/
|
||||
ab->mem_ce = ioremap(ce_remap->base, ce_remap->size);
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
From f117276638b7600b981b3fe28550823cfbe1ef23 Mon Sep 17 00:00:00 2001
|
||||
From: Douglas Anderson <dianders@chromium.org>
|
||||
Date: Wed, 1 Feb 2023 08:54:42 -0800
|
||||
Subject: [PATCH] wifi: ath11k: Use platform_get_irq() to get the interrupt
|
||||
|
||||
As of commit a1a2b7125e10 ("of/platform: Drop static setup of IRQ
|
||||
resource from DT core"), we need to use platform_get_irq() instead of
|
||||
platform_get_resource() to get our IRQs because
|
||||
platform_get_resource() simply won't get them anymore.
|
||||
|
||||
This was already fixed in several other Atheros WiFi drivers,
|
||||
apparently in response to Zeal Robot reports. An example of another
|
||||
fix is commit 9503a1fc123d ("ath9k: Use platform_get_irq() to get the
|
||||
interrupt"). ath11k seems to have been missed in this effort, though.
|
||||
|
||||
Without this change, WiFi wasn't coming up on my Qualcomm sc7280-based
|
||||
hardware. Specifically, "platform_get_resource(pdev, IORESOURCE_IRQ,
|
||||
i)" was failing even for i=0.
|
||||
|
||||
Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
|
||||
|
||||
Fixes: a1a2b7125e10 ("of/platform: Drop static setup of IRQ resource from DT core")
|
||||
Fixes: 00402f49d26f ("ath11k: Add support for WCN6750 device")
|
||||
Signed-off-by: Douglas Anderson <dianders@chromium.org>
|
||||
Tested-by: Jun Yu <junyuu@chromium.org>
|
||||
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230201084131.v2.1.I69cf3d56c97098287fe3a70084ee515098390b70@changeid
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/ahb.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
@@ -874,11 +874,11 @@ static int ath11k_ahb_setup_msi_resource
|
||||
ab->pci.msi.ep_base_data = int_prop + 32;
|
||||
|
||||
for (i = 0; i < ab->pci.msi.config->total_vectors; i++) {
|
||||
- res = platform_get_resource(pdev, IORESOURCE_IRQ, i);
|
||||
- if (!res)
|
||||
- return -ENODEV;
|
||||
+ ret = platform_get_irq(pdev, i);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
|
||||
- ab->pci.msi.irqs[i] = res->start;
|
||||
+ ab->pci.msi.irqs[i] = ret;
|
||||
}
|
||||
|
||||
set_bit(ATH11K_FLAG_MULTI_MSI_VECTORS, &ab->dev_flags);
|
||||
@@ -1,53 +0,0 @@
|
||||
From 60b7d62ba8cdbd073997bff0f1cdae8d844002c0 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||
Date: Thu, 9 Feb 2023 23:26:22 +0100
|
||||
Subject: [PATCH] wifi: ath11k: fix SAC bug on peer addition with sta band
|
||||
migration
|
||||
|
||||
Fix sleep in atomic context warning detected by Smatch static checker
|
||||
analyzer.
|
||||
|
||||
Following the locking pattern for peer_rhash_add lock tbl_mtx_lock mutex
|
||||
always even if sta is not transitioning to another band.
|
||||
This is peer_add function and a more secure locking should not cause
|
||||
performance regression.
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Fixes: d673cb6fe6c0 ("wifi: ath11k: fix peer addition/deletion error on sta band migration")
|
||||
Reported-by: Dan Carpenter <error27@gmail.com>
|
||||
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230209222622.1751-1-ansuelsmth@gmail.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/peer.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.c
|
||||
@@ -382,22 +382,23 @@ int ath11k_peer_create(struct ath11k *ar
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
+ mutex_lock(&ar->ab->tbl_mtx_lock);
|
||||
spin_lock_bh(&ar->ab->base_lock);
|
||||
peer = ath11k_peer_find_by_addr(ar->ab, param->peer_addr);
|
||||
if (peer) {
|
||||
if (peer->vdev_id == param->vdev_id) {
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
+ mutex_unlock(&ar->ab->tbl_mtx_lock);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* Assume sta is transitioning to another band.
|
||||
* Remove here the peer from rhash.
|
||||
*/
|
||||
- mutex_lock(&ar->ab->tbl_mtx_lock);
|
||||
ath11k_peer_rhash_delete(ar->ab, peer);
|
||||
- mutex_unlock(&ar->ab->tbl_mtx_lock);
|
||||
}
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
+ mutex_unlock(&ar->ab->tbl_mtx_lock);
|
||||
|
||||
ret = ath11k_wmi_send_peer_create_cmd(ar, param);
|
||||
if (ret) {
|
||||
@@ -32,7 +32,7 @@ Link: https://lore.kernel.org/r/20230201183201.14431-1-len.brown@intel.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -998,7 +998,7 @@ static __maybe_unused int ath11k_pci_pm_
|
||||
@@ -1004,7 +1004,7 @@ static __maybe_unused int ath11k_pci_pm_
|
||||
if (ret)
|
||||
ath11k_warn(ab, "failed to resume core: %d\n", ret);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -2699,6 +2699,117 @@ static int ath11k_setup_peer_smps(struct
|
||||
@@ -2696,6 +2696,117 @@ static int ath11k_setup_peer_smps(struct
|
||||
ath11k_smps_map[smps]);
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
static void ath11k_bss_assoc(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *bss_conf)
|
||||
@@ -2709,6 +2820,7 @@ static void ath11k_bss_assoc(struct ieee
|
||||
@@ -2706,6 +2817,7 @@ static void ath11k_bss_assoc(struct ieee
|
||||
struct ieee80211_sta *ap_sta;
|
||||
struct ath11k_peer *peer;
|
||||
bool is_auth = false;
|
||||
@@ -147,7 +147,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&ar->conf_mutex);
|
||||
@@ -2726,6 +2838,9 @@ static void ath11k_bss_assoc(struct ieee
|
||||
@@ -2723,6 +2835,9 @@ static void ath11k_bss_assoc(struct ieee
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
ath11k_peer_assoc_prepare(ar, vif, ap_sta, &peer_arg, false);
|
||||
|
||||
rcu_read_unlock();
|
||||
@@ -2753,6 +2868,12 @@ static void ath11k_bss_assoc(struct ieee
|
||||
@@ -2750,6 +2865,12 @@ static void ath11k_bss_assoc(struct ieee
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
WARN_ON(arvif->is_up);
|
||||
|
||||
arvif->aid = vif->cfg.aid;
|
||||
@@ -3202,6 +3323,8 @@ static void ath11k_mac_op_bss_info_chang
|
||||
@@ -3199,6 +3320,8 @@ static void ath11k_mac_op_bss_info_chang
|
||||
ether_addr_copy(arvif->bssid, info->bssid);
|
||||
|
||||
if (changed & BSS_CHANGED_BEACON_ENABLED) {
|
||||
@@ -179,7 +179,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
ath11k_control_beaconing(arvif, info);
|
||||
|
||||
if (arvif->is_up && vif->bss_conf.he_support &&
|
||||
@@ -5392,6 +5515,10 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
@@ -5389,6 +5512,10 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
|
||||
he_cap_elem->mac_cap_info[1] &=
|
||||
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_MASK;
|
||||
@@ -190,7 +190,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
|
||||
he_cap_elem->phy_cap_info[5] &=
|
||||
~IEEE80211_HE_PHY_CAP5_BEAMFORMEE_NUM_SND_DIM_UNDER_80MHZ_MASK;
|
||||
@@ -6026,69 +6153,6 @@ ath11k_mac_setup_vdev_create_params(stru
|
||||
@@ -6023,69 +6150,6 @@ ath11k_mac_setup_vdev_create_params(stru
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
static void ath11k_mac_op_update_vif_offload(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
@@ -6757,7 +6821,6 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||
@@ -6754,7 +6818,6 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
struct wmi_vdev_start_req_arg arg = {};
|
||||
const struct cfg80211_chan_def *chandef = &ctx->def;
|
||||
@@ -268,7 +268,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-3-git-send-email-quic_msinada@q
|
||||
int ret = 0;
|
||||
|
||||
lockdep_assert_held(&ar->conf_mutex);
|
||||
@@ -6798,15 +6861,6 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||
@@ -6795,15 +6858,6 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||
spin_lock_bh(&ab->base_lock);
|
||||
arg.regdomain = ar->ab->dfs_region;
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
|
||||
@@ -17,7 +17,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-4-git-send-email-quic_msinada@q
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5483,6 +5483,27 @@ static __le16 ath11k_mac_setup_he_6ghz_c
|
||||
@@ -5480,6 +5480,27 @@ static __le16 ath11k_mac_setup_he_6ghz_c
|
||||
return cpu_to_le16(bcap->he_6ghz_capa);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-4-git-send-email-quic_msinada@q
|
||||
static int ath11k_mac_copy_he_cap(struct ath11k *ar,
|
||||
struct ath11k_pdev_cap *cap,
|
||||
struct ieee80211_sband_iftype_data *data,
|
||||
@@ -5544,18 +5565,7 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
@@ -5541,18 +5562,7 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/1666128501-12364-5-git-send-email-quic_msinada@q
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5488,20 +5488,36 @@ static void ath11k_mac_set_hemcsmap(stru
|
||||
@@ -5485,20 +5485,36 @@ static void ath11k_mac_set_hemcsmap(stru
|
||||
struct ieee80211_sta_he_cap *he_cap,
|
||||
int band)
|
||||
{
|
||||
|
||||
@@ -36,7 +36,7 @@ Link: https://lore.kernel.org/r/20221219053844.4084486-1-quic_mkenna@quicinc.com
|
||||
static int ath11k_hw_mac_id_to_pdev_id_ipq8074(struct ath11k_hw_params *hw,
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -9174,6 +9174,11 @@ static int __ath11k_mac_register(struct
|
||||
@@ -9179,6 +9179,11 @@ static int __ath11k_mac_register(struct
|
||||
goto err_free_if_combs;
|
||||
}
|
||||
|
||||
|
||||
@@ -568,7 +568,7 @@ Link: https://lore.kernel.org/r/20230110121024.14051-3-quic_adisi@quicinc.com
|
||||
kfree(reg_info);
|
||||
}
|
||||
return ret;
|
||||
@@ -8054,7 +8437,10 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -8070,7 +8453,10 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
ath11k_service_ready_ext2_event(ab, skb);
|
||||
break;
|
||||
case WMI_REG_CHAN_LIST_CC_EVENTID:
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
From 5a78ac33e3cb8822da64dd1af196e83664b332b0 Mon Sep 17 00:00:00 2001
|
||||
From: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
||||
Date: Thu, 9 Mar 2023 15:23:08 +0530
|
||||
Subject: [PATCH] wifi: ath11k: fix deinitialization of firmware resources
|
||||
|
||||
Currently, in ath11k_ahb_fw_resources_init(), iommu domain
|
||||
mapping is done only for the chipsets having fixed firmware
|
||||
memory. Also, for such chipsets, mapping is done only if it
|
||||
does not have TrustZone support.
|
||||
|
||||
During deinitialization, only if TrustZone support is not there,
|
||||
iommu is unmapped back. However, for non fixed firmware memory
|
||||
chipsets, TrustZone support is not there and this makes the
|
||||
condition check to true and it tries to unmap the memory which
|
||||
was not mapped during initialization.
|
||||
|
||||
This leads to the following trace -
|
||||
|
||||
[ 83.198790] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
|
||||
[ 83.259537] Modules linked in: ath11k_ahb ath11k qmi_helpers
|
||||
.. snip ..
|
||||
[ 83.280286] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
|
||||
[ 83.287228] pc : __iommu_unmap+0x30/0x140
|
||||
[ 83.293907] lr : iommu_unmap+0x5c/0xa4
|
||||
[ 83.298072] sp : ffff80000b3abad0
|
||||
.. snip ..
|
||||
[ 83.369175] Call trace:
|
||||
[ 83.376282] __iommu_unmap+0x30/0x140
|
||||
[ 83.378541] iommu_unmap+0x5c/0xa4
|
||||
[ 83.382360] ath11k_ahb_fw_resource_deinit.part.12+0x2c/0xac [ath11k_ahb]
|
||||
[ 83.385666] ath11k_ahb_free_resources+0x140/0x17c [ath11k_ahb]
|
||||
[ 83.392521] ath11k_ahb_shutdown+0x34/0x40 [ath11k_ahb]
|
||||
[ 83.398248] platform_shutdown+0x20/0x2c
|
||||
[ 83.403455] device_shutdown+0x16c/0x1c4
|
||||
[ 83.407621] kernel_restart_prepare+0x34/0x3c
|
||||
[ 83.411529] kernel_restart+0x14/0x74
|
||||
[ 83.415781] __do_sys_reboot+0x1c4/0x22c
|
||||
[ 83.419427] __arm64_sys_reboot+0x1c/0x24
|
||||
[ 83.423420] invoke_syscall+0x44/0xfc
|
||||
[ 83.427326] el0_svc_common.constprop.3+0xac/0xe8
|
||||
[ 83.430974] do_el0_svc+0xa0/0xa8
|
||||
[ 83.435659] el0_svc+0x1c/0x44
|
||||
[ 83.438957] el0t_64_sync_handler+0x60/0x144
|
||||
[ 83.441910] el0t_64_sync+0x15c/0x160
|
||||
[ 83.446343] Code: aa0103f4 f9400001 f90027a1 d2800001 (f94006a0)
|
||||
[ 83.449903] ---[ end trace 0000000000000000 ]---
|
||||
|
||||
This can be reproduced by probing an AHB chipset which is not
|
||||
having a fixed memory region. During reboot (or rmmod) trace
|
||||
can be seen.
|
||||
|
||||
Fix this issue by adding a condition check on firmware fixed memory
|
||||
hw_param as done in the counter initialization function.
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Fixes: f9eec4947add ("ath11k: Add support for targets without trustzone")
|
||||
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230309095308.24937-1-quic_adisi@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/ahb.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
||||
@@ -1078,6 +1078,12 @@ static int ath11k_ahb_fw_resource_deinit
|
||||
struct iommu_domain *iommu;
|
||||
size_t unmapped_size;
|
||||
|
||||
+ /* Chipsets not requiring MSA would have not initialized
|
||||
+ * MSA resources, return success in such cases.
|
||||
+ */
|
||||
+ if (!ab->hw_params.fixed_fw_mem)
|
||||
+ return 0;
|
||||
+
|
||||
if (ab_ahb->fw.use_tz)
|
||||
return 0;
|
||||
|
||||
@@ -65,7 +65,7 @@ Link: https://lore.kernel.org/r/20230309164434.32660-1-quic_hprem@quicinc.com
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3029,39 +3006,51 @@ static int ath11k_dp_rx_reap_mon_status_
|
||||
@@ -3038,39 +3015,51 @@ static int ath11k_dp_rx_reap_mon_status_
|
||||
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
skb = idr_find(&rx_ring->bufs_idr, buf_id);
|
||||
|
||||
@@ -47,7 +47,7 @@ Link: https://lore.kernel.org/r/20230323060913.10097-1-quic_mpubbise@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -3819,8 +3819,29 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3816,8 +3816,29 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
goto exit;
|
||||
}
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ Link: https://lore.kernel.org/r/20230317072034.8217-1-quic_gjothira@quicinc.com
|
||||
struct ath11k_hw_ops {
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -3538,7 +3538,7 @@ static void ath11k_mac_op_bss_info_chang
|
||||
@@ -3535,7 +3535,7 @@ static void ath11k_mac_op_bss_info_chang
|
||||
|
||||
if (changed & BSS_CHANGED_FTM_RESPONDER &&
|
||||
arvif->ftm_responder != info->ftm_responder &&
|
||||
@@ -106,7 +106,7 @@ Link: https://lore.kernel.org/r/20230317072034.8217-1-quic_gjothira@quicinc.com
|
||||
(vif->type == NL80211_IFTYPE_AP ||
|
||||
vif->type == NL80211_IFTYPE_MESH_POINT)) {
|
||||
arvif->ftm_responder = info->ftm_responder;
|
||||
@@ -9234,7 +9234,7 @@ static int __ath11k_mac_register(struct
|
||||
@@ -9239,7 +9239,7 @@ static int __ath11k_mac_register(struct
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_SET_SCAN_DWELL);
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
From 756a7f90878f0866fd2fe167ef37e90b47326b96 Mon Sep 17 00:00:00 2001
|
||||
From: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Date: Fri, 24 Mar 2023 16:57:01 +0200
|
||||
Subject: [PATCH] wifi: ath11k: fix writing to unintended memory region
|
||||
|
||||
While initializing spectral, the magic value is getting written to the
|
||||
invalid memory address leading to random boot-up crash. This occurs
|
||||
due to the incorrect index increment in ath11k_dbring_fill_magic_value
|
||||
function. Fix it by replacing the existing logic with memset32 to ensure
|
||||
there is no invalid memory access.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1-01838-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Fixes: d3d358efc553 ("ath11k: add spectral/CFR buffer validation support")
|
||||
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230321052900.16895-1-quic_ppranees@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dbring.c | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dbring.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dbring.c
|
||||
@@ -26,13 +26,13 @@ int ath11k_dbring_validate_buffer(struct
|
||||
static void ath11k_dbring_fill_magic_value(struct ath11k *ar,
|
||||
void *buffer, u32 size)
|
||||
{
|
||||
- u32 *temp;
|
||||
- int idx;
|
||||
+ /* memset32 function fills buffer payload with the ATH11K_DB_MAGIC_VALUE
|
||||
+ * and the variable size is expected to be the number of u32 values
|
||||
+ * to be stored, not the number of bytes.
|
||||
+ */
|
||||
+ size = size / sizeof(u32);
|
||||
|
||||
- size = size >> 2;
|
||||
-
|
||||
- for (idx = 0, temp = buffer; idx < size; idx++, temp++)
|
||||
- *temp++ = ATH11K_DB_MAGIC_VALUE;
|
||||
+ memset32(buffer, ATH11K_DB_MAGIC_VALUE, size);
|
||||
}
|
||||
|
||||
static int ath11k_dbring_bufs_replenish(struct ath11k *ar,
|
||||
@@ -30,7 +30,7 @@ Link: https://lore.kernel.org/r/20230315161817.29627-1-quic_mpubbise@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -3755,6 +3755,18 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
@@ -3752,6 +3752,18 @@ static int ath11k_mac_op_hw_scan(struct
|
||||
int i;
|
||||
u32 scan_timeout;
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ Link: https://lore.kernel.org/r/20230323112613.7550-1-cai.huoqing@linux.dev
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -540,7 +540,7 @@ static int ath11k_pci_claim(struct ath11
|
||||
@@ -544,7 +544,7 @@ static int ath11k_pci_claim(struct ath11
|
||||
if (!ab->mem) {
|
||||
ath11k_err(ab, "failed to map pci bar %d\n", ATH11K_PCI_BAR_NUM);
|
||||
ret = -EIO;
|
||||
@@ -39,7 +39,7 @@ Link: https://lore.kernel.org/r/20230323112613.7550-1-cai.huoqing@linux.dev
|
||||
}
|
||||
|
||||
ab->mem_ce = ab->mem;
|
||||
@@ -548,8 +548,6 @@ static int ath11k_pci_claim(struct ath11
|
||||
@@ -552,8 +552,6 @@ static int ath11k_pci_claim(struct ath11
|
||||
ath11k_dbg(ab, ATH11K_DBG_BOOT, "boot pci_mem 0x%pK\n", ab->mem);
|
||||
return 0;
|
||||
|
||||
@@ -48,7 +48,7 @@ Link: https://lore.kernel.org/r/20230323112613.7550-1-cai.huoqing@linux.dev
|
||||
release_region:
|
||||
pci_release_region(pdev, ATH11K_PCI_BAR_NUM);
|
||||
disable_device:
|
||||
@@ -565,7 +563,6 @@ static void ath11k_pci_free_region(struc
|
||||
@@ -569,7 +567,6 @@ static void ath11k_pci_free_region(struc
|
||||
|
||||
pci_iounmap(pci_dev, ab->mem);
|
||||
ab->mem = NULL;
|
||||
|
||||
@@ -22,7 +22,7 @@ Link: https://lore.kernel.org/r/20230328071150.29645-1-quic_tamizhr@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6685,6 +6685,11 @@ static void ath11k_mac_op_remove_interfa
|
||||
@@ -6682,6 +6682,11 @@ static void ath11k_mac_op_remove_interfa
|
||||
ath11k_dbg(ab, ATH11K_DBG_MAC, "mac remove interface (vdev %d)\n",
|
||||
arvif->vdev_id);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/20230330143718.19511-1-tiwai@suse.de
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -1036,7 +1036,8 @@ module_exit(ath11k_pci_exit);
|
||||
@@ -1042,7 +1042,8 @@ module_exit(ath11k_pci_exit);
|
||||
MODULE_DESCRIPTION("Driver support for Qualcomm Technologies 802.11ax WLAN PCIe devices");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ Link: https://lore.kernel.org/r/20230405090425.1351-1-kvalo@kernel.org
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3106,8 +3106,11 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
@@ -3115,8 +3115,11 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
int i;
|
||||
|
||||
tfm = crypto_alloc_shash("michael_mic", 0, 0);
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
From a06bfb3c9f69f303692cdae87bc0899d2ae8b2a6 Mon Sep 17 00:00:00 2001
|
||||
From: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Date: Tue, 4 Apr 2023 00:11:54 +0530
|
||||
Subject: [PATCH] wifi: ath11k: Ignore frags from uninitialized peer in dp.
|
||||
|
||||
When max virtual ap interfaces are configured in all the bands with
|
||||
ACS and hostapd restart is done every 60s, a crash is observed at
|
||||
random times.
|
||||
In this certain scenario, a fragmented packet is received for
|
||||
self peer, for which rx_tid and rx_frags are not initialized in
|
||||
datapath. While handling this fragment, crash is observed as the
|
||||
rx_frag list is uninitialised and when we walk in
|
||||
ath11k_dp_rx_h_sort_frags, skb null leads to exception.
|
||||
|
||||
To address this, before processing received fragments we check
|
||||
dp_setup_done flag is set to ensure that peer has completed its
|
||||
dp peer setup for fragment queue, else ignore processing the
|
||||
fragments.
|
||||
|
||||
Call trace:
|
||||
ath11k_dp_process_rx_err+0x550/0x1084 [ath11k]
|
||||
ath11k_dp_service_srng+0x70/0x370 [ath11k]
|
||||
0xffffffc009693a04
|
||||
__napi_poll+0x30/0xa4
|
||||
net_rx_action+0x118/0x270
|
||||
__do_softirq+0x10c/0x244
|
||||
irq_exit+0x64/0xb4
|
||||
__handle_domain_irq+0x88/0xac
|
||||
gic_handle_irq+0x74/0xbc
|
||||
el1_irq+0xf0/0x1c0
|
||||
arch_cpu_idle+0x10/0x18
|
||||
do_idle+0x104/0x248
|
||||
cpu_startup_entry+0x20/0x64
|
||||
rest_init+0xd0/0xdc
|
||||
arch_call_rest_init+0xc/0x14
|
||||
start_kernel+0x480/0x4b8
|
||||
Code: f9400281 f94066a2 91405021 b94a0023 (f9406401)
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
|
||||
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403184155.8670-2-quic_nmaran@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp.c | 4 +++-
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 8 ++++++++
|
||||
drivers/net/wireless/ath/ath11k/peer.h | 1 +
|
||||
3 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp.c
|
||||
@@ -36,6 +36,7 @@ void ath11k_dp_peer_cleanup(struct ath11
|
||||
}
|
||||
|
||||
ath11k_peer_rx_tid_cleanup(ar, peer);
|
||||
+ peer->dp_setup_done = false;
|
||||
crypto_free_shash(peer->tfm_mmic);
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
}
|
||||
@@ -72,7 +73,8 @@ int ath11k_dp_peer_setup(struct ath11k *
|
||||
ret = ath11k_peer_rx_frag_setup(ar, addr, vdev_id);
|
||||
if (ret) {
|
||||
ath11k_warn(ab, "failed to setup rx defrag context\n");
|
||||
- return ret;
|
||||
+ tid--;
|
||||
+ goto peer_clean;
|
||||
}
|
||||
|
||||
/* TODO: Setup other peer specific resource used in data path */
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3130,6 +3130,7 @@ int ath11k_peer_rx_frag_setup(struct ath
|
||||
}
|
||||
|
||||
peer->tfm_mmic = tfm;
|
||||
+ peer->dp_setup_done = true;
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
|
||||
return 0;
|
||||
@@ -3575,6 +3576,13 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
ret = -ENOENT;
|
||||
goto out_unlock;
|
||||
}
|
||||
+ if (!peer->dp_setup_done) {
|
||||
+ ath11k_warn(ab, "The peer %pM [%d] has uninitialized datapath\n",
|
||||
+ peer->addr, peer_id);
|
||||
+ ret = -ENOENT;
|
||||
+ goto out_unlock;
|
||||
+ }
|
||||
+
|
||||
rx_tid = &peer->rx_tid[tid];
|
||||
|
||||
if ((!skb_queue_empty(&rx_tid->rx_frags) && seqno != rx_tid->cur_sn) ||
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.h
|
||||
@@ -35,6 +35,7 @@ struct ath11k_peer {
|
||||
u16 sec_type;
|
||||
u16 sec_type_grp;
|
||||
bool is_authorized;
|
||||
+ bool dp_setup_done;
|
||||
};
|
||||
|
||||
void ath11k_peer_unmap_event(struct ath11k_base *ab, u16 peer_id);
|
||||
@@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20230403184155.8670-3-quic_nmaran@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -3598,7 +3598,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
@@ -3607,7 +3607,7 @@ static int ath11k_dp_rx_frag_h_mpdu(stru
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
From 6257c702264c44d74c6b71f0c62a7665da2dc356 Mon Sep 17 00:00:00 2001
|
||||
From: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:02 +0300
|
||||
Subject: [PATCH] wifi: ath11k: fix tx status reporting in encap offload mode
|
||||
|
||||
ieee80211_tx_status() treats packets in 802.11 frame format and
|
||||
tries to extract sta address from packet header. When tx encap
|
||||
offload is enabled, this becomes invalid operation. Hence, switch
|
||||
to using ieee80211_tx_status_ext() after filling in station
|
||||
address for handling both 802.11 and 802.3 frames.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403195738.25367-2-quic_pradeepc@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp.h | 4 +++
|
||||
drivers/net/wireless/ath/ath11k/dp_tx.c | 33 ++++++++++++++++++++++++-
|
||||
drivers/net/wireless/ath/ath11k/dp_tx.h | 1 +
|
||||
3 files changed, 37 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp.h
|
||||
@@ -303,12 +303,16 @@ struct ath11k_dp {
|
||||
|
||||
#define HTT_TX_WBM_COMP_STATUS_OFFSET 8
|
||||
|
||||
+#define HTT_INVALID_PEER_ID 0xffff
|
||||
+
|
||||
/* HTT tx completion is overlaid in wbm_release_ring */
|
||||
#define HTT_TX_WBM_COMP_INFO0_STATUS GENMASK(12, 9)
|
||||
#define HTT_TX_WBM_COMP_INFO0_REINJECT_REASON GENMASK(16, 13)
|
||||
#define HTT_TX_WBM_COMP_INFO0_REINJECT_REASON GENMASK(16, 13)
|
||||
|
||||
#define HTT_TX_WBM_COMP_INFO1_ACK_RSSI GENMASK(31, 24)
|
||||
+#define HTT_TX_WBM_COMP_INFO2_SW_PEER_ID GENMASK(15, 0)
|
||||
+#define HTT_TX_WBM_COMP_INFO2_VALID BIT(21)
|
||||
|
||||
struct htt_tx_wbm_completion {
|
||||
u32 info0;
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
||||
@@ -316,10 +316,12 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
struct dp_tx_ring *tx_ring,
|
||||
struct ath11k_dp_htt_wbm_tx_status *ts)
|
||||
{
|
||||
+ struct ieee80211_tx_status status = { 0 };
|
||||
struct sk_buff *msdu;
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ath11k_skb_cb *skb_cb;
|
||||
struct ath11k *ar;
|
||||
+ struct ath11k_peer *peer;
|
||||
|
||||
spin_lock(&tx_ring->tx_idr_lock);
|
||||
msdu = idr_remove(&tx_ring->txbuf_idr, ts->msdu_id);
|
||||
@@ -341,6 +343,11 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
|
||||
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
|
||||
|
||||
+ if (!skb_cb->vif) {
|
||||
+ dev_kfree_skb_any(msdu);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
memset(&info->status, 0, sizeof(info->status));
|
||||
|
||||
if (ts->acked) {
|
||||
@@ -355,7 +362,23 @@ ath11k_dp_tx_htt_tx_complete_buf(struct
|
||||
}
|
||||
}
|
||||
|
||||
- ieee80211_tx_status(ar->hw, msdu);
|
||||
+ spin_lock_bh(&ab->base_lock);
|
||||
+ peer = ath11k_peer_find_by_id(ab, ts->peer_id);
|
||||
+ if (!peer || !peer->sta) {
|
||||
+ ath11k_dbg(ab, ATH11K_DBG_DATA,
|
||||
+ "dp_tx: failed to find the peer with peer_id %d\n",
|
||||
+ ts->peer_id);
|
||||
+ spin_unlock_bh(&ab->base_lock);
|
||||
+ dev_kfree_skb_any(msdu);
|
||||
+ return;
|
||||
+ }
|
||||
+ spin_unlock_bh(&ab->base_lock);
|
||||
+
|
||||
+ status.sta = peer->sta;
|
||||
+ status.info = info;
|
||||
+ status.skb = msdu;
|
||||
+
|
||||
+ ieee80211_tx_status_ext(ar->hw, &status);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -379,7 +402,15 @@ ath11k_dp_tx_process_htt_tx_complete(str
|
||||
ts.msdu_id = msdu_id;
|
||||
ts.ack_rssi = FIELD_GET(HTT_TX_WBM_COMP_INFO1_ACK_RSSI,
|
||||
status_desc->info1);
|
||||
+
|
||||
+ if (FIELD_GET(HTT_TX_WBM_COMP_INFO2_VALID, status_desc->info2))
|
||||
+ ts.peer_id = FIELD_GET(HTT_TX_WBM_COMP_INFO2_SW_PEER_ID,
|
||||
+ status_desc->info2);
|
||||
+ else
|
||||
+ ts.peer_id = HTT_INVALID_PEER_ID;
|
||||
+
|
||||
ath11k_dp_tx_htt_tx_complete_buf(ab, tx_ring, &ts);
|
||||
+
|
||||
break;
|
||||
case HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ:
|
||||
case HAL_WBM_REL_HTT_TX_COMP_STATUS_INSPECT:
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.h
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.h
|
||||
@@ -13,6 +13,7 @@ struct ath11k_dp_htt_wbm_tx_status {
|
||||
u32 msdu_id;
|
||||
bool acked;
|
||||
int ack_rssi;
|
||||
+ u16 peer_id;
|
||||
};
|
||||
|
||||
void ath11k_dp_tx_update_txcompl(struct ath11k *ar, struct hal_tx_status *ts);
|
||||
@@ -1,70 +0,0 @@
|
||||
From f9fff67d2d7ca6fa8066132003a3deef654c55b1 Mon Sep 17 00:00:00 2001
|
||||
From: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Date: Mon, 17 Apr 2023 13:35:02 +0300
|
||||
Subject: [PATCH] wifi: ath11k: Fix SKB corruption in REO destination ring
|
||||
|
||||
While running traffics for a long time, randomly an RX descriptor
|
||||
filled with value "0" from REO destination ring is received.
|
||||
This descriptor which is invalid causes the wrong SKB (SKB stored in
|
||||
the IDR lookup with buffer id "0") to be fetched which in turn
|
||||
causes SKB memory corruption issue and the same leads to crash
|
||||
after some time.
|
||||
|
||||
Changed the start id for idr allocation to "1" and the buffer id "0"
|
||||
is reserved for error validation. Introduced Sanity check to validate
|
||||
the descriptor, before processing the SKB.
|
||||
|
||||
Crash Signature :
|
||||
|
||||
Unable to handle kernel paging request at virtual address 3f004900
|
||||
PC points to "b15_dma_inv_range+0x30/0x50"
|
||||
LR points to "dma_cache_maint_page+0x8c/0x128".
|
||||
The Backtrace obtained is as follows:
|
||||
[<8031716c>] (b15_dma_inv_range) from [<80313a4c>] (dma_cache_maint_page+0x8c/0x128)
|
||||
[<80313a4c>] (dma_cache_maint_page) from [<80313b90>] (__dma_page_dev_to_cpu+0x28/0xcc)
|
||||
[<80313b90>] (__dma_page_dev_to_cpu) from [<7fb5dd68>] (ath11k_dp_process_rx+0x1e8/0x4a4 [ath11k])
|
||||
[<7fb5dd68>] (ath11k_dp_process_rx [ath11k]) from [<7fb53c20>] (ath11k_dp_service_srng+0xb0/0x2ac [ath11k])
|
||||
[<7fb53c20>] (ath11k_dp_service_srng [ath11k]) from [<7f67bba4>] (ath11k_pci_ext_grp_napi_poll+0x1c/0x78 [ath11k_pci])
|
||||
[<7f67bba4>] (ath11k_pci_ext_grp_napi_poll [ath11k_pci]) from [<807d5cf4>] (__napi_poll+0x28/0xb8)
|
||||
[<807d5cf4>] (__napi_poll) from [<807d5f28>] (net_rx_action+0xf0/0x280)
|
||||
[<807d5f28>] (net_rx_action) from [<80302148>] (__do_softirq+0xd0/0x280)
|
||||
[<80302148>] (__do_softirq) from [<80320408>] (irq_exit+0x74/0xd4)
|
||||
[<80320408>] (irq_exit) from [<803638a4>] (__handle_domain_irq+0x90/0xb4)
|
||||
[<803638a4>] (__handle_domain_irq) from [<805bedec>] (gic_handle_irq+0x58/0x90)
|
||||
[<805bedec>] (gic_handle_irq) from [<80301a78>] (__irq_svc+0x58/0x8c)
|
||||
|
||||
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230403191533.28114-1-quic_nmaran@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/dp_rx.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
|
||||
@@ -389,10 +389,10 @@ int ath11k_dp_rxbufs_replenish(struct at
|
||||
goto fail_free_skb;
|
||||
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
- buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 0,
|
||||
- rx_ring->bufs_max * 3, GFP_ATOMIC);
|
||||
+ buf_id = idr_alloc(&rx_ring->bufs_idr, skb, 1,
|
||||
+ (rx_ring->bufs_max * 3) + 1, GFP_ATOMIC);
|
||||
spin_unlock_bh(&rx_ring->idr_lock);
|
||||
- if (buf_id < 0)
|
||||
+ if (buf_id <= 0)
|
||||
goto fail_dma_unmap;
|
||||
|
||||
desc = ath11k_hal_srng_src_get_next_entry(ab, srng);
|
||||
@@ -2665,6 +2665,9 @@ try_again:
|
||||
cookie);
|
||||
mac_id = FIELD_GET(DP_RXDMA_BUF_COOKIE_PDEV_ID, cookie);
|
||||
|
||||
+ if (unlikely(buf_id == 0))
|
||||
+ continue;
|
||||
+
|
||||
ar = ab->pdevs[mac_id].ar;
|
||||
rx_ring = &ar->dp.rx_refill_buf_ring;
|
||||
spin_lock_bh(&rx_ring->idr_lock);
|
||||
@@ -24,7 +24,7 @@ Link: https://lore.kernel.org/r/1681762947-13882-1-git-send-email-quic_msinada@q
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5585,10 +5585,6 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
@@ -5582,10 +5582,6 @@ static int ath11k_mac_copy_he_cap(struct
|
||||
|
||||
he_cap_elem->mac_cap_info[1] &=
|
||||
IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_MASK;
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
From e2ceb1de2f83aafd8003f0b72dfd4b7441e97d14 Mon Sep 17 00:00:00 2001
|
||||
From: Maxime Bizon <mbizon@freebox.fr>
|
||||
Date: Fri, 21 Apr 2023 16:54:45 +0200
|
||||
Subject: [PATCH] wifi: ath11k: fix registration of 6Ghz-only phy without the
|
||||
full channel range
|
||||
|
||||
Because of what seems to be a typo, a 6Ghz-only phy for which the BDF
|
||||
does not allow the 7115Mhz channel will fail to register:
|
||||
|
||||
WARNING: CPU: 2 PID: 106 at net/wireless/core.c:907 wiphy_register+0x914/0x954
|
||||
Modules linked in: ath11k_pci sbsa_gwdt
|
||||
CPU: 2 PID: 106 Comm: kworker/u8:5 Not tainted 6.3.0-rc7-next-20230418-00549-g1e096a17625a-dirty #9
|
||||
Hardware name: Freebox V7R Board (DT)
|
||||
Workqueue: ath11k_qmi_driver_event ath11k_qmi_driver_event_work
|
||||
pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
|
||||
pc : wiphy_register+0x914/0x954
|
||||
lr : ieee80211_register_hw+0x67c/0xc10
|
||||
sp : ffffff800b123aa0
|
||||
x29: ffffff800b123aa0 x28: 0000000000000000 x27: 0000000000000000
|
||||
x26: 0000000000000000 x25: 0000000000000006 x24: ffffffc008d51418
|
||||
x23: ffffffc008cb0838 x22: ffffff80176c2460 x21: 0000000000000168
|
||||
x20: ffffff80176c0000 x19: ffffff80176c03e0 x18: 0000000000000014
|
||||
x17: 00000000cbef338c x16: 00000000d2a26f21 x15: 00000000ad6bb85f
|
||||
x14: 0000000000000020 x13: 0000000000000020 x12: 00000000ffffffbd
|
||||
x11: 0000000000000208 x10: 00000000fffffdf7 x9 : ffffffc009394718
|
||||
x8 : ffffff80176c0528 x7 : 000000007fffffff x6 : 0000000000000006
|
||||
x5 : 0000000000000005 x4 : ffffff800b304284 x3 : ffffff800b304284
|
||||
x2 : ffffff800b304d98 x1 : 0000000000000000 x0 : 0000000000000000
|
||||
Call trace:
|
||||
wiphy_register+0x914/0x954
|
||||
ieee80211_register_hw+0x67c/0xc10
|
||||
ath11k_mac_register+0x7c4/0xe10
|
||||
ath11k_core_qmi_firmware_ready+0x1f4/0x570
|
||||
ath11k_qmi_driver_event_work+0x198/0x590
|
||||
process_one_work+0x1b8/0x328
|
||||
worker_thread+0x6c/0x414
|
||||
kthread+0x100/0x104
|
||||
ret_from_fork+0x10/0x20
|
||||
---[ end trace 0000000000000000 ]---
|
||||
ath11k_pci 0002:01:00.0: ieee80211 registration failed: -22
|
||||
ath11k_pci 0002:01:00.0: failed register the radio with mac80211: -22
|
||||
ath11k_pci 0002:01:00.0: failed to create pdev core: -22
|
||||
|
||||
Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230421145445.2612280-1-mbizon@freebox.fr
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -8892,7 +8892,7 @@ static int ath11k_mac_setup_channels_rat
|
||||
}
|
||||
|
||||
if (supported_bands & WMI_HOST_WLAN_5G_CAP) {
|
||||
- if (reg_cap->high_5ghz_chan >= ATH11K_MAX_6G_FREQ) {
|
||||
+ if (reg_cap->high_5ghz_chan >= ATH11K_MIN_6G_FREQ) {
|
||||
channels = kmemdup(ath11k_6ghz_channels,
|
||||
sizeof(ath11k_6ghz_channels), GFP_KERNEL);
|
||||
if (!channels) {
|
||||
@@ -55,7 +55,7 @@ Link: https://lore.kernel.org/r/20230417205447.1800912-1-arnd@kernel.org
|
||||
{
|
||||
int nss;
|
||||
|
||||
@@ -1658,7 +1658,7 @@ static void ath11k_peer_assoc_h_rates(st
|
||||
@@ -1651,7 +1651,7 @@ static void ath11k_peer_assoc_h_rates(st
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -64,7 +64,7 @@ Link: https://lore.kernel.org/r/20230417205447.1800912-1-arnd@kernel.org
|
||||
{
|
||||
int nss;
|
||||
|
||||
@@ -1670,7 +1670,7 @@ ath11k_peer_assoc_h_ht_masked(const u8 h
|
||||
@@ -1663,7 +1663,7 @@ ath11k_peer_assoc_h_ht_masked(const u8 h
|
||||
}
|
||||
|
||||
static bool
|
||||
@@ -73,7 +73,7 @@ Link: https://lore.kernel.org/r/20230417205447.1800912-1-arnd@kernel.org
|
||||
{
|
||||
int nss;
|
||||
|
||||
@@ -2065,7 +2065,7 @@ static u16 ath11k_peer_assoc_h_he_limit(
|
||||
@@ -2058,7 +2058,7 @@ static u16 ath11k_peer_assoc_h_he_limit(
|
||||
}
|
||||
|
||||
static bool
|
||||
|
||||
@@ -56,7 +56,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-2-quic_alokad@quicinc.com
|
||||
#define ATH11K_QUEUE_LEN 4096
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -9001,19 +9001,23 @@ static int ath11k_mac_setup_iface_combin
|
||||
@@ -9006,19 +9006,23 @@ static int ath11k_mac_setup_iface_combin
|
||||
|
||||
static const u8 ath11k_if_types_ext_capa[] = {
|
||||
[0] = WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING,
|
||||
@@ -80,7 +80,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-2-quic_alokad@quicinc.com
|
||||
};
|
||||
|
||||
static const struct wiphy_iftype_ext_capab ath11k_iftypes_ext_capa[] = {
|
||||
@@ -9251,6 +9255,9 @@ static int __ath11k_mac_register(struct
|
||||
@@ -9256,6 +9260,9 @@ static int __ath11k_mac_register(struct
|
||||
wiphy_ext_feature_set(ar->hw->wiphy,
|
||||
NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-3-quic_alokad@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -6181,17 +6181,62 @@ static void ath11k_mac_op_stop(struct ie
|
||||
@@ -6178,17 +6178,62 @@ static void ath11k_mac_op_stop(struct ie
|
||||
atomic_set(&ar->num_pending_mgmt_tx, 0);
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-3-quic_alokad@quicinc.com
|
||||
|
||||
if (pdev->cap.supported_bands & WMI_HOST_WLAN_2G_CAP) {
|
||||
params->chains[NL80211_BAND_2GHZ].tx = ar->num_tx_chains;
|
||||
@@ -6206,6 +6251,7 @@ ath11k_mac_setup_vdev_create_params(stru
|
||||
@@ -6203,6 +6248,7 @@ ath11k_mac_setup_vdev_create_params(stru
|
||||
params->chains[NL80211_BAND_6GHZ].tx = ar->num_tx_chains;
|
||||
params->chains[NL80211_BAND_6GHZ].rx = ar->num_rx_chains;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-3-quic_alokad@quicinc.com
|
||||
}
|
||||
|
||||
static void ath11k_mac_op_update_vif_offload(struct ieee80211_hw *hw,
|
||||
@@ -6500,7 +6546,12 @@ static int ath11k_mac_op_add_interface(s
|
||||
@@ -6497,7 +6543,12 @@ static int ath11k_mac_op_add_interface(s
|
||||
for (i = 0; i < ARRAY_SIZE(vif->hw_queue); i++)
|
||||
vif->hw_queue[i] = i % (ATH11K_HW_MAX_QUEUES - 1);
|
||||
|
||||
@@ -111,7 +111,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-3-quic_alokad@quicinc.com
|
||||
|
||||
ret = ath11k_wmi_vdev_create(ar, vif->addr, &vdev_param);
|
||||
if (ret) {
|
||||
@@ -6905,6 +6956,17 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||
@@ -6902,6 +6953,17 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||
arg.pref_tx_streams = ar->num_tx_chains;
|
||||
arg.pref_rx_streams = ar->num_rx_chains;
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to put up monitor vdev %i: %d\n",
|
||||
vdev_id, ret);
|
||||
@@ -1423,6 +1423,7 @@ static void ath11k_control_beaconing(str
|
||||
@@ -1416,6 +1416,7 @@ static void ath11k_control_beaconing(str
|
||||
struct ieee80211_bss_conf *info)
|
||||
{
|
||||
struct ath11k *ar = arvif->ar;
|
||||
@@ -37,7 +37,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
||||
int ret = 0;
|
||||
|
||||
lockdep_assert_held(&arvif->ar->conf_mutex);
|
||||
@@ -1451,8 +1452,14 @@ static void ath11k_control_beaconing(str
|
||||
@@ -1444,8 +1445,14 @@ static void ath11k_control_beaconing(str
|
||||
|
||||
ether_addr_copy(arvif->bssid, info->bssid);
|
||||
|
||||
@@ -53,7 +53,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to bring up vdev %d: %i\n",
|
||||
arvif->vdev_id, ret);
|
||||
@@ -2879,7 +2886,8 @@ static void ath11k_bss_assoc(struct ieee
|
||||
@@ -2876,7 +2883,8 @@ static void ath11k_bss_assoc(struct ieee
|
||||
arvif->aid = vif->cfg.aid;
|
||||
ether_addr_copy(arvif->bssid, bss_conf->bssid);
|
||||
|
||||
@@ -63,7 +63,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
||||
if (ret) {
|
||||
ath11k_warn(ar->ab, "failed to set vdev %d up: %d\n",
|
||||
arvif->vdev_id, ret);
|
||||
@@ -7133,7 +7141,8 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
@@ -7130,7 +7138,8 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
int n_vifs)
|
||||
{
|
||||
struct ath11k_base *ab = ar->ab;
|
||||
@@ -73,7 +73,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
||||
int ret;
|
||||
int i;
|
||||
bool monitor_vif = false;
|
||||
@@ -7187,8 +7196,15 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
@@ -7184,8 +7193,15 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||
ath11k_warn(ab, "failed to update bcn tmpl during csa: %d\n",
|
||||
ret);
|
||||
|
||||
@@ -90,7 +90,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
||||
if (ret) {
|
||||
ath11k_warn(ab, "failed to bring vdev up %d: %d\n",
|
||||
arvif->vdev_id, ret);
|
||||
@@ -7306,7 +7322,8 @@ static int ath11k_start_vdev_delay(struc
|
||||
@@ -7303,7 +7319,8 @@ static int ath11k_start_vdev_delay(struc
|
||||
}
|
||||
|
||||
if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
|
||||
|
||||
@@ -23,7 +23,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-6-quic_alokad@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -1351,28 +1351,14 @@ err_mon_del:
|
||||
@@ -1344,28 +1344,14 @@ err_mon_del:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-6-quic_alokad@quicinc.com
|
||||
ies += sizeof(mgmt->u.beacon);
|
||||
|
||||
if (cfg80211_find_ie(WLAN_EID_RSN, ies, (skb_tail_pointer(bcn) - ies)))
|
||||
@@ -1386,7 +1372,28 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
@@ -1379,7 +1365,28 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
arvif->wpaie_present = true;
|
||||
else
|
||||
arvif->wpaie_present = false;
|
||||
|
||||
@@ -24,7 +24,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-7-quic_alokad@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -1351,6 +1351,84 @@ err_mon_del:
|
||||
@@ -1344,6 +1344,84 @@ err_mon_del:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-7-quic_alokad@quicinc.com
|
||||
static void ath11k_mac_set_vif_params(struct ath11k_vif *arvif,
|
||||
struct sk_buff *bcn)
|
||||
{
|
||||
@@ -1374,18 +1452,26 @@ static void ath11k_mac_set_vif_params(st
|
||||
@@ -1367,18 +1445,26 @@ static void ath11k_mac_set_vif_params(st
|
||||
arvif->wpaie_present = false;
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-7-quic_alokad@quicinc.com
|
||||
|
||||
bcn = ieee80211_beacon_get_template(hw, vif, &offs, 0);
|
||||
if (!bcn) {
|
||||
@@ -1393,9 +1479,12 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
@@ -1386,9 +1472,12 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-7-quic_alokad@quicinc.com
|
||||
kfree_skb(bcn);
|
||||
|
||||
if (ret)
|
||||
@@ -1405,6 +1494,23 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
@@ -1398,6 +1487,23 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-8-quic_alokad@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -1452,6 +1452,60 @@ static void ath11k_mac_set_vif_params(st
|
||||
@@ -1445,6 +1445,60 @@ static void ath11k_mac_set_vif_params(st
|
||||
arvif->wpaie_present = false;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-8-quic_alokad@quicinc.com
|
||||
static int ath11k_mac_setup_bcn_tmpl_mbssid(struct ath11k_vif *arvif)
|
||||
{
|
||||
struct ath11k *ar = arvif->ar;
|
||||
@@ -1484,7 +1538,7 @@ static int ath11k_mac_setup_bcn_tmpl_mbs
|
||||
@@ -1477,7 +1531,7 @@ static int ath11k_mac_setup_bcn_tmpl_mbs
|
||||
else if (!ath11k_mac_set_nontx_vif_params(tx_arvif, arvif, bcn))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -91,7 +91,7 @@ Link: https://lore.kernel.org/r/20230405221648.17950-8-quic_alokad@quicinc.com
|
||||
kfree_skb(bcn);
|
||||
|
||||
if (ret)
|
||||
@@ -1508,6 +1562,9 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
@@ -1501,6 +1555,9 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
||||
arvif != (void *)vif->mbssid_tx_vif->drv_priv && arvif->is_up)
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-2-quic_mkenna@quicinc.com
|
||||
*/
|
||||
|
||||
#include <net/mac80211.h>
|
||||
@@ -4338,6 +4338,20 @@ exit:
|
||||
@@ -4335,6 +4335,20 @@ exit:
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -52,7 +52,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-2-quic_mkenna@quicinc.com
|
||||
ath11k_mac_bitrate_mask_num_vht_rates(struct ath11k *ar,
|
||||
enum nl80211_band band,
|
||||
const struct cfg80211_bitrate_mask *mask)
|
||||
@@ -7791,20 +7805,6 @@ static void ath11k_mac_op_flush(struct i
|
||||
@@ -7788,20 +7802,6 @@ static void ath11k_mac_op_flush(struct i
|
||||
ath11k_mac_flush_tx_complete(ar);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -4480,6 +4480,54 @@ ath11k_mac_set_peer_he_fixed_rate(struct
|
||||
@@ -4477,6 +4477,54 @@ ath11k_mac_set_peer_he_fixed_rate(struct
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
static int ath11k_station_assoc(struct ath11k *ar,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_sta *sta,
|
||||
@@ -4491,7 +4539,7 @@ static int ath11k_station_assoc(struct a
|
||||
@@ -4488,7 +4536,7 @@ static int ath11k_station_assoc(struct a
|
||||
struct cfg80211_chan_def def;
|
||||
enum nl80211_band band;
|
||||
struct cfg80211_bitrate_mask *mask;
|
||||
@@ -91,7 +91,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
|
||||
lockdep_assert_held(&ar->conf_mutex);
|
||||
|
||||
@@ -4519,6 +4567,7 @@ static int ath11k_station_assoc(struct a
|
||||
@@ -4516,6 +4564,7 @@ static int ath11k_station_assoc(struct a
|
||||
|
||||
num_vht_rates = ath11k_mac_bitrate_mask_num_vht_rates(ar, band, mask);
|
||||
num_he_rates = ath11k_mac_bitrate_mask_num_he_rates(ar, band, mask);
|
||||
@@ -99,7 +99,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
|
||||
/* If single VHT/HE rate is configured (by set_bitrate_mask()),
|
||||
* peer_assoc will disable VHT/HE. This is now enabled by a peer specific
|
||||
@@ -4535,6 +4584,11 @@ static int ath11k_station_assoc(struct a
|
||||
@@ -4532,6 +4581,11 @@ static int ath11k_station_assoc(struct a
|
||||
band);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -111,7 +111,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
}
|
||||
|
||||
/* Re-assoc is run only to update supported rates for given station. It
|
||||
@@ -4608,7 +4662,7 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
@@ -4605,7 +4659,7 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
const u16 *vht_mcs_mask;
|
||||
const u16 *he_mcs_mask;
|
||||
u32 changed, bw, nss, smps, bw_prev;
|
||||
@@ -120,7 +120,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
const struct cfg80211_bitrate_mask *mask;
|
||||
struct peer_assoc_params peer_arg;
|
||||
enum wmi_phy_mode peer_phymode;
|
||||
@@ -4724,6 +4778,8 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
@@ -4721,6 +4775,8 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
|
||||
if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) {
|
||||
mask = &arvif->bitrate_mask;
|
||||
@@ -129,7 +129,7 @@ Link: https://lore.kernel.org/r/20230504092033.3542456-3-quic_mkenna@quicinc.com
|
||||
num_vht_rates = ath11k_mac_bitrate_mask_num_vht_rates(ar, band,
|
||||
mask);
|
||||
num_he_rates = ath11k_mac_bitrate_mask_num_he_rates(ar, band,
|
||||
@@ -4746,6 +4802,9 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
@@ -4743,6 +4799,9 @@ static void ath11k_sta_rc_update_wk(stru
|
||||
} else if (sta->deflink.he_cap.has_he && num_he_rates == 1) {
|
||||
ath11k_mac_set_peer_he_fixed_rate(arvif, sta, mask,
|
||||
band);
|
||||
|
||||
@@ -1,127 +0,0 @@
|
||||
From 88ca89202f8e8afb5225eb5244d79cd67c15d744 Mon Sep 17 00:00:00 2001
|
||||
From: Wen Gong <quic_wgong@quicinc.com>
|
||||
Date: Fri, 26 May 2023 12:41:06 +0300
|
||||
Subject: [PATCH] wifi: ath11k: add support default regdb while searching
|
||||
board-2.bin for WCN6855
|
||||
|
||||
Sometimes board-2.bin does not have the regdb data which matched the
|
||||
parameters such as vendor, device, subsystem-vendor, subsystem-device
|
||||
and etc. Add default regdb data with 'bus=%s' into board-2.bin for
|
||||
WCN6855, then ath11k use 'bus=pci' to search regdb data in board-2.bin
|
||||
for WCN6855.
|
||||
|
||||
kernel: [ 122.515808] ath11k_pci 0000:03:00.0: boot using board name 'bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262'
|
||||
kernel: [ 122.517240] ath11k_pci 0000:03:00.0: boot firmware request ath11k/WCN6855/hw2.0/board-2.bin size 6179564
|
||||
kernel: [ 122.517280] ath11k_pci 0000:03:00.0: failed to fetch regdb data for bus=pci,vendor=17cb,device=1103,subsystem-vendor=17cb,subsystem-device=3374,qmi-chip-id=2,qmi-board-id=262 from ath11k/WCN6855/hw2.0/board-2.bin
|
||||
kernel: [ 122.517464] ath11k_pci 0000:03:00.0: boot using board name 'bus=pci'
|
||||
kernel: [ 122.518901] ath11k_pci 0000:03:00.0: boot firmware request ath11k/WCN6855/hw2.0/board-2.bin size 6179564
|
||||
kernel: [ 122.518915] ath11k_pci 0000:03:00.0: board name
|
||||
kernel: [ 122.518917] ath11k_pci 0000:03:00.0: 00000000: 62 75 73 3d 70 63 69 bus=pci
|
||||
kernel: [ 122.518918] ath11k_pci 0000:03:00.0: boot found match regdb data for name 'bus=pci'
|
||||
kernel: [ 122.518920] ath11k_pci 0000:03:00.0: boot found regdb data for 'bus=pci'
|
||||
kernel: [ 122.518921] ath11k_pci 0000:03:00.0: fetched regdb
|
||||
|
||||
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
|
||||
|
||||
Signed-off-by: Wen Gong <quic_wgong@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230517133959.8224-1-quic_wgong@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/core.c | 53 +++++++++++++++++++-------
|
||||
1 file changed, 40 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
||||
@@ -961,7 +961,8 @@ int ath11k_core_check_dt(struct ath11k_b
|
||||
}
|
||||
|
||||
static int __ath11k_core_create_board_name(struct ath11k_base *ab, char *name,
|
||||
- size_t name_len, bool with_variant)
|
||||
+ size_t name_len, bool with_variant,
|
||||
+ bool bus_type_mode)
|
||||
{
|
||||
/* strlen(',variant=') + strlen(ab->qmi.target.bdf_ext) */
|
||||
char variant[9 + ATH11K_QMI_BDF_EXT_STR_LENGTH] = { 0 };
|
||||
@@ -972,15 +973,20 @@ static int __ath11k_core_create_board_na
|
||||
|
||||
switch (ab->id.bdf_search) {
|
||||
case ATH11K_BDF_SEARCH_BUS_AND_BOARD:
|
||||
- scnprintf(name, name_len,
|
||||
- "bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x,qmi-chip-id=%d,qmi-board-id=%d%s",
|
||||
- ath11k_bus_str(ab->hif.bus),
|
||||
- ab->id.vendor, ab->id.device,
|
||||
- ab->id.subsystem_vendor,
|
||||
- ab->id.subsystem_device,
|
||||
- ab->qmi.target.chip_id,
|
||||
- ab->qmi.target.board_id,
|
||||
- variant);
|
||||
+ if (bus_type_mode)
|
||||
+ scnprintf(name, name_len,
|
||||
+ "bus=%s",
|
||||
+ ath11k_bus_str(ab->hif.bus));
|
||||
+ else
|
||||
+ scnprintf(name, name_len,
|
||||
+ "bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x,qmi-chip-id=%d,qmi-board-id=%d%s",
|
||||
+ ath11k_bus_str(ab->hif.bus),
|
||||
+ ab->id.vendor, ab->id.device,
|
||||
+ ab->id.subsystem_vendor,
|
||||
+ ab->id.subsystem_device,
|
||||
+ ab->qmi.target.chip_id,
|
||||
+ ab->qmi.target.board_id,
|
||||
+ variant);
|
||||
break;
|
||||
default:
|
||||
scnprintf(name, name_len,
|
||||
@@ -999,13 +1005,19 @@ static int __ath11k_core_create_board_na
|
||||
static int ath11k_core_create_board_name(struct ath11k_base *ab, char *name,
|
||||
size_t name_len)
|
||||
{
|
||||
- return __ath11k_core_create_board_name(ab, name, name_len, true);
|
||||
+ return __ath11k_core_create_board_name(ab, name, name_len, true, false);
|
||||
}
|
||||
|
||||
static int ath11k_core_create_fallback_board_name(struct ath11k_base *ab, char *name,
|
||||
size_t name_len)
|
||||
{
|
||||
- return __ath11k_core_create_board_name(ab, name, name_len, false);
|
||||
+ return __ath11k_core_create_board_name(ab, name, name_len, false, false);
|
||||
+}
|
||||
+
|
||||
+static int ath11k_core_create_bus_type_board_name(struct ath11k_base *ab, char *name,
|
||||
+ size_t name_len)
|
||||
+{
|
||||
+ return __ath11k_core_create_board_name(ab, name, name_len, false, true);
|
||||
}
|
||||
|
||||
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
|
||||
@@ -1309,7 +1321,7 @@ success:
|
||||
|
||||
int ath11k_core_fetch_regdb(struct ath11k_base *ab, struct ath11k_board_data *bd)
|
||||
{
|
||||
- char boardname[BOARD_NAME_SIZE];
|
||||
+ char boardname[BOARD_NAME_SIZE], default_boardname[BOARD_NAME_SIZE];
|
||||
int ret;
|
||||
|
||||
ret = ath11k_core_create_board_name(ab, boardname, BOARD_NAME_SIZE);
|
||||
@@ -1323,6 +1335,21 @@ int ath11k_core_fetch_regdb(struct ath11
|
||||
ATH11K_BD_IE_REGDB,
|
||||
ATH11K_BD_IE_REGDB_NAME,
|
||||
ATH11K_BD_IE_REGDB_DATA);
|
||||
+ if (!ret)
|
||||
+ goto exit;
|
||||
+
|
||||
+ ret = ath11k_core_create_bus_type_board_name(ab, default_boardname,
|
||||
+ BOARD_NAME_SIZE);
|
||||
+ if (ret) {
|
||||
+ ath11k_dbg(ab, ATH11K_DBG_BOOT,
|
||||
+ "failed to create default board name for regdb: %d", ret);
|
||||
+ goto exit;
|
||||
+ }
|
||||
+
|
||||
+ ret = ath11k_core_fetch_board_data_api_n(ab, bd, default_boardname,
|
||||
+ ATH11K_BD_IE_REGDB,
|
||||
+ ATH11K_BD_IE_REGDB_NAME,
|
||||
+ ATH11K_BD_IE_REGDB_DATA);
|
||||
if (!ret)
|
||||
goto exit;
|
||||
|
||||
@@ -226,7 +226,7 @@ Link: https://lore.kernel.org/r/20230517135934.16408-4-quic_rajkbhag@quicinc.com
|
||||
|
||||
if (pdev && pdev->pdev_id == pdev_id)
|
||||
return (pdev->ar ? pdev->ar : NULL);
|
||||
@@ -6271,6 +6274,11 @@ static int ath11k_mac_op_start(struct ie
|
||||
@@ -6268,6 +6271,11 @@ static int ath11k_mac_op_start(struct ie
|
||||
struct ath11k_pdev *pdev = ar->pdev;
|
||||
int ret;
|
||||
|
||||
@@ -238,7 +238,7 @@ Link: https://lore.kernel.org/r/20230517135934.16408-4-quic_rajkbhag@quicinc.com
|
||||
ath11k_mac_drain_tx(ar);
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
@@ -6285,6 +6293,7 @@ static int ath11k_mac_op_start(struct ie
|
||||
@@ -6282,6 +6290,7 @@ static int ath11k_mac_op_start(struct ie
|
||||
case ATH11K_STATE_RESTARTED:
|
||||
case ATH11K_STATE_WEDGED:
|
||||
case ATH11K_STATE_ON:
|
||||
@@ -257,7 +257,7 @@ Link: https://lore.kernel.org/r/20230517135934.16408-4-quic_rajkbhag@quicinc.com
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
@@ -745,6 +745,7 @@ static int ath11k_pci_probe(struct pci_d
|
||||
@@ -751,6 +751,7 @@ static int ath11k_pci_probe(struct pci_d
|
||||
ab_pci->ab = ab;
|
||||
ab_pci->pdev = pdev;
|
||||
ab->hif.ops = &ath11k_pci_hif_ops;
|
||||
@@ -767,7 +767,7 @@ Link: https://lore.kernel.org/r/20230517135934.16408-4-quic_rajkbhag@quicinc.com
|
||||
{
|
||||
const void **tb;
|
||||
int ret;
|
||||
@@ -8628,6 +8628,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
@@ -8644,6 +8644,9 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||
case WMI_PDEV_CSA_SWITCH_COUNT_STATUS_EVENTID:
|
||||
ath11k_wmi_pdev_csa_switch_count_status_event(ab, skb);
|
||||
break;
|
||||
|
||||
@@ -30,7 +30,7 @@ Link: https://lore.kernel.org/r/20230517135934.16408-5-quic_rajkbhag@quicinc.com
|
||||
*/
|
||||
|
||||
#include <linux/elf.h>
|
||||
@@ -2460,6 +2460,14 @@ static int ath11k_qmi_load_bdf_qmi(struc
|
||||
@@ -2465,6 +2465,14 @@ static int ath11k_qmi_load_bdf_qmi(struc
|
||||
|
||||
fw_entry = ath11k_core_firmware_request(ab, ATH11K_DEFAULT_CAL_FILE);
|
||||
if (IS_ERR(fw_entry)) {
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
From 6aafa1c2d3e3fea2ebe84c018003f2a91722e607 Mon Sep 17 00:00:00 2001
|
||||
From: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Date: Tue, 6 Jun 2023 14:41:28 +0530
|
||||
Subject: [PATCH] wifi: ath11k: fix memory leak in WMI firmware stats
|
||||
|
||||
Memory allocated for firmware pdev, vdev and beacon statistics
|
||||
are not released during rmmod.
|
||||
|
||||
Fix it by calling ath11k_fw_stats_free() function before hardware
|
||||
unregister.
|
||||
|
||||
While at it, avoid calling ath11k_fw_stats_free() while processing
|
||||
the firmware stats received in the WMI event because the local list
|
||||
is getting spliced and reinitialised and hence there are no elements
|
||||
in the list after splicing.
|
||||
|
||||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
||||
|
||||
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
|
||||
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230606091128.14202-1-quic_adisi@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 1 +
|
||||
drivers/net/wireless/ath/ath11k/wmi.c | 5 +++++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -9792,6 +9792,7 @@ void ath11k_mac_destroy(struct ath11k_ba
|
||||
if (!ar)
|
||||
continue;
|
||||
|
||||
+ ath11k_fw_stats_free(&ar->fw_stats);
|
||||
ieee80211_free_hw(ar->hw);
|
||||
pdev->ar = NULL;
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||
@@ -8119,6 +8119,11 @@ complete:
|
||||
rcu_read_unlock();
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
|
||||
+ /* Since the stats's pdev, vdev and beacon list are spliced and reinitialised
|
||||
+ * at this point, no need to free the individual list.
|
||||
+ */
|
||||
+ return;
|
||||
+
|
||||
free:
|
||||
ath11k_fw_stats_free(&stats);
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
From 16e0077e14a73866e9b0f4a6bf4ad3d4a5cb0f2a Mon Sep 17 00:00:00 2001
|
||||
From: Jiasheng Jiang <jiasheng@iscas.ac.cn>
|
||||
Date: Tue, 13 Jun 2023 12:19:40 +0300
|
||||
Subject: [PATCH] wifi: ath11k: Add missing check for ioremap
|
||||
|
||||
Add check for ioremap() and return the error if it fails in order to
|
||||
guarantee the success of ioremap(), same as in
|
||||
ath11k_qmi_load_file_target_mem().
|
||||
|
||||
Fixes: 6ac04bdc5edb ("ath11k: Use reserved host DDR addresses from DT for PCI devices")
|
||||
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230608022858.27405-1-jiasheng@iscas.ac.cn
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/qmi.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
@@ -2061,6 +2061,9 @@ static int ath11k_qmi_assign_target_mem_
|
||||
ab->qmi.target_mem[idx].iaddr =
|
||||
ioremap(ab->qmi.target_mem[idx].paddr,
|
||||
ab->qmi.target_mem[i].size);
|
||||
+ if (!ab->qmi.target_mem[idx].iaddr)
|
||||
+ return -EIO;
|
||||
+
|
||||
ab->qmi.target_mem[idx].size = ab->qmi.target_mem[i].size;
|
||||
host_ddr_sz = ab->qmi.target_mem[i].size;
|
||||
ab->qmi.target_mem[idx].type = ab->qmi.target_mem[i].type;
|
||||
@@ -2086,6 +2089,8 @@ static int ath11k_qmi_assign_target_mem_
|
||||
ab->qmi.target_mem[idx].iaddr =
|
||||
ioremap(ab->qmi.target_mem[idx].paddr,
|
||||
ab->qmi.target_mem[i].size);
|
||||
+ if (!ab->qmi.target_mem[idx].iaddr)
|
||||
+ return -EIO;
|
||||
} else {
|
||||
ab->qmi.target_mem[idx].paddr =
|
||||
ATH11K_QMI_CALDB_ADDRESS;
|
||||
@@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20230720151444.2016637-1-kvalo@kernel.org
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath11k/pcic.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pcic.c
|
||||
@@ -466,7 +466,6 @@ void ath11k_pcic_ext_irq_enable(struct a
|
||||
@@ -464,7 +464,6 @@ void ath11k_pcic_ext_irq_enable(struct a
|
||||
struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
|
||||
|
||||
if (!irq_grp->napi_enabled) {
|
||||
|
||||
@@ -104,14 +104,14 @@ Link: https://lore.kernel.org/r/20230726141032.3061-3-quic_rajkbhag@quicinc.com
|
||||
|
||||
#define ATH11K_PCI_BAR_NUM 0
|
||||
#define ATH11K_PCI_DMA_MASK 32
|
||||
@@ -897,6 +898,7 @@ unsupported_wcn6855_soc:
|
||||
@@ -903,6 +904,7 @@ unsupported_wcn6855_soc:
|
||||
ath11k_err(ab, "failed to init core: %d\n", ret);
|
||||
goto err_irq_affinity_cleanup;
|
||||
goto err_free_irq;
|
||||
}
|
||||
+ ath11k_qmi_fwreset_from_cold_boot(ab);
|
||||
return 0;
|
||||
|
||||
err_irq_affinity_cleanup:
|
||||
err_free_irq:
|
||||
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
From 39564b475ac5a589e6c22c43a08cbd283c295d2c Mon Sep 17 00:00:00 2001
|
||||
From: Baochen Qiang <quic_bqiang@quicinc.com>
|
||||
Date: Thu, 7 Sep 2023 09:56:06 +0800
|
||||
Subject: [PATCH] wifi: ath11k: fix boot failure with one MSI vector
|
||||
|
||||
Commit 5b32b6dd96633 ("ath11k: Remove core PCI references from
|
||||
PCI common code") breaks with one MSI vector because it moves
|
||||
affinity setting after IRQ request, see below log:
|
||||
|
||||
[ 1417.278835] ath11k_pci 0000:02:00.0: failed to receive control response completion, polling..
|
||||
[ 1418.302829] ath11k_pci 0000:02:00.0: Service connect timeout
|
||||
[ 1418.302833] ath11k_pci 0000:02:00.0: failed to connect to HTT: -110
|
||||
[ 1418.303669] ath11k_pci 0000:02:00.0: failed to start core: -110
|
||||
|
||||
The detail is, if do affinity request after IRQ activated,
|
||||
which is done in request_irq(), kernel caches that request and
|
||||
returns success directly. Later when a subsequent MHI interrupt is
|
||||
fired, kernel will do the real affinity setting work, as a result,
|
||||
changs the MSI vector. However at that time host has configured
|
||||
old vector to hardware, so host never receives CE or DP interrupts.
|
||||
|
||||
Fix it by setting affinity before registering MHI controller
|
||||
where host is, for the first time, doing IRQ request.
|
||||
|
||||
Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
|
||||
Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23
|
||||
Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-01160-QCAMSLSWPLZ-1
|
||||
|
||||
Fixes: 5b32b6dd9663 ("ath11k: Remove core PCI references from PCI common code")
|
||||
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
|
||||
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
|
||||
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||
Link: https://lore.kernel.org/r/20230907015606.16297-1-quic_bqiang@quicinc.com
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/pci.c | 24 ++++++++++++------------
|
||||
1 file changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||
@@ -852,10 +852,16 @@ unsupported_wcn6855_soc:
|
||||
if (ret)
|
||||
goto err_pci_disable_msi;
|
||||
|
||||
+ ret = ath11k_pci_set_irq_affinity_hint(ab_pci, cpumask_of(0));
|
||||
+ if (ret) {
|
||||
+ ath11k_err(ab, "failed to set irq affinity %d\n", ret);
|
||||
+ goto err_pci_disable_msi;
|
||||
+ }
|
||||
+
|
||||
ret = ath11k_mhi_register(ab_pci);
|
||||
if (ret) {
|
||||
ath11k_err(ab, "failed to register mhi: %d\n", ret);
|
||||
- goto err_pci_disable_msi;
|
||||
+ goto err_irq_affinity_cleanup;
|
||||
}
|
||||
|
||||
ret = ath11k_hal_srng_init(ab);
|
||||
@@ -876,12 +882,6 @@ unsupported_wcn6855_soc:
|
||||
goto err_ce_free;
|
||||
}
|
||||
|
||||
- ret = ath11k_pci_set_irq_affinity_hint(ab_pci, cpumask_of(0));
|
||||
- if (ret) {
|
||||
- ath11k_err(ab, "failed to set irq affinity %d\n", ret);
|
||||
- goto err_free_irq;
|
||||
- }
|
||||
-
|
||||
/* kernel may allocate a dummy vector before request_irq and
|
||||
* then allocate a real vector when request_irq is called.
|
||||
* So get msi_data here again to avoid spurious interrupt
|
||||
@@ -890,20 +890,17 @@ unsupported_wcn6855_soc:
|
||||
ret = ath11k_pci_config_msi_data(ab_pci);
|
||||
if (ret) {
|
||||
ath11k_err(ab, "failed to config msi_data: %d\n", ret);
|
||||
- goto err_irq_affinity_cleanup;
|
||||
+ goto err_free_irq;
|
||||
}
|
||||
|
||||
ret = ath11k_core_init(ab);
|
||||
if (ret) {
|
||||
ath11k_err(ab, "failed to init core: %d\n", ret);
|
||||
- goto err_irq_affinity_cleanup;
|
||||
+ goto err_free_irq;
|
||||
}
|
||||
ath11k_qmi_fwreset_from_cold_boot(ab);
|
||||
return 0;
|
||||
|
||||
-err_irq_affinity_cleanup:
|
||||
- ath11k_pci_set_irq_affinity_hint(ab_pci, NULL);
|
||||
-
|
||||
err_free_irq:
|
||||
ath11k_pcic_free_irq(ab);
|
||||
|
||||
@@ -916,6 +913,9 @@ err_hal_srng_deinit:
|
||||
err_mhi_unregister:
|
||||
ath11k_mhi_unregister(ab_pci);
|
||||
|
||||
+err_irq_affinity_cleanup:
|
||||
+ ath11k_pci_set_irq_affinity_hint(ab_pci, NULL);
|
||||
+
|
||||
err_pci_disable_msi:
|
||||
ath11k_pci_free_msi(ab_pci);
|
||||
|
||||
@@ -56,7 +56,7 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||
int ath11k_thermal_set_throttling(struct ath11k *ar, u32 throttle_state);
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -174,6 +174,7 @@ ATH11K_DEBUG=
|
||||
@@ -166,6 +166,7 @@ ATH11K_DEBUG=
|
||||
ATH11K_DEBUGFS=
|
||||
ATH11K_TRACING=
|
||||
ATH11K_SPECTRAL=
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user