* attribute is present in beacon data or not.
* @ht_required: stations must support HT
* @vht_required: stations must support VHT
+ * @ht_oper: HT operation element (or %NULL if HT isn't enabled)
+ * @vht_oper: VHT operation element (or %NULL if VHT isn't enabled)
* @he_oper: HE operation IE (or %NULL if HE isn't enabled)
* @eht_oper: EHT operation IE (or %NULL if EHT isn't enabled)
* @uhr_oper: UHR operation (or %NULL if UHR isn't enabled)
bool he_bss_color_valid;
bool ht_required, vht_required;
+ const struct ieee80211_ht_operation *ht_oper;
+ const struct ieee80211_vht_operation *vht_oper;
const struct ieee80211_he_operation *he_oper;
const struct ieee80211_eht_operation *eht_oper;
const struct ieee80211_uhr_operation *uhr_oper;
}
}
+ op = cfg80211_find_elem(WLAN_EID_HT_OPERATION, ies, ies_len);
+ if (op) {
+ if (op->datalen < sizeof(*bcn->ht_oper)) {
+ GENL_SET_ERR_MSG(info, "bad HT operation in beacon");
+ return -EINVAL;
+ }
+ bcn->ht_oper = (void *)op->data;
+ }
+
+ op = cfg80211_find_elem(WLAN_EID_VHT_OPERATION, ies, ies_len);
+ if (op) {
+ if (op->datalen < sizeof(*bcn->vht_oper)) {
+ GENL_SET_ERR_MSG(info, "bad VHT operation in beacon");
+ return -EINVAL;
+ }
+ bcn->vht_oper = (void *)op->data;
+ }
+
op = cfg80211_find_ext_elem(WLAN_EID_EXT_EHT_OPERATION, ies, ies_len);
if (op) {
if (!ieee80211_eht_oper_size_ok(op->data + 1,