19b2e3b4eSVenkateswara Naralasetty /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 29b2e3b4eSVenkateswara Naralasetty /* 39b2e3b4eSVenkateswara Naralasetty * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. 49b2e3b4eSVenkateswara Naralasetty * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 59b2e3b4eSVenkateswara Naralasetty */ 69b2e3b4eSVenkateswara Naralasetty 79b2e3b4eSVenkateswara Naralasetty #ifndef ATH11K_CFR_H 89b2e3b4eSVenkateswara Naralasetty #define ATH11K_CFR_H 99b2e3b4eSVenkateswara Naralasetty 109b2e3b4eSVenkateswara Naralasetty #include "dbring.h" 119b2e3b4eSVenkateswara Naralasetty #include "wmi.h" 129b2e3b4eSVenkateswara Naralasetty 139b2e3b4eSVenkateswara Naralasetty #define ATH11K_CFR_NUM_RESP_PER_EVENT 1 149b2e3b4eSVenkateswara Naralasetty #define ATH11K_CFR_EVENT_TIMEOUT_MS 1 159b2e3b4eSVenkateswara Naralasetty #define ATH11K_CFR_NUM_RING_ENTRIES 1 169b2e3b4eSVenkateswara Naralasetty 179754d4baSVenkateswara Naralasetty #define ATH11K_MAX_CFR_ENABLED_CLIENTS 10 189b2e3b4eSVenkateswara Naralasetty #define CFR_MAX_LUT_ENTRIES 136 199b2e3b4eSVenkateswara Naralasetty 209b2e3b4eSVenkateswara Naralasetty #define HOST_MAX_CHAINS 8 219b2e3b4eSVenkateswara Naralasetty 2299cf7568SVenkateswara Naralasetty enum ath11k_cfr_correlate_event_type { 2399cf7568SVenkateswara Naralasetty ATH11K_CORRELATE_DBR_EVENT, 2499cf7568SVenkateswara Naralasetty ATH11K_CORRELATE_TX_EVENT, 2599cf7568SVenkateswara Naralasetty }; 2699cf7568SVenkateswara Naralasetty 279754d4baSVenkateswara Naralasetty struct ath11k_sta; 289754d4baSVenkateswara Naralasetty struct ath11k_per_peer_cfr_capture; 299754d4baSVenkateswara Naralasetty 30*ca765bedSVenkateswara Naralasetty #define ATH11K_CFR_START_MAGIC 0xDEADBEAF 3199cf7568SVenkateswara Naralasetty #define ATH11K_CFR_END_MAGIC 0xBEAFDEAD 3299cf7568SVenkateswara Naralasetty 33*ca765bedSVenkateswara Naralasetty #define VENDOR_QCA 0x8cfdf0 34*ca765bedSVenkateswara Naralasetty #define PLATFORM_TYPE_ARM 2 35*ca765bedSVenkateswara Naralasetty 36*ca765bedSVenkateswara Naralasetty enum ath11k_cfr_meta_version { 37*ca765bedSVenkateswara Naralasetty ATH11K_CFR_META_VERSION_NONE, 38*ca765bedSVenkateswara Naralasetty ATH11K_CFR_META_VERSION_1, 39*ca765bedSVenkateswara Naralasetty ATH11K_CFR_META_VERSION_2, 40*ca765bedSVenkateswara Naralasetty ATH11K_CFR_META_VERSION_3, 41*ca765bedSVenkateswara Naralasetty ATH11K_CFR_META_VERSION_4, 42*ca765bedSVenkateswara Naralasetty ATH11K_CFR_META_VERSION_MAX = 0xFF, 43*ca765bedSVenkateswara Naralasetty }; 44*ca765bedSVenkateswara Naralasetty 45*ca765bedSVenkateswara Naralasetty enum ath11k_cfr_data_version { 46*ca765bedSVenkateswara Naralasetty ATH11K_CFR_DATA_VERSION_NONE, 47*ca765bedSVenkateswara Naralasetty ATH11K_CFR_DATA_VERSION_1, 48*ca765bedSVenkateswara Naralasetty ATH11K_CFR_DATA_VERSION_MAX = 0xFF, 49*ca765bedSVenkateswara Naralasetty }; 50*ca765bedSVenkateswara Naralasetty 51*ca765bedSVenkateswara Naralasetty enum ath11k_cfr_capture_ack_mode { 52*ca765bedSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_LEGACY_ACK, 53*ca765bedSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_DUP_LEGACY_ACK, 54*ca765bedSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_HT_ACK, 55*ca765bedSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_VHT_ACK, 56*ca765bedSVenkateswara Naralasetty 57*ca765bedSVenkateswara Naralasetty /*Always keep this at last*/ 58*ca765bedSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_INVALID_ACK 59*ca765bedSVenkateswara Naralasetty }; 60*ca765bedSVenkateswara Naralasetty 6199cf7568SVenkateswara Naralasetty enum ath11k_cfr_correlate_status { 6299cf7568SVenkateswara Naralasetty ATH11K_CORRELATE_STATUS_RELEASE, 6399cf7568SVenkateswara Naralasetty ATH11K_CORRELATE_STATUS_HOLD, 6499cf7568SVenkateswara Naralasetty ATH11K_CORRELATE_STATUS_ERR, 6599cf7568SVenkateswara Naralasetty }; 6699cf7568SVenkateswara Naralasetty 6799cf7568SVenkateswara Naralasetty enum ath11k_cfr_preamble_type { 6899cf7568SVenkateswara Naralasetty ATH11K_CFR_PREAMBLE_TYPE_LEGACY, 6999cf7568SVenkateswara Naralasetty ATH11K_CFR_PREAMBLE_TYPE_HT, 7099cf7568SVenkateswara Naralasetty ATH11K_CFR_PREAMBLE_TYPE_VHT, 7199cf7568SVenkateswara Naralasetty }; 7299cf7568SVenkateswara Naralasetty 73*ca765bedSVenkateswara Naralasetty struct ath11k_cfr_peer_tx_param { 74*ca765bedSVenkateswara Naralasetty u32 capture_method; 75*ca765bedSVenkateswara Naralasetty u32 vdev_id; 76*ca765bedSVenkateswara Naralasetty u8 peer_mac_addr[ETH_ALEN]; 77*ca765bedSVenkateswara Naralasetty u32 primary_20mhz_chan; 78*ca765bedSVenkateswara Naralasetty u32 bandwidth; 79*ca765bedSVenkateswara Naralasetty u32 phy_mode; 80*ca765bedSVenkateswara Naralasetty u32 band_center_freq1; 81*ca765bedSVenkateswara Naralasetty u32 band_center_freq2; 82*ca765bedSVenkateswara Naralasetty u32 spatial_streams; 83*ca765bedSVenkateswara Naralasetty u32 correlation_info_1; 84*ca765bedSVenkateswara Naralasetty u32 correlation_info_2; 85*ca765bedSVenkateswara Naralasetty u32 status; 86*ca765bedSVenkateswara Naralasetty u32 timestamp_us; 87*ca765bedSVenkateswara Naralasetty u32 counter; 88*ca765bedSVenkateswara Naralasetty u32 chain_rssi[WMI_MAX_CHAINS]; 89*ca765bedSVenkateswara Naralasetty u16 chain_phase[WMI_MAX_CHAINS]; 90*ca765bedSVenkateswara Naralasetty u32 cfo_measurement; 91*ca765bedSVenkateswara Naralasetty u8 agc_gain[HOST_MAX_CHAINS]; 92*ca765bedSVenkateswara Naralasetty u32 rx_start_ts; 93*ca765bedSVenkateswara Naralasetty }; 94*ca765bedSVenkateswara Naralasetty 9599cf7568SVenkateswara Naralasetty struct cfr_metadata { 9699cf7568SVenkateswara Naralasetty u8 peer_addr[ETH_ALEN]; 9799cf7568SVenkateswara Naralasetty u8 status; 9899cf7568SVenkateswara Naralasetty u8 capture_bw; 9999cf7568SVenkateswara Naralasetty u8 channel_bw; 10099cf7568SVenkateswara Naralasetty u8 phy_mode; 10199cf7568SVenkateswara Naralasetty u16 prim20_chan; 10299cf7568SVenkateswara Naralasetty u16 center_freq1; 10399cf7568SVenkateswara Naralasetty u16 center_freq2; 10499cf7568SVenkateswara Naralasetty u8 capture_mode; 10599cf7568SVenkateswara Naralasetty u8 capture_type; 10699cf7568SVenkateswara Naralasetty u8 sts_count; 10799cf7568SVenkateswara Naralasetty u8 num_rx_chain; 10899cf7568SVenkateswara Naralasetty u32 timestamp; 10999cf7568SVenkateswara Naralasetty u32 length; 11099cf7568SVenkateswara Naralasetty u32 chain_rssi[HOST_MAX_CHAINS]; 11199cf7568SVenkateswara Naralasetty u16 chain_phase[HOST_MAX_CHAINS]; 11299cf7568SVenkateswara Naralasetty u32 cfo_measurement; 11399cf7568SVenkateswara Naralasetty u8 agc_gain[HOST_MAX_CHAINS]; 11499cf7568SVenkateswara Naralasetty u32 rx_start_ts; 11599cf7568SVenkateswara Naralasetty } __packed; 11699cf7568SVenkateswara Naralasetty 11799cf7568SVenkateswara Naralasetty struct ath11k_csi_cfr_header { 11899cf7568SVenkateswara Naralasetty u32 start_magic_num; 11999cf7568SVenkateswara Naralasetty u32 vendorid; 12099cf7568SVenkateswara Naralasetty u8 cfr_metadata_version; 12199cf7568SVenkateswara Naralasetty u8 cfr_data_version; 12299cf7568SVenkateswara Naralasetty u8 chip_type; 12399cf7568SVenkateswara Naralasetty u8 platform_type; 124*ca765bedSVenkateswara Naralasetty u32 cfr_metadata_len; 12599cf7568SVenkateswara Naralasetty struct cfr_metadata meta_data; 12699cf7568SVenkateswara Naralasetty } __packed; 12799cf7568SVenkateswara Naralasetty 12899cf7568SVenkateswara Naralasetty #define TONES_IN_20MHZ 256 12999cf7568SVenkateswara Naralasetty #define TONES_IN_40MHZ 512 13099cf7568SVenkateswara Naralasetty #define TONES_IN_80MHZ 1024 13199cf7568SVenkateswara Naralasetty #define TONES_IN_160MHZ 2048 /* 160 MHz isn't supported yet */ 13299cf7568SVenkateswara Naralasetty #define TONES_INVALID 0 13399cf7568SVenkateswara Naralasetty 13499cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO0_TAG GENMASK(7, 0) 13599cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO0_LEN GENMASK(13, 8) 13699cf7568SVenkateswara Naralasetty 13799cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_UPLOAD_DONE GENMASK(0, 0) 13899cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_CAPTURE_TYPE GENMASK(3, 1) 13999cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_PREAMBLE_TYPE GENMASK(5, 4) 14099cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_NSS GENMASK(8, 6) 14199cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_NUM_CHAINS GENMASK(11, 9) 14299cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_UPLOAD_PKT_BW GENMASK(14, 12) 14399cf7568SVenkateswara Naralasetty #define CFIR_DMA_HDR_INFO1_SW_PEER_ID_VALID GENMASK(15, 15) 14499cf7568SVenkateswara Naralasetty 1459b2e3b4eSVenkateswara Naralasetty struct ath11k_cfr_dma_hdr { 1469b2e3b4eSVenkateswara Naralasetty u16 info0; 1479b2e3b4eSVenkateswara Naralasetty u16 info1; 1489b2e3b4eSVenkateswara Naralasetty u16 sw_peer_id; 1499b2e3b4eSVenkateswara Naralasetty u16 phy_ppdu_id; 1509b2e3b4eSVenkateswara Naralasetty }; 1519b2e3b4eSVenkateswara Naralasetty 1529b2e3b4eSVenkateswara Naralasetty struct ath11k_look_up_table { 1539b2e3b4eSVenkateswara Naralasetty bool dbr_recv; 1549b2e3b4eSVenkateswara Naralasetty bool tx_recv; 1559b2e3b4eSVenkateswara Naralasetty u8 *data; 1569b2e3b4eSVenkateswara Naralasetty u32 data_len; 1579b2e3b4eSVenkateswara Naralasetty u16 dbr_ppdu_id; 1589b2e3b4eSVenkateswara Naralasetty u16 tx_ppdu_id; 1599b2e3b4eSVenkateswara Naralasetty dma_addr_t dbr_address; 16099cf7568SVenkateswara Naralasetty struct ath11k_csi_cfr_header header; 1619b2e3b4eSVenkateswara Naralasetty struct ath11k_cfr_dma_hdr hdr; 1629b2e3b4eSVenkateswara Naralasetty u64 txrx_tstamp; 1639b2e3b4eSVenkateswara Naralasetty u64 dbr_tstamp; 1649b2e3b4eSVenkateswara Naralasetty u32 header_length; 1659b2e3b4eSVenkateswara Naralasetty u32 payload_length; 1669b2e3b4eSVenkateswara Naralasetty struct ath11k_dbring_element *buff; 1679b2e3b4eSVenkateswara Naralasetty }; 1689b2e3b4eSVenkateswara Naralasetty 169b3d43d89SVenkateswara Naralasetty struct cfr_unassoc_pool_entry { 170b3d43d89SVenkateswara Naralasetty u8 peer_mac[ETH_ALEN]; 171b3d43d89SVenkateswara Naralasetty u32 period; 172b3d43d89SVenkateswara Naralasetty bool is_valid; 173b3d43d89SVenkateswara Naralasetty }; 174b3d43d89SVenkateswara Naralasetty 1759b2e3b4eSVenkateswara Naralasetty struct ath11k_cfr { 1769b2e3b4eSVenkateswara Naralasetty struct ath11k_dbring rx_ring; 1779b2e3b4eSVenkateswara Naralasetty /* Protects cfr data */ 1789b2e3b4eSVenkateswara Naralasetty spinlock_t lock; 1799b2e3b4eSVenkateswara Naralasetty /* Protect for lut entries */ 1809b2e3b4eSVenkateswara Naralasetty spinlock_t lut_lock; 1819b2e3b4eSVenkateswara Naralasetty struct ath11k_look_up_table *lut; 1829754d4baSVenkateswara Naralasetty struct dentry *enable_cfr; 183b3d43d89SVenkateswara Naralasetty struct dentry *cfr_unassoc; 184c1bf6959SVenkateswara Naralasetty struct rchan *rfs_cfr_capture; 1859754d4baSVenkateswara Naralasetty u8 cfr_enabled_peer_cnt; 1869b2e3b4eSVenkateswara Naralasetty u32 lut_num; 1879b2e3b4eSVenkateswara Naralasetty u64 tx_evt_cnt; 1889b2e3b4eSVenkateswara Naralasetty u64 dbr_evt_cnt; 1899b2e3b4eSVenkateswara Naralasetty u64 release_cnt; 1909b2e3b4eSVenkateswara Naralasetty u64 tx_peer_status_cfr_fail; 1919b2e3b4eSVenkateswara Naralasetty u64 tx_evt_status_cfr_fail; 1929b2e3b4eSVenkateswara Naralasetty u64 tx_dbr_lookup_fail; 1939b2e3b4eSVenkateswara Naralasetty u64 last_success_tstamp; 1949b2e3b4eSVenkateswara Naralasetty u64 flush_dbr_cnt; 1959b2e3b4eSVenkateswara Naralasetty u64 clear_txrx_event; 1969b2e3b4eSVenkateswara Naralasetty u64 cfr_dma_aborts; 1979b2e3b4eSVenkateswara Naralasetty bool enabled; 198*ca765bedSVenkateswara Naralasetty enum wmi_phy_mode phymode; 199b3d43d89SVenkateswara Naralasetty struct cfr_unassoc_pool_entry unassoc_pool[ATH11K_MAX_CFR_ENABLED_CLIENTS]; 2009b2e3b4eSVenkateswara Naralasetty }; 2019b2e3b4eSVenkateswara Naralasetty 2029754d4baSVenkateswara Naralasetty enum ath11k_cfr_capture_method { 2039754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_METHOD_NULL_FRAME, 2049754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_METHOD_NULL_FRAME_WITH_PHASE, 2059754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_METHOD_PROBE_RESP, 2069754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_METHOD_MAX, 2079754d4baSVenkateswara Naralasetty }; 2089754d4baSVenkateswara Naralasetty 2099754d4baSVenkateswara Naralasetty enum ath11k_cfr_capture_bw { 2109754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_BW_20, 2119754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_BW_40, 2129754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_BW_80, 2139754d4baSVenkateswara Naralasetty ATH11K_CFR_CAPTURE_BW_MAX, 2149754d4baSVenkateswara Naralasetty }; 2159754d4baSVenkateswara Naralasetty 2169b2e3b4eSVenkateswara Naralasetty #ifdef CONFIG_ATH11K_CFR 2179b2e3b4eSVenkateswara Naralasetty int ath11k_cfr_init(struct ath11k_base *ab); 2189b2e3b4eSVenkateswara Naralasetty void ath11k_cfr_deinit(struct ath11k_base *ab); 2199b2e3b4eSVenkateswara Naralasetty void ath11k_cfr_lut_update_paddr(struct ath11k *ar, dma_addr_t paddr, 2209b2e3b4eSVenkateswara Naralasetty u32 buf_id); 2219754d4baSVenkateswara Naralasetty void ath11k_cfr_decrement_peer_count(struct ath11k *ar, 2229754d4baSVenkateswara Naralasetty struct ath11k_sta *arsta); 223b3d43d89SVenkateswara Naralasetty void ath11k_cfr_update_unassoc_pool_entry(struct ath11k *ar, 224b3d43d89SVenkateswara Naralasetty const u8 *peer_mac); 225b3d43d89SVenkateswara Naralasetty bool ath11k_cfr_peer_is_in_cfr_unassoc_pool(struct ath11k *ar, 226b3d43d89SVenkateswara Naralasetty const u8 *peer_mac); 227b3d43d89SVenkateswara Naralasetty void ath11k_cfr_update_unassoc_pool(struct ath11k *ar, 228b3d43d89SVenkateswara Naralasetty struct ath11k_per_peer_cfr_capture *params, 229b3d43d89SVenkateswara Naralasetty u8 *peer_mac); 2309754d4baSVenkateswara Naralasetty int ath11k_cfr_send_peer_cfr_capture_cmd(struct ath11k *ar, 2319754d4baSVenkateswara Naralasetty struct ath11k_sta *arsta, 2329754d4baSVenkateswara Naralasetty struct ath11k_per_peer_cfr_capture *params, 2339754d4baSVenkateswara Naralasetty const u8 *peer_mac); 23499cf7568SVenkateswara Naralasetty struct ath11k_dbring *ath11k_cfr_get_dbring(struct ath11k *ar); 23599cf7568SVenkateswara Naralasetty void ath11k_cfr_release_lut_entry(struct ath11k_look_up_table *lut); 236*ca765bedSVenkateswara Naralasetty int ath11k_process_cfr_capture_event(struct ath11k_base *ab, 237*ca765bedSVenkateswara Naralasetty struct ath11k_cfr_peer_tx_param *params); 238*ca765bedSVenkateswara Naralasetty void ath11k_cfr_update_phymode(struct ath11k *ar, enum wmi_phy_mode phymode); 2399b2e3b4eSVenkateswara Naralasetty #else 240*ca765bedSVenkateswara Naralasetty static inline void ath11k_cfr_update_phymode(struct ath11k *ar, 241*ca765bedSVenkateswara Naralasetty enum wmi_phy_mode phymode) 242*ca765bedSVenkateswara Naralasetty { 243*ca765bedSVenkateswara Naralasetty } 244*ca765bedSVenkateswara Naralasetty 2459b2e3b4eSVenkateswara Naralasetty static inline int ath11k_cfr_init(struct ath11k_base *ab) 2469b2e3b4eSVenkateswara Naralasetty { 2479b2e3b4eSVenkateswara Naralasetty return 0; 2489b2e3b4eSVenkateswara Naralasetty } 2499b2e3b4eSVenkateswara Naralasetty 2509b2e3b4eSVenkateswara Naralasetty static inline void ath11k_cfr_deinit(struct ath11k_base *ab) 2519b2e3b4eSVenkateswara Naralasetty { 2529b2e3b4eSVenkateswara Naralasetty } 2539b2e3b4eSVenkateswara Naralasetty 2549b2e3b4eSVenkateswara Naralasetty static inline void ath11k_cfr_lut_update_paddr(struct ath11k *ar, 2559b2e3b4eSVenkateswara Naralasetty dma_addr_t paddr, u32 buf_id) 2569b2e3b4eSVenkateswara Naralasetty { 2579b2e3b4eSVenkateswara Naralasetty } 2589754d4baSVenkateswara Naralasetty 2599754d4baSVenkateswara Naralasetty static inline void ath11k_cfr_decrement_peer_count(struct ath11k *ar, 2609754d4baSVenkateswara Naralasetty struct ath11k_sta *arsta) 2619754d4baSVenkateswara Naralasetty { 2629754d4baSVenkateswara Naralasetty } 2639754d4baSVenkateswara Naralasetty 264b3d43d89SVenkateswara Naralasetty static inline void ath11k_cfr_update_unassoc_pool_entry(struct ath11k *ar, 265b3d43d89SVenkateswara Naralasetty const u8 *peer_mac) 266b3d43d89SVenkateswara Naralasetty { 267b3d43d89SVenkateswara Naralasetty } 268b3d43d89SVenkateswara Naralasetty 269b3d43d89SVenkateswara Naralasetty static inline bool 270b3d43d89SVenkateswara Naralasetty ath11k_cfr_peer_is_in_cfr_unassoc_pool(struct ath11k *ar, const u8 *peer_mac) 271b3d43d89SVenkateswara Naralasetty { 272b3d43d89SVenkateswara Naralasetty return false; 273b3d43d89SVenkateswara Naralasetty } 274b3d43d89SVenkateswara Naralasetty 275b3d43d89SVenkateswara Naralasetty static inline void 276b3d43d89SVenkateswara Naralasetty ath11k_cfr_update_unassoc_pool(struct ath11k *ar, 277b3d43d89SVenkateswara Naralasetty struct ath11k_per_peer_cfr_capture *params, 278b3d43d89SVenkateswara Naralasetty u8 *peer_mac) 279b3d43d89SVenkateswara Naralasetty { 280b3d43d89SVenkateswara Naralasetty } 281b3d43d89SVenkateswara Naralasetty 2829754d4baSVenkateswara Naralasetty static inline int 2839754d4baSVenkateswara Naralasetty ath11k_cfr_send_peer_cfr_capture_cmd(struct ath11k *ar, 2849754d4baSVenkateswara Naralasetty struct ath11k_sta *arsta, 2859754d4baSVenkateswara Naralasetty struct ath11k_per_peer_cfr_capture *params, 2869754d4baSVenkateswara Naralasetty const u8 *peer_mac) 2879754d4baSVenkateswara Naralasetty { 2889754d4baSVenkateswara Naralasetty return 0; 2899754d4baSVenkateswara Naralasetty } 29099cf7568SVenkateswara Naralasetty 29199cf7568SVenkateswara Naralasetty static inline void ath11k_cfr_release_lut_entry(struct ath11k_look_up_table *lut) 29299cf7568SVenkateswara Naralasetty { 29399cf7568SVenkateswara Naralasetty } 29499cf7568SVenkateswara Naralasetty 29599cf7568SVenkateswara Naralasetty static inline 29699cf7568SVenkateswara Naralasetty struct ath11k_dbring *ath11k_cfr_get_dbring(struct ath11k *ar) 29799cf7568SVenkateswara Naralasetty { 29899cf7568SVenkateswara Naralasetty return NULL; 29999cf7568SVenkateswara Naralasetty } 300*ca765bedSVenkateswara Naralasetty 301*ca765bedSVenkateswara Naralasetty static inline 302*ca765bedSVenkateswara Naralasetty int ath11k_process_cfr_capture_event(struct ath11k_base *ab, 303*ca765bedSVenkateswara Naralasetty struct ath11k_cfr_peer_tx_param *params) 304*ca765bedSVenkateswara Naralasetty { 305*ca765bedSVenkateswara Naralasetty return 0; 306*ca765bedSVenkateswara Naralasetty } 3079b2e3b4eSVenkateswara Naralasetty #endif /* CONFIG_ATH11K_CFR */ 3089b2e3b4eSVenkateswara Naralasetty #endif /* ATH11K_CFR_H */ 309