HE: Fix HE operation field size
The current code will always use the size required when all optional elements are present. This will cause the Linux kernel to consider the field to be malformed if the elements are not actually flagged as being present. Signed-off-by: Shashidhar Lakkavalli <slakkavalli@datto.com> Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
parent
a5dbddbf03
commit
3869c159d9
1 changed files with 3 additions and 2 deletions
|
@ -61,12 +61,13 @@ u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid)
|
||||||
{
|
{
|
||||||
struct ieee80211_he_operation *oper;
|
struct ieee80211_he_operation *oper;
|
||||||
u8 *pos = eid;
|
u8 *pos = eid;
|
||||||
|
int oper_size = 6;
|
||||||
|
|
||||||
if (!hapd->iface->current_mode)
|
if (!hapd->iface->current_mode)
|
||||||
return eid;
|
return eid;
|
||||||
|
|
||||||
*pos++ = WLAN_EID_EXTENSION;
|
*pos++ = WLAN_EID_EXTENSION;
|
||||||
*pos++ = 1 + sizeof(struct ieee80211_he_operation);
|
*pos++ = 1 + oper_size;
|
||||||
*pos++ = WLAN_EID_EXT_HE_OPERATION;
|
*pos++ = WLAN_EID_EXT_HE_OPERATION;
|
||||||
|
|
||||||
oper = (struct ieee80211_he_operation *) pos;
|
oper = (struct ieee80211_he_operation *) pos;
|
||||||
|
@ -92,7 +93,7 @@ u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid)
|
||||||
|
|
||||||
/* TODO: conditional MaxBSSID Indicator subfield */
|
/* TODO: conditional MaxBSSID Indicator subfield */
|
||||||
|
|
||||||
pos += sizeof(*oper);
|
pos += oper_size;
|
||||||
|
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue