From ee511154a8ac05948aebf8f428c09aa0103f559f Mon Sep 17 00:00:00 2001 From: Yeshwanth Sriram Guntuka Date: Mon, 1 Feb 2021 13:37:00 +0530 Subject: [PATCH] qcacld-3.0: Add support to flush fragments for a particular peer Add support for flushing fragments for a particular peer. Change-Id: I2f66036ebb30bcd16c6a88d7d0729d084ebf75a1 CVE-Fixed: CVE-2020-24587 Mot-CRs-fixed: (CR) CRs-Fixed: 2860131 Reviewed-on: https://gerrit.mot.com/1929641 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Bin Liu Submit-Approved: Jira Key --- core/dp/txrx/ol_txrx.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index feafa1727c72..6e7409b38133 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -3701,6 +3701,36 @@ ol_txrx_peer_flush_frags(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, ol_txrx_peer_release_ref(peer, PEER_DEBUG_ID_OL_INTERNAL); } +/** + * ol_txrx_peer_flush_frags() - Flush fragments for a particular peer + * @soc_hdl - datapath soc handle + * @vdev_id - virtual device id + * @peer_mac - peer mac address + * + * Return: None + */ +static void +ol_txrx_peer_flush_frags(struct cdp_soc_t *soc_hdl, uint8_t vdev_id, + uint8_t *peer_mac) +{ + struct ol_txrx_peer_t *peer; + struct ol_txrx_soc_t *soc = cdp_soc_t_to_ol_txrx_soc_t(soc_hdl); + struct ol_txrx_pdev_t *pdev = + ol_txrx_get_pdev_from_pdev_id(soc, OL_TXRX_PDEV_ID); + + if (!pdev) + return; + + peer = ol_txrx_peer_find_hash_find_get_ref(pdev, peer_mac, 0, 1, + PEER_DEBUG_ID_OL_INTERNAL); + if (!peer) + return; + + ol_rx_reorder_peer_cleanup(peer->vdev, peer); + + ol_txrx_peer_release_ref(peer, PEER_DEBUG_ID_OL_INTERNAL); +} + /** * ol_txrx_dump_tx_desc() - dump tx desc total and free count * @txrx_pdev: Pointer to txrx pdev