mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-15 18:03:30 +00:00
mac80211: update to 5.8.18-1 (#6200)
ath10k-ct-firmware: update to 2020-11-08 ath10k-ct: update to 2020-12-24 mt76: update to 2020-12-18 wireless-regdb: update to version 2020.11.20
This commit is contained in:
parent
1f87014d58
commit
69f46989e2
@ -1,8 +1,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ath10k-ct-firmware
|
||||
PKG_VERSION:=2020-07-02
|
||||
PKG_RELEASE:=3
|
||||
PKG_VERSION:=2020-11-08
|
||||
PKG_RELEASE:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -28,120 +28,120 @@ define Download/ct-firmware-htt
|
||||
URL_FILE:=$($(1)_FIRMWARE_FILE_CT_HTT)
|
||||
endef
|
||||
|
||||
QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.019
|
||||
QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.022
|
||||
define Download/ath10k-firmware-qca988x-ct
|
||||
$(call Download/ct-firmware,QCA988X,)
|
||||
HASH:=8b4c99253aa309d35f2e060c190091b8db1b84dbda06a6a15c83ac0f9a938126
|
||||
HASH:=398e4380e7e55105f3da0f78af29d1e437404ed3a82597aa4b6daaa7dce1a38e
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca988x-ct))
|
||||
|
||||
QCA988X_FIRMWARE_FILE_CT_FULL_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.019
|
||||
QCA988X_FIRMWARE_FILE_CT_FULL_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.022
|
||||
define Download/ath10k-firmware-qca988x-ct-full-htt
|
||||
$(call Download/ct-firmware-full-htt,QCA988X,)
|
||||
HASH:=a7168916d6aa5e4d7858f8b620c0c980c76d03f390929db6f4077685ce2051e7
|
||||
HASH:=990d9cbf79dd81f141257a289f89808bd7726406c9ed845a7e49e5167002ffde
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca988x-ct-full-htt))
|
||||
|
||||
|
||||
QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.019
|
||||
QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community-22.bin.lede.022
|
||||
define Download/ath10k-firmware-qca9887-ct
|
||||
$(call Download/ct-firmware,QCA9887,ath10k-9887)
|
||||
HASH:=459692deb186a63ab8eeddb7ad5d54779266e68ca686e7c46062554db6dca12b
|
||||
HASH:=a526cb44560da569781e10bf608194b1eff29b250e9887dba6d4d9a15c921c1e
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9887-ct))
|
||||
|
||||
QCA9887_FIRMWARE_FILE_CT_FULL_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.019
|
||||
QCA9887_FIRMWARE_FILE_CT_FULL_HTT:=firmware-2-ct-full-htt-mgt-community-22.bin.lede.022
|
||||
define Download/ath10k-firmware-qca9887-ct-full-htt
|
||||
$(call Download/ct-firmware-full-htt,QCA9887,ath10k-9887)
|
||||
HASH:=fd126a457d0927d0c8ea10d66ef5b67d5e1e0741f8692bb3016bb602d0af3098
|
||||
HASH:=0b60fc558b773e9cbd5c2df903c894a030872fdb96390b0cca4b23b7fc7b881f
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9887-ct-full-htt))
|
||||
|
||||
|
||||
QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.019
|
||||
QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca99x0-ct
|
||||
$(call Download/ct-firmware,QCA99X0,ath10k-10-4b)
|
||||
HASH:=7dc934f934bc4973c9273a4f22cfead8e26ec6f579647af31b718a860eca0a4b
|
||||
HASH:=578ad67976b61a393eb820a05e8eae70ec95f6b803bedbe952b8ff573eb09abe
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca99x0-ct))
|
||||
|
||||
QCA99X0_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.019
|
||||
QCA99X0_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca99x0-ct-full-htt
|
||||
$(call Download/ct-firmware-full-htt,QCA99X0,ath10k-10-4b)
|
||||
HASH:=71a27b245a382fe009938d2826d5c97a90dceb10ddf638325268df91837ea302
|
||||
HASH:=8ea5c9f27c048796d406706a9c8471cd070f5aeb768622bb334a04853d557a4d
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca99x0-ct-full-htt))
|
||||
|
||||
QCA99X0_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.019
|
||||
QCA99X0_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca99x0-ct-htt
|
||||
$(call Download/ct-firmware-htt,QCA99X0,ath10k-10-4b)
|
||||
HASH:=9ed4fe41e5b0f30172f71ae0fe382dc0aab8aa4f8a898417af4f7ee936575ef6
|
||||
HASH:=7b0b7545114e8dc0f2c70dc8a43a5a48d84d37f2a4673977a692c5f3361445c6
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca99x0-ct-htt))
|
||||
|
||||
|
||||
QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.019
|
||||
QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca9984-ct
|
||||
$(call Download/ct-firmware,QCA9984,ath10k-9984-10-4b)
|
||||
HASH:=32d13f432691fe759ded7d027052e925233adb436cd8f729f85ec3d19ccd1dfd
|
||||
HASH:=7bfe5bf7c38532fa57db62ebc56ec625583928d5d4736475d5dec4d4ae031154
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9984-ct))
|
||||
|
||||
QCA9984_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.019
|
||||
QCA9984_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca9984-ct-full-htt
|
||||
$(call Download/ct-firmware-full-htt,QCA9984,ath10k-9984-10-4b)
|
||||
HASH:=e8ab69777bd00b5fc6b1b7acccb55b903553a99932a5b0351602b5f690106588
|
||||
HASH:=672be40c4d987d7e8e309341262a37cda7baf925416d1dc651284b6d2bd30969
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9984-ct-full-htt))
|
||||
|
||||
QCA9984_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.019
|
||||
QCA9984_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca9984-ct-htt
|
||||
$(call Download/ct-firmware-htt,QCA9984,ath10k-9984-10-4b)
|
||||
HASH:=74449b303b626e0713b3fd4f2d6103d65859403b2dd7bdd8882aa772b69b59c7
|
||||
HASH:=a24e887f13aca4358ab2b6a42a7212d066e4d19e29b00bb26f9681b1dc8d0eb0
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9984-ct-htt))
|
||||
|
||||
|
||||
QCA4019_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.019
|
||||
QCA4019_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca4019-ct
|
||||
$(call Download/ct-firmware,QCA4019,ath10k-4019-10-4b)
|
||||
HASH:=4b89763087c7ed9b56046c4e621b7f045e452436d8d9b430a5d171179e313592
|
||||
HASH:=503956d9bf09d603e4cf36ac080fa5b5a22032166204e3c15ae898647bc50df3
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca4019-ct))
|
||||
|
||||
QCA4019_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.019
|
||||
QCA4019_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca4019-ct-full-htt
|
||||
$(call Download/ct-firmware-full-htt,QCA4019,ath10k-4019-10-4b)
|
||||
HASH:=fba591e5777c53b82542ba16cae69d9bb4684837f2fa4cee1b9b26f648096748
|
||||
HASH:=591bf9ed00fb540d7ba034453f17696e8dd91a4b7d81f7cc1ec41f447fa74831
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca4019-ct-full-htt))
|
||||
|
||||
QCA4019_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.019
|
||||
QCA4019_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca4019-ct-htt
|
||||
$(call Download/ct-firmware-htt,QCA4019,ath10k-4019-10-4b)
|
||||
HASH:=0d534c3c424184b8ec2773f15c8933bdab0d39b6f664d2578c6602b0eb7035d1
|
||||
HASH:=06e58a283ff90d021ff7cb58684cbf39750bd71cf91c56b32add64253133929c
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca4019-ct-htt))
|
||||
|
||||
|
||||
QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.019
|
||||
QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca9888-ct
|
||||
$(call Download/ct-firmware,QCA9888,ath10k-9888-10-4b)
|
||||
HASH:=048f4300725e6ebbf94a6bf4f3f4e4592c446fcdbe1d801aaac024b15e89e0c9
|
||||
HASH:=82ff5afcf0c9dcdb03b0b40c6eddc81e11b18e4f522f681935b5ec42537972ee
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9888-ct))
|
||||
|
||||
QCA9888_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.019
|
||||
QCA9888_FIRMWARE_FILE_CT_FULL_HTT:=firmware-5-ct-full-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca9888-ct-full-htt
|
||||
$(call Download/ct-firmware-full-htt,QCA9888,ath10k-9888-10-4b)
|
||||
HASH:=d2a7e9fea6bd854721b3fc03a3a00d379d303b2bce339377ee87a1c14a60312d
|
||||
HASH:=1a741f2cf43fbea24ed831b4e76cbb114b525d1ee9b917ce0000916cbcc42f92
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9888-ct-full-htt))
|
||||
|
||||
QCA9888_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.019
|
||||
QCA9888_FIRMWARE_FILE_CT_HTT:=firmware-5-ct-htt-mgt-community-12.bin-lede.022
|
||||
define Download/ath10k-firmware-qca9888-ct-htt
|
||||
$(call Download/ct-firmware-htt,QCA9888,ath10k-9888-10-4b)
|
||||
HASH:=e52a6db33347c641ee791fd9a3a57a2503cdda1adc6b8d943e336431528b9d2a
|
||||
HASH:=34bf07912a2f3fce4a5887c690848bb06d339bd1c86541b0b57b9c45eccc88e4
|
||||
endef
|
||||
$(eval $(call Download,ath10k-firmware-qca9888-ct-htt))
|
||||
|
||||
|
@ -37,3 +37,11 @@ define Package/carl9170-firmware/install
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/carl9170-1.fw $(1)/lib/firmware
|
||||
endef
|
||||
$(eval $(call BuildPackage,carl9170-firmware))
|
||||
|
||||
Package/wil6210-firmware = $(call Package/firmware-default,wil6210 firmware)
|
||||
define Package/wil6210-firmware/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/wil6210.fw $(1)/lib/firmware
|
||||
$(INSTALL_DATA) $(PKG_BUILD_DIR)/wil6210.brd $(1)/lib/firmware
|
||||
endef
|
||||
$(eval $(call BuildPackage,wil6210-firmware))
|
||||
|
@ -1,12 +1,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=wireless-regdb
|
||||
PKG_VERSION:=2020.04.29
|
||||
PKG_VERSION:=2020.11.20
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
|
||||
PKG_HASH:=89fd031aed5977c219a71501e144375a10e7c90d1005d5d086ea7972886a2c7a
|
||||
PKG_HASH:=b4164490d82ff7b0086e812ac42ab27baf57be24324d4c0ee1c5dd6ba27f2a52
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
diff --git a/db.txt b/db.txt
|
||||
index 90d3bc9..cc2a595 100644
|
||||
--- a/db.txt
|
||||
+++ b/db.txt
|
||||
@@ -347,9 +347,9 @@ country CL: DFS-JP
|
||||
@ -15,7 +13,7 @@ index 90d3bc9..cc2a595 100644
|
||||
(5735 - 5835 @ 80), (30)
|
||||
# 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm
|
||||
# ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf
|
||||
@@ -1571,13 +1571,13 @@ country UG: DFS-FCC
|
||||
@@ -1580,13 +1580,13 @@ country UG: DFS-FCC
|
||||
country US: DFS-FCC
|
||||
(2400 - 2483.5 @ 40), (30)
|
||||
# 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients
|
@ -1,16 +1,16 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=ath10k-ct
|
||||
PKG_RELEASE=2
|
||||
PKG_RELEASE=1
|
||||
|
||||
PKG_LICENSE:=GPLv2
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2020-10-08
|
||||
PKG_SOURCE_VERSION:=1d28d176e5b6e63a6583f497adf68e1d9c1dc962
|
||||
PKG_MIRROR_HASH:=f611762647822742f7c8f9da242e33d9bf6da0a14976b87408af28f280802ae0
|
||||
PKG_SOURCE_DATE:=2020-12-24
|
||||
PKG_SOURCE_VERSION:=b753e8bf22b94297acbaa370b4cb0be87e3da4b8
|
||||
PKG_MIRROR_HASH:=e026296208e0c20fd0775704c2167da5a447aef4080cedc5fba0797f0e180d8d
|
||||
|
||||
# Build the 5.8 ath10k-ct driver version.
|
||||
# Probably this should match as closely as
|
||||
|
@ -11,7 +11,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
|
||||
--- a/ath10k-5.8/mac.c
|
||||
+++ b/ath10k-5.8/mac.c
|
||||
@@ -6653,6 +6653,7 @@ static void ath10k_recalculate_mgmt_rate
|
||||
@@ -6691,6 +6691,7 @@ static void ath10k_recalculate_mgmt_rate
|
||||
return;
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
vdev_param = ar->wmi.vdev_param->mgmt_rate;
|
||||
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
|
||||
hw_rate_code);
|
||||
@@ -6879,6 +6880,7 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6917,6 +6918,7 @@ static void ath10k_bss_info_changed(stru
|
||||
"mac vdev %d mcast_rate %x\n",
|
||||
arvif->vdev_id, rate);
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
||||
vdev_param = ar->wmi.vdev_param->mcast_data_rate;
|
||||
ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id,
|
||||
vdev_param, rate);
|
||||
@@ -6887,6 +6889,7 @@ static void ath10k_bss_info_changed(stru
|
||||
@@ -6925,6 +6927,7 @@ static void ath10k_bss_info_changed(stru
|
||||
"failed to set mcast rate on vdev %i: %d\n",
|
||||
arvif->vdev_id, ret);
|
||||
|
||||
|
@ -161,7 +161,7 @@ v13:
|
||||
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
|
||||
.uart_pin = 7,
|
||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||
@@ -3675,6 +3681,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
@@ -3688,6 +3694,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||
ath10k_wmi_check_apply_board_power_ctl_table(ar);
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ v13:
|
||||
return 0;
|
||||
|
||||
err_hif_stop:
|
||||
@@ -3933,9 +3943,18 @@ static void ath10k_core_register_work(st
|
||||
@@ -3946,9 +3956,18 @@ static void ath10k_core_register_work(st
|
||||
goto err_spectral_destroy;
|
||||
}
|
||||
|
||||
@ -191,7 +191,7 @@ v13:
|
||||
err_spectral_destroy:
|
||||
ath10k_spectral_destroy(ar);
|
||||
err_debug_destroy:
|
||||
@@ -3995,6 +4014,8 @@ void ath10k_core_unregister(struct ath10
|
||||
@@ -4008,6 +4027,8 @@ void ath10k_core_unregister(struct ath10
|
||||
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
|
||||
return;
|
||||
|
||||
@ -210,7 +210,7 @@ v13:
|
||||
|
||||
#include "htt.h"
|
||||
#include "htc.h"
|
||||
@@ -1523,6 +1524,13 @@ struct ath10k {
|
||||
@@ -1530,6 +1531,13 @@ struct ath10k {
|
||||
} testmode;
|
||||
|
||||
struct {
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
|
||||
--- a/ath10k-5.8/core.h
|
||||
+++ b/ath10k-5.8/core.h
|
||||
@@ -1631,6 +1631,10 @@ struct ath10k {
|
||||
@@ -1638,6 +1638,10 @@ struct ath10k {
|
||||
u8 csi_data[4096];
|
||||
u16 csi_data_len;
|
||||
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||
if (ret)
|
||||
--- a/ath10k-5.8/mac.c
|
||||
+++ b/ath10k-5.8/mac.c
|
||||
@@ -10680,7 +10680,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -10718,7 +10718,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
||||
|
||||
#ifdef CPTCFG_MAC80211_LEDS
|
||||
|
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=5.8-1
|
||||
PKG_RELEASE:=2
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.8/
|
||||
PKG_HASH:=19b4174d89bf11ee221458e11f1e8dace26558498774b823051156f522d2036b
|
||||
PKG_VERSION:=5.8.18-1
|
||||
PKG_RELEASE:=3
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.8.18/
|
||||
PKG_HASH:=f04a8172423c6a945fc7d9844b04f33fda9ae574e552f8f18ee3bdfcfb494563
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
|
@ -1,6 +1,6 @@
|
||||
PKG_DRIVERS += \
|
||||
ath ath5k ath6kl ath6kl-sdio ath6kl-usb ath9k ath9k-common ath9k-htc ath10k \
|
||||
ath11k ar5523 carl9170 owl-loader
|
||||
ath11k ar5523 carl9170 owl-loader wil6210
|
||||
|
||||
PKG_CONFIG_DEPENDS += \
|
||||
CONFIG_PACKAGE_ATH_DEBUG \
|
||||
@ -22,7 +22,8 @@ ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
|
||||
ATH11K_DEBUGFS \
|
||||
CARL9170_DEBUGFS \
|
||||
ATH5K_DEBUG \
|
||||
ATH6KL_DEBUG
|
||||
ATH6KL_DEBUG \
|
||||
WIL6210_DEBUGFS
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PACKAGE_MAC80211_TRACING
|
||||
@ -31,7 +32,8 @@ ifdef CONFIG_PACKAGE_MAC80211_TRACING
|
||||
ATH11K_TRACING \
|
||||
ATH6KL_TRACING \
|
||||
ATH_TRACEPOINTS \
|
||||
ATH5K_TRACER
|
||||
ATH5K_TRACER \
|
||||
WIL6210_TRACING
|
||||
endif
|
||||
|
||||
config-$(call config_package,ath) += ATH_CARDS ATH_COMMON ATH_REG_DYNAMIC_USER_REG_HINTS
|
||||
@ -72,6 +74,8 @@ config-$(call config_package,ath6kl-usb) += ATH6KL_USB
|
||||
config-$(call config_package,carl9170) += CARL9170
|
||||
config-$(call config_package,ar5523) += AR5523
|
||||
|
||||
config-$(call config_package,wil6210) += WIL6210
|
||||
|
||||
define KernelPackage/ath/config
|
||||
if PACKAGE_kmod-ath
|
||||
config ATH_USER_REGD
|
||||
@ -222,6 +226,7 @@ define KernelPackage/ath9k/config
|
||||
config ATH9K_SUPPORT_PCOEM
|
||||
bool "Support chips used in PC OEM cards"
|
||||
depends on PACKAGE_kmod-ath9k
|
||||
default y if (x86_64 || i386)
|
||||
|
||||
config ATH9K_TX99
|
||||
bool "Enable TX99 support (WARNING: testing only, breaks normal operation!)"
|
||||
@ -327,3 +332,11 @@ define KernelPackage/ar5523
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ar5523/ar5523.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ar5523)
|
||||
endef
|
||||
|
||||
define KernelPackage/wil6210
|
||||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=QCA/Wilocity 60g WiFi card wil6210 support
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +wil6210-firmware
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/wil6210/wil6210.ko
|
||||
AUTOLOAD:=$(call AutoProbe,wil6210)
|
||||
endef
|
||||
|
@ -409,7 +409,7 @@ mac80211_generate_mac() {
|
||||
[ "$mask" = "00:00:00:00:00:00" ] && {
|
||||
mask="ff:ff:ff:ff:ff:ff";
|
||||
|
||||
[ "$(wc -l < /sys/class/ieee80211/${phy}/addresses)" -gt 1 ] && {
|
||||
[ "$(wc -l < /sys/class/ieee80211/${phy}/addresses)" -gt $id ] && {
|
||||
addr="$(mac80211_get_addr "$phy" "$id")"
|
||||
[ -n "$addr" ] && {
|
||||
echo "$addr"
|
||||
@ -429,7 +429,7 @@ mac80211_generate_mac() {
|
||||
[ "$((0x$mask1))" -gt 0 ] && {
|
||||
b1="0x$1"
|
||||
[ "$id" -gt 0 ] && \
|
||||
b1=$(($b1 ^ ((($id - !($b1 & 2)) << 2) | 0x2)))
|
||||
b1=$(($b1 ^ ((($id - !($b1 & 2)) << 2)) | 0x2))
|
||||
printf "%02x:%s:%s:%s:%s:%s" $b1 $2 $3 $4 $5 $6
|
||||
return
|
||||
}
|
||||
@ -1019,9 +1019,8 @@ drv_mac80211_setup() {
|
||||
if [ "$no_reload" != "0" ]; then
|
||||
add_ap=1
|
||||
ubus wait_for hostapd
|
||||
ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}"
|
||||
local hostapd_pid=$(ubus call service list '{"name": "wpad"}' | jsonfilter -l 1 -e "@['wpad'].instances['hostapd'].pid")
|
||||
wireless_add_process "$hostapd_pid" "/usr/sbin/hostapd" 1
|
||||
local hostapd_pid=$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}" | jsonfilter -l 1 -e @.pid)
|
||||
wireless_add_process "$hostapd_pid" "/usr/sbin/hostapd" 1 1
|
||||
fi
|
||||
ret="$?"
|
||||
[ "$ret" != 0 ] && {
|
||||
|
@ -88,6 +88,12 @@ detect_mac80211() {
|
||||
iw phy "$dev" info | grep -q 'VHT Capabilities' && htmode="VHT80"
|
||||
}
|
||||
|
||||
iw phy "$dev" info | grep -q '\* 5.... MHz \[' && {
|
||||
mode_band="ad"
|
||||
channel=$(iw phy "$dev" info | grep '\* 5.... MHz \[' | grep '(disabled)' -v -m 1 | sed 's/[^[]*\[\|\|\].*//g')
|
||||
iw phy "$dev" info | grep -q 'Capabilities:' && htmode="HT20"
|
||||
}
|
||||
|
||||
[ -n "$htmode" ] && ht_capab="set wireless.radio${devidx}.htmode=$htmode"
|
||||
|
||||
path="$(mac80211_phy_to_path "$dev")"
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -3042,6 +3042,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -3045,6 +3045,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;
|
||||
@@ -3293,6 +3295,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
@@ -3296,6 +3298,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
@ -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
|
||||
@@ -712,8 +712,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
@@ -714,8 +714,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
|
||||
@@ -2953,6 +2953,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2955,6 +2955,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
|
||||
@@ -2905,6 +2905,63 @@ done:
|
||||
@@ -2907,6 +2907,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)
|
||||
{
|
||||
@@ -2994,6 +3051,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -3002,6 +3059,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;
|
||||
@@ -3018,6 +3076,17 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -3026,6 +3084,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());
|
||||
@@ -5470,6 +5539,7 @@ static struct cfg80211_ops brcmf_cfg8021
|
||||
@@ -5478,6 +5547,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,
|
||||
|
@ -9,7 +9,7 @@
|
||||
depends on m
|
||||
default n
|
||||
help
|
||||
@@ -197,18 +197,18 @@ config LIB80211
|
||||
@@ -197,19 +197,19 @@ config LIB80211
|
||||
Drivers should select this themselves if needed.
|
||||
|
||||
config LIB80211_CRYPT_WEP
|
||||
@ -22,6 +22,7 @@
|
||||
- tristate
|
||||
+ tristate "lib80211 CCMP support"
|
||||
depends on m
|
||||
depends on CRYPTO
|
||||
depends on CRYPTO_AES
|
||||
depends on CRYPTO_CCM
|
||||
|
||||
|
@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1197,7 +1197,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||
@@ -1198,7 +1198,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||
sdata->vif.bss_conf.ftmr_params = NULL;
|
||||
|
||||
__sta_info_flush(sdata, true);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2345,7 +2345,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
@@ -2346,7 +2346,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
* the frames sent while scanning on other channel will be
|
||||
* lost)
|
||||
*/
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -843,6 +843,11 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
@@ -846,6 +846,11 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
struct net_device *prev_dev = NULL;
|
||||
int rtap_len;
|
||||
|
||||
|
@ -58,7 +58,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2578,8 +2578,8 @@ static void ieee80211_deliver_skb_to_loc
|
||||
@@ -2579,8 +2579,8 @@ static void ieee80211_deliver_skb_to_loc
|
||||
memset(skb->cb, 0, sizeof(skb->cb));
|
||||
|
||||
/* deliver to local stack */
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
else
|
||||
netif_receive_skb(skb);
|
||||
}
|
||||
@@ -3869,7 +3869,6 @@ void ieee80211_release_reorder_timeout(s
|
||||
@@ -3870,7 +3870,6 @@ void ieee80211_release_reorder_timeout(s
|
||||
/* This is OK -- must be QoS data frame */
|
||||
.security_idx = tid,
|
||||
.seqno_idx = tid,
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
};
|
||||
struct tid_ampdu_rx *tid_agg_rx;
|
||||
|
||||
@@ -4479,8 +4478,8 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4480,8 +4479,8 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
/* deliver to local stack */
|
||||
skb->protocol = eth_type_trans(skb, fast_rx->dev);
|
||||
memset(skb->cb, 0, sizeof(skb->cb));
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
else
|
||||
netif_receive_skb(skb);
|
||||
|
||||
@@ -4547,7 +4546,7 @@ static bool ieee80211_prepare_and_rx_han
|
||||
@@ -4548,7 +4547,7 @@ static bool ieee80211_prepare_and_rx_han
|
||||
static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
|
||||
struct ieee80211_sta *pubsta,
|
||||
struct sk_buff *skb,
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
@@ -4562,7 +4561,7 @@ static void __ieee80211_rx_handle_packet
|
||||
@@ -4563,7 +4562,7 @@ static void __ieee80211_rx_handle_packet
|
||||
memset(&rx, 0, sizeof(rx));
|
||||
rx.skb = skb;
|
||||
rx.local = local;
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (ieee80211_is_data(fc) || ieee80211_is_mgmt(fc))
|
||||
I802_DEBUG_INC(local->dot11ReceivedFragmentCount);
|
||||
@@ -4670,8 +4669,8 @@ static void __ieee80211_rx_handle_packet
|
||||
@@ -4671,8 +4670,8 @@ static void __ieee80211_rx_handle_packet
|
||||
* This is the receive path handler. It is called by a low level driver when an
|
||||
* 802.11 MPDU is received from the hardware.
|
||||
*/
|
||||
@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct ieee80211_rate *rate = NULL;
|
||||
@@ -4763,36 +4762,53 @@ void ieee80211_rx_napi(struct ieee80211_
|
||||
@@ -4764,36 +4763,53 @@ void ieee80211_rx_napi(struct ieee80211_
|
||||
status->rx_flags = 0;
|
||||
|
||||
/*
|
||||
|
@ -1,116 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 8 Aug 2020 19:20:02 +0200
|
||||
Subject: [PATCH] mac80211: reduce packet loss event false positives
|
||||
|
||||
When running a large number of packets per second with a high data rate
|
||||
and long A-MPDUs, the packet loss threshold can be reached very quickly
|
||||
when the link conditions change. This frequently shows up as spurious
|
||||
disconnects.
|
||||
Mitigate false positives by using a similar logic for regular stations
|
||||
as the one being used for TDLS, though with a more aggressive timeout.
|
||||
Packet loss events are only reported if no ACK was received for a second.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -522,7 +522,7 @@ struct ieee80211_sta_rx_stats {
|
||||
* @status_stats.retry_failed: # of frames that failed after retry
|
||||
* @status_stats.retry_count: # of retries attempted
|
||||
* @status_stats.lost_packets: # of lost packets
|
||||
- * @status_stats.last_tdls_pkt_time: timestamp of last TDLS packet
|
||||
+ * @status_stats.last_pkt_time: timestamp of last ACKed packet
|
||||
* @status_stats.msdu_retries: # of MSDU retries
|
||||
* @status_stats.msdu_failed: # of failed MSDUs
|
||||
* @status_stats.last_ack: last ack timestamp (jiffies)
|
||||
@@ -595,7 +595,7 @@ struct sta_info {
|
||||
unsigned long filtered;
|
||||
unsigned long retry_failed, retry_count;
|
||||
unsigned int lost_packets;
|
||||
- unsigned long last_tdls_pkt_time;
|
||||
+ unsigned long last_pkt_time;
|
||||
u64 msdu_retries[IEEE80211_NUM_TIDS + 1];
|
||||
u64 msdu_failed[IEEE80211_NUM_TIDS + 1];
|
||||
unsigned long last_ack;
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -757,12 +757,16 @@ static void ieee80211_report_used_skb(st
|
||||
* - current throughput (higher value for higher tpt)?
|
||||
*/
|
||||
#define STA_LOST_PKT_THRESHOLD 50
|
||||
+#define STA_LOST_PKT_TIME HZ /* 1 sec since last ACK */
|
||||
#define STA_LOST_TDLS_PKT_THRESHOLD 10
|
||||
#define STA_LOST_TDLS_PKT_TIME (10*HZ) /* 10secs since last ACK */
|
||||
|
||||
static void ieee80211_lost_packet(struct sta_info *sta,
|
||||
struct ieee80211_tx_info *info)
|
||||
{
|
||||
+ unsigned long pkt_time = STA_LOST_PKT_TIME;
|
||||
+ unsigned int pkt_thr = STA_LOST_PKT_THRESHOLD;
|
||||
+
|
||||
/* If driver relies on its own algorithm for station kickout, skip
|
||||
* mac80211 packet loss mechanism.
|
||||
*/
|
||||
@@ -775,21 +779,20 @@ static void ieee80211_lost_packet(struct
|
||||
return;
|
||||
|
||||
sta->status_stats.lost_packets++;
|
||||
- if (!sta->sta.tdls &&
|
||||
- sta->status_stats.lost_packets < STA_LOST_PKT_THRESHOLD)
|
||||
- return;
|
||||
+ if (sta->sta.tdls) {
|
||||
+ pkt_time = STA_LOST_TDLS_PKT_TIME;
|
||||
+ pkt_thr = STA_LOST_PKT_THRESHOLD;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* If we're in TDLS mode, make sure that all STA_LOST_TDLS_PKT_THRESHOLD
|
||||
* of the last packets were lost, and that no ACK was received in the
|
||||
* last STA_LOST_TDLS_PKT_TIME ms, before triggering the CQM packet-loss
|
||||
* mechanism.
|
||||
+ * For non-TDLS, use STA_LOST_PKT_THRESHOLD and STA_LOST_PKT_TIME
|
||||
*/
|
||||
- if (sta->sta.tdls &&
|
||||
- (sta->status_stats.lost_packets < STA_LOST_TDLS_PKT_THRESHOLD ||
|
||||
- time_before(jiffies,
|
||||
- sta->status_stats.last_tdls_pkt_time +
|
||||
- STA_LOST_TDLS_PKT_TIME)))
|
||||
+ if (sta->status_stats.lost_packets < pkt_thr ||
|
||||
+ !time_after(jiffies, sta->status_stats.last_pkt_time + pkt_time))
|
||||
return;
|
||||
|
||||
cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr,
|
||||
@@ -1042,9 +1045,7 @@ static void __ieee80211_tx_status(struct
|
||||
sta->status_stats.lost_packets = 0;
|
||||
|
||||
/* Track when last TDLS packet was ACKed */
|
||||
- if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
|
||||
- sta->status_stats.last_tdls_pkt_time =
|
||||
- jiffies;
|
||||
+ sta->status_stats.last_pkt_time = jiffies;
|
||||
} else if (noack_success) {
|
||||
/* nothing to do here, do not account as lost */
|
||||
} else {
|
||||
@@ -1177,9 +1178,8 @@ void ieee80211_tx_status_ext(struct ieee
|
||||
if (sta->status_stats.lost_packets)
|
||||
sta->status_stats.lost_packets = 0;
|
||||
|
||||
- /* Track when last TDLS packet was ACKed */
|
||||
- if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
|
||||
- sta->status_stats.last_tdls_pkt_time = jiffies;
|
||||
+ /* Track when last packet was ACKed */
|
||||
+ sta->status_stats.last_pkt_time = jiffies;
|
||||
} else if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
|
||||
return;
|
||||
} else if (noack_success) {
|
||||
@@ -1268,8 +1268,7 @@ void ieee80211_tx_status_8023(struct iee
|
||||
if (sta->status_stats.lost_packets)
|
||||
sta->status_stats.lost_packets = 0;
|
||||
|
||||
- if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
|
||||
- sta->status_stats.last_tdls_pkt_time = jiffies;
|
||||
+ sta->status_stats.last_pkt_time = jiffies;
|
||||
} else {
|
||||
ieee80211_lost_packet(sta, info);
|
||||
}
|
@ -55,12 +55,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ agg_shift = 3;
|
||||
+ else
|
||||
+ agg_shift = 4;
|
||||
|
||||
- return airtime;
|
||||
+
|
||||
+ duration *= len;
|
||||
+ duration /= AVG_PKT_SIZE;
|
||||
+ duration /= 1024;
|
||||
+
|
||||
|
||||
- return airtime;
|
||||
+ return duration + (overhead >> agg_shift);
|
||||
}
|
||||
|
||||
|
@ -67,12 +67,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!acked && !noack_success)
|
||||
- sta->status_stats.retry_failed++;
|
||||
- sta->status_stats.retry_count += retry_count;
|
||||
-
|
||||
+ sta->status_stats.msdu_failed[tid]++;
|
||||
|
||||
- if (ieee80211_is_data_present(fc)) {
|
||||
- if (!acked && !noack_success)
|
||||
- sta->status_stats.msdu_failed[tid]++;
|
||||
+ sta->status_stats.msdu_failed[tid]++;
|
||||
|
||||
-
|
||||
- sta->status_stats.msdu_retries[tid] +=
|
||||
- retry_count;
|
||||
- }
|
||||
|
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -1811,9 +1811,6 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
@@ -1812,9 +1812,6 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
sta->rx_stats.last_rate = sta_stats_encode_rate(status);
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
sta->rx_stats.fragments++;
|
||||
|
||||
u64_stats_update_begin(&rx->sta->rx_stats.syncp);
|
||||
@@ -4148,7 +4145,6 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4149,7 +4146,6 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2);
|
||||
fastrx.expected_ds_bits = 0;
|
||||
} else {
|
||||
@ -130,7 +130,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1);
|
||||
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr3);
|
||||
fastrx.expected_ds_bits =
|
||||
@@ -4378,11 +4374,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4379,11 +4375,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
pskb_trim(skb, skb->len - fast_rx->icv_len))
|
||||
goto drop;
|
||||
|
||||
|
@ -129,7 +129,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2896,7 +2896,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2897,7 +2897,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
fwd_hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_RETRY);
|
||||
info = IEEE80211_SKB_CB(fwd_skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/**
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1693,6 +1693,7 @@ static int ieee80211_change_station(stru
|
||||
@@ -1694,6 +1694,7 @@ static int ieee80211_change_station(stru
|
||||
|
||||
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
__ieee80211_check_fast_rx_iface(vlansdata);
|
||||
|
@ -1,34 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Thu, 17 Sep 2020 12:07:19 +0200
|
||||
Subject: [PATCH] mac80211: do not allow bigger VHT MPDUs than the hardware
|
||||
supports
|
||||
|
||||
Limit maximum VHT MPDU size by local capability
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/vht.c
|
||||
+++ b/net/mac80211/vht.c
|
||||
@@ -168,10 +168,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
|
||||
/* take some capabilities as-is */
|
||||
cap_info = le32_to_cpu(vht_cap_ie->vht_cap_info);
|
||||
vht_cap->cap = cap_info;
|
||||
- vht_cap->cap &= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 |
|
||||
- IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 |
|
||||
- IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 |
|
||||
- IEEE80211_VHT_CAP_RXLDPC |
|
||||
+ vht_cap->cap &= IEEE80211_VHT_CAP_RXLDPC |
|
||||
IEEE80211_VHT_CAP_VHT_TXOP_PS |
|
||||
IEEE80211_VHT_CAP_HTC_VHT |
|
||||
IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
|
||||
@@ -180,6 +177,9 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
|
||||
IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |
|
||||
IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN;
|
||||
|
||||
+ vht_cap->cap |= min_t(u32, cap_info & IEEE80211_VHT_CAP_MAX_MPDU_MASK,
|
||||
+ own_cap.cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK);
|
||||
+
|
||||
/* and some based on our own capabilities */
|
||||
switch (own_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) {
|
||||
case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ:
|
@ -0,0 +1,25 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Fri, 18 Dec 2020 20:08:06 +0100
|
||||
Subject: [PATCH] mac80211: do not drop tx nulldata packets on encrypted links
|
||||
|
||||
ieee80211_tx_h_select_key drops any non-mgmt packets without a key when
|
||||
encryption is used. This is wrong for nulldata packets that can't be
|
||||
encrypted and are sent out for probing clients and indicating 4-address
|
||||
mode.
|
||||
|
||||
Reported-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
|
||||
Fixes: a0761a301746 ("mac80211: drop data frames without key on encrypted links")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -657,7 +657,7 @@ ieee80211_tx_h_select_key(struct ieee802
|
||||
if (!skip_hw && tx->key &&
|
||||
tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
|
||||
info->control.hw_key = &tx->key->conf;
|
||||
- } else if (!ieee80211_is_mgmt(hdr->frame_control) && tx->sta &&
|
||||
+ } else if (ieee80211_is_data_present(hdr->frame_control) && tx->sta &&
|
||||
test_sta_flag(tx->sta, WLAN_STA_USES_ENCRYPTION)) {
|
||||
return TX_DROP;
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
From 5981fe5b0529ba25d95f37d7faa434183ad618c5 Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Mon, 3 Aug 2020 11:02:10 +0200
|
||||
Subject: [PATCH] mac80211: fix misplaced while instead of if
|
||||
|
||||
This never was intended to be a 'while' loop, it should've
|
||||
just been an 'if' instead of 'while'. Fix this.
|
||||
|
||||
I noticed this while applying another patch from Ben that
|
||||
intended to fix a busy loop at this spot.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: b16798f5b907 ("mac80211: mark station unauthorized before key removal")
|
||||
Reported-by: Ben Greear <greearb@candelatech.com>
|
||||
Link: https://lore.kernel.org/r/20200803110209.253009ae41ff.I3522aad099392b31d5cf2dcca34cbac7e5832dde@changeid
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
net/mac80211/sta_info.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1051,7 +1051,7 @@ static void __sta_info_destroy_part2(str
|
||||
might_sleep();
|
||||
lockdep_assert_held(&local->sta_mtx);
|
||||
|
||||
- while (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
|
||||
+ if (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
|
||||
ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC);
|
||||
WARN_ON_ONCE(ret);
|
||||
}
|
@ -57,7 +57,7 @@
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2611,6 +2611,19 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -2612,6 +2612,19 @@ static int ieee80211_get_tx_power(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *addr)
|
||||
{
|
||||
@@ -4041,6 +4054,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -4042,6 +4055,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,
|
||||
@ -137,7 +137,7 @@
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -3136,6 +3137,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
@@ -3139,6 +3140,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mt76
|
||||
PKG_RELEASE=2
|
||||
PKG_RELEASE=3
|
||||
|
||||
PKG_LICENSE:=GPLv2
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2020-09-23
|
||||
PKG_SOURCE_VERSION:=b22977c2727db7fea8d487573edb3aa668d8309d
|
||||
PKG_MIRROR_HASH:=4182823ec5a97d842e7404b3c8139de8af4f35948008890d50e4dad95add996b
|
||||
PKG_SOURCE_DATE:=2020-12-18
|
||||
PKG_SOURCE_VERSION:=4a90fdf6105e1517897aac1b451b73a54b3d9d0d
|
||||
PKG_MIRROR_HASH:=1ea778584d0fabbc75eb3b2f42aba0c0f2f5e6f0f5ae3084c17b9f02876ebdcc
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
@ -0,0 +1,25 @@
|
||||
From fe89f9bc4055fd6055ce8792a715a40a6c75ba44 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Thu, 17 Dec 2020 13:54:04 +0100
|
||||
Subject: [PATCH] tools: Set mode for new file /tmp/mt76-test-%s
|
||||
|
||||
Set the file system mode for the newly created file /tmp/mt76-test-%s,
|
||||
this is mandatory according to the man page and fixes a compile error
|
||||
with glibc.
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
tools/eeprom.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/tools/eeprom.c
|
||||
+++ b/tools/eeprom.c
|
||||
@@ -77,7 +77,7 @@ mt76_eeprom_create_file(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
- fd = open(eeprom_file, O_RDWR | O_CREAT | O_EXCL);
|
||||
+ fd = open(eeprom_file, O_RDWR | O_CREAT | O_EXCL, 00644);
|
||||
if (fd < 0)
|
||||
goto out;
|
||||
|
@ -7,7 +7,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=hostapd
|
||||
PKG_RELEASE:=17
|
||||
PKG_RELEASE:=22
|
||||
|
||||
PKG_SOURCE_URL:=http://w1.fi/hostap.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
|
@ -99,6 +99,7 @@ hostapd_common_add_device_config() {
|
||||
config_add_string require_mode
|
||||
config_add_boolean legacy_rates
|
||||
config_add_boolean vendor_vht
|
||||
config_add_int cell_density
|
||||
|
||||
config_add_string acs_chan_bias
|
||||
config_add_array hostapd_options
|
||||
@ -116,17 +117,16 @@ hostapd_prepare_device_config() {
|
||||
local base_cfg=
|
||||
|
||||
json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \
|
||||
acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode vendor_vht
|
||||
acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density vendor_vht
|
||||
|
||||
hostapd_set_log_options base_cfg
|
||||
|
||||
set_default country_ie 1
|
||||
set_default spectrum_mgmt_required 0
|
||||
set_default doth 1
|
||||
set_default legacy_rates 1
|
||||
set_default legacy_rates 0
|
||||
set_default airtime_mode 0
|
||||
|
||||
[ "$hwmode" = "b" ] && legacy_rates=1
|
||||
set_default cell_density 0
|
||||
|
||||
[ -n "$country" ] && {
|
||||
append base_cfg "country_code=$country" "$N"
|
||||
@ -147,17 +147,58 @@ hostapd_prepare_device_config() {
|
||||
json_get_values rate_list supported_rates
|
||||
|
||||
[ -n "$hwmode" ] && append base_cfg "hw_mode=$hwmode" "$N"
|
||||
[ "$legacy_rates" -eq 0 ] && set_default require_mode g
|
||||
|
||||
[ "$hwmode" = "g" ] && {
|
||||
[ "$legacy_rates" -eq 0 ] && set_default rate_list "6000 9000 12000 18000 24000 36000 48000 54000"
|
||||
[ -n "$require_mode" ] && set_default basic_rate_list "6000 12000 24000"
|
||||
[ -n "$vendor_vht" ] && append base_cfg "vendor_vht=$vendor_vht" "$N"
|
||||
}
|
||||
|
||||
case "$require_mode" in
|
||||
n) append base_cfg "require_ht=1" "$N";;
|
||||
ac) append base_cfg "require_vht=1" "$N";;
|
||||
if [ "$hwmode" = "g" ] || [ "$hwmode" = "a" ]; then
|
||||
[ -n "$require_mode" ] && legacy_rates=0
|
||||
case "$require_mode" in
|
||||
n) append base_cfg "require_ht=1" "$N";;
|
||||
ac) append base_cfg "require_vht=1" "$N";;
|
||||
esac
|
||||
fi
|
||||
case "$hwmode" in
|
||||
b)
|
||||
if [ "$cell_density" -eq 1 ]; then
|
||||
set_default rate_list "5500 11000"
|
||||
set_default basic_rate_list "5500 11000"
|
||||
elif [ "$cell_density" -ge 2 ]; then
|
||||
set_default rate_list "11000"
|
||||
set_default basic_rate_list "11000"
|
||||
fi
|
||||
;;
|
||||
g)
|
||||
if [ "$cell_density" -eq 0 ] || [ "$cell_density" -eq 1 ]; then
|
||||
if [ "$legacy_rates" -eq 0 ]; then
|
||||
set_default rate_list "6000 9000 12000 18000 24000 36000 48000 54000"
|
||||
set_default basic_rate_list "6000 12000 24000"
|
||||
elif [ "$cell_density" -eq 1 ]; then
|
||||
set_default rate_list "5500 6000 9000 11000 12000 18000 24000 36000 48000 54000"
|
||||
set_default basic_rate_list "5500 11000"
|
||||
fi
|
||||
elif [ "$cell_density" -ge 3 ] && [ "$legacy_rates" -ne 0 ] || [ "$cell_density" -eq 2 ]; then
|
||||
if [ "$legacy_rates" -eq 0 ]; then
|
||||
set_default rate_list "12000 18000 24000 36000 48000 54000"
|
||||
set_default basic_rate_list "12000 24000"
|
||||
else
|
||||
set_default rate_list "11000 12000 18000 24000 36000 48000 54000"
|
||||
set_default basic_rate_list "11000"
|
||||
fi
|
||||
elif [ "$cell_density" -ge 3 ]; then
|
||||
set_default rate_list "24000 36000 48000 54000"
|
||||
set_default basic_rate_list "24000"
|
||||
fi
|
||||
[ -n "$vendor_vht" ] && append base_cfg "vendor_vht=$vendor_vht" "$N"
|
||||
;;
|
||||
a)
|
||||
if [ "$cell_density" -eq 1 ]; then
|
||||
set_default rate_list "6000 9000 12000 18000 24000 36000 48000 54000"
|
||||
set_default basic_rate_list "6000 12000 24000"
|
||||
elif [ "$cell_density" -eq 2 ]; then
|
||||
set_default rate_list "12000 18000 24000 36000 48000 54000"
|
||||
set_default basic_rate_list "12000 24000"
|
||||
elif [ "$cell_density" -ge 3 ]; then
|
||||
set_default rate_list "24000 36000 48000 54000"
|
||||
set_default basic_rate_list "24000"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
for r in $rate_list; do
|
||||
@ -190,7 +231,7 @@ hostapd_common_add_bss_config() {
|
||||
config_add_boolean wds wmm uapsd hidden utf8_ssid
|
||||
|
||||
config_add_int maxassoc max_inactivity
|
||||
config_add_boolean disassoc_low_ack isolate short_preamble
|
||||
config_add_boolean disassoc_low_ack isolate short_preamble skip_inactivity_poll
|
||||
|
||||
config_add_int \
|
||||
wep_rekey eap_reauth_period \
|
||||
@ -291,6 +332,8 @@ hostapd_common_add_bss_config() {
|
||||
|
||||
config_add_array airtime_sta_weight
|
||||
config_add_int airtime_bss_weight airtime_bss_limit
|
||||
|
||||
config_add_array hostapd_bss_options
|
||||
}
|
||||
|
||||
hostapd_set_vlan_file() {
|
||||
@ -438,7 +481,7 @@ hostapd_set_bss_options() {
|
||||
iapp_interface eapol_version dynamic_vlan ieee80211w nasid \
|
||||
acct_server acct_secret acct_port acct_interval \
|
||||
bss_load_update_period chan_util_avg_period sae_require_mfp \
|
||||
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key \
|
||||
multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \
|
||||
airtime_bss_weight airtime_bss_limit airtime_sta_weight
|
||||
|
||||
set_default isolate 0
|
||||
@ -446,12 +489,13 @@ hostapd_set_bss_options() {
|
||||
set_default max_inactivity 0
|
||||
set_default short_preamble 1
|
||||
set_default disassoc_low_ack 1
|
||||
set_default skip_inactivity_poll 0
|
||||
set_default hidden 0
|
||||
set_default wmm 1
|
||||
set_default uapsd 1
|
||||
set_default wpa_disable_eapol_key_retries 0
|
||||
set_default tdls_prohibit 0
|
||||
set_default eapol_version 0
|
||||
set_default eapol_version $((wpa & 1))
|
||||
set_default acct_port 1813
|
||||
set_default bss_load_update_period 60
|
||||
set_default chan_util_avg_period 600
|
||||
@ -478,6 +522,7 @@ hostapd_set_bss_options() {
|
||||
append bss_conf "bss_load_update_period=$bss_load_update_period" "$N"
|
||||
append bss_conf "chan_util_avg_period=$chan_util_avg_period" "$N"
|
||||
append bss_conf "disassoc_low_ack=$disassoc_low_ack" "$N"
|
||||
append bss_conf "skip_inactivity_poll=$skip_inactivity_poll" "$N"
|
||||
append bss_conf "preamble=$short_preamble" "$N"
|
||||
append bss_conf "wmm_enabled=$wmm" "$N"
|
||||
append bss_conf "ignore_broadcast_ssid=$hidden" "$N"
|
||||
@ -899,6 +944,11 @@ hostapd_set_bss_options() {
|
||||
json_for_each_item append_operator_icon operator_icon
|
||||
fi
|
||||
|
||||
json_get_values opts hostapd_bss_options
|
||||
for val in $opts; do
|
||||
append bss_conf "$val" "$N"
|
||||
done
|
||||
|
||||
bss_md5sum=$(echo $bss_conf | md5sum | cut -d" " -f1)
|
||||
append bss_conf "config_id=$bss_md5sum" "$N"
|
||||
|
||||
@ -1264,6 +1314,11 @@ wpa_supplicant_add_network() {
|
||||
;;
|
||||
esac
|
||||
|
||||
[ "$wpa_cipher" = GCMP ] && {
|
||||
append network_data "pairwise=GCMP" "$N$T"
|
||||
append network_data "group=GCMP" "$N$T"
|
||||
}
|
||||
|
||||
[ "$mode" = mesh ] || {
|
||||
case "$wpa" in
|
||||
1)
|
||||
@ -1326,19 +1381,18 @@ wpa_supplicant_run() {
|
||||
_wpa_supplicant_common "$ifname"
|
||||
|
||||
ubus wait_for wpa_supplicant
|
||||
ubus call wpa_supplicant config_add "{ \
|
||||
local supplicant_pid=$(ubus call wpa_supplicant config_add "{ \
|
||||
\"driver\": \"${_w_driver:-wext}\", \"ctrl\": \"$_rpath\", \
|
||||
\"iface\": \"$ifname\", \"config\": \"$_config\" \
|
||||
${network_bridge:+, \"bridge\": \"$network_bridge\"} \
|
||||
${hostapd_ctrl:+, \"hostapd_ctrl\": \"$hostapd_ctrl\"} \
|
||||
}"
|
||||
}" | jsonfilter -l 1 -e @.pid)
|
||||
|
||||
ret="$?"
|
||||
|
||||
[ "$ret" != 0 ] && wireless_setup_vif_failed WPA_SUPPLICANT_FAILED
|
||||
|
||||
local supplicant_pid=$(ubus call service list '{"name": "wpad"}' | jsonfilter -l 1 -e "@['wpad'].instances['supplicant'].pid")
|
||||
wireless_add_process "$supplicant_pid" "/usr/sbin/wpa_supplicant" 1
|
||||
wireless_add_process "$supplicant_pid" "/usr/sbin/wpa_supplicant" 1 1
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ start_service() {
|
||||
mkdir -p /var/run/hostapd
|
||||
procd_open_instance hostapd
|
||||
procd_set_param command /usr/sbin/hostapd -s -g /var/run/hostapd/global
|
||||
procd_set_param respawn
|
||||
procd_set_param respawn 3600 1 0
|
||||
procd_close_instance
|
||||
fi
|
||||
|
||||
@ -19,7 +19,7 @@ start_service() {
|
||||
mkdir -p /var/run/wpa_supplicant
|
||||
procd_open_instance supplicant
|
||||
procd_set_param command /usr/sbin/wpa_supplicant -n -s -g /var/run/wpa_supplicant/global
|
||||
procd_set_param respawn
|
||||
procd_set_param respawn 3600 1 0
|
||||
procd_close_instance
|
||||
fi
|
||||
}
|
||||
|
@ -658,6 +658,10 @@ hostapd_config_add(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
if (hostapd_add_iface(interfaces, buf))
|
||||
return UBUS_STATUS_INVALID_ARGUMENT;
|
||||
|
||||
blob_buf_init(&b, 0);
|
||||
blobmsg_add_u32(&b, "pid", getpid());
|
||||
ubus_send_reply(ctx, req, b.head);
|
||||
|
||||
return UBUS_STATUS_OK;
|
||||
}
|
||||
|
||||
|
@ -264,6 +264,10 @@ wpas_config_add(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
if (!wpa_supplicant_add_iface(global, iface, NULL))
|
||||
return UBUS_STATUS_INVALID_ARGUMENT;
|
||||
|
||||
blob_buf_init(&b, 0);
|
||||
blobmsg_add_u32(&b, "pid", getpid());
|
||||
ubus_send_reply(ctx, req, b.head);
|
||||
|
||||
return UBUS_STATUS_OK;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user