On 11/6/2024 10:26 PM, Kalle Valo wrote: > From: Sriram R <quic_srirrama@xxxxxxxxxxx> > > 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@xxxxxxxxxxx> > Signed-off-by: Harshitha Prem <quic_hprem@xxxxxxxxxxx> > Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx> > --- > 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; > +} > +