Browse Source

qcacmn: Update debug info in wbuff_buff_get()

The debug node for all the nbufs allocated by wbuff
for a module contains the file and line info
pertaining to wbuff_module_register().

To enhance debugging, Use qdf_net_buf_debug_update_node()
to update debug info when nbuf is requested through
wbuff_buff_get().

Change-Id: Ie8b148ef6313bd3b265cfa3f141e8d0de8b75597
CRs-Fixed: 2328257
Rakshith Suresh Patkar 6 years ago
parent
commit
5c881ec3ec
3 changed files with 15 additions and 6 deletions
  1. 6 2
      wbuff/inc/wbuff.h
  2. 5 2
      wbuff/src/wbuff.c
  3. 4 2
      wmi/src/wmi_unified.c

+ 6 - 2
wbuff/inc/wbuff.h

@@ -95,11 +95,14 @@ QDF_STATUS wbuff_module_deregister(struct wbuff_mod_handle *hdl);
  * wbuff_buff_get() - return buffer to the requester
  * @handle: wbuff_handle corresponding to the module
  * @len: length of buffer requested
+ * file_name: file from which buffer is requested
+ * line_num: line number in the file
  *
  * Return: Network buffer if success
  *         NULL if failure
  */
-qdf_nbuf_t wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len);
+qdf_nbuf_t wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len,
+			  uint8_t *file_name, uint32_t line_num);
 
 /**
  * wbuff_buff_put() - put the buffer back to wbuff pool
@@ -136,7 +139,8 @@ static inline QDF_STATUS wbuff_module_deregister(struct wbuff_mod_handle *hdl)
 }
 
 static inline qdf_nbuf_t
-wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len)
+wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len, int8_t *file_name,
+	       uint32_t line_num)
 {
 	return NULL;
 }

+ 5 - 2
wbuff/src/wbuff.c

@@ -296,7 +296,8 @@ QDF_STATUS wbuff_module_deregister(struct wbuff_mod_handle *hdl)
 	return QDF_STATUS_SUCCESS;
 }
 
-qdf_nbuf_t wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len)
+qdf_nbuf_t wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len,
+			  uint8_t *file_name, uint32_t line_num)
 {
 	struct wbuff_handle *handle;
 	struct wbuff_module *mod = NULL;
@@ -321,8 +322,10 @@ qdf_nbuf_t wbuff_buff_get(struct wbuff_mod_handle *hdl, uint32_t len)
 		mod->pending_returns++;
 	}
 	qdf_spin_unlock_bh(&mod->lock);
-	if (buf)
+	if (buf) {
 		qdf_nbuf_set_next(buf, NULL);
+		qdf_net_buf_debug_update_node(buf, file_name, line_num);
+	}
 
 	return buf;
 }

+ 4 - 2
wmi/src/wmi_unified.c

@@ -1525,7 +1525,8 @@ wmi_buf_alloc_debug(wmi_unified_t wmi_handle, uint32_t len, uint8_t *file_name,
 		return NULL;
 	}
 
-	wmi_buf = wbuff_buff_get(wmi_handle->wbuff_handle, len);
+	wmi_buf = wbuff_buff_get(wmi_handle->wbuff_handle, len, file_name,
+				 line_num);
 	if (!wmi_buf)
 		wmi_buf = qdf_nbuf_alloc_debug(NULL,
 					       roundup(len + WMI_MIN_HEAD_ROOM,
@@ -1567,7 +1568,8 @@ wmi_buf_t wmi_buf_alloc_fl(wmi_unified_t wmi_handle, uint32_t len,
 		return NULL;
 	}
 
-	wmi_buf = wbuff_buff_get(wmi_handle->wbuff_handle, len);
+	wmi_buf = wbuff_buff_get(wmi_handle->wbuff_handle, len, __FILE__,
+				 __LINE__);
 	if (!wmi_buf)
 		wmi_buf = qdf_nbuf_alloc_fl(NULL, roundup(len +
 				WMI_MIN_HEAD_ROOM, 4), WMI_MIN_HEAD_ROOM, 4,