Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48461b5abc |
@@ -9,16 +9,15 @@ menu "Global build settings"
|
||||
|
||||
config ALL_NONSHARED
|
||||
bool "Select all target specific packages by default"
|
||||
select ALL_KMODS
|
||||
default BUILDBOT
|
||||
default ALL || BUILDBOT
|
||||
|
||||
config ALL_KMODS
|
||||
bool "Select all kernel module packages by default"
|
||||
default ALL
|
||||
|
||||
config ALL
|
||||
bool "Select all userspace packages by default"
|
||||
select ALL_KMODS
|
||||
select ALL_NONSHARED
|
||||
default n
|
||||
|
||||
config BUILDBOT
|
||||
bool "Set build defaults for automatic builds (e.g. via buildbot)"
|
||||
|
||||
@@ -203,11 +203,6 @@ menu "Target Images"
|
||||
default 38400 if TARGET_x86_generic
|
||||
default 115200
|
||||
|
||||
config GRUB_FLOWCONTROL
|
||||
bool "Use RTE/CTS on serial console"
|
||||
depends on GRUB_SERIAL != ""
|
||||
default n
|
||||
|
||||
config GRUB_BOOTOPTS
|
||||
string "Extra kernel boot options"
|
||||
depends on GRUB_IMAGES
|
||||
|
||||
@@ -170,6 +170,10 @@ config KERNEL_AIO
|
||||
bool "Compile the kernel with asynchronous IO support"
|
||||
default n
|
||||
|
||||
config KERNEL_DIRECT_IO
|
||||
bool "Compile the kernel with direct IO support"
|
||||
default n
|
||||
|
||||
config KERNEL_FHANDLE
|
||||
bool "Compile the kernel with support for fhandle syscalls"
|
||||
default n
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
src-git packages https://git.lede-project.org/feed/packages.git^40da7ecf21ffe1f3523ffa430c406e1db58ce3d4
|
||||
src-git luci https://git.lede-project.org/project/luci.git^7bf036750081787e01339c82865ad45fca6520ef
|
||||
src-git routing https://git.lede-project.org/feed/routing.git^d09478290f72c6e58833b65baf14d9173eaf98e1
|
||||
src-git telephony https://git.lede-project.org/feed/telephony.git^95498e75db5c6741cd53f8746ffc1473c72b6e5d
|
||||
src-git packages https://git.lede-project.org/feed/packages.git^f9e99848182fc7bc554e541ca133c22079d4041b
|
||||
src-git luci https://git.lede-project.org/project/luci.git^29fabe26399fbaecf9231e24f9ac1ee5773cafa6
|
||||
src-git routing https://git.lede-project.org/feed/routing.git^04a37ef4309c2b67c64901eb8fbf3800b4c7bb35
|
||||
src-git telephony https://git.lede-project.org/feed/telephony.git^1f0fb2538ba6fc306198fe2a9a4b976d63adb304
|
||||
|
||||
@@ -6,10 +6,8 @@
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
PROJECT_GIT = https://git.openwrt.org
|
||||
|
||||
OPENWRT_GIT = $(PROJECT_GIT)
|
||||
LEDE_GIT = $(PROJECT_GIT)
|
||||
OPENWRT_GIT = http://git.openwrt.org
|
||||
LEDE_GIT = https://git.lede-project.org
|
||||
|
||||
ifdef PKG_SOURCE_VERSION
|
||||
PKG_VERSION ?= $(if $(PKG_SOURCE_DATE),$(PKG_SOURCE_DATE)-)$(call version_abbrev,$(PKG_SOURCE_VERSION))
|
||||
@@ -105,7 +103,7 @@ hash_var = $(if $(filter-out x,$(1)),MD5SUM,HASH)
|
||||
endif
|
||||
|
||||
define DownloadMethod/unknown
|
||||
echo "ERROR: No download method available"; false
|
||||
@echo "ERROR: No download method available"; false
|
||||
endef
|
||||
|
||||
define DownloadMethod/default
|
||||
|
||||
@@ -22,7 +22,6 @@ endif
|
||||
include $(INCLUDE_DIR)/host.mk
|
||||
include $(INCLUDE_DIR)/unpack.mk
|
||||
include $(INCLUDE_DIR)/depends.mk
|
||||
include $(INCLUDE_DIR)/quilt.mk
|
||||
|
||||
BUILD_TYPES += host
|
||||
HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared$(if $(HOST_QUILT)$(DUMP),,$(shell $(call find_md5,${CURDIR} $(PKG_FILE_DEPENDS),)))
|
||||
@@ -33,6 +32,7 @@ HOST_STAMP_INSTALLED:=$(HOST_BUILD_PREFIX)/stamp/.$(PKG_NAME)_installed
|
||||
|
||||
override MAKEFLAGS=
|
||||
|
||||
include $(INCLUDE_DIR)/quilt.mk
|
||||
include $(INCLUDE_DIR)/autotools.mk
|
||||
|
||||
Host/Patch:=$(Host/Patch/Default)
|
||||
@@ -77,10 +77,6 @@ HOST_MAKE_FLAGS =
|
||||
|
||||
HOST_CONFIGURE_CMD = $(BASH) ./configure
|
||||
|
||||
ifeq ($(HOST_OS),Darwin)
|
||||
HOST_CONFIG_SITE:=$(INCLUDE_DIR)/site/darwin
|
||||
endif
|
||||
|
||||
define Host/Configure/Default
|
||||
$(if $(HOST_CONFIGURE_PARALLEL),+)(cd $(HOST_BUILD_DIR)/$(3); \
|
||||
if [ -x configure ]; then \
|
||||
@@ -110,7 +106,7 @@ define Host/Compile
|
||||
endef
|
||||
|
||||
define Host/Install/Default
|
||||
$(call Host/Compile/Default,install)
|
||||
$(_SINGLE)$(MAKE) -C $(HOST_BUILD_DIR) install
|
||||
endef
|
||||
|
||||
define Host/Install
|
||||
@@ -131,7 +127,6 @@ define Host/Exports/Default
|
||||
$(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
||||
$(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig
|
||||
$(1) : export CCACHE_DIR:=$(STAGING_DIR_HOST)/ccache
|
||||
$(if $(HOST_CONFIG_SITE),$(1) : export CONFIG_SITE:=$(HOST_CONFIG_SITE))
|
||||
$(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG))
|
||||
endef
|
||||
Host/Exports=$(Host/Exports/Default)
|
||||
|
||||
@@ -41,6 +41,11 @@ $(TMP_DIR)/.host.mk: $(TOPDIR)/include/host.mk
|
||||
echo "HOST_OS:=$$HOST_OS" > $@; \
|
||||
echo "HOST_ARCH:=$$HOST_ARCH" >> $@; \
|
||||
echo "GNU_HOST_NAME:=$$GNU_HOST_NAME" >> $@; \
|
||||
if gfind -L /dev/null || find -L /dev/null; then \
|
||||
echo "FIND_L=find -L \$$(1)" >> $@; \
|
||||
else \
|
||||
echo "FIND_L=find \$$(1) -follow" >> $@; \
|
||||
fi \
|
||||
) >/dev/null 2>/dev/null
|
||||
|
||||
endif
|
||||
|
||||
@@ -8,7 +8,7 @@ define Build/uImage
|
||||
-O linux -T kernel \
|
||||
-C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
||||
-n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) LEDE Linux-$(LINUX_VERSION))' -d $@ $@.new
|
||||
mv $@.new $@
|
||||
@mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/netgear-chk
|
||||
|
||||
@@ -48,7 +48,6 @@ endef
|
||||
ifdef TARGET_PER_DEVICE_ROOTFS
|
||||
define Image/Build/Profile/Filesystem
|
||||
cp $(KDIR)/root.$(2)+pkg=$(3) $(KDIR)/root.$(2)
|
||||
$(call Image/Build/$(2),$(2))
|
||||
$(call Image/Build/Profile,$(1),$(2))
|
||||
endef
|
||||
else
|
||||
|
||||
@@ -277,7 +277,7 @@ endif
|
||||
|
||||
ifdef CONFIG_TARGET_ROOTFS_CPIOGZ
|
||||
define Image/Build/cpiogz
|
||||
( cd $(TARGET_DIR); find . | cpio -o -H newc -R root:root | gzip -9n >$(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz )
|
||||
( cd $(TARGET_DIR); find . | cpio -o -H newc | gzip -9n >$(BIN_DIR)/$(IMG_PREFIX)-rootfs.cpio.gz )
|
||||
endef
|
||||
endif
|
||||
|
||||
@@ -302,9 +302,9 @@ target-dir-%: FORCE
|
||||
$(opkg_target) update && \
|
||||
$(opkg_target) install \
|
||||
$(call opkg_package_files,$(mkfs_packages_add)))
|
||||
-$(CP) -T $(mkfs_cur_target_dir).opkg/ $(mkfs_cur_target_dir)/etc/opkg/
|
||||
rm -rf $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir).conf
|
||||
$(call prepare_rootfs,$(mkfs_cur_target_dir))
|
||||
-mv $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir)/etc/opkg
|
||||
rm -f $(mkfs_cur_target_dir).conf
|
||||
|
||||
$(KDIR)/root.%: kernel_prepare
|
||||
$(call Image/mkfs/$(word 1,$(target_params)),$(target_params))
|
||||
|
||||
@@ -152,7 +152,7 @@ define BuildKernel
|
||||
endef
|
||||
|
||||
download: $(if $(LINUX_SITE),$(DL_DIR)/$(LINUX_SOURCE))
|
||||
prepare: $(STAMP_PREPARED)
|
||||
prepare: $(STAMP_CONFIGURED)
|
||||
compile: $(LINUX_DIR)/.modules
|
||||
$(MAKE) -C image compile TARGET_BUILD=
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ endef
|
||||
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
|
||||
define Kernel/CompileImage/Initramfs
|
||||
$(call Kernel/Configure/Initramfs)
|
||||
$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(TARGET_DIR)/init
|
||||
$(CP) $(GENERIC_PLATFORM_DIR)/base-files/init $(TARGET_DIR)/init
|
||||
rm -rf $(KERNEL_BUILD_DIR)/linux-$(LINUX_VERSION)/usr/initramfs_data.cpio*
|
||||
+$(MAKE) $(KERNEL_MAKEOPTS) $(if $(KERNELNAME),$(KERNELNAME),all) modules
|
||||
$(call Kernel/CopyImage,-initramfs)
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-3.18 = .43
|
||||
LINUX_VERSION-4.4 = .153
|
||||
LINUX_VERSION-4.4 = .61
|
||||
|
||||
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
|
||||
LINUX_KERNEL_HASH-4.4.153 = 0f2355515c22ca705600043bedc75218c68dcb8ab528f57f67851fbcb8545402
|
||||
LINUX_KERNEL_HASH-4.4.61 = 30dee7164615ad8184eba4ea6f4906b3ceb2fe462a8a4a929c8e9aab8d4a31da
|
||||
|
||||
ifdef KERNEL_PATCHVER
|
||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
||||
|
||||
@@ -95,16 +95,15 @@ define ModuleAutoLoad
|
||||
$(SH_FUNC) \
|
||||
export modules=; \
|
||||
probe_module() { \
|
||||
local mods="$$$$$$$$1"; \
|
||||
local boot="$$$$$$$$2"; \
|
||||
local mod; \
|
||||
mods="$$$$$$$$1"; \
|
||||
boot="$$$$$$$$2"; \
|
||||
shift 2; \
|
||||
for mod in $$$$$$$$mods; do \
|
||||
for mod in $(sort $$$$$$$$mods); do \
|
||||
mkdir -p $(2)/etc/modules.d; \
|
||||
echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$(1); \
|
||||
done; \
|
||||
if [ -e $(2)/etc/modules.d/$(1) ]; then \
|
||||
if [ "$$$$$$$$boot" = "1" -a ! -e $(2)/etc/modules-boot.d/$(1) ]; then \
|
||||
if [ "$$$$$$$$boot" = "1" ]; then \
|
||||
mkdir -p $(2)/etc/modules-boot.d; \
|
||||
ln -s ../modules.d/$(1) $(2)/etc/modules-boot.d/; \
|
||||
fi; \
|
||||
@@ -112,17 +111,16 @@ define ModuleAutoLoad
|
||||
fi; \
|
||||
}; \
|
||||
add_module() { \
|
||||
local priority="$$$$$$$$1"; \
|
||||
local mods="$$$$$$$$2"; \
|
||||
local boot="$$$$$$$$3"; \
|
||||
local mod; \
|
||||
priority="$$$$$$$$1"; \
|
||||
mods="$$$$$$$$2"; \
|
||||
boot="$$$$$$$$3"; \
|
||||
shift 3; \
|
||||
for mod in $$$$$$$$mods; do \
|
||||
for mod in $(sort $$$$$$$$mods); do \
|
||||
mkdir -p $(2)/etc/modules.d; \
|
||||
echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$$$$$$$$priority-$(1); \
|
||||
done; \
|
||||
if [ -e $(2)/etc/modules.d/$$$$$$$$priority-$(1) ]; then \
|
||||
if [ "$$$$$$$$boot" = "1" -a ! -e $(2)/etc/modules-boot.d/$$$$$$$$priority-$(1) ]; then \
|
||||
if [ "$$$$$$$$boot" = "1" ]; then \
|
||||
mkdir -p $(2)/etc/modules-boot.d; \
|
||||
ln -s ../modules.d/$$$$$$$$priority-$(1) $(2)/etc/modules-boot.d/; \
|
||||
fi; \
|
||||
@@ -131,7 +129,6 @@ define ModuleAutoLoad
|
||||
}; \
|
||||
$(3) \
|
||||
if [ -n "$$$$$$$$modules" ]; then \
|
||||
modules="$$$$$$$$(echo "$$$$$$$$modules" | tr ' ' '\n' | sort | uniq | paste -s -d' ' -)"; \
|
||||
mkdir -p $(2)/etc/modules.d; \
|
||||
mkdir -p $(2)/CONTROL; \
|
||||
echo "#!/bin/sh" > $(2)/CONTROL/postinst-pkg; \
|
||||
|
||||
@@ -106,8 +106,6 @@ $(eval $(call nf_add,IPT_FILTER,CONFIG_NETFILTER_XT_MATCH_STRING, $(P_XT)xt_stri
|
||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_DSCP, $(P_XT)xt_dscp))
|
||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_TARGET_DSCP, $(P_XT)xt_DSCP))
|
||||
$(eval $(call nf_add,IPT_HASHLIMIT,CONFIG_NETFILTER_XT_MATCH_HASHLIMIT, $(P_XT)xt_hashlimit))
|
||||
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP_NF_MATCH_RPFILTER, $(P_V4)ipt_rpfilter))
|
||||
$(eval $(call nf_add,IPT_RPFILTER,CONFIG_IP6_NF_MATCH_RPFILTER, $(P_V6)ip6t_rpfilter))
|
||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_LENGTH, $(P_XT)xt_length))
|
||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_STATISTIC, $(P_XT)xt_statistic))
|
||||
$(eval $(call nf_add,IPT_IPOPT,CONFIG_NETFILTER_XT_MATCH_TCPMSS, $(P_XT)xt_tcpmss))
|
||||
@@ -362,6 +360,7 @@ IPT_BUILTIN += $(IPT_NAT_EXTRA-y)
|
||||
IPT_BUILTIN += $(NF_NATHELPER-y)
|
||||
IPT_BUILTIN += $(NF_NATHELPER_EXTRA-y)
|
||||
IPT_BUILTIN += $(IPT_ULOG-y)
|
||||
IPT_BUILTIN += $(IPT_DEBUG-y)
|
||||
IPT_BUILTIN += $(IPT_TPROXY-y)
|
||||
IPT_BUILTIN += $(NFNETLINK-y)
|
||||
IPT_BUILTIN += $(NFNETLINK_LOG-y)
|
||||
|
||||
@@ -62,7 +62,7 @@ Build/Patch:=$(Build/Patch/Default)
|
||||
ifneq ($(strip $(PKG_UNPACK)),)
|
||||
define Build/Prepare/Default
|
||||
$(PKG_UNPACK)
|
||||
[ ! -d ./src/ ] || $(CP) ./src/. $(PKG_BUILD_DIR)
|
||||
[ ! -d ./src/ ] || $(CP) ./src/* $(PKG_BUILD_DIR)
|
||||
$(Build/Patch)
|
||||
endef
|
||||
endif
|
||||
@@ -92,6 +92,7 @@ CONFIGURE_ARGS = \
|
||||
--mandir=$(CONFIGURE_PREFIX)/man \
|
||||
--infodir=$(CONFIGURE_PREFIX)/info \
|
||||
$(DISABLE_NLS) \
|
||||
$(DISABLE_LARGEFILE) \
|
||||
$(DISABLE_IPV6)
|
||||
|
||||
CONFIGURE_VARS = \
|
||||
|
||||
@@ -196,7 +196,7 @@ $(_endef)
|
||||
fi; \
|
||||
done; $(Package/$(1)/extra_provides) \
|
||||
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
|
||||
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
|
||||
$(if $(PROVIDES),@for pkg in $(PROVIDES); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
|
||||
$(CheckDependencies)
|
||||
|
||||
$(RSTRIP) $$(IDIR_$(1))
|
||||
|
||||
@@ -40,7 +40,6 @@ include $(INCLUDE_DIR)/prereq.mk
|
||||
include $(INCLUDE_DIR)/host.mk
|
||||
include $(INCLUDE_DIR)/unpack.mk
|
||||
include $(INCLUDE_DIR)/depends.mk
|
||||
include $(INCLUDE_DIR)/quilt.mk
|
||||
|
||||
find_library_dependencies = $(wildcard $(patsubst %,$(STAGING_DIR)/pkginfo/%.version, \
|
||||
$(filter-out $(BUILD_PACKAGES),$(foreach dep, \
|
||||
@@ -90,6 +89,7 @@ endif
|
||||
|
||||
PKG_INSTALL_STAMP:=$(PKG_INFO_DIR)/$(PKG_DIR_NAME).$(if $(BUILD_VARIANT),$(BUILD_VARIANT),default).install
|
||||
|
||||
include $(INCLUDE_DIR)/quilt.mk
|
||||
include $(INCLUDE_DIR)/package-defaults.mk
|
||||
include $(INCLUDE_DIR)/package-dumpinfo.mk
|
||||
include $(INCLUDE_DIR)/package-ipkg.mk
|
||||
|
||||
@@ -49,15 +49,8 @@ TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
|
||||
|
||||
ifdef CONFIG_CLEAN_IPKG
|
||||
define clean_ipkg
|
||||
-find $(1)/usr/lib/opkg/info -type f -and -not -name '*.control' | $(XARGS) rm -rf
|
||||
-find $(1)/usr/lib/opkg -type f -and -not -name '*.control' | $(XARGS) rm -rf
|
||||
-sed -i -ne '/^Require-User: /p' $(1)/usr/lib/opkg/info/*.control
|
||||
awk ' \
|
||||
BEGIN { conffiles = 0; print "Conffiles:" } \
|
||||
/^Conffiles:/ { conffiles = 1; next } \
|
||||
!/^ / { conffiles = 0; next } \
|
||||
conffiles == 1 { print } \
|
||||
' $(1)/usr/lib/opkg/status >$(1)/usr/lib/opkg/status.new
|
||||
mv $(1)/usr/lib/opkg/status.new $(1)/usr/lib/opkg/status
|
||||
-find $(1)/usr/lib/opkg -empty | $(XARGS) rm -rf
|
||||
endef
|
||||
endif
|
||||
@@ -89,6 +82,7 @@ define prepare_rootfs
|
||||
@-find $(1) -name '.#*' | $(XARGS) rm -f
|
||||
rm -f $(1)/usr/lib/opkg/lists/*
|
||||
rm -f $(1)/usr/lib/opkg/info/*.postinst*
|
||||
rm -f $(1)/usr/lib/opkg/info/*.prerm*
|
||||
$(call clean_ipkg,$(1))
|
||||
$(call mklibs,$(1))
|
||||
endef
|
||||
|
||||
@@ -56,7 +56,7 @@ endif
|
||||
|
||||
$(FILELIST): $(OVERRIDELIST)
|
||||
rm -f $(TMP_DIR)/info/.files-$(SCAN_TARGET)-*
|
||||
find -L $(SCAN_DIR) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f include/scan.awk > $@
|
||||
$(call FIND_L, $(SCAN_DIR)) $(SCAN_EXTRA) -mindepth 1 $(if $(SCAN_DEPTH),-maxdepth $(SCAN_DEPTH)) -name Makefile | xargs grep -aHE 'call $(GREP_STRING)' | sed -e 's#^$(SCAN_DIR)/##' -e 's#/Makefile:.*##' | uniq | awk -v of=$(OVERRIDELIST) -f include/scan.awk > $@
|
||||
|
||||
$(TMP_DIR)/info/.files-$(SCAN_TARGET).mk: $(FILELIST)
|
||||
( \
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
ac_cv_func_futimens=no
|
||||
ac_cv_func_utimensat=no
|
||||
@@ -218,11 +218,6 @@ ifeq ($(DUMP),1)
|
||||
CPU_CFLAGS_arc700 = -marc700
|
||||
CPU_CFLAGS_archs = -marchs
|
||||
endif
|
||||
ifneq ($(CPU_TYPE),)
|
||||
ifndef CPU_CFLAGS_$(CPU_TYPE)
|
||||
$(warning CPU_TYPE "$(CPU_TYPE)" doesn't correspond to a known type)
|
||||
endif
|
||||
endif
|
||||
DEFAULT_CFLAGS=$(strip $(CPU_CFLAGS) $(CPU_CFLAGS_$(CPU_TYPE)) $(CPU_CFLAGS_$(CPU_SUBTYPE)))
|
||||
|
||||
ifneq ($(BOARD),)
|
||||
|
||||
@@ -23,7 +23,6 @@ HOSTCC ?= $(CC)
|
||||
export REVISION
|
||||
export SOURCE_DATE_EPOCH
|
||||
export GIT_CONFIG_PARAMETERS='core.autocrlf=false'
|
||||
export GIT_ASKPASS:=/bin/true
|
||||
export MAKE_JOBSERVER=$(filter --jobserver%,$(MAKEFLAGS))
|
||||
|
||||
# prevent perforce from messing with the patch utility
|
||||
@@ -105,8 +104,7 @@ scripts/config/conf:
|
||||
@$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC_WRAPPER)"
|
||||
|
||||
config: scripts/config/conf prepare-tmpinfo FORCE
|
||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
||||
$< Config.in
|
||||
$< Config.in
|
||||
|
||||
config-clean: FORCE
|
||||
$(_SINGLE)$(NO_TRACE_MAKE) -C scripts/config clean
|
||||
@@ -114,8 +112,7 @@ config-clean: FORCE
|
||||
defconfig: scripts/config/conf prepare-tmpinfo FORCE
|
||||
touch .config
|
||||
@if [ ! -s .config -a -e $(HOME)/.openwrt/defconfig ]; then cp $(HOME)/.openwrt/defconfig .config; fi
|
||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
||||
$< --defconfig=.config Config.in
|
||||
$< --defconfig=.config Config.in
|
||||
|
||||
confdefault-y=allyes
|
||||
confdefault-m=allmod
|
||||
@@ -123,15 +120,13 @@ confdefault-n=allno
|
||||
confdefault:=$(confdefault-$(CONFDEFAULT))
|
||||
|
||||
oldconfig: scripts/config/conf prepare-tmpinfo FORCE
|
||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
||||
$< --$(if $(confdefault),$(confdefault),old)config Config.in
|
||||
$< --$(if $(confdefault),$(confdefault),old)config Config.in
|
||||
|
||||
menuconfig: scripts/config/mconf prepare-tmpinfo FORCE
|
||||
if [ \! -e .config -a -e $(HOME)/.openwrt/defconfig ]; then \
|
||||
cp $(HOME)/.openwrt/defconfig .config; \
|
||||
fi
|
||||
[ -L .config ] && export KCONFIG_OVERWRITECONFIG=1; \
|
||||
$< Config.in
|
||||
$< Config.in
|
||||
|
||||
prepare_kernel_conf: .config FORCE
|
||||
|
||||
@@ -175,7 +170,7 @@ else
|
||||
DOWNLOAD_DIRS = package/download
|
||||
endif
|
||||
|
||||
download: .config FORCE $(if $(wildcard $(TOPDIR)/staging_dir/host/bin/flock),,tools/flock/compile)
|
||||
download: .config FORCE
|
||||
@+$(foreach dir,$(DOWNLOAD_DIRS),$(SUBMAKE) $(dir);)
|
||||
|
||||
clean dirclean: .config
|
||||
@@ -187,9 +182,6 @@ prereq:: prepare-tmpinfo .config
|
||||
check: .config FORCE
|
||||
@+$(NO_TRACE_MAKE) -r -s $@ QUIET= V=s
|
||||
|
||||
val.%: FORCE
|
||||
@+$(NO_TRACE_MAKE) -r -s $@ QUIET= V=s
|
||||
|
||||
WARN_PARALLEL_ERROR = $(if $(BUILD_LOG),,$(and $(filter -j,$(MAKEFLAGS)),$(findstring s,$(OPENWRT_VERBOSE))))
|
||||
|
||||
ifeq ($(SDK),1)
|
||||
|
||||
@@ -31,16 +31,16 @@ qstrip_escape=$(subst ','\'',$(call qstrip,$(1)))
|
||||
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
|
||||
|
||||
VERSION_NUMBER:=$(call qstrip_escape,$(CONFIG_VERSION_NUMBER))
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),17.01.6)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),17.01.1)
|
||||
|
||||
VERSION_CODE:=$(call qstrip_escape,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r3979-2252731af4)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r3316-7eb58cf109)
|
||||
|
||||
VERSION_NICK:=$(call qstrip_escape,$(CONFIG_VERSION_NICK))
|
||||
VERSION_NICK:=$(if $(VERSION_NICK),$(VERSION_NICK),$(RELEASE))
|
||||
|
||||
VERSION_REPO:=$(call qstrip_escape,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.lede-project.org/releases/17.01.6)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.lede-project.org/releases/17.01.1)
|
||||
|
||||
VERSION_DIST:=$(call qstrip_escape,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),LEDE)
|
||||
|
||||
@@ -11,15 +11,14 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
include $(INCLUDE_DIR)/version.mk
|
||||
|
||||
PKG_NAME:=base-files
|
||||
PKG_RELEASE:=173.6
|
||||
PKG_RELEASE:=172
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||
PKG_BUILD_DEPENDS:=usign/host
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
# Extend depends from version.mk
|
||||
PKG_CONFIG_DEPENDS += CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE
|
||||
PKG_CONFIG_DEPENDS := CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@@ -38,28 +37,27 @@ define Package/base-files
|
||||
endef
|
||||
|
||||
define Package/base-files/conffiles
|
||||
/etc/config/
|
||||
/etc/config/network
|
||||
/etc/config/system
|
||||
/etc/crontabs/
|
||||
/etc/dropbear/
|
||||
/etc/group
|
||||
/etc/hosts
|
||||
/etc/inittab
|
||||
/etc/iproute2/rt_protos
|
||||
/etc/iproute2/rt_tables
|
||||
/etc/group
|
||||
/etc/passwd
|
||||
/etc/profile
|
||||
/etc/profile.d
|
||||
/etc/protocols
|
||||
/etc/rc.local
|
||||
/etc/services
|
||||
/etc/shadow
|
||||
/etc/profile
|
||||
/etc/protocols
|
||||
/etc/services
|
||||
/etc/shells
|
||||
/etc/sysctl.conf
|
||||
/etc/sysctl.d/
|
||||
/etc/sysctl.d/local.conf
|
||||
/etc/rc.local
|
||||
/etc/sysupgrade.conf
|
||||
/etc/config/
|
||||
/etc/dropbear/
|
||||
/etc/crontabs/
|
||||
/etc/sysctl.d/local.conf
|
||||
/etc/sysctl.d/
|
||||
/etc/iproute2/rt_tables
|
||||
/etc/iproute2/rt_protos
|
||||
$(call $(TARGET)/conffiles)
|
||||
endef
|
||||
|
||||
@@ -139,7 +137,6 @@ define Package/base-files/install
|
||||
|
||||
mkdir -p $(1)/CONTROL
|
||||
mkdir -p $(1)/dev
|
||||
mkdir -p $(1)/etc/config
|
||||
mkdir -p $(1)/etc/crontabs
|
||||
mkdir -p $(1)/etc/rc.d
|
||||
mkdir -p $(1)/overlay
|
||||
|
||||
@@ -119,14 +119,17 @@ generate_network() {
|
||||
;;
|
||||
|
||||
pppoe)
|
||||
# fixup IPv6 slave interface
|
||||
ifname="pppoe-$1"
|
||||
|
||||
uci -q batch <<-EOF
|
||||
set network.$1.proto='pppoe'
|
||||
set network.$1.username='username'
|
||||
set network.$1.password='password'
|
||||
set network.$1.ipv6='1'
|
||||
set network.$1.ipv6='auto'
|
||||
delete network.${1}6
|
||||
set network.${1}6='interface'
|
||||
set network.${1}6.ifname='@${1}'
|
||||
set network.${1}6.ifname='$ifname'
|
||||
set network.${1}6.proto='dhcpv6'
|
||||
EOF
|
||||
;;
|
||||
|
||||
@@ -8,8 +8,6 @@ after mount_root:
|
||||
* /etc/config directory with config files
|
||||
|
||||
for more help see:
|
||||
https://openwrt.org/docs/guide-user/troubleshooting/
|
||||
- failsafe_and_factory_reset
|
||||
- root_password_reset
|
||||
http://wiki.openwrt.org/doc/howto/generic.failsafe
|
||||
=======================================================
|
||||
|
||||
|
||||
@@ -3,33 +3,22 @@
|
||||
|
||||
START=11
|
||||
|
||||
apply_defaults() {
|
||||
local mem="$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)"
|
||||
local min_free frag_low_thresh frag_high_thresh
|
||||
|
||||
set_vm_min_free() {
|
||||
mem="$(grep MemTotal /proc/meminfo | awk '{print $2}')"
|
||||
if [ "$mem" -gt 65536 ]; then # 128M
|
||||
min_free=16384
|
||||
val=16384
|
||||
elif [ "$mem" -gt 32768 ]; then # 64M
|
||||
min_free=8192
|
||||
val=8192
|
||||
elif [ "$mem" -gt 16384 ]; then # 32M
|
||||
val=1024
|
||||
else
|
||||
min_free=1024
|
||||
frag_low_thresh=393216
|
||||
frag_high_thresh=524288
|
||||
return
|
||||
fi
|
||||
|
||||
sysctl -qw vm.min_free_kbytes="$min_free"
|
||||
|
||||
[ "$frag_low_thresh" ] && sysctl -qw \
|
||||
net.ipv4.ipfrag_low_thresh="$frag_low_thresh" \
|
||||
net.ipv4.ipfrag_high_thresh="$frag_high_thresh" \
|
||||
net.ipv6.ip6frag_low_thresh="$frag_low_thresh" \
|
||||
net.ipv6.ip6frag_high_thresh="$frag_high_thresh" \
|
||||
net.netfilter.nf_conntrack_frag6_low_thresh="$frag_low_thresh" \
|
||||
net.netfilter.nf_conntrack_frag6_high_thresh="$frag_high_thresh"
|
||||
sysctl -qw vm.min_free_kbytes="$val"
|
||||
}
|
||||
|
||||
start() {
|
||||
apply_defaults
|
||||
set_vm_min_free
|
||||
for CONF in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
|
||||
[ -f "$CONF" ] && sysctl -p "$CONF" -e >&-
|
||||
done
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/sh
|
||||
[ -e /tmp/.failsafe ] && export FAILSAFE=1
|
||||
|
||||
[ -f /etc/banner ] && cat /etc/banner
|
||||
[ -n "$FAILSAFE" ] && cat /etc/banner.failsafe
|
||||
|
||||
[ -e /tmp/.failsafe ] && cat /etc/banner.failsafe
|
||||
fgrep -sq '/ overlay ro,' /proc/mounts && {
|
||||
echo 'Your JFFS2-partition seems full and overlayfs is mounted read-only.'
|
||||
echo 'Please try to remove files from /overlay/upper/... and reboot!'
|
||||
|
||||
@@ -20,7 +20,7 @@ released)
|
||||
echo "REBOOT" > /dev/console
|
||||
sync
|
||||
reboot
|
||||
elif [ "$SEEN" -ge 5 -a -n "$OVERLAY" ]
|
||||
elif [ "$SEEN" -gt 5 -a -n "$OVERLAY" ]
|
||||
then
|
||||
echo "FACTORY RESET" > /dev/console
|
||||
jffs2reset -y && reboot &
|
||||
|
||||
@@ -17,7 +17,7 @@ stop() {
|
||||
}
|
||||
|
||||
reload() {
|
||||
restart
|
||||
return 1
|
||||
}
|
||||
|
||||
restart() {
|
||||
@@ -68,7 +68,7 @@ Available commands:
|
||||
start Start the service
|
||||
stop Stop the service
|
||||
restart Restart the service
|
||||
reload Reload configuration files (or restart if service does not implement reload)
|
||||
reload Reload configuration files (or restart if that fails)
|
||||
enable Enable service autostart
|
||||
disable Disable service autostart
|
||||
$EXTRA_HELP
|
||||
@@ -141,4 +141,5 @@ ${INIT_TRACE:+set -x}
|
||||
|
||||
ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}"
|
||||
list_contains ALL_COMMANDS "$action" || action=help
|
||||
[ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :'
|
||||
$action "$@"
|
||||
|
||||
@@ -76,8 +76,6 @@ afpovertcp 548/tcp
|
||||
afpovertcp 548/udp
|
||||
nntps 563/tcp snntp
|
||||
nntps 563/udp snntp
|
||||
submission 587/tcp
|
||||
submission 587/udp
|
||||
ldaps 636/tcp
|
||||
ldaps 636/udp
|
||||
tinc 655/tcp
|
||||
|
||||
@@ -158,7 +158,7 @@ insert_modules() {
|
||||
if [ -f /etc/modules.d/$m ]; then
|
||||
sed 's/^[^#]/insmod &/' /etc/modules.d/$m | ash 2>&- || :
|
||||
else
|
||||
modprobe $m || :
|
||||
modprobe $m
|
||||
fi
|
||||
done
|
||||
}
|
||||
@@ -240,7 +240,7 @@ default_postinst() {
|
||||
[ -d /tmp/.uci ] || mkdir -p /tmp/.uci
|
||||
for i in $(sed -ne 's!^/etc/uci-defaults/!!p' "/usr/lib/opkg/info/${pkgname}.list"); do (
|
||||
cd /etc/uci-defaults
|
||||
[ -f "$i" ] && . ./"$i" && rm -f "$i"
|
||||
[ -f "$i" ] && . "$i" && rm -f "$i"
|
||||
) done
|
||||
uci commit
|
||||
fi
|
||||
@@ -353,8 +353,4 @@ user_exists() {
|
||||
grep -qs "^${1}:" ${IPKG_INSTROOT}/etc/passwd
|
||||
}
|
||||
|
||||
board_name() {
|
||||
[ -e /tmp/sysinfo/board_name ] && cat /tmp/sysinfo/board_name || echo "generic"
|
||||
}
|
||||
|
||||
[ -z "$IPKG_INSTROOT" -a -f /lib/config/uci.sh ] && . /lib/config/uci.sh
|
||||
|
||||
@@ -29,9 +29,18 @@ network_get_ipaddr() {
|
||||
# 1: destination variable
|
||||
# 2: interface
|
||||
network_get_ipaddr6() {
|
||||
__network_ifstatus "$1" "$2" "['ipv6-address'][0].address" || \
|
||||
__network_ifstatus "$1" "$2" "['ipv6-prefix-assignment'][0]['local-address'].address" || \
|
||||
return 1
|
||||
local __addr
|
||||
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-address','ipv6-prefix-assignment'][0].address"; then
|
||||
case "$__addr" in
|
||||
*:) export "$1=${__addr}1" ;;
|
||||
*) export "$1=${__addr}" ;;
|
||||
esac
|
||||
return 0
|
||||
fi
|
||||
|
||||
unset $1
|
||||
return 1
|
||||
}
|
||||
|
||||
# determine first IPv4 subnet of given logical interface
|
||||
@@ -45,36 +54,7 @@ network_get_subnet() {
|
||||
# 1: destination variable
|
||||
# 2: interface
|
||||
network_get_subnet6() {
|
||||
local __nets __addr
|
||||
|
||||
if network_get_subnets6 __nets "$2"; then
|
||||
# Attempt to return first non-fe80::/10, non-fc::/7 range
|
||||
for __addr in $__nets; do
|
||||
case "$__addr" in fe[8ab]?:*|f[cd]??:*)
|
||||
continue
|
||||
esac
|
||||
export "$1=$__addr"
|
||||
return 0
|
||||
done
|
||||
|
||||
# Attempt to return first non-fe80::/10 range
|
||||
for __addr in $__nets; do
|
||||
case "$__addr" in fe[8ab]?:*)
|
||||
continue
|
||||
esac
|
||||
export "$1=$__addr"
|
||||
return 0
|
||||
done
|
||||
|
||||
# Return first item
|
||||
for __addr in $__nets; do
|
||||
export "$1=$__addr"
|
||||
return 0
|
||||
done
|
||||
fi
|
||||
|
||||
unset "$1"
|
||||
return 1
|
||||
__network_ifstatus "$1" "$2" "['ipv6-address'][0]['address','mask']" "/"
|
||||
}
|
||||
|
||||
# determine first IPv6 prefix of given logical interface
|
||||
@@ -98,19 +78,14 @@ network_get_ipaddrs6() {
|
||||
local __addr
|
||||
local __list=""
|
||||
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-address'][*].address"; then
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-address','ipv6-prefix-assignment'][*].address"; then
|
||||
for __addr in $__addr; do
|
||||
__list="${__list:+$__list }${__addr}"
|
||||
case "$__addr" in
|
||||
*:) __list="${__list:+$__list }${__addr}1" ;;
|
||||
*) __list="${__list:+$__list }${__addr}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-prefix-assignment'][*]['local-address'].address"; then
|
||||
for __addr in $__addr; do
|
||||
__list="${__list:+$__list }${__addr}"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -n "$__list" ]; then
|
||||
export "$1=$__list"
|
||||
return 0
|
||||
fi
|
||||
@@ -123,13 +98,18 @@ network_get_ipaddrs6() {
|
||||
# 1: destination variable
|
||||
# 2: interface
|
||||
network_get_ipaddrs_all() {
|
||||
local __addr __addr6
|
||||
local __addr
|
||||
local __list=""
|
||||
|
||||
network_get_ipaddrs __addr "$2"
|
||||
network_get_ipaddrs6 __addr6 "$2"
|
||||
if __network_ifstatus "__addr" "$2" "['ipv4-address','ipv6-address','ipv6-prefix-assignment'][*].address"; then
|
||||
for __addr in $__addr; do
|
||||
case "$__addr" in
|
||||
*:) __list="${__list:+$__list }${__addr}1" ;;
|
||||
*) __list="${__list:+$__list }${__addr}" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "$__addr" -o -n "$__addr6" ]; then
|
||||
export "$1=${__addr:+$__addr }$__addr6"
|
||||
export "$1=$__list"
|
||||
return 0
|
||||
fi
|
||||
|
||||
@@ -148,24 +128,17 @@ network_get_subnets() {
|
||||
# 1: destination variable
|
||||
# 2: interface
|
||||
network_get_subnets6() {
|
||||
local __addr __mask
|
||||
local __addr
|
||||
local __list=""
|
||||
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-address'][*]['address','mask']" "/ "; then
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-address','ipv6-prefix-assignment'][*]['address','mask']" "/ "; then
|
||||
for __addr in $__addr; do
|
||||
__list="${__list:+$__list }${__addr}"
|
||||
case "$__addr" in
|
||||
*:/*) __list="${__list:+$__list }${__addr%/*}1/${__addr##*/}" ;;
|
||||
*) __list="${__list:+$__list }${__addr}" ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if __network_ifstatus "__addr" "$2" "['ipv6-prefix-assignment'][*]['local-address'].address" && \
|
||||
__network_ifstatus "__mask" "$2" "['ipv6-prefix-assignment'][*].mask"; then
|
||||
for __addr in $__addr; do
|
||||
__list="${__list:+$__list }${__addr}/${__mask%% *}"
|
||||
__mask="${__mask#* }"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -n "$__list" ]; then
|
||||
export "$1=$__list"
|
||||
return 0
|
||||
fi
|
||||
|
||||
@@ -35,7 +35,7 @@ _ucidef_set_interface() {
|
||||
json_select_object "$name"
|
||||
json_add_string ifname "$iface"
|
||||
|
||||
if ! json_is_a protocol string || [ -n "$proto" ]; then
|
||||
if ! json_is_a protocol string; then
|
||||
case "$proto" in
|
||||
static|dhcp|none|pppoe) : ;;
|
||||
*)
|
||||
@@ -619,26 +619,6 @@ ucidef_add_gpio_switch() {
|
||||
json_select ..
|
||||
}
|
||||
|
||||
ucidef_set_hostname() {
|
||||
local hostname="$1"
|
||||
|
||||
json_select_object system
|
||||
json_add_string hostname "$hostname"
|
||||
json_select ..
|
||||
}
|
||||
|
||||
ucidef_set_ntpserver() {
|
||||
local server
|
||||
|
||||
json_select_object system
|
||||
json_select_array ntpserver
|
||||
for server in "$@"; do
|
||||
json_add_string "" "$server"
|
||||
done
|
||||
json_select ..
|
||||
json_select ..
|
||||
}
|
||||
|
||||
board_config_update() {
|
||||
json_init
|
||||
[ -f ${CFG} ] && json_load "$(cat ${CFG})"
|
||||
|
||||
@@ -43,10 +43,7 @@ preinit_config_switch() {
|
||||
json_select ..
|
||||
|
||||
if [ "$device" = "$lan_if" ]; then
|
||||
if [ "$reset" -eq "1" ]; then
|
||||
swconfig dev $name set reset
|
||||
fi
|
||||
|
||||
swconfig dev $name set reset $reset
|
||||
swconfig dev $name set enable_vlan $enable
|
||||
swconfig dev $name vlan $role set ports "$ports"
|
||||
swconfig dev $name set apply
|
||||
@@ -99,8 +96,6 @@ preinit_config_board() {
|
||||
}
|
||||
|
||||
preinit_ip() {
|
||||
[ "$pi_preinit_no_failsafe" = "y" ] && return
|
||||
|
||||
# if the preinit interface isn't specified and ifname is set in
|
||||
# preinit.arch use that interface
|
||||
if [ -z "$pi_ifname" ]; then
|
||||
@@ -112,8 +107,6 @@ preinit_ip() {
|
||||
elif [ -d "/etc/board.d/" ]; then
|
||||
preinit_config_board
|
||||
fi
|
||||
|
||||
preinit_net_echo "Doing Lede Preinit\n"
|
||||
}
|
||||
|
||||
preinit_ip_deconfig() {
|
||||
@@ -147,7 +140,13 @@ preinit_net_echo() {
|
||||
}
|
||||
}
|
||||
|
||||
preinit_echo() {
|
||||
preinit_net_echo $1
|
||||
echo $1
|
||||
}
|
||||
|
||||
pi_indicate_preinit() {
|
||||
preinit_net_echo "Doing Lede Preinit\n"
|
||||
set_state preinit
|
||||
}
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ get_magic_long() {
|
||||
}
|
||||
|
||||
export_bootdevice() {
|
||||
local cmdline uuid disk uevent line
|
||||
local cmdline uuid disk uevent
|
||||
local MAJOR MINOR DEVNAME DEVTYPE
|
||||
|
||||
if read cmdline < /proc/cmdline; then
|
||||
@@ -241,9 +241,8 @@ export_bootdevice() {
|
||||
esac
|
||||
|
||||
if [ -e "$uevent" ]; then
|
||||
while read line; do
|
||||
export -n "$line"
|
||||
done < "$uevent"
|
||||
. "$uevent"
|
||||
|
||||
export BOOTDEV_MAJOR=$MAJOR
|
||||
export BOOTDEV_MINOR=$MINOR
|
||||
return 0
|
||||
@@ -255,12 +254,10 @@ export_bootdevice() {
|
||||
|
||||
export_partdevice() {
|
||||
local var="$1" offset="$2"
|
||||
local uevent line MAJOR MINOR DEVNAME DEVTYPE
|
||||
local uevent MAJOR MINOR DEVNAME DEVTYPE
|
||||
|
||||
for uevent in /sys/class/block/*/uevent; do
|
||||
while read line; do
|
||||
export -n "$line"
|
||||
done < "$uevent"
|
||||
. "$uevent"
|
||||
if [ $BOOTDEV_MAJOR = $MAJOR -a $(($BOOTDEV_MINOR + $offset)) = $MINOR -a -b "/dev/$DEVNAME" ]; then
|
||||
export "$var=$DEVNAME"
|
||||
return 0
|
||||
@@ -270,14 +267,6 @@ export_partdevice() {
|
||||
return 1
|
||||
}
|
||||
|
||||
hex_le32_to_cpu() {
|
||||
[ "$(echo 01 | hexdump -v -n 2 -e '/2 "%x"')" == "3031" ] && {
|
||||
echo "${1:0:2}${1:8:2}${1:6:2}${1:4:2}${1:2:2}"
|
||||
return
|
||||
}
|
||||
echo "$@"
|
||||
}
|
||||
|
||||
get_partitions() { # <device> <filename>
|
||||
local disk="$1"
|
||||
local filename="$2"
|
||||
@@ -285,8 +274,8 @@ get_partitions() { # <device> <filename>
|
||||
if [ -b "$disk" -o -f "$disk" ]; then
|
||||
v "Reading partition table from $filename..."
|
||||
|
||||
local magic=$(dd if="$disk" bs=2 count=1 skip=255 2>/dev/null)
|
||||
if [ "$magic" != $'\x55\xAA' ]; then
|
||||
local magic="$(hexdump -v -n 2 -s 0x1FE -e '1/2 "0x%04X"' "$disk")"
|
||||
if [ "$magic" != 0xAA55 ]; then
|
||||
v "Invalid partition table on $disk"
|
||||
exit
|
||||
fi
|
||||
@@ -297,9 +286,9 @@ get_partitions() { # <device> <filename>
|
||||
for part in 1 2 3 4; do
|
||||
set -- $(hexdump -v -n 12 -s "$((0x1B2 + $part * 16))" -e '3/4 "0x%08X "' "$disk")
|
||||
|
||||
local type="$(( $(hex_le32_to_cpu $1) % 256))"
|
||||
local lba="$(( $(hex_le32_to_cpu $2) ))"
|
||||
local num="$(( $(hex_le32_to_cpu $3) ))"
|
||||
local type="$(($1 % 256))"
|
||||
local lba="$(($2))"
|
||||
local num="$(($3))"
|
||||
|
||||
[ $type -gt 0 ] || continue
|
||||
|
||||
|
||||
@@ -101,31 +101,12 @@ EOF
|
||||
# prevent messages from clobbering the tarball when using stdout
|
||||
[ "$CONF_BACKUP" = "-" ] && export VERBOSE=0
|
||||
|
||||
|
||||
list_conffiles() {
|
||||
awk '
|
||||
BEGIN { conffiles = 0 }
|
||||
/^Conffiles:/ { conffiles = 1; next }
|
||||
!/^ / { conffiles = 0; next }
|
||||
conffiles == 1 { print }
|
||||
' /usr/lib/opkg/status
|
||||
}
|
||||
|
||||
list_changed_conffiles() {
|
||||
# Cannot handle spaces in filenames - but opkg cannot either...
|
||||
list_conffiles | while read file csum; do
|
||||
[ -r "$file" ] || continue
|
||||
|
||||
echo "${csum} ${file}" | sha256sum -sc - || echo "$file"
|
||||
done
|
||||
}
|
||||
|
||||
add_uci_conffiles() {
|
||||
local file="$1"
|
||||
( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' \
|
||||
/etc/sysupgrade.conf /lib/upgrade/keep.d/* 2>/dev/null) \
|
||||
-type f -o -type l 2>/dev/null;
|
||||
list_changed_conffiles ) | sort -u > "$file"
|
||||
opkg list-changed-conffiles ) | sort -u > "$file"
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ "$(uci -q get system.@system[0].ttylogin)" == 1 ] || exec /bin/ash --login
|
||||
[ "$(uci get system.@system[0].ttylogin)" == 1 ] || exec /bin/ash --login
|
||||
|
||||
exec /bin/login
|
||||
|
||||
@@ -190,7 +190,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "http://downloads.lede-project.org/releases/17.01.6"
|
||||
default "http://downloads.lede-project.org/releases/17.01.1"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
||||
@@ -9,12 +9,15 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=grub
|
||||
PKG_VERSION:=2.02
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=2.02~rc1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@GNU/grub
|
||||
PKG_HASH:=810b3798d316394f94096ec2797909dbf23c858e48f7b3830826b8daa06b7b0f
|
||||
PKG_SOURCE_URL:=http://alpha.gnu.org/gnu/grub \
|
||||
http://gnualpha.uib.no/grub/ \
|
||||
http://mirrors.fe.up.pt/pub/gnu-alpha/grub/ \
|
||||
http://www.nic.funet.fi/pub/gnu/alpha/gnu/grub/
|
||||
PKG_HASH:=445239e9b96d1143c194c1d37851cf4196b83701c60172e49665e9d453d80278
|
||||
|
||||
PKG_FIXUP:=autoreconf
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Hector Marco-Gisbert <hecmargi@upv.es>
|
||||
Date: Fri, 13 Nov 2015 16:21:09 +0100
|
||||
Subject: [PATCH] Fix security issue when reading username and password
|
||||
|
||||
This patch fixes two integer underflows at:
|
||||
* grub-core/lib/crypto.c
|
||||
* grub-core/normal/auth.c
|
||||
|
||||
Resolves: CVE-2015-8370
|
||||
|
||||
Signed-off-by: Hector Marco-Gisbert <hecmargi@upv.es>
|
||||
Signed-off-by: Ismael Ripoll-Ripoll <iripoll@disca.upv.es>
|
||||
---
|
||||
grub-core/lib/crypto.c | 2 +-
|
||||
grub-core/normal/auth.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/grub-core/lib/crypto.c
|
||||
+++ b/grub-core/lib/crypto.c
|
||||
@@ -468,7 +468,7 @@ grub_password_get (char buf[], unsigned
|
||||
break;
|
||||
}
|
||||
|
||||
- if (key == '\b')
|
||||
+ if (key == '\b' && cur_len)
|
||||
{
|
||||
if (cur_len)
|
||||
cur_len--;
|
||||
--- a/grub-core/normal/auth.c
|
||||
+++ b/grub-core/normal/auth.c
|
||||
@@ -172,7 +172,7 @@ grub_username_get (char buf[], unsigned
|
||||
break;
|
||||
}
|
||||
|
||||
- if (key == '\b')
|
||||
+ if (key == '\b' && cur_len)
|
||||
{
|
||||
if (cur_len)
|
||||
{
|
||||
@@ -1,33 +0,0 @@
|
||||
commit 263e45ccf27b21e9862cc538ed28978533d04e4b
|
||||
Author: Baoquan He <bhe@redhat.com>
|
||||
Date: Fri Mar 3 11:52:15 2017 +0800
|
||||
|
||||
Only print debug message when failed to serach for kernel symbol from /proc/kallsyms
|
||||
|
||||
Kernel symbol page_offset_base could be unavailable when mm KASLR code is
|
||||
not compiled in kernel. It's inappropriate to print out error message
|
||||
when failed to search for page_offset_base from /proc/kallsyms. Seems now
|
||||
there is not a way to find out if mm KASLR is compiled in or not. An
|
||||
alternative approach is only printing out debug message in get_kernel_sym
|
||||
if failed to search a expected kernel symbol.
|
||||
|
||||
Do it in this patch, a simple fix.
|
||||
|
||||
Signed-off-by: Baoquan He <bhe@redhat.com>
|
||||
Reviewed-by: Pratyush Anand <panand@redhat.com>
|
||||
Acked-by: Dave Young <dyoung@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||
|
||||
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
|
||||
index 88aeee3..c4cf201 100644
|
||||
--- a/kexec/arch/i386/crashdump-x86.c
|
||||
+++ b/kexec/arch/i386/crashdump-x86.c
|
||||
@@ -127,7 +127,7 @@ static unsigned long long get_kernel_sym(const char *symbol)
|
||||
}
|
||||
}
|
||||
|
||||
- fprintf(stderr, "Cannot get kernel %s symbol address\n", symbol);
|
||||
+ dbgprintf("Cannot get kernel %s symbol address\n", symbol);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,178 +0,0 @@
|
||||
commit f14881e87b1426d2c439e2fad9a1e03a3b35e196
|
||||
Author: Philip Prindeville <philipp@redfish-solutions.com>
|
||||
Date: Fri Mar 10 19:57:11 2017 -0700
|
||||
|
||||
Don't use %L width specifier with integer values
|
||||
|
||||
MUSL doesn't support %L except for floating-point arguments; therefore,
|
||||
%ll must be used instead with integer arguments.
|
||||
|
||||
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
|
||||
|
||||
diff --git a/kexec/arch/arm/kexec-arm.c b/kexec/arch/arm/kexec-arm.c
|
||||
index 2194b7c..49f35b1 100644
|
||||
--- a/kexec/arch/arm/kexec-arm.c
|
||||
+++ b/kexec/arch/arm/kexec-arm.c
|
||||
@@ -47,7 +47,7 @@ int get_memory_ranges(struct memory_range **range, int *ranges,
|
||||
int count;
|
||||
if (memory_ranges >= MAX_MEMORY_RANGES)
|
||||
break;
|
||||
- count = sscanf(line, "%Lx-%Lx : %n",
|
||||
+ count = sscanf(line, "%llx-%llx : %n",
|
||||
&start, &end, &consumed);
|
||||
if (count != 2)
|
||||
continue;
|
||||
diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
|
||||
index c4cf201..285dea9 100644
|
||||
--- a/kexec/arch/i386/crashdump-x86.c
|
||||
+++ b/kexec/arch/i386/crashdump-x86.c
|
||||
@@ -119,7 +119,7 @@ static unsigned long long get_kernel_sym(const char *symbol)
|
||||
}
|
||||
|
||||
while(fgets(line, sizeof(line), fp) != NULL) {
|
||||
- if (sscanf(line, "%Lx %c %s", &vaddr, &type, sym) != 3)
|
||||
+ if (sscanf(line, "%llx %c %s", &vaddr, &type, sym) != 3)
|
||||
continue;
|
||||
if (strcmp(sym, symbol) == 0) {
|
||||
dbgprintf("kernel symbol %s vaddr = %16llx\n", symbol, vaddr);
|
||||
@@ -296,12 +296,12 @@ static int get_crash_memory_ranges(struct memory_range **range, int *ranges,
|
||||
|
||||
if (memory_ranges >= CRASH_MAX_MEMORY_RANGES)
|
||||
break;
|
||||
- count = sscanf(line, "%Lx-%Lx : %n",
|
||||
+ count = sscanf(line, "%llx-%llx : %n",
|
||||
&start, &end, &consumed);
|
||||
if (count != 2)
|
||||
continue;
|
||||
str = line + consumed;
|
||||
- dbgprintf("%016Lx-%016Lx : %s",
|
||||
+ dbgprintf("%016llx-%016llx : %s",
|
||||
start, end, str);
|
||||
/* Only Dumping memory of type System RAM. */
|
||||
if (memcmp(str, "System RAM\n", 11) == 0) {
|
||||
@@ -778,7 +778,7 @@ static int get_crash_notes(int cpu, uint64_t *addr, uint64_t *len)
|
||||
*addr = x86__pa(vaddr + (cpu * MAX_NOTE_BYTES));
|
||||
*len = MAX_NOTE_BYTES;
|
||||
|
||||
- dbgprintf("crash_notes addr = %Lx\n",
|
||||
+ dbgprintf("crash_notes addr = %llx\n",
|
||||
(unsigned long long)*addr);
|
||||
|
||||
fclose(fp);
|
||||
diff --git a/kexec/arch/i386/kexec-x86-common.c b/kexec/arch/i386/kexec-x86-common.c
|
||||
index 3e97239..be03618 100644
|
||||
--- a/kexec/arch/i386/kexec-x86-common.c
|
||||
+++ b/kexec/arch/i386/kexec-x86-common.c
|
||||
@@ -81,7 +81,7 @@ static int get_memory_ranges_proc_iomem(struct memory_range **range, int *ranges
|
||||
int count;
|
||||
if (memory_ranges >= MAX_MEMORY_RANGES)
|
||||
break;
|
||||
- count = sscanf(line, "%Lx-%Lx : %n",
|
||||
+ count = sscanf(line, "%llx-%llx : %n",
|
||||
&start, &end, &consumed);
|
||||
if (count != 2)
|
||||
continue;
|
||||
diff --git a/kexec/arch/ia64/kexec-elf-rel-ia64.c b/kexec/arch/ia64/kexec-elf-rel-ia64.c
|
||||
index 7f7c08c..500f247 100644
|
||||
--- a/kexec/arch/ia64/kexec-elf-rel-ia64.c
|
||||
+++ b/kexec/arch/ia64/kexec-elf-rel-ia64.c
|
||||
@@ -155,6 +155,6 @@ void machine_apply_elf_rel(struct mem_ehdr *ehdr,
|
||||
}
|
||||
return;
|
||||
overflow:
|
||||
- die("overflow in relocation type %lu val %Lx\n",
|
||||
+ die("overflow in relocation type %lu val %llx\n",
|
||||
r_type, value);
|
||||
}
|
||||
diff --git a/kexec/arch/mips/crashdump-mips.c b/kexec/arch/mips/crashdump-mips.c
|
||||
index 9c33599..6308ec8 100644
|
||||
--- a/kexec/arch/mips/crashdump-mips.c
|
||||
+++ b/kexec/arch/mips/crashdump-mips.c
|
||||
@@ -173,7 +173,7 @@ static int get_crash_memory_ranges(struct memory_range **range, int *ranges)
|
||||
int type, consumed, count;
|
||||
if (memory_ranges >= CRASH_MAX_MEMORY_RANGES)
|
||||
break;
|
||||
- count = sscanf(line, "%Lx-%Lx : %n",
|
||||
+ count = sscanf(line, "%llx-%llx : %n",
|
||||
&start, &end, &consumed);
|
||||
if (count != 2)
|
||||
continue;
|
||||
diff --git a/kexec/arch/mips/kexec-mips.c b/kexec/arch/mips/kexec-mips.c
|
||||
index ee3cd3a..2e5b700 100644
|
||||
--- a/kexec/arch/mips/kexec-mips.c
|
||||
+++ b/kexec/arch/mips/kexec-mips.c
|
||||
@@ -48,7 +48,7 @@ int get_memory_ranges(struct memory_range **range, int *ranges,
|
||||
while (fgets(line, sizeof(line), fp) != 0) {
|
||||
if (memory_ranges >= MAX_MEMORY_RANGES)
|
||||
break;
|
||||
- count = sscanf(line, "%Lx-%Lx : %n", &start, &end, &consumed);
|
||||
+ count = sscanf(line, "%llx-%llx : %n", &start, &end, &consumed);
|
||||
if (count != 2)
|
||||
continue;
|
||||
str = line + consumed;
|
||||
diff --git a/kexec/arch/s390/kexec-s390.c b/kexec/arch/s390/kexec-s390.c
|
||||
index f863483..33ba6b9 100644
|
||||
--- a/kexec/arch/s390/kexec-s390.c
|
||||
+++ b/kexec/arch/s390/kexec-s390.c
|
||||
@@ -170,7 +170,7 @@ int get_memory_ranges_s390(struct memory_range memory_range[], int *ranges,
|
||||
if (current_range == MAX_MEMORY_RANGES)
|
||||
break;
|
||||
|
||||
- sscanf(line,"%Lx-%Lx : %n", &start, &end, &cons);
|
||||
+ sscanf(line,"%llx-%llx : %n", &start, &end, &cons);
|
||||
str = line+cons;
|
||||
if ((memcmp(str, sys_ram, strlen(sys_ram)) == 0) ||
|
||||
((memcmp(str, crash_kernel, strlen(crash_kernel)) == 0) &&
|
||||
diff --git a/kexec/crashdump.c b/kexec/crashdump.c
|
||||
index 15c1105..0b363c5 100644
|
||||
--- a/kexec/crashdump.c
|
||||
+++ b/kexec/crashdump.c
|
||||
@@ -98,7 +98,7 @@ int get_crash_notes_per_cpu(int cpu, uint64_t *addr, uint64_t *len)
|
||||
}
|
||||
if (!fgets(line, sizeof(line), fp))
|
||||
die("Cannot parse %s: %s\n", crash_notes, strerror(errno));
|
||||
- count = sscanf(line, "%Lx", &temp);
|
||||
+ count = sscanf(line, "%llx", &temp);
|
||||
if (count != 1)
|
||||
die("Cannot parse %s: %s\n", crash_notes, strerror(errno));
|
||||
*addr = (uint64_t) temp;
|
||||
@@ -112,7 +112,7 @@ int get_crash_notes_per_cpu(int cpu, uint64_t *addr, uint64_t *len)
|
||||
if (!fgets(line, sizeof(line), fp))
|
||||
die("Cannot parse %s: %s\n",
|
||||
crash_notes_size, strerror(errno));
|
||||
- count = sscanf(line, "%Lu", &temp);
|
||||
+ count = sscanf(line, "%llu", &temp);
|
||||
if (count != 1)
|
||||
die("Cannot parse %s: %s\n",
|
||||
crash_notes_size, strerror(errno));
|
||||
@@ -120,7 +120,7 @@ int get_crash_notes_per_cpu(int cpu, uint64_t *addr, uint64_t *len)
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
- dbgprintf("%s: crash_notes addr = %Lx, size = %Lu\n", __FUNCTION__,
|
||||
+ dbgprintf("%s: crash_notes addr = %llx, size = %llu\n", __FUNCTION__,
|
||||
(unsigned long long)*addr, (unsigned long long)*len);
|
||||
|
||||
return 0;
|
||||
@@ -141,7 +141,7 @@ static int get_vmcoreinfo(const char *kdump_info, uint64_t *addr, uint64_t *len)
|
||||
|
||||
if (!fgets(line, sizeof(line), fp))
|
||||
die("Cannot parse %s: %s\n", kdump_info, strerror(errno));
|
||||
- count = sscanf(line, "%Lx %Lx", &temp, &temp2);
|
||||
+ count = sscanf(line, "%llx %llx", &temp, &temp2);
|
||||
if (count != 2)
|
||||
die("Cannot parse %s: %s\n", kdump_info, strerror(errno));
|
||||
|
||||
diff --git a/kexec/kexec-iomem.c b/kexec/kexec-iomem.c
|
||||
index 485a2e8..7ec3853 100644
|
||||
--- a/kexec/kexec-iomem.c
|
||||
+++ b/kexec/kexec-iomem.c
|
||||
@@ -44,7 +44,7 @@ int kexec_iomem_for_each_line(char *match,
|
||||
die("Cannot open %s\n", iomem);
|
||||
|
||||
while(fgets(line, sizeof(line), fp) != 0) {
|
||||
- count = sscanf(line, "%Lx-%Lx : %n", &start, &end, &consumed);
|
||||
+ count = sscanf(line, "%llx-%llx : %n", &start, &end, &consumed);
|
||||
if (count != 2)
|
||||
continue;
|
||||
str = line + consumed;
|
||||
@@ -18,7 +18,6 @@ a40|\
|
||||
a60|\
|
||||
alfa-ap120c|\
|
||||
all0258n|\
|
||||
ap121f|\
|
||||
ap90q|\
|
||||
cap324|\
|
||||
cap4200ag|\
|
||||
|
||||
@@ -7,10 +7,11 @@
|
||||
|
||||
touch /etc/config/ubootenv
|
||||
|
||||
. /lib/functions/lantiq.sh
|
||||
. /lib/uboot-envtools.sh
|
||||
. /lib/functions.sh
|
||||
|
||||
board=$(board_name)
|
||||
board=$(lantiq_board_name)
|
||||
|
||||
case "$board" in
|
||||
BTHOMEHUBV2B)
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
From 183eb37e25d903ccd68cc2d8f8a37e75872c03d2 Mon Sep 17 00:00:00 2001
|
||||
From: Nick Clifton <nickc@redhat.com>
|
||||
Date: Tue, 6 Sep 2016 17:35:35 +0100
|
||||
Subject: [PATCH 1/2] Do not pass host compiler sanitization flags on to linker
|
||||
testsuite.
|
||||
|
||||
* Makefile.am (CFLAGS_FOR_TARGET): Define as a copy of CFLAGS but
|
||||
without any sanitization options.
|
||||
(CXXFLAGS_FOR_TARGET): Define as a copy of CXXFLAGS but without
|
||||
any sanitization options.
|
||||
(check-DEJAGNU): Pass CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET
|
||||
as CFLAGS and CXXFLAGS respectively.
|
||||
---
|
||||
ld/Makefile.am | 8 ++++++--
|
||||
ld/Makefile.in | 8 ++++++--
|
||||
2 files changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/ld/Makefile.am
|
||||
+++ b/ld/Makefile.am
|
||||
@@ -136,6 +136,10 @@ CXX_FOR_TARGET = ` \
|
||||
fi; \
|
||||
fi`
|
||||
|
||||
+# Strip out sanitization options as we want to test building binaries without any extra paraphernalia
|
||||
+CFLAGS_FOR_TARGET = `echo $(CFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'`
|
||||
+CXXFLAGS_FOR_TARGET = `echo $(CXXFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'`
|
||||
+
|
||||
transform = s/^ld-new$$/$(installed_linker)/;@program_transform_name@
|
||||
bin_PROGRAMS = ld-new
|
||||
info_TEXINFOS = ld.texinfo
|
||||
@@ -2075,8 +2079,8 @@ check-DEJAGNU: site.exp
|
||||
runtest=$(RUNTEST); \
|
||||
if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
|
||||
$$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
|
||||
- CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \
|
||||
- CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \
|
||||
+ CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS_FOR_TARGET)" \
|
||||
+ CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
|
||||
CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" \
|
||||
OFILES="$(OFILES)" BFDLIB="$(TESTBFDLIB)" \
|
||||
LIBIBERTY="$(LIBIBERTY) $(LIBINTL)" LIBS="$(LIBS)" \
|
||||
--- a/ld/Makefile.in
|
||||
+++ b/ld/Makefile.in
|
||||
@@ -507,6 +507,10 @@ CXX_FOR_TARGET = ` \
|
||||
fi; \
|
||||
fi`
|
||||
|
||||
+
|
||||
+# Strip out sanitization options as they require special host libraries.
|
||||
+CFLAGS_FOR_TARGET = `echo $(CFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'`
|
||||
+CXXFLAGS_FOR_TARGET = `echo $(CXXFLAGS) | sed -e 's/-fsanitize=address//g' -e 's/-fsanitize=undefined//g'`
|
||||
info_TEXINFOS = ld.texinfo
|
||||
ld_TEXINFOS = configdoc.texi
|
||||
noinst_TEXINFOS = ldint.texinfo
|
||||
@@ -3644,8 +3648,8 @@ check-DEJAGNU: site.exp
|
||||
runtest=$(RUNTEST); \
|
||||
if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
|
||||
$$runtest --tool $(DEJATOOL) --srcdir $${srcroot}/testsuite \
|
||||
- CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS)" \
|
||||
- CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS)" \
|
||||
+ CC="$(CC_FOR_TARGET)" CFLAGS="$(CFLAGS_FOR_TARGET)" \
|
||||
+ CXX="$(CXX_FOR_TARGET)" CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
|
||||
CC_FOR_HOST="$(CC)" CFLAGS_FOR_HOST="$(CFLAGS)" \
|
||||
OFILES="$(OFILES)" BFDLIB="$(TESTBFDLIB)" \
|
||||
LIBIBERTY="$(LIBIBERTY) $(LIBINTL)" LIBS="$(LIBS)" \
|
||||
File diff suppressed because it is too large
Load Diff
@@ -60,6 +60,13 @@ CONFIGURE_ARGS+= \
|
||||
CONFIGURE_VARS+= \
|
||||
ac_cv_search_tgetent="$(TARGET_LDFLAGS) -lncurses -lreadline"
|
||||
|
||||
define Build/Compile
|
||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||
CPPFLAGS="$(TARGET_CPPFLAGS)" \
|
||||
all
|
||||
endef
|
||||
|
||||
define Build/Install
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||
|
||||
@@ -26,7 +26,7 @@ include $(INCLUDE_DIR)/package.mk
|
||||
define Package/perf
|
||||
SECTION:=devel
|
||||
CATEGORY:=Development
|
||||
DEPENDS:= +libelf1 +libdw +(mips||mipsel||powerpc||i386||x86_64||arm):libunwind +libpthread +librt +objdump @!LINUX_3_18 @!IN_SDK
|
||||
DEPENDS:= +libelf1 +libdw +libpthread +librt +objdump @!LINUX_3_18 @!IN_SDK
|
||||
TITLE:=Linux performance monitoring tool
|
||||
VERSION:=$(LINUX_VERSION)-$(PKG_RELEASE)
|
||||
URL:=http://www.kernel.org
|
||||
|
||||
@@ -10,9 +10,9 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=strace
|
||||
|
||||
PKG_VERSION:=4.16
|
||||
PKG_VERSION:=4.15
|
||||
PKG_RELEASE:=1
|
||||
PKG_HASH:=98487cb5178ec1259986cc9f6e2a844f50e5d1208c112cc22431a1e4d9adf0ef
|
||||
PKG_HASH:=c0cdc094d6141fd9dbf6aaad605142d651ae10998b660fda57fc61f7ad583ca9
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@SF/$(PKG_NAME)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/ptrace.h
|
||||
+++ b/ptrace.h
|
||||
@@ -48,7 +48,14 @@
|
||||
@@ -55,7 +55,14 @@ extern long ptrace(int, int, char *, lon
|
||||
# define ptrace_peeksiginfo_args XXX_ptrace_peeksiginfo_args
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=trace-cmd
|
||||
PKG_VERSION:=v2.6.1
|
||||
PKG_VERSION:=v2.6
|
||||
PKG_RELEASE=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git/snapshot/
|
||||
PKG_HASH:=4eb79001778a77c0ada10265e7f4b5515a3e21a46f0a15c2e8cc614efdf3f5df
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=\
|
||||
https://kernel.googlesource.com/pub/scm/linux/kernel/git/rostedt/trace-cmd \
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git
|
||||
PKG_SOURCE_VERSION:=9be5d74805830a291615f2f34a27c903f6a37b1e
|
||||
PKG_MIRROR_HASH:=735b69f61a8c627037dcc01361cdb8415e5ab0ec892fbd731236c444003b0c71
|
||||
PKG_INSTALL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=valgrind
|
||||
PKG_VERSION:=3.13.0
|
||||
PKG_VERSION:=3.12.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://sourceware.org/pub/valgrind/
|
||||
PKG_HASH:=d76680ef03f00cd5e970bbdcd4e57fb1f6df7d2e2c071635ef2be74790190c3b
|
||||
PKG_SOURCE_URL:=http://valgrind.org/downloads/
|
||||
PKG_HASH:=67ca4395b2527247780f36148b084f5743a68ab0c850cb43e4a5b4b012cf76a1
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=GPL-2.0+
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -323,7 +323,7 @@ case "${host_os}" in
|
||||
@@ -328,7 +328,7 @@ case "${host_os}" in
|
||||
# Ok, this is linux. Check the kernel version
|
||||
AC_MSG_CHECKING([for the kernel version])
|
||||
|
||||
|
||||
45
package/devel/valgrind/patches/200-musl_fix.patch
Normal file
45
package/devel/valgrind/patches/200-musl_fix.patch
Normal file
@@ -0,0 +1,45 @@
|
||||
--- a/coregrind/vg_preloaded.c
|
||||
+++ b/coregrind/vg_preloaded.c
|
||||
@@ -57,7 +57,7 @@
|
||||
void VG_NOTIFY_ON_LOAD(freeres)(Vg_FreeresToRun to_run);
|
||||
void VG_NOTIFY_ON_LOAD(freeres)(Vg_FreeresToRun to_run)
|
||||
{
|
||||
-# if !defined(__UCLIBC__) \
|
||||
+# if !defined(__UCLIBC__) && defined(__GLIBC__) \
|
||||
&& !defined(VGPV_arm_linux_android) \
|
||||
&& !defined(VGPV_x86_linux_android) \
|
||||
&& !defined(VGPV_mips32_linux_android) \
|
||||
--- a/include/pub_tool_redir.h
|
||||
+++ b/include/pub_tool_redir.h
|
||||
@@ -243,7 +243,7 @@
|
||||
/* --- Soname of the standard C library. --- */
|
||||
|
||||
#if defined(VGO_linux) || defined(VGO_solaris)
|
||||
-# define VG_Z_LIBC_SONAME libcZdsoZa // libc.so*
|
||||
+# define VG_Z_LIBC_SONAME libcZdZa // libc.*
|
||||
|
||||
#elif defined(VGO_darwin) && (DARWIN_VERS <= DARWIN_10_6)
|
||||
# define VG_Z_LIBC_SONAME libSystemZdZaZddylib // libSystem.*.dylib
|
||||
@@ -275,7 +275,11 @@
|
||||
/* --- Soname of the pthreads library. --- */
|
||||
|
||||
#if defined(VGO_linux)
|
||||
+# if defined(__GLIBC__) || defined(__UCLIBC__)
|
||||
# define VG_Z_LIBPTHREAD_SONAME libpthreadZdsoZd0 // libpthread.so.0
|
||||
+# else
|
||||
+# define VG_Z_LIBPTHREAD_SONAME libcZdZa // libc.*
|
||||
+# endif
|
||||
#elif defined(VGO_darwin)
|
||||
# define VG_Z_LIBPTHREAD_SONAME libSystemZdZaZddylib // libSystem.*.dylib
|
||||
#elif defined(VGO_solaris)
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1047,8 +1047,6 @@ case "${GLIBC_VERSION}" in
|
||||
;;
|
||||
2.0|2.1|*)
|
||||
AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
|
||||
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,])
|
||||
- AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc])
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=amd64-microcode
|
||||
PKG_VERSION:=20180524
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=amd64-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz
|
||||
PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/a/amd64-microcode/
|
||||
PKG_HASH:=7c389c357c242e7161f6872bf4e12011a71e4c0683f06fb1bcfad650a78bf0a9
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
|
||||
|
||||
PKG_LICENSE_FILE:=LICENSE.amd-ucode
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/amd64-microcode
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
URL:=$(PKG_SOURCE_URL)
|
||||
DEPENDS:=@TARGET_x86
|
||||
TITLE:=AMD64 CPU microcode
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
rm -rf $(PKG_BUILD_DIR)
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
$(TAR) -C $(BUILD_DIR) -xJf $(DL_DIR)/$(PKG_SOURCE)
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/amd64-microcode/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/amd-ucode
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/*.bin $(1)/lib/firmware/amd-ucode
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,amd64-microcode))
|
||||
@@ -63,6 +63,7 @@ $(eval $(call Download,ath10k-qca9887-board))
|
||||
|
||||
define Package/ath10k-firmware-qca988x
|
||||
$(Package/ath10k-firmware-default)
|
||||
DEFAULT:=PACKAGE_kmod-ath10k
|
||||
TITLE:=ath10k firmware for QCA988x devices
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=intel-microcode
|
||||
PKG_VERSION:=20180703
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).$(PKG_RELEASE).tar.xz
|
||||
PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/non-free/i/intel-microcode/
|
||||
PKG_HASH:=26dfaa47100ce3d06f968edefa7539da10de7b96d5d8e26ee8174a040ee5cdae
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
|
||||
|
||||
PKG_BUILD_DEPENDS:=iucode-tool/host
|
||||
|
||||
ifdef CONFIG_TARGET_x86_64
|
||||
MICROCODE:="intel-microcode-64"
|
||||
else
|
||||
MICROCODE:="intel-microcode"
|
||||
endif
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/intel-microcode
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
URL:=$(PKG_SOURCE_URL)
|
||||
DEPENDS:=@TARGET_x86 +iucode-tool
|
||||
TITLE:=Intel x86 CPU microcode
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
IUCODE_TOOL=$(STAGING_DIR)/../host/bin/iucode_tool $(MAKE) -C $(PKG_BUILD_DIR)
|
||||
mkdir $(PKG_BUILD_DIR)/intel-ucode-ipkg
|
||||
$(STAGING_DIR)/../host/bin/iucode_tool -q \
|
||||
--write-firmware=$(PKG_BUILD_DIR)/intel-ucode-ipkg $(PKG_BUILD_DIR)/$(MICROCODE).bin
|
||||
endef
|
||||
|
||||
define Package/intel-microcode/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/intel-ucode
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/intel-ucode-ipkg/* $(1)/lib/firmware/intel-ucode
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,intel-microcode))
|
||||
@@ -13,10 +13,10 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/dtaht/sch_cake.git
|
||||
PKG_SOURCE_DATE:=2018-07-16
|
||||
PKG_SOURCE_VERSION:=f39ab9a402ad51d7c17d4cde18ca15b2b7022030
|
||||
PKG_MIRROR_HASH:=fc22fc6eb7a24f4595c2777f33758ebcf9a2a404c16d00aa37ae389cd7f9c78f
|
||||
PKG_MAINTAINER:=Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
PKG_SOURCE_DATE:=2017-01-28
|
||||
PKG_SOURCE_VERSION:=9789742cfc596d48583ba4cdbc8f38d026121fa6
|
||||
PKG_MIRROR_HASH:=2a5afc45722c28ca8778eb50452eb305306e7898b32d7d6d73d3e77edf3cce99
|
||||
PKG_MAINTAINER:=Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ltq-vdsl-vr9-mei
|
||||
PKG_VERSION:=1.5.17.6
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_BASE_NAME:=drv_mei_cpe
|
||||
PKG_SOURCE:=$(PKG_BASE_NAME)-$(PKG_VERSION).tar.gz
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ltq-vdsl-vr9
|
||||
PKG_VERSION:=4.17.18.6
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_BASE_NAME:=drv_dsl_cpe_api
|
||||
PKG_SOURCE:=$(PKG_BASE_NAME)_vrx-$(PKG_VERSION).tar.gz
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
--- a/src/include/drv_dsl_cpe_pm_core.h
|
||||
+++ b/src/include/drv_dsl_cpe_pm_core.h
|
||||
@@ -1510,9 +1510,9 @@ typedef struct
|
||||
/** Common PM module mutex*/
|
||||
DSL_DRV_Mutex_t pmMutex;
|
||||
/** PM module direction Near-End mutex*/
|
||||
- DSL_DRV_Mutex_t pmNeMutex;
|
||||
+ struct semaphore pmNeMutex;
|
||||
/** PM module direction Far-End mutex*/
|
||||
- DSL_DRV_Mutex_t pmFeMutex;
|
||||
+ struct semaphore pmFeMutex;
|
||||
/** PM module Near-End access mutex*/
|
||||
DSL_DRV_Mutex_t pmNeAccessMutex;
|
||||
/** PM module Far-End access mutex*/
|
||||
--- a/src/pm/drv_dsl_cpe_api_pm.c
|
||||
+++ b/src/pm/drv_dsl_cpe_api_pm.c
|
||||
@@ -220,9 +220,9 @@ DSL_Error_t DSL_DRV_PM_Start(
|
||||
/* init PM module common mutex */
|
||||
DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmMutex);
|
||||
/* init PM module direction Near-End mutex */
|
||||
- DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex);
|
||||
+ sema_init(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex),1);
|
||||
/* init PM module direction Far-End mutex */
|
||||
- DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex);
|
||||
+ sema_init(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex),1);
|
||||
/* init PM module Near-End access mutex */
|
||||
DSL_DRV_MUTEX_INIT(DSL_DRV_PM_CONTEXT(pContext)->pmNeAccessMutex);
|
||||
/* init PM module Far-End access mutex */
|
||||
@@ -592,7 +592,7 @@ DSL_Error_t DSL_DRV_PM_Stop(
|
||||
if( DSL_DRV_PM_CONTEXT(pContext)->pmThreadFe.bRun != DSL_TRUE )
|
||||
{
|
||||
DSL_DEBUG(DSL_DBG_WRN,
|
||||
- (pContext, SYS_DBG_WRN"DSL[%02d]: PM module Near-End thread already stopped"
|
||||
+ (pContext, SYS_DBG_WRN"DSL[%02d]: PM module Far-End thread already stopped"
|
||||
DSL_DRV_CRLF, DSL_DEV_NUM(pContext)));
|
||||
}
|
||||
else
|
||||
--- a/src/pm/drv_dsl_cpe_pm_core.c
|
||||
+++ b/src/pm/drv_dsl_cpe_pm_core.c
|
||||
@@ -1022,7 +1022,7 @@ DSL_Error_t DSL_DRV_PM_DirectionMutexCon
|
||||
{
|
||||
if( bLock )
|
||||
{
|
||||
- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex) )
|
||||
+ if(down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex)))
|
||||
{
|
||||
DSL_DEBUG( DSL_DBG_ERR,
|
||||
(pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM NE mutex!"
|
||||
@@ -1034,14 +1034,14 @@ DSL_Error_t DSL_DRV_PM_DirectionMutexCon
|
||||
else
|
||||
{
|
||||
/* Unlock PM module NE Mutex*/
|
||||
- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex);
|
||||
+ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( bLock )
|
||||
{
|
||||
- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex) )
|
||||
+ if(down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex)))
|
||||
{
|
||||
DSL_DEBUG( DSL_DBG_ERR,
|
||||
(pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM FE mutex!"
|
||||
@@ -1053,7 +1053,7 @@ DSL_Error_t DSL_DRV_PM_DirectionMutexCon
|
||||
else
|
||||
{
|
||||
/* Unlock PM module FE Mutex*/
|
||||
- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex);
|
||||
+ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1139,7 +1139,7 @@ DSL_Error_t DSL_DRV_PM_Lock(DSL_Context_
|
||||
if( !(DSL_DRV_PM_CONTEXT(pContext)->bPmLock) )
|
||||
{
|
||||
/* Lock PM module Near-End Mutex*/
|
||||
- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex) )
|
||||
+ if(down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex)))
|
||||
{
|
||||
DSL_DEBUG( DSL_DBG_ERR,
|
||||
(pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM NE mutex!"
|
||||
@@ -1148,8 +1148,8 @@ DSL_Error_t DSL_DRV_PM_Lock(DSL_Context_
|
||||
return DSL_ERR_SEMAPHORE_GET;
|
||||
}
|
||||
|
||||
- /* Lock PM module Near-End Mutex*/
|
||||
- if( DSL_DRV_MUTEX_LOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex) )
|
||||
+ /* Lock PM module Far-End Mutex*/
|
||||
+ if( down_interruptible(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex)) )
|
||||
{
|
||||
DSL_DEBUG( DSL_DBG_ERR,
|
||||
(pContext, SYS_DBG_ERR"DSL[%02d]: ERROR - Couldn't lock PM FE mutex!"
|
||||
@@ -1193,10 +1193,10 @@ DSL_Error_t DSL_DRV_PM_UnLock(DSL_Contex
|
||||
if( DSL_DRV_PM_CONTEXT(pContext)->bPmLock )
|
||||
{
|
||||
/* Unlock PM module NE Mutex*/
|
||||
- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex);
|
||||
+ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmNeMutex));
|
||||
|
||||
/* Unlock PM module FE Mutex*/
|
||||
- DSL_DRV_MUTEX_UNLOCK(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex);
|
||||
+ up(&(DSL_DRV_PM_CONTEXT(pContext)->pmFeMutex));
|
||||
|
||||
/* Clear bPmLock flag*/
|
||||
DSL_DRV_PM_CONTEXT(pContext)->bPmLock = DSL_FALSE;
|
||||
@@ -436,7 +436,7 @@ endef
|
||||
|
||||
define KernelPackage/crypto-md5/octeon
|
||||
FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-md5.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,octeon-md5)
|
||||
AUTOLOAD:=$(call AutoLoad,09,octeon-md5)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-md5))
|
||||
@@ -468,12 +468,12 @@ endef
|
||||
|
||||
define KernelPackage/crypto-sha1/octeon
|
||||
FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha1.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,octeon-sha1)
|
||||
AUTOLOAD:=$(call AutoLoad,09,octeon-sha1)
|
||||
endef
|
||||
|
||||
define KernelPackage/crypto-sha1/x86/64
|
||||
FILES+=$(LINUX_DIR)/arch/x86/crypto/sha1-ssse3.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,sha1-ssse3)
|
||||
AUTOLOAD:=$(call AutoLoad,09,sha1-ssse3)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-sha1))
|
||||
@@ -493,12 +493,12 @@ endef
|
||||
|
||||
define KernelPackage/crypto-sha256/octeon
|
||||
FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha256.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,octeon-sha256)
|
||||
AUTOLOAD:=$(call AutoLoad,09,octeon-sha256)
|
||||
endef
|
||||
|
||||
define KernelPackage/crypto-sha256/x86/64
|
||||
FILES+=$(LINUX_DIR)/arch/x86/crypto/sha256-ssse3.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,sha256-ssse3)
|
||||
AUTOLOAD:=$(call AutoLoad,09,sha256-ssse3)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-sha256))
|
||||
@@ -518,12 +518,12 @@ endef
|
||||
|
||||
define KernelPackage/crypto-sha512/octeon
|
||||
FILES+=$(LINUX_DIR)/arch/mips/cavium-octeon/crypto/octeon-sha512.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,octeon-sha512)
|
||||
AUTOLOAD:=$(call AutoLoad,09,octeon-sha512)
|
||||
endef
|
||||
|
||||
define KernelPackage/crypto-sha512/x86/64
|
||||
FILES+=$(LINUX_DIR)/arch/x86/crypto/sha512-ssse3.ko
|
||||
AUTOLOAD+=$(call AutoLoad,09,sha512-ssse3)
|
||||
AUTOLOAD:=$(call AutoLoad,09,sha512-ssse3)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,crypto-sha512))
|
||||
|
||||
@@ -360,6 +360,8 @@ define KernelPackage/nf-nathelper/description
|
||||
Default Netfilter (IPv4) Conntrack and NAT helpers
|
||||
Includes:
|
||||
- ftp
|
||||
- irc
|
||||
- tftp
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,nf-nathelper))
|
||||
@@ -379,13 +381,11 @@ define KernelPackage/nf-nathelper-extra/description
|
||||
Includes:
|
||||
- amanda
|
||||
- h323
|
||||
- irc
|
||||
- mms
|
||||
- pptp
|
||||
- proto_gre
|
||||
- sip
|
||||
- snmp_basic
|
||||
- tftp
|
||||
- broadcast
|
||||
endef
|
||||
|
||||
@@ -446,9 +446,10 @@ $(eval $(call KernelPackage,ipt-nfqueue))
|
||||
define KernelPackage/ipt-debug
|
||||
TITLE:=Module for debugging/development
|
||||
KCONFIG:=$(KCONFIG_IPT_DEBUG)
|
||||
DEFAULT:=n
|
||||
FILES:=$(foreach mod,$(IPT_DEBUG-m),$(LINUX_DIR)/net/$(mod).ko)
|
||||
AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_DEBUG-m)))
|
||||
$(call AddDepends/ipt,+kmod-ipt-raw +IPV6:kmod-ipt-raw6)
|
||||
$(call AddDepends/ipt)
|
||||
endef
|
||||
|
||||
define KernelPackage/ipt-debug/description
|
||||
@@ -835,24 +836,6 @@ endef
|
||||
|
||||
$(eval $(call KernelPackage,ipt-hashlimit))
|
||||
|
||||
define KernelPackage/ipt-rpfilter
|
||||
SUBMENU:=$(NF_MENU)
|
||||
TITLE:=Netfilter rpfilter match
|
||||
DEPENDS:=+kmod-ipt-core
|
||||
KCONFIG:=$(KCONFIG_IPT_RPFILTER)
|
||||
FILES:=$(realpath \
|
||||
$(LINUX_DIR)/net/ipv4/netfilter/ipt_rpfilter.ko \
|
||||
$(LINUX_DIR)/net/ipv6/netfilter/ip6t_rpfilter.ko)
|
||||
AUTOLOAD:=$(call AutoProbe,ipt_rpfilter ip6t_rpfilter)
|
||||
$(call KernelPackage/ipt)
|
||||
endef
|
||||
|
||||
define KernelPackage/ipt-rpfilter/description
|
||||
Kernel modules support for the Netfilter rpfilter match
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,ipt-rpfilter))
|
||||
|
||||
|
||||
define KernelPackage/nft-core
|
||||
SUBMENU:=$(NF_MENU)
|
||||
|
||||
@@ -469,8 +469,7 @@ $(eval $(call KernelPackage,bcma))
|
||||
define KernelPackage/rtc-ds1307
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Dallas/Maxim DS1307 (and compatible) RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_DS1307 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1307.ko
|
||||
@@ -488,8 +487,7 @@ $(eval $(call KernelPackage,rtc-ds1307))
|
||||
define KernelPackage/rtc-ds1374
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Dallas/Maxim DS1374 RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_DS1374 \
|
||||
CONFIG_RTC_DRV_DS1374_WDT=n \
|
||||
CONFIG_RTC_CLASS=y
|
||||
@@ -507,8 +505,7 @@ $(eval $(call KernelPackage,rtc-ds1374))
|
||||
define KernelPackage/rtc-ds1672
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Dallas/Maxim DS1672 RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_DS1672 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ds1672.ko
|
||||
@@ -525,8 +522,7 @@ $(eval $(call KernelPackage,rtc-ds1672))
|
||||
define KernelPackage/rtc-isl1208
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Intersil ISL1208 RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_ISL1208 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-isl1208.ko
|
||||
@@ -543,8 +539,7 @@ $(eval $(call KernelPackage,rtc-isl1208))
|
||||
define KernelPackage/rtc-pcf8563
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Philips PCF8563/Epson RTC8564 RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_PCF8563 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf8563.ko
|
||||
@@ -562,7 +557,7 @@ $(eval $(call KernelPackage,rtc-pcf8563))
|
||||
define KernelPackage/rtc-pcf2123
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Philips PCF2123 RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=@RTC_SUPPORT
|
||||
KCONFIG:=CONFIG_RTC_DRV_PCF2123 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pcf2123.ko
|
||||
@@ -578,8 +573,7 @@ $(eval $(call KernelPackage,rtc-pcf2123))
|
||||
define KernelPackage/rtc-pt7c4338
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Pericom PT7C4338 RTC support
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_PT7C4338 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-pt7c4338.ko
|
||||
@@ -595,8 +589,7 @@ $(eval $(call KernelPackage,rtc-pt7c4338))
|
||||
define KernelPackage/rtc-rs5c372a
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A
|
||||
DEFAULT:=m if ALL_KMODS && RTC_SUPPORT
|
||||
DEPENDS:=+kmod-i2c-core
|
||||
DEPENDS:=@RTC_SUPPORT +kmod-i2c-core
|
||||
KCONFIG:=CONFIG_RTC_DRV_RS5C372 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-rs5c372.ko
|
||||
|
||||
@@ -67,7 +67,7 @@ define KernelPackage/sound-core/uml
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/sound/soundcore.ko \
|
||||
$(LINUX_DIR)/arch/um/drivers/hostaudio.ko
|
||||
AUTOLOAD+=$(call AutoLoad,30,soundcore hostaudio)
|
||||
AUTOLOAD:=$(call AutoLoad,30,soundcore hostaudio)
|
||||
endef
|
||||
|
||||
define KernelPackage/sound-core/description
|
||||
|
||||
@@ -47,7 +47,7 @@ define KernelPackage/backlight-pwm
|
||||
AUTOLOAD:=$(call AutoProbe,video pwm_bl)
|
||||
endef
|
||||
|
||||
define KernelPackage/backlight-pwm/description
|
||||
define KernelPackage/backlight/backlight-pwm
|
||||
Kernel module for PWM based Backlight support.
|
||||
endef
|
||||
|
||||
@@ -72,7 +72,7 @@ endef
|
||||
|
||||
define KernelPackage/fb/x86
|
||||
FILES+=$(LINUX_DIR)/arch/x86/video/fbdev.ko
|
||||
AUTOLOAD+=$(call AutoLoad,06,fbdev fb)
|
||||
AUTOLOAD:=$(call AutoLoad,06,fbdev fb)
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,fb))
|
||||
|
||||
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=2017-01-31
|
||||
PKG_RELEASE:=14
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_BACKPORT_VERSION:=
|
||||
PKG_HASH:=75e6d39e34cf156212a2509172a4a62b673b69eb4a1d9aaa565f7fa719fa2317
|
||||
@@ -68,8 +68,6 @@ PKG_CONFIG_DEPENDS:= \
|
||||
CONFIG_PACKAGE_BRCM80211_DEBUG \
|
||||
CONFIG_PACKAGE_IWLWIFI_DEBUG \
|
||||
CONFIG_PACKAGE_IWLWIFI_DEBUGFS \
|
||||
CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS \
|
||||
CONFIG_PACKAGE_RT2X00_DEBUG \
|
||||
CONFIG_PACKAGE_RTLWIFI_DEBUG \
|
||||
CONFIG_ATH9K_SUPPORT_PCOEM \
|
||||
CONFIG_ATH9K_TX99 \
|
||||
|
||||
@@ -268,7 +268,7 @@ mac80211_hostapd_setup_base() {
|
||||
vht_max_mpdu_hw=11454
|
||||
[ "$vht_max_mpdu_hw" != 3895 ] && \
|
||||
vht_capab="$vht_capab[MAX-MPDU-$vht_max_mpdu_hw]"
|
||||
|
||||
|
||||
# maximum A-MPDU length exponent
|
||||
vht_max_a_mpdu_len_exp_hw=0
|
||||
[ "$(($vht_cap & 58720256))" -ge 8388608 -a 1 -le "$vht_max_a_mpdu_len_exp" ] && \
|
||||
@@ -411,34 +411,6 @@ mac80211_check_ap() {
|
||||
has_ap=1
|
||||
}
|
||||
|
||||
mac80211_iw_interface_add() {
|
||||
local phy="$1"
|
||||
local ifname="$2"
|
||||
local type="$3"
|
||||
local wdsflag="$4"
|
||||
local rc
|
||||
|
||||
iw phy "$phy" interface add "$ifname" type "$type" $wdsflag
|
||||
rc="$?"
|
||||
|
||||
[ "$rc" = 233 ] && {
|
||||
# Device might have just been deleted, give the kernel some time to finish cleaning it up
|
||||
sleep 1
|
||||
|
||||
iw phy "$phy" interface add "$ifname" type "$type" $wdsflag
|
||||
rc="$?"
|
||||
}
|
||||
|
||||
[ "$rc" = 233 ] && {
|
||||
# Device might not support virtual interfaces, so the interface never got deleted in the first place.
|
||||
# Check if the interface already exists, and avoid failing in this case.
|
||||
ip link show dev "$ifname" >/dev/null 2>/dev/null && rc=0
|
||||
}
|
||||
|
||||
[ "$rc" != 0 ] && wireless_setup_failed INTERFACE_CREATION_FAILED
|
||||
return $rc
|
||||
}
|
||||
|
||||
mac80211_prepare_vif() {
|
||||
json_select config
|
||||
|
||||
@@ -465,7 +437,7 @@ mac80211_prepare_vif() {
|
||||
# It is far easier to delete and create the desired interface
|
||||
case "$mode" in
|
||||
adhoc)
|
||||
mac80211_iw_interface_add "$phy" "$ifname" adhoc || return
|
||||
iw phy "$phy" interface add "$ifname" type adhoc
|
||||
;;
|
||||
ap)
|
||||
# Hostapd will handle recreating the interface and
|
||||
@@ -479,21 +451,21 @@ mac80211_prepare_vif() {
|
||||
mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return
|
||||
|
||||
[ -n "$hostapd_ctrl" ] || {
|
||||
mac80211_iw_interface_add "$phy" "$ifname" __ap || return
|
||||
iw phy "$phy" interface add "$ifname" type __ap
|
||||
hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}"
|
||||
}
|
||||
;;
|
||||
mesh)
|
||||
mac80211_iw_interface_add "$phy" "$ifname" mp || return
|
||||
iw phy "$phy" interface add "$ifname" type mp
|
||||
;;
|
||||
monitor)
|
||||
mac80211_iw_interface_add "$phy" "$ifname" monitor || return
|
||||
iw phy "$phy" interface add "$ifname" type monitor
|
||||
;;
|
||||
sta)
|
||||
local wdsflag=
|
||||
staidx="$(($staidx + 1))"
|
||||
[ "$wds" -gt 0 ] && wdsflag="4addr on"
|
||||
mac80211_iw_interface_add "$phy" "$ifname" managed "$wdsflag" || return
|
||||
iw phy "$phy" interface add "$ifname" type managed $wdsflag
|
||||
[ "$powersave" -gt 0 ] && powersave="on" || powersave="off"
|
||||
iw "$ifname" set power_save "$powersave"
|
||||
;;
|
||||
@@ -522,12 +494,6 @@ mac80211_setup_supplicant() {
|
||||
wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl}
|
||||
}
|
||||
|
||||
mac80211_setup_supplicant_noctl() {
|
||||
wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1
|
||||
wpa_supplicant_add_network "$ifname"
|
||||
wpa_supplicant_run "$ifname"
|
||||
}
|
||||
|
||||
mac80211_setup_adhoc_htmode() {
|
||||
case "$htmode" in
|
||||
VHT20|HT20) ibss_htmode=HT20;;
|
||||
@@ -600,7 +566,7 @@ mac80211_setup_adhoc() {
|
||||
[ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate"
|
||||
|
||||
iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \
|
||||
beacon-interval $beacon_int \
|
||||
${beacon_int:+beacon-interval $beacon_int} \
|
||||
${brstr:+basic-rates $brstr} \
|
||||
${mcval:+mcast-rate $mcval} \
|
||||
${keyspec:+keys $keyspec}
|
||||
@@ -637,7 +603,7 @@ mac80211_setup_vif() {
|
||||
authsae_start_interface || failed=1
|
||||
else
|
||||
wireless_vif_parse_encryption
|
||||
mac80211_setup_supplicant_noctl || failed=1
|
||||
mac80211_setup_supplicant || failed=1
|
||||
fi
|
||||
else
|
||||
json_get_vars mesh_id mcast_rate
|
||||
@@ -680,9 +646,7 @@ mac80211_setup_vif() {
|
||||
esac
|
||||
|
||||
freq="$(get_freq "$phy" "$channel")"
|
||||
iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode \
|
||||
${mcval:+mcast-rate $mcval} \
|
||||
beacon-interval $beacon_int
|
||||
iw dev "$ifname" mesh join "$mesh_id" freq $freq $mesh_htmode ${mcval:+mcast-rate $mcval}
|
||||
fi
|
||||
|
||||
for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do
|
||||
@@ -694,7 +658,7 @@ mac80211_setup_vif() {
|
||||
wireless_vif_parse_encryption
|
||||
mac80211_setup_adhoc_htmode
|
||||
if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then
|
||||
mac80211_setup_supplicant_noctl || failed=1
|
||||
mac80211_setup_supplicant || failed=1
|
||||
else
|
||||
mac80211_setup_adhoc
|
||||
fi
|
||||
@@ -734,7 +698,7 @@ drv_mac80211_setup() {
|
||||
country chanbw distance \
|
||||
txpower antenna_gain \
|
||||
rxantenna txantenna \
|
||||
frag rts beacon_int:100 htmode
|
||||
frag rts beacon_int htmode
|
||||
json_get_values basic_rate_list basic_rate
|
||||
json_select ..
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ detect_mac80211() {
|
||||
htmode="VHT80"
|
||||
}
|
||||
|
||||
[ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
|
||||
[ -n $htmode ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
|
||||
|
||||
if [ -x /usr/bin/readlink -a -h /sys/class/ieee80211/${dev} ]; then
|
||||
path="$(readlink -f /sys/class/ieee80211/${dev}/device)"
|
||||
|
||||
@@ -85,20 +85,12 @@ country AT: DFS-ETSI
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
# Source:
|
||||
# https://www.legislation.gov.au/Details/F2016C00432
|
||||
# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B.
|
||||
# The EIRP for DFS bands can be increased by 3dB if TPC is implemented.
|
||||
# In order to allow 80MHz operation between 5650-5730MHz the upper boundary
|
||||
# of this more restrictive band has been shifted up by 5MHz from 5725MHz.
|
||||
country AU: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (36)
|
||||
(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (20), NO-OUTDOOR, AUTO-BW, DFS
|
||||
(5470 - 5600 @ 80), (27), DFS
|
||||
(5650 - 5730 @ 80), (27), DFS
|
||||
(5730 - 5850 @ 80), (36)
|
||||
(57000 - 66000 @ 2160), (43), NO-OUTDOOR
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (17), AUTO-BW
|
||||
(5250 - 5330 @ 80), (24), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
country AW: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
@@ -238,9 +230,9 @@ country BZ: DFS-JP
|
||||
|
||||
country CA: DFS-FCC
|
||||
(2402 - 2472 @ 40), (30)
|
||||
(5150 - 5250 @ 80), (23), AUTO-BW
|
||||
(5250 - 5350 @ 80), (24), DFS, AUTO-BW
|
||||
(5470 - 5600 @ 80), (24), DFS
|
||||
(5170 - 5250 @ 80), (17), AUTO-BW
|
||||
(5250 - 5330 @ 80), (24), DFS, AUTO-BW
|
||||
(5490 - 5600 @ 80), (24), DFS
|
||||
(5650 - 5730 @ 80), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
@@ -588,10 +580,11 @@ country IL: DFS-ETSI
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW
|
||||
|
||||
country IN:
|
||||
country IN: DFS-JP
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5150 - 5350 @ 160), (23)
|
||||
(5725 - 5875 @ 80), (23)
|
||||
(5170 - 5250 @ 80), (20), AUTO-BW
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5735 - 5835 @ 80), (20)
|
||||
|
||||
country IR: DFS-JP
|
||||
(2402 - 2482 @ 40), (20)
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
From 93c7018ec16bb83399dd4db61c361a6d6aba0d5a Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 8 Feb 2017 12:18:09 +0100
|
||||
Subject: [PATCH 02/19] rt2x00usb: do not anchor rx and tx urb's
|
||||
|
||||
We might kill TX or RX urb during rt2x00usb_flush_entry(), what can
|
||||
cause anchor list corruption like shown below:
|
||||
|
||||
[ 2074.035633] WARNING: CPU: 2 PID: 14480 at lib/list_debug.c:33 __list_add+0xac/0xc0
|
||||
[ 2074.035634] list_add corruption. prev->next should be next (ffff88020f362c28), but was dead000000000100. (prev=ffff8801d161bb70).
|
||||
<snip>
|
||||
[ 2074.035670] Call Trace:
|
||||
[ 2074.035672] [<ffffffff813bde47>] dump_stack+0x63/0x8c
|
||||
[ 2074.035674] [<ffffffff810a2231>] __warn+0xd1/0xf0
|
||||
[ 2074.035676] [<ffffffff810a22af>] warn_slowpath_fmt+0x5f/0x80
|
||||
[ 2074.035678] [<ffffffffa073855d>] ? rt2x00usb_register_write_lock+0x3d/0x60 [rt2800usb]
|
||||
[ 2074.035679] [<ffffffff813dbe4c>] __list_add+0xac/0xc0
|
||||
[ 2074.035681] [<ffffffff81591c6c>] usb_anchor_urb+0x4c/0xa0
|
||||
[ 2074.035683] [<ffffffffa07322af>] rt2x00usb_kick_rx_entry+0xaf/0x100 [rt2x00usb]
|
||||
[ 2074.035684] [<ffffffffa0732322>] rt2x00usb_clear_entry+0x22/0x30 [rt2x00usb]
|
||||
|
||||
To fix do not anchor TX and RX urb's, it is not needed as during
|
||||
shutdown we kill those urbs in rt2x00usb_free_entries().
|
||||
|
||||
Cc: Vishal Thanki <vishalthanki@gmail.com>
|
||||
Fixes: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB")
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
index 5a2bf9f63cd7..fe13dd07cc2a 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
@@ -319,10 +319,8 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void *data)
|
||||
entry->skb->data, length,
|
||||
rt2x00usb_interrupt_txdone, entry);
|
||||
|
||||
- usb_anchor_urb(entry_priv->urb, rt2x00dev->anchor);
|
||||
status = usb_submit_urb(entry_priv->urb, GFP_ATOMIC);
|
||||
if (status) {
|
||||
- usb_unanchor_urb(entry_priv->urb);
|
||||
if (status == -ENODEV)
|
||||
clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
|
||||
set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
|
||||
@@ -410,10 +408,8 @@ static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void *data)
|
||||
entry->skb->data, entry->skb->len,
|
||||
rt2x00usb_interrupt_rxdone, entry);
|
||||
|
||||
- usb_anchor_urb(entry_priv->urb, rt2x00dev->anchor);
|
||||
status = usb_submit_urb(entry_priv->urb, GFP_ATOMIC);
|
||||
if (status) {
|
||||
- usb_unanchor_urb(entry_priv->urb);
|
||||
if (status == -ENODEV)
|
||||
clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
|
||||
set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
From 0488a6121dfe6cbd44de15ea3627913b7549a1e9 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 8 Feb 2017 12:18:10 +0100
|
||||
Subject: [PATCH 03/19] rt2x00usb: fix anchor initialization
|
||||
|
||||
If device fail to initialize we can OOPS in rt2x00lib_remove_dev(), due
|
||||
to using uninitialized usb_anchor structure:
|
||||
|
||||
[ 855.435820] ieee80211 phy3: rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x1000 with error -19
|
||||
[ 855.435826] ieee80211 phy3: rt2800_probe_rt: Error - Invalid RT chipset 0x0000, rev 0000 detected
|
||||
[ 855.435829] ieee80211 phy3: rt2x00lib_probe_dev: Error - Failed to allocate device
|
||||
[ 855.435845] BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
|
||||
[ 855.435900] IP: _raw_spin_lock_irq+0xd/0x30
|
||||
[ 855.435926] PGD 0
|
||||
[ 855.435953] Oops: 0002 [#1] SMP
|
||||
<snip>
|
||||
[ 855.437011] Call Trace:
|
||||
[ 855.437029] ? usb_kill_anchored_urbs+0x27/0xc0
|
||||
[ 855.437061] rt2x00lib_remove_dev+0x190/0x1c0 [rt2x00lib]
|
||||
[ 855.437097] rt2x00lib_probe_dev+0x246/0x7a0 [rt2x00lib]
|
||||
[ 855.437149] ? ieee80211_roc_setup+0x9e/0xd0 [mac80211]
|
||||
[ 855.437183] ? __kmalloc+0x1af/0x1f0
|
||||
[ 855.437207] ? rt2x00usb_probe+0x13d/0xc50 [rt2x00usb]
|
||||
[ 855.437240] rt2x00usb_probe+0x155/0xc50 [rt2x00usb]
|
||||
[ 855.437273] rt2800usb_probe+0x15/0x20 [rt2800usb]
|
||||
[ 855.437304] usb_probe_interface+0x159/0x2d0
|
||||
[ 855.437333] driver_probe_device+0x2bb/0x460
|
||||
|
||||
Patch changes initialization sequence to fix the problem.
|
||||
|
||||
Cc: Vishal Thanki <vishalthanki@gmail.com>
|
||||
Fixes: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB")
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 13 ++++++++-----
|
||||
1 file changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
index fe13dd07cc2a..c696f0ad6a68 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
@@ -825,10 +825,6 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
|
||||
if (retval)
|
||||
goto exit_free_device;
|
||||
|
||||
- retval = rt2x00lib_probe_dev(rt2x00dev);
|
||||
- if (retval)
|
||||
- goto exit_free_reg;
|
||||
-
|
||||
rt2x00dev->anchor = devm_kmalloc(&usb_dev->dev,
|
||||
sizeof(struct usb_anchor),
|
||||
GFP_KERNEL);
|
||||
@@ -836,10 +832,17 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
|
||||
retval = -ENOMEM;
|
||||
goto exit_free_reg;
|
||||
}
|
||||
-
|
||||
init_usb_anchor(rt2x00dev->anchor);
|
||||
+
|
||||
+ retval = rt2x00lib_probe_dev(rt2x00dev);
|
||||
+ if (retval)
|
||||
+ goto exit_free_anchor;
|
||||
+
|
||||
return 0;
|
||||
|
||||
+exit_free_anchor:
|
||||
+ usb_kill_anchored_urbs(rt2x00dev->anchor);
|
||||
+
|
||||
exit_free_reg:
|
||||
rt2x00usb_free_reg(rt2x00dev);
|
||||
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From 80a97eae304631f57ff8560f87c0b18b95321443 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 8 Feb 2017 13:51:29 +0100
|
||||
Subject: [PATCH 04/19] rt61pci: use entry directly
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt61pci.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
index 5306a3b2622d..8adb5f3abe15 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
@@ -1903,8 +1903,7 @@ static void rt61pci_write_tx_desc(struct queue_entry *entry,
|
||||
|
||||
rt2x00_desc_read(txd, 5, &word);
|
||||
rt2x00_set_field32(&word, TXD_W5_PID_TYPE, entry->queue->qid);
|
||||
- rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE,
|
||||
- skbdesc->entry->entry_idx);
|
||||
+ rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE, entry->entry_idx);
|
||||
rt2x00_set_field32(&word, TXD_W5_TX_POWER,
|
||||
TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power));
|
||||
rt2x00_set_field32(&word, TXD_W5_WAITING_DMA_DONE_INT, 1);
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
From 2ceb813798e1fd33e71a574771828c0f298e077b Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 8 Feb 2017 13:51:30 +0100
|
||||
Subject: [PATCH 05/19] rt2x00: call entry directly in rt2x00_dump_frame
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2400pci.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2500pci.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00.h | 4 ++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00debug.c | 7 ++++---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 4 ++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt61pci.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt73usb.c | 2 +-
|
||||
10 files changed, 15 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
|
||||
index 085c5b423bdf..19874439ac40 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
|
||||
@@ -1200,7 +1200,7 @@ static void rt2400pci_write_beacon(struct queue_entry *entry,
|
||||
/*
|
||||
* Dump beacon to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
|
||||
out:
|
||||
/*
|
||||
* Enable beaconing again.
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
|
||||
index 9832fd50c793..791434de8052 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
|
||||
@@ -1349,7 +1349,7 @@ static void rt2500pci_write_beacon(struct queue_entry *entry,
|
||||
/*
|
||||
* Dump beacon to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
|
||||
out:
|
||||
/*
|
||||
* Enable beaconing again.
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
||||
index cd3ab5a9e98d..62357465fe29 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
||||
@@ -1170,7 +1170,7 @@ static void rt2500usb_write_beacon(struct queue_entry *entry,
|
||||
/*
|
||||
* Dump beacon to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
|
||||
|
||||
/*
|
||||
* USB devices cannot blindly pass the skb->len as the
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 572cdea4ca25..8223a1520316 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -1014,7 +1014,7 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
|
||||
/*
|
||||
* Dump beacon to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
|
||||
|
||||
/*
|
||||
* Write entire beacon with TXWI and padding to register.
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
index ea299c4e7ada..26869b3bef45 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -1400,11 +1400,11 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop);
|
||||
*/
|
||||
#ifdef CPTCFG_RT2X00_LIB_DEBUGFS
|
||||
void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
||||
- enum rt2x00_dump_type type, struct sk_buff *skb);
|
||||
+ enum rt2x00_dump_type type, struct queue_entry *entry);
|
||||
#else
|
||||
static inline void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
||||
enum rt2x00_dump_type type,
|
||||
- struct sk_buff *skb)
|
||||
+ struct queue_entry *entry)
|
||||
{
|
||||
}
|
||||
#endif /* CPTCFG_RT2X00_LIB_DEBUGFS */
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
|
||||
index 72ae530e4a3b..964aefdc11f0 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
|
||||
@@ -157,9 +157,10 @@ void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev,
|
||||
}
|
||||
|
||||
void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
||||
- enum rt2x00_dump_type type, struct sk_buff *skb)
|
||||
+ enum rt2x00_dump_type type, struct queue_entry *entry)
|
||||
{
|
||||
struct rt2x00debug_intf *intf = rt2x00dev->debugfs_intf;
|
||||
+ struct sk_buff *skb = entry->skb;
|
||||
struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb);
|
||||
struct sk_buff *skbcopy;
|
||||
struct rt2x00dump_hdr *dump_hdr;
|
||||
@@ -196,8 +197,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
||||
dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf);
|
||||
dump_hdr->chip_rev = cpu_to_le16(rt2x00dev->chip.rev);
|
||||
dump_hdr->type = cpu_to_le16(type);
|
||||
- dump_hdr->queue_index = skbdesc->entry->queue->qid;
|
||||
- dump_hdr->entry_index = skbdesc->entry->entry_idx;
|
||||
+ dump_hdr->queue_index = entry->queue->qid;
|
||||
+ dump_hdr->entry_index = entry->entry_idx;
|
||||
dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec);
|
||||
dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec);
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
index 4b08007f93f7..dd6678109b7e 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -363,7 +363,7 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
* Send frame to debugfs immediately, after this call is completed
|
||||
* we are going to overwrite the skb->cb array.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry);
|
||||
|
||||
/*
|
||||
* Determine if the frame has been successfully transmitted and
|
||||
@@ -772,7 +772,7 @@ void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp)
|
||||
*/
|
||||
rt2x00link_update_stats(rt2x00dev, entry->skb, &rxdesc);
|
||||
rt2x00debug_update_crypto(rt2x00dev, &rxdesc);
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry);
|
||||
|
||||
/*
|
||||
* Initialize RX status information, and send frame
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
index b2364d378774..380daf4e1b8d 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
@@ -544,7 +544,7 @@ static void rt2x00queue_write_tx_descriptor(struct queue_entry *entry,
|
||||
* All processing on the frame has been completed, this means
|
||||
* it is now ready to be dumped to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry->skb);
|
||||
+ rt2x00debug_dump_frame(queue->rt2x00dev, DUMP_FRAME_TX, entry);
|
||||
}
|
||||
|
||||
static void rt2x00queue_kick_tx_queue(struct data_queue *queue,
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
index 8adb5f3abe15..973d418b8113 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
@@ -1988,7 +1988,7 @@ static void rt61pci_write_beacon(struct queue_entry *entry,
|
||||
/*
|
||||
* Dump beacon to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
|
||||
|
||||
/*
|
||||
* Write entire beacon with descriptor and padding to register.
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt73usb.c b/drivers/net/wireless/ralink/rt2x00/rt73usb.c
|
||||
index 1a29c4d205a5..bb8d307a789f 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c
|
||||
@@ -1557,7 +1557,7 @@ static void rt73usb_write_beacon(struct queue_entry *entry,
|
||||
/*
|
||||
* Dump beacon to userspace through debugfs.
|
||||
*/
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry->skb);
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_BEACON, entry);
|
||||
|
||||
/*
|
||||
* Write entire beacon with descriptor and padding to register.
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
From cf81db30a6edcca791b1bfa5348a162471121d11 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 8 Feb 2017 13:51:31 +0100
|
||||
Subject: [PATCH 06/19] rt2x00: remove queue_entry from skbdesc
|
||||
|
||||
queue_entry field of skbdesc is not read any more, remove it to allow
|
||||
skbdesc contain other data.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 3 ---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 2 --
|
||||
2 files changed, 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
index 380daf4e1b8d..e1660b92b20c 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
@@ -83,7 +83,6 @@ struct sk_buff *rt2x00queue_alloc_rxskb(struct queue_entry *entry, gfp_t gfp)
|
||||
*/
|
||||
skbdesc = get_skb_frame_desc(skb);
|
||||
memset(skbdesc, 0, sizeof(*skbdesc));
|
||||
- skbdesc->entry = entry;
|
||||
|
||||
if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) {
|
||||
dma_addr_t skb_dma;
|
||||
@@ -689,7 +688,6 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb,
|
||||
goto out;
|
||||
}
|
||||
|
||||
- skbdesc->entry = entry;
|
||||
entry->skb = skb;
|
||||
|
||||
/*
|
||||
@@ -774,7 +772,6 @@ int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev,
|
||||
*/
|
||||
skbdesc = get_skb_frame_desc(intf->beacon->skb);
|
||||
memset(skbdesc, 0, sizeof(*skbdesc));
|
||||
- skbdesc->entry = intf->beacon;
|
||||
|
||||
/*
|
||||
* Send beacon to hardware.
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
index 2233b911a1d7..22d18818e850 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
@@ -116,8 +116,6 @@ struct skb_frame_desc {
|
||||
__le32 iv[2];
|
||||
|
||||
dma_addr_t skb_dma;
|
||||
-
|
||||
- struct queue_entry *entry;
|
||||
};
|
||||
|
||||
/**
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,84 +0,0 @@
|
||||
From 7272416609126e8910b7f0d0e3dba008aa87830c Mon Sep 17 00:00:00 2001
|
||||
From: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Tue, 14 Feb 2017 22:28:33 +0100
|
||||
Subject: [PATCH 07/19] rt2500usb: don't mark register accesses as inline
|
||||
|
||||
When CONFIG_KASAN is set, we get a rather large stack here:
|
||||
|
||||
drivers/net/wireless/ralink/rt2x00/rt2500usb.c: In function 'rt2500usb_set_device_state':
|
||||
drivers/net/wireless/ralink/rt2x00/rt2500usb.c:1074:1: error: the frame size of 3032 bytes is larger than 100 bytes [-Werror=frame-larger-than=]
|
||||
|
||||
If we don't force those functions to be inline, the compiler can figure this
|
||||
out better itself and not inline the functions when doing so would be harmful,
|
||||
reducing the stack size to a merge 256 bytes.
|
||||
|
||||
Note that there is another problem that manifests in this driver, as a result
|
||||
of the typecheck() macro causing even larger stack frames.
|
||||
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 19 +++++--------------
|
||||
1 file changed, 5 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
||||
index 62357465fe29..0d2670a56c4c 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
||||
@@ -55,7 +55,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
|
||||
* If the csr_mutex is already held then the _lock variants must
|
||||
* be used instead.
|
||||
*/
|
||||
-static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev,
|
||||
+static void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset,
|
||||
u16 *value)
|
||||
{
|
||||
@@ -66,7 +66,7 @@ static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev,
|
||||
*value = le16_to_cpu(reg);
|
||||
}
|
||||
|
||||
-static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev,
|
||||
+static void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset,
|
||||
u16 *value)
|
||||
{
|
||||
@@ -77,16 +77,7 @@ static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev,
|
||||
*value = le16_to_cpu(reg);
|
||||
}
|
||||
|
||||
-static inline void rt2500usb_register_multiread(struct rt2x00_dev *rt2x00dev,
|
||||
- const unsigned int offset,
|
||||
- void *value, const u16 length)
|
||||
-{
|
||||
- rt2x00usb_vendor_request_buff(rt2x00dev, USB_MULTI_READ,
|
||||
- USB_VENDOR_REQUEST_IN, offset,
|
||||
- value, length);
|
||||
-}
|
||||
-
|
||||
-static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev,
|
||||
+static void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset,
|
||||
u16 value)
|
||||
{
|
||||
@@ -96,7 +87,7 @@ static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev,
|
||||
®, sizeof(reg));
|
||||
}
|
||||
|
||||
-static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev,
|
||||
+static void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset,
|
||||
u16 value)
|
||||
{
|
||||
@@ -106,7 +97,7 @@ static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev,
|
||||
®, sizeof(reg), REGISTER_TIMEOUT);
|
||||
}
|
||||
|
||||
-static inline void rt2500usb_register_multiwrite(struct rt2x00_dev *rt2x00dev,
|
||||
+static void rt2500usb_register_multiwrite(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset,
|
||||
void *value, const u16 length)
|
||||
{
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
From 96609f366c6f792421e1939c5c834abbe24eb88a Mon Sep 17 00:00:00 2001
|
||||
From: Gabor Juhos <juhosg@openwrt.org>
|
||||
Date: Wed, 15 Feb 2017 10:25:04 +0100
|
||||
Subject: [PATCH 08/19] rt2x00: rt2800lib: move rt2800_drv_data declaration
|
||||
into rt2800lib.h
|
||||
|
||||
The rt2800_drv_data structure contains driver specific
|
||||
information. Move the declaration into the rt2800lib.h
|
||||
header which is a more logical place for it. Also fix
|
||||
the comment style to avoid checkpatch warning.
|
||||
|
||||
The patch contains no functional changes, it is in
|
||||
preparation for the next patch.
|
||||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 25 -------------------------
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 23 +++++++++++++++++++++++
|
||||
2 files changed, 23 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
index 256496bfbafb..0e7051d8132f 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -2987,29 +2987,4 @@ enum rt2800_eeprom_word {
|
||||
*/
|
||||
#define BCN_TBTT_OFFSET 64
|
||||
|
||||
-/*
|
||||
- * Hardware has 255 WCID table entries. First 32 entries are reserved for
|
||||
- * shared keys. Since parts of the pairwise key table might be shared with
|
||||
- * the beacon frame buffers 6 & 7 we could only use the first 222 entries.
|
||||
- */
|
||||
-#define WCID_START 33
|
||||
-#define WCID_END 222
|
||||
-#define STA_IDS_SIZE (WCID_END - WCID_START + 2)
|
||||
-
|
||||
-/*
|
||||
- * RT2800 driver data structure
|
||||
- */
|
||||
-struct rt2800_drv_data {
|
||||
- u8 calibration_bw20;
|
||||
- u8 calibration_bw40;
|
||||
- u8 bbp25;
|
||||
- u8 bbp26;
|
||||
- u8 txmixer_gain_24g;
|
||||
- u8 txmixer_gain_5g;
|
||||
- u8 max_psdu;
|
||||
- unsigned int tbtt_tick;
|
||||
- unsigned int ampdu_factor_cnt[4];
|
||||
- DECLARE_BITMAP(sta_ids, STA_IDS_SIZE);
|
||||
-};
|
||||
-
|
||||
#endif /* RT2800_H */
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
index 0a8b4df665fe..8e1ae138c3f1 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -20,6 +20,29 @@
|
||||
#ifndef RT2800LIB_H
|
||||
#define RT2800LIB_H
|
||||
|
||||
+/*
|
||||
+ * Hardware has 255 WCID table entries. First 32 entries are reserved for
|
||||
+ * shared keys. Since parts of the pairwise key table might be shared with
|
||||
+ * the beacon frame buffers 6 & 7 we could only use the first 222 entries.
|
||||
+ */
|
||||
+#define WCID_START 33
|
||||
+#define WCID_END 222
|
||||
+#define STA_IDS_SIZE (WCID_END - WCID_START + 2)
|
||||
+
|
||||
+/* RT2800 driver data structure */
|
||||
+struct rt2800_drv_data {
|
||||
+ u8 calibration_bw20;
|
||||
+ u8 calibration_bw40;
|
||||
+ u8 bbp25;
|
||||
+ u8 bbp26;
|
||||
+ u8 txmixer_gain_24g;
|
||||
+ u8 txmixer_gain_5g;
|
||||
+ u8 max_psdu;
|
||||
+ unsigned int tbtt_tick;
|
||||
+ unsigned int ampdu_factor_cnt[4];
|
||||
+ DECLARE_BITMAP(sta_ids, STA_IDS_SIZE);
|
||||
+};
|
||||
+
|
||||
struct rt2800_ops {
|
||||
void (*register_read)(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset, u32 *value);
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
From a13d985f26f6df07d5c5c0e190477628e236babc Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:05 +0100
|
||||
Subject: [PATCH 09/19] rt2800: identify station based on status WCID
|
||||
|
||||
Add framework to identify sta based on tx status WCID. This is currently
|
||||
not used, will start be utilized in the future patch.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 +++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 3 ++-
|
||||
3 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 8223a1520316..46405cce35e0 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -855,11 +855,13 @@ EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
|
||||
void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
{
|
||||
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||
+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
|
||||
struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
|
||||
struct txdone_entry_desc txdesc;
|
||||
u32 word;
|
||||
u16 mcs, real_mcs;
|
||||
int aggr, ampdu;
|
||||
+ int wcid;
|
||||
|
||||
/*
|
||||
* Obtain the status about this packet.
|
||||
@@ -872,6 +874,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
|
||||
real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
|
||||
aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
|
||||
+ wcid = rt2x00_get_field32(status, TX_STA_FIFO_WCID);
|
||||
|
||||
/*
|
||||
* If a frame was meant to be sent as a single non-aggregated MPDU
|
||||
@@ -1468,6 +1471,7 @@ int rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif,
|
||||
return 0;
|
||||
|
||||
__set_bit(wcid - WCID_START, drv_data->sta_ids);
|
||||
+ drv_data->wcid_to_sta[wcid - WCID_START] = sta;
|
||||
|
||||
/*
|
||||
* Clean up WCID attributes and write STA address to the device.
|
||||
@@ -1498,6 +1502,7 @@ int rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, struct ieee80211_sta *sta)
|
||||
* get renewed when the WCID is reused.
|
||||
*/
|
||||
rt2800_config_wcid(rt2x00dev, NULL, wcid);
|
||||
+ drv_data->wcid_to_sta[wcid - WCID_START] = NULL;
|
||||
__clear_bit(wcid - WCID_START, drv_data->sta_ids);
|
||||
|
||||
return 0;
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
index 8e1ae138c3f1..6811d677a6e7 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -41,6 +41,7 @@ struct rt2800_drv_data {
|
||||
unsigned int tbtt_tick;
|
||||
unsigned int ampdu_factor_cnt[4];
|
||||
DECLARE_BITMAP(sta_ids, STA_IDS_SIZE);
|
||||
+ struct ieee80211_sta *wcid_to_sta[STA_IDS_SIZE];
|
||||
};
|
||||
|
||||
struct rt2800_ops {
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
index 22d18818e850..9b297fce4692 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
@@ -102,7 +102,7 @@ enum skb_frame_desc_flags {
|
||||
* of the scope of the skb->data pointer.
|
||||
* @iv: IV/EIV data used during encryption/decryption.
|
||||
* @skb_dma: (PCI-only) the DMA address associated with the sk buffer.
|
||||
- * @entry: The entry to which this sk buffer belongs.
|
||||
+ * @sta: The station where sk buffer was sent.
|
||||
*/
|
||||
struct skb_frame_desc {
|
||||
u8 flags;
|
||||
@@ -116,6 +116,7 @@ struct skb_frame_desc {
|
||||
__le32 iv[2];
|
||||
|
||||
dma_addr_t skb_dma;
|
||||
+ struct ieee80211_sta *sta;
|
||||
};
|
||||
|
||||
/**
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,178 +0,0 @@
|
||||
From 5edb05afebba8f488a30db29550e55c42eea6d6a Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:06 +0100
|
||||
Subject: [PATCH 10/19] rt2x00: separte filling tx status from rt2x00lib_txdone
|
||||
|
||||
This makes rt2x00lib_txdone a bit simpler and will allow to reuse code
|
||||
in different variant of txdone which I'm preparing.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 141 +++++++++++++------------
|
||||
1 file changed, 76 insertions(+), 65 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
index dd6678109b7e..b5d90fefc96b 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_status(struct queue_entry *entry)
|
||||
return ret;
|
||||
}
|
||||
|
||||
-void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
- struct txdone_entry_desc *txdesc)
|
||||
+static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
||||
+ struct ieee80211_tx_info *tx_info,
|
||||
+ struct skb_frame_desc *skbdesc,
|
||||
+ struct txdone_entry_desc *txdesc,
|
||||
+ bool success)
|
||||
{
|
||||
- struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||
- struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb);
|
||||
- struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
|
||||
- unsigned int header_length, i;
|
||||
u8 rate_idx, rate_flags, retry_rates;
|
||||
- u8 skbdesc_flags = skbdesc->flags;
|
||||
- bool success;
|
||||
-
|
||||
- /*
|
||||
- * Unmap the skb.
|
||||
- */
|
||||
- rt2x00queue_unmap_skb(entry);
|
||||
-
|
||||
- /*
|
||||
- * Remove the extra tx headroom from the skb.
|
||||
- */
|
||||
- skb_pull(entry->skb, rt2x00dev->extra_tx_headroom);
|
||||
-
|
||||
- /*
|
||||
- * Signal that the TX descriptor is no longer in the skb.
|
||||
- */
|
||||
- skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
|
||||
-
|
||||
- /*
|
||||
- * Determine the length of 802.11 header.
|
||||
- */
|
||||
- header_length = ieee80211_get_hdrlen_from_skb(entry->skb);
|
||||
-
|
||||
- /*
|
||||
- * Remove L2 padding which was added during
|
||||
- */
|
||||
- if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD))
|
||||
- rt2x00queue_remove_l2pad(entry->skb, header_length);
|
||||
-
|
||||
- /*
|
||||
- * If the IV/EIV data was stripped from the frame before it was
|
||||
- * passed to the hardware, we should now reinsert it again because
|
||||
- * mac80211 will expect the same data to be present it the
|
||||
- * frame as it was passed to us.
|
||||
- */
|
||||
- if (rt2x00_has_cap_hw_crypto(rt2x00dev))
|
||||
- rt2x00crypto_tx_insert_iv(entry->skb, header_length);
|
||||
-
|
||||
- /*
|
||||
- * Send frame to debugfs immediately, after this call is completed
|
||||
- * we are going to overwrite the skb->cb array.
|
||||
- */
|
||||
- rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry);
|
||||
-
|
||||
- /*
|
||||
- * Determine if the frame has been successfully transmitted and
|
||||
- * remove BARs from our check list while checking for their
|
||||
- * TX status.
|
||||
- */
|
||||
- success =
|
||||
- rt2x00lib_txdone_bar_status(entry) ||
|
||||
- test_bit(TXDONE_SUCCESS, &txdesc->flags) ||
|
||||
- test_bit(TXDONE_UNKNOWN, &txdesc->flags);
|
||||
-
|
||||
- /*
|
||||
- * Update TX statistics.
|
||||
- */
|
||||
- rt2x00dev->link.qual.tx_success += success;
|
||||
- rt2x00dev->link.qual.tx_failed += !success;
|
||||
+ int i;
|
||||
|
||||
rate_idx = skbdesc->tx_rate_idx;
|
||||
rate_flags = skbdesc->tx_rate_flags;
|
||||
@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
else
|
||||
rt2x00dev->low_level_stats.dot11RTSFailureCount++;
|
||||
}
|
||||
+}
|
||||
+
|
||||
+void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
+ struct txdone_entry_desc *txdesc)
|
||||
+{
|
||||
+ struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||
+ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(entry->skb);
|
||||
+ struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
|
||||
+ u8 skbdesc_flags = skbdesc->flags;
|
||||
+ unsigned int header_length;
|
||||
+ bool success;
|
||||
+
|
||||
+ /*
|
||||
+ * Unmap the skb.
|
||||
+ */
|
||||
+ rt2x00queue_unmap_skb(entry);
|
||||
+
|
||||
+ /*
|
||||
+ * Remove the extra tx headroom from the skb.
|
||||
+ */
|
||||
+ skb_pull(entry->skb, rt2x00dev->extra_tx_headroom);
|
||||
+
|
||||
+ /*
|
||||
+ * Signal that the TX descriptor is no longer in the skb.
|
||||
+ */
|
||||
+ skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
|
||||
+
|
||||
+ /*
|
||||
+ * Determine the length of 802.11 header.
|
||||
+ */
|
||||
+ header_length = ieee80211_get_hdrlen_from_skb(entry->skb);
|
||||
+
|
||||
+ /*
|
||||
+ * Remove L2 padding which was added during
|
||||
+ */
|
||||
+ if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD))
|
||||
+ rt2x00queue_remove_l2pad(entry->skb, header_length);
|
||||
+
|
||||
+ /*
|
||||
+ * If the IV/EIV data was stripped from the frame before it was
|
||||
+ * passed to the hardware, we should now reinsert it again because
|
||||
+ * mac80211 will expect the same data to be present it the
|
||||
+ * frame as it was passed to us.
|
||||
+ */
|
||||
+ if (rt2x00_has_cap_hw_crypto(rt2x00dev))
|
||||
+ rt2x00crypto_tx_insert_iv(entry->skb, header_length);
|
||||
+
|
||||
+ /*
|
||||
+ * Send frame to debugfs immediately, after this call is completed
|
||||
+ * we are going to overwrite the skb->cb array.
|
||||
+ */
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry);
|
||||
+
|
||||
+ /*
|
||||
+ * Determine if the frame has been successfully transmitted and
|
||||
+ * remove BARs from our check list while checking for their
|
||||
+ * TX status.
|
||||
+ */
|
||||
+ success =
|
||||
+ rt2x00lib_txdone_bar_status(entry) ||
|
||||
+ test_bit(TXDONE_SUCCESS, &txdesc->flags) ||
|
||||
+ test_bit(TXDONE_UNKNOWN, &txdesc->flags);
|
||||
+
|
||||
+ /*
|
||||
+ * Update TX statistics.
|
||||
+ */
|
||||
+ rt2x00dev->link.qual.tx_success += success;
|
||||
+ rt2x00dev->link.qual.tx_failed += !success;
|
||||
+
|
||||
+ rt2x00lib_fill_tx_status(rt2x00dev, tx_info, skbdesc, txdesc, success);
|
||||
|
||||
/*
|
||||
* Only send the status report to mac80211 when it's a frame
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
From 56646adf9cd60b488ddc5633a2d9aa1f30efa5db Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:07 +0100
|
||||
Subject: [PATCH 11/19] rt2x00: separte clearing entry from rt2x00lib_txdone
|
||||
|
||||
This makes rt2x00lib_txdone a bit simpler and will allow to reuse
|
||||
code in different variant of txdone which I'm preparing.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 51 +++++++++++++++-----------
|
||||
1 file changed, 29 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
index b5d90fefc96b..03b368ac9cb6 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -391,6 +391,32 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
||||
}
|
||||
}
|
||||
|
||||
+static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev,
|
||||
+ struct queue_entry *entry)
|
||||
+{
|
||||
+ /*
|
||||
+ * Make this entry available for reuse.
|
||||
+ */
|
||||
+ entry->skb = NULL;
|
||||
+ entry->flags = 0;
|
||||
+
|
||||
+ rt2x00dev->ops->lib->clear_entry(entry);
|
||||
+
|
||||
+ rt2x00queue_index_inc(entry, Q_INDEX_DONE);
|
||||
+
|
||||
+ /*
|
||||
+ * If the data queue was below the threshold before the txdone
|
||||
+ * handler we must make sure the packet queue in the mac80211 stack
|
||||
+ * is reenabled when the txdone handler has finished. This has to be
|
||||
+ * serialized with rt2x00mac_tx(), otherwise we can wake up queue
|
||||
+ * before it was stopped.
|
||||
+ */
|
||||
+ spin_lock_bh(&entry->queue->tx_lock);
|
||||
+ if (!rt2x00queue_threshold(entry->queue))
|
||||
+ rt2x00queue_unpause_queue(entry->queue);
|
||||
+ spin_unlock_bh(&entry->queue->tx_lock);
|
||||
+}
|
||||
+
|
||||
void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
struct txdone_entry_desc *txdesc)
|
||||
{
|
||||
@@ -471,30 +497,11 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
ieee80211_tx_status(rt2x00dev->hw, entry->skb);
|
||||
else
|
||||
ieee80211_tx_status_ni(rt2x00dev->hw, entry->skb);
|
||||
- } else
|
||||
+ } else {
|
||||
dev_kfree_skb_any(entry->skb);
|
||||
+ }
|
||||
|
||||
- /*
|
||||
- * Make this entry available for reuse.
|
||||
- */
|
||||
- entry->skb = NULL;
|
||||
- entry->flags = 0;
|
||||
-
|
||||
- rt2x00dev->ops->lib->clear_entry(entry);
|
||||
-
|
||||
- rt2x00queue_index_inc(entry, Q_INDEX_DONE);
|
||||
-
|
||||
- /*
|
||||
- * If the data queue was below the threshold before the txdone
|
||||
- * handler we must make sure the packet queue in the mac80211 stack
|
||||
- * is reenabled when the txdone handler has finished. This has to be
|
||||
- * serialized with rt2x00mac_tx(), otherwise we can wake up queue
|
||||
- * before it was stopped.
|
||||
- */
|
||||
- spin_lock_bh(&entry->queue->tx_lock);
|
||||
- if (!rt2x00queue_threshold(entry->queue))
|
||||
- rt2x00queue_unpause_queue(entry->queue);
|
||||
- spin_unlock_bh(&entry->queue->tx_lock);
|
||||
+ rt2x00lib_clear_entry(rt2x00dev, entry);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2x00lib_txdone);
|
||||
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
From a09305d052166cb489402a63a5d275e954e0b923 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:08 +0100
|
||||
Subject: [PATCH 12/19] rt2x00: add txdone nomatch function
|
||||
|
||||
This txdone nomatch function will be used when we get status from the HW,
|
||||
but we could not match it with any sent skb.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 ++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 50 ++++++++++++++++++++++++++
|
||||
2 files changed, 52 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
index 340787894c69..91ba10fdf732 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -1425,6 +1425,8 @@ void rt2x00lib_dmastart(struct queue_entry *entry);
|
||||
void rt2x00lib_dmadone(struct queue_entry *entry);
|
||||
void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
struct txdone_entry_desc *txdesc);
|
||||
+void rt2x00lib_txdone_nomatch(struct queue_entry *entry,
|
||||
+ struct txdone_entry_desc *txdesc);
|
||||
void rt2x00lib_txdone_noinfo(struct queue_entry *entry, u32 status);
|
||||
void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp);
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
index 03b368ac9cb6..90fc259fb5bc 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -417,6 +417,56 @@ static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev,
|
||||
spin_unlock_bh(&entry->queue->tx_lock);
|
||||
}
|
||||
|
||||
+void rt2x00lib_txdone_nomatch(struct queue_entry *entry,
|
||||
+ struct txdone_entry_desc *txdesc)
|
||||
+{
|
||||
+ struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||
+ struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb);
|
||||
+ struct ieee80211_tx_info txinfo = {};
|
||||
+ bool success;
|
||||
+
|
||||
+ /*
|
||||
+ * Unmap the skb.
|
||||
+ */
|
||||
+ rt2x00queue_unmap_skb(entry);
|
||||
+
|
||||
+ /*
|
||||
+ * Signal that the TX descriptor is no longer in the skb.
|
||||
+ */
|
||||
+ skbdesc->flags &= ~SKBDESC_DESC_IN_SKB;
|
||||
+
|
||||
+ /*
|
||||
+ * Send frame to debugfs immediately, after this call is completed
|
||||
+ * we are going to overwrite the skb->cb array.
|
||||
+ */
|
||||
+ rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry);
|
||||
+
|
||||
+ /*
|
||||
+ * Determine if the frame has been successfully transmitted and
|
||||
+ * remove BARs from our check list while checking for their
|
||||
+ * TX status.
|
||||
+ */
|
||||
+ success =
|
||||
+ rt2x00lib_txdone_bar_status(entry) ||
|
||||
+ test_bit(TXDONE_SUCCESS, &txdesc->flags);
|
||||
+
|
||||
+ if (!test_bit(TXDONE_UNKNOWN, &txdesc->flags)) {
|
||||
+ /*
|
||||
+ * Update TX statistics.
|
||||
+ */
|
||||
+ rt2x00dev->link.qual.tx_success += success;
|
||||
+ rt2x00dev->link.qual.tx_failed += !success;
|
||||
+
|
||||
+ rt2x00lib_fill_tx_status(rt2x00dev, &txinfo, skbdesc, txdesc,
|
||||
+ success);
|
||||
+ ieee80211_tx_status_noskb(rt2x00dev->hw, skbdesc->sta, &txinfo);
|
||||
+ }
|
||||
+
|
||||
+ dev_kfree_skb_any(entry->skb);
|
||||
+ rt2x00lib_clear_entry(rt2x00dev, entry);
|
||||
+}
|
||||
+EXPORT_SYMBOL_GPL(rt2x00lib_txdone_nomatch);
|
||||
+
|
||||
void rt2x00lib_txdone(struct queue_entry *entry,
|
||||
struct txdone_entry_desc *txdesc)
|
||||
{
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
From ec80ad70d778af7665992672896633ebd3b02ac8 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:09 +0100
|
||||
Subject: [PATCH 13/19] rt2x00: fixup fill_tx_status for nomatch case
|
||||
|
||||
Add bits rt2x00lib_fill_tx_status() when filling status in nomatch
|
||||
case and hopefully do not break the function for existing cases.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 6 +++++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 1 +
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
index 90fc259fb5bc..e95d2aad3b3f 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -357,6 +357,9 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
||||
if (i < (IEEE80211_TX_MAX_RATES - 1))
|
||||
tx_info->status.rates[i].idx = -1; /* terminate */
|
||||
|
||||
+ if (test_bit(TXDONE_NO_ACK_REQ, &txdesc->flags))
|
||||
+ tx_info->flags |= IEEE80211_TX_CTL_NO_ACK;
|
||||
+
|
||||
if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) {
|
||||
if (success)
|
||||
tx_info->flags |= IEEE80211_TX_STAT_ACK;
|
||||
@@ -375,7 +378,8 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
||||
*/
|
||||
if (test_bit(TXDONE_AMPDU, &txdesc->flags) ||
|
||||
tx_info->flags & IEEE80211_TX_CTL_AMPDU) {
|
||||
- tx_info->flags |= IEEE80211_TX_STAT_AMPDU;
|
||||
+ tx_info->flags |= IEEE80211_TX_STAT_AMPDU |
|
||||
+ IEEE80211_TX_CTL_AMPDU;
|
||||
tx_info->status.ampdu_len = 1;
|
||||
tx_info->status.ampdu_ack_len = success ? 1 : 0;
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
index 9b297fce4692..c78fb8c8838a 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
||||
@@ -215,6 +215,7 @@ enum txdone_entry_desc_flags {
|
||||
TXDONE_FAILURE,
|
||||
TXDONE_EXCESSIVE_RETRY,
|
||||
TXDONE_AMPDU,
|
||||
+ TXDONE_NO_ACK_REQ,
|
||||
};
|
||||
|
||||
/**
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,191 +0,0 @@
|
||||
From 293dff78ee058ec1e0b90e05a803c512b6a2097f Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:10 +0100
|
||||
Subject: [PATCH 14/19] rt2x00: use txdone_nomatch on rt2800usb
|
||||
|
||||
If we do not match skb entry, provide tx status via nomatch procedure.
|
||||
|
||||
Currently in that case we do rt2x00lib_txdone_noinfo(TXDONE_NOINFO),
|
||||
which actually assume that entry->skb was posted without retries and
|
||||
provide rate saved in skb desc as successful. Patch changed that to
|
||||
rate read from TX_STAT_FIFO, however still do not provide correct
|
||||
number of retries.
|
||||
|
||||
On SoC/PCI devices we keep providing status via standard txdone
|
||||
procedure, no change in those devices, though we should thing about it.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 31 ++++++++++++++++++++-----
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 18 ++++++--------
|
||||
4 files changed, 35 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 46405cce35e0..4a7bec708a13 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -852,7 +852,8 @@ void rt2800_process_rxwi(struct queue_entry *entry,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
|
||||
|
||||
-void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
+void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
||||
+ bool match)
|
||||
{
|
||||
struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
||||
struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
|
||||
@@ -860,8 +861,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
struct txdone_entry_desc txdesc;
|
||||
u32 word;
|
||||
u16 mcs, real_mcs;
|
||||
- int aggr, ampdu;
|
||||
- int wcid;
|
||||
+ int aggr, ampdu, wcid, ack_req;
|
||||
|
||||
/*
|
||||
* Obtain the status about this packet.
|
||||
@@ -875,6 +875,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
|
||||
aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
|
||||
wcid = rt2x00_get_field32(status, TX_STA_FIFO_WCID);
|
||||
+ ack_req = rt2x00_get_field32(status, TX_STA_FIFO_TX_ACK_REQUIRED);
|
||||
|
||||
/*
|
||||
* If a frame was meant to be sent as a single non-aggregated MPDU
|
||||
@@ -891,8 +892,12 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
* Hence, replace the requested rate with the real tx rate to not
|
||||
* confuse the rate control algortihm by providing clearly wrong
|
||||
* data.
|
||||
- */
|
||||
- if (unlikely(aggr == 1 && ampdu == 0 && real_mcs != mcs)) {
|
||||
+ *
|
||||
+ * FIXME: if we do not find matching entry, we tell that frame was
|
||||
+ * posted without any retries. We need to find a way to fix that
|
||||
+ * and provide retry count.
|
||||
+ */
|
||||
+ if (unlikely((aggr == 1 && ampdu == 0 && real_mcs != mcs)) || !match) {
|
||||
skbdesc->tx_rate_idx = real_mcs;
|
||||
mcs = real_mcs;
|
||||
}
|
||||
@@ -900,6 +905,9 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
if (aggr == 1 || ampdu == 1)
|
||||
__set_bit(TXDONE_AMPDU, &txdesc.flags);
|
||||
|
||||
+ if (!ack_req)
|
||||
+ __set_bit(TXDONE_NO_ACK_REQ, &txdesc.flags);
|
||||
+
|
||||
/*
|
||||
* Ralink has a retry mechanism using a global fallback
|
||||
* table. We setup this fallback table to try the immediate
|
||||
@@ -931,7 +939,18 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
||||
if (txdesc.retry)
|
||||
__set_bit(TXDONE_FALLBACK, &txdesc.flags);
|
||||
|
||||
- rt2x00lib_txdone(entry, &txdesc);
|
||||
+ if (!match) {
|
||||
+ /* RCU assures non-null sta will not be freed by mac80211. */
|
||||
+ rcu_read_lock();
|
||||
+ if (likely(wcid >= WCID_START && wcid <= WCID_END))
|
||||
+ skbdesc->sta = drv_data->wcid_to_sta[wcid - WCID_START];
|
||||
+ else
|
||||
+ skbdesc->sta = NULL;
|
||||
+ rt2x00lib_txdone_nomatch(entry, &txdesc);
|
||||
+ rcu_read_unlock();
|
||||
+ } else {
|
||||
+ rt2x00lib_txdone(entry, &txdesc);
|
||||
+ }
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
index 6811d677a6e7..d9ef260d542a 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -191,7 +191,8 @@ void rt2800_write_tx_data(struct queue_entry *entry,
|
||||
struct txentry_desc *txdesc);
|
||||
void rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc);
|
||||
|
||||
-void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32* txwi);
|
||||
+void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
||||
+ bool match);
|
||||
|
||||
void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc);
|
||||
void rt2800_clear_beacon(struct queue_entry *entry);
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
index de4790b41be7..3ab3b5323897 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
@@ -239,7 +239,7 @@ static bool rt2800mmio_txdone_release_entries(struct queue_entry *entry,
|
||||
{
|
||||
if (test_bit(ENTRY_DATA_STATUS_SET, &entry->flags)) {
|
||||
rt2800_txdone_entry(entry, entry->status,
|
||||
- rt2800mmio_get_txwi(entry));
|
||||
+ rt2800mmio_get_txwi(entry), true);
|
||||
return false;
|
||||
}
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
||||
index 205a7b8ac8a7..f11e3f532a84 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
||||
@@ -501,8 +501,7 @@ static int rt2800usb_get_tx_data_len(struct queue_entry *entry)
|
||||
/*
|
||||
* TX control handlers
|
||||
*/
|
||||
-static enum txdone_entry_desc_flags
|
||||
-rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
|
||||
+static bool rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
|
||||
{
|
||||
__le32 *txwi;
|
||||
u32 word;
|
||||
@@ -515,7 +514,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
|
||||
* frame.
|
||||
*/
|
||||
if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
|
||||
- return TXDONE_FAILURE;
|
||||
+ return false;
|
||||
|
||||
wcid = rt2x00_get_field32(reg, TX_STA_FIFO_WCID);
|
||||
ack = rt2x00_get_field32(reg, TX_STA_FIFO_TX_ACK_REQUIRED);
|
||||
@@ -537,10 +536,10 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
|
||||
rt2x00_dbg(entry->queue->rt2x00dev,
|
||||
"TX status report missed for queue %d entry %d\n",
|
||||
entry->queue->qid, entry->entry_idx);
|
||||
- return TXDONE_UNKNOWN;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
- return TXDONE_SUCCESS;
|
||||
+ return true;
|
||||
}
|
||||
|
||||
static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
|
||||
@@ -549,7 +548,7 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
|
||||
struct queue_entry *entry;
|
||||
u32 reg;
|
||||
u8 qid;
|
||||
- enum txdone_entry_desc_flags done_status;
|
||||
+ bool match;
|
||||
|
||||
while (kfifo_get(&rt2x00dev->txstatus_fifo, ®)) {
|
||||
/*
|
||||
@@ -574,11 +573,8 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
|
||||
break;
|
||||
}
|
||||
|
||||
- done_status = rt2800usb_txdone_entry_check(entry, reg);
|
||||
- if (likely(done_status == TXDONE_SUCCESS))
|
||||
- rt2800_txdone_entry(entry, reg, rt2800usb_get_txwi(entry));
|
||||
- else
|
||||
- rt2x00lib_txdone_noinfo(entry, done_status);
|
||||
+ match = rt2800usb_txdone_entry_check(entry, reg);
|
||||
+ rt2800_txdone_entry(entry, reg, rt2800usb_get_txwi(entry), match);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
From 9d7a7a4d2b02bcd30fb5fe4270278212353cc332 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:11 +0100
|
||||
Subject: [PATCH 15/19] rt2800: status based rate flags for nomatch case
|
||||
|
||||
We use skb_desc->tx_rate_flags from entry as rate[].flags even if
|
||||
skb does not match status. Patch corrects flags and also fixes
|
||||
mcs for legacy rates.
|
||||
|
||||
rt2800_rate_from_status() is based on Felix's mt76
|
||||
mt76x2_mac_process_tx_rate() function.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 2 ++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 35 +++++++++++++++++++++++++-
|
||||
2 files changed, 36 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
index 0e7051d8132f..480b08601785 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -1760,6 +1760,8 @@
|
||||
#define TX_STA_FIFO_WCID FIELD32(0x0000ff00)
|
||||
#define TX_STA_FIFO_SUCCESS_RATE FIELD32(0xffff0000)
|
||||
#define TX_STA_FIFO_MCS FIELD32(0x007f0000)
|
||||
+#define TX_STA_FIFO_BW FIELD32(0x00800000)
|
||||
+#define TX_STA_FIFO_SGI FIELD32(0x01000000)
|
||||
#define TX_STA_FIFO_PHYMODE FIELD32(0xc0000000)
|
||||
|
||||
/*
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 4a7bec708a13..8d00c599e47a 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -852,6 +852,39 @@ void rt2800_process_rxwi(struct queue_entry *entry,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
|
||||
|
||||
+static void rt2800_rate_from_status(struct skb_frame_desc *skbdesc,
|
||||
+ u32 status, enum nl80211_band band)
|
||||
+{
|
||||
+ u8 flags = 0;
|
||||
+ u8 idx = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
|
||||
+
|
||||
+ switch (rt2x00_get_field32(status, TX_STA_FIFO_PHYMODE)) {
|
||||
+ case RATE_MODE_HT_GREENFIELD:
|
||||
+ flags |= IEEE80211_TX_RC_GREEN_FIELD;
|
||||
+ /* fall through */
|
||||
+ case RATE_MODE_HT_MIX:
|
||||
+ flags |= IEEE80211_TX_RC_MCS;
|
||||
+ break;
|
||||
+ case RATE_MODE_OFDM:
|
||||
+ if (band == NL80211_BAND_2GHZ)
|
||||
+ idx += 4;
|
||||
+ break;
|
||||
+ case RATE_MODE_CCK:
|
||||
+ if (idx >= 8)
|
||||
+ idx -= 8;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (rt2x00_get_field32(status, TX_STA_FIFO_BW))
|
||||
+ flags |= IEEE80211_TX_RC_40_MHZ_WIDTH;
|
||||
+
|
||||
+ if (rt2x00_get_field32(status, TX_STA_FIFO_SGI))
|
||||
+ flags |= IEEE80211_TX_RC_SHORT_GI;
|
||||
+
|
||||
+ skbdesc->tx_rate_idx = idx;
|
||||
+ skbdesc->tx_rate_flags = flags;
|
||||
+}
|
||||
+
|
||||
void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
||||
bool match)
|
||||
{
|
||||
@@ -898,7 +931,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
||||
* and provide retry count.
|
||||
*/
|
||||
if (unlikely((aggr == 1 && ampdu == 0 && real_mcs != mcs)) || !match) {
|
||||
- skbdesc->tx_rate_idx = real_mcs;
|
||||
+ rt2800_rate_from_status(skbdesc, status, rt2x00dev->curr_band);
|
||||
mcs = real_mcs;
|
||||
}
|
||||
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
From fb47ada8dc3c30c8e7b415da155742b49536c61e Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:12 +0100
|
||||
Subject: [PATCH 16/19] rt2800: use TXOP_BACKOFF for probe frames
|
||||
|
||||
Even if we do not set AMPDU bit in TXWI, device still can aggregate
|
||||
frame and send it with rate not corresponding to requested. That mean
|
||||
we can do not sent probe frames with requested rate. To prevent that
|
||||
use TXOP_BACKOFF for probe frames.
|
||||
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 ++++---
|
||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
index e1660b92b20c..a2c1ca5c76d1 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
@@ -372,15 +372,16 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev,
|
||||
|
||||
/*
|
||||
* Determine IFS values
|
||||
- * - Use TXOP_BACKOFF for management frames except beacons
|
||||
+ * - Use TXOP_BACKOFF for probe and management frames except beacons
|
||||
* - Use TXOP_SIFS for fragment bursts
|
||||
* - Use TXOP_HTTXOP for everything else
|
||||
*
|
||||
* Note: rt2800 devices won't use CTS protection (if used)
|
||||
* for frames not transmitted with TXOP_HTTXOP
|
||||
*/
|
||||
- if (ieee80211_is_mgmt(hdr->frame_control) &&
|
||||
- !ieee80211_is_beacon(hdr->frame_control))
|
||||
+ if ((ieee80211_is_mgmt(hdr->frame_control) &&
|
||||
+ !ieee80211_is_beacon(hdr->frame_control)) ||
|
||||
+ (tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE))
|
||||
txdesc->u.ht.txop = TXOP_BACKOFF;
|
||||
else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT))
|
||||
txdesc->u.ht.txop = TXOP_SIFS;
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From dd35cc0896faff5ed9d22eac9ea4a1920e2eec0c Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Wed, 15 Feb 2017 10:25:13 +0100
|
||||
Subject: [PATCH 17/19] rt2x00: fix rt2x00debug_dump_frame comment
|
||||
|
||||
Reported-by: Jeroen Roovers <jer@airfi.aero>
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
index 91ba10fdf732..ce340bfd71a0 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -1396,7 +1396,7 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop);
|
||||
* rt2x00debug_dump_frame - Dump a frame to userspace through debugfs.
|
||||
* @rt2x00dev: Pointer to &struct rt2x00_dev.
|
||||
* @type: The type of frame that is being dumped.
|
||||
- * @skb: The skb containing the frame to be dumped.
|
||||
+ * @entry: The queue entry containing the frame to be dumped.
|
||||
*/
|
||||
#ifdef CPTCFG_RT2X00_LIB_DEBUGFS
|
||||
void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
From 5ce33b603063f36272fcfb1b4a5fde69f46eca88 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Thu, 9 Mar 2017 00:54:22 +0100
|
||||
Subject: [PATCH 18/19] rt2x00: fix TX_PWR_CFG_4 register definition
|
||||
|
||||
Some of the macros used to describe the TX_PWR_CFG_4 register accidentally
|
||||
refer to TX_PWR_CFG_3, probably a copy&paste error. Fix that.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
index 480b08601785..fd1dbd956bad 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -1171,10 +1171,10 @@
|
||||
#define TX_PWR_CFG_4_UKNOWN7 FIELD32(0x00000f00)
|
||||
#define TX_PWR_CFG_4_UKNOWN8 FIELD32(0x0000f000)
|
||||
/* bits for 3T devices */
|
||||
-#define TX_PWR_CFG_3_STBC4_CH0 FIELD32(0x0000000f)
|
||||
-#define TX_PWR_CFG_3_STBC4_CH1 FIELD32(0x000000f0)
|
||||
-#define TX_PWR_CFG_3_STBC6_CH0 FIELD32(0x00000f00)
|
||||
-#define TX_PWR_CFG_3_STBC6_CH1 FIELD32(0x0000f000)
|
||||
+#define TX_PWR_CFG_4_STBC4_CH0 FIELD32(0x0000000f)
|
||||
+#define TX_PWR_CFG_4_STBC4_CH1 FIELD32(0x000000f0)
|
||||
+#define TX_PWR_CFG_4_STBC6_CH0 FIELD32(0x00000f00)
|
||||
+#define TX_PWR_CFG_4_STBC6_CH1 FIELD32(0x0000f000)
|
||||
|
||||
/*
|
||||
* TX_PIN_CFG:
|
||||
--
|
||||
2.12.1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,54 +0,0 @@
|
||||
From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Mon, 10 Apr 2017 14:28:14 +0200
|
||||
Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620
|
||||
To: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
||||
linux-wireless@vger.kernel.org,
|
||||
Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
The base value used for MT7620 differs from Rt5392 which resulted in
|
||||
quite bad RX signal quality. Fix this by using the correct base value as
|
||||
well as the LNA calibration values for HT20.
|
||||
|
||||
Reported-by: Tom Psyborg <pozega.tomislav@gmail.com>
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index ba06ac2d876d..7135519a638c 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
||||
}
|
||||
|
||||
if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
|
||||
+ reg = 0x10;
|
||||
+ if (!conf_is_ht40(conf)) {
|
||||
+ if (rt2x00_rt(rt2x00dev, RT6352) &&
|
||||
+ rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
||||
+ reg |= 0x5;
|
||||
+ } else {
|
||||
+ reg |= 0xa;
|
||||
+ }
|
||||
+ }
|
||||
rt2800_bbp_write(rt2x00dev, 195, 141);
|
||||
- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
|
||||
+ rt2800_bbp_write(rt2x00dev, 196, reg);
|
||||
|
||||
/* AGC init */
|
||||
- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
|
||||
+ if (rt2x00_rt(rt2x00dev, RT6352))
|
||||
+ reg = 0x04;
|
||||
+ else
|
||||
+ reg = rf->channel <= 14 ? 0x1c : 0x24;
|
||||
+
|
||||
+ reg += 2 * rt2x00dev->lna_gain;
|
||||
rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
|
||||
|
||||
rt2800_iq_calibrate(rt2x00dev, rf->channel);
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
From feb608c7986c14bab153f31f8e96f251072e6578 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Mon, 10 Apr 2017 15:33:20 +0200
|
||||
Subject: [PATCH 2/2] rt2800: do VCO calibration after programming ALC
|
||||
To: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
||||
linux-wireless@vger.kernel.org,
|
||||
Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
Scanning fails if we don't do VCO calibration every time.
|
||||
The vendor driver duplicates the VCO calibration function into the
|
||||
channel switching logic, we can do the same with less duplication.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 7135519a638c..870bf315f98b 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3407,6 +3407,8 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev,
|
||||
rt2800_rfcsr_write(rt2x00dev, 42, 0x5b);
|
||||
}
|
||||
rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl);
|
||||
+
|
||||
+ rt2800_vco_calibration(rt2x00dev);
|
||||
}
|
||||
|
||||
static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
From 02c452f317b4a4d06c433c294e66896a389731c1 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Tue, 18 Apr 2017 11:09:53 +0200
|
||||
Subject: [PATCH] rt2800: fix mt7620 vco calibration registers
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
To: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
||||
linux-wireless@vger.kernel.org,
|
||||
Kalle Valo <kvalo@codeaurora.org>,
|
||||
Tom Psyborg <pozega.tomislav@gmail.com>
|
||||
|
||||
Use register values from init LNA function instead of the ones from
|
||||
restore LNA function. Apply register values based on rx path
|
||||
configuration.
|
||||
|
||||
Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 870bf315f98b..86cffee6876a 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4932,7 +4932,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
||||
rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
|
||||
|
||||
if (rt2x00_rt(rt2x00dev, RT6352)) {
|
||||
- if (rt2x00dev->default_ant.tx_chain_num == 1) {
|
||||
+ if (rt2x00dev->default_ant.rx_chain_num == 1) {
|
||||
rt2800_bbp_write(rt2x00dev, 91, 0x07);
|
||||
rt2800_bbp_write(rt2x00dev, 95, 0x1A);
|
||||
rt2800_bbp_write(rt2x00dev, 195, 128);
|
||||
@@ -4953,8 +4953,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
||||
}
|
||||
|
||||
if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
||||
- rt2800_bbp_write(rt2x00dev, 75, 0x60);
|
||||
- rt2800_bbp_write(rt2x00dev, 76, 0x44);
|
||||
+ rt2800_bbp_write(rt2x00dev, 75, 0x68);
|
||||
+ rt2800_bbp_write(rt2x00dev, 76, 0x4C);
|
||||
rt2800_bbp_write(rt2x00dev, 79, 0x1C);
|
||||
rt2800_bbp_write(rt2x00dev, 80, 0x0C);
|
||||
rt2800_bbp_write(rt2x00dev, 82, 0xB6);
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
From c426cb0ed15ee12dfdc8c53ddd1449ac617023cf Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Tue, 18 Apr 2017 11:45:37 +0200
|
||||
Subject: [PATCH] rt2800: fix mt7620 E2 channel registers
|
||||
To: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
||||
linux-wireless@vger.kernel.org,
|
||||
Kalle Valo <kvalo@codeaurora.org>,
|
||||
Tom Psyborg <pozega.tomislav@gmail.com>
|
||||
|
||||
From: Tomislav Požega <pozega.tomislav@gmail.com>
|
||||
|
||||
update RF register 47 and 54 values according to vendor driver
|
||||
|
||||
Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
index 86cffee6876a..8585cdc3de53 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -8145,9 +8145,11 @@ static void rt2800_init_rfcsr_6352(struct rt2x00_dev *rt2x00dev)
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3);
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5);
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
|
||||
- rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69);
|
||||
+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0x67);
|
||||
+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0x69);
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF);
|
||||
- rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20);
|
||||
+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
|
||||
+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x20);
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66);
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF);
|
||||
rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C);
|
||||
--
|
||||
2.12.2
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
config RT2X00_LIB_SOC
|
||||
- tristate
|
||||
+ tristate "RT2x00 SoC support"
|
||||
+ depends on SOC_RT288X || SOC_RT305X || SOC_MT7620
|
||||
+ depends on SOC_RT288X || SOC_RT305X
|
||||
depends on m
|
||||
select RT2X00_LIB
|
||||
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
From 52a192362932f333a7ebafd581c4d9b81da2fec8 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Mon, 28 May 2018 13:25:06 +0200
|
||||
Subject: [PATCH] Revert "rt2800: use TXOP_BACKOFF for probe frames"
|
||||
|
||||
This reverts commit fb47ada8dc3c30c8e7b415da155742b49536c61e.
|
||||
|
||||
In some situations when we set TXOP_BACKOFF, the probe frame is
|
||||
not sent at all. What it worse then sending probe frame as part
|
||||
of AMPDU and can degrade 11n performance to 11g rates.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
index a6884e73d2ab..7ddee980048b 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
||||
@@ -372,16 +372,15 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev,
|
||||
|
||||
/*
|
||||
* Determine IFS values
|
||||
- * - Use TXOP_BACKOFF for probe and management frames except beacons
|
||||
+ * - Use TXOP_BACKOFF for management frames except beacons
|
||||
* - Use TXOP_SIFS for fragment bursts
|
||||
* - Use TXOP_HTTXOP for everything else
|
||||
*
|
||||
* Note: rt2800 devices won't use CTS protection (if used)
|
||||
* for frames not transmitted with TXOP_HTTXOP
|
||||
*/
|
||||
- if ((ieee80211_is_mgmt(hdr->frame_control) &&
|
||||
- !ieee80211_is_beacon(hdr->frame_control)) ||
|
||||
- (tx_info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE))
|
||||
+ if (ieee80211_is_mgmt(hdr->frame_control) &&
|
||||
+ !ieee80211_is_beacon(hdr->frame_control))
|
||||
txdesc->u.ht.txop = TXOP_BACKOFF;
|
||||
else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT))
|
||||
txdesc->u.ht.txop = TXOP_SIFS;
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
From 6232c17438ed01f43665197db5a98a4a4f77ef47 Mon Sep 17 00:00:00 2001
|
||||
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Date: Thu, 2 Feb 2017 10:57:40 +0100
|
||||
Subject: [PATCH 01/19] rt2x00: avoid introducing a USB dependency in the
|
||||
Subject: [PATCH] rt2x00: avoid introducing a USB dependency in the
|
||||
rt2x00lib module
|
||||
|
||||
As reported by Felix:
|
||||
@@ -17,17 +16,11 @@ Cc: Vishal Thanki <vishalthanki@gmail.com>
|
||||
Reported-by: Felix Fietkau <nbd@nbd.name>
|
||||
Fixes: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB")
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 23 ++++++++---------------
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 5 +++++
|
||||
2 files changed, 13 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
index 8fcbc8dc94c1..4b08007f93f7 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
|
||||
@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_
|
||||
cancel_work_sync(&rt2x00dev->intf_work);
|
||||
cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
|
||||
cancel_work_sync(&rt2x00dev->sleep_work);
|
||||
@@ -49,7 +42,7 @@ index 8fcbc8dc94c1..4b08007f93f7 100644
|
||||
|
||||
/*
|
||||
* Kill the tx status tasklet.
|
||||
@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
|
||||
@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_
|
||||
*/
|
||||
rt2x00lib_uninitialize(rt2x00dev);
|
||||
|
||||
@@ -64,11 +57,9 @@ index 8fcbc8dc94c1..4b08007f93f7 100644
|
||||
/*
|
||||
* Free extra components
|
||||
*/
|
||||
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
index 838ca58d2dd6..5a2bf9f63cd7 100644
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
||||
@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev)
|
||||
@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x0
|
||||
{
|
||||
struct data_queue *queue;
|
||||
|
||||
@@ -80,6 +71,3 @@ index 838ca58d2dd6..5a2bf9f63cd7 100644
|
||||
queue_for_each(rt2x00dev, queue)
|
||||
rt2x00usb_free_entries(queue);
|
||||
}
|
||||
--
|
||||
2.12.1
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
From d77facb88448cdeaaa3adba5b9704a48ac2ac8d6 Mon Sep 17 00:00:00 2001
|
||||
From: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Tue, 28 Mar 2017 09:11:30 +0100
|
||||
Subject: [PATCH] brcmfmac: use local iftype avoiding use-after-free of virtual
|
||||
interface
|
||||
|
||||
A use-after-free was found using KASAN. In brcmf_p2p_del_if() the virtual
|
||||
interface is removed using call to brcmf_remove_interface(). After that
|
||||
the virtual interface instance has been freed and should not be referenced.
|
||||
Solve this by storing the nl80211 iftype in local variable, which is used
|
||||
in a couple of places anyway.
|
||||
|
||||
Cc: stable@vger.kernel.org # 4.10.x, 4.9.x
|
||||
Reported-by: Daniel J Blueman <daniel@quora.org>
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||||
@@ -2240,14 +2240,16 @@ int brcmf_p2p_del_vif(struct wiphy *wiph
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_priv(wiphy);
|
||||
struct brcmf_p2p_info *p2p = &cfg->p2p;
|
||||
struct brcmf_cfg80211_vif *vif;
|
||||
+ enum nl80211_iftype iftype;
|
||||
bool wait_for_disable = false;
|
||||
int err;
|
||||
|
||||
brcmf_dbg(TRACE, "delete P2P vif\n");
|
||||
vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
|
||||
|
||||
+ iftype = vif->wdev.iftype;
|
||||
brcmf_cfg80211_arm_vif_event(cfg, vif);
|
||||
- switch (vif->wdev.iftype) {
|
||||
+ switch (iftype) {
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
if (test_bit(BRCMF_VIF_STATUS_DISCONNECTING, &vif->sme_state))
|
||||
wait_for_disable = true;
|
||||
@@ -2277,7 +2279,7 @@ int brcmf_p2p_del_vif(struct wiphy *wiph
|
||||
BRCMF_P2P_DISABLE_TIMEOUT);
|
||||
|
||||
err = 0;
|
||||
- if (vif->wdev.iftype != NL80211_IFTYPE_P2P_DEVICE) {
|
||||
+ if (iftype != NL80211_IFTYPE_P2P_DEVICE) {
|
||||
brcmf_vif_clear_mgmt_ies(vif);
|
||||
err = brcmf_p2p_release_p2p_if(vif);
|
||||
}
|
||||
@@ -2293,7 +2295,7 @@ int brcmf_p2p_del_vif(struct wiphy *wiph
|
||||
brcmf_remove_interface(vif->ifp, true);
|
||||
|
||||
brcmf_cfg80211_arm_vif_event(cfg, NULL);
|
||||
- if (vif->wdev.iftype != NL80211_IFTYPE_P2P_DEVICE)
|
||||
+ if (iftype != NL80211_IFTYPE_P2P_DEVICE)
|
||||
p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = NULL;
|
||||
|
||||
return err;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user