diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 3bea5ba24617..89539dee7570 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -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;