wlan-ap-Telecominfraproject/feeds/ipq95xx/mac80211/patches/qca/715-ath12k-add-support-for-peer-meta-data-version.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

105 lines
4.2 KiB
Diff

From 3bcb7eb3a92e7ffffe6f7ebb7dfc0534f0f528e1 Mon Sep 17 00:00:00 2001
From: Harshitha Prem <quic_hprem@quicinc.com>
Date: Wed, 22 Feb 2023 13:06:00 +0530
Subject: [PATCH] ath12k: add support for peer meta data version
Add new WMI Service command - WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT
to support multiple FW PeerMetaData Versions
if WMI_SERVICE_V1A_V1B_SUPPORTED service bit is set by FW,then from host
it will set rx_peer_meta_data_ver in wmi_resource_config's flags2 with
value 2 for WCN7850 to indicate as V1A and value 3 for QCN9274, IPQ5332 to
indicate as V1B meta version. Otherwise, no need to send it.
Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
---
drivers/net/wireless/ath/ath12k/hw.c | 4 ++++
drivers/net/wireless/ath/ath12k/hw.h | 1 +
drivers/net/wireless/ath/ath12k/wmi.c | 6 +++++-
drivers/net/wireless/ath/ath12k/wmi.h | 2 ++
4 files changed, 12 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/ath/ath12k/wmi.c
+++ b/drivers/net/wireless/ath/ath12k/wmi.c
@@ -232,6 +232,10 @@ void ath12k_wmi_init_qcn9274(struct ath1
config->ema_max_vap_cnt = ab->num_radios;
config->ema_max_profile_period = TARGET_EMA_MAX_PROFILE_PERIOD;
config->beacon_tx_offload_max_vdev += config->ema_max_vap_cnt;
+
+ if (test_bit(WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT, ab->wmi_ab.svc_map))
+ config->dp_peer_meta_data_ver = TARGET_RX_PEER_METADATA_VER_V1B;
+
}
void ath12k_wmi_init_ipq5332(struct ath12k_base *ab,
@@ -292,6 +296,10 @@ void ath12k_wmi_init_ipq5332(struct ath1
config->ema_max_vap_cnt = ab->num_radios;
config->ema_max_profile_period = TARGET_EMA_MAX_PROFILE_PERIOD;
config->beacon_tx_offload_max_vdev += config->ema_max_vap_cnt;
+
+ if (test_bit(WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT, ab->wmi_ab.svc_map))
+ config->dp_peer_meta_data_ver = TARGET_RX_PEER_METADATA_VER_V1B;
+
}
@@ -339,6 +347,10 @@ void ath12k_wmi_init_wcn7850(struct ath1
config->num_multicast_filter_entries = 0x20;
config->num_wow_filters = 0x16;
config->num_keep_alive_pattern = 0;
+
+ if (test_bit(WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT, ab->wmi_ab.svc_map))
+ config->dp_peer_meta_data_ver = TARGET_RX_PEER_METADATA_VER_V1A;
+
}
#define PRIMAP(_hw_mode_) \
@@ -4661,7 +4673,9 @@ ath12k_wmi_copy_resource_config(struct w
wmi_cfg->twt_ap_pdev_count = tg_cfg->twt_ap_pdev_count;
wmi_cfg->twt_ap_sta_count = tg_cfg->twt_ap_sta_count;
wmi_cfg->flags2 = WMI_RSRC_CFG_FLAGS2_CALC_NEXT_DTIM_COUNT_SET |
- WMI_RSRC_CFG_FLAGS2_INTRABSS_MEC_WDS_LEARNING_DISABLE;
+ WMI_RSRC_CFG_FLAGS2_INTRABSS_MEC_WDS_LEARNING_DISABLE |
+ u32_encode_bits(tg_cfg->dp_peer_meta_data_ver,
+ WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION);
wmi_cfg->host_service_flags &= ~(1 << WMI_RSRC_CFG_HOST_SVC_FLAG_REG_CC_EXT_SUPPORT_BIT);
wmi_cfg->host_service_flags |= 1 << WMI_RSRC_CFG_HOST_SVC_FLAG_REG_CC_EXT_SUPPORT_BIT;
wmi_cfg->host_service_flags |= 1 << WMI_RSRC_CFG_HOST_SVC_FLAG_REO_QREF_SUPPORT_BIT;
--- a/drivers/net/wireless/ath/ath12k/wmi.h
+++ b/drivers/net/wireless/ath/ath12k/wmi.h
@@ -2208,6 +2208,7 @@ enum wmi_tlv_service {
WMI_TLV_SERVICE_DCS_AWGN_INT_SUPPORT = 286,
WMI_TLV_SERVICE_BE = 289,
WMI_TLV_SERVICE_PKTLOG_DECODE_INFO_SUPPORT = 320,
+ WMI_TLV_SERVICE_PEER_METADATA_V1A_V1B_SUPPORT = 365,
WMI_MAX_EXT2_SERVICE,
};
@@ -2526,6 +2527,7 @@ struct wmi_init_cmd {
#define WMI_RSRC_CFG_HOST_SVC_FLAG_REG_CC_EXT_SUPPORT_BIT 4
#define WMI_RSRC_CFG_HOST_SVC_FLAG_REO_QREF_SUPPORT_BIT 12
+#define WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION GENMASK(5,4)
#define WMI_RSRC_CFG_FLAGS2_CALC_NEXT_DTIM_COUNT_SET BIT(9)
#define WMI_RSRC_CFG_FLAGS2_INTRABSS_MEC_WDS_LEARNING_DISABLE BIT(15)
#define WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64 BIT(5)
@@ -6282,6 +6284,7 @@ struct target_resource_config {
bool is_reg_cc_ext_event_supported;
u32 ema_max_vap_cnt;
u32 ema_max_profile_period;
+ u8 dp_peer_meta_data_ver;
};
enum wmi_tpc_pream_bw {
--- a/drivers/net/wireless/ath/ath12k/hw.h
+++ b/drivers/net/wireless/ath/ath12k/hw.h
@@ -67,6 +67,8 @@
#define TARGET_DMA_BURST_SIZE 1
#define TARGET_RX_BATCHMODE 1
#define TARGET_EMA_MAX_PROFILE_PERIOD 8
+#define TARGET_RX_PEER_METADATA_VER_V1A 2
+#define TARGET_RX_PEER_METADATA_VER_V1B 3
#define ATH12K_HW_DEFAULT_QUEUE 0