[PATCH 2/8] wifi: ath12k: support change_sta_links() mac80211 op

Baochen Qiang quic_bqiang at quicinc.com
Wed Nov 6 23:14:55 PST 2024



On 11/6/2024 10:26 PM, Kalle Valo wrote:
> From: Sriram R <quic_srirrama at quicinc.com>
> 
> Add ath12k_mac_op_change_sta_links() for adding and removing
> link station.
> 
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
> 
> Signed-off-by: Sriram R <quic_srirrama at quicinc.com>
> Signed-off-by: Harshitha Prem <quic_hprem at quicinc.com>
> Signed-off-by: Kalle Valo <quic_kvalo at quicinc.com>
> ---
>  drivers/net/wireless/ath/ath12k/mac.c | 97 ++++++++++++++++++++++++++-
>  1 file changed, 96 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index 0ff886e4b3ed..c0cc4e51a4d1 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -5572,6 +5572,101 @@ static void ath12k_mac_op_sta_rc_update(struct ieee80211_hw *hw,
>  	rcu_read_unlock();
>  }
>  
> +static struct ath12k_link_sta *
> +ath12k_mac_alloc_assign_link_sta(struct ath12k_hw *ah,
> +				 struct ath12k_sta *ahsta,
> +				 struct ath12k_vif *ahvif, u8 link_id)
> +{
> +	struct ath12k_link_sta *arsta;
> +	int ret;
> +
> +	lockdep_assert_wiphy(ah->hw->wiphy);
> +
> +	if (link_id >= IEEE80211_MLD_MAX_NUM_LINKS)
> +		return NULL;
> +
> +	arsta = wiphy_dereference(ah->hw->wiphy, ahsta->link[link_id]);
> +	if (arsta)
> +		return NULL;
> +
> +	arsta = kzalloc(sizeof(*arsta), GFP_KERNEL);
kmalloc() is preferred as ath12k_mac_assign_link_sta() will do 'zero'?

> +	if (!arsta)
> +		return NULL;
> +
> +	ret = ath12k_mac_assign_link_sta(ah, ahsta, arsta, ahvif, link_id);
> +	if (ret) {
> +		kfree(arsta);
> +		return NULL;
> +	}
> +
> +	return arsta;
> +}
> +



More information about the ath12k mailing list