summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPoddar, Siddarth <siddpodd@codeaurora.org>2017-03-17 17:34:35 +0530
committerSandeep Puligilla <spuligil@codeaurora.org>2017-03-20 12:07:22 -0700
commita606c2a6b55c121e7ac1d2fac34a5ee8fa6be558 (patch)
tree217c9dedc322b3b97efd0dd26e6e4f60a1563ea5
parent0cb14d7dc1f8e30a9691ebb2a30b750bca1bfc2a (diff)
qcacld-3.0: Add a flag in skb->cb for packet tracking
When a packet is generated internally, host adds a debug node entry to the table and deletes the entry once received tx completion for that packet by calling qdf_nbuf_free. But when a packet is coming from network stack, host doesn’t add any debug entry to the table and on receiving tx completion, it calls qdf_nbuf_tx_free which will simply free the skb. In case of P2P GO mode where packets are forwarded internally, host creates a private copy of skb and add debug node entry in the table. But when receiving a tx completion for the same packet host calls qdf_nbuf_tx_free which will free the skb but will not remove this node entry from the table. Currently, this api is common for all data tx completion packets. Add an extra flag in control block to differentiate whether skb is generated by driver or come from network stack. If flag is true, that means generated internally and need to remove the entry from debug node table. CRs-Fixed: 2021277 Change-Id: I07c12b5bf134a3e56d13005dbe03778781cdf176
-rw-r--r--core/dp/txrx/ol_rx_fwd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/core/dp/txrx/ol_rx_fwd.c b/core/dp/txrx/ol_rx_fwd.c
index ccc74542ebb8..5bbe90b0e3f3 100644
--- a/core/dp/txrx/ol_rx_fwd.c
+++ b/core/dp/txrx/ol_rx_fwd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011, 2014-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -237,6 +237,13 @@ ol_rx_fwd_check(struct ol_txrx_vdev_t *vdev,
copy = qdf_nbuf_copy(msdu);
if (copy) {
+ /* Since this is a private copy of skb
+ * and part of skb tracking table, so
+ * mark it to make sure that this skb
+ * is getting deleted from tracking
+ * table on receiving tx completion.
+ */
+ QDF_NBUF_CB_TX_IS_PACKET_PRIV(copy) = 1;
ol_rx_fwd_to_tx(tx_vdev, copy);
tx_vdev->fwd_tx_packets++;
}