Compare commits
156 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31f2f76cd5 | ||
|
|
ef56c85848 | ||
|
|
796bf50e8e | ||
|
|
92e341d632 | ||
|
|
e902d11de9 | ||
|
|
ceb8821a3d | ||
|
|
71fa524e1b | ||
|
|
c88bdb8294 | ||
|
|
15612706c9 | ||
|
|
ec76c365c1 | ||
|
|
bdd7faca8d | ||
|
|
ffd4452f8b | ||
|
|
ccc505502e | ||
|
|
1153773c78 | ||
|
|
a1ee0ebbd8 | ||
|
|
84c5dbcf2a | ||
|
|
c07c98d28e | ||
|
|
e10830193c | ||
|
|
f342de468b | ||
|
|
ded3ad3c2f | ||
|
|
5bec393fcb | ||
|
|
a2728a806a | ||
|
|
1b5a45a4a7 | ||
|
|
a883e3af38 | ||
|
|
08ef2073d4 | ||
|
|
7198ae4cf3 | ||
|
|
a8beddcd34 | ||
|
|
f82ddf9024 | ||
|
|
718e97c5c8 | ||
|
|
8788e86245 | ||
|
|
4398a35067 | ||
|
|
906f560e79 | ||
|
|
cc0b70467d | ||
|
|
2c46ba4356 | ||
|
|
7f3ec4ce39 | ||
|
|
273ded68b8 | ||
|
|
c43c434b58 | ||
|
|
81266d9001 | ||
|
|
6165bb0d60 | ||
|
|
c336db7a78 | ||
|
|
616fff2a94 | ||
|
|
dce6b118eb | ||
|
|
afdd5dcd0d | ||
|
|
1fcd833c9a | ||
|
|
33df82be36 | ||
|
|
3402334413 | ||
|
|
55e9d87754 | ||
|
|
c64742a96e | ||
|
|
4b19b2db78 | ||
|
|
0a08a9a2b4 | ||
|
|
a5672f6b96 | ||
|
|
b4a4d04b91 | ||
|
|
86aeac4fc9 | ||
|
|
e9c0c5021c | ||
|
|
a36d2ee310 | ||
|
|
6aef4bc7c3 | ||
|
|
6bf5bfc19f | ||
|
|
f44153038e | ||
|
|
d5ae565873 | ||
|
|
c4a6851c72 | ||
|
|
f8b849103d | ||
|
|
fec1aa6dfb | ||
|
|
224fa47bf9 | ||
|
|
3a05aa17db | ||
|
|
171d8bce0c | ||
|
|
2eb8444363 | ||
|
|
d5a8e85878 | ||
|
|
cf5e5204d9 | ||
|
|
4465b44fc1 | ||
|
|
4b9ade65ec | ||
|
|
ab9cb390be | ||
|
|
1e90091c5d | ||
|
|
312c05611b | ||
|
|
3100649458 | ||
|
|
e9d2aa9dc6 | ||
|
|
2044c01de8 | ||
|
|
5ac0b2b431 | ||
|
|
a7a207e18b | ||
|
|
1ce5008597 | ||
|
|
2ecb22dc51 | ||
|
|
11f4918ebb | ||
|
|
9999c87d3a | ||
|
|
250dbb3a60 | ||
|
|
d816c6cd31 | ||
|
|
c21d59dc11 | ||
|
|
6fc02f2a45 | ||
|
|
b12284a14c | ||
|
|
8055e38794 | ||
|
|
733e62a8e1 | ||
|
|
53814dadaf | ||
|
|
e30d3ea95f | ||
|
|
c7b9c85819 | ||
|
|
c9388fa986 | ||
|
|
e290024717 | ||
|
|
2c37993c8a | ||
|
|
79b1fa1702 | ||
|
|
58138df2d5 | ||
|
|
42e478eb0d | ||
|
|
b14eeccdfe | ||
|
|
cb58c7fe73 | ||
|
|
fb52c40531 | ||
|
|
7711a5906a | ||
|
|
c03f018220 | ||
|
|
0a59e2a76e | ||
|
|
3f5fecfd33 | ||
|
|
d0b8be75ff | ||
|
|
bdc2f19f9d | ||
|
|
c37eb9a9f9 | ||
|
|
5090152ae3 | ||
|
|
d830403133 | ||
|
|
8c2bb1d9b6 | ||
|
|
a47caacaf3 | ||
|
|
605adb1023 | ||
|
|
5abe989475 | ||
|
|
77734ce82a | ||
|
|
ebe8cc2b2a | ||
|
|
f10332c292 | ||
|
|
ca1ee39854 | ||
|
|
f61e053e72 | ||
|
|
f1525e785e | ||
|
|
c72b7a4f0d | ||
|
|
c420f77678 | ||
|
|
0ce0d687de | ||
|
|
6703abb7ca | ||
|
|
b4698d87c8 | ||
|
|
193adc94d1 | ||
|
|
733a482733 | ||
|
|
c9c7b4b394 | ||
|
|
a448ad7490 | ||
|
|
39c5635714 | ||
|
|
2a8279c161 | ||
|
|
ac5297340e | ||
|
|
589c3cf4e0 | ||
|
|
2a3dbded93 | ||
|
|
ad3c2b9736 | ||
|
|
84ae238324 | ||
|
|
c25e3275ac | ||
|
|
78c4c04dd7 | ||
|
|
3af9c5fefd | ||
|
|
7fbee0c7b2 | ||
|
|
14903d9d8c | ||
|
|
03a029745f | ||
|
|
95d60bf881 | ||
|
|
dda5e3db19 | ||
|
|
7dd822983b | ||
|
|
aee081e62e | ||
|
|
6696fddfd9 | ||
|
|
9c718b5478 | ||
|
|
b21bea7b1b | ||
|
|
891022918d | ||
|
|
8076fb59ab | ||
|
|
f4286d7bc2 | ||
|
|
d82e6a2f10 | ||
|
|
86b44028e2 | ||
|
|
34a9652904 | ||
|
|
29b4104d69 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -28,3 +28,4 @@ TAGS*~
|
||||
git-src
|
||||
.project
|
||||
.cproject
|
||||
.ccache
|
||||
|
||||
@@ -100,6 +100,11 @@ menuconfig DEVEL
|
||||
It can be a git hash or a branch name.
|
||||
If unused, the clone's repository HEAD will be checked-out.
|
||||
|
||||
config KERNEL_GIT_MIRROR_HASH
|
||||
string "Enter hash of Git kernel tree source checkout tarball" if DEVEL
|
||||
depends on (KERNEL_GIT_CLONE_URI != "")
|
||||
default ""
|
||||
|
||||
config BUILD_LOG
|
||||
bool "Enable log files during build process" if DEVEL
|
||||
help
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^eae1bb397f064befe003b01a36ae318321e81d35
|
||||
src-git luci https://git.openwrt.org/project/luci.git^0d0ab01a64f25d15325d3c98a7df252085382f1d
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^b77498bd56d5e45ab4577a1f4ad6ffc55b4a86b7
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^91b34e7eefa1d37a18390d0c6881978cd76804a1
|
||||
src-git packages https://git.openwrt.org/feed/packages.git^c6ae1c6a0fced32c171e228e3425a9b655585011
|
||||
src-git luci https://git.openwrt.org/project/luci.git^7b931da4779c68f5aef5908286c2ae5283d2dece
|
||||
src-git routing https://git.openwrt.org/feed/routing.git^101632e153b41238bc19dfd96ba2d23339dbcb76
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git^affee75beff7ed8445f6bc84deff13465c331027
|
||||
src-git freifunk https://github.com/freifunk/openwrt-packages.git^c621a4283870fe062489fe5e26a15deda7ef4ed7
|
||||
|
||||
@@ -22,12 +22,22 @@ ifeq ($(CONFIG_CCACHE),)
|
||||
CMAKE_CXX_COMPILER:=$(call cmake_tool,$(TARGET_CXX))
|
||||
CMAKE_C_COMPILER_ARG1:=
|
||||
CMAKE_CXX_COMPILER_ARG1:=
|
||||
|
||||
CMAKE_HOST_C_COMPILER:=$(HOSTCC)
|
||||
CMAKE_HOST_CXX_COMPILER:=$(HOSTCXX)
|
||||
CMAKE_HOST_C_COMPILER_ARG1:=
|
||||
CMAKE_HOST_CXX_COMPILER_ARG1:=
|
||||
else
|
||||
CCACHE:=$(STAGING_DIR_HOST)/bin/ccache
|
||||
CMAKE_C_COMPILER:=$(CCACHE)
|
||||
CMAKE_C_COMPILER_ARG1:=$(TARGET_CC_NOCACHE)
|
||||
CMAKE_CXX_COMPILER:=$(CCACHE)
|
||||
CMAKE_CXX_COMPILER_ARG1:=$(TARGET_CXX_NOCACHE)
|
||||
|
||||
CMAKE_HOST_C_COMPILER:=$(CCACHE)
|
||||
CMAKE_HOST_C_COMPILER_ARG1:=$(HOSTCC_NOCACHE)
|
||||
CMAKE_HOST_CXX_COMPILER:=$(CCACHE)
|
||||
CMAKE_HOST_CXX_COMPILER_ARG1:=$(HOSTCXX_NOCACHE)
|
||||
endif
|
||||
CMAKE_AR:=$(call cmake_tool,$(TARGET_AR))
|
||||
CMAKE_NM:=$(call cmake_tool,$(TARGET_NM))
|
||||
@@ -90,6 +100,12 @@ define Host/Configure/Default
|
||||
LDFLAGS="$(HOST_LDFLAGS)" \
|
||||
cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_C_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
|
||||
-DCMAKE_C_COMPILER_ARG1="$(CMAKE_HOST_C_COMPILER_ARG1)" \
|
||||
-DCMAKE_CXX_COMPILER="$(CMAKE_HOST_CXX_COMPILER)" \
|
||||
-DCMAKE_CXX_COMPILER_ARG1="$(CMAKE_HOST_CXX_COMPILER_ARG1)" \
|
||||
-DCMAKE_ASM_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
|
||||
-DCMAKE_ASM_COMPILER_ARG1="$(CMAKE_HOST_C_COMPILER_ARG1)" \
|
||||
-DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
|
||||
-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
|
||||
-DCMAKE_EXE_LINKER_FLAGS:STRING="$(HOST_LDFLAGS)" \
|
||||
|
||||
@@ -184,6 +184,8 @@ ifndef DUMP
|
||||
clean-build: host-clean-build
|
||||
endif
|
||||
|
||||
$(DL_DIR)/$(FILE): FORCE
|
||||
|
||||
$(_host_target)host-prepare: $(HOST_STAMP_PREPARED)
|
||||
$(_host_target)host-configure: $(HOST_STAMP_CONFIGURED)
|
||||
$(_host_target)host-compile: $(HOST_STAMP_BUILT) $(HOST_STAMP_INSTALLED)
|
||||
|
||||
@@ -534,6 +534,7 @@ define Device/Build/image
|
||||
BIN_DIR="$(BIN_DIR)" \
|
||||
IMAGE_NAME="$(IMAGE_NAME)" \
|
||||
IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
|
||||
IMAGE_FILESYSTEM="$(1)" \
|
||||
IMAGE_PREFIX="$(IMAGE_PREFIX)" \
|
||||
DEVICE_TITLE="$(DEVICE_TITLE)" \
|
||||
DEVICE_PACKAGES="$(DEVICE_PACKAGES)" \
|
||||
|
||||
@@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.14 = .195
|
||||
LINUX_VERSION-4.14 = .241
|
||||
|
||||
LINUX_KERNEL_HASH-4.14.195 = 394f28798670240baacd9e2cce521fbd79f8da5e1fc191695b0e11381445a021
|
||||
LINUX_KERNEL_HASH-4.14.241 = b5bb04bb70154ba27a08bc1c067eb7c08fc3d513da58e6a33d6645b3a1889f7d
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
||||
@@ -18,6 +18,18 @@ IPKG_REMOVE:= \
|
||||
|
||||
IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg
|
||||
|
||||
# Generates a make statement to return a wildcard for candidate ipkg files
|
||||
# 1: package name
|
||||
define gen_ipkg_wildcard
|
||||
$(1)$$(if $$(filter -%,$$(ABIV_$(1))),,[^a-z-])*
|
||||
endef
|
||||
|
||||
# 1: package name
|
||||
# 2: candidate ipk files
|
||||
define remove_ipkg_files
|
||||
$(if $(strip $(2)),$(IPKG_REMOVE) $(1) $(2))
|
||||
endef
|
||||
|
||||
# 1: package name
|
||||
# 2: variable name
|
||||
# 3: variable suffix
|
||||
@@ -184,7 +196,8 @@ $(_endef)
|
||||
$$(IPKG_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
|
||||
$$(IPKG_$(1)) : export PATH=$$(TARGET_PATH_PKG)
|
||||
$(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk
|
||||
@rm -rf $$(IDIR_$(1)) $$(if $$(call opkg_package_files,$(1)*),; $$(IPKG_REMOVE) $(1) $$(call opkg_package_files,$(1)*))
|
||||
@rm -rf $$(IDIR_$(1)); \
|
||||
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
|
||||
mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR)
|
||||
$(call Package/$(1)/install,$$(IDIR_$(1)))
|
||||
$(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay)
|
||||
@@ -252,7 +265,7 @@ $(_endef)
|
||||
@[ -f $$(IPKG_$(1)) ]
|
||||
|
||||
$(1)-clean:
|
||||
$$(if $$(call opkg_package_files,$(1)*),$$(IPKG_REMOVE) $(1) $$(call opkg_package_files,$(1)*))
|
||||
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
|
||||
|
||||
clean: $(1)-clean
|
||||
|
||||
|
||||
@@ -185,6 +185,8 @@ define Build/CoreTargets
|
||||
$(call Build/Autoclean)
|
||||
$(call DefaultTargets)
|
||||
|
||||
$(DL_DIR)/$(FILE): FORCE
|
||||
|
||||
download:
|
||||
$(foreach hook,$(Hooks/Download),
|
||||
$(call $(hook))$(sep)
|
||||
|
||||
@@ -26,10 +26,11 @@ $(eval $(call TestHostCommand,proper-umask, \
|
||||
Please build with umask 022 - other values produce broken packages, \
|
||||
umask | grep -xE 0?0[012][012]))
|
||||
|
||||
ifndef IB
|
||||
$(eval $(call SetupHostCommand,gcc, \
|
||||
Please install the GNU C Compiler (gcc) 4.8 or later, \
|
||||
$(CC) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|10\.?)', \
|
||||
gcc -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|10\.?)', \
|
||||
$(CC) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|1[0-9]\.?)', \
|
||||
gcc -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|1[0-9]\.?)', \
|
||||
gcc --version | grep -E 'Apple.(LLVM|clang)' ))
|
||||
|
||||
$(eval $(call TestHostCommand,working-gcc, \
|
||||
@@ -40,8 +41,8 @@ $(eval $(call TestHostCommand,working-gcc, \
|
||||
|
||||
$(eval $(call SetupHostCommand,g++, \
|
||||
Please install the GNU C++ Compiler (g++) 4.8 or later, \
|
||||
$(CXX) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|10\.?)', \
|
||||
g++ -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|10\.?)', \
|
||||
$(CXX) -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|1[0-9]\.?)', \
|
||||
g++ -dumpversion | grep -E '^(4\.[8-9]|[5-9]\.?|1[0-9]\.?)', \
|
||||
g++ --version | grep -E 'Apple.(LLVM|clang)' ))
|
||||
|
||||
$(eval $(call TestHostCommand,working-g++, \
|
||||
@@ -55,6 +56,7 @@ $(eval $(call TestHostCommand,ncurses, \
|
||||
Please install ncurses. (Missing libncurses.so or ncurses.h), \
|
||||
echo 'int main(int argc, char **argv) { initscr(); return 0; }' | \
|
||||
gcc -include ncurses.h -x c -o $(TMP_DIR)/a.out - -lncurses))
|
||||
endif # IB
|
||||
|
||||
ifeq ($(HOST_OS),Linux)
|
||||
zlib_link_flags := -Wl,-Bstatic -lz -Wl,-Bdynamic
|
||||
@@ -62,11 +64,26 @@ else
|
||||
zlib_link_flags := -lz
|
||||
endif
|
||||
|
||||
$(eval $(call TestHostCommand,perl-data-dumper, \
|
||||
Please install the Perl Data::Dumper module, \
|
||||
perl -MData::Dumper -e 1))
|
||||
|
||||
$(eval $(call TestHostCommand,perl-findbin, \
|
||||
Please install the Perl FindBin module, \
|
||||
perl -MFindBin -e 1))
|
||||
|
||||
$(eval $(call TestHostCommand,perl-file-copy, \
|
||||
Please install the Perl File::Copy module, \
|
||||
perl -MFile::Copy -e 1))
|
||||
|
||||
$(eval $(call TestHostCommand,perl-file-compare, \
|
||||
Please install the Perl File::Compare module, \
|
||||
perl -MFile::Compare -e 1))
|
||||
|
||||
$(eval $(call TestHostCommand,perl-thread-queue, \
|
||||
Please install the Perl Thread::Queue module, \
|
||||
perl -MThread::Queue -e 1))
|
||||
|
||||
|
||||
$(eval $(call SetupHostCommand,tar,Please install GNU 'tar', \
|
||||
gtar --version 2>&1 | grep GNU, \
|
||||
gnutar --version 2>&1 | grep GNU, \
|
||||
|
||||
@@ -26,13 +26,13 @@ PKG_CONFIG_DEPENDS += \
|
||||
sanitize = $(call tolower,$(subst _,-,$(subst $(space),-,$(1))))
|
||||
|
||||
VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),19.07.4)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),19.07.8)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r11208-ce6496d796)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r11364-ef56c85848)
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/19.07.4)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/19.07.8)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
||||
@@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
|
||||
include $(INCLUDE_DIR)/feeds.mk
|
||||
|
||||
PKG_NAME:=base-files
|
||||
PKG_RELEASE:=204.2
|
||||
PKG_RELEASE:=204.4
|
||||
PKG_FLAGS:=nonshared
|
||||
|
||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
START=10
|
||||
USE_PROCD=1
|
||||
|
||||
validate_system_section()
|
||||
{
|
||||
validate_system_section() {
|
||||
uci_load_validate system system "$1" "$2" \
|
||||
'hostname:string:OpenWrt' \
|
||||
'conloglevel:uinteger' \
|
||||
@@ -23,8 +22,9 @@ system_config() {
|
||||
echo "$hostname" > /proc/sys/kernel/hostname
|
||||
[ -z "$conloglevel" -a -z "$buffersize" ] || dmesg ${conloglevel:+-n $conloglevel} ${buffersize:+-s $buffersize}
|
||||
echo "$timezone" > /tmp/TZ
|
||||
[ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/$zonename" ] && \
|
||||
ln -sf "/usr/share/zoneinfo/$zonename" /tmp/localtime && rm -f /tmp/TZ
|
||||
[ -n "$zonename" ] && [ -f "/usr/share/zoneinfo/${zonename// /_}" ] \
|
||||
&& ln -sf "/usr/share/zoneinfo/${zonename// /_}" /tmp/localtime \
|
||||
&& rm -f /tmp/TZ
|
||||
|
||||
# apply timezone to kernel
|
||||
date -k
|
||||
@@ -35,8 +35,7 @@ reload_service() {
|
||||
config_foreach validate_system_section system system_config
|
||||
}
|
||||
|
||||
service_triggers()
|
||||
{
|
||||
service_triggers() {
|
||||
procd_add_reload_trigger "system"
|
||||
procd_add_validation validate_system_section
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "http://downloads.openwrt.org/releases/19.07.4"
|
||||
default "http://downloads.openwrt.org/releases/19.07.8"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
||||
@@ -14,6 +14,7 @@ PKG_RELEASE:=
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/linux4sam/at91bootstrap.git
|
||||
PKG_MIRROR_HASH:=783100ce586460b8230f7b5b56cbc2e6473b888f38330c1d1b64777e3ae59473
|
||||
PKG_SOURCE_VERSION:=04efa5500d60a0211d14b6ee60df7ce0a828704d
|
||||
|
||||
PKG_BUILD_DIR = \
|
||||
|
||||
@@ -12,6 +12,7 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/linux4sam/u-boot-at91.git
|
||||
PKG_MIRROR_HASH:=03ae55f16e716c2c06481372174f9d8506fa077459bf321a024e0d23a9bb013a
|
||||
PKG_SOURCE_VERSION:=59f202622154f82e708a6ca2bf86350a5c1b2d33
|
||||
|
||||
include $(INCLUDE_DIR)/u-boot.mk
|
||||
|
||||
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=uboot-envtools
|
||||
PKG_DISTNAME:=u-boot
|
||||
PKG_VERSION:=2018.03
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=3.1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.xz
|
||||
|
||||
@@ -15,12 +15,23 @@ board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
cznic,turris-omnia)
|
||||
ubootenv_add_uci_config "/dev/mtd0" "0xC0000" "0x10000" "0x40000"
|
||||
if grep -q 'U-Boot 2015.10-rc2' /dev/mtd0; then
|
||||
ubootenv_add_uci_config "/dev/mtd0" "0xc0000" "0x10000" "0x40000"
|
||||
else
|
||||
ubootenv_add_uci_config "/dev/mtd0" "0xf0000" "0x10000" "0x10000"
|
||||
fi
|
||||
;;
|
||||
globalscale,espressobin|\
|
||||
globalscale,espressobin-emmc|\
|
||||
globalscale,espressobin-v7|\
|
||||
globalscale,espressobin-v7-emmc|\
|
||||
globalscale,espressobin-v7-emmc)
|
||||
idx="$(find_mtd_index u-boot-env)"
|
||||
if [ -n "$idx" ]; then
|
||||
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000" "1"
|
||||
else
|
||||
ubootenv_add_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1"
|
||||
fi
|
||||
;;
|
||||
marvell,armada8040-mcbin)
|
||||
ubootenv_add_uci_config "/dev/mtd0" "0x3f0000" "0x10000" "0x10000" "1"
|
||||
;;
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=amd64-microcode
|
||||
PKG_VERSION:=20180524
|
||||
PKG_VERSION:=20191218
|
||||
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_HASH:=f469b79348097c5f04641b67a39d0ee5a2a1916c9556281626c04f2275d4132d
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
|
||||
|
||||
PKG_LICENSE_FILE:=LICENSE.amd-ucode
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=intel-microcode
|
||||
PKG_VERSION:=20190918
|
||||
PKG_VERSION:=20200616
|
||||
PKG_RELEASE:=1
|
||||
|
||||
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:=b7ecb5dd30d71e9b3c2ab184693a876171392e0d80d138c3560c662e5f2a2247
|
||||
PKG_HASH:=bcc3b81c452fe4649a948c022475d76c1cdfbb730f36749a082f412f1406a3b9
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
|
||||
|
||||
PKG_BUILD_DEPENDS:=iucode-tool/host
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wireless-regdb
|
||||
PKG_VERSION:=2019.06.03
|
||||
PKG_VERSION:=2020.11.20
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
|
||||
PKG_HASH:=cd917ed86b63ce8d93947979f1f18948f03a4ac0ad89ec25227b36ac00dc54bf
|
||||
PKG_HASH:=b4164490d82ff7b0086e812ac42ab27baf57be24324d4c0ee1c5dd6ba27f2a52
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
From 651e39dee8605995b736b6056c6f7dc5c5a9c948 Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Thu, 22 Aug 2019 21:46:27 +0200
|
||||
Subject: [PATCH] regdb: fix compatibility with python2
|
||||
|
||||
Various changes in the commit mentioned below broke
|
||||
compatibility with python2. Restore it in a way that
|
||||
makes it worth with both versions.
|
||||
|
||||
Fixes: f3c4969c2485 ("wireless-regdb: make scripts compatible with Python 3")
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
---
|
||||
db2bin.py | 2 +-
|
||||
db2fw.py | 2 +-
|
||||
dbparse.py | 3 +--
|
||||
3 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/db2bin.py
|
||||
+++ b/db2bin.py
|
||||
@@ -118,7 +118,7 @@ reg_country_ptr.set()
|
||||
for alpha2 in countrynames:
|
||||
coll = countries[alpha2]
|
||||
# struct regdb_file_reg_country
|
||||
- output.write(struct.pack('>BBxBI', alpha2[0], alpha2[1], coll.dfs_region, reg_rules_collections[coll.permissions]))
|
||||
+ output.write(struct.pack('>2sxBI', alpha2, coll.dfs_region, reg_rules_collections[coll.permissions]))
|
||||
|
||||
|
||||
if len(sys.argv) > 3:
|
||||
--- a/db2fw.py
|
||||
+++ b/db2fw.py
|
||||
@@ -85,7 +85,7 @@ countrynames = list(countries)
|
||||
countrynames.sort()
|
||||
for alpha2 in countrynames:
|
||||
coll = countries[alpha2]
|
||||
- output.write(struct.pack('>BB', alpha2[0], alpha2[1]))
|
||||
+ output.write(struct.pack('>2s', alpha2))
|
||||
country_ptrs[alpha2] = PTR(output)
|
||||
output.write(b'\x00' * 4)
|
||||
|
||||
--- a/dbparse.py
|
||||
+++ b/dbparse.py
|
||||
@@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
-from builtins import bytes
|
||||
from functools import total_ordering
|
||||
import sys, math
|
||||
from math import ceil, log
|
||||
@@ -359,7 +358,7 @@ class DBParser(object):
|
||||
for cname in cnames:
|
||||
if len(cname) != 2:
|
||||
self._warn("country '%s' not alpha2" % cname)
|
||||
- cname = bytes(cname, 'ascii')
|
||||
+ cname = cname.encode('ascii')
|
||||
if not cname in self._countries:
|
||||
self._countries[cname] = Country(dfs_region, comments=self._comments)
|
||||
self._current_countries[cname] = self._countries[cname]
|
||||
@@ -1,47 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Willi <martin@strongswan.org>
|
||||
Date: Tue, 2 Jul 2019 16:19:44 +0200
|
||||
Subject: [PATCH] wireless-regdb: Fix overlapping ranges for Switzerland and
|
||||
Liechtenstein
|
||||
|
||||
The commit referenced below changes the 5GHz frequency range 5250-5330
|
||||
to 5150-5330, making that range overlapping with the existing range
|
||||
5170-5250. This imposes DFS limitations and a reduced maximum power
|
||||
level for the range 5170-5250.
|
||||
|
||||
The change of the frequency range seems not intentional. Instead the
|
||||
commit should have changed the 5170-5250 range to 5150-5250, and the
|
||||
5250-5330 range to 5250-5350 (see [1]).
|
||||
|
||||
[1] https://www.ofcomnet.ch/api/rir/1010/05
|
||||
|
||||
Fixes: 957a7cff72a3 ("wireless-regdb: update regulatory rules for Switzerland (CH), and Liechtenstein (LI) on 5GHz")
|
||||
Signed-off-by: Martin Willi <martin@strongswan.org>
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
|
||||
diff --git a/db.txt b/db.txt
|
||||
index d47ab94c3aa5..37393e6a793e 100644
|
||||
--- a/db.txt
|
||||
+++ b/db.txt
|
||||
@@ -271,8 +271,8 @@ country CF: DFS-FCC
|
||||
# transmitter power control is in use: 5250-5330@23db, 5490-5710@30db
|
||||
country CH: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5150 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
@@ -747,8 +747,8 @@ country LC: DFS-ETSI
|
||||
# transmitter power control is in use: 5250-5330@23db, 5490-5710@30db
|
||||
country LI: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5150 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
@@ -1,843 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Emil Petersky <emil.petersky@streamunlimited.com>
|
||||
Date: Tue, 17 Sep 2019 09:49:19 +0200
|
||||
Subject: [PATCH] wireless-regdb: Fix ranges of EU countries as they are
|
||||
harmonized since 2014
|
||||
|
||||
This patch unites entries for EU countries, as they have been harmonized
|
||||
latest by July 2014...
|
||||
|
||||
EU decision 2005/513/EC:
|
||||
https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
EU decision 2006/771/EC:
|
||||
https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
|
||||
Signed-off-by: Emil Petersky <emil.petersky@streamunlimited.com>
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
|
||||
diff --git a/db.txt b/db.txt
|
||||
index 2e149b6e0ea2..a57452479a9b 100644
|
||||
--- a/db.txt
|
||||
+++ b/db.txt
|
||||
@@ -87,12 +87,20 @@ country AS: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# AT as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# AT: https://www.rtr.at/en/tk/Spektrum5GHz/1997_bmvit-info-052010en.pdf
|
||||
+# AT: acceptance https://www.ris.bka.gv.at/Dokumente/BgblAuth/BGBLA_2014_II_63/BGBLA_2014_II_63.pdfsig
|
||||
country AT: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
# Source:
|
||||
@@ -139,12 +147,22 @@ country BD: DFS-JP
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# BE as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# BE: https://www.ibpt.be/public/files/en/21760/B03-01_2.1_EN.pdf
|
||||
+# BE: https://www.ibpt.be/public/files/en/21761/B03-02_2.1_EN.pdf
|
||||
+# BE: https://www.ibpt.be/public/files/en/21762/B03-03_2.1_EN.pdf
|
||||
+# BE: https://www.ibpt.be/public/files/en/22165/B01-28_3.1_EN.pdf
|
||||
country BE: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country BF: DFS-FCC
|
||||
@@ -167,22 +185,29 @@ country BF: DFS-FCC
|
||||
#
|
||||
# Note: The transmit power limits in the 5250-5350 MHz and 5470-5725 MHz bands
|
||||
# can be raised by 3 dBm if TPC is enabled. Refer to BDS EN 301 893 for details.
|
||||
+#
|
||||
+# BG as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# BG: https://crc.bg/files/_en/Electronic_Communications_Revised_EN1.pdf
|
||||
+# BG: acceptance of 2006/771/EC https://crc.bg/files/Pravila_06_12_2018.pdf
|
||||
country BG: DFS-ETSI
|
||||
# Wideband data transmission systems (WDTS) in the 2.4GHz ISM band, ref:
|
||||
# I.22 of the List, BDS EN 300 328
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
# 5 GHz Radio Local Area Networks (RLANs), ref:
|
||||
# II.H01 of the List, BDS EN 301 893
|
||||
- (5170 - 5250 @ 80), (23), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
# II.H01 of the List, I.54 from the List, BDS EN 301 893
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # Short range devices (SRDs) in the 5725-5875 MHz frequency range, ref:
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
# I.43 of the List, BDS EN 300 440-2, BDS EN 300 440-1
|
||||
- (5725 - 5875 @ 80), (14)
|
||||
- # 60 GHz Multiple-Gigabit RLAN Systems, ref:
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
# II.H03 of the List, BDS EN 302 567-2
|
||||
- (57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
+ (57000 - 66000 @ 2160), (40)
|
||||
|
||||
country BH: DFS-JP
|
||||
(2402 - 2482 @ 40), (20)
|
||||
@@ -265,16 +290,22 @@ country CF: DFS-FCC
|
||||
(5490 - 5730 @ 40), (24), DFS
|
||||
(5735 - 5835 @ 40), (30)
|
||||
|
||||
-# Source:
|
||||
-# https://www.ofcomnet.ch/#/fatTable
|
||||
-# Note that the maximum transmitter power can be doubled for 5250-5710MHz if
|
||||
-# transmitter power control is in use: 5250-5330@23db, 5490-5710@30db
|
||||
+# CH as part of CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# CH: https://www.ofcomnet.ch/api/rir/1010/05
|
||||
+# CH: https://www.ofcomnet.ch/api/rir/1010/04
|
||||
+# CH: https://www.ofcomnet.ch/api/rir/1008/12
|
||||
+# CH: https://www.ofcomnet.ch/#/fatTable
|
||||
country CH: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country CI: DFS-FCC
|
||||
@@ -329,26 +360,42 @@ country CX: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# CY as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# CY: http://www.mcw.gov.cy/mcw/dec/dec.nsf/all/292484CFC7013DD4C2256EBA0023D447/$file/Sxedio%20Radiosyxnothtwn%20ths%20Dhmokratias-3-8-2018-E2.2(English%20Unified%20Unofficial).pdf?openelement
|
||||
country CY: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
-# Data from http://www.ctu.eu/164/download/VOR/VOR-12-08-2005-34.pdf
|
||||
-# and http://www.ctu.eu/164/download/VOR/VOR-12-05-2007-6-AN.pdf
|
||||
-# Power at 5250 - 5350 MHz and 5470 - 5725 MHz can be doubled if TPC is
|
||||
-# implemented.
|
||||
+# CZ as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# CZ: https://www.ctu.cz/cs/download/vseobecna-opravneni/archiv/vo-r_12-06_2010-09.pdf
|
||||
+# CZ: https://www.ctu.cz/sites/default/files/obsah/ctu/vseobecne-opravneni-c.vo-r/10/12.2017-10/obrazky/vo-r10-122017-10.pdf
|
||||
country CZ: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
+# DE as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+#
|
||||
# Allocation for the 2.4 GHz band (Vfg 10 / 2013, Allgemeinzuteilung von
|
||||
# Frequenzen für die Nutzung in lokalen Netzwerken; Wireless Local Area
|
||||
# Networks (WLAN-Funkanwendungen).
|
||||
@@ -379,16 +426,22 @@ country DE: DFS-ETSI
|
||||
# 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
-# Sources:
|
||||
+# DK as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# DK: https://ens.dk/sites/ens.dk/files/Tele/frekvensplan_0.pdf
|
||||
# 5GHz: https://erhvervsstyrelsen.dk/sites/default/files/007_interface-datanet_5-6_ghz.pdf.pdf
|
||||
# 60GHz: https://erhvervsstyrelsen.dk/sites/default/files/radiograenseflader-63.pdf
|
||||
country DK: DFS-ETSI
|
||||
- (2400 - 2483.5 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
# 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
- (57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
+ (57000 - 66000 @ 2160), (40)
|
||||
|
||||
# Source:
|
||||
# http://www.ntrcdom.org/index.php?option=com_content&view=category&layout=blog&id=10&Itemid=55
|
||||
@@ -417,12 +470,20 @@ country EC: DFS-FCC
|
||||
(5490 - 5730 @ 20), (24), DFS
|
||||
(5735 - 5835 @ 20), (30)
|
||||
|
||||
+# EE as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# EE: https://www.ttja.ee/et/ettevottele-organisatsioonile/sideteenused/raadioseadmed/wifi-seade
|
||||
+# EE: https://www.itu.int/ITU-D/study_groups/SGP_1998-2002/JGRES09/pdf/estonia.pdf
|
||||
country EE: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country EG: DFS-ETSI
|
||||
@@ -430,17 +491,19 @@ country EG: DFS-ETSI
|
||||
(5170 - 5250 @ 40), (20)
|
||||
(5250 - 5330 @ 40), (20), DFS
|
||||
|
||||
-# Source:
|
||||
-# Cuadro nacional de atribución de frecuencias (CNAF)
|
||||
-# https://avancedigital.gob.es/espectro/Paginas/cnaf.aspx
|
||||
+# ES as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# ES: https://avancedigital.gob.es/espectro/Paginas/cnaf.aspx
|
||||
country ES: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
- # Short Range Devices (SRD) (ETSI EN 300 440)
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country ET: DFS-ETSI
|
||||
@@ -449,14 +512,18 @@ country ET: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (27), DFS
|
||||
|
||||
+# FI as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
country FI: DFS-ETSI
|
||||
- (2400 - 2483.5 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country FM: DFS-FCC
|
||||
@@ -466,22 +533,34 @@ country FM: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# FR as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
country FR: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # short range devices (ETSI EN 300 440)
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
+# GB as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# GB: https://www.ofcom.org.uk/__data/assets/pdf_file/0019/136009/Ofcom-Information-Sheet-5-GHz-RLANs.pdf
|
||||
+# GB: https://www.ofcom.org.uk/__data/assets/pdf_file/0028/84970/ir-2030.pdf
|
||||
country GB: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country GD: DFS-FCC
|
||||
@@ -523,12 +602,20 @@ country GP: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
|
||||
+# GR as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# GR: https://www.eett.gr/opencms/export/sites/default/EETT_EN/Electronic_Communications/Radio_Communications/TelecommunicationEquipment/Radio_equipment_interface_requirement_2012.pdf
|
||||
+# GR: https://www.eett.gr/opencms/export/sites/default/EETT_EN/Electronic_Communications/Radio_Communications/TelecommunicationEquipment/Radio_equipment_interface_requirement_107.pdf
|
||||
country GR: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country GT: DFS-FCC
|
||||
@@ -563,11 +650,18 @@ country HN: DFS-FCC
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
country HR: DFS-ETSI
|
||||
- (2400 - 2483.5 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+# HR as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# HR: http://tablice.hakom.hr:8080/vis?lang=en
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country HT: DFS-FCC
|
||||
@@ -577,37 +671,42 @@ country HT: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
-# http://stir.nmhh.hu/?oldal=dokumentumGeneralo&root_rendeletelem_id=3&hatalyos=1
|
||||
-# http://english.nmhh.hu/cikk/297/Eljarasi_tajekoztato_a_24_GHzes_es_az_5_GHzes_savban_mukodo_berendezesek_engedelyezeserol
|
||||
-# http://nmhh.hu/dokumentum/319/kis_hatotavolsagu_eszkozok_srdk.pdf
|
||||
+# HU as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# HU: http://stir.nmhh.hu/?oldal=dokumentumGeneralo&root_rendeletelem_id=3&hatalyos=1
|
||||
+# HU: http://english.nmhh.hu/cikk/297/Eljarasi_tajekoztato_a_24_GHzes_es_az_5_GHzes_savban_mukodo_berendezesek_engedelyezeserol
|
||||
+# HU: http://nmhh.hu/dokumentum/319/kis_hatotavolsagu_eszkozok_srdk.pdf
|
||||
country HU: DFS-ETSI
|
||||
- # ref: 2006/771/EK, (EU) 2017/1483, MSZ EN 300 328
|
||||
- # additionally: 100mW @ 10MHz channels, 50mW @ 5MHz (max. 10mW/MHz)
|
||||
- (2400 - 2483.5 @ 40), (20)
|
||||
- # ref: 2005/513/EK
|
||||
- # note: TPC not needed @ 5150-5250
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- # note: max would be +3dB with TPC @ 5250-5725
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # "Short Range Devices (SRD)"
|
||||
- # ref: 2006/771/EK, (EU) 2017/1483, MSZ EN 300 440, MSZ EN 302 064
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, "Fixed outdoor installation not allowed"
|
||||
- # ref: 2006/771/EK, (EU) 2017/1483, MSZ EN 302 567
|
||||
- (57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
+ (57000 - 66000 @ 2160), (40)
|
||||
|
||||
country ID: DFS-JP
|
||||
# ref: http://www.postel.go.id/content/ID/regulasi/standardisasi/kepdir/bwa%205,8%20ghz.pdf
|
||||
(2402 - 2482 @ 20), (20)
|
||||
(5735 - 5815 @ 20), (23)
|
||||
|
||||
+# IE as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# IE: https://www.comreg.ie/publication-download/interface-requirements-for-radio-services-in-ireland
|
||||
+# IE: https://www.comreg.ie/publication-download/permitted-short-range-devices-ireland
|
||||
country IE: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country IL: DFS-ETSI
|
||||
@@ -626,20 +725,33 @@ country IR: DFS-JP
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# IS as part of CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# IS: https://www.pfs.is/library/Skrar/Tidnir-og-taekni/MHZ_21022019.pdf
|
||||
country IS: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
+# IT as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
country IT: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country JM: DFS-FCC
|
||||
@@ -741,16 +853,22 @@ country LC: DFS-ETSI
|
||||
(5490 - 5710 @ 160), (30), DFS
|
||||
(5735 - 5815 @ 80), (30)
|
||||
|
||||
-# Source:
|
||||
-# https://www.ofcomnet.ch/#/fatTable
|
||||
-# Note that the maximum transmitter power can be doubled for 5250-5710MHz if
|
||||
-# transmitter power control is in use: 5250-5330@23db, 5490-5710@30db
|
||||
+# LI as part of CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# LI: https://www.ofcomnet.ch/api/rir/1010/05
|
||||
+# LI: https://www.ofcomnet.ch/api/rir/1010/04
|
||||
+# LI: https://www.ofcomnet.ch/api/rir/1008/12
|
||||
+# LI: https://www.ofcomnet.ch/#/fatTable
|
||||
country LI: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country LK: DFS-FCC
|
||||
@@ -768,28 +886,50 @@ country LS: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (27), DFS
|
||||
|
||||
+# LT as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# LT: https://www.rrt.lt/en/radio-spectrum/frequency-management/ or direct link:
|
||||
+# LT: https://www.e-tar.lt/portal/lt/legalAct/6e718fd037a011e69101aaab2992cbcd/dGRioCBBHb
|
||||
country LT: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
+# LU as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# LU: https://assets.ilr.lu/frequences/Documents/ILRLU-1723895916-183.pdf#search=en%20300%20440
|
||||
country LU: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
+# LV as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# LV: http://likumi.lv/doc.php?id=198903
|
||||
country LV: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country MA: DFS-ETSI
|
||||
@@ -875,12 +1015,19 @@ country MR: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (27), DFS
|
||||
|
||||
+# MT as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# MT: https://www.mca.org.mt/sites/default/files/NFP_edition%206-1.pdf
|
||||
country MT: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country MU: DFS-FCC
|
||||
@@ -930,34 +1077,36 @@ country NI: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
-# Regulation on the use of frequency space without a license and
|
||||
-# without notification 2015
|
||||
-#
|
||||
-# http://wetten.overheid.nl/BWBR0036378/2015-03-05
|
||||
-
|
||||
+# NL as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# NL: http://wetten.overheid.nl/BWBR0036378/2015-03-05
|
||||
country NL: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
-# Data from http://www.lovdata.no/dokument/SF/forskrift/2012-01-19-77
|
||||
-# Power at 5250 - 5350 MHz, 5470 - 5725 MHz and 5815 – 5850 MHz can
|
||||
-# be doubled if TPC is implemented.
|
||||
-# Up to 2W (or 4W with TPC) is allowed in the 5725 – 5795 MHz band
|
||||
-# which has been merged with 5470 - 5725 MHz to allow wide channels
|
||||
+# NO as part of CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# NO: https://eng.nkom.no/technical/temporary-licenses/mobile-videolink/wireless-cameras-mobile-video-links/_attachment/9947
|
||||
+# NO: http://www.lovdata.no/dokument/SF/forskrift/2012-01-19-77
|
||||
+# In addition to EU NO can use 5725–5795 MHz and 5815–5850 bands with limit of 4 W EIRP (with DFS and TPC)
|
||||
country NO: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
- (5150 - 5250 @ 80), (200 mW), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5795 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
- (5815 - 5850 @ 35), (2000 mW), DFS
|
||||
- (17100 - 17300 @ 200), (100 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country NP: DFS-JP
|
||||
@@ -1020,12 +1169,18 @@ country PK: DFS-JP
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# PL as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
country PL: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country PM: DFS-ETSI
|
||||
@@ -1041,14 +1196,19 @@ country PR: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
+# PT as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# PT: https://www.anacom.pt/render.jsp?categoryId=336334
|
||||
country PT: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country PW: DFS-FCC
|
||||
@@ -1079,15 +1239,21 @@ country RE: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
|
||||
+# RO as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# RO: http://www.ancom.org.ro/en/uploads/links_files/ordin_262_2006.pdf
|
||||
country RO: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
-
|
||||
# Source:
|
||||
# http://www.ratel.rs/upload/documents/Plan_namene/Plan_namene-sl_glasnik.pdf
|
||||
country RS: DFS-ETSI
|
||||
@@ -1119,18 +1285,20 @@ country SA: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (27), DFS
|
||||
|
||||
-# Source:
|
||||
-# https://pts.se/globalassets/startpage/dokument/legala-dokument/foreskrifter/radio/beslutade_ptsfs-2018-3-undantagsforeskrifter.pdf
|
||||
+# SE as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# SE: https://pts.se/globalassets/startpage/dokument/legala-dokument/foreskrifter/radio/beslutade_ptsfs-2018-3-undantagsforeskrifter.pdf
|
||||
country SE: DFS-ETSI
|
||||
- (2400 - 2483.5 @ 40), (20)
|
||||
- (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
- # note: max would be +3dB with TPC @ 5250-5725
|
||||
- (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5470 - 5725 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # short range devices (ETSI EN 300 440)
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
- (57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
+ (57000 - 66000 @ 2160), (40)
|
||||
|
||||
# Source
|
||||
# https://www.imda.gov.sg/~/media/imda/files/regulation%20licensing%20and%20consultations/ict%20standards/telecommunication%20standards/radio-comms/imdatssrd.pdf?la=en
|
||||
@@ -1144,20 +1312,36 @@ country SG: DFS-FCC
|
||||
# (5470 - 5725 @ 160), (30), DFS
|
||||
(5725 - 5850 @ 80), (30)
|
||||
|
||||
+# SI as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# SI: https://www.akos-rs.si/bwa
|
||||
country SI: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
+# SK as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
+# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
+# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
+# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
+# SK: https://www.teleoff.gov.sk/data/files/25911.pdf
|
||||
+# SK: https://www.teleoff.gov.sk/data/files/41072.pdf
|
||||
+# SK: https://www.teleoff.gov.sk/data/files/49125_vpr-01_2018-rusi-vpr-10_2014a21_2012-nespecifik-srd_021018.pdf
|
||||
country SK: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
- (5490 - 5710 @ 160), (27), DFS, wmmrule=ETSI
|
||||
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
+ (2400 - 2483.5 @ 40), (100 mW)
|
||||
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
+ (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
+ (5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
+ # short range devices (ETSI EN 300 440-1)
|
||||
+ (5725 - 5875 @ 80), (25 mW)
|
||||
+ # 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
# Source:
|
||||
@@ -1,44 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Tunin <hanipouspilot@gmail.com>
|
||||
Date: Sat, 24 Aug 2019 11:48:10 +0300
|
||||
Subject: [PATCH] wireless-regdb: Update regulatory rules for Russia (RU)
|
||||
|
||||
Russian entry is incorrect. According to the last regulations
|
||||
document of Feb 29, 2016, 160 MHz channels and 802.11ad are allowed.
|
||||
|
||||
http://rfs-rf.ru/upload/medialibrary/c1a/prilozhenie-1-k-resheniyu-gkrch-_-16_36_03.pdf
|
||||
|
||||
Note that there was never a DFS requirement in Russia, but always was
|
||||
NO-OUTDOOR on 5GHz.
|
||||
Maximum power is 200mW that is ~23dBm on all 5GHz channels.
|
||||
Also Russia has never been regulated by ETSI.
|
||||
|
||||
EIRP has been reduced by 4dBm because of TPC requirement.
|
||||
|
||||
Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
|
||||
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
|
||||
|
||||
diff --git a/db.txt b/db.txt
|
||||
index f6b2f921416c..9c4b447536e4 100644
|
||||
--- a/db.txt
|
||||
+++ b/db.txt
|
||||
@@ -1349,14 +1349,12 @@ country RS: DFS-ETSI
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
-country RU: DFS-ETSI
|
||||
- (2402 - 2482 @ 40), (20)
|
||||
- (5170 - 5250 @ 80), (20), AUTO-BW
|
||||
- (5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
- (5650 - 5730 @ 80), (30), DFS
|
||||
- (5735 - 5835 @ 80), (30)
|
||||
+country RU:
|
||||
+ (2400 - 2483.5 @ 40), (20)
|
||||
+ (5150 - 5350 @ 160), (20), NO-OUTDOOR
|
||||
+ (5650 - 5850 @ 160), (20), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Changes to NLA 124_Order №129_22042015.pdf
|
||||
- (57000 - 66000 @ 2160), (40)
|
||||
+ (57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
|
||||
country RW: DFS-FCC
|
||||
(2402 - 2482 @ 40), (20)
|
||||
@@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2019-09-09
|
||||
PKG_SOURCE_VERSION:=5e8cd86f90dac966d12df6ece84ac41458d0e95f
|
||||
PKG_MIRROR_HASH:=dc1097f3a7b4b7e346918f206746d00a0b7df07ae3be9b89be55dfaef3cbbe45
|
||||
PKG_SOURCE_DATE:=2021-06-03
|
||||
PKG_SOURCE_VERSION:=b44cd7b2e7b0df5995ece18f358d4dfc40834ba1
|
||||
PKG_MIRROR_HASH:=59f961ad425eb1a48fa9c391a325cc0f23845daec9d12673445d3077f9756cf0
|
||||
|
||||
# Build the 4.19 ath10k-ct driver version. Other options are "-4.16", or
|
||||
# leave un-defined for 4.7 kernel. Probably this should match as closely as
|
||||
|
||||
@@ -20,7 +20,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
---
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -157,6 +157,22 @@ u8 ath10k_mac_bitrate_to_idx(const struc
|
||||
@@ -158,6 +158,22 @@ u8 ath10k_mac_bitrate_to_idx(const struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss)
|
||||
{
|
||||
switch ((mcs_map >> (2 * nss)) & 0x3) {
|
||||
@@ -6405,9 +6421,10 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6423,9 +6439,10 @@ static void ath10k_bss_info_changed(stru
|
||||
struct cfg80211_chan_def def;
|
||||
u32 vdev_param, pdev_param, slottime, preamble;
|
||||
u16 bitrate, hw_value;
|
||||
@@ -56,7 +56,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
@@ -6613,6 +6630,30 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6631,6 +6648,30 @@ static void ath10k_bss_info_changed(stru
|
||||
arvif->vdev_id, ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
---
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -165,7 +165,7 @@ static int ath10k_mac_get_rate_hw_value(
|
||||
@@ -166,7 +166,7 @@ static int ath10k_mac_get_rate_hw_value(
|
||||
if (ath10k_mac_bitrate_is_cck(bitrate))
|
||||
hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6;
|
||||
|
||||
@@ -26,7 +26,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
if (ath10k_rates[i].bitrate == bitrate)
|
||||
return hw_value_prefix | ath10k_rates[i].hw_value;
|
||||
}
|
||||
@@ -6636,22 +6636,22 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6654,22 +6654,22 @@ static void ath10k_bss_info_changed(stru
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/
|
||||
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -6421,8 +6421,8 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6439,8 +6439,8 @@ static void ath10k_bss_info_changed(stru
|
||||
struct cfg80211_chan_def def;
|
||||
u32 vdev_param, pdev_param, slottime, preamble;
|
||||
u16 bitrate, hw_value;
|
||||
@@ -28,9 +28,9 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/
|
||||
enum nl80211_band band;
|
||||
const struct ieee80211_supported_band *sband;
|
||||
|
||||
@@ -6595,7 +6595,11 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6613,7 +6613,11 @@ static void ath10k_bss_info_changed(stru
|
||||
if (changed & BSS_CHANGED_MCAST_RATE &&
|
||||
!WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) {
|
||||
!ath10k_mac_vif_chan(arvif->vif, &def)) {
|
||||
band = def.chan->band;
|
||||
- rateidx = vif->bss_conf.mcast_rate[band] - 1;
|
||||
+ mcast_rate = vif->bss_conf.mcast_rate[band];
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -6617,6 +6617,7 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6635,6 +6635,7 @@ static void ath10k_bss_info_changed(stru
|
||||
"mac vdev %d mcast_rate %x\n",
|
||||
arvif->vdev_id, rate);
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
vdev_param = ar->wmi.vdev_param->mcast_data_rate;
|
||||
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
|
||||
vdev_param, rate);
|
||||
@@ -6625,6 +6626,7 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6643,6 +6644,7 @@ static void ath10k_bss_info_changed(stru
|
||||
"failed to set mcast rate on vdev %i: %d\n",
|
||||
arvif->vdev_id, ret);
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
vdev_param = ar->wmi.vdev_param->bcast_data_rate;
|
||||
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
|
||||
vdev_param, rate);
|
||||
@@ -6651,6 +6653,7 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6669,6 +6671,7 @@ static void ath10k_bss_info_changed(stru
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ v13:
|
||||
.patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
|
||||
@@ -137,6 +139,7 @@ static const struct ath10k_hw_params ath
|
||||
@@ -139,6 +141,7 @@ static const struct ath10k_hw_params ath
|
||||
.id = QCA9887_HW_1_0_VERSION,
|
||||
.dev_id = QCA9887_1_0_DEVICE_ID,
|
||||
.name = "qca9887 hw1.0",
|
||||
@@ -137,7 +137,7 @@ v13:
|
||||
.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
|
||||
@@ -301,6 +304,7 @@ static const struct ath10k_hw_params ath
|
||||
@@ -308,6 +311,7 @@ static const struct ath10k_hw_params ath
|
||||
.id = QCA99X0_HW_2_0_DEV_VERSION,
|
||||
.dev_id = QCA99X0_2_0_DEVICE_ID,
|
||||
.name = "qca99x0 hw2.0",
|
||||
@@ -145,7 +145,7 @@ v13:
|
||||
.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.otp_exe_param = 0x00000700,
|
||||
@@ -339,6 +343,7 @@ static const struct ath10k_hw_params ath
|
||||
@@ -347,6 +351,7 @@ static const struct ath10k_hw_params ath
|
||||
.id = QCA9984_HW_1_0_DEV_VERSION,
|
||||
.dev_id = QCA9984_1_0_DEVICE_ID,
|
||||
.name = "qca9984/qca9994 hw1.0",
|
||||
@@ -153,7 +153,7 @@ v13:
|
||||
.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||
@@ -382,6 +387,7 @@ static const struct ath10k_hw_params ath
|
||||
@@ -391,6 +396,7 @@ static const struct ath10k_hw_params ath
|
||||
.id = QCA9888_HW_2_0_DEV_VERSION,
|
||||
.dev_id = QCA9888_2_0_DEVICE_ID,
|
||||
.name = "qca9888 hw2.0",
|
||||
@@ -161,7 +161,7 @@ v13:
|
||||
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||
@@ -3167,6 +3173,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
@@ -3238,6 +3244,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
ath10k_wmi_check_apply_board_power_ctl_table(ar);
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ v13:
|
||||
return 0;
|
||||
|
||||
err_hif_stop:
|
||||
@@ -3421,9 +3431,18 @@ static void ath10k_core_register_work(st
|
||||
@@ -3492,9 +3502,18 @@ static void ath10k_core_register_work(st
|
||||
goto err_spectral_destroy;
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ v13:
|
||||
err_spectral_destroy:
|
||||
ath10k_spectral_destroy(ar);
|
||||
err_debug_destroy:
|
||||
@@ -3481,6 +3500,8 @@ void ath10k_core_unregister(struct ath10
|
||||
@@ -3552,6 +3571,8 @@ void ath10k_core_unregister(struct ath10
|
||||
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
|
||||
return;
|
||||
|
||||
@@ -210,7 +210,7 @@ v13:
|
||||
|
||||
#include "htt.h"
|
||||
#include "htc.h"
|
||||
@@ -1138,7 +1139,6 @@ struct ath10k {
|
||||
@@ -1141,7 +1142,6 @@ struct ath10k {
|
||||
u32 low_5ghz_chan;
|
||||
u32 high_5ghz_chan;
|
||||
bool ani_enabled;
|
||||
@@ -218,7 +218,7 @@ v13:
|
||||
bool p2p;
|
||||
bool ct_all_pkts_htt; /* CT firmware only: native-wifi for all pkts */
|
||||
|
||||
@@ -1389,6 +1389,13 @@ struct ath10k {
|
||||
@@ -1400,6 +1400,13 @@ struct ath10k {
|
||||
} testmode;
|
||||
|
||||
struct {
|
||||
@@ -394,7 +394,7 @@ v13:
|
||||
+#endif /* _LEDS_H_ */
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -34,6 +34,7 @@
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "wmi-tlv.h"
|
||||
#include "wmi-ops.h"
|
||||
#include "wow.h"
|
||||
@@ -404,7 +404,7 @@ v13:
|
||||
/* Rates */
|
||||
--- a/ath10k-4.19/wmi-ops.h
|
||||
+++ b/ath10k-4.19/wmi-ops.h
|
||||
@@ -218,7 +218,10 @@ struct wmi_ops {
|
||||
@@ -219,7 +219,10 @@ struct wmi_ops {
|
||||
struct sk_buff *(*gen_echo)(struct ath10k *ar, u32 value);
|
||||
struct sk_buff *(*gen_pdev_get_tpc_table_cmdid)(struct ath10k *ar,
|
||||
u32 param);
|
||||
@@ -415,7 +415,7 @@ v13:
|
||||
};
|
||||
|
||||
int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id);
|
||||
@@ -1079,6 +1082,35 @@ ath10k_wmi_force_fw_hang(struct ath10k *
|
||||
@@ -1089,6 +1092,35 @@ ath10k_wmi_force_fw_hang(struct ath10k *
|
||||
return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->force_fw_hang_cmdid);
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ v13:
|
||||
{
|
||||
--- a/ath10k-4.19/wmi-tlv.c
|
||||
+++ b/ath10k-4.19/wmi-tlv.c
|
||||
@@ -3976,6 +3976,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
@@ -3999,6 +3999,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
|
||||
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
|
||||
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
|
||||
@@ -464,7 +464,7 @@ v13:
|
||||
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|
||||
--- a/ath10k-4.19/wmi.c
|
||||
+++ b/ath10k-4.19/wmi.c
|
||||
@@ -8070,6 +8070,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
@@ -8112,6 +8112,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
return skb;
|
||||
}
|
||||
|
||||
@@ -514,7 +514,7 @@ v13:
|
||||
static struct sk_buff *
|
||||
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
|
||||
enum wmi_sta_ps_mode psmode)
|
||||
@@ -9821,6 +9864,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
@@ -9865,6 +9908,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -524,7 +524,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9891,6 +9937,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
@@ -9935,6 +9981,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -533,7 +533,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9969,6 +10017,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
@@ -10013,6 +10061,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
@@ -542,7 +542,7 @@ v13:
|
||||
/* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
@@ -10039,6 +10089,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
@@ -10083,6 +10133,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
.gen_pdev_enable_adaptive_cca =
|
||||
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
|
||||
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
|
||||
@@ -551,7 +551,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -10119,6 +10171,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
@@ -10163,6 +10215,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
|
||||
--- a/ath10k-4.19/core.h
|
||||
+++ b/ath10k-4.19/core.h
|
||||
@@ -1488,6 +1488,10 @@ struct ath10k {
|
||||
@@ -1500,6 +1500,10 @@ struct ath10k {
|
||||
u8 csi_data[4096];
|
||||
u16 csi_data_len;
|
||||
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
if (ret)
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -9982,7 +9982,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -9998,7 +9998,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
|
||||
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
From bbf0a8af2261bc7ae39b227ff6a1e9f45a008c27 Mon Sep 17 00:00:00 2001
|
||||
From: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Date: Mon, 30 Jul 2018 17:31:41 +0200
|
||||
Subject: [PATCH] ath10k: Limit available channels via DT ieee80211-freq-limit
|
||||
|
||||
Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
|
||||
the RX and TX path. These filtered channel can in theory still be used by
|
||||
the hardware but the signal strength is reduced so much that it makes no
|
||||
sense.
|
||||
|
||||
There is already a DT property to limit the available channels but ath10k
|
||||
has to manually call this functionality to limit the currrently set wiphy
|
||||
channels further.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
|
||||
Forwarded: https://patchwork.kernel.org/patch/10549245/
|
||||
---
|
||||
drivers/net/wireless/ath/ath10k/mac.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/ath10k-4.19/mac.c
|
||||
+++ b/ath10k-4.19/mac.c
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include "mac.h"
|
||||
|
||||
+#include <net/cfg80211.h>
|
||||
#include <net/mac80211.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/acpi.h>
|
||||
@@ -9706,6 +9707,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band;
|
||||
}
|
||||
|
||||
+ wiphy_read_of_freq_limits(ar->hw->wiphy);
|
||||
ath10k_mac_setup_ht_vht_cap(ar);
|
||||
|
||||
ar->hw->wiphy->interface_modes =
|
||||
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=4.19.137-1
|
||||
PKG_RELEASE:=2
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.137/
|
||||
PKG_HASH:=dc5eea4f77fc5c43b69e38f46fbf766880fa4bdeef83dcc8dcc85aa6b645bb7c
|
||||
PKG_VERSION:=4.19.193-1
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.193/
|
||||
PKG_HASH:=560c0ce9e4079fd26d046e188453e008a5e766e5409d950c4749a23da53d6d0a
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
|
||||
@@ -24,8 +24,9 @@ drv_mac80211_init_device_config() {
|
||||
config_add_string path phy 'macaddr:macaddr'
|
||||
config_add_string hwmode
|
||||
config_add_string tx_burst
|
||||
config_add_string distance
|
||||
config_add_int beacon_int chanbw frag rts
|
||||
config_add_int rxantenna txantenna antenna_gain txpower distance
|
||||
config_add_int rxantenna txantenna antenna_gain txpower
|
||||
config_add_boolean noscan ht_coex
|
||||
config_add_array ht_capab
|
||||
config_add_array channels
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -3034,6 +3034,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -3037,6 +3037,8 @@ void regulatory_hint_country_ie(struct w
|
||||
enum environment_cap env = ENVIRON_ANY;
|
||||
struct regulatory_request *request = NULL, *lr;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* IE len must be evenly divisible by 2 */
|
||||
if (country_ie_len & 0x01)
|
||||
return;
|
||||
@@ -3259,6 +3261,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
@@ -3262,6 +3264,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||
@@ -1374,6 +1374,53 @@ void ath9k_deinit_debug(struct ath_softc
|
||||
@@ -1377,6 +1377,53 @@ void ath9k_deinit_debug(struct ath_softc
|
||||
ath9k_cmn_spectral_deinit_debug(&sc->spec_priv);
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
int ath9k_init_debug(struct ath_hw *ah)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
@@ -1393,6 +1440,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
@@ -1396,6 +1443,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
ath9k_tx99_init_debug(sc);
|
||||
ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||
@@ -1421,6 +1421,52 @@ static const struct file_operations fops
|
||||
@@ -1424,6 +1424,52 @@ static const struct file_operations fops
|
||||
.owner = THIS_MODULE
|
||||
};
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
int ath9k_init_debug(struct ath_hw *ah)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
@@ -1442,6 +1488,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
@@ -1445,6 +1491,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
|
||||
debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
|
||||
&fops_eeprom);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
@@ -850,6 +850,9 @@ static inline int ath9k_dump_btcoex(stru
|
||||
@@ -851,6 +851,9 @@ static inline int ath9k_dump_btcoex(stru
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
void ath_init_leds(struct ath_softc *sc);
|
||||
void ath_deinit_leds(struct ath_softc *sc);
|
||||
@@ -10,7 +10,7 @@
|
||||
#else
|
||||
static inline void ath_init_leds(struct ath_softc *sc)
|
||||
{
|
||||
@@ -991,6 +994,13 @@ void ath_ant_comb_scan(struct ath_softc
|
||||
@@ -992,6 +995,13 @@ void ath_ant_comb_scan(struct ath_softc
|
||||
#define AIRTIME_USE_NEW_QUEUES BIT(2)
|
||||
#define AIRTIME_ACTIVE(flags) (!!(flags & (AIRTIME_USE_TX|AIRTIME_USE_RX)))
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
struct ath_softc {
|
||||
struct ieee80211_hw *hw;
|
||||
struct device *dev;
|
||||
@@ -1046,9 +1056,8 @@ struct ath_softc {
|
||||
@@ -1047,9 +1057,8 @@ struct ath_softc {
|
||||
spinlock_t chan_lock;
|
||||
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
@@ -192,7 +192,7 @@
|
||||
#endif
|
||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||
@@ -1466,6 +1466,61 @@ static const struct file_operations fops
|
||||
@@ -1469,6 +1469,61 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
|
||||
int ath9k_init_debug(struct ath_hw *ah)
|
||||
{
|
||||
@@ -1490,6 +1545,10 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
@@ -1493,6 +1548,10 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
&fops_eeprom);
|
||||
debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
|
||||
sc, &fops_chanbw);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||
@@ -1522,6 +1522,50 @@ static const struct file_operations fops
|
||||
@@ -1525,6 +1525,50 @@ static const struct file_operations fops
|
||||
#endif
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
int ath9k_init_debug(struct ath_hw *ah)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
@@ -1549,6 +1593,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
@@ -1552,6 +1596,8 @@ int ath9k_init_debug(struct ath_hw *ah)
|
||||
debugfs_create_file("gpio_led", S_IWUSR,
|
||||
sc->debug.debugfs_phy, sc, &fops_gpio_led);
|
||||
#endif
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
#include "common.h"
|
||||
#include "debug.h"
|
||||
@@ -1001,6 +1002,14 @@ struct ath_led {
|
||||
@@ -1002,6 +1003,14 @@ struct ath_led {
|
||||
struct led_classdev cdev;
|
||||
};
|
||||
|
||||
@@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ath_softc {
|
||||
struct ieee80211_hw *hw;
|
||||
struct device *dev;
|
||||
@@ -1058,6 +1067,9 @@ struct ath_softc {
|
||||
@@ -1059,6 +1068,9 @@ struct ath_softc {
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
const char *led_default_trigger;
|
||||
struct list_head leds;
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
@@ -1069,6 +1069,7 @@ struct ath_softc {
|
||||
@@ -1070,6 +1070,7 @@ struct ath_softc {
|
||||
struct list_head leds;
|
||||
#ifdef CONFIG_GPIOLIB
|
||||
struct ath9k_gpio_chip *gpiochip;
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
|
||||
#include "common.h"
|
||||
#include "debug.h"
|
||||
@@ -1023,6 +1024,9 @@ struct ath_softc {
|
||||
@@ -1024,6 +1025,9 @@ struct ath_softc {
|
||||
struct ath_hw *sc_ah;
|
||||
void __iomem *mem;
|
||||
int irq;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -8300,6 +8300,21 @@ static int ath10k_mac_init_rd(struct ath
|
||||
@@ -8293,6 +8293,21 @@ static int ath10k_mac_init_rd(struct ath
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
int ath10k_mac_register(struct ath10k *ar)
|
||||
{
|
||||
static const u32 cipher_suites[] = {
|
||||
@@ -8584,6 +8599,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -8577,6 +8592,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
|
||||
wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -7378,12 +7378,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
|
||||
@@ -7396,12 +7396,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
|
||||
struct wmi_10_4_peer_assoc_complete_cmd *cmd = buf;
|
||||
|
||||
ath10k_wmi_peer_assoc_fill_10_2(ar, buf, arg);
|
||||
|
||||
@@ -13,7 +13,7 @@ v2: fix trailing whitespace issue and fix some typos within the commit note
|
||||
2 files changed, 8 insertions(+), 10 deletions(-)
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -4483,13 +4483,6 @@ static struct ieee80211_sta_vht_cap ath1
|
||||
@@ -4476,13 +4476,6 @@ static struct ieee80211_sta_vht_cap ath1
|
||||
vht_cap.cap |= val;
|
||||
}
|
||||
|
||||
|
||||
@@ -464,7 +464,7 @@ v13:
|
||||
{
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
@@ -3991,6 +3991,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
@@ -3999,6 +3999,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
|
||||
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
|
||||
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
|
||||
@@ -475,7 +475,7 @@ v13:
|
||||
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -7198,6 +7198,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
@@ -7216,6 +7216,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
return skb;
|
||||
}
|
||||
|
||||
@@ -525,7 +525,7 @@ v13:
|
||||
static struct sk_buff *
|
||||
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
|
||||
enum wmi_sta_ps_mode psmode)
|
||||
@@ -8809,6 +8852,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
@@ -8827,6 +8870,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -535,7 +535,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -8879,6 +8925,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
@@ -8897,6 +8943,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -544,7 +544,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -8950,6 +8998,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
@@ -8968,6 +9016,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
@@ -553,7 +553,7 @@ v13:
|
||||
/* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
@@ -9020,6 +9070,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
@@ -9038,6 +9088,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
.gen_pdev_enable_adaptive_cca =
|
||||
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
|
||||
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
|
||||
@@ -562,7 +562,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9099,6 +9151,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
@@ -9117,6 +9169,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
|
||||
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
if (ret)
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -8616,7 +8616,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -8609,7 +8609,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
|
||||
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
|
||||
@@ -43,7 +43,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss)
|
||||
{
|
||||
switch ((mcs_map >> (2 * nss)) & 0x3) {
|
||||
@@ -5485,9 +5501,10 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5478,9 +5494,10 @@ static void ath10k_bss_info_changed(stru
|
||||
struct cfg80211_chan_def def;
|
||||
u32 vdev_param, pdev_param, slottime, preamble;
|
||||
u16 bitrate, hw_value;
|
||||
@@ -56,7 +56,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
@@ -5693,6 +5710,30 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5686,6 +5703,30 @@ static void ath10k_bss_info_changed(stru
|
||||
arvif->vdev_id, ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux
|
||||
if (ath10k_rates[i].bitrate == bitrate)
|
||||
return hw_value_prefix | ath10k_rates[i].hw_value;
|
||||
}
|
||||
@@ -5716,22 +5716,22 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5709,22 +5709,22 @@ static void ath10k_bss_info_changed(stru
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -5501,8 +5501,8 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5494,8 +5494,8 @@ static void ath10k_bss_info_changed(stru
|
||||
struct cfg80211_chan_def def;
|
||||
u32 vdev_param, pdev_param, slottime, preamble;
|
||||
u16 bitrate, hw_value;
|
||||
@@ -28,7 +28,7 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/
|
||||
enum nl80211_band band;
|
||||
const struct ieee80211_supported_band *sband;
|
||||
|
||||
@@ -5675,7 +5675,11 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5668,7 +5668,11 @@ static void ath10k_bss_info_changed(stru
|
||||
if (changed & BSS_CHANGED_MCAST_RATE &&
|
||||
!ath10k_mac_vif_chan(arvif->vif, &def)) {
|
||||
band = def.chan->band;
|
||||
|
||||
@@ -67,7 +67,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
fwreq->bus_nr = devinfo->pdev->bus->number;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -4215,6 +4215,7 @@ brcmf_sdio_prepare_fw_request(struct brc
|
||||
@@ -4219,6 +4219,7 @@ brcmf_sdio_prepare_fw_request(struct brc
|
||||
|
||||
fwreq->items[BRCMF_SDIO_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
|
||||
fwreq->items[BRCMF_SDIO_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
int credits_borrowed[BRCMF_FWS_FIFO_AC_VO + 1];
|
||||
int deq_node_pos[BRCMF_FWS_FIFO_COUNT];
|
||||
u32 fifo_credit_map;
|
||||
@@ -1241,6 +1242,9 @@ static void brcmf_fws_return_credits(str
|
||||
@@ -1245,6 +1246,9 @@ static void brcmf_fws_return_credits(str
|
||||
}
|
||||
|
||||
fws->fifo_credit[fifo] += credits;
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
|
||||
static void brcmf_fws_schedule_deq(struct brcmf_fws_info *fws)
|
||||
@@ -1599,19 +1603,21 @@ static int brcmf_fws_notify_credit_map(s
|
||||
@@ -1603,19 +1607,21 @@ static int brcmf_fws_notify_credit_map(s
|
||||
brcmf_err("event payload too small (%d)\n", e->datalen);
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -63,7 +63,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
brcmf_fws_schedule_deq(fws);
|
||||
brcmf_fws_unlock(fws);
|
||||
@@ -2017,7 +2023,7 @@ static int brcmf_fws_borrow_credit(struc
|
||||
@@ -2021,7 +2027,7 @@ static int brcmf_fws_borrow_credit(struc
|
||||
}
|
||||
|
||||
for (lender_ac = 0; lender_ac <= BRCMF_FWS_FIFO_AC_VO; lender_ac++) {
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
fws->credits_borrowed[lender_ac]++;
|
||||
fws->fifo_credit[lender_ac]--;
|
||||
if (fws->fifo_credit[lender_ac] == 0)
|
||||
@@ -2216,8 +2222,9 @@ static void brcmf_fws_dequeue_worker(str
|
||||
@@ -2220,8 +2226,9 @@ static void brcmf_fws_dequeue_worker(str
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
skb = brcmf_fws_deq(fws, fifo);
|
||||
if (!skb)
|
||||
break;
|
||||
@@ -2228,7 +2235,7 @@ static void brcmf_fws_dequeue_worker(str
|
||||
@@ -2232,7 +2239,7 @@ static void brcmf_fws_dequeue_worker(str
|
||||
break;
|
||||
}
|
||||
if ((fifo == BRCMF_FWS_FIFO_AC_BE) &&
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6654,6 +6654,12 @@ static s32 brcmf_config_dongle(struct br
|
||||
@@ -6657,6 +6657,12 @@ static s32 brcmf_config_dongle(struct br
|
||||
|
||||
brcmf_configure_arp_nd_offload(ifp, true);
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
@@ -1459,9 +1459,10 @@ static int brcmf_fws_txstatus_suppressed
|
||||
@@ -1463,9 +1463,10 @@ static int brcmf_fws_txstatus_suppressed
|
||||
|
||||
static int
|
||||
brcmf_fws_txs_process(struct brcmf_fws_info *fws, u8 flags, u32 hslot,
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
int ret;
|
||||
bool remove_from_hanger = true;
|
||||
struct sk_buff *skb;
|
||||
@@ -1472,60 +1473,71 @@ brcmf_fws_txs_process(struct brcmf_fws_i
|
||||
@@ -1476,60 +1477,71 @@ brcmf_fws_txs_process(struct brcmf_fws_i
|
||||
brcmf_dbg(DATA, "flags %d\n", flags);
|
||||
|
||||
if (flags == BRCMF_FWS_TXSTATUS_DISCARD)
|
||||
@@ -144,7 +144,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1551,7 +1563,8 @@ static int brcmf_fws_fifocreditback_indi
|
||||
@@ -1555,7 +1567,8 @@ static int brcmf_fws_fifocreditback_indi
|
||||
return BRCMF_FWS_RET_OK_SCHEDULE;
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
{
|
||||
__le32 status_le;
|
||||
__le16 seq_le;
|
||||
@@ -1560,23 +1573,31 @@ static int brcmf_fws_txstatus_indicate(s
|
||||
@@ -1564,23 +1577,31 @@ static int brcmf_fws_txstatus_indicate(s
|
||||
u32 genbit;
|
||||
u8 flags;
|
||||
u16 seq;
|
||||
@@ -189,7 +189,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_fws_unlock(fws);
|
||||
return BRCMF_FWS_RET_OK_NOSCHEDULE;
|
||||
}
|
||||
@@ -1892,8 +1913,6 @@ void brcmf_fws_hdrpull(struct brcmf_if *
|
||||
@@ -1896,8 +1917,6 @@ void brcmf_fws_hdrpull(struct brcmf_if *
|
||||
|
||||
err = BRCMF_FWS_RET_OK_NOSCHEDULE;
|
||||
switch (type) {
|
||||
@@ -198,7 +198,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
case BRCMF_FWS_TYPE_HOST_REORDER_RXPKTS:
|
||||
rd = (struct brcmf_skb_reorder_data *)skb->cb;
|
||||
rd->reorder = data;
|
||||
@@ -1916,7 +1935,8 @@ void brcmf_fws_hdrpull(struct brcmf_if *
|
||||
@@ -1920,7 +1939,8 @@ void brcmf_fws_hdrpull(struct brcmf_if *
|
||||
err = brcmf_fws_request_indicate(fws, type, data);
|
||||
break;
|
||||
case BRCMF_FWS_TYPE_TXSTATUS:
|
||||
@@ -208,7 +208,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
break;
|
||||
case BRCMF_FWS_TYPE_FIFO_CREDITBACK:
|
||||
err = brcmf_fws_fifocreditback_indicate(fws, data);
|
||||
@@ -2005,7 +2025,7 @@ static void brcmf_fws_rollback_toq(struc
|
||||
@@ -2009,7 +2029,7 @@ static void brcmf_fws_rollback_toq(struc
|
||||
fws->stats.rollback_failed++;
|
||||
hslot = brcmf_skb_htod_tag_get_field(skb, HSLOT);
|
||||
brcmf_fws_txs_process(fws, BRCMF_FWS_TXSTATUS_HOST_TOSSED,
|
||||
@@ -217,7 +217,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
} else {
|
||||
fws->stats.rollback_success++;
|
||||
brcmf_fws_return_credits(fws, fifo, 1);
|
||||
@@ -2476,7 +2496,8 @@ void brcmf_fws_bustxfail(struct brcmf_fw
|
||||
@@ -2480,7 +2500,8 @@ void brcmf_fws_bustxfail(struct brcmf_fw
|
||||
}
|
||||
brcmf_fws_lock(fws);
|
||||
hslot = brcmf_skb_htod_tag_get_field(skb, HSLOT);
|
||||
|
||||
@@ -209,7 +209,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
if (err) {
|
||||
brcmf_err("error writing SBSDIO_FUNC1_CHIPCLKCSR\n");
|
||||
return;
|
||||
@@ -4067,7 +4114,7 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4071,7 +4118,7 @@ static void brcmf_sdio_firmware_callback
|
||||
const struct firmware *code;
|
||||
void *nvram;
|
||||
u32 nvram_len;
|
||||
@@ -218,7 +218,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u8 devctl;
|
||||
|
||||
brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
|
||||
@@ -4101,8 +4148,11 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4105,8 +4152,11 @@ static void brcmf_sdio_firmware_callback
|
||||
/* Force clocks on backplane to be sure F2 interrupt propagates */
|
||||
saveclk = brcmf_sdiod_readb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||
if (!err) {
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
@@ -4189,6 +4190,17 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4193,6 +4194,17 @@ static void brcmf_sdio_firmware_callback
|
||||
CY_4373_F2_WATERMARK |
|
||||
SBSDIO_MESBUSYCTRL_ENAB, &err);
|
||||
break;
|
||||
|
||||
@@ -1603,7 +1603,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -5338,6 +5381,7 @@ static void brcmf_clear_assoc_ies(struct
|
||||
@@ -5341,6 +5384,7 @@ static void brcmf_clear_assoc_ies(struct
|
||||
static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg,
|
||||
struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1611,7 +1611,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_cfg80211_assoc_ielen_le *assoc_info;
|
||||
struct brcmf_cfg80211_connect_info *conn_info = cfg_to_conn(cfg);
|
||||
u32 req_len;
|
||||
@@ -5349,7 +5393,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5352,7 +5396,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
err = brcmf_fil_iovar_data_get(ifp, "assoc_info",
|
||||
cfg->extra_buf, WL_ASSOC_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1620,7 +1620,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
assoc_info =
|
||||
@@ -5361,7 +5405,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5364,7 +5408,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
cfg->extra_buf,
|
||||
WL_ASSOC_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1629,7 +1629,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
conn_info->req_ie_len = req_len;
|
||||
@@ -5379,7 +5423,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5382,7 +5426,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
cfg->extra_buf,
|
||||
WL_ASSOC_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1638,7 +1638,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
conn_info->resp_ie_len = resp_len;
|
||||
@@ -5508,6 +5552,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5511,6 +5555,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
struct net_device *ndev,
|
||||
const struct brcmf_event_msg *e, void *data)
|
||||
{
|
||||
@@ -1646,7 +1646,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
static int generation;
|
||||
u32 event = e->event_code;
|
||||
u32 reason = e->reason;
|
||||
@@ -5525,7 +5570,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5528,7 +5573,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
if (((event == BRCMF_E_ASSOC_IND) || (event == BRCMF_E_REASSOC_IND)) &&
|
||||
(reason == BRCMF_E_STATUS_SUCCESS)) {
|
||||
if (!data) {
|
||||
@@ -1655,7 +1655,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -5817,6 +5862,7 @@ static void init_vif_event(struct brcmf_
|
||||
@@ -5820,6 +5865,7 @@ static void init_vif_event(struct brcmf_
|
||||
|
||||
static s32 brcmf_dongle_roam(struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1663,7 +1663,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 err;
|
||||
u32 bcn_timeout;
|
||||
__le32 roamtrigger[2];
|
||||
@@ -5829,7 +5875,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5832,7 +5878,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
bcn_timeout = BRCMF_DEFAULT_BCN_TIMEOUT_ROAM_ON;
|
||||
err = brcmf_fil_iovar_int_set(ifp, "bcn_timeout", bcn_timeout);
|
||||
if (err) {
|
||||
@@ -1672,7 +1672,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5841,7 +5887,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5844,7 +5890,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
err = brcmf_fil_iovar_int_set(ifp, "roam_off",
|
||||
ifp->drvr->settings->roamoff);
|
||||
if (err) {
|
||||
@@ -1681,7 +1681,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5850,7 +5896,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5853,7 +5899,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_TRIGGER,
|
||||
(void *)roamtrigger, sizeof(roamtrigger));
|
||||
if (err) {
|
||||
@@ -1690,7 +1690,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5859,7 +5905,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5862,7 +5908,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_DELTA,
|
||||
(void *)roam_delta, sizeof(roam_delta));
|
||||
if (err) {
|
||||
@@ -1699,7 +1699,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5870,25 +5916,26 @@ roam_setup_done:
|
||||
@@ -5873,25 +5919,26 @@ roam_setup_done:
|
||||
static s32
|
||||
brcmf_dongle_scantime(struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1729,7 +1729,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto dongle_scantime_out;
|
||||
}
|
||||
|
||||
@@ -5920,10 +5967,10 @@ static void brcmf_update_bw40_channel_fl
|
||||
@@ -5923,10 +5970,10 @@ static void brcmf_update_bw40_channel_fl
|
||||
static int brcmf_construct_chaninfo(struct brcmf_cfg80211_info *cfg,
|
||||
u32 bw_cap[])
|
||||
{
|
||||
@@ -1741,7 +1741,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_chanspec_list *list;
|
||||
struct brcmu_chan ch;
|
||||
int err;
|
||||
@@ -5942,11 +5989,10 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5945,11 +5992,10 @@ static int brcmf_construct_chaninfo(stru
|
||||
err = brcmf_fil_iovar_data_get(ifp, "chanspecs", pbuf,
|
||||
BRCMF_DCMD_MEDLEN);
|
||||
if (err) {
|
||||
@@ -1754,7 +1754,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
band = wiphy->bands[NL80211_BAND_2GHZ];
|
||||
if (band)
|
||||
for (i = 0; i < band->n_channels; i++)
|
||||
@@ -5966,7 +6012,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5969,7 +6015,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
} else if (ch.band == BRCMU_CHAN_BAND_5G) {
|
||||
band = wiphy->bands[NL80211_BAND_5GHZ];
|
||||
} else {
|
||||
@@ -1764,7 +1764,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
continue;
|
||||
}
|
||||
if (!band)
|
||||
@@ -5989,8 +6036,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5992,8 +6039,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
/* It seems firmware supports some channel we never
|
||||
* considered. Something new in IEEE standard?
|
||||
*/
|
||||
@@ -1775,7 +1775,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -6036,6 +6083,7 @@ fail_pbuf:
|
||||
@@ -6039,6 +6086,7 @@ fail_pbuf:
|
||||
|
||||
static int brcmf_enable_bw40_2g(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -1783,7 +1783,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
|
||||
struct ieee80211_supported_band *band;
|
||||
struct brcmf_fil_bwcap_le band_bwcap;
|
||||
@@ -6082,7 +6130,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6085,7 +6133,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
err = brcmf_fil_iovar_data_get(ifp, "chanspecs", pbuf,
|
||||
BRCMF_DCMD_MEDLEN);
|
||||
if (err) {
|
||||
@@ -1792,7 +1792,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
kfree(pbuf);
|
||||
return err;
|
||||
}
|
||||
@@ -6113,6 +6161,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6116,6 +6164,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
|
||||
static void brcmf_get_bwcap(struct brcmf_if *ifp, u32 bw_cap[])
|
||||
{
|
||||
@@ -1800,7 +1800,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u32 band, mimo_bwcap;
|
||||
int err;
|
||||
|
||||
@@ -6148,7 +6197,7 @@ static void brcmf_get_bwcap(struct brcmf
|
||||
@@ -6151,7 +6200,7 @@ static void brcmf_get_bwcap(struct brcmf
|
||||
bw_cap[NL80211_BAND_5GHZ] |= WLC_BW_20MHZ_BIT;
|
||||
break;
|
||||
default:
|
||||
@@ -1809,7 +1809,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6224,7 +6273,7 @@ static void brcmf_update_vht_cap(struct
|
||||
@@ -6227,7 +6276,7 @@ static void brcmf_update_vht_cap(struct
|
||||
static int brcmf_setup_wiphybands(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
|
||||
@@ -1818,7 +1818,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u32 nmode = 0;
|
||||
u32 vhtmode = 0;
|
||||
u32 bw_cap[2] = { WLC_BW_20MHZ_BIT, WLC_BW_20MHZ_BIT };
|
||||
@@ -6240,7 +6289,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6243,7 +6292,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
(void)brcmf_fil_iovar_int_get(ifp, "vhtmode", &vhtmode);
|
||||
err = brcmf_fil_iovar_int_get(ifp, "nmode", &nmode);
|
||||
if (err) {
|
||||
@@ -1827,7 +1827,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
} else {
|
||||
brcmf_get_bwcap(ifp, bw_cap);
|
||||
}
|
||||
@@ -6250,7 +6299,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6253,7 +6302,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
|
||||
err = brcmf_fil_iovar_int_get(ifp, "rxchain", &rxchain);
|
||||
if (err) {
|
||||
@@ -1836,7 +1836,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
nchain = 1;
|
||||
} else {
|
||||
for (nchain = 0; rxchain; nchain++)
|
||||
@@ -6260,7 +6309,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6263,7 +6312,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
|
||||
err = brcmf_construct_chaninfo(cfg, bw_cap);
|
||||
if (err) {
|
||||
@@ -1845,7 +1845,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -6272,7 +6321,6 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6275,7 +6324,6 @@ static int brcmf_setup_wiphybands(struct
|
||||
&txbf_bfr_cap);
|
||||
}
|
||||
|
||||
@@ -1853,7 +1853,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
for (i = 0; i < ARRAY_SIZE(wiphy->bands); i++) {
|
||||
band = wiphy->bands[i];
|
||||
if (band == NULL)
|
||||
@@ -6473,7 +6521,7 @@ static void brcmf_wiphy_wowl_params(stru
|
||||
@@ -6476,7 +6524,7 @@ static void brcmf_wiphy_wowl_params(stru
|
||||
wowl = kmemdup(&brcmf_wowlan_support, sizeof(brcmf_wowlan_support),
|
||||
GFP_KERNEL);
|
||||
if (!wowl) {
|
||||
@@ -1862,7 +1862,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
wiphy->wowlan = &brcmf_wowlan_support;
|
||||
return;
|
||||
}
|
||||
@@ -6570,7 +6618,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6573,7 +6621,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_BANDLIST, &bandlist,
|
||||
sizeof(bandlist));
|
||||
if (err) {
|
||||
@@ -1871,7 +1871,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
/* first entry in bandlist is number of bands */
|
||||
@@ -6619,6 +6667,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6622,6 +6670,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
|
||||
static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -1879,7 +1879,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct net_device *ndev;
|
||||
struct wireless_dev *wdev;
|
||||
struct brcmf_if *ifp;
|
||||
@@ -6656,7 +6705,7 @@ static s32 brcmf_config_dongle(struct br
|
||||
@@ -6659,7 +6708,7 @@ static s32 brcmf_config_dongle(struct br
|
||||
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_FAKEFRAG, 1);
|
||||
if (err) {
|
||||
@@ -1888,7 +1888,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto default_conf_out;
|
||||
}
|
||||
|
||||
@@ -6848,8 +6897,8 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6851,8 +6900,8 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
/* ignore non-ISO3166 country codes */
|
||||
for (i = 0; i < 2; i++)
|
||||
if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
|
||||
@@ -1899,7 +1899,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6858,7 +6907,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6861,7 +6910,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
|
||||
err = brcmf_fil_iovar_data_get(ifp, "country", &ccreq, sizeof(ccreq));
|
||||
if (err) {
|
||||
@@ -1908,7 +1908,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6868,7 +6917,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6871,7 +6920,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
|
||||
err = brcmf_fil_iovar_data_set(ifp, "country", &ccreq, sizeof(ccreq));
|
||||
if (err) {
|
||||
@@ -1917,7 +1917,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
brcmf_setup_wiphybands(cfg);
|
||||
@@ -6914,13 +6963,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6917,13 +6966,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
u16 *cap = NULL;
|
||||
|
||||
if (!ndev) {
|
||||
@@ -1933,7 +1933,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -6941,7 +6990,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6944,7 +6993,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
|
||||
err = wl_init_priv(cfg);
|
||||
if (err) {
|
||||
@@ -1942,7 +1942,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_free_vif(vif);
|
||||
goto wiphy_out;
|
||||
}
|
||||
@@ -6950,7 +6999,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6953,7 +7002,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
/* determine d11 io type before wiphy setup */
|
||||
err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_VERSION, &io_type);
|
||||
if (err) {
|
||||
@@ -1951,7 +1951,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto priv_out;
|
||||
}
|
||||
cfg->d11inf.io_type = (u8)io_type;
|
||||
@@ -6984,13 +7033,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6987,13 +7036,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
#endif
|
||||
err = wiphy_register(wiphy);
|
||||
if (err < 0) {
|
||||
@@ -1967,7 +1967,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto wiphy_unreg_out;
|
||||
}
|
||||
|
||||
@@ -7008,24 +7057,24 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7011,24 +7060,24 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
|
||||
err = brcmf_fweh_activate_events(ifp);
|
||||
if (err) {
|
||||
@@ -1996,7 +1996,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_btcoex_detach(cfg);
|
||||
brcmf_p2p_detach(&cfg->p2p);
|
||||
goto wiphy_unreg_out;
|
||||
@@ -7045,7 +7094,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7048,7 +7097,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
/* (re-) activate FWEH event handling */
|
||||
err = brcmf_fweh_activate_events(ifp);
|
||||
if (err) {
|
||||
|
||||
@@ -81,7 +81,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -4213,7 +4229,7 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4217,7 +4233,7 @@ static void brcmf_sdio_firmware_callback
|
||||
} else {
|
||||
/* Disable F2 again */
|
||||
sdio_disable_func(sdiod->func2);
|
||||
@@ -90,7 +90,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
|
||||
if (brcmf_chip_sr_capable(bus->ci)) {
|
||||
@@ -4234,8 +4250,10 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4238,8 +4254,10 @@ static void brcmf_sdio_firmware_callback
|
||||
}
|
||||
|
||||
/* If we didn't come up, turn off backplane clock */
|
||||
@@ -102,7 +102,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
sdio_release_host(sdiod->func1);
|
||||
|
||||
@@ -4249,12 +4267,15 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4253,12 +4271,15 @@ static void brcmf_sdio_firmware_callback
|
||||
err = brcmf_attach(sdiod->dev, sdiod->settings);
|
||||
if (err != 0) {
|
||||
brcmf_err("brcmf_attach failed\n");
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6047,11 +6047,18 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6050,11 +6050,18 @@ static int brcmf_construct_chaninfo(stru
|
||||
/* assuming the chanspecs order is HT20,
|
||||
* HT40 upper, HT40 lower, and VHT80.
|
||||
*/
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6048,6 +6048,9 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6051,6 +6051,9 @@ static int brcmf_construct_chaninfo(stru
|
||||
* HT40 upper, HT40 lower, and VHT80.
|
||||
*/
|
||||
switch (ch.bw) {
|
||||
|
||||
@@ -1864,7 +1864,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -5381,7 +5425,7 @@ static void brcmf_clear_assoc_ies(struct
|
||||
@@ -5384,7 +5428,7 @@ static void brcmf_clear_assoc_ies(struct
|
||||
static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg,
|
||||
struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1873,7 +1873,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_cfg80211_assoc_ielen_le *assoc_info;
|
||||
struct brcmf_cfg80211_connect_info *conn_info = cfg_to_conn(cfg);
|
||||
u32 req_len;
|
||||
@@ -5393,7 +5437,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5396,7 +5440,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
err = brcmf_fil_iovar_data_get(ifp, "assoc_info",
|
||||
cfg->extra_buf, WL_ASSOC_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1882,7 +1882,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
assoc_info =
|
||||
@@ -5405,7 +5449,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5408,7 +5452,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
cfg->extra_buf,
|
||||
WL_ASSOC_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1891,7 +1891,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
conn_info->req_ie_len = req_len;
|
||||
@@ -5423,7 +5467,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5426,7 +5470,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
cfg->extra_buf,
|
||||
WL_ASSOC_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1900,7 +1900,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
conn_info->resp_ie_len = resp_len;
|
||||
@@ -5552,7 +5596,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5555,7 +5599,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
struct net_device *ndev,
|
||||
const struct brcmf_event_msg *e, void *data)
|
||||
{
|
||||
@@ -1909,7 +1909,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
static int generation;
|
||||
u32 event = e->event_code;
|
||||
u32 reason = e->reason;
|
||||
@@ -5570,7 +5614,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5573,7 +5617,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
if (((event == BRCMF_E_ASSOC_IND) || (event == BRCMF_E_REASSOC_IND)) &&
|
||||
(reason == BRCMF_E_STATUS_SUCCESS)) {
|
||||
if (!data) {
|
||||
@@ -1918,7 +1918,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -5862,7 +5906,7 @@ static void init_vif_event(struct brcmf_
|
||||
@@ -5865,7 +5909,7 @@ static void init_vif_event(struct brcmf_
|
||||
|
||||
static s32 brcmf_dongle_roam(struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1927,7 +1927,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 err;
|
||||
u32 bcn_timeout;
|
||||
__le32 roamtrigger[2];
|
||||
@@ -5875,7 +5919,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5878,7 +5922,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
bcn_timeout = BRCMF_DEFAULT_BCN_TIMEOUT_ROAM_ON;
|
||||
err = brcmf_fil_iovar_int_set(ifp, "bcn_timeout", bcn_timeout);
|
||||
if (err) {
|
||||
@@ -1936,7 +1936,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5887,7 +5931,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5890,7 +5934,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
err = brcmf_fil_iovar_int_set(ifp, "roam_off",
|
||||
ifp->drvr->settings->roamoff);
|
||||
if (err) {
|
||||
@@ -1945,7 +1945,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5896,7 +5940,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5899,7 +5943,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_TRIGGER,
|
||||
(void *)roamtrigger, sizeof(roamtrigger));
|
||||
if (err) {
|
||||
@@ -1954,7 +1954,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5905,7 +5949,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5908,7 +5952,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_DELTA,
|
||||
(void *)roam_delta, sizeof(roam_delta));
|
||||
if (err) {
|
||||
@@ -1963,7 +1963,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto roam_setup_done;
|
||||
}
|
||||
|
||||
@@ -5916,26 +5960,26 @@ roam_setup_done:
|
||||
@@ -5919,26 +5963,26 @@ roam_setup_done:
|
||||
static s32
|
||||
brcmf_dongle_scantime(struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1994,7 +1994,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto dongle_scantime_out;
|
||||
}
|
||||
|
||||
@@ -5968,7 +6012,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5971,7 +6015,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
u32 bw_cap[])
|
||||
{
|
||||
struct wiphy *wiphy = cfg_to_wiphy(cfg);
|
||||
@@ -2004,7 +2004,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct ieee80211_supported_band *band;
|
||||
struct ieee80211_channel *channel;
|
||||
struct brcmf_chanspec_list *list;
|
||||
@@ -5989,7 +6034,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5992,7 +6037,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
err = brcmf_fil_iovar_data_get(ifp, "chanspecs", pbuf,
|
||||
BRCMF_DCMD_MEDLEN);
|
||||
if (err) {
|
||||
@@ -2013,7 +2013,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto fail_pbuf;
|
||||
}
|
||||
|
||||
@@ -6012,7 +6057,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6015,7 +6060,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
} else if (ch.band == BRCMU_CHAN_BAND_5G) {
|
||||
band = wiphy->bands[NL80211_BAND_5GHZ];
|
||||
} else {
|
||||
@@ -2022,7 +2022,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
ch.chspec);
|
||||
continue;
|
||||
}
|
||||
@@ -6036,7 +6081,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6039,7 +6084,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
/* It seems firmware supports some channel we never
|
||||
* considered. Something new in IEEE standard?
|
||||
*/
|
||||
@@ -2031,7 +2031,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
ch.control_ch_num);
|
||||
continue;
|
||||
}
|
||||
@@ -6093,8 +6138,8 @@ fail_pbuf:
|
||||
@@ -6096,8 +6141,8 @@ fail_pbuf:
|
||||
|
||||
static int brcmf_enable_bw40_2g(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -2042,7 +2042,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct ieee80211_supported_band *band;
|
||||
struct brcmf_fil_bwcap_le band_bwcap;
|
||||
struct brcmf_chanspec_list *list;
|
||||
@@ -6140,7 +6185,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6143,7 +6188,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
err = brcmf_fil_iovar_data_get(ifp, "chanspecs", pbuf,
|
||||
BRCMF_DCMD_MEDLEN);
|
||||
if (err) {
|
||||
@@ -2051,7 +2051,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
kfree(pbuf);
|
||||
return err;
|
||||
}
|
||||
@@ -6171,7 +6216,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6174,7 +6219,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
|
||||
static void brcmf_get_bwcap(struct brcmf_if *ifp, u32 bw_cap[])
|
||||
{
|
||||
@@ -2060,7 +2060,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u32 band, mimo_bwcap;
|
||||
int err;
|
||||
|
||||
@@ -6207,7 +6252,7 @@ static void brcmf_get_bwcap(struct brcmf
|
||||
@@ -6210,7 +6255,7 @@ static void brcmf_get_bwcap(struct brcmf
|
||||
bw_cap[NL80211_BAND_5GHZ] |= WLC_BW_20MHZ_BIT;
|
||||
break;
|
||||
default:
|
||||
@@ -2069,7 +2069,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6282,7 +6327,8 @@ static void brcmf_update_vht_cap(struct
|
||||
@@ -6285,7 +6330,8 @@ static void brcmf_update_vht_cap(struct
|
||||
|
||||
static int brcmf_setup_wiphybands(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -2079,7 +2079,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct wiphy *wiphy = cfg_to_wiphy(cfg);
|
||||
u32 nmode = 0;
|
||||
u32 vhtmode = 0;
|
||||
@@ -6299,7 +6345,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6302,7 +6348,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
(void)brcmf_fil_iovar_int_get(ifp, "vhtmode", &vhtmode);
|
||||
err = brcmf_fil_iovar_int_get(ifp, "nmode", &nmode);
|
||||
if (err) {
|
||||
@@ -2088,7 +2088,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
} else {
|
||||
brcmf_get_bwcap(ifp, bw_cap);
|
||||
}
|
||||
@@ -6309,7 +6355,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6312,7 +6358,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
|
||||
err = brcmf_fil_iovar_int_get(ifp, "rxchain", &rxchain);
|
||||
if (err) {
|
||||
@@ -2097,7 +2097,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
nchain = 1;
|
||||
} else {
|
||||
for (nchain = 0; rxchain; nchain++)
|
||||
@@ -6319,7 +6365,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6322,7 +6368,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
|
||||
err = brcmf_construct_chaninfo(cfg, bw_cap);
|
||||
if (err) {
|
||||
@@ -2106,7 +2106,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -6526,12 +6572,13 @@ static void brcmf_wiphy_wowl_params(stru
|
||||
@@ -6529,12 +6575,13 @@ static void brcmf_wiphy_wowl_params(stru
|
||||
{
|
||||
#ifdef CONFIG_PM
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
@@ -2121,7 +2121,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
wiphy->wowlan = &brcmf_wowlan_support;
|
||||
return;
|
||||
}
|
||||
@@ -6628,7 +6675,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6631,7 +6678,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_BANDLIST, &bandlist,
|
||||
sizeof(bandlist));
|
||||
if (err) {
|
||||
@@ -2130,7 +2130,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
/* first entry in bandlist is number of bands */
|
||||
@@ -6677,7 +6724,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6680,7 +6727,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
|
||||
static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -2139,7 +2139,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct net_device *ndev;
|
||||
struct wireless_dev *wdev;
|
||||
struct brcmf_if *ifp;
|
||||
@@ -6715,7 +6762,7 @@ static s32 brcmf_config_dongle(struct br
|
||||
@@ -6718,7 +6765,7 @@ static s32 brcmf_config_dongle(struct br
|
||||
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_FAKEFRAG, 1);
|
||||
if (err) {
|
||||
@@ -2148,7 +2148,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto default_conf_out;
|
||||
}
|
||||
|
||||
@@ -6896,6 +6943,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6899,6 +6946,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
|
||||
@@ -2156,7 +2156,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_fil_country_le ccreq;
|
||||
s32 err;
|
||||
int i;
|
||||
@@ -6907,7 +6955,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6910,7 +6958,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
/* ignore non-ISO3166 country codes */
|
||||
for (i = 0; i < 2; i++)
|
||||
if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
|
||||
@@ -2165,7 +2165,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
req->alpha2[0], req->alpha2[1]);
|
||||
return;
|
||||
}
|
||||
@@ -6917,7 +6965,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6920,7 +6968,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
|
||||
err = brcmf_fil_iovar_data_get(ifp, "country", &ccreq, sizeof(ccreq));
|
||||
if (err) {
|
||||
@@ -2174,7 +2174,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -6927,7 +6975,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6930,7 +6978,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
|
||||
err = brcmf_fil_iovar_data_set(ifp, "country", &ccreq, sizeof(ccreq));
|
||||
if (err) {
|
||||
@@ -2183,7 +2183,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
brcmf_setup_wiphybands(cfg);
|
||||
@@ -6973,13 +7021,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6976,13 +7024,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
u16 *cap = NULL;
|
||||
|
||||
if (!ndev) {
|
||||
@@ -2199,7 +2199,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -7000,7 +7048,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7003,7 +7051,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
|
||||
err = wl_init_priv(cfg);
|
||||
if (err) {
|
||||
@@ -2208,7 +2208,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_free_vif(vif);
|
||||
goto wiphy_out;
|
||||
}
|
||||
@@ -7009,7 +7057,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7012,7 +7060,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
/* determine d11 io type before wiphy setup */
|
||||
err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_VERSION, &io_type);
|
||||
if (err) {
|
||||
@@ -2217,7 +2217,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto priv_out;
|
||||
}
|
||||
cfg->d11inf.io_type = (u8)io_type;
|
||||
@@ -7043,13 +7091,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7046,13 +7094,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
#endif
|
||||
err = wiphy_register(wiphy);
|
||||
if (err < 0) {
|
||||
@@ -2233,7 +2233,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto wiphy_unreg_out;
|
||||
}
|
||||
|
||||
@@ -7067,24 +7115,24 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7070,24 +7118,24 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
|
||||
err = brcmf_fweh_activate_events(ifp);
|
||||
if (err) {
|
||||
@@ -2262,7 +2262,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_btcoex_detach(cfg);
|
||||
brcmf_p2p_detach(&cfg->p2p);
|
||||
goto wiphy_unreg_out;
|
||||
@@ -7104,7 +7152,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7107,7 +7155,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
/* (re-) activate FWEH event handling */
|
||||
err = brcmf_fweh_activate_events(ifp);
|
||||
if (err) {
|
||||
|
||||
@@ -690,7 +690,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
ifp->bsscfgidx, name, len);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
@@ -1259,6 +1259,7 @@ static int brcmf_fws_enq(struct brcmf_fw
|
||||
@@ -1263,6 +1263,7 @@ static int brcmf_fws_enq(struct brcmf_fw
|
||||
enum brcmf_fws_skb_state state, int fifo,
|
||||
struct sk_buff *p)
|
||||
{
|
||||
@@ -698,7 +698,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
int prec = 2 * fifo;
|
||||
u32 *qfull_stat = &fws->stats.delayq_full_error;
|
||||
struct brcmf_fws_mac_descriptor *entry;
|
||||
@@ -1271,7 +1272,7 @@ static int brcmf_fws_enq(struct brcmf_fw
|
||||
@@ -1275,7 +1276,7 @@ static int brcmf_fws_enq(struct brcmf_fw
|
||||
|
||||
entry = brcmf_skbcb(p)->mac;
|
||||
if (entry == NULL) {
|
||||
@@ -707,7 +707,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -1461,6 +1462,7 @@ static int
|
||||
@@ -1465,6 +1466,7 @@ static int
|
||||
brcmf_fws_txs_process(struct brcmf_fws_info *fws, u8 flags, u32 hslot,
|
||||
u32 genbit, u16 seq, u8 compcnt)
|
||||
{
|
||||
@@ -715,7 +715,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u32 fifo;
|
||||
u8 cnt = 0;
|
||||
int ret;
|
||||
@@ -1485,14 +1487,14 @@ brcmf_fws_txs_process(struct brcmf_fws_i
|
||||
@@ -1489,14 +1491,14 @@ brcmf_fws_txs_process(struct brcmf_fws_i
|
||||
else if (flags == BRCMF_FWS_TXSTATUS_HOST_TOSSED)
|
||||
fws->stats.txs_host_tossed += compcnt;
|
||||
else
|
||||
@@ -733,7 +733,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto cont;
|
||||
}
|
||||
|
||||
@@ -1616,12 +1618,13 @@ static int brcmf_fws_notify_credit_map(s
|
||||
@@ -1620,12 +1622,13 @@ static int brcmf_fws_notify_credit_map(s
|
||||
const struct brcmf_event_msg *e,
|
||||
void *data)
|
||||
{
|
||||
@@ -749,7 +749,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1685,6 +1688,7 @@ static void brcmf_rxreorder_get_skb_list
|
||||
@@ -1689,6 +1692,7 @@ static void brcmf_rxreorder_get_skb_list
|
||||
|
||||
void brcmf_fws_rxreorder(struct brcmf_if *ifp, struct sk_buff *pkt)
|
||||
{
|
||||
@@ -757,7 +757,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u8 *reorder_data;
|
||||
u8 flow_id, max_idx, cur_idx, exp_idx, end_idx;
|
||||
struct brcmf_ampdu_rx_reorder *rfi;
|
||||
@@ -1699,7 +1703,7 @@ void brcmf_fws_rxreorder(struct brcmf_if
|
||||
@@ -1703,7 +1707,7 @@ void brcmf_fws_rxreorder(struct brcmf_if
|
||||
|
||||
/* validate flags and flow id */
|
||||
if (flags == 0xFF) {
|
||||
@@ -766,7 +766,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_netif_rx(ifp, pkt);
|
||||
return;
|
||||
}
|
||||
@@ -1736,7 +1740,7 @@ void brcmf_fws_rxreorder(struct brcmf_if
|
||||
@@ -1740,7 +1744,7 @@ void brcmf_fws_rxreorder(struct brcmf_if
|
||||
flow_id, max_idx);
|
||||
rfi = kzalloc(buf_size, GFP_ATOMIC);
|
||||
if (rfi == NULL) {
|
||||
@@ -775,7 +775,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_netif_rx(ifp, pkt);
|
||||
return;
|
||||
}
|
||||
@@ -2000,6 +2004,7 @@ static u8 brcmf_fws_precommit_skb(struct
|
||||
@@ -2004,6 +2008,7 @@ static u8 brcmf_fws_precommit_skb(struct
|
||||
static void brcmf_fws_rollback_toq(struct brcmf_fws_info *fws,
|
||||
struct sk_buff *skb, int fifo)
|
||||
{
|
||||
@@ -783,7 +783,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_fws_mac_descriptor *entry;
|
||||
struct sk_buff *pktout;
|
||||
int qidx, hslot;
|
||||
@@ -2013,11 +2018,11 @@ static void brcmf_fws_rollback_toq(struc
|
||||
@@ -2017,11 +2022,11 @@ static void brcmf_fws_rollback_toq(struc
|
||||
|
||||
pktout = brcmu_pktq_penq_head(&entry->psq, qidx, skb);
|
||||
if (pktout == NULL) {
|
||||
@@ -797,7 +797,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
rc = -ENOENT;
|
||||
}
|
||||
|
||||
@@ -2122,7 +2127,8 @@ static int brcmf_fws_assign_htod(struct
|
||||
@@ -2126,7 +2131,8 @@ static int brcmf_fws_assign_htod(struct
|
||||
|
||||
int brcmf_fws_process_skb(struct brcmf_if *ifp, struct sk_buff *skb)
|
||||
{
|
||||
@@ -807,7 +807,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_skbuff_cb *skcb = brcmf_skbcb(skb);
|
||||
struct ethhdr *eh = (struct ethhdr *)(skb->data);
|
||||
int fifo = BRCMF_FWS_FIFO_BCMC;
|
||||
@@ -2150,7 +2156,7 @@ int brcmf_fws_process_skb(struct brcmf_i
|
||||
@@ -2154,7 +2160,7 @@ int brcmf_fws_process_skb(struct brcmf_i
|
||||
brcmf_fws_enq(fws, BRCMF_FWS_SKBSTATE_DELAYED, fifo, skb);
|
||||
brcmf_fws_schedule_deq(fws);
|
||||
} else {
|
||||
@@ -816,7 +816,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_txfinalize(ifp, skb, false);
|
||||
rc = -ENOMEM;
|
||||
}
|
||||
@@ -2371,7 +2377,7 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
@@ -2375,7 +2381,7 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
|
||||
fws->fws_wq = create_singlethread_workqueue("brcmf_fws_wq");
|
||||
if (fws->fws_wq == NULL) {
|
||||
@@ -825,7 +825,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
rc = -EBADF;
|
||||
goto fail;
|
||||
}
|
||||
@@ -2387,13 +2393,13 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
@@ -2391,13 +2397,13 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
rc = brcmf_fweh_register(drvr, BRCMF_E_FIFO_CREDIT_MAP,
|
||||
brcmf_fws_notify_credit_map);
|
||||
if (rc < 0) {
|
||||
@@ -841,7 +841,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
brcmf_fweh_unregister(drvr, BRCMF_E_FIFO_CREDIT_MAP);
|
||||
goto fail;
|
||||
}
|
||||
@@ -2405,7 +2411,7 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
@@ -2409,7 +2415,7 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
fws->fw_signals = true;
|
||||
ifp = brcmf_get_ifp(drvr, 0);
|
||||
if (brcmf_fil_iovar_int_set(ifp, "tlv", tlv)) {
|
||||
|
||||
@@ -19,7 +19,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6725,6 +6725,11 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6728,6 +6728,11 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
wiphy_free(drvr->wiphy);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
@@ -2432,25 +2432,17 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
@@ -2436,25 +2436,17 @@ struct brcmf_fws_info *brcmf_fws_attach(
|
||||
return fws;
|
||||
|
||||
fail:
|
||||
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -7194,7 +7194,6 @@ void brcmf_cfg80211_detach(struct brcmf_
|
||||
@@ -7197,7 +7197,6 @@ void brcmf_cfg80211_detach(struct brcmf_
|
||||
brcmf_pno_detach(cfg);
|
||||
brcmf_btcoex_detach(cfg);
|
||||
wiphy_unregister(cfg->wiphy);
|
||||
|
||||
@@ -153,7 +153,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
kfree(bus->msgbuf->flowrings);
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -4254,17 +4254,26 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4258,17 +4258,26 @@ static void brcmf_sdio_firmware_callback
|
||||
sdiod->bus_if->chip = bus->ci->chip;
|
||||
sdiod->bus_if->chiprev = bus->ci->chiprev;
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
#ifdef DEBUG
|
||||
|
||||
@@ -4212,6 +4214,19 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4216,6 +4218,19 @@ static void brcmf_sdio_firmware_callback
|
||||
brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
|
||||
&err);
|
||||
break;
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -5936,19 +5936,17 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5939,19 +5939,17 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
roamtrigger[1] = cpu_to_le32(BRCM_BAND_ALL);
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_TRIGGER,
|
||||
(void *)roamtrigger, sizeof(roamtrigger));
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6444,6 +6444,9 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
|
||||
@@ -6447,6 +6447,9 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
|
||||
* #STA <= 1, #AP <= 1, channels = 1, 2 total
|
||||
* #AP <= 4, matching BI, channels = 1, 4 total
|
||||
*
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
* p2p, no mchan, and mbss:
|
||||
*
|
||||
* #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 1, channels = 1, 3 total
|
||||
@@ -6455,6 +6458,10 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
|
||||
@@ -6458,6 +6461,10 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
|
||||
* #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 1, channels = 2, 3 total
|
||||
* #STA <= 1, #P2P-DEV <= 1, #AP <= 1, #P2P-CL <= 1, channels = 1, 4 total
|
||||
* #AP <= 4, matching BI, channels = 1, 4 total
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
*/
|
||||
static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -6462,13 +6469,14 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6465,13 +6472,14 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
struct ieee80211_iface_limit *c0_limits = NULL;
|
||||
struct ieee80211_iface_limit *p2p_limits = NULL;
|
||||
struct ieee80211_iface_limit *mbss_limits = NULL;
|
||||
@@ -58,7 +58,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL);
|
||||
if (!combo)
|
||||
goto err;
|
||||
@@ -6479,16 +6487,36 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6482,16 +6490,36 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
|
||||
c = 0;
|
||||
i = 0;
|
||||
@@ -99,7 +99,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
@@ -6497,16 +6525,26 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6500,16 +6528,26 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
c0_limits[i].max = 1;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
BIT(NL80211_IFTYPE_P2P_GO);
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
|
||||
@@ -908,7 +908,7 @@ static u8 brcmf_fws_hdrpush(struct brcmf
|
||||
@@ -912,7 +912,7 @@ static u8 brcmf_fws_hdrpush(struct brcmf
|
||||
wlh += wlh[1] + 2;
|
||||
|
||||
if (entry->send_tim_signal) {
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -4249,6 +4249,12 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4253,6 +4253,12 @@ static void brcmf_sdio_firmware_callback
|
||||
}
|
||||
|
||||
if (err == 0) {
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
/* Allow full data communication using DPC from now on. */
|
||||
brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
|
||||
|
||||
@@ -4265,12 +4271,6 @@ static void brcmf_sdio_firmware_callback
|
||||
@@ -4269,12 +4275,6 @@ static void brcmf_sdio_firmware_callback
|
||||
|
||||
sdio_release_host(sdiod->func1);
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -6471,12 +6471,13 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6474,12 +6474,13 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
struct ieee80211_iface_limit *c0_limits = NULL;
|
||||
struct ieee80211_iface_limit *p2p_limits = NULL;
|
||||
struct ieee80211_iface_limit *mbss_limits = NULL;
|
||||
@@ -33,7 +33,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
n_combos = 1 + !!(p2p && !rsdb) + !!mbss;
|
||||
combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL);
|
||||
@@ -6486,6 +6487,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6489,6 +6490,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
||||
BIT(NL80211_IFTYPE_ADHOC) |
|
||||
BIT(NL80211_IFTYPE_AP);
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
c = 0;
|
||||
i = 0;
|
||||
@@ -6497,48 +6502,28 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6500,48 +6505,28 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
|
||||
if (!c0_limits)
|
||||
goto err;
|
||||
|
||||
@@ -139,7 +139,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
case NL80211_IFTYPE_AP:
|
||||
return brcmf_cfg80211_del_ap_iface(wiphy, wdev);
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
@@ -6471,9 +6550,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6474,9 +6553,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
struct ieee80211_iface_limit *c0_limits = NULL;
|
||||
struct ieee80211_iface_limit *p2p_limits = NULL;
|
||||
struct ieee80211_iface_limit *mbss_limits = NULL;
|
||||
@@ -152,7 +152,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
|
||||
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
|
||||
rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
|
||||
@@ -6487,6 +6567,8 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6490,6 +6570,8 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
|
||||
BIT(NL80211_IFTYPE_ADHOC) |
|
||||
BIT(NL80211_IFTYPE_AP);
|
||||
@@ -161,7 +161,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
if (p2p)
|
||||
wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
@@ -6494,18 +6576,18 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6497,18 +6579,18 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
|
||||
c = 0;
|
||||
i = 0;
|
||||
@@ -186,7 +186,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
if (p2p) {
|
||||
c0_limits[i].max = 1;
|
||||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
|
||||
@@ -6554,14 +6636,20 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6557,14 +6639,20 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
if (mbss) {
|
||||
c++;
|
||||
i = 0;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/marvell/mwl8k.c
|
||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
|
||||
@@ -5691,6 +5691,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
|
||||
@@ -5692,6 +5692,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
|
||||
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
|
||||
|
||||
static const struct pci_device_id mwl8k_pci_id_table[] = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/marvell/mwl8k.c
|
||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
|
||||
@@ -6276,6 +6276,8 @@ static int mwl8k_probe(struct pci_dev *p
|
||||
@@ -6277,6 +6277,8 @@ static int mwl8k_probe(struct pci_dev *p
|
||||
|
||||
priv->running_bsses = 0;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
return rc;
|
||||
|
||||
err_stop_firmware:
|
||||
@@ -6309,8 +6311,6 @@ static void mwl8k_remove(struct pci_dev
|
||||
@@ -6310,8 +6312,6 @@ static void mwl8k_remove(struct pci_dev
|
||||
return;
|
||||
priv = hw->priv;
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
From 1b9ae0c92925ac40489be526d67d0010d0724ce0 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Thu, 21 May 2020 22:14:22 +0200
|
||||
Subject: [PATCH] wireless: Use linux/stddef.h instead of stddef.h
|
||||
|
||||
When compiling inside the kernel include linux/stddef.h instead of
|
||||
stddef.h. When I compile this header file in backports for power PC I
|
||||
run into a conflict with ptrdiff_t. I was unable to reproduce this in
|
||||
mainline kernel. I still would like to fix this problem in the kernel.
|
||||
|
||||
Fixes: 6989310f5d43 ("wireless: Use offsetof instead of custom macro.")
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Link: https://lore.kernel.org/r/20200521201422.16493-1-hauke@hauke-m.de
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
include/uapi/linux/wireless.h | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/include/uapi/linux/wireless.h
|
||||
+++ b/include/uapi/linux/wireless.h
|
||||
@@ -74,7 +74,11 @@
|
||||
#include <linux/socket.h> /* for "struct sockaddr" et al */
|
||||
#include <linux/if.h> /* for IFNAMSIZ and co... */
|
||||
|
||||
-#include <stddef.h> /* for offsetof */
|
||||
+#ifdef __KERNEL__
|
||||
+# include <linux/stddef.h> /* for offsetof */
|
||||
+#else
|
||||
+# include <stddef.h> /* for offsetof */
|
||||
+#endif
|
||||
|
||||
/***************************** VERSION *****************************/
|
||||
/*
|
||||
@@ -385,7 +385,7 @@
|
||||
#endif /* AES_GCM_H */
|
||||
--- a/net/mac80211/wpa.c
|
||||
+++ b/net/mac80211/wpa.c
|
||||
@@ -314,7 +314,8 @@ ieee80211_crypto_tkip_decrypt(struct iee
|
||||
@@ -315,7 +315,8 @@ ieee80211_crypto_tkip_decrypt(struct iee
|
||||
}
|
||||
|
||||
|
||||
@@ -395,7 +395,7 @@
|
||||
{
|
||||
__le16 mask_fc;
|
||||
int a4_included, mgmt;
|
||||
@@ -344,14 +345,8 @@ static void ccmp_special_blocks(struct s
|
||||
@@ -345,14 +346,8 @@ static void ccmp_special_blocks(struct s
|
||||
else
|
||||
qos_tid = 0;
|
||||
|
||||
@@ -412,7 +412,7 @@
|
||||
|
||||
/* Nonce: Nonce Flags | A2 | PN
|
||||
* Nonce Flags: Priority (b0..b3) | Management (b4) | Reserved (b5..b7)
|
||||
@@ -359,6 +354,8 @@ static void ccmp_special_blocks(struct s
|
||||
@@ -360,6 +355,8 @@ static void ccmp_special_blocks(struct s
|
||||
b_0[1] = qos_tid | (mgmt << 4);
|
||||
memcpy(&b_0[2], hdr->addr2, ETH_ALEN);
|
||||
memcpy(&b_0[8], pn, IEEE80211_CCMP_PN_LEN);
|
||||
@@ -421,7 +421,7 @@
|
||||
|
||||
/* AAD (extra authenticate-only data) / masked 802.11 header
|
||||
* FC | A1 | A2 | A3 | SC | [A4] | [QC] */
|
||||
@@ -415,7 +412,7 @@ static int ccmp_encrypt_skb(struct ieee8
|
||||
@@ -416,7 +413,7 @@ static int ccmp_encrypt_skb(struct ieee8
|
||||
u8 *pos;
|
||||
u8 pn[6];
|
||||
u64 pn64;
|
||||
@@ -430,7 +430,7 @@
|
||||
u8 b_0[AES_BLOCK_SIZE];
|
||||
|
||||
if (info->control.hw_key &&
|
||||
@@ -470,9 +467,11 @@ static int ccmp_encrypt_skb(struct ieee8
|
||||
@@ -471,9 +468,11 @@ static int ccmp_encrypt_skb(struct ieee8
|
||||
return 0;
|
||||
|
||||
pos += IEEE80211_CCMP_HDR_LEN;
|
||||
@@ -445,7 +445,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -545,13 +544,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee
|
||||
@@ -546,13 +545,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee
|
||||
u8 aad[2 * AES_BLOCK_SIZE];
|
||||
u8 b_0[AES_BLOCK_SIZE];
|
||||
/* hardware didn't decrypt/verify MIC */
|
||||
@@ -461,7 +461,7 @@
|
||||
return RX_DROP_UNUSABLE;
|
||||
}
|
||||
|
||||
@@ -646,7 +645,7 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
@@ -649,7 +648,7 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
u8 *pos;
|
||||
u8 pn[6];
|
||||
u64 pn64;
|
||||
@@ -470,7 +470,7 @@
|
||||
u8 j_0[AES_BLOCK_SIZE];
|
||||
|
||||
if (info->control.hw_key &&
|
||||
@@ -703,8 +702,10 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
@@ -706,8 +705,10 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
|
||||
pos += IEEE80211_GCMP_HDR_LEN;
|
||||
gcmp_special_blocks(skb, pn, j_0, aad);
|
||||
@@ -483,7 +483,7 @@
|
||||
}
|
||||
|
||||
ieee80211_tx_result
|
||||
@@ -1127,9 +1128,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct
|
||||
@@ -1132,9 +1133,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct
|
||||
struct ieee80211_key *key = tx->key;
|
||||
struct ieee80211_mmie_16 *mmie;
|
||||
struct ieee80211_hdr *hdr;
|
||||
@@ -495,7 +495,7 @@
|
||||
|
||||
if (WARN_ON(skb_queue_len(&tx->skbs) != 1))
|
||||
return TX_DROP;
|
||||
@@ -1175,7 +1176,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct
|
||||
@@ -1180,7 +1181,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct
|
||||
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
struct ieee80211_key *key = rx->key;
|
||||
struct ieee80211_mmie_16 *mmie;
|
||||
|
||||
@@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1067,7 +1067,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||
@@ -1068,7 +1068,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||
sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF;
|
||||
|
||||
__sta_info_flush(sdata, true);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3822,6 +3822,12 @@ out:
|
||||
@@ -3833,6 +3833,12 @@ out:
|
||||
netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
static int ieee80211_ifa6_changed(struct notifier_block *nb,
|
||||
unsigned long data, void *arg)
|
||||
{
|
||||
@@ -1168,14 +1168,14 @@ int ieee80211_register_hw(struct ieee802
|
||||
@@ -1182,14 +1182,14 @@ int ieee80211_register_hw(struct ieee802
|
||||
|
||||
rtnl_unlock();
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed;
|
||||
result = register_inet6addr_notifier(&local->ifa6_notifier);
|
||||
if (result)
|
||||
@@ -1184,13 +1184,13 @@ int ieee80211_register_hw(struct ieee802
|
||||
@@ -1198,13 +1198,13 @@ int ieee80211_register_hw(struct ieee802
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
fail_ifa:
|
||||
#endif
|
||||
rtnl_lock();
|
||||
@@ -1219,10 +1219,10 @@ void ieee80211_unregister_hw(struct ieee
|
||||
@@ -1233,10 +1233,10 @@ void ieee80211_unregister_hw(struct ieee
|
||||
tasklet_kill(&local->tx_pending_tasklet);
|
||||
tasklet_kill(&local->tasklet);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2189,7 +2189,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
@@ -2192,7 +2192,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
* the frames sent while scanning on other channel will be
|
||||
* lost)
|
||||
*/
|
||||
|
||||
@@ -61,7 +61,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -818,6 +818,7 @@ enum txq_info_flags {
|
||||
@@ -807,6 +807,7 @@ enum txq_info_flags {
|
||||
IEEE80211_TXQ_STOP,
|
||||
IEEE80211_TXQ_AMPDU,
|
||||
IEEE80211_TXQ_NO_AMSDU,
|
||||
@@ -69,7 +69,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1226,6 +1227,7 @@ struct ieee80211_local {
|
||||
@@ -1214,6 +1215,7 @@ struct ieee80211_local {
|
||||
|
||||
struct sk_buff_head pending[IEEE80211_MAX_QUEUES];
|
||||
struct tasklet_struct tx_pending_tasklet;
|
||||
@@ -77,7 +77,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
atomic_t agg_queue_stop[IEEE80211_MAX_QUEUES];
|
||||
|
||||
@@ -2047,6 +2049,7 @@ void ieee80211_txq_remove_vlan(struct ie
|
||||
@@ -2035,6 +2037,7 @@ void ieee80211_txq_remove_vlan(struct ie
|
||||
struct ieee80211_sub_if_data *sdata);
|
||||
void ieee80211_fill_txq_stats(struct cfg80211_txq_stats *txqstats,
|
||||
struct txq_info *txqi);
|
||||
@@ -100,7 +100,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
(unsigned long) local);
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3487,13 +3487,19 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
@@ -3498,13 +3498,19 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ieee80211_tx_data tx;
|
||||
ieee80211_tx_result r;
|
||||
@@ -122,7 +122,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
/* Make sure fragments stay together. */
|
||||
skb = __skb_dequeue(&txqi->frags);
|
||||
if (skb)
|
||||
@@ -3606,6 +3612,7 @@ begin:
|
||||
@@ -3617,6 +3623,7 @@ begin:
|
||||
}
|
||||
|
||||
IEEE80211_SKB_CB(skb)->control.vif = vif;
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/rc80211_minstrel.c
|
||||
+++ b/net/mac80211/rc80211_minstrel.c
|
||||
@@ -689,8 +689,8 @@ minstrel_alloc(struct ieee80211_hw *hw,
|
||||
@@ -672,8 +672,8 @@ minstrel_alloc(struct ieee80211_hw *hw,
|
||||
|
||||
#ifdef CPTCFG_MAC80211_DEBUGFS
|
||||
mp->fixed_rate_idx = (u32) -1;
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif
|
||||
|
||||
minstrel_init_cck_rates(mp);
|
||||
@@ -701,9 +701,6 @@ minstrel_alloc(struct ieee80211_hw *hw,
|
||||
@@ -684,9 +684,6 @@ minstrel_alloc(struct ieee80211_hw *hw,
|
||||
static void
|
||||
minstrel_free(void *priv)
|
||||
{
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
kfree(priv);
|
||||
}
|
||||
|
||||
@@ -735,7 +732,6 @@ const struct rate_control_ops mac80211_m
|
||||
@@ -718,7 +715,6 @@ const struct rate_control_ops mac80211_m
|
||||
.free_sta = minstrel_free_sta,
|
||||
#ifdef CPTCFG_MAC80211_DEBUGFS
|
||||
.add_sta_debugfs = minstrel_add_sta_debugfs,
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
};
|
||||
--- a/net/mac80211/rc80211_minstrel.h
|
||||
+++ b/net/mac80211/rc80211_minstrel.h
|
||||
@@ -109,11 +109,6 @@ struct minstrel_sta_info {
|
||||
@@ -108,11 +108,6 @@ struct minstrel_sta_info {
|
||||
|
||||
/* sampling table */
|
||||
u8 *sample_table;
|
||||
@@ -53,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
};
|
||||
|
||||
struct minstrel_priv {
|
||||
@@ -137,7 +132,6 @@ struct minstrel_priv {
|
||||
@@ -136,7 +131,6 @@ struct minstrel_priv {
|
||||
* - setting will be applied on next update
|
||||
*/
|
||||
u32 fixed_rate_idx;
|
||||
@@ -61,7 +61,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -156,7 +150,6 @@ minstrel_get_ewmsd10(struct minstrel_rat
|
||||
@@ -155,7 +149,6 @@ minstrel_get_ewmsd10(struct minstrel_rat
|
||||
|
||||
extern const struct rate_control_ops mac80211_minstrel;
|
||||
void minstrel_add_sta_debugfs(void *priv, void *priv_sta, struct dentry *dir);
|
||||
|
||||
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ccflags-y += -DDEBUG
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -1308,18 +1308,12 @@ static int __init ieee80211_init(void)
|
||||
@@ -1322,18 +1322,12 @@ static int __init ieee80211_init(void)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
rc80211_minstrel_exit();
|
||||
|
||||
return ret;
|
||||
@@ -1327,7 +1321,6 @@ static int __init ieee80211_init(void)
|
||||
@@ -1341,7 +1335,6 @@ static int __init ieee80211_init(void)
|
||||
|
||||
static void __exit ieee80211_exit(void)
|
||||
{
|
||||
@@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#endif /* IEEE80211_RATE_H */
|
||||
--- a/net/mac80211/rc80211_minstrel.c
|
||||
+++ b/net/mac80211/rc80211_minstrel.c
|
||||
@@ -572,138 +572,6 @@ minstrel_rate_init(void *priv, struct ie
|
||||
@@ -555,138 +555,6 @@ minstrel_rate_init(void *priv, struct ie
|
||||
minstrel_update_rates(mp, mi);
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
static u32 minstrel_get_expected_throughput(void *priv_sta)
|
||||
{
|
||||
struct minstrel_sta_info *mi = priv_sta;
|
||||
@@ -722,28 +590,8 @@ static u32 minstrel_get_expected_through
|
||||
@@ -705,28 +573,8 @@ static u32 minstrel_get_expected_through
|
||||
}
|
||||
|
||||
const struct rate_control_ops mac80211_minstrel = {
|
||||
@@ -287,7 +287,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
-}
|
||||
--- a/net/mac80211/rc80211_minstrel.h
|
||||
+++ b/net/mac80211/rc80211_minstrel.h
|
||||
@@ -158,7 +158,5 @@ int minstrel_get_tp_avg(struct minstrel_
|
||||
@@ -157,7 +157,5 @@ int minstrel_get_tp_avg(struct minstrel_
|
||||
/* debugfs */
|
||||
int minstrel_stats_open(struct inode *inode, struct file *file);
|
||||
int minstrel_stats_csv_open(struct inode *inode, struct file *file);
|
||||
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/rc80211_minstrel.h
|
||||
+++ b/net/mac80211/rc80211_minstrel.h
|
||||
@@ -114,6 +114,7 @@ struct minstrel_sta_info {
|
||||
@@ -113,6 +113,7 @@ struct minstrel_sta_info {
|
||||
struct minstrel_priv {
|
||||
struct ieee80211_hw *hw;
|
||||
bool has_mrr;
|
||||
|
||||
@@ -145,7 +145,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
struct cfg80211_nan_conf *conf)
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -829,6 +829,8 @@ enum txq_info_flags {
|
||||
@@ -818,6 +818,8 @@ enum txq_info_flags {
|
||||
* a fq_flow which is already owned by a different tin
|
||||
* @def_cvars: codel vars for @def_flow
|
||||
* @frags: used to keep fragments created after dequeue
|
||||
@@ -154,7 +154,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
*/
|
||||
struct txq_info {
|
||||
struct fq_tin tin;
|
||||
@@ -836,6 +838,8 @@ struct txq_info {
|
||||
@@ -825,6 +827,8 @@ struct txq_info {
|
||||
struct codel_vars def_cvars;
|
||||
struct codel_stats cstats;
|
||||
struct sk_buff_head frags;
|
||||
@@ -163,7 +163,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
unsigned long flags;
|
||||
|
||||
/* keep last! */
|
||||
@@ -1127,6 +1131,11 @@ struct ieee80211_local {
|
||||
@@ -1115,6 +1119,11 @@ struct ieee80211_local {
|
||||
struct codel_vars *cvars;
|
||||
struct codel_params cparams;
|
||||
|
||||
@@ -191,7 +191,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1249,7 +1249,7 @@ void ieee80211_sta_ps_deliver_wakeup(str
|
||||
@@ -1265,7 +1265,7 @@ void ieee80211_sta_ps_deliver_wakeup(str
|
||||
if (!txq_has_queue(sta->sta.txq[i]))
|
||||
continue;
|
||||
|
||||
@@ -229,7 +229,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -3620,6 +3624,60 @@ out:
|
||||
@@ -3631,6 +3635,60 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -4709,6 +4710,11 @@ static int nl80211_send_station(struct s
|
||||
@@ -4715,6 +4716,11 @@ static int nl80211_send_station(struct s
|
||||
PUT_SINFO(PLID, plid, u16);
|
||||
PUT_SINFO(PLINK_STATE, plink_state, u8);
|
||||
PUT_SINFO_U64(RX_DURATION, rx_duration);
|
||||
@@ -168,7 +168,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
switch (rdev->wiphy.signal_type) {
|
||||
case CFG80211_SIGNAL_TYPE_MBM:
|
||||
@@ -5345,6 +5351,15 @@ static int nl80211_set_station(struct sk
|
||||
@@ -5351,6 +5357,15 @@ static int nl80211_set_station(struct sk
|
||||
nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]);
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
/* Include parameters for TDLS peer (will check later) */
|
||||
err = nl80211_set_station_tdls(info, ¶ms);
|
||||
if (err)
|
||||
@@ -5483,6 +5498,15 @@ static int nl80211_new_station(struct sk
|
||||
@@ -5489,6 +5504,15 @@ static int nl80211_new_station(struct sk
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
* The values are not guaranteed to be coherent with regard to each other, i.e.
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1390,6 +1390,9 @@ static int sta_apply_parameters(struct i
|
||||
@@ -1391,6 +1391,9 @@ static int sta_apply_parameters(struct i
|
||||
if (ieee80211_vif_is_mesh(&sdata->vif))
|
||||
sta_apply_mesh_params(local, sta, params);
|
||||
|
||||
@@ -240,7 +240,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
sta->debugfs_dir,
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1136,6 +1136,8 @@ struct ieee80211_local {
|
||||
@@ -1124,6 +1124,8 @@ struct ieee80211_local {
|
||||
struct list_head active_txqs[IEEE80211_NUM_ACS];
|
||||
u16 schedule_round[IEEE80211_NUM_ACS];
|
||||
|
||||
@@ -259,7 +259,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
INIT_LIST_HEAD(&local->chanctx_list);
|
||||
mutex_init(&local->chanctx_mtx);
|
||||
@@ -1142,6 +1143,9 @@ int ieee80211_register_hw(struct ieee802
|
||||
@@ -1156,6 +1157,9 @@ int ieee80211_register_hw(struct ieee802
|
||||
if (!local->hw.max_nan_de_entries)
|
||||
local->hw.max_nan_de_entries = IEEE80211_MAX_NAN_INSTANCE_ID;
|
||||
|
||||
@@ -289,7 +289,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -381,9 +378,12 @@ struct sta_info *sta_info_alloc(struct i
|
||||
@@ -401,9 +398,12 @@ struct sta_info *sta_info_alloc(struct i
|
||||
if (sta_prepare_rate_control(local, sta, gfp))
|
||||
goto free_txq;
|
||||
|
||||
@@ -302,7 +302,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
|
||||
for (i = 0; i < IEEE80211_NUM_TIDS; i++)
|
||||
@@ -1826,6 +1826,27 @@ void ieee80211_sta_set_buffered(struct i
|
||||
@@ -1842,6 +1842,27 @@ void ieee80211_sta_set_buffered(struct i
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_sta_set_buffered);
|
||||
|
||||
@@ -330,7 +330,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
int sta_info_move_state(struct sta_info *sta,
|
||||
enum ieee80211_sta_state new_state)
|
||||
{
|
||||
@@ -2192,6 +2213,23 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
@@ -2212,6 +2233,23 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED);
|
||||
}
|
||||
|
||||
@@ -356,7 +356,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
for_each_possible_cpu(cpu) {
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -127,6 +127,16 @@ enum ieee80211_agg_stop_reason {
|
||||
@@ -128,6 +128,16 @@ enum ieee80211_agg_stop_reason {
|
||||
AGG_STOP_DESTROY_STA,
|
||||
};
|
||||
|
||||
@@ -373,7 +373,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
struct sta_info;
|
||||
|
||||
/**
|
||||
@@ -563,6 +573,9 @@ struct sta_info {
|
||||
@@ -593,6 +603,9 @@ struct sta_info {
|
||||
} tx_stats;
|
||||
u16 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1];
|
||||
|
||||
@@ -412,7 +412,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
spin_lock_bh(&local->active_txq_lock[txqi->txq.ac]);
|
||||
list_del_init(&txqi->schedule_order);
|
||||
spin_unlock_bh(&local->active_txq_lock[txqi->txq.ac]);
|
||||
@@ -3631,11 +3634,28 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3642,11 +3645,28 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
|
||||
lockdep_assert_held(&local->active_txq_lock[ac]);
|
||||
|
||||
@@ -442,7 +442,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
return NULL;
|
||||
|
||||
list_del_init(&txqi->schedule_order);
|
||||
@@ -3653,12 +3673,74 @@ void ieee80211_return_txq(struct ieee802
|
||||
@@ -3664,12 +3684,74 @@ void ieee80211_return_txq(struct ieee802
|
||||
lockdep_assert_held(&local->active_txq_lock[txq->ac]);
|
||||
|
||||
if (list_empty(&txqi->schedule_order) &&
|
||||
|
||||
@@ -51,7 +51,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3693,6 +3693,19 @@ void ieee80211_return_txq(struct ieee802
|
||||
@@ -3704,6 +3704,19 @@ void ieee80211_return_txq(struct ieee802
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_return_txq);
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -179,6 +179,7 @@ struct ieee80211_tx_data {
|
||||
@@ -161,6 +161,7 @@ struct ieee80211_tx_data {
|
||||
struct ieee80211_tx_rate rate;
|
||||
|
||||
unsigned int flags;
|
||||
@@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (likely(sta)) {
|
||||
if (!IS_ERR(sta))
|
||||
tx->sta = sta;
|
||||
@@ -3525,6 +3525,7 @@ begin:
|
||||
@@ -3536,6 +3536,7 @@ begin:
|
||||
tx.local = local;
|
||||
tx.skb = skb;
|
||||
tx.sdata = vif_to_sdata(info->control.vif);
|
||||
@@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (txq->sta) {
|
||||
tx.sta = container_of(txq->sta, struct sta_info, sta);
|
||||
@@ -3569,7 +3570,7 @@ begin:
|
||||
@@ -3580,7 +3581,7 @@ begin:
|
||||
|
||||
if (tx.key &&
|
||||
(tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV))
|
||||
@@ -65,7 +65,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
ieee80211_xmit_fast_finish(sta->sdata, sta, pn_offs,
|
||||
tx.key, skb);
|
||||
@@ -4028,6 +4029,7 @@ ieee80211_build_data_template(struct iee
|
||||
@@ -4039,6 +4040,7 @@ ieee80211_build_data_template(struct iee
|
||||
hdr = (void *)skb->data;
|
||||
tx.sta = sta_info_get(sdata, hdr->addr1);
|
||||
tx.skb = skb;
|
||||
@@ -164,7 +164,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
size_t klen, u8 *data, size_t data_len);
|
||||
--- a/net/mac80211/wpa.c
|
||||
+++ b/net/mac80211/wpa.c
|
||||
@@ -44,7 +44,7 @@ ieee80211_tx_h_michael_mic_add(struct ie
|
||||
@@ -45,7 +45,7 @@ ieee80211_tx_h_michael_mic_add(struct ie
|
||||
skb->len < 24 || !ieee80211_is_data_present(hdr->frame_control))
|
||||
return TX_CONTINUE;
|
||||
|
||||
@@ -173,7 +173,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (skb->len < hdrlen)
|
||||
return TX_DROP;
|
||||
|
||||
@@ -195,7 +195,6 @@ mic_fail_no_key:
|
||||
@@ -196,7 +196,6 @@ mic_fail_no_key:
|
||||
|
||||
static int tkip_encrypt_skb(struct ieee80211_tx_data *tx, struct sk_buff *skb)
|
||||
{
|
||||
@@ -181,7 +181,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_key *key = tx->key;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
unsigned int hdrlen;
|
||||
@@ -210,7 +209,7 @@ static int tkip_encrypt_skb(struct ieee8
|
||||
@@ -211,7 +210,7 @@ static int tkip_encrypt_skb(struct ieee8
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
len = skb->len - hdrlen;
|
||||
|
||||
if (info->control.hw_key)
|
||||
@@ -428,7 +427,7 @@ static int ccmp_encrypt_skb(struct ieee8
|
||||
@@ -429,7 +428,7 @@ static int ccmp_encrypt_skb(struct ieee8
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
len = skb->len - hdrlen;
|
||||
|
||||
if (info->control.hw_key)
|
||||
@@ -660,7 +659,7 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
@@ -663,7 +662,7 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
len = skb->len - hdrlen;
|
||||
|
||||
if (info->control.hw_key)
|
||||
@@ -800,7 +799,6 @@ static ieee80211_tx_result
|
||||
@@ -805,7 +804,6 @@ static ieee80211_tx_result
|
||||
ieee80211_crypto_cs_encrypt(struct ieee80211_tx_data *tx,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
@@ -216,7 +216,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_key *key = tx->key;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
int hdrlen;
|
||||
@@ -816,8 +814,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8
|
||||
@@ -821,8 +819,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8
|
||||
pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC)))
|
||||
return TX_DROP;
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
* mac80211 is capable of taking advantage of many hardware
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1871,6 +1871,10 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
@@ -1873,6 +1873,10 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
+ 8 /* rfc1042/bridge tunnel */
|
||||
- ETH_HLEN /* ethernet hard_header_len */
|
||||
+ IEEE80211_ENCRYPT_HEADROOM;
|
||||
@@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
ret = dev_alloc_name(ndev, ndev->name);
|
||||
--- a/net/mac80211/mesh_pathtbl.c
|
||||
+++ b/net/mac80211/mesh_pathtbl.c
|
||||
@@ -105,13 +105,15 @@ void mesh_path_assign_nexthop(struct mes
|
||||
@@ -106,13 +106,15 @@ void mesh_path_assign_nexthop(struct mes
|
||||
static void prepare_for_gate(struct sk_buff *skb, char *dst_addr,
|
||||
struct mesh_path *gate_mpath)
|
||||
{
|
||||
@@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!(mshdr->flags & MESH_FLAGS_AE)) {
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2621,7 +2621,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2705,7 +2705,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
struct ieee80211_local *local = rx->local;
|
||||
struct ieee80211_sub_if_data *sdata = rx->sdata;
|
||||
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
|
||||
@@ -122,7 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int tailroom = 0;
|
||||
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
@@ -2714,7 +2714,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2798,7 +2798,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
if (sdata->crypto_tx_tailroom_needed_cnt)
|
||||
tailroom = IEEE80211_ENCRYPT_TAILROOM;
|
||||
|
||||
@@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
sdata->encrypt_headroom,
|
||||
tailroom, GFP_ATOMIC);
|
||||
if (!fwd_skb)
|
||||
@@ -2746,6 +2748,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2830,6 +2832,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
return RX_DROP_MONITOR;
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
out:
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -311,7 +311,7 @@ struct ieee80211_fast_tx {
|
||||
@@ -312,7 +312,7 @@ struct ieee80211_fast_tx {
|
||||
u8 hdr_len;
|
||||
u8 sa_offs, da_offs, pn_offs;
|
||||
u8 band;
|
||||
@@ -227,7 +227,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (likely(sta)) {
|
||||
if (!IS_ERR(sta))
|
||||
@@ -2222,7 +2221,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
|
||||
@@ -2233,7 +2232,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
|
||||
goto fail;
|
||||
|
||||
hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr);
|
||||
@@ -236,7 +236,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (skb->len < len_rthdr + hdrlen)
|
||||
goto fail;
|
||||
@@ -2441,7 +2440,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2452,7 +2451,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
struct ieee80211_chanctx_conf *chanctx_conf;
|
||||
struct ieee80211_sub_if_data *ap_sdata;
|
||||
enum nl80211_band band;
|
||||
@@ -245,7 +245,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (IS_ERR(sta))
|
||||
sta = NULL;
|
||||
@@ -2740,7 +2739,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2751,7 +2750,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
}
|
||||
|
||||
skb_pull(skb, skip_header_bytes);
|
||||
@@ -255,7 +255,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/*
|
||||
* So we need to modify the skb header and hence need a copy of
|
||||
@@ -2773,6 +2774,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2784,6 +2785,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen);
|
||||
#endif
|
||||
|
||||
@@ -265,7 +265,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (ieee80211_is_data_qos(fc)) {
|
||||
__le16 *qos_control;
|
||||
|
||||
@@ -2949,6 +2953,8 @@ void ieee80211_check_fast_xmit(struct st
|
||||
@@ -2960,6 +2964,8 @@ void ieee80211_check_fast_xmit(struct st
|
||||
fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* We store the key here so there's no point in using rcu_dereference()
|
||||
* but that's fine because the code that changes the pointers will call
|
||||
* this function after doing so. For a single CPU that would be enough,
|
||||
@@ -3525,7 +3531,7 @@ begin:
|
||||
@@ -3536,7 +3542,7 @@ begin:
|
||||
tx.local = local;
|
||||
tx.skb = skb;
|
||||
tx.sdata = vif_to_sdata(info->control.vif);
|
||||
@@ -283,7 +283,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (txq->sta) {
|
||||
tx.sta = container_of(txq->sta, struct sta_info, sta);
|
||||
@@ -4029,7 +4035,7 @@ ieee80211_build_data_template(struct iee
|
||||
@@ -4040,7 +4046,7 @@ ieee80211_build_data_template(struct iee
|
||||
hdr = (void *)skb->data;
|
||||
tx.sta = sta_info_get(sdata, hdr->addr1);
|
||||
tx.skb = skb;
|
||||
|
||||
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
* ieee80211_txq_may_transmit - check whether TXQ is allowed to transmit
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3637,16 +3637,17 @@ EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
@@ -3648,16 +3648,17 @@ EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
@@ -115,7 +115,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (txqi->txq.sta) {
|
||||
struct sta_info *sta = container_of(txqi->txq.sta,
|
||||
@@ -3663,21 +3664,25 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3674,21 +3675,25 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
|
||||
|
||||
if (txqi->schedule_round == local->schedule_round[ac])
|
||||
@@ -146,7 +146,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (list_empty(&txqi->schedule_order) &&
|
||||
(!skb_queue_empty(&txqi->frags) || txqi->tin.backlog_packets)) {
|
||||
@@ -3697,18 +3702,7 @@ void ieee80211_return_txq(struct ieee802
|
||||
@@ -3708,18 +3713,7 @@ void ieee80211_return_txq(struct ieee802
|
||||
list_add_tail(&txqi->schedule_order,
|
||||
&local->active_txqs[txq->ac]);
|
||||
}
|
||||
@@ -165,7 +165,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
spin_unlock_bh(&local->active_txq_lock[txq->ac]);
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_schedule_txq);
|
||||
@@ -3721,7 +3715,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -3732,7 +3726,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
struct sta_info *sta;
|
||||
u8 ac = txq->ac;
|
||||
|
||||
@@ -174,7 +174,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (!txqi->txq.sta)
|
||||
goto out;
|
||||
@@ -3751,34 +3745,27 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -3762,34 +3756,27 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
|
||||
sta->airtime[ac].deficit += sta->airtime_weight;
|
||||
list_move_tail(&txqi->schedule_order, &local->active_txqs[ac]);
|
||||
|
||||
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void mesh_path_timer(struct timer_list *t)
|
||||
--- a/net/mac80211/mesh_pathtbl.c
|
||||
+++ b/net/mac80211/mesh_pathtbl.c
|
||||
@@ -219,7 +219,7 @@ static struct mesh_path *mpath_lookup(st
|
||||
@@ -220,7 +220,7 @@ static struct mesh_path *mpath_lookup(st
|
||||
{
|
||||
struct mesh_path *mpath;
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
schedule_and_wake_txq(local, txqi);
|
||||
|
||||
@@ -3200,6 +3201,7 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3211,6 +3212,7 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
u8 max_subframes = sta->sta.max_amsdu_subframes;
|
||||
int max_frags = local->hw.max_tx_fragments;
|
||||
int max_amsdu_len = sta->sta.max_amsdu_len;
|
||||
@@ -119,7 +119,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int orig_truesize;
|
||||
__be16 len;
|
||||
void *data;
|
||||
@@ -3222,6 +3224,8 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3233,6 +3235,8 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
max_amsdu_len = min_t(int, max_amsdu_len,
|
||||
sta->sta.max_rc_amsdu_len);
|
||||
|
||||
@@ -128,7 +128,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
spin_lock_bh(&fq->lock);
|
||||
|
||||
/* TODO: Ideally aggregation should be done on dequeue to remain
|
||||
@@ -3229,7 +3233,8 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3240,7 +3244,8 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
*/
|
||||
|
||||
tin = &txqi->tin;
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3507,6 +3507,7 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
@@ -3518,6 +3518,7 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
ieee80211_tx_result r;
|
||||
struct ieee80211_vif *vif = txq->vif;
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
spin_lock_bh(&fq->lock);
|
||||
|
||||
if (test_bit(IEEE80211_TXQ_STOP, &txqi->flags) ||
|
||||
@@ -3523,11 +3524,12 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
@@ -3534,11 +3535,12 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
if (skb)
|
||||
goto out;
|
||||
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
hdr = (struct ieee80211_hdr *)skb->data;
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
|
||||
@@ -3591,8 +3593,11 @@ begin:
|
||||
@@ -3602,8 +3604,11 @@ begin:
|
||||
|
||||
skb = __skb_dequeue(&tx.skbs);
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
if (skb && skb_has_frag_list(skb) &&
|
||||
@@ -3631,6 +3636,7 @@ begin:
|
||||
@@ -3642,6 +3647,7 @@ begin:
|
||||
}
|
||||
|
||||
IEEE80211_SKB_CB(skb)->control.vif = vif;
|
||||
|
||||
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1301,6 +1301,7 @@ static void ieee80211_if_setup(struct ne
|
||||
@@ -1297,6 +1297,7 @@ static void ieee80211_if_setup(struct ne
|
||||
static void ieee80211_if_setup_no_queue(struct net_device *dev)
|
||||
{
|
||||
ieee80211_if_setup(dev);
|
||||
|
||||
@@ -1,202 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sun, 17 Mar 2019 18:11:30 +0100
|
||||
Subject: [PATCH] mac80211: optimize skb resizing
|
||||
|
||||
When forwarding unicast packets from ethernet to batman-adv over 802.11s
|
||||
(with forwarding disabled), the typical required headroom to transmit
|
||||
encrypted packets on mt76 is 32 (802.11) + 6 (802.11s) + 8 (CCMP) +
|
||||
2 (padding) + 6 (LLC) + 18 (batman-adv) - 14 (old ethernet header) = 58 bytes.
|
||||
|
||||
On systems where NET_SKB_PAD is 64 this leads to a call to pskb_expand_head
|
||||
for every packet, since mac80211 also tries to allocate 16 bytes status
|
||||
headroom for radiotap headers.
|
||||
|
||||
This patch fixes these unnecessary reallocations by only requiring the extra
|
||||
status headroom in ieee80211_tx_monitor()
|
||||
If however a reallocation happens before that call, the status headroom gets
|
||||
added there as well, in order to avoid double reallocation.
|
||||
|
||||
The patch also cleans up the code by moving the headroom calculation to
|
||||
ieee80211_skb_resize.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1762,6 +1762,9 @@ void ieee80211_clear_fast_xmit(struct st
|
||||
int ieee80211_tx_control_port(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *buf, size_t len,
|
||||
const u8 *dest, __be16 proto, bool unencrypted);
|
||||
+int ieee80211_skb_resize(struct ieee80211_local *local,
|
||||
+ struct ieee80211_sub_if_data *sdata,
|
||||
+ struct sk_buff *skb, int hdrlen, int hdr_add);
|
||||
|
||||
/* HT */
|
||||
void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -671,6 +671,11 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
}
|
||||
}
|
||||
|
||||
+ if (ieee80211_skb_resize(local, NULL, skb, 0, 0)) {
|
||||
+ dev_kfree_skb(skb);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
/* send frame to monitor interfaces now */
|
||||
rtap_len = ieee80211_tx_radiotap_len(info);
|
||||
if (WARN_ON_ONCE(skb_headroom(skb) < rtap_len)) {
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1914,37 +1914,53 @@ static bool ieee80211_tx(struct ieee8021
|
||||
}
|
||||
|
||||
/* device xmit handlers */
|
||||
-
|
||||
-static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata,
|
||||
- struct sk_buff *skb,
|
||||
- int head_need, bool may_encrypt)
|
||||
+int ieee80211_skb_resize(struct ieee80211_local *local,
|
||||
+ struct ieee80211_sub_if_data *sdata,
|
||||
+ struct sk_buff *skb, int hdr_len, int hdr_extra)
|
||||
{
|
||||
- struct ieee80211_local *local = sdata->local;
|
||||
+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_hdr *hdr;
|
||||
- bool enc_tailroom;
|
||||
- int tail_need = 0;
|
||||
-
|
||||
- hdr = (struct ieee80211_hdr *) skb->data;
|
||||
- enc_tailroom = may_encrypt &&
|
||||
- (sdata->crypto_tx_tailroom_needed_cnt ||
|
||||
- ieee80211_is_mgmt(hdr->frame_control));
|
||||
-
|
||||
- if (enc_tailroom) {
|
||||
- tail_need = IEEE80211_ENCRYPT_TAILROOM;
|
||||
- tail_need -= skb_tailroom(skb);
|
||||
- tail_need = max_t(int, tail_need, 0);
|
||||
+ int head_need, head_max;
|
||||
+ int tail_need, tail_max;
|
||||
+ bool enc_tailroom = false;
|
||||
+
|
||||
+ if (sdata && !hdr_len &&
|
||||
+ !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT)) {
|
||||
+ hdr = (struct ieee80211_hdr *) skb->data;
|
||||
+ enc_tailroom = (sdata->crypto_tx_tailroom_needed_cnt ||
|
||||
+ ieee80211_is_mgmt(hdr->frame_control));
|
||||
+ hdr_len += sdata->encrypt_headroom;
|
||||
+ }
|
||||
+
|
||||
+ head_need = head_max = hdr_len;
|
||||
+ tail_need = tail_max = 0;
|
||||
+ if (!sdata) {
|
||||
+ head_need = head_max = local->tx_headroom;
|
||||
+ } else {
|
||||
+ head_max += hdr_extra;
|
||||
+ head_max += max_t(int, local->tx_headroom,
|
||||
+ local->hw.extra_tx_headroom);
|
||||
+ head_need += local->hw.extra_tx_headroom;
|
||||
+
|
||||
+ tail_max = IEEE80211_ENCRYPT_TAILROOM;
|
||||
+ if (enc_tailroom)
|
||||
+ tail_need = tail_max;
|
||||
}
|
||||
|
||||
if (skb_cloned(skb) &&
|
||||
(!ieee80211_hw_check(&local->hw, SUPPORTS_CLONED_SKBS) ||
|
||||
!skb_clone_writable(skb, ETH_HLEN) || enc_tailroom))
|
||||
I802_DEBUG_INC(local->tx_expand_skb_head_cloned);
|
||||
- else if (head_need || tail_need)
|
||||
+ else if (head_need > skb_headroom(skb) ||
|
||||
+ tail_need > skb_tailroom(skb))
|
||||
I802_DEBUG_INC(local->tx_expand_skb_head);
|
||||
else
|
||||
return 0;
|
||||
|
||||
- if (pskb_expand_head(skb, head_need, tail_need, GFP_ATOMIC)) {
|
||||
+ head_max = max_t(int, 0, head_max - skb_headroom(skb));
|
||||
+ tail_max = max_t(int, 0, tail_max - skb_tailroom(skb));
|
||||
+
|
||||
+ if (pskb_expand_head(skb, head_max, tail_max, GFP_ATOMIC)) {
|
||||
wiphy_debug(local->hw.wiphy,
|
||||
"failed to reallocate TX buffer\n");
|
||||
return -ENOMEM;
|
||||
@@ -1960,18 +1976,8 @@ void ieee80211_xmit(struct ieee80211_sub
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_hdr *hdr;
|
||||
- int headroom;
|
||||
- bool may_encrypt;
|
||||
-
|
||||
- may_encrypt = !(info->flags & IEEE80211_TX_INTFL_DONT_ENCRYPT);
|
||||
|
||||
- headroom = local->tx_headroom;
|
||||
- if (may_encrypt)
|
||||
- headroom += sdata->encrypt_headroom;
|
||||
- headroom -= skb_headroom(skb);
|
||||
- headroom = max_t(int, 0, headroom);
|
||||
-
|
||||
- if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) {
|
||||
+ if (ieee80211_skb_resize(local, sdata, skb, 0, 0)) {
|
||||
ieee80211_free_txskb(&local->hw, skb);
|
||||
return;
|
||||
}
|
||||
@@ -2741,30 +2747,14 @@ static struct sk_buff *ieee80211_build_h
|
||||
|
||||
skb_pull(skb, skip_header_bytes);
|
||||
padsize = ieee80211_hdr_padsize(&local->hw, hdrlen);
|
||||
- head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb);
|
||||
+ head_need = hdrlen + encaps_len + meshhdrlen;
|
||||
head_need += padsize;
|
||||
|
||||
- /*
|
||||
- * So we need to modify the skb header and hence need a copy of
|
||||
- * that. The head_need variable above doesn't, so far, include
|
||||
- * the needed header space that we don't need right away. If we
|
||||
- * can, then we don't reallocate right now but only after the
|
||||
- * frame arrives at the master device (if it does...)
|
||||
- *
|
||||
- * If we cannot, however, then we will reallocate to include all
|
||||
- * the ever needed space. Also, if we need to reallocate it anyway,
|
||||
- * make it big enough for everything we may ever need.
|
||||
- */
|
||||
-
|
||||
- if (head_need > 0 || skb_cloned(skb)) {
|
||||
- head_need += sdata->encrypt_headroom;
|
||||
- head_need += local->tx_headroom;
|
||||
- head_need = max_t(int, 0, head_need);
|
||||
- if (ieee80211_skb_resize(sdata, skb, head_need, true)) {
|
||||
- ieee80211_free_txskb(&local->hw, skb);
|
||||
- skb = NULL;
|
||||
- return ERR_PTR(-ENOMEM);
|
||||
- }
|
||||
+ if (ieee80211_skb_resize(local, sdata, skb, head_need,
|
||||
+ sdata->encrypt_headroom)) {
|
||||
+ ieee80211_free_txskb(&local->hw, skb);
|
||||
+ skb = NULL;
|
||||
+ return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
if (encaps_data)
|
||||
@@ -3377,7 +3367,6 @@ static bool ieee80211_xmit_fast(struct i
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
u16 ethertype = (skb->data[12] << 8) | skb->data[13];
|
||||
int extra_head = fast_tx->hdr_len - (ETH_HLEN - 2);
|
||||
- int hw_headroom = sdata->local->hw.extra_tx_headroom;
|
||||
struct ethhdr eth;
|
||||
struct ieee80211_tx_info *info;
|
||||
struct ieee80211_hdr *hdr = (void *)fast_tx->hdr;
|
||||
@@ -3429,10 +3418,7 @@ static bool ieee80211_xmit_fast(struct i
|
||||
* as the may-encrypt argument for the resize to not account for
|
||||
* more room than we already have in 'extra_head'
|
||||
*/
|
||||
- if (unlikely(ieee80211_skb_resize(sdata, skb,
|
||||
- max_t(int, extra_head + hw_headroom -
|
||||
- skb_headroom(skb), 0),
|
||||
- false))) {
|
||||
+ if (unlikely(ieee80211_skb_resize(local, sdata, skb, extra_head, 0))) {
|
||||
kfree_skb(skb);
|
||||
return true;
|
||||
}
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/**
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3673,8 +3673,9 @@ out:
|
||||
@@ -3698,8 +3698,9 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_next_txq);
|
||||
|
||||
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct txq_info *txqi = to_txq_info(txq);
|
||||
@@ -3682,7 +3683,8 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
@@ -3707,7 +3708,8 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
spin_lock_bh(&local->active_txq_lock[txq->ac]);
|
||||
|
||||
if (list_empty(&txqi->schedule_order) &&
|
||||
@@ -94,7 +94,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* If airtime accounting is active, always enqueue STAs at the
|
||||
* head of the list to ensure that they only get moved to the
|
||||
* back by the airtime DRR scheduler once they have a negative
|
||||
@@ -3702,7 +3704,7 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
@@ -3727,7 +3729,7 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
|
||||
spin_unlock_bh(&local->active_txq_lock[txq->ac]);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3772,6 +3772,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -3797,6 +3797,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
u32 ctrl_flags)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct sta_info *sta;
|
||||
struct sk_buff *next;
|
||||
|
||||
@@ -3785,7 +3786,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -3810,7 +3811,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
if (ieee80211_lookup_ra_sta(sdata, skb, &sta))
|
||||
goto out_free;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user