From 107d6a5048829152e0e65e31b7a1fb87fa67eced Mon Sep 17 00:00:00 2001 From: Shwetha G K Date: Mon, 12 Oct 2020 13:51:34 +0530 Subject: [PATCH] qcacmn: Add additional parameters to CFR meta data Add per chain agc gain in dB information, CFO & rx_start_ts fields to CFR metadata Change-Id: I6af9c4212fe5a0bed6e51516d1c446155cea63aa --- umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h | 60 +++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h b/umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h index e8b7721734b1..1d7d6ac62812 100644 --- a/umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h +++ b/umac/cfr/dispatcher/inc/wlan_cfr_utils_api.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -67,6 +67,8 @@ enum cfrmetaversion { CFR_META_VERSION_1, CFR_META_VERSION_2, CFR_META_VERSION_3, + CFR_META_VERSION_4, + CFR_META_VERSION_5, CFR_META_VERSION_MAX = 0xFF, }; @@ -170,6 +172,28 @@ struct cfr_metadata_version_2 { u_int16_t chain_phase[HOST_MAX_CHAINS]; } __attribute__ ((__packed__)); +struct cfr_metadata_version_4 { + u_int8_t peer_addr[QDF_MAC_ADDR_SIZE]; + u_int8_t status; + u_int8_t capture_bw; + u_int8_t channel_bw; + u_int8_t phy_mode; + u_int16_t prim20_chan; + u_int16_t center_freq1; + u_int16_t center_freq2; + u_int8_t capture_mode; + u_int8_t capture_type; + u_int8_t sts_count; + u_int8_t num_rx_chain; + u_int32_t timestamp; + u_int32_t length; + u_int32_t chain_rssi[HOST_MAX_CHAINS]; + u_int16_t chain_phase[HOST_MAX_CHAINS]; + u_int32_t rtt_cfo_measurement; + u_int8_t agc_gain[HOST_MAX_CHAINS]; + u_int32_t rx_start_ts; +} __attribute__ ((__packed__)); + #ifdef WLAN_ENH_CFR_ENABLE struct cfr_metadata_version_3 { u_int8_t status; @@ -194,6 +218,34 @@ struct cfr_metadata_version_3 { u_int32_t chain_rssi[HOST_MAX_CHAINS]; u_int16_t chain_phase[HOST_MAX_CHAINS]; } __attribute__ ((__packed__)); + +struct cfr_metadata_version_5 { + u_int8_t status; + u_int8_t capture_bw; + u_int8_t channel_bw; + u_int8_t phy_mode; + u_int16_t prim20_chan; + u_int16_t center_freq1; + u_int16_t center_freq2; + u_int8_t capture_mode; /* ack_capture_mode */ + u_int8_t capture_type; /* cfr_capture_type */ + u_int8_t sts_count; + u_int8_t num_rx_chain; + u_int64_t timestamp; + u_int32_t length; + u_int8_t is_mu_ppdu; + u_int8_t num_mu_users; + union { + u_int8_t su_peer_addr[QDF_MAC_ADDR_SIZE]; + u_int8_t mu_peer_addr[MAX_CFR_MU_USERS][QDF_MAC_ADDR_SIZE]; + } peer_addr; + u_int32_t chain_rssi[HOST_MAX_CHAINS]; + u_int16_t chain_phase[HOST_MAX_CHAINS]; + u_int32_t rtt_cfo_measurement; + u_int8_t agc_gain[HOST_MAX_CHAINS]; + u_int32_t rx_start_ts; +} __attribute__ ((__packed__)); + #endif struct csi_cfr_header { @@ -203,13 +255,17 @@ struct csi_cfr_header { u_int8_t cfr_data_version; u_int8_t chip_type; u_int8_t pltform_type; - u_int32_t Reserved; + u_int32_t cfr_metadata_len; union { struct cfr_metadata_version_1 meta_v1; struct cfr_metadata_version_2 meta_v2; #ifdef WLAN_ENH_CFR_ENABLE struct cfr_metadata_version_3 meta_v3; +#endif + struct cfr_metadata_version_4 meta_v4; +#ifdef WLAN_ENH_CFR_ENABLE + struct cfr_metadata_version_5 meta_v5; #endif } u; } __attribute__ ((__packed__));