summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYeshwanth Sriram Guntuka <ysriramg@codeaurora.org>2021-02-01 13:37:00 +0530
committerchenpaul <chenpaul@google.com>2021-03-23 19:02:40 +0800
commitd2c3bd30c1c2f347f94261c277d4c986df0ddc87 (patch)
tree25223abc6fccfe9b0972a99fb0a0123ec9804b76
parent9bd853849275ecc934f1902bf694e77eed8fb23a (diff)
downloadqcacld-d2c3bd30c1c2f347f94261c277d4c986df0ddc87.tar.gz
qcacld-3.0: Add support to flush fragments for a particular peer
Add support for flushing fragments for a particular peer. Change-Id: I91236d2edc73317380590458b974013a02e858a1 CRs-Fixed: 2860131 Bug: 182958222
-rw-r--r--core/dp/txrx/ol_txrx.c31
1 files changed, 30 insertions, 1 deletions
diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c
index 5bb47c8588..8f211a999b 100644
--- a/core/dp/txrx/ol_txrx.c
+++ b/core/dp/txrx/ol_txrx.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2018, 2020-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -4129,6 +4129,34 @@ static void ol_txrx_peer_unmap_sync_cb_set(
}
/**
+ * 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_pdev *ppdev, uint8_t vdev_id,
+ uint8_t *peer_mac)
+{
+ struct ol_txrx_peer_t *peer;
+ struct ol_txrx_pdev_t *pdev = (struct ol_txrx_pdev_t *)ppdev;
+
+ 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
*
@@ -6621,6 +6649,7 @@ static struct cdp_peer_ops ol_ops_peer = {
.update_last_real_peer = ol_txrx_update_last_real_peer,
#endif /* CONFIG_HL_SUPPORT */
.peer_detach_force_delete = ol_txrx_peer_detach_force_delete,
+ .peer_flush_frags = ol_txrx_peer_flush_frags,
};
static struct cdp_tx_delay_ops ol_ops_delay = {