mac80211: bump to 5.15.33-1

This commit is contained in:
lean 2022-07-08 12:44:37 +08:00
parent 82118ca885
commit 66d19a4e36
278 changed files with 14914 additions and 2592 deletions

View File

@ -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)

View File

@ -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

View File

@ -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 \

View File

@ -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=

View File

@ -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)
{ {

View File

@ -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=

View File

@ -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;

View File

@ -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);

View File

@ -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,

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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];

View File

@ -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));

View File

@ -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,

View File

@ -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;
} }

View File

@ -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;

View File

@ -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"

View File

@ -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);
} }

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View 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

View File

@ -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;

View File

@ -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,

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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,

View File

@ -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;
} }

View File

@ -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

View File

@ -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]);

View File

@ -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:

View File

@ -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),

View File

@ -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];

View File

@ -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);
} }

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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;

View File

@ -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,

View File

@ -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 &&

View File

@ -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:

View File

@ -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);

View File

@ -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.
*/ */

View File

@ -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,

View File

@ -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,

View File

@ -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 {

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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,
}; };

View File

@ -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.
*/ */

View File

@ -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;
} }

View File

@ -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);
} }

View File

@ -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;

View File

@ -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);

View File

@ -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 &&

View File

@ -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);

View File

@ -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:

View File

@ -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

View File

@ -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);

View File

@ -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) {

View File

@ -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)

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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);

View File

@ -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.

View File

@ -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;

View File

@ -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);

View File

@ -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)

View File

@ -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 &&

View File

@ -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.

View File

@ -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