mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
Add handler for WMI_PDEV_DMA_RING_BUF_RELEASE_EVENT which indicates CFR data availability in the DB ring. Add CFR data processing from DB ring buffers. Use correlate_and_relay API to match CFR data with metadata from WMI_PEER_CFR_CAPTURE_EVENT. Release buffer to userspace through relayfs on successful correlation, otherwise hold buffer waiting for matching WMI event from firmware. Add new debug masks: - ATH11K_DBG_CFR: Enables CFR-related debug logs. - ATH11K_DBG_CFR_DUMP: Enables detailed CFR data dump for analysis. Tested-on: IPQ8074 hw2.0 PCI IPQ8074 WLAN.HK.2.5.0.1-00991-QCAHKSWPL_SILICONZ-1 Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-04685-QCAHSPSWPL_V1_V2_SILICONZ_IOE-1 Signed-off-by: Venkateswara Naralasetty <quic_vnaralas@quicinc.com> Co-developed-by: Yu Zhang (Yuriy) <yu.zhang@oss.qualcomm.com> Signed-off-by: Yu Zhang (Yuriy) <yu.zhang@oss.qualcomm.com> Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com> Reviewed-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com> Signed-off-by: Qian Zhang <qian.zhang@oss.qualcomm.com> Link: https://patch.msgid.link/20251230082520.3401007-6-qian.zhang@oss.qualcomm.com Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
120 lines
3.0 KiB
C
120 lines
3.0 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause-Clear */
|
|
/*
|
|
* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
|
|
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
|
|
*/
|
|
|
|
#ifndef _ATH11K_DEBUG_H_
|
|
#define _ATH11K_DEBUG_H_
|
|
|
|
#include "trace.h"
|
|
#include "debugfs.h"
|
|
|
|
enum ath11k_debug_mask {
|
|
ATH11K_DBG_AHB = 0x00000001,
|
|
ATH11K_DBG_WMI = 0x00000002,
|
|
ATH11K_DBG_HTC = 0x00000004,
|
|
ATH11K_DBG_DP_HTT = 0x00000008,
|
|
ATH11K_DBG_MAC = 0x00000010,
|
|
ATH11K_DBG_BOOT = 0x00000020,
|
|
ATH11K_DBG_QMI = 0x00000040,
|
|
ATH11K_DBG_DATA = 0x00000080,
|
|
ATH11K_DBG_MGMT = 0x00000100,
|
|
ATH11K_DBG_REG = 0x00000200,
|
|
ATH11K_DBG_TESTMODE = 0x00000400,
|
|
ATH11K_DBG_HAL = 0x00000800,
|
|
ATH11K_DBG_PCI = 0x00001000,
|
|
ATH11K_DBG_DP_TX = 0x00002000,
|
|
ATH11K_DBG_DP_RX = 0x00004000,
|
|
ATH11K_DBG_CE = 0x00008000,
|
|
ATH11K_DBG_CFR = 0x00010000,
|
|
ATH11K_DBG_CFR_DUMP = 0x00020000,
|
|
};
|
|
|
|
static inline const char *ath11k_dbg_str(enum ath11k_debug_mask mask)
|
|
{
|
|
switch (mask) {
|
|
case ATH11K_DBG_AHB:
|
|
return "ahb";
|
|
case ATH11K_DBG_WMI:
|
|
return "wmi";
|
|
case ATH11K_DBG_HTC:
|
|
return "htc";
|
|
case ATH11K_DBG_DP_HTT:
|
|
return "dp_htt";
|
|
case ATH11K_DBG_MAC:
|
|
return "mac";
|
|
case ATH11K_DBG_BOOT:
|
|
return "boot";
|
|
case ATH11K_DBG_QMI:
|
|
return "qmi";
|
|
case ATH11K_DBG_DATA:
|
|
return "data";
|
|
case ATH11K_DBG_MGMT:
|
|
return "mgmt";
|
|
case ATH11K_DBG_REG:
|
|
return "reg";
|
|
case ATH11K_DBG_TESTMODE:
|
|
return "testmode";
|
|
case ATH11K_DBG_HAL:
|
|
return "hal";
|
|
case ATH11K_DBG_PCI:
|
|
return "pci";
|
|
case ATH11K_DBG_DP_TX:
|
|
return "dp_tx";
|
|
case ATH11K_DBG_DP_RX:
|
|
return "dp_rx";
|
|
case ATH11K_DBG_CE:
|
|
return "ce";
|
|
case ATH11K_DBG_CFR:
|
|
return "cfr";
|
|
case ATH11K_DBG_CFR_DUMP:
|
|
return "cfr_dump";
|
|
|
|
/* no default handler to allow compiler to check that the
|
|
* enum is fully handled
|
|
*/
|
|
}
|
|
|
|
return "<?>";
|
|
}
|
|
|
|
__printf(2, 3) void ath11k_info(struct ath11k_base *ab, const char *fmt, ...);
|
|
__printf(2, 3) void ath11k_err(struct ath11k_base *ab, const char *fmt, ...);
|
|
__printf(2, 3) void ath11k_warn(struct ath11k_base *ab, const char *fmt, ...);
|
|
|
|
extern unsigned int ath11k_debug_mask;
|
|
|
|
#ifdef CONFIG_ATH11K_DEBUG
|
|
__printf(3, 4) void __ath11k_dbg(struct ath11k_base *ab,
|
|
enum ath11k_debug_mask mask,
|
|
const char *fmt, ...);
|
|
void ath11k_dbg_dump(struct ath11k_base *ab,
|
|
enum ath11k_debug_mask mask,
|
|
const char *msg, const char *prefix,
|
|
const void *buf, size_t len);
|
|
#else /* CONFIG_ATH11K_DEBUG */
|
|
static inline int __ath11k_dbg(struct ath11k_base *ab,
|
|
enum ath11k_debug_mask dbg_mask,
|
|
const char *fmt, ...)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline void ath11k_dbg_dump(struct ath11k_base *ab,
|
|
enum ath11k_debug_mask mask,
|
|
const char *msg, const char *prefix,
|
|
const void *buf, size_t len)
|
|
{
|
|
}
|
|
#endif /* CONFIG_ATH11K_DEBUG */
|
|
|
|
#define ath11k_dbg(ar, dbg_mask, fmt, ...) \
|
|
do { \
|
|
if ((ath11k_debug_mask & dbg_mask) || \
|
|
trace_ath11k_log_dbg_enabled()) \
|
|
__ath11k_dbg(ar, dbg_mask, fmt, ##__VA_ARGS__); \
|
|
} while (0)
|
|
|
|
#endif /* _ATH11K_DEBUG_H_ */
|