|
@@ -151,6 +151,31 @@ u16 hostapd_own_capab_info(struct hostapd_data *hapd, struct sta_info *sta,
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+u8 * hostapd_eid_ext_capab(struct hostapd_data *hapd, u8 *eid)
|
|
|
|
+{
|
|
|
|
+ u8 *pos = eid;
|
|
|
|
+
|
|
|
|
+ if ((hapd->conf->tdls & (TDLS_PROHIBIT | TDLS_PROHIBIT_CHAN_SWITCH)) ==
|
|
|
|
+ 0)
|
|
|
|
+ return eid;
|
|
|
|
+
|
|
|
|
+ *pos++ = WLAN_EID_EXT_CAPAB;
|
|
|
|
+ *pos++ = 5;
|
|
|
|
+ *pos++ = 0x00;
|
|
|
|
+ *pos++ = 0x00;
|
|
|
|
+ *pos++ = 0x00;
|
|
|
|
+ *pos++ = 0x00;
|
|
|
|
+ *pos = 0x00;
|
|
|
|
+ if (hapd->conf->tdls & TDLS_PROHIBIT)
|
|
|
|
+ *pos |= 0x40; /* Bit 38 - TDLS Prohibited */
|
|
|
|
+ if (hapd->conf->tdls & TDLS_PROHIBIT_CHAN_SWITCH)
|
|
|
|
+ *pos |= 0x80; /* Bit 39 - TDLS Channel Switching Prohibited */
|
|
|
|
+ pos++;
|
|
|
|
+
|
|
|
|
+ return pos;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
#ifdef CONFIG_IEEE80211W
|
|
#ifdef CONFIG_IEEE80211W
|
|
static u8 * hostapd_eid_assoc_comeback_time(struct hostapd_data *hapd,
|
|
static u8 * hostapd_eid_assoc_comeback_time(struct hostapd_data *hapd,
|
|
struct sta_info *sta, u8 *eid)
|
|
struct sta_info *sta, u8 *eid)
|
|
@@ -867,6 +892,8 @@ static void send_assoc_resp(struct hostapd_data *hapd, struct sta_info *sta,
|
|
p = hostapd_eid_ht_operation(hapd, p);
|
|
p = hostapd_eid_ht_operation(hapd, p);
|
|
#endif /* CONFIG_IEEE80211N */
|
|
#endif /* CONFIG_IEEE80211N */
|
|
|
|
|
|
|
|
+ p = hostapd_eid_ext_capab(hapd, p);
|
|
|
|
+
|
|
if (sta->flags & WLAN_STA_WMM)
|
|
if (sta->flags & WLAN_STA_WMM)
|
|
p = hostapd_eid_wmm(hapd, p);
|
|
p = hostapd_eid_wmm(hapd, p);
|
|
|
|
|