Commit 0333a81b authored by Kieran Frewen's avatar Kieran Frewen Committed by Johannes Berg
Browse files

wifi: mac80211: S1G capabilities information element in probe request

parent 968a768d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2491,6 +2491,7 @@ void ieee80211_add_s1g_capab_ie(struct ieee80211_sub_if_data *sdata,
				struct sk_buff *skb);
void ieee80211_add_aid_request_ie(struct ieee80211_sub_if_data *sdata,
				  struct sk_buff *skb);
u8 *ieee80211_ie_build_s1g_cap(u8 *pos, struct ieee80211_sta_s1g_cap *s1g_cap);

/* channel management */
bool ieee80211_chandef_ht_oper(const struct ieee80211_ht_operation *ht_oper,
+23 −0
Original line number Diff line number Diff line
@@ -1959,6 +1959,14 @@ static int ieee80211_build_preq_ies_band(struct ieee80211_sub_if_data *sdata,
	rate_flags = ieee80211_chandef_rate_flags(chandef);
	shift = ieee80211_chandef_get_shift(chandef);

	/* For direct scan add S1G IE and consider its override bits */
	if (band == NL80211_BAND_S1GHZ) {
		if (end - pos < 2 + sizeof(struct ieee80211_s1g_cap))
			goto out_err;
		pos = ieee80211_ie_build_s1g_cap(pos, &sband->s1g_cap);
		goto done;
	}

	num_rates = 0;
	for (i = 0; i < sband->n_bitrates; i++) {
		if ((BIT(i) & rate_mask) == 0)
@@ -3020,6 +3028,21 @@ size_t ieee80211_ie_split_vendor(const u8 *ies, size_t ielen, size_t offset)
	return pos;
}

u8 *ieee80211_ie_build_s1g_cap(u8 *pos, struct ieee80211_sta_s1g_cap *s1g_cap)
{
	*pos++ = WLAN_EID_S1G_CAPABILITIES;
	*pos++ = sizeof(struct ieee80211_s1g_cap);
	memset(pos, 0, sizeof(struct ieee80211_s1g_cap));

	memcpy(pos, &s1g_cap->cap, sizeof(s1g_cap->cap));
	pos += sizeof(s1g_cap->cap);

	memcpy(pos, &s1g_cap->nss_mcs, sizeof(s1g_cap->nss_mcs));
	pos += sizeof(s1g_cap->nss_mcs);

	return pos;
}

u8 *ieee80211_ie_build_ht_cap(u8 *pos, struct ieee80211_sta_ht_cap *ht_cap,
			      u16 cap)
{