[PATCH ath12k-ng 0/9] wifi: ath12k: Modularization of peer object
Vasanthakumar Thiagarajan
vasanthakumar.thiagarajan at oss.qualcomm.com
Mon Oct 27 00:20:11 PDT 2025
On 10/24/2025 11:45 PM, Ripan Deuri wrote:
> struct ath12k_sta has an array of struct ath12k_link_sta wherein each index
> represents one link of the connected station.
>
> For each ath12k_link_sta, there is a corresponding data path peer which is
> represented by struct ath12k_peer.
>
> Diagrammatic view of the station is a below:
>
> ath12k_sta
> |
> |-> ath12k_link_sta <--> ath12k_peer
> |
> |-> ath12k_link_sta <--> ath12k_peer
> |
> |-> ath12k_link_sta <--> ath12k_peer
>
> Currently, in control path, ath12k_link_sta and ath12k_peer are used
> interchangeably, while the data path makes use of ath12k_peer only.
>
> With ath12k next-generation driver framework, in order to have a clean
> segregation between control and data path, the plan is to use ath12k_link_sta
> only for control path operations.
>
> Station view for the data path is revamped as below:
>
> ath12k_dp_peer
> |
> |-> ath12k_dp_link_peer
> |
> |-> ath12k_dp_link_peer
> |
> |-> ath12k_dp_link_peer
>
> where:
> ath12k_dp_peer is newly introduced structure and represents the data path
> version of corresponding ath12k_sta.
>
> This ath12k_dp_peer contains the fields used in the per packet Tx Rx paths
> applicable across all the links and maintains an array of ath12k_dp_link_peer.
> Per packet Tx and Rx path operates on ath12k_dp_peer. This ath12k_dp_peer is a
> standalone new object and has back pointer reference to ieee80211_sta.
>
> ath12k_peer has been renamed to ath12k_dp_link_peer and the fields which
> are common across all the links are moved to ath12k_dp_peer. ath12k_dp_link_peer
> contains the fields specific to a link and these are mostly for statistics and
> monitor usage.
>
> Final view of station is shown below:
>
> Control Path Data Path
> -------------------------------------------------------------------
> ath12k_sta ath12k_dp_peer
> | |
> |-> ath12k_link_sta <----> |-> ath12k_dp_link_peer
> | |
> |-> ath12k_link_sta <----> |-> ath12k_dp_link_peer
> | |
> |-> ath12k_link_sta <----> |-> ath12k_dp_link_peer
>
> To achieve this, following set of changes are done in this patch series:
> 1. Refactor functions present in file peer.c in such a way to retain functions
> operating on ath12k_link_sta in peer.c and move functions operating on
> ath12k_peer to dp_peer.c
> 2. Rename ath12k_peer to ath12k_dp_link_peer and change find APIs
> correspondingly
> 3. Add hash table for ath12k_link_sta in ath12k_base
> 4. Move peer linked list from ath12k_base to ath12k_dp
> 5. Add hash table for ath12k_dp_link_peer in ath12k_dp
> 6. Define ath12k_dp_peer structure and APIs for creation and deletion
> 7. APIs for assign and unassignment of ath12k_dp_link_peer to ath12k_dp_peer
> 8. Use ath12k_dp_peer in per packet Tx and Rx path
> ---
> Harsh Kumar Bijlani (8):
> wifi: ath12k: Move DP related functions from peer.c to dp_peer.c file
> wifi: ath12k: Rename ath12k_peer to ath12k_dp_link_peer
> wifi: ath12k: Add hash table for ath12k_link_sta in ath12k_base
> wifi: ath12k: Move ath12k_dp_link_peer list from ath12k_base to
> ath12k_dp
> wifi: ath12k: Add hash table for ath12k_dp_link_peer
> wifi: ath12k: Define ath12k_dp_peer structure & APIs for create &
> delete
> wifi: ath12k: Attach and detach ath12k_dp_link_peer to ath12k_dp_peer
> wifi: ath12k: Use ath12k_dp_peer in per packet Tx & Rx paths
>
> Ripan Deuri (1):
> wifi: ath12k: Add lockdep warn for RCU
>
> drivers/net/wireless/ath/ath12k/Makefile | 1 +
> drivers/net/wireless/ath/ath12k/core.c | 12 +-
> drivers/net/wireless/ath/ath12k/core.h | 17 +-
> drivers/net/wireless/ath/ath12k/dp.c | 48 +-
> drivers/net/wireless/ath/ath12k/dp.h | 17 +-
> drivers/net/wireless/ath/ath12k/dp_cmn.h | 28 +-
> drivers/net/wireless/ath/ath12k/dp_htt.c | 44 +-
> drivers/net/wireless/ath/ath12k/dp_mon.c | 30 +-
> drivers/net/wireless/ath/ath12k/dp_peer.c | 627 ++++++++++++++++++
> drivers/net/wireless/ath/ath12k/dp_peer.h | 125 ++++
> drivers/net/wireless/ath/ath12k/dp_rx.c | 151 +++--
> drivers/net/wireless/ath/ath12k/dp_rx.h | 19 +-
> drivers/net/wireless/ath/ath12k/mac.c | 381 ++++++++---
> drivers/net/wireless/ath/ath12k/mac.h | 1 +
> drivers/net/wireless/ath/ath12k/peer.c | 439 +++++-------
> drivers/net/wireless/ath/ath12k/peer.h | 112 +---
> drivers/net/wireless/ath/ath12k/wifi7/dp_rx.c | 47 +-
> drivers/net/wireless/ath/ath12k/wifi7/dp_rx.h | 6 +-
> drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c | 24 +-
> .../net/wireless/ath/ath12k/wifi7/hal_rx.c | 5 +-
> .../net/wireless/ath/ath12k/wifi7/hal_rx.h | 1 +
> drivers/net/wireless/ath/ath12k/wifi7/hw.c | 19 +-
> drivers/net/wireless/ath/ath12k/wmi.c | 14 +-
> 23 files changed, 1504 insertions(+), 664 deletions(-)
> create mode 100644 drivers/net/wireless/ath/ath12k/dp_peer.c
> create mode 100644 drivers/net/wireless/ath/ath12k/dp_peer.h
>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan at oss.qualcomm.com>
More information about the ath12k
mailing list