summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoddar, Siddarth <siddpodd@codeaurora.org>2017-12-14 18:11:28 +0530
committersnandini <snandini@codeaurora.org>2017-12-18 18:37:45 -0800
commitae0cb17070a964016fbf030a0d0f7b2babe58c69 (patch)
tree09ddbe59178c354e571083d539a46198671179ee
parenta5067cb670fe7d555bfd7174b543fd48e07133b6 (diff)
qcacld-3.0: Do not log pktlog event when monitor mode is ON
In case of Monitor mode, headroom of skb, which originally contains rx_desc data, is overwritten by radio tap header. Host pulls skb data by radio tap header and the same skb is passed on to packet log function which expects payload to point to skb-> data and end up in wrong access. Moreover, pktlog is meant to log rx_desc information which is already overwritten by radio header and hence pkt logging is of no use in this case. CRs-Fixed: 2159130 Change-Id: Id19c0371a0ed31c70ada788fc2b396a8b1eac1f1
-rw-r--r--core/dp/txrx/ol_rx.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/core/dp/txrx/ol_rx.c b/core/dp/txrx/ol_rx.c
index d37e97e80b48..22816b973f1f 100644
--- a/core/dp/txrx/ol_rx.c
+++ b/core/dp/txrx/ol_rx.c
@@ -144,7 +144,12 @@ void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
{
struct ol_rx_remote_data data;
- if (!pktlog_bit)
+ /**
+ * pktlog is meant to log rx_desc information which is
+ * already overwritten by radio header when monitor mode is ON.
+ * Therefore, Do not log pktlog event when monitor mode is ON.
+ */
+ if (!pktlog_bit || (cds_get_conparam() == QDF_GLOBAL_MONITOR_MODE))
return;
data.msdu = msdu;
@@ -161,6 +166,14 @@ void ol_rx_send_pktlog_event(struct ol_txrx_pdev_t *pdev,
{
struct ol_rx_remote_data data;
+ /**
+ * pktlog is meant to log rx_desc information which is
+ * already overwritten by radio header when monitor mode is ON.
+ * Therefore, Do not log pktlog event when monitor mode is ON.
+ */
+ if (cds_get_conparam() == QDF_GLOBAL_MONITOR_MODE)
+ return;
+
data.msdu = msdu;
if (peer)
data.mac_id = peer->vdev->mac_id;