Search Linux Wireless

Re: [PATCH v6 2/5] wifi: mac80211: update beacon counters per link basis

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/30/24 06:53, Jeff Johnson wrote:
On 1/28/2024 9:28 PM, Aditya Kumar Singh wrote:
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 68a48abc7287..504db497df06 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -5030,16 +5030,24 @@ static u8 __ieee80211_beacon_update_cntdwn(struct beacon_data *beacon)
  	return beacon->cntdwn_current_counter;
  }
-u8 ieee80211_beacon_update_cntdwn(struct ieee80211_vif *vif)
+u8 ieee80211_beacon_update_cntdwn(struct ieee80211_vif *vif, unsigned int link_id)
  {
  	struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
+	struct ieee80211_link_data *link;
  	struct beacon_data *beacon = NULL;
  	u8 count = 0;
+ if (WARN_ON(link_id > IEEE80211_MLD_MAX_NUM_LINKS))

shouldn't this be >= ?

aren't the arrays size [IEEE80211_MLD_MAX_NUM_LINKS] and hence indexes
must be 0..IEEE80211_MLD_MAX_NUM_LINKS-1?

Yes correct it should be >=. My bad. Will rectify in net version. Thanks for pointing it out.


+		return 0;
+
  	rcu_read_lock();
+ link = rcu_dereference(sdata->link[link_id]);
+	if (!link)
+		goto unlock;
+
  	if (sdata->vif.type == NL80211_IFTYPE_AP)
-		beacon = rcu_dereference(sdata->deflink.u.ap.beacon);
+		beacon = rcu_dereference(link->u.ap.beacon);
  	else if (sdata->vif.type == NL80211_IFTYPE_ADHOC)
  		beacon = rcu_dereference(sdata->u.ibss.presp);
  	else if (ieee80211_vif_is_mesh(&sdata->vif))





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux