qcacld-3.0: Fix nbuf tracking in ol_rx_fwd_check(), ol_rx_defrag_decap_recombine()

In ol_rx_fwd_check, do not remove nbuf Rx packet in case intra-bss
forwarded traffic. Regular Tx completion will take care to free the nbuf
and its tracking.

In ol_rx_defrag_decap_recombine(), it is callers responsibilty to free the
source nbuf if concatinate succeeds.

Change-Id: Iaf83524924e312bf819483de38603241f45170a5
CRs-Fixed: 2047377
This commit is contained in:
Manjunathappa Prakash
2017-05-13 20:41:03 -07:00
committed by snandini
parent 957b20873a
commit 2754f65563
3 changed files with 4 additions and 4 deletions

View File

@@ -1143,7 +1143,6 @@ ol_rx_defrag_decap_recombine(htt_pdev_handle htt_pdev,
qdf_nbuf_set_next(rx_nbuf, NULL);
while (msdu) {
htt_rx_msdu_desc_free(htt_pdev, msdu);
qdf_net_buf_debug_release_skb(msdu);
tmp = qdf_nbuf_next(msdu);
qdf_nbuf_set_next(msdu, NULL);
ol_rx_frag_pull_hdr(htt_pdev, msdu, hdrsize);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
* Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -179,6 +179,9 @@ static inline uint8_t ol_rx_defrag_concat(qdf_nbuf_t dst, qdf_nbuf_t src)
if (qdf_nbuf_cat(dst, src))
return OL_RX_DEFRAG_ERR;
/* Free source buffer */
qdf_nbuf_free(src);
return OL_RX_DEFRAG_OK;
}

View File

@@ -203,7 +203,6 @@ ol_rx_fwd_check(struct ol_txrx_vdev_t *vdev,
if (!ol_txrx_fwd_desc_thresh_check(vdev)) {
/* Drop the packet*/
htt_rx_msdu_desc_free(pdev->htt_pdev, msdu);
qdf_net_buf_debug_release_skb(msdu);
TXRX_STATS_MSDU_LIST_INCR(
pdev, tx.dropped.host_reject, msdu);
/* add NULL terminator */
@@ -222,7 +221,6 @@ ol_rx_fwd_check(struct ol_txrx_vdev_t *vdev,
*/
if (htt_rx_msdu_discard(pdev->htt_pdev, rx_desc)) {
htt_rx_msdu_desc_free(pdev->htt_pdev, msdu);
qdf_net_buf_debug_release_skb(msdu);
ol_rx_fwd_to_tx(tx_vdev, msdu);
msdu = NULL; /* already handled this MSDU */
tx_vdev->fwd_tx_packets++;