Compare commits
71 Commits
v19.07.8
...
openwrt-19
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1da2e82c11 | ||
|
|
b110a09402 | ||
|
|
1e1d3e4eff | ||
|
|
9a3ea10d96 | ||
|
|
21d852083d | ||
|
|
83b0e20711 | ||
|
|
ecbbb373ed | ||
|
|
f6e22f0956 | ||
|
|
d03dc49943 | ||
|
|
9ce6aa9d8d | ||
|
|
698cdf0202 | ||
|
|
26a8be9c98 | ||
|
|
ae2af91edd | ||
|
|
058c2347c5 | ||
|
|
d39a6c67dc | ||
|
|
9aa35fada6 | ||
|
|
b24905c38a | ||
|
|
a518a4f786 | ||
|
|
ea0e521d37 | ||
|
|
0af411f49d | ||
|
|
565159db57 | ||
|
|
c5c047f19b | ||
|
|
6b8407c6da | ||
|
|
9ced994057 | ||
|
|
5ecc7ead48 | ||
|
|
f49eec6335 | ||
|
|
cc344f1513 | ||
|
|
31bb27f35b | ||
|
|
572a1f9abe | ||
|
|
a2482fc3a5 | ||
|
|
106382c27c | ||
|
|
2a3558b0de | ||
|
|
3b6ce4f634 | ||
|
|
e7596ce0b0 | ||
|
|
1691c1168d | ||
|
|
419b9f4c45 | ||
|
|
bfa4cccd46 | ||
|
|
e92a4e5458 | ||
|
|
606106fb29 | ||
|
|
524cbcf6f5 | ||
|
|
57293f51c4 | ||
|
|
974161d7f8 | ||
|
|
b50eb70e01 | ||
|
|
5369ceb787 | ||
|
|
81d0b4a9f4 | ||
|
|
1d94f72439 | ||
|
|
cc8c1be438 | ||
|
|
554f1b89aa | ||
|
|
f14bc5cf56 | ||
|
|
8fb714edd6 | ||
|
|
b5b526285a | ||
|
|
a5c479a200 | ||
|
|
b9f866825f | ||
|
|
662fe6a6ee | ||
|
|
5e8b9624f1 | ||
|
|
c72ea2a6c7 | ||
|
|
93a48cb1a0 | ||
|
|
123d12eada | ||
|
|
31a2d41d64 | ||
|
|
556d165dda | ||
|
|
f33dc315cb | ||
|
|
f31bb35b63 | ||
|
|
e8cf46ebba | ||
|
|
d059ce28f5 | ||
|
|
af5c8856f8 | ||
|
|
9882a54c48 | ||
|
|
fdea0036a2 | ||
|
|
40c03b101c | ||
|
|
9d082556fe | ||
|
|
7378c94927 | ||
|
|
cfc1602a1e |
@@ -1,5 +1,5 @@
|
||||
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
|
||||
src-git packages https://git.openwrt.org/feed/packages.git;openwrt-19.07
|
||||
src-git luci https://git.openwrt.org/project/luci.git;openwrt-19.07
|
||||
src-git routing https://git.openwrt.org/feed/routing.git;openwrt-19.07
|
||||
src-git telephony https://git.openwrt.org/feed/telephony.git;openwrt-19.07
|
||||
src-git freifunk https://github.com/freifunk/openwrt-packages.git;openwrt-19.07
|
||||
|
||||
@@ -532,6 +532,7 @@ define Device/Build/image
|
||||
@mkdir -p $$(shell dirname $$@)
|
||||
DEVICE_ID="$(DEVICE_NAME)" \
|
||||
BIN_DIR="$(BIN_DIR)" \
|
||||
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
|
||||
IMAGE_NAME="$(IMAGE_NAME)" \
|
||||
IMAGE_TYPE=$(word 1,$(subst ., ,$(2))) \
|
||||
IMAGE_FILESYSTEM="$(1)" \
|
||||
|
||||
@@ -6,9 +6,9 @@ ifdef CONFIG_TESTING_KERNEL
|
||||
KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
|
||||
endif
|
||||
|
||||
LINUX_VERSION-4.14 = .241
|
||||
LINUX_VERSION-4.14 = .275
|
||||
|
||||
LINUX_KERNEL_HASH-4.14.241 = b5bb04bb70154ba27a08bc1c067eb7c08fc3d513da58e6a33d6645b3a1889f7d
|
||||
LINUX_KERNEL_HASH-4.14.275 = 100a9960fb2d8e079c9feeef640715a7fb749ed728a57e427f9e2443212e58f9
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||
|
||||
@@ -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.8)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),19.07-SNAPSHOT)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r11364-ef56c85848)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),$(REVISION))
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/19.07.8)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/releases/19.07-SNAPSHOT)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
||||
@@ -45,6 +45,7 @@ boot() {
|
||||
|
||||
/bin/config_generate
|
||||
uci_apply_defaults
|
||||
sync
|
||||
|
||||
# temporary hack until configd exists
|
||||
/sbin/reload_config
|
||||
|
||||
@@ -183,7 +183,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "http://downloads.openwrt.org/releases/19.07.8"
|
||||
default "http://downloads.openwrt.org/releases/19.07-SNAPSHOT"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
@@ -259,7 +259,7 @@ if VERSIONOPT
|
||||
config VERSION_CODE_FILENAMES
|
||||
bool
|
||||
prompt "Revision code in filenames"
|
||||
default n
|
||||
default y
|
||||
help
|
||||
Enable this to include the revision identifier or the configured
|
||||
version code into the firmware image, SDK- and Image Builder archive
|
||||
|
||||
@@ -11,6 +11,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_NAME:=at91bootstrap
|
||||
PKG_VERSION:=v3.8.10
|
||||
PKG_RELEASE:=
|
||||
PKG_CPE_ID:=cpe:/a:linux4sam:at91bootstrap
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/linux4sam/at91bootstrap.git
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Thu, 30 Jan 2020 09:37:15 +0000
|
||||
Subject: [PATCH] Remove redundant YYLOC global declaration
|
||||
|
||||
Same as the upstream fix for building dtc with gcc 10.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Origin: upstream, https://github.com/u-boot/u-boot/commit/018921ee79d3f30893614b3b2b63b588d8544f73
|
||||
---
|
||||
scripts/dtc/dtc-lexer.l | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
@@ -0,0 +1,57 @@
|
||||
From a40a6e16ed76e5e26a0f60226b64c311d4a62c9f Mon Sep 17 00:00:00 2001
|
||||
From: Mathias Kresin <dev@kresin.me>
|
||||
Date: Sun, 31 Oct 2021 23:04:54 +0100
|
||||
Subject: [PATCH] lzma: force 8bit reads
|
||||
|
||||
At least since gcc 7.3.0 (OpenWrt 18.06) lwr/lwl are used in the
|
||||
assembly of LzmaProps_Decode. While the decission made by the compiler
|
||||
looks perfect fine, it triggers some obscure hang on lantiq danube-s
|
||||
v1.5 with MX29LV640EB NOR flash chips.
|
||||
|
||||
Only if the offset 1 is used, the hang can be observed. Using any other
|
||||
offset works fine:
|
||||
|
||||
lwl s0,0(a1) - s0 == 0x6d000080
|
||||
lwl s0,1(a1) - hangs
|
||||
lwl s0,2(a1) - s0 == 0x0080xxxx
|
||||
lwl s0,3(a1) - s0 == 0x80xxxxxx
|
||||
|
||||
It isn't clear whether it is a limitation of the flash chip, the EBU or
|
||||
something else.
|
||||
|
||||
Force 8bit reads to prevent gcc optimizing the read with lwr/lwl
|
||||
instructions.
|
||||
|
||||
Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
---
|
||||
lib/lzma/LzmaDec.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/lib/lzma/LzmaDec.c
|
||||
+++ b/lib/lzma/LzmaDec.c
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "LzmaDec.h"
|
||||
|
||||
#include <linux/string.h>
|
||||
+#include <asm/io.h>
|
||||
|
||||
#define kNumTopBits 24
|
||||
#define kTopValue ((UInt32)1 << kNumTopBits)
|
||||
@@ -703,7 +704,7 @@ static ELzmaDummy LzmaDec_TryDummy(const
|
||||
|
||||
static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data)
|
||||
{
|
||||
- p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]);
|
||||
+ p->code = ((UInt32)readb(&data[1]) << 24) | ((UInt32)readb(&data[2]) << 16) | ((UInt32)readb(&data[3]) << 8) | ((UInt32)readb(&data[4]));
|
||||
p->range = 0xFFFFFFFF;
|
||||
p->needFlush = 0;
|
||||
}
|
||||
@@ -929,7 +930,7 @@ SRes LzmaProps_Decode(CLzmaProps *p, con
|
||||
if (size < LZMA_PROPS_SIZE)
|
||||
return SZ_ERROR_UNSUPPORTED;
|
||||
else
|
||||
- dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24);
|
||||
+ dicSize = readb(&data[1]) | ((UInt32)readb(&data[2]) << 8) | ((UInt32)readb(&data[3]) << 16) | ((UInt32)readb(&data[4]) << 24);
|
||||
|
||||
if (dicSize < LZMA_DIC_MIN)
|
||||
dicSize = LZMA_DIC_MIN;
|
||||
@@ -0,0 +1,172 @@
|
||||
Fix header clash with system /usr/include/sha1.h and sha256.h when libmd
|
||||
is installed.
|
||||
|
||||
Backport of u-boot commit "includes: move openssl headers to include/u-boot"
|
||||
https://github.com/u-boot/u-boot/commit/2b9912e6a7df7b1f60beb7942bd0e6fa5f9d0167
|
||||
|
||||
--- a/board/gdsys/p1022/controlcenterd-id.c
|
||||
+++ b/board/gdsys/p1022/controlcenterd-id.c
|
||||
@@ -30,7 +30,7 @@
|
||||
#include <i2c.h>
|
||||
#include <mmc.h>
|
||||
#include <tpm.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/unaligned.h>
|
||||
#include <pca9698.h>
|
||||
--- a/board/pcs440ep/pcs440ep.c
|
||||
+++ b/board/pcs440ep/pcs440ep.c
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <asm/processor.h>
|
||||
#include <spd_sdram.h>
|
||||
#include <status_led.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <asm/io.h>
|
||||
#include <net.h>
|
||||
#include <ata.h>
|
||||
--- a/common/cmd_sha1sum.c
|
||||
+++ b/common/cmd_sha1sum.c
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <hash.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
|
||||
int do_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
--- a/common/hash.c
|
||||
+++ b/common/hash.c
|
||||
@@ -14,8 +14,8 @@
|
||||
#include <command.h>
|
||||
#include <hw_sha.h>
|
||||
#include <hash.h>
|
||||
-#include <sha1.h>
|
||||
-#include <sha256.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
+#include <u-boot/sha256.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/errno.h>
|
||||
|
||||
--- a/common/image-fit.c
|
||||
+++ b/common/image-fit.c
|
||||
@@ -21,7 +21,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
#endif /* !USE_HOSTCC*/
|
||||
|
||||
#include <bootstage.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <u-boot/crc.h>
|
||||
#include <u-boot/md5.h>
|
||||
|
||||
--- a/common/image.c
|
||||
+++ b/common/image.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#endif
|
||||
|
||||
#include <u-boot/md5.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
--- a/drivers/crypto/ace_sha.c
|
||||
+++ b/drivers/crypto/ace_sha.c
|
||||
@@ -5,8 +5,8 @@
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
#include <common.h>
|
||||
-#include <sha256.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha256.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <asm/errno.h>
|
||||
#include "ace_sha.h"
|
||||
|
||||
--- /dev/null
|
||||
+++ b/include/u-boot/sha1.h
|
||||
@@ -0,0 +1 @@
|
||||
+#include "../sha1.h"
|
||||
--- /dev/null
|
||||
+++ b/include/u-boot/sha256.h
|
||||
@@ -0,0 +1 @@
|
||||
+#include "../sha256.h"
|
||||
--- a/lib/rsa/rsa-verify.c
|
||||
+++ b/lib/rsa/rsa-verify.c
|
||||
@@ -7,7 +7,7 @@
|
||||
#include <common.h>
|
||||
#include <fdtdec.h>
|
||||
#include <rsa.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/unaligned.h>
|
||||
--- a/lib/sha1.c
|
||||
+++ b/lib/sha1.c
|
||||
@@ -36,7 +36,7 @@
|
||||
#include <string.h>
|
||||
#endif /* USE_HOSTCC */
|
||||
#include <watchdog.h>
|
||||
-#include "sha1.h"
|
||||
+#include <u-boot/sha1.h>
|
||||
|
||||
/*
|
||||
* 32-bit integer manipulation macros (big endian)
|
||||
--- a/lib/sha256.c
|
||||
+++ b/lib/sha256.c
|
||||
@@ -11,7 +11,7 @@
|
||||
#endif /* USE_HOSTCC */
|
||||
#include <watchdog.h>
|
||||
#include <linux/string.h>
|
||||
-#include <sha256.h>
|
||||
+#include <u-boot/sha256.h>
|
||||
|
||||
/*
|
||||
* 32-bit integer manipulation macros (big endian)
|
||||
--- a/lib/tpm.c
|
||||
+++ b/lib/tpm.c
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <common.h>
|
||||
#include <stdarg.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <tpm.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
||||
--- a/tools/imls/imls.c
|
||||
+++ b/tools/imls/imls.c
|
||||
@@ -24,7 +24,7 @@
|
||||
#include <mtd/mtd-user.h>
|
||||
#endif
|
||||
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include <libfdt.h>
|
||||
#include <fdt_support.h>
|
||||
#include <image.h>
|
||||
--- a/tools/mkimage.h
|
||||
+++ b/tools/mkimage.h
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
-#include <sha1.h>
|
||||
+#include <u-boot/sha1.h>
|
||||
#include "fdt_host.h"
|
||||
|
||||
#undef MKIMAGE_DEBUG
|
||||
--- a/tools/ubsha1.c
|
||||
+++ b/tools/ubsha1.c
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
-#include "sha1.h"
|
||||
+#include <u-boot/sha1.h>
|
||||
|
||||
int main (int argc, char **argv)
|
||||
{
|
||||
@@ -0,0 +1,46 @@
|
||||
From e33a814e772cdc36436c8c188d8c42d019fda639 Mon Sep 17 00:00:00 2001
|
||||
From: Dirk Mueller <dmueller@suse.com>
|
||||
Date: Tue, 14 Jan 2020 18:53:41 +0100
|
||||
Subject: [PATCH] scripts/dtc: Remove redundant YYLOC global declaration
|
||||
|
||||
gcc 10 will default to -fno-common, which causes this error at link
|
||||
time:
|
||||
|
||||
(.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
|
||||
|
||||
This is because both dtc-lexer as well as dtc-parser define the same
|
||||
global symbol yyloc. Before with -fcommon those were merged into one
|
||||
defintion. The proper solution would be to to mark this as "extern",
|
||||
however that leads to:
|
||||
|
||||
dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
|
||||
26 | extern YYLTYPE yylloc;
|
||||
| ^~~~~~
|
||||
In file included from dtc-lexer.l:24:
|
||||
dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
|
||||
127 | extern YYLTYPE yylloc;
|
||||
| ^~~~~~
|
||||
cc1: all warnings being treated as errors
|
||||
|
||||
which means the declaration is completely redundant and can just be
|
||||
dropped.
|
||||
|
||||
Signed-off-by: Dirk Mueller <dmueller@suse.com>
|
||||
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
||||
[robh: cherry-pick from upstream]
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
scripts/dtc/dtc-lexer.l | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
@@ -0,0 +1,33 @@
|
||||
From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Thu, 30 Jan 2020 09:37:15 +0000
|
||||
Subject: [PATCH] Remove redundant YYLOC global declaration
|
||||
|
||||
Same as the upstream fix for building dtc with gcc 10.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Origin: backport, https://github.com/u-boot/u-boot/commit/018921ee79d3f30893614b3b2b63b588d8544f73
|
||||
---
|
||||
scripts/dtc/dtc-lexer.l | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
--- a/scripts/dtc/dtc-lexer.lex.c_shipped
|
||||
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped
|
||||
@@ -631,7 +631,6 @@ char *yytext;
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
@@ -0,0 +1,23 @@
|
||||
From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Thu, 30 Jan 2020 09:37:15 +0000
|
||||
Subject: [PATCH] Remove redundant YYLOC global declaration
|
||||
|
||||
Same as the upstream fix for building dtc with gcc 10.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Origin: upstream, https://github.com/u-boot/u-boot/commit/018921ee79d3f30893614b3b2b63b588d8544f73
|
||||
---
|
||||
scripts/dtc/dtc-lexer.l | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
@@ -0,0 +1,23 @@
|
||||
From 018921ee79d3f30893614b3b2b63b588d8544f73 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Robinson <pbrobinson@gmail.com>
|
||||
Date: Thu, 30 Jan 2020 09:37:15 +0000
|
||||
Subject: [PATCH] Remove redundant YYLOC global declaration
|
||||
|
||||
Same as the upstream fix for building dtc with gcc 10.
|
||||
|
||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||
Origin: upstream, https://github.com/u-boot/u-boot/commit/018921ee79d3f30893614b3b2b63b588d8544f73
|
||||
---
|
||||
scripts/dtc/dtc-lexer.l | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
@@ -0,0 +1,46 @@
|
||||
From e33a814e772cdc36436c8c188d8c42d019fda639 Mon Sep 17 00:00:00 2001
|
||||
From: Dirk Mueller <dmueller@suse.com>
|
||||
Date: Tue, 14 Jan 2020 18:53:41 +0100
|
||||
Subject: [PATCH] scripts/dtc: Remove redundant YYLOC global declaration
|
||||
|
||||
gcc 10 will default to -fno-common, which causes this error at link
|
||||
time:
|
||||
|
||||
(.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
|
||||
|
||||
This is because both dtc-lexer as well as dtc-parser define the same
|
||||
global symbol yyloc. Before with -fcommon those were merged into one
|
||||
defintion. The proper solution would be to to mark this as "extern",
|
||||
however that leads to:
|
||||
|
||||
dtc-lexer.l:26:16: error: redundant redeclaration of 'yylloc' [-Werror=redundant-decls]
|
||||
26 | extern YYLTYPE yylloc;
|
||||
| ^~~~~~
|
||||
In file included from dtc-lexer.l:24:
|
||||
dtc-parser.tab.h:127:16: note: previous declaration of 'yylloc' was here
|
||||
127 | extern YYLTYPE yylloc;
|
||||
| ^~~~~~
|
||||
cc1: all warnings being treated as errors
|
||||
|
||||
which means the declaration is completely redundant and can just be
|
||||
dropped.
|
||||
|
||||
Signed-off-by: Dirk Mueller <dmueller@suse.com>
|
||||
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
||||
[robh: cherry-pick from upstream]
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
scripts/dtc/dtc-lexer.l | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -38,7 +38,6 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
extern bool treesource_error;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
@@ -15,6 +15,7 @@ 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:=bcc3b81c452fe4649a948c022475d76c1cdfbb730f36749a082f412f1406a3b9
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-3.$(PKG_VERSION).$(PKG_RELEASE)
|
||||
PKG_CPE_ID:=cpe:/a:intel:microcode
|
||||
|
||||
PKG_BUILD_DEPENDS:=iucode-tool/host
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wireless-regdb
|
||||
PKG_VERSION:=2020.11.20
|
||||
PKG_VERSION:=2021.08.28
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
|
||||
PKG_HASH:=b4164490d82ff7b0086e812ac42ab27baf57be24324d4c0ee1c5dd6ba27f2a52
|
||||
PKG_HASH:=cff370c410d1e6d316ae0a7fa8ac6278fdf1efca5d3d664aca7cfd2aafa54446
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
||||
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=4.19.193-1
|
||||
PKG_VERSION:=4.19.237-1
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.193/
|
||||
PKG_HASH:=560c0ce9e4079fd26d046e188453e008a5e766e5409d950c4749a23da53d6d0a
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.237/
|
||||
PKG_HASH:=e40ce1f4b707d5b1b5da3f4470f1ccf4f565602323424c89d956069df701bffd
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
|
||||
@@ -8,7 +8,7 @@ This reverts commit 71f5137bf010c6faffab50c0ec15374c59c4a411.
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -2976,7 +2976,8 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
@@ -2978,7 +2978,8 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
{
|
||||
struct ath_regulatory *reg = ath9k_hw_regulatory(ah);
|
||||
struct ieee80211_channel *channel;
|
||||
@@ -18,7 +18,7 @@ This reverts commit 71f5137bf010c6faffab50c0ec15374c59c4a411.
|
||||
u16 ctl = NO_CTL;
|
||||
|
||||
if (!chan)
|
||||
@@ -2988,9 +2989,14 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
@@ -2990,9 +2991,14 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
channel = chan->chan;
|
||||
chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER);
|
||||
new_pwr = min_t(int, chan_pwr, reg->power_limit);
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -2995,6 +2995,10 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
@@ -2997,6 +2997,10 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
if (ant_gain > max_gain)
|
||||
ant_reduction = ant_gain - max_gain;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
CFLAGS_trace.o := -I$(src)
|
||||
--- a/drivers/net/wireless/ath/ath.h
|
||||
+++ b/drivers/net/wireless/ath/ath.h
|
||||
@@ -316,14 +316,7 @@ void _ath_dbg(struct ath_common *common,
|
||||
@@ -317,14 +317,7 @@ void _ath_dbg(struct ath_common *common,
|
||||
#endif /* CPTCFG_ATH_DEBUG */
|
||||
|
||||
/** Returns string describing opmode, or NULL if unknown mode. */
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
bool reset_power_on;
|
||||
bool htc_reset_init;
|
||||
|
||||
@@ -1073,6 +1081,7 @@ void ath9k_hw_check_nav(struct ath_hw *a
|
||||
@@ -1074,6 +1082,7 @@ void ath9k_hw_check_nav(struct ath_hw *a
|
||||
bool ath9k_hw_check_alive(struct ath_hw *ah);
|
||||
|
||||
bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
|
||||
@@ -94,7 +94,7 @@
|
||||
struct ath_gen_timer *ath_gen_timer_alloc(struct ath_hw *ah,
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -1883,6 +1883,20 @@ u32 ath9k_hw_get_tsf_offset(struct times
|
||||
@@ -1882,6 +1882,20 @@ u32 ath9k_hw_get_tsf_offset(struct times
|
||||
}
|
||||
EXPORT_SYMBOL(ath9k_hw_get_tsf_offset);
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
struct ath9k_hw_cal_data *caldata, bool fastcc)
|
||||
{
|
||||
@@ -2091,6 +2105,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
@@ -2090,6 +2104,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
ar9003_hw_disable_phy_restart(ah);
|
||||
|
||||
ath9k_hw_apply_gpio_override(ah);
|
||||
@@ -125,9 +125,9 @@
|
||||
REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON);
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -528,6 +528,11 @@ irqreturn_t ath_isr(int irq, void *dev)
|
||||
if (test_bit(ATH_OP_HW_RESET, &common->op_flags))
|
||||
@@ -535,6 +535,11 @@ irqreturn_t ath_isr(int irq, void *dev)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
+ if (test_bit(ATH_DIAG_TRIGGER_ERROR, &ah->diag)) {
|
||||
+ status |= ATH9K_INT_FATAL;
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1861,8 +1880,14 @@ static int ath9k_hw_do_fastcc(struct ath
|
||||
@@ -1860,8 +1879,14 @@ static int ath9k_hw_do_fastcc(struct ath
|
||||
if (AR_SREV_9271(ah))
|
||||
ar9002_hw_load_ani_reg(ah, chan);
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -2116,6 +2141,9 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
@@ -2115,6 +2140,9 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
ath9k_hw_set_radar_params(ah);
|
||||
}
|
||||
|
||||
|
||||
@@ -343,7 +343,7 @@
|
||||
|
||||
u8 ath9k_parse_mpdudensity(u8 mpdudensity)
|
||||
{
|
||||
@@ -649,6 +651,7 @@ void ath_reset_work(struct work_struct *
|
||||
@@ -656,6 +658,7 @@ void ath_reset_work(struct work_struct *
|
||||
static int ath9k_start(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
@@ -351,7 +351,7 @@
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
struct ieee80211_channel *curchan = sc->cur_chan->chandef.chan;
|
||||
@@ -727,6 +730,11 @@ static int ath9k_start(struct ieee80211_
|
||||
@@ -734,6 +737,11 @@ static int ath9k_start(struct ieee80211_
|
||||
AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -8293,6 +8293,21 @@ static int ath10k_mac_init_rd(struct ath
|
||||
@@ -8294,6 +8294,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[] = {
|
||||
@@ -8577,6 +8592,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -8578,6 +8593,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
|
||||
wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
|
||||
static int
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
@@ -6357,7 +6357,19 @@ struct wmi_10_2_peer_assoc_complete_cmd
|
||||
@@ -6360,7 +6360,19 @@ struct wmi_10_2_peer_assoc_complete_cmd
|
||||
__le32 info0; /* WMI_PEER_ASSOC_INFO0_ */
|
||||
} __packed;
|
||||
|
||||
|
||||
@@ -573,7 +573,7 @@ v13:
|
||||
int ath10k_wmi_attach(struct ath10k *ar)
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
@@ -2942,6 +2942,41 @@ enum wmi_10_4_feature_mask {
|
||||
@@ -2945,6 +2945,41 @@ enum wmi_10_4_feature_mask {
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -8609,7 +8609,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -8610,7 +8610,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) {
|
||||
@@ -5478,9 +5494,10 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5479,9 +5495,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);
|
||||
|
||||
@@ -5686,6 +5703,30 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5687,6 +5704,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;
|
||||
}
|
||||
@@ -5709,22 +5709,22 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5710,22 +5710,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
|
||||
@@ -5494,8 +5494,8 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5495,8 +5495,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;
|
||||
|
||||
@@ -5668,7 +5668,11 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -5669,7 +5669,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;
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
From: Sven Eckelmann <seckelmann@datto.com>
|
||||
Date: Tue, 11 Jun 2019 13:58:35 +0200
|
||||
Subject: ath10k: fix max antenna gain unit
|
||||
|
||||
Most of the txpower for the ath10k firmware is stored as twicepower (0.5 dB
|
||||
steps). This isn't the case for max_antenna_gain - which is still expected
|
||||
by the firmware as dB.
|
||||
|
||||
The firmware is converting it from dB to the internal (twicepower)
|
||||
representation when it calculates the limits of a channel. This can be seen
|
||||
in tpc_stats when configuring "12" as max_antenna_gain. Instead of the
|
||||
expected 12 (6 dB), the tpc_stats shows 24 (12 dB).
|
||||
|
||||
Tested on QCA9888 and IPQ4019 with firmware 10.4-3.5.3-00057.
|
||||
|
||||
Fixes: 02256930d9b8 ("ath10k: use proper tx power unit")
|
||||
Signed-off-by: Sven Eckelmann <seckelmann@datto.com>
|
||||
|
||||
Forwarded: https://patchwork.kernel.org/patch/10986723/
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -1020,7 +1020,7 @@ static int ath10k_monitor_vdev_start(str
|
||||
arg.channel.min_power = 0;
|
||||
arg.channel.max_power = channel->max_power * 2;
|
||||
arg.channel.max_reg_power = channel->max_reg_power * 2;
|
||||
- arg.channel.max_antenna_gain = channel->max_antenna_gain * 2;
|
||||
+ arg.channel.max_antenna_gain = channel->max_antenna_gain;
|
||||
|
||||
reinit_completion(&ar->vdev_setup_done);
|
||||
|
||||
@@ -1462,7 +1462,7 @@ static int ath10k_vdev_start_restart(str
|
||||
arg.channel.min_power = 0;
|
||||
arg.channel.max_power = chandef->chan->max_power * 2;
|
||||
arg.channel.max_reg_power = chandef->chan->max_reg_power * 2;
|
||||
- arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain * 2;
|
||||
+ arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain;
|
||||
|
||||
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
|
||||
arg.ssid = arvif->u.ap.ssid;
|
||||
@@ -3143,7 +3143,7 @@ static int ath10k_update_channel_list(st
|
||||
ch->min_power = 0;
|
||||
ch->max_power = channel->max_power * 2;
|
||||
ch->max_reg_power = channel->max_reg_power * 2;
|
||||
- ch->max_antenna_gain = channel->max_antenna_gain * 2;
|
||||
+ ch->max_antenna_gain = channel->max_antenna_gain;
|
||||
ch->reg_class_id = 0; /* FIXME */
|
||||
|
||||
/* FIXME: why use only legacy modes, why not any
|
||||
@@ -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
|
||||
@@ -6657,6 +6657,12 @@ static s32 brcmf_config_dongle(struct br
|
||||
@@ -6660,6 +6660,12 @@ static s32 brcmf_config_dongle(struct br
|
||||
|
||||
brcmf_configure_arp_nd_offload(ifp, true);
|
||||
|
||||
|
||||
@@ -836,7 +836,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS) |
|
||||
@@ -2566,7 +2592,7 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
@@ -2567,7 +2593,7 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
&sta_info_le,
|
||||
sizeof(sta_info_le));
|
||||
if (err < 0) {
|
||||
@@ -845,7 +845,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
@@ -2635,7 +2661,8 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
@@ -2638,7 +2664,8 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI,
|
||||
&scb_val, sizeof(scb_val));
|
||||
if (err) {
|
||||
@@ -855,7 +855,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto done;
|
||||
} else {
|
||||
rssi = le32_to_cpu(scb_val.val);
|
||||
@@ -2666,8 +2693,8 @@ brcmf_cfg80211_dump_station(struct wiphy
|
||||
@@ -2669,8 +2696,8 @@ brcmf_cfg80211_dump_station(struct wiphy
|
||||
&cfg->assoclist,
|
||||
sizeof(cfg->assoclist));
|
||||
if (err) {
|
||||
@@ -866,7 +866,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
cfg->assoclist.count = 0;
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -2715,9 +2742,9 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2718,9 +2745,9 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm);
|
||||
if (err) {
|
||||
if (err == -ENODEV)
|
||||
@@ -878,7 +878,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
done:
|
||||
brcmf_dbg(TRACE, "Exit\n");
|
||||
@@ -2740,7 +2767,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -2743,7 +2770,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
struct cfg80211_inform_bss bss_data = {};
|
||||
|
||||
if (le32_to_cpu(bi->length) > WL_BSS_INFO_MAX) {
|
||||
@@ -887,7 +887,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2799,6 +2826,7 @@ next_bss_le(struct brcmf_scan_results *l
|
||||
@@ -2802,6 +2829,7 @@ next_bss_le(struct brcmf_scan_results *l
|
||||
|
||||
static s32 brcmf_inform_bss(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -895,7 +895,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_scan_results *bss_list;
|
||||
struct brcmf_bss_info_le *bi = NULL; /* must be initialized */
|
||||
s32 err = 0;
|
||||
@@ -2807,8 +2835,8 @@ static s32 brcmf_inform_bss(struct brcmf
|
||||
@@ -2810,8 +2838,8 @@ static s32 brcmf_inform_bss(struct brcmf
|
||||
bss_list = (struct brcmf_scan_results *)cfg->escan_info.escan_buf;
|
||||
if (bss_list->count != 0 &&
|
||||
bss_list->version != BRCMF_BSS_INFO_VERSION) {
|
||||
@@ -906,7 +906,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
brcmf_dbg(SCAN, "scanned AP count (%d)\n", bss_list->count);
|
||||
@@ -2852,7 +2880,7 @@ static s32 brcmf_inform_ibss(struct brcm
|
||||
@@ -2855,7 +2883,7 @@ static s32 brcmf_inform_ibss(struct brcm
|
||||
err = brcmf_fil_cmd_data_get(netdev_priv(ndev), BRCMF_C_GET_BSS_INFO,
|
||||
buf, WL_BSS_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -915,7 +915,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto CleanUp;
|
||||
}
|
||||
|
||||
@@ -2906,6 +2934,7 @@ CleanUp:
|
||||
@@ -2909,6 +2937,7 @@ CleanUp:
|
||||
static s32 brcmf_update_bss_info(struct brcmf_cfg80211_info *cfg,
|
||||
struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -923,7 +923,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_bss_info_le *bi;
|
||||
const struct brcmf_tlv *tim;
|
||||
u16 beacon_interval;
|
||||
@@ -2922,7 +2951,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -2925,7 +2954,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_BSS_INFO,
|
||||
cfg->extra_buf, WL_EXTRA_BUF_MAX);
|
||||
if (err) {
|
||||
@@ -932,7 +932,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto update_bss_info_out;
|
||||
}
|
||||
|
||||
@@ -2947,7 +2976,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -2950,7 +2979,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
u32 var;
|
||||
err = brcmf_fil_iovar_int_get(ifp, "dtim_assoc", &var);
|
||||
if (err) {
|
||||
@@ -941,7 +941,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto update_bss_info_out;
|
||||
}
|
||||
dtim_period = (u8)var;
|
||||
@@ -2985,9 +3014,10 @@ static void brcmf_escan_timeout(struct t
|
||||
@@ -2988,9 +3017,10 @@ static void brcmf_escan_timeout(struct t
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg =
|
||||
from_timer(cfg, t, escan_timeout);
|
||||
@@ -953,7 +953,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
schedule_work(&cfg->escan_timeout_work);
|
||||
}
|
||||
}
|
||||
@@ -3036,6 +3066,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3039,6 +3069,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
const struct brcmf_event_msg *e, void *data)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = ifp->drvr->config;
|
||||
@@ -961,7 +961,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 status;
|
||||
struct brcmf_escan_result_le *escan_result_le;
|
||||
u32 escan_buflen;
|
||||
@@ -3052,32 +3083,33 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3055,32 +3086,33 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
goto exit;
|
||||
|
||||
if (!test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) {
|
||||
@@ -1002,7 +1002,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
bss_info_le = &escan_result_le->bss_info_le;
|
||||
@@ -3092,8 +3124,8 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3095,8 +3127,8 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
|
||||
bi_length = le32_to_cpu(bss_info_le->length);
|
||||
if (bi_length != escan_buflen - WL_ESCAN_RESULTS_FIXED_SIZE) {
|
||||
@@ -1013,7 +1013,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -3101,7 +3133,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3104,7 +3136,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
BIT(NL80211_IFTYPE_ADHOC))) {
|
||||
if (le16_to_cpu(bss_info_le->capability) &
|
||||
WLAN_CAPABILITY_IBSS) {
|
||||
@@ -1022,7 +1022,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -3109,7 +3141,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3112,7 +3144,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
list = (struct brcmf_scan_results *)
|
||||
cfg->escan_info.escan_buf;
|
||||
if (bi_length > BRCMF_ESCAN_BUF_SIZE - list->buflen) {
|
||||
@@ -1031,7 +1031,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -3301,14 +3333,14 @@ brcmf_notify_sched_scan_results(struct b
|
||||
@@ -3304,14 +3336,14 @@ brcmf_notify_sched_scan_results(struct b
|
||||
WARN_ON(status != BRCMF_PNO_SCAN_COMPLETE);
|
||||
brcmf_dbg(SCAN, "PFN NET FOUND event. count: %d\n", result_count);
|
||||
if (!result_count) {
|
||||
@@ -1048,7 +1048,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
@@ -3362,8 +3394,8 @@ brcmf_cfg80211_sched_scan_start(struct w
|
||||
@@ -3365,8 +3397,8 @@ brcmf_cfg80211_sched_scan_start(struct w
|
||||
req->n_match_sets, req->n_ssids);
|
||||
|
||||
if (test_bit(BRCMF_SCAN_STATUS_SUPPRESS, &cfg->scan_status)) {
|
||||
@@ -1059,7 +1059,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
@@ -3442,6 +3474,7 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
@@ -3445,6 +3477,7 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
void *data)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = ifp->drvr->config;
|
||||
@@ -1067,7 +1067,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_pno_scanresults_le *pfn_result;
|
||||
struct brcmf_pno_net_info_le *netinfo;
|
||||
|
||||
@@ -3460,8 +3493,8 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
@@ -3463,8 +3496,8 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
}
|
||||
|
||||
if (le32_to_cpu(pfn_result->count) < 1) {
|
||||
@@ -1078,7 +1078,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3500,7 +3533,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
@@ -3503,7 +3536,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
err = brcmf_fil_iovar_data_get(ifp, "wowl_wakeind", &wake_ind_le,
|
||||
sizeof(wake_ind_le));
|
||||
if (err) {
|
||||
@@ -1087,7 +1087,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3541,7 +3574,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
@@ -3544,7 +3577,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
cfg->wowl.nd_data_completed,
|
||||
BRCMF_ND_INFO_TIMEOUT);
|
||||
if (!timeout)
|
||||
@@ -1096,7 +1096,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
else
|
||||
wakeup_data.net_detect = cfg->wowl.nd_info;
|
||||
}
|
||||
@@ -3749,7 +3782,7 @@ brcmf_cfg80211_set_pmksa(struct wiphy *w
|
||||
@@ -3752,7 +3785,7 @@ brcmf_cfg80211_set_pmksa(struct wiphy *w
|
||||
cfg->pmk_list.npmk = cpu_to_le32(npmk);
|
||||
}
|
||||
} else {
|
||||
@@ -1105,7 +1105,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3795,7 +3828,7 @@ brcmf_cfg80211_del_pmksa(struct wiphy *w
|
||||
@@ -3798,7 +3831,7 @@ brcmf_cfg80211_del_pmksa(struct wiphy *w
|
||||
memset(&pmk[i], 0, sizeof(*pmk));
|
||||
cfg->pmk_list.npmk = cpu_to_le32(npmk - 1);
|
||||
} else {
|
||||
@@ -1114,7 +1114,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3827,19 +3860,20 @@ brcmf_cfg80211_flush_pmksa(struct wiphy
|
||||
@@ -3830,19 +3863,20 @@ brcmf_cfg80211_flush_pmksa(struct wiphy
|
||||
|
||||
static s32 brcmf_configure_opensecurity(struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1137,7 +1137,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
/* set upper-layer auth */
|
||||
@@ -3849,7 +3883,7 @@ static s32 brcmf_configure_opensecurity(
|
||||
@@ -3852,7 +3886,7 @@ static s32 brcmf_configure_opensecurity(
|
||||
wpa_val = WPA_AUTH_DISABLED;
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "wpa_auth", wpa_val);
|
||||
if (err < 0) {
|
||||
@@ -1146,7 +1146,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -3869,6 +3903,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3872,6 +3906,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
const struct brcmf_vs_tlv *wpa_ie,
|
||||
bool is_rsn_ie)
|
||||
{
|
||||
@@ -1154,7 +1154,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u32 auth = 0; /* d11 open authentication */
|
||||
u16 count;
|
||||
s32 err = 0;
|
||||
@@ -3899,13 +3934,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3902,13 +3937,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* check for multicast cipher suite */
|
||||
if (offset + WPA_IE_MIN_OUI_LEN > len) {
|
||||
err = -EINVAL;
|
||||
@@ -1170,7 +1170,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
offset += TLV_OUI_LEN;
|
||||
@@ -3927,7 +3962,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3930,7 +3965,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
@@ -1179,7 +1179,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -3938,13 +3973,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3941,13 +3976,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* Check for unicast suite(s) */
|
||||
if (offset + (WPA_IE_MIN_OUI_LEN * count) > len) {
|
||||
err = -EINVAL;
|
||||
@@ -1195,7 +1195,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
offset += TLV_OUI_LEN;
|
||||
@@ -3962,7 +3997,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3965,7 +4000,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
pval |= AES_ENABLED;
|
||||
break;
|
||||
default:
|
||||
@@ -1204,7 +1204,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
@@ -3972,13 +4007,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3975,13 +4010,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* Check for auth key management suite(s) */
|
||||
if (offset + (WPA_IE_MIN_OUI_LEN * count) > len) {
|
||||
err = -EINVAL;
|
||||
@@ -1220,7 +1220,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
offset += TLV_OUI_LEN;
|
||||
@@ -4006,7 +4041,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4009,7 +4044,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
wpa_auth |= WPA2_AUTH_1X_SHA256;
|
||||
break;
|
||||
default:
|
||||
@@ -1229,7 +1229,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
@@ -4048,7 +4083,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4051,7 +4086,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "wme_bss_disable",
|
||||
wme_bss_disable);
|
||||
if (err < 0) {
|
||||
@@ -1238,7 +1238,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4062,7 +4097,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4065,7 +4100,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
&data[offset],
|
||||
WPA_IE_MIN_OUI_LEN);
|
||||
if (err < 0) {
|
||||
@@ -1247,7 +1247,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4073,13 +4108,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4076,13 +4111,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* set auth */
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "auth", auth);
|
||||
if (err < 0) {
|
||||
@@ -1263,7 +1263,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
/* Configure MFP, this needs to go after wsec otherwise the wsec command
|
||||
@@ -4088,14 +4123,14 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4091,14 +4126,14 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MFP)) {
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "mfp", mfp);
|
||||
if (err < 0) {
|
||||
@@ -1280,7 +1280,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4182,6 +4217,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4185,6 +4220,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
const u8 *vndr_ie_buf, u32 vndr_ie_len)
|
||||
{
|
||||
struct brcmf_if *ifp;
|
||||
@@ -1288,7 +1288,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct vif_saved_ie *saved_ie;
|
||||
s32 err = 0;
|
||||
u8 *iovar_ie_buf;
|
||||
@@ -4202,6 +4238,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4205,6 +4241,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
if (!vif)
|
||||
return -ENODEV;
|
||||
ifp = vif->ifp;
|
||||
@@ -1296,7 +1296,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
saved_ie = &vif->saved_ie;
|
||||
|
||||
brcmf_dbg(TRACE, "bsscfgidx %d, pktflag : 0x%02X\n", ifp->bsscfgidx,
|
||||
@@ -4233,13 +4270,13 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4236,13 +4273,13 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
break;
|
||||
default:
|
||||
err = -EPERM;
|
||||
@@ -1312,7 +1312,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4300,8 +4337,8 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4303,8 +4340,8 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
/* verify remained buf size before copy data */
|
||||
if (remained_buf_len < (vndrie_info->vndrie.len +
|
||||
VNDR_IE_VSIE_OFFSET)) {
|
||||
@@ -1323,7 +1323,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
break;
|
||||
}
|
||||
remained_buf_len -= (vndrie_info->ie_len +
|
||||
@@ -4332,7 +4369,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4335,7 +4372,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
err = brcmf_fil_bsscfg_data_set(ifp, "vndr_ie", iovar_ie_buf,
|
||||
total_ie_buf_len);
|
||||
if (err)
|
||||
@@ -1332,7 +1332,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -4360,13 +4397,14 @@ static s32
|
||||
@@ -4363,13 +4400,14 @@ static s32
|
||||
brcmf_config_ap_mgmt_ie(struct brcmf_cfg80211_vif *vif,
|
||||
struct cfg80211_beacon_data *beacon)
|
||||
{
|
||||
@@ -1348,7 +1348,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
brcmf_dbg(TRACE, "Applied Vndr IEs for Beacon\n");
|
||||
@@ -4376,7 +4414,7 @@ brcmf_config_ap_mgmt_ie(struct brcmf_cfg
|
||||
@@ -4379,7 +4417,7 @@ brcmf_config_ap_mgmt_ie(struct brcmf_cfg
|
||||
beacon->proberesp_ies,
|
||||
beacon->proberesp_ies_len);
|
||||
if (err)
|
||||
@@ -1357,7 +1357,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
else
|
||||
brcmf_dbg(TRACE, "Applied Vndr IEs for Probe Resp\n");
|
||||
|
||||
@@ -4485,7 +4523,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4488,7 +4526,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY,
|
||||
is_11d);
|
||||
if (err < 0) {
|
||||
@@ -1367,7 +1367,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4493,8 +4532,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4496,8 +4535,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_BCNPRD,
|
||||
settings->beacon_interval);
|
||||
if (err < 0) {
|
||||
@@ -1378,7 +1378,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4502,7 +4541,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4505,7 +4544,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_DTIMPRD,
|
||||
settings->dtim_period);
|
||||
if (err < 0) {
|
||||
@@ -1388,7 +1388,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4512,7 +4552,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4515,7 +4555,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
!brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB))) {
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1);
|
||||
if (err < 0) {
|
||||
@@ -1398,7 +1398,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
brcmf_fil_iovar_int_set(ifp, "apsta", 0);
|
||||
@@ -4520,7 +4561,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4523,7 +4564,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 1);
|
||||
if (err < 0) {
|
||||
@@ -1407,7 +1407,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
} else if (WARN_ON(supports_11d && (is_11d != ifp->vif->is_11d))) {
|
||||
@@ -4536,7 +4577,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4539,7 +4580,8 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 1);
|
||||
if (err < 0) {
|
||||
@@ -1417,7 +1417,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
if (!mbss) {
|
||||
@@ -4545,14 +4587,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4548,14 +4590,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
*/
|
||||
err = brcmf_fil_iovar_int_set(ifp, "chanspec", chanspec);
|
||||
if (err < 0) {
|
||||
@@ -1435,7 +1435,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
/* On DOWN the firmware removes the WEP keys, reconfigure
|
||||
@@ -4567,14 +4609,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4570,14 +4612,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SSID,
|
||||
&join_params, sizeof(join_params));
|
||||
if (err < 0) {
|
||||
@@ -1452,7 +1452,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4583,14 +4625,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4586,14 +4628,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
} else if (dev_role == NL80211_IFTYPE_P2P_GO) {
|
||||
err = brcmf_fil_iovar_int_set(ifp, "chanspec", chanspec);
|
||||
if (err < 0) {
|
||||
@@ -1470,7 +1470,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
bss_enable.bsscfgidx = cpu_to_le32(ifp->bsscfgidx);
|
||||
@@ -4598,7 +4640,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4601,7 +4643,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_iovar_data_set(ifp, "bss", &bss_enable,
|
||||
sizeof(bss_enable));
|
||||
if (err < 0) {
|
||||
@@ -1479,7 +1479,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4646,13 +4688,13 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
@@ -4649,13 +4691,13 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SSID,
|
||||
&join_params, sizeof(join_params));
|
||||
if (err < 0)
|
||||
@@ -1496,7 +1496,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS))
|
||||
brcmf_fil_iovar_int_set(ifp, "mbss", 0);
|
||||
brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY,
|
||||
@@ -4660,7 +4702,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
@@ -4663,7 +4705,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
/* Bring device back up so it can be used again */
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_UP, 1);
|
||||
if (err < 0)
|
||||
@@ -1505,7 +1505,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
brcmf_vif_clear_mgmt_ies(ifp->vif);
|
||||
} else {
|
||||
@@ -4669,7 +4711,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
@@ -4672,7 +4714,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
err = brcmf_fil_iovar_data_set(ifp, "bss", &bss_enable,
|
||||
sizeof(bss_enable));
|
||||
if (err < 0)
|
||||
@@ -1514,7 +1514,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
brcmf_set_mpc(ifp, 1);
|
||||
brcmf_configure_arp_nd_offload(ifp, true);
|
||||
@@ -4717,7 +4759,8 @@ brcmf_cfg80211_del_station(struct wiphy
|
||||
@@ -4720,7 +4762,8 @@ brcmf_cfg80211_del_station(struct wiphy
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON,
|
||||
&scbval, sizeof(scbval));
|
||||
if (err)
|
||||
@@ -1524,7 +1524,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
brcmf_dbg(TRACE, "Exit\n");
|
||||
return err;
|
||||
@@ -4747,7 +4790,7 @@ brcmf_cfg80211_change_station(struct wip
|
||||
@@ -4750,7 +4793,7 @@ brcmf_cfg80211_change_station(struct wip
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SCB_DEAUTHORIZE,
|
||||
(void *)mac, ETH_ALEN);
|
||||
if (err < 0)
|
||||
@@ -1533,7 +1533,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -4797,7 +4840,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
@@ -4800,7 +4843,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
mgmt = (const struct ieee80211_mgmt *)buf;
|
||||
|
||||
if (!ieee80211_is_mgmt(mgmt->frame_control)) {
|
||||
@@ -1542,7 +1542,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
@@ -4828,13 +4871,13 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
@@ -4831,13 +4874,13 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
GFP_KERNEL);
|
||||
} else if (ieee80211_is_action(mgmt->frame_control)) {
|
||||
if (len > BRCMF_FIL_ACTION_FRAME_SIZE + DOT11_MGMT_HDR_LEN) {
|
||||
@@ -1558,7 +1558,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err = -ENOMEM;
|
||||
goto exit;
|
||||
}
|
||||
@@ -4892,7 +4935,7 @@ brcmf_cfg80211_cancel_remain_on_channel(
|
||||
@@ -4895,7 +4938,7 @@ brcmf_cfg80211_cancel_remain_on_channel(
|
||||
|
||||
vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
|
||||
if (vif == NULL) {
|
||||
@@ -1567,7 +1567,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err = -ENODEV;
|
||||
goto exit;
|
||||
}
|
||||
@@ -4920,7 +4963,7 @@ static int brcmf_cfg80211_get_channel(st
|
||||
@@ -4923,7 +4966,7 @@ static int brcmf_cfg80211_get_channel(st
|
||||
|
||||
err = brcmf_fil_iovar_int_get(ifp, "chanspec", &chanspec);
|
||||
if (err) {
|
||||
@@ -1576,7 +1576,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -5059,7 +5102,7 @@ static int brcmf_cfg80211_tdls_oper(stru
|
||||
@@ -5062,7 +5105,7 @@ static int brcmf_cfg80211_tdls_oper(stru
|
||||
ret = brcmf_fil_iovar_data_set(ifp, "tdls_endpoint",
|
||||
&info, sizeof(info));
|
||||
if (ret < 0)
|
||||
@@ -1585,7 +1585,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -5080,7 +5123,7 @@ brcmf_cfg80211_update_conn_params(struct
|
||||
@@ -5083,7 +5126,7 @@ brcmf_cfg80211_update_conn_params(struct
|
||||
err = brcmf_vif_set_mgmt_ie(ifp->vif, BRCMF_VNDR_IE_ASSOCREQ_FLAG,
|
||||
sme->ie, sme->ie_len);
|
||||
if (err)
|
||||
@@ -1594,7 +1594,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
else
|
||||
brcmf_dbg(TRACE, "Applied Vndr IEs for Assoc request\n");
|
||||
|
||||
@@ -5106,7 +5149,7 @@ brcmf_cfg80211_set_rekey_data(struct wip
|
||||
@@ -5109,7 +5152,7 @@ brcmf_cfg80211_set_rekey_data(struct wip
|
||||
ret = brcmf_fil_iovar_data_set(ifp, "gtk_key_info", >k_le,
|
||||
sizeof(gtk_le));
|
||||
if (ret < 0)
|
||||
@@ -1603,7 +1603,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -5341,6 +5384,7 @@ static void brcmf_clear_assoc_ies(struct
|
||||
@@ -5344,6 +5387,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;
|
||||
@@ -5352,7 +5396,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5355,7 +5399,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 =
|
||||
@@ -5364,7 +5408,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5367,7 +5411,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;
|
||||
@@ -5382,7 +5426,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5385,7 +5429,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;
|
||||
@@ -5511,6 +5555,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5514,6 +5558,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;
|
||||
@@ -5528,7 +5573,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5531,7 +5576,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;
|
||||
}
|
||||
|
||||
@@ -5820,6 +5865,7 @@ static void init_vif_event(struct brcmf_
|
||||
@@ -5823,6 +5868,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];
|
||||
@@ -5832,7 +5878,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5835,7 +5881,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;
|
||||
}
|
||||
|
||||
@@ -5844,7 +5890,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5847,7 +5893,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;
|
||||
}
|
||||
|
||||
@@ -5853,7 +5899,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5856,7 +5902,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;
|
||||
}
|
||||
|
||||
@@ -5862,7 +5908,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5865,7 +5911,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;
|
||||
}
|
||||
|
||||
@@ -5873,25 +5919,26 @@ roam_setup_done:
|
||||
@@ -5876,25 +5922,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;
|
||||
}
|
||||
|
||||
@@ -5923,10 +5970,10 @@ static void brcmf_update_bw40_channel_fl
|
||||
@@ -5926,10 +5973,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;
|
||||
@@ -5945,11 +5992,10 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5948,11 +5995,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++)
|
||||
@@ -5969,7 +6015,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5972,7 +6018,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)
|
||||
@@ -5992,8 +6039,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5995,8 +6042,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;
|
||||
}
|
||||
|
||||
@@ -6039,6 +6086,7 @@ fail_pbuf:
|
||||
@@ -6042,6 +6089,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;
|
||||
@@ -6085,7 +6133,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6088,7 +6136,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;
|
||||
}
|
||||
@@ -6116,6 +6164,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6119,6 +6167,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;
|
||||
|
||||
@@ -6151,7 +6200,7 @@ static void brcmf_get_bwcap(struct brcmf
|
||||
@@ -6154,7 +6203,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>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6227,7 +6276,7 @@ static void brcmf_update_vht_cap(struct
|
||||
@@ -6230,7 +6279,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 };
|
||||
@@ -6243,7 +6292,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6246,7 +6295,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);
|
||||
}
|
||||
@@ -6253,7 +6302,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6256,7 +6305,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++)
|
||||
@@ -6263,7 +6312,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6266,7 +6315,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;
|
||||
}
|
||||
|
||||
@@ -6275,7 +6324,6 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6278,7 +6327,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)
|
||||
@@ -6476,7 +6524,7 @@ static void brcmf_wiphy_wowl_params(stru
|
||||
@@ -6479,7 +6527,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;
|
||||
}
|
||||
@@ -6573,7 +6621,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6576,7 +6624,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 */
|
||||
@@ -6622,6 +6670,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6625,6 +6673,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;
|
||||
@@ -6659,7 +6708,7 @@ static s32 brcmf_config_dongle(struct br
|
||||
@@ -6662,7 +6711,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;
|
||||
}
|
||||
|
||||
@@ -6851,8 +6900,8 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6854,8 +6903,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;
|
||||
}
|
||||
|
||||
@@ -6861,7 +6910,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6864,7 +6913,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;
|
||||
}
|
||||
|
||||
@@ -6871,7 +6920,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6874,7 +6923,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);
|
||||
@@ -6917,13 +6966,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6920,13 +6969,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;
|
||||
}
|
||||
|
||||
@@ -6944,7 +6993,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6947,7 +6996,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;
|
||||
}
|
||||
@@ -6953,7 +7002,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6956,7 +7005,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;
|
||||
@@ -6987,13 +7036,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6990,13 +7039,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;
|
||||
}
|
||||
|
||||
@@ -7011,24 +7060,24 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7014,24 +7063,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;
|
||||
@@ -7048,7 +7097,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7051,7 +7100,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
/* (re-) activate FWEH event handling */
|
||||
err = brcmf_fweh_activate_events(ifp);
|
||||
if (err) {
|
||||
|
||||
@@ -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
|
||||
@@ -6050,11 +6050,18 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6053,11 +6053,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
|
||||
@@ -6051,6 +6051,9 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6054,6 +6054,9 @@ static int brcmf_construct_chaninfo(stru
|
||||
* HT40 upper, HT40 lower, and VHT80.
|
||||
*/
|
||||
switch (ch.bw) {
|
||||
|
||||
@@ -946,7 +946,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_scb_val_le scb_val;
|
||||
s32 err = 0;
|
||||
struct brcmf_sta_info_le sta_info_le;
|
||||
@@ -2592,7 +2612,7 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
@@ -2593,7 +2613,7 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
&sta_info_le,
|
||||
sizeof(sta_info_le));
|
||||
if (err < 0) {
|
||||
@@ -955,7 +955,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
@@ -2661,7 +2681,7 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
@@ -2664,7 +2684,7 @@ brcmf_cfg80211_get_station(struct wiphy
|
||||
err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI,
|
||||
&scb_val, sizeof(scb_val));
|
||||
if (err) {
|
||||
@@ -964,7 +964,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
goto done;
|
||||
} else {
|
||||
@@ -2683,6 +2703,7 @@ brcmf_cfg80211_dump_station(struct wiphy
|
||||
@@ -2686,6 +2706,7 @@ brcmf_cfg80211_dump_station(struct wiphy
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
@@ -972,7 +972,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 err;
|
||||
|
||||
brcmf_dbg(TRACE, "Enter, idx %d\n", idx);
|
||||
@@ -2693,7 +2714,7 @@ brcmf_cfg80211_dump_station(struct wiphy
|
||||
@@ -2696,7 +2717,7 @@ brcmf_cfg80211_dump_station(struct wiphy
|
||||
&cfg->assoclist,
|
||||
sizeof(cfg->assoclist));
|
||||
if (err) {
|
||||
@@ -981,7 +981,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
cfg->assoclist.count = 0;
|
||||
return -EOPNOTSUPP;
|
||||
@@ -2714,6 +2735,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2717,6 +2738,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
s32 err = 0;
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
@@ -989,7 +989,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
brcmf_dbg(TRACE, "Enter\n");
|
||||
|
||||
@@ -2742,9 +2764,9 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2745,9 +2767,9 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm);
|
||||
if (err) {
|
||||
if (err == -ENODEV)
|
||||
@@ -1001,7 +1001,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
done:
|
||||
brcmf_dbg(TRACE, "Exit\n");
|
||||
@@ -2755,6 +2777,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -2758,6 +2780,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
struct brcmf_bss_info_le *bi)
|
||||
{
|
||||
struct wiphy *wiphy = cfg_to_wiphy(cfg);
|
||||
@@ -1009,7 +1009,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct cfg80211_bss *bss;
|
||||
enum nl80211_band band;
|
||||
struct brcmu_chan ch;
|
||||
@@ -2767,7 +2790,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -2770,7 +2793,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
struct cfg80211_inform_bss bss_data = {};
|
||||
|
||||
if (le32_to_cpu(bi->length) > WL_BSS_INFO_MAX) {
|
||||
@@ -1018,7 +1018,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2826,7 +2849,7 @@ next_bss_le(struct brcmf_scan_results *l
|
||||
@@ -2829,7 +2852,7 @@ next_bss_le(struct brcmf_scan_results *l
|
||||
|
||||
static s32 brcmf_inform_bss(struct brcmf_cfg80211_info *cfg)
|
||||
{
|
||||
@@ -1027,7 +1027,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_scan_results *bss_list;
|
||||
struct brcmf_bss_info_le *bi = NULL; /* must be initialized */
|
||||
s32 err = 0;
|
||||
@@ -2835,7 +2858,7 @@ static s32 brcmf_inform_bss(struct brcmf
|
||||
@@ -2838,7 +2861,7 @@ static s32 brcmf_inform_bss(struct brcmf
|
||||
bss_list = (struct brcmf_scan_results *)cfg->escan_info.escan_buf;
|
||||
if (bss_list->count != 0 &&
|
||||
bss_list->version != BRCMF_BSS_INFO_VERSION) {
|
||||
@@ -1036,7 +1036,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
bss_list->version);
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@@ -2853,6 +2876,7 @@ static s32 brcmf_inform_ibss(struct brcm
|
||||
@@ -2856,6 +2879,7 @@ static s32 brcmf_inform_ibss(struct brcm
|
||||
struct net_device *ndev, const u8 *bssid)
|
||||
{
|
||||
struct wiphy *wiphy = cfg_to_wiphy(cfg);
|
||||
@@ -1044,7 +1044,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct ieee80211_channel *notify_channel;
|
||||
struct brcmf_bss_info_le *bi = NULL;
|
||||
struct ieee80211_supported_band *band;
|
||||
@@ -2880,7 +2904,7 @@ static s32 brcmf_inform_ibss(struct brcm
|
||||
@@ -2883,7 +2907,7 @@ static s32 brcmf_inform_ibss(struct brcm
|
||||
err = brcmf_fil_cmd_data_get(netdev_priv(ndev), BRCMF_C_GET_BSS_INFO,
|
||||
buf, WL_BSS_INFO_MAX);
|
||||
if (err) {
|
||||
@@ -1053,7 +1053,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto CleanUp;
|
||||
}
|
||||
|
||||
@@ -2934,7 +2958,7 @@ CleanUp:
|
||||
@@ -2937,7 +2961,7 @@ CleanUp:
|
||||
static s32 brcmf_update_bss_info(struct brcmf_cfg80211_info *cfg,
|
||||
struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1062,7 +1062,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_bss_info_le *bi;
|
||||
const struct brcmf_tlv *tim;
|
||||
u16 beacon_interval;
|
||||
@@ -2951,7 +2975,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -2954,7 +2978,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_BSS_INFO,
|
||||
cfg->extra_buf, WL_EXTRA_BUF_MAX);
|
||||
if (err) {
|
||||
@@ -1071,7 +1071,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto update_bss_info_out;
|
||||
}
|
||||
|
||||
@@ -2976,7 +3000,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -2979,7 +3003,7 @@ static s32 brcmf_update_bss_info(struct
|
||||
u32 var;
|
||||
err = brcmf_fil_iovar_int_get(ifp, "dtim_assoc", &var);
|
||||
if (err) {
|
||||
@@ -1080,7 +1080,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto update_bss_info_out;
|
||||
}
|
||||
dtim_period = (u8)var;
|
||||
@@ -3014,10 +3038,10 @@ static void brcmf_escan_timeout(struct t
|
||||
@@ -3017,10 +3041,10 @@ static void brcmf_escan_timeout(struct t
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg =
|
||||
from_timer(cfg, t, escan_timeout);
|
||||
@@ -1093,7 +1093,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
schedule_work(&cfg->escan_timeout_work);
|
||||
}
|
||||
}
|
||||
@@ -3065,8 +3089,8 @@ static s32
|
||||
@@ -3068,8 +3092,8 @@ static s32
|
||||
brcmf_cfg80211_escan_handler(struct brcmf_if *ifp,
|
||||
const struct brcmf_event_msg *e, void *data)
|
||||
{
|
||||
@@ -1104,7 +1104,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 status;
|
||||
struct brcmf_escan_result_le *escan_result_le;
|
||||
u32 escan_buflen;
|
||||
@@ -3083,7 +3107,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3086,7 +3110,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
goto exit;
|
||||
|
||||
if (!test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) {
|
||||
@@ -1113,7 +1113,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
ifp->bsscfgidx);
|
||||
return -EPERM;
|
||||
}
|
||||
@@ -3091,24 +3115,24 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3094,24 +3118,24 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
if (status == BRCMF_E_STATUS_PARTIAL) {
|
||||
brcmf_dbg(SCAN, "ESCAN Partial result\n");
|
||||
if (e->datalen < sizeof(*escan_result_le)) {
|
||||
@@ -1142,7 +1142,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
escan_result_le->bss_count);
|
||||
goto exit;
|
||||
}
|
||||
@@ -3124,7 +3148,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3127,7 +3151,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
|
||||
bi_length = le32_to_cpu(bss_info_le->length);
|
||||
if (bi_length != escan_buflen - WL_ESCAN_RESULTS_FIXED_SIZE) {
|
||||
@@ -1151,7 +1151,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
bi_length);
|
||||
goto exit;
|
||||
}
|
||||
@@ -3133,7 +3157,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3136,7 +3160,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
BIT(NL80211_IFTYPE_ADHOC))) {
|
||||
if (le16_to_cpu(bss_info_le->capability) &
|
||||
WLAN_CAPABILITY_IBSS) {
|
||||
@@ -1160,7 +1160,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -3141,7 +3165,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
@@ -3144,7 +3168,7 @@ brcmf_cfg80211_escan_handler(struct brcm
|
||||
list = (struct brcmf_scan_results *)
|
||||
cfg->escan_info.escan_buf;
|
||||
if (bi_length > BRCMF_ESCAN_BUF_SIZE - list->buflen) {
|
||||
@@ -1169,7 +1169,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -3300,7 +3324,8 @@ static s32
|
||||
@@ -3303,7 +3327,8 @@ static s32
|
||||
brcmf_notify_sched_scan_results(struct brcmf_if *ifp,
|
||||
const struct brcmf_event_msg *e, void *data)
|
||||
{
|
||||
@@ -1179,7 +1179,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_pno_net_info_le *netinfo, *netinfo_start;
|
||||
struct cfg80211_scan_request *request = NULL;
|
||||
struct wiphy *wiphy = cfg_to_wiphy(cfg);
|
||||
@@ -3333,14 +3358,14 @@ brcmf_notify_sched_scan_results(struct b
|
||||
@@ -3336,14 +3361,14 @@ brcmf_notify_sched_scan_results(struct b
|
||||
WARN_ON(status != BRCMF_PNO_SCAN_COMPLETE);
|
||||
brcmf_dbg(SCAN, "PFN NET FOUND event. count: %d\n", result_count);
|
||||
if (!result_count) {
|
||||
@@ -1196,7 +1196,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
@@ -3387,14 +3412,15 @@ brcmf_cfg80211_sched_scan_start(struct w
|
||||
@@ -3390,14 +3415,15 @@ brcmf_cfg80211_sched_scan_start(struct w
|
||||
struct net_device *ndev,
|
||||
struct cfg80211_sched_scan_request *req)
|
||||
{
|
||||
@@ -1214,7 +1214,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
cfg->scan_status);
|
||||
return -EAGAIN;
|
||||
}
|
||||
@@ -3473,8 +3499,8 @@ static s32
|
||||
@@ -3476,8 +3502,8 @@ static s32
|
||||
brcmf_wowl_nd_results(struct brcmf_if *ifp, const struct brcmf_event_msg *e,
|
||||
void *data)
|
||||
{
|
||||
@@ -1225,7 +1225,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_pno_scanresults_le *pfn_result;
|
||||
struct brcmf_pno_net_info_le *netinfo;
|
||||
|
||||
@@ -3493,7 +3519,7 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
@@ -3496,7 +3522,7 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
}
|
||||
|
||||
if (le32_to_cpu(pfn_result->count) < 1) {
|
||||
@@ -1234,7 +1234,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
le32_to_cpu(pfn_result->count));
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -3523,6 +3549,7 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
@@ -3526,6 +3552,7 @@ brcmf_wowl_nd_results(struct brcmf_if *i
|
||||
static void brcmf_report_wowl_wakeind(struct wiphy *wiphy, struct brcmf_if *ifp)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
@@ -1242,7 +1242,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_wowl_wakeind_le wake_ind_le;
|
||||
struct cfg80211_wowlan_wakeup wakeup_data;
|
||||
struct cfg80211_wowlan_wakeup *wakeup;
|
||||
@@ -3533,7 +3560,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
@@ -3536,7 +3563,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
err = brcmf_fil_iovar_data_get(ifp, "wowl_wakeind", &wake_ind_le,
|
||||
sizeof(wake_ind_le));
|
||||
if (err) {
|
||||
@@ -1251,7 +1251,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3574,7 +3601,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
@@ -3577,7 +3604,7 @@ static void brcmf_report_wowl_wakeind(st
|
||||
cfg->wowl.nd_data_completed,
|
||||
BRCMF_ND_INFO_TIMEOUT);
|
||||
if (!timeout)
|
||||
@@ -1260,7 +1260,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
else
|
||||
wakeup_data.net_detect = cfg->wowl.nd_info;
|
||||
}
|
||||
@@ -3763,6 +3790,7 @@ brcmf_cfg80211_set_pmksa(struct wiphy *w
|
||||
@@ -3766,6 +3793,7 @@ brcmf_cfg80211_set_pmksa(struct wiphy *w
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_pmksa *pmk = &cfg->pmk_list.pmk[0];
|
||||
@@ -1268,7 +1268,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 err;
|
||||
u32 npmk, i;
|
||||
|
||||
@@ -3782,7 +3810,7 @@ brcmf_cfg80211_set_pmksa(struct wiphy *w
|
||||
@@ -3785,7 +3813,7 @@ brcmf_cfg80211_set_pmksa(struct wiphy *w
|
||||
cfg->pmk_list.npmk = cpu_to_le32(npmk);
|
||||
}
|
||||
} else {
|
||||
@@ -1277,7 +1277,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3805,6 +3833,7 @@ brcmf_cfg80211_del_pmksa(struct wiphy *w
|
||||
@@ -3808,6 +3836,7 @@ brcmf_cfg80211_del_pmksa(struct wiphy *w
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_pmksa *pmk = &cfg->pmk_list.pmk[0];
|
||||
@@ -1285,7 +1285,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 err;
|
||||
u32 npmk, i;
|
||||
|
||||
@@ -3828,7 +3857,7 @@ brcmf_cfg80211_del_pmksa(struct wiphy *w
|
||||
@@ -3831,7 +3860,7 @@ brcmf_cfg80211_del_pmksa(struct wiphy *w
|
||||
memset(&pmk[i], 0, sizeof(*pmk));
|
||||
cfg->pmk_list.npmk = cpu_to_le32(npmk - 1);
|
||||
} else {
|
||||
@@ -1294,7 +1294,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3860,20 +3889,20 @@ brcmf_cfg80211_flush_pmksa(struct wiphy
|
||||
@@ -3863,20 +3892,20 @@ brcmf_cfg80211_flush_pmksa(struct wiphy
|
||||
|
||||
static s32 brcmf_configure_opensecurity(struct brcmf_if *ifp)
|
||||
{
|
||||
@@ -1318,7 +1318,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
/* set upper-layer auth */
|
||||
@@ -3883,7 +3912,7 @@ static s32 brcmf_configure_opensecurity(
|
||||
@@ -3886,7 +3915,7 @@ static s32 brcmf_configure_opensecurity(
|
||||
wpa_val = WPA_AUTH_DISABLED;
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "wpa_auth", wpa_val);
|
||||
if (err < 0) {
|
||||
@@ -1327,7 +1327,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -3903,7 +3932,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3906,7 +3935,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
const struct brcmf_vs_tlv *wpa_ie,
|
||||
bool is_rsn_ie)
|
||||
{
|
||||
@@ -1336,7 +1336,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
u32 auth = 0; /* d11 open authentication */
|
||||
u16 count;
|
||||
s32 err = 0;
|
||||
@@ -3934,13 +3963,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3937,13 +3966,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* check for multicast cipher suite */
|
||||
if (offset + WPA_IE_MIN_OUI_LEN > len) {
|
||||
err = -EINVAL;
|
||||
@@ -1352,7 +1352,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
offset += TLV_OUI_LEN;
|
||||
@@ -3962,7 +3991,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3965,7 +3994,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
break;
|
||||
default:
|
||||
err = -EINVAL;
|
||||
@@ -1361,7 +1361,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -3973,13 +4002,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -3976,13 +4005,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* Check for unicast suite(s) */
|
||||
if (offset + (WPA_IE_MIN_OUI_LEN * count) > len) {
|
||||
err = -EINVAL;
|
||||
@@ -1377,7 +1377,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
offset += TLV_OUI_LEN;
|
||||
@@ -3997,7 +4026,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4000,7 +4029,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
pval |= AES_ENABLED;
|
||||
break;
|
||||
default:
|
||||
@@ -1386,7 +1386,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
@@ -4007,13 +4036,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4010,13 +4039,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* Check for auth key management suite(s) */
|
||||
if (offset + (WPA_IE_MIN_OUI_LEN * count) > len) {
|
||||
err = -EINVAL;
|
||||
@@ -1402,7 +1402,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
offset += TLV_OUI_LEN;
|
||||
@@ -4041,7 +4070,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4044,7 +4073,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
wpa_auth |= WPA2_AUTH_1X_SHA256;
|
||||
break;
|
||||
default:
|
||||
@@ -1411,7 +1411,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
offset++;
|
||||
}
|
||||
@@ -4083,7 +4112,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4086,7 +4115,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "wme_bss_disable",
|
||||
wme_bss_disable);
|
||||
if (err < 0) {
|
||||
@@ -1420,7 +1420,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4097,7 +4126,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4100,7 +4129,7 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
&data[offset],
|
||||
WPA_IE_MIN_OUI_LEN);
|
||||
if (err < 0) {
|
||||
@@ -1429,7 +1429,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4108,13 +4137,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4111,13 +4140,13 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
/* set auth */
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "auth", auth);
|
||||
if (err < 0) {
|
||||
@@ -1445,7 +1445,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
/* Configure MFP, this needs to go after wsec otherwise the wsec command
|
||||
@@ -4123,14 +4152,14 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
@@ -4126,14 +4155,14 @@ brcmf_configure_wpaie(struct brcmf_if *i
|
||||
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MFP)) {
|
||||
err = brcmf_fil_bsscfg_int_set(ifp, "mfp", mfp);
|
||||
if (err < 0) {
|
||||
@@ -1462,7 +1462,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4216,8 +4245,8 @@ brcmf_vndr_ie(u8 *iebuf, s32 pktflag, u8
|
||||
@@ -4219,8 +4248,8 @@ brcmf_vndr_ie(u8 *iebuf, s32 pktflag, u8
|
||||
s32 brcmf_vif_set_mgmt_ie(struct brcmf_cfg80211_vif *vif, s32 pktflag,
|
||||
const u8 *vndr_ie_buf, u32 vndr_ie_len)
|
||||
{
|
||||
@@ -1472,7 +1472,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct vif_saved_ie *saved_ie;
|
||||
s32 err = 0;
|
||||
u8 *iovar_ie_buf;
|
||||
@@ -4238,7 +4267,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4241,7 +4270,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
if (!vif)
|
||||
return -ENODEV;
|
||||
ifp = vif->ifp;
|
||||
@@ -1481,7 +1481,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
saved_ie = &vif->saved_ie;
|
||||
|
||||
brcmf_dbg(TRACE, "bsscfgidx %d, pktflag : 0x%02X\n", ifp->bsscfgidx,
|
||||
@@ -4270,13 +4299,13 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4273,13 +4302,13 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
break;
|
||||
default:
|
||||
err = -EPERM;
|
||||
@@ -1497,7 +1497,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4337,7 +4366,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4340,7 +4369,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
/* verify remained buf size before copy data */
|
||||
if (remained_buf_len < (vndrie_info->vndrie.len +
|
||||
VNDR_IE_VSIE_OFFSET)) {
|
||||
@@ -1506,7 +1506,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
remained_buf_len);
|
||||
break;
|
||||
}
|
||||
@@ -4369,7 +4398,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4372,7 +4401,7 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
err = brcmf_fil_bsscfg_data_set(ifp, "vndr_ie", iovar_ie_buf,
|
||||
total_ie_buf_len);
|
||||
if (err)
|
||||
@@ -1515,7 +1515,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
|
||||
exit:
|
||||
@@ -4397,14 +4426,14 @@ static s32
|
||||
@@ -4400,14 +4429,14 @@ static s32
|
||||
brcmf_config_ap_mgmt_ie(struct brcmf_cfg80211_vif *vif,
|
||||
struct cfg80211_beacon_data *beacon)
|
||||
{
|
||||
@@ -1532,7 +1532,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
brcmf_dbg(TRACE, "Applied Vndr IEs for Beacon\n");
|
||||
@@ -4414,7 +4443,7 @@ brcmf_config_ap_mgmt_ie(struct brcmf_cfg
|
||||
@@ -4417,7 +4446,7 @@ brcmf_config_ap_mgmt_ie(struct brcmf_cfg
|
||||
beacon->proberesp_ies,
|
||||
beacon->proberesp_ies_len);
|
||||
if (err)
|
||||
@@ -1541,7 +1541,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
else
|
||||
brcmf_dbg(TRACE, "Applied Vndr IEs for Probe Resp\n");
|
||||
|
||||
@@ -4428,6 +4457,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4431,6 +4460,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
s32 ie_offset;
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
@@ -1549,7 +1549,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
const struct brcmf_tlv *ssid_ie;
|
||||
const struct brcmf_tlv *country_ie;
|
||||
struct brcmf_ssid_le ssid_le;
|
||||
@@ -4523,7 +4553,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4526,7 +4556,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY,
|
||||
is_11d);
|
||||
if (err < 0) {
|
||||
@@ -1558,7 +1558,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
goto exit;
|
||||
}
|
||||
@@ -4532,7 +4562,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4535,7 +4565,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_BCNPRD,
|
||||
settings->beacon_interval);
|
||||
if (err < 0) {
|
||||
@@ -1567,7 +1567,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
goto exit;
|
||||
}
|
||||
@@ -4541,7 +4571,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4544,7 +4574,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_DTIMPRD,
|
||||
settings->dtim_period);
|
||||
if (err < 0) {
|
||||
@@ -1576,7 +1576,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
goto exit;
|
||||
}
|
||||
@@ -4552,7 +4582,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4555,7 +4585,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
!brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB))) {
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1);
|
||||
if (err < 0) {
|
||||
@@ -1585,7 +1585,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
goto exit;
|
||||
}
|
||||
@@ -4561,7 +4591,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4564,7 +4594,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_INFRA, 1);
|
||||
if (err < 0) {
|
||||
@@ -1594,7 +1594,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
} else if (WARN_ON(supports_11d && (is_11d != ifp->vif->is_11d))) {
|
||||
@@ -4577,7 +4607,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4580,7 +4610,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 1);
|
||||
if (err < 0) {
|
||||
@@ -1603,7 +1603,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
goto exit;
|
||||
}
|
||||
@@ -4587,14 +4617,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4590,14 +4620,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
*/
|
||||
err = brcmf_fil_iovar_int_set(ifp, "chanspec", chanspec);
|
||||
if (err < 0) {
|
||||
@@ -1620,7 +1620,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
/* On DOWN the firmware removes the WEP keys, reconfigure
|
||||
@@ -4609,14 +4639,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4612,14 +4642,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SSID,
|
||||
&join_params, sizeof(join_params));
|
||||
if (err < 0) {
|
||||
@@ -1637,7 +1637,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
@@ -4625,14 +4655,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4628,14 +4658,14 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
} else if (dev_role == NL80211_IFTYPE_P2P_GO) {
|
||||
err = brcmf_fil_iovar_int_set(ifp, "chanspec", chanspec);
|
||||
if (err < 0) {
|
||||
@@ -1654,7 +1654,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
bss_enable.bsscfgidx = cpu_to_le32(ifp->bsscfgidx);
|
||||
@@ -4640,7 +4670,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
@@ -4643,7 +4673,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
|
||||
err = brcmf_fil_iovar_data_set(ifp, "bss", &bss_enable,
|
||||
sizeof(bss_enable));
|
||||
if (err < 0) {
|
||||
@@ -1663,7 +1663,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -4663,7 +4693,9 @@ exit:
|
||||
@@ -4666,7 +4696,9 @@ exit:
|
||||
|
||||
static int brcmf_cfg80211_stop_ap(struct wiphy *wiphy, struct net_device *ndev)
|
||||
{
|
||||
@@ -1673,7 +1673,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
s32 err;
|
||||
struct brcmf_fil_bss_enable_le bss_enable;
|
||||
struct brcmf_join_params join_params;
|
||||
@@ -4688,13 +4720,13 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
@@ -4691,13 +4723,13 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SSID,
|
||||
&join_params, sizeof(join_params));
|
||||
if (err < 0)
|
||||
@@ -1690,7 +1690,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS))
|
||||
brcmf_fil_iovar_int_set(ifp, "mbss", 0);
|
||||
brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_REGULATORY,
|
||||
@@ -4702,7 +4734,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
@@ -4705,7 +4737,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
/* Bring device back up so it can be used again */
|
||||
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_UP, 1);
|
||||
if (err < 0)
|
||||
@@ -1699,7 +1699,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
brcmf_vif_clear_mgmt_ies(ifp->vif);
|
||||
} else {
|
||||
@@ -4711,7 +4743,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
@@ -4714,7 +4746,7 @@ static int brcmf_cfg80211_stop_ap(struct
|
||||
err = brcmf_fil_iovar_data_set(ifp, "bss", &bss_enable,
|
||||
sizeof(bss_enable));
|
||||
if (err < 0)
|
||||
@@ -1708,7 +1708,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
}
|
||||
brcmf_set_mpc(ifp, 1);
|
||||
brcmf_configure_arp_nd_offload(ifp, true);
|
||||
@@ -4740,6 +4772,7 @@ brcmf_cfg80211_del_station(struct wiphy
|
||||
@@ -4743,6 +4775,7 @@ brcmf_cfg80211_del_station(struct wiphy
|
||||
struct station_del_parameters *params)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
@@ -1716,7 +1716,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_scb_val_le scbval;
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
s32 err;
|
||||
@@ -4759,7 +4792,7 @@ brcmf_cfg80211_del_station(struct wiphy
|
||||
@@ -4762,7 +4795,7 @@ brcmf_cfg80211_del_station(struct wiphy
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON,
|
||||
&scbval, sizeof(scbval));
|
||||
if (err)
|
||||
@@ -1725,7 +1725,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err);
|
||||
|
||||
brcmf_dbg(TRACE, "Exit\n");
|
||||
@@ -4770,6 +4803,8 @@ static int
|
||||
@@ -4773,6 +4806,8 @@ static int
|
||||
brcmf_cfg80211_change_station(struct wiphy *wiphy, struct net_device *ndev,
|
||||
const u8 *mac, struct station_parameters *params)
|
||||
{
|
||||
@@ -1734,7 +1734,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
s32 err;
|
||||
|
||||
@@ -4790,7 +4825,7 @@ brcmf_cfg80211_change_station(struct wip
|
||||
@@ -4793,7 +4828,7 @@ brcmf_cfg80211_change_station(struct wip
|
||||
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_SCB_DEAUTHORIZE,
|
||||
(void *)mac, ETH_ALEN);
|
||||
if (err < 0)
|
||||
@@ -1743,7 +1743,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -4820,6 +4855,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
@@ -4823,6 +4858,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct ieee80211_channel *chan = params->chan;
|
||||
@@ -1751,7 +1751,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
const u8 *buf = params->buf;
|
||||
size_t len = params->len;
|
||||
const struct ieee80211_mgmt *mgmt;
|
||||
@@ -4840,7 +4876,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
@@ -4843,7 +4879,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
mgmt = (const struct ieee80211_mgmt *)buf;
|
||||
|
||||
if (!ieee80211_is_mgmt(mgmt->frame_control)) {
|
||||
@@ -1760,7 +1760,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
@@ -4871,13 +4907,13 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
@@ -4874,13 +4910,13 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wip
|
||||
GFP_KERNEL);
|
||||
} else if (ieee80211_is_action(mgmt->frame_control)) {
|
||||
if (len > BRCMF_FIL_ACTION_FRAME_SIZE + DOT11_MGMT_HDR_LEN) {
|
||||
@@ -1776,7 +1776,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err = -ENOMEM;
|
||||
goto exit;
|
||||
}
|
||||
@@ -4928,6 +4964,7 @@ brcmf_cfg80211_cancel_remain_on_channel(
|
||||
@@ -4931,6 +4967,7 @@ brcmf_cfg80211_cancel_remain_on_channel(
|
||||
u64 cookie)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
@@ -1784,7 +1784,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_cfg80211_vif *vif;
|
||||
int err = 0;
|
||||
|
||||
@@ -4935,7 +4972,7 @@ brcmf_cfg80211_cancel_remain_on_channel(
|
||||
@@ -4938,7 +4975,7 @@ brcmf_cfg80211_cancel_remain_on_channel(
|
||||
|
||||
vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
|
||||
if (vif == NULL) {
|
||||
@@ -1793,7 +1793,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
err = -ENODEV;
|
||||
goto exit;
|
||||
}
|
||||
@@ -4950,6 +4987,7 @@ static int brcmf_cfg80211_get_channel(st
|
||||
@@ -4953,6 +4990,7 @@ static int brcmf_cfg80211_get_channel(st
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct net_device *ndev = wdev->netdev;
|
||||
@@ -1801,7 +1801,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_if *ifp;
|
||||
struct brcmu_chan ch;
|
||||
enum nl80211_band band = 0;
|
||||
@@ -4963,7 +5001,7 @@ static int brcmf_cfg80211_get_channel(st
|
||||
@@ -4966,7 +5004,7 @@ static int brcmf_cfg80211_get_channel(st
|
||||
|
||||
err = brcmf_fil_iovar_int_get(ifp, "chanspec", &chanspec);
|
||||
if (err) {
|
||||
@@ -1810,7 +1810,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -5085,6 +5123,8 @@ static int brcmf_cfg80211_tdls_oper(stru
|
||||
@@ -5088,6 +5126,8 @@ static int brcmf_cfg80211_tdls_oper(stru
|
||||
struct net_device *ndev, const u8 *peer,
|
||||
enum nl80211_tdls_operation oper)
|
||||
{
|
||||
@@ -1819,7 +1819,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_if *ifp;
|
||||
struct brcmf_tdls_iovar_le info;
|
||||
int ret = 0;
|
||||
@@ -5102,7 +5142,7 @@ static int brcmf_cfg80211_tdls_oper(stru
|
||||
@@ -5105,7 +5145,7 @@ static int brcmf_cfg80211_tdls_oper(stru
|
||||
ret = brcmf_fil_iovar_data_set(ifp, "tdls_endpoint",
|
||||
&info, sizeof(info));
|
||||
if (ret < 0)
|
||||
@@ -1828,7 +1828,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -5113,6 +5153,8 @@ brcmf_cfg80211_update_conn_params(struct
|
||||
@@ -5116,6 +5156,8 @@ brcmf_cfg80211_update_conn_params(struct
|
||||
struct cfg80211_connect_params *sme,
|
||||
u32 changed)
|
||||
{
|
||||
@@ -1837,7 +1837,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_if *ifp;
|
||||
int err;
|
||||
|
||||
@@ -5123,7 +5165,7 @@ brcmf_cfg80211_update_conn_params(struct
|
||||
@@ -5126,7 +5168,7 @@ brcmf_cfg80211_update_conn_params(struct
|
||||
err = brcmf_vif_set_mgmt_ie(ifp->vif, BRCMF_VNDR_IE_ASSOCREQ_FLAG,
|
||||
sme->ie, sme->ie_len);
|
||||
if (err)
|
||||
@@ -1846,7 +1846,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
else
|
||||
brcmf_dbg(TRACE, "Applied Vndr IEs for Assoc request\n");
|
||||
|
||||
@@ -5135,6 +5177,8 @@ static int
|
||||
@@ -5138,6 +5180,8 @@ static int
|
||||
brcmf_cfg80211_set_rekey_data(struct wiphy *wiphy, struct net_device *ndev,
|
||||
struct cfg80211_gtk_rekey_data *gtk)
|
||||
{
|
||||
@@ -1855,7 +1855,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
struct brcmf_if *ifp = netdev_priv(ndev);
|
||||
struct brcmf_gtk_keyinfo_le gtk_le;
|
||||
int ret;
|
||||
@@ -5149,7 +5193,7 @@ brcmf_cfg80211_set_rekey_data(struct wip
|
||||
@@ -5152,7 +5196,7 @@ brcmf_cfg80211_set_rekey_data(struct wip
|
||||
ret = brcmf_fil_iovar_data_set(ifp, "gtk_key_info", >k_le,
|
||||
sizeof(gtk_le));
|
||||
if (ret < 0)
|
||||
@@ -1864,7 +1864,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -5384,7 +5428,7 @@ static void brcmf_clear_assoc_ies(struct
|
||||
@@ -5387,7 +5431,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;
|
||||
@@ -5396,7 +5440,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5399,7 +5443,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 =
|
||||
@@ -5408,7 +5452,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5411,7 +5455,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;
|
||||
@@ -5426,7 +5470,7 @@ static s32 brcmf_get_assoc_ies(struct br
|
||||
@@ -5429,7 +5473,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;
|
||||
@@ -5555,7 +5599,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5558,7 +5602,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;
|
||||
@@ -5573,7 +5617,7 @@ brcmf_notify_connect_status_ap(struct br
|
||||
@@ -5576,7 +5620,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;
|
||||
}
|
||||
|
||||
@@ -5865,7 +5909,7 @@ static void init_vif_event(struct brcmf_
|
||||
@@ -5868,7 +5912,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];
|
||||
@@ -5878,7 +5922,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5881,7 +5925,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;
|
||||
}
|
||||
|
||||
@@ -5890,7 +5934,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5893,7 +5937,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;
|
||||
}
|
||||
|
||||
@@ -5899,7 +5943,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5902,7 +5946,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;
|
||||
}
|
||||
|
||||
@@ -5908,7 +5952,7 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5911,7 +5955,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;
|
||||
}
|
||||
|
||||
@@ -5919,26 +5963,26 @@ roam_setup_done:
|
||||
@@ -5922,26 +5966,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;
|
||||
}
|
||||
|
||||
@@ -5971,7 +6015,8 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5974,7 +6018,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;
|
||||
@@ -5992,7 +6037,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -5995,7 +6040,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;
|
||||
}
|
||||
|
||||
@@ -6015,7 +6060,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6018,7 +6063,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;
|
||||
}
|
||||
@@ -6039,7 +6084,7 @@ static int brcmf_construct_chaninfo(stru
|
||||
@@ -6042,7 +6087,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;
|
||||
}
|
||||
@@ -6096,8 +6141,8 @@ fail_pbuf:
|
||||
@@ -6099,8 +6144,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;
|
||||
@@ -6143,7 +6188,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6146,7 +6191,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;
|
||||
}
|
||||
@@ -6174,7 +6219,7 @@ static int brcmf_enable_bw40_2g(struct b
|
||||
@@ -6177,7 +6222,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;
|
||||
|
||||
@@ -6210,7 +6255,7 @@ static void brcmf_get_bwcap(struct brcmf
|
||||
@@ -6213,7 +6258,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>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6285,7 +6330,8 @@ static void brcmf_update_vht_cap(struct
|
||||
@@ -6288,7 +6333,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;
|
||||
@@ -6302,7 +6348,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6305,7 +6351,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);
|
||||
}
|
||||
@@ -6312,7 +6358,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6315,7 +6361,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++)
|
||||
@@ -6322,7 +6368,7 @@ static int brcmf_setup_wiphybands(struct
|
||||
@@ -6325,7 +6371,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;
|
||||
}
|
||||
|
||||
@@ -6529,12 +6575,13 @@ static void brcmf_wiphy_wowl_params(stru
|
||||
@@ -6532,12 +6578,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;
|
||||
}
|
||||
@@ -6631,7 +6678,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6634,7 +6681,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 */
|
||||
@@ -6680,7 +6727,7 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6683,7 +6730,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;
|
||||
@@ -6718,7 +6765,7 @@ static s32 brcmf_config_dongle(struct br
|
||||
@@ -6721,7 +6768,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;
|
||||
}
|
||||
|
||||
@@ -6899,6 +6946,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6902,6 +6949,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;
|
||||
@@ -6910,7 +6958,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6913,7 +6961,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;
|
||||
}
|
||||
@@ -6920,7 +6968,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6923,7 +6971,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;
|
||||
}
|
||||
|
||||
@@ -6930,7 +6978,7 @@ static void brcmf_cfg80211_reg_notifier(
|
||||
@@ -6933,7 +6981,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);
|
||||
@@ -6976,13 +7024,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -6979,13 +7027,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;
|
||||
}
|
||||
|
||||
@@ -7003,7 +7051,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7006,7 +7054,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;
|
||||
}
|
||||
@@ -7012,7 +7060,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7015,7 +7063,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;
|
||||
@@ -7046,13 +7094,13 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7049,13 +7097,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;
|
||||
}
|
||||
|
||||
@@ -7070,24 +7118,24 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7073,24 +7121,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;
|
||||
@@ -7107,7 +7155,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
@@ -7110,7 +7158,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
/* (re-) activate FWEH event handling */
|
||||
err = brcmf_fweh_activate_events(ifp);
|
||||
if (err) {
|
||||
|
||||
@@ -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
|
||||
@@ -6728,6 +6728,11 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
@@ -6731,6 +6731,11 @@ static int brcmf_setup_wiphy(struct wiph
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
vif->profile.use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
|
||||
}
|
||||
brcmf_dbg(TRACE, "Exit\n");
|
||||
@@ -4996,18 +5001,16 @@ static int brcmf_cfg80211_get_channel(st
|
||||
@@ -4999,18 +5004,16 @@ static int brcmf_cfg80211_get_channel(st
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct net_device *ndev = wdev->netdev;
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
|
||||
@@ -21,7 +21,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
|
||||
@@ -2974,8 +2974,6 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -2977,8 +2977,6 @@ static s32 brcmf_update_bss_info(struct
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct brcmf_bss_info_le *bi;
|
||||
const struct brcmf_tlv *tim;
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
size_t ie_len;
|
||||
u8 *ie;
|
||||
s32 err = 0;
|
||||
@@ -2999,12 +2997,9 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -3002,12 +3000,9 @@ static s32 brcmf_update_bss_info(struct
|
||||
|
||||
ie = ((u8 *)bi) + le16_to_cpu(bi->ie_offset);
|
||||
ie_len = le32_to_cpu(bi->ie_length);
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
/*
|
||||
* active scan was done so we could not get dtim
|
||||
* information out of probe response.
|
||||
@@ -3016,7 +3011,6 @@ static s32 brcmf_update_bss_info(struct
|
||||
@@ -3019,7 +3014,6 @@ static s32 brcmf_update_bss_info(struct
|
||||
bphy_err(drvr, "wl dtim_assoc failed (%d)\n", err);
|
||||
goto update_bss_info_out;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,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
|
||||
@@ -4236,9 +4236,7 @@ next:
|
||||
@@ -4239,9 +4239,7 @@ next:
|
||||
static u32
|
||||
brcmf_vndr_ie(u8 *iebuf, s32 pktflag, u8 *ie_ptr, u32 ie_len, s8 *add_del_cmd)
|
||||
{
|
||||
|
||||
@@ -13,7 +13,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
|
||||
@@ -4214,10 +4214,8 @@ brcmf_parse_vndr_ies(const u8 *vndr_ie_b
|
||||
@@ -4217,10 +4217,8 @@ brcmf_parse_vndr_ies(const u8 *vndr_ie_b
|
||||
|
||||
vndr_ies->count++;
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
parsed_info->vndrie.oui_type);
|
||||
|
||||
if (vndr_ies->count >= VNDR_IE_PARSE_LIMIT)
|
||||
@@ -4341,12 +4339,10 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4344,12 +4342,10 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
for (i = 0; i < old_vndr_ies.count; i++) {
|
||||
vndrie_info = &old_vndr_ies.ie_info[i];
|
||||
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
del_add_ie_buf_len = brcmf_vndr_ie(curr_ie_buf, pktflag,
|
||||
vndrie_info->ie_ptr,
|
||||
@@ -4378,12 +4374,10 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
@@ -4381,12 +4377,10 @@ s32 brcmf_vif_set_mgmt_ie(struct brcmf_c
|
||||
remained_buf_len -= (vndrie_info->ie_len +
|
||||
VNDR_IE_VSIE_OFFSET);
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -7197,7 +7197,6 @@ void brcmf_cfg80211_detach(struct brcmf_
|
||||
@@ -7200,7 +7200,6 @@ void brcmf_cfg80211_detach(struct brcmf_
|
||||
brcmf_pno_detach(cfg);
|
||||
brcmf_btcoex_detach(cfg);
|
||||
wiphy_unregister(cfg->wiphy);
|
||||
|
||||
@@ -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
|
||||
@@ -5939,19 +5939,17 @@ static s32 brcmf_dongle_roam(struct brcm
|
||||
@@ -5942,19 +5942,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
|
||||
@@ -6447,6 +6447,9 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
|
||||
@@ -6450,6 +6450,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
|
||||
@@ -6458,6 +6461,10 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
|
||||
@@ -6461,6 +6464,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)
|
||||
{
|
||||
@@ -6465,13 +6472,14 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6468,13 +6475,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;
|
||||
@@ -6482,16 +6490,36 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6485,16 +6493,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);
|
||||
@@ -6500,16 +6528,26 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6503,16 +6531,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);
|
||||
|
||||
@@ -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
|
||||
@@ -5293,6 +5293,7 @@ struct brcmf_cfg80211_vif *brcmf_alloc_v
|
||||
@@ -5296,6 +5296,7 @@ struct brcmf_cfg80211_vif *brcmf_alloc_v
|
||||
struct brcmf_cfg80211_vif *vif_walk;
|
||||
struct brcmf_cfg80211_vif *vif;
|
||||
bool mbss;
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
|
||||
brcmf_dbg(TRACE, "allocating virtual interface (size=%zu)\n",
|
||||
sizeof(*vif));
|
||||
@@ -5305,7 +5306,8 @@ struct brcmf_cfg80211_vif *brcmf_alloc_v
|
||||
@@ -5308,7 +5309,8 @@ struct brcmf_cfg80211_vif *brcmf_alloc_v
|
||||
|
||||
brcmf_init_prof(&vif->profile);
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -6474,12 +6474,13 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6477,12 +6477,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);
|
||||
@@ -6489,6 +6490,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6492,6 +6493,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;
|
||||
@@ -6500,48 +6505,28 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6503,48 +6508,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:
|
||||
@@ -6474,9 +6553,10 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6477,9 +6556,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);
|
||||
@@ -6490,6 +6570,8 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6493,6 +6573,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) |
|
||||
@@ -6497,18 +6579,18 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6500,18 +6582,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);
|
||||
@@ -6557,14 +6639,20 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
@@ -6560,14 +6642,20 @@ static int brcmf_setup_ifmodes(struct wi
|
||||
if (mbss) {
|
||||
c++;
|
||||
i = 0;
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -2866,6 +2866,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2869,6 +2869,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
* preference in cfg struct to apply this to
|
||||
* FW later while initializing the dongle
|
||||
*/
|
||||
|
||||
@@ -445,7 +445,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -546,13 +545,13 @@ ieee80211_crypto_ccmp_decrypt(struct iee
|
||||
@@ -549,13 +548,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;
|
||||
}
|
||||
|
||||
@@ -649,7 +648,7 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
@@ -652,7 +651,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 &&
|
||||
@@ -706,8 +705,10 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
@@ -709,8 +708,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
|
||||
@@ -1132,9 +1133,9 @@ ieee80211_crypto_aes_gmac_encrypt(struct
|
||||
@@ -1138,9 +1139,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;
|
||||
@@ -1180,7 +1181,7 @@ ieee80211_crypto_aes_gmac_decrypt(struct
|
||||
@@ -1186,7 +1187,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;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3833,6 +3833,12 @@ out:
|
||||
@@ -3853,6 +3853,12 @@ out:
|
||||
netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2192,7 +2192,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
@@ -2189,7 +2189,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
* the frames sent while scanning on other channel will be
|
||||
* lost)
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
@@ -3498,13 +3498,19 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
@@ -3518,13 +3518,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)
|
||||
@@ -3617,6 +3623,7 @@ begin:
|
||||
@@ -3637,6 +3643,7 @@ begin:
|
||||
}
|
||||
|
||||
IEEE80211_SKB_CB(skb)->control.vif = vif;
|
||||
|
||||
@@ -202,7 +202,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1441,6 +1441,7 @@ void ieee80211_txq_init(struct ieee80211
|
||||
@@ -1447,6 +1447,7 @@ void ieee80211_txq_init(struct ieee80211
|
||||
codel_vars_init(&txqi->def_cvars);
|
||||
codel_stats_init(&txqi->cstats);
|
||||
__skb_queue_head_init(&txqi->frags);
|
||||
@@ -210,7 +210,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
txqi->txq.vif = &sdata->vif;
|
||||
|
||||
@@ -1464,6 +1465,9 @@ void ieee80211_txq_purge(struct ieee8021
|
||||
@@ -1470,6 +1471,9 @@ void ieee80211_txq_purge(struct ieee8021
|
||||
|
||||
fq_tin_reset(fq, tin, fq_skb_free_func);
|
||||
ieee80211_purge_tx_queue(&local->hw, &txqi->frags);
|
||||
@@ -220,7 +220,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
|
||||
void ieee80211_txq_set_params(struct ieee80211_local *local)
|
||||
@@ -1580,7 +1584,7 @@ static bool ieee80211_queue_skb(struct i
|
||||
@@ -1586,7 +1590,7 @@ static bool ieee80211_queue_skb(struct i
|
||||
ieee80211_txq_enqueue(local, txqi, skb);
|
||||
spin_unlock_bh(&fq->lock);
|
||||
|
||||
@@ -229,7 +229,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -3631,6 +3635,60 @@ out:
|
||||
@@ -3651,6 +3655,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 */
|
||||
@@ -4715,6 +4716,11 @@ static int nl80211_send_station(struct s
|
||||
@@ -4716,6 +4717,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:
|
||||
@@ -5351,6 +5357,15 @@ static int nl80211_set_station(struct sk
|
||||
@@ -5352,6 +5358,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)
|
||||
@@ -5489,6 +5504,15 @@ static int nl80211_new_station(struct sk
|
||||
@@ -5490,6 +5505,15 @@ static int nl80211_new_station(struct sk
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
/* if the dir failed, don't put all the other things into the root! */
|
||||
--- a/net/mac80211/debugfs_sta.c
|
||||
+++ b/net/mac80211/debugfs_sta.c
|
||||
@@ -178,9 +178,9 @@ static ssize_t sta_aqm_read(struct file
|
||||
@@ -179,9 +179,9 @@ static ssize_t sta_aqm_read(struct file
|
||||
txqi->tin.tx_bytes,
|
||||
txqi->tin.tx_packets,
|
||||
txqi->flags,
|
||||
@@ -162,7 +162,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
|
||||
rcu_read_unlock();
|
||||
@@ -192,6 +192,64 @@ static ssize_t sta_aqm_read(struct file
|
||||
@@ -193,6 +193,64 @@ static ssize_t sta_aqm_read(struct file
|
||||
}
|
||||
STA_OPS(aqm);
|
||||
|
||||
@@ -227,7 +227,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
@@ -546,6 +604,10 @@ void ieee80211_sta_debugfs_add(struct st
|
||||
@@ -547,6 +605,10 @@ void ieee80211_sta_debugfs_add(struct st
|
||||
if (local->ops->wake_tx_queue)
|
||||
DEBUGFS_ADD(aqm);
|
||||
|
||||
@@ -302,7 +302,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
|
||||
for (i = 0; i < IEEE80211_NUM_TIDS; i++)
|
||||
@@ -1842,6 +1842,27 @@ void ieee80211_sta_set_buffered(struct i
|
||||
@@ -1837,6 +1837,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)
|
||||
{
|
||||
@@ -2212,6 +2233,23 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
@@ -2207,6 +2228,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
|
||||
@@ -128,6 +128,16 @@ enum ieee80211_agg_stop_reason {
|
||||
@@ -129,6 +129,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;
|
||||
|
||||
/**
|
||||
@@ -593,6 +603,9 @@ struct sta_info {
|
||||
@@ -594,6 +604,9 @@ struct sta_info {
|
||||
} tx_stats;
|
||||
u16 tid_seq[IEEE80211_QOS_CTL_TID_MASK + 1];
|
||||
|
||||
@@ -400,7 +400,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
if (sta->status_stats.lost_packets)
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1463,8 +1463,11 @@ void ieee80211_txq_purge(struct ieee8021
|
||||
@@ -1469,8 +1469,11 @@ void ieee80211_txq_purge(struct ieee8021
|
||||
struct fq *fq = &local->fq;
|
||||
struct fq_tin *tin = &txqi->tin;
|
||||
|
||||
@@ -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]);
|
||||
@@ -3642,11 +3645,28 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3662,11 +3665,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);
|
||||
@@ -3664,12 +3684,74 @@ void ieee80211_return_txq(struct ieee802
|
||||
@@ -3684,12 +3704,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
|
||||
@@ -3704,6 +3704,19 @@ void ieee80211_return_txq(struct ieee802
|
||||
@@ -3724,6 +3724,19 @@ void ieee80211_return_txq(struct ieee802
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_return_txq);
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -925,7 +925,7 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
@@ -931,7 +931,7 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||
int frag_threshold = tx->local->hw.wiphy->frag_threshold;
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int fragnum;
|
||||
|
||||
/* no matter what happens, tx->skb moves to tx->skbs */
|
||||
@@ -946,8 +946,6 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
@@ -952,8 +952,6 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
if (WARN_ON(info->flags & IEEE80211_TX_CTL_AMPDU))
|
||||
return TX_DROP;
|
||||
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/* internal error, why isn't DONTFRAG set? */
|
||||
if (WARN_ON(skb->len + FCS_LEN <= frag_threshold))
|
||||
return TX_DROP;
|
||||
@@ -1178,6 +1176,8 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
@@ -1184,6 +1182,8 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
|
||||
@@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (likely(sta)) {
|
||||
if (!IS_ERR(sta))
|
||||
tx->sta = sta;
|
||||
@@ -3536,6 +3536,7 @@ begin:
|
||||
@@ -3556,6 +3556,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);
|
||||
@@ -3580,7 +3581,7 @@ begin:
|
||||
@@ -3600,7 +3601,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);
|
||||
@@ -4039,6 +4040,7 @@ ieee80211_build_data_template(struct iee
|
||||
@@ -4059,6 +4060,7 @@ ieee80211_build_data_template(struct iee
|
||||
hdr = (void *)skb->data;
|
||||
tx.sta = sta_info_get(sdata, hdr->addr1);
|
||||
tx.skb = skb;
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
rcu_read_unlock();
|
||||
--- a/net/mac80211/util.c
|
||||
+++ b/net/mac80211/util.c
|
||||
@@ -1396,6 +1396,7 @@ void ieee80211_send_auth(struct ieee8021
|
||||
@@ -1398,6 +1398,7 @@ void ieee80211_send_auth(struct ieee8021
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct sk_buff *skb;
|
||||
struct ieee80211_mgmt *mgmt;
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int err;
|
||||
|
||||
/* 24 + 6 = header + auth_algo + auth_transaction + status_code */
|
||||
@@ -1419,8 +1420,10 @@ void ieee80211_send_auth(struct ieee8021
|
||||
@@ -1421,8 +1422,10 @@ void ieee80211_send_auth(struct ieee8021
|
||||
skb_put_data(skb, extra, extra_len);
|
||||
|
||||
if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) {
|
||||
@@ -199,7 +199,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
len = skb->len - hdrlen;
|
||||
|
||||
if (info->control.hw_key)
|
||||
@@ -663,7 +662,7 @@ static int gcmp_encrypt_skb(struct ieee8
|
||||
@@ -666,7 +665,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)
|
||||
@@ -805,7 +804,6 @@ static ieee80211_tx_result
|
||||
@@ -811,7 +810,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;
|
||||
@@ -821,8 +819,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8
|
||||
@@ -827,8 +825,7 @@ ieee80211_crypto_cs_encrypt(struct ieee8
|
||||
pskb_expand_head(skb, iv_len, 0, GFP_ATOMIC)))
|
||||
return TX_DROP;
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -106,13 +106,15 @@ void mesh_path_assign_nexthop(struct mes
|
||||
@@ -109,13 +109,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
|
||||
@@ -2705,7 +2705,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2702,7 +2702,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;
|
||||
@@ -2798,7 +2798,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2795,7 +2795,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)
|
||||
@@ -2830,6 +2832,12 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2827,6 +2829,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
|
||||
@@ -312,7 +312,7 @@ struct ieee80211_fast_tx {
|
||||
@@ -313,7 +313,7 @@ struct ieee80211_fast_tx {
|
||||
u8 hdr_len;
|
||||
u8 sa_offs, da_offs, pn_offs;
|
||||
u8 band;
|
||||
@@ -217,7 +217,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1175,8 +1175,7 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
@@ -1181,8 +1181,7 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
info->flags &= ~IEEE80211_TX_INTFL_NEED_TXPROCESSING;
|
||||
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
@@ -227,7 +227,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (likely(sta)) {
|
||||
if (!IS_ERR(sta))
|
||||
@@ -2233,7 +2232,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
|
||||
@@ -2243,7 +2242,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;
|
||||
@@ -2452,7 +2451,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2462,7 +2461,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;
|
||||
@@ -2751,7 +2750,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2761,7 +2760,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
|
||||
@@ -2784,6 +2785,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2794,6 +2795,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;
|
||||
|
||||
@@ -2960,6 +2964,8 @@ void ieee80211_check_fast_xmit(struct st
|
||||
@@ -2970,6 +2974,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,
|
||||
@@ -3536,7 +3542,7 @@ begin:
|
||||
@@ -3556,7 +3562,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);
|
||||
@@ -4040,7 +4046,7 @@ ieee80211_build_data_template(struct iee
|
||||
@@ -4060,7 +4066,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
|
||||
@@ -3648,16 +3648,17 @@ EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
@@ -3668,16 +3668,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,
|
||||
@@ -3674,21 +3675,25 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3694,21 +3695,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)) {
|
||||
@@ -3708,18 +3713,7 @@ void ieee80211_return_txq(struct ieee802
|
||||
@@ -3728,18 +3733,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);
|
||||
@@ -3732,7 +3726,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -3752,7 +3746,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;
|
||||
@@ -3762,34 +3756,27 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -3782,34 +3776,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
|
||||
@@ -220,7 +220,7 @@ static struct mesh_path *mpath_lookup(st
|
||||
@@ -223,7 +223,7 @@ static struct mesh_path *mpath_lookup(st
|
||||
{
|
||||
struct mesh_path *mpath;
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
flow->backlog += skb->len;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1390,11 +1390,15 @@ static void ieee80211_txq_enqueue(struct
|
||||
@@ -1396,11 +1396,15 @@ static void ieee80211_txq_enqueue(struct
|
||||
{
|
||||
struct fq *fq = &local->fq;
|
||||
struct fq_tin *tin = &txqi->tin;
|
||||
@@ -93,7 +93,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
static bool fq_vlan_filter_func(struct fq *fq, struct fq_tin *tin,
|
||||
@@ -1564,7 +1568,6 @@ static bool ieee80211_queue_skb(struct i
|
||||
@@ -1570,7 +1574,6 @@ static bool ieee80211_queue_skb(struct i
|
||||
struct sta_info *sta,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
@@ -101,7 +101,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_vif *vif;
|
||||
struct txq_info *txqi;
|
||||
|
||||
@@ -1582,9 +1585,7 @@ static bool ieee80211_queue_skb(struct i
|
||||
@@ -1588,9 +1591,7 @@ static bool ieee80211_queue_skb(struct i
|
||||
if (!txqi)
|
||||
return false;
|
||||
|
||||
@@ -111,7 +111,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
schedule_and_wake_txq(local, txqi);
|
||||
|
||||
@@ -3211,6 +3212,7 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3223,6 +3224,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;
|
||||
@@ -3233,6 +3235,8 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3245,6 +3247,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
|
||||
@@ -3240,7 +3244,8 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3252,7 +3256,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
|
||||
@@ -3518,6 +3518,7 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
@@ -3538,6 +3538,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) ||
|
||||
@@ -3534,11 +3535,12 @@ struct sk_buff *ieee80211_tx_dequeue(str
|
||||
@@ -3554,11 +3555,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);
|
||||
|
||||
@@ -3602,8 +3604,11 @@ begin:
|
||||
@@ -3622,8 +3624,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) &&
|
||||
@@ -3642,6 +3647,7 @@ begin:
|
||||
@@ -3662,6 +3667,7 @@ begin:
|
||||
}
|
||||
|
||||
IEEE80211_SKB_CB(skb)->control.vif = vif;
|
||||
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/**
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3698,8 +3698,9 @@ out:
|
||||
@@ -3718,8 +3718,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);
|
||||
@@ -3707,7 +3708,8 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
@@ -3727,7 +3728,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
|
||||
@@ -3727,7 +3729,7 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
@@ -3747,7 +3749,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
|
||||
@@ -3797,6 +3797,7 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -3817,6 +3817,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;
|
||||
|
||||
@@ -3810,7 +3811,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
@@ -3830,7 +3831,15 @@ void __ieee80211_subif_start_xmit(struct
|
||||
if (ieee80211_lookup_ra_sta(sdata, skb, &sta))
|
||||
goto out_free;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
/**
|
||||
--- a/net/mac80211/wpa.c
|
||||
+++ b/net/mac80211/wpa.c
|
||||
@@ -952,7 +952,8 @@ ieee80211_crypto_aes_cmac_encrypt(struct
|
||||
@@ -958,7 +958,8 @@ ieee80211_crypto_aes_cmac_encrypt(struct
|
||||
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (WARN_ON(skb_tailroom(skb) < sizeof(*mmie)))
|
||||
@@ -968,6 +969,9 @@ ieee80211_crypto_aes_cmac_encrypt(struct
|
||||
@@ -974,6 +975,9 @@ ieee80211_crypto_aes_cmac_encrypt(struct
|
||||
|
||||
bip_ipn_set64(mmie->sequence_number, pn64);
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
|
||||
/* flush out frame - make sure the deauth was actually sent */
|
||||
@@ -4374,7 +4375,7 @@ void ieee80211_mgd_quiesce(struct ieee80
|
||||
@@ -4381,7 +4382,7 @@ void ieee80211_mgd_quiesce(struct ieee80
|
||||
* cfg80211 won't know and won't actually abort those attempts,
|
||||
* thus we need to do that ourselves.
|
||||
*/
|
||||
@@ -87,7 +87,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
IEEE80211_STYPE_DEAUTH,
|
||||
WLAN_REASON_DEAUTH_LEAVING,
|
||||
false, frame_buf);
|
||||
@@ -5354,7 +5355,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
@@ -5361,7 +5362,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
ieee80211_get_reason_code_string(req->reason_code));
|
||||
|
||||
drv_mgd_prepare_tx(sdata->local, sdata, 0);
|
||||
@@ -96,7 +96,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
IEEE80211_STYPE_DEAUTH,
|
||||
req->reason_code, tx,
|
||||
frame_buf);
|
||||
@@ -5374,7 +5375,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
@@ -5381,7 +5382,7 @@ int ieee80211_mgd_deauth(struct ieee8021
|
||||
ieee80211_get_reason_code_string(req->reason_code));
|
||||
|
||||
drv_mgd_prepare_tx(sdata->local, sdata, 0);
|
||||
@@ -107,7 +107,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
frame_buf);
|
||||
--- a/net/mac80211/util.c
|
||||
+++ b/net/mac80211/util.c
|
||||
@@ -1433,7 +1433,8 @@ void ieee80211_send_auth(struct ieee8021
|
||||
@@ -1435,7 +1435,8 @@ void ieee80211_send_auth(struct ieee8021
|
||||
}
|
||||
|
||||
void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
|
||||
@@ -117,7 +117,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
bool send_frame, u8 *frame_buf)
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
@@ -1444,7 +1445,7 @@ void ieee80211_send_deauth_disassoc(stru
|
||||
@@ -1446,7 +1447,7 @@ void ieee80211_send_deauth_disassoc(stru
|
||||
mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | stype);
|
||||
mgmt->duration = 0; /* initialize only */
|
||||
mgmt->seq_ctrl = 0; /* initialize only */
|
||||
|
||||
@@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__NL80211_SURVEY_INFO_AFTER_LAST,
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -8379,6 +8379,10 @@ static int nl80211_send_survey(struct sk
|
||||
@@ -8380,6 +8380,10 @@ static int nl80211_send_survey(struct sk
|
||||
nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_SCAN,
|
||||
survey->time_scan, NL80211_SURVEY_INFO_PAD))
|
||||
goto nla_put_failure;
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2460,6 +2460,19 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -2457,6 +2457,19 @@ static int ieee80211_get_tx_power(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *addr)
|
||||
{
|
||||
@@ -3849,6 +3862,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -3846,6 +3859,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
.set_wiphy_params = ieee80211_set_wiphy_params,
|
||||
.set_tx_power = ieee80211_set_tx_power,
|
||||
.get_tx_power = ieee80211_get_tx_power,
|
||||
|
||||
@@ -19,6 +19,7 @@ PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_LICENSE:=GPL-2.0+
|
||||
PKG_CPE_ID:=cpe:/a:gmplib:gmp
|
||||
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ PKG_SOURCE_URL:=https://libbsd.freedesktop.org/releases
|
||||
|
||||
PKG_LICENSE:=BSD-4-Clause
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
PKG_CPE_ID:=cpe:/a:freedesktop:libbsd
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_LICENSE:=GPL-2.0+
|
||||
PKG_CPE_ID:=cpe:/a:netfilter:libnetfilter_conntrack
|
||||
|
||||
PKG_INSTALL:=1
|
||||
|
||||
|
||||
@@ -12,8 +12,7 @@ PKG_VERSION:=1.9.1
|
||||
PKG_RELEASE:=2.1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \
|
||||
http://www.tcpdump.org/release/
|
||||
PKG_SOURCE_URL:=http://www.tcpdump.org/release/
|
||||
PKG_HASH:=635237637c5b619bcceba91900666b64d56ecb7be63f298f601ec786ce087094
|
||||
PKG_FIXUP:=patch-libtool
|
||||
|
||||
@@ -22,6 +21,7 @@ PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_INSTALL:=1
|
||||
PKG_BUILD_PARALLEL:=0
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_CPE_ID:=cpe:/a:tcpdump:libpcap
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mbedtls
|
||||
PKG_VERSION:=2.16.10
|
||||
PKG_VERSION:=2.16.12
|
||||
PKG_RELEASE:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/ARMmbed/mbedtls/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=96257bb03b30300b2f35f861ffe204ed957e9fd0329d80646fe57fc49f589b29
|
||||
PKG_HASH:=294871ab1864a65d0b74325e9219d5bcd6e91c34a3c59270c357bb9ae4d5c393
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_LICENSE:=GPL-2.0+
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=openssl
|
||||
PKG_BASE:=1.1.1
|
||||
PKG_BUGFIX:=k
|
||||
PKG_BUGFIX:=n
|
||||
PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX)
|
||||
PKG_RELEASE:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
@@ -26,7 +26,7 @@ PKG_SOURCE_URL:= \
|
||||
ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/ \
|
||||
ftp://ftp.pca.dfn.de/pub/tools/net/openssl/source/old/$(PKG_BASE)/
|
||||
|
||||
PKG_HASH:=892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5
|
||||
PKG_HASH:=40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a
|
||||
|
||||
PKG_LICENSE:=OpenSSL
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
@@ -335,6 +335,7 @@ define Build/Configure
|
||||
--prefix=/usr \
|
||||
--libdir=lib \
|
||||
--openssldir=/etc/ssl \
|
||||
--cross-compile-prefix="$(TARGET_CROSS)" \
|
||||
$(TARGET_CPPFLAGS) \
|
||||
$(TARGET_LDFLAGS) \
|
||||
$(OPENSSL_OPTIONS) && \
|
||||
@@ -347,14 +348,12 @@ TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
define Build/Compile
|
||||
+$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
|
||||
CROSS_COMPILE="$(TARGET_CROSS)" \
|
||||
CC="$(TARGET_CC)" \
|
||||
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH) \
|
||||
OPENWRT_OPTIMIZATION_FLAGS="$(TARGET_CFLAGS)" \
|
||||
$(OPENSSL_MAKEFLAGS) \
|
||||
all
|
||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
CROSS_COMPILE="$(TARGET_CROSS)" \
|
||||
CC="$(TARGET_CC)" \
|
||||
DESTDIR="$(PKG_INSTALL_DIR)" \
|
||||
$(OPENSSL_MAKEFLAGS) \
|
||||
|
||||
@@ -12,7 +12,7 @@ diff --git a/Configure b/Configure
|
||||
index 5a699836f3..74d057c219 100755
|
||||
--- a/Configure
|
||||
+++ b/Configure
|
||||
@@ -1545,7 +1545,9 @@ unless ($disabled{"crypto-mdebug-backtrace"})
|
||||
@@ -1548,7 +1548,9 @@ unless ($disabled{"crypto-mdebug-backtrace"})
|
||||
|
||||
unless ($disabled{afalgeng}) {
|
||||
$config{afalgeng}="";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 1c2fabcdb34e436286b4a8760cfbfbff11ea551a Mon Sep 17 00:00:00 2001
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Eneas U de Queiroz <cote2004-github@yahoo.com>
|
||||
Date: Sat, 3 Nov 2018 15:41:10 -0300
|
||||
Subject: eng_devcrypto: add configuration options
|
||||
@@ -14,7 +14,6 @@ Reviewed-by: Richard Levitte <levitte@openssl.org>
|
||||
(Merged from https://github.com/openssl/openssl/pull/7585)
|
||||
|
||||
diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
|
||||
index a2c9a966f7..5ec38ca8f3 100644
|
||||
--- a/crypto/engine/eng_devcrypto.c
|
||||
+++ b/crypto/engine/eng_devcrypto.c
|
||||
@@ -16,6 +16,7 @@
|
||||
@@ -558,7 +557,7 @@ index a2c9a966f7..5ec38ca8f3 100644
|
||||
/******************************************************************************
|
||||
*
|
||||
* LOAD / UNLOAD
|
||||
@@ -793,6 +1109,8 @@ void engine_load_devcrypto_int()
|
||||
@@ -806,6 +1122,8 @@ void engine_load_devcrypto_int()
|
||||
|
||||
if (!ENGINE_set_id(e, "devcrypto")
|
||||
|| !ENGINE_set_name(e, "/dev/crypto engine")
|
||||
|
||||
@@ -18,6 +18,7 @@ PKG_SOURCE_URL:= \
|
||||
http://rpm5.org/files/popt/
|
||||
PKG_HASH:=e728ed296fe9f069a0e005003c3d6b2dde3d9cad453422a10d6558616d304cc8
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_CPE_ID:=cpe:/a:popt_project:popt
|
||||
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_REMOVE_FILES:=autogen.sh aclocal.m4
|
||||
|
||||
@@ -15,6 +15,7 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=@SF/linux-diag
|
||||
PKG_HASH:=e865de2c1f559fff0d3fc936e660c0efaf7afe662064f2fb97ccad1ec28d208a
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_CPE_ID:=cpe:/a:sysfsutils_project:sysfsutils
|
||||
|
||||
PKG_LICENSE:=LGPL-2.1
|
||||
PKG_LICENSE_FILES:=COPYING cmd/GPL lib/LGPL
|
||||
|
||||
@@ -44,9 +44,13 @@ config WOLFSSL_HAS_WPAS
|
||||
default y
|
||||
|
||||
config WOLFSSL_HAS_ECC25519
|
||||
bool "Include ECC Curve 22519 support"
|
||||
bool "Include ECC Curve 25519 support"
|
||||
default n
|
||||
|
||||
config WOLFSSL_ALT_NAMES
|
||||
bool "Include SAN (Subject Alternative Name) support"
|
||||
default y
|
||||
|
||||
config WOLFSSL_HAS_DEVCRYPTO
|
||||
bool
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wolfssl
|
||||
PKG_VERSION:=4.7.0-stable
|
||||
PKG_VERSION:=5.2.0-stable
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/wolfSSL/wolfssl/archive/v$(PKG_VERSION)
|
||||
PKG_HASH:=b0e740b31d4d877d540ad50cc539a8873fc41af02bd3091c4357b403f7106e31
|
||||
PKG_HASH:=409b4646c5f54f642de0e9f3544c3b83de7238134f5b1ff93fb44527bf119d05
|
||||
|
||||
PKG_FIXUP:=libtool
|
||||
PKG_INSTALL:=1
|
||||
@@ -31,7 +31,7 @@ PKG_CONFIG_DEPENDS:=\
|
||||
CONFIG_WOLFSSL_HAS_DH CONFIG_WOLFSSL_HAS_DTLS \
|
||||
CONFIG_WOLFSSL_HAS_ECC25519 CONFIG_WOLFSSL_HAS_OCSP \
|
||||
CONFIG_WOLFSSL_HAS_SESSION_TICKET CONFIG_WOLFSSL_HAS_TLSV10 \
|
||||
CONFIG_WOLFSSL_HAS_TLSV13 CONFIG_WOLFSSL_HAS_WPAS
|
||||
CONFIG_WOLFSSL_HAS_TLSV13 CONFIG_WOLFSSL_HAS_WPAS CONFIG_WOLFSSL_ALT_NAMES
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@@ -44,7 +44,7 @@ define Package/libwolfssl
|
||||
MENU:=1
|
||||
PROVIDES:=libcyassl
|
||||
DEPENDS:=+WOLFSSL_HAS_DEVCRYPTO:kmod-cryptodev +WOLFSSL_HAS_AFALG:kmod-crypto-user
|
||||
ABI_VERSION:=24
|
||||
ABI_VERSION:=32
|
||||
endef
|
||||
|
||||
define Package/libwolfssl/description
|
||||
@@ -56,13 +56,24 @@ define Package/libwolfssl/config
|
||||
source "$(SOURCE)/Config.in"
|
||||
endef
|
||||
|
||||
TARGET_CFLAGS += $(FPIC) -DFP_MAX_BITS=8192 -fomit-frame-pointer
|
||||
TARGET_CFLAGS += \
|
||||
$(FPIC) \
|
||||
-fomit-frame-pointer \
|
||||
-flto \
|
||||
-DFP_MAX_BITS=8192 \
|
||||
$(if $(CONFIG_WOLFSSL_ALT_NAMES),-DWOLFSSL_ALT_NAMES)
|
||||
|
||||
TARGET_LDFLAGS += -flto
|
||||
|
||||
# --enable-stunnel needed for OpenSSL API compatibility bits
|
||||
CONFIGURE_ARGS += \
|
||||
--enable-reproducible-build \
|
||||
--enable-opensslall \
|
||||
--enable-opensslextra \
|
||||
--enable-sni \
|
||||
--enable-stunnel \
|
||||
--enable-altcertchains \
|
||||
--disable-crypttests \
|
||||
--disable-examples \
|
||||
--disable-jobserver \
|
||||
--$(if $(CONFIG_IPV6),enable,disable)-ipv6 \
|
||||
@@ -88,7 +99,7 @@ endif
|
||||
|
||||
ifeq ($(CONFIG_WOLFSSL_HAS_WPAS),y)
|
||||
CONFIGURE_ARGS += \
|
||||
--enable-wpas --enable-sha512 --enable-fortress --enable-fastmath
|
||||
--enable-wpas --enable-fortress --enable-fastmath
|
||||
endif
|
||||
|
||||
define Build/InstallDev
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/wolfssl/wolfcrypt/settings.h
|
||||
+++ b/wolfssl/wolfcrypt/settings.h
|
||||
@@ -2255,7 +2255,7 @@ extern void uITRON4_free(void *p) ;
|
||||
@@ -2338,7 +2338,7 @@ extern void uITRON4_free(void *p) ;
|
||||
#endif
|
||||
|
||||
/* warning for not using harden build options (default with ./configure) */
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 144c857e4..de7f6b45a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -32,7 +32,7 @@ AC_ARG_PROGRAM
|
||||
|
||||
AC_CONFIG_HEADERS([config.h:config.in])
|
||||
|
||||
-LT_PREREQ([2.4.2])
|
||||
+LT_PREREQ([2.4])
|
||||
LT_INIT([disable-static win32-dll])
|
||||
|
||||
#shared library versioning
|
||||
50
package/libs/wolfssl/patches/200-ecc-rng.patch
Normal file
50
package/libs/wolfssl/patches/200-ecc-rng.patch
Normal file
@@ -0,0 +1,50 @@
|
||||
Since commit 6467de5a8840 ("Randomize z ordinates in scalar
|
||||
mult when timing resistant") wolfssl requires a RNG for an EC
|
||||
key when the hardened built option is selected.
|
||||
|
||||
wc_ecc_set_rng is only available when built hardened, so there
|
||||
is no safe way to install the RNG to the key regardless whether
|
||||
or not wolfssl is compiled hardened.
|
||||
|
||||
Always export wc_ecc_set_rng so tools such as hostapd can install
|
||||
RNG regardless of the built settings for wolfssl.
|
||||
|
||||
--- a/wolfcrypt/src/ecc.c
|
||||
+++ b/wolfcrypt/src/ecc.c
|
||||
@@ -11655,21 +11655,21 @@ void wc_ecc_fp_free(void)
|
||||
|
||||
#endif /* FP_ECC */
|
||||
|
||||
-#ifdef ECC_TIMING_RESISTANT
|
||||
int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
+#ifdef ECC_TIMING_RESISTANT
|
||||
if (key == NULL) {
|
||||
err = BAD_FUNC_ARG;
|
||||
}
|
||||
else {
|
||||
key->rng = rng;
|
||||
}
|
||||
+#endif
|
||||
|
||||
return err;
|
||||
}
|
||||
-#endif
|
||||
|
||||
#ifdef HAVE_ECC_ENCRYPT
|
||||
|
||||
--- a/wolfssl/wolfcrypt/ecc.h
|
||||
+++ b/wolfssl/wolfcrypt/ecc.h
|
||||
@@ -650,10 +650,8 @@ WOLFSSL_API
|
||||
void wc_ecc_fp_free(void);
|
||||
WOLFSSL_LOCAL
|
||||
void wc_ecc_fp_init(void);
|
||||
-#ifdef ECC_TIMING_RESISTANT
|
||||
WOLFSSL_API
|
||||
int wc_ecc_set_rng(ecc_key* key, WC_RNG* rng);
|
||||
-#endif
|
||||
|
||||
WOLFSSL_API
|
||||
int wc_ecc_set_curve(ecc_key* key, int keysize, int curve_id);
|
||||
@@ -0,0 +1,24 @@
|
||||
From 87e43dd63ba429297e439f2dfd1ee8b45981e18b Mon Sep 17 00:00:00 2001
|
||||
From: Juliusz Sosinowicz <juliusz@wolfssl.com>
|
||||
Date: Sat, 12 Feb 2022 00:34:24 +0100
|
||||
Subject: [PATCH] Reported in ZD13631
|
||||
|
||||
`ssl->peerVerifyRet` wasn't being cleared when retrying with an alternative cert chain
|
||||
|
||||
References: https://github.com/wolfSSL/wolfssl/issues/4879
|
||||
---
|
||||
src/internal.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/src/internal.c
|
||||
+++ b/src/internal.c
|
||||
@@ -12342,6 +12342,9 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte*
|
||||
}
|
||||
|
||||
ret = 0; /* clear errors and continue */
|
||||
+ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||
+ ssl->peerVerifyRet = 0;
|
||||
+ #endif
|
||||
args->verifyErr = 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
From 096889927d9528d4fbeb3aab56d1fe8225d2e7ec Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Pouzzner <douzzer@wolfssl.com>
|
||||
Date: Thu, 14 Apr 2022 20:23:31 -0500
|
||||
Subject: [PATCH] wolfcrypt/src/port/devcrypto/devcrypto_aes.c: remove
|
||||
redundant "int ret" in wc_AesCtrEncrypt() (supersedes #5052).
|
||||
|
||||
|
||||
diff --git a/wolfcrypt/src/port/devcrypto/devcrypto_aes.c b/wolfcrypt/src/port/devcrypto/devcrypto_aes.c
|
||||
index 3bc1d5bb1..28e145e27 100644
|
||||
--- a/wolfcrypt/src/port/devcrypto/devcrypto_aes.c
|
||||
+++ b/wolfcrypt/src/port/devcrypto/devcrypto_aes.c
|
||||
@@ -208,7 +208,6 @@ int wc_AesCtrEncrypt(Aes* aes, byte* out, const byte* in, word32 sz)
|
||||
int ret;
|
||||
struct crypt_op crt;
|
||||
byte* tmp;
|
||||
- int ret;
|
||||
|
||||
if (aes == NULL || out == NULL || in == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=zlib
|
||||
PKG_VERSION:=1.2.11
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@SF/libpng http://www.zlib.net
|
||||
|
||||
@@ -0,0 +1,343 @@
|
||||
From 5c44459c3b28a9bd3283aaceab7c615f8020c531 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Adler <madler@alumni.caltech.edu>
|
||||
Date: Tue, 17 Apr 2018 22:09:22 -0700
|
||||
Subject: [PATCH] Fix a bug that can crash deflate on some input when using
|
||||
Z_FIXED.
|
||||
|
||||
This bug was reported by Danilo Ramos of Eideticom, Inc. It has
|
||||
lain in wait 13 years before being found! The bug was introduced
|
||||
in zlib 1.2.2.2, with the addition of the Z_FIXED option. That
|
||||
option forces the use of fixed Huffman codes. For rare inputs with
|
||||
a large number of distant matches, the pending buffer into which
|
||||
the compressed data is written can overwrite the distance symbol
|
||||
table which it overlays. That results in corrupted output due to
|
||||
invalid distances, and can result in out-of-bound accesses,
|
||||
crashing the application.
|
||||
|
||||
The fix here combines the distance buffer and literal/length
|
||||
buffers into a single symbol buffer. Now three bytes of pending
|
||||
buffer space are opened up for each literal or length/distance
|
||||
pair consumed, instead of the previous two bytes. This assures
|
||||
that the pending buffer cannot overwrite the symbol table, since
|
||||
the maximum fixed code compressed length/distance is 31 bits, and
|
||||
since there are four bytes of pending space for every three bytes
|
||||
of symbol space.
|
||||
---
|
||||
deflate.c | 74 ++++++++++++++++++++++++++++++++++++++++---------------
|
||||
deflate.h | 25 +++++++++----------
|
||||
trees.c | 50 +++++++++++--------------------------
|
||||
3 files changed, 79 insertions(+), 70 deletions(-)
|
||||
|
||||
diff --git a/deflate.c b/deflate.c
|
||||
index 425babc00..19cba873a 100644
|
||||
--- a/deflate.c
|
||||
+++ b/deflate.c
|
||||
@@ -255,11 +255,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||
int wrap = 1;
|
||||
static const char my_version[] = ZLIB_VERSION;
|
||||
|
||||
- ushf *overlay;
|
||||
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
|
||||
- * output size for (length,distance) codes is <= 24 bits.
|
||||
- */
|
||||
-
|
||||
if (version == Z_NULL || version[0] != my_version[0] ||
|
||||
stream_size != sizeof(z_stream)) {
|
||||
return Z_VERSION_ERROR;
|
||||
@@ -329,9 +324,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||
|
||||
s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
|
||||
|
||||
- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
|
||||
- s->pending_buf = (uchf *) overlay;
|
||||
- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
|
||||
+ /* We overlay pending_buf and sym_buf. This works since the average size
|
||||
+ * for length/distance pairs over any compressed block is assured to be 31
|
||||
+ * bits or less.
|
||||
+ *
|
||||
+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
|
||||
+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
|
||||
+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
|
||||
+ * possible fixed-codes length/distance pair is then 31 bits total.
|
||||
+ *
|
||||
+ * sym_buf starts one-fourth of the way into pending_buf. So there are
|
||||
+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
|
||||
+ * in sym_buf is three bytes -- two for the distance and one for the
|
||||
+ * literal/length. As each symbol is consumed, the pointer to the next
|
||||
+ * sym_buf value to read moves forward three bytes. From that symbol, up to
|
||||
+ * 31 bits are written to pending_buf. The closest the written pending_buf
|
||||
+ * bits gets to the next sym_buf symbol to read is just before the last
|
||||
+ * code is written. At that time, 31*(n-2) bits have been written, just
|
||||
+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
|
||||
+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
|
||||
+ * symbols are written.) The closest the writing gets to what is unread is
|
||||
+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
|
||||
+ * can range from 128 to 32768.
|
||||
+ *
|
||||
+ * Therefore, at a minimum, there are 142 bits of space between what is
|
||||
+ * written and what is read in the overlain buffers, so the symbols cannot
|
||||
+ * be overwritten by the compressed data. That space is actually 139 bits,
|
||||
+ * due to the three-bit fixed-code block header.
|
||||
+ *
|
||||
+ * That covers the case where either Z_FIXED is specified, forcing fixed
|
||||
+ * codes, or when the use of fixed codes is chosen, because that choice
|
||||
+ * results in a smaller compressed block than dynamic codes. That latter
|
||||
+ * condition then assures that the above analysis also covers all dynamic
|
||||
+ * blocks. A dynamic-code block will only be chosen to be emitted if it has
|
||||
+ * fewer bits than a fixed-code block would for the same set of symbols.
|
||||
+ * Therefore its average symbol length is assured to be less than 31. So
|
||||
+ * the compressed data for a dynamic block also cannot overwrite the
|
||||
+ * symbols from which it is being constructed.
|
||||
+ */
|
||||
+
|
||||
+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
|
||||
+ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
|
||||
|
||||
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
|
||||
s->pending_buf == Z_NULL) {
|
||||
@@ -340,8 +373,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||
deflateEnd (strm);
|
||||
return Z_MEM_ERROR;
|
||||
}
|
||||
- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
|
||||
- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
|
||||
+ s->sym_buf = s->pending_buf + s->lit_bufsize;
|
||||
+ s->sym_end = (s->lit_bufsize - 1) * 3;
|
||||
+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
|
||||
+ * on 16 bit machines and because stored blocks are restricted to
|
||||
+ * 64K-1 bytes.
|
||||
+ */
|
||||
|
||||
s->level = level;
|
||||
s->strategy = strategy;
|
||||
@@ -552,7 +589,7 @@ int ZEXPORT deflatePrime (strm, bits, value)
|
||||
|
||||
if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
|
||||
s = strm->state;
|
||||
- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
|
||||
+ if (s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
|
||||
return Z_BUF_ERROR;
|
||||
do {
|
||||
put = Buf_size - s->bi_valid;
|
||||
@@ -1113,7 +1150,6 @@ int ZEXPORT deflateCopy (dest, source)
|
||||
#else
|
||||
deflate_state *ds;
|
||||
deflate_state *ss;
|
||||
- ushf *overlay;
|
||||
|
||||
|
||||
if (deflateStateCheck(source) || dest == Z_NULL) {
|
||||
@@ -1133,8 +1169,7 @@ int ZEXPORT deflateCopy (dest, source)
|
||||
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
|
||||
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
|
||||
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
|
||||
- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
|
||||
- ds->pending_buf = (uchf *) overlay;
|
||||
+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
|
||||
|
||||
if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
|
||||
ds->pending_buf == Z_NULL) {
|
||||
@@ -1148,8 +1183,7 @@ int ZEXPORT deflateCopy (dest, source)
|
||||
zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
|
||||
|
||||
ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
|
||||
- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
|
||||
- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
|
||||
+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
|
||||
|
||||
ds->l_desc.dyn_tree = ds->dyn_ltree;
|
||||
ds->d_desc.dyn_tree = ds->dyn_dtree;
|
||||
@@ -1925,7 +1959,7 @@ local block_state deflate_fast(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
@@ -2056,7 +2090,7 @@ local block_state deflate_slow(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
@@ -2131,7 +2165,7 @@ local block_state deflate_rle(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
@@ -2170,7 +2204,7 @@ local block_state deflate_huff(s, flush)
|
||||
FLUSH_BLOCK(s, 1);
|
||||
return finish_done;
|
||||
}
|
||||
- if (s->last_lit)
|
||||
+ if (s->sym_next)
|
||||
FLUSH_BLOCK(s, 0);
|
||||
return block_done;
|
||||
}
|
||||
diff --git a/deflate.h b/deflate.h
|
||||
index 23ecdd312..d4cf1a98b 100644
|
||||
--- a/deflate.h
|
||||
+++ b/deflate.h
|
||||
@@ -217,7 +217,7 @@ typedef struct internal_state {
|
||||
/* Depth of each subtree used as tie breaker for trees of equal frequency
|
||||
*/
|
||||
|
||||
- uchf *l_buf; /* buffer for literals or lengths */
|
||||
+ uchf *sym_buf; /* buffer for distances and literals/lengths */
|
||||
|
||||
uInt lit_bufsize;
|
||||
/* Size of match buffer for literals/lengths. There are 4 reasons for
|
||||
@@ -239,13 +239,8 @@ typedef struct internal_state {
|
||||
* - I can't count above 4
|
||||
*/
|
||||
|
||||
- uInt last_lit; /* running index in l_buf */
|
||||
-
|
||||
- ushf *d_buf;
|
||||
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
|
||||
- * the same number of elements. To use different lengths, an extra flag
|
||||
- * array would be necessary.
|
||||
- */
|
||||
+ uInt sym_next; /* running index in sym_buf */
|
||||
+ uInt sym_end; /* symbol table full when sym_next reaches this */
|
||||
|
||||
ulg opt_len; /* bit length of current block with optimal trees */
|
||||
ulg static_len; /* bit length of current block with static trees */
|
||||
@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
|
||||
|
||||
# define _tr_tally_lit(s, c, flush) \
|
||||
{ uch cc = (c); \
|
||||
- s->d_buf[s->last_lit] = 0; \
|
||||
- s->l_buf[s->last_lit++] = cc; \
|
||||
+ s->sym_buf[s->sym_next++] = 0; \
|
||||
+ s->sym_buf[s->sym_next++] = 0; \
|
||||
+ s->sym_buf[s->sym_next++] = cc; \
|
||||
s->dyn_ltree[cc].Freq++; \
|
||||
- flush = (s->last_lit == s->lit_bufsize-1); \
|
||||
+ flush = (s->sym_next == s->sym_end); \
|
||||
}
|
||||
# define _tr_tally_dist(s, distance, length, flush) \
|
||||
{ uch len = (uch)(length); \
|
||||
ush dist = (ush)(distance); \
|
||||
- s->d_buf[s->last_lit] = dist; \
|
||||
- s->l_buf[s->last_lit++] = len; \
|
||||
+ s->sym_buf[s->sym_next++] = dist; \
|
||||
+ s->sym_buf[s->sym_next++] = dist >> 8; \
|
||||
+ s->sym_buf[s->sym_next++] = len; \
|
||||
dist--; \
|
||||
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
|
||||
s->dyn_dtree[d_code(dist)].Freq++; \
|
||||
- flush = (s->last_lit == s->lit_bufsize-1); \
|
||||
+ flush = (s->sym_next == s->sym_end); \
|
||||
}
|
||||
#else
|
||||
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
|
||||
diff --git a/trees.c b/trees.c
|
||||
index 4f4a65011..decaeb7c3 100644
|
||||
--- a/trees.c
|
||||
+++ b/trees.c
|
||||
@@ -416,7 +416,7 @@ local void init_block(s)
|
||||
|
||||
s->dyn_ltree[END_BLOCK].Freq = 1;
|
||||
s->opt_len = s->static_len = 0L;
|
||||
- s->last_lit = s->matches = 0;
|
||||
+ s->sym_next = s->matches = 0;
|
||||
}
|
||||
|
||||
#define SMALLEST 1
|
||||
@@ -948,7 +948,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
|
||||
|
||||
Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
|
||||
opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
|
||||
- s->last_lit));
|
||||
+ s->sym_next / 3));
|
||||
|
||||
if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
|
||||
|
||||
@@ -1017,8 +1017,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||
unsigned dist; /* distance of matched string */
|
||||
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
|
||||
{
|
||||
- s->d_buf[s->last_lit] = (ush)dist;
|
||||
- s->l_buf[s->last_lit++] = (uch)lc;
|
||||
+ s->sym_buf[s->sym_next++] = dist;
|
||||
+ s->sym_buf[s->sym_next++] = dist >> 8;
|
||||
+ s->sym_buf[s->sym_next++] = lc;
|
||||
if (dist == 0) {
|
||||
/* lc is the unmatched char */
|
||||
s->dyn_ltree[lc].Freq++;
|
||||
@@ -1033,30 +1034,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||
s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
|
||||
s->dyn_dtree[d_code(dist)].Freq++;
|
||||
}
|
||||
-
|
||||
-#ifdef TRUNCATE_BLOCK
|
||||
- /* Try to guess if it is profitable to stop the current block here */
|
||||
- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
|
||||
- /* Compute an upper bound for the compressed length */
|
||||
- ulg out_length = (ulg)s->last_lit*8L;
|
||||
- ulg in_length = (ulg)((long)s->strstart - s->block_start);
|
||||
- int dcode;
|
||||
- for (dcode = 0; dcode < D_CODES; dcode++) {
|
||||
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
|
||||
- (5L+extra_dbits[dcode]);
|
||||
- }
|
||||
- out_length >>= 3;
|
||||
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
|
||||
- s->last_lit, in_length, out_length,
|
||||
- 100L - out_length*100L/in_length));
|
||||
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
|
||||
- }
|
||||
-#endif
|
||||
- return (s->last_lit == s->lit_bufsize-1);
|
||||
- /* We avoid equality with lit_bufsize because of wraparound at 64K
|
||||
- * on 16 bit machines and because stored blocks are restricted to
|
||||
- * 64K-1 bytes.
|
||||
- */
|
||||
+ return (s->sym_next == s->sym_end);
|
||||
}
|
||||
|
||||
/* ===========================================================================
|
||||
@@ -1069,13 +1047,14 @@ local void compress_block(s, ltree, dtree)
|
||||
{
|
||||
unsigned dist; /* distance of matched string */
|
||||
int lc; /* match length or unmatched char (if dist == 0) */
|
||||
- unsigned lx = 0; /* running index in l_buf */
|
||||
+ unsigned sx = 0; /* running index in sym_buf */
|
||||
unsigned code; /* the code to send */
|
||||
int extra; /* number of extra bits to send */
|
||||
|
||||
- if (s->last_lit != 0) do {
|
||||
- dist = s->d_buf[lx];
|
||||
- lc = s->l_buf[lx++];
|
||||
+ if (s->sym_next != 0) do {
|
||||
+ dist = s->sym_buf[sx++] & 0xff;
|
||||
+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
|
||||
+ lc = s->sym_buf[sx++];
|
||||
if (dist == 0) {
|
||||
send_code(s, lc, ltree); /* send a literal byte */
|
||||
Tracecv(isgraph(lc), (stderr," '%c' ", lc));
|
||||
@@ -1100,11 +1079,10 @@ local void compress_block(s, ltree, dtree)
|
||||
}
|
||||
} /* literal or match pair ? */
|
||||
|
||||
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
|
||||
- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
|
||||
- "pendingBuf overflow");
|
||||
+ /* Check that the overlay between pending_buf and sym_buf is ok: */
|
||||
+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
|
||||
|
||||
- } while (lx < s->last_lit);
|
||||
+ } while (sx < s->sym_next);
|
||||
|
||||
send_code(s, END_BLOCK, ltree);
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=hostapd
|
||||
PKG_RELEASE:=7
|
||||
PKG_RELEASE:=8
|
||||
|
||||
PKG_SOURCE_URL:=http://w1.fi/hostap.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
|
||||
@@ -0,0 +1,309 @@
|
||||
From 208e5687ff2e48622e28d8888ce5444a54353bbd Mon Sep 17 00:00:00 2001
|
||||
From: Jouni Malinen <jouni@codeaurora.org>
|
||||
Date: Tue, 27 Aug 2019 16:33:15 +0300
|
||||
Subject: [PATCH 1/4] crypto: Add more bignum/EC helper functions
|
||||
|
||||
These are needed for implementing SAE hash-to-element.
|
||||
|
||||
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
|
||||
---
|
||||
src/crypto/crypto.h | 45 ++++++++++++++++++
|
||||
src/crypto/crypto_openssl.c | 94 +++++++++++++++++++++++++++++++++++++
|
||||
src/crypto/crypto_wolfssl.c | 66 ++++++++++++++++++++++++++
|
||||
3 files changed, 205 insertions(+)
|
||||
|
||||
--- a/src/crypto/crypto.h
|
||||
+++ b/src/crypto/crypto.h
|
||||
@@ -519,6 +519,13 @@ struct crypto_bignum * crypto_bignum_ini
|
||||
struct crypto_bignum * crypto_bignum_init_set(const u8 *buf, size_t len);
|
||||
|
||||
/**
|
||||
+ * crypto_bignum_init_set - Allocate memory for bignum and set the value (uint)
|
||||
+ * @val: Value to set
|
||||
+ * Returns: Pointer to allocated bignum or %NULL on failure
|
||||
+ */
|
||||
+struct crypto_bignum * crypto_bignum_init_uint(unsigned int val);
|
||||
+
|
||||
+/**
|
||||
* crypto_bignum_deinit - Free bignum
|
||||
* @n: Bignum from crypto_bignum_init() or crypto_bignum_init_set()
|
||||
* @clear: Whether to clear the value from memory
|
||||
@@ -613,6 +620,19 @@ int crypto_bignum_div(const struct crypt
|
||||
struct crypto_bignum *c);
|
||||
|
||||
/**
|
||||
+ * crypto_bignum_addmod - d = a + b (mod c)
|
||||
+ * @a: Bignum
|
||||
+ * @b: Bignum
|
||||
+ * @c: Bignum
|
||||
+ * @d: Bignum; used to store the result of (a + b) % c
|
||||
+ * Returns: 0 on success, -1 on failure
|
||||
+ */
|
||||
+int crypto_bignum_addmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ const struct crypto_bignum *c,
|
||||
+ struct crypto_bignum *d);
|
||||
+
|
||||
+/**
|
||||
* crypto_bignum_mulmod - d = a * b (mod c)
|
||||
* @a: Bignum
|
||||
* @b: Bignum
|
||||
@@ -626,6 +646,28 @@ int crypto_bignum_mulmod(const struct cr
|
||||
struct crypto_bignum *d);
|
||||
|
||||
/**
|
||||
+ * crypto_bignum_sqrmod - c = a^2 (mod b)
|
||||
+ * @a: Bignum
|
||||
+ * @b: Bignum
|
||||
+ * @c: Bignum; used to store the result of a^2 % b
|
||||
+ * Returns: 0 on success, -1 on failure
|
||||
+ */
|
||||
+int crypto_bignum_sqrmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ struct crypto_bignum *c);
|
||||
+
|
||||
+/**
|
||||
+ * crypto_bignum_sqrtmod - returns sqrt(a) (mod b)
|
||||
+ * @a: Bignum
|
||||
+ * @b: Bignum
|
||||
+ * @c: Bignum; used to store the result
|
||||
+ * Returns: 0 on success, -1 on failure
|
||||
+ */
|
||||
+int crypto_bignum_sqrtmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ struct crypto_bignum *c);
|
||||
+
|
||||
+/**
|
||||
* crypto_bignum_rshift - r = a >> n
|
||||
* @a: Bignum
|
||||
* @n: Number of bits
|
||||
@@ -731,6 +773,9 @@ const struct crypto_bignum * crypto_ec_g
|
||||
*/
|
||||
const struct crypto_bignum * crypto_ec_get_order(struct crypto_ec *e);
|
||||
|
||||
+const struct crypto_bignum * crypto_ec_get_a(struct crypto_ec *e);
|
||||
+const struct crypto_bignum * crypto_ec_get_b(struct crypto_ec *e);
|
||||
+
|
||||
/**
|
||||
* struct crypto_ec_point - Elliptic curve point
|
||||
*
|
||||
--- a/src/crypto/crypto_openssl.c
|
||||
+++ b/src/crypto/crypto_openssl.c
|
||||
@@ -1283,6 +1283,24 @@ struct crypto_bignum * crypto_bignum_ini
|
||||
}
|
||||
|
||||
|
||||
+struct crypto_bignum * crypto_bignum_init_uint(unsigned int val)
|
||||
+{
|
||||
+ BIGNUM *bn;
|
||||
+
|
||||
+ if (TEST_FAIL())
|
||||
+ return NULL;
|
||||
+
|
||||
+ bn = BN_new();
|
||||
+ if (!bn)
|
||||
+ return NULL;
|
||||
+ if (BN_set_word(bn, val) != 1) {
|
||||
+ BN_free(bn);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ return (struct crypto_bignum *) bn;
|
||||
+}
|
||||
+
|
||||
+
|
||||
void crypto_bignum_deinit(struct crypto_bignum *n, int clear)
|
||||
{
|
||||
if (clear)
|
||||
@@ -1449,6 +1467,28 @@ int crypto_bignum_div(const struct crypt
|
||||
}
|
||||
|
||||
|
||||
+int crypto_bignum_addmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ const struct crypto_bignum *c,
|
||||
+ struct crypto_bignum *d)
|
||||
+{
|
||||
+ int res;
|
||||
+ BN_CTX *bnctx;
|
||||
+
|
||||
+ if (TEST_FAIL())
|
||||
+ return -1;
|
||||
+
|
||||
+ bnctx = BN_CTX_new();
|
||||
+ if (!bnctx)
|
||||
+ return -1;
|
||||
+ res = BN_mod_add((BIGNUM *) d, (const BIGNUM *) a, (const BIGNUM *) b,
|
||||
+ (const BIGNUM *) c, bnctx);
|
||||
+ BN_CTX_free(bnctx);
|
||||
+
|
||||
+ return res ? 0 : -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
int crypto_bignum_mulmod(const struct crypto_bignum *a,
|
||||
const struct crypto_bignum *b,
|
||||
const struct crypto_bignum *c,
|
||||
@@ -1472,6 +1512,48 @@ int crypto_bignum_mulmod(const struct cr
|
||||
}
|
||||
|
||||
|
||||
+int crypto_bignum_sqrmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ struct crypto_bignum *c)
|
||||
+{
|
||||
+ int res;
|
||||
+ BN_CTX *bnctx;
|
||||
+
|
||||
+ if (TEST_FAIL())
|
||||
+ return -1;
|
||||
+
|
||||
+ bnctx = BN_CTX_new();
|
||||
+ if (!bnctx)
|
||||
+ return -1;
|
||||
+ res = BN_mod_sqr((BIGNUM *) c, (const BIGNUM *) a, (const BIGNUM *) b,
|
||||
+ bnctx);
|
||||
+ BN_CTX_free(bnctx);
|
||||
+
|
||||
+ return res ? 0 : -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+int crypto_bignum_sqrtmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ struct crypto_bignum *c)
|
||||
+{
|
||||
+ BN_CTX *bnctx;
|
||||
+ BIGNUM *res;
|
||||
+
|
||||
+ if (TEST_FAIL())
|
||||
+ return -1;
|
||||
+
|
||||
+ bnctx = BN_CTX_new();
|
||||
+ if (!bnctx)
|
||||
+ return -1;
|
||||
+ res = BN_mod_sqrt((BIGNUM *) c, (const BIGNUM *) a, (const BIGNUM *) b,
|
||||
+ bnctx);
|
||||
+ BN_CTX_free(bnctx);
|
||||
+
|
||||
+ return res ? 0 : -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
int crypto_bignum_rshift(const struct crypto_bignum *a, int n,
|
||||
struct crypto_bignum *r)
|
||||
{
|
||||
@@ -1682,6 +1764,18 @@ const struct crypto_bignum * crypto_ec_g
|
||||
}
|
||||
|
||||
|
||||
+const struct crypto_bignum * crypto_ec_get_a(struct crypto_ec *e)
|
||||
+{
|
||||
+ return (const struct crypto_bignum *) e->a;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+const struct crypto_bignum * crypto_ec_get_b(struct crypto_ec *e)
|
||||
+{
|
||||
+ return (const struct crypto_bignum *) e->b;
|
||||
+}
|
||||
+
|
||||
+
|
||||
void crypto_ec_point_deinit(struct crypto_ec_point *p, int clear)
|
||||
{
|
||||
if (clear)
|
||||
--- a/src/crypto/crypto_wolfssl.c
|
||||
+++ b/src/crypto/crypto_wolfssl.c
|
||||
@@ -1042,6 +1042,26 @@ struct crypto_bignum * crypto_bignum_ini
|
||||
}
|
||||
|
||||
|
||||
+struct crypto_bignum * crypto_bignum_init_uint(unsigned int val)
|
||||
+{
|
||||
+ mp_int *a;
|
||||
+
|
||||
+ if (TEST_FAIL())
|
||||
+ return NULL;
|
||||
+
|
||||
+ a = (mp_int *) crypto_bignum_init();
|
||||
+ if (!a)
|
||||
+ return NULL;
|
||||
+
|
||||
+ if (mp_set_int(a, val) != MP_OKAY) {
|
||||
+ os_free(a);
|
||||
+ a = NULL;
|
||||
+ }
|
||||
+
|
||||
+ return (struct crypto_bignum *) a;
|
||||
+}
|
||||
+
|
||||
+
|
||||
void crypto_bignum_deinit(struct crypto_bignum *n, int clear)
|
||||
{
|
||||
if (!n)
|
||||
@@ -1168,6 +1188,19 @@ int crypto_bignum_div(const struct crypt
|
||||
}
|
||||
|
||||
|
||||
+int crypto_bignum_addmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ const struct crypto_bignum *c,
|
||||
+ struct crypto_bignum *d)
|
||||
+{
|
||||
+ if (TEST_FAIL())
|
||||
+ return -1;
|
||||
+
|
||||
+ return mp_addmod((mp_int *) a, (mp_int *) b, (mp_int *) c,
|
||||
+ (mp_int *) d) == MP_OKAY ? 0 : -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
int crypto_bignum_mulmod(const struct crypto_bignum *a,
|
||||
const struct crypto_bignum *b,
|
||||
const struct crypto_bignum *m,
|
||||
@@ -1181,6 +1214,27 @@ int crypto_bignum_mulmod(const struct cr
|
||||
}
|
||||
|
||||
|
||||
+int crypto_bignum_sqrmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ struct crypto_bignum *c)
|
||||
+{
|
||||
+ if (TEST_FAIL())
|
||||
+ return -1;
|
||||
+
|
||||
+ return mp_sqrmod((mp_int *) a, (mp_int *) b,
|
||||
+ (mp_int *) c) == MP_OKAY ? 0 : -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+int crypto_bignum_sqrtmod(const struct crypto_bignum *a,
|
||||
+ const struct crypto_bignum *b,
|
||||
+ struct crypto_bignum *c)
|
||||
+{
|
||||
+ /* TODO */
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
int crypto_bignum_rshift(const struct crypto_bignum *a, int n,
|
||||
struct crypto_bignum *r)
|
||||
{
|
||||
@@ -1386,6 +1440,18 @@ const struct crypto_bignum * crypto_ec_g
|
||||
}
|
||||
|
||||
|
||||
+const struct crypto_bignum * crypto_ec_get_a(struct crypto_ec *e)
|
||||
+{
|
||||
+ return (const struct crypto_bignum *) &e->a;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+const struct crypto_bignum * crypto_ec_get_b(struct crypto_ec *e)
|
||||
+{
|
||||
+ return (const struct crypto_bignum *) &e->b;
|
||||
+}
|
||||
+
|
||||
+
|
||||
void crypto_ec_point_deinit(struct crypto_ec_point *p, int clear)
|
||||
{
|
||||
ecc_point *point = (ecc_point *) p;
|
||||
@@ -0,0 +1,65 @@
|
||||
From 2232d3d5f188b65dbb6c823ac62175412739eb16 Mon Sep 17 00:00:00 2001
|
||||
From: Jouni Malinen <j@w1.fi>
|
||||
Date: Fri, 7 Jan 2022 13:47:16 +0200
|
||||
Subject: [PATCH 2/4] dragonfly: Add sqrt() helper function
|
||||
|
||||
This is a backport of "SAE: Move sqrt() implementation into a helper
|
||||
function" to introduce the helper function needed for the following
|
||||
patches.
|
||||
|
||||
Signed-off-by: Jouni Malinen <j@w1.fi>
|
||||
---
|
||||
src/common/dragonfly.c | 34 ++++++++++++++++++++++++++++++++++
|
||||
src/common/dragonfly.h | 2 ++
|
||||
2 files changed, 36 insertions(+)
|
||||
|
||||
--- a/src/common/dragonfly.c
|
||||
+++ b/src/common/dragonfly.c
|
||||
@@ -213,3 +213,37 @@ int dragonfly_generate_scalar(const stru
|
||||
"dragonfly: Unable to get randomness for own scalar");
|
||||
return -1;
|
||||
}
|
||||
+
|
||||
+
|
||||
+/* res = sqrt(val) */
|
||||
+int dragonfly_sqrt(struct crypto_ec *ec, const struct crypto_bignum *val,
|
||||
+ struct crypto_bignum *res)
|
||||
+{
|
||||
+ const struct crypto_bignum *prime;
|
||||
+ struct crypto_bignum *tmp, *one;
|
||||
+ int ret = 0;
|
||||
+ u8 prime_bin[DRAGONFLY_MAX_ECC_PRIME_LEN];
|
||||
+ size_t prime_len;
|
||||
+
|
||||
+ /* For prime p such that p = 3 mod 4, sqrt(w) = w^((p+1)/4) mod p */
|
||||
+
|
||||
+ prime = crypto_ec_get_prime(ec);
|
||||
+ prime_len = crypto_ec_prime_len(ec);
|
||||
+ tmp = crypto_bignum_init();
|
||||
+ one = crypto_bignum_init_uint(1);
|
||||
+
|
||||
+ if (crypto_bignum_to_bin(prime, prime_bin, sizeof(prime_bin),
|
||||
+ prime_len) < 0 ||
|
||||
+ (prime_bin[prime_len - 1] & 0x03) != 3 ||
|
||||
+ !tmp || !one ||
|
||||
+ /* tmp = (p+1)/4 */
|
||||
+ crypto_bignum_add(prime, one, tmp) < 0 ||
|
||||
+ crypto_bignum_rshift(tmp, 2, tmp) < 0 ||
|
||||
+ /* res = sqrt(val) */
|
||||
+ crypto_bignum_exptmod(val, tmp, prime, res) < 0)
|
||||
+ ret = -1;
|
||||
+
|
||||
+ crypto_bignum_deinit(tmp, 0);
|
||||
+ crypto_bignum_deinit(one, 0);
|
||||
+ return ret;
|
||||
+}
|
||||
--- a/src/common/dragonfly.h
|
||||
+++ b/src/common/dragonfly.h
|
||||
@@ -27,5 +27,7 @@ int dragonfly_generate_scalar(const stru
|
||||
struct crypto_bignum *_rand,
|
||||
struct crypto_bignum *_mask,
|
||||
struct crypto_bignum *scalar);
|
||||
+int dragonfly_sqrt(struct crypto_ec *ec, const struct crypto_bignum *val,
|
||||
+ struct crypto_bignum *res);
|
||||
|
||||
#endif /* DRAGONFLY_H */
|
||||
@@ -0,0 +1,94 @@
|
||||
From fe534b0baaa8c0e6ddeb24cf529d6e50e33dc501 Mon Sep 17 00:00:00 2001
|
||||
From: Jouni Malinen <j@w1.fi>
|
||||
Date: Fri, 7 Jan 2022 13:47:16 +0200
|
||||
Subject: [PATCH 3/4] SAE: Derive the y coordinate for PWE with own
|
||||
implementation
|
||||
|
||||
The crypto_ec_point_solve_y_coord() wrapper function might not use
|
||||
constant time operations in the crypto library and as such, could leak
|
||||
side channel information about the password that is used to generate the
|
||||
PWE in the hunting and pecking loop. As such, calculate the two possible
|
||||
y coordinate values and pick the correct one to use with constant time
|
||||
selection.
|
||||
|
||||
Signed-off-by: Jouni Malinen <j@w1.fi>
|
||||
---
|
||||
src/common/sae.c | 47 +++++++++++++++++++++++++++++++++--------------
|
||||
1 file changed, 33 insertions(+), 14 deletions(-)
|
||||
|
||||
--- a/src/common/sae.c
|
||||
+++ b/src/common/sae.c
|
||||
@@ -286,14 +286,16 @@ static int sae_derive_pwe_ecc(struct sae
|
||||
int pwd_seed_odd = 0;
|
||||
u8 prime[SAE_MAX_ECC_PRIME_LEN];
|
||||
size_t prime_len;
|
||||
- struct crypto_bignum *x = NULL, *qr = NULL, *qnr = NULL;
|
||||
+ struct crypto_bignum *x = NULL, *y = NULL, *qr = NULL, *qnr = NULL;
|
||||
u8 x_bin[SAE_MAX_ECC_PRIME_LEN];
|
||||
u8 x_cand_bin[SAE_MAX_ECC_PRIME_LEN];
|
||||
u8 qr_bin[SAE_MAX_ECC_PRIME_LEN];
|
||||
u8 qnr_bin[SAE_MAX_ECC_PRIME_LEN];
|
||||
+ u8 x_y[2 * SAE_MAX_ECC_PRIME_LEN];
|
||||
int res = -1;
|
||||
u8 found = 0; /* 0 (false) or 0xff (true) to be used as const_time_*
|
||||
* mask */
|
||||
+ unsigned int is_eq;
|
||||
|
||||
os_memset(x_bin, 0, sizeof(x_bin));
|
||||
|
||||
@@ -402,25 +404,42 @@ static int sae_derive_pwe_ecc(struct sae
|
||||
goto fail;
|
||||
}
|
||||
|
||||
- if (!sae->tmp->pwe_ecc)
|
||||
- sae->tmp->pwe_ecc = crypto_ec_point_init(sae->tmp->ec);
|
||||
- if (!sae->tmp->pwe_ecc)
|
||||
- res = -1;
|
||||
- else
|
||||
- res = crypto_ec_point_solve_y_coord(sae->tmp->ec,
|
||||
- sae->tmp->pwe_ecc, x,
|
||||
- pwd_seed_odd);
|
||||
- if (res < 0) {
|
||||
- /*
|
||||
- * This should not happen since we already checked that there
|
||||
- * is a result.
|
||||
- */
|
||||
+ /* y = sqrt(x^3 + ax + b) mod p
|
||||
+ * if LSB(save) == LSB(y): PWE = (x, y)
|
||||
+ * else: PWE = (x, p - y)
|
||||
+ *
|
||||
+ * Calculate y and the two possible values for PWE and after that,
|
||||
+ * use constant time selection to copy the correct alternative.
|
||||
+ */
|
||||
+ y = crypto_ec_point_compute_y_sqr(sae->tmp->ec, x);
|
||||
+ if (!y ||
|
||||
+ dragonfly_sqrt(sae->tmp->ec, y, y) < 0 ||
|
||||
+ crypto_bignum_to_bin(y, x_y, SAE_MAX_ECC_PRIME_LEN,
|
||||
+ prime_len) < 0 ||
|
||||
+ crypto_bignum_sub(sae->tmp->prime, y, y) < 0 ||
|
||||
+ crypto_bignum_to_bin(y, x_y + SAE_MAX_ECC_PRIME_LEN,
|
||||
+ SAE_MAX_ECC_PRIME_LEN, prime_len) < 0) {
|
||||
wpa_printf(MSG_DEBUG, "SAE: Could not solve y");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ is_eq = const_time_eq(pwd_seed_odd, x_y[prime_len - 1] & 0x01);
|
||||
+ const_time_select_bin(is_eq, x_y, x_y + SAE_MAX_ECC_PRIME_LEN,
|
||||
+ prime_len, x_y + prime_len);
|
||||
+ os_memcpy(x_y, x_bin, prime_len);
|
||||
+ wpa_hexdump_key(MSG_DEBUG, "SAE: PWE", x_y, 2 * prime_len);
|
||||
+ crypto_ec_point_deinit(sae->tmp->pwe_ecc, 1);
|
||||
+ sae->tmp->pwe_ecc = crypto_ec_point_from_bin(sae->tmp->ec, x_y);
|
||||
+ if (!sae->tmp->pwe_ecc) {
|
||||
+ wpa_printf(MSG_DEBUG, "SAE: Could not generate PWE");
|
||||
+ res = -1;
|
||||
}
|
||||
|
||||
fail:
|
||||
+ forced_memzero(x_y, sizeof(x_y));
|
||||
crypto_bignum_deinit(qr, 0);
|
||||
crypto_bignum_deinit(qnr, 0);
|
||||
+ crypto_bignum_deinit(y, 1);
|
||||
os_free(dummy_password);
|
||||
bin_clear_free(tmp_password, password_len);
|
||||
crypto_bignum_deinit(x, 1);
|
||||
@@ -0,0 +1,108 @@
|
||||
From 603cd880e7f90595482658a7136fa6a7be5cb485 Mon Sep 17 00:00:00 2001
|
||||
From: Jouni Malinen <j@w1.fi>
|
||||
Date: Fri, 7 Jan 2022 18:52:27 +0200
|
||||
Subject: [PATCH 4/4] EAP-pwd: Derive the y coordinate for PWE with own
|
||||
implementation
|
||||
|
||||
The crypto_ec_point_solve_y_coord() wrapper function might not use
|
||||
constant time operations in the crypto library and as such, could leak
|
||||
side channel information about the password that is used to generate the
|
||||
PWE in the hunting and pecking loop. As such, calculate the two possible
|
||||
y coordinate values and pick the correct one to use with constant time
|
||||
selection.
|
||||
|
||||
Signed-off-by: Jouni Malinen <j@w1.fi>
|
||||
---
|
||||
src/eap_common/eap_pwd_common.c | 46 ++++++++++++++++++++++++++-------
|
||||
1 file changed, 36 insertions(+), 10 deletions(-)
|
||||
|
||||
--- a/src/eap_common/eap_pwd_common.c
|
||||
+++ b/src/eap_common/eap_pwd_common.c
|
||||
@@ -127,7 +127,8 @@ int compute_password_element(EAP_PWD_gro
|
||||
u8 qr_or_qnr_bin[MAX_ECC_PRIME_LEN];
|
||||
u8 x_bin[MAX_ECC_PRIME_LEN];
|
||||
u8 prime_bin[MAX_ECC_PRIME_LEN];
|
||||
- struct crypto_bignum *tmp2 = NULL;
|
||||
+ u8 x_y[2 * MAX_ECC_PRIME_LEN];
|
||||
+ struct crypto_bignum *tmp2 = NULL, *y = NULL;
|
||||
struct crypto_hash *hash;
|
||||
unsigned char pwe_digest[SHA256_MAC_LEN], *prfbuf = NULL, ctr;
|
||||
int ret = 0, res;
|
||||
@@ -139,6 +140,7 @@ int compute_password_element(EAP_PWD_gro
|
||||
u8 found_ctr = 0, is_odd = 0;
|
||||
int cmp_prime;
|
||||
unsigned int in_range;
|
||||
+ unsigned int is_eq;
|
||||
|
||||
if (grp->pwe)
|
||||
return -1;
|
||||
@@ -151,11 +153,6 @@ int compute_password_element(EAP_PWD_gro
|
||||
if (crypto_bignum_to_bin(prime, prime_bin, sizeof(prime_bin),
|
||||
primebytelen) < 0)
|
||||
return -1;
|
||||
- grp->pwe = crypto_ec_point_init(grp->group);
|
||||
- if (!grp->pwe) {
|
||||
- wpa_printf(MSG_INFO, "EAP-pwd: unable to create bignums");
|
||||
- goto fail;
|
||||
- }
|
||||
|
||||
if ((prfbuf = os_malloc(primebytelen)) == NULL) {
|
||||
wpa_printf(MSG_INFO, "EAP-pwd: unable to malloc space for prf "
|
||||
@@ -261,10 +258,37 @@ int compute_password_element(EAP_PWD_gro
|
||||
*/
|
||||
crypto_bignum_deinit(x_candidate, 1);
|
||||
x_candidate = crypto_bignum_init_set(x_bin, primebytelen);
|
||||
- if (!x_candidate ||
|
||||
- crypto_ec_point_solve_y_coord(grp->group, grp->pwe, x_candidate,
|
||||
- is_odd) != 0) {
|
||||
- wpa_printf(MSG_INFO, "EAP-pwd: Could not solve for y");
|
||||
+ if (!x_candidate)
|
||||
+ goto fail;
|
||||
+
|
||||
+ /* y = sqrt(x^3 + ax + b) mod p
|
||||
+ * if LSB(y) == LSB(pwd-seed): PWE = (x, y)
|
||||
+ * else: PWE = (x, p - y)
|
||||
+ *
|
||||
+ * Calculate y and the two possible values for PWE and after that,
|
||||
+ * use constant time selection to copy the correct alternative.
|
||||
+ */
|
||||
+ y = crypto_ec_point_compute_y_sqr(grp->group, x_candidate);
|
||||
+ if (!y ||
|
||||
+ dragonfly_sqrt(grp->group, y, y) < 0 ||
|
||||
+ crypto_bignum_to_bin(y, x_y, MAX_ECC_PRIME_LEN, primebytelen) < 0 ||
|
||||
+ crypto_bignum_sub(prime, y, y) < 0 ||
|
||||
+ crypto_bignum_to_bin(y, x_y + MAX_ECC_PRIME_LEN,
|
||||
+ MAX_ECC_PRIME_LEN, primebytelen) < 0) {
|
||||
+ wpa_printf(MSG_DEBUG, "SAE: Could not solve y");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
+ /* Constant time selection of the y coordinate from the two
|
||||
+ * options */
|
||||
+ is_eq = const_time_eq(is_odd, x_y[primebytelen - 1] & 0x01);
|
||||
+ const_time_select_bin(is_eq, x_y, x_y + MAX_ECC_PRIME_LEN,
|
||||
+ primebytelen, x_y + primebytelen);
|
||||
+ os_memcpy(x_y, x_bin, primebytelen);
|
||||
+ wpa_hexdump_key(MSG_DEBUG, "EAP-pwd: PWE", x_y, 2 * primebytelen);
|
||||
+ grp->pwe = crypto_ec_point_from_bin(grp->group, x_y);
|
||||
+ if (!grp->pwe) {
|
||||
+ wpa_printf(MSG_DEBUG, "EAP-pwd: Could not generate PWE");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -289,6 +313,7 @@ int compute_password_element(EAP_PWD_gro
|
||||
/* cleanliness and order.... */
|
||||
crypto_bignum_deinit(x_candidate, 1);
|
||||
crypto_bignum_deinit(tmp2, 1);
|
||||
+ crypto_bignum_deinit(y, 1);
|
||||
crypto_bignum_deinit(qr, 1);
|
||||
crypto_bignum_deinit(qnr, 1);
|
||||
bin_clear_free(prfbuf, primebytelen);
|
||||
@@ -296,6 +321,7 @@ int compute_password_element(EAP_PWD_gro
|
||||
os_memset(qnr_bin, 0, sizeof(qnr_bin));
|
||||
os_memset(qr_or_qnr_bin, 0, sizeof(qr_or_qnr_bin));
|
||||
os_memset(pwe_digest, 0, sizeof(pwe_digest));
|
||||
+ forced_memzero(x_y, sizeof(x_y));
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -17,6 +17,7 @@ PKG_SOURCE_VERSION:=48cff25dfea5b37e16ba5dc6601e98ab140f5f99
|
||||
PKG_MIRROR_HASH:=1327cdc3402e5e3056819e4e9b6f9d4a5bfd401f2c4f58447afb2c3c73fc8aac
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_CPE_ID:=cpe:/a:netfilter:ebtables
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/tc/Makefile
|
||||
+++ b/tc/Makefile
|
||||
@@ -107,7 +107,7 @@ LDLIBS += -L. -lm
|
||||
@@ -108,7 +108,7 @@ LDLIBS += -L. -lm
|
||||
|
||||
ifeq ($(SHARED_LIBS),y)
|
||||
LDLIBS += -ldl
|
||||
@@ -9,7 +9,7 @@
|
||||
endif
|
||||
|
||||
TCLIB := tc_core.o
|
||||
@@ -137,7 +137,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
||||
@@ -138,7 +138,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
||||
all: tc $(TCSO)
|
||||
|
||||
tc: $(TCOBJ) $(LIBNETLINK) libtc.a
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
libtc.a: $(TCLIB)
|
||||
$(QUIET_AR)$(AR) rcs $@ $^
|
||||
@@ -159,6 +159,7 @@ install: all
|
||||
@@ -160,6 +160,7 @@ install: all
|
||||
clean:
|
||||
rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \
|
||||
rm -f emp_ematch.yacc.*
|
||||
@@ -26,13 +26,14 @@
|
||||
|
||||
q_atm.so: q_atm.c
|
||||
$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
|
||||
@@ -198,4 +199,15 @@ static-syms.h: $(wildcard *.c)
|
||||
@@ -199,4 +200,16 @@ static-syms.h: $(wildcard *.c)
|
||||
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
|
||||
done > $@
|
||||
|
||||
+else
|
||||
+
|
||||
+tc: dynsyms.list
|
||||
+m_xt.so: dynsyms.list
|
||||
+dynsyms.list: $(wildcard *.c)
|
||||
+ files="$(filter-out $(patsubst %.so,%.c,$(TCSO)), $^)" ; \
|
||||
+ echo "{" > $@ ; \
|
||||
|
||||
@@ -18,6 +18,7 @@ PKG_HASH:=4644c7c5005e90a9b6385d625283eb0b69b34de7192301428665dd909fdaa35a
|
||||
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_CPE_ID:=cpe:/a:netfilter:ipset
|
||||
|
||||
PKG_FIXUP:=autoreconf
|
||||
PKG_INSTALL:=1
|
||||
|
||||
@@ -17,6 +17,7 @@ PKG_HASH:=1e38ea794a223525b2ea7fe78fd14f2a56121e62e21ba5f9dbe8c494b35b5c0d
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_CPE_ID:=cpe:/a:kernel:iw
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
||||
@@ -9,11 +9,10 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=tcpdump
|
||||
PKG_VERSION:=4.9.3
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://www.us.tcpdump.org/release/ \
|
||||
http://www.tcpdump.org/release/
|
||||
PKG_SOURCE_URL:=http://www.tcpdump.org/release/
|
||||
PKG_HASH:=2cd47cb3d460b6ff75f4a9940f594317ad456cfbf2bd2c8e5151e16559db6410
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
101
package/network/utils/tcpdump/patches/102-CVE-2018-16301.patch
Normal file
101
package/network/utils/tcpdump/patches/102-CVE-2018-16301.patch
Normal file
@@ -0,0 +1,101 @@
|
||||
From 8ab211a7ec728bb0ad8c766c8eeb12deb0a13b86 Mon Sep 17 00:00:00 2001
|
||||
From: Guy Harris <gharris@sonic.net>
|
||||
Date: Wed, 30 Sep 2020 11:37:30 -0700
|
||||
Subject: [PATCH] Handle very large -f files by rejecting them.
|
||||
|
||||
_read(), on Windows, has a 32-bit size argument and a 32-bit return
|
||||
value, so reject -f files that have more than 2^31-1 characters.
|
||||
|
||||
Add some #defines so that, on Windows, we use _fstati64 to get the size
|
||||
of that file, to handle large files.
|
||||
|
||||
Don't assume that our definition for ssize_t is the same size as size_t;
|
||||
by the time we want to print the return value of the read, we know it'll
|
||||
fit into an int, so just cast it to int and print it with %d.
|
||||
|
||||
(cherry picked from commit faf8fb70af3a013e5d662b8283dec742fd6b1a77)
|
||||
---
|
||||
netdissect-stdinc.h | 16 +++++++++++++++-
|
||||
tcpdump.c | 15 ++++++++++++---
|
||||
2 files changed, 27 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/netdissect-stdinc.h
|
||||
+++ b/netdissect-stdinc.h
|
||||
@@ -149,10 +149,17 @@
|
||||
#ifdef _MSC_VER
|
||||
#define stat _stat
|
||||
#define open _open
|
||||
-#define fstat _fstat
|
||||
#define read _read
|
||||
#define close _close
|
||||
#define O_RDONLY _O_RDONLY
|
||||
+
|
||||
+/*
|
||||
+ * We define our_fstat64 as _fstati64, and define our_statb as
|
||||
+ * struct _stati64, so we get 64-bit file sizes.
|
||||
+ */
|
||||
+#define our_fstat _fstati64
|
||||
+#define our_statb struct _stati64
|
||||
+
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
/*
|
||||
@@ -211,6 +218,13 @@ typedef char* caddr_t;
|
||||
|
||||
#include <arpa/inet.h>
|
||||
|
||||
+/*
|
||||
+ * We should have large file support enabled, if it's available,
|
||||
+ * so just use fstat as our_fstat and struct stat as our_statb.
|
||||
+ */
|
||||
+#define our_fstat fstat
|
||||
+#define our_statb struct stat
|
||||
+
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#ifndef HAVE___ATTRIBUTE__
|
||||
--- a/tcpdump.c
|
||||
+++ b/tcpdump.c
|
||||
@@ -108,6 +108,7 @@ The Regents of the University of Califor
|
||||
#endif /* HAVE_CAP_NG_H */
|
||||
#endif /* HAVE_LIBCAP_NG */
|
||||
|
||||
+#include "netdissect-stdinc.h"
|
||||
#include "netdissect.h"
|
||||
#include "interface.h"
|
||||
#include "addrtoname.h"
|
||||
@@ -861,15 +862,22 @@ read_infile(char *fname)
|
||||
{
|
||||
register int i, fd, cc;
|
||||
register char *cp;
|
||||
- struct stat buf;
|
||||
+ our_statb buf;
|
||||
|
||||
fd = open(fname, O_RDONLY|O_BINARY);
|
||||
if (fd < 0)
|
||||
error("can't open %s: %s", fname, pcap_strerror(errno));
|
||||
|
||||
- if (fstat(fd, &buf) < 0)
|
||||
+ if (our_fstat(fd, &buf) < 0)
|
||||
error("can't stat %s: %s", fname, pcap_strerror(errno));
|
||||
|
||||
+ /*
|
||||
+ * Reject files whose size doesn't fit into an int; a filter
|
||||
+ * *that* large will probably be too big.
|
||||
+ */
|
||||
+ if (buf.st_size > INT_MAX)
|
||||
+ error("%s is too large", fname);
|
||||
+
|
||||
cp = malloc((u_int)buf.st_size + 1);
|
||||
if (cp == NULL)
|
||||
error("malloc(%d) for %s: %s", (u_int)buf.st_size + 1,
|
||||
@@ -878,7 +886,8 @@ read_infile(char *fname)
|
||||
if (cc < 0)
|
||||
error("read %s: %s", fname, pcap_strerror(errno));
|
||||
if (cc != buf.st_size)
|
||||
- error("short read %s (%d != %d)", fname, cc, (int)buf.st_size);
|
||||
+ error("short read %s (%d != %d)", fname, (int) cc,
|
||||
+ (int)buf.st_size);
|
||||
|
||||
close(fd);
|
||||
/* replace "# comment" with spaces */
|
||||
@@ -14,6 +14,7 @@ PKG_RELEASE:=1
|
||||
PKG_SOURCE:=iucode-tool_$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://gitlab.com/iucode-tool/releases/raw/latest
|
||||
PKG_HASH:=12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95
|
||||
PKG_CPE_ID:=cpe:/a:iucode-tool_project:iucode-tool
|
||||
|
||||
PKG_BUILD_DEPENDS:=USE_UCLIBC:argp-standalone USE_MUSL:argp-standalone
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user