Commit c5309ba7 authored by Johannes Berg's avatar Johannes Berg

mac80211: tdls: disentangle HT supported conditions

These conditions are rather difficult to follow, for example
because "!sta" only exists to not crash in the case that we
don't have a station pointer (WLAN_TDLS_SETUP_REQUEST) in
which the additional condition (peer supports HT) doesn't
actually matter anyway.

Cleaning this up only duplicates two lines of code but makes
the rest far easier to read, so do that.

As a side effect, smatch stops complaining about the lack of
a sta pointer test after the !sta (since the !sta goes away)
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent d6f5cc09
...@@ -345,24 +345,24 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata, ...@@ -345,24 +345,24 @@ ieee80211_tdls_add_setup_start_ies(struct ieee80211_sub_if_data *sdata,
*/ */
sband = local->hw.wiphy->bands[band]; sband = local->hw.wiphy->bands[band];
memcpy(&ht_cap, &sband->ht_cap, sizeof(ht_cap)); memcpy(&ht_cap, &sband->ht_cap, sizeof(ht_cap));
if ((action_code == WLAN_TDLS_SETUP_REQUEST ||
action_code == WLAN_TDLS_SETUP_RESPONSE) && if (action_code == WLAN_TDLS_SETUP_REQUEST && ht_cap.ht_supported) {
ht_cap.ht_supported && (!sta || sta->sta.ht_cap.ht_supported)) { ieee80211_apply_htcap_overrides(sdata, &ht_cap);
if (action_code == WLAN_TDLS_SETUP_REQUEST) {
ieee80211_apply_htcap_overrides(sdata, &ht_cap); /* disable SMPS in TDLS initiator */
ht_cap.cap |= WLAN_HT_CAP_SM_PS_DISABLED
/* disable SMPS in TDLS initiator */ << IEEE80211_HT_CAP_SM_PS_SHIFT;
ht_cap.cap |= (WLAN_HT_CAP_SM_PS_DISABLED
<< IEEE80211_HT_CAP_SM_PS_SHIFT); pos = skb_put(skb, sizeof(struct ieee80211_ht_cap) + 2);
} else { ieee80211_ie_build_ht_cap(pos, &ht_cap, ht_cap.cap);
/* disable SMPS in TDLS responder */ } else if (action_code == WLAN_TDLS_SETUP_RESPONSE &&
sta->sta.ht_cap.cap |= ht_cap.ht_supported && sta->sta.ht_cap.ht_supported) {
(WLAN_HT_CAP_SM_PS_DISABLED /* disable SMPS in TDLS responder */
<< IEEE80211_HT_CAP_SM_PS_SHIFT); sta->sta.ht_cap.cap |= WLAN_HT_CAP_SM_PS_DISABLED
<< IEEE80211_HT_CAP_SM_PS_SHIFT;
/* the peer caps are already intersected with our own */
memcpy(&ht_cap, &sta->sta.ht_cap, sizeof(ht_cap)); /* the peer caps are already intersected with our own */
} memcpy(&ht_cap, &sta->sta.ht_cap, sizeof(ht_cap));
pos = skb_put(skb, sizeof(struct ieee80211_ht_cap) + 2); pos = skb_put(skb, sizeof(struct ieee80211_ht_cap) + 2);
ieee80211_ie_build_ht_cap(pos, &ht_cap, ht_cap.cap); ieee80211_ie_build_ht_cap(pos, &ht_cap, ht_cap.cap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment