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:

committed by
snandini

parent
957b20873a
commit
2754f65563
@@ -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);
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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++;
|
||||
|
Reference in New Issue
Block a user