qcacmn: Support for Quiet IE count change in bcn

Added support for quiet IE count change in beacon for beacon
offload case.

Change-Id: Ic8de5910588b58c8ffce48ea888afe8e6ed30dc9
CRs-Fixed: 2334134
This commit is contained in:
Abhiram Jogadenu
2018-10-16 16:16:41 +05:30
committed by nshrivas
parent a3be364dfb
commit ba7946a147
5 changed files with 93 additions and 0 deletions

View File

@@ -284,6 +284,26 @@ QDF_STATUS wmi_unified_set_quiet_mode_cmd_send(void *wmi_hdl,
return QDF_STATUS_E_FAILURE;
}
/**
* wmi_unified_set_bcn_offload_quiet_mode_cmd_send - WMI set quiet mode
* function in beacon offload case
* @param wmi_handle : handle to WMI.
* @param param : pointer to hold quiet mode param in bcn offload
*
* @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS wmi_unified_set_bcn_offload_quiet_mode_cmd_send(void *wmi_hdl,
struct set_bcn_offload_quiet_mode_params *param)
{
wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl;
if (wmi_handle->ops->send_set_bcn_offload_quiet_mode_cmd)
return wmi_handle->ops->send_set_bcn_offload_quiet_mode_cmd(
wmi_handle, param);
return QDF_STATUS_E_FAILURE;
}
/**
* wmi_send_bcn_offload_control_cmd - send beacon ofload control cmd to fw
* @wmi_hdl: wmi handle

View File

@@ -794,6 +794,55 @@ send_set_quiet_mode_cmd_tlv(wmi_unified_t wmi_handle,
return ret;
}
/**
* send_set_bcn_offload_quiet_mode_cmd_tlv() - send set quiet mode command to fw
* @wmi_handle: wmi handle
* @param: pointer to quiet mode params in bcn offload mode
*
* Return: 0 for success or error code
*/
static QDF_STATUS
send_set_bcn_offload_quiet_mode_cmd_tlv(wmi_unified_t wmi_handle,
struct set_bcn_offload_quiet_mode_params *param)
{
wmi_vdev_bcn_offload_quiet_config_cmd_fixed_param *quiet_cmd;
wmi_buf_t buf;
QDF_STATUS ret;
int32_t len;
len = sizeof(*quiet_cmd);
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf) {
WMI_LOGE("%s: wmi_buf_alloc failed", __func__);
return QDF_STATUS_E_FAILURE;
}
quiet_cmd = (wmi_vdev_bcn_offload_quiet_config_cmd_fixed_param *)
wmi_buf_data(buf);
WMITLV_SET_HDR(&quiet_cmd->tlv_header,
WMITLV_TAG_STRUC_wmi_vdev_bcn_offload_quiet_config_cmd_fixed_param,
WMITLV_GET_STRUCT_TLVLEN(
wmi_vdev_bcn_offload_quiet_config_cmd_fixed_param));
quiet_cmd = (wmi_vdev_bcn_offload_quiet_config_cmd_fixed_param *)
wmi_buf_data(buf);
quiet_cmd->vdev_id = param->vdev_id;
quiet_cmd->period = param->period;
quiet_cmd->duration = param->duration;
quiet_cmd->next_start = param->next_start;
quiet_cmd->flags = param->flag;
wmi_mtrace(WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID, NO_SESSION, 0);
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID);
if (ret != 0) {
WMI_LOGE("Sending set quiet cmd failed");
wmi_buf_free(buf);
}
return ret;
}
/**
* send_bcn_offload_control_cmd_tlv - send beacon ofload control cmd to fw
* @wmi_handle: wmi handle
@@ -2578,6 +2627,8 @@ void wmi_ap_attach_tlv(wmi_unified_t wmi_handle)
ops->send_set_ht_ie_cmd = send_set_ht_ie_cmd_tlv;
ops->send_set_vht_ie_cmd = send_set_vht_ie_cmd_tlv;
ops->send_set_quiet_mode_cmd = send_set_quiet_mode_cmd_tlv;
ops->send_set_bcn_offload_quiet_mode_cmd =
send_set_bcn_offload_quiet_mode_cmd_tlv;
ops->send_bcn_offload_control_cmd = send_bcn_offload_control_cmd_tlv;
ops->extract_tbttoffset_update_params =
extract_tbttoffset_update_params_tlv;