Commit 209d70d3 authored by Kieran Frewen's avatar Kieran Frewen Committed by Johannes Berg
Browse files

wifi: mac80211: update TIM for S1G specification changes



Updates to the TIM information element to match changes made in the
IEEE Std 802.11ah-2020.

Signed-off-by: default avatarKieran Frewen <kieran.frewen@morsemicro.com>
Co-developed-by: default avatarGilad Itzkovitch <gilad.itzkovitch@morsemicro.com>
Signed-off-by: default avatarGilad Itzkovitch <gilad.itzkovitch@morsemicro.com>
Link: https://lore.kernel.org/r/20221106221602.25714-1-gilad.itzkovitch@morsemicro.com


[use skb_put_data/skb_put_u8]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 8950b598
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -4774,9 +4774,9 @@ static void __ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata,
			ps->dtim_count--;
	}

	tim = pos = skb_put(skb, 6);
	tim = pos = skb_put(skb, 5);
	*pos++ = WLAN_EID_TIM;
	*pos++ = 4;
	*pos++ = 3;
	*pos++ = ps->dtim_count;
	*pos++ = link_conf->dtim_period;

@@ -4807,13 +4807,17 @@ static void __ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata,
		/* Bitmap control */
		*pos++ = n1 | aid0;
		/* Part Virt Bitmap */
		skb_put(skb, n2 - n1);
		memcpy(pos, ps->tim + n1, n2 - n1 + 1);
		skb_put_data(skb, ps->tim + n1, n2 - n1 + 1);

		tim[1] = n2 - n1 + 4;
	} else {
		*pos++ = aid0; /* Bitmap control */
		*pos++ = 0; /* Part Virt Bitmap */

		if (ieee80211_get_link_sband(link)->band != NL80211_BAND_S1GHZ) {
			tim[1] = 4;
			/* Part Virt Bitmap */
			skb_put_u8(skb, 0);
		}
	}
}