diff options
Diffstat (limited to 'package')
46 files changed, 862 insertions, 387 deletions
diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index a5b0f92310..fd41005aac 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -85,6 +85,10 @@ ifneq ($(CONFIG_TARGET_imx6),) $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_DATA) ./files/imx6 $(1)/etc/uci-defaults/30_uboot-envtools endif +ifneq ($(CONFIG_TARGET_ipq806x),) + $(INSTALL_DIR) $(1)/etc/uci-defaults + $(INSTALL_DATA) ./files/ipq $(1)/etc/uci-defaults/30_uboot-envtools +endif ifneq ($(CONFIG_TARGET_kirkwood),) $(INSTALL_DIR) $(1)/etc/uci-defaults $(INSTALL_DATA) ./files/kirkwood $(1)/etc/uci-defaults/30_uboot-envtools diff --git a/package/boot/uboot-envtools/files/ipq b/package/boot/uboot-envtools/files/ipq new file mode 100755 index 0000000000..8cf0ddbb06 --- /dev/null +++ b/package/boot/uboot-envtools/files/ipq @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Copyright (C) 2016 LEDE +# + +[ -e /etc/config/ubootenv ] && exit 0 + +touch /etc/config/ubootenv + +. /lib/ipq806x.sh +. /lib/uboot-envtools.sh +. /lib/functions.sh + +board=$(ipq806x_board_name) + + +case "$board" in +"ea8500") + ubootenv_add_uci_config "/dev/mtd10" "0x0" "0x20000" "0x20000" + ;; +esac + +config_load ubootenv +config_foreach ubootenv_add_app_config ubootenv + +exit 0 diff --git a/package/boot/uboot-envtools/files/lantiq b/package/boot/uboot-envtools/files/lantiq index 9f7ec8cf26..a0e0d916be 100644 --- a/package/boot/uboot-envtools/files/lantiq +++ b/package/boot/uboot-envtools/files/lantiq @@ -26,6 +26,11 @@ BTHOMEHUBV3A) P2812HNUF1) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x2000" "0x20000" "1" ;; +WBMR300) + idx="$(find_mtd_index ubootconfig)" + [ -n "$idx" ] && \ + ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x2000" "0x1000" "2" + ;; esac config_load ubootenv diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index a759bcc597..9ad5974348 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -24,7 +24,8 @@ linkits7688d | \ wsr-600 | \ wsr-1166 | \ br6425 | \ -miwifi-nano) +miwifi-nano | \ +sk-wb8) ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" ;; esac diff --git a/package/boot/uboot-lantiq/Makefile b/package/boot/uboot-lantiq/Makefile index 99b101f5f3..e224559af6 100644 --- a/package/boot/uboot-lantiq/Makefile +++ b/package/boot/uboot-lantiq/Makefile @@ -40,259 +40,278 @@ define uboot/arv4519pw_ram TITLE:=U-Boot for Arcadyan arv4519pw (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv4519pw/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV4519PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv4519pw_nor TITLE:=U-Boot for Arcadyan arv4519pw (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV4519PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv4519pw_brn TITLE:=U-Boot for Arcadyan arv4519pw (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV4519PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7510pw_ram TITLE:=U-Boot for Arcadyan arv7510pw (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv7510pw/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV4510PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7510pw_nor TITLE:=U-Boot for Arcadyan arv7510pw (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV4510PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7510pw_brn TITLE:=U-Boot for Arcadyan arv7510pw (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV4510PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7510pw22_ram TITLE:=U-Boot for Arcadyan arv7510pw22 (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv7510pw22/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV7510PW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7510pw22_nor TITLE:=U-Boot for Arcadyan arv7510pw22 (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV7510PW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7510pw22_brn TITLE:=U-Boot for Arcadyan arv7510pw22 (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV7510PW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7518pw_ram TITLE:=U-Boot for Arcadyan arv7518pw (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv7518pw/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV7518PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7518pw_nor TITLE:=U-Boot for Arcadyan arv7518pw (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV7518PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv7518pw_brn TITLE:=U-Boot for Arcadyan arv7518pw (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV7518PW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv752dpw_ram TITLE:=U-Boot for Arcadyan arv752dpw (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv752dpw/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV752DPW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv752dpw_nor TITLE:=U-Boot for Arcadyan arv752dpw (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV752DPW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv752dpw_brn TITLE:=U-Boot for Arcadyan arv752dpw (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV752DPW + DEPS:=@TARGET_lantiq_xway endef define uboot/arv752dpw22_ram TITLE:=U-Boot for Arcadyan arv752dpw22 (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv752dpw22/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV752DPW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv752dpw22_nor TITLE:=U-Boot for Arcadyan arv752dpw22 (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV752DPW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv752dpw22_brn TITLE:=U-Boot for Arcadyan arv752dpw22 (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV752DPW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv8539pw22_ram TITLE:=U-Boot for Speedport W 504V Typ A (RAM) SOC:=danube DDR_SETTINGS:=board/arcadyan/arv8539pw22/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ARV8539PW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv8539pw22_nor TITLE:=U-Boot for Speedport W 504V Typ A (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV8539PW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/arv8539pw22_brn TITLE:=U-Boot for Speedport W 504V Typ A (BRN) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ARV8539PW22 + DEPS:=@TARGET_lantiq_xway endef define uboot/gigasx76x_ram TITLE:=U-Boot for Siemens Gigaset sx76x (RAM) SOC:=danube DDR_SETTINGS:=board/gigaset/sx76x/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_GIGASX76X + DEPS:=@TARGET_lantiq_xway endef define uboot/gigasx76x_nor TITLE:=U-Boot for Siemens Gigaset sx76x (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_GIGASX76X + DEPS:=@TARGET_lantiq_xway endef define uboot/acmp252_ram TITLE:=U-Boot for AudioCodes MP-252 (RAM) SOC:=danube DDR_SETTINGS:=board/audiocodes/acmp252/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_ACMP252 + DEPS:=@TARGET_lantiq_xway endef define uboot/acmp252_nor TITLE:=U-Boot for AudioCodes MP-252 (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_ACMP252 + DEPS:=@TARGET_lantiq_xway endef define uboot/easy50712_ram TITLE:=U-Boot for Lantiq EASY50712 (RAM) SOC:=danube DDR_SETTINGS:=board/lantiq/easy50712/ddr_settings.h - DEPS:=@TARGET_lantiq_xway_EASY50712 + DEPS:=@TARGET_lantiq_xway endef define uboot/easy50712_nor TITLE:=U-Boot for Lantiq EASY50712 (NOR) SOC:=danube - DEPS:=@TARGET_lantiq_xway_EASY50712 + DEPS:=@TARGET_lantiq_xway endef define uboot/easy50712_norspl TITLE:=U-Boot for Lantiq EASY50712 (NOR SPL) SOC:=danube IMAGE:=u-boot.ltq.lzo.norspl - DEPS:=@TARGET_lantiq_xway_EASY50712 + DEPS:=@TARGET_lantiq_xway endef define uboot/easy80920_ram TITLE:=U-Boot for Lantiq EASY80920 (RAM) SOC:=vr9 DDR_SETTINGS:=board/lantiq/easy80920/ddr_settings.h - DEPS:=@(TARGET_lantiq_xrx200_EASY80920NOR||TARGET_lantiq_xrx200_EASY80920NAND) + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/easy80920_nor TITLE:=U-Boot for Lantiq EASY80920 (NOR) SOC:=vr9 - DEPS:=@(TARGET_lantiq_xrx200_EASY80920NOR||TARGET_lantiq_xrx200_EASY80920NAND) + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/easy80920_norspl TITLE:=U-Boot for Lantiq EASY80920 (NOR SPL) SOC:=vr9 IMAGE:=u-boot.ltq.lzo.norspl - DEPS:=@(TARGET_lantiq_xrx200_EASY80920NOR||TARGET_lantiq_xrx200_EASY80920NAND) + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/easy80920_sfspl TITLE:=U-Boot for Lantiq EASY80920 (SPI SPL) SOC:=vr9 IMAGE:=u-boot.ltq.lzo.sfspl - DEPS:=@(TARGET_lantiq_xrx200_EASY80920NOR||TARGET_lantiq_xrx200_EASY80920NAND) + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/fb3370_eva TITLE:=U-Boot for AVM FRITZ3370 (EVA) SOC:=vr9 - DEPS:=@TARGET_lantiq_xrx200_FRITZ3370 + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/fb3370_ram TITLE:=U-Boot for AVM FRITZ3370 (RAM) SOC:=vr9 DDR_SETTINGS:=board/avm/fb3370/ddr_settings.h - DEPS:=@TARGET_lantiq_xrx200_FRITZ3370 + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/fb3370_sfspl TITLE:=U-Boot for AVM FRITZ3370 (SPI SPL) SOC:=vr9 IMAGE:=u-boot.ltq.lzo.sfspl - DEPS:=@TARGET_lantiq_xrx200_FRITZ3370 + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/p2812hnufx_ram TITLE:=U-Boot for ZyXEL P-2812HNU-Fx (RAM) SOC:=vr9 DDR_SETTINGS:=board/zyxel/p2812hnufx/ddr_settings.h - DEPS:=@TARGET_lantiq_xrx200_P2812HNUF1||@TARGET_lantiq_xrx200_P2812HNUF3 + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/p2812hnufx_nandspl TITLE:=U-Boot for ZyXEL P-2812HNU-Fx (NAND SPL) SOC:=vr9 IMAGE:=u-boot.ltq.lzo.nandspl - DEPS:=@TARGET_lantiq_xrx200_P2812HNUF1||@TARGET_lantiq_xrx200_P2812HNUF3 + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/vgv7510kw22_brn TITLE:=U-Boot for Arcadyan VGV7510KW22 (BRN) SOC:=vr9 - DEPS:=@TARGET_lantiq_xrx200_VGV7510KW22NOR||@TARGET_lantiq_xrx200_VGV7510KW22BRN + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/vgv7510kw22_nor TITLE:=U-Boot for Arcadyan VGV7510KW22 (NOR) SOC:=vr9 - DEPS:=@TARGET_lantiq_xrx200_VGV7510KW22NOR||@TARGET_lantiq_xrx200_VGV7510KW22BRN + DEPS:=@TARGET_lantiq_xrx200 endef define uboot/vgv7510kw22_ram TITLE:=U-Boot for Arcadyan VGV7510KW22 (RAM) SOC:=vr9 DDR_SETTINGS:=board/arcadyan/vgv7510kw22/ddr_settings.h - DEPS:=@TARGET_lantiq_xrx200_VGV7510KW22NOR||@TARGET_lantiq_xrx200_VGV7510KW22BRN + DEPS:=@TARGET_lantiq_xrx200 +endef + +define uboot/vgv7519_brn + TITLE:=U-Boot for Arcadyan VGV7519 (BRN) + SOC:=vr9 + DEPS:=@TARGET_lantiq_xrx200 +endef + +define uboot/vgv7519_nor + TITLE:=U-Boot for Arcadyan VGV7519 (NOR) + SOC:=vr9 + DEPS:=@TARGET_lantiq_xrx200 +endef + +define uboot/vgv7519_ram + TITLE:=U-Boot for Arcadyan VGV7519 (RAM) + SOC:=vr9 + DDR_SETTINGS:=board/arcadyan/vgv7519/ddr_settings.h + DEPS:=@TARGET_lantiq_xrx200 endef UBOOTS:= \ @@ -309,7 +328,8 @@ UBOOTS:= \ easy80920_ram easy80920_nor easy80920_norspl easy80920_sfspl \ fb3370_eva fb3370_ram fb3370_sfspl \ p2812hnufx_ram p2812hnufx_nandspl \ - vgv7510kw22_brn vgv7510kw22_nor vgv7510kw22_ram + vgv7510kw22_brn vgv7510kw22_nor vgv7510kw22_ram \ + vgv7519_brn vgv7519_nor vgv7519_ram define Package/uboot/template define Package/uboot-lantiq-$(1) @@ -330,18 +350,19 @@ define BuildUBootPackage $(call Package/uboot/template,$(1),$(TITLE),$(DEPS)) endef -define CopyVR9Firmware - $(CP) $(FIRMWARE_LANTIQ_SOURCE)/vr9_phy$(1)_a$(2)x.bin \ +define CompressVR9Firmware + $(STAGING_DIR_HOST)/bin/lzma e \ + $(FIRMWARE_LANTIQ_SOURCE)/vr9_phy$(1)_a$(2)x.bin \ $(PKG_BUILD_DIR)/arch/mips/cpu/mips32/vrx200/fw_phy$(1)_a$(2)x.blob endef define Build/Prepare $(call Build/Prepare/Default) mkdir -p $(PKG_BUILD_DIR)/arch/mips/cpu/mips32/vrx200/ - $(call CopyVR9Firmware,11g,1) - $(call CopyVR9Firmware,11g,2) - $(call CopyVR9Firmware,22f,1) - $(call CopyVR9Firmware,22f,2) + $(call CompressVR9Firmware,11g,1) + $(call CompressVR9Firmware,11g,2) + $(call CompressVR9Firmware,22f,1) + $(call CompressVR9Firmware,22f,2) endef define Build/Configure diff --git a/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch b/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch index ef6eb1aaf9..5e6cf85985 100644 --- a/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch +++ b/package/boot/uboot-lantiq/patches/0014-MIPS-add-support-for-Lantiq-XWAY-SoCs.patch @@ -2381,7 +2381,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +} --- /dev/null +++ b/arch/mips/cpu/mips32/vrx200/ebu.c -@@ -0,0 +1,111 @@ +@@ -0,0 +1,126 @@ +/* + * Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com + * @@ -2424,7 +2424,13 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +#define ebu_region0_enable 0 +#endif + -+#if defined(CONFIG_LTQ_SUPPORT_NAND_FLASH) ++#if ((CONFIG_SYS_MAX_FLASH_BANKS == 2) && defined(CONFIG_LTQ_SUPPORT_NOR_FLASH) ) ++#define ebu_region0_addrsel_mask 3 ++#else ++#define ebu_region0_addrsel_mask 1 ++#endif ++ ++#if defined(CONFIG_LTQ_SUPPORT_NAND_FLASH) || ((CONFIG_SYS_MAX_FLASH_BANKS == 2) && defined(CONFIG_LTQ_SUPPORT_NOR_FLASH) ) +#define ebu_region1_enable 1 +#else +#define ebu_region1_enable 0 @@ -2460,7 +2466,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + * bank 0. + */ + ltq_writel(<q_ebu_regs->addr_sel_0, LTQ_EBU_REGION0_BASE | -+ EBU_ADDRSEL_MASK(1) | EBU_ADDRSEL_REGEN); ++ EBU_ADDRSEL_MASK(ebu_region0_addrsel_mask) | EBU_ADDRSEL_REGEN); + + ltq_writel(<q_ebu_regs->con_0, EBU_CON_AGEN_DEMUX | + EBU_CON_WAIT_DIS | EBU_CON_PW_16BIT | @@ -2474,17 +2480,26 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + if (ebu_region1_enable) { + /* + * Map EBU region 1 to range 0x14000000-0x13ffffff and enable -+ * region control. This supports NAND flash in bank 1. ++ * region control. This supports NAND flash in bank 1. (and NOR flash in bank 2) + */ + ltq_writel(<q_ebu_regs->addr_sel_1, LTQ_EBU_REGION1_BASE | + EBU_ADDRSEL_MASK(3) | EBU_ADDRSEL_REGEN); + -+ ltq_writel(<q_ebu_regs->con_1, EBU_CON_AGEN_DEMUX | -+ EBU_CON_SETUP | EBU_CON_WAIT_DIS | EBU_CON_PW_8BIT | -+ EBU_CON_ALEC(3) | EBU_CON_BCGEN_INTEL | -+ EBU_CON_WAITWRC(2) | EBU_CON_WAITRDC(2) | -+ EBU_CON_HOLDC(1) | EBU_CON_RECOVC(1) | -+ EBU_CON_CMULT_4); ++ if (ebu_region0_addrsel_mask == 1) ++ ltq_writel(<q_ebu_regs->con_1, EBU_CON_AGEN_DEMUX | ++ EBU_CON_SETUP | EBU_CON_WAIT_DIS | EBU_CON_PW_8BIT | ++ EBU_CON_ALEC(3) | EBU_CON_BCGEN_INTEL | ++ EBU_CON_WAITWRC(2) | EBU_CON_WAITRDC(2) | ++ EBU_CON_HOLDC(1) | EBU_CON_RECOVC(1) | ++ EBU_CON_CMULT_4); ++ ++ if (ebu_region0_addrsel_mask == 3) ++ ltq_writel(<q_ebu_regs->con_1, EBU_CON_AGEN_DEMUX | ++ EBU_CON_WAIT_DIS | EBU_CON_PW_16BIT | ++ EBU_CON_ALEC(3) | EBU_CON_BCGEN_INTEL | ++ EBU_CON_WAITWRC(7) | EBU_CON_WAITRDC(3) | ++ EBU_CON_HOLDC(3) | EBU_CON_RECOVC(3) | ++ EBU_CON_CMULT_16); + } else + ltq_clrbits(<q_ebu_regs->addr_sel_1, EBU_ADDRSEL_REGEN); +} @@ -2495,7 +2510,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +} --- /dev/null +++ b/arch/mips/cpu/mips32/vrx200/gphy.c -@@ -0,0 +1,58 @@ +@@ -0,0 +1,68 @@ +/* + * Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com + * @@ -2506,17 +2521,23 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +#include <asm/lantiq/io.h> +#include <asm/arch/soc.h> +#include <asm/arch/gphy.h> ++#include <lzma/LzmaTypes.h> ++#include <lzma/LzmaDec.h> ++#include <lzma/LzmaTools.h> + -+static inline void ltq_gphy_copy(const void *fw_start, const void *fw_end, ++static inline void ltq_gphy_decompress(const void *fw_start, const void *fw_end, + ulong dst_addr) +{ + const ulong fw_len = (ulong) fw_end - (ulong) fw_start; + const ulong addr = CKSEG1ADDR(dst_addr); + -+ debug("ltq_gphy_copy: addr %08lx, fw_start %p, fw_end %p\n", ++ debug("ltq_gphy_decompress: addr %08lx, fw_start %p, fw_end %p\n", + addr, fw_start, fw_end); + -+ memcpy((void *) addr, fw_start, fw_len); ++ SizeT lzma_len = 65536; ++ int ret = lzmaBuffToBuffDecompress( ++ (unsigned char *)addr, &lzma_len, ++ (unsigned char *)fw_start, fw_len); +} + +void ltq_gphy_phy11g_a1x_load(ulong addr) @@ -2524,8 +2545,9 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + extern ulong __ltq_fw_phy11g_a1x_start; + extern ulong __ltq_fw_phy11g_a1x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy11g_a1x_start, &__ltq_fw_phy11g_a1x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy11g_a1x_start, ++ &__ltq_fw_phy11g_a1x_end, ++ addr); +} + +void ltq_gphy_phy11g_a2x_load(ulong addr) @@ -2533,8 +2555,9 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + extern ulong __ltq_fw_phy11g_a2x_start; + extern ulong __ltq_fw_phy11g_a2x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy11g_a2x_start, &__ltq_fw_phy11g_a2x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy11g_a2x_start, ++ &__ltq_fw_phy11g_a2x_end, ++ addr); +} + +void ltq_gphy_phy22f_a1x_load(ulong addr) @@ -2542,8 +2565,9 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + extern ulong __ltq_fw_phy22f_a1x_start; + extern ulong __ltq_fw_phy22f_a1x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy22f_a1x_start, &__ltq_fw_phy22f_a1x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy22f_a1x_start, ++ &__ltq_fw_phy22f_a1x_end, ++ addr); +} + +void ltq_gphy_phy22f_a2x_load(ulong addr) @@ -2551,8 +2575,9 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + extern ulong __ltq_fw_phy22f_a2x_start; + extern ulong __ltq_fw_phy22f_a2x_end; + -+ ltq_gphy_copy(&__ltq_fw_phy22f_a2x_start, &__ltq_fw_phy22f_a2x_end, -+ addr); ++ ltq_gphy_decompress(&__ltq_fw_phy22f_a2x_start, ++ &__ltq_fw_phy22f_a2x_end, ++ addr); +} --- /dev/null +++ b/arch/mips/cpu/mips32/vrx200/gphy_fw.S @@ -3450,7 +3475,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +#endif /* __DANUBE_SOC_H__ */ --- /dev/null +++ b/arch/mips/include/asm/arch-vrx200/config.h -@@ -0,0 +1,184 @@ +@@ -0,0 +1,187 @@ +/* + * Copyright (C) 2010 Lantiq Deutschland GmbH + * Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com @@ -3538,9 +3563,12 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + +/* FLASH driver */ +#if defined(CONFIG_LTQ_SUPPORT_NOR_FLASH) ++#ifndef CONFIG_SYS_MAX_FLASH_BANKS +#define CONFIG_SYS_MAX_FLASH_BANKS 1 ++#endif +#define CONFIG_SYS_MAX_FLASH_SECT 256 +#define CONFIG_SYS_FLASH_BASE 0xB0000000 ++#define CONFIG_SYS_FLASH2_BASE 0xB4000000 +#define CONFIG_FLASH_16BIT +#define CONFIG_SYS_FLASH_CFI +#define CONFIG_FLASH_CFI_DRIVER diff --git a/package/boot/uboot-lantiq/patches/0021-MIPS-vrx200-add-NAND-SPL-support.patch b/package/boot/uboot-lantiq/patches/0021-MIPS-vrx200-add-NAND-SPL-support.patch index 6c9f14b043..8296f2c75e 100644 --- a/package/boot/uboot-lantiq/patches/0021-MIPS-vrx200-add-NAND-SPL-support.patch +++ b/package/boot/uboot-lantiq/patches/0021-MIPS-vrx200-add-NAND-SPL-support.patch @@ -19,7 +19,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> endif --- a/arch/mips/include/asm/arch-vrx200/config.h +++ b/arch/mips/include/asm/arch-vrx200/config.h -@@ -164,7 +164,7 @@ +@@ -167,7 +167,7 @@ #define CONFIG_SYS_TEXT_BASE 0xB0000000 #endif diff --git a/package/boot/uboot-lantiq/patches/0037-MIPS-add-board-support-for-Arcadyan-ARV752DPW.patch b/package/boot/uboot-lantiq/patches/0037-MIPS-add-board-support-for-Arcadyan-ARV752DPW.patch index 676ef12a8a..7c75fc4dd1 100644 --- a/package/boot/uboot-lantiq/patches/0037-MIPS-add-board-support-for-Arcadyan-ARV752DPW.patch +++ b/package/boot/uboot-lantiq/patches/0037-MIPS-add-board-support-for-Arcadyan-ARV752DPW.patch @@ -195,7 +195,7 @@ Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + +/* Switch devices */ +#define CONFIG_SWITCH_MULTI -+#define CONFIG_SWITCH_RTL8206 ++#define CONFIG_SWITCH_RTL8306 + +/* Environment */ +#if defined(CONFIG_SYS_BOOT_NOR) diff --git a/package/boot/uboot-lantiq/patches/0043-MIPS-add-board-support-for-Arcadyan-VGV7510KW22.patch b/package/boot/uboot-lantiq/patches/0043-MIPS-add-board-support-for-Arcadyan-VGV7510KW22.patch index adb894f018..14758fd8fc 100644 --- a/package/boot/uboot-lantiq/patches/0043-MIPS-add-board-support-for-Arcadyan-VGV7510KW22.patch +++ b/package/boot/uboot-lantiq/patches/0043-MIPS-add-board-support-for-Arcadyan-VGV7510KW22.patch @@ -30,7 +30,7 @@ +######################################################################### --- /dev/null +++ b/board/arcadyan/vgv7510kw22/vgv7510kw22.c -@@ -0,0 +1,136 @@ +@@ -0,0 +1,98 @@ +/* + * Copyright (C) 2015 Martin Blumenstingl <martin.blumenstingl@googlemail.com> + * @@ -38,7 +38,6 @@ + */ + +#include <common.h> -+#include <spi.h> +#include <asm/gpio.h> +#include <asm/lantiq/eth.h> +#include <asm/lantiq/chipid.h> @@ -67,12 +66,8 @@ + +static void gpio_init(void) +{ -+ /* SPI CS 0.4 to serial flash */ -+ gpio_direction_output(10, 1); -+ + /* Turn on the green power LED */ + gpio_direction_output(GPIO_POWER_GREEN, 0); -+ gpio_set_value(GPIO_POWER_GREEN, 0); +} + +int board_early_init_f(void) @@ -134,39 +129,6 @@ + + return ltq_eth_initialize(ð_board_config); +} -+ -+int spi_cs_is_valid(unsigned int bus, unsigned int cs) -+{ -+ if (bus) -+ return 0; -+ -+ if (cs == 4) -+ return 1; -+ -+ return 0; -+} -+ -+void spi_cs_activate(struct spi_slave *slave) -+{ -+ switch (slave->cs) { -+ case 4: -+ gpio_set_value(10, 0); -+ break; -+ default: -+ break; -+ } -+} -+ -+void spi_cs_deactivate(struct spi_slave *slave) -+{ -+ switch (slave->cs) { -+ case 4: -+ gpio_set_value(10, 1); -+ break; -+ default: -+ break; -+ } -+} --- /dev/null +++ b/board/arcadyan/vgv7510kw22/config.mk @@ -0,0 +1,7 @@ @@ -220,7 +182,7 @@ +#define MC_CCR28_VALUE 0x0 +#define MC_CCR29_VALUE 0x0 +#define MC_CCR30_VALUE 0x798 -+#define MC_CCR31_VALUE 0x0 ++#define MC_CCR31_VALUE 0x2040F +#define MC_CCR32_VALUE 0x0 +#define MC_CCR33_VALUE 0x650000 +#define MC_CCR34_VALUE 0x200C8 @@ -236,7 +198,7 @@ +#define MC_CCR44_VALUE 0x566504 +#define MC_CCR45_VALUE 0x565F17 +#define MC_CCR46_VALUE 0x565F17 -+#define MC_CCR47_VALUE 0x0 ++#define MC_CCR47_VALUE 0x2040F +#define MC_CCR48_VALUE 0x0 +#define MC_CCR49_VALUE 0x0 +#define MC_CCR50_VALUE 0x0 @@ -253,10 +215,10 @@ +#define MC_CCR61_VALUE 0x4 --- a/boards.cfg +++ b/boards.cfg -@@ -542,6 +542,9 @@ +@@ -531,6 +531,9 @@ Active mips mips32 incai + Active mips mips32 incaip - incaip incaip_100MHz incaip:CPU_CLOCK_RATE=100000000 Wolfgang Denk <wd@denx.de> Active mips mips32 incaip - incaip incaip_133MHz incaip:CPU_CLOCK_RATE=133000000 Wolfgang Denk <wd@denx.de> Active mips mips32 incaip - incaip incaip_150MHz incaip:CPU_CLOCK_RATE=150000000 Wolfgang Denk <wd@denx.de> - Active mips mips32 vrx200 arcadyan easybox904 easybox904_ram easybox904:SYS_BOOT_RAM Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +Active mips mips32 vrx200 arcadyan vgv7510kw22 vgv7510kw22_brn vgv7510kw22:SYS_BOOT_BRN Martin Blumenstingl <martin.blumenstingl@googlemail.com> +Active mips mips32 vrx200 arcadyan vgv7510kw22 vgv7510kw22_nor vgv7510kw22:SYS_BOOT_NOR Martin Blumenstingl <martin.blumenstingl@googlemail.com> +Active mips mips32 vrx200 arcadyan vgv7510kw22 vgv7510kw22_ram vgv7510kw22:SYS_BOOT_RAM Martin Blumenstingl <martin.blumenstingl@googlemail.com> @@ -265,7 +227,7 @@ Active mips mips32 vrx200 avm fb3370 fb3370_sfspl fb3370:SYS_BOOT_SFSPL Daniel Schwierzeck <daniel.schwierzeck@gmail.com> --- /dev/null +++ b/include/configs/vgv7510kw22.h -@@ -0,0 +1,78 @@ +@@ -0,0 +1,59 @@ +/* + * Copyright (C) 2015 Martin Blumenstingl <martin.blumenstingl@googlemail.com> + * @@ -286,33 +248,14 @@ + +#define CONFIG_LTQ_SUPPORT_NOR_FLASH /* Have a parallel NOR flash */ + -+#define CONFIG_LTQ_SUPPORT_SPI_FLASH -+#define CONFIG_SPI_FLASH_MACRONIX /* Have a MX29GL128EL parallel flash */ -+ -+#define CONFIG_LTQ_SUPPORT_SPL_SPI_FLASH /* Build SPI flash SPL */ -+#define CONFIG_LTQ_SPL_COMP_LZO /* Compress SPL with LZO */ -+#define CONFIG_LTQ_SPL_CONSOLE /* Enable SPL console */ -+ -+#define CONFIG_SPL_SPI_BUS 0 -+#define CONFIG_SPL_SPI_CS 4 -+#define CONFIG_SPL_SPI_MAX_HZ 25000000 -+#define CONFIG_SPL_SPI_MODE 0 -+ -+#define CONFIG_LTQ_SUPPORT_SPL_NOR_FLASH /* Build NOR flash SPL */ -+ +#define CONFIG_SYS_BOOTM_LEN 0x1000000 /* 16 MB */ + -+/* Environment */ -+#define CONFIG_ENV_SPI_BUS CONFIG_SPL_SPI_BUS -+#define CONFIG_ENV_SPI_CS CONFIG_SPL_SPI_CS -+#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SPL_SPI_MAX_HZ -+#define CONFIG_ENV_SPI_MODE CONFIG_SPL_SPI_MODE -+ +#if defined(CONFIG_SYS_BOOT_BRN) +#define CONFIG_SYS_TEXT_BASE 0x80002000 +#define CONFIG_SKIP_LOWLEVEL_INIT +#define CONFIG_SYS_DISABLE_CACHE +#define CONFIG_ENV_IS_NOWHERE ++#define CONFIG_ENV_OVERWRITE 1 +#elif defined(CONFIG_SYS_BOOT_NOR) +#define CONFIG_ENV_IS_IN_FLASH +#define CONFIG_ENV_OVERWRITE diff --git a/package/boot/uboot-lantiq/patches/0114-MIPS-add-board-support-for-Arcadyan-VGV7519.patch b/package/boot/uboot-lantiq/patches/0114-MIPS-add-board-support-for-Arcadyan-VGV7519.patch new file mode 100644 index 0000000000..952bdce0cc --- /dev/null +++ b/package/boot/uboot-lantiq/patches/0114-MIPS-add-board-support-for-Arcadyan-VGV7519.patch @@ -0,0 +1,288 @@ +--- /dev/null ++++ b/board/arcadyan/vgv7519/Makefile +@@ -0,0 +1,27 @@ ++# ++# Copyright (C) 2000-2011 Wolfgang Denk, DENX Software Engineering, wd@denx.de ++# ++# SPDX-License-Identifier: GPL-2.0+ ++# ++ ++include $(TOPDIR)/config.mk ++ ++LIB = $(obj)lib$(BOARD).o ++ ++COBJS = $(BOARD).o ++ ++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) ++OBJS := $(addprefix $(obj),$(COBJS)) ++SOBJS := $(addprefix $(obj),$(SOBJS)) ++ ++$(LIB): $(obj).depend $(OBJS) $(SOBJS) ++ $(call cmd_link_o_target, $(OBJS) $(SOBJS)) ++ ++######################################################################### ++ ++# defines $(obj).depend target ++include $(SRCTREE)/rules.mk ++ ++sinclude $(obj).depend ++ ++######################################################################### +--- /dev/null ++++ b/board/arcadyan/vgv7519/config.mk +@@ -0,0 +1,7 @@ ++# ++# Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com ++# ++# SPDX-License-Identifier: GPL-2.0+ ++# ++ ++PLATFORM_CPPFLAGS += -I$(TOPDIR)/board/$(BOARDDIR) +--- /dev/null ++++ b/board/arcadyan/vgv7519/ddr_settings.h +@@ -0,0 +1,70 @@ ++/* ++ * Copyright (C) 2016 Mathias Kresin <dev@kresin.me> ++ * ++ * The values have been extracted from original brnboot. ++ * ++ * SPDX-License-Identifier: GPL-2.0+ ++ */ ++ ++#define MC_CCR00_VALUE 0x101 ++#define MC_CCR01_VALUE 0x1000100 ++#define MC_CCR02_VALUE 0x1010000 ++#define MC_CCR03_VALUE 0x100 ++#define MC_CCR04_VALUE 0x1000000 ++#define MC_CCR05_VALUE 0x1000101 ++#define MC_CCR06_VALUE 0x1000100 ++#define MC_CCR07_VALUE 0x1010000 ++#define MC_CCR08_VALUE 0x1000101 ++#define MC_CCR09_VALUE 0x0 ++#define MC_CCR10_VALUE 0x2000100 ++#define MC_CCR11_VALUE 0x2000401 ++#define MC_CCR12_VALUE 0x30000 ++#define MC_CCR13_VALUE 0x202 ++#define MC_CCR14_VALUE 0x7080A0F ++#define MC_CCR15_VALUE 0x2040F ++#define MC_CCR16_VALUE 0x40000 ++#define MC_CCR17_VALUE 0x70102 ++#define MC_CCR18_VALUE 0x4020002 ++#define MC_CCR19_VALUE 0x30302 ++#define MC_CCR20_VALUE 0x8000700 ++#define MC_CCR21_VALUE 0x40F020A ++#define MC_CCR22_VALUE 0x0 ++#define MC_CCR23_VALUE 0xC020000 ++#define MC_CCR24_VALUE 0x4401B04 ++#define MC_CCR25_VALUE 0x0 ++#define MC_CCR26_VALUE 0x0 ++#define MC_CCR27_VALUE 0x6420000 ++#define MC_CCR28_VALUE 0x0 ++#define MC_CCR29_VALUE 0x0 ++#define MC_CCR30_VALUE 0x798 ++#define MC_CCR31_VALUE 0x2040F ++#define MC_CCR32_VALUE 0x0 ++#define MC_CCR33_VALUE 0x650000 ++#define MC_CCR34_VALUE 0x200C8 ++#define MC_CCR35_VALUE 0x1D445D ++#define MC_CCR36_VALUE 0xC8 ++#define MC_CCR37_VALUE 0xC351 ++#define MC_CCR38_VALUE 0x0 ++#define MC_CCR39_VALUE 0x141F04 ++#define MC_CCR40_VALUE 0x142704 ++#define MC_CCR41_VALUE 0x141B42 ++#define MC_CCR42_VALUE 0x141B42 ++#define MC_CCR43_VALUE 0x566504 ++#define MC_CCR44_VALUE 0x566504 ++#define MC_CCR45_VALUE 0x565F17 ++#define MC_CCR46_VALUE 0x565F17 ++#define MC_CCR47_VALUE 0x2040F ++#define MC_CCR48_VALUE 0x0 ++#define MC_CCR49_VALUE 0x0 ++#define MC_CCR50_VALUE 0x0 ++#define MC_CCR51_VALUE 0x0 ++#define MC_CCR52_VALUE 0x133 ++#define MC_CCR53_VALUE 0xF3014B27 ++#define MC_CCR54_VALUE 0xF3014B27 ++#define MC_CCR55_VALUE 0xF3014B27 ++#define MC_CCR56_VALUE 0xF3014B27 ++#define MC_CCR57_VALUE 0x7800301 ++#define MC_CCR58_VALUE 0x7800301 ++#define MC_CCR59_VALUE 0x7800301 ++#define MC_CCR60_VALUE 0x7800301 ++#define MC_CCR61_VALUE 0x4 +--- /dev/null ++++ b/board/arcadyan/vgv7519/vgv7519.c +@@ -0,0 +1,95 @@ ++/* ++ * This file is released under the terms of GPL v2 and any later version. ++ * See the file COPYING in the root directory of the source tree for details. ++ * ++ * Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com ++ */ ++ ++#include <common.h> ++#include <asm/gpio.h> ++#include <asm/lantiq/eth.h> ++#include <asm/lantiq/chipid.h> ++#include <asm/lantiq/cpu.h> ++#include <asm/arch/gphy.h> ++ ++#if defined(CONFIG_SYS_BOOT_RAM) ++#define do_gpio_init 1 ++#define do_pll_init 0 ++#define do_dcdc_init 1 ++#elif defined(CONFIG_SYS_BOOT_NOR) ++#define do_gpio_init 1 ++#define do_pll_init 1 ++#define do_dcdc_init 1 ++#else ++#define do_gpio_init 0 ++#define do_pll_init 0 ++#define do_dcdc_init 1 ++#endif ++ ++#define GPIO_GPHY_RESET 47 ++ ++static void gpio_init(void) ++{ ++ /* Disable reset on external eth PHY */ ++ gpio_direction_output(GPIO_GPHY_RESET, 1); ++} ++ ++int board_early_init_f(void) ++{ ++ if (do_gpio_init) ++ gpio_init(); ++ ++ if (do_pll_init) ++ ltq_pll_init(); ++ ++ if (do_dcdc_init) ++ ltq_dcdc_init(0x7F); ++ ++ return 0; ++} ++ ++int checkboard(void) ++{ ++ puts("Board: " CONFIG_BOARD_NAME "\n"); ++ ltq_chip_print_info(); ++ ++ return 0; ++} ++ ++static const struct ltq_eth_port_config eth_port_config[] = { ++ /* GMAC0: external Lantiq PEF7071 10/100/1000 PHY for LAN port 0 */ ++ { 0, 0x0, LTQ_ETH_PORT_PHY, PHY_INTERFACE_MODE_RGMII }, ++ /* GMAC1: external Lantiq PEF7071 10/100/1000 PHY for LAN port 1 */ ++ { 1, 0x1, LTQ_ETH_PORT_PHY, PHY_INTERFACE_MODE_RGMII }, ++ /* GMAC2: internal GPHY0 with 10/100/1000 firmware for LAN port 2 */ ++ { 2, 0x11, LTQ_ETH_PORT_PHY, PHY_INTERFACE_MODE_GMII }, ++ /* GMAC3: unused */ ++ { 3, 0x0, LTQ_ETH_PORT_NONE, PHY_INTERFACE_MODE_NONE }, ++ /* GMAC4: internal GPHY1 with 10/100/1000 firmware for LAN port 3 */ ++ { 4, 0x13, LTQ_ETH_PORT_PHY, PHY_INTERFACE_MODE_GMII }, ++ /* GMAC5: external Lantiq PEF7071 10/100/1000 PHY for WANoE port */ ++ { 5, 0x5, LTQ_ETH_PORT_PHY, PHY_INTERFACE_MODE_RGMII }, ++}; ++ ++static const struct ltq_eth_board_config eth_board_config = { ++ .ports = eth_port_config, ++ .num_ports = ARRAY_SIZE(eth_port_config), ++}; ++ ++int board_eth_init(bd_t * bis) ++{ ++ const enum ltq_gphy_clk clk = LTQ_GPHY_CLK_25MHZ_PLL0; ++ const ulong fw_addr = 0x80FF0000; ++ ++ if (ltq_chip_version_get() == 1) ++ ltq_gphy_phy22f_a1x_load(fw_addr); ++ else ++ ltq_gphy_phy22f_a2x_load(fw_addr); ++ ++ ltq_cgu_gphy_clk_src(clk); ++ ++ ltq_rcu_gphy_boot(0, fw_addr); ++ ltq_rcu_gphy_boot(1, fw_addr); ++ ++ return ltq_eth_initialize(ð_board_config); ++} +--- a/boards.cfg ++++ b/boards.cfg +@@ -537,6 +537,9 @@ Active mips mips32 incai + Active mips mips32 vrx200 arcadyan vgv7510kw22 vgv7510kw22_brn vgv7510kw22:SYS_BOOT_BRN Martin Blumenstingl <martin.blumenstingl@googlemail.com> + Active mips mips32 vrx200 arcadyan vgv7510kw22 vgv7510kw22_nor vgv7510kw22:SYS_BOOT_NOR Martin Blumenstingl <martin.blumenstingl@googlemail.com> + Active mips mips32 vrx200 arcadyan vgv7510kw22 vgv7510kw22_ram vgv7510kw22:SYS_BOOT_RAM Martin Blumenstingl <martin.blumenstingl@googlemail.com> ++Active mips mips32 vrx200 arcadyan vgv7519 vgv7519_brn vgv7519:SYS_BOOT_BRN Mathias Kresin <dev@kresin.me> ++Active mips mips32 vrx200 arcadyan vgv7519 vgv7519_nor vgv7519:SYS_BOOT_NOR Eddi De Pieri <eddi@depieri.net> ++Active mips mips32 vrx200 arcadyan vgv7519 vgv7519_ram vgv7519:SYS_BOOT_RAM Eddi De Pieri <eddi@depieri.net> + Active mips mips32 vrx200 avm fb3370 fb3370_eva fb3370:SYS_BOOT_EVA Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + Active mips mips32 vrx200 avm fb3370 fb3370_ram fb3370:SYS_BOOT_RAM Daniel Schwierzeck <daniel.schwierzeck@gmail.com> + Active mips mips32 vrx200 avm fb3370 fb3370_sfspl fb3370:SYS_BOOT_SFSPL Daniel Schwierzeck <daniel.schwierzeck@gmail.com> +--- /dev/null ++++ b/include/configs/vgv7519.h +@@ -0,0 +1,62 @@ ++/* ++ * This file is released under the terms of GPL v2 and any later version. ++ * See the file COPYING in the root directory of the source tree for details. ++ * ++ * Copyright (C) 2011-2013 Daniel Schwierzeck, daniel.schwierzeck@gmail.com ++ */ ++ ++#ifndef __CONFIG_H ++#define __CONFIG_H ++ ++#define CONFIG_MACH_TYPE "VGV7519" ++#define CONFIG_IDENT_STRING " "CONFIG_MACH_TYPE ++#define CONFIG_BOARD_NAME "Arcadyan VGV7519" ++ ++/* Configure SoC */ ++#define CONFIG_LTQ_SUPPORT_UART /* Enable ASC and UART */ ++ ++#define CONFIG_LTQ_SUPPORT_ETHERNET /* Enable ethernet */ ++ ++#define CONFIG_LTQ_SUPPORT_NOR_FLASH /* Have a parallel NOR flash */ ++ ++#define CONFIG_SYS_MAX_FLASH_BANKS 2 /* max number of memory banks */ ++#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH2_BASE } ++ ++/* Environment */ ++#if defined(CONFIG_SYS_BOOT_BRN) ++#define CONFIG_SYS_TEXT_BASE 0x80002000 ++#define CONFIG_SKIP_LOWLEVEL_INIT ++#define CONFIG_SYS_DISABLE_CACHE ++#define CONFIG_ENV_IS_NOWHERE ++#define CONFIG_ENV_OVERWRITE 1 ++#elif defined(CONFIG_SYS_BOOT_NOR) ++#define CONFIG_ENV_IS_IN_FLASH ++#define CONFIG_ENV_OVERWRITE ++#define CONFIG_ENV_OFFSET (384 * 1024) ++#define CONFIG_ENV_SECT_SIZE (64 * 1024) ++#else ++#define CONFIG_ENV_IS_NOWHERE ++#endif ++ ++#define CONFIG_ENV_SIZE (8 * 1024) ++ ++#define CONFIG_LOADADDR CONFIG_SYS_LOAD_ADDR ++ ++/* Console */ ++#define CONFIG_LTQ_ADVANCED_CONSOLE ++#define CONFIG_BAUDRATE 115200 ++#define CONFIG_CONSOLE_ASC 1 ++#define CONFIG_CONSOLE_DEV "ttyLTQ1" ++ ++/* Pull in default board configs for Lantiq XWAY VRX200 */ ++#include <asm/lantiq/config.h> ++#include <asm/arch/config.h> ++ ++/* Pull in default OpenWrt configs for Lantiq SoC */ ++#include "openwrt-lantiq-common.h" ++ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ CONFIG_ENV_LANTIQ_DEFAULTS \ ++ "kernel_addr=0xB0080000\0" ++ ++#endif /* __CONFIG_H */ diff --git a/package/kernel/lantiq/ltq-adsl-fw/Makefile b/package/kernel/lantiq/ltq-adsl-fw/Makefile index a26e595023..839ae715fe 100644 --- a/package/kernel/lantiq/ltq-adsl-fw/Makefile +++ b/package/kernel/lantiq/ltq-adsl-fw/Makefile @@ -30,15 +30,15 @@ define Package/kmod-ltq-adsl-fw-template SOC:=$(2) ANNEX:=$(1) URL:=http://www.lantiq.com/ - DEPENDS:=@TARGET_lantiq_$(3) +kmod-ltq-adsl-$(2) + DEPENDS:=@$(3) +kmod-ltq-adsl-$(2) endef -Package/kmod-ltq-adsl-danube-fw-a=$(call Package/kmod-ltq-adsl-fw-template,a,danube,xway) -Package/kmod-ltq-adsl-danube-fw-b=$(call Package/kmod-ltq-adsl-fw-template,b,danube,xway) -Package/kmod-ltq-adsl-ar9-fw-a=$(call Package/kmod-ltq-adsl-fw-template,a,ar9,xway) -Package/kmod-ltq-adsl-ar9-fw-b=$(call Package/kmod-ltq-adsl-fw-template,b,ar9,xway) -Package/kmod-ltq-adsl-ase-fw-a=$(call Package/kmod-ltq-adsl-fw-template,a,ase,ase) -Package/kmod-ltq-adsl-ase-fw-b=$(call Package/kmod-ltq-adsl-fw-template,b,ase,ase) +Package/kmod-ltq-adsl-danube-fw-a=$(call Package/kmod-ltq-adsl-fw-template,a,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy)) +Package/kmod-ltq-adsl-danube-fw-b=$(call Package/kmod-ltq-adsl-fw-template,b,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy)) +Package/kmod-ltq-adsl-ar9-fw-a=$(call Package/kmod-ltq-adsl-fw-template,a,ar9,TARGET_lantiq_xway) +Package/kmod-ltq-adsl-ar9-fw-b=$(call Package/kmod-ltq-adsl-fw-template,b,ar9,TARGET_lantiq_xway) +Package/kmod-ltq-adsl-ase-fw-a=$(call Package/kmod-ltq-adsl-fw-template,a,ase,TARGET_lantiq_ase) +Package/kmod-ltq-adsl-ase-fw-b=$(call Package/kmod-ltq-adsl-fw-template,b,ase,TARGET_lantiq_ase) define Build/Compile endef diff --git a/package/kernel/lantiq/ltq-adsl-mei/Makefile b/package/kernel/lantiq/ltq-adsl-mei/Makefile index a76591c257..b841aa15df 100644 --- a/package/kernel/lantiq/ltq-adsl-mei/Makefile +++ b/package/kernel/lantiq/ltq-adsl-mei/Makefile @@ -22,14 +22,14 @@ define KernelPackage/ltq-adsl-mei-template TITLE:=mei driver for $(1) URL:=http://www.lantiq.com/ VARIANT:=$(1) - DEPENDS:=@TARGET_lantiq_$(2) + DEPENDS:=@$(2) FILES:=$(PKG_BUILD_DIR)/ltq_mei_$(1).ko AUTOLOAD:=$(call AutoLoad,50,ltq_mei_$(1)) endef -KernelPackage/ltq-adsl-danube-mei=$(call KernelPackage/ltq-adsl-mei-template,danube,xway) -KernelPackage/ltq-adsl-ar9-mei=$(call KernelPackage/ltq-adsl-mei-template,ar9,xway) -KernelPackage/ltq-adsl-ase-mei=$(call KernelPackage/ltq-adsl-mei-template,ase,ase) +KernelPackage/ltq-adsl-danube-mei=$(call KernelPackage/ltq-adsl-mei-template,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy)) +KernelPackage/ltq-adsl-ar9-mei=$(call KernelPackage/ltq-adsl-mei-template,ar9,TARGET_lantiq_xway) +KernelPackage/ltq-adsl-ase-mei=$(call KernelPackage/ltq-adsl-mei-template,ase,TARGET_lantiq_ase) define Build/Prepare $(INSTALL_DIR) $(PKG_BUILD_DIR)/ diff --git a/package/kernel/lantiq/ltq-adsl/Makefile b/package/kernel/lantiq/ltq-adsl/Makefile index 26c931e2a9..bd0dd7c3e7 100644 --- a/package/kernel/lantiq/ltq-adsl/Makefile +++ b/package/kernel/lantiq/ltq-adsl/Makefile @@ -30,14 +30,14 @@ define KernelPackage/ltq-adsl-template TITLE:=adsl driver for $(1) URL:=http://www.lantiq.com/ VARIANT:=$(1) - DEPENDS:=@TARGET_lantiq_$(2) +kmod-ltq-adsl-$(1)-mei + DEPENDS:=@$(2) +kmod-ltq-adsl-$(1)-mei FILES:=$(PKG_BUILD_DIR)/src/drv_dsl_cpe_api.ko AUTOLOAD:=$(call AutoLoad,51,drv_dsl_cpe_api) endef -KernelPackage/ltq-adsl-danube=$(call KernelPackage/ltq-adsl-template,danube,xway) -KernelPackage/ltq-adsl-ar9=$(call KernelPackage/ltq-adsl-template,ar9,xway) -KernelPackage/ltq-adsl-ase=$(call KernelPackage/ltq-adsl-template,ase,ase) +KernelPackage/ltq-adsl-danube=$(call KernelPackage/ltq-adsl-template,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy)) +KernelPackage/ltq-adsl-ar9=$(call KernelPackage/ltq-adsl-template,ar9,TARGET_lantiq_xway) +KernelPackage/ltq-adsl-ase=$(call KernelPackage/ltq-adsl-template,ase,TARGET_lantiq_ase) define KernelPackage/ltq-dsl/config source "$(SOURCE)/Config.in" diff --git a/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch b/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch index 80f085492c..1d1e5669ac 100644 --- a/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch +++ b/package/kernel/lantiq/ltq-adsl/patches/140-linux_3.18.patch @@ -1,6 +1,6 @@ --- a/src/include/drv_dsl_cpe_os_linux.h +++ b/src/include/drv_dsl_cpe_os_linux.h -@@ -214,12 +214,35 @@ static inline int dsl_mutex_lock(struct +@@ -214,12 +214,25 @@ static inline int dsl_mutex_lock(struct #define DSL_DRV_MUTEX_LOCK(id) down_interruptible(&(id)) #define DSL_DRV_MUTEX_UNLOCK(id) up(&(id)) #endif @@ -8,21 +8,11 @@ +static inline long +ugly_hack_sleep_on_timeout(wait_queue_head_t *q, long timeout) +{ -+ unsigned long flags; -+ wait_queue_t wait; -+ -+ init_waitqueue_entry(&wait, current); -+ -+ __set_current_state(TASK_INTERRUPTIBLE); -+ spin_lock_irqsave(&q->lock, flags); -+ __add_wait_queue(q, &wait); -+ spin_unlock(&q->lock); ++ DEFINE_WAIT(wait); + ++ prepare_to_wait(q, &wait, TASK_INTERRUPTIBLE); + timeout = schedule_timeout(timeout); -+ -+ spin_lock_irq(&q->lock); -+ __remove_wait_queue(q, &wait); -+ spin_unlock_irqrestore(&q->lock, flags); ++ finish_wait(q, &wait); + + return timeout; +} diff --git a/package/kernel/lantiq/ltq-atm/Makefile b/package/kernel/lantiq/ltq-atm/Makefile index 9fe1b40620..21802f46fe 100644 --- a/package/kernel/lantiq/ltq-atm/Makefile +++ b/package/kernel/lantiq/ltq-atm/Makefile @@ -21,16 +21,17 @@ define KernelPackage/ltq-atm-template TITLE:=atm driver for $(1) URL:=http://www.lantiq.com/ VARIANT:=$(1) - DEPENDS:=@TARGET_lantiq_$(2) +kmod-atm +br2684ctl + DEPENDS:=@$(2) +kmod-atm +br2684ctl FILES:=$(PKG_BUILD_DIR)/ltq_atm_$(1).ko AUTOLOAD:=$(call AutoProbe,ltq_atm_$(1)) endef -KernelPackage/ltq-atm-danube=$(call KernelPackage/ltq-atm-template,danube,xway) -KernelPackage/ltq-atm-ar9=$(call KernelPackage/ltq-atm-template,ar9,xway) -KernelPackage/ltq-atm-ase=$(call KernelPackage/ltq-atm-template,ase,ase) +KernelPackage/ltq-atm-danube=$(call KernelPackage/ltq-atm-template,danube,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy)) +KernelPackage/ltq-atm-ar9=$(call KernelPackage/ltq-atm-template,ar9,TARGET_lantiq_xway) +KernelPackage/ltq-atm-ase=$(call KernelPackage/ltq-atm-template,ase,TARGET_lantiq_ase) + define KernelPackage/ltq-atm-vr9 - $(call KernelPackage/ltq-atm-template,vr9,xrx200) + $(call KernelPackage/ltq-atm-template,vr9,TARGET_lantiq_xrx200) AUTOLOAD:= endef diff --git a/package/kernel/lantiq/ltq-hcd/Makefile b/package/kernel/lantiq/ltq-hcd/Makefile index d3a373dcb7..d285e56706 100644 --- a/package/kernel/lantiq/ltq-hcd/Makefile +++ b/package/kernel/lantiq/ltq-hcd/Makefile @@ -23,14 +23,14 @@ define KernelPackage/ltq-hcd-template TITLE:=USB driver for $(1) URL:=http://www.lantiq.com/ VARIANT:=$(1) - DEPENDS:=@TARGET_lantiq_$(2) +kmod-usb-core + DEPENDS:=@$(2) +kmod-usb-core FILES:=$(PKG_BUILD_DIR)/ltq_hcd_$(1).ko AUTOLOAD:=$(call AutoProbe,ltq_hcd_$(1),1) endef -KernelPackage/ltq-hcd-ase=$(call KernelPackage/ltq-hcd-template,ase,ase) -KernelPackage/ltq-hcd-danube=$(call KernelPackage/ltq-hcd-template,danube,xway) -KernelPackage/ltq-hcd-ar9=$(call KernelPackage/ltq-hcd-template,ar9,xway) +KernelPackage/ltq-hcd-ase=$(call KernelPackage/ltq-hcd-template,ase,TARGET_lantiq_ase) +KernelPackage/ltq-hcd-danube=$(call KernelPackage/ltq-hcd-template,(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy)) +KernelPackage/ltq-hcd-ar9=$(call KernelPackage/ltq-hcd-template,ar9,TARGET_lantiq_xway) define Build/Prepare $(INSTALL_DIR) $(PKG_BUILD_DIR) diff --git a/package/kernel/linux/modules/block.mk b/package/kernel/linux/modules/block.mk index c83f98ddbd..0c8d9b1fe9 100644 --- a/package/kernel/linux/modules/block.mk +++ b/package/kernel/linux/modules/block.mk @@ -151,22 +151,6 @@ endef $(eval $(call KernelPackage,ata-nvidia-sata)) -define KernelPackage/ata-oxnas-sata - TITLE:=oxnas Serial ATA support - KCONFIG:=CONFIG_SATA_OXNAS - DEPENDS:=@TARGET_oxnas - FILES:=$(LINUX_DIR)/drivers/ata/sata_oxnas.ko - AUTOLOAD:=$(call AutoLoad,41,sata_oxnas,1) - $(call AddDepends/ata) -endef - -define KernelPackage/ata-oxnas-sata/description - SATA support for OX934 core found in the OX82x/PLX782x SoCs -endef - -$(eval $(call KernelPackage,ata-oxnas-sata)) - - define KernelPackage/ata-pdc202xx-old SUBMENU:=$(BLOCK_MENU) TITLE:=Older Promise PATA controller support diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk index cfd5b11e44..0602a254ba 100644 --- a/package/kernel/linux/modules/usb.mk +++ b/package/kernel/linux/modules/usb.mk @@ -522,23 +522,6 @@ endef $(eval $(call KernelPackage,usb-dwc2)) -define KernelPackage/usb2-oxnas - TITLE:=OXNAS USB controller driver - DEPENDS:=@TARGET_oxnas +kmod-usb2 - KCONFIG:=CONFIG_USB_EHCI_OXNAS - FILES:=$(LINUX_DIR)/drivers/usb/host/ehci-oxnas.ko - AUTOLOAD:=$(call AutoLoad,55,ehci-oxnas,1) - $(call AddDepends/usb) -endef - -define KernelPackage/usb2-oxnas/description - This driver provides USB Device Controller support for the - EHCI USB host built-in to the PLXTECH NAS782x SoC -endef - -$(eval $(call KernelPackage,usb2-oxnas)) - - define KernelPackage/usb-dwc3 TITLE:=DWC3 USB controller driver KCONFIG:= \ diff --git a/package/network/config/ltq-adsl-app/Makefile b/package/network/config/ltq-adsl-app/Makefile index 96701197e8..667b0d8915 100644 --- a/package/network/config/ltq-adsl-app/Makefile +++ b/package/network/config/ltq-adsl-app/Makefile @@ -24,7 +24,7 @@ PKG_CONFIG_DEPENDS:=\ CONFIG_LTQ_DSL_ENABLE_SOAP \ CONFIG_LTQ_DSL_ENABLE_DSL_EVENT_POLLING -PKG_BUILD_DEPENDS:=TARGET_lantiq_xway:kmod-ltq-adsl-danube TARGET_lantiq_ase:kmod-ltq-adsl-ase +PKG_BUILD_DEPENDS:=TARGET_lantiq_xway:kmod-ltq-adsl-danube TARGET_lantiq_xway_legacy:kmod-ltq-adsl-danube TARGET_lantiq_ase:kmod-ltq-adsl-ase include $(INCLUDE_DIR)/package.mk @@ -33,7 +33,7 @@ define Package/ltq-adsl-app CATEGORY:=Network TITLE:=Lantiq DSL userland tool URL:=http://www.lantiq.com/ - DEPENDS:=@(TARGET_lantiq_xway||TARGET_lantiq_ase) +libpthread + DEPENDS:=@(TARGET_lantiq_xway||TARGET_lantiq_xway_legacy||TARGET_lantiq_ase) +libpthread MENU:=1 endef diff --git a/package/network/config/ltq-adsl-app/patches/001-stupid_breakage_fix.patch b/package/network/config/ltq-adsl-app/patches/001-stupid_breakage_fix.patch new file mode 100644 index 0000000000..a868678d1e --- /dev/null +++ b/package/network/config/ltq-adsl-app/patches/001-stupid_breakage_fix.patch @@ -0,0 +1,65 @@ +--- a/src/dsl_cpe_cli_access.c 2016-05-27 12:34:43.612485449 -0700 ++++ b/src/dsl_cpe_cli_access.c 2016-05-27 12:45:37.491727862 -0700 +@@ -1142,7 +1142,7 @@ + + if ((ret < 0) && (autobootCtrl.accessCtl.nReturn < DSL_SUCCESS)) + { +- DSL_CPE_FPrintf (out, sFailureReturn, autobootCtrl.accessCtl.nReturn); ++ DSL_CPE_FPrintf (out, sFailureReturn, autobootCtrl.accessCtl.nReturn, DSL_CPE_Fd2DevStr(fd)); + } + else + { +@@ -1213,7 +1213,7 @@ + + if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) + { +- DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn); ++ DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn, DSL_CPE_Fd2DevStr(fd)); + } + else + { +@@ -1290,7 +1290,7 @@ + + if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) + { +- DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn); ++ DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn, DSL_CPE_Fd2DevStr(fd)); + } + else + { +@@ -1355,7 +1355,7 @@ + pCtx, &resourceUsageStatisticsData); + if (ret < 0) + { +- DSL_CPE_FPrintf (out, sFailureReturn, ret); ++ DSL_CPE_FPrintf (out, sFailureReturn, ret, DSL_CPE_Fd2DevStr(fd)); + } + else + { +@@ -3084,7 +3084,7 @@ + + if ((ret < 0) && (pData->accessCtl.nReturn < DSL_SUCCESS)) + { +- DSL_CPE_FPrintf (out, sFailureReturn, pData->accessCtl.nReturn); ++ DSL_CPE_FPrintf (out, sFailureReturn, pData->accessCtl.nReturn, DSL_CPE_Fd2DevStr(fd)); + } + else + { +@@ -4654,7 +4654,7 @@ + + if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) + { +- DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn); ++ DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn, DSL_CPE_Fd2DevStr(fd)); + } + else + { +@@ -5714,7 +5714,7 @@ + + if ((ret < 0) && (pData.accessCtl.nReturn < DSL_SUCCESS)) + { +- DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn); ++ DSL_CPE_FPrintf (out, sFailureReturn, pData.accessCtl.nReturn, DSL_CPE_Fd2DevStr(fd)); + } + else + { diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile index d843548580..1b4a5d9f3a 100644 --- a/package/network/services/hostapd/Makefile +++ b/package/network/services/hostapd/Makefile @@ -7,9 +7,9 @@ include $(TOPDIR)/rules.mk PKG_NAME:=hostapd -PKG_VERSION:=2016-01-15 -PKG_RELEASE:=2 -PKG_REV:=e15dcf6d1bc2725388555523effca75b1ffab735 +PKG_VERSION:=2016-06-15 +PKG_RELEASE:=1 +PKG_REV:=31d3692fe5d56c05753ed4a70c7943979e1d29e7 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=git://w1.fi/srv/git/hostap.git diff --git a/package/network/services/hostapd/patches/100-mesh_mode_fix.patch b/package/network/services/hostapd/patches/100-mesh_mode_fix.patch index 1be7559c4a..ceb4c53afa 100644 --- a/package/network/services/hostapd/patches/100-mesh_mode_fix.patch +++ b/package/network/services/hostapd/patches/100-mesh_mode_fix.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -2262,7 +2262,8 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -2332,7 +2332,8 @@ wpa_driver_nl80211_finish_drv_init(struc if (drv->hostapd || bss->static_ap) nlmode = NL80211_IFTYPE_AP; diff --git a/package/network/services/hostapd/patches/120-daemonize_fix.patch b/package/network/services/hostapd/patches/120-daemonize_fix.patch index fad84669a6..0389406a98 100644 --- a/package/network/services/hostapd/patches/120-daemonize_fix.patch +++ b/package/network/services/hostapd/patches/120-daemonize_fix.patch @@ -60,13 +60,13 @@ + if (chdir("/") < 0) return -1; - } -- + - return 0; -} -#else /* __APPLE__ */ -#define os_daemon daemon -#endif /* __APPLE__ */ - +- - -int os_daemonize(const char *pid_file) -{ diff --git a/package/network/services/hostapd/patches/130-no_eapol_fix.patch b/package/network/services/hostapd/patches/130-no_eapol_fix.patch index 0c4114a515..5aee3d07f1 100644 --- a/package/network/services/hostapd/patches/130-no_eapol_fix.patch +++ b/package/network/services/hostapd/patches/130-no_eapol_fix.patch @@ -1,6 +1,6 @@ --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -253,9 +253,10 @@ void wpa_supplicant_cancel_auth_timeout( +@@ -257,9 +257,10 @@ void wpa_supplicant_cancel_auth_timeout( */ void wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s) { diff --git a/package/network/services/hostapd/patches/200-multicall.patch b/package/network/services/hostapd/patches/200-multicall.patch index 08f1e95a4f..e9d49d40fa 100644 --- a/package/network/services/hostapd/patches/200-multicall.patch +++ b/package/network/services/hostapd/patches/200-multicall.patch @@ -1,15 +1,25 @@ --- a/hostapd/Makefile +++ b/hostapd/Makefile -@@ -32,6 +32,7 @@ export BINDIR ?= /usr/local/bin/ - # CFLAGS += -DUSE_KERNEL_HEADERS -I/usr/src/linux/include +@@ -28,6 +28,7 @@ CFLAGS += -I$(abspath ../src/utils) + export BINDIR ?= /usr/local/bin/ -include .config +-include $(if $(MULTICALL), ../wpa_supplicant/.config) ifndef CONFIG_NO_GITVER # Add VERSION_STR postfix for builds from a git repository -@@ -277,10 +278,14 @@ ifdef CONFIG_IEEE80211AC - CFLAGS += -DCONFIG_IEEE80211AC +@@ -190,7 +191,8 @@ endif + + ifdef CONFIG_NO_VLAN + CFLAGS += -DCONFIG_NO_VLAN +-else ++endif ++ifneq ($(findstring CONFIG_NO_VLAN,$(CFLAGS)), CONFIG_NO_VLAN) + OBJS += ../src/ap/vlan_init.o + OBJS += ../src/ap/vlan_ifconfig.o + OBJS += ../src/ap/vlan.o +@@ -315,10 +317,14 @@ CFLAGS += -DCONFIG_MBO + OBJS += ../src/ap/mbo_ap.o endif +ifndef MULTICALL @@ -26,7 +36,7 @@ LIBS += $(DRV_AP_LIBS) ifdef CONFIG_L2_PACKET -@@ -1019,6 +1024,12 @@ install: $(addprefix $(DESTDIR)$(BINDIR) +@@ -1051,6 +1057,12 @@ install: $(addprefix $(DESTDIR)$(BINDIR) BCHECK=../src/drivers/build.hostapd @@ -39,7 +49,7 @@ hostapd: $(BCHECK) $(OBJS) $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS) @$(E) " LD " $@ -@@ -1060,6 +1071,12 @@ HOBJS += ../src/crypto/aes-internal.o +@@ -1092,6 +1104,12 @@ HOBJS += ../src/crypto/aes-internal.o HOBJS += ../src/crypto/aes-internal-enc.o endif @@ -62,7 +72,7 @@ ifndef CONFIG_NO_GITVER # Add VERSION_STR postfix for builds from a git repository -@@ -794,6 +795,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS +@@ -803,6 +804,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS LIBS += -ldl -rdynamic endif @@ -73,7 +83,7 @@ endif ifdef CONFIG_MACSEC -@@ -814,9 +819,11 @@ NEED_EAP_COMMON=y +@@ -823,9 +828,11 @@ NEED_EAP_COMMON=y NEED_RSN_AUTHENTICATOR=y CFLAGS += -DCONFIG_AP OBJS += ap.o @@ -85,7 +95,7 @@ OBJS += ../src/ap/hostapd.o OBJS += ../src/ap/wpa_auth_glue.o OBJS += ../src/ap/utils.o -@@ -879,10 +886,18 @@ endif +@@ -898,10 +905,18 @@ endif ifdef CONFIG_HS20 OBJS += ../src/ap/hs20.o endif @@ -104,7 +114,7 @@ NEED_AES_WRAP=y OBJS += ../src/ap/wpa_auth.o OBJS += ../src/ap/wpa_auth_ie.o -@@ -1657,6 +1672,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv) +@@ -1680,6 +1695,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv) $(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config @@ -117,8 +127,8 @@ wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs) $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS) @$(E) " LD " $@ -@@ -1757,6 +1778,12 @@ endif - $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@ +@@ -1782,6 +1803,12 @@ endif + -e 's|\@DBUS_INTERFACE\@|$(DBUS_INTERFACE)|g' $< >$@ @$(E) " sed" $< +dump_cflags: @@ -132,7 +142,7 @@ wpa_cli.exe: wpa_cli --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -4707,8 +4707,8 @@ union wpa_event_data { +@@ -4794,8 +4794,8 @@ union wpa_event_data { * Driver wrapper code should call this function whenever an event is received * from the driver. */ @@ -141,11 +151,20 @@ +extern void (*wpa_supplicant_event)(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); + /** + * wpa_supplicant_event_global - Report a driver event for wpa_supplicant +@@ -4807,7 +4807,7 @@ void wpa_supplicant_event(void *ctx, enu + * Same as wpa_supplicant_event(), but we search for the interface in + * wpa_global. + */ +-void wpa_supplicant_event_global(void *ctx, enum wpa_event_type event, ++extern void (*wpa_supplicant_event_global)(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); /* --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c -@@ -1122,8 +1122,8 @@ static void hostapd_event_dfs_cac_starte +@@ -1157,8 +1157,8 @@ static void hostapd_event_dfs_cac_starte #endif /* NEED_AP_MLME */ @@ -156,9 +175,18 @@ { struct hostapd_data *hapd = ctx; #ifndef CONFIG_NO_STDOUT_DEBUG +@@ -1367,7 +1367,7 @@ void wpa_supplicant_event(void *ctx, enu + } + + +-void wpa_supplicant_event_global(void *ctx, enum wpa_event_type event, ++void hostapd_wpa_event_global(void *ctx, enum wpa_event_type event, + union wpa_event_data *data) + { + struct hapd_interfaces *interfaces = ctx; --- a/wpa_supplicant/wpa_priv.c +++ b/wpa_supplicant/wpa_priv.c -@@ -932,8 +932,8 @@ static void wpa_priv_send_ft_response(st +@@ -940,8 +940,8 @@ static void wpa_priv_send_ft_response(st } @@ -169,17 +197,27 @@ { struct wpa_priv_interface *iface = ctx; -@@ -1082,6 +1082,7 @@ int main(int argc, char *argv[]) +@@ -1010,7 +1010,7 @@ void wpa_supplicant_event(void *ctx, enu + } + + +-void wpa_supplicant_event_global(void *ctx, enum wpa_event_type event, ++void supplicant_event_global(void *ctx, enum wpa_event_type event, + union wpa_event_data *data) + { + struct wpa_priv_global *global = ctx; +@@ -1122,6 +1122,8 @@ int main(int argc, char *argv[]) if (os_program_init()) return -1; + wpa_supplicant_event = supplicant_event; ++ wpa_supplicant_event_global = supplicant_event_global; wpa_priv_fd_workaround(); - for (;;) { + os_memset(&global, 0, sizeof(global)); --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c -@@ -3298,8 +3298,8 @@ static void wpa_supplicant_event_assoc_a +@@ -3384,8 +3384,8 @@ static void wpa_supplicant_event_assoc_a } @@ -190,7 +228,7 @@ { struct wpa_supplicant *wpa_s = ctx; int resched; -@@ -3947,7 +3947,7 @@ void wpa_supplicant_event(void *ctx, enu +@@ -4051,7 +4051,7 @@ void wpa_supplicant_event(void *ctx, enu #endif /* CONFIG_AP */ break; case EVENT_ACS_CHANNEL_SELECTED: @@ -199,61 +237,86 @@ if (!wpa_s->ap_iface) break; hostapd_acs_channel_selected(wpa_s->ap_iface->bss[0], +@@ -4065,7 +4065,7 @@ void wpa_supplicant_event(void *ctx, enu + } + + +-void wpa_supplicant_event_global(void *ctx, enum wpa_event_type event, ++void supplicant_event_global(void *ctx, enum wpa_event_type event, + union wpa_event_data *data) + { + struct wpa_supplicant *wpa_s; --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -4845,6 +4845,9 @@ static void wpa_supplicant_deinit_iface( - os_free(wpa_s); +@@ -4982,7 +4982,6 @@ struct wpa_interface * wpa_supplicant_ma + return NULL; } +- + /** + * wpa_supplicant_match_existing - Match existing interfaces + * @global: Pointer to global data from wpa_supplicant_init() +@@ -5019,6 +5018,11 @@ static int wpa_supplicant_match_existing + + #endif /* CONFIG_MATCH_IFACE */ + +extern void supplicant_event(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); + ++extern void supplicant_event_global(void *ctx, enum wpa_event_type event, ++ union wpa_event_data *data); /** * wpa_supplicant_add_iface - Add a new network interface -@@ -5100,6 +5103,7 @@ struct wpa_global * wpa_supplicant_init( +@@ -5274,6 +5278,8 @@ struct wpa_global * wpa_supplicant_init( #ifndef CONFIG_NO_WPA_MSG wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb); #endif /* CONFIG_NO_WPA_MSG */ + wpa_supplicant_event = supplicant_event; ++ wpa_supplicant_event_global = supplicant_event_global; if (params->wpa_debug_file_path) wpa_debug_open_file(params->wpa_debug_file_path); --- a/hostapd/main.c +++ b/hostapd/main.c -@@ -513,6 +513,9 @@ static int hostapd_get_ctrl_iface_group( - return 0; +@@ -583,6 +583,11 @@ fail: + return -1; } +void hostapd_wpa_event(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); + ++void hostapd_wpa_event_global(void *ctx, enum wpa_event_type event, ++ union wpa_event_data *data); #ifdef CONFIG_WPS static int gen_uuid(const char *txt_addr) -@@ -588,6 +591,7 @@ int main(int argc, char *argv[]) +@@ -660,6 +665,8 @@ int main(int argc, char *argv[]) interfaces.global_ctrl_sock = -1; - interfaces.global_ctrl_dst = NULL; + dl_list_init(&interfaces.global_ctrl_dst); + wpa_supplicant_event = hostapd_wpa_event; ++ wpa_supplicant_event_global = hostapd_wpa_event_global; for (;;) { - c = getopt(argc, argv, "b:Bde:f:hKP:STtu:vg:G:"); + c = getopt(argc, argv, "b:Bde:f:hi:KP:STtu:vg:G:"); if (c < 0) --- a/src/drivers/drivers.c +++ b/src/drivers/drivers.c -@@ -10,6 +10,9 @@ +@@ -10,6 +10,11 @@ #include "utils/common.h" #include "driver.h" +void (*wpa_supplicant_event)(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); ++void (*wpa_supplicant_event_global)(void *ctx, enum wpa_event_type event, ++ union wpa_event_data *data); + #ifdef CONFIG_DRIVER_WEXT extern struct wpa_driver_ops wpa_driver_wext_ops; /* driver_wext.c */ #endif /* CONFIG_DRIVER_WEXT */ --- a/wpa_supplicant/eapol_test.c +++ b/wpa_supplicant/eapol_test.c -@@ -29,7 +29,10 @@ +@@ -29,7 +29,12 @@ #include "ctrl_iface.h" #include "pcsc_funcs.h" #include "wpas_glue.h" @@ -261,23 +324,28 @@ +void (*wpa_supplicant_event)(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); ++void (*wpa_supplicant_event_global)(void *ctx, enum wpa_event_type event, ++ union wpa_event_data *data); const struct wpa_driver_ops *const wpa_drivers[] = { NULL }; -@@ -1288,6 +1291,8 @@ static void usage(void) +@@ -1295,6 +1300,10 @@ static void usage(void) "option several times.\n"); } +extern void supplicant_event(void *ctx, enum wpa_event_type event, + union wpa_event_data *data); ++extern void supplicant_event_global(void *ctx, enum wpa_event_type event, ++ union wpa_event_data *data); int main(int argc, char *argv[]) { -@@ -1308,6 +1313,7 @@ int main(int argc, char *argv[]) +@@ -1315,6 +1324,8 @@ int main(int argc, char *argv[]) if (os_program_init()) return -1; + wpa_supplicant_event = supplicant_event; ++ wpa_supplicant_event_global = supplicant_event_global; hostapd_logger_register_cb(hostapd_logger_cb); os_memset(&eapol_test, 0, sizeof(eapol_test)); diff --git a/package/network/services/hostapd/patches/300-noscan.patch b/package/network/services/hostapd/patches/300-noscan.patch index 85dc0c1cce..bb3d57b0ea 100644 --- a/package/network/services/hostapd/patches/300-noscan.patch +++ b/package/network/services/hostapd/patches/300-noscan.patch @@ -1,6 +1,6 @@ --- a/hostapd/config_file.c +++ b/hostapd/config_file.c -@@ -2852,6 +2852,10 @@ static int hostapd_config_fill(struct ho +@@ -2861,6 +2861,10 @@ static int hostapd_config_fill(struct ho } #endif /* CONFIG_IEEE80211W */ #ifdef CONFIG_IEEE80211N @@ -13,7 +13,7 @@ } else if (os_strcmp(buf, "ht_capab") == 0) { --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h -@@ -639,6 +639,8 @@ struct hostapd_config { +@@ -655,6 +655,8 @@ struct hostapd_config { int ht_op_mode_fixed; u16 ht_capab; @@ -24,7 +24,7 @@ int no_pri_sec_switch; --- a/src/ap/hw_features.c +++ b/src/ap/hw_features.c -@@ -473,7 +473,8 @@ static int ieee80211n_check_40mhz(struct +@@ -474,7 +474,8 @@ static int ieee80211n_check_40mhz(struct int ret; /* Check that HT40 is used and PRI / SEC switch is allowed */ diff --git a/package/network/services/hostapd/patches/310-rescan_immediately.patch b/package/network/services/hostapd/patches/310-rescan_immediately.patch index 3bcdd70e75..d9486ed405 100644 --- a/package/network/services/hostapd/patches/310-rescan_immediately.patch +++ b/package/network/services/hostapd/patches/310-rescan_immediately.patch @@ -1,6 +1,6 @@ --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -3449,7 +3449,7 @@ wpa_supplicant_alloc(struct wpa_supplica +@@ -3548,7 +3548,7 @@ wpa_supplicant_alloc(struct wpa_supplica if (wpa_s == NULL) return NULL; wpa_s->scan_req = INITIAL_SCAN_REQ; @@ -8,4 +8,4 @@ + wpa_s->scan_interval = 1; wpa_s->new_connection = 1; wpa_s->parent = parent ? parent : wpa_s; - wpa_s->sched_scanning = 0; + wpa_s->p2pdev = wpa_s->parent; diff --git a/package/network/services/hostapd/patches/320-optional_rfkill.patch b/package/network/services/hostapd/patches/320-optional_rfkill.patch index 349af030b9..cf2a2c108b 100644 --- a/package/network/services/hostapd/patches/320-optional_rfkill.patch +++ b/package/network/services/hostapd/patches/320-optional_rfkill.patch @@ -1,14 +1,14 @@ --- a/src/drivers/drivers.mak +++ b/src/drivers/drivers.mak -@@ -37,7 +37,6 @@ NEED_SME=y +@@ -36,7 +36,6 @@ NEED_SME=y NEED_AP_MLME=y NEED_NETLINK=y NEED_LINUX_IOCTL=y -NEED_RFKILL=y + NEED_RADIOTAP=y ifdef CONFIG_LIBNL32 - DRV_LIBS += -lnl-3 -@@ -121,7 +120,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT +@@ -123,7 +122,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT CONFIG_WIRELESS_EXTENSION=y NEED_NETLINK=y NEED_LINUX_IOCTL=y @@ -16,7 +16,7 @@ endif ifdef CONFIG_DRIVER_NDIS -@@ -147,7 +145,6 @@ endif +@@ -149,7 +147,6 @@ endif ifdef CONFIG_WIRELESS_EXTENSION DRV_WPA_CFLAGS += -DCONFIG_WIRELESS_EXTENSION DRV_WPA_OBJS += ../src/drivers/driver_wext.o @@ -24,14 +24,14 @@ endif ifdef NEED_NETLINK -@@ -160,6 +157,7 @@ endif +@@ -162,6 +159,7 @@ endif ifdef NEED_RFKILL DRV_OBJS += ../src/drivers/rfkill.o +DRV_WPA_CFLAGS += -DCONFIG_RFKILL endif - ifdef CONFIG_VLAN_NETLINK + ifdef NEED_RADIOTAP --- a/src/drivers/rfkill.h +++ b/src/drivers/rfkill.h @@ -18,8 +18,24 @@ struct rfkill_config { diff --git a/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch b/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch index 54dec31333..ca4601247b 100644 --- a/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch +++ b/package/network/services/hostapd/patches/330-nl80211_fix_set_freq.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -3709,7 +3709,7 @@ static int nl80211_set_channel(struct i8 +@@ -3795,7 +3795,7 @@ static int nl80211_set_channel(struct i8 freq->freq, freq->ht_enabled, freq->vht_enabled, freq->bandwidth, freq->center_freq1, freq->center_freq2); diff --git a/package/network/services/hostapd/patches/340-reload_freq_change.patch b/package/network/services/hostapd/patches/340-reload_freq_change.patch index a687a805fc..086ade9ced 100644 --- a/package/network/services/hostapd/patches/340-reload_freq_change.patch +++ b/package/network/services/hostapd/patches/340-reload_freq_change.patch @@ -1,6 +1,6 @@ --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c -@@ -78,6 +78,16 @@ static void hostapd_reload_bss(struct ho +@@ -80,6 +80,16 @@ static void hostapd_reload_bss(struct ho #endif /* CONFIG_NO_RADIUS */ ssid = &hapd->conf->ssid; @@ -17,7 +17,7 @@ if (!ssid->wpa_psk_set && ssid->wpa_psk && !ssid->wpa_psk->next && ssid->wpa_passphrase_set && ssid->wpa_passphrase) { /* -@@ -177,21 +187,12 @@ int hostapd_reload_config(struct hostapd +@@ -179,21 +189,12 @@ int hostapd_reload_config(struct hostapd oldconf = hapd->iconf; iface->conf = newconf; diff --git a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch index 2bcf49a7c6..247f154e30 100644 --- a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch +++ b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch @@ -1,6 +1,6 @@ --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -2324,13 +2324,18 @@ wpa_driver_nl80211_finish_drv_init(struc +@@ -2394,13 +2394,18 @@ wpa_driver_nl80211_finish_drv_init(struc } @@ -22,7 +22,7 @@ return send_and_recv_msgs(drv, msg, NULL, NULL); } -@@ -2381,7 +2386,7 @@ static void wpa_driver_nl80211_deinit(st +@@ -2452,7 +2457,7 @@ static void wpa_driver_nl80211_deinit(st nl80211_remove_monitor_interface(drv); if (is_ap_interface(drv->nlmode)) @@ -31,7 +31,7 @@ if (drv->eapol_sock >= 0) { eloop_unregister_read_sock(drv->eapol_sock); -@@ -4233,8 +4238,7 @@ static void nl80211_teardown_ap(struct i +@@ -4385,8 +4390,7 @@ static void nl80211_teardown_ap(struct i nl80211_remove_monitor_interface(drv); else nl80211_mgmt_unsubscribe(bss, "AP teardown"); @@ -41,7 +41,7 @@ } -@@ -6165,8 +6169,6 @@ static int wpa_driver_nl80211_if_remove( +@@ -6387,8 +6391,6 @@ static int wpa_driver_nl80211_if_remove( } else { wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context"); nl80211_teardown_ap(bss); @@ -50,7 +50,7 @@ nl80211_destroy_bss(bss); if (!bss->added_if) i802_set_iface_flags(bss, 0); -@@ -6528,8 +6530,7 @@ static int wpa_driver_nl80211_deinit_ap( +@@ -6750,8 +6752,7 @@ static int wpa_driver_nl80211_deinit_ap( struct wpa_driver_nl80211_data *drv = bss->drv; if (!is_ap_interface(drv->nlmode)) return -1; @@ -60,7 +60,7 @@ /* * If the P2P GO interface was dynamically added, then it is -@@ -6548,8 +6549,7 @@ static int wpa_driver_nl80211_stop_ap(vo +@@ -6770,8 +6771,7 @@ static int wpa_driver_nl80211_stop_ap(vo struct wpa_driver_nl80211_data *drv = bss->drv; if (!is_ap_interface(drv->nlmode)) return -1; diff --git a/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch b/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch index ebc63ab246..1e405cbf0e 100644 --- a/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch +++ b/package/network/services/hostapd/patches/360-ctrl_iface_reload.patch @@ -1,6 +1,6 @@ --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c -@@ -47,6 +47,7 @@ +@@ -54,6 +54,7 @@ #include "fst/fst_ctrl_iface.h" #include "config_file.h" #include "ctrl_iface.h" @@ -8,15 +8,15 @@ #define HOSTAPD_CLI_DUP_VALUE_MAX_LEN 256 -@@ -59,6 +60,7 @@ struct wpa_ctrl_dst { - int errors; - }; +@@ -72,6 +73,7 @@ static void hostapd_ctrl_iface_send(stru + enum wpa_msg_type type, + const char *buf, size_t len); +static char *reload_opts = NULL; - static void hostapd_ctrl_iface_send(struct hostapd_data *hapd, int level, - enum wpa_msg_type type, -@@ -169,6 +171,61 @@ static int hostapd_ctrl_iface_new_sta(st + static int hostapd_ctrl_iface_attach(struct hostapd_data *hapd, + struct sockaddr_storage *from, +@@ -123,6 +125,61 @@ static int hostapd_ctrl_iface_new_sta(st return 0; } @@ -78,7 +78,7 @@ #ifdef CONFIG_IEEE80211W #ifdef NEED_AP_MLME -@@ -2257,6 +2314,8 @@ static int hostapd_ctrl_iface_receive_pr +@@ -2483,6 +2540,8 @@ static int hostapd_ctrl_iface_receive_pr } else if (os_strncmp(buf, "VENDOR ", 7) == 0) { reply_len = hostapd_ctrl_iface_vendor(hapd, buf + 7, reply, reply_size); @@ -89,7 +89,7 @@ #ifdef RADIUS_SERVER --- a/src/ap/ctrl_iface_ap.c +++ b/src/ap/ctrl_iface_ap.c -@@ -552,5 +552,11 @@ int hostapd_parse_csa_settings(const cha +@@ -593,7 +593,13 @@ int hostapd_parse_csa_settings(const cha int hostapd_ctrl_iface_stop_ap(struct hostapd_data *hapd) { @@ -102,3 +102,5 @@ + + return 0; } + + diff --git a/package/network/services/hostapd/patches/370-ap_sta_support.patch b/package/network/services/hostapd/patches/370-ap_sta_support.patch index 716916a0f0..6b70215c43 100644 --- a/package/network/services/hostapd/patches/370-ap_sta_support.patch +++ b/package/network/services/hostapd/patches/370-ap_sta_support.patch @@ -1,6 +1,6 @@ --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h -@@ -99,6 +99,11 @@ struct wpa_interface { +@@ -100,6 +100,11 @@ struct wpa_interface { const char *ifname; /** @@ -12,8 +12,8 @@ * bridge_ifname - Optional bridge interface name * * If the driver interface (ifname) is included in a Linux bridge -@@ -465,6 +470,8 @@ struct wpa_supplicant { - #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ +@@ -484,6 +489,8 @@ struct wpa_supplicant { + #endif /* CONFIG_CTRL_IFACE_BINDER */ char bridge_ifname[16]; + struct wpa_ctrl *hostapd; @@ -45,7 +45,7 @@ CONFIG_OS=win32 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -108,6 +108,55 @@ const char *const wpa_supplicant_full_li +@@ -112,6 +112,55 @@ const char *const wpa_supplicant_full_li "\n"; #endif /* CONFIG_NO_STDOUT_DEBUG */ @@ -101,7 +101,7 @@ /* Configure default/group WEP keys for static WEP */ int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid) { -@@ -783,8 +832,12 @@ void wpa_supplicant_set_state(struct wpa +@@ -812,8 +861,12 @@ void wpa_supplicant_set_state(struct wpa wpas_p2p_completed(wpa_s); sme_sched_obss_scan(wpa_s, 1); @@ -114,7 +114,7 @@ wpa_s->new_connection = 1; wpa_drv_set_operstate(wpa_s, 0); #ifndef IEEE8021X_EAPOL -@@ -4537,6 +4590,20 @@ static int wpa_supplicant_init_iface(str +@@ -4638,6 +4691,20 @@ static int wpa_supplicant_init_iface(str sizeof(wpa_s->bridge_ifname)); } @@ -135,7 +135,7 @@ /* RSNA Supplicant Key Management - INITIALIZE */ eapol_sm_notify_portEnabled(wpa_s->eapol, FALSE); eapol_sm_notify_portValid(wpa_s->eapol, FALSE); -@@ -4823,6 +4890,11 @@ static void wpa_supplicant_deinit_iface( +@@ -4929,6 +4996,11 @@ static void wpa_supplicant_deinit_iface( if (terminate) wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_TERMINATING); @@ -203,16 +203,16 @@ " -i = interface name\n" " -I = additional configuration file\n" " -K = include keys (passwords, etc.) in debug output\n" -@@ -176,7 +177,7 @@ int main(int argc, char *argv[]) +@@ -201,7 +202,7 @@ int main(int argc, char *argv[]) for (;;) { c = getopt(argc, argv, -- "b:Bc:C:D:de:f:g:G:hi:I:KLm:No:O:p:P:qsTtuvW"); -+ "b:Bc:C:D:de:f:g:G:hH:i:I:KLm:No:O:p:P:qsTtuvW"); +- "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuvW"); ++ "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuvW"); if (c < 0) break; switch (c) { -@@ -223,6 +224,9 @@ int main(int argc, char *argv[]) +@@ -248,6 +249,9 @@ int main(int argc, char *argv[]) usage(); exitcode = 0; goto out; diff --git a/package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch b/package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch index 1e1aa20730..ef9c9db9a5 100644 --- a/package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch +++ b/package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch @@ -1,18 +1,18 @@ --- a/hostapd/Makefile +++ b/hostapd/Makefile -@@ -202,6 +202,9 @@ endif +@@ -212,6 +212,9 @@ endif ifdef CONFIG_NO_CTRL_IFACE CFLAGS += -DCONFIG_NO_CTRL_IFACE else +ifdef CONFIG_CTRL_IFACE_MIB +CFLAGS += -DCONFIG_CTRL_IFACE_MIB +endif - OBJS += ctrl_iface.o - OBJS += ../src/ap/ctrl_iface_ap.o - endif + ifeq ($(CONFIG_CTRL_IFACE), udp) + CFLAGS += -DCONFIG_CTRL_IFACE_UDP + else --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c -@@ -2119,6 +2119,7 @@ static int hostapd_ctrl_iface_receive_pr +@@ -2342,6 +2342,7 @@ static int hostapd_ctrl_iface_receive_pr reply_size); } else if (os_strcmp(buf, "STATUS-DRIVER") == 0) { reply_len = hostapd_drv_status(hapd, reply, reply_size); @@ -20,7 +20,7 @@ } else if (os_strcmp(buf, "MIB") == 0) { reply_len = ieee802_11_get_mib(hapd, reply, reply_size); if (reply_len >= 0) { -@@ -2160,6 +2161,7 @@ static int hostapd_ctrl_iface_receive_pr +@@ -2383,6 +2384,7 @@ static int hostapd_ctrl_iface_receive_pr } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) { reply_len = hostapd_ctrl_iface_sta_next(hapd, buf + 9, reply, reply_size); @@ -30,8 +30,8 @@ reply_len = -1; --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile -@@ -858,6 +858,9 @@ ifdef CONFIG_WNM - OBJS += ../src/ap/wnm_ap.o +@@ -872,6 +872,9 @@ ifdef CONFIG_MBO + OBJS += ../src/ap/mbo_ap.o endif ifdef CONFIG_CTRL_IFACE +ifdef CONFIG_CTRL_IFACE_MIB @@ -42,7 +42,7 @@ --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c -@@ -1858,7 +1858,7 @@ static int wpa_supplicant_ctrl_iface_sta +@@ -1895,7 +1895,7 @@ static int wpa_supplicant_ctrl_iface_sta pos += ret; } @@ -51,7 +51,7 @@ if (wpa_s->ap_iface) { pos += ap_ctrl_iface_wpa_get_status(wpa_s, pos, end - pos, -@@ -8352,6 +8352,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -8687,6 +8687,7 @@ char * wpa_supplicant_ctrl_iface_process reply_len = -1; } else if (os_strncmp(buf, "NOTE ", 5) == 0) { wpa_printf(MSG_INFO, "NOTE: %s", buf + 5); @@ -59,7 +59,7 @@ } else if (os_strcmp(buf, "MIB") == 0) { reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size); if (reply_len >= 0) { -@@ -8359,6 +8360,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -8694,6 +8695,7 @@ char * wpa_supplicant_ctrl_iface_process reply + reply_len, reply_size - reply_len); } @@ -67,7 +67,7 @@ } else if (os_strncmp(buf, "STATUS", 6) == 0) { reply_len = wpa_supplicant_ctrl_iface_status( wpa_s, buf + 6, reply, reply_size); -@@ -8821,6 +8823,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -9164,6 +9166,7 @@ char * wpa_supplicant_ctrl_iface_process reply_len = wpa_supplicant_ctrl_iface_bss( wpa_s, buf + 4, reply, reply_size); #ifdef CONFIG_AP @@ -75,7 +75,7 @@ } else if (os_strcmp(buf, "STA-FIRST") == 0) { reply_len = ap_ctrl_iface_sta_first(wpa_s, reply, reply_size); } else if (os_strncmp(buf, "STA ", 4) == 0) { -@@ -8829,12 +8832,15 @@ char * wpa_supplicant_ctrl_iface_process +@@ -9172,12 +9175,15 @@ char * wpa_supplicant_ctrl_iface_process } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) { reply_len = ap_ctrl_iface_sta_next(wpa_s, buf + 9, reply, reply_size); @@ -93,15 +93,15 @@ reply_len = -1; --- a/src/ap/ctrl_iface_ap.c +++ b/src/ap/ctrl_iface_ap.c -@@ -23,6 +23,7 @@ - #include "ctrl_iface_ap.h" +@@ -24,6 +24,7 @@ #include "ap_drv_ops.h" + #include "mbo_ap.h" +#ifdef CONFIG_CTRL_IFACE_MIB static int hostapd_get_sta_tx_rx(struct hostapd_data *hapd, struct sta_info *sta, -@@ -235,6 +236,7 @@ int hostapd_ctrl_iface_sta_next(struct h +@@ -249,6 +250,7 @@ int hostapd_ctrl_iface_sta_next(struct h return hostapd_ctrl_iface_sta_mib(hapd, sta->next, buf, buflen); } @@ -111,7 +111,7 @@ static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype, --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c -@@ -2359,6 +2359,7 @@ static const char * bool_txt(Boolean val +@@ -2441,6 +2441,7 @@ static const char * bool_txt(Boolean val return val ? "TRUE" : "FALSE"; } @@ -119,7 +119,7 @@ int ieee802_1x_get_mib(struct hostapd_data *hapd, char *buf, size_t buflen) { -@@ -2534,6 +2535,7 @@ int ieee802_1x_get_mib_sta(struct hostap +@@ -2616,6 +2617,7 @@ int ieee802_1x_get_mib_sta(struct hostap return len; } @@ -167,7 +167,7 @@ --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c -@@ -1091,7 +1091,7 @@ int wpas_ap_wps_nfc_report_handover(stru +@@ -1114,7 +1114,7 @@ int wpas_ap_wps_nfc_report_handover(stru #endif /* CONFIG_WPS */ diff --git a/package/network/services/hostapd/patches/390-wpa_ie_cap_workaround.patch b/package/network/services/hostapd/patches/390-wpa_ie_cap_workaround.patch index 0d752b0508..c9e7bf4209 100644 --- a/package/network/services/hostapd/patches/390-wpa_ie_cap_workaround.patch +++ b/package/network/services/hostapd/patches/390-wpa_ie_cap_workaround.patch @@ -1,6 +1,6 @@ --- a/src/common/wpa_common.c +++ b/src/common/wpa_common.c -@@ -1242,6 +1242,31 @@ u32 wpa_akm_to_suite(int akm) +@@ -1244,6 +1244,31 @@ u32 wpa_akm_to_suite(int akm) } @@ -32,7 +32,7 @@ int wpa_compare_rsn_ie(int ft_initial_assoc, const u8 *ie1, size_t ie1len, const u8 *ie2, size_t ie2len) -@@ -1249,8 +1274,19 @@ int wpa_compare_rsn_ie(int ft_initial_as +@@ -1251,8 +1276,19 @@ int wpa_compare_rsn_ie(int ft_initial_as if (ie1 == NULL || ie2 == NULL) return -1; diff --git a/package/network/services/hostapd/patches/420-indicate-features.patch b/package/network/services/hostapd/patches/420-indicate-features.patch index 234537a7bc..335e71eb51 100644 --- a/package/network/services/hostapd/patches/420-indicate-features.patch +++ b/package/network/services/hostapd/patches/420-indicate-features.patch @@ -8,16 +8,16 @@ #include "crypto/random.h" #include "crypto/tls.h" #include "common/version.h" -@@ -593,7 +594,7 @@ int main(int argc, char *argv[]) - +@@ -668,7 +669,7 @@ int main(int argc, char *argv[]) wpa_supplicant_event = hostapd_wpa_event; + wpa_supplicant_event_global = hostapd_wpa_event_global; for (;;) { -- c = getopt(argc, argv, "b:Bde:f:hKP:STtu:vg:G:"); -+ c = getopt(argc, argv, "b:Bde:f:hKP:STtu:g:G:v::"); +- c = getopt(argc, argv, "b:Bde:f:hi:KP:STtu:vg:G:"); ++ c = getopt(argc, argv, "b:Bde:f:hi:KP:STtu:g:G:v::"); if (c < 0) break; switch (c) { -@@ -630,6 +631,8 @@ int main(int argc, char *argv[]) +@@ -705,6 +706,8 @@ int main(int argc, char *argv[]) break; #endif /* CONFIG_DEBUG_LINUX_TRACING */ case 'v': @@ -36,16 +36,16 @@ #include "fst/fst.h" #include "wpa_supplicant_i.h" #include "driver_i.h" -@@ -177,7 +178,7 @@ int main(int argc, char *argv[]) +@@ -202,7 +203,7 @@ int main(int argc, char *argv[]) for (;;) { c = getopt(argc, argv, -- "b:Bc:C:D:de:f:g:G:hH:i:I:KLm:No:O:p:P:qsTtuvW"); -+ "b:Bc:C:D:de:f:g:G:hH:i:I:KLm:No:O:p:P:qsTtuv::W"); +- "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuvW"); ++ "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuv::W"); if (c < 0) break; switch (c) { -@@ -280,8 +281,12 @@ int main(int argc, char *argv[]) +@@ -305,8 +306,12 @@ int main(int argc, char *argv[]) break; #endif /* CONFIG_DBUS */ case 'v': diff --git a/package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch b/package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch index 9ecd78609b..d07b747c3d 100644 --- a/package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch +++ b/package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch @@ -1,6 +1,6 @@ --- a/hostapd/hostapd_cli.c +++ b/hostapd/hostapd_cli.c -@@ -68,7 +68,6 @@ static const char *const commands_help = +@@ -69,7 +69,6 @@ static const char *const commands_help = #ifdef CONFIG_IEEE80211W " sa_query <addr> send SA Query to a station\n" #endif /* CONFIG_IEEE80211W */ @@ -8,7 +8,7 @@ " wps_pin <uuid> <pin> [timeout] [addr] add WPS Enrollee PIN\n" " wps_check_pin <PIN> verify PIN checksum\n" " wps_pbc indicate button pushed to initiate PBC\n" -@@ -81,7 +80,6 @@ static const char *const commands_help = +@@ -82,7 +81,6 @@ static const char *const commands_help = " wps_ap_pin <cmd> [params..] enable/disable AP PIN\n" " wps_config <SSID> <auth> <encr> <key> configure AP\n" " wps_get_status show current WPS status\n" @@ -16,7 +16,7 @@ " get_config show current configuration\n" " help show this usage help\n" " interface [ifname] show interfaces/select interface\n" -@@ -364,7 +362,6 @@ static int hostapd_cli_cmd_sa_query(stru +@@ -418,7 +416,6 @@ static int hostapd_cli_cmd_sa_query(stru #endif /* CONFIG_IEEE80211W */ @@ -24,7 +24,7 @@ static int hostapd_cli_cmd_wps_pin(struct wpa_ctrl *ctrl, int argc, char *argv[]) { -@@ -590,7 +587,6 @@ static int hostapd_cli_cmd_wps_config(st +@@ -644,7 +641,6 @@ static int hostapd_cli_cmd_wps_config(st ssid_hex, argv[1]); return wpa_ctrl_command(ctrl, buf); } @@ -32,7 +32,7 @@ static int hostapd_cli_cmd_disassoc_imminent(struct wpa_ctrl *ctrl, int argc, -@@ -1086,7 +1082,6 @@ static const struct hostapd_cli_cmd host +@@ -1236,7 +1232,6 @@ static const struct hostapd_cli_cmd host #ifdef CONFIG_IEEE80211W { "sa_query", hostapd_cli_cmd_sa_query }, #endif /* CONFIG_IEEE80211W */ @@ -40,7 +40,7 @@ { "wps_pin", hostapd_cli_cmd_wps_pin }, { "wps_check_pin", hostapd_cli_cmd_wps_check_pin }, { "wps_pbc", hostapd_cli_cmd_wps_pbc }, -@@ -1100,7 +1095,6 @@ static const struct hostapd_cli_cmd host +@@ -1250,7 +1245,6 @@ static const struct hostapd_cli_cmd host { "wps_ap_pin", hostapd_cli_cmd_wps_ap_pin }, { "wps_config", hostapd_cli_cmd_wps_config }, { "wps_get_status", hostapd_cli_cmd_wps_get_status }, diff --git a/package/network/services/hostapd/patches/432-missing-typedef.patch b/package/network/services/hostapd/patches/432-missing-typedef.patch new file mode 100644 index 0000000000..7a100f1a0d --- /dev/null +++ b/package/network/services/hostapd/patches/432-missing-typedef.patch @@ -0,0 +1,10 @@ +--- a/src/drivers/linux_wext.h ++++ b/src/drivers/linux_wext.h +@@ -26,6 +26,7 @@ typedef int32_t __s32; + typedef uint16_t __u16; + typedef int16_t __s16; + typedef uint8_t __u8; ++typedef int8_t __s8; + #ifndef __user + #define __user + #endif /* __user */ diff --git a/package/network/services/hostapd/patches/450-scan_wait.patch b/package/network/services/hostapd/patches/450-scan_wait.patch index 192006a872..78cf3064fa 100644 --- a/package/network/services/hostapd/patches/450-scan_wait.patch +++ b/package/network/services/hostapd/patches/450-scan_wait.patch @@ -33,7 +33,7 @@ /* Initialize the driver interface */ if (!(b[0] | b[1] | b[2] | b[3] | b[4] | b[5])) b = NULL; -@@ -382,8 +394,6 @@ static void hostapd_global_deinit(const +@@ -401,8 +413,6 @@ static void hostapd_global_deinit(const #endif /* CONFIG_NATIVE_WINDOWS */ eap_server_unregister_methods(); @@ -42,19 +42,26 @@ } -@@ -409,11 +419,6 @@ static int hostapd_global_run(struct hap +@@ -428,18 +438,6 @@ static int hostapd_global_run(struct hap } #endif /* EAP_SERVER_TNC */ -- if (daemonize && os_daemonize(pid_file)) { -- wpa_printf(MSG_ERROR, "daemon: %s", strerror(errno)); -- return -1; +- if (daemonize) { +- if (os_daemonize(pid_file)) { +- wpa_printf(MSG_ERROR, "daemon: %s", strerror(errno)); +- return -1; +- } +- if (eloop_sock_requeue()) { +- wpa_printf(MSG_ERROR, "eloop_sock_requeue: %s", +- strerror(errno)); +- return -1; +- } - } - eloop_run(); return 0; -@@ -566,8 +571,7 @@ int main(int argc, char *argv[]) +@@ -638,8 +636,7 @@ int main(int argc, char *argv[]) struct hapd_interfaces interfaces; int ret = 1; size_t i, j; diff --git a/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch b/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch index 426ffc5148..169b17100d 100644 --- a/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch +++ b/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch @@ -18,15 +18,15 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> #define WPA_SUPPLICANT_DRIVER_VERSION 4 -+#include "drivers/nl80211_copy.h" ++#include "ap/sta_info.h" #include "common/defs.h" #include "common/ieee802_11_defs.h" #include "utils/list.h" -@@ -570,6 +571,9 @@ struct wpa_driver_associate_params { +@@ -587,6 +588,9 @@ struct wpa_driver_associate_params { * responsible for selecting with which BSS to associate. */ const u8 *bssid; -+ unsigned char rates[NL80211_MAX_SUPP_RATES]; ++ unsigned char rates[WLAN_SUPP_RATES_MAX]; + int mcast_rate; + /** @@ -38,11 +38,11 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> #include "eap_peer/eap.h" #include "p2p/p2p.h" #include "fst/fst.h" -+#include "drivers/nl80211_copy.h" ++#include "ap/sta_info.h" #include "config.h" -@@ -1742,6 +1743,97 @@ static char * wpa_config_write_mesh_basi +@@ -1816,6 +1817,97 @@ static char * wpa_config_write_mesh_basi #endif /* CONFIG_MESH */ @@ -88,7 +88,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> + pos = (char *)value; + r = strtok_r(pos, ",", &sptr); + i = 0; -+ while (pos && i < NL80211_MAX_SUPP_RATES) { ++ while (pos && i < WLAN_SUPP_RATES_MAX) { + rate = 0.0; + if (r) + rate = strtod(r, &end); @@ -113,11 +113,11 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> + if (ssid->rates[0] <= 0) + return NULL; + -+ value = os_malloc(6 * NL80211_MAX_SUPP_RATES + 1); ++ value = os_malloc(6 * WLAN_SUPP_RATES_MAX + 1); + if (value == NULL) + return NULL; + pos = value; -+ for (i = 0; i < NL80211_MAX_SUPP_RATES - 1; i++) { ++ for (i = 0; i < WLAN_SUPP_RATES_MAX - 1; i++) { + res = os_snprintf(pos, 6, "%.1f,", (double)ssid->rates[i] / 2); + if (res < 0) { + os_free(value); @@ -126,13 +126,13 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> + pos += res; + } + res = os_snprintf(pos, 6, "%.1f", -+ (double)ssid->rates[NL80211_MAX_SUPP_RATES - 1] / 2); ++ (double)ssid->rates[WLAN_SUPP_RATES_MAX - 1] / 2); + if (res < 0) { + os_free(value); + return NULL; + } + -+ value[6 * NL80211_MAX_SUPP_RATES] = '\0'; ++ value[6 * WLAN_SUPP_RATES_MAX] = '\0'; + return value; +} +#endif /* NO_CONFIG_WRITE */ @@ -140,7 +140,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> /* Helper macros for network block parser */ #ifdef OFFSET -@@ -1973,6 +2065,9 @@ static const struct parse_data ssid_fiel +@@ -2047,6 +2139,9 @@ static const struct parse_data ssid_fiel { INT(ap_max_inactivity) }, { INT(dtim_period) }, { INT(beacon_int) }, @@ -152,19 +152,22 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> #endif /* CONFIG_MACSEC */ --- a/wpa_supplicant/config_ssid.h +++ b/wpa_supplicant/config_ssid.h -@@ -12,6 +12,7 @@ +@@ -10,8 +10,10 @@ + #define CONFIG_SSID_H + #include "common/defs.h" ++#include "ap/sta_info.h" #include "utils/list.h" #include "eap_peer/eap_config.h" +#include "drivers/nl80211_copy.h" #define DEFAULT_EAP_WORKAROUND ((unsigned int) -1) -@@ -698,6 +699,9 @@ struct wpa_ssid { +@@ -711,6 +713,9 @@ struct wpa_ssid { */ void *parent_cred; -+ unsigned char rates[NL80211_MAX_SUPP_RATES]; ++ unsigned char rates[WLAN_SUPP_RATES_MAX]; + double mcast_rate; + #ifdef CONFIG_MACSEC @@ -172,13 +175,13 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> * macsec_policy - Determines the policy for MACsec secure session --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -2421,6 +2421,13 @@ static void wpas_start_assoc_cb(struct w +@@ -2510,6 +2510,13 @@ static void wpas_start_assoc_cb(struct w params.beacon_int = ssid->beacon_int; else params.beacon_int = wpa_s->conf->beacon_int; + params.fixed_freq = ssid->fixed_freq; + i = 0; -+ while (i < NL80211_MAX_SUPP_RATES) { ++ while (i < WLAN_SUPP_RATES_MAX) { + params.rates[i] = ssid->rates[i]; + i++; + } diff --git a/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch b/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch index febbd14e21..459bdb944a 100644 --- a/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch +++ b/package/network/services/hostapd/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch @@ -10,7 +10,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -4492,7 +4492,7 @@ static int wpa_driver_nl80211_ibss(struc +@@ -4644,7 +4644,7 @@ static int wpa_driver_nl80211_ibss(struc struct wpa_driver_associate_params *params) { struct nl_msg *msg; @@ -19,7 +19,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org> int count = 0; wpa_printf(MSG_DEBUG, "nl80211: Join IBSS (ifindex=%d)", drv->ifindex); -@@ -4519,6 +4519,37 @@ retry: +@@ -4671,6 +4671,37 @@ retry: nl80211_put_beacon_int(msg, params->beacon_int)) goto fail; diff --git a/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch b/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch index aa2ac197e8..a81465c56f 100644 --- a/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch +++ b/package/network/services/hostapd/patches/462-wpa_s-support-htmode-param.patch @@ -16,9 +16,9 @@ Signed-off-by: Antonio Quartulli <ordex@autistici.org> --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -573,6 +573,8 @@ struct wpa_driver_associate_params { +@@ -590,6 +590,8 @@ struct wpa_driver_associate_params { - unsigned char rates[NL80211_MAX_SUPP_RATES]; + unsigned char rates[WLAN_SUPP_RATES_MAX]; int mcast_rate; + int ht_set; + unsigned int htmode; @@ -27,7 +27,7 @@ Signed-off-by: Antonio Quartulli <ordex@autistici.org> * bssid_hint - BSSID of a proposed AP --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -4550,6 +4550,22 @@ retry: +@@ -4702,6 +4702,22 @@ retry: nla_put_u32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate); } @@ -52,7 +52,7 @@ Signed-off-by: Antonio Quartulli <ordex@autistici.org> goto fail; --- a/wpa_supplicant/config.c +++ b/wpa_supplicant/config.c -@@ -1774,6 +1774,71 @@ static char * wpa_config_write_mcast_rat +@@ -1848,6 +1848,71 @@ static char * wpa_config_write_mcast_rat } #endif /* NO_CONFIG_WRITE */ @@ -124,7 +124,7 @@ Signed-off-by: Antonio Quartulli <ordex@autistici.org> static int wpa_config_parse_rates(const struct parse_data *data, struct wpa_ssid *ssid, int line, const char *value) -@@ -2068,6 +2133,7 @@ static const struct parse_data ssid_fiel +@@ -2142,6 +2207,7 @@ static const struct parse_data ssid_fiel { INT_RANGE(fixed_freq, 0, 1) }, { FUNC(rates) }, { FUNC(mcast_rate) }, @@ -134,9 +134,9 @@ Signed-off-by: Antonio Quartulli <ordex@autistici.org> #endif /* CONFIG_MACSEC */ --- a/wpa_supplicant/config_ssid.h +++ b/wpa_supplicant/config_ssid.h -@@ -701,6 +701,8 @@ struct wpa_ssid { +@@ -715,6 +715,8 @@ struct wpa_ssid { - unsigned char rates[NL80211_MAX_SUPP_RATES]; + unsigned char rates[WLAN_SUPP_RATES_MAX]; double mcast_rate; + int ht_set; + unsigned int htmode; @@ -145,7 +145,7 @@ Signed-off-by: Antonio Quartulli <ordex@autistici.org> /** --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -2428,6 +2428,8 @@ static void wpas_start_assoc_cb(struct w +@@ -2517,6 +2517,8 @@ static void wpas_start_assoc_cb(struct w i++; } params.mcast_rate = ssid->mcast_rate; diff --git a/package/network/services/hostapd/patches/470-survey_data_fallback.patch b/package/network/services/hostapd/patches/470-survey_data_fallback.patch new file mode 100644 index 0000000000..4e40a87558 --- /dev/null +++ b/package/network/services/hostapd/patches/470-survey_data_fallback.patch @@ -0,0 +1,45 @@ +--- a/src/ap/acs.c ++++ b/src/ap/acs.c +@@ -292,18 +292,12 @@ static void acs_fail(struct hostapd_ifac + static long double + acs_survey_interference_factor(struct freq_survey *survey, s8 min_nf) + { +- long double factor, busy, total; ++ long double factor, busy = 0, total; + + if (survey->filled & SURVEY_HAS_CHAN_TIME_BUSY) + busy = survey->channel_time_busy; + else if (survey->filled & SURVEY_HAS_CHAN_TIME_RX) + busy = survey->channel_time_rx; +- else { +- /* This shouldn't really happen as survey data is checked in +- * acs_sanity_check() */ +- wpa_printf(MSG_ERROR, "ACS: Survey data missing"); +- return 0; +- } + + total = survey->channel_time; + +@@ -395,20 +389,19 @@ static int acs_usable_vht80_chan(struct + static int acs_survey_is_sufficient(struct freq_survey *survey) + { + if (!(survey->filled & SURVEY_HAS_NF)) { ++ survey->nf = -95; + wpa_printf(MSG_INFO, "ACS: Survey is missing noise floor"); +- return 0; + } + + if (!(survey->filled & SURVEY_HAS_CHAN_TIME)) { ++ survey->channel_time = 0; + wpa_printf(MSG_INFO, "ACS: Survey is missing channel time"); +- return 0; + } + + if (!(survey->filled & SURVEY_HAS_CHAN_TIME_BUSY) && + !(survey->filled & SURVEY_HAS_CHAN_TIME_RX)) { + wpa_printf(MSG_INFO, + "ACS: Survey is missing RX and busy time (at least one is required)"); +- return 0; + } + + return 1; diff --git a/package/network/services/hostapd/patches/600-ubus_support.patch b/package/network/services/hostapd/patches/600-ubus_support.patch index d5767259b6..feacdf2c08 100644 --- a/package/network/services/hostapd/patches/600-ubus_support.patch +++ b/package/network/services/hostapd/patches/600-ubus_support.patch @@ -1,6 +1,6 @@ --- a/hostapd/Makefile +++ b/hostapd/Makefile -@@ -155,6 +155,11 @@ OBJS += ../src/common/hw_features_common +@@ -157,6 +157,11 @@ OBJS += ../src/common/hw_features_common OBJS += ../src/eapol_auth/eapol_auth_sm.o @@ -22,7 +22,7 @@ struct wpa_ctrl_dst; struct radius_server_data; -@@ -107,6 +108,7 @@ struct hostapd_data { +@@ -118,6 +119,7 @@ struct hostapd_data { struct hostapd_iface *iface; struct hostapd_config *iconf; struct hostapd_bss_config *conf; @@ -30,7 +30,7 @@ int interface_added; /* virtual interface added for this BSS */ unsigned int started:1; unsigned int disabled:1; -@@ -299,6 +301,8 @@ struct hostapd_iface { +@@ -323,6 +325,8 @@ struct hostapd_iface { struct hostapd_config *conf; char phy[16]; /* Name of the PHY (radio) */ @@ -661,7 +661,7 @@ +#endif --- a/src/ap/hostapd.c +++ b/src/ap/hostapd.c -@@ -280,6 +280,7 @@ static void hostapd_free_hapd_data(struc +@@ -284,6 +284,7 @@ static void hostapd_free_hapd_data(struc hapd->started = 0; wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface); @@ -669,7 +669,7 @@ iapp_deinit(hapd->iapp); hapd->iapp = NULL; accounting_deinit(hapd); -@@ -1118,6 +1119,8 @@ static int hostapd_setup_bss(struct host +@@ -1139,6 +1140,8 @@ static int hostapd_setup_bss(struct host if (hapd->driver && hapd->driver->set_operstate) hapd->driver->set_operstate(hapd->drv_priv, 1); @@ -678,7 +678,7 @@ return 0; } -@@ -1523,6 +1526,7 @@ static int hostapd_setup_interface_compl +@@ -1664,6 +1667,7 @@ static int hostapd_setup_interface_compl if (err) goto fail; @@ -686,7 +686,7 @@ wpa_printf(MSG_DEBUG, "Completing interface initialization"); if (iface->conf->channel) { #ifdef NEED_AP_MLME -@@ -1700,6 +1704,7 @@ dfs_offload: +@@ -1844,6 +1848,7 @@ dfs_offload: fail: wpa_printf(MSG_ERROR, "Interface initialization failed"); @@ -694,7 +694,7 @@ hostapd_set_state(iface, HAPD_IFACE_DISABLED); wpa_msg(hapd->msg_ctx, MSG_INFO, AP_EVENT_DISABLED); #ifdef CONFIG_FST -@@ -2125,6 +2130,7 @@ void hostapd_interface_deinit_free(struc +@@ -2277,6 +2282,7 @@ void hostapd_interface_deinit_free(struc (unsigned int) iface->conf->num_bss); driver = iface->bss[0]->driver; drv_priv = iface->bss[0]->drv_priv; @@ -704,7 +704,7 @@ __func__, driver, drv_priv); --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c -@@ -877,7 +877,8 @@ int auth_sae_init_committed(struct hosta +@@ -980,7 +980,8 @@ int auth_sae_init_committed(struct hosta static void handle_auth(struct hostapd_data *hapd, @@ -714,7 +714,7 @@ { u16 auth_alg, auth_transaction, status_code; u16 resp = WLAN_STATUS_SUCCESS; -@@ -893,6 +894,11 @@ static void handle_auth(struct hostapd_d +@@ -996,6 +997,11 @@ static void handle_auth(struct hostapd_d char *identity = NULL; char *radius_cui = NULL; u16 seq_ctrl; @@ -724,9 +724,9 @@ + .frame_info = fi, + }; - if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.auth)) { - wpa_printf(MSG_INFO, "handle_auth - too short payload (len=%lu)", -@@ -1044,6 +1050,14 @@ static void handle_auth(struct hostapd_d + os_memset(&vlan_id, 0, sizeof(vlan_id)); + +@@ -1149,6 +1155,14 @@ static void handle_auth(struct hostapd_d resp = WLAN_STATUS_UNSPECIFIED_FAILURE; goto fail; } @@ -741,7 +741,7 @@ if (res == HOSTAPD_ACL_PENDING) { wpa_printf(MSG_DEBUG, "Authentication frame from " MACSTR " waiting for an external authentication", -@@ -1776,13 +1790,18 @@ static void send_assoc_resp(struct hosta +@@ -2033,13 +2047,18 @@ static u16 send_assoc_resp(struct hostap static void handle_assoc(struct hostapd_data *hapd, const struct ieee80211_mgmt *mgmt, size_t len, @@ -749,7 +749,7 @@ + int reassoc, struct hostapd_frame_info *fi) { u16 capab_info, listen_interval, seq_ctrl, fc; - u16 resp = WLAN_STATUS_SUCCESS; + u16 resp = WLAN_STATUS_SUCCESS, reply_res; const u8 *pos; int left, i; struct sta_info *sta; @@ -761,9 +761,9 @@ if (len < IEEE80211_HDRLEN + (reassoc ? sizeof(mgmt->u.reassoc_req) : sizeof(mgmt->u.assoc_req))) { -@@ -1902,6 +1921,13 @@ static void handle_assoc(struct hostapd_ - goto fail; +@@ -2159,6 +2178,13 @@ static void handle_assoc(struct hostapd_ } + #endif /* CONFIG_MBO */ + if (hostapd_ubus_handle_event(hapd, &req)) { + wpa_printf(MSG_DEBUG, "Station " MACSTR " assoc rejected by ubus handler.\n", @@ -772,10 +772,10 @@ + goto fail; + } + - sta->capability = capab_info; - sta->listen_interval = listen_interval; - -@@ -2328,7 +2354,7 @@ int ieee802_11_mgmt(struct hostapd_data + /* + * sta->capability is used in check_assoc_ies() for RRM enabled + * capability element. +@@ -2639,7 +2665,7 @@ int ieee802_11_mgmt(struct hostapd_data if (stype == WLAN_FC_STYPE_PROBE_REQ) { @@ -784,7 +784,7 @@ return 1; } -@@ -2346,17 +2372,17 @@ int ieee802_11_mgmt(struct hostapd_data +@@ -2657,17 +2683,17 @@ int ieee802_11_mgmt(struct hostapd_data switch (stype) { case WLAN_FC_STYPE_AUTH: wpa_printf(MSG_DEBUG, "mgmt::auth"); @@ -807,7 +807,7 @@ case WLAN_FC_STYPE_DISASSOC: --- a/src/ap/beacon.c +++ b/src/ap/beacon.c -@@ -667,7 +667,7 @@ sta_track_seen_on(struct hostapd_iface * +@@ -675,7 +675,7 @@ sta_track_seen_on(struct hostapd_iface * void handle_probe_req(struct hostapd_data *hapd, const struct ieee80211_mgmt *mgmt, size_t len, @@ -816,7 +816,7 @@ { u8 *resp; struct ieee802_11_elems elems; -@@ -676,9 +676,15 @@ void handle_probe_req(struct hostapd_dat +@@ -684,9 +684,15 @@ void handle_probe_req(struct hostapd_dat size_t i, resp_len; int noack; enum ssid_match_result res; @@ -830,9 +830,9 @@ + .frame_info = fi, + }; - ie = mgmt->u.probe_req.variable; - if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.probe_req)) -@@ -830,6 +836,12 @@ void handle_probe_req(struct hostapd_dat + if (len < IEEE80211_HDRLEN) + return; +@@ -838,6 +844,12 @@ void handle_probe_req(struct hostapd_dat } #endif /* CONFIG_P2P */ @@ -858,7 +858,7 @@ int ieee802_11_update_beacons(struct hostapd_iface *iface); --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c -@@ -51,6 +51,10 @@ int hostapd_notif_assoc(struct hostapd_d +@@ -52,6 +52,10 @@ int hostapd_notif_assoc(struct hostapd_d u16 reason = WLAN_REASON_UNSPECIFIED; u16 status = WLAN_STATUS_SUCCESS; const u8 *p2p_dev_addr = NULL; @@ -869,7 +869,7 @@ if (addr == NULL) { /* -@@ -123,6 +127,12 @@ int hostapd_notif_assoc(struct hostapd_d +@@ -124,6 +128,12 @@ int hostapd_notif_assoc(struct hostapd_d goto fail; } diff --git a/package/system/mtd/src/Makefile b/package/system/mtd/src/Makefile index 94a2a1a3ac..70c61e58ae 100644 --- a/package/system/mtd/src/Makefile +++ b/package/system/mtd/src/Makefile @@ -12,6 +12,7 @@ obj.brcm63xx = imagetag.o obj.ramips = $(obj.seama) obj.mvebu = linksys_bootcount.o obj.kirkwood = linksys_bootcount.o +obj.ipq806x = linksys_bootcount.o ifdef FIS_SUPPORT obj += fis.o diff --git a/package/utils/e2fsprogs/Makefile b/package/utils/e2fsprogs/Makefile index e90a752080..9da52d8a2c 100644 --- a/package/utils/e2fsprogs/Makefile +++ b/package/utils/e2fsprogs/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=e2fsprogs -PKG_VERSION:=1.42.13 -PKG_MD5SUM:=bc759fc62666786f5436e2075beb3265 +PKG_VERSION:=1.43.1 +PKG_MD5SUM:=1775f3f0eed9dee1c5f39e08d1964a97 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz |