mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
wifi: mac80211: parse all TTLM entries
For the follow up patch, we need to properly parse TTLM entries that do not have a switch time. Change the logic so that ieee80211_parse_adv_t2l returns usable values in all non-error cases. Before the values filled in were technically incorrect but enough for ieee80211_process_adv_ttlm. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Ilan Peer <ilan.peer@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20260118093904.ccd324e2dd59.I69f0bee0a22e9b11bb95beef313e305dab17c051@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
3f3d8ff314
commit
3fa2886d11
|
|
@ -7015,10 +7015,6 @@ ieee80211_parse_adv_t2l(struct ieee80211_sub_if_data *sdata,
|
|||
pos = (void *)ttlm->optional;
|
||||
control = ttlm->control;
|
||||
|
||||
if ((control & IEEE80211_TTLM_CONTROL_DEF_LINK_MAP) ||
|
||||
!(control & IEEE80211_TTLM_CONTROL_SWITCH_TIME_PRESENT))
|
||||
return 0;
|
||||
|
||||
if ((control & IEEE80211_TTLM_CONTROL_DIRECTION) !=
|
||||
IEEE80211_TTLM_DIRECTION_BOTH) {
|
||||
sdata_info(sdata, "Invalid advertised T2L map direction\n");
|
||||
|
|
@ -7028,21 +7024,28 @@ ieee80211_parse_adv_t2l(struct ieee80211_sub_if_data *sdata,
|
|||
link_map_presence = *pos;
|
||||
pos++;
|
||||
|
||||
ttlm_info->switch_time = get_unaligned_le16(pos);
|
||||
if (control & IEEE80211_TTLM_CONTROL_SWITCH_TIME_PRESENT) {
|
||||
ttlm_info->switch_time = get_unaligned_le16(pos);
|
||||
|
||||
/* Since ttlm_info->switch_time == 0 means no switch time, bump it
|
||||
* by 1.
|
||||
*/
|
||||
if (!ttlm_info->switch_time)
|
||||
ttlm_info->switch_time = 1;
|
||||
/* Since ttlm_info->switch_time == 0 means no switch time, bump
|
||||
* it by 1.
|
||||
*/
|
||||
if (!ttlm_info->switch_time)
|
||||
ttlm_info->switch_time = 1;
|
||||
|
||||
pos += 2;
|
||||
pos += 2;
|
||||
}
|
||||
|
||||
if (control & IEEE80211_TTLM_CONTROL_EXPECTED_DUR_PRESENT) {
|
||||
ttlm_info->duration = pos[0] | pos[1] << 8 | pos[2] << 16;
|
||||
pos += 3;
|
||||
}
|
||||
|
||||
if (control & IEEE80211_TTLM_CONTROL_DEF_LINK_MAP) {
|
||||
ttlm_info->map = 0xffff;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (control & IEEE80211_TTLM_CONTROL_LINK_MAP_SIZE)
|
||||
map_size = 1;
|
||||
else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user