mwifiex: don't always include ht/vht info in tdls confirm frame
Current TDLS implementation always includes ht/vht information in tdls setup confirm frame which causes teardown by legacy peer station after TDLS handshake. We will inclue ht/vht capabilities in tdls setup confirm frame only if peer station supports it to fix this problem. Signed-off-by: Aniket Nagarnaik <aniketn@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
02421dd3f6
commit
2c3da96126
|
@ -204,6 +204,12 @@ mwifiex_tdls_add_ht_oper(struct mwifiex_private *priv, const u8 *mac,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(le16_to_cpu(sta_ptr->tdls_cap.ht_capb.cap_info))) {
|
||||||
|
mwifiex_dbg(priv->adapter, WARN,
|
||||||
|
"TDLS peer doesn't support ht capabilities\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
pos = (void *)skb_put(skb, sizeof(struct ieee80211_ht_operation) + 2);
|
pos = (void *)skb_put(skb, sizeof(struct ieee80211_ht_operation) + 2);
|
||||||
*pos++ = WLAN_EID_HT_OPERATION;
|
*pos++ = WLAN_EID_HT_OPERATION;
|
||||||
*pos++ = sizeof(struct ieee80211_ht_operation);
|
*pos++ = sizeof(struct ieee80211_ht_operation);
|
||||||
|
@ -252,6 +258,12 @@ static int mwifiex_tdls_add_vht_oper(struct mwifiex_private *priv,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(le32_to_cpu(sta_ptr->tdls_cap.vhtcap.vht_cap_info))) {
|
||||||
|
mwifiex_dbg(adapter, WARN,
|
||||||
|
"TDLS peer doesn't support vht capabilities\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!mwifiex_is_bss_in_11ac_mode(priv)) {
|
if (!mwifiex_is_bss_in_11ac_mode(priv)) {
|
||||||
if (sta_ptr->tdls_cap.extcap.ext_capab[7] &
|
if (sta_ptr->tdls_cap.extcap.ext_capab[7] &
|
||||||
WLAN_EXT_CAPA8_TDLS_WIDE_BW_ENABLED) {
|
WLAN_EXT_CAPA8_TDLS_WIDE_BW_ENABLED) {
|
||||||
|
|
Loading…
Reference in New Issue