summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/ath/ath12k/dp_peer.c13
-rw-r--r--drivers/net/wireless/ath/ath12k/dp_peer.h1
-rw-r--r--drivers/net/wireless/ath/ath12k/mac.c9
-rw-r--r--drivers/net/wireless/ath/ath12k/peer.c5
4 files changed, 13 insertions, 15 deletions
diff --git a/drivers/net/wireless/ath/ath12k/dp_peer.c b/drivers/net/wireless/ath/ath12k/dp_peer.c
index 8961c4635ed0..0ad01f7414cd 100644
--- a/drivers/net/wireless/ath/ath12k/dp_peer.c
+++ b/drivers/net/wireless/ath/ath12k/dp_peer.c
@@ -9,6 +9,14 @@
#include "debug.h"
#include "debugfs.h"
+void ath12k_dp_link_peer_free(struct ath12k_dp_link_peer *peer)
+{
+ list_del(&peer->list);
+
+ kfree(peer->peer_stats.rx_stats);
+ kfree(peer);
+}
+
struct ath12k_dp_link_peer *
ath12k_dp_link_peer_find_by_vdev_and_addr(struct ath12k_dp *dp,
int vdev_id, const u8 *addr)
@@ -140,10 +148,7 @@ void ath12k_dp_link_peer_unmap_event(struct ath12k_base *ab, u16 peer_id)
ath12k_dbg(ab, ATH12K_DBG_DP_HTT, "htt peer unmap vdev %d peer %pM id %d\n",
peer->vdev_id, peer->addr, peer_id);
- list_del(&peer->list);
-
- kfree(peer->peer_stats.rx_stats);
- kfree(peer);
+ ath12k_dp_link_peer_free(peer);
wake_up(&ab->peer_mapping_wq);
exit:
diff --git a/drivers/net/wireless/ath/ath12k/dp_peer.h b/drivers/net/wireless/ath/ath12k/dp_peer.h
index f9be27d86545..20294ff09513 100644
--- a/drivers/net/wireless/ath/ath12k/dp_peer.h
+++ b/drivers/net/wireless/ath/ath12k/dp_peer.h
@@ -178,4 +178,5 @@ struct ath12k_dp_peer *ath12k_dp_peer_find_by_peerid(struct ath12k_pdev_dp *dp_p
u16 peer_id);
struct ath12k_dp_link_peer *
ath12k_dp_link_peer_find_by_peerid(struct ath12k_pdev_dp *dp_pdev, u16 peer_id);
+void ath12k_dp_link_peer_free(struct ath12k_dp_link_peer *peer);
#endif
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 4972367dd1ba..c40c55344e64 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -1213,10 +1213,7 @@ void ath12k_mac_peer_cleanup_all(struct ath12k *ar)
synchronize_rcu();
list_for_each_entry_safe(peer, tmp, &peers, list) {
- list_del(&peer->list);
-
- kfree(peer->peer_stats.rx_stats);
- kfree(peer);
+ ath12k_dp_link_peer_free(peer);
}
ar->num_peers = 0;
@@ -6377,10 +6374,8 @@ static void ath12k_mac_station_post_remove(struct ath12k *ar,
ath12k_warn(ar->ab, "Found peer entry %pM n vdev %i after it was supposedly removed\n",
vif->addr, arvif->vdev_id);
peer->sta = NULL;
- list_del(&peer->list);
- kfree(peer->peer_stats.rx_stats);
- kfree(peer);
+ ath12k_dp_link_peer_free(peer);
ar->num_peers--;
}
diff --git a/drivers/net/wireless/ath/ath12k/peer.c b/drivers/net/wireless/ath/ath12k/peer.c
index 9c100ecea798..c2fb5bbd6cea 100644
--- a/drivers/net/wireless/ath/ath12k/peer.c
+++ b/drivers/net/wireless/ath/ath12k/peer.c
@@ -50,10 +50,7 @@ void ath12k_peer_cleanup(struct ath12k *ar, u32 vdev_id)
ath12k_warn(ab, "removing stale peer %pM from vdev_id %d\n",
peer->addr, vdev_id);
- list_del(&peer->list);
-
- kfree(peer->peer_stats.rx_stats);
- kfree(peer);
+ ath12k_dp_link_peer_free(peer);
ar->num_peers--;
}