
The kernel-doc script identified a large number of documentation issues in the QDF. A series of patches has already fixed many of the issues, so fix most of the remaining ones. Note that the QDF IPA abstraction still has issues, but it is under rework, so not trying to clean it up until after the rework is complete. Change-Id: I10c33e341cb6b46e0f8ada99069616d450c07189 CRs-Fixed: 3406197
134 baris
4.0 KiB
C
134 baris
4.0 KiB
C
/*
|
|
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. 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 above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
|
|
/**
|
|
* DOC: qdf_hang_event_notifier
|
|
* This file provides OS dependent QDF notifier call for hang event
|
|
*/
|
|
|
|
#ifndef QDF_HANG_EVENT_NOTIFIER_H
|
|
#define QDF_HANG_EVENT_NOTIFIER_H
|
|
|
|
#include <qdf_notifier.h>
|
|
|
|
#define QDF_HANG_EVENT_VERSION "1"
|
|
/* Max hang event buffer size */
|
|
#define QDF_HANG_EVENT_DATA_SIZE 390
|
|
/* Max offset which host can write */
|
|
#define QDF_WLAN_MAX_HOST_OFFSET 194
|
|
/* Start of the Firmware Data offset */
|
|
#define QDF_WLAN_HANG_FW_OFFSET 195
|
|
|
|
/**
|
|
* enum hang_event_tag - Hang event tag for various modules
|
|
* @HANG_EVT_TAG_CDS: CDS module hang event tag
|
|
* @HANG_EVT_TAG_OS_IF: OS interface module hang event tag
|
|
* @HANG_EVT_TAG_OS_IF_SCAN: scan module hang event tag
|
|
* @HANG_EVT_TAG_LEGACY_MAC: Legacy mac module hang event tag
|
|
* @HANG_EVT_TAG_WMI_EVT_HIST: WMI event history hang event tag
|
|
* @HANG_EVT_TAG_WMI_CMD_HIST: WMI command history hang event tag
|
|
* @HANG_EVT_TAG_HTC_CREDIT_HIST: HTC credit history hang event tag
|
|
* @HANG_EVT_TAG_DP_PEER_INFO: DP peer info hang event tag
|
|
* @HANG_EVT_TAG_CE_INFO: Copy Engine hang event tag
|
|
* @HANG_EVT_TAG_BUS_INFO: Bus hang event tag
|
|
*/
|
|
enum hang_event_tag {
|
|
HANG_EVT_TAG_CDS,
|
|
HANG_EVT_TAG_OS_IF,
|
|
HANG_EVT_TAG_OS_IF_SCAN,
|
|
HANG_EVT_TAG_LEGACY_MAC,
|
|
HANG_EVT_TAG_WMI_EVT_HIST,
|
|
HANG_EVT_TAG_WMI_CMD_HIST,
|
|
HANG_EVT_TAG_HTC_CREDIT_HIST,
|
|
HANG_EVT_TAG_DP_PEER_INFO,
|
|
HANG_EVT_TAG_CE_INFO,
|
|
HANG_EVT_TAG_BUS_INFO
|
|
};
|
|
|
|
#define QDF_HANG_EVENT_TLV_HDR_SIZE (sizeof(uint16_t))
|
|
|
|
#define QDF_HANG_EVT_SET_HDR(tlv_buf, tag, len) \
|
|
(((uint16_t *)(tlv_buf))[0]) = (((tag) << 8) | ((len) & 0x000000FF))
|
|
|
|
#define QDF_HANG_GET_STRUCT_TLVLEN(tlv_struct) \
|
|
((uint16_t)(sizeof(tlv_struct) - QDF_HANG_EVENT_TLV_HDR_SIZE))
|
|
|
|
/**
|
|
* struct qdf_notifer_data - Private data for notifier data
|
|
* @hang_data: Data filled by notifier
|
|
* @offset: Current offset of the hang data buffer
|
|
*/
|
|
struct qdf_notifer_data {
|
|
uint8_t *hang_data;
|
|
unsigned int offset;
|
|
};
|
|
|
|
#ifdef WLAN_HANG_EVENT
|
|
/**
|
|
* qdf_hang_event_register_notifier() - Hang data notifier register
|
|
* @nb: Notifier block
|
|
*
|
|
* This function registers notifier block for the hang data notifier chain
|
|
* the registered function will be invoked when the hang data notifier call
|
|
* is invoked.
|
|
*
|
|
* Return: QDF_STATUS
|
|
*/
|
|
QDF_STATUS qdf_hang_event_register_notifier(qdf_notif_block *nb);
|
|
|
|
/**
|
|
* qdf_hang_event_unregister_notifier() - Hang data notifier unregister
|
|
* @nb: Notifier block
|
|
*
|
|
* This function unregisters notifier block for the hang data notifier chain.
|
|
*
|
|
* Return: QDF_STATUS
|
|
*/
|
|
QDF_STATUS qdf_hang_event_unregister_notifier(qdf_notif_block *nb);
|
|
|
|
/**
|
|
* qdf_hang_event_notifier_call() - Hang data notifier register
|
|
* @v: state
|
|
* @data: Private data for this notifier chain
|
|
*
|
|
* This function when invoked will call the functions registered with this
|
|
* notifier chain.
|
|
*
|
|
* Return: QDF_STATUS
|
|
*/
|
|
QDF_STATUS qdf_hang_event_notifier_call(unsigned long v, void *data);
|
|
#else
|
|
static inline
|
|
QDF_STATUS qdf_hang_event_register_notifier(qdf_notif_block *nb)
|
|
{
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
|
|
static inline
|
|
QDF_STATUS qdf_hang_event_unregister_notifier(qdf_notif_block *nb)
|
|
{
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
|
|
static inline
|
|
QDF_STATUS qdf_hang_event_notifier_call(unsigned long v, void *data)
|
|
{
|
|
return QDF_STATUS_SUCCESS;
|
|
}
|
|
#endif
|
|
#endif
|