summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimanshu Agarwal <himanaga@codeaurora.org>2017-02-20 19:14:17 +0530
committerspuligil <spuligil@codeaurora.org>2017-04-15 12:50:33 -0700
commitf8d6afcd30efef843482a1fa894e3ff87b82aea6 (patch)
tree87b6e1a289dc098e513b850115fc24dc7f5c2be6
parentf7b7d5e3d9711b9187e9482d533e8c13a062c4d7 (diff)
qcacld-3.0: Add support to add memory tracking in tx path
Add support to add memory tracking in tx path in WLAN driver using already present infrastructure for memory tracking. Change-Id: I6a2c9890e0af1fd51c4e2dfcded68f0075a3a4ef CRs-Fixed: 2025668
-rw-r--r--core/dp/txrx/ol_rx_fwd.c7
-rw-r--r--core/hdd/src/wlan_hdd_softap_tx_rx.c10
-rw-r--r--core/hdd/src/wlan_hdd_tx_rx.c14
3 files changed, 20 insertions, 11 deletions
diff --git a/core/dp/txrx/ol_rx_fwd.c b/core/dp/txrx/ol_rx_fwd.c
index 929df53475ae..843ff86c329e 100644
--- a/core/dp/txrx/ol_rx_fwd.c
+++ b/core/dp/txrx/ol_rx_fwd.c
@@ -234,13 +234,6 @@ 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++;
}
diff --git a/core/hdd/src/wlan_hdd_softap_tx_rx.c b/core/hdd/src/wlan_hdd_softap_tx_rx.c
index 9efb1b499325..0f03ea9fb631 100644
--- a/core/hdd/src/wlan_hdd_softap_tx_rx.c
+++ b/core/hdd/src/wlan_hdd_softap_tx_rx.c
@@ -381,6 +381,12 @@ static int __hdd_softap_hard_start_xmit(struct sk_buff *skb,
}
#endif
+ /*
+ * Add SKB to internal tracking table before further processing
+ * in WLAN driver.
+ */
+ qdf_net_buf_debug_acquire_skb(skb, __FILE__, __LINE__);
+
pAdapter->stats.tx_bytes += skb->len;
if (qdf_nbuf_is_tso(skb))
@@ -410,12 +416,14 @@ static int __hdd_softap_hard_start_xmit(struct sk_buff *skb,
"%s: Failed to send packet to txrx for staid:%d",
__func__, STAId);
++pAdapter->hdd_stats.hddTxRxStats.txXmitDroppedAC[ac];
- goto drop_pkt;
+ goto drop_pkt_and_release_skb;
}
netif_trans_update(dev);
return NETDEV_TX_OK;
+drop_pkt_and_release_skb:
+ qdf_net_buf_debug_release_skb(skb);
drop_pkt:
DPTRACE(qdf_dp_trace(skb, QDF_DP_TRACE_DROP_PACKET_RECORD,
diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c
index b22697de2ba3..e5f0bd647ea2 100644
--- a/core/hdd/src/wlan_hdd_tx_rx.c
+++ b/core/hdd/src/wlan_hdd_tx_rx.c
@@ -513,6 +513,12 @@ static int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
}
/*
+ * Add SKB to internal tracking table before further processing
+ * in WLAN driver.
+ */
+ qdf_net_buf_debug_acquire_skb(skb, __FILE__, __LINE__);
+
+ /*
* user priority from IP header, which is already extracted and set from
* select_queue call back function
*/
@@ -635,7 +641,7 @@ static int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
"%s: station is not connected. drop the pkt",
__func__);
++pAdapter->hdd_stats.hddTxRxStats.txXmitDroppedAC[ac];
- goto drop_pkt;
+ goto drop_pkt_and_release_skb;
}
/*
@@ -646,7 +652,7 @@ static int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
"%s: TX function not registered by the data path",
__func__);
++pAdapter->hdd_stats.hddTxRxStats.txXmitDroppedAC[ac];
- goto drop_pkt;
+ goto drop_pkt_and_release_skb;
}
if (pAdapter->tx_fn(ol_txrx_get_vdev_by_sta_id(STAId),
@@ -655,13 +661,15 @@ static int __hdd_hard_start_xmit(struct sk_buff *skb, struct net_device *dev)
"%s: Failed to send packet to txrx for staid: %d",
__func__, STAId);
++pAdapter->hdd_stats.hddTxRxStats.txXmitDroppedAC[ac];
- goto drop_pkt;
+ goto drop_pkt_and_release_skb;
}
netif_trans_update(dev);
return NETDEV_TX_OK;
+drop_pkt_and_release_skb:
+ qdf_net_buf_debug_release_skb(skb);
drop_pkt:
if (skb) {