qcacld-3.0: Set extended cap TWT capabilities in roam offload

Set TWT capabilities in extended capability IE in roam scan
offload request.

Change-Id: I4f07cfff47a2ecc4acf4d43d8885ce65f2fa2141
CRs-Fixed: 2459217
This commit is contained in:
Kiran Kumar Lokere 2019-06-04 18:50:52 -07:00 • committed by nshrivas
commit 0f1f4635cf
4 changed files with 20 additions and 6 deletions

View file

@ -412,8 +412,9 @@ void lim_fill_join_rsp_ht_caps(struct pe_session *session,
struct join_rsp *rsp)
{}
#endif
QDF_STATUS lim_update_ext_cap_ie(struct mac_context *mac_ctx,
uint8_t *ie_data, uint8_t *local_ie_buf, uint16_t *local_ie_len);
QDF_STATUS lim_update_ext_cap_ie(struct mac_context *mac_ctx, uint8_t *ie_data,
uint8_t *local_ie_buf, uint16_t *local_ie_len,
struct pe_session *session);
/**
* lim_handle_sap_beacon(): Handle the beacon received from scan module for SAP

View file

@ -2754,11 +2754,13 @@ void lim_mon_init_session(struct mac_context *mac_ptr,
* @ie_data: Default Scan IE data
* @local_ie_buf: Local Scan IE data
* @local_ie_len: Pointer to length of @ie_data
* @session: Pointer to pe session
*
* Return: QDF_STATUS
*/
QDF_STATUS lim_update_ext_cap_ie(struct mac_context *mac_ctx,
uint8_t *ie_data, uint8_t *local_ie_buf, uint16_t *local_ie_len)
QDF_STATUS lim_update_ext_cap_ie(struct mac_context *mac_ctx, uint8_t *ie_data,
uint8_t *local_ie_buf, uint16_t *local_ie_len,
struct pe_session *session)
{
uint32_t dot11mode;
bool vht_enabled = false;
@ -2806,6 +2808,13 @@ QDF_STATUS lim_update_ext_cap_ie(struct mac_context *mac_ctx,
return QDF_STATUS_SUCCESS;
}
lim_merge_extcap_struct(&driver_ext_cap, &default_scan_ext_cap, true);
if (session)
populate_dot11f_twt_extended_caps(mac_ctx, session,
&driver_ext_cap);
else
pe_err("Session NULL, cannot set TWT caps");
local_ie_buf[*local_ie_len + 1] = driver_ext_cap.num_bytes;
if ((*local_ie_len) > (MAX_DEFAULT_SCAN_IE_LEN -

View file

@ -400,6 +400,7 @@ static void lim_process_set_default_scan_ie_request(struct mac_context *mac_ctx,
uint16_t local_ie_len;
struct scheduler_msg msg_q = {0};
QDF_STATUS ret_code;
struct pe_session *pe_session;
if (!msg_buf) {
pe_err("msg_buf is NULL");
@ -413,9 +414,12 @@ static void lim_process_set_default_scan_ie_request(struct mac_context *mac_ctx,
if (!local_ie_buf)
return;
pe_session = pe_find_session_by_sme_session_id(mac_ctx,
set_ie_params->session_id);
if (lim_update_ext_cap_ie(mac_ctx,
(uint8_t *)set_ie_params->ie_data,
local_ie_buf, &local_ie_len)) {
local_ie_buf, &local_ie_len, pe_session)) {
pe_err("Update ext cap IEs fails");
goto scan_ie_send_fail;
}

View file

@ -3687,7 +3687,7 @@ static void __lim_process_roam_scan_offload_req(struct mac_context *mac_ctx,
/* Update ext cap IE if present */
if (local_ie_len &&
!lim_update_ext_cap_ie(mac_ctx, req_buffer->assoc_ie.addIEdata,
local_ie_buf, &local_ie_len)) {
local_ie_buf, &local_ie_len, pe_session)) {
if (local_ie_len <
QDF_ARRAY_SIZE(req_buffer->assoc_ie.addIEdata)) {
req_buffer->assoc_ie.length = local_ie_len;