[PATCH ath12k-ng 0/9] wifi: ath12k: Modularization of peer object

Baochen Qiang baochen.qiang at oss.qualcomm.com
Sun Oct 26 20:21:05 PDT 2025



On 10/25/2025 2:15 AM, 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
> 
> 
> base-commit: 25122460e7f96864a80b59ffe6c953911516d3b3

Reviewed-by: Baochen Qiang <baochen.qiang at oss.qualcomm.com>




More information about the ath12k mailing list