Compare commits
76 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5dc35c8bb | ||
|
|
591b7e93d3 | ||
|
|
d5ba3ca35c | ||
|
|
466198c9eb | ||
|
|
456fd63e8f | ||
|
|
94a605dbe6 | ||
|
|
47c917313d | ||
|
|
7e31d2ad40 | ||
|
|
6681c0285d | ||
|
|
38cea0bea1 | ||
|
|
bd91384589 | ||
|
|
b550f7b302 | ||
|
|
a086650550 | ||
|
|
f457cd6f31 | ||
|
|
bf3ea23f5a | ||
|
|
c0280da8ac | ||
|
|
3122bb60ad | ||
|
|
6ea1e214e7 | ||
|
|
eb9eaeb60d | ||
|
|
86e290e1b6 | ||
|
|
ea430dd6c8 | ||
|
|
e72b58a78c | ||
|
|
b9aeaf778c | ||
|
|
1f69203081 | ||
|
|
b4188634f8 | ||
|
|
c54d411ca6 | ||
|
|
7b8ccbd37c | ||
|
|
13b9be317e | ||
|
|
7c2c6555eb | ||
|
|
3f1b60ad40 | ||
|
|
0621d89c62 | ||
|
|
ebb3faf31f | ||
|
|
5f07510cdc | ||
|
|
eede9b1bc4 | ||
|
|
8d65f02087 | ||
|
|
4a6911fe79 | ||
|
|
f5e20dd430 | ||
|
|
abc1245ec5 | ||
|
|
fef1a52bd6 | ||
|
|
06ea586508 | ||
|
|
bc7585b93c | ||
|
|
ce37d2c690 | ||
|
|
3547565f24 | ||
|
|
61c6bc2eaa | ||
|
|
4895ab23a7 | ||
|
|
f60a5f2dd3 | ||
|
|
a352312f0d | ||
|
|
d7e5cab026 | ||
|
|
f2e8d5974c | ||
|
|
4432454037 | ||
|
|
721f02683e | ||
|
|
987275f565 | ||
|
|
caac7a6a81 | ||
|
|
948730e121 | ||
|
|
2c67fff961 | ||
|
|
228cf39d92 | ||
|
|
c1a3174c08 | ||
|
|
294301c087 | ||
|
|
7f64f5b11a | ||
|
|
78d9e4c56f | ||
|
|
c4df9473ef | ||
|
|
9b7311d4f9 | ||
|
|
41e961c6f0 | ||
|
|
8b32252bc4 | ||
|
|
a08553b3b3 | ||
|
|
debf4b56cd | ||
|
|
6121581765 | ||
|
|
17ee3e0b20 | ||
|
|
5ef01117b7 | ||
|
|
b80c17b093 | ||
|
|
0c84a15288 | ||
|
|
37ed4c0ec2 | ||
|
|
8b4b924b85 | ||
|
|
ca942a5910 | ||
|
|
05f74354bd | ||
|
|
1f7ca927b7 |
33
.github/workflows/tools.yml
vendored
33
.github/workflows/tools.yml
vendored
@@ -16,7 +16,7 @@ permissions:
|
||||
jobs:
|
||||
build-macos-latest:
|
||||
if: github.event_name != 'push'
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-14
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
@@ -35,43 +35,26 @@ jobs:
|
||||
working-directory: ${{ env.WORKPATH }}/openwrt
|
||||
run: |
|
||||
brew install \
|
||||
autoconf \
|
||||
automake \
|
||||
coreutils \
|
||||
diffutils \
|
||||
findutils \
|
||||
gawk \
|
||||
gettext \
|
||||
git-extras \
|
||||
gmp \
|
||||
gnu-getopt \
|
||||
gnu-sed \
|
||||
gnu-tar \
|
||||
grep \
|
||||
libidn2 \
|
||||
libunistring \
|
||||
m4 \
|
||||
make \
|
||||
mpfr \
|
||||
ncurses \
|
||||
openssl@1.1 \
|
||||
pcre \
|
||||
pkg-config \
|
||||
quilt \
|
||||
readline \
|
||||
wget \
|
||||
zstd
|
||||
gpatch \
|
||||
make
|
||||
|
||||
echo "/bin" >> "$GITHUB_PATH"
|
||||
echo "/sbin/Library/Apple/usr/bin" >> "$GITHUB_PATH"
|
||||
echo "/usr/bin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/bin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/opt/coreutils/bin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/opt/findutils/libexec/gnubin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/opt/gettext/bin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/opt/gnu-getopt/bin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
|
||||
echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
|
||||
echo "/opt/homebrew/bin" >> "$GITHUB_PATH"
|
||||
echo "/opt/homebrew/opt/coreutils/bin" >> "$GITHUB_PATH"
|
||||
echo "/opt/homebrew/opt/findutils/libexec/gnubin" >> "$GITHUB_PATH"
|
||||
echo "/opt/homebrew/opt/gnu-getopt/bin" >> "$GITHUB_PATH"
|
||||
echo "/opt/homebrew/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
|
||||
echo "/usr/sbin" >> "$GITHUB_PATH"
|
||||
|
||||
- name: Make prereq
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -14,6 +14,7 @@
|
||||
/feeds
|
||||
/feeds.conf
|
||||
/files
|
||||
/target/linux/feeds
|
||||
/overlay
|
||||
/package/feeds
|
||||
/package/openwrt-packages
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
src-git-full packages https://git.openwrt.org/feed/packages.git^e34369a41b522a49dec9fb1d81b4ee6b32b731d8
|
||||
src-git-full luci https://git.openwrt.org/project/luci.git^74dd23bdb1c2ba00c68e3abf4d00233bb4f939cd
|
||||
src-git-full routing https://git.openwrt.org/feed/routing.git^777c115b0a6336d6582c5992d25b631b6d6d21fd
|
||||
src-git-full telephony https://git.openwrt.org/feed/telephony.git^33f2ae757b96bf32b0202b211973a246ca2c919b
|
||||
src-git-full packages https://git.openwrt.org/feed/packages.git^3b79b05673a15e7f41f157d1320597244a344a95
|
||||
src-git-full luci https://git.openwrt.org/project/luci.git^374888b1476df064281022c4d605b7ecf9e684e4
|
||||
src-git-full routing https://git.openwrt.org/feed/routing.git^1ff9ee61cde0829f206f275b1b2f5fa990fd2ba9
|
||||
src-git-full telephony https://git.openwrt.org/feed/telephony.git^2a69b3a6f0a42c7fa965a72f9a1361cb94a1ce86
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .201
|
||||
LINUX_KERNEL_HASH-5.10.201 = 6afc06598fa8e3bc907cff75f995f372df51d40a284e260de78a3421b1f18218
|
||||
LINUX_VERSION-5.10 = .221
|
||||
LINUX_KERNEL_HASH-5.10.221 = da1dd47febac4f7856654038a47703666da3afba348b8e96e39584e0972e2725
|
||||
|
||||
@@ -23,13 +23,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),22.03.6)
|
||||
VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),22.03.7)
|
||||
|
||||
VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_CODE))
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r20265-f85a79bcb4)
|
||||
VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),r20341-591b7e93d3)
|
||||
|
||||
VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/22.03.6)
|
||||
VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),https://downloads.openwrt.org/releases/22.03.7)
|
||||
|
||||
VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
|
||||
VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
|
||||
|
||||
@@ -183,7 +183,7 @@ if VERSIONOPT
|
||||
config VERSION_REPO
|
||||
string
|
||||
prompt "Release repository"
|
||||
default "https://downloads.openwrt.org/releases/22.03.6"
|
||||
default "https://downloads.openwrt.org/releases/22.03.7"
|
||||
help
|
||||
This is the repository address embedded in the image, it defaults
|
||||
to the trunk snapshot repo; the url may contain the following placeholders:
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=intel-microcode
|
||||
PKG_VERSION:=20230808
|
||||
PKG_VERSION:=20240531
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
|
||||
PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
|
||||
PKG_HASH:=29e77c275b3f60a691832c0844f70effbd94a4594d04af21e0c2e6e0c1ac1894
|
||||
PKG_HASH:=808cbb57a790dab7060b59b31e70e54ac47d3798d75e9784ed57a65b9f951fc4
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
|
||||
PKG_CPE_ID:=cpe:/a:intel:microcode
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wireless-regdb
|
||||
PKG_VERSION:=2023.09.01
|
||||
PKG_VERSION:=2024.07.04
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
|
||||
PKG_HASH:=26d4c2a727cc59239b84735aad856b7c7d0b04e30aa5c235c4f7f47f5f053491
|
||||
PKG_HASH:=9832a14e1be24abff7be30dee3c9a1afb5fdfcf475a0d91aafef039f8d85f5eb
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
@@ -16,7 +16,7 @@ define Package/wireless-regdb
|
||||
PKGARCH:=all
|
||||
SECTION:=firmware
|
||||
CATEGORY:=Firmware
|
||||
URL:=https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git/
|
||||
URL:=https://git.kernel.org/pub/scm/linux/kernel/git/wens/wireless-regdb.git/
|
||||
TITLE:=Wireless Regulatory Database
|
||||
endef
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
ksys_close() was removed in 5.10.220, see:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.10.y&id=1aecdaa7e2c6619a7d2c0a81c8f5c06e52f870f3
|
||||
|
||||
--- a/ioctl.c
|
||||
+++ b/ioctl.c
|
||||
@@ -871,7 +871,7 @@ cryptodev_ioctl(struct file *filp, unsig
|
||||
if (unlikely(ret)) {
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0))
|
||||
sys_close(fd);
|
||||
-#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0))
|
||||
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 220))
|
||||
ksys_close(fd);
|
||||
#else
|
||||
close_fd(fd);
|
||||
@@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ksmbd
|
||||
PKG_VERSION:=3.4.7
|
||||
PKG_VERSION:=3.5.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://github.com/cifsd-team/ksmbd/releases/download/$(PKG_VERSION)
|
||||
PKG_HASH:=ed9ecb2232046054bf0c1fef41690890f99d93b1d72b7e7d158746ac9be18c7f
|
||||
PKG_HASH:=ceb11850bee8ff3575228e1b691d83d710cd9cb586bdaf8e5769d06b82eaaf05
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
31
package/kernel/ksmbd/patches/02-kernel-5.10.220-build.patch
Normal file
31
package/kernel/ksmbd/patches/02-kernel-5.10.220-build.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
vfs_rename() was changed in 5.10.220, see:
|
||||
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.10.y&id=e864d4d834f820c8be01c9d048cdab6051fe3932
|
||||
|
||||
--- a/vfs.c
|
||||
+++ b/vfs.c
|
||||
@@ -1582,7 +1582,9 @@ static int __ksmbd_vfs_rename(struct ksm
|
||||
|
||||
err = -ENOTEMPTY;
|
||||
if (dst_dent != trap_dent && !d_really_is_positive(dst_dent)) {
|
||||
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0) || \
|
||||
+ (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 220) && \
|
||||
+ LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0))
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
|
||||
struct renamedata rd = {
|
||||
.old_mnt_idmap = src_idmap,
|
||||
@@ -1594,10 +1596,14 @@ static int __ksmbd_vfs_rename(struct ksm
|
||||
};
|
||||
#else
|
||||
struct renamedata rd = {
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
|
||||
.old_mnt_userns = src_user_ns,
|
||||
+#endif
|
||||
.old_dir = d_inode(src_dent_parent),
|
||||
.old_dentry = src_dent,
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 12, 0)
|
||||
.new_mnt_userns = dst_user_ns,
|
||||
+#endif
|
||||
.new_dir = d_inode(dst_dent_parent),
|
||||
.new_dentry = dst_dent,
|
||||
};
|
||||
@@ -384,7 +384,13 @@ define KernelPackage/fs-nfs-common
|
||||
KCONFIG:= \
|
||||
CONFIG_LOCKD \
|
||||
CONFIG_SUNRPC \
|
||||
CONFIG_GRACE_PERIOD
|
||||
CONFIG_GRACE_PERIOD \
|
||||
CONFIG_NFS_V4=y \
|
||||
CONFIG_NFS_V4_1=y \
|
||||
CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" \
|
||||
CONFIG_NFS_V4_1_MIGRATION=n \
|
||||
CONFIG_NFS_V4_2=y \
|
||||
CONFIG_NFS_V4_2_READ_PLUS=n
|
||||
FILES:= \
|
||||
$(LINUX_DIR)/fs/lockd/lockd.ko \
|
||||
$(LINUX_DIR)/net/sunrpc/sunrpc.ko \
|
||||
@@ -470,7 +476,8 @@ define KernelPackage/fs-nfsd
|
||||
CONFIG_NFSD_BLOCKLAYOUT=n \
|
||||
CONFIG_NFSD_SCSILAYOUT=n \
|
||||
CONFIG_NFSD_FLEXFILELAYOUT=n \
|
||||
CONFIG_NFSD_FAULT_INJECTION=n
|
||||
CONFIG_NFSD_FAULT_INJECTION=n \
|
||||
CONFIG_NFSD_V4_2_INTER_SSC=n
|
||||
FILES:=$(LINUX_DIR)/fs/nfsd/nfsd.ko
|
||||
AUTOLOAD:=$(call AutoLoad,40,nfsd)
|
||||
endef
|
||||
|
||||
@@ -979,7 +979,7 @@ endef
|
||||
$(eval $(call KernelPackage,bpf-test))
|
||||
|
||||
|
||||
SCHED_MODULES_EXTRA = sch_codel sch_dsmark sch_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple act_csum em_cmp em_nbyte em_meta em_text
|
||||
SCHED_MODULES_EXTRA = sch_codel sch_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple act_csum em_cmp em_nbyte em_meta em_text
|
||||
SCHED_FILES_EXTRA = $(foreach mod,$(SCHED_MODULES_EXTRA),$(LINUX_DIR)/net/sched/$(mod).ko)
|
||||
|
||||
define KernelPackage/sched
|
||||
@@ -988,7 +988,6 @@ define KernelPackage/sched
|
||||
DEPENDS:=+kmod-sched-core +kmod-lib-crc32c +kmod-lib-textsearch
|
||||
KCONFIG:= \
|
||||
CONFIG_NET_SCH_CODEL \
|
||||
CONFIG_NET_SCH_DSMARK \
|
||||
CONFIG_NET_SCH_GRED \
|
||||
CONFIG_NET_SCH_MULTIQ \
|
||||
CONFIG_NET_SCH_SFQ \
|
||||
|
||||
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=5.15.92-1
|
||||
PKG_VERSION:=5.15.162-1
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.92/
|
||||
PKG_HASH:=d518e3614a0a8b635e7b7febf2a3ee1645a95d953fd353920ceee22f159f26f1
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.162
|
||||
PKG_HASH:=00444ab103f5e4ce34d3ba7895289d2b78b84f14a35f9021b60cb1a0270dfec5
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
@@ -252,7 +252,7 @@ endef
|
||||
define KernelPackage/mac80211-hwsim
|
||||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=mac80211 HW simulation device
|
||||
DEPENDS+= +kmod-mac80211 +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT
|
||||
DEPENDS+= +kmod-mac80211 +@DRIVER_11AX_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11N_SUPPORT
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mac80211_hwsim)
|
||||
endef
|
||||
|
||||
@@ -266,6 +266,7 @@ mac80211_hostapd_setup_base() {
|
||||
case "$channel" in
|
||||
36|40|44|48|52|56|60|64) idx=50;;
|
||||
100|104|108|112|116|120|124|128) idx=114;;
|
||||
149|153|157|161|165|169|173|177) idx=163;;
|
||||
esac
|
||||
fi
|
||||
enable_ac=1
|
||||
@@ -413,9 +414,9 @@ mac80211_hostapd_setup_base() {
|
||||
he_spr_non_srg_obss_pd_max_offset:1 \
|
||||
he_bss_color
|
||||
|
||||
he_phy_cap=$(iw phy "$phy" info | sed -n '/HE Iftypes: AP/,$p' | awk -F "[()]" '/HE PHY Capabilities/ { print $2 }' | head -1)
|
||||
he_phy_cap=$(iw phy "$phy" info | sed -n '/HE Iftypes: .*AP/,$p' | awk -F "[()]" '/HE PHY Capabilities/ { print $2 }' | head -1)
|
||||
he_phy_cap=${he_phy_cap:2}
|
||||
he_mac_cap=$(iw phy "$phy" info | sed -n '/HE Iftypes: AP/,$p' | awk -F "[()]" '/HE MAC Capabilities/ { print $2 }' | head -1)
|
||||
he_mac_cap=$(iw phy "$phy" info | sed -n '/HE Iftypes: .*AP/,$p' | awk -F "[()]" '/HE MAC Capabilities/ { print $2 }' | head -1)
|
||||
he_mac_cap=${he_mac_cap:2}
|
||||
|
||||
append base_cfg "ieee80211ax=1" "$N"
|
||||
|
||||
@@ -15,7 +15,7 @@ config-$(call config_package,ipw2200) += IPW2200
|
||||
|
||||
define KernelPackage/iwlwifi
|
||||
$(call KernelPackage/mac80211/Default)
|
||||
DEPENDS:= +kmod-mac80211 @PCI_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT
|
||||
DEPENDS:= +kmod-mac80211 @PCI_SUPPORT +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11AX_SUPPORT
|
||||
TITLE:=Intel AGN Wireless support
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko \
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
CFLAGS_trace.o := -I$(src)
|
||||
--- a/drivers/net/wireless/ath/ath.h
|
||||
+++ b/drivers/net/wireless/ath/ath.h
|
||||
@@ -317,14 +317,7 @@ void _ath_dbg(struct ath_common *common,
|
||||
@@ -321,14 +321,7 @@ void _ath_dbg(struct ath_common *common,
|
||||
#endif /* CPTCFG_ATH_DEBUG */
|
||||
|
||||
/** Returns string describing opmode, or NULL if unknown mode. */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -3315,6 +3315,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -3313,6 +3313,8 @@ void regulatory_hint_country_ie(struct w
|
||||
enum environment_cap env = ENVIRON_ANY;
|
||||
struct regulatory_request *request = NULL, *lr;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* IE len must be evenly divisible by 2 */
|
||||
if (country_ie_len & 0x01)
|
||||
return;
|
||||
@@ -3566,6 +3568,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
@@ -3564,6 +3566,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
@@ -86,6 +86,12 @@ config ATH10K_TRACING
|
||||
@@ -87,6 +87,12 @@ config ATH10K_TRACING
|
||||
help
|
||||
Select this to ath10k use tracing infrastructure.
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20211009221711.2315352-1-robimarko@gmail.com
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -1199,6 +1199,7 @@ success:
|
||||
@@ -1202,6 +1202,7 @@ success:
|
||||
static int ath10k_core_fetch_board_data_api_1(struct ath10k *ar, int bd_ie_type)
|
||||
{
|
||||
const struct firmware *fw;
|
||||
@@ -42,7 +42,7 @@ Link: https://lore.kernel.org/r/20211009221711.2315352-1-robimarko@gmail.com
|
||||
|
||||
if (bd_ie_type == ATH10K_BD_IE_BOARD) {
|
||||
if (!ar->hw_params.fw.board) {
|
||||
@@ -1206,9 +1207,19 @@ static int ath10k_core_fetch_board_data_
|
||||
@@ -1209,9 +1210,19 @@ static int ath10k_core_fetch_board_data_
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#include "core.h"
|
||||
@@ -952,7 +953,8 @@ static int ath10k_core_get_board_id_from
|
||||
@@ -955,7 +956,8 @@ static int ath10k_core_get_board_id_from
|
||||
}
|
||||
|
||||
if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID;
|
||||
else
|
||||
bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
|
||||
@@ -1754,7 +1756,8 @@ static int ath10k_download_and_run_otp(s
|
||||
@@ -1757,7 +1759,8 @@ static int ath10k_download_and_run_otp(s
|
||||
|
||||
/* As of now pre-cal is valid for 10_4 variants */
|
||||
if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
|
||||
@@ -54,7 +54,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL;
|
||||
|
||||
ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
|
||||
@@ -1881,6 +1884,39 @@ out_free:
|
||||
@@ -1884,6 +1887,39 @@ out_free:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,
|
||||
struct ath10k_fw_file *fw_file)
|
||||
{
|
||||
@@ -2115,6 +2151,18 @@ static int ath10k_core_pre_cal_download(
|
||||
@@ -2118,6 +2154,18 @@ static int ath10k_core_pre_cal_download(
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -113,7 +113,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
||||
ret = ath10k_download_cal_file(ar, ar->pre_cal_file);
|
||||
if (ret == 0) {
|
||||
ar->cal_mode = ATH10K_PRE_CAL_MODE_FILE;
|
||||
@@ -2181,6 +2229,18 @@ static int ath10k_download_cal_data(stru
|
||||
@@ -2184,6 +2232,18 @@ static int ath10k_download_cal_data(stru
|
||||
"pre cal download procedure failed, try cal file: %d\n",
|
||||
ret);
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -3440,6 +3440,16 @@ int ath10k_core_register(struct ath10k *
|
||||
@@ -3443,6 +3443,16 @@ int ath10k_core_register(struct ath10k *
|
||||
|
||||
queue_work(ar->workqueue, &ar->register_work);
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ v13:
|
||||
create mode 100644 drivers/net/wireless/ath/ath10k/leds.h
|
||||
--- a/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
@@ -71,6 +71,16 @@ config ATH10K_DEBUGFS
|
||||
@@ -72,6 +72,16 @@ config ATH10K_DEBUGFS
|
||||
|
||||
If unsure, say Y to make it easier to debug problems.
|
||||
|
||||
@@ -172,7 +172,7 @@ v13:
|
||||
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||
@@ -3155,6 +3161,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
@@ -3158,6 +3164,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
goto err_hif_stop;
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ v13:
|
||||
return 0;
|
||||
|
||||
err_hif_stop:
|
||||
@@ -3413,9 +3423,18 @@ static void ath10k_core_register_work(st
|
||||
@@ -3416,9 +3426,18 @@ static void ath10k_core_register_work(st
|
||||
goto err_spectral_destroy;
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ v13:
|
||||
err_spectral_destroy:
|
||||
ath10k_spectral_destroy(ar);
|
||||
err_debug_destroy:
|
||||
@@ -3461,6 +3480,8 @@ void ath10k_core_unregister(struct ath10
|
||||
@@ -3464,6 +3483,8 @@ void ath10k_core_unregister(struct ath10
|
||||
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
|
||||
return;
|
||||
|
||||
@@ -237,7 +237,7 @@ v13:
|
||||
u32 fw_crash_counter;
|
||||
--- a/drivers/net/wireless/ath/ath10k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/hw.h
|
||||
@@ -517,6 +517,7 @@ struct ath10k_hw_params {
|
||||
@@ -518,6 +518,7 @@ struct ath10k_hw_params {
|
||||
const char *name;
|
||||
u32 patch_load_addr;
|
||||
int uart_pin;
|
||||
@@ -456,7 +456,7 @@ v13:
|
||||
{
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
@@ -4594,6 +4594,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
@@ -4598,6 +4598,8 @@ static const struct wmi_ops wmi_tlv_ops
|
||||
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
|
||||
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
|
||||
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
|
||||
@@ -467,7 +467,7 @@ v13:
|
||||
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -7472,6 +7472,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
@@ -7492,6 +7492,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
return skb;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ v13:
|
||||
static struct sk_buff *
|
||||
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
|
||||
enum wmi_sta_ps_mode psmode)
|
||||
@@ -9160,6 +9203,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
@@ -9180,6 +9223,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -527,7 +527,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9230,6 +9276,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
@@ -9250,6 +9296,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@@ -536,7 +536,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9302,6 +9350,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
@@ -9322,6 +9370,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
@@ -545,7 +545,7 @@ v13:
|
||||
/* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
@@ -9373,6 +9423,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
@@ -9393,6 +9443,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
|
||||
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
|
||||
.gen_bb_timing = ath10k_wmi_10_2_4_op_gen_bb_timing,
|
||||
@@ -554,7 +554,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9454,6 +9506,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
@@ -9474,6 +9526,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
||||
#include <linux/property.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/ctype.h>
|
||||
@@ -3331,6 +3332,8 @@ static int ath10k_core_probe_fw(struct a
|
||||
@@ -3334,6 +3335,8 @@ static int ath10k_core_probe_fw(struct a
|
||||
|
||||
device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy,
|
||||
--- a/drivers/net/wireless/ath/ath.h
|
||||
+++ b/drivers/net/wireless/ath/ath.h
|
||||
@@ -149,6 +149,7 @@ struct ath_common {
|
||||
@@ -151,6 +151,7 @@ struct ath_common {
|
||||
int debug_mask;
|
||||
enum ath_device_state state;
|
||||
unsigned long op_flags;
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
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
|
||||
@@ -538,6 +538,11 @@ irqreturn_t ath_isr(int irq, void *dev)
|
||||
@@ -537,6 +537,11 @@ irqreturn_t ath_isr(int irq, void *dev)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
@@ -339,7 +339,7 @@
|
||||
|
||||
static void ath9k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
u32 queues, bool drop);
|
||||
@@ -659,6 +660,7 @@ void ath_reset_work(struct work_struct *
|
||||
@@ -658,6 +659,7 @@ void ath_reset_work(struct work_struct *
|
||||
static int ath9k_start(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
@@ -347,7 +347,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;
|
||||
@@ -737,6 +739,11 @@ static int ath9k_start(struct ieee80211_
|
||||
@@ -736,6 +738,11 @@ static int ath9k_start(struct ieee80211_
|
||||
AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
static int modparam_bad_frames_preempt;
|
||||
module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
|
||||
MODULE_PARM_DESC(bad_frames_preempt,
|
||||
@@ -2869,10 +2874,10 @@ static int b43_gpio_init(struct b43_wlde
|
||||
@@ -2870,10 +2875,10 @@ static int b43_gpio_init(struct b43_wlde
|
||||
u32 mask, set;
|
||||
|
||||
b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
antenna = b43_antenna_to_phyctl(antenna);
|
||||
ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
|
||||
/* We can't send beacons with short preamble. Would get PHY errors. */
|
||||
@@ -3284,8 +3284,8 @@ static int b43_chip_init(struct b43_wlde
|
||||
@@ -3285,8 +3285,8 @@ static int b43_chip_init(struct b43_wlde
|
||||
|
||||
/* Select the antennae */
|
||||
if (phy->ops->set_rx_antenna)
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
if (phy->type == B43_PHYTYPE_B) {
|
||||
value16 = b43_read16(dev, 0x005E);
|
||||
@@ -3985,7 +3985,6 @@ static int b43_op_config(struct ieee8021
|
||||
@@ -3987,7 +3987,6 @@ static int b43_op_config(struct ieee8021
|
||||
struct b43_wldev *dev = wl->current_dev;
|
||||
struct b43_phy *phy = &dev->phy;
|
||||
struct ieee80211_conf *conf = &hw->conf;
|
||||
@@ -28,7 +28,7 @@
|
||||
int err = 0;
|
||||
|
||||
mutex_lock(&wl->mutex);
|
||||
@@ -4028,11 +4027,9 @@ static int b43_op_config(struct ieee8021
|
||||
@@ -4030,11 +4029,9 @@ static int b43_op_config(struct ieee8021
|
||||
}
|
||||
|
||||
/* Antennas for RX and management frame TX. */
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
if (wl->radio_enabled != phy->radio_on) {
|
||||
if (wl->radio_enabled) {
|
||||
@@ -5175,6 +5172,47 @@ static int b43_op_get_survey(struct ieee
|
||||
@@ -5177,6 +5174,47 @@ static int b43_op_get_survey(struct ieee
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
static const struct ieee80211_ops b43_hw_ops = {
|
||||
.tx = b43_op_tx,
|
||||
.conf_tx = b43_op_conf_tx,
|
||||
@@ -5196,6 +5234,8 @@ static const struct ieee80211_ops b43_hw
|
||||
@@ -5198,6 +5236,8 @@ static const struct ieee80211_ops b43_hw
|
||||
.sw_scan_complete = b43_op_sw_scan_complete_notifier,
|
||||
.get_survey = b43_op_get_survey,
|
||||
.rfkill_poll = b43_rfkill_poll,
|
||||
@@ -99,7 +99,7 @@
|
||||
};
|
||||
|
||||
/* Hard-reset the chip. Do not call this directly.
|
||||
@@ -5497,6 +5537,8 @@ static int b43_one_core_attach(struct b4
|
||||
@@ -5499,6 +5539,8 @@ static int b43_one_core_attach(struct b4
|
||||
if (!wldev)
|
||||
goto out;
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
wldev->use_pio = b43_modparam_pio;
|
||||
wldev->dev = dev;
|
||||
wldev->wl = wl;
|
||||
@@ -5588,6 +5630,9 @@ static struct b43_wl *b43_wireless_init(
|
||||
@@ -5590,6 +5632,9 @@ static struct b43_wl *b43_wireless_init(
|
||||
|
||||
wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -2886,6 +2886,14 @@ static int b43_gpio_init(struct b43_wlde
|
||||
@@ -2887,6 +2887,14 @@ static int b43_gpio_init(struct b43_wlde
|
||||
} else if (dev->dev->chip_id == 0x5354) {
|
||||
/* Don't allow overtaking buttons GPIOs */
|
||||
set &= 0x2; /* 0x2 is LED GPIO on BCM5354 */
|
||||
|
||||
@@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -715,8 +715,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
@@ -718,8 +718,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct wireless_dev *wdev;
|
||||
|
||||
@@ -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
|
||||
@@ -2974,6 +2974,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2977,6 +2977,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
* preference in cfg struct to apply this to
|
||||
* FW later while initializing the dongle
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -2921,6 +2921,63 @@ done:
|
||||
@@ -2924,6 +2924,63 @@ done:
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -64,7 +64,7 @@
|
||||
brcmf_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *ndev,
|
||||
int idx, u8 *mac, struct station_info *sinfo)
|
||||
{
|
||||
@@ -3021,6 +3078,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -3024,6 +3081,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
struct brcmu_chan ch;
|
||||
u16 channel;
|
||||
u32 freq;
|
||||
@@ -72,7 +72,7 @@
|
||||
u16 notify_capability;
|
||||
u16 notify_interval;
|
||||
u8 *notify_ie;
|
||||
@@ -3045,6 +3103,17 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -3048,6 +3106,17 @@ static s32 brcmf_inform_single_bss(struc
|
||||
band = NL80211_BAND_5GHZ;
|
||||
|
||||
freq = ieee80211_channel_to_frequency(channel, band);
|
||||
@@ -90,7 +90,7 @@
|
||||
bss_data.chan = ieee80211_get_channel(wiphy, freq);
|
||||
bss_data.scan_width = NL80211_BSS_CHAN_WIDTH_20;
|
||||
bss_data.boottime_ns = ktime_to_ns(ktime_get_boottime());
|
||||
@@ -5573,6 +5642,7 @@ static struct cfg80211_ops brcmf_cfg8021
|
||||
@@ -5576,6 +5645,7 @@ static struct cfg80211_ops brcmf_cfg8021
|
||||
.leave_ibss = brcmf_cfg80211_leave_ibss,
|
||||
.get_station = brcmf_cfg80211_get_station,
|
||||
.dump_station = brcmf_cfg80211_dump_station,
|
||||
@@ -100,7 +100,7 @@
|
||||
.add_key = brcmf_cfg80211_add_key,
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1362,6 +1362,8 @@ int brcmf_attach(struct device *dev)
|
||||
@@ -1363,6 +1363,8 @@ int brcmf_attach(struct device *dev)
|
||||
|
||||
/* Link to bus module */
|
||||
drvr->hdrlen = 0;
|
||||
@@ -109,7 +109,7 @@
|
||||
|
||||
/* Attach and link in the protocol */
|
||||
ret = brcmf_proto_attach(drvr);
|
||||
@@ -1444,6 +1446,12 @@ void brcmf_detach(struct device *dev)
|
||||
@@ -1445,6 +1447,12 @@ void brcmf_detach(struct device *dev)
|
||||
if (drvr == NULL)
|
||||
return;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
@set -e ; test -f local-symbols || ( \
|
||||
echo "/--------------" ;\
|
||||
echo "| You shouldn't run make in the backports tree, but only in" ;\
|
||||
@@ -60,58 +62,62 @@ mrproper:
|
||||
@@ -60,57 +62,61 @@ mrproper:
|
||||
echo "| (that isn't currently running.)" ;\
|
||||
echo "\\--" ;\
|
||||
false)
|
||||
@@ -56,13 +56,12 @@
|
||||
- done \
|
||||
- ) > Kconfig.kernel ;\
|
||||
- kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) M=$(BACKPORT_DIR) \
|
||||
- kernelversion | sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d');\
|
||||
- kernelversion | sed 's/^\(\([3-6]\|2\.6\)\.[0-9]\+\).*/\1/;t;d');\
|
||||
- test "$$kver" != "" || echo "Kernel version parse failed!" ;\
|
||||
- test "$$kver" != "" ;\
|
||||
- kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
||||
- kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
|
||||
- kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')" ;\
|
||||
- kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')" ;\
|
||||
- kvers="$$kvers $$(seq 0 19 | sed 's/^/5./')" ;\
|
||||
- kvers="$$kvers $$(seq 0 20 | sed 's/^/6./')" ;\
|
||||
- print=0 ;\
|
||||
- for v in $$kvers ; do \
|
||||
- if [ "$$print" = "1" ] ; then \
|
||||
@@ -113,13 +112,12 @@
|
||||
+
|
||||
+Kconfig.versions: Kconfig.kernel
|
||||
+ @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) M=$(BACKPORT_DIR) \
|
||||
+ kernelversion | sed 's/^\(\([3-5]\|2\.6\)\.[0-9]\+\).*/\1/;t;d');\
|
||||
+ kernelversion | sed 's/^\(\([3-6]\|2\.6\)\.[0-9]\+\).*/\1/;t;d');\
|
||||
+ test "$$kver" != "" || echo "Kernel version parse failed!" ;\
|
||||
+ test "$$kver" != "" ;\
|
||||
+ kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
|
||||
+ kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\
|
||||
+ kvers="$$kvers $$(seq 0 20 | sed 's/^/4./')" ;\
|
||||
+ kvers="$$kvers $$(seq 0 99 | sed 's/^/5./')" ;\
|
||||
+ kvers="$$kvers $$(seq 0 19 | sed 's/^/5./')" ;\
|
||||
+ kvers="$$kvers $$(seq 0 20 | sed 's/^/6./')" ;\
|
||||
+ print=0 ;\
|
||||
+ for v in $$kvers ; do \
|
||||
+ if [ "$$print" = "1" ] ; then \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
|
||||
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
|
||||
@@ -11470,6 +11470,15 @@ static const struct attribute_group ipw_
|
||||
@@ -11475,6 +11475,15 @@ static const struct attribute_group ipw_
|
||||
.attrs = ipw_sysfs_entries,
|
||||
};
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
#ifdef CPTCFG_IPW2200_PROMISCUOUS
|
||||
static int ipw_prom_open(struct net_device *dev)
|
||||
{
|
||||
@@ -11518,15 +11527,6 @@ static netdev_tx_t ipw_prom_hard_start_x
|
||||
@@ -11523,15 +11532,6 @@ static netdev_tx_t ipw_prom_hard_start_x
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
config B43_PHY_G
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -2853,7 +2853,7 @@ static struct ssb_device *b43_ssb_gpio_d
|
||||
@@ -2854,7 +2854,7 @@ static struct ssb_device *b43_ssb_gpio_d
|
||||
{
|
||||
struct ssb_bus *bus = dev->dev->sdev->bus;
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev);
|
||||
#else
|
||||
return bus->chipco.dev;
|
||||
@@ -4870,7 +4870,7 @@ static int b43_wireless_core_init(struct
|
||||
@@ -4872,7 +4872,7 @@ static int b43_wireless_core_init(struct
|
||||
}
|
||||
if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW)
|
||||
hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
err_wiphy_new:
|
||||
--- a/drivers/net/wireless/marvell/libertas/main.c
|
||||
+++ b/drivers/net/wireless/marvell/libertas/main.c
|
||||
@@ -935,6 +935,7 @@ struct lbs_private *lbs_add_card(void *c
|
||||
@@ -936,6 +936,7 @@ struct lbs_private *lbs_add_card(void *c
|
||||
goto err_adapter;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,8 +42,8 @@ Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
|
||||
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1093,6 +1093,19 @@ static void rt2x00lib_remove_hw(struct r
|
||||
kfree(rt2x00dev->spec.channels_info);
|
||||
@@ -1095,6 +1095,19 @@ static void rt2x00lib_remove_hw(struct r
|
||||
kfree(rt2x00dev->chan_survey);
|
||||
}
|
||||
|
||||
+static const struct ieee80211_tpt_blink rt2x00_tpt_blink[] = {
|
||||
@@ -62,7 +62,7 @@ Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
|
||||
static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
|
||||
{
|
||||
struct hw_mode_spec *spec = &rt2x00dev->spec;
|
||||
@@ -1174,6 +1187,11 @@ static int rt2x00lib_probe_hw(struct rt2
|
||||
@@ -1176,6 +1189,11 @@ static int rt2x00lib_probe_hw(struct rt2
|
||||
|
||||
#undef RT2X00_TASKLET_INIT
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
DECLARE_KFIFO_PTR(txstatus_fifo, u32);
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1419,6 +1419,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
|
||||
@@ -1423,6 +1423,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
|
||||
INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
|
||||
INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
/*
|
||||
* Let the driver probe the device to detect the capabilities.
|
||||
*/
|
||||
@@ -1559,6 +1563,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
|
||||
@@ -1563,6 +1567,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
|
||||
* Free the driver data.
|
||||
*/
|
||||
kfree(rt2x00dev->drv_data);
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#endif /* _RT2X00_PLATFORM_H */
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1007,6 +1007,22 @@ static int rt2x00lib_probe_hw_modes(stru
|
||||
@@ -1008,6 +1008,22 @@ static int rt2x00lib_probe_hw_modes(stru
|
||||
unsigned int num_rates;
|
||||
unsigned int i;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -989,6 +989,12 @@ static void rt2x00lib_rate(struct ieee80
|
||||
@@ -990,6 +990,12 @@ static void rt2x00lib_rate(struct ieee80
|
||||
|
||||
void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1012,6 +1012,16 @@ static int rt2x00lib_probe_hw_modes(stru
|
||||
@@ -1013,6 +1013,16 @@ static int rt2x00lib_probe_hw_modes(stru
|
||||
struct ieee80211_rate *rates;
|
||||
unsigned int num_rates;
|
||||
unsigned int i;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1358,7 +1358,7 @@ static inline void rt2x00lib_set_if_comb
|
||||
@@ -1362,7 +1362,7 @@ static inline void rt2x00lib_set_if_comb
|
||||
*/
|
||||
if_limit = &rt2x00dev->if_limits_ap;
|
||||
if_limit->max = rt2x00dev->ops->max_ap_intf;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2497,7 +2497,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
@@ -2496,7 +2496,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
* the frames sent while scanning on other channel will be
|
||||
* lost)
|
||||
*/
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3820,7 +3820,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3822,7 +3822,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct airtime_sched_info *air_sched;
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_txq *ret = NULL;
|
||||
struct airtime_info *air_info;
|
||||
struct txq_info *txqi = NULL;
|
||||
@@ -3947,7 +3947,7 @@ void ieee80211_update_airtime_weight(str
|
||||
@@ -3949,7 +3949,7 @@ void ieee80211_update_airtime_weight(str
|
||||
u64 weight_sum = 0;
|
||||
|
||||
if (unlikely(!now))
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
lockdep_assert_held(&air_sched->lock);
|
||||
|
||||
@@ -3973,7 +3973,7 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
@@ -3975,7 +3975,7 @@ void ieee80211_schedule_txq(struct ieee8
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct txq_info *txqi = to_txq_info(txq);
|
||||
struct airtime_sched_info *air_sched;
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct airtime_info *air_info;
|
||||
u8 ac = txq->ac;
|
||||
bool was_active;
|
||||
@@ -4031,7 +4031,7 @@ static void __ieee80211_unschedule_txq(s
|
||||
@@ -4033,7 +4033,7 @@ static void __ieee80211_unschedule_txq(s
|
||||
|
||||
if (!purge)
|
||||
airtime_set_active(air_sched, air_info,
|
||||
@@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
rb_erase_cached(&txqi->schedule_order,
|
||||
&air_sched->active_txqs);
|
||||
@@ -4119,7 +4119,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -4121,7 +4121,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
if (RB_EMPTY_NODE(&txqi->schedule_order))
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -4987,6 +4987,115 @@ static int ieee80211_beacon_protect(stru
|
||||
@@ -4989,6 +4989,115 @@ static int ieee80211_beacon_protect(stru
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
static struct sk_buff *
|
||||
__ieee80211_beacon_get(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
@@ -4996,12 +5105,8 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
@@ -4998,12 +5107,8 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct beacon_data *beacon = NULL;
|
||||
struct sk_buff *skb = NULL;
|
||||
@@ -143,7 +143,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
@@ -5018,48 +5123,11 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
@@ -5020,48 +5125,11 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
struct ieee80211_if_ap *ap = &sdata->u.ap;
|
||||
|
||||
beacon = rcu_dereference(ap->beacon);
|
||||
@@ -196,7 +196,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
} else if (sdata->vif.type == NL80211_IFTYPE_ADHOC) {
|
||||
struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
|
||||
struct ieee80211_hdr *hdr;
|
||||
@@ -5085,6 +5153,9 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
@@ -5087,6 +5155,9 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
hdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
|
||||
IEEE80211_STYPE_BEACON);
|
||||
@@ -206,7 +206,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
} else if (ieee80211_vif_is_mesh(&sdata->vif)) {
|
||||
struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;
|
||||
|
||||
@@ -5124,51 +5195,13 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
@@ -5126,51 +5197,13 @@ __ieee80211_beacon_get(struct ieee80211_
|
||||
}
|
||||
|
||||
skb_put_data(skb, beacon->tail, beacon->tail_len);
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -1046,6 +1046,36 @@ struct cfg80211_crypto_settings {
|
||||
@@ -1049,6 +1049,36 @@ struct cfg80211_crypto_settings {
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -59,7 +59,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
* struct cfg80211_beacon_data - beacon data
|
||||
* @head: head portion of beacon (before TIM IE)
|
||||
* or %NULL if not changed
|
||||
@@ -1063,6 +1093,7 @@ struct cfg80211_crypto_settings {
|
||||
@@ -1066,6 +1096,7 @@ struct cfg80211_crypto_settings {
|
||||
* @assocresp_ies_len: length of assocresp_ies in octets
|
||||
* @probe_resp_len: length of probe response template (@probe_resp)
|
||||
* @probe_resp: probe response template (AP mode only)
|
||||
@@ -67,7 +67,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
* @ftm_responder: enable FTM responder functionality; -1 for no change
|
||||
* (which also implies no change in LCI/civic location data)
|
||||
* @lci: Measurement Report element content, starting with Measurement Token
|
||||
@@ -1080,6 +1111,7 @@ struct cfg80211_beacon_data {
|
||||
@@ -1083,6 +1114,7 @@ struct cfg80211_beacon_data {
|
||||
const u8 *probe_resp;
|
||||
const u8 *lci;
|
||||
const u8 *civicloc;
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
s8 ftm_responder;
|
||||
|
||||
size_t head_len, tail_len;
|
||||
@@ -1194,6 +1226,7 @@ enum cfg80211_ap_settings_flags {
|
||||
@@ -1197,6 +1229,7 @@ enum cfg80211_ap_settings_flags {
|
||||
* @he_oper: HE operation IE (or %NULL if HE isn't enabled)
|
||||
* @fils_discovery: FILS discovery transmission parameters
|
||||
* @unsol_bcast_probe_resp: Unsolicited broadcast probe response parameters
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
*/
|
||||
struct cfg80211_ap_settings {
|
||||
struct cfg80211_chan_def chandef;
|
||||
@@ -1226,6 +1259,7 @@ struct cfg80211_ap_settings {
|
||||
@@ -1229,6 +1262,7 @@ struct cfg80211_ap_settings {
|
||||
struct cfg80211_he_bss_color he_bss_color;
|
||||
struct cfg80211_fils_discovery fils_discovery;
|
||||
struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp;
|
||||
@@ -91,7 +91,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -4986,6 +5020,13 @@ struct wiphy_iftype_akm_suites {
|
||||
@@ -4989,6 +5023,13 @@ struct wiphy_iftype_akm_suites {
|
||||
* %NL80211_TID_CONFIG_ATTR_RETRY_LONG attributes
|
||||
* @sar_capa: SAR control capabilities
|
||||
* @rfkill: a pointer to the rfkill structure
|
||||
@@ -105,7 +105,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
*/
|
||||
struct wiphy {
|
||||
struct mutex mtx;
|
||||
@@ -5133,6 +5174,9 @@ struct wiphy {
|
||||
@@ -5136,6 +5177,9 @@ struct wiphy {
|
||||
|
||||
struct rfkill *rfkill;
|
||||
|
||||
@@ -221,7 +221,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -442,6 +442,16 @@ sar_policy[NL80211_SAR_ATTR_MAX + 1] = {
|
||||
@@ -443,6 +443,16 @@ sar_policy[NL80211_SAR_ATTR_MAX + 1] = {
|
||||
[NL80211_SAR_ATTR_SPECS] = NLA_POLICY_NESTED_ARRAY(sar_specs_policy),
|
||||
};
|
||||
|
||||
@@ -238,7 +238,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
static const struct nla_policy nl80211_policy[NUM_NL80211_ATTR] = {
|
||||
[0] = { .strict_start_type = NL80211_ATTR_HE_OBSS_PD },
|
||||
[NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
|
||||
@@ -788,6 +798,9 @@ static const struct nla_policy nl80211_p
|
||||
@@ -789,6 +799,9 @@ static const struct nla_policy nl80211_p
|
||||
[NL80211_ATTR_COLOR_CHANGE_COUNT] = { .type = NLA_U8 },
|
||||
[NL80211_ATTR_COLOR_CHANGE_COLOR] = { .type = NLA_U8 },
|
||||
[NL80211_ATTR_COLOR_CHANGE_ELEMS] = NLA_POLICY_NESTED(nl80211_policy),
|
||||
@@ -248,7 +248,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -2236,6 +2249,35 @@ fail:
|
||||
@@ -2237,6 +2250,35 @@ fail:
|
||||
return -ENOBUFS;
|
||||
}
|
||||
|
||||
@@ -284,7 +284,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
struct nl80211_dump_wiphy_state {
|
||||
s64 filter_wiphy;
|
||||
long start;
|
||||
@@ -2821,6 +2863,9 @@ static int nl80211_send_wiphy(struct cfg
|
||||
@@ -2822,6 +2864,9 @@ static int nl80211_send_wiphy(struct cfg
|
||||
if (nl80211_put_sar_specs(rdev, msg))
|
||||
goto nla_put_failure;
|
||||
|
||||
@@ -294,7 +294,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
/* done */
|
||||
state->split_start = 0;
|
||||
break;
|
||||
@@ -5020,6 +5065,96 @@ static int validate_beacon_tx_rate(struc
|
||||
@@ -5024,6 +5069,96 @@ static int validate_beacon_tx_rate(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
static int nl80211_parse_beacon(struct cfg80211_registered_device *rdev,
|
||||
struct nlattr *attrs[],
|
||||
struct cfg80211_beacon_data *bcn)
|
||||
@@ -5100,6 +5235,17 @@ static int nl80211_parse_beacon(struct c
|
||||
@@ -5104,6 +5239,17 @@ static int nl80211_parse_beacon(struct c
|
||||
bcn->ftm_responder = -1;
|
||||
}
|
||||
|
||||
@@ -409,7 +409,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -5556,6 +5702,17 @@ static int nl80211_start_ap(struct sk_bu
|
||||
@@ -5560,6 +5706,17 @@ static int nl80211_start_ap(struct sk_bu
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
nl80211_calculate_ap_params(¶ms);
|
||||
|
||||
if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])
|
||||
@@ -5577,6 +5734,11 @@ static int nl80211_start_ap(struct sk_bu
|
||||
@@ -5581,6 +5738,11 @@ static int nl80211_start_ap(struct sk_bu
|
||||
|
||||
out:
|
||||
kfree(params.acl);
|
||||
@@ -439,7 +439,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -5601,12 +5763,14 @@ static int nl80211_set_beacon(struct sk_
|
||||
@@ -5605,12 +5767,14 @@ static int nl80211_set_beacon(struct sk_
|
||||
|
||||
err = nl80211_parse_beacon(rdev, info->attrs, ¶ms);
|
||||
if (err)
|
||||
@@ -455,7 +455,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -9283,12 +9447,14 @@ static int nl80211_channel_switch(struct
|
||||
@@ -9287,12 +9451,14 @@ static int nl80211_channel_switch(struct
|
||||
|
||||
err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_after);
|
||||
if (err)
|
||||
@@ -473,7 +473,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
err = nla_parse_nested_deprecated(csa_attrs, NL80211_ATTR_MAX,
|
||||
info->attrs[NL80211_ATTR_CSA_IES],
|
||||
@@ -9407,6 +9573,8 @@ skip_beacons:
|
||||
@@ -9411,6 +9577,8 @@ skip_beacons:
|
||||
wdev_unlock(wdev);
|
||||
|
||||
free:
|
||||
@@ -482,7 +482,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
kfree(csa_attrs);
|
||||
return err;
|
||||
}
|
||||
@@ -14959,6 +15127,8 @@ static int nl80211_color_change(struct s
|
||||
@@ -14965,6 +15133,8 @@ static int nl80211_color_change(struct s
|
||||
wdev_unlock(wdev);
|
||||
|
||||
out:
|
||||
|
||||
@@ -28,7 +28,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -4057,6 +4057,15 @@ struct mgmt_frame_regs {
|
||||
@@ -4060,6 +4060,15 @@ struct mgmt_frame_regs {
|
||||
* @set_sar_specs: Update the SAR (TX power) settings.
|
||||
*
|
||||
* @color_change: Initiate a color change.
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
*/
|
||||
struct cfg80211_ops {
|
||||
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
||||
@@ -4387,6 +4396,8 @@ struct cfg80211_ops {
|
||||
@@ -4390,6 +4399,8 @@ struct cfg80211_ops {
|
||||
int (*color_change)(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct cfg80211_color_change_settings *params);
|
||||
@@ -53,7 +53,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -7608,6 +7619,20 @@ void cfg80211_cac_event(struct net_devic
|
||||
@@ -7611,6 +7622,20 @@ void cfg80211_cac_event(struct net_devic
|
||||
const struct cfg80211_chan_def *chandef,
|
||||
enum nl80211_radar_event event, gfp_t gfp);
|
||||
|
||||
@@ -119,7 +119,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
NUM_NL80211_EXT_FEATURES,
|
||||
--- a/net/wireless/core.c
|
||||
+++ b/net/wireless/core.c
|
||||
@@ -543,6 +543,7 @@ use_default_name:
|
||||
@@ -545,6 +545,7 @@ use_default_name:
|
||||
INIT_WORK(&rdev->rfkill_block, cfg80211_rfkill_block_work);
|
||||
INIT_WORK(&rdev->conn_work, cfg80211_conn_work);
|
||||
INIT_WORK(&rdev->event_work, cfg80211_event_work);
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
init_waitqueue_head(&rdev->dev_wait);
|
||||
|
||||
@@ -1205,6 +1206,8 @@ void __cfg80211_leave(struct cfg80211_re
|
||||
@@ -1207,6 +1208,8 @@ void __cfg80211_leave(struct cfg80211_re
|
||||
|
||||
cfg80211_pmsr_wdev_down(wdev);
|
||||
|
||||
@@ -286,7 +286,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
+}
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -801,6 +801,7 @@ static const struct nla_policy nl80211_p
|
||||
@@ -802,6 +802,7 @@ static const struct nla_policy nl80211_p
|
||||
[NL80211_ATTR_MBSSID_CONFIG] =
|
||||
NLA_POLICY_NESTED(nl80211_mbssid_config_policy),
|
||||
[NL80211_ATTR_MBSSID_ELEMS] = { .type = NLA_NESTED },
|
||||
@@ -294,7 +294,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -9287,12 +9288,6 @@ static int nl80211_start_radar_detection
|
||||
@@ -9291,12 +9292,6 @@ static int nl80211_start_radar_detection
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -307,7 +307,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
err = cfg80211_chandef_dfs_required(wiphy, &chandef, wdev->iftype);
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -9303,6 +9298,16 @@ static int nl80211_start_radar_detection
|
||||
@@ -9307,6 +9302,16 @@ static int nl80211_start_radar_detection
|
||||
if (!cfg80211_chandef_dfs_usable(wiphy, &chandef))
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -7620,19 +7620,13 @@ void cfg80211_cac_event(struct net_devic
|
||||
@@ -7623,19 +7623,13 @@ void cfg80211_cac_event(struct net_devic
|
||||
enum nl80211_radar_event event, gfp_t gfp);
|
||||
|
||||
/**
|
||||
@@ -43,7 +43,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
* cfg80211_gtk_rekey_notify - notify userspace about driver rekeying
|
||||
--- a/net/wireless/core.c
|
||||
+++ b/net/wireless/core.c
|
||||
@@ -543,7 +543,9 @@ use_default_name:
|
||||
@@ -545,7 +545,9 @@ use_default_name:
|
||||
INIT_WORK(&rdev->rfkill_block, cfg80211_rfkill_block_work);
|
||||
INIT_WORK(&rdev->conn_work, cfg80211_conn_work);
|
||||
INIT_WORK(&rdev->event_work, cfg80211_event_work);
|
||||
@@ -54,7 +54,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
init_waitqueue_head(&rdev->dev_wait);
|
||||
|
||||
@@ -1053,11 +1055,13 @@ void wiphy_unregister(struct wiphy *wiph
|
||||
@@ -1055,11 +1057,13 @@ void wiphy_unregister(struct wiphy *wiph
|
||||
cancel_work_sync(&rdev->conn_work);
|
||||
flush_work(&rdev->event_work);
|
||||
cancel_delayed_work_sync(&rdev->dfs_update_channels_wk);
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -7580,15 +7580,33 @@ void cfg80211_cqm_txe_notify(struct net_
|
||||
@@ -7583,15 +7583,33 @@ void cfg80211_cqm_txe_notify(struct net_
|
||||
void cfg80211_cqm_beacon_loss_notify(struct net_device *dev, gfp_t gfp);
|
||||
|
||||
/**
|
||||
|
||||
@@ -118,7 +118,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
NL80211_RADAR_CAC_ABORTED);
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -9278,42 +9278,60 @@ static int nl80211_start_radar_detection
|
||||
@@ -9282,42 +9282,60 @@ static int nl80211_start_radar_detection
|
||||
struct cfg80211_chan_def chandef;
|
||||
enum nl80211_dfs_regions dfs_region;
|
||||
unsigned int cac_time_ms;
|
||||
@@ -198,7 +198,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
cac_time_ms = cfg80211_chandef_dfs_cac_time(&rdev->wiphy, &chandef);
|
||||
if (WARN_ON(!cac_time_ms))
|
||||
@@ -9326,6 +9344,9 @@ static int nl80211_start_radar_detection
|
||||
@@ -9330,6 +9348,9 @@ static int nl80211_start_radar_detection
|
||||
wdev->cac_start_time = jiffies;
|
||||
wdev->cac_time_ms = cac_time_ms;
|
||||
}
|
||||
@@ -208,7 +208,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -15961,7 +15982,8 @@ static const struct genl_small_ops nl802
|
||||
@@ -15967,7 +15988,8 @@ static const struct genl_small_ops nl802
|
||||
.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
|
||||
.doit = nl80211_start_radar_detection,
|
||||
.flags = GENL_UNS_ADMIN_PERM,
|
||||
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
struct ieee80211_vif *vif,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -4341,6 +4341,18 @@ out:
|
||||
@@ -4344,6 +4344,18 @@ out:
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
const struct cfg80211_ops mac80211_config_ops = {
|
||||
.add_virtual_intf = ieee80211_add_iface,
|
||||
.del_virtual_intf = ieee80211_del_iface,
|
||||
@@ -4445,4 +4457,5 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -4448,4 +4460,5 @@ const struct cfg80211_ops mac80211_confi
|
||||
.reset_tid_config = ieee80211_reset_tid_config,
|
||||
.set_sar_specs = ieee80211_set_sar_specs,
|
||||
.color_change = ieee80211_color_change,
|
||||
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -4058,14 +4058,14 @@ struct mgmt_frame_regs {
|
||||
@@ -4061,14 +4061,14 @@ struct mgmt_frame_regs {
|
||||
*
|
||||
* @color_change: Initiate a color change.
|
||||
*
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
*/
|
||||
struct cfg80211_ops {
|
||||
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
||||
@@ -4396,8 +4396,8 @@ struct cfg80211_ops {
|
||||
@@ -4399,8 +4399,8 @@ struct cfg80211_ops {
|
||||
int (*color_change)(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct cfg80211_color_change_settings *params);
|
||||
@@ -50,7 +50,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -7601,9 +7601,9 @@ cfg80211_radar_event(struct wiphy *wiphy
|
||||
@@ -7604,9 +7604,9 @@ cfg80211_radar_event(struct wiphy *wiphy
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -63,7 +63,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
{
|
||||
__cfg80211_radar_event(wiphy, chandef, true, gfp);
|
||||
}
|
||||
@@ -7638,13 +7638,13 @@ void cfg80211_cac_event(struct net_devic
|
||||
@@ -7641,13 +7641,13 @@ void cfg80211_cac_event(struct net_devic
|
||||
enum nl80211_radar_event event, gfp_t gfp);
|
||||
|
||||
/**
|
||||
@@ -156,7 +156,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
NUM_NL80211_EXT_FEATURES,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -4342,15 +4342,15 @@ out:
|
||||
@@ -4345,15 +4345,15 @@ out:
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -176,7 +176,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
|
||||
const struct cfg80211_ops mac80211_config_ops = {
|
||||
@@ -4457,5 +4457,5 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -4460,5 +4460,5 @@ const struct cfg80211_ops mac80211_confi
|
||||
.reset_tid_config = ieee80211_reset_tid_config,
|
||||
.set_sar_specs = ieee80211_set_sar_specs,
|
||||
.color_change = ieee80211_color_change,
|
||||
@@ -204,7 +204,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
bool cfg80211_any_wiphy_oper_chan(struct wiphy *wiphy,
|
||||
--- a/net/wireless/core.c
|
||||
+++ b/net/wireless/core.c
|
||||
@@ -543,9 +543,10 @@ use_default_name:
|
||||
@@ -545,9 +545,10 @@ use_default_name:
|
||||
INIT_WORK(&rdev->rfkill_block, cfg80211_rfkill_block_work);
|
||||
INIT_WORK(&rdev->conn_work, cfg80211_conn_work);
|
||||
INIT_WORK(&rdev->event_work, cfg80211_event_work);
|
||||
@@ -218,7 +218,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
init_waitqueue_head(&rdev->dev_wait);
|
||||
|
||||
@@ -1055,13 +1056,13 @@ void wiphy_unregister(struct wiphy *wiph
|
||||
@@ -1057,13 +1058,13 @@ void wiphy_unregister(struct wiphy *wiph
|
||||
cancel_work_sync(&rdev->conn_work);
|
||||
flush_work(&rdev->event_work);
|
||||
cancel_delayed_work_sync(&rdev->dfs_update_channels_wk);
|
||||
@@ -234,7 +234,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (rdev->wiphy.wowlan_config && rdev->ops->set_wakeup)
|
||||
@@ -1210,7 +1211,7 @@ void __cfg80211_leave(struct cfg80211_re
|
||||
@@ -1212,7 +1213,7 @@ void __cfg80211_leave(struct cfg80211_re
|
||||
|
||||
cfg80211_pmsr_wdev_down(wdev);
|
||||
|
||||
@@ -472,7 +472,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
}
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -801,7 +801,7 @@ static const struct nla_policy nl80211_p
|
||||
@@ -802,7 +802,7 @@ static const struct nla_policy nl80211_p
|
||||
[NL80211_ATTR_MBSSID_CONFIG] =
|
||||
NLA_POLICY_NESTED(nl80211_mbssid_config_policy),
|
||||
[NL80211_ATTR_MBSSID_ELEMS] = { .type = NLA_NESTED },
|
||||
@@ -481,7 +481,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -9306,9 +9306,9 @@ static int nl80211_start_radar_detection
|
||||
@@ -9310,9 +9310,9 @@ static int nl80211_start_radar_detection
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
/* turn off carrier for this interface and dependent VLANs */
|
||||
list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list)
|
||||
@@ -3126,12 +3166,24 @@ cfg80211_beacon_dup(struct cfg80211_beac
|
||||
@@ -3129,12 +3169,24 @@ cfg80211_beacon_dup(struct cfg80211_beac
|
||||
|
||||
len = beacon->head_len + beacon->tail_len + beacon->beacon_ies_len +
|
||||
beacon->proberesp_ies_len + beacon->assocresp_ies_len +
|
||||
@@ -146,7 +146,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
pos = (u8 *)(new_beacon + 1);
|
||||
if (beacon->head_len) {
|
||||
new_beacon->head_len = beacon->head_len;
|
||||
@@ -3169,6 +3221,10 @@ cfg80211_beacon_dup(struct cfg80211_beac
|
||||
@@ -3172,6 +3224,10 @@ cfg80211_beacon_dup(struct cfg80211_beac
|
||||
memcpy(pos, beacon->probe_resp, beacon->probe_resp_len);
|
||||
pos += beacon->probe_resp_len;
|
||||
}
|
||||
@@ -157,7 +157,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
/* might copy -1, meaning no changes requested */
|
||||
new_beacon->ftm_responder = beacon->ftm_responder;
|
||||
@@ -3206,8 +3262,11 @@ static int ieee80211_set_after_csa_beaco
|
||||
@@ -3209,8 +3265,11 @@ static int ieee80211_set_after_csa_beaco
|
||||
case NL80211_IFTYPE_AP:
|
||||
err = ieee80211_assign_beacon(sdata, sdata->u.ap.next_beacon,
|
||||
NULL, NULL);
|
||||
@@ -171,7 +171,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
if (err < 0)
|
||||
return err;
|
||||
@@ -3362,8 +3421,12 @@ static int ieee80211_set_csa_beacon(stru
|
||||
@@ -3365,8 +3424,12 @@ static int ieee80211_set_csa_beacon(stru
|
||||
if ((params->n_counter_offsets_beacon >
|
||||
IEEE80211_MAX_CNTDWN_COUNTERS_NUM) ||
|
||||
(params->n_counter_offsets_presp >
|
||||
@@ -185,7 +185,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
csa.counter_offsets_beacon = params->counter_offsets_beacon;
|
||||
csa.counter_offsets_presp = params->counter_offsets_presp;
|
||||
@@ -3373,7 +3436,9 @@ static int ieee80211_set_csa_beacon(stru
|
||||
@@ -3376,7 +3439,9 @@ static int ieee80211_set_csa_beacon(stru
|
||||
|
||||
err = ieee80211_assign_beacon(sdata, ¶ms->beacon_csa, &csa, NULL);
|
||||
if (err < 0) {
|
||||
@@ -195,7 +195,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
return err;
|
||||
}
|
||||
*changed |= err;
|
||||
@@ -3460,8 +3525,11 @@ static int ieee80211_set_csa_beacon(stru
|
||||
@@ -3463,8 +3528,11 @@ static int ieee80211_set_csa_beacon(stru
|
||||
static void ieee80211_color_change_abort(struct ieee80211_sub_if_data *sdata)
|
||||
{
|
||||
sdata->vif.color_change_active = false;
|
||||
@@ -209,7 +209,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
cfg80211_color_change_aborted_notify(sdata->dev);
|
||||
}
|
||||
@@ -4199,8 +4267,11 @@ ieee80211_set_after_color_change_beacon(
|
||||
@@ -4202,8 +4270,11 @@ ieee80211_set_after_color_change_beacon(
|
||||
|
||||
ret = ieee80211_assign_beacon(sdata, sdata->u.ap.next_beacon,
|
||||
NULL, NULL);
|
||||
@@ -223,7 +223,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -4243,7 +4314,11 @@ ieee80211_set_color_change_beacon(struct
|
||||
@@ -4246,7 +4317,11 @@ ieee80211_set_color_change_beacon(struct
|
||||
err = ieee80211_assign_beacon(sdata, ¶ms->beacon_color_change,
|
||||
NULL, &color_change);
|
||||
if (err < 0) {
|
||||
@@ -269,7 +269,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
IEEE80211_TX_STATUS_MSG = 2,
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -5041,6 +5041,19 @@ ieee80211_beacon_get_finish(struct ieee8
|
||||
@@ -5043,6 +5043,19 @@ ieee80211_beacon_get_finish(struct ieee8
|
||||
IEEE80211_TX_CTL_FIRST_FRAGMENT;
|
||||
}
|
||||
|
||||
@@ -289,7 +289,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
static struct sk_buff *
|
||||
ieee80211_beacon_get_ap(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
@@ -5054,6 +5067,7 @@ ieee80211_beacon_get_ap(struct ieee80211
|
||||
@@ -5056,6 +5069,7 @@ ieee80211_beacon_get_ap(struct ieee80211
|
||||
struct ieee80211_if_ap *ap = &sdata->u.ap;
|
||||
struct sk_buff *skb = NULL;
|
||||
u16 csa_off_base = 0;
|
||||
@@ -297,7 +297,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
if (beacon->cntdwn_counter_offsets[0]) {
|
||||
if (!is_template)
|
||||
@@ -5063,11 +5077,12 @@ ieee80211_beacon_get_ap(struct ieee80211
|
||||
@@ -5065,11 +5079,12 @@ ieee80211_beacon_get_ap(struct ieee80211
|
||||
}
|
||||
|
||||
/* headroom, head length,
|
||||
@@ -312,7 +312,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
if (!skb)
|
||||
return NULL;
|
||||
|
||||
@@ -5081,6 +5096,11 @@ ieee80211_beacon_get_ap(struct ieee80211
|
||||
@@ -5083,6 +5098,11 @@ ieee80211_beacon_get_ap(struct ieee80211
|
||||
offs->tim_length = skb->len - beacon->head_len;
|
||||
offs->cntdwn_counter_offs[0] = beacon->cntdwn_counter_offsets[0];
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -3247,9 +3247,31 @@ cfg80211_beacon_dup(struct cfg80211_beac
|
||||
@@ -3250,9 +3250,31 @@ cfg80211_beacon_dup(struct cfg80211_beac
|
||||
void ieee80211_csa_finish(struct ieee80211_vif *vif)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
||||
|
||||
@@ -627,7 +627,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
for (i = 0; i < IEEE80211_NUM_TIDS; i++)
|
||||
@@ -1889,59 +1893,24 @@ void ieee80211_sta_set_buffered(struct i
|
||||
@@ -1892,59 +1896,24 @@ void ieee80211_sta_set_buffered(struct i
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_sta_set_buffered);
|
||||
|
||||
@@ -699,7 +699,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_sta_register_airtime);
|
||||
|
||||
@@ -2385,7 +2354,7 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
@@ -2388,7 +2357,7 @@ void sta_set_sinfo(struct sta_info *sta,
|
||||
}
|
||||
|
||||
if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT))) {
|
||||
@@ -791,7 +791,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#include <net/net_namespace.h>
|
||||
#include <net/ieee80211_radiotap.h>
|
||||
#include <net/cfg80211.h>
|
||||
@@ -1480,7 +1479,7 @@ void ieee80211_txq_init(struct ieee80211
|
||||
@@ -1481,7 +1480,7 @@ void ieee80211_txq_init(struct ieee80211
|
||||
codel_vars_init(&txqi->def_cvars);
|
||||
codel_stats_init(&txqi->cstats);
|
||||
__skb_queue_head_init(&txqi->frags);
|
||||
@@ -800,7 +800,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
txqi->txq.vif = &sdata->vif;
|
||||
|
||||
@@ -1524,7 +1523,9 @@ void ieee80211_txq_purge(struct ieee8021
|
||||
@@ -1525,7 +1524,9 @@ void ieee80211_txq_purge(struct ieee8021
|
||||
ieee80211_purge_tx_queue(&local->hw, &txqi->frags);
|
||||
spin_unlock_bh(&fq->lock);
|
||||
|
||||
@@ -811,7 +811,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
|
||||
void ieee80211_txq_set_params(struct ieee80211_local *local)
|
||||
@@ -3819,259 +3820,102 @@ EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
@@ -3821,259 +3822,102 @@ 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);
|
||||
@@ -1133,7 +1133,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
|
||||
if (!wiphy_ext_feature_isset(local->hw.wiphy, NL80211_EXT_FEATURE_AQL))
|
||||
@@ -4086,12 +3930,15 @@ bool ieee80211_txq_airtime_check(struct
|
||||
@@ -4088,12 +3932,15 @@ bool ieee80211_txq_airtime_check(struct
|
||||
if (unlikely(txq->tid == IEEE80211_NUM_TIDS))
|
||||
return true;
|
||||
|
||||
@@ -1151,7 +1151,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
return true;
|
||||
|
||||
return false;
|
||||
@@ -4101,59 +3948,60 @@ EXPORT_SYMBOL(ieee80211_txq_airtime_chec
|
||||
@@ -4103,59 +3950,60 @@ EXPORT_SYMBOL(ieee80211_txq_airtime_chec
|
||||
bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw,
|
||||
struct ieee80211_txq *txq)
|
||||
{
|
||||
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
u32 aql_limit_high;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3847,7 +3847,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3849,7 +3849,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
struct sta_info *sta = container_of(txqi->txq.sta,
|
||||
struct sta_info, sta);
|
||||
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3817,6 +3817,13 @@ out:
|
||||
@@ -3819,6 +3819,13 @@ out:
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_tx_dequeue);
|
||||
|
||||
@@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
@@ -3847,7 +3854,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3849,7 +3856,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
struct sta_info *sta = container_of(txqi->txq.sta,
|
||||
struct sta_info, sta);
|
||||
bool aql_check = ieee80211_txq_airtime_check(hw, &txqi->txq);
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (aql_check)
|
||||
found_eligible_txq = true;
|
||||
@@ -3972,7 +3979,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -3974,7 +3981,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
continue;
|
||||
}
|
||||
sta = container_of(iter->txq.sta, struct sta_info, sta);
|
||||
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
u32 aql_limit_low;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3824,6 +3824,36 @@ static inline s32 ieee80211_sta_deficit(
|
||||
@@ -3826,6 +3826,36 @@ static inline s32 ieee80211_sta_deficit(
|
||||
return air_info->deficit - atomic_read(&air_info->aql_tx_pending);
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_txq *ieee80211_next_txq(struct ieee80211_hw *hw, u8 ac)
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
@@ -3870,7 +3900,6 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3872,7 +3902,6 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (txqi->schedule_round == local->schedule_round[ac])
|
||||
goto out;
|
||||
|
||||
@@ -3890,12 +3919,13 @@ void __ieee80211_schedule_txq(struct iee
|
||||
@@ -3892,12 +3921,13 @@ void __ieee80211_schedule_txq(struct iee
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct txq_info *txqi = to_txq_info(txq);
|
||||
@@ -98,7 +98,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
|
||||
@@ -3903,7 +3933,7 @@ void __ieee80211_schedule_txq(struct iee
|
||||
@@ -3905,7 +3935,7 @@ void __ieee80211_schedule_txq(struct iee
|
||||
* get immediately moved to the back of the list on the next
|
||||
* call to ieee80211_next_txq().
|
||||
*/
|
||||
@@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
wiphy_ext_feature_isset(local->hw.wiphy,
|
||||
NL80211_EXT_FEATURE_AIRTIME_FAIRNESS))
|
||||
list_add(&txqi->schedule_order,
|
||||
@@ -3911,6 +3941,8 @@ void __ieee80211_schedule_txq(struct iee
|
||||
@@ -3913,6 +3943,8 @@ void __ieee80211_schedule_txq(struct iee
|
||||
else
|
||||
list_add_tail(&txqi->schedule_order,
|
||||
&local->active_txqs[txq->ac]);
|
||||
|
||||
@@ -35,7 +35,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
local->airtime_flags = AIRTIME_USE_TX | AIRTIME_USE_RX;
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1929,6 +1929,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
@@ -1932,6 +1932,7 @@ void ieee80211_sta_update_pending_airtim
|
||||
&sta->airtime[ac].aql_tx_pending);
|
||||
|
||||
atomic_add(tx_airtime, &local->aql_total_pending_airtime);
|
||||
@@ -43,7 +43,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1940,14 +1941,17 @@ void ieee80211_sta_update_pending_airtim
|
||||
@@ -1943,14 +1944,17 @@ void ieee80211_sta_update_pending_airtim
|
||||
tx_pending, 0);
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int sta_info_move_state(struct sta_info *sta,
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3863,6 +3863,9 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3865,6 +3865,9 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
|
||||
spin_lock_bh(&local->active_txq_lock[ac]);
|
||||
|
||||
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
begin:
|
||||
txqi = list_first_entry_or_null(&local->active_txqs[ac],
|
||||
struct txq_info,
|
||||
@@ -3984,6 +3987,25 @@ bool ieee80211_txq_airtime_check(struct
|
||||
@@ -3986,6 +3989,25 @@ bool ieee80211_txq_airtime_check(struct
|
||||
}
|
||||
EXPORT_SYMBOL(ieee80211_txq_airtime_check);
|
||||
|
||||
@@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
bool ieee80211_txq_may_transmit(struct ieee80211_hw *hw,
|
||||
struct ieee80211_txq *txq)
|
||||
{
|
||||
@@ -4000,6 +4022,9 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -4002,6 +4024,9 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
if (list_empty(&txqi->schedule_order))
|
||||
goto out;
|
||||
|
||||
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
list_for_each_entry_safe(iter, tmp, &local->active_txqs[ac],
|
||||
schedule_order) {
|
||||
if (iter == txqi)
|
||||
@@ -4039,7 +4064,15 @@ void ieee80211_txq_schedule_start(struct
|
||||
@@ -4041,7 +4066,15 @@ void ieee80211_txq_schedule_start(struct
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
|
||||
spin_lock_bh(&local->active_txq_lock[ac]);
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1900,6 +1900,7 @@ void ieee80211_sta_register_airtime(stru
|
||||
@@ -1903,6 +1903,7 @@ void ieee80211_sta_register_airtime(stru
|
||||
struct ieee80211_local *local = sta->sdata->local;
|
||||
u8 ac = ieee80211_ac_from_tid(tid);
|
||||
u32 airtime = 0;
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sta->local->airtime_flags & AIRTIME_USE_TX)
|
||||
airtime += tx_airtime;
|
||||
@@ -1909,7 +1910,11 @@ void ieee80211_sta_register_airtime(stru
|
||||
@@ -1912,7 +1913,11 @@ void ieee80211_sta_register_airtime(stru
|
||||
spin_lock_bh(&local->active_txq_lock[ac]);
|
||||
sta->airtime[ac].tx_airtime += tx_airtime;
|
||||
sta->airtime[ac].rx_airtime += rx_airtime;
|
||||
|
||||
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3894,7 +3894,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
@@ -3896,7 +3896,7 @@ struct ieee80211_txq *ieee80211_next_txq
|
||||
|
||||
if (deficit < 0)
|
||||
sta->airtime[txqi->txq.ac].deficit +=
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (deficit < 0 || !aql_check) {
|
||||
list_move_tail(&txqi->schedule_order,
|
||||
@@ -4037,7 +4037,8 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -4039,7 +4039,8 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
}
|
||||
sta = container_of(iter->txq.sta, struct sta_info, sta);
|
||||
if (ieee80211_sta_deficit(sta, ac) < 0)
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
list_move_tail(&iter->schedule_order, &local->active_txqs[ac]);
|
||||
}
|
||||
|
||||
@@ -4045,7 +4046,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
@@ -4047,7 +4048,7 @@ bool ieee80211_txq_may_transmit(struct i
|
||||
if (sta->airtime[ac].deficit >= 0)
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -19,9 +19,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3792,7 +3792,7 @@ begin:
|
||||
@@ -3794,7 +3794,7 @@ begin:
|
||||
encap_out:
|
||||
IEEE80211_SKB_CB(skb)->control.vif = vif;
|
||||
info->control.vif = vif;
|
||||
|
||||
- if (vif &&
|
||||
+ if (tx.sta &&
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -4267,6 +4267,7 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4271,6 +4271,7 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
.vif_type = sdata->vif.type,
|
||||
.control_port_protocol = sdata->control_port_protocol,
|
||||
}, *old, *new = NULL;
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
bool set_offload = false;
|
||||
bool assign = false;
|
||||
bool offload;
|
||||
@@ -4382,10 +4383,10 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4386,10 +4387,10 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
if (assign)
|
||||
new = kmemdup(&fastrx, sizeof(fastrx), GFP_KERNEL);
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -4603,7 +4603,7 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4607,7 +4607,7 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
|
||||
if (!(status->rx_flags & IEEE80211_RX_AMSDU)) {
|
||||
if (!pskb_may_pull(skb, snap_offs + sizeof(*payload)))
|
||||
|
||||
@@ -15,7 +15,7 @@ Reviewed-by: Peer, Ilan <ilan.peer@intel.com>
|
||||
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
|
||||
@@ -551,8 +551,9 @@ static void iwl_mvm_skb_prepare_status(s
|
||||
@@ -555,8 +555,9 @@ static void iwl_mvm_skb_prepare_status(s
|
||||
|
||||
static int iwl_mvm_get_ctrl_vif_queue(struct iwl_mvm *mvm,
|
||||
struct ieee80211_tx_info *info,
|
||||
@@ -26,7 +26,7 @@ Reviewed-by: Peer, Ilan <ilan.peer@intel.com>
|
||||
struct iwl_mvm_vif *mvmvif =
|
||||
iwl_mvm_vif_from_mac80211(info->control.vif);
|
||||
__le16 fc = hdr->frame_control;
|
||||
@@ -571,7 +572,7 @@ static int iwl_mvm_get_ctrl_vif_queue(st
|
||||
@@ -575,7 +576,7 @@ static int iwl_mvm_get_ctrl_vif_queue(st
|
||||
* reason 7 ("Class 3 frame received from nonassociated STA").
|
||||
*/
|
||||
if (ieee80211_is_mgmt(fc) &&
|
||||
@@ -35,7 +35,7 @@ Reviewed-by: Peer, Ilan <ilan.peer@intel.com>
|
||||
ieee80211_is_deauth(fc) || ieee80211_is_disassoc(fc)))
|
||||
return mvm->probe_queue;
|
||||
|
||||
@@ -689,7 +690,7 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mv
|
||||
@@ -693,7 +694,7 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mv
|
||||
else
|
||||
sta_id = mvmvif->mcast_sta.sta_id;
|
||||
|
||||
@@ -123,7 +123,7 @@ Reviewed-by: Peer, Ilan <ilan.peer@intel.com>
|
||||
info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER;
|
||||
return TX_CONTINUE;
|
||||
}
|
||||
@@ -1282,7 +1282,7 @@ static struct txq_info *ieee80211_get_tx
|
||||
@@ -1283,7 +1283,7 @@ static struct txq_info *ieee80211_get_tx
|
||||
if (!(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) &&
|
||||
unlikely(!ieee80211_is_data_present(hdr->frame_control))) {
|
||||
if ((!ieee80211_is_mgmt(hdr->frame_control) ||
|
||||
|
||||
@@ -19,7 +19,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1070,6 +1070,14 @@ static void __sta_info_destroy_part2(str
|
||||
@@ -1073,6 +1073,14 @@ static void __sta_info_destroy_part2(str
|
||||
WARN_ON_ONCE(ret);
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
|
||||
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
|
||||
@@ -4817,9 +4817,6 @@ static void iwl_mvm_mac_flush(struct iee
|
||||
@@ -4820,9 +4820,6 @@ static void iwl_mvm_mac_flush(struct iee
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
|
||||
/* Make sure we're done with the deferred traffic before flushing */
|
||||
flush_work(&mvm->add_stream_wk);
|
||||
|
||||
@@ -4837,9 +4834,6 @@ static void iwl_mvm_mac_flush(struct iee
|
||||
@@ -4840,9 +4837,6 @@ static void iwl_mvm_mac_flush(struct iee
|
||||
if (mvmsta->vif != vif)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
|
||||
struct ieee80211_channel_switch *ch_switch)
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1075,8 +1075,12 @@ static void __sta_info_destroy_part2(str
|
||||
@@ -1078,8 +1078,12 @@ static void __sta_info_destroy_part2(str
|
||||
* frames sitting on hardware queues might be sent out without
|
||||
* any encryption at all.
|
||||
*/
|
||||
|
||||
@@ -11,7 +11,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
|
||||
|
||||
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
|
||||
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
|
||||
@@ -4853,6 +4853,31 @@ static void iwl_mvm_mac_flush(struct iee
|
||||
@@ -4856,6 +4856,31 @@ static void iwl_mvm_mac_flush(struct iee
|
||||
iwl_trans_wait_tx_queues_empty(mvm->trans, msk);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ Reviewed-by: Greenman, Gregory <gregory.greenman@intel.com>
|
||||
static int iwl_mvm_mac_get_survey(struct ieee80211_hw *hw, int idx,
|
||||
struct survey_info *survey)
|
||||
{
|
||||
@@ -5366,6 +5391,7 @@ const struct ieee80211_ops iwl_mvm_hw_op
|
||||
@@ -5369,6 +5394,7 @@ const struct ieee80211_ops iwl_mvm_hw_op
|
||||
.mgd_prepare_tx = iwl_mvm_mac_mgd_prepare_tx,
|
||||
.mgd_protect_tdls_discover = iwl_mvm_mac_mgd_protect_tdls_discover,
|
||||
.flush = iwl_mvm_mac_flush,
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 24 Mar 2023 13:04:17 +0100
|
||||
Subject: [PATCH] wifi: mac80211: fix invalid drv_sta_pre_rcu_remove calls for
|
||||
non-uploaded sta
|
||||
|
||||
Avoid potential data corruption issues caused by uninitialized driver
|
||||
private data structures.
|
||||
|
||||
Reported-by: Brian Coverstone <brian@mainsequence.net>
|
||||
Fixes: 6a9d1b91f34d ("mac80211: add pre-RCU-sync sta removal driver operation")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1041,7 +1041,8 @@ static int __must_check __sta_info_destr
|
||||
list_del_rcu(&sta->list);
|
||||
sta->removed = true;
|
||||
|
||||
- drv_sta_pre_rcu_remove(local, sta->sdata, sta);
|
||||
+ if (sta->uploaded)
|
||||
+ drv_sta_pre_rcu_remove(local, sta->sdata, sta);
|
||||
|
||||
if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
|
||||
rcu_access_pointer(sdata->u.vlan.sta) == sta)
|
||||
@@ -5,7 +5,7 @@ and we should ignore this.
|
||||
|
||||
--- a/net/wireless/core.c
|
||||
+++ b/net/wireless/core.c
|
||||
@@ -625,21 +625,6 @@ static int wiphy_verify_combinations(str
|
||||
@@ -627,21 +627,6 @@ static int wiphy_verify_combinations(str
|
||||
c->limits[j].max > 1))
|
||||
return -EINVAL;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -3869,6 +3869,7 @@ struct mgmt_frame_regs {
|
||||
@@ -3872,6 +3872,7 @@ struct mgmt_frame_regs {
|
||||
* (as advertised by the nl80211 feature flag.)
|
||||
* @get_tx_power: store the current TX power into the dbm variable;
|
||||
* return 0 if successful
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
|
||||
* functions to adjust rfkill hw state
|
||||
@@ -4202,6 +4203,7 @@ struct cfg80211_ops {
|
||||
@@ -4205,6 +4206,7 @@ struct cfg80211_ops {
|
||||
enum nl80211_tx_power_setting type, int mbm);
|
||||
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||
int *dbm);
|
||||
@@ -57,7 +57,7 @@
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2812,6 +2812,19 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -2815,6 +2815,19 @@ static int ieee80211_get_tx_power(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
static void ieee80211_rfkill_poll(struct wiphy *wiphy)
|
||||
{
|
||||
struct ieee80211_local *local = wiphy_priv(wiphy);
|
||||
@@ -4513,6 +4526,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -4516,6 +4529,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,
|
||||
@@ -129,7 +129,7 @@
|
||||
local->hw.max_mtu = IEEE80211_MAX_DATA_LEN;
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -802,6 +802,7 @@ static const struct nla_policy nl80211_p
|
||||
@@ -803,6 +803,7 @@ static const struct nla_policy nl80211_p
|
||||
NLA_POLICY_NESTED(nl80211_mbssid_config_policy),
|
||||
[NL80211_ATTR_MBSSID_ELEMS] = { .type = NLA_NESTED },
|
||||
[NL80211_ATTR_RADAR_BACKGROUND] = { .type = NLA_FLAG },
|
||||
@@ -137,7 +137,7 @@
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -3391,6 +3392,22 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
@@ -3392,6 +3393,22 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
if (result)
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mbedtls
|
||||
PKG_VERSION:=2.28.5
|
||||
PKG_VERSION:=2.28.8
|
||||
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:=849e86b626e42ded6bf67197b64aa771daa54e2a7e2868dc67e1e4711959e5e3
|
||||
PKG_HASH:=4fef7de0d8d542510d726d643350acb3cdb9dc76ad45611b59c9aa08372b4213
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=gpl-2.0.txt
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wolfssl
|
||||
PKG_VERSION:=5.6.4-stable
|
||||
PKG_VERSION:=5.7.2-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:=031691906794ff45e1e792561cf31759f5d29ac74936bc8dffb8b14f16d820b4
|
||||
PKG_HASH:=0f2ed82e345b833242705bbc4b08a2a2037a33f7bf9c610efae6464f6b10e305
|
||||
|
||||
PKG_FIXUP:=libtool libtool-abiver
|
||||
PKG_INSTALL:=1
|
||||
@@ -50,6 +50,8 @@ PKG_CONFIG_DEPENDS+=\
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
DISABLE_NLS:=
|
||||
|
||||
define Package/libwolfssl/Default
|
||||
SECTION:=libs
|
||||
SUBMENU:=SSL
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/wolfssl/wolfcrypt/settings.h
|
||||
+++ b/wolfssl/wolfcrypt/settings.h
|
||||
@@ -2630,7 +2630,7 @@ extern void uITRON4_free(void *p) ;
|
||||
@@ -3046,7 +3046,7 @@ extern void uITRON4_free(void *p) ;
|
||||
|
||||
/* warning for not using harden build options (default with ./configure) */
|
||||
/* do not warn if big integer support is disabled */
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
From 3b576d95dcf791d7b945e75f639da8f89c1685a2 Mon Sep 17 00:00:00 2001
|
||||
From: czurnieden <czurnieden@gmx.de>
|
||||
Date: Tue, 9 May 2023 17:17:12 +0200
|
||||
Subject: Fix possible integer overflow
|
||||
|
||||
---
|
||||
libtommath/bn_mp_2expt.c | 4 ++++
|
||||
libtommath/bn_mp_grow.c | 4 ++++
|
||||
libtommath/bn_mp_init_size.c | 5 +++++
|
||||
libtommath/bn_mp_mul_2d.c | 4 ++++
|
||||
libtommath/bn_s_mp_mul_digs.c | 4 ++++
|
||||
libtommath/bn_s_mp_mul_digs_fast.c | 4 ++++
|
||||
libtommath/bn_s_mp_mul_high_digs.c | 4 ++++
|
||||
libtommath/bn_s_mp_mul_high_digs_fast.c | 4 ++++
|
||||
8 files changed, 33 insertions(+)
|
||||
|
||||
--- a/libtommath/bn_mp_2expt.c
|
||||
+++ b/libtommath/bn_mp_2expt.c
|
||||
@@ -12,6 +12,10 @@ mp_err mp_2expt(mp_int *a, int b)
|
||||
{
|
||||
mp_err err;
|
||||
|
||||
+ if (b < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* zero a as per default */
|
||||
mp_zero(a);
|
||||
|
||||
--- a/libtommath/bn_mp_grow.c
|
||||
+++ b/libtommath/bn_mp_grow.c
|
||||
@@ -9,6 +9,10 @@ mp_err mp_grow(mp_int *a, int size)
|
||||
int i;
|
||||
mp_digit *tmp;
|
||||
|
||||
+ if (size < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* if the alloc size is smaller alloc more ram */
|
||||
if (a->alloc < size) {
|
||||
/* reallocate the array a->dp
|
||||
--- a/libtommath/bn_mp_init_size.c
|
||||
+++ b/libtommath/bn_mp_init_size.c
|
||||
@@ -6,6 +6,11 @@
|
||||
/* init an mp_init for a given size */
|
||||
mp_err mp_init_size(mp_int *a, int size)
|
||||
{
|
||||
+
|
||||
+ if (size < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
size = MP_MAX(MP_MIN_PREC, size);
|
||||
|
||||
/* alloc mem */
|
||||
--- a/libtommath/bn_mp_mul_2d.c
|
||||
+++ b/libtommath/bn_mp_mul_2d.c
|
||||
@@ -9,6 +9,10 @@ mp_err mp_mul_2d(const mp_int *a, int b,
|
||||
mp_digit d;
|
||||
mp_err err;
|
||||
|
||||
+ if (b < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* copy */
|
||||
if (a != c) {
|
||||
if ((err = mp_copy(a, c)) != MP_OKAY) {
|
||||
--- a/libtommath/bn_s_mp_mul_digs.c
|
||||
+++ b/libtommath/bn_s_mp_mul_digs.c
|
||||
@@ -16,6 +16,10 @@ mp_err s_mp_mul_digs(const mp_int *a, co
|
||||
mp_word r;
|
||||
mp_digit tmpx, *tmpt, *tmpy;
|
||||
|
||||
+ if (digs < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* can we use the fast multiplier? */
|
||||
if ((digs < MP_WARRAY) &&
|
||||
(MP_MIN(a->used, b->used) < MP_MAXFAST)) {
|
||||
--- a/libtommath/bn_s_mp_mul_digs_fast.c
|
||||
+++ b/libtommath/bn_s_mp_mul_digs_fast.c
|
||||
@@ -26,6 +26,10 @@ mp_err s_mp_mul_digs_fast(const mp_int *
|
||||
mp_digit W[MP_WARRAY];
|
||||
mp_word _W;
|
||||
|
||||
+ if (digs < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* grow the destination as required */
|
||||
if (c->alloc < digs) {
|
||||
if ((err = mp_grow(c, digs)) != MP_OKAY) {
|
||||
--- a/libtommath/bn_s_mp_mul_high_digs.c
|
||||
+++ b/libtommath/bn_s_mp_mul_high_digs.c
|
||||
@@ -15,6 +15,10 @@ mp_err s_mp_mul_high_digs(const mp_int *
|
||||
mp_word r;
|
||||
mp_digit tmpx, *tmpt, *tmpy;
|
||||
|
||||
+ if (digs < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* can we use the fast multiplier? */
|
||||
if (MP_HAS(S_MP_MUL_HIGH_DIGS_FAST)
|
||||
&& ((a->used + b->used + 1) < MP_WARRAY)
|
||||
--- a/libtommath/bn_s_mp_mul_high_digs_fast.c
|
||||
+++ b/libtommath/bn_s_mp_mul_high_digs_fast.c
|
||||
@@ -19,6 +19,10 @@ mp_err s_mp_mul_high_digs_fast(const mp_
|
||||
mp_digit W[MP_WARRAY];
|
||||
mp_word _W;
|
||||
|
||||
+ if (digs < 0) {
|
||||
+ return MP_VAL;
|
||||
+ }
|
||||
+
|
||||
/* grow the destination as required */
|
||||
pa = a->used + b->used;
|
||||
if (c->alloc < pa) {
|
||||
@@ -0,0 +1,216 @@
|
||||
From 6e43be5c7b99dbee49dc72b6f989f29fdd7e9356 Mon Sep 17 00:00:00 2001
|
||||
From: Matt Johnston <matt@ucc.asn.au>
|
||||
Date: Mon, 20 Nov 2023 14:02:47 +0800
|
||||
Subject: Implement Strict KEX mode
|
||||
|
||||
As specified by OpenSSH with kex-strict-c-v00@openssh.com and
|
||||
kex-strict-s-v00@openssh.com.
|
||||
---
|
||||
cli-session.c | 11 +++++++++++
|
||||
common-algo.c | 6 ++++++
|
||||
common-kex.c | 26 +++++++++++++++++++++++++-
|
||||
kex.h | 3 +++
|
||||
process-packet.c | 34 +++++++++++++++++++---------------
|
||||
ssh.h | 4 ++++
|
||||
svr-session.c | 3 +++
|
||||
7 files changed, 71 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/cli-session.c
|
||||
+++ b/cli-session.c
|
||||
@@ -46,6 +46,7 @@ static void cli_finished(void) ATTRIB_NO
|
||||
static void recv_msg_service_accept(void);
|
||||
static void cli_session_cleanup(void);
|
||||
static void recv_msg_global_request_cli(void);
|
||||
+static void cli_algos_initialise(void);
|
||||
|
||||
struct clientsession cli_ses; /* GLOBAL */
|
||||
|
||||
@@ -117,6 +118,7 @@ void cli_session(int sock_in, int sock_o
|
||||
}
|
||||
|
||||
chaninitialise(cli_chantypes);
|
||||
+ cli_algos_initialise();
|
||||
|
||||
/* Set up cli_ses vars */
|
||||
cli_session_init(proxy_cmd_pid);
|
||||
@@ -487,3 +489,12 @@ void cli_dropbear_log(int priority, cons
|
||||
fflush(stderr);
|
||||
}
|
||||
|
||||
+static void cli_algos_initialise(void) {
|
||||
+ algo_type *algo;
|
||||
+ for (algo = sshkex; algo->name; algo++) {
|
||||
+ if (strcmp(algo->name, SSH_STRICT_KEX_S) == 0) {
|
||||
+ algo->usable = 0;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
--- a/common-algo.c
|
||||
+++ b/common-algo.c
|
||||
@@ -315,6 +315,12 @@ algo_type sshkex[] = {
|
||||
{SSH_EXT_INFO_C, 0, NULL, 1, NULL},
|
||||
#endif
|
||||
#endif
|
||||
+#if DROPBEAR_CLIENT
|
||||
+ {SSH_STRICT_KEX_C, 0, NULL, 1, NULL},
|
||||
+#endif
|
||||
+#if DROPBEAR_SERVER
|
||||
+ {SSH_STRICT_KEX_S, 0, NULL, 1, NULL},
|
||||
+#endif
|
||||
{NULL, 0, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
--- a/common-kex.c
|
||||
+++ b/common-kex.c
|
||||
@@ -183,6 +183,10 @@ void send_msg_newkeys() {
|
||||
gen_new_keys();
|
||||
switch_keys();
|
||||
|
||||
+ if (ses.kexstate.strict_kex) {
|
||||
+ ses.transseq = 0;
|
||||
+ }
|
||||
+
|
||||
TRACE(("leave send_msg_newkeys"))
|
||||
}
|
||||
|
||||
@@ -193,7 +197,11 @@ void recv_msg_newkeys() {
|
||||
|
||||
ses.kexstate.recvnewkeys = 1;
|
||||
switch_keys();
|
||||
-
|
||||
+
|
||||
+ if (ses.kexstate.strict_kex) {
|
||||
+ ses.recvseq = 0;
|
||||
+ }
|
||||
+
|
||||
TRACE(("leave recv_msg_newkeys"))
|
||||
}
|
||||
|
||||
@@ -550,6 +558,10 @@ void recv_msg_kexinit() {
|
||||
|
||||
ses.kexstate.recvkexinit = 1;
|
||||
|
||||
+ if (ses.kexstate.strict_kex && !ses.kexstate.donefirstkex && ses.recvseq != 1) {
|
||||
+ dropbear_exit("First packet wasn't kexinit");
|
||||
+ }
|
||||
+
|
||||
TRACE(("leave recv_msg_kexinit"))
|
||||
}
|
||||
|
||||
@@ -859,6 +871,18 @@ static void read_kex_algos() {
|
||||
}
|
||||
#endif
|
||||
|
||||
+ if (!ses.kexstate.donefirstkex) {
|
||||
+ const char* strict_name;
|
||||
+ if (IS_DROPBEAR_CLIENT) {
|
||||
+ strict_name = SSH_STRICT_KEX_S;
|
||||
+ } else {
|
||||
+ strict_name = SSH_STRICT_KEX_C;
|
||||
+ }
|
||||
+ if (buf_has_algo(ses.payload, strict_name) == DROPBEAR_SUCCESS) {
|
||||
+ ses.kexstate.strict_kex = 1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
algo = buf_match_algo(ses.payload, sshkex, kexguess2, &goodguess);
|
||||
allgood &= goodguess;
|
||||
if (algo == NULL || algo->data == NULL) {
|
||||
--- a/kex.h
|
||||
+++ b/kex.h
|
||||
@@ -83,6 +83,9 @@ struct KEXState {
|
||||
|
||||
unsigned our_first_follows_matches : 1;
|
||||
|
||||
+ /* Boolean indicating that strict kex mode is in use */
|
||||
+ unsigned int strict_kex;
|
||||
+
|
||||
time_t lastkextime; /* time of the last kex */
|
||||
unsigned int datatrans; /* data transmitted since last kex */
|
||||
unsigned int datarecv; /* data received since last kex */
|
||||
--- a/process-packet.c
|
||||
+++ b/process-packet.c
|
||||
@@ -44,6 +44,7 @@ void process_packet() {
|
||||
|
||||
unsigned char type;
|
||||
unsigned int i;
|
||||
+ unsigned int first_strict_kex = ses.kexstate.strict_kex && !ses.kexstate.donefirstkex;
|
||||
time_t now;
|
||||
|
||||
TRACE2(("enter process_packet"))
|
||||
@@ -54,22 +55,24 @@ void process_packet() {
|
||||
now = monotonic_now();
|
||||
ses.last_packet_time_keepalive_recv = now;
|
||||
|
||||
- /* These packets we can receive at any time */
|
||||
- switch(type) {
|
||||
|
||||
- case SSH_MSG_IGNORE:
|
||||
- goto out;
|
||||
- case SSH_MSG_DEBUG:
|
||||
- goto out;
|
||||
-
|
||||
- case SSH_MSG_UNIMPLEMENTED:
|
||||
- /* debugging XXX */
|
||||
- TRACE(("SSH_MSG_UNIMPLEMENTED"))
|
||||
- goto out;
|
||||
-
|
||||
- case SSH_MSG_DISCONNECT:
|
||||
- /* TODO cleanup? */
|
||||
- dropbear_close("Disconnect received");
|
||||
+ if (type == SSH_MSG_DISCONNECT) {
|
||||
+ /* Allowed at any time */
|
||||
+ dropbear_close("Disconnect received");
|
||||
+ }
|
||||
+
|
||||
+ /* These packets may be received at any time,
|
||||
+ except during first kex with strict kex */
|
||||
+ if (!first_strict_kex) {
|
||||
+ switch(type) {
|
||||
+ case SSH_MSG_IGNORE:
|
||||
+ goto out;
|
||||
+ case SSH_MSG_DEBUG:
|
||||
+ goto out;
|
||||
+ case SSH_MSG_UNIMPLEMENTED:
|
||||
+ TRACE(("SSH_MSG_UNIMPLEMENTED"))
|
||||
+ goto out;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Ignore these packet types so that keepalives don't interfere with
|
||||
@@ -98,7 +101,8 @@ void process_packet() {
|
||||
if (type >= 1 && type <= 49
|
||||
&& type != SSH_MSG_SERVICE_REQUEST
|
||||
&& type != SSH_MSG_SERVICE_ACCEPT
|
||||
- && type != SSH_MSG_KEXINIT)
|
||||
+ && type != SSH_MSG_KEXINIT
|
||||
+ && !first_strict_kex)
|
||||
{
|
||||
TRACE(("unknown allowed packet during kexinit"))
|
||||
recv_unimplemented();
|
||||
--- a/ssh.h
|
||||
+++ b/ssh.h
|
||||
@@ -100,6 +100,10 @@
|
||||
#define SSH_EXT_INFO_C "ext-info-c"
|
||||
#define SSH_SERVER_SIG_ALGS "server-sig-algs"
|
||||
|
||||
+/* OpenSSH strict KEX feature */
|
||||
+#define SSH_STRICT_KEX_S "kex-strict-s-v00@openssh.com"
|
||||
+#define SSH_STRICT_KEX_C "kex-strict-c-v00@openssh.com"
|
||||
+
|
||||
/* service types */
|
||||
#define SSH_SERVICE_USERAUTH "ssh-userauth"
|
||||
#define SSH_SERVICE_USERAUTH_LEN 12
|
||||
--- a/svr-session.c
|
||||
+++ b/svr-session.c
|
||||
@@ -368,6 +368,9 @@ static void svr_algos_initialise(void) {
|
||||
algo->usable = 0;
|
||||
}
|
||||
#endif
|
||||
+ if (strcmp(algo->name, SSH_STRICT_KEX_C) == 0) {
|
||||
+ algo->usable = 0;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ hostapd_append_wpa_key_mgmt() {
|
||||
case "$auth_type" in
|
||||
psk|eap)
|
||||
append wpa_key_mgmt "WPA-$auth_type_l"
|
||||
[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-${auth_type_l}"
|
||||
[ "${wpa:-2}" -ge 2 ] && [ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-${auth_type_l}"
|
||||
[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-${auth_type_l}-SHA256"
|
||||
;;
|
||||
eap192)
|
||||
@@ -846,10 +846,21 @@ hostapd_set_bss_options() {
|
||||
}
|
||||
fi
|
||||
|
||||
json_get_vars ieee80211r
|
||||
set_default ieee80211r 0
|
||||
if [ "$wpa" -ge "1" ]; then
|
||||
json_get_vars ieee80211r
|
||||
set_default ieee80211r 0
|
||||
if [ "$fils" -gt 0 ]; then
|
||||
json_get_vars fils_realm
|
||||
set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)"
|
||||
fi
|
||||
|
||||
append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N"
|
||||
|
||||
hostapd_append_wpa_key_mgmt
|
||||
[ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N"
|
||||
fi
|
||||
|
||||
if [ "$wpa" -ge "2" ]; then
|
||||
if [ "$ieee80211r" -gt "0" ]; then
|
||||
json_get_vars mobility_domain ft_psk_generate_local ft_over_ds reassociation_deadline
|
||||
|
||||
@@ -858,7 +869,7 @@ hostapd_set_bss_options() {
|
||||
set_default reassociation_deadline 1000
|
||||
|
||||
case "$auth_type" in
|
||||
psk|sae|psk-sae)
|
||||
psk)
|
||||
set_default ft_psk_generate_local 1
|
||||
;;
|
||||
*)
|
||||
@@ -900,18 +911,7 @@ hostapd_set_bss_options() {
|
||||
done
|
||||
fi
|
||||
fi
|
||||
if [ "$fils" -gt 0 ]; then
|
||||
json_get_vars fils_realm
|
||||
set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)"
|
||||
fi
|
||||
|
||||
append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N"
|
||||
|
||||
hostapd_append_wpa_key_mgmt
|
||||
[ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N"
|
||||
fi
|
||||
|
||||
if [ "$wpa" -ge "2" ]; then
|
||||
if [ -n "$network_bridge" -a "$rsn_preauth" = 1 ]; then
|
||||
set_default auth_cache 1
|
||||
append bss_conf "rsn_preauth=1" "$N"
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
From 8e6485a1bcb0baffdea9e55255a81270b768439c Mon Sep 17 00:00:00 2001
|
||||
From: Jouni Malinen <j@w1.fi>
|
||||
Date: Sat, 8 Jul 2023 19:55:32 +0300
|
||||
Subject: PEAP client: Update Phase 2 authentication requirements
|
||||
|
||||
The previous PEAP client behavior allowed the server to skip Phase 2
|
||||
authentication with the expectation that the server was authenticated
|
||||
during Phase 1 through TLS server certificate validation. Various PEAP
|
||||
specifications are not exactly clear on what the behavior on this front
|
||||
is supposed to be and as such, this ended up being more flexible than
|
||||
the TTLS/FAST/TEAP cases. However, this is not really ideal when
|
||||
unfortunately common misconfiguration of PEAP is used in deployed
|
||||
devices where the server trust root (ca_cert) is not configured or the
|
||||
user has an easy option for allowing this validation step to be skipped.
|
||||
|
||||
Change the default PEAP client behavior to be to require Phase 2
|
||||
authentication to be successfully completed for cases where TLS session
|
||||
resumption is not used and the client certificate has not been
|
||||
configured. Those two exceptions are the main cases where a deployed
|
||||
authentication server might skip Phase 2 and as such, where a more
|
||||
strict default behavior could result in undesired interoperability
|
||||
issues. Requiring Phase 2 authentication will end up disabling TLS
|
||||
session resumption automatically to avoid interoperability issues.
|
||||
|
||||
Allow Phase 2 authentication behavior to be configured with a new phase1
|
||||
configuration parameter option:
|
||||
'phase2_auth' option can be used to control Phase 2 (i.e., within TLS
|
||||
tunnel) behavior for PEAP:
|
||||
* 0 = do not require Phase 2 authentication
|
||||
* 1 = require Phase 2 authentication when client certificate
|
||||
(private_key/client_cert) is no used and TLS session resumption was
|
||||
not used (default)
|
||||
* 2 = require Phase 2 authentication in all cases
|
||||
|
||||
Signed-off-by: Jouni Malinen <j@w1.fi>
|
||||
---
|
||||
src/eap_peer/eap_config.h | 8 ++++++
|
||||
src/eap_peer/eap_peap.c | 40 +++++++++++++++++++++++++++---
|
||||
src/eap_peer/eap_tls_common.c | 6 +++++
|
||||
src/eap_peer/eap_tls_common.h | 5 ++++
|
||||
wpa_supplicant/wpa_supplicant.conf | 7 ++++++
|
||||
5 files changed, 63 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/src/eap_peer/eap_config.h
|
||||
+++ b/src/eap_peer/eap_config.h
|
||||
@@ -469,6 +469,14 @@ struct eap_peer_config {
|
||||
* 1 = use cryptobinding if server supports it
|
||||
* 2 = require cryptobinding
|
||||
*
|
||||
+ * phase2_auth option can be used to control Phase 2 (i.e., within TLS
|
||||
+ * tunnel) behavior for PEAP:
|
||||
+ * 0 = do not require Phase 2 authentication
|
||||
+ * 1 = require Phase 2 authentication when client certificate
|
||||
+ * (private_key/client_cert) is no used and TLS session resumption was
|
||||
+ * not used (default)
|
||||
+ * 2 = require Phase 2 authentication in all cases
|
||||
+ *
|
||||
* EAP-WSC (WPS) uses following options: pin=Device_Password and
|
||||
* uuid=Device_UUID
|
||||
*
|
||||
--- a/src/eap_peer/eap_peap.c
|
||||
+++ b/src/eap_peer/eap_peap.c
|
||||
@@ -67,6 +67,7 @@ struct eap_peap_data {
|
||||
u8 cmk[20];
|
||||
int soh; /* Whether IF-TNCCS-SOH (Statement of Health; Microsoft NAP)
|
||||
* is enabled. */
|
||||
+ enum { NO_AUTH, FOR_INITIAL, ALWAYS } phase2_auth;
|
||||
};
|
||||
|
||||
|
||||
@@ -114,6 +115,19 @@ static void eap_peap_parse_phase1(struct
|
||||
wpa_printf(MSG_DEBUG, "EAP-PEAP: Require cryptobinding");
|
||||
}
|
||||
|
||||
+ if (os_strstr(phase1, "phase2_auth=0")) {
|
||||
+ data->phase2_auth = NO_AUTH;
|
||||
+ wpa_printf(MSG_DEBUG,
|
||||
+ "EAP-PEAP: Do not require Phase 2 authentication");
|
||||
+ } else if (os_strstr(phase1, "phase2_auth=1")) {
|
||||
+ data->phase2_auth = FOR_INITIAL;
|
||||
+ wpa_printf(MSG_DEBUG,
|
||||
+ "EAP-PEAP: Require Phase 2 authentication for initial connection");
|
||||
+ } else if (os_strstr(phase1, "phase2_auth=2")) {
|
||||
+ data->phase2_auth = ALWAYS;
|
||||
+ wpa_printf(MSG_DEBUG,
|
||||
+ "EAP-PEAP: Require Phase 2 authentication for all cases");
|
||||
+ }
|
||||
#ifdef EAP_TNC
|
||||
if (os_strstr(phase1, "tnc=soh2")) {
|
||||
data->soh = 2;
|
||||
@@ -142,6 +156,7 @@ static void * eap_peap_init(struct eap_s
|
||||
data->force_peap_version = -1;
|
||||
data->peap_outer_success = 2;
|
||||
data->crypto_binding = OPTIONAL_BINDING;
|
||||
+ data->phase2_auth = FOR_INITIAL;
|
||||
|
||||
if (config && config->phase1)
|
||||
eap_peap_parse_phase1(data, config->phase1);
|
||||
@@ -454,6 +469,20 @@ static int eap_tlv_validate_cryptobindin
|
||||
}
|
||||
|
||||
|
||||
+static bool peap_phase2_sufficient(struct eap_sm *sm,
|
||||
+ struct eap_peap_data *data)
|
||||
+{
|
||||
+ if ((data->phase2_auth == ALWAYS ||
|
||||
+ (data->phase2_auth == FOR_INITIAL &&
|
||||
+ !tls_connection_resumed(sm->ssl_ctx, data->ssl.conn) &&
|
||||
+ !data->ssl.client_cert_conf) ||
|
||||
+ data->phase2_eap_started) &&
|
||||
+ !data->phase2_eap_success)
|
||||
+ return false;
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/**
|
||||
* eap_tlv_process - Process a received EAP-TLV message and generate a response
|
||||
* @sm: Pointer to EAP state machine allocated with eap_peer_sm_init()
|
||||
@@ -568,6 +597,11 @@ static int eap_tlv_process(struct eap_sm
|
||||
" - force failed Phase 2");
|
||||
resp_status = EAP_TLV_RESULT_FAILURE;
|
||||
ret->decision = DECISION_FAIL;
|
||||
+ } else if (!peap_phase2_sufficient(sm, data)) {
|
||||
+ wpa_printf(MSG_INFO,
|
||||
+ "EAP-PEAP: Server indicated Phase 2 success, but sufficient Phase 2 authentication has not been completed");
|
||||
+ resp_status = EAP_TLV_RESULT_FAILURE;
|
||||
+ ret->decision = DECISION_FAIL;
|
||||
} else {
|
||||
resp_status = EAP_TLV_RESULT_SUCCESS;
|
||||
ret->decision = DECISION_UNCOND_SUCC;
|
||||
@@ -887,8 +921,7 @@ continue_req:
|
||||
/* EAP-Success within TLS tunnel is used to indicate
|
||||
* shutdown of the TLS channel. The authentication has
|
||||
* been completed. */
|
||||
- if (data->phase2_eap_started &&
|
||||
- !data->phase2_eap_success) {
|
||||
+ if (!peap_phase2_sufficient(sm, data)) {
|
||||
wpa_printf(MSG_DEBUG, "EAP-PEAP: Phase 2 "
|
||||
"Success used to indicate success, "
|
||||
"but Phase 2 EAP was not yet "
|
||||
@@ -1199,8 +1232,9 @@ static struct wpabuf * eap_peap_process(
|
||||
static bool eap_peap_has_reauth_data(struct eap_sm *sm, void *priv)
|
||||
{
|
||||
struct eap_peap_data *data = priv;
|
||||
+
|
||||
return tls_connection_established(sm->ssl_ctx, data->ssl.conn) &&
|
||||
- data->phase2_success;
|
||||
+ data->phase2_success && data->phase2_auth != ALWAYS;
|
||||
}
|
||||
|
||||
|
||||
--- a/src/eap_peer/eap_tls_common.c
|
||||
+++ b/src/eap_peer/eap_tls_common.c
|
||||
@@ -239,6 +239,12 @@ static int eap_tls_params_from_conf(stru
|
||||
|
||||
sm->ext_cert_check = !!(params->flags & TLS_CONN_EXT_CERT_CHECK);
|
||||
|
||||
+ if (!phase2)
|
||||
+ data->client_cert_conf = params->client_cert ||
|
||||
+ params->client_cert_blob ||
|
||||
+ params->private_key ||
|
||||
+ params->private_key_blob;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- a/src/eap_peer/eap_tls_common.h
|
||||
+++ b/src/eap_peer/eap_tls_common.h
|
||||
@@ -79,6 +79,11 @@ struct eap_ssl_data {
|
||||
* tls_v13 - Whether TLS v1.3 or newer is used
|
||||
*/
|
||||
int tls_v13;
|
||||
+
|
||||
+ /**
|
||||
+ * client_cert_conf: Whether client certificate has been configured
|
||||
+ */
|
||||
+ bool client_cert_conf;
|
||||
};
|
||||
|
||||
|
||||
--- a/wpa_supplicant/wpa_supplicant.conf
|
||||
+++ b/wpa_supplicant/wpa_supplicant.conf
|
||||
@@ -1321,6 +1321,13 @@ fast_reauth=1
|
||||
# * 0 = do not use cryptobinding (default)
|
||||
# * 1 = use cryptobinding if server supports it
|
||||
# * 2 = require cryptobinding
|
||||
+# 'phase2_auth' option can be used to control Phase 2 (i.e., within TLS
|
||||
+# tunnel) behavior for PEAP:
|
||||
+# * 0 = do not require Phase 2 authentication
|
||||
+# * 1 = require Phase 2 authentication when client certificate
|
||||
+# (private_key/client_cert) is no used and TLS session resumption was
|
||||
+# not used (default)
|
||||
+# * 2 = require Phase 2 authentication in all cases
|
||||
# EAP-WSC (WPS) uses following options: pin=<Device Password> or
|
||||
# pbc=1.
|
||||
#
|
||||
@@ -570,18 +570,21 @@ _procd_set_config_changed() {
|
||||
}
|
||||
|
||||
procd_add_mdns_service() {
|
||||
local service proto port
|
||||
local service proto port txt_count=0
|
||||
service=$1; shift
|
||||
proto=$1; shift
|
||||
port=$1; shift
|
||||
json_add_object "${service}_$port"
|
||||
json_add_string "service" "_$service._$proto.local"
|
||||
json_add_int port "$port"
|
||||
[ -n "$1" ] && {
|
||||
json_add_array txt
|
||||
for txt in "$@"; do json_add_string "" "$txt"; done
|
||||
json_select ..
|
||||
}
|
||||
for txt in "$@"; do
|
||||
[ -z "$txt" ] && continue
|
||||
txt_count=$((txt_count+1))
|
||||
[ $txt_count -eq 1 ] && json_add_array txt
|
||||
json_add_string "" "$txt"
|
||||
done
|
||||
[ $txt_count -gt 0 ] && json_select ..
|
||||
|
||||
json_select ..
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/jsonpath.git
|
||||
PKG_SOURCE_DATE:=2018-02-04
|
||||
PKG_SOURCE_VERSION:=c7e938d6582a436dddc938539e72dd1320625c54
|
||||
PKG_MIRROR_HASH:=0601b4d7aa5ee096e99388a57cb0701673ab58fccd6ed2984a2abbd4f846e045
|
||||
PKG_SOURCE_DATE:=2024-01-23
|
||||
PKG_SOURCE_VERSION:=594cfa86469c005972ba750614f5b3f1af84d0f6
|
||||
PKG_MIRROR_HASH:=70d2e0870b746920af4569631218c38c1dddfee4f5d029ec8ea0a67999bdafcd
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=lua
|
||||
PKG_VERSION:=5.1.5
|
||||
PKG_RELEASE:=10
|
||||
PKG_RELEASE:=11
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://www.lua.org/ftp/ \
|
||||
|
||||
@@ -8,7 +8,6 @@ Including it allows multiple lua versions to coexist.
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -41,10 +41,10 @@ RANLIB= ranlib
|
||||
@@ -42,7 +41,7 @@ rename to doc/luac5.1.1
|
||||
diff --git a/src/Makefile b/src/Makefile
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -29,10 +29,10 @@ CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
|
||||
@@ -29,10 +29,10 @@ CORE_O= lapi.o lcode.o ldebug.o ldo.o ld
|
||||
LIB_O= lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \
|
||||
lstrlib.o loadlib.o linit.o
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
diff --git a/src/lnum.c b/src/lnum.c
|
||||
index 1456b6a2ed23..b0632b04c2b7 100644
|
||||
--- a/src/lnum.c
|
||||
+++ b/src/lnum.c
|
||||
@@ -127,6 +127,8 @@ static int luaO_str2i (const char *s, lua_Integer *res, char **endptr_ref) {
|
||||
@@ -127,6 +127,8 @@ static int luaO_str2i (const char *s, lu
|
||||
#else
|
||||
return 0; /* Reject the number */
|
||||
#endif
|
||||
@@ -11,7 +9,7 @@ index 1456b6a2ed23..b0632b04c2b7 100644
|
||||
}
|
||||
} else if ((v > LUA_INTEGER_MAX) || (*endptr && (!isspace(*endptr)))) {
|
||||
return TK_NUMBER; /* not in signed range, or has '.', 'e' etc. trailing */
|
||||
@@ -310,3 +312,13 @@ int try_unmint( lua_Integer *r, lua_Integer ib ) {
|
||||
@@ -310,3 +312,13 @@ int try_unmint( lua_Integer *r, lua_Inte
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -25,8 +23,6 @@ index 1456b6a2ed23..b0632b04c2b7 100644
|
||||
+ return (unsigned LUA_INTEGER)v;
|
||||
+}
|
||||
+#endif
|
||||
diff --git a/src/lnum_config.h b/src/lnum_config.h
|
||||
index 19d7a4231a49..1092eead6629 100644
|
||||
--- a/src/lnum_config.h
|
||||
+++ b/src/lnum_config.h
|
||||
@@ -141,7 +141,12 @@
|
||||
@@ -43,6 +39,3 @@ index 19d7a4231a49..1092eead6629 100644
|
||||
#endif
|
||||
#ifndef LUA_INTEGER_MIN
|
||||
# define LUA_INTEGER_MIN (-LUA_INTEGER_MAX -1) /* -2^16|32 */
|
||||
--
|
||||
1.9.1
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#if defined(LUA_USE_MACOSX)
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -17,6 +17,7 @@
|
||||
@@ -17,6 +17,7 @@ LIBS= -lm $(MYLIBS)
|
||||
MYCFLAGS=
|
||||
MYLDFLAGS=
|
||||
MYLIBS=
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
# == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE =========
|
||||
|
||||
@@ -75,7 +76,7 @@
|
||||
@@ -75,7 +76,7 @@ echo:
|
||||
@echo "MYLIBS = $(MYLIBS)"
|
||||
|
||||
# convenience targets for popular platforms
|
||||
@@ -27,7 +27,7 @@
|
||||
none:
|
||||
@echo "Please choose a platform:"
|
||||
@echo " $(PLATS)"
|
||||
@@ -90,16 +91,16 @@
|
||||
@@ -90,16 +91,16 @@ bsd:
|
||||
$(MAKE) all MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-Wl,-E"
|
||||
|
||||
freebsd:
|
||||
|
||||
19
package/utils/lua/patches-host/400-CVE-2014-5461.patch
Normal file
19
package/utils/lua/patches-host/400-CVE-2014-5461.patch
Normal file
@@ -0,0 +1,19 @@
|
||||
From: Enrico Tassi <gareuselesinge@debian.org>
|
||||
Date: Tue, 26 Aug 2014 16:20:55 +0200
|
||||
Subject: Fix stack overflow in vararg functions
|
||||
|
||||
---
|
||||
src/ldo.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/src/ldo.c
|
||||
+++ b/src/ldo.c
|
||||
@@ -274,7 +274,7 @@ int luaD_precall (lua_State *L, StkId fu
|
||||
CallInfo *ci;
|
||||
StkId st, base;
|
||||
Proto *p = cl->p;
|
||||
- luaD_checkstack(L, p->maxstacksize);
|
||||
+ luaD_checkstack(L, p->maxstacksize + p->numparams);
|
||||
func = restorestack(L, funcr);
|
||||
if (!p->is_vararg) { /* no varargs? */
|
||||
base = func + 1;
|
||||
@@ -8,7 +8,6 @@ Including it allows multiple lua versions to coexist.
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
---
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -41,10 +41,10 @@ RANLIB= ranlib
|
||||
@@ -42,7 +41,7 @@ rename to doc/luac5.1.1
|
||||
diff --git a/src/Makefile b/src/Makefile
|
||||
--- a/src/Makefile
|
||||
+++ b/src/Makefile
|
||||
@@ -29,10 +29,10 @@ CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
|
||||
@@ -29,10 +29,10 @@ CORE_O= lapi.o lcode.o ldebug.o ldo.o ld
|
||||
LIB_O= lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \
|
||||
lstrlib.o loadlib.o linit.o
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
diff --git a/src/lnum.c b/src/lnum.c
|
||||
index 1456b6a2ed23..b0632b04c2b7 100644
|
||||
--- a/src/lnum.c
|
||||
+++ b/src/lnum.c
|
||||
@@ -127,6 +127,8 @@ static int luaO_str2i (const char *s, lua_Integer *res, char **endptr_ref) {
|
||||
@@ -127,6 +127,8 @@ static int luaO_str2i (const char *s, lu
|
||||
#else
|
||||
return 0; /* Reject the number */
|
||||
#endif
|
||||
@@ -11,7 +9,7 @@ index 1456b6a2ed23..b0632b04c2b7 100644
|
||||
}
|
||||
} else if ((v > LUA_INTEGER_MAX) || (*endptr && (!isspace(*endptr)))) {
|
||||
return TK_NUMBER; /* not in signed range, or has '.', 'e' etc. trailing */
|
||||
@@ -310,3 +312,13 @@ int try_unmint( lua_Integer *r, lua_Integer ib ) {
|
||||
@@ -310,3 +312,13 @@ int try_unmint( lua_Integer *r, lua_Inte
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -25,8 +23,6 @@ index 1456b6a2ed23..b0632b04c2b7 100644
|
||||
+ return (unsigned LUA_INTEGER)v;
|
||||
+}
|
||||
+#endif
|
||||
diff --git a/src/lnum_config.h b/src/lnum_config.h
|
||||
index 19d7a4231a49..1092eead6629 100644
|
||||
--- a/src/lnum_config.h
|
||||
+++ b/src/lnum_config.h
|
||||
@@ -141,7 +141,12 @@
|
||||
@@ -43,6 +39,3 @@ index 19d7a4231a49..1092eead6629 100644
|
||||
#endif
|
||||
#ifndef LUA_INTEGER_MIN
|
||||
# define LUA_INTEGER_MIN (-LUA_INTEGER_MAX -1) /* -2^16|32 */
|
||||
--
|
||||
1.9.1
|
||||
|
||||
|
||||
19
package/utils/lua/patches/400-CVE-2014-5461.patch
Normal file
19
package/utils/lua/patches/400-CVE-2014-5461.patch
Normal file
@@ -0,0 +1,19 @@
|
||||
From: Enrico Tassi <gareuselesinge@debian.org>
|
||||
Date: Tue, 26 Aug 2014 16:20:55 +0200
|
||||
Subject: Fix stack overflow in vararg functions
|
||||
|
||||
---
|
||||
src/ldo.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/src/ldo.c
|
||||
+++ b/src/ldo.c
|
||||
@@ -274,7 +274,7 @@ int luaD_precall (lua_State *L, StkId fu
|
||||
CallInfo *ci;
|
||||
StkId st, base;
|
||||
Proto *p = cl->p;
|
||||
- luaD_checkstack(L, p->maxstacksize);
|
||||
+ luaD_checkstack(L, p->maxstacksize + p->numparams);
|
||||
func = restorestack(L, funcr);
|
||||
if (!p->is_vararg) { /* no varargs? */
|
||||
base = func + 1;
|
||||
@@ -30,7 +30,7 @@ define Package/lua5.3/Default
|
||||
SUBMENU:=Lua
|
||||
SECTION:=lang
|
||||
CATEGORY:=Languages
|
||||
TITLE:=Lua programming language
|
||||
TITLE:=Lua programming language (version 5.3)
|
||||
URL:=http://www.lua.org/
|
||||
MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
endef
|
||||
@@ -42,7 +42,7 @@ define Package/lua5.3/Default/description
|
||||
endef
|
||||
|
||||
define Package/liblua5.3
|
||||
$(call Package/lua53/Default)
|
||||
$(call Package/lua5.3/Default)
|
||||
SUBMENU:=
|
||||
SECTION:=libs
|
||||
CATEGORY:=Libraries
|
||||
@@ -51,7 +51,7 @@ $(call Package/lua53/Default)
|
||||
endef
|
||||
|
||||
define Package/liblua5.3/description
|
||||
$(call Package/lua53/Default/description)
|
||||
$(call Package/lua5.3/Default/description)
|
||||
This package contains the Lua shared libraries, needed by other programs.
|
||||
endef
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
|
||||
PKG_LICENSE:=ISC
|
||||
|
||||
PKG_ABI_VERSION:=20220812
|
||||
HOST_BUILD_DEPENDS:=libjson-c/host
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
@@ -15,8 +15,8 @@ try_version() {
|
||||
}
|
||||
|
||||
try_git() {
|
||||
SOURCE_DATE_EPOCH=$(git -C "$SOURCE" log -1 --format=format:%ct \
|
||||
"$SOURCE" 2>/dev/null)
|
||||
SOURCE_DATE_EPOCH=$(git -C "$SOURCE" log -1 --no-show-signature \
|
||||
--format=format:%ct "$SOURCE" 2>/dev/null)
|
||||
[ -n "$SOURCE_DATE_EPOCH" ]
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -279,6 +279,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -286,6 +286,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x0015) {
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||
@@ -43,7 +43,7 @@ produce a noisy warning.
|
||||
hcd->msi_enabled = 1;
|
||||
--- a/drivers/usb/host/xhci.h
|
||||
+++ b/drivers/usb/host/xhci.h
|
||||
@@ -1903,6 +1903,7 @@ struct xhci_hcd {
|
||||
@@ -1906,6 +1906,7 @@ struct xhci_hcd {
|
||||
struct xhci_hub usb2_rhub;
|
||||
struct xhci_hub usb3_rhub;
|
||||
/* support xHCI 1.0 spec USB2 hardware LPM */
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/regulator/core.c
|
||||
+++ b/drivers/regulator/core.c
|
||||
@@ -3074,7 +3074,8 @@ static int _regulator_list_voltage(struc
|
||||
@@ -3083,7 +3083,8 @@ static int _regulator_list_voltage(struc
|
||||
return rdev->desc->fixed_uV;
|
||||
|
||||
if (ops->list_voltage) {
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
return -EINVAL;
|
||||
if (lock)
|
||||
regulator_lock(rdev);
|
||||
@@ -3225,7 +3226,8 @@ int regulator_list_hardware_vsel(struct
|
||||
@@ -3235,7 +3236,8 @@ int regulator_list_hardware_vsel(struct
|
||||
struct regulator_dev *rdev = regulator->rdev;
|
||||
const struct regulator_ops *ops = rdev->desc->ops;
|
||||
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
return -EINVAL;
|
||||
if (ops->set_voltage_sel != regulator_set_voltage_sel_regmap)
|
||||
return -EOPNOTSUPP;
|
||||
@@ -4148,6 +4150,9 @@ int regulator_set_voltage_time(struct re
|
||||
@@ -4158,6 +4160,9 @@ int regulator_set_voltage_time(struct re
|
||||
|
||||
for (i = 0; i < rdev->desc->n_voltages; i++) {
|
||||
/* We only look for exact voltage matches here */
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/regulator/core.c
|
||||
+++ b/drivers/regulator/core.c
|
||||
@@ -4153,6 +4153,9 @@ int regulator_set_voltage_time(struct re
|
||||
@@ -4163,6 +4163,9 @@ int regulator_set_voltage_time(struct re
|
||||
if (i < rdev->desc->linear_min_sel)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
--- a/drivers/regulator/core.c
|
||||
+++ b/drivers/regulator/core.c
|
||||
@@ -3074,9 +3074,10 @@ static int _regulator_list_voltage(struc
|
||||
@@ -3083,9 +3083,10 @@ static int _regulator_list_voltage(struc
|
||||
return rdev->desc->fixed_uV;
|
||||
|
||||
if (ops->list_voltage) {
|
||||
@@ -34,7 +34,7 @@ Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
if (lock)
|
||||
regulator_lock(rdev);
|
||||
ret = ops->list_voltage(rdev, selector);
|
||||
@@ -3226,9 +3227,10 @@ int regulator_list_hardware_vsel(struct
|
||||
@@ -3236,9 +3237,10 @@ int regulator_list_hardware_vsel(struct
|
||||
struct regulator_dev *rdev = regulator->rdev;
|
||||
const struct regulator_ops *ops = rdev->desc->ops;
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
};
|
||||
|
||||
static const struct of_device_id atmel_pctrl_of_match[] = {
|
||||
@@ -1025,6 +1034,11 @@ static int atmel_pinctrl_probe(struct pl
|
||||
@@ -1032,6 +1041,11 @@ static int atmel_pinctrl_probe(struct pl
|
||||
atmel_pioctrl_data = match->data;
|
||||
atmel_pioctrl->nbanks = atmel_pioctrl_data->nbanks;
|
||||
atmel_pioctrl->npins = atmel_pioctrl->nbanks * ATMEL_PIO_NPINS_PER_BANK;
|
||||
|
||||
@@ -111,7 +111,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
};
|
||||
|
||||
static const struct of_device_id atmel_pctrl_of_match[] = {
|
||||
@@ -1039,6 +1065,7 @@ static int atmel_pinctrl_probe(struct pl
|
||||
@@ -1046,6 +1072,7 @@ static int atmel_pinctrl_probe(struct pl
|
||||
atmel_pioctrl->npins -= ATMEL_PIO_NPINS_PER_BANK;
|
||||
atmel_pioctrl->npins += atmel_pioctrl_data->last_bank_count;
|
||||
}
|
||||
|
||||
@@ -327,7 +327,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
{
|
||||
struct atmel_pioctrl *atmel_pioctrl = pinctrl_dev_get_drvdata(pctldev);
|
||||
u32 conf;
|
||||
@@ -1108,8 +1112,8 @@ static int atmel_pinctrl_probe(struct pl
|
||||
@@ -1115,8 +1119,8 @@ static int atmel_pinctrl_probe(struct pl
|
||||
return -ENOMEM;
|
||||
for (i = 0 ; i < atmel_pioctrl->npins; i++) {
|
||||
struct atmel_group *group = atmel_pioctrl->groups + i;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user