Kaynağa Gözat

qcacmn: Add nbuf debug version for qdf_nbuf_unshare API

skb_unshare may create copy and return different skb. If skb_unshare
returns different skb, remove debug node for the original skb and add
new debug node for the returned skb.

Change-Id: Ib511cde241ea7a44bd726912c225452722d953a7
CRs-Fixed: 2260467
Kiran Venkatappa 6 yıl önce
ebeveyn
işleme
6dfc2c26ec
1 değiştirilmiş dosya ile 23 ekleme ve 0 silme
  1. 23 0
      qdf/inc/qdf_nbuf.h

+ 23 - 0
qdf/inc/qdf_nbuf.h

@@ -2734,11 +2734,34 @@ qdf_nbuf_linearize(qdf_nbuf_t buf)
 	return __qdf_nbuf_linearize(buf);
 }
 
+#ifdef NBUF_MEMORY_DEBUG
+#define qdf_nbuf_unshare(d) \
+	qdf_nbuf_unshare_debug(d, __FILE__, __LINE__)
+
+static inline qdf_nbuf_t
+qdf_nbuf_unshare_debug(qdf_nbuf_t buf, uint8_t *file_name, uint32_t line_num)
+{
+	qdf_nbuf_t unshared_buf;
+
+	unshared_buf = __qdf_nbuf_unshare(buf);
+
+	if (qdf_likely(buf != unshared_buf)) {
+		qdf_net_buf_debug_delete_node(buf);
+
+		qdf_net_buf_debug_add_node(unshared_buf, 0,
+					   file_name, line_num);
+	}
+
+	return unshared_buf;
+}
+
+#else
 static inline qdf_nbuf_t
 qdf_nbuf_unshare(qdf_nbuf_t buf)
 {
 	return __qdf_nbuf_unshare(buf);
 }
+#endif
 
 static inline bool
 qdf_nbuf_is_cloned(qdf_nbuf_t buf)