mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 14:23:38 +00:00
mac80211: bump to 5.15.33-1
This commit is contained in:
parent
82118ca885
commit
66d19a4e36
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||||||
|
|
||||||
PKG_NAME:=mac80211
|
PKG_NAME:=mac80211
|
||||||
|
|
||||||
PKG_VERSION:=5.15.8-1
|
PKG_VERSION:=5.15.33-1
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.8/
|
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.15.33/
|
||||||
PKG_HASH:=9f71b659c034f19d156532ec780fcb606cee3c4ccc42e2f8ef18dd3e9f1b6820
|
PKG_HASH:=1b6b3bded4c81814ebebe2d194c2f8966d2399005b85ebb0557285b6e73f5422
|
||||||
|
|
||||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||||
|
@ -269,7 +269,8 @@ define KernelPackage/ath10k
|
|||||||
FILES:= \
|
FILES:= \
|
||||||
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
|
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
|
||||||
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
|
$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
|
||||||
AUTOLOAD:=$(call AutoProbe,ath10k_pci)
|
AUTOLOAD:=$(call AutoProbe,ath10k_core ath10k_pci)
|
||||||
|
MODPARAMS.ath10k_core:=frame_mode=2
|
||||||
VARIANT:=regular
|
VARIANT:=regular
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@ -287,7 +288,6 @@ define KernelPackage/ath10k/config
|
|||||||
depends on PACKAGE_kmod-ath10k || PACKAGE_kmod-ath10k-smallbuffers
|
depends on PACKAGE_kmod-ath10k || PACKAGE_kmod-ath10k-smallbuffers
|
||||||
|
|
||||||
config ATH10K_THERMAL
|
config ATH10K_THERMAL
|
||||||
default y
|
|
||||||
bool "Enable thermal sensors and throttling support"
|
bool "Enable thermal sensors and throttling support"
|
||||||
depends on PACKAGE_kmod-ath10k || PACKAGE_kmod-ath10k-smallbuffers
|
depends on PACKAGE_kmod-ath10k || PACKAGE_kmod-ath10k-smallbuffers
|
||||||
|
|
||||||
@ -395,7 +395,7 @@ endef
|
|||||||
define KernelPackage/ar5523
|
define KernelPackage/ar5523
|
||||||
$(call KernelPackage/mac80211/Default)
|
$(call KernelPackage/mac80211/Default)
|
||||||
TITLE:=Driver for Atheros AR5523 USB sticks
|
TITLE:=Driver for Atheros AR5523 USB sticks
|
||||||
DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core
|
DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core
|
||||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ar5523/ar5523.ko
|
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ar5523/ar5523.ko
|
||||||
AUTOLOAD:=$(call AutoProbe,ar5523)
|
AUTOLOAD:=$(call AutoProbe,ar5523)
|
||||||
endef
|
endef
|
||||||
|
@ -28,8 +28,8 @@ drv_mac80211_init_device_config() {
|
|||||||
config_add_string tx_burst
|
config_add_string tx_burst
|
||||||
config_add_string distance
|
config_add_string distance
|
||||||
config_add_int beacon_int chanbw frag rts
|
config_add_int beacon_int chanbw frag rts
|
||||||
config_add_int rxantenna txantenna antenna_gain txpower
|
config_add_int rxantenna txantenna antenna_gain txpower min_tx_power
|
||||||
config_add_boolean noscan ht_coex acs_exclude_dfs
|
config_add_boolean noscan ht_coex acs_exclude_dfs background_radar
|
||||||
config_add_array ht_capab
|
config_add_array ht_capab
|
||||||
config_add_array channels
|
config_add_array channels
|
||||||
config_add_array scan_list
|
config_add_array scan_list
|
||||||
@ -137,13 +137,15 @@ mac80211_hostapd_setup_base() {
|
|||||||
[ -n "$acs_exclude_dfs" ] && [ "$acs_exclude_dfs" -gt 0 ] &&
|
[ -n "$acs_exclude_dfs" ] && [ "$acs_exclude_dfs" -gt 0 ] &&
|
||||||
append base_cfg "acs_exclude_dfs=1" "$N"
|
append base_cfg "acs_exclude_dfs=1" "$N"
|
||||||
|
|
||||||
json_get_vars noscan ht_coex vendor_vht
|
json_get_vars noscan ht_coex min_tx_power:0
|
||||||
json_get_values ht_capab_list ht_capab tx_burst
|
json_get_values ht_capab_list ht_capab tx_burst
|
||||||
json_get_values channel_list channels
|
json_get_values channel_list channels
|
||||||
|
|
||||||
[ "$auto_channel" = 0 ] && [ -z "$channel_list" ] && \
|
[ "$auto_channel" = 0 ] && [ -z "$channel_list" ] && \
|
||||||
channel_list="$channel"
|
channel_list="$channel"
|
||||||
|
|
||||||
|
[ "$min_tx_power" -gt 0 ] && append base_cfg "min_tx_power=$min_tx_power"
|
||||||
|
|
||||||
set_default noscan 0
|
set_default noscan 0
|
||||||
|
|
||||||
[ "$noscan" -gt 0 ] && hostapd_noscan=1
|
[ "$noscan" -gt 0 ] && hostapd_noscan=1
|
||||||
@ -273,6 +275,11 @@ mac80211_hostapd_setup_base() {
|
|||||||
vht_center_seg0=$idx
|
vht_center_seg0=$idx
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
[ "$band" = "5g" ] && {
|
||||||
|
json_get_vars background_radar:0
|
||||||
|
|
||||||
|
[ "$background_radar" -eq 1 ] && append base_cfg "enable_background_radar=1" "$N"
|
||||||
|
}
|
||||||
[ "$band" = "6g" ] && {
|
[ "$band" = "6g" ] && {
|
||||||
op_class=
|
op_class=
|
||||||
case "$htmode" in
|
case "$htmode" in
|
||||||
@ -283,7 +290,7 @@ mac80211_hostapd_setup_base() {
|
|||||||
}
|
}
|
||||||
[ "$hwmode" = "a" ] || enable_ac=0
|
[ "$hwmode" = "a" ] || enable_ac=0
|
||||||
|
|
||||||
if [ "$enable_ac" != "0" -o "$vendor_vht" = "1" ]; then
|
if [ "$enable_ac" != "0" ]; then
|
||||||
json_get_vars \
|
json_get_vars \
|
||||||
rxldpc:1 \
|
rxldpc:1 \
|
||||||
short_gi_80:1 \
|
short_gi_80:1 \
|
||||||
|
@ -82,7 +82,7 @@
|
|||||||
help
|
help
|
||||||
--- a/local-symbols
|
--- a/local-symbols
|
||||||
+++ b/local-symbols
|
+++ b/local-symbols
|
||||||
@@ -76,6 +76,7 @@ ADM8211=
|
@@ -83,6 +83,7 @@ ADM8211=
|
||||||
ATH_COMMON=
|
ATH_COMMON=
|
||||||
WLAN_VENDOR_ATH=
|
WLAN_VENDOR_ATH=
|
||||||
ATH_DEBUG=
|
ATH_DEBUG=
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/wireless/reg.c
|
--- a/net/wireless/reg.c
|
||||||
+++ b/net/wireless/reg.c
|
+++ b/net/wireless/reg.c
|
||||||
@@ -3299,6 +3299,8 @@ void regulatory_hint_country_ie(struct w
|
@@ -3304,6 +3304,8 @@ void regulatory_hint_country_ie(struct w
|
||||||
enum environment_cap env = ENVIRON_ANY;
|
enum environment_cap env = ENVIRON_ANY;
|
||||||
struct regulatory_request *request = NULL, *lr;
|
struct regulatory_request *request = NULL, *lr;
|
||||||
|
|
||||||
@ -9,7 +9,7 @@
|
|||||||
/* IE len must be evenly divisible by 2 */
|
/* IE len must be evenly divisible by 2 */
|
||||||
if (country_ie_len & 0x01)
|
if (country_ie_len & 0x01)
|
||||||
return;
|
return;
|
||||||
@@ -3550,6 +3552,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
@@ -3555,6 +3557,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||||
|
|
||||||
void regulatory_hint_disconnect(void)
|
void regulatory_hint_disconnect(void)
|
||||||
{
|
{
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
void ath10k_thermal_event_temperature(struct ath10k *ar, int temperature);
|
void ath10k_thermal_event_temperature(struct ath10k *ar, int temperature);
|
||||||
--- a/local-symbols
|
--- a/local-symbols
|
||||||
+++ b/local-symbols
|
+++ b/local-symbols
|
||||||
@@ -135,6 +135,7 @@ ATH10K_SNOC=
|
@@ -142,6 +142,7 @@ ATH10K_SNOC=
|
||||||
ATH10K_DEBUG=
|
ATH10K_DEBUG=
|
||||||
ATH10K_DEBUGFS=
|
ATH10K_DEBUGFS=
|
||||||
ATH10K_SPECTRAL=
|
ATH10K_SPECTRAL=
|
||||||
|
@ -0,0 +1,69 @@
|
|||||||
|
From 2587d5198aa5adcbd8896aae4a2404dc13d48637 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Date: Wed, 18 May 2022 10:27:26 +0300
|
||||||
|
Subject: ath10k: improve tx status reporting
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
We use ieee80211_tx_status() to report each completed tx frame.
|
||||||
|
Internally, this function calls sta_info_get_by_addrs(), what has a
|
||||||
|
couple of drawbacks:
|
||||||
|
1. additional station lookup causes a performance degradation;
|
||||||
|
2. mac80211 can not properly account Ethernet encapsulated frames due
|
||||||
|
to the inability to properly determine the destination (station) MAC
|
||||||
|
address since ieee80211_tx_status() assumes the frame has a 802.11
|
||||||
|
header.
|
||||||
|
|
||||||
|
The latter is especially destructive if we want to use hardware frames
|
||||||
|
encapsulation.
|
||||||
|
|
||||||
|
To fix both of these issues, replace ieee80211_tx_status() with
|
||||||
|
ieee80211_tx_status_ext() call and feed it station pointer from the tx
|
||||||
|
queue associated with the transmitted frame.
|
||||||
|
|
||||||
|
Tested-on: QCA9888 hw2.0 PCI 10.4-3.9.0.2-00131
|
||||||
|
Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00157-QCARMSWPZ-1
|
||||||
|
|
||||||
|
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Tested-by: Oldřich Jedlička <oldium.pro@gmail.com> # TP-Link Archer C7 v4 & v5 (QCA9563 + QCA9880)
|
||||||
|
Tested-by: Edward Matijevic <motolav@gmail.com> # TP-Link Archer C2600 (IPQ8064 + QCA9980 10.4.1.00030-1)
|
||||||
|
Tested-by: Edward Matijevic <motolav@gmail.com> # QCA9377 PCI in Sta mode
|
||||||
|
Tested-by: Zhijun You <hujy652@gmail.com> # NETGEAR R7800 (QCA9984 10.4-3.9.0.2-00159)
|
||||||
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Link: https://lore.kernel.org/r/20220516032519.29831-2-ryazanov.s.a@gmail.com
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath10k/txrx.c | 15 ++++++++++++++-
|
||||||
|
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/txrx.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/txrx.c
|
||||||
|
@@ -43,6 +43,7 @@ out:
|
||||||
|
int ath10k_txrx_tx_unref(struct ath10k_htt *htt,
|
||||||
|
const struct htt_tx_done *tx_done)
|
||||||
|
{
|
||||||
|
+ struct ieee80211_tx_status status;
|
||||||
|
struct ath10k *ar = htt->ar;
|
||||||
|
struct device *dev = ar->dev;
|
||||||
|
struct ieee80211_tx_info *info;
|
||||||
|
@@ -128,7 +129,19 @@ int ath10k_txrx_tx_unref(struct ath10k_h
|
||||||
|
info->status.is_valid_ack_signal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
- ieee80211_tx_status(htt->ar->hw, msdu);
|
||||||
|
+ memset(&status, 0, sizeof(status));
|
||||||
|
+ status.skb = msdu;
|
||||||
|
+ status.info = info;
|
||||||
|
+
|
||||||
|
+ rcu_read_lock();
|
||||||
|
+
|
||||||
|
+ if (txq)
|
||||||
|
+ status.sta = txq->sta;
|
||||||
|
+
|
||||||
|
+ ieee80211_tx_status_ext(htt->ar->hw, &status);
|
||||||
|
+
|
||||||
|
+ rcu_read_unlock();
|
||||||
|
+
|
||||||
|
/* we do not own the msdu anymore */
|
||||||
|
|
||||||
|
return 0;
|
@ -0,0 +1,74 @@
|
|||||||
|
From a09740548275a74b897654b3aca5af589289b57a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Date: Mon, 16 May 2022 13:26:00 +0300
|
||||||
|
Subject: ath10k: turn rawmode into frame_mode
|
||||||
|
|
||||||
|
Turn boolean rawmode module param into integer frame_mode param that
|
||||||
|
contains value from ath10k_hw_txrx_mode enum. As earlier the default
|
||||||
|
param value is non-RAW (native Wi-Fi) encapsulation. The param name
|
||||||
|
is selected to be consistent with the similar ath11k param.
|
||||||
|
|
||||||
|
This is a preparation step for upcoming encapsulation offloading
|
||||||
|
support.
|
||||||
|
|
||||||
|
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Link: https://lore.kernel.org/r/20220516032519.29831-4-ryazanov.s.a@gmail.com
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath10k/core.c | 11 +++++++----
|
||||||
|
drivers/net/wireless/ath/ath10k/core.h | 1 +
|
||||||
|
2 files changed, 8 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
@@ -32,9 +32,11 @@ EXPORT_SYMBOL(ath10k_debug_mask);
|
||||||
|
static unsigned int ath10k_cryptmode_param;
|
||||||
|
static bool uart_print;
|
||||||
|
static bool skip_otp;
|
||||||
|
-static bool rawmode;
|
||||||
|
static bool fw_diag_log;
|
||||||
|
|
||||||
|
+/* frame mode values are mapped as per enum ath10k_hw_txrx_mode */
|
||||||
|
+unsigned int ath10k_frame_mode = ATH10K_HW_TXRX_NATIVE_WIFI;
|
||||||
|
+
|
||||||
|
unsigned long ath10k_coredump_mask = BIT(ATH10K_FW_CRASH_DUMP_REGISTERS) |
|
||||||
|
BIT(ATH10K_FW_CRASH_DUMP_CE_DATA);
|
||||||
|
|
||||||
|
@@ -43,15 +45,16 @@ module_param_named(debug_mask, ath10k_de
|
||||||
|
module_param_named(cryptmode, ath10k_cryptmode_param, uint, 0644);
|
||||||
|
module_param(uart_print, bool, 0644);
|
||||||
|
module_param(skip_otp, bool, 0644);
|
||||||
|
-module_param(rawmode, bool, 0644);
|
||||||
|
module_param(fw_diag_log, bool, 0644);
|
||||||
|
+module_param_named(frame_mode, ath10k_frame_mode, uint, 0644);
|
||||||
|
module_param_named(coredump_mask, ath10k_coredump_mask, ulong, 0444);
|
||||||
|
|
||||||
|
MODULE_PARM_DESC(debug_mask, "Debugging mask");
|
||||||
|
MODULE_PARM_DESC(uart_print, "Uart target debugging");
|
||||||
|
MODULE_PARM_DESC(skip_otp, "Skip otp failure for calibration in testmode");
|
||||||
|
MODULE_PARM_DESC(cryptmode, "Crypto mode: 0-hardware, 1-software");
|
||||||
|
-MODULE_PARM_DESC(rawmode, "Use raw 802.11 frame datapath");
|
||||||
|
+MODULE_PARM_DESC(frame_mode,
|
||||||
|
+ "Datapath frame mode (0: raw, 1: native wifi (default))");
|
||||||
|
MODULE_PARM_DESC(coredump_mask, "Bitfield of what to include in firmware crash file");
|
||||||
|
MODULE_PARM_DESC(fw_diag_log, "Diag based fw log debugging");
|
||||||
|
|
||||||
|
@@ -2487,7 +2490,7 @@ static int ath10k_core_init_firmware_fea
|
||||||
|
ar->htt.max_num_amsdu = ATH10K_HTT_MAX_NUM_AMSDU_DEFAULT;
|
||||||
|
ar->htt.max_num_ampdu = ATH10K_HTT_MAX_NUM_AMPDU_DEFAULT;
|
||||||
|
|
||||||
|
- if (rawmode) {
|
||||||
|
+ if (ath10k_frame_mode == ATH10K_HW_TXRX_RAW) {
|
||||||
|
if (!test_bit(ATH10K_FW_FEATURE_RAW_MODE_SUPPORT,
|
||||||
|
fw_file->fw_features)) {
|
||||||
|
ath10k_err(ar, "rawmode = 1 requires support from firmware");
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/core.h
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/core.h
|
||||||
|
@@ -1311,6 +1311,7 @@ static inline bool ath10k_peer_stats_ena
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
+extern unsigned int ath10k_frame_mode;
|
||||||
|
extern unsigned long ath10k_coredump_mask;
|
||||||
|
|
||||||
|
void ath10k_core_napi_sync_disable(struct ath10k *ar);
|
@ -0,0 +1,163 @@
|
|||||||
|
From 70f119fb82af7f7417dc659faf02c91e1f853739 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Date: Mon, 16 May 2022 13:26:00 +0300
|
||||||
|
Subject: ath10k: htt_tx: do not interpret Eth frames as WiFi
|
||||||
|
|
||||||
|
The xmit path for the Ethernet encapsulated frames become more or less
|
||||||
|
usable since d740d8fd2439 ("ath10k: unify tx mode and dispatch"). This
|
||||||
|
change reorganize the xmit path in a manageable way to properly support
|
||||||
|
various tx modes, but misses that the Ethernet encapsulated frame is a
|
||||||
|
special case. We do not have an IEEE 802.11 header at the begining of
|
||||||
|
them. But the HTT Tx handler still interprets first bytes of each frame
|
||||||
|
as an IEEE 802.11 Frame Control field.
|
||||||
|
|
||||||
|
Than this code was copied by e62ee5c381c5 ("ath10k: Add support for
|
||||||
|
htt_data_tx_desc_64 descriptor") and a2097d6444c3 ("ath10k: htt: High
|
||||||
|
latency TX support") to another handlers. In fact the issue in the high
|
||||||
|
latency (HL) handler was introduced by 83ac260151e7 ("ath10k: add mic
|
||||||
|
bytes for pmf management packet").
|
||||||
|
|
||||||
|
Ethernet encapsulated frame tx mode stay unused until 75d85fd9993c
|
||||||
|
("ath10k: introduce basic tdls functionality") started using it for TDLS
|
||||||
|
frames to avoid key selection issue in some firmwares.
|
||||||
|
|
||||||
|
Trying to interpret the begining of an Ethernet encapsulated frame as an
|
||||||
|
IEEE 802.11 header was not hurt us noticeably since we need to meet two
|
||||||
|
conditions: (1) xmit should be performed towards a TDLS peer, and (2)
|
||||||
|
the TDLS peer should have a specific OUI part of its MAC address. Looks
|
||||||
|
like that the rareness in TDLS communications of OUIs that can be
|
||||||
|
interpreted as an 802.11 management frame saves users from facing this
|
||||||
|
issue earlier.
|
||||||
|
|
||||||
|
Improve Ethernet tx mode support in the HTT Tx handler by avoiding
|
||||||
|
interpreting its first bytes as an IEEE 802.11 header. While at it, make
|
||||||
|
the ieee80211_hdr variable local to the code block that is guarded by
|
||||||
|
!is_eth check. In this way, we clarify in which cases a frame can be
|
||||||
|
interpreted as IEEE 802.11, and saves us from similar issues in the
|
||||||
|
future.
|
||||||
|
|
||||||
|
Credits: this change as part of xmit encapsulation offloading support
|
||||||
|
was originally made by QCA and then submitted for inclusion by John
|
||||||
|
Crispin [1]. But the whole work was not accepted due to the lack of a
|
||||||
|
part for 64-bits descriptors [2]. Zhijun You then pointed this out to me
|
||||||
|
in a reply to my initial RFC patch series. And I made this slightly
|
||||||
|
reworked version that covered all the HTT Tx handler variants.
|
||||||
|
|
||||||
|
1. https://lore.kernel.org/all/20191216092207.31032-1-john@phrozen.org/
|
||||||
|
2. https://patchwork.kernel.org/project/linux-wireless/patch/20191216092207.31032-1-john@phrozen.org/
|
||||||
|
|
||||||
|
Reported-by: Zhijun You <hujy652@gmail.com>
|
||||||
|
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
|
||||||
|
Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
|
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Link: https://lore.kernel.org/r/20220516032519.29831-3-ryazanov.s.a@gmail.com
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath10k/htt_tx.c | 61 ++++++++++++++++++--------------
|
||||||
|
1 file changed, 35 insertions(+), 26 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/htt_tx.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/htt_tx.c
|
||||||
|
@@ -1295,7 +1295,6 @@ static int ath10k_htt_tx_hl(struct ath10
|
||||||
|
struct ath10k *ar = htt->ar;
|
||||||
|
int res, data_len;
|
||||||
|
struct htt_cmd_hdr *cmd_hdr;
|
||||||
|
- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
|
||||||
|
struct htt_data_tx_desc *tx_desc;
|
||||||
|
struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu);
|
||||||
|
struct sk_buff *tmp_skb;
|
||||||
|
@@ -1306,11 +1305,15 @@ static int ath10k_htt_tx_hl(struct ath10
|
||||||
|
u16 flags1 = 0;
|
||||||
|
u16 msdu_id = 0;
|
||||||
|
|
||||||
|
- if ((ieee80211_is_action(hdr->frame_control) ||
|
||||||
|
- ieee80211_is_deauth(hdr->frame_control) ||
|
||||||
|
- ieee80211_is_disassoc(hdr->frame_control)) &&
|
||||||
|
- ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
- skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ if (!is_eth) {
|
||||||
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
|
||||||
|
+
|
||||||
|
+ if ((ieee80211_is_action(hdr->frame_control) ||
|
||||||
|
+ ieee80211_is_deauth(hdr->frame_control) ||
|
||||||
|
+ ieee80211_is_disassoc(hdr->frame_control)) &&
|
||||||
|
+ ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
+ skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
data_len = msdu->len;
|
||||||
|
@@ -1407,7 +1410,6 @@ static int ath10k_htt_tx_32(struct ath10
|
||||||
|
{
|
||||||
|
struct ath10k *ar = htt->ar;
|
||||||
|
struct device *dev = ar->dev;
|
||||||
|
- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
|
||||||
|
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(msdu);
|
||||||
|
struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu);
|
||||||
|
struct ath10k_hif_sg_item sg_items[2];
|
||||||
|
@@ -1439,15 +1441,19 @@ static int ath10k_htt_tx_32(struct ath10
|
||||||
|
txbuf_paddr = htt->txbuf.paddr +
|
||||||
|
(sizeof(struct ath10k_htt_txbuf_32) * msdu_id);
|
||||||
|
|
||||||
|
- if ((ieee80211_is_action(hdr->frame_control) ||
|
||||||
|
- ieee80211_is_deauth(hdr->frame_control) ||
|
||||||
|
- ieee80211_is_disassoc(hdr->frame_control)) &&
|
||||||
|
- ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
- skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
- } else if (!(skb_cb->flags & ATH10K_SKB_F_NO_HWCRYPT) &&
|
||||||
|
- txmode == ATH10K_HW_TXRX_RAW &&
|
||||||
|
- ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
- skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ if (!is_eth) {
|
||||||
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
|
||||||
|
+
|
||||||
|
+ if ((ieee80211_is_action(hdr->frame_control) ||
|
||||||
|
+ ieee80211_is_deauth(hdr->frame_control) ||
|
||||||
|
+ ieee80211_is_disassoc(hdr->frame_control)) &&
|
||||||
|
+ ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
+ skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ } else if (!(skb_cb->flags & ATH10K_SKB_F_NO_HWCRYPT) &&
|
||||||
|
+ txmode == ATH10K_HW_TXRX_RAW &&
|
||||||
|
+ ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
+ skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
skb_cb->paddr = dma_map_single(dev, msdu->data, msdu->len,
|
||||||
|
@@ -1609,7 +1615,6 @@ static int ath10k_htt_tx_64(struct ath10
|
||||||
|
{
|
||||||
|
struct ath10k *ar = htt->ar;
|
||||||
|
struct device *dev = ar->dev;
|
||||||
|
- struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
|
||||||
|
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(msdu);
|
||||||
|
struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu);
|
||||||
|
struct ath10k_hif_sg_item sg_items[2];
|
||||||
|
@@ -1641,15 +1646,19 @@ static int ath10k_htt_tx_64(struct ath10
|
||||||
|
txbuf_paddr = htt->txbuf.paddr +
|
||||||
|
(sizeof(struct ath10k_htt_txbuf_64) * msdu_id);
|
||||||
|
|
||||||
|
- if ((ieee80211_is_action(hdr->frame_control) ||
|
||||||
|
- ieee80211_is_deauth(hdr->frame_control) ||
|
||||||
|
- ieee80211_is_disassoc(hdr->frame_control)) &&
|
||||||
|
- ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
- skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
- } else if (!(skb_cb->flags & ATH10K_SKB_F_NO_HWCRYPT) &&
|
||||||
|
- txmode == ATH10K_HW_TXRX_RAW &&
|
||||||
|
- ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
- skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ if (!is_eth) {
|
||||||
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
|
||||||
|
+
|
||||||
|
+ if ((ieee80211_is_action(hdr->frame_control) ||
|
||||||
|
+ ieee80211_is_deauth(hdr->frame_control) ||
|
||||||
|
+ ieee80211_is_disassoc(hdr->frame_control)) &&
|
||||||
|
+ ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
+ skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ } else if (!(skb_cb->flags & ATH10K_SKB_F_NO_HWCRYPT) &&
|
||||||
|
+ txmode == ATH10K_HW_TXRX_RAW &&
|
||||||
|
+ ieee80211_has_protected(hdr->frame_control)) {
|
||||||
|
+ skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
skb_cb->paddr = dma_map_single(dev, msdu->data, msdu->len,
|
@ -0,0 +1,194 @@
|
|||||||
|
From af6d8265c47e46881b80c6b073f53c8c4af52d28 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Date: Mon, 16 May 2022 13:26:00 +0300
|
||||||
|
Subject: ath10k: add encapsulation offloading support
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Frame encapsulation from Ethernet into the IEEE 802.11 frame format
|
||||||
|
takes a considerable host CPU time on the xmit path. The firmware is
|
||||||
|
able to do this operation for us, so enable encapsulation offloading for
|
||||||
|
AP and Sta interface types to improve overall system performance.
|
||||||
|
|
||||||
|
The driver is almost ready for encapsulation offloading support. There
|
||||||
|
are only a few places where the driver assumes the frame format is IEEE
|
||||||
|
802.11 that need to be fixed.
|
||||||
|
|
||||||
|
Encapsulation offloading is currently disabled by default and the driver
|
||||||
|
utilizes mac80211 encapsulation support. To activate offloading, the
|
||||||
|
frame_mode=2 parameter should be passed during module loading.
|
||||||
|
|
||||||
|
On a QCA9563+QCA9888-based access point in bridged mode, encapsulation
|
||||||
|
offloading increases TCP 16-streams DL throughput from 365 to 396 mbps
|
||||||
|
(+8%) and UDP DL throughput from 436 to 483 mbps (+11%).
|
||||||
|
|
||||||
|
Tested-on: QCA9888 hw2.0 PCI 10.4-3.9.0.2-00131
|
||||||
|
Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00157-QCARMSWPZ-1
|
||||||
|
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
|
||||||
|
Tested-by: Oldřich Jedlička <oldium.pro@gmail.com> # TP-Link Archer C7 v4 & v5 (QCA9563 + QCA9880)
|
||||||
|
Tested-by: Edward Matijevic <motolav@gmail.com> # TP-Link Archer C2600 (IPQ8064 + QCA9980 10.4.1.00030-1)
|
||||||
|
Tested-by: Edward Matijevic <motolav@gmail.com> # QCA9377 PCI in Sta mode
|
||||||
|
Tested-by: Zhijun You <hujy652@gmail.com> # NETGEAR R7800 (QCA9984 10.4-3.9.0.2-00159)
|
||||||
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Link: https://lore.kernel.org/r/20220516032519.29831-5-ryazanov.s.a@gmail.com
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath10k/core.c | 2 +-
|
||||||
|
drivers/net/wireless/ath/ath10k/mac.c | 67 +++++++++++++++++++++++++++-------
|
||||||
|
2 files changed, 55 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
@@ -54,7 +54,7 @@ MODULE_PARM_DESC(uart_print, "Uart targe
|
||||||
|
MODULE_PARM_DESC(skip_otp, "Skip otp failure for calibration in testmode");
|
||||||
|
MODULE_PARM_DESC(cryptmode, "Crypto mode: 0-hardware, 1-software");
|
||||||
|
MODULE_PARM_DESC(frame_mode,
|
||||||
|
- "Datapath frame mode (0: raw, 1: native wifi (default))");
|
||||||
|
+ "Datapath frame mode (0: raw, 1: native wifi (default), 2: ethernet)");
|
||||||
|
MODULE_PARM_DESC(coredump_mask, "Bitfield of what to include in firmware crash file");
|
||||||
|
MODULE_PARM_DESC(fw_diag_log, "Diag based fw log debugging");
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
|
@@ -3710,6 +3710,9 @@ ath10k_mac_tx_h_get_txmode(struct ath10k
|
||||||
|
const struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(skb);
|
||||||
|
__le16 fc = hdr->frame_control;
|
||||||
|
|
||||||
|
+ if (IEEE80211_SKB_CB(skb)->flags & IEEE80211_TX_CTL_HW_80211_ENCAP)
|
||||||
|
+ return ATH10K_HW_TXRX_ETHERNET;
|
||||||
|
+
|
||||||
|
if (!vif || vif->type == NL80211_IFTYPE_MONITOR)
|
||||||
|
return ATH10K_HW_TXRX_RAW;
|
||||||
|
|
||||||
|
@@ -3870,6 +3873,12 @@ static void ath10k_mac_tx_h_fill_cb(stru
|
||||||
|
bool noack = false;
|
||||||
|
|
||||||
|
cb->flags = 0;
|
||||||
|
+
|
||||||
|
+ if (info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) {
|
||||||
|
+ cb->flags |= ATH10K_SKB_F_QOS; /* Assume data frames are QoS */
|
||||||
|
+ goto finish_cb_fill;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!ath10k_tx_h_use_hwcrypto(vif, skb))
|
||||||
|
cb->flags |= ATH10K_SKB_F_NO_HWCRYPT;
|
||||||
|
|
||||||
|
@@ -3908,6 +3917,7 @@ static void ath10k_mac_tx_h_fill_cb(stru
|
||||||
|
cb->flags |= ATH10K_SKB_F_RAW_TX;
|
||||||
|
}
|
||||||
|
|
||||||
|
+finish_cb_fill:
|
||||||
|
cb->vif = vif;
|
||||||
|
cb->txq = txq;
|
||||||
|
cb->airtime_est = airtime;
|
||||||
|
@@ -4031,7 +4041,11 @@ static int ath10k_mac_tx(struct ath10k *
|
||||||
|
ath10k_tx_h_seq_no(vif, skb);
|
||||||
|
break;
|
||||||
|
case ATH10K_HW_TXRX_ETHERNET:
|
||||||
|
- ath10k_tx_h_8023(skb);
|
||||||
|
+ /* Convert 802.11->802.3 header only if the frame was erlier
|
||||||
|
+ * encapsulated to 802.11 by mac80211. Otherwise pass it as is.
|
||||||
|
+ */
|
||||||
|
+ if (!(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP))
|
||||||
|
+ ath10k_tx_h_8023(skb);
|
||||||
|
break;
|
||||||
|
case ATH10K_HW_TXRX_RAW:
|
||||||
|
if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags) &&
|
||||||
|
@@ -4643,12 +4657,10 @@ static void ath10k_mac_op_tx(struct ieee
|
||||||
|
struct ieee80211_vif *vif = info->control.vif;
|
||||||
|
struct ieee80211_sta *sta = control->sta;
|
||||||
|
struct ieee80211_txq *txq = NULL;
|
||||||
|
- struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||||
|
enum ath10k_hw_txrx_mode txmode;
|
||||||
|
enum ath10k_mac_tx_path txpath;
|
||||||
|
bool is_htt;
|
||||||
|
bool is_mgmt;
|
||||||
|
- bool is_presp;
|
||||||
|
int ret;
|
||||||
|
u16 airtime;
|
||||||
|
|
||||||
|
@@ -4662,8 +4674,14 @@ static void ath10k_mac_op_tx(struct ieee
|
||||||
|
is_mgmt = (txpath == ATH10K_MAC_TX_HTT_MGMT);
|
||||||
|
|
||||||
|
if (is_htt) {
|
||||||
|
+ bool is_presp = false;
|
||||||
|
+
|
||||||
|
spin_lock_bh(&ar->htt.tx_lock);
|
||||||
|
- is_presp = ieee80211_is_probe_resp(hdr->frame_control);
|
||||||
|
+ if (!(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP)) {
|
||||||
|
+ struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||||
|
+
|
||||||
|
+ is_presp = ieee80211_is_probe_resp(hdr->frame_control);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
ret = ath10k_htt_tx_inc_pending(htt);
|
||||||
|
if (ret) {
|
||||||
|
@@ -5447,6 +5465,30 @@ static int ath10k_mac_set_txbf_conf(stru
|
||||||
|
ar->wmi.vdev_param->txbf, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static void ath10k_update_vif_offload(struct ieee80211_hw *hw,
|
||||||
|
+ struct ieee80211_vif *vif)
|
||||||
|
+{
|
||||||
|
+ struct ath10k_vif *arvif = (void *)vif->drv_priv;
|
||||||
|
+ struct ath10k *ar = hw->priv;
|
||||||
|
+ u32 vdev_param;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ if (ath10k_frame_mode != ATH10K_HW_TXRX_ETHERNET ||
|
||||||
|
+ ar->wmi.vdev_param->tx_encap_type == WMI_VDEV_PARAM_UNSUPPORTED ||
|
||||||
|
+ (vif->type != NL80211_IFTYPE_STATION &&
|
||||||
|
+ vif->type != NL80211_IFTYPE_AP))
|
||||||
|
+ vif->offload_flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;
|
||||||
|
+
|
||||||
|
+ vdev_param = ar->wmi.vdev_param->tx_encap_type;
|
||||||
|
+ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
|
||||||
|
+ ATH10K_HW_TXRX_NATIVE_WIFI);
|
||||||
|
+ /* 10.X firmware does not support this VDEV parameter. Do not warn */
|
||||||
|
+ if (ret && ret != -EOPNOTSUPP) {
|
||||||
|
+ ath10k_warn(ar, "failed to set vdev %i TX encapsulation: %d\n",
|
||||||
|
+ arvif->vdev_id, ret);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* TODO:
|
||||||
|
* Figure out how to handle WMI_VDEV_SUBTYPE_P2P_DEVICE,
|
||||||
|
@@ -5656,15 +5698,7 @@ static int ath10k_add_interface(struct i
|
||||||
|
|
||||||
|
arvif->def_wep_key_idx = -1;
|
||||||
|
|
||||||
|
- vdev_param = ar->wmi.vdev_param->tx_encap_type;
|
||||||
|
- ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param,
|
||||||
|
- ATH10K_HW_TXRX_NATIVE_WIFI);
|
||||||
|
- /* 10.X firmware does not support this VDEV parameter. Do not warn */
|
||||||
|
- if (ret && ret != -EOPNOTSUPP) {
|
||||||
|
- ath10k_warn(ar, "failed to set vdev %i TX encapsulation: %d\n",
|
||||||
|
- arvif->vdev_id, ret);
|
||||||
|
- goto err_vdev_delete;
|
||||||
|
- }
|
||||||
|
+ ath10k_update_vif_offload(hw, vif);
|
||||||
|
|
||||||
|
/* Configuring number of spatial stream for monitor interface is causing
|
||||||
|
* target assert in qca9888 and qca6174.
|
||||||
|
@@ -9352,6 +9386,7 @@ static const struct ieee80211_ops ath10k
|
||||||
|
.stop = ath10k_stop,
|
||||||
|
.config = ath10k_config,
|
||||||
|
.add_interface = ath10k_add_interface,
|
||||||
|
+ .update_vif_offload = ath10k_update_vif_offload,
|
||||||
|
.remove_interface = ath10k_remove_interface,
|
||||||
|
.configure_filter = ath10k_configure_filter,
|
||||||
|
.bss_info_changed = ath10k_bss_info_changed,
|
||||||
|
@@ -10021,6 +10056,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||||
|
if (test_bit(WMI_SERVICE_TDLS_UAPSD_BUFFER_STA, ar->wmi.svc_map))
|
||||||
|
ieee80211_hw_set(ar->hw, SUPPORTS_TDLS_BUFFER_STA);
|
||||||
|
|
||||||
|
+ if (ath10k_frame_mode == ATH10K_HW_TXRX_ETHERNET) {
|
||||||
|
+ if (ar->wmi.vdev_param->tx_encap_type !=
|
||||||
|
+ WMI_VDEV_PARAM_UNSUPPORTED)
|
||||||
|
+ ieee80211_hw_set(ar->hw, SUPPORTS_TX_ENCAP_OFFLOAD);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
|
||||||
|
ar->hw->wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
|
||||||
|
ar->hw->wiphy->max_remain_on_channel_duration = 5000;
|
@ -0,0 +1,65 @@
|
|||||||
|
From f2a7064a78b22f2b68b9fcbc8a6f4c5e61c5ba64 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Marko <robimarko@gmail.com>
|
||||||
|
Date: Sun, 10 Oct 2021 00:17:11 +0200
|
||||||
|
Subject: [PATCH] ath10k: support bus and device specific API 1 BDF selection
|
||||||
|
|
||||||
|
Some ath10k IPQ40xx devices like the MikroTik hAP ac2 and ac3 require the
|
||||||
|
BDF-s to be extracted from the device storage instead of shipping packaged
|
||||||
|
API 2 BDF-s.
|
||||||
|
|
||||||
|
This is required as MikroTik has started shipping boards that require BDF-s
|
||||||
|
to be updated, as otherwise their WLAN performance really suffers.
|
||||||
|
This is however impossible as the devices that require this are release
|
||||||
|
under the same revision and its not possible to differentiate them from
|
||||||
|
devices using the older BDF-s.
|
||||||
|
|
||||||
|
In OpenWrt we are extracting the calibration data during runtime and we are
|
||||||
|
able to extract the BDF-s in the same manner, however we cannot package the
|
||||||
|
BDF-s to API 2 format on the fly and can only use API 1 to provide BDF-s on
|
||||||
|
the fly.
|
||||||
|
This is an issue as the ath10k driver explicitly looks only for the
|
||||||
|
board.bin file and not for something like board-bus-device.bin like it does
|
||||||
|
for pre-cal data.
|
||||||
|
Due to this we have no way of providing correct BDF-s on the fly, so lets
|
||||||
|
extend the ath10k driver to first look for BDF-s in the
|
||||||
|
board-bus-device.bin format, for example: board-ahb-a800000.wifi.bin
|
||||||
|
If that fails, look for the default board file name as defined previously.
|
||||||
|
|
||||||
|
Signed-off-by: Robert Marko <robimarko@gmail.com>
|
||||||
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
||||||
|
Link: https://lore.kernel.org/r/20211009221711.2315352-1-robimarko@gmail.com
|
||||||
|
---
|
||||||
|
drivers/net/wireless/ath/ath10k/core.c | 13 ++++++++++++-
|
||||||
|
1 file changed, 12 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||||
|
@@ -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;
|
||||||
|
+ char boardname[100];
|
||||||
|
|
||||||
|
if (bd_ie_type == ATH10K_BD_IE_BOARD) {
|
||||||
|
if (!ar->hw_params.fw.board) {
|
||||||
|
@@ -1209,9 +1210,19 @@ static int ath10k_core_fetch_board_data_
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ scnprintf(boardname, sizeof(boardname), "board-%s-%s.bin",
|
||||||
|
+ ath10k_bus_str(ar->hif.bus), dev_name(ar->dev));
|
||||||
|
+
|
||||||
|
ar->normal_mode_fw.board = ath10k_fetch_fw_file(ar,
|
||||||
|
ar->hw_params.fw.dir,
|
||||||
|
- ar->hw_params.fw.board);
|
||||||
|
+ boardname);
|
||||||
|
+ if (IS_ERR(ar->normal_mode_fw.board)) {
|
||||||
|
+ fw = ath10k_fetch_fw_file(ar,
|
||||||
|
+ ar->hw_params.fw.dir,
|
||||||
|
+ ar->hw_params.fw.board);
|
||||||
|
+ ar->normal_mode_fw.board = fw;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (IS_ERR(ar->normal_mode_fw.board))
|
||||||
|
return PTR_ERR(ar->normal_mode_fw.board);
|
||||||
|
|
@ -34,7 +34,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
|||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
|
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
@@ -935,7 +936,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 ||
|
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;
|
bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID;
|
||||||
else
|
else
|
||||||
bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
|
bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
|
||||||
@@ -1726,7 +1728,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 */
|
/* As of now pre-cal is valid for 10_4 variants */
|
||||||
if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
|
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;
|
bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL;
|
||||||
|
|
||||||
ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
|
ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
|
||||||
@@ -1853,6 +1856,39 @@ out_free:
|
@@ -1884,6 +1887,39 @@ out_free:
|
||||||
return ret;
|
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,
|
int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,
|
||||||
struct ath10k_fw_file *fw_file)
|
struct ath10k_fw_file *fw_file)
|
||||||
{
|
{
|
||||||
@@ -2087,6 +2123,18 @@ static int ath10k_core_pre_cal_download(
|
@@ -2118,6 +2154,18 @@ static int ath10k_core_pre_cal_download(
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
|
|||||||
ret = ath10k_download_cal_file(ar, ar->pre_cal_file);
|
ret = ath10k_download_cal_file(ar, ar->pre_cal_file);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ar->cal_mode = ATH10K_PRE_CAL_MODE_FILE;
|
ar->cal_mode = ATH10K_PRE_CAL_MODE_FILE;
|
||||||
@@ -2153,6 +2201,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",
|
"pre cal download procedure failed, try cal file: %d\n",
|
||||||
ret);
|
ret);
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||||
@@ -3412,6 +3412,16 @@ int ath10k_core_register(struct ath10k *
|
@@ -3443,6 +3443,16 @@ int ath10k_core_register(struct ath10k *
|
||||||
|
|
||||||
queue_work(ar->workqueue, &ar->register_work);
|
queue_work(ar->workqueue, &ar->register_work);
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
@@ -9843,6 +9843,21 @@ static int ath10k_mac_init_rd(struct ath
|
@@ -9878,6 +9878,21 @@ static int ath10k_mac_init_rd(struct ath
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
int ath10k_mac_register(struct ath10k *ar)
|
int ath10k_mac_register(struct ath10k *ar)
|
||||||
{
|
{
|
||||||
static const u32 cipher_suites[] = {
|
static const u32 cipher_suites[] = {
|
||||||
@@ -10195,6 +10210,12 @@ int ath10k_mac_register(struct ath10k *a
|
@@ -10236,6 +10251,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||||
|
|
||||||
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ v13:
|
|||||||
ath10k_core-$(CONFIG_DEV_COREDUMP) += coredump.o
|
ath10k_core-$(CONFIG_DEV_COREDUMP) += coredump.o
|
||||||
--- a/local-symbols
|
--- a/local-symbols
|
||||||
+++ b/local-symbols
|
+++ b/local-symbols
|
||||||
@@ -136,6 +136,7 @@ ATH10K_DEBUG=
|
@@ -143,6 +143,7 @@ ATH10K_DEBUG=
|
||||||
ATH10K_DEBUGFS=
|
ATH10K_DEBUGFS=
|
||||||
ATH10K_SPECTRAL=
|
ATH10K_SPECTRAL=
|
||||||
ATH10K_THERMAL=
|
ATH10K_THERMAL=
|
||||||
@ -132,7 +132,7 @@ v13:
|
|||||||
|
|
||||||
unsigned int ath10k_debug_mask;
|
unsigned int ath10k_debug_mask;
|
||||||
EXPORT_SYMBOL(ath10k_debug_mask);
|
EXPORT_SYMBOL(ath10k_debug_mask);
|
||||||
@@ -62,6 +63,7 @@ static const struct ath10k_hw_params ath
|
@@ -65,6 +66,7 @@ static const struct ath10k_hw_params ath
|
||||||
.dev_id = QCA988X_2_0_DEVICE_ID,
|
.dev_id = QCA988X_2_0_DEVICE_ID,
|
||||||
.bus = ATH10K_BUS_PCI,
|
.bus = ATH10K_BUS_PCI,
|
||||||
.name = "qca988x hw2.0",
|
.name = "qca988x hw2.0",
|
||||||
@ -140,7 +140,7 @@ v13:
|
|||||||
.patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
|
.patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
|
||||||
.uart_pin = 7,
|
.uart_pin = 7,
|
||||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
|
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
|
||||||
@@ -133,6 +135,7 @@ static const struct ath10k_hw_params ath
|
@@ -138,6 +140,7 @@ static const struct ath10k_hw_params ath
|
||||||
.dev_id = QCA9887_1_0_DEVICE_ID,
|
.dev_id = QCA9887_1_0_DEVICE_ID,
|
||||||
.bus = ATH10K_BUS_PCI,
|
.bus = ATH10K_BUS_PCI,
|
||||||
.name = "qca9887 hw1.0",
|
.name = "qca9887 hw1.0",
|
||||||
@ -148,7 +148,7 @@ v13:
|
|||||||
.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
|
.patch_load_addr = QCA9887_HW_1_0_PATCH_LOAD_ADDR,
|
||||||
.uart_pin = 7,
|
.uart_pin = 7,
|
||||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
|
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
|
||||||
@@ -344,6 +347,7 @@ static const struct ath10k_hw_params ath
|
@@ -355,6 +358,7 @@ static const struct ath10k_hw_params ath
|
||||||
.dev_id = QCA99X0_2_0_DEVICE_ID,
|
.dev_id = QCA99X0_2_0_DEVICE_ID,
|
||||||
.bus = ATH10K_BUS_PCI,
|
.bus = ATH10K_BUS_PCI,
|
||||||
.name = "qca99x0 hw2.0",
|
.name = "qca99x0 hw2.0",
|
||||||
@ -156,7 +156,7 @@ v13:
|
|||||||
.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
|
.patch_load_addr = QCA99X0_HW_2_0_PATCH_LOAD_ADDR,
|
||||||
.uart_pin = 7,
|
.uart_pin = 7,
|
||||||
.otp_exe_param = 0x00000700,
|
.otp_exe_param = 0x00000700,
|
||||||
@@ -385,6 +389,7 @@ static const struct ath10k_hw_params ath
|
@@ -397,6 +401,7 @@ static const struct ath10k_hw_params ath
|
||||||
.dev_id = QCA9984_1_0_DEVICE_ID,
|
.dev_id = QCA9984_1_0_DEVICE_ID,
|
||||||
.bus = ATH10K_BUS_PCI,
|
.bus = ATH10K_BUS_PCI,
|
||||||
.name = "qca9984/qca9994 hw1.0",
|
.name = "qca9984/qca9994 hw1.0",
|
||||||
@ -164,7 +164,7 @@ v13:
|
|||||||
.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
|
.patch_load_addr = QCA9984_HW_1_0_PATCH_LOAD_ADDR,
|
||||||
.uart_pin = 7,
|
.uart_pin = 7,
|
||||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||||
@@ -433,6 +438,7 @@ static const struct ath10k_hw_params ath
|
@@ -446,6 +451,7 @@ static const struct ath10k_hw_params ath
|
||||||
.dev_id = QCA9888_2_0_DEVICE_ID,
|
.dev_id = QCA9888_2_0_DEVICE_ID,
|
||||||
.bus = ATH10K_BUS_PCI,
|
.bus = ATH10K_BUS_PCI,
|
||||||
.name = "qca9888 hw2.0",
|
.name = "qca9888 hw2.0",
|
||||||
@ -172,7 +172,7 @@ v13:
|
|||||||
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
|
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
|
||||||
.uart_pin = 7,
|
.uart_pin = 7,
|
||||||
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
|
||||||
@@ -3127,6 +3133,10 @@ int ath10k_core_start(struct ath10k *ar,
|
@@ -3158,6 +3164,10 @@ int ath10k_core_start(struct ath10k *ar,
|
||||||
goto err_hif_stop;
|
goto err_hif_stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ v13:
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_hif_stop:
|
err_hif_stop:
|
||||||
@@ -3385,9 +3395,18 @@ static void ath10k_core_register_work(st
|
@@ -3416,9 +3426,18 @@ static void ath10k_core_register_work(st
|
||||||
goto err_spectral_destroy;
|
goto err_spectral_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ v13:
|
|||||||
err_spectral_destroy:
|
err_spectral_destroy:
|
||||||
ath10k_spectral_destroy(ar);
|
ath10k_spectral_destroy(ar);
|
||||||
err_debug_destroy:
|
err_debug_destroy:
|
||||||
@@ -3433,6 +3452,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))
|
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
|||||||
if (ret)
|
if (ret)
|
||||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
@@ -10212,7 +10212,7 @@ int ath10k_mac_register(struct ath10k *a
|
@@ -10253,7 +10253,7 @@ int ath10k_mac_register(struct ath10k *a
|
||||||
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;
|
||||||
|
|
||||||
#ifdef CPTCFG_MAC80211_LEDS
|
#ifdef CPTCFG_MAC80211_LEDS
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
|
||||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
|
||||||
@@ -4841,6 +4841,7 @@ static void ath10k_mac_setup_ht_vht_cap(
|
|
||||||
if (ar->phy_capability & WHAL_WLAN_11G_CAPABILITY) {
|
|
||||||
band = &ar->mac.sbands[NL80211_BAND_2GHZ];
|
|
||||||
band->ht_cap = ht_cap;
|
|
||||||
+ band->vht_cap = vht_cap;
|
|
||||||
}
|
|
||||||
if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY) {
|
|
||||||
band = &ar->mac.sbands[NL80211_BAND_5GHZ];
|
|
@ -26,7 +26,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
|
|||||||
#include <linux/property.h>
|
#include <linux/property.h>
|
||||||
#include <linux/dmi.h>
|
#include <linux/dmi.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
@@ -3303,6 +3304,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));
|
device_get_mac_address(ar->dev, ar->mac_addr, sizeof(ar->mac_addr));
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From 34c67dc366419e06129dad0f32f521842bdff9bc Mon Sep 17 00:00:00 2001
|
From 34c67dc366419e06129dad0f32f521842bdff9bc Mon Sep 17 00:00:00 2001
|
||||||
From: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
From: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
||||||
Date: Wed, 21 Jul 2021 00:31:46 +0300
|
Date: Wed, 21 Jul 2021 00:31:46 +0300
|
||||||
Subject: [PATCH 002/120] ath11k: fix 4-addr tx failure for AP and STA modes
|
Subject: [PATCH] ath11k: fix 4-addr tx failure for AP and STA modes
|
||||||
|
|
||||||
Ath11k FW requires peer parameter WMI_PEER_USE_4ADDR to be set for
|
Ath11k FW requires peer parameter WMI_PEER_USE_4ADDR to be set for
|
||||||
4-addr peers allowing 4-address frame transmission to those peers.
|
4-addr peers allowing 4-address frame transmission to those peers.
|
||||||
@ -35,7 +35,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -362,6 +362,7 @@ struct ath11k_sta {
|
@@ -368,6 +368,7 @@ struct ath11k_sta {
|
||||||
enum hal_pn_type pn_type;
|
enum hal_pn_type pn_type;
|
||||||
|
|
||||||
struct work_struct update_wk;
|
struct work_struct update_wk;
|
||||||
@ -43,7 +43,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
struct rate_info txrate;
|
struct rate_info txrate;
|
||||||
struct rate_info last_txrate;
|
struct rate_info last_txrate;
|
||||||
u64 rx_duration;
|
u64 rx_duration;
|
||||||
@@ -374,6 +375,8 @@ struct ath11k_sta {
|
@@ -380,6 +381,8 @@ struct ath11k_sta {
|
||||||
/* protected by conf_mutex */
|
/* protected by conf_mutex */
|
||||||
bool aggr_mode;
|
bool aggr_mode;
|
||||||
#endif
|
#endif
|
||||||
@ -54,7 +54,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
#define ATH11K_MIN_5G_FREQ 4150
|
#define ATH11K_MIN_5G_FREQ 4150
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -3155,6 +3155,31 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3161,6 +3161,31 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
mutex_unlock(&ar->conf_mutex);
|
mutex_unlock(&ar->conf_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
static int ath11k_mac_inc_num_stations(struct ath11k_vif *arvif,
|
static int ath11k_mac_inc_num_stations(struct ath11k_vif *arvif,
|
||||||
struct ieee80211_sta *sta)
|
struct ieee80211_sta *sta)
|
||||||
{
|
{
|
||||||
@@ -3234,11 +3259,13 @@ static int ath11k_mac_station_add(struct
|
@@ -3240,11 +3265,13 @@ static int ath11k_mac_station_add(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ieee80211_vif_is_mesh(vif)) {
|
if (ieee80211_vif_is_mesh(vif)) {
|
||||||
@ -101,7 +101,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
sta->addr, ret);
|
sta->addr, ret);
|
||||||
goto free_tx_stats;
|
goto free_tx_stats;
|
||||||
}
|
}
|
||||||
@@ -3291,8 +3318,10 @@ static int ath11k_mac_op_sta_state(struc
|
@@ -3297,8 +3324,10 @@ static int ath11k_mac_op_sta_state(struc
|
||||||
|
|
||||||
/* cancel must be done outside the mutex to avoid deadlock */
|
/* cancel must be done outside the mutex to avoid deadlock */
|
||||||
if ((old_state == IEEE80211_STA_NONE &&
|
if ((old_state == IEEE80211_STA_NONE &&
|
||||||
@ -113,7 +113,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
mutex_lock(&ar->conf_mutex);
|
mutex_lock(&ar->conf_mutex);
|
||||||
|
|
||||||
@@ -3301,6 +3330,7 @@ static int ath11k_mac_op_sta_state(struc
|
@@ -3307,6 +3336,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||||
memset(arsta, 0, sizeof(*arsta));
|
memset(arsta, 0, sizeof(*arsta));
|
||||||
arsta->arvif = arvif;
|
arsta->arvif = arvif;
|
||||||
INIT_WORK(&arsta->update_wk, ath11k_sta_rc_update_wk);
|
INIT_WORK(&arsta->update_wk, ath11k_sta_rc_update_wk);
|
||||||
@ -121,7 +121,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
ret = ath11k_mac_station_add(ar, vif, sta);
|
ret = ath11k_mac_station_add(ar, vif, sta);
|
||||||
if (ret)
|
if (ret)
|
||||||
@@ -3395,6 +3425,19 @@ out:
|
@@ -3401,6 +3431,19 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-1-jouni@codeaurora.org
|
|||||||
static void ath11k_mac_op_sta_rc_update(struct ieee80211_hw *hw,
|
static void ath11k_mac_op_sta_rc_update(struct ieee80211_hw *hw,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
struct ieee80211_sta *sta,
|
struct ieee80211_sta *sta,
|
||||||
@@ -6180,6 +6223,7 @@ static const struct ieee80211_ops ath11k
|
@@ -6190,6 +6233,7 @@ static const struct ieee80211_ops ath11k
|
||||||
.cancel_hw_scan = ath11k_mac_op_cancel_hw_scan,
|
.cancel_hw_scan = ath11k_mac_op_cancel_hw_scan,
|
||||||
.set_key = ath11k_mac_op_set_key,
|
.set_key = ath11k_mac_op_set_key,
|
||||||
.sta_state = ath11k_mac_op_sta_state,
|
.sta_state = ath11k_mac_op_sta_state,
|
@ -1,7 +1,7 @@
|
|||||||
From e20cfa3b62aeb1b5fc5ffa86a007af97f9954767 Mon Sep 17 00:00:00 2001
|
From e20cfa3b62aeb1b5fc5ffa86a007af97f9954767 Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||||
Date: Wed, 21 Jul 2021 00:31:47 +0300
|
Date: Wed, 21 Jul 2021 00:31:47 +0300
|
||||||
Subject: [PATCH 003/120] ath11k: fix 4addr multicast packet tx
|
Subject: [PATCH] ath11k: fix 4addr multicast packet tx
|
||||||
|
|
||||||
In 4addr, AP wired backbone to STA wired backbone ping fails due to ARP
|
In 4addr, AP wired backbone to STA wired backbone ping fails due to ARP
|
||||||
request not getting answered. Here 4addr ARP multicast packet is sent in
|
request not getting answered. Here 4addr ARP multicast packet is sent in
|
||||||
@ -25,7 +25,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -377,6 +377,7 @@ struct ath11k_sta {
|
@@ -383,6 +383,7 @@ struct ath11k_sta {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool use_4addr_set;
|
bool use_4addr_set;
|
||||||
@ -74,7 +74,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-2-jouni@codeaurora.org
|
|||||||
enum hal_reo_cmd_type type,
|
enum hal_reo_cmd_type type,
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -4356,6 +4356,7 @@ static void ath11k_mac_op_tx(struct ieee
|
@@ -4366,6 +4366,7 @@ static void ath11k_mac_op_tx(struct ieee
|
||||||
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||||
struct ieee80211_key_conf *key = info->control.hw_key;
|
struct ieee80211_key_conf *key = info->control.hw_key;
|
||||||
@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20210720213147.90042-2-jouni@codeaurora.org
|
|||||||
u32 info_flags = info->flags;
|
u32 info_flags = info->flags;
|
||||||
bool is_prb_rsp;
|
bool is_prb_rsp;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -4381,7 +4382,10 @@ static void ath11k_mac_op_tx(struct ieee
|
@@ -4391,7 +4392,10 @@ static void ath11k_mac_op_tx(struct ieee
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1,8 +1,7 @@
|
|||||||
From 7e9fb2418a4c092a363d23e97973c9624150e5b2 Mon Sep 17 00:00:00 2001
|
From 7e9fb2418a4c092a363d23e97973c9624150e5b2 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Wed, 21 Jul 2021 00:49:20 +0300
|
Date: Wed, 21 Jul 2021 00:49:20 +0300
|
||||||
Subject: [PATCH 004/120] ath11k: Rename atf_config to flag1 in
|
Subject: [PATCH] ath11k: Rename atf_config to flag1 in target_resource_config
|
||||||
target_resource_config
|
|
||||||
|
|
||||||
The flag's purpose is not only meant for ATF configs. Rename atf_config
|
The flag's purpose is not only meant for ATF configs. Rename atf_config
|
||||||
to flag1, so it can be used for future purposes.
|
to flag1, so it can be used for future purposes.
|
||||||
@ -20,7 +19,7 @@ Link: https://lore.kernel.org/r/20210720214922.118078-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -3496,7 +3496,7 @@ ath11k_wmi_copy_resource_config(struct w
|
@@ -3497,7 +3497,7 @@ ath11k_wmi_copy_resource_config(struct w
|
||||||
wmi_cfg->bpf_instruction_size = tg_cfg->bpf_instruction_size;
|
wmi_cfg->bpf_instruction_size = tg_cfg->bpf_instruction_size;
|
||||||
wmi_cfg->max_bssid_rx_filters = tg_cfg->max_bssid_rx_filters;
|
wmi_cfg->max_bssid_rx_filters = tg_cfg->max_bssid_rx_filters;
|
||||||
wmi_cfg->use_pdev_id = tg_cfg->use_pdev_id;
|
wmi_cfg->use_pdev_id = tg_cfg->use_pdev_id;
|
@ -1,7 +1,7 @@
|
|||||||
From 9b4dd38b46cf24d8cb3ab433661cdc23a35160d0 Mon Sep 17 00:00:00 2001
|
From 9b4dd38b46cf24d8cb3ab433661cdc23a35160d0 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Wed, 21 Jul 2021 00:49:21 +0300
|
Date: Wed, 21 Jul 2021 00:49:21 +0300
|
||||||
Subject: [PATCH 005/120] ath11k: add support in survey dump with bss_chan_info
|
Subject: [PATCH] ath11k: add support in survey dump with bss_chan_info
|
||||||
|
|
||||||
Survey dump statistics is not displaying channel rx and tx time because
|
Survey dump statistics is not displaying channel rx and tx time because
|
||||||
the service flag is not enabled. Enable the service flag "bss_chan_info"
|
the service flag is not enabled. Enable the service flag "bss_chan_info"
|
@ -1,8 +1,8 @@
|
|||||||
From d37b4862312c980d1f6843d11a14ad4eda242c8d Mon Sep 17 00:00:00 2001
|
From d37b4862312c980d1f6843d11a14ad4eda242c8d Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 21 Sep 2021 16:39:29 +0300
|
Date: Tue, 21 Sep 2021 16:39:29 +0300
|
||||||
Subject: [PATCH 007/120] ath11k: move static function
|
Subject: [PATCH] ath11k: move static function ath11k_mac_vdev_setup_sync to
|
||||||
ath11k_mac_vdev_setup_sync to top
|
top
|
||||||
|
|
||||||
This is to prepare for monitor mode clean up.
|
This is to prepare for monitor mode clean up.
|
||||||
No functional changes are done.
|
No functional changes are done.
|
||||||
@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -731,6 +731,20 @@ static int ath11k_monitor_vdev_up(struct
|
@@ -732,6 +732,20 @@ static int ath11k_monitor_vdev_up(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-2-jouni@codeaurora.org
|
|||||||
static int ath11k_mac_op_config(struct ieee80211_hw *hw, u32 changed)
|
static int ath11k_mac_op_config(struct ieee80211_hw *hw, u32 changed)
|
||||||
{
|
{
|
||||||
/* mac80211 requires this op to be present and that's why
|
/* mac80211 requires this op to be present and that's why
|
||||||
@@ -5165,20 +5179,6 @@ static void ath11k_mac_op_remove_chanctx
|
@@ -5175,20 +5189,6 @@ static void ath11k_mac_op_remove_chanctx
|
||||||
mutex_unlock(&ar->conf_mutex);
|
mutex_unlock(&ar->conf_mutex);
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 64e06b78a92744d43d3993ba623d2686d8f937e7 Mon Sep 17 00:00:00 2001
|
From 64e06b78a92744d43d3993ba623d2686d8f937e7 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 21 Sep 2021 16:39:29 +0300
|
Date: Tue, 21 Sep 2021 16:39:29 +0300
|
||||||
Subject: [PATCH 008/120] ath11k: add separate APIs for monitor mode
|
Subject: [PATCH] ath11k: add separate APIs for monitor mode
|
||||||
|
|
||||||
Add separate APIs for monitor_vdev_create/monitor_vdev_delete
|
Add separate APIs for monitor_vdev_create/monitor_vdev_delete
|
||||||
and monitor_vdev_start/monitor_vdev_stop.
|
and monitor_vdev_start/monitor_vdev_stop.
|
||||||
@ -23,7 +23,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -194,6 +194,9 @@ enum ath11k_dev_flags {
|
@@ -200,6 +200,9 @@ enum ath11k_dev_flags {
|
||||||
|
|
||||||
enum ath11k_monitor_flags {
|
enum ath11k_monitor_flags {
|
||||||
ATH11K_FLAG_MONITOR_ENABLED,
|
ATH11K_FLAG_MONITOR_ENABLED,
|
||||||
@ -33,7 +33,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-3-jouni@codeaurora.org
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ath11k_vif {
|
struct ath11k_vif {
|
||||||
@@ -488,7 +491,6 @@ struct ath11k {
|
@@ -494,7 +497,6 @@ struct ath11k {
|
||||||
u32 chan_tx_pwr;
|
u32 chan_tx_pwr;
|
||||||
u32 num_stations;
|
u32 num_stations;
|
||||||
u32 max_num_stations;
|
u32 max_num_stations;
|
||||||
@ -41,7 +41,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-3-jouni@codeaurora.org
|
|||||||
/* To synchronize concurrent synchronous mac80211 callback operations,
|
/* To synchronize concurrent synchronous mac80211 callback operations,
|
||||||
* concurrent debugfs configuration and concurrent FW statistics events.
|
* concurrent debugfs configuration and concurrent FW statistics events.
|
||||||
*/
|
*/
|
||||||
@@ -563,6 +565,7 @@ struct ath11k {
|
@@ -569,6 +571,7 @@ struct ath11k {
|
||||||
struct ath11k_per_peer_tx_stats cached_stats;
|
struct ath11k_per_peer_tx_stats cached_stats;
|
||||||
u32 last_ppdu_id;
|
u32 last_ppdu_id;
|
||||||
u32 cached_ppdu_id;
|
u32 cached_ppdu_id;
|
||||||
@ -51,7 +51,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-3-jouni@codeaurora.org
|
|||||||
#endif
|
#endif
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -745,14 +745,370 @@ static inline int ath11k_mac_vdev_setup_
|
@@ -746,14 +746,370 @@ static inline int ath11k_mac_vdev_setup_
|
||||||
return ar->last_wmi_vdev_start_status ? -EINVAL : 0;
|
return ar->last_wmi_vdev_start_status ? -EINVAL : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +427,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-3-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif)
|
static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif)
|
||||||
@@ -6771,7 +7127,12 @@ int ath11k_mac_allocate(struct ath11k_ba
|
@@ -6781,7 +7137,12 @@ int ath11k_mac_allocate(struct ath11k_ba
|
||||||
|
|
||||||
INIT_WORK(&ar->wmi_mgmt_tx_work, ath11k_mgmt_over_wmi_tx_work);
|
INIT_WORK(&ar->wmi_mgmt_tx_work, ath11k_mgmt_over_wmi_tx_work);
|
||||||
skb_queue_head_init(&ar->wmi_mgmt_tx_queue);
|
skb_queue_head_init(&ar->wmi_mgmt_tx_queue);
|
@ -1,7 +1,7 @@
|
|||||||
From 689a5e6fff75229ac7c2af7a9c51dc2d3ca1882b Mon Sep 17 00:00:00 2001
|
From 689a5e6fff75229ac7c2af7a9c51dc2d3ca1882b Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 21 Sep 2021 16:39:30 +0300
|
Date: Tue, 21 Sep 2021 16:39:30 +0300
|
||||||
Subject: [PATCH 009/120] ath11k: monitor mode clean up to use separate APIs
|
Subject: [PATCH] ath11k: monitor mode clean up to use separate APIs
|
||||||
|
|
||||||
If monitor interface is enabled in co-exist mode, only local traffic are
|
If monitor interface is enabled in co-exist mode, only local traffic are
|
||||||
captured. It's caused by missing monitor vdev in co-exist mode. So,
|
captured. It's caused by missing monitor vdev in co-exist mode. So,
|
||||||
@ -27,7 +27,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -193,7 +193,6 @@ enum ath11k_dev_flags {
|
@@ -199,7 +199,6 @@ enum ath11k_dev_flags {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ath11k_monitor_flags {
|
enum ath11k_monitor_flags {
|
||||||
@ -69,7 +69,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
HAL_RXDMA_MONITOR_STATUS,
|
HAL_RXDMA_MONITOR_STATUS,
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -715,22 +715,6 @@ void ath11k_mac_peer_cleanup_all(struct
|
@@ -716,22 +716,6 @@ void ath11k_mac_peer_cleanup_all(struct
|
||||||
ar->num_stations = 0;
|
ar->num_stations = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
static inline int ath11k_mac_vdev_setup_sync(struct ath11k *ar)
|
static inline int ath11k_mac_vdev_setup_sync(struct ath11k *ar)
|
||||||
{
|
{
|
||||||
lockdep_assert_held(&ar->conf_mutex);
|
lockdep_assert_held(&ar->conf_mutex);
|
||||||
@@ -2326,7 +2310,7 @@ static int ath11k_mac_config_obss_pd(str
|
@@ -2331,7 +2315,7 @@ static int ath11k_mac_config_obss_pd(str
|
||||||
|
|
||||||
/* Set and enable SRG/non-SRG OBSS PD Threshold */
|
/* Set and enable SRG/non-SRG OBSS PD Threshold */
|
||||||
param_id = WMI_PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD;
|
param_id = WMI_PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD;
|
||||||
@ -101,7 +101,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
ret = ath11k_wmi_pdev_set_param(ar, param_id, 0, pdev_id);
|
ret = ath11k_wmi_pdev_set_param(ar, param_id, 0, pdev_id);
|
||||||
if (ret)
|
if (ret)
|
||||||
ath11k_warn(ar->ab,
|
ath11k_warn(ar->ab,
|
||||||
@@ -5100,8 +5084,8 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5110,8 +5094,8 @@ static int ath11k_mac_op_add_interface(s
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ar->num_created_vdevs > (TARGET_NUM_VDEVS - 1)) {
|
if (ar->num_created_vdevs > (TARGET_NUM_VDEVS - 1)) {
|
||||||
@ -112,7 +112,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@@ -5141,6 +5125,7 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5151,6 +5135,7 @@ static int ath11k_mac_op_add_interface(s
|
||||||
break;
|
break;
|
||||||
case NL80211_IFTYPE_MONITOR:
|
case NL80211_IFTYPE_MONITOR:
|
||||||
arvif->vdev_type = WMI_VDEV_TYPE_MONITOR;
|
arvif->vdev_type = WMI_VDEV_TYPE_MONITOR;
|
||||||
@ -120,7 +120,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
@@ -5242,6 +5227,9 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5252,6 +5237,9 @@ static int ath11k_mac_op_add_interface(s
|
||||||
goto err_peer_del;
|
goto err_peer_del;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -130,7 +130,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -5262,6 +5250,16 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5272,6 +5260,16 @@ static int ath11k_mac_op_add_interface(s
|
||||||
|
|
||||||
ath11k_dp_vdev_tx_attach(ar, arvif);
|
ath11k_dp_vdev_tx_attach(ar, arvif);
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
mutex_unlock(&ar->conf_mutex);
|
mutex_unlock(&ar->conf_mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -5359,6 +5357,18 @@ static void ath11k_mac_op_remove_interfa
|
@@ -5369,6 +5367,18 @@ static void ath11k_mac_op_remove_interfa
|
||||||
ath11k_dbg(ab, ATH11K_DBG_MAC, "vdev %pM deleted, vdev_id %d\n",
|
ath11k_dbg(ab, ATH11K_DBG_MAC, "vdev %pM deleted, vdev_id %d\n",
|
||||||
vif->addr, arvif->vdev_id);
|
vif->addr, arvif->vdev_id);
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
err_vdev_del:
|
err_vdev_del:
|
||||||
spin_lock_bh(&ar->data_lock);
|
spin_lock_bh(&ar->data_lock);
|
||||||
list_del(&arvif->list);
|
list_del(&arvif->list);
|
||||||
@@ -5378,7 +5388,6 @@ err_vdev_del:
|
@@ -5388,7 +5398,6 @@ err_vdev_del:
|
||||||
|
|
||||||
/* Recalc txpower for remaining vdev */
|
/* Recalc txpower for remaining vdev */
|
||||||
ath11k_mac_txpower_recalc(ar);
|
ath11k_mac_txpower_recalc(ar);
|
||||||
@ -174,7 +174,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
|
|
||||||
/* TODO: recal traffic pause state based on the available vdevs */
|
/* TODO: recal traffic pause state based on the available vdevs */
|
||||||
|
|
||||||
@@ -5401,8 +5410,6 @@ static void ath11k_mac_op_configure_filt
|
@@ -5411,8 +5420,6 @@ static void ath11k_mac_op_configure_filt
|
||||||
u64 multicast)
|
u64 multicast)
|
||||||
{
|
{
|
||||||
struct ath11k *ar = hw->priv;
|
struct ath11k *ar = hw->priv;
|
||||||
@ -183,7 +183,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
|
|
||||||
mutex_lock(&ar->conf_mutex);
|
mutex_lock(&ar->conf_mutex);
|
||||||
|
|
||||||
@@ -5410,23 +5417,6 @@ static void ath11k_mac_op_configure_filt
|
@@ -5420,23 +5427,6 @@ static void ath11k_mac_op_configure_filt
|
||||||
*total_flags &= SUPPORTED_FILTERS;
|
*total_flags &= SUPPORTED_FILTERS;
|
||||||
ar->filter_flags = *total_flags;
|
ar->filter_flags = *total_flags;
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
mutex_unlock(&ar->conf_mutex);
|
mutex_unlock(&ar->conf_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5617,7 +5607,9 @@ ath11k_mac_vdev_start_restart(struct ath
|
@@ -5627,7 +5617,9 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
ath11k_dbg(ab, ATH11K_DBG_MAC, "vdev %pM started, vdev_id %d\n",
|
ath11k_dbg(ab, ATH11K_DBG_MAC, "vdev %pM started, vdev_id %d\n",
|
||||||
arvif->vif->addr, arvif->vdev_id);
|
arvif->vif->addr, arvif->vdev_id);
|
||||||
|
|
||||||
@@ -5745,12 +5737,16 @@ ath11k_mac_update_vif_chan(struct ath11k
|
@@ -5755,12 +5747,16 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||||
struct ath11k_vif *arvif;
|
struct ath11k_vif *arvif;
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
@ -235,7 +235,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
ath11k_dbg(ab, ATH11K_DBG_MAC,
|
ath11k_dbg(ab, ATH11K_DBG_MAC,
|
||||||
"mac chanctx switch vdev_id %i freq %u->%u width %d->%d\n",
|
"mac chanctx switch vdev_id %i freq %u->%u width %d->%d\n",
|
||||||
arvif->vdev_id,
|
arvif->vdev_id,
|
||||||
@@ -5771,6 +5767,8 @@ ath11k_mac_update_vif_chan(struct ath11k
|
@@ -5781,6 +5777,8 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||||
arvif->vdev_id, ret);
|
arvif->vdev_id, ret);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -244,7 +244,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* All relevant vdevs are downed and associated channel resources
|
/* All relevant vdevs are downed and associated channel resources
|
||||||
@@ -5808,6 +5806,24 @@ ath11k_mac_update_vif_chan(struct ath11k
|
@@ -5818,6 +5816,24 @@ ath11k_mac_update_vif_chan(struct ath11k
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,7 +269,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -5887,7 +5903,7 @@ static int ath11k_start_vdev_delay(struc
|
@@ -5897,7 +5913,7 @@ static int ath11k_start_vdev_delay(struc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
|
if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
|
||||||
@ -278,7 +278,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_warn(ab, "failed put monitor up: %d\n", ret);
|
ath11k_warn(ab, "failed put monitor up: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -5947,6 +5963,18 @@ ath11k_mac_op_assign_vif_chanctx(struct
|
@@ -5957,6 +5973,18 @@ ath11k_mac_op_assign_vif_chanctx(struct
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +297,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
ret = ath11k_mac_vdev_start(arvif, &ctx->def);
|
ret = ath11k_mac_vdev_start(arvif, &ctx->def);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_warn(ab, "failed to start vdev %i addr %pM on freq %d: %d\n",
|
ath11k_warn(ab, "failed to start vdev %i addr %pM on freq %d: %d\n",
|
||||||
@@ -5954,14 +5982,19 @@ ath11k_mac_op_assign_vif_chanctx(struct
|
@@ -5964,14 +5992,19 @@ ath11k_mac_op_assign_vif_chanctx(struct
|
||||||
ctx->def.chan->center_freq, ret);
|
ctx->def.chan->center_freq, ret);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@ -322,7 +322,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
/* TODO: Setup ps and cts/rts protection */
|
/* TODO: Setup ps and cts/rts protection */
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
@@ -5995,6 +6028,20 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
@@ -6005,6 +6038,20 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
||||||
ath11k_peer_find_by_addr(ab, ar->mac_addr))
|
ath11k_peer_find_by_addr(ab, ar->mac_addr))
|
||||||
ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
|
ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
ret = ath11k_mac_vdev_stop(arvif);
|
ret = ath11k_mac_vdev_stop(arvif);
|
||||||
if (ret)
|
if (ret)
|
||||||
ath11k_warn(ab, "failed to stop vdev %i: %d\n",
|
ath11k_warn(ab, "failed to stop vdev %i: %d\n",
|
||||||
@@ -6006,6 +6053,16 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
@@ -6016,6 +6063,16 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
||||||
arvif->vdev_type == WMI_VDEV_TYPE_MONITOR)
|
arvif->vdev_type == WMI_VDEV_TYPE_MONITOR)
|
||||||
ath11k_wmi_vdev_down(ar, arvif->vdev_id);
|
ath11k_wmi_vdev_down(ar, arvif->vdev_id);
|
||||||
|
|
||||||
@ -360,7 +360,7 @@ Link: https://lore.kernel.org/r/20210721162053.46290-4-jouni@codeaurora.org
|
|||||||
mutex_unlock(&ar->conf_mutex);
|
mutex_unlock(&ar->conf_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7128,7 +7185,6 @@ int ath11k_mac_allocate(struct ath11k_ba
|
@@ -7138,7 +7195,6 @@ int ath11k_mac_allocate(struct ath11k_ba
|
||||||
INIT_WORK(&ar->wmi_mgmt_tx_work, ath11k_mgmt_over_wmi_tx_work);
|
INIT_WORK(&ar->wmi_mgmt_tx_work, ath11k_mgmt_over_wmi_tx_work);
|
||||||
skb_queue_head_init(&ar->wmi_mgmt_tx_queue);
|
skb_queue_head_init(&ar->wmi_mgmt_tx_queue);
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 61fe43e7216df6e9a912d831aafc7142fa20f280 Mon Sep 17 00:00:00 2001
|
From 61fe43e7216df6e9a912d831aafc7142fa20f280 Mon Sep 17 00:00:00 2001
|
||||||
From: Miles Hu <milehu@codeaurora.org>
|
From: Miles Hu <milehu@codeaurora.org>
|
||||||
Date: Fri, 24 Sep 2021 16:52:45 +0300
|
Date: Fri, 24 Sep 2021 16:52:45 +0300
|
||||||
Subject: [PATCH 010/120] ath11k: add support for setting fixed HE rate/gi/ltf
|
Subject: [PATCH] ath11k: add support for setting fixed HE rate/gi/ltf
|
||||||
|
|
||||||
Support setting fixed HE rate/gi/ltf values that we are now able to send
|
Support setting fixed HE rate/gi/ltf values that we are now able to send
|
||||||
to the kernel using nl80211. The added code is reusing parts of the
|
to the kernel using nl80211. The added code is reusing parts of the
|
||||||
@ -29,7 +29,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -354,6 +354,18 @@ ath11k_mac_max_vht_nss(const u16 vht_mcs
|
@@ -355,6 +355,18 @@ ath11k_mac_max_vht_nss(const u16 vht_mcs
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
static u8 ath11k_parse_mpdudensity(u8 mpdudensity)
|
static u8 ath11k_parse_mpdudensity(u8 mpdudensity)
|
||||||
{
|
{
|
||||||
/* 802.11n D2.0 defined values for "Minimum MPDU Start Spacing":
|
/* 802.11n D2.0 defined values for "Minimum MPDU Start Spacing":
|
||||||
@@ -1447,6 +1459,14 @@ static void ath11k_peer_assoc_h_ht(struc
|
@@ -1452,6 +1464,14 @@ static void ath11k_peer_assoc_h_ht(struc
|
||||||
arg->peer_rate_caps |= WMI_HOST_RC_CW40_FLAG;
|
arg->peer_rate_caps |= WMI_HOST_RC_CW40_FLAG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) {
|
if (arvif->bitrate_mask.control[band].gi != NL80211_TXRATE_FORCE_LGI) {
|
||||||
if (ht_cap->cap & (IEEE80211_HT_CAP_SGI_20 |
|
if (ht_cap->cap & (IEEE80211_HT_CAP_SGI_20 |
|
||||||
IEEE80211_HT_CAP_SGI_40))
|
IEEE80211_HT_CAP_SGI_40))
|
||||||
@@ -1570,10 +1590,11 @@ static void ath11k_peer_assoc_h_vht(stru
|
@@ -1575,10 +1595,11 @@ static void ath11k_peer_assoc_h_vht(stru
|
||||||
struct ath11k_vif *arvif = (void *)vif->drv_priv;
|
struct ath11k_vif *arvif = (void *)vif->drv_priv;
|
||||||
struct cfg80211_chan_def def;
|
struct cfg80211_chan_def def;
|
||||||
enum nl80211_band band;
|
enum nl80211_band band;
|
||||||
@ -77,7 +77,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
||||||
return;
|
return;
|
||||||
@@ -1616,6 +1637,24 @@ static void ath11k_peer_assoc_h_vht(stru
|
@@ -1621,6 +1642,24 @@ static void ath11k_peer_assoc_h_vht(stru
|
||||||
if (sta->bandwidth == IEEE80211_STA_RX_BW_160)
|
if (sta->bandwidth == IEEE80211_STA_RX_BW_160)
|
||||||
arg->bw_160 = true;
|
arg->bw_160 = true;
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
/* Calculate peer NSS capability from VHT capabilities if STA
|
/* Calculate peer NSS capability from VHT capabilities if STA
|
||||||
* supports VHT.
|
* supports VHT.
|
||||||
*/
|
*/
|
||||||
@@ -1654,18 +1693,100 @@ static void ath11k_peer_assoc_h_vht(stru
|
@@ -1659,18 +1698,100 @@ static void ath11k_peer_assoc_h_vht(stru
|
||||||
/* TODO: rxnss_override */
|
/* TODO: rxnss_override */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
arg->he_flag = true;
|
arg->he_flag = true;
|
||||||
|
|
||||||
memcpy_and_pad(&arg->peer_he_cap_macinfo,
|
memcpy_and_pad(&arg->peer_he_cap_macinfo,
|
||||||
@@ -1742,25 +1863,48 @@ static void ath11k_peer_assoc_h_he(struc
|
@@ -1747,25 +1868,48 @@ static void ath11k_peer_assoc_h_he(struc
|
||||||
if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ)
|
if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ)
|
||||||
arg->twt_requester = true;
|
arg->twt_requester = true;
|
||||||
|
|
||||||
@ -253,7 +253,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
fallthrough;
|
fallthrough;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1768,11 +1912,34 @@ static void ath11k_peer_assoc_h_he(struc
|
@@ -1773,11 +1917,34 @@ static void ath11k_peer_assoc_h_he(struc
|
||||||
arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
|
arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
|
||||||
|
|
||||||
v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
|
v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
|
||||||
@ -288,7 +288,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ath11k_peer_assoc_h_smps(struct ieee80211_sta *sta,
|
static void ath11k_peer_assoc_h_smps(struct ieee80211_sta *sta,
|
||||||
@@ -1975,6 +2142,7 @@ static void ath11k_peer_assoc_h_phymode(
|
@@ -1980,6 +2147,7 @@ static void ath11k_peer_assoc_h_phymode(
|
||||||
enum nl80211_band band;
|
enum nl80211_band band;
|
||||||
const u8 *ht_mcs_mask;
|
const u8 *ht_mcs_mask;
|
||||||
const u16 *vht_mcs_mask;
|
const u16 *vht_mcs_mask;
|
||||||
@ -296,7 +296,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
enum wmi_phy_mode phymode = MODE_UNKNOWN;
|
enum wmi_phy_mode phymode = MODE_UNKNOWN;
|
||||||
|
|
||||||
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
||||||
@@ -1983,10 +2151,12 @@ static void ath11k_peer_assoc_h_phymode(
|
@@ -1988,10 +2156,12 @@ static void ath11k_peer_assoc_h_phymode(
|
||||||
band = def.chan->band;
|
band = def.chan->band;
|
||||||
ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
|
ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
|
||||||
vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
|
vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
|
||||||
@ -310,7 +310,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
if (sta->bandwidth == IEEE80211_STA_RX_BW_80)
|
if (sta->bandwidth == IEEE80211_STA_RX_BW_80)
|
||||||
phymode = MODE_11AX_HE80_2G;
|
phymode = MODE_11AX_HE80_2G;
|
||||||
else if (sta->bandwidth == IEEE80211_STA_RX_BW_40)
|
else if (sta->bandwidth == IEEE80211_STA_RX_BW_40)
|
||||||
@@ -2014,7 +2184,8 @@ static void ath11k_peer_assoc_h_phymode(
|
@@ -2019,7 +2189,8 @@ static void ath11k_peer_assoc_h_phymode(
|
||||||
case NL80211_BAND_5GHZ:
|
case NL80211_BAND_5GHZ:
|
||||||
case NL80211_BAND_6GHZ:
|
case NL80211_BAND_6GHZ:
|
||||||
/* Check HE first */
|
/* Check HE first */
|
||||||
@ -320,7 +320,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
phymode = ath11k_mac_get_phymode_he(ar, sta);
|
phymode = ath11k_mac_get_phymode_he(ar, sta);
|
||||||
} else if (sta->vht_cap.vht_supported &&
|
} else if (sta->vht_cap.vht_supported &&
|
||||||
!ath11k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
|
!ath11k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
|
||||||
@@ -3241,6 +3412,20 @@ ath11k_mac_bitrate_mask_num_vht_rates(st
|
@@ -3247,6 +3418,20 @@ ath11k_mac_bitrate_mask_num_vht_rates(st
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -341,7 +341,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
ath11k_mac_set_peer_vht_fixed_rate(struct ath11k_vif *arvif,
|
ath11k_mac_set_peer_vht_fixed_rate(struct ath11k_vif *arvif,
|
||||||
struct ieee80211_sta *sta,
|
struct ieee80211_sta *sta,
|
||||||
const struct cfg80211_bitrate_mask *mask,
|
const struct cfg80211_bitrate_mask *mask,
|
||||||
@@ -3268,6 +3453,10 @@ ath11k_mac_set_peer_vht_fixed_rate(struc
|
@@ -3274,6 +3459,10 @@ ath11k_mac_set_peer_vht_fixed_rate(struc
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -352,7 +352,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
|
ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
|
||||||
"Setting Fixed VHT Rate for peer %pM. Device will not switch to any other selected rates",
|
"Setting Fixed VHT Rate for peer %pM. Device will not switch to any other selected rates",
|
||||||
sta->addr);
|
sta->addr);
|
||||||
@@ -3286,6 +3475,57 @@ ath11k_mac_set_peer_vht_fixed_rate(struc
|
@@ -3292,6 +3481,57 @@ ath11k_mac_set_peer_vht_fixed_rate(struc
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
static int ath11k_station_assoc(struct ath11k *ar,
|
static int ath11k_station_assoc(struct ath11k *ar,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
struct ieee80211_sta *sta,
|
struct ieee80211_sta *sta,
|
||||||
@@ -3297,7 +3537,7 @@ static int ath11k_station_assoc(struct a
|
@@ -3303,7 +3543,7 @@ static int ath11k_station_assoc(struct a
|
||||||
struct cfg80211_chan_def def;
|
struct cfg80211_chan_def def;
|
||||||
enum nl80211_band band;
|
enum nl80211_band band;
|
||||||
struct cfg80211_bitrate_mask *mask;
|
struct cfg80211_bitrate_mask *mask;
|
||||||
@ -419,7 +419,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
lockdep_assert_held(&ar->conf_mutex);
|
lockdep_assert_held(&ar->conf_mutex);
|
||||||
|
|
||||||
@@ -3323,9 +3563,10 @@ static int ath11k_station_assoc(struct a
|
@@ -3329,9 +3569,10 @@ static int ath11k_station_assoc(struct a
|
||||||
}
|
}
|
||||||
|
|
||||||
num_vht_rates = ath11k_mac_bitrate_mask_num_vht_rates(ar, band, mask);
|
num_vht_rates = ath11k_mac_bitrate_mask_num_vht_rates(ar, band, mask);
|
||||||
@ -432,7 +432,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
* fixed param.
|
* fixed param.
|
||||||
* Note that all other rates and NSS will be disabled for this peer.
|
* Note that all other rates and NSS will be disabled for this peer.
|
||||||
*/
|
*/
|
||||||
@@ -3334,6 +3575,11 @@ static int ath11k_station_assoc(struct a
|
@@ -3340,6 +3581,11 @@ static int ath11k_station_assoc(struct a
|
||||||
band);
|
band);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
@ -444,7 +444,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Re-assoc is run only to update supported rates for given station. It
|
/* Re-assoc is run only to update supported rates for given station. It
|
||||||
@@ -3404,8 +3650,9 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3410,8 +3656,9 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
enum nl80211_band band;
|
enum nl80211_band band;
|
||||||
const u8 *ht_mcs_mask;
|
const u8 *ht_mcs_mask;
|
||||||
const u16 *vht_mcs_mask;
|
const u16 *vht_mcs_mask;
|
||||||
@ -455,7 +455,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
const struct cfg80211_bitrate_mask *mask;
|
const struct cfg80211_bitrate_mask *mask;
|
||||||
struct peer_assoc_params peer_arg;
|
struct peer_assoc_params peer_arg;
|
||||||
|
|
||||||
@@ -3420,6 +3667,7 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3426,6 +3673,7 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
band = def.chan->band;
|
band = def.chan->band;
|
||||||
ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
|
ht_mcs_mask = arvif->bitrate_mask.control[band].ht_mcs;
|
||||||
vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
|
vht_mcs_mask = arvif->bitrate_mask.control[band].vht_mcs;
|
||||||
@ -463,7 +463,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
spin_lock_bh(&ar->data_lock);
|
spin_lock_bh(&ar->data_lock);
|
||||||
|
|
||||||
@@ -3435,8 +3683,9 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3441,8 +3689,9 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
mutex_lock(&ar->conf_mutex);
|
mutex_lock(&ar->conf_mutex);
|
||||||
|
|
||||||
nss = max_t(u32, 1, nss);
|
nss = max_t(u32, 1, nss);
|
||||||
@ -475,7 +475,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (changed & IEEE80211_RC_BW_CHANGED) {
|
if (changed & IEEE80211_RC_BW_CHANGED) {
|
||||||
err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id,
|
err = ath11k_wmi_set_peer_param(ar, sta->addr, arvif->vdev_id,
|
||||||
@@ -3472,6 +3721,8 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3478,6 +3727,8 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
mask = &arvif->bitrate_mask;
|
mask = &arvif->bitrate_mask;
|
||||||
num_vht_rates = ath11k_mac_bitrate_mask_num_vht_rates(ar, band,
|
num_vht_rates = ath11k_mac_bitrate_mask_num_vht_rates(ar, band,
|
||||||
mask);
|
mask);
|
||||||
@ -484,7 +484,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
/* Peer_assoc_prepare will reject vht rates in
|
/* Peer_assoc_prepare will reject vht rates in
|
||||||
* bitrate_mask if its not available in range format and
|
* bitrate_mask if its not available in range format and
|
||||||
@@ -3487,11 +3738,25 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3493,11 +3744,25 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
if (sta->vht_cap.vht_supported && num_vht_rates == 1) {
|
if (sta->vht_cap.vht_supported && num_vht_rates == 1) {
|
||||||
ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask,
|
ath11k_mac_set_peer_vht_fixed_rate(arvif, sta, mask,
|
||||||
band);
|
band);
|
||||||
@ -512,7 +512,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
ath11k_peer_assoc_prepare(ar, arvif->vif, sta,
|
ath11k_peer_assoc_prepare(ar, arvif->vif, sta,
|
||||||
&peer_arg, true);
|
&peer_arg, true);
|
||||||
|
|
||||||
@@ -5101,10 +5366,13 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5111,10 +5376,13 @@ static int ath11k_mac_op_add_interface(s
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) {
|
for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) {
|
||||||
arvif->bitrate_mask.control[i].legacy = 0xffffffff;
|
arvif->bitrate_mask.control[i].legacy = 0xffffffff;
|
||||||
@ -526,7 +526,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
bit = __ffs64(ab->free_vdev_map);
|
bit = __ffs64(ab->free_vdev_map);
|
||||||
@@ -6180,9 +6448,26 @@ ath11k_mac_has_single_legacy_rate(struct
|
@@ -6190,9 +6458,26 @@ ath11k_mac_has_single_legacy_rate(struct
|
||||||
if (ath11k_mac_bitrate_mask_num_vht_rates(ar, band, mask))
|
if (ath11k_mac_bitrate_mask_num_vht_rates(ar, band, mask))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -553,7 +553,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
static bool
|
static bool
|
||||||
ath11k_mac_bitrate_mask_get_single_nss(struct ath11k *ar,
|
ath11k_mac_bitrate_mask_get_single_nss(struct ath11k *ar,
|
||||||
enum nl80211_band band,
|
enum nl80211_band band,
|
||||||
@@ -6191,8 +6476,10 @@ ath11k_mac_bitrate_mask_get_single_nss(s
|
@@ -6201,8 +6486,10 @@ ath11k_mac_bitrate_mask_get_single_nss(s
|
||||||
{
|
{
|
||||||
struct ieee80211_supported_band *sband = &ar->mac.sbands[band];
|
struct ieee80211_supported_band *sband = &ar->mac.sbands[band];
|
||||||
u16 vht_mcs_map = le16_to_cpu(sband->vht_cap.vht_mcs.tx_mcs_map);
|
u16 vht_mcs_map = le16_to_cpu(sband->vht_cap.vht_mcs.tx_mcs_map);
|
||||||
@ -564,7 +564,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* No need to consider legacy here. Basic rates are always present
|
/* No need to consider legacy here. Basic rates are always present
|
||||||
@@ -6219,7 +6506,20 @@ ath11k_mac_bitrate_mask_get_single_nss(s
|
@@ -6229,7 +6516,20 @@ ath11k_mac_bitrate_mask_get_single_nss(s
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (ht_nss_mask == 0)
|
if (ht_nss_mask == 0)
|
||||||
@@ -6266,42 +6566,125 @@ ath11k_mac_get_single_legacy_rate(struct
|
@@ -6276,42 +6576,125 @@ ath11k_mac_get_single_legacy_rate(struct
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -730,7 +730,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6314,6 +6697,35 @@ static int ath11k_mac_set_fixed_rate_par
|
@@ -6324,6 +6707,35 @@ static int ath11k_mac_set_fixed_rate_par
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -766,7 +766,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6342,6 +6754,31 @@ ath11k_mac_vht_mcs_range_present(struct
|
@@ -6352,6 +6764,31 @@ ath11k_mac_vht_mcs_range_present(struct
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -798,7 +798,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
static void ath11k_mac_set_bitrate_mask_iter(void *data,
|
static void ath11k_mac_set_bitrate_mask_iter(void *data,
|
||||||
struct ieee80211_sta *sta)
|
struct ieee80211_sta *sta)
|
||||||
{
|
{
|
||||||
@@ -6373,6 +6810,54 @@ static void ath11k_mac_disable_peer_fixe
|
@@ -6383,6 +6820,54 @@ static void ath11k_mac_disable_peer_fixe
|
||||||
sta->addr, ret);
|
sta->addr, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -853,7 +853,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
static int
|
static int
|
||||||
ath11k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
ath11k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
@@ -6384,6 +6869,9 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -6394,6 +6879,9 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
enum nl80211_band band;
|
enum nl80211_band band;
|
||||||
const u8 *ht_mcs_mask;
|
const u8 *ht_mcs_mask;
|
||||||
const u16 *vht_mcs_mask;
|
const u16 *vht_mcs_mask;
|
||||||
@ -863,7 +863,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
u32 rate;
|
u32 rate;
|
||||||
u8 nss;
|
u8 nss;
|
||||||
u8 sgi;
|
u8 sgi;
|
||||||
@@ -6391,6 +6879,7 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -6401,6 +6889,7 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
int single_nss;
|
int single_nss;
|
||||||
int ret;
|
int ret;
|
||||||
int num_rates;
|
int num_rates;
|
||||||
@ -871,7 +871,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (ath11k_mac_vif_chan(vif, &def))
|
if (ath11k_mac_vif_chan(vif, &def))
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
@@ -6398,12 +6887,16 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -6408,12 +6897,16 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
band = def.chan->band;
|
band = def.chan->band;
|
||||||
ht_mcs_mask = mask->control[band].ht_mcs;
|
ht_mcs_mask = mask->control[band].ht_mcs;
|
||||||
vht_mcs_mask = mask->control[band].vht_mcs;
|
vht_mcs_mask = mask->control[band].vht_mcs;
|
||||||
@ -888,7 +888,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
/* mac80211 doesn't support sending a fixed HT/VHT MCS alone, rather it
|
/* mac80211 doesn't support sending a fixed HT/VHT MCS alone, rather it
|
||||||
* requires passing atleast one of used basic rates along with them.
|
* requires passing atleast one of used basic rates along with them.
|
||||||
* Fixed rate setting across different preambles(legacy, HT, VHT) is
|
* Fixed rate setting across different preambles(legacy, HT, VHT) is
|
||||||
@@ -6427,11 +6920,22 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -6437,11 +6930,22 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
&single_nss)) {
|
&single_nss)) {
|
||||||
rate = WMI_FIXED_RATE_NONE;
|
rate = WMI_FIXED_RATE_NONE;
|
||||||
nss = single_nss;
|
nss = single_nss;
|
||||||
@ -913,7 +913,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
/* If multiple rates across different preambles are given
|
/* If multiple rates across different preambles are given
|
||||||
* we can reconfigure this info with all peers using PEER_ASSOC
|
* we can reconfigure this info with all peers using PEER_ASSOC
|
||||||
@@ -6462,16 +6966,28 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -6472,16 +6976,28 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
* RATEMASK CMD
|
* RATEMASK CMD
|
||||||
*/
|
*/
|
||||||
ath11k_warn(ar->ab,
|
ath11k_warn(ar->ab,
|
||||||
@ -945,7 +945,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
arvif->bitrate_mask = *mask;
|
arvif->bitrate_mask = *mask;
|
||||||
ieee80211_iterate_stations_atomic(ar->hw,
|
ieee80211_iterate_stations_atomic(ar->hw,
|
||||||
ath11k_mac_set_bitrate_mask_iter,
|
ath11k_mac_set_bitrate_mask_iter,
|
||||||
@@ -6482,9 +6998,10 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -6492,9 +7008,10 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
|
|
||||||
mutex_lock(&ar->conf_mutex);
|
mutex_lock(&ar->conf_mutex);
|
||||||
|
|
||||||
@ -960,7 +960,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -1904,8 +1904,8 @@ int ath11k_wmi_send_peer_assoc_cmd(struc
|
@@ -1905,8 +1905,8 @@ int ath11k_wmi_send_peer_assoc_cmd(struc
|
||||||
FIELD_PREP(WMI_TLV_LEN,
|
FIELD_PREP(WMI_TLV_LEN,
|
||||||
sizeof(*he_mcs) - TLV_HDR_SIZE);
|
sizeof(*he_mcs) - TLV_HDR_SIZE);
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From f552d6fd2f27ce9430c74482c46272838e2de688 Mon Sep 17 00:00:00 2001
|
From f552d6fd2f27ce9430c74482c46272838e2de688 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
||||||
Subject: [PATCH 011/120] ath11k: add support for 80P80 and 160 MHz bandwidth
|
Subject: [PATCH] ath11k: add support for 80P80 and 160 MHz bandwidth
|
||||||
|
|
||||||
For 160 MHz, nss_ratio_enabled flag is added to indicate firmware
|
For 160 MHz, nss_ratio_enabled flag is added to indicate firmware
|
||||||
supports sending NSS ratio information from firmware as a part of
|
supports sending NSS ratio information from firmware as a part of
|
||||||
@ -38,7 +38,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -597,6 +597,8 @@ struct ath11k_pdev_cap {
|
@@ -603,6 +603,8 @@ struct ath11k_pdev_cap {
|
||||||
u32 tx_chain_mask_shift;
|
u32 tx_chain_mask_shift;
|
||||||
u32 rx_chain_mask_shift;
|
u32 rx_chain_mask_shift;
|
||||||
struct ath11k_band_cap band[NUM_NL80211_BANDS];
|
struct ath11k_band_cap band[NUM_NL80211_BANDS];
|
||||||
@ -49,7 +49,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
struct ath11k_pdev {
|
struct ath11k_pdev {
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -1581,6 +1581,34 @@ ath11k_peer_assoc_h_vht_limit(u16 tx_mcs
|
@@ -1586,6 +1586,34 @@ ath11k_peer_assoc_h_vht_limit(u16 tx_mcs
|
||||||
return tx_mcs_set;
|
return tx_mcs_set;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
static void ath11k_peer_assoc_h_vht(struct ath11k *ar,
|
static void ath11k_peer_assoc_h_vht(struct ath11k *ar,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
struct ieee80211_sta *sta,
|
struct ieee80211_sta *sta,
|
||||||
@@ -1595,6 +1623,7 @@ static void ath11k_peer_assoc_h_vht(stru
|
@@ -1600,6 +1628,7 @@ static void ath11k_peer_assoc_h_vht(stru
|
||||||
u8 max_nss, vht_mcs;
|
u8 max_nss, vht_mcs;
|
||||||
int i, vht_nss, nss_idx;
|
int i, vht_nss, nss_idx;
|
||||||
bool user_rate_valid = true;
|
bool user_rate_valid = true;
|
||||||
@ -92,7 +92,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
||||||
return;
|
return;
|
||||||
@@ -1687,10 +1716,29 @@ static void ath11k_peer_assoc_h_vht(stru
|
@@ -1692,10 +1721,29 @@ static void ath11k_peer_assoc_h_vht(stru
|
||||||
/* TODO: Check */
|
/* TODO: Check */
|
||||||
arg->tx_max_mcs_nss = 0xFF;
|
arg->tx_max_mcs_nss = 0xFF;
|
||||||
|
|
||||||
@ -125,7 +125,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ath11k_mac_get_max_he_mcs_map(u16 mcs_map, int nss)
|
static int ath11k_mac_get_max_he_mcs_map(u16 mcs_map, int nss)
|
||||||
@@ -1774,6 +1822,7 @@ static void ath11k_peer_assoc_h_he(struc
|
@@ -1779,6 +1827,7 @@ static void ath11k_peer_assoc_h_he(struc
|
||||||
u16 he_tx_mcs = 0, v = 0;
|
u16 he_tx_mcs = 0, v = 0;
|
||||||
int i, he_nss, nss_idx;
|
int i, he_nss, nss_idx;
|
||||||
bool user_rate_valid = true;
|
bool user_rate_valid = true;
|
||||||
@ -133,7 +133,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
|
||||||
return;
|
return;
|
||||||
@@ -1937,9 +1986,30 @@ static void ath11k_peer_assoc_h_he(struc
|
@@ -1942,9 +1991,30 @@ static void ath11k_peer_assoc_h_he(struc
|
||||||
}
|
}
|
||||||
arg->peer_nss = min(sta->rx_nss, max_nss);
|
arg->peer_nss = min(sta->rx_nss, max_nss);
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ath11k_peer_assoc_h_smps(struct ieee80211_sta *sta,
|
static void ath11k_peer_assoc_h_smps(struct ieee80211_sta *sta,
|
||||||
@@ -2227,11 +2297,11 @@ static void ath11k_peer_assoc_prepare(st
|
@@ -2232,11 +2302,11 @@ static void ath11k_peer_assoc_prepare(st
|
||||||
ath11k_peer_assoc_h_basic(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_basic(ar, vif, sta, arg);
|
||||||
ath11k_peer_assoc_h_crypto(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_crypto(ar, vif, sta, arg);
|
||||||
ath11k_peer_assoc_h_rates(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_rates(ar, vif, sta, arg);
|
||||||
@ -179,7 +179,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
ath11k_peer_assoc_h_smps(sta, arg);
|
ath11k_peer_assoc_h_smps(sta, arg);
|
||||||
|
|
||||||
/* TODO: amsdu_disable req? */
|
/* TODO: amsdu_disable req? */
|
||||||
@@ -4427,11 +4497,6 @@ ath11k_create_vht_cap(struct ath11k *ar,
|
@@ -4433,11 +4503,6 @@ ath11k_create_vht_cap(struct ath11k *ar,
|
||||||
|
|
||||||
ath11k_set_vht_txbf_cap(ar, &vht_cap.cap);
|
ath11k_set_vht_txbf_cap(ar, &vht_cap.cap);
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
rxmcs_map = 0;
|
rxmcs_map = 0;
|
||||||
txmcs_map = 0;
|
txmcs_map = 0;
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
@@ -7345,7 +7410,9 @@ static int ath11k_mac_setup_iface_combin
|
@@ -7355,7 +7420,9 @@ static int ath11k_mac_setup_iface_combin
|
||||||
combinations[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
|
combinations[0].radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
|
||||||
BIT(NL80211_CHAN_WIDTH_20) |
|
BIT(NL80211_CHAN_WIDTH_20) |
|
||||||
BIT(NL80211_CHAN_WIDTH_40) |
|
BIT(NL80211_CHAN_WIDTH_40) |
|
||||||
@ -202,7 +202,7 @@ Link: https://lore.kernel.org/r/20210721173615.75637-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
ar->hw->wiphy->iface_combinations = combinations;
|
ar->hw->wiphy->iface_combinations = combinations;
|
||||||
ar->hw->wiphy->n_iface_combinations = 1;
|
ar->hw->wiphy->n_iface_combinations = 1;
|
||||||
@@ -7484,6 +7551,10 @@ static int __ath11k_mac_register(struct
|
@@ -7494,6 +7561,10 @@ static int __ath11k_mac_register(struct
|
||||||
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
||||||
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
||||||
ieee80211_hw_set(ar->hw, SUPPORTS_TX_ENCAP_OFFLOAD);
|
ieee80211_hw_set(ar->hw, SUPPORTS_TX_ENCAP_OFFLOAD);
|
@ -1,7 +1,7 @@
|
|||||||
From cc2ad7541486f1f755949c1ccd17e14a15bf1f4e Mon Sep 17 00:00:00 2001
|
From cc2ad7541486f1f755949c1ccd17e14a15bf1f4e Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||||
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
||||||
Subject: [PATCH 012/120] ath11k: Refactor spectral FFT bin size
|
Subject: [PATCH] ath11k: Refactor spectral FFT bin size
|
||||||
|
|
||||||
In IPQ8074, actual FFT bin size is two bytes but hardware reports it
|
In IPQ8074, actual FFT bin size is two bytes but hardware reports it
|
||||||
with extra pad size of two bytes for each FFT bin. So finally each FFT
|
with extra pad size of two bytes for each FFT bin. So finally each FFT
|
@ -1,7 +1,7 @@
|
|||||||
From 1cae9c0009d35cec94ad8e1b06ebcb2d704626bf Mon Sep 17 00:00:00 2001
|
From 1cae9c0009d35cec94ad8e1b06ebcb2d704626bf Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||||
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
||||||
Subject: [PATCH 013/120] ath11k: Introduce spectral hw configurable param
|
Subject: [PATCH] ath11k: Introduce spectral hw configurable param
|
||||||
|
|
||||||
Below parameters have been identified as configurable across the platforms.
|
Below parameters have been identified as configurable across the platforms.
|
||||||
So to scale the spectral across the platforms, move these parameter
|
So to scale the spectral across the platforms, move these parameter
|
@ -1,7 +1,7 @@
|
|||||||
From 6dfd20c8a6cd1fcf2c68d86c9d678f42535f6ade Mon Sep 17 00:00:00 2001
|
From 6dfd20c8a6cd1fcf2c68d86c9d678f42535f6ade Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||||
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
||||||
Subject: [PATCH 014/120] ath11k: Fix the spectral minimum FFT bin count
|
Subject: [PATCH] ath11k: Fix the spectral minimum FFT bin count
|
||||||
|
|
||||||
User was not able to configure the spectral with the FFT bin count 32.
|
User was not able to configure the spectral with the FFT bin count 32.
|
||||||
In all supported platforms, the expected minimum FFT bin count is 32 but
|
In all supported platforms, the expected minimum FFT bin count is 32 but
|
@ -1,7 +1,7 @@
|
|||||||
From b72e86c07e9881d249fbb7511060692f3fb6b687 Mon Sep 17 00:00:00 2001
|
From b72e86c07e9881d249fbb7511060692f3fb6b687 Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||||
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
Date: Fri, 24 Sep 2021 16:52:46 +0300
|
||||||
Subject: [PATCH 015/120] ath11k: Add spectral scan support for QCN9074
|
Subject: [PATCH] ath11k: Add spectral scan support for QCN9074
|
||||||
|
|
||||||
Populate the below hw parameters as per the QCN9074 support
|
Populate the below hw parameters as per the QCN9074 support
|
||||||
1. FFT bin size as two bytes
|
1. FFT bin size as two bytes
|
@ -1,7 +1,7 @@
|
|||||||
From eb19efed836a51ee30a602abe2dd21a97c47bbcc Mon Sep 17 00:00:00 2001
|
From eb19efed836a51ee30a602abe2dd21a97c47bbcc Mon Sep 17 00:00:00 2001
|
||||||
From: Arnd Bergmann <arnd@arndb.de>
|
From: Arnd Bergmann <arnd@arndb.de>
|
||||||
Date: Fri, 24 Sep 2021 16:52:52 +0300
|
Date: Fri, 24 Sep 2021 16:52:52 +0300
|
||||||
Subject: [PATCH 016/120] ath11k: Wstringop-overread warning
|
Subject: [PATCH] ath11k: Wstringop-overread warning
|
||||||
|
|
||||||
gcc-11 with the kernel address sanitizer prints a warning for this
|
gcc-11 with the kernel address sanitizer prints a warning for this
|
||||||
driver:
|
driver:
|
||||||
@ -33,7 +33,7 @@ Link: https://lore.kernel.org/r/20210322160253.4032422-5-arnd@kernel.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -1401,7 +1401,7 @@ ath11k_peer_assoc_h_ht_masked(const u8 h
|
@@ -1406,7 +1406,7 @@ ath11k_peer_assoc_h_ht_masked(const u8 h
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
@ -1,8 +1,7 @@
|
|||||||
From c72aa32d6d1c04fa83d4c0e6849e4e60d9d39ae4 Mon Sep 17 00:00:00 2001
|
From c72aa32d6d1c04fa83d4c0e6849e4e60d9d39ae4 Mon Sep 17 00:00:00 2001
|
||||||
From: Anilkumar Kolli <akolli@codeaurora.org>
|
From: Anilkumar Kolli <akolli@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
||||||
Subject: [PATCH 017/120] ath11k: use hw_params to access board_size and
|
Subject: [PATCH] ath11k: use hw_params to access board_size and cal_offset
|
||||||
cal_offset
|
|
||||||
|
|
||||||
Reuse board_size from hw_params, add cal_offset to hw params.
|
Reuse board_size from hw_params, add cal_offset to hw params.
|
||||||
This patch is clean up only, there is no change in functionality.
|
This patch is clean up only, there is no change in functionality.
|
@ -1,7 +1,7 @@
|
|||||||
From 336e7b53c82fc74d261024773a0fab43623a94fb Mon Sep 17 00:00:00 2001
|
From 336e7b53c82fc74d261024773a0fab43623a94fb Mon Sep 17 00:00:00 2001
|
||||||
From: Anilkumar Kolli <akolli@codeaurora.org>
|
From: Anilkumar Kolli <akolli@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
||||||
Subject: [PATCH 018/120] ath11k: clean up BDF download functions
|
Subject: [PATCH] ath11k: clean up BDF download functions
|
||||||
|
|
||||||
In current code, AHB/PCI uses two separate functions to download
|
In current code, AHB/PCI uses two separate functions to download
|
||||||
BDF file. Refactor code and make a common function to send QMI BDF
|
BDF file. Refactor code and make a common function to send QMI BDF
|
@ -1,7 +1,7 @@
|
|||||||
From e82dfe7b5608592c270cc69100cb4322069f949d Mon Sep 17 00:00:00 2001
|
From e82dfe7b5608592c270cc69100cb4322069f949d Mon Sep 17 00:00:00 2001
|
||||||
From: Anilkumar Kolli <akolli@codeaurora.org>
|
From: Anilkumar Kolli <akolli@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
||||||
Subject: [PATCH 019/120] ath11k: add caldata file for multiple radios
|
Subject: [PATCH] ath11k: add caldata file for multiple radios
|
||||||
|
|
||||||
If multiple PCI cards are attached, each needs its own caldata file.
|
If multiple PCI cards are attached, each needs its own caldata file.
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 4ba3b05ebd0c3e98c7dd8c7ee03aed9d80299b79 Mon Sep 17 00:00:00 2001
|
From 4ba3b05ebd0c3e98c7dd8c7ee03aed9d80299b79 Mon Sep 17 00:00:00 2001
|
||||||
From: Anilkumar Kolli <akolli@codeaurora.org>
|
From: Anilkumar Kolli <akolli@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
Date: Tue, 28 Sep 2021 12:05:39 +0300
|
||||||
Subject: [PATCH 020/120] ath11k: add caldata download support from EEPROM
|
Subject: [PATCH] ath11k: add caldata download support from EEPROM
|
||||||
|
|
||||||
Firmware updates EEPROM support capability in QMI FW caps, send QMI BDF
|
Firmware updates EEPROM support capability in QMI FW caps, send QMI BDF
|
||||||
download request message with file type EEPROM, to get caldata download
|
download request message with file type EEPROM, to get caldata download
|
@ -1,8 +1,7 @@
|
|||||||
From b2549465cdeac3847487ce88b15ca47c37b60b88 Mon Sep 17 00:00:00 2001
|
From b2549465cdeac3847487ce88b15ca47c37b60b88 Mon Sep 17 00:00:00 2001
|
||||||
From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
|
From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:44 +0300
|
Date: Tue, 28 Sep 2021 12:05:44 +0300
|
||||||
Subject: [PATCH 021/120] ath11k: Replace one-element array with flexible-array
|
Subject: [PATCH] ath11k: Replace one-element array with flexible-array member
|
||||||
member
|
|
||||||
|
|
||||||
There is a regular need in the kernel to provide a way to declare having a
|
There is a regular need in the kernel to provide a way to declare having a
|
||||||
dynamically sized set of trailing elements in a structure. Kernel code
|
dynamically sized set of trailing elements in a structure. Kernel code
|
||||||
@ -123,7 +122,7 @@ Link: https://lore.kernel.org/r/20210823172159.GA25800@embeddedor
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -2302,7 +2302,7 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
|
@@ -2303,7 +2303,7 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
|
||||||
u16 num_send_chans, num_sends = 0, max_chan_limit = 0;
|
u16 num_send_chans, num_sends = 0, max_chan_limit = 0;
|
||||||
u32 *reg1, *reg2;
|
u32 *reg1, *reg2;
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
From b9b5948cdd7bc8d9fa31c78cbbb04382c815587f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aaron Ma <aaron.ma@canonical.com>
|
|
||||||
Date: Tue, 28 Sep 2021 12:05:43 +0300
|
|
||||||
Subject: [PATCH 022/120] ath11k: qmi: avoid error messages when dma allocation
|
|
||||||
fails
|
|
||||||
|
|
||||||
qmi tries to allocate a large contiguous dma memory at first,
|
|
||||||
on the AMD Ryzen platform it fails, then retries with small slices.
|
|
||||||
So set flag GFP_NOWARN to avoid flooding dmesg.
|
|
||||||
|
|
||||||
Signed-off-by: Aaron Ma <aaron.ma@canonical.com>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
Link: https://lore.kernel.org/r/20210823063258.37747-1-aaron.ma@canonical.com
|
|
||||||
---
|
|
||||||
drivers/net/wireless/ath/ath11k/qmi.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
|
||||||
@@ -1842,7 +1842,7 @@ static int ath11k_qmi_alloc_target_mem_c
|
|
||||||
chunk->vaddr = dma_alloc_coherent(ab->dev,
|
|
||||||
chunk->size,
|
|
||||||
&chunk->paddr,
|
|
||||||
- GFP_KERNEL);
|
|
||||||
+ GFP_KERNEL | __GFP_NOWARN);
|
|
||||||
if (!chunk->vaddr) {
|
|
||||||
if (ab->qmi.mem_seg_count <= ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT) {
|
|
||||||
ath11k_dbg(ab, ATH11K_DBG_QMI,
|
|
@ -1,7 +1,7 @@
|
|||||||
From 2167fa606c0f0e64b95a04f9bc42d9fd5360838a Mon Sep 17 00:00:00 2001
|
From 2167fa606c0f0e64b95a04f9bc42d9fd5360838a Mon Sep 17 00:00:00 2001
|
||||||
From: Sriram R <srirrama@codeaurora.org>
|
From: Sriram R <srirrama@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
||||||
Subject: [PATCH 024/120] ath11k: Add support for RX decapsulation offload
|
Subject: [PATCH] ath11k: Add support for RX decapsulation offload
|
||||||
|
|
||||||
Add support for rx decapsulation offload by advertising
|
Add support for rx decapsulation offload by advertising
|
||||||
the support to mac80211 during registration. Also ensure
|
the support to mac80211 during registration. Also ensure
|
||||||
@ -42,7 +42,7 @@ Link: https://lore.kernel.org/r/20210721204217.120572-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -93,6 +93,8 @@ struct ath11k_skb_rxcb {
|
@@ -98,6 +98,8 @@ struct ath11k_skb_rxcb {
|
||||||
bool is_first_msdu;
|
bool is_first_msdu;
|
||||||
bool is_last_msdu;
|
bool is_last_msdu;
|
||||||
bool is_continuation;
|
bool is_continuation;
|
||||||
@ -51,7 +51,7 @@ Link: https://lore.kernel.org/r/20210721204217.120572-1-jouni@codeaurora.org
|
|||||||
struct hal_rx_desc *rx_desc;
|
struct hal_rx_desc *rx_desc;
|
||||||
u8 err_rel_src;
|
u8 err_rel_src;
|
||||||
u8 err_code;
|
u8 err_code;
|
||||||
@@ -100,6 +102,8 @@ struct ath11k_skb_rxcb {
|
@@ -105,6 +107,8 @@ struct ath11k_skb_rxcb {
|
||||||
u8 unmapped;
|
u8 unmapped;
|
||||||
u8 is_frag;
|
u8 is_frag;
|
||||||
u8 tid;
|
u8 tid;
|
||||||
@ -548,7 +548,7 @@ Link: https://lore.kernel.org/r/20210721204217.120572-1-jouni@codeaurora.org
|
|||||||
extern const struct ath11k_hw_ops ipq8074_ops;
|
extern const struct ath11k_hw_ops ipq8074_ops;
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -5370,7 +5370,8 @@ static void ath11k_mac_op_update_vif_off
|
@@ -5380,7 +5380,8 @@ static void ath11k_mac_op_update_vif_off
|
||||||
if (ath11k_frame_mode != ATH11K_HW_TXRX_ETHERNET ||
|
if (ath11k_frame_mode != ATH11K_HW_TXRX_ETHERNET ||
|
||||||
(vif->type != NL80211_IFTYPE_STATION &&
|
(vif->type != NL80211_IFTYPE_STATION &&
|
||||||
vif->type != NL80211_IFTYPE_AP))
|
vif->type != NL80211_IFTYPE_AP))
|
||||||
@ -558,7 +558,7 @@ Link: https://lore.kernel.org/r/20210721204217.120572-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (vif->offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED)
|
if (vif->offload_flags & IEEE80211_OFFLOAD_ENCAP_ENABLED)
|
||||||
param_value = ATH11K_HW_TXRX_ETHERNET;
|
param_value = ATH11K_HW_TXRX_ETHERNET;
|
||||||
@@ -5386,6 +5387,22 @@ static void ath11k_mac_op_update_vif_off
|
@@ -5396,6 +5397,22 @@ static void ath11k_mac_op_update_vif_off
|
||||||
arvif->vdev_id, ret);
|
arvif->vdev_id, ret);
|
||||||
vif->offload_flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;
|
vif->offload_flags &= ~IEEE80211_OFFLOAD_ENCAP_ENABLED;
|
||||||
}
|
}
|
||||||
@ -581,7 +581,7 @@ Link: https://lore.kernel.org/r/20210721204217.120572-1-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
|
static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,
|
||||||
@@ -7550,7 +7567,11 @@ static int __ath11k_mac_register(struct
|
@@ -7560,7 +7577,11 @@ static int __ath11k_mac_register(struct
|
||||||
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
|
ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
|
||||||
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
ieee80211_hw_set(ar->hw, SUPPORTS_TX_FRAG);
|
||||||
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
|
@ -1,7 +1,7 @@
|
|||||||
From ab18e3bc1c138f2b4358c6905a45afb7289d5086 Mon Sep 17 00:00:00 2001
|
From ab18e3bc1c138f2b4358c6905a45afb7289d5086 Mon Sep 17 00:00:00 2001
|
||||||
From: Anilkumar Kolli <akolli@codeaurora.org>
|
From: Anilkumar Kolli <akolli@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
||||||
Subject: [PATCH 025/120] ath11k: Fix pktlog lite rx events
|
Subject: [PATCH] ath11k: Fix pktlog lite rx events
|
||||||
|
|
||||||
Fix sending rx_buf_sz to ath11k_dp_tx_htt_rx_filter_setup()
|
Fix sending rx_buf_sz to ath11k_dp_tx_htt_rx_filter_setup()
|
||||||
to enable pktlog full or lite mode. Depending on mode update the
|
to enable pktlog full or lite mode. Depending on mode update the
|
@ -1,7 +1,7 @@
|
|||||||
From f394e4eae8e2c0579063e5473f1e321d22d3fe43 Mon Sep 17 00:00:00 2001
|
From f394e4eae8e2c0579063e5473f1e321d22d3fe43 Mon Sep 17 00:00:00 2001
|
||||||
From: Sriram R <srirrama@codeaurora.org>
|
From: Sriram R <srirrama@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
||||||
Subject: [PATCH 026/120] ath11k: Update pdev tx and rx firmware stats
|
Subject: [PATCH] ath11k: Update pdev tx and rx firmware stats
|
||||||
|
|
||||||
Update the fields of pdev tx and tx firmware stats structure.
|
Update the fields of pdev tx and tx firmware stats structure.
|
||||||
Missing fields resulted in wrong fw stats to be displayed as below.
|
Missing fields resulted in wrong fw stats to be displayed as below.
|
||||||
@ -28,7 +28,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -806,12 +806,15 @@ struct ath11k_fw_stats_pdev {
|
@@ -819,12 +819,15 @@ struct ath11k_fw_stats_pdev {
|
||||||
s32 hw_reaped;
|
s32 hw_reaped;
|
||||||
/* Num underruns */
|
/* Num underruns */
|
||||||
s32 underrun;
|
s32 underrun;
|
||||||
@ -44,7 +44,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
/* data hw rate code */
|
/* data hw rate code */
|
||||||
u32 data_rc;
|
u32 data_rc;
|
||||||
/* Scheduler self triggers */
|
/* Scheduler self triggers */
|
||||||
@@ -832,6 +835,30 @@ struct ath11k_fw_stats_pdev {
|
@@ -845,6 +848,30 @@ struct ath11k_fw_stats_pdev {
|
||||||
u32 phy_underrun;
|
u32 phy_underrun;
|
||||||
/* MPDU is more than txop limit */
|
/* MPDU is more than txop limit */
|
||||||
u32 txop_ovf;
|
u32 txop_ovf;
|
||||||
@ -75,7 +75,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
/* PDEV RX stats */
|
/* PDEV RX stats */
|
||||||
/* Cnts any change in ring routing mid-ppdu */
|
/* Cnts any change in ring routing mid-ppdu */
|
||||||
@@ -857,6 +884,8 @@ struct ath11k_fw_stats_pdev {
|
@@ -870,6 +897,8 @@ struct ath11k_fw_stats_pdev {
|
||||||
s32 phy_err_drop;
|
s32 phy_err_drop;
|
||||||
/* Number of mpdu errors - FCS, MIC, ENC etc. */
|
/* Number of mpdu errors - FCS, MIC, ENC etc. */
|
||||||
s32 mpdu_errs;
|
s32 mpdu_errs;
|
||||||
@ -86,7 +86,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
struct ath11k_fw_stats_vdev {
|
struct ath11k_fw_stats_vdev {
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -5251,9 +5251,11 @@ ath11k_wmi_pull_pdev_stats_tx(const stru
|
@@ -5252,9 +5252,11 @@ ath11k_wmi_pull_pdev_stats_tx(const stru
|
||||||
dst->hw_queued = src->hw_queued;
|
dst->hw_queued = src->hw_queued;
|
||||||
dst->hw_reaped = src->hw_reaped;
|
dst->hw_reaped = src->hw_reaped;
|
||||||
dst->underrun = src->underrun;
|
dst->underrun = src->underrun;
|
||||||
@ -98,7 +98,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
dst->data_rc = src->data_rc;
|
dst->data_rc = src->data_rc;
|
||||||
dst->self_triggers = src->self_triggers;
|
dst->self_triggers = src->self_triggers;
|
||||||
dst->sw_retry_failure = src->sw_retry_failure;
|
dst->sw_retry_failure = src->sw_retry_failure;
|
||||||
@@ -5264,6 +5266,16 @@ ath11k_wmi_pull_pdev_stats_tx(const stru
|
@@ -5265,6 +5267,16 @@ ath11k_wmi_pull_pdev_stats_tx(const stru
|
||||||
dst->stateless_tid_alloc_failure = src->stateless_tid_alloc_failure;
|
dst->stateless_tid_alloc_failure = src->stateless_tid_alloc_failure;
|
||||||
dst->phy_underrun = src->phy_underrun;
|
dst->phy_underrun = src->phy_underrun;
|
||||||
dst->txop_ovf = src->txop_ovf;
|
dst->txop_ovf = src->txop_ovf;
|
||||||
@ -115,7 +115,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ath11k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src,
|
static void ath11k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src,
|
||||||
@@ -5283,6 +5295,7 @@ static void ath11k_wmi_pull_pdev_stats_r
|
@@ -5284,6 +5296,7 @@ static void ath11k_wmi_pull_pdev_stats_r
|
||||||
dst->phy_errs = src->phy_errs;
|
dst->phy_errs = src->phy_errs;
|
||||||
dst->phy_err_drop = src->phy_err_drop;
|
dst->phy_err_drop = src->phy_err_drop;
|
||||||
dst->mpdu_errs = src->mpdu_errs;
|
dst->mpdu_errs = src->mpdu_errs;
|
||||||
@ -123,7 +123,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -5520,11 +5533,15 @@ ath11k_wmi_fw_pdev_tx_stats_fill(const s
|
@@ -5521,11 +5534,15 @@ ath11k_wmi_fw_pdev_tx_stats_fill(const s
|
||||||
len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||||
"Num underruns", pdev->underrun);
|
"Num underruns", pdev->underrun);
|
||||||
len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||||
@ -140,7 +140,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
|
len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
|
||||||
"HW rate", pdev->data_rc);
|
"HW rate", pdev->data_rc);
|
||||||
len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
|
len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
|
||||||
@@ -5548,6 +5565,26 @@ ath11k_wmi_fw_pdev_tx_stats_fill(const s
|
@@ -5549,6 +5566,26 @@ ath11k_wmi_fw_pdev_tx_stats_fill(const s
|
||||||
"PHY underrun", pdev->phy_underrun);
|
"PHY underrun", pdev->phy_underrun);
|
||||||
len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
|
len += scnprintf(buf + len, buf_len - len, "%30s %10u\n",
|
||||||
"MPDU is more than txop limit", pdev->txop_ovf);
|
"MPDU is more than txop limit", pdev->txop_ovf);
|
||||||
@ -167,7 +167,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-2-jouni@codeaurora.org
|
|||||||
*length = len;
|
*length = len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5592,6 +5629,8 @@ ath11k_wmi_fw_pdev_rx_stats_fill(const s
|
@@ -5593,6 +5630,8 @@ ath11k_wmi_fw_pdev_rx_stats_fill(const s
|
||||||
"PHY errors drops", pdev->phy_err_drop);
|
"PHY errors drops", pdev->phy_err_drop);
|
||||||
len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||||
"MPDU errors (FCS, MIC, ENC)", pdev->mpdu_errs);
|
"MPDU errors (FCS, MIC, ENC)", pdev->mpdu_errs);
|
@ -1,8 +1,7 @@
|
|||||||
From 8717db7ee802b71fa3f2a79b265b1325bc61210c Mon Sep 17 00:00:00 2001
|
From 8717db7ee802b71fa3f2a79b265b1325bc61210c Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
||||||
Subject: [PATCH 029/120] ath11k: Add vdev start flag to disable hardware
|
Subject: [PATCH] ath11k: Add vdev start flag to disable hardware encryption
|
||||||
encryption
|
|
||||||
|
|
||||||
Firmware blocks all data traffic until the key is plumbed. But, with
|
Firmware blocks all data traffic until the key is plumbed. But, with
|
||||||
software encryption mode, key is never plumbed to firmware. Due to this,
|
software encryption mode, key is never plumbed to firmware. Due to this,
|
@ -1,7 +1,7 @@
|
|||||||
From 3c79cb4d63c0d58462d439efa0db328008354deb Mon Sep 17 00:00:00 2001
|
From 3c79cb4d63c0d58462d439efa0db328008354deb Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
||||||
Subject: [PATCH 030/120] ath11k: Assign free_vdev_map value before
|
Subject: [PATCH] ath11k: Assign free_vdev_map value before
|
||||||
ieee80211_register_hw
|
ieee80211_register_hw
|
||||||
|
|
||||||
Firmware crash is seen randomly, because of sending wrong vdev_id
|
Firmware crash is seen randomly, because of sending wrong vdev_id
|
||||||
@ -27,7 +27,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-6-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -7701,6 +7701,10 @@ int ath11k_mac_register(struct ath11k_ba
|
@@ -7711,6 +7711,10 @@ int ath11k_mac_register(struct ath11k_ba
|
||||||
if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags))
|
if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-6-jouni@codeaurora.org
|
|||||||
for (i = 0; i < ab->num_radios; i++) {
|
for (i = 0; i < ab->num_radios; i++) {
|
||||||
pdev = &ab->pdevs[i];
|
pdev = &ab->pdevs[i];
|
||||||
ar = pdev->ar;
|
ar = pdev->ar;
|
||||||
@@ -7711,18 +7715,14 @@ int ath11k_mac_register(struct ath11k_ba
|
@@ -7721,18 +7725,14 @@ int ath11k_mac_register(struct ath11k_ba
|
||||||
ar->mac_addr[4] += i;
|
ar->mac_addr[4] += i;
|
||||||
}
|
}
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
From 8ee8d38ca4727667e05a1dedf546162207bde9fa Mon Sep 17 00:00:00 2001
|
From 8ee8d38ca4727667e05a1dedf546162207bde9fa Mon Sep 17 00:00:00 2001
|
||||||
From: Sriram R <srirrama@codeaurora.org>
|
From: Sriram R <srirrama@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
Date: Tue, 28 Sep 2021 12:05:40 +0300
|
||||||
Subject: [PATCH 031/120] ath11k: Fix crash during firmware recovery on reo cmd
|
Subject: [PATCH] ath11k: Fix crash during firmware recovery on reo cmd ring
|
||||||
ring access
|
access
|
||||||
|
|
||||||
In scenario when a peer is disassociating, there could be
|
In scenario when a peer is disassociating, there could be
|
||||||
multiple places where a reo cmd ring is accessed, such as
|
multiple places where a reo cmd ring is accessed, such as
|
@ -1,7 +1,7 @@
|
|||||||
From 79feedfea7793d91293ab72fac5fc66aae0c6a85 Mon Sep 17 00:00:00 2001
|
From 79feedfea7793d91293ab72fac5fc66aae0c6a85 Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
From: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:41 +0300
|
Date: Tue, 28 Sep 2021 12:05:41 +0300
|
||||||
Subject: [PATCH 032/120] ath11k: Avoid "No VIF found" warning message
|
Subject: [PATCH] ath11k: Avoid "No VIF found" warning message
|
||||||
|
|
||||||
Facing below warning prints when we do wifi down in multiple VAPs scenario.
|
Facing below warning prints when we do wifi down in multiple VAPs scenario.
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-8-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -500,7 +500,8 @@ struct ath11k_vif *ath11k_mac_get_arvif_
|
@@ -501,7 +501,8 @@ struct ath11k_vif *ath11k_mac_get_arvif_
|
||||||
|
|
||||||
for (i = 0; i < ab->num_radios; i++) {
|
for (i = 0; i < ab->num_radios; i++) {
|
||||||
pdev = rcu_dereference(ab->pdevs_active[i]);
|
pdev = rcu_dereference(ab->pdevs_active[i]);
|
@ -1,8 +1,7 @@
|
|||||||
From 94a6df31dcf042f74db8209680d04546ce964ad5 Mon Sep 17 00:00:00 2001
|
From 94a6df31dcf042f74db8209680d04546ce964ad5 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 12:05:41 +0300
|
Date: Tue, 28 Sep 2021 12:05:41 +0300
|
||||||
Subject: [PATCH 033/120] ath11k: Add wmi peer create conf event in
|
Subject: [PATCH] ath11k: Add wmi peer create conf event in wmi_tlv_event_id
|
||||||
wmi_tlv_event_id
|
|
||||||
|
|
||||||
When the driver sends a peer create cmd, the firmware responds with
|
When the driver sends a peer create cmd, the firmware responds with
|
||||||
WMI_PEER_CREATE_CONF_EVENTID to confirm the firmware received
|
WMI_PEER_CREATE_CONF_EVENTID to confirm the firmware received
|
||||||
@ -29,7 +28,7 @@ Link: https://lore.kernel.org/r/20210721212029.142388-9-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -7136,6 +7136,7 @@ static void ath11k_wmi_tlv_op_rx(struct
|
@@ -7137,6 +7137,7 @@ static void ath11k_wmi_tlv_op_rx(struct
|
||||||
case WMI_TWT_ENABLE_EVENTID:
|
case WMI_TWT_ENABLE_EVENTID:
|
||||||
case WMI_TWT_DISABLE_EVENTID:
|
case WMI_TWT_DISABLE_EVENTID:
|
||||||
case WMI_PDEV_DMA_RING_CFG_RSP_EVENTID:
|
case WMI_PDEV_DMA_RING_CFG_RSP_EVENTID:
|
@ -1,7 +1,7 @@
|
|||||||
From 4a9550f536cc9c62210f77d875f000e560fc64b1 Mon Sep 17 00:00:00 2001
|
From 4a9550f536cc9c62210f77d875f000e560fc64b1 Mon Sep 17 00:00:00 2001
|
||||||
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
||||||
Subject: [PATCH 034/120] ath11k: add channel 2 into 6 GHz channel list
|
Subject: [PATCH] ath11k: add channel 2 into 6 GHz channel list
|
||||||
|
|
||||||
Add support for the 6 GHz channel 2 with center frequency 5935 MHz and
|
Add support for the 6 GHz channel 2 with center frequency 5935 MHz and
|
||||||
operating class 136 per IEEE Std 802.11ax-2021, Table E-4.
|
operating class 136 per IEEE Std 802.11ax-2021, Table E-4.
|
||||||
@ -17,7 +17,7 @@ Link: https://lore.kernel.org/r/20210722102054.43419-1-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -387,9 +387,9 @@ struct ath11k_sta {
|
@@ -393,9 +393,9 @@ struct ath11k_sta {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ATH11K_MIN_5G_FREQ 4150
|
#define ATH11K_MIN_5G_FREQ 4150
|
||||||
@ -31,7 +31,7 @@ Link: https://lore.kernel.org/r/20210722102054.43419-1-jouni@codeaurora.org
|
|||||||
enum ath11k_state {
|
enum ath11k_state {
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -150,6 +150,9 @@ static const struct ieee80211_channel at
|
@@ -151,6 +151,9 @@ static const struct ieee80211_channel at
|
||||||
CHAN6G(225, 7075, 0),
|
CHAN6G(225, 7075, 0),
|
||||||
CHAN6G(229, 7095, 0),
|
CHAN6G(229, 7095, 0),
|
||||||
CHAN6G(233, 7115, 0),
|
CHAN6G(233, 7115, 0),
|
@ -1,7 +1,7 @@
|
|||||||
From b6b142f644d2d88e2ceabe0aa4479e0a09ba1ea9 Mon Sep 17 00:00:00 2001
|
From b6b142f644d2d88e2ceabe0aa4479e0a09ba1ea9 Mon Sep 17 00:00:00 2001
|
||||||
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
||||||
Subject: [PATCH 036/120] ath11k: fix survey dump collection in 6 GHz
|
Subject: [PATCH] ath11k: fix survey dump collection in 6 GHz
|
||||||
|
|
||||||
When ath11k receives survey request, choose the 6 GHz band when enabled.
|
When ath11k receives survey request, choose the 6 GHz band when enabled.
|
||||||
Without this, survey request does not include any 6 GHz band results,
|
Without this, survey request does not include any 6 GHz band results,
|
||||||
@ -19,7 +19,7 @@ Link: https://lore.kernel.org/r/20210722102054.43419-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -7172,7 +7172,13 @@ static int ath11k_mac_op_get_survey(stru
|
@@ -7182,7 +7182,13 @@ static int ath11k_mac_op_get_survey(stru
|
||||||
|
|
||||||
if (!sband)
|
if (!sband)
|
||||||
sband = hw->wiphy->bands[NL80211_BAND_5GHZ];
|
sband = hw->wiphy->bands[NL80211_BAND_5GHZ];
|
@ -1,8 +1,7 @@
|
|||||||
From 54f40f552afd5a07e635a52221ec4b0ce765c374 Mon Sep 17 00:00:00 2001
|
From 54f40f552afd5a07e635a52221ec4b0ce765c374 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
||||||
Subject: [PATCH 037/120] ath11k: re-enable ht_cap/vht_cap for 5G band for
|
Subject: [PATCH] ath11k: re-enable ht_cap/vht_cap for 5G band for WCN6855
|
||||||
WCN6855
|
|
||||||
|
|
||||||
WCN6855 uses single_pdev_only, so it supports both the 5G and 6G bands
|
WCN6855 uses single_pdev_only, so it supports both the 5G and 6G bands
|
||||||
in the same ath11k/pdev and it needs to enable ht_cap/vht_cap for the 5G
|
in the same ath11k/pdev and it needs to enable ht_cap/vht_cap for the 5G
|
||||||
@ -22,7 +21,7 @@ Link: https://lore.kernel.org/r/20210804181217.88751-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -4545,7 +4545,9 @@ static void ath11k_mac_setup_ht_vht_cap(
|
@@ -4551,7 +4551,9 @@ static void ath11k_mac_setup_ht_vht_cap(
|
||||||
rate_cap_rx_chainmask);
|
rate_cap_rx_chainmask);
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 74bba5e5ba45d511a944082d76b64cc1849e4c2e Mon Sep 17 00:00:00 2001
|
From 74bba5e5ba45d511a944082d76b64cc1849e4c2e Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
||||||
Subject: [PATCH 038/120] ath11k: enable 6G channels for WCN6855
|
Subject: [PATCH] ath11k: enable 6G channels for WCN6855
|
||||||
|
|
||||||
For some chips such as WCN6855, single_pdev_only is set in struct
|
For some chips such as WCN6855, single_pdev_only is set in struct
|
||||||
ath11k_hw_params which means ath11k calls ieee80211_register_hw() only
|
ath11k_hw_params which means ath11k calls ieee80211_register_hw() only
|
||||||
@ -30,7 +30,7 @@ Link: https://lore.kernel.org/r/20210804181217.88751-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -7312,7 +7312,7 @@ static int ath11k_mac_setup_channels_rat
|
@@ -7322,7 +7322,7 @@ static int ath11k_mac_setup_channels_rat
|
||||||
u32 supported_bands)
|
u32 supported_bands)
|
||||||
{
|
{
|
||||||
struct ieee80211_supported_band *band;
|
struct ieee80211_supported_band *band;
|
||||||
@ -39,7 +39,7 @@ Link: https://lore.kernel.org/r/20210804181217.88751-3-jouni@codeaurora.org
|
|||||||
void *channels;
|
void *channels;
|
||||||
u32 phy_id;
|
u32 phy_id;
|
||||||
|
|
||||||
@@ -7322,6 +7322,7 @@ static int ath11k_mac_setup_channels_rat
|
@@ -7332,6 +7332,7 @@ static int ath11k_mac_setup_channels_rat
|
||||||
ATH11K_NUM_CHANS);
|
ATH11K_NUM_CHANS);
|
||||||
|
|
||||||
reg_cap = &ar->ab->hal_reg_cap[ar->pdev_idx];
|
reg_cap = &ar->ab->hal_reg_cap[ar->pdev_idx];
|
||||||
@ -47,7 +47,7 @@ Link: https://lore.kernel.org/r/20210804181217.88751-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (supported_bands & WMI_HOST_WLAN_2G_CAP) {
|
if (supported_bands & WMI_HOST_WLAN_2G_CAP) {
|
||||||
channels = kmemdup(ath11k_2ghz_channels,
|
channels = kmemdup(ath11k_2ghz_channels,
|
||||||
@@ -7340,11 +7341,11 @@ static int ath11k_mac_setup_channels_rat
|
@@ -7350,11 +7351,11 @@ static int ath11k_mac_setup_channels_rat
|
||||||
|
|
||||||
if (ar->ab->hw_params.single_pdev_only) {
|
if (ar->ab->hw_params.single_pdev_only) {
|
||||||
phy_id = ath11k_get_phy_id(ar, WMI_HOST_WLAN_2G_CAP);
|
phy_id = ath11k_get_phy_id(ar, WMI_HOST_WLAN_2G_CAP);
|
||||||
@ -62,7 +62,7 @@ Link: https://lore.kernel.org/r/20210804181217.88751-3-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (supported_bands & WMI_HOST_WLAN_5G_CAP) {
|
if (supported_bands & WMI_HOST_WLAN_5G_CAP) {
|
||||||
@@ -7364,9 +7365,15 @@ static int ath11k_mac_setup_channels_rat
|
@@ -7374,9 +7375,15 @@ static int ath11k_mac_setup_channels_rat
|
||||||
band->n_bitrates = ath11k_a_rates_size;
|
band->n_bitrates = ath11k_a_rates_size;
|
||||||
band->bitrates = ath11k_a_rates;
|
band->bitrates = ath11k_a_rates;
|
||||||
ar->hw->wiphy->bands[NL80211_BAND_6GHZ] = band;
|
ar->hw->wiphy->bands[NL80211_BAND_6GHZ] = band;
|
||||||
@ -80,7 +80,7 @@ Link: https://lore.kernel.org/r/20210804181217.88751-3-jouni@codeaurora.org
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (reg_cap->low_5ghz_chan < ATH11K_MIN_6G_FREQ) {
|
if (reg_cap->low_5ghz_chan < ATH11K_MIN_6G_FREQ) {
|
||||||
@@ -7389,12 +7396,12 @@ static int ath11k_mac_setup_channels_rat
|
@@ -7399,12 +7406,12 @@ static int ath11k_mac_setup_channels_rat
|
||||||
|
|
||||||
if (ar->ab->hw_params.single_pdev_only) {
|
if (ar->ab->hw_params.single_pdev_only) {
|
||||||
phy_id = ath11k_get_phy_id(ar, WMI_HOST_WLAN_5G_CAP);
|
phy_id = ath11k_get_phy_id(ar, WMI_HOST_WLAN_5G_CAP);
|
@ -1,8 +1,8 @@
|
|||||||
From 0f17ae43823b237c73ff138bc067229f7c57e3a2 Mon Sep 17 00:00:00 2001
|
From 0f17ae43823b237c73ff138bc067229f7c57e3a2 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
||||||
Subject: [PATCH 039/120] ath11k: copy cap info of 6G band under
|
Subject: [PATCH] ath11k: copy cap info of 6G band under WMI_HOST_WLAN_5G_CAP
|
||||||
WMI_HOST_WLAN_5G_CAP for WCN6855
|
for WCN6855
|
||||||
|
|
||||||
WCN6855 has 2 phys, one is 2G, another is 5G/6G, so it should copy the
|
WCN6855 has 2 phys, one is 2G, another is 5G/6G, so it should copy the
|
||||||
cap info of 6G band under the check of WMI_HOST_WLAN_5G_CAP as well as
|
cap info of 6G band under the check of WMI_HOST_WLAN_5G_CAP as well as
|
@ -1,7 +1,7 @@
|
|||||||
From cd18ed4cf8051ceb8590263f5914cb9bb58b0f25 Mon Sep 17 00:00:00 2001
|
From cd18ed4cf8051ceb8590263f5914cb9bb58b0f25 Mon Sep 17 00:00:00 2001
|
||||||
From: Baochen Qiang <bqiang@codeaurora.org>
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
Date: Tue, 28 Sep 2021 14:00:43 +0300
|
||||||
Subject: [PATCH 040/120] ath11k: Drop MSDU with length error in DP rx path
|
Subject: [PATCH] ath11k: Drop MSDU with length error in DP rx path
|
||||||
|
|
||||||
There are MSDUs whose length are invalid. For example,
|
There are MSDUs whose length are invalid. For example,
|
||||||
attackers may inject on purpose truncated A-MSDUs with
|
attackers may inject on purpose truncated A-MSDUs with
|
@ -1,7 +1,7 @@
|
|||||||
From 8a0b899f169d6b6102918327d026922140194fff Mon Sep 17 00:00:00 2001
|
From 8a0b899f169d6b6102918327d026922140194fff Mon Sep 17 00:00:00 2001
|
||||||
From: Baochen Qiang <bqiang@codeaurora.org>
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
||||||
Subject: [PATCH 041/120] ath11k: Fix inaccessible debug registers
|
Subject: [PATCH] ath11k: Fix inaccessible debug registers
|
||||||
|
|
||||||
Current code clears debug registers after SOC global reset performed
|
Current code clears debug registers after SOC global reset performed
|
||||||
in ath11k_pci_sw_reset. However at that time those registers are
|
in ath11k_pci_sw_reset. However at that time those registers are
|
@ -1,8 +1,7 @@
|
|||||||
From 9e2e2d7a4dd490ff6e95e37611070d3b3a9cf58b Mon Sep 17 00:00:00 2001
|
From 9e2e2d7a4dd490ff6e95e37611070d3b3a9cf58b Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
||||||
Subject: [PATCH 043/120] ath11k: Rename macro ARRAY_TO_STRING to
|
Subject: [PATCH] ath11k: Rename macro ARRAY_TO_STRING to PRINT_ARRAY_TO_BUF
|
||||||
PRINT_ARRAY_TO_BUF
|
|
||||||
|
|
||||||
Renaming of macro is done to describe the macro functionality
|
Renaming of macro is done to describe the macro functionality
|
||||||
better as the macro functionality is modified in next patch-sets.
|
better as the macro functionality is modified in next patch-sets.
|
@ -1,7 +1,7 @@
|
|||||||
From 6f442799bcfd62931ca100c7c5916bb5fc034302 Mon Sep 17 00:00:00 2001
|
From 6f442799bcfd62931ca100c7c5916bb5fc034302 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
Date: Tue, 28 Sep 2021 14:00:44 +0300
|
||||||
Subject: [PATCH 044/120] ath11k: Replace HTT_DBG_OUT with scnprintf
|
Subject: [PATCH] ath11k: Replace HTT_DBG_OUT with scnprintf
|
||||||
|
|
||||||
Get rid of macro HTT_DBG_OUT and replace it with scnprintf().
|
Get rid of macro HTT_DBG_OUT and replace it with scnprintf().
|
||||||
The macro does not do anything else. Added required new line
|
The macro does not do anything else. Added required new line
|
@ -1,7 +1,7 @@
|
|||||||
From 74327bab6781a34d96ff4c0a7c59bb032fab1650 Mon Sep 17 00:00:00 2001
|
From 74327bab6781a34d96ff4c0a7c59bb032fab1650 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
||||||
Subject: [PATCH 045/120] ath11k: Remove htt stats fixed size array usage
|
Subject: [PATCH] ath11k: Remove htt stats fixed size array usage
|
||||||
|
|
||||||
To support the HTT Stats DebugFS interface a single large buffer that
|
To support the HTT Stats DebugFS interface a single large buffer that
|
||||||
contains the stats must be provided to the DebugFS infrastructure.
|
contains the stats must be provided to the DebugFS infrastructure.
|
@ -1,7 +1,7 @@
|
|||||||
From 6ed731829cf862dc1f73bbd063662d8a6c78a5b7 Mon Sep 17 00:00:00 2001
|
From 6ed731829cf862dc1f73bbd063662d8a6c78a5b7 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
From: Seevalamuthu Mariappan <seevalam@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
||||||
Subject: [PATCH 046/120] ath11k: Change masking and shifting in htt stats
|
Subject: [PATCH] ath11k: Change masking and shifting in htt stats
|
||||||
|
|
||||||
In debugfs_htt_stats.c, masking and shifting is done to get
|
In debugfs_htt_stats.c, masking and shifting is done to get
|
||||||
stats values. Instead use GENMASK and FIELD_GET to improve
|
stats values. Instead use GENMASK and FIELD_GET to improve
|
||||||
@ -667,7 +667,7 @@ Link: https://lore.kernel.org/r/20210913223148.208026-5-jouni@codeaurora.org
|
|||||||
u32 base_addr_lsb; /* DWORD aligned base memory address of the ring */
|
u32 base_addr_lsb; /* DWORD aligned base memory address of the ring */
|
||||||
--- a/drivers/net/wireless/ath/ath11k/dp.h
|
--- a/drivers/net/wireless/ath/ath11k/dp.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/dp.h
|
+++ b/drivers/net/wireless/ath/ath11k/dp.h
|
||||||
@@ -1593,6 +1593,13 @@ struct ath11k_htt_extd_stats_msg {
|
@@ -1594,6 +1594,13 @@ struct ath11k_htt_extd_stats_msg {
|
||||||
u8 data[0];
|
u8 data[0];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From ac83b6034cfa3bec010c1e01d6e6b44673135afe Mon Sep 17 00:00:00 2001
|
From ac83b6034cfa3bec010c1e01d6e6b44673135afe Mon Sep 17 00:00:00 2001
|
||||||
From: Venkateswara Naralasetty <vnaralas@codeaurora.org>
|
From: Venkateswara Naralasetty <vnaralas@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
||||||
Subject: [PATCH 047/120] ath11k: add HTT stats support for new stats
|
Subject: [PATCH] ath11k: add HTT stats support for new stats
|
||||||
|
|
||||||
Add HTT stats support for,
|
Add HTT stats support for,
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
From c677d4b1bcc4f7330043d8f039f494557d720ed4 Mon Sep 17 00:00:00 2001
|
From c677d4b1bcc4f7330043d8f039f494557d720ed4 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
||||||
Subject: [PATCH 049/120] ath11k: indicate scan complete for scan canceled when
|
Subject: [PATCH] ath11k: indicate scan complete for scan canceled when scan
|
||||||
scan running
|
running
|
||||||
|
|
||||||
ath11k prints "Received scan event for unknown vdev" when doing the
|
ath11k prints "Received scan event for unknown vdev" when doing the
|
||||||
following test:
|
following test:
|
||||||
@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20210914164226.38843-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -6289,8 +6289,9 @@ exit:
|
@@ -6290,8 +6290,9 @@ exit:
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ Link: https://lore.kernel.org/r/20210914164226.38843-2-jouni@codeaurora.org
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct ath11k_pdev *pdev;
|
struct ath11k_pdev *pdev;
|
||||||
@@ -6302,7 +6303,7 @@ static struct ath11k *ath11k_get_ar_on_s
|
@@ -6303,7 +6304,7 @@ static struct ath11k *ath11k_get_ar_on_s
|
||||||
ar = pdev->ar;
|
ar = pdev->ar;
|
||||||
|
|
||||||
spin_lock_bh(&ar->data_lock);
|
spin_lock_bh(&ar->data_lock);
|
||||||
@ -55,7 +55,7 @@ Link: https://lore.kernel.org/r/20210914164226.38843-2-jouni@codeaurora.org
|
|||||||
ar->scan.vdev_id == vdev_id) {
|
ar->scan.vdev_id == vdev_id) {
|
||||||
spin_unlock_bh(&ar->data_lock);
|
spin_unlock_bh(&ar->data_lock);
|
||||||
return ar;
|
return ar;
|
||||||
@@ -6332,10 +6333,15 @@ static void ath11k_scan_event(struct ath
|
@@ -6333,10 +6334,15 @@ static void ath11k_scan_event(struct ath
|
||||||
* aborting scan's vdev id matches this event info.
|
* aborting scan's vdev id matches this event info.
|
||||||
*/
|
*/
|
||||||
if (scan_ev.event_type == WMI_SCAN_EVENT_COMPLETED &&
|
if (scan_ev.event_type == WMI_SCAN_EVENT_COMPLETED &&
|
@ -1,8 +1,8 @@
|
|||||||
From 62db14ea95b1017c53ebb8f724119ea4d90ecc07 Mon Sep 17 00:00:00 2001
|
From 62db14ea95b1017c53ebb8f724119ea4d90ecc07 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
Date: Tue, 28 Sep 2021 14:00:45 +0300
|
||||||
Subject: [PATCH 050/120] ath11k: indicate to mac80211 scan complete with
|
Subject: [PATCH] ath11k: indicate to mac80211 scan complete with aborted flag
|
||||||
aborted flag for ATH11K_SCAN_STARTING state
|
for ATH11K_SCAN_STARTING state
|
||||||
|
|
||||||
Scan failure can not be recovered from when running a loop of the
|
Scan failure can not be recovered from when running a loop of the
|
||||||
following steps:
|
following steps:
|
||||||
@ -41,7 +41,7 @@ Link: https://lore.kernel.org/r/20210914164226.38843-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2982,18 +2982,21 @@ void __ath11k_mac_scan_finish(struct ath
|
@@ -2987,18 +2987,21 @@ void __ath11k_mac_scan_finish(struct ath
|
||||||
break;
|
break;
|
||||||
case ATH11K_SCAN_RUNNING:
|
case ATH11K_SCAN_RUNNING:
|
||||||
case ATH11K_SCAN_ABORTING:
|
case ATH11K_SCAN_ABORTING:
|
@ -1,7 +1,7 @@
|
|||||||
From c3a7d7eb4c9853bb457b792cef42ddd4a029a914 Mon Sep 17 00:00:00 2001
|
From c3a7d7eb4c9853bb457b792cef42ddd4a029a914 Mon Sep 17 00:00:00 2001
|
||||||
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:46 +0300
|
Date: Tue, 28 Sep 2021 14:00:46 +0300
|
||||||
Subject: [PATCH 051/120] ath11k: add 6 GHz params in peer assoc command
|
Subject: [PATCH] ath11k: add 6 GHz params in peer assoc command
|
||||||
|
|
||||||
Currently A-MPDU aggregation parameters are not being configured
|
Currently A-MPDU aggregation parameters are not being configured
|
||||||
during peer association for 6 GHz band. Hence, extract these
|
during peer association for 6 GHz band. Hence, extract these
|
||||||
@ -21,7 +21,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2016,6 +2016,53 @@ static void ath11k_peer_assoc_h_he(struc
|
@@ -2021,6 +2021,53 @@ static void ath11k_peer_assoc_h_he(struc
|
||||||
arg->peer_bw_rxnss_override);
|
arg->peer_bw_rxnss_override);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-2-jouni@codeaurora.org
|
|||||||
static void ath11k_peer_assoc_h_smps(struct ieee80211_sta *sta,
|
static void ath11k_peer_assoc_h_smps(struct ieee80211_sta *sta,
|
||||||
struct peer_assoc_params *arg)
|
struct peer_assoc_params *arg)
|
||||||
{
|
{
|
||||||
@@ -2305,6 +2352,7 @@ static void ath11k_peer_assoc_prepare(st
|
@@ -2310,6 +2357,7 @@ static void ath11k_peer_assoc_prepare(st
|
||||||
ath11k_peer_assoc_h_ht(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_ht(ar, vif, sta, arg);
|
||||||
ath11k_peer_assoc_h_vht(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_vht(ar, vif, sta, arg);
|
||||||
ath11k_peer_assoc_h_he(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_he(ar, vif, sta, arg);
|
||||||
@ -83,7 +83,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-2-jouni@codeaurora.org
|
|||||||
ath11k_peer_assoc_h_qos(ar, vif, sta, arg);
|
ath11k_peer_assoc_h_qos(ar, vif, sta, arg);
|
||||||
ath11k_peer_assoc_h_smps(sta, arg);
|
ath11k_peer_assoc_h_smps(sta, arg);
|
||||||
|
|
||||||
@@ -7598,7 +7646,7 @@ static int __ath11k_mac_register(struct
|
@@ -7608,7 +7656,7 @@ static int __ath11k_mac_register(struct
|
||||||
if (cap->nss_ratio_enabled)
|
if (cap->nss_ratio_enabled)
|
||||||
ieee80211_hw_set(ar->hw, SUPPORTS_VHT_EXT_NSS_BW);
|
ieee80211_hw_set(ar->hw, SUPPORTS_VHT_EXT_NSS_BW);
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 6f4d70308e5eb63c99702e93f7c0d8e55f360da2 Mon Sep 17 00:00:00 2001
|
From 6f4d70308e5eb63c99702e93f7c0d8e55f360da2 Mon Sep 17 00:00:00 2001
|
||||||
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
From: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||||
Date: Tue, 28 Sep 2021 14:00:46 +0300
|
Date: Tue, 28 Sep 2021 14:00:46 +0300
|
||||||
Subject: [PATCH 052/120] ath11k: support SMPS configuration for 6 GHz
|
Subject: [PATCH] ath11k: support SMPS configuration for 6 GHz
|
||||||
|
|
||||||
Parse SMPS configuration from IEs and configure. Without this,
|
Parse SMPS configuration from IEs and configure. Without this,
|
||||||
SMPS is not enabled for 6 GHz band.
|
SMPS is not enabled for 6 GHz band.
|
||||||
@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2069,11 +2069,16 @@ static void ath11k_peer_assoc_h_smps(str
|
@@ -2074,11 +2074,16 @@ static void ath11k_peer_assoc_h_smps(str
|
||||||
const struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
|
const struct ieee80211_sta_ht_cap *ht_cap = &sta->ht_cap;
|
||||||
int smps;
|
int smps;
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
switch (smps) {
|
switch (smps) {
|
||||||
case WLAN_HT_CAP_SM_PS_STATIC:
|
case WLAN_HT_CAP_SM_PS_STATIC:
|
||||||
@@ -2361,15 +2366,20 @@ static void ath11k_peer_assoc_prepare(st
|
@@ -2366,15 +2371,20 @@ static void ath11k_peer_assoc_prepare(st
|
||||||
|
|
||||||
static int ath11k_setup_peer_smps(struct ath11k *ar, struct ath11k_vif *arvif,
|
static int ath11k_setup_peer_smps(struct ath11k *ar, struct ath11k_vif *arvif,
|
||||||
const u8 *addr,
|
const u8 *addr,
|
||||||
@ -63,7 +63,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-3-jouni@codeaurora.org
|
|||||||
|
|
||||||
if (smps >= ARRAY_SIZE(ath11k_smps_map))
|
if (smps >= ARRAY_SIZE(ath11k_smps_map))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -2422,7 +2432,8 @@ static void ath11k_bss_assoc(struct ieee
|
@@ -2427,7 +2437,8 @@ static void ath11k_bss_assoc(struct ieee
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ath11k_setup_peer_smps(ar, arvif, bss_conf->bssid,
|
ret = ath11k_setup_peer_smps(ar, arvif, bss_conf->bssid,
|
||||||
@ -73,7 +73,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-3-jouni@codeaurora.org
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_warn(ar->ab, "failed to setup peer SMPS for vdev %d: %d\n",
|
ath11k_warn(ar->ab, "failed to setup peer SMPS for vdev %d: %d\n",
|
||||||
arvif->vdev_id, ret);
|
arvif->vdev_id, ret);
|
||||||
@@ -3714,7 +3725,7 @@ static int ath11k_station_assoc(struct a
|
@@ -3720,7 +3731,7 @@ static int ath11k_station_assoc(struct a
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ret = ath11k_setup_peer_smps(ar, arvif, sta->addr,
|
ret = ath11k_setup_peer_smps(ar, arvif, sta->addr,
|
||||||
@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20210913175510.193005-3-jouni@codeaurora.org
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_warn(ar->ab, "failed to setup peer SMPS for vdev %d: %d\n",
|
ath11k_warn(ar->ab, "failed to setup peer SMPS for vdev %d: %d\n",
|
||||||
arvif->vdev_id, ret);
|
arvif->vdev_id, ret);
|
||||||
@@ -7661,7 +7672,7 @@ static int __ath11k_mac_register(struct
|
@@ -7671,7 +7682,7 @@ static int __ath11k_mac_register(struct
|
||||||
* for each band for a dual band capable radio. It will be tricky to
|
* for each band for a dual band capable radio. It will be tricky to
|
||||||
* handle it when the ht capability different for each band.
|
* handle it when the ht capability different for each band.
|
||||||
*/
|
*/
|
@ -1,7 +1,7 @@
|
|||||||
From 7210b4b77fe47697890d2d3b2ce57ac9f767bffc Mon Sep 17 00:00:00 2001
|
From 7210b4b77fe47697890d2d3b2ce57ac9f767bffc Mon Sep 17 00:00:00 2001
|
||||||
From: Tim Gardner <tim.gardner@canonical.com>
|
From: Tim Gardner <tim.gardner@canonical.com>
|
||||||
Date: Tue, 5 Oct 2021 16:55:54 +0300
|
Date: Tue, 5 Oct 2021 16:55:54 +0300
|
||||||
Subject: [PATCH 054/120] ath11k: Remove unused variable in
|
Subject: [PATCH] ath11k: Remove unused variable in
|
||||||
ath11k_dp_rx_mon_merg_msdus()
|
ath11k_dp_rx_mon_merg_msdus()
|
||||||
|
|
||||||
Coverity complains that a constant variable guards dead code. In fact,
|
Coverity complains that a constant variable guards dead code. In fact,
|
@ -1,7 +1,7 @@
|
|||||||
From 567ec33a76c7d8e7fbd7a73c81dd16b9efc7ae6d Mon Sep 17 00:00:00 2001
|
From 567ec33a76c7d8e7fbd7a73c81dd16b9efc7ae6d Mon Sep 17 00:00:00 2001
|
||||||
From: Colin Ian King <colin.king@canonical.com>
|
From: Colin Ian King <colin.king@canonical.com>
|
||||||
Date: Wed, 6 Oct 2021 09:32:17 +0100
|
Date: Wed, 6 Oct 2021 09:32:17 +0100
|
||||||
Subject: [PATCH 055/120] ath11k: Fix spelling mistake "incompaitiblity" ->
|
Subject: [PATCH] ath11k: Fix spelling mistake "incompaitiblity" ->
|
||||||
"incompatibility"
|
"incompatibility"
|
||||||
|
|
||||||
There is a spelling mistake in an ath11k_warn message. Fix it.
|
There is a spelling mistake in an ath11k_warn message. Fix it.
|
||||||
@ -15,7 +15,7 @@ Link: https://lore.kernel.org/r/20211006083217.349596-1-colin.king@canonical.com
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -7081,7 +7081,7 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
@@ -7091,7 +7091,7 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
||||||
|
|
||||||
if (!ath11k_mac_validate_vht_he_fixed_rate_settings(ar, band, mask))
|
if (!ath11k_mac_validate_vht_he_fixed_rate_settings(ar, band, mask))
|
||||||
ath11k_warn(ar->ab,
|
ath11k_warn(ar->ab,
|
@ -1,7 +1,7 @@
|
|||||||
From 16bdce2ada5a4c3c91b7c4e81780d2de50bd6ab5 Mon Sep 17 00:00:00 2001
|
From 16bdce2ada5a4c3c91b7c4e81780d2de50bd6ab5 Mon Sep 17 00:00:00 2001
|
||||||
From: Kalle Valo <kvalo@codeaurora.org>
|
From: Kalle Valo <kvalo@codeaurora.org>
|
||||||
Date: Fri, 8 Oct 2021 17:39:32 +0300
|
Date: Fri, 8 Oct 2021 17:39:32 +0300
|
||||||
Subject: [PATCH 056/120] ath11k: fix m68k and xtensa build failure in
|
Subject: [PATCH] ath11k: fix m68k and xtensa build failure in
|
||||||
ath11k_peer_assoc_h_smps()
|
ath11k_peer_assoc_h_smps()
|
||||||
|
|
||||||
Stephen reported that ath11k was failing to build on m68k and xtensa:
|
Stephen reported that ath11k was failing to build on m68k and xtensa:
|
||||||
@ -43,7 +43,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2076,8 +2076,8 @@ static void ath11k_peer_assoc_h_smps(str
|
@@ -2081,8 +2081,8 @@ static void ath11k_peer_assoc_h_smps(str
|
||||||
smps = ht_cap->cap & IEEE80211_HT_CAP_SM_PS;
|
smps = ht_cap->cap & IEEE80211_HT_CAP_SM_PS;
|
||||||
smps >>= IEEE80211_HT_CAP_SM_PS_SHIFT;
|
smps >>= IEEE80211_HT_CAP_SM_PS_SHIFT;
|
||||||
} else {
|
} else {
|
@ -1,8 +1,7 @@
|
|||||||
From 4f50bdfb4e5fc3d753c8cf94b94b43aaa2c49b95 Mon Sep 17 00:00:00 2001
|
From 4f50bdfb4e5fc3d753c8cf94b94b43aaa2c49b95 Mon Sep 17 00:00:00 2001
|
||||||
From: Colin Ian King <colin.king@canonical.com>
|
From: Colin Ian King <colin.king@canonical.com>
|
||||||
Date: Thu, 7 Oct 2021 18:16:24 +0300
|
Date: Thu, 7 Oct 2021 18:16:24 +0300
|
||||||
Subject: [PATCH 057/120] ath11k: Remove redundant assignment to variable
|
Subject: [PATCH] ath11k: Remove redundant assignment to variable fw_size
|
||||||
fw_size
|
|
||||||
|
|
||||||
Variable fw_size is being assigned a value that is never read and
|
Variable fw_size is being assigned a value that is never read and
|
||||||
being re-assigned a new value in the next statement. The assignment
|
being re-assigned a new value in the next statement. The assignment
|
@ -1,7 +1,7 @@
|
|||||||
From ec4363384c3f110561dc5ee2e59adee02dbd9f73 Mon Sep 17 00:00:00 2001
|
From ec4363384c3f110561dc5ee2e59adee02dbd9f73 Mon Sep 17 00:00:00 2001
|
||||||
From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
|
From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
|
||||||
Date: Thu, 7 Oct 2021 18:16:24 +0300
|
Date: Thu, 7 Oct 2021 18:16:24 +0300
|
||||||
Subject: [PATCH 058/120] ath11k: Use kcalloc() instead of kzalloc()
|
Subject: [PATCH] ath11k: Use kcalloc() instead of kzalloc()
|
||||||
|
|
||||||
Use 2-factor multiplication argument form kcalloc() instead
|
Use 2-factor multiplication argument form kcalloc() instead
|
||||||
of kzalloc().
|
of kzalloc().
|
||||||
@ -16,7 +16,7 @@ Link: https://lore.kernel.org/r/20211006181204.GA913553@embeddedor
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -4065,8 +4065,8 @@ static int ath11k_wmi_tlv_mac_phy_caps_p
|
@@ -4066,8 +4066,8 @@ static int ath11k_wmi_tlv_mac_phy_caps_p
|
||||||
|
|
||||||
len = min_t(u16, len, sizeof(struct wmi_mac_phy_capabilities));
|
len = min_t(u16, len, sizeof(struct wmi_mac_phy_capabilities));
|
||||||
if (!svc_rdy_ext->n_mac_phy_caps) {
|
if (!svc_rdy_ext->n_mac_phy_caps) {
|
||||||
@ -27,7 +27,7 @@ Link: https://lore.kernel.org/r/20211006181204.GA913553@embeddedor
|
|||||||
if (!svc_rdy_ext->mac_phy_caps)
|
if (!svc_rdy_ext->mac_phy_caps)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@@ -4466,8 +4466,8 @@ static struct cur_reg_rule
|
@@ -4467,8 +4467,8 @@ static struct cur_reg_rule
|
||||||
struct cur_reg_rule *reg_rule_ptr;
|
struct cur_reg_rule *reg_rule_ptr;
|
||||||
u32 count;
|
u32 count;
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 96527d527b271d950367ad13e3de8b0673545622 Mon Sep 17 00:00:00 2001
|
From 96527d527b271d950367ad13e3de8b0673545622 Mon Sep 17 00:00:00 2001
|
||||||
From: Baochen Qiang <bqiang@codeaurora.org>
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
||||||
Date: Mon, 11 Oct 2021 09:33:08 +0300
|
Date: Mon, 11 Oct 2021 09:33:08 +0300
|
||||||
Subject: [PATCH 059/120] ath11k: Handle MSI enablement during rmmod and SSR
|
Subject: [PATCH] ath11k: Handle MSI enablement during rmmod and SSR
|
||||||
|
|
||||||
When doing "rmmod ath11k_pci", ath11k performs global SOC reset
|
When doing "rmmod ath11k_pci", ath11k performs global SOC reset
|
||||||
and MHI reset, where 0 address access is captured by IOMMU. See
|
and MHI reset, where 0 address access is captured by IOMMU. See
|
||||||
@ -40,7 +40,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
--- a/drivers/net/wireless/ath/ath11k/pci.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
+++ b/drivers/net/wireless/ath/ath11k/pci.c
|
||||||
@@ -855,7 +855,32 @@ static void ath11k_pci_ce_irqs_enable(st
|
@@ -861,7 +861,32 @@ static void ath11k_pci_ce_irqs_enable(st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,7 +74,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
{
|
{
|
||||||
struct ath11k_base *ab = ab_pci->ab;
|
struct ath11k_base *ab = ab_pci->ab;
|
||||||
const struct ath11k_msi_config *msi_config = ab_pci->msi_config;
|
const struct ath11k_msi_config *msi_config = ab_pci->msi_config;
|
||||||
@@ -876,6 +901,7 @@ static int ath11k_pci_enable_msi(struct
|
@@ -882,6 +907,7 @@ static int ath11k_pci_enable_msi(struct
|
||||||
else
|
else
|
||||||
return num_vectors;
|
return num_vectors;
|
||||||
}
|
}
|
||||||
@ -82,7 +82,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
|
|
||||||
msi_desc = irq_get_msi_desc(ab_pci->pdev->irq);
|
msi_desc = irq_get_msi_desc(ab_pci->pdev->irq);
|
||||||
if (!msi_desc) {
|
if (!msi_desc) {
|
||||||
@@ -898,7 +924,7 @@ free_msi_vector:
|
@@ -904,7 +930,7 @@ free_msi_vector:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
{
|
{
|
||||||
pci_free_irq_vectors(ab_pci->pdev);
|
pci_free_irq_vectors(ab_pci->pdev);
|
||||||
}
|
}
|
||||||
@@ -1019,6 +1045,8 @@ static int ath11k_pci_power_up(struct at
|
@@ -1025,6 +1051,8 @@ static int ath11k_pci_power_up(struct at
|
||||||
*/
|
*/
|
||||||
ath11k_pci_aspm_disable(ab_pci);
|
ath11k_pci_aspm_disable(ab_pci);
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
ret = ath11k_mhi_start(ab_pci);
|
ret = ath11k_mhi_start(ab_pci);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_err(ab, "failed to start mhi: %d\n", ret);
|
ath11k_err(ab, "failed to start mhi: %d\n", ret);
|
||||||
@@ -1039,6 +1067,9 @@ static void ath11k_pci_power_down(struct
|
@@ -1045,6 +1073,9 @@ static void ath11k_pci_power_down(struct
|
||||||
ath11k_pci_aspm_restore(ab_pci);
|
ath11k_pci_aspm_restore(ab_pci);
|
||||||
|
|
||||||
ath11k_pci_force_wake(ab_pci->ab);
|
ath11k_pci_force_wake(ab_pci->ab);
|
||||||
@ -110,7 +110,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
ath11k_mhi_stop(ab_pci);
|
ath11k_mhi_stop(ab_pci);
|
||||||
clear_bit(ATH11K_PCI_FLAG_INIT_DONE, &ab_pci->flags);
|
clear_bit(ATH11K_PCI_FLAG_INIT_DONE, &ab_pci->flags);
|
||||||
ath11k_pci_sw_reset(ab_pci->ab, false);
|
ath11k_pci_sw_reset(ab_pci->ab, false);
|
||||||
@@ -1263,7 +1294,7 @@ static int ath11k_pci_probe(struct pci_d
|
@@ -1279,7 +1310,7 @@ static int ath11k_pci_probe(struct pci_d
|
||||||
goto err_pci_free_region;
|
goto err_pci_free_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_err(ab, "failed to enable msi: %d\n", ret);
|
ath11k_err(ab, "failed to enable msi: %d\n", ret);
|
||||||
goto err_pci_free_region;
|
goto err_pci_free_region;
|
||||||
@@ -1317,7 +1348,7 @@ err_mhi_unregister:
|
@@ -1333,7 +1364,7 @@ err_mhi_unregister:
|
||||||
ath11k_mhi_unregister(ab_pci);
|
ath11k_mhi_unregister(ab_pci);
|
||||||
|
|
||||||
err_pci_disable_msi:
|
err_pci_disable_msi:
|
||||||
@ -128,7 +128,7 @@ Link: https://lore.kernel.org/r/20210913180246.193388-5-jouni@codeaurora.org
|
|||||||
|
|
||||||
err_pci_free_region:
|
err_pci_free_region:
|
||||||
ath11k_pci_free_region(ab_pci);
|
ath11k_pci_free_region(ab_pci);
|
||||||
@@ -1348,7 +1379,7 @@ qmi_fail:
|
@@ -1364,7 +1395,7 @@ qmi_fail:
|
||||||
ath11k_mhi_unregister(ab_pci);
|
ath11k_mhi_unregister(ab_pci);
|
||||||
|
|
||||||
ath11k_pci_free_irq(ab);
|
ath11k_pci_free_irq(ab);
|
@ -1,7 +1,7 @@
|
|||||||
From 31582373a4a8e888b29ed759d28330a1995f2162 Mon Sep 17 00:00:00 2001
|
From 31582373a4a8e888b29ed759d28330a1995f2162 Mon Sep 17 00:00:00 2001
|
||||||
From: Baochen Qiang <bqiang@codeaurora.org>
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
||||||
Date: Mon, 11 Oct 2021 09:33:09 +0300
|
Date: Mon, 11 Oct 2021 09:33:09 +0300
|
||||||
Subject: [PATCH 060/120] ath11k: Change number of TCL rings to one for QCA6390
|
Subject: [PATCH] ath11k: Change number of TCL rings to one for QCA6390
|
||||||
|
|
||||||
Some targets, QCA6390 for example, use only one TCL ring, it is better to
|
Some targets, QCA6390 for example, use only one TCL ring, it is better to
|
||||||
initialize only one ring and leave others untouched for such targets.
|
initialize only one ring and leave others untouched for such targets.
|
||||||
@ -230,7 +230,7 @@ Link: https://lore.kernel.org/r/20210914163726.38604-1-jouni@codeaurora.org
|
|||||||
struct ath11k_hw_ops {
|
struct ath11k_hw_ops {
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -5797,7 +5797,7 @@ err_vdev_del:
|
@@ -5807,7 +5807,7 @@ err_vdev_del:
|
||||||
idr_for_each(&ar->txmgmt_idr,
|
idr_for_each(&ar->txmgmt_idr,
|
||||||
ath11k_mac_vif_txmgmt_idr_remove, vif);
|
ath11k_mac_vif_txmgmt_idr_remove, vif);
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
From 8cd5c0847160aa9482d7f93ed63c4d72bad70cdf Mon Sep 17 00:00:00 2001
|
From 8cd5c0847160aa9482d7f93ed63c4d72bad70cdf Mon Sep 17 00:00:00 2001
|
||||||
From: Baochen Qiang <bqiang@codeaurora.org>
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
||||||
Date: Mon, 11 Oct 2021 18:18:00 +0300
|
Date: Mon, 11 Oct 2021 18:18:00 +0300
|
||||||
Subject: [PATCH 061/120] ath11k: Identify DFS channel when sending scan
|
Subject: [PATCH] ath11k: Identify DFS channel when sending scan channel list
|
||||||
channel list command
|
command
|
||||||
|
|
||||||
WMI_CHAN_INFO_DFS flag should be set when configuring a DFS channel
|
WMI_CHAN_INFO_DFS flag should be set when configuring a DFS channel
|
||||||
included in scan channel list. Without it, firmware will not send a
|
included in scan channel list. Without it, firmware will not send a
|
||||||
@ -22,7 +22,7 @@ Link: https://lore.kernel.org/r/20211011054919.77071-1-bqiang@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -2371,6 +2371,8 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
|
@@ -2372,6 +2372,8 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
|
||||||
chan_info->info |= WMI_CHAN_INFO_QUARTER_RATE;
|
chan_info->info |= WMI_CHAN_INFO_QUARTER_RATE;
|
||||||
if (tchan_info->psc_channel)
|
if (tchan_info->psc_channel)
|
||||||
chan_info->info |= WMI_CHAN_INFO_PSC;
|
chan_info->info |= WMI_CHAN_INFO_PSC;
|
@ -1,7 +1,7 @@
|
|||||||
From 734223d78428de3c7c7d7bc04daf258085780d90 Mon Sep 17 00:00:00 2001
|
From 734223d78428de3c7c7d7bc04daf258085780d90 Mon Sep 17 00:00:00 2001
|
||||||
From: Baochen Qiang <bqiang@codeaurora.org>
|
From: Baochen Qiang <bqiang@codeaurora.org>
|
||||||
Date: Wed, 20 Oct 2021 11:59:06 +0300
|
Date: Wed, 20 Oct 2021 11:59:06 +0300
|
||||||
Subject: [PATCH 062/120] ath11k: change return buffer manager for QCA6390
|
Subject: [PATCH] ath11k: change return buffer manager for QCA6390
|
||||||
|
|
||||||
QCA6390 firmware uses HAL_RX_BUF_RBM_SW1_BM, not HAL_RX_BUF_RBM_SW3_BM. This is
|
QCA6390 firmware uses HAL_RX_BUF_RBM_SW1_BM, not HAL_RX_BUF_RBM_SW3_BM. This is
|
||||||
needed to fix a case where an A-MSDU has an unexpected LLC/SNAP header in the
|
needed to fix a case where an A-MSDU has an unexpected LLC/SNAP header in the
|
||||||
@ -246,7 +246,7 @@ Link: https://lore.kernel.org/r/20210914163726.38604-2-jouni@codeaurora.org
|
|||||||
|
|
||||||
/* Map from pdev index to hw mac index */
|
/* Map from pdev index to hw mac index */
|
||||||
static u8 ath11k_hw_ipq8074_mac_from_pdev_id(int pdev_idx)
|
static u8 ath11k_hw_ipq8074_mac_from_pdev_id(int pdev_idx)
|
||||||
@@ -2124,3 +2125,11 @@ const struct ath11k_hw_regs wcn6855_regs
|
@@ -2122,3 +2123,11 @@ const struct ath11k_hw_regs wcn6855_regs
|
||||||
.pcie_qserdes_sysclk_en_sel = 0x01e0c0ac,
|
.pcie_qserdes_sysclk_en_sel = 0x01e0c0ac,
|
||||||
.pcie_pcs_osc_dtct_config_base = 0x01e0c628,
|
.pcie_pcs_osc_dtct_config_base = 0x01e0c628,
|
||||||
};
|
};
|
@ -1,8 +1,7 @@
|
|||||||
From 82c434c103408842a87404e873992b7698b6df2b Mon Sep 17 00:00:00 2001
|
From 82c434c103408842a87404e873992b7698b6df2b Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Thu, 28 Oct 2021 10:46:28 +0300
|
Date: Thu, 28 Oct 2021 10:46:28 +0300
|
||||||
Subject: [PATCH 063/120] ath11k: set correct NL80211_FEATURE_DYNAMIC_SMPS for
|
Subject: [PATCH] ath11k: set correct NL80211_FEATURE_DYNAMIC_SMPS for WCN6855
|
||||||
WCN6855
|
|
||||||
|
|
||||||
Commit 6f4d70308e5e ("ath11k: support SMPS configuration for 6 GHz") changed
|
Commit 6f4d70308e5e ("ath11k: support SMPS configuration for 6 GHz") changed
|
||||||
"if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)" to "if (ht_cap &
|
"if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)" to "if (ht_cap &
|
||||||
@ -82,7 +81,7 @@ Link: https://lore.kernel.org/r/20210914163726.38604-3-jouni@codeaurora.org
|
|||||||
struct ath11k_hw_ops {
|
struct ath11k_hw_ops {
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -7672,7 +7672,8 @@ static int __ath11k_mac_register(struct
|
@@ -7682,7 +7682,8 @@ static int __ath11k_mac_register(struct
|
||||||
* for each band for a dual band capable radio. It will be tricky to
|
* for each band for a dual band capable radio. It will be tricky to
|
||||||
* handle it when the ht capability different for each band.
|
* handle it when the ht capability different for each band.
|
||||||
*/
|
*/
|
@ -1,8 +1,8 @@
|
|||||||
From af3d89649bb69bd5be273cf6c001cd19c2604ca2 Mon Sep 17 00:00:00 2001
|
From af3d89649bb69bd5be273cf6c001cd19c2604ca2 Mon Sep 17 00:00:00 2001
|
||||||
From: Kalle Valo <kvalo@codeaurora.org>
|
From: Kalle Valo <kvalo@codeaurora.org>
|
||||||
Date: Mon, 8 Nov 2021 14:38:25 +0200
|
Date: Mon, 8 Nov 2021 14:38:25 +0200
|
||||||
Subject: [PATCH 064/120] ath11k: convert ath11k_wmi_pdev_set_ps_mode() to use
|
Subject: [PATCH] ath11k: convert ath11k_wmi_pdev_set_ps_mode() to use enum
|
||||||
enum wmi_sta_ps_mode
|
wmi_sta_ps_mode
|
||||||
|
|
||||||
It's more descriptive to use the actual enum used by the firmware instead of a
|
It's more descriptive to use the actual enum used by the firmware instead of a
|
||||||
boolean so change ath11k_wmi_pdev_set_ps_mode() to use a boolean.
|
boolean so change ath11k_wmi_pdev_set_ps_mode() to use a boolean.
|
||||||
@ -19,7 +19,7 @@ Link: https://lore.kernel.org/r/20211108123826.8463-1-kvalo@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -5638,7 +5638,8 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5648,7 +5648,8 @@ static int ath11k_mac_op_add_interface(s
|
||||||
goto err_peer_del;
|
goto err_peer_del;
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From b2beffa7d9a67b59b085616a27f1d10b1e80784f Mon Sep 17 00:00:00 2001
|
From b2beffa7d9a67b59b085616a27f1d10b1e80784f Mon Sep 17 00:00:00 2001
|
||||||
From: Carl Huang <cjhuang@codeaurora.org>
|
From: Carl Huang <cjhuang@codeaurora.org>
|
||||||
Date: Mon, 8 Nov 2021 14:38:26 +0200
|
Date: Mon, 8 Nov 2021 14:38:26 +0200
|
||||||
Subject: [PATCH 065/120] ath11k: enable 802.11 power save mode in station mode
|
Subject: [PATCH] ath11k: enable 802.11 power save mode in station mode
|
||||||
|
|
||||||
To reduce power consumption enable 802.11 power save mode in station mode. This
|
To reduce power consumption enable 802.11 power save mode in station mode. This
|
||||||
allows both radio and CPU to sleep more.
|
allows both radio and CPU to sleep more.
|
||||||
@ -69,7 +69,7 @@ Link: https://lore.kernel.org/r/20211108123826.8463-2-kvalo@codeaurora.org
|
|||||||
.hal_desc_sz = sizeof(struct hal_rx_desc_wcn6855),
|
.hal_desc_sz = sizeof(struct hal_rx_desc_wcn6855),
|
||||||
--- a/drivers/net/wireless/ath/ath11k/core.h
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
||||||
@@ -240,6 +240,7 @@ struct ath11k_vif {
|
@@ -246,6 +246,7 @@ struct ath11k_vif {
|
||||||
bool is_started;
|
bool is_started;
|
||||||
bool is_up;
|
bool is_up;
|
||||||
bool spectral_enabled;
|
bool spectral_enabled;
|
||||||
@ -89,7 +89,7 @@ Link: https://lore.kernel.org/r/20211108123826.8463-2-kvalo@codeaurora.org
|
|||||||
u32 hal_desc_sz;
|
u32 hal_desc_sz;
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -1049,6 +1049,83 @@ static int ath11k_mac_monitor_stop(struc
|
@@ -1050,6 +1050,83 @@ static int ath11k_mac_monitor_stop(struc
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,7 +173,7 @@ Link: https://lore.kernel.org/r/20211108123826.8463-2-kvalo@codeaurora.org
|
|||||||
static int ath11k_mac_op_config(struct ieee80211_hw *hw, u32 changed)
|
static int ath11k_mac_op_config(struct ieee80211_hw *hw, u32 changed)
|
||||||
{
|
{
|
||||||
struct ath11k *ar = hw->priv;
|
struct ath11k *ar = hw->priv;
|
||||||
@@ -2942,6 +3019,16 @@ static void ath11k_mac_op_bss_info_chang
|
@@ -2947,6 +3024,16 @@ static void ath11k_mac_op_bss_info_chang
|
||||||
ath11k_mac_txpower_recalc(ar);
|
ath11k_mac_txpower_recalc(ar);
|
||||||
}
|
}
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
From c802b6d7815d7c3f556efea28d0b79ef57ebcfd4 Mon Sep 17 00:00:00 2001
|
From c802b6d7815d7c3f556efea28d0b79ef57ebcfd4 Mon Sep 17 00:00:00 2001
|
||||||
From: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
From: Rameshkumar Sundaram <quic_ramess@quicinc.com>
|
||||||
Date: Mon, 25 Oct 2021 21:33:06 +0530
|
Date: Mon, 25 Oct 2021 21:33:06 +0530
|
||||||
Subject: [PATCH 067/120] ath11k: Clear auth flag only for actual association
|
Subject: [PATCH] ath11k: Clear auth flag only for actual association in
|
||||||
in security mode
|
security mode
|
||||||
|
|
||||||
AUTH flag is needed when peer assoc command is sent from host in
|
AUTH flag is needed when peer assoc command is sent from host in
|
||||||
security mode for non-assoc cases. Firmware will handle AUTH flag
|
security mode for non-assoc cases. Firmware will handle AUTH flag
|
||||||
@ -25,7 +25,7 @@ Link: https://lore.kernel.org/r/1635177786-20854-1-git-send-email-quic_ramess@qu
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2495,6 +2495,7 @@ static void ath11k_bss_assoc(struct ieee
|
@@ -2500,6 +2500,7 @@ static void ath11k_bss_assoc(struct ieee
|
||||||
|
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ Link: https://lore.kernel.org/r/1635177786-20854-1-git-send-email-quic_ramess@qu
|
|||||||
ret = ath11k_wmi_send_peer_assoc_cmd(ar, &peer_arg);
|
ret = ath11k_wmi_send_peer_assoc_cmd(ar, &peer_arg);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_warn(ar->ab, "failed to run peer assoc for %pM vdev %i: %d\n",
|
ath11k_warn(ar->ab, "failed to run peer assoc for %pM vdev %i: %d\n",
|
||||||
@@ -3772,6 +3773,7 @@ static int ath11k_station_assoc(struct a
|
@@ -3778,6 +3779,7 @@ static int ath11k_station_assoc(struct a
|
||||||
|
|
||||||
ath11k_peer_assoc_prepare(ar, vif, sta, &peer_arg, reassoc);
|
ath11k_peer_assoc_prepare(ar, vif, sta, &peer_arg, reassoc);
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ Link: https://lore.kernel.org/r/1635177786-20854-1-git-send-email-quic_ramess@qu
|
|||||||
ret = ath11k_wmi_send_peer_assoc_cmd(ar, &peer_arg);
|
ret = ath11k_wmi_send_peer_assoc_cmd(ar, &peer_arg);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath11k_warn(ar->ab, "failed to run peer assoc for STA %pM vdev %i: %d\n",
|
ath11k_warn(ar->ab, "failed to run peer assoc for STA %pM vdev %i: %d\n",
|
||||||
@@ -3983,6 +3985,7 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3989,6 +3991,7 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
ath11k_peer_assoc_prepare(ar, arvif->vif, sta,
|
ath11k_peer_assoc_prepare(ar, arvif->vif, sta,
|
||||||
&peer_arg, true);
|
&peer_arg, true);
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ Link: https://lore.kernel.org/r/1635177786-20854-1-git-send-email-quic_ramess@qu
|
|||||||
ath11k_warn(ar->ab, "failed to run peer assoc for STA %pM vdev %i: %d\n",
|
ath11k_warn(ar->ab, "failed to run peer assoc for STA %pM vdev %i: %d\n",
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -1763,7 +1763,7 @@ ath11k_wmi_copy_peer_flags(struct wmi_pe
|
@@ -1764,7 +1764,7 @@ ath11k_wmi_copy_peer_flags(struct wmi_pe
|
||||||
cmd->peer_flags |= WMI_PEER_AUTH;
|
cmd->peer_flags |= WMI_PEER_AUTH;
|
||||||
if (param->need_ptk_4_way) {
|
if (param->need_ptk_4_way) {
|
||||||
cmd->peer_flags |= WMI_PEER_NEED_PTK_4_WAY;
|
cmd->peer_flags |= WMI_PEER_NEED_PTK_4_WAY;
|
@ -1,57 +0,0 @@
|
|||||||
From 16a2c3d5406f95ef6139de52669c60a39443f5f7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rameshkumar Sundaram <ramess@codeaurora.org>
|
|
||||||
Date: Wed, 10 Nov 2021 17:10:48 +0200
|
|
||||||
Subject: [PATCH 066/120] ath11k: Send PPDU_STATS_CFG with proper pdev mask to
|
|
||||||
firmware
|
|
||||||
|
|
||||||
HTT_PPDU_STATS_CFG_PDEV_ID bit mask for target FW PPDU stats request message
|
|
||||||
was set as bit 8 to 15. Bit 8 is reserved for soc stats and pdev id starts from
|
|
||||||
bit 9. Hence change the bitmask as bit 9 to 15 and fill the proper pdev id in
|
|
||||||
the request message.
|
|
||||||
|
|
||||||
In commit 701e48a43e15 ("ath11k: add packet log support for QCA6390"), both
|
|
||||||
HTT_PPDU_STATS_CFG_PDEV_ID and pdev_mask were changed, but this pdev_mask
|
|
||||||
calculation is not valid for platforms which has multiple pdevs with 1 rxdma
|
|
||||||
per pdev, as this is writing same value(i.e. 2) for all pdevs. Hence fixed it
|
|
||||||
to consider pdev_idx as well, to make it compatible for both single and multi
|
|
||||||
pd cases.
|
|
||||||
|
|
||||||
Tested on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01092-QCAHKSWPL_SILICONZ-1
|
|
||||||
Tested on: IPQ6018 hw1.0 WLAN.HK.2.5.0.1-01067-QCAHKSWPL_SILICONZ-1
|
|
||||||
|
|
||||||
Fixes: 701e48a43e15 ("ath11k: add packet log support for QCA6390")
|
|
||||||
|
|
||||||
Co-developed-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
|
||||||
Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
|
|
||||||
Signed-off-by: Rameshkumar Sundaram <ramess@codeaurora.org>
|
|
||||||
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
Link: https://lore.kernel.org/r/20210721212029.142388-10-jouni@codeaurora.org
|
|
||||||
---
|
|
||||||
drivers/net/wireless/ath/ath11k/dp.h | 3 ++-
|
|
||||||
drivers/net/wireless/ath/ath11k/dp_tx.c | 2 +-
|
|
||||||
2 files changed, 3 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/dp.h
|
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/dp.h
|
|
||||||
@@ -517,7 +517,8 @@ struct htt_ppdu_stats_cfg_cmd {
|
|
||||||
} __packed;
|
|
||||||
|
|
||||||
#define HTT_PPDU_STATS_CFG_MSG_TYPE GENMASK(7, 0)
|
|
||||||
-#define HTT_PPDU_STATS_CFG_PDEV_ID GENMASK(15, 8)
|
|
||||||
+#define HTT_PPDU_STATS_CFG_SOC_STATS BIT(8)
|
|
||||||
+#define HTT_PPDU_STATS_CFG_PDEV_ID GENMASK(15, 9)
|
|
||||||
#define HTT_PPDU_STATS_CFG_TLV_TYPE_BITMASK GENMASK(31, 16)
|
|
||||||
|
|
||||||
enum htt_ppdu_stats_tag_type {
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
|
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
|
|
||||||
@@ -903,7 +903,7 @@ int ath11k_dp_tx_htt_h2t_ppdu_stats_req(
|
|
||||||
cmd->msg = FIELD_PREP(HTT_PPDU_STATS_CFG_MSG_TYPE,
|
|
||||||
HTT_H2T_MSG_TYPE_PPDU_STATS_CFG);
|
|
||||||
|
|
||||||
- pdev_mask = 1 << (i + 1);
|
|
||||||
+ pdev_mask = 1 << (ar->pdev_idx + i);
|
|
||||||
cmd->msg |= FIELD_PREP(HTT_PPDU_STATS_CFG_PDEV_ID, pdev_mask);
|
|
||||||
cmd->msg |= FIELD_PREP(HTT_PPDU_STATS_CFG_TLV_TYPE_BITMASK, mask);
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
From 85f36923be47b6990215ad444545a6a85133a0c6 Mon Sep 17 00:00:00 2001
|
From 85f36923be47b6990215ad444545a6a85133a0c6 Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
||||||
Date: Fri, 12 Nov 2021 10:03:40 +0200
|
Date: Fri, 12 Nov 2021 10:03:40 +0200
|
||||||
Subject: [PATCH 068/120] ath11k: fix fw crash due to peer get authorized
|
Subject: [PATCH] ath11k: fix fw crash due to peer get authorized before key
|
||||||
before key install
|
install
|
||||||
|
|
||||||
Firmware expects host to authorize the peer after the successful key
|
Firmware expects host to authorize the peer after the successful key
|
||||||
install. But host authorize the peer before the key install, this trigger
|
install. But host authorize the peer before the key install, this trigger
|
||||||
@ -28,7 +28,7 @@ Link: https://lore.kernel.org/r/1636554200-12345-1-git-send-email-quic_periyasa@
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2474,6 +2474,8 @@ static void ath11k_bss_assoc(struct ieee
|
@@ -2479,6 +2479,8 @@ static void ath11k_bss_assoc(struct ieee
|
||||||
struct ath11k_vif *arvif = (void *)vif->drv_priv;
|
struct ath11k_vif *arvif = (void *)vif->drv_priv;
|
||||||
struct peer_assoc_params peer_arg;
|
struct peer_assoc_params peer_arg;
|
||||||
struct ieee80211_sta *ap_sta;
|
struct ieee80211_sta *ap_sta;
|
||||||
@ -37,7 +37,7 @@ Link: https://lore.kernel.org/r/1636554200-12345-1-git-send-email-quic_periyasa@
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
lockdep_assert_held(&ar->conf_mutex);
|
lockdep_assert_held(&ar->conf_mutex);
|
||||||
@@ -2536,13 +2538,22 @@ static void ath11k_bss_assoc(struct ieee
|
@@ -2541,13 +2543,22 @@ static void ath11k_bss_assoc(struct ieee
|
||||||
"mac vdev %d up (associated) bssid %pM aid %d\n",
|
"mac vdev %d up (associated) bssid %pM aid %d\n",
|
||||||
arvif->vdev_id, bss_conf->bssid, bss_conf->aid);
|
arvif->vdev_id, bss_conf->bssid, bss_conf->aid);
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Link: https://lore.kernel.org/r/1636554200-12345-1-git-send-email-quic_periyasa@
|
|||||||
|
|
||||||
ret = ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id,
|
ret = ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id,
|
||||||
&bss_conf->he_obss_pd);
|
&bss_conf->he_obss_pd);
|
||||||
@@ -4221,6 +4232,34 @@ static int ath11k_mac_op_sta_state(struc
|
@@ -4227,6 +4238,34 @@ static int ath11k_mac_op_sta_state(struc
|
||||||
ath11k_warn(ar->ab, "Failed to associate station: %pM\n",
|
ath11k_warn(ar->ab, "Failed to associate station: %pM\n",
|
||||||
sta->addr);
|
sta->addr);
|
||||||
} else if (old_state == IEEE80211_STA_ASSOC &&
|
} else if (old_state == IEEE80211_STA_ASSOC &&
|
@ -1,8 +1,8 @@
|
|||||||
From 4ea03443ecdac6920eb7aa3a9da2cd0b8cc6dfc8 Mon Sep 17 00:00:00 2001
|
From 4ea03443ecdac6920eb7aa3a9da2cd0b8cc6dfc8 Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
||||||
Date: Wed, 10 Nov 2021 21:05:57 +0530
|
Date: Wed, 10 Nov 2021 21:05:57 +0530
|
||||||
Subject: [PATCH 069/120] ath11k: fix error routine when fallback of add
|
Subject: [PATCH] ath11k: fix error routine when fallback of add interface
|
||||||
interface fails
|
fails
|
||||||
|
|
||||||
When there is an error in add interface process from
|
When there is an error in add interface process from
|
||||||
ath11k_mac_set_kickout(), the code attempts to handle a
|
ath11k_mac_set_kickout(), the code attempts to handle a
|
||||||
@ -25,7 +25,7 @@ Link: https://lore.kernel.org/r/1636558557-2874-1-git-send-email-quic_periyasa@q
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -5613,7 +5613,7 @@ static int ath11k_mac_op_add_interface(s
|
@@ -5623,7 +5623,7 @@ static int ath11k_mac_op_add_interface(s
|
||||||
u32 param_id, param_value;
|
u32 param_id, param_value;
|
||||||
u16 nss;
|
u16 nss;
|
||||||
int i;
|
int i;
|
||||||
@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/1636558557-2874-1-git-send-email-quic_periyasa@q
|
|||||||
int bit;
|
int bit;
|
||||||
|
|
||||||
vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD;
|
vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD;
|
||||||
@@ -5816,17 +5816,17 @@ err_peer_del:
|
@@ -5826,17 +5826,17 @@ err_peer_del:
|
||||||
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
|
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
|
||||||
reinit_completion(&ar->peer_delete_done);
|
reinit_completion(&ar->peer_delete_done);
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
From 4c375743c5fe1ef84d1dd7269dd12585957f403e Mon Sep 17 00:00:00 2001
|
From 4c375743c5fe1ef84d1dd7269dd12585957f403e Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
||||||
Date: Wed, 10 Nov 2021 21:36:28 +0530
|
Date: Wed, 10 Nov 2021 21:36:28 +0530
|
||||||
Subject: [PATCH 070/120] ath11k: avoid unnecessary BH disable lock in STA
|
Subject: [PATCH] ath11k: avoid unnecessary BH disable lock in STA kickout
|
||||||
kickout event
|
event
|
||||||
|
|
||||||
In STA kickout event processing, the peer object is protected
|
In STA kickout event processing, the peer object is protected
|
||||||
under spin lock BH. Release this lock after picking up the vdev_id
|
under spin lock BH. Release this lock after picking up the vdev_id
|
||||||
@ -22,7 +22,7 @@ Link: https://lore.kernel.org/r/1636560388-24955-1-git-send-email-quic_periyasa@
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -6399,6 +6399,7 @@ static void ath11k_peer_sta_kickout_even
|
@@ -6400,6 +6400,7 @@ static void ath11k_peer_sta_kickout_even
|
||||||
struct ieee80211_sta *sta;
|
struct ieee80211_sta *sta;
|
||||||
struct ath11k_peer *peer;
|
struct ath11k_peer *peer;
|
||||||
struct ath11k *ar;
|
struct ath11k *ar;
|
||||||
@ -30,7 +30,7 @@ Link: https://lore.kernel.org/r/1636560388-24955-1-git-send-email-quic_periyasa@
|
|||||||
|
|
||||||
if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) {
|
if (ath11k_pull_peer_sta_kickout_ev(ab, skb, &arg) != 0) {
|
||||||
ath11k_warn(ab, "failed to extract peer sta kickout event");
|
ath11k_warn(ab, "failed to extract peer sta kickout event");
|
||||||
@@ -6414,10 +6415,15 @@ static void ath11k_peer_sta_kickout_even
|
@@ -6415,10 +6416,15 @@ static void ath11k_peer_sta_kickout_even
|
||||||
if (!peer) {
|
if (!peer) {
|
||||||
ath11k_warn(ab, "peer not found %pM\n",
|
ath11k_warn(ab, "peer not found %pM\n",
|
||||||
arg.mac_addr);
|
arg.mac_addr);
|
||||||
@ -47,7 +47,7 @@ Link: https://lore.kernel.org/r/1636560388-24955-1-git-send-email-quic_periyasa@
|
|||||||
if (!ar) {
|
if (!ar) {
|
||||||
ath11k_warn(ab, "invalid vdev id in peer sta kickout ev %d",
|
ath11k_warn(ab, "invalid vdev id in peer sta kickout ev %d",
|
||||||
peer->vdev_id);
|
peer->vdev_id);
|
||||||
@@ -6438,7 +6444,6 @@ static void ath11k_peer_sta_kickout_even
|
@@ -6439,7 +6445,6 @@ static void ath11k_peer_sta_kickout_even
|
||||||
ieee80211_report_low_ack(sta, 10);
|
ieee80211_report_low_ack(sta, 10);
|
||||||
|
|
||||||
exit:
|
exit:
|
@ -1,7 +1,7 @@
|
|||||||
From 31aeaf547d7e3b64ba5d5442dabc530bdb9e216e Mon Sep 17 00:00:00 2001
|
From 31aeaf547d7e3b64ba5d5442dabc530bdb9e216e Mon Sep 17 00:00:00 2001
|
||||||
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
|
||||||
Date: Wed, 10 Nov 2021 21:51:30 +0530
|
Date: Wed, 10 Nov 2021 21:51:30 +0530
|
||||||
Subject: [PATCH 071/120] ath11k: fix DMA memory free in CE pipe cleanup
|
Subject: [PATCH] ath11k: fix DMA memory free in CE pipe cleanup
|
||||||
|
|
||||||
In CE pipe cleanup, DMA memory gets freed by the aligned address
|
In CE pipe cleanup, DMA memory gets freed by the aligned address
|
||||||
(base_addr_owner_space) which is wrong. It needs to be freed
|
(base_addr_owner_space) which is wrong. It needs to be freed
|
@ -1,7 +1,7 @@
|
|||||||
From 624e0a3170309eeb5b729f7a43c1ba3234325f02 Mon Sep 17 00:00:00 2001
|
From 624e0a3170309eeb5b729f7a43c1ba3234325f02 Mon Sep 17 00:00:00 2001
|
||||||
From: Seevalamuthu Mariappan <quic_seevalam@quicinc.com>
|
From: Seevalamuthu Mariappan <quic_seevalam@quicinc.com>
|
||||||
Date: Thu, 11 Nov 2021 11:22:47 +0530
|
Date: Thu, 11 Nov 2021 11:22:47 +0530
|
||||||
Subject: [PATCH 072/120] ath11k: Fix 'unused-but-set-parameter' error
|
Subject: [PATCH] ath11k: Fix 'unused-but-set-parameter' error
|
||||||
|
|
||||||
Below compilation error is reported when built with W=1,
|
Below compilation error is reported when built with W=1,
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ Link: https://lore.kernel.org/r/1636609967-5114-1-git-send-email-quic_seevalam@q
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -5961,7 +5961,6 @@ static void ath11k_mac_op_configure_filt
|
@@ -5971,7 +5971,6 @@ static void ath11k_mac_op_configure_filt
|
||||||
|
|
||||||
mutex_lock(&ar->conf_mutex);
|
mutex_lock(&ar->conf_mutex);
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From f187fe8e3bc65cc4d7b0916947e2d6cd65d9cd3a Mon Sep 17 00:00:00 2001
|
From f187fe8e3bc65cc4d7b0916947e2d6cd65d9cd3a Mon Sep 17 00:00:00 2001
|
||||||
From: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
From: Venkateswara Naralasetty <quic_vnaralas@quicinc.com>
|
||||||
Date: Thu, 11 Nov 2021 20:50:02 +0530
|
Date: Thu, 11 Nov 2021 20:50:02 +0530
|
||||||
Subject: [PATCH 073/120] ath11k: fix firmware crash during channel switch
|
Subject: [PATCH] ath11k: fix firmware crash during channel switch
|
||||||
|
|
||||||
Currently the updated bandwidth for the peer will be configured
|
Currently the updated bandwidth for the peer will be configured
|
||||||
to the firmware after channel switch from the sta_rc_update_wk.
|
to the firmware after channel switch from the sta_rc_update_wk.
|
||||||
@ -30,7 +30,7 @@ Link: https://lore.kernel.org/r/1636644002-25446-1-git-send-email-quic_vnaralas@
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -3924,11 +3924,27 @@ static void ath11k_sta_rc_update_wk(stru
|
@@ -3930,11 +3930,27 @@ static void ath11k_sta_rc_update_wk(stru
|
||||||
ath11k_mac_max_he_nss(he_mcs_mask)));
|
ath11k_mac_max_he_nss(he_mcs_mask)));
|
||||||
|
|
||||||
if (changed & IEEE80211_RC_BW_CHANGED) {
|
if (changed & IEEE80211_RC_BW_CHANGED) {
|
@ -1,7 +1,7 @@
|
|||||||
From 2c5545bfa29dd5305fa770959890a23ea39b5e69 Mon Sep 17 00:00:00 2001
|
From 2c5545bfa29dd5305fa770959890a23ea39b5e69 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:01:18 +0200
|
Date: Fri, 12 Nov 2021 11:01:18 +0200
|
||||||
Subject: [PATCH 074/120] ath11k: disable unused CE8 interrupts for ipq8074
|
Subject: [PATCH] ath11k: disable unused CE8 interrupts for ipq8074
|
||||||
|
|
||||||
Host driver doesn't need to process CE8 interrupts (used
|
Host driver doesn't need to process CE8 interrupts (used
|
||||||
by target independently)
|
by target independently)
|
@ -1,8 +1,7 @@
|
|||||||
From 6452f0a3d5651bb7edfd9c709e78973aaa4d3bfc Mon Sep 17 00:00:00 2001
|
From 6452f0a3d5651bb7edfd9c709e78973aaa4d3bfc Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:01:26 +0200
|
Date: Fri, 12 Nov 2021 11:01:26 +0200
|
||||||
Subject: [PATCH 075/120] ath11k: allocate dst ring descriptors from cacheable
|
Subject: [PATCH] ath11k: allocate dst ring descriptors from cacheable memory
|
||||||
memory
|
|
||||||
|
|
||||||
tcl_data and reo_dst rings are currently being allocated using
|
tcl_data and reo_dst rings are currently being allocated using
|
||||||
dma_allocate_coherent() which is non cacheable.
|
dma_allocate_coherent() which is non cacheable.
|
@ -1,7 +1,7 @@
|
|||||||
From 5e76fe03dbf9f9dbc4fd454283b02594226c0718 Mon Sep 17 00:00:00 2001
|
From 5e76fe03dbf9f9dbc4fd454283b02594226c0718 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:03 +0200
|
Date: Fri, 12 Nov 2021 11:02:03 +0200
|
||||||
Subject: [PATCH 076/120] ath11k: modify dp_rx desc access wrapper calls inline
|
Subject: [PATCH] ath11k: modify dp_rx desc access wrapper calls inline
|
||||||
|
|
||||||
In data path, to reduce the CPU cycles spending on descriptor access
|
In data path, to reduce the CPU cycles spending on descriptor access
|
||||||
wrapper function, changed those functions as static inline.
|
wrapper function, changed those functions as static inline.
|
@ -1,7 +1,7 @@
|
|||||||
From a1775e732eb90486519de3813b83a11b7fcee2d0 Mon Sep 17 00:00:00 2001
|
From a1775e732eb90486519de3813b83a11b7fcee2d0 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:12 +0200
|
Date: Fri, 12 Nov 2021 11:02:12 +0200
|
||||||
Subject: [PATCH 077/120] ath11k: avoid additional access to
|
Subject: [PATCH] ath11k: avoid additional access to
|
||||||
ath11k_hal_srng_dst_num_free
|
ath11k_hal_srng_dst_num_free
|
||||||
|
|
||||||
In ath11k_dp_process_rx(), after processing rx_desc from
|
In ath11k_dp_process_rx(), after processing rx_desc from
|
@ -1,7 +1,7 @@
|
|||||||
From c4d12cb37ea2e6c2b70880350d7bf1bbbd825c6c Mon Sep 17 00:00:00 2001
|
From c4d12cb37ea2e6c2b70880350d7bf1bbbd825c6c Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:18 +0200
|
Date: Fri, 12 Nov 2021 11:02:18 +0200
|
||||||
Subject: [PATCH 078/120] ath11k: avoid active pdev check for each msdu
|
Subject: [PATCH] ath11k: avoid active pdev check for each msdu
|
||||||
|
|
||||||
The Active Pdev and CAC check are done for each msdu in
|
The Active Pdev and CAC check are done for each msdu in
|
||||||
ath11k_dp_rx_process_received_packets which is a overhead.
|
ath11k_dp_rx_process_received_packets which is a overhead.
|
@ -1,8 +1,7 @@
|
|||||||
From db2ecf9f0567a8f1a96f23a392cc5a30eaec4369 Mon Sep 17 00:00:00 2001
|
From db2ecf9f0567a8f1a96f23a392cc5a30eaec4369 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:24 +0200
|
Date: Fri, 12 Nov 2021 11:02:24 +0200
|
||||||
Subject: [PATCH 079/120] ath11k: remove usage quota while processing rx
|
Subject: [PATCH] ath11k: remove usage quota while processing rx packets
|
||||||
packets
|
|
||||||
|
|
||||||
The usage of quota variable inside ath11k_dp_rx_process_received_packets()
|
The usage of quota variable inside ath11k_dp_rx_process_received_packets()
|
||||||
is redundant. Since we would queue only max packets to the list before
|
is redundant. Since we would queue only max packets to the list before
|
@ -1,7 +1,7 @@
|
|||||||
From 400588039a17a460292eb974ebba5811b8cbdb91 Mon Sep 17 00:00:00 2001
|
From 400588039a17a460292eb974ebba5811b8cbdb91 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:31 +0200
|
Date: Fri, 12 Nov 2021 11:02:31 +0200
|
||||||
Subject: [PATCH 080/120] ath11k: add branch predictors in process_rx
|
Subject: [PATCH] ath11k: add branch predictors in process_rx
|
||||||
|
|
||||||
In datapath, add branch predictors where required in the process rx().
|
In datapath, add branch predictors where required in the process rx().
|
||||||
This protects high value rx path without having performance overhead.
|
This protects high value rx path without having performance overhead.
|
@ -1,8 +1,8 @@
|
|||||||
From d0e2523bfa9cb391fe966b0b6948c7e438981361 Mon Sep 17 00:00:00 2001
|
From d0e2523bfa9cb391fe966b0b6948c7e438981361 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:38 +0200
|
Date: Fri, 12 Nov 2021 11:02:38 +0200
|
||||||
Subject: [PATCH 081/120] ath11k: allocate HAL_WBM2SW_RELEASE ring from
|
Subject: [PATCH] ath11k: allocate HAL_WBM2SW_RELEASE ring from cacheable
|
||||||
cacheable memory
|
memory
|
||||||
|
|
||||||
Similar to REO destination ring, also allocate HAL_WBM2SW_RELEASE
|
Similar to REO destination ring, also allocate HAL_WBM2SW_RELEASE
|
||||||
from cacheable memory so that descriptors could be prefetched during
|
from cacheable memory so that descriptors could be prefetched during
|
@ -1,7 +1,7 @@
|
|||||||
From a8508bf7ced2e43f30b46333f09cbc79a1675616 Mon Sep 17 00:00:00 2001
|
From a8508bf7ced2e43f30b46333f09cbc79a1675616 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:02:45 +0200
|
Date: Fri, 12 Nov 2021 11:02:45 +0200
|
||||||
Subject: [PATCH 082/120] ath11k: remove mod operator in dst ring processing
|
Subject: [PATCH] ath11k: remove mod operator in dst ring processing
|
||||||
|
|
||||||
Replace use of mod operator with a manual wrap around
|
Replace use of mod operator with a manual wrap around
|
||||||
to avoid additional cost of using mod operation.
|
to avoid additional cost of using mod operation.
|
@ -1,8 +1,8 @@
|
|||||||
From cbfbed495d3289d5a0bc7c614cea639008086cfe Mon Sep 17 00:00:00 2001
|
From cbfbed495d3289d5a0bc7c614cea639008086cfe Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:05:58 +0200
|
Date: Fri, 12 Nov 2021 11:05:58 +0200
|
||||||
Subject: [PATCH 083/120] ath11k: avoid while loop in ring selection of tx
|
Subject: [PATCH] ath11k: avoid while loop in ring selection of tx completion
|
||||||
completion interrupt
|
interrupt
|
||||||
|
|
||||||
Currently while loop is used to find the tx completion ring number and
|
Currently while loop is used to find the tx completion ring number and
|
||||||
it is not required since the tx ring mask and the group id can be combined
|
it is not required since the tx ring mask and the group id can be combined
|
@ -1,7 +1,7 @@
|
|||||||
From bcef57ea400cc20a5389fa0e38d61063331558f8 Mon Sep 17 00:00:00 2001
|
From bcef57ea400cc20a5389fa0e38d61063331558f8 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:06:04 +0200
|
Date: Fri, 12 Nov 2021 11:06:04 +0200
|
||||||
Subject: [PATCH 084/120] ath11k: add branch predictors in dp_tx path
|
Subject: [PATCH] ath11k: add branch predictors in dp_tx path
|
||||||
|
|
||||||
Add branch prediction in dp_tx code path in tx and tx completion handlers.
|
Add branch prediction in dp_tx code path in tx and tx completion handlers.
|
||||||
Also in ath11k_dp_tx_complete_msdu , the pointer that is returned by
|
Also in ath11k_dp_tx_complete_msdu , the pointer that is returned by
|
||||||
@ -190,7 +190,7 @@ Link: https://lore.kernel.org/r/1630560820-21905-12-git-send-email-ppranees@code
|
|||||||
spin_unlock_bh(&tx_ring->tx_idr_lock);
|
spin_unlock_bh(&tx_ring->tx_idr_lock);
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -5283,7 +5283,7 @@ static void ath11k_mac_op_tx(struct ieee
|
@@ -5293,7 +5293,7 @@ static void ath11k_mac_op_tx(struct ieee
|
||||||
arsta = (struct ath11k_sta *)control->sta->drv_priv;
|
arsta = (struct ath11k_sta *)control->sta->drv_priv;
|
||||||
|
|
||||||
ret = ath11k_dp_tx(ar, arvif, arsta, skb);
|
ret = ath11k_dp_tx(ar, arvif, arsta, skb);
|
@ -1,8 +1,8 @@
|
|||||||
From be8867cb47652418e488170785bd9ffbadae3f1f Mon Sep 17 00:00:00 2001
|
From be8867cb47652418e488170785bd9ffbadae3f1f Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <ppranees@codeaurora.org>
|
From: P Praneesh <ppranees@codeaurora.org>
|
||||||
Date: Fri, 12 Nov 2021 11:06:11 +0200
|
Date: Fri, 12 Nov 2021 11:06:11 +0200
|
||||||
Subject: [PATCH 085/120] ath11k: avoid unnecessary lock contention in
|
Subject: [PATCH] ath11k: avoid unnecessary lock contention in tx_completion
|
||||||
tx_completion path
|
path
|
||||||
|
|
||||||
Avoid unnecessary idr_find calls before the idr_remove calls. Because
|
Avoid unnecessary idr_find calls before the idr_remove calls. Because
|
||||||
idr_remove gives the valid ptr if id is valid otherwise return NULL ptr.
|
idr_remove gives the valid ptr if id is valid otherwise return NULL ptr.
|
@ -1,8 +1,8 @@
|
|||||||
From 78406044bdd0cc8987bc082b76867c63ab1c6af8 Mon Sep 17 00:00:00 2001
|
From 78406044bdd0cc8987bc082b76867c63ab1c6af8 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Wed, 13 Oct 2021 03:37:04 -0400
|
Date: Wed, 13 Oct 2021 03:37:04 -0400
|
||||||
Subject: [PATCH 086/120] ath11k: enable IEEE80211_VHT_EXT_NSS_BW_CAPABLE if
|
Subject: [PATCH] ath11k: enable IEEE80211_VHT_EXT_NSS_BW_CAPABLE if NSS ratio
|
||||||
NSS ratio enabled
|
enabled
|
||||||
MIME-Version: 1.0
|
MIME-Version: 1.0
|
||||||
Content-Type: text/plain; charset=UTF-8
|
Content-Type: text/plain; charset=UTF-8
|
||||||
Content-Transfer-Encoding: 8bit
|
Content-Transfer-Encoding: 8bit
|
||||||
@ -35,7 +35,7 @@ Link: https://lore.kernel.org/r/20211013073704.15888-1-wgong@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -4706,6 +4706,10 @@ ath11k_create_vht_cap(struct ath11k *ar,
|
@@ -4712,6 +4712,10 @@ ath11k_create_vht_cap(struct ath11k *ar,
|
||||||
vht_cap.vht_supported = 1;
|
vht_cap.vht_supported = 1;
|
||||||
vht_cap.cap = ar->pdev->cap.vht_cap;
|
vht_cap.cap = ar->pdev->cap.vht_cap;
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From 1d795645e1eef97fe5d409e3dd5747a942f00e08 Mon Sep 17 00:00:00 2001
|
From 1d795645e1eef97fe5d409e3dd5747a942f00e08 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <wgong@codeaurora.org>
|
From: Wen Gong <wgong@codeaurora.org>
|
||||||
Date: Mon, 11 Oct 2021 04:49:57 -0400
|
Date: Mon, 11 Oct 2021 04:49:57 -0400
|
||||||
Subject: [PATCH 087/120] ath11k: remove return for empty tx bitrate in
|
Subject: [PATCH] ath11k: remove return for empty tx bitrate in
|
||||||
mac_op_sta_statistics
|
mac_op_sta_statistics
|
||||||
|
|
||||||
Currently in ath11k_mac_op_sta_statistics() there is the following
|
Currently in ath11k_mac_op_sta_statistics() there is the following
|
||||||
@ -29,7 +29,7 @@ Link: https://lore.kernel.org/r/20211011084957.31024-1-wgong@codeaurora.org
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -7426,21 +7426,20 @@ static void ath11k_mac_op_sta_statistics
|
@@ -7436,21 +7436,20 @@ static void ath11k_mac_op_sta_statistics
|
||||||
sinfo->tx_duration = arsta->tx_duration;
|
sinfo->tx_duration = arsta->tx_duration;
|
||||||
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_DURATION);
|
sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_DURATION);
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
From c8f2d41bbff6794329d681d108a817366aed0ba7 Mon Sep 17 00:00:00 2001
|
From c8f2d41bbff6794329d681d108a817366aed0ba7 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <quic_wgong@quicinc.com>
|
From: Wen Gong <quic_wgong@quicinc.com>
|
||||||
Date: Mon, 25 Oct 2021 23:20:14 -0400
|
Date: Mon, 25 Oct 2021 23:20:14 -0400
|
||||||
Subject: [PATCH 088/120] ath11k: fix the value of msecs_to_jiffies in
|
Subject: [PATCH] ath11k: fix the value of msecs_to_jiffies in
|
||||||
ath11k_debugfs_fw_stats_request
|
ath11k_debugfs_fw_stats_request
|
||||||
|
|
||||||
parameter of msecs_to_jiffies should be (3 * 1000) instead of (3 * HZ)
|
parameter of msecs_to_jiffies should be (3 * 1000) instead of (3 * HZ)
|
@ -1,8 +1,8 @@
|
|||||||
From b4a0f54156ac7720de1750b6ea06657c91c52163 Mon Sep 17 00:00:00 2001
|
From b4a0f54156ac7720de1750b6ea06657c91c52163 Mon Sep 17 00:00:00 2001
|
||||||
From: Wen Gong <quic_wgong@quicinc.com>
|
From: Wen Gong <quic_wgong@quicinc.com>
|
||||||
Date: Wed, 27 Oct 2021 05:38:25 -0400
|
Date: Wed, 27 Oct 2021 05:38:25 -0400
|
||||||
Subject: [PATCH 089/120] ath11k: move peer delete after vdev stop of station
|
Subject: [PATCH] ath11k: move peer delete after vdev stop of station for
|
||||||
for QCA6390 and WCN6855
|
QCA6390 and WCN6855
|
||||||
|
|
||||||
When station connect to AP, the wmi command sequence is:
|
When station connect to AP, the wmi command sequence is:
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ Link: https://lore.kernel.org/r/20211027093825.12167-1-quic_wgong@quicinc.com
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -4212,6 +4212,10 @@ static int ath11k_mac_op_sta_state(struc
|
@@ -4218,6 +4218,10 @@ static int ath11k_mac_op_sta_state(struc
|
||||||
new_state == IEEE80211_STA_NOTEXIST)) {
|
new_state == IEEE80211_STA_NOTEXIST)) {
|
||||||
ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr);
|
ath11k_dp_peer_cleanup(ar, arvif->vdev_id, sta->addr);
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ Link: https://lore.kernel.org/r/20211027093825.12167-1-quic_wgong@quicinc.com
|
|||||||
ret = ath11k_peer_delete(ar, arvif->vdev_id, sta->addr);
|
ret = ath11k_peer_delete(ar, arvif->vdev_id, sta->addr);
|
||||||
if (ret)
|
if (ret)
|
||||||
ath11k_warn(ar->ab, "Failed to delete peer: %pM for VDEV: %d\n",
|
ath11k_warn(ar->ab, "Failed to delete peer: %pM for VDEV: %d\n",
|
||||||
@@ -4233,6 +4237,7 @@ static int ath11k_mac_op_sta_state(struc
|
@@ -4239,6 +4243,7 @@ static int ath11k_mac_op_sta_state(struc
|
||||||
}
|
}
|
||||||
spin_unlock_bh(&ar->ab->base_lock);
|
spin_unlock_bh(&ar->ab->base_lock);
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ Link: https://lore.kernel.org/r/20211027093825.12167-1-quic_wgong@quicinc.com
|
|||||||
kfree(arsta->tx_stats);
|
kfree(arsta->tx_stats);
|
||||||
arsta->tx_stats = NULL;
|
arsta->tx_stats = NULL;
|
||||||
|
|
||||||
@@ -6617,6 +6622,19 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
@@ -6627,6 +6632,19 @@ ath11k_mac_op_unassign_vif_chanctx(struc
|
||||||
arvif->is_started = false;
|
arvif->is_started = false;
|
||||||
|
|
||||||
if (ab->hw_params.vdev_start_delay &&
|
if (ab->hw_params.vdev_start_delay &&
|
@ -1,7 +1,7 @@
|
|||||||
From 787264893c69ed091a46335dfd0f50dabb457718 Mon Sep 17 00:00:00 2001
|
From 787264893c69ed091a46335dfd0f50dabb457718 Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <quic_ppranees@quicinc.com>
|
From: P Praneesh <quic_ppranees@quicinc.com>
|
||||||
Date: Mon, 25 Oct 2021 17:44:20 +0530
|
Date: Mon, 25 Oct 2021 17:44:20 +0530
|
||||||
Subject: [PATCH 090/120] ath11k: fix FCS_ERR flag in radio tap header
|
Subject: [PATCH] ath11k: fix FCS_ERR flag in radio tap header
|
||||||
|
|
||||||
In radio tap header, BAD FCS flag is not updated properly because
|
In radio tap header, BAD FCS flag is not updated properly because
|
||||||
driver failed to update FCS_ERR flag in monitor mode.
|
driver failed to update FCS_ERR flag in monitor mode.
|
@ -1,7 +1,7 @@
|
|||||||
From 9212c1b9e80a869e732769a4fe7f82d392b219be Mon Sep 17 00:00:00 2001
|
From 9212c1b9e80a869e732769a4fe7f82d392b219be Mon Sep 17 00:00:00 2001
|
||||||
From: P Praneesh <quic_ppranees@quicinc.com>
|
From: P Praneesh <quic_ppranees@quicinc.com>
|
||||||
Date: Mon, 25 Oct 2021 17:47:09 +0530
|
Date: Mon, 25 Oct 2021 17:47:09 +0530
|
||||||
Subject: [PATCH 091/120] ath11k: send proper txpower and maxregpower values to
|
Subject: [PATCH] ath11k: send proper txpower and maxregpower values to
|
||||||
firmware
|
firmware
|
||||||
|
|
||||||
Set proper values for max_regpower, max_power, max_antenna_gain as it
|
Set proper values for max_regpower, max_power, max_antenna_gain as it
|
||||||
@ -25,7 +25,7 @@ Link: https://lore.kernel.org/r/1635164229-22880-1-git-send-email-quic_ppranees@
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -775,9 +775,9 @@ static int ath11k_mac_monitor_vdev_start
|
@@ -776,9 +776,9 @@ static int ath11k_mac_monitor_vdev_start
|
||||||
arg.channel.chan_radar = !!(channel->flags & IEEE80211_CHAN_RADAR);
|
arg.channel.chan_radar = !!(channel->flags & IEEE80211_CHAN_RADAR);
|
||||||
|
|
||||||
arg.channel.min_power = 0;
|
arg.channel.min_power = 0;
|
||||||
@ -38,7 +38,7 @@ Link: https://lore.kernel.org/r/1635164229-22880-1-git-send-email-quic_ppranees@
|
|||||||
|
|
||||||
arg.pref_tx_streams = ar->num_tx_chains;
|
arg.pref_tx_streams = ar->num_tx_chains;
|
||||||
arg.pref_rx_streams = ar->num_rx_chains;
|
arg.pref_rx_streams = ar->num_rx_chains;
|
||||||
@@ -6123,9 +6123,9 @@ ath11k_mac_vdev_start_restart(struct ath
|
@@ -6133,9 +6133,9 @@ ath11k_mac_vdev_start_restart(struct ath
|
||||||
ath11k_phymodes[chandef->chan->band][chandef->width];
|
ath11k_phymodes[chandef->chan->band][chandef->width];
|
||||||
|
|
||||||
arg.channel.min_power = 0;
|
arg.channel.min_power = 0;
|
||||||
@ -53,7 +53,7 @@ Link: https://lore.kernel.org/r/1635164229-22880-1-git-send-email-quic_ppranees@
|
|||||||
arg.pref_rx_streams = ar->num_rx_chains;
|
arg.pref_rx_streams = ar->num_rx_chains;
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -2387,6 +2387,8 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
|
@@ -2388,6 +2388,8 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
|
||||||
tchan_info->reg_class_id);
|
tchan_info->reg_class_id);
|
||||||
*reg2 |= FIELD_PREP(WMI_CHAN_REG_INFO2_ANT_MAX,
|
*reg2 |= FIELD_PREP(WMI_CHAN_REG_INFO2_ANT_MAX,
|
||||||
tchan_info->antennamax);
|
tchan_info->antennamax);
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user