Merge "qcacmn: Add logs in qdf_nbuf_alloc()"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

커밋
a62d430e01
@@ -741,6 +741,8 @@ void qdf_nbuf_unmap_nbytes_single_debug(qdf_device_t osdev,
|
||||
|
||||
#else /* NBUF_MEMORY_DEBUG */
|
||||
|
||||
static inline void qdf_nbuf_map_check_for_leaks(void) {}
|
||||
|
||||
static inline QDF_STATUS
|
||||
qdf_nbuf_map(qdf_device_t osdev, qdf_nbuf_t buf, qdf_dma_dir_t dir)
|
||||
{
|
||||
@@ -1321,11 +1323,14 @@ static inline void qdf_net_buf_debug_release_skb(qdf_nbuf_t net_buf)
|
||||
|
||||
/* Nbuf allocation rouines */
|
||||
|
||||
#define qdf_nbuf_alloc(osdev, size, reserve, align, prio) \
|
||||
qdf_nbuf_alloc_fl(osdev, size, reserve, align, prio, \
|
||||
__func__, __LINE__)
|
||||
static inline qdf_nbuf_t
|
||||
qdf_nbuf_alloc(qdf_device_t osdev,
|
||||
qdf_size_t size, int reserve, int align, int prio)
|
||||
qdf_nbuf_alloc_fl(qdf_device_t osdev, qdf_size_t size, int reserve, int align,
|
||||
int prio, const char *func, uint32_t line)
|
||||
{
|
||||
return __qdf_nbuf_alloc(osdev, size, reserve, align, prio);
|
||||
return __qdf_nbuf_alloc(osdev, size, reserve, align, prio, func, line);
|
||||
}
|
||||
|
||||
static inline void qdf_nbuf_free(qdf_nbuf_t buf)
|
||||
|
@@ -637,6 +637,23 @@ void qdf_vtrace_msg(QDF_MODULE_ID module, QDF_TRACE_LEVEL level,
|
||||
#define qdf_nofl_debug(params...) \
|
||||
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_QDF, ## params)
|
||||
|
||||
#define qdf_rl_alert(params...) QDF_TRACE_FATAL_RL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_err(params...) QDF_TRACE_ERROR_RL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_warn(params...) QDF_TRACE_WARN_RL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_info(params...) QDF_TRACE_INFO_RL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_debug(params...) QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_QDF, ## params)
|
||||
|
||||
#define qdf_rl_nofl_alert(params...) \
|
||||
QDF_TRACE_FATAL_RL_NO_FL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_nofl_err(params...) \
|
||||
QDF_TRACE_ERROR_RL_NO_FL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_nofl_warn(params...) \
|
||||
QDF_TRACE_WARN_RL_NO_FL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_nofl_info(params...) \
|
||||
QDF_TRACE_INFO_RL_NO_FL(QDF_MODULE_ID_QDF, ## params)
|
||||
#define qdf_rl_nofl_debug(params...) \
|
||||
QDF_TRACE_DEBUG_RL_NO_FL(QDF_MODULE_ID_QDF, ## params)
|
||||
|
||||
#define qdf_vprint __qdf_vprint
|
||||
#define qdf_snprint __qdf_snprint
|
||||
|
||||
|
@@ -596,8 +596,27 @@ void __qdf_nbuf_num_frags_init(struct sk_buff *skb)
|
||||
/*
|
||||
* prototypes. Implemented in qdf_nbuf.c
|
||||
*/
|
||||
__qdf_nbuf_t __qdf_nbuf_alloc(__qdf_device_t osdev, size_t size, int reserve,
|
||||
int align, int prio);
|
||||
|
||||
/**
|
||||
* __qdf_nbuf_alloc() - Allocate nbuf
|
||||
* @osdev: Device handle
|
||||
* @size: Netbuf requested size
|
||||
* @reserve: headroom to start with
|
||||
* @align: Align
|
||||
* @prio: Priority
|
||||
* @func: Function name of the call site
|
||||
* @line: line number of the call site
|
||||
*
|
||||
* This allocates an nbuf aligns if needed and reserves some space in the front,
|
||||
* since the reserve is done after alignment the reserve value if being
|
||||
* unaligned will result in an unaligned address.
|
||||
*
|
||||
* Return: nbuf or %NULL if no memory
|
||||
*/
|
||||
__qdf_nbuf_t
|
||||
__qdf_nbuf_alloc(__qdf_device_t osdev, size_t size, int reserve, int align,
|
||||
int prio, const char *func, uint32_t line);
|
||||
|
||||
void __qdf_nbuf_free(struct sk_buff *skb);
|
||||
QDF_STATUS __qdf_nbuf_map(__qdf_device_t osdev,
|
||||
struct sk_buff *skb, qdf_dma_dir_t dir);
|
||||
|
@@ -106,6 +106,9 @@
|
||||
#define __QDF_TRACE_RL(log_level, module_id, format, args...) \
|
||||
__QDF_TRACE_RATE_LIMITED(module_id, log_level, FL(format), ## args)
|
||||
|
||||
#define __QDF_TRACE_RL_NO_FL(log_level, module_id, format, args...) \
|
||||
__QDF_TRACE_RATE_LIMITED(module_id, log_level, format, ## args)
|
||||
|
||||
static inline void __qdf_trace_noop(QDF_MODULE_ID module, char *format, ...) { }
|
||||
|
||||
#ifdef WLAN_LOG_FATAL
|
||||
@@ -115,10 +118,13 @@ static inline void __qdf_trace_noop(QDF_MODULE_ID module, char *format, ...) { }
|
||||
__QDF_TRACE_NO_FL(QDF_TRACE_LEVEL_FATAL, ## params)
|
||||
#define QDF_TRACE_FATAL_RL(params...) \
|
||||
__QDF_TRACE_RL(QDF_TRACE_LEVEL_FATAL, ## params)
|
||||
#define QDF_TRACE_FATAL_RL_NO_FL(params...) \
|
||||
__QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_FATAL, ## params)
|
||||
#else
|
||||
#define QDF_TRACE_FATAL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_FATAL_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_FATAL_RL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_FATAL_RL_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_LOG_ERROR
|
||||
@@ -128,10 +134,13 @@ static inline void __qdf_trace_noop(QDF_MODULE_ID module, char *format, ...) { }
|
||||
__QDF_TRACE_NO_FL(QDF_TRACE_LEVEL_ERROR, ## params)
|
||||
#define QDF_TRACE_ERROR_RL(params...) \
|
||||
__QDF_TRACE_RL(QDF_TRACE_LEVEL_ERROR, ## params)
|
||||
#define QDF_TRACE_ERROR_RL_NO_FL(params...) \
|
||||
__QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_ERROR, ## params)
|
||||
#else
|
||||
#define QDF_TRACE_ERROR(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_ERROR_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_ERROR_RL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_ERROR_RL_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_LOG_WARN
|
||||
@@ -141,10 +150,13 @@ static inline void __qdf_trace_noop(QDF_MODULE_ID module, char *format, ...) { }
|
||||
__QDF_TRACE_NO_FL(QDF_TRACE_LEVEL_WARN, ## params)
|
||||
#define QDF_TRACE_WARN_RL(params...) \
|
||||
__QDF_TRACE_RL(QDF_TRACE_LEVEL_WARN, ## params)
|
||||
#define QDF_TRACE_WARN_RL_NO_FL(params...) \
|
||||
__QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_WARN, ## params)
|
||||
#else
|
||||
#define QDF_TRACE_WARN(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_WARN_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_WARN_RL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_WARN_RL_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_LOG_INFO
|
||||
@@ -154,10 +166,13 @@ static inline void __qdf_trace_noop(QDF_MODULE_ID module, char *format, ...) { }
|
||||
__QDF_TRACE_NO_FL(QDF_TRACE_LEVEL_INFO, ## params)
|
||||
#define QDF_TRACE_INFO_RL(params...) \
|
||||
__QDF_TRACE_RL(QDF_TRACE_LEVEL_INFO, ## params)
|
||||
#define QDF_TRACE_INFO_RL_NO_FL(params...) \
|
||||
__QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_INFO, ## params)
|
||||
#else
|
||||
#define QDF_TRACE_INFO(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_INFO_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_INFO_RL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_INFO_RL_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_LOG_DEBUG
|
||||
@@ -167,10 +182,13 @@ static inline void __qdf_trace_noop(QDF_MODULE_ID module, char *format, ...) { }
|
||||
__QDF_TRACE_NO_FL(QDF_TRACE_LEVEL_DEBUG, ## params)
|
||||
#define QDF_TRACE_DEBUG_RL(params...) \
|
||||
__QDF_TRACE_RL(QDF_TRACE_LEVEL_DEBUG, ## params)
|
||||
#define QDF_TRACE_DEBUG_RL_NO_FL(params...) \
|
||||
__QDF_TRACE_RL_NO_FL(QDF_TRACE_LEVEL_DEBUG, ## params)
|
||||
#else
|
||||
#define QDF_TRACE_DEBUG(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_DEBUG_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_DEBUG_RL(params...) __qdf_trace_noop(params)
|
||||
#define QDF_TRACE_DEBUG_RL_NO_FL(params...) __qdf_trace_noop(params)
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_LOG_ENTER
|
||||
|
@@ -354,24 +354,10 @@ void __qdf_nbuf_count_dec(__qdf_nbuf_t nbuf)
|
||||
qdf_export_symbol(__qdf_nbuf_count_dec);
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* __qdf_nbuf_alloc() - Allocate nbuf
|
||||
* @hdl: Device handle
|
||||
* @size: Netbuf requested size
|
||||
* @reserve: headroom to start with
|
||||
* @align: Align
|
||||
* @prio: Priority
|
||||
*
|
||||
* This allocates an nbuf aligns if needed and reserves some space in the front,
|
||||
* since the reserve is done after alignment the reserve value if being
|
||||
* unaligned will result in an unaligned address.
|
||||
*
|
||||
* Return: nbuf or %NULL if no memory
|
||||
*/
|
||||
#if defined(QCA_WIFI_QCA8074) && defined (BUILD_X86)
|
||||
struct sk_buff *__qdf_nbuf_alloc(qdf_device_t osdev, size_t size, int reserve,
|
||||
int align, int prio)
|
||||
int align, int prio, const char *func,
|
||||
uint32_t line)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
unsigned long offset;
|
||||
@@ -389,7 +375,8 @@ realloc:
|
||||
skb = pld_nbuf_pre_alloc(size);
|
||||
|
||||
if (!skb) {
|
||||
pr_info("ERROR:NBUF alloc failed\n");
|
||||
qdf_nofl_err("NBUF alloc failed %zuB @ %s:%d",
|
||||
size, func, line);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -401,7 +388,8 @@ skb_alloc:
|
||||
if (virt_to_phys(qdf_nbuf_data(skb)) < 0x50000040) {
|
||||
lowmem_alloc_tries++;
|
||||
if (lowmem_alloc_tries > 100) {
|
||||
qdf_err("Failed");
|
||||
qdf_nofl_err("NBUF alloc failed %zuB @ %s:%d",
|
||||
size, func, line);
|
||||
return NULL;
|
||||
} else {
|
||||
/* Not freeing to make sure it
|
||||
@@ -441,7 +429,8 @@ skb_alloc:
|
||||
}
|
||||
#else
|
||||
struct sk_buff *__qdf_nbuf_alloc(qdf_device_t osdev, size_t size, int reserve,
|
||||
int align, int prio)
|
||||
int align, int prio, const char *func,
|
||||
uint32_t line)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
unsigned long offset;
|
||||
@@ -471,8 +460,8 @@ struct sk_buff *__qdf_nbuf_alloc(qdf_device_t osdev, size_t size, int reserve,
|
||||
skb = pld_nbuf_pre_alloc(size);
|
||||
|
||||
if (!skb) {
|
||||
pr_err_ratelimited("ERROR:NBUF alloc failed, size = %zu\n",
|
||||
size);
|
||||
qdf_rl_nofl_err("NBUF alloc failed %zuB @ %s:%d",
|
||||
size, func, line);
|
||||
__qdf_nbuf_start_replenish_timer();
|
||||
return NULL;
|
||||
} else {
|
||||
@@ -2619,7 +2608,7 @@ qdf_nbuf_t qdf_nbuf_alloc_debug(qdf_device_t osdev, qdf_size_t size,
|
||||
{
|
||||
qdf_nbuf_t nbuf;
|
||||
|
||||
nbuf = __qdf_nbuf_alloc(osdev, size, reserve, align, prio);
|
||||
nbuf = __qdf_nbuf_alloc(osdev, size, reserve, align, prio, file, line);
|
||||
|
||||
/* Store SKB in internal QDF tracking table */
|
||||
if (qdf_likely(nbuf)) {
|
||||
|
@@ -201,7 +201,18 @@ wmi_buf_t
|
||||
wmi_buf_alloc_debug(wmi_unified_t wmi_handle, uint32_t len,
|
||||
uint8_t *file_name, uint32_t line_num);
|
||||
#else
|
||||
wmi_buf_t wmi_buf_alloc(wmi_unified_t wmi_handle, uint32_t len);
|
||||
/**
|
||||
* wmi_buf_alloc() - generic function to allocate WMI buffer
|
||||
* @wmi_handle: handle to WMI.
|
||||
* @len: length of the buffer
|
||||
*
|
||||
* Return: return wmi_buf_t or null if memory alloc fails
|
||||
*/
|
||||
#define wmi_buf_alloc(wmi_handle, len) \
|
||||
wmi_buf_alloc_fl(wmi_handle, len, __func__, __LINE__)
|
||||
|
||||
wmi_buf_t wmi_buf_alloc_fl(wmi_unified_t wmi_handle, uint32_t len,
|
||||
const char *func, uint32_t line);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -66,6 +66,23 @@
|
||||
#define WMI_MGMT_EVENT_DEBUG_MAX_ENTRY (256)
|
||||
#endif
|
||||
|
||||
#define wmi_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_WMI, ## params)
|
||||
|
||||
#define wmi_nofl_alert(params...) \
|
||||
QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_nofl_err(params...) \
|
||||
QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_nofl_warn(params...) \
|
||||
QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_nofl_info(params...) \
|
||||
QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_WMI, ## params)
|
||||
#define wmi_nofl_debug(params...) \
|
||||
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_WMI, ## params)
|
||||
|
||||
/**
|
||||
* struct wmi_command_debug - WMI command log buffer data type
|
||||
* @ command - Store WMI Command id
|
||||
|
@@ -1220,17 +1220,19 @@ void wmi_buf_free(wmi_buf_t net_buf)
|
||||
}
|
||||
qdf_export_symbol(wmi_buf_free);
|
||||
#else
|
||||
wmi_buf_t wmi_buf_alloc(wmi_unified_t wmi_handle, uint32_t len)
|
||||
wmi_buf_t wmi_buf_alloc_fl(wmi_unified_t wmi_handle, uint32_t len,
|
||||
const char *func, uint32_t line)
|
||||
{
|
||||
wmi_buf_t wmi_buf;
|
||||
|
||||
if (roundup(len + WMI_MIN_HEAD_ROOM, 4) > wmi_handle->max_msg_len) {
|
||||
QDF_ASSERT(0);
|
||||
wmi_nofl_err("%s:%d, Invalid len:%d", func, line, len);
|
||||
QDF_DEBUG_PANIC();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
wmi_buf = qdf_nbuf_alloc(NULL, roundup(len + WMI_MIN_HEAD_ROOM, 4),
|
||||
WMI_MIN_HEAD_ROOM, 4, false);
|
||||
wmi_buf = qdf_nbuf_alloc_fl(NULL, roundup(len + WMI_MIN_HEAD_ROOM, 4),
|
||||
WMI_MIN_HEAD_ROOM, 4, false, func, line);
|
||||
if (!wmi_buf)
|
||||
return NULL;
|
||||
|
||||
@@ -1243,7 +1245,7 @@ wmi_buf_t wmi_buf_alloc(wmi_unified_t wmi_handle, uint32_t len)
|
||||
qdf_nbuf_set_pktlen(wmi_buf, len);
|
||||
return wmi_buf;
|
||||
}
|
||||
qdf_export_symbol(wmi_buf_alloc);
|
||||
qdf_export_symbol(wmi_buf_alloc_fl);
|
||||
|
||||
void wmi_buf_free(wmi_buf_t net_buf)
|
||||
{
|
||||
|
Reference in New Issue
Block a user