Revert "Revert "qcacld-3.0: Dump Tx/Rx packets during connection""
This reverts Change-Id I2aec7253511d2ca7b08ca77d858a46f9c01d4e9d
Adding support for dumping 32 tx/rx packets during connection
by reverting above change as "exceeding skb buffer size and
leading to crash" issue is resolved with this change.
Change-Id: I951355776461706bb52eeee0527819377e7b7857
CRs-Fixed: 1097280
diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c
index d3bf3c3..317cb24 100644
--- a/core/wma/src/wma_mgmt.c
+++ b/core/wma/src/wma_mgmt.c
@@ -2508,6 +2508,11 @@
if (wmi_desc->nbuf)
qdf_nbuf_unmap_single(wma_handle->qdf_dev, wmi_desc->nbuf,
QDF_DMA_TO_DEVICE);
+
+ if (wma_handle->wma_mgmt_tx_packetdump_cb)
+ wma_handle->wma_mgmt_tx_packetdump_cb(wmi_desc->nbuf,
+ QDF_STATUS_SUCCESS, wmi_desc->vdev_id, TX_MGMT_PKT);
+
if (wmi_desc->tx_cmpl_cb)
wmi_desc->tx_cmpl_cb(wma_handle->mac_context,
wmi_desc->nbuf, 1);
@@ -3323,6 +3328,13 @@
return -EINVAL;
}
+ if ((mgt_type == IEEE80211_FC0_TYPE_MGT &&
+ mgt_subtype != IEEE80211_FC0_SUBTYPE_BEACON) &&
+ wma_handle->wma_mgmt_rx_packetdump_cb)
+ wma_handle->wma_mgmt_rx_packetdump_cb(rx_pkt->pkt_buf,
+ QDF_STATUS_SUCCESS, rx_pkt->pkt_meta.sessionId,
+ RX_MGMT_PKT);
+
wma_handle->mgmt_rx(wma_handle, rx_pkt);
return 0;
}
@@ -3420,3 +3432,51 @@
return QDF_STATUS_SUCCESS;
}
+
+/**
+ * wma_register_packetdump_callback() - stores tx and rx mgmt packet dump
+ * callback handler
+ * @wma_mgmt_tx_packetdump_cb: tx mgmt packetdump cb
+ * @wma_mgmt_rx_packetdump_cb: rx mgmt packetdump cb
+ *
+ * This function is used to store tx and rx mgmt. packet dump callback
+ *
+ * Return: None
+ *
+ */
+void wma_register_packetdump_callback(
+ tp_wma_packetdump_cb wma_mgmt_tx_packetdump_cb,
+ tp_wma_packetdump_cb wma_mgmt_rx_packetdump_cb)
+{
+ tp_wma_handle wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+
+ if (!wma_handle) {
+ WMA_LOGE("wma handle is NULL");
+ return;
+ }
+
+ wma_handle->wma_mgmt_tx_packetdump_cb = wma_mgmt_tx_packetdump_cb;
+ wma_handle->wma_mgmt_rx_packetdump_cb = wma_mgmt_rx_packetdump_cb;
+}
+
+/**
+ * wma_deregister_packetdump_callback() - removes tx and rx mgmt packet dump
+ * callback handler
+ *
+ * This function is used to remove tx and rx mgmt. packet dump callback
+ *
+ * Return: None
+ *
+ */
+void wma_deregister_packetdump_callback(void)
+{
+ tp_wma_handle wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+
+ if (!wma_handle) {
+ WMA_LOGE("wma handle is NULL");
+ return;
+ }
+
+ wma_handle->wma_mgmt_tx_packetdump_cb = NULL;
+ wma_handle->wma_mgmt_rx_packetdump_cb = NULL;
+}