wlan-ap-Telecominfraproject/feeds/ipq95xx/mac80211/patches/qca/363-ath11k-Add-the-green-AP-enabling-set-command-support.patch
John Crispin 144c5d00f4 ipq95xx/mac80211: update to ATH12.3-CS
Signed-off-by: John Crispin <john@phrozen.org>
2024-02-28 18:56:21 +01:00

84 lines
3.1 KiB
Diff

From 517a871bbbe7d9eb4a732a3439b4835f70514be9 Mon Sep 17 00:00:00 2001
From: Sivashankari Madhavan <quic_sivamadh@quicinc.com>
Date: Wed, 7 Sep 2022 15:02:06 +0530
Subject: [PATCH] ath11k: Add the green AP enabling set command support
Enable/Disable the Green AP based on SUPPORTS_AP_PS bit set under
the supports_ap_ps hw param. In ath11k this hw param is not supported.
Now added supports_ap_ps hw_param under ipq9574 for support iw set command
for enable Green AP in ath11k.
root@OpenWrt:/# iw wlan0 set ap_ps 0
EXTMSG [0x00000000 00000000] SSID[4528] wlan_dev.c Line[0496]:
GreenAP Curr Chainmask: 15/15, Phy_mode: 21, bw[20/40/80/160]: 0
EXTMSG [0x00000000 00000000] SSID[4528] wlan_dev.c Line[0498]:
GreenAP saved tx/rx chainmask: 15/15, phymode: 21, freq1: 2462, 0
root@OpenWrt:/# iw wlan0 set ap_ps 1
EXTMSG [0x00000000 00000000] SSID[4528] wlan_dev.c Line[0496]:
GreenAP Curr Chainmask: 1/1, Phy_mode: 1, bw[20/40/80/160]: 0
EXTMSG [0x00000000 00000000] SSID[4528] wlan_dev.c Line[0498]:
GreenAP saved tx/rx chainmask: 15/15, phymode: 21, freq1: 2462, 9
Signed-off-by: Sivashankari Madhavan <quic_sivamadh@quicinc.com>
---
drivers/net/wireless/ath/ath11k/core.c | 1 +
drivers/net/wireless/ath/ath11k/hw.h | 1 +
drivers/net/wireless/ath/ath11k/mac.c | 8 ++++++++
3 files changed, 10 insertions(+)
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 22225b2..d093004 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -768,6 +768,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
.wakeup_mhi = false,
.reo_status_poll = false,
.num_vdevs_peers = ath11k_vdevs_peers,
+ .supports_ap_ps = true,
},
};
diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h
index 8bd2ac4..af1b70b 100644
--- a/drivers/net/wireless/ath/ath11k/hw.h
+++ b/drivers/net/wireless/ath/ath11k/hw.h
@@ -218,6 +218,7 @@ struct ath11k_hw_params {
u32 hal_desc_sz;
bool supports_regdb;
bool fix_l1ss;
+ bool supports_ap_ps;
bool credit_flow;
u8 max_tx_ring;
const struct ath11k_hw_hal_params *hal_params;
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 38b82be..3f31373 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -4050,6 +4050,11 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
if (changed & BSS_CHANGED_FILS_DISCOVERY ||
changed & BSS_CHANGED_UNSOL_BCAST_PROBE_RESP)
ath11k_mac_fils_discovery(arvif, info);
+
+ if ((changed & BSS_CHANGED_PS) && vif->type == NL80211_IFTYPE_AP) {
+ ar->ap_ps_enabled = info->ap_ps_enable;
+ ath11k_mac_ap_ps_recalc(ar);
+ }
mutex_unlock(&ar->conf_mutex);
}
@@ -12151,6 +12156,9 @@ static int __ath11k_mac_register(struct ath11k *ar)
if (ab->hw_params.single_pdev_only && ar->supports_6ghz)
ieee80211_hw_set(ar->hw, SINGLE_SCAN_ON_ALL_BANDS);
+
+ if (ab->hw_params.supports_ap_ps)
+ ieee80211_hw_set(ar->hw, SUPPORTS_AP_PS);
ieee80211_hw_set(ar->hw, SIGNAL_DBM);
ieee80211_hw_set(ar->hw, SUPPORTS_PS);
--
2.17.1