|
@@ -2397,7 +2397,6 @@ QDF_STATUS lim_update_ext_cap_ie(tpAniSirGlobal mac_ctx,
|
|
|
uint32_t dot11mode;
|
|
|
bool vht_enabled = false;
|
|
|
tDot11fIEExtCap default_scan_ext_cap = {0}, driver_ext_cap = {0};
|
|
|
- uint8_t ext_cap_ie_hdr[EXT_CAP_IE_HDR_LEN] = {0x7f, 0x9};
|
|
|
tSirRetStatus status;
|
|
|
|
|
|
status = lim_strip_extcap_update_struct(mac_ctx, ie_data,
|
|
@@ -2407,10 +2406,11 @@ QDF_STATUS lim_update_ext_cap_ie(tpAniSirGlobal mac_ctx,
|
|
|
return QDF_STATUS_E_FAILURE;
|
|
|
}
|
|
|
|
|
|
+ /* copy ie prior to ext cap to local buffer */
|
|
|
qdf_mem_copy(local_ie_buf, ie_data, (*local_ie_len));
|
|
|
- qdf_mem_copy(local_ie_buf + (*local_ie_len),
|
|
|
- ext_cap_ie_hdr, EXT_CAP_IE_HDR_LEN);
|
|
|
- (*local_ie_len) += EXT_CAP_IE_HDR_LEN;
|
|
|
+
|
|
|
+ /* from here ext cap ie starts, set EID */
|
|
|
+ local_ie_buf[*local_ie_len] = DOT11F_EID_EXTCAP;
|
|
|
|
|
|
wlan_cfg_get_int(mac_ctx, WNI_CFG_DOT11_MODE, &dot11mode);
|
|
|
if (IS_DOT11_MODE_VHT(dot11mode))
|
|
@@ -2421,6 +2421,8 @@ QDF_STATUS lim_update_ext_cap_ie(tpAniSirGlobal mac_ctx,
|
|
|
if (eSIR_SUCCESS != status) {
|
|
|
pe_err("Failed %d to create ext cap IE. Use default value instead",
|
|
|
status);
|
|
|
+ local_ie_buf[*local_ie_len + 1] = DOT11F_IE_EXTCAP_MAX_LEN;
|
|
|
+ (*local_ie_len) += EXT_CAP_IE_HDR_LEN;
|
|
|
qdf_mem_copy(local_ie_buf + (*local_ie_len),
|
|
|
default_scan_ext_cap.bytes,
|
|
|
DOT11F_IE_EXTCAP_MAX_LEN);
|
|
@@ -2428,7 +2430,8 @@ QDF_STATUS lim_update_ext_cap_ie(tpAniSirGlobal mac_ctx,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
lim_merge_extcap_struct(&driver_ext_cap, &default_scan_ext_cap, true);
|
|
|
-
|
|
|
+ local_ie_buf[*local_ie_len + 1] = driver_ext_cap.num_bytes;
|
|
|
+ (*local_ie_len) += EXT_CAP_IE_HDR_LEN;
|
|
|
qdf_mem_copy(local_ie_buf + (*local_ie_len),
|
|
|
driver_ext_cap.bytes, driver_ext_cap.num_bytes);
|
|
|
(*local_ie_len) += driver_ext_cap.num_bytes;
|