mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-04 04:54:18 +00:00
323e249ce8
This updates mac80211 to version 6.1.97-1. This code is based on Linux 6.1.97 and contains all fixes included in the upstream wireless subsystem from that kernel version. This includes many bugfixes and also some security fixes. The removed patches are already integrated in upstream Linux 6.1.97 or in backports. The following patches were integrated in upstream Linux: ath11k/0013-wifi-ath11k-synchronize-ath11k_mac_he_gi_to_nl80211_.patch ath11k/0035-wifi-ath11k-Use-platform_get_irq-to-get-the-interrup.patch ath11k/0036-wifi-ath11k-fix-SAC-bug-on-peer-addition-with-sta-ba.patch ath11k/0047-wifi-ath11k-fix-deinitialization-of-firmware-resourc.patch ath11k/0053-wifi-ath11k-fix-writing-to-unintended-memory-region.patch ath11k/0060-wifi-ath11k-Ignore-frags-from-uninitialized-peer-in-.patch ath11k/0065-wifi-ath11k-fix-tx-status-reporting-in-encap-offload.patch ath11k/0067-wifi-ath11k-Fix-SKB-corruption-in-REO-destination-ri.patch ath11k/0069-wifi-ath11k-fix-registration-of-6Ghz-only-phy-withou.patch ath11k/0080-wifi-ath11k-add-support-default-regdb-while-searchin.patch ath11k/0085-wifi-ath11k-fix-memory-leak-in-WMI-firmware-stats.patch ath11k/0086-wifi-ath11k-Add-missing-check-for-ioremap.patch ath11k/0096-wifi-ath11k-fix-boot-failure-with-one-MSI-vector.patch subsys/337-wifi-mac80211-fix-race-condition-on-enabling-fast-xm.patch The following patches were integrated in upstream backports: ath11k/901-wifi-ath11k-pci-fix-compilation-in-5.16-and-older.patch build/080-resv_start_op.patch build/110-backport_napi_build_skb.patch The following files are missing in backports, we do not have to remove them any more. Some were already missing before some were removed in this update: include/linux/cordic.h include/linux/crc8.h include/linux/eeprom_93cx6.h include/linux/wl12xx.h include/net/ieee80211.h backport-include/linux/bcm47xx_nvram.h include/linux/ath9k_platform.h include/net/bluetooth/ backports ships a dummy Mediatek wed header for older kernel versions. We backported the feature in our kernel, remove the dummy header: backport-include/linux/soc/mediatek/mtk_wed.h Remove header files for subsystems used form the mainline kernel: include/trace/events/qrtr.h include/net/rsi_91x.h backport-include/linux/platform_data/brcmnand.h Link: https://github.com/openwrt/openwrt/pull/15827 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
139 lines
5.0 KiB
Diff
139 lines
5.0 KiB
Diff
From c82dc33f252fd8883be66f2d0230af0fd734c683 Mon Sep 17 00:00:00 2001
|
|
From: Aloka Dixit <quic_alokad@quicinc.com>
|
|
Date: Fri, 5 May 2023 16:11:27 +0300
|
|
Subject: [PATCH 74/77] wifi: ath11k: MBSSID parameter configuration in AP mode
|
|
|
|
Include MBSSID parameters in WMI vdev up operation.
|
|
|
|
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
|
|
Co-developed-by: John Crispin <john@phrozen.org>
|
|
Signed-off-by: John Crispin <john@phrozen.org>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/20230405221648.17950-5-quic_alokad@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/mac.c | 29 +++++++++++++++++++++------
|
|
drivers/net/wireless/ath/ath11k/wmi.c | 8 +++++++-
|
|
drivers/net/wireless/ath/ath11k/wmi.h | 3 ++-
|
|
3 files changed, 32 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -964,7 +964,7 @@ static int ath11k_mac_monitor_vdev_start
|
|
return ret;
|
|
}
|
|
|
|
- ret = ath11k_wmi_vdev_up(ar, vdev_id, 0, ar->mac_addr);
|
|
+ ret = ath11k_wmi_vdev_up(ar, vdev_id, 0, ar->mac_addr, NULL, 0, 0);
|
|
if (ret) {
|
|
ath11k_warn(ar->ab, "failed to put up monitor vdev %i: %d\n",
|
|
vdev_id, ret);
|
|
@@ -1416,6 +1416,7 @@ static void ath11k_control_beaconing(str
|
|
struct ieee80211_bss_conf *info)
|
|
{
|
|
struct ath11k *ar = arvif->ar;
|
|
+ struct ath11k_vif *tx_arvif = NULL;
|
|
int ret = 0;
|
|
|
|
lockdep_assert_held(&arvif->ar->conf_mutex);
|
|
@@ -1444,8 +1445,14 @@ static void ath11k_control_beaconing(str
|
|
|
|
ether_addr_copy(arvif->bssid, info->bssid);
|
|
|
|
+ if (arvif->vif->mbssid_tx_vif)
|
|
+ tx_arvif = (struct ath11k_vif *)arvif->vif->mbssid_tx_vif->drv_priv;
|
|
+
|
|
ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
|
|
- arvif->bssid);
|
|
+ arvif->bssid,
|
|
+ tx_arvif ? tx_arvif->bssid : NULL,
|
|
+ info->bssid_index,
|
|
+ 1 << info->bssid_indicator);
|
|
if (ret) {
|
|
ath11k_warn(ar->ab, "failed to bring up vdev %d: %i\n",
|
|
arvif->vdev_id, ret);
|
|
@@ -2876,7 +2883,8 @@ static void ath11k_bss_assoc(struct ieee
|
|
arvif->aid = vif->cfg.aid;
|
|
ether_addr_copy(arvif->bssid, bss_conf->bssid);
|
|
|
|
- ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid);
|
|
+ ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, arvif->aid, arvif->bssid,
|
|
+ NULL, 0, 0);
|
|
if (ret) {
|
|
ath11k_warn(ar->ab, "failed to set vdev %d up: %d\n",
|
|
arvif->vdev_id, ret);
|
|
@@ -7130,7 +7138,8 @@ ath11k_mac_update_vif_chan(struct ath11k
|
|
int n_vifs)
|
|
{
|
|
struct ath11k_base *ab = ar->ab;
|
|
- struct ath11k_vif *arvif;
|
|
+ struct ath11k_vif *arvif, *tx_arvif = NULL;
|
|
+ struct ieee80211_vif *mbssid_tx_vif;
|
|
int ret;
|
|
int i;
|
|
bool monitor_vif = false;
|
|
@@ -7184,8 +7193,15 @@ ath11k_mac_update_vif_chan(struct ath11k
|
|
ath11k_warn(ab, "failed to update bcn tmpl during csa: %d\n",
|
|
ret);
|
|
|
|
+ mbssid_tx_vif = arvif->vif->mbssid_tx_vif;
|
|
+ if (mbssid_tx_vif)
|
|
+ tx_arvif = (struct ath11k_vif *)mbssid_tx_vif->drv_priv;
|
|
+
|
|
ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
|
|
- arvif->bssid);
|
|
+ arvif->bssid,
|
|
+ tx_arvif ? tx_arvif->bssid : NULL,
|
|
+ arvif->vif->bss_conf.bssid_index,
|
|
+ 1 << arvif->vif->bss_conf.bssid_indicator);
|
|
if (ret) {
|
|
ath11k_warn(ab, "failed to bring vdev up %d: %d\n",
|
|
arvif->vdev_id, ret);
|
|
@@ -7303,7 +7319,8 @@ static int ath11k_start_vdev_delay(struc
|
|
}
|
|
|
|
if (arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
|
|
- ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, 0, ar->mac_addr);
|
|
+ ret = ath11k_wmi_vdev_up(ar, arvif->vdev_id, 0, ar->mac_addr,
|
|
+ NULL, 0, 0);
|
|
if (ret) {
|
|
ath11k_warn(ab, "failed put monitor up: %d\n", ret);
|
|
return ret;
|
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
|
@@ -1001,7 +1001,8 @@ int ath11k_wmi_vdev_start(struct ath11k
|
|
return ret;
|
|
}
|
|
|
|
-int ath11k_wmi_vdev_up(struct ath11k *ar, u32 vdev_id, u32 aid, const u8 *bssid)
|
|
+int ath11k_wmi_vdev_up(struct ath11k *ar, u32 vdev_id, u32 aid, const u8 *bssid,
|
|
+ u8 *tx_bssid, u32 nontx_profile_idx, u32 nontx_profile_cnt)
|
|
{
|
|
struct ath11k_pdev_wmi *wmi = ar->wmi;
|
|
struct wmi_vdev_up_cmd *cmd;
|
|
@@ -1025,6 +1026,11 @@ int ath11k_wmi_vdev_up(struct ath11k *ar
|
|
|
|
ether_addr_copy(cmd->vdev_bssid.addr, bssid);
|
|
|
|
+ cmd->nontx_profile_idx = nontx_profile_idx;
|
|
+ cmd->nontx_profile_cnt = nontx_profile_cnt;
|
|
+ if (tx_bssid)
|
|
+ ether_addr_copy(cmd->tx_vdev_bssid.addr, tx_bssid);
|
|
+
|
|
if (arvif && arvif->vif->type == NL80211_IFTYPE_STATION) {
|
|
bss_conf = &arvif->vif->bss_conf;
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
|
@@ -6301,7 +6301,8 @@ int ath11k_wmi_bcn_tmpl(struct ath11k *a
|
|
struct sk_buff *bcn);
|
|
int ath11k_wmi_vdev_down(struct ath11k *ar, u8 vdev_id);
|
|
int ath11k_wmi_vdev_up(struct ath11k *ar, u32 vdev_id, u32 aid,
|
|
- const u8 *bssid);
|
|
+ const u8 *bssid, u8 *tx_bssid, u32 nontx_profile_idx,
|
|
+ u32 nontx_profile_cnt);
|
|
int ath11k_wmi_vdev_stop(struct ath11k *ar, u8 vdev_id);
|
|
int ath11k_wmi_vdev_start(struct ath11k *ar, struct wmi_vdev_start_req_arg *arg,
|
|
bool restart);
|