qcacmn: Add WMI support to enable injector frame cmd

Add corresponding WMI host param for enabling the
injector frame on the AP.

CRs-fixed: 2640751
Change-Id: I00a634375e0eafbacfd505aa39dce9c8d90804c6
This commit is contained in:
Rhythm Patwa
2020-03-11 15:10:31 -07:00
committed by nshrivas
parent 1da6b755af
commit 78ddddb141
5 changed files with 84 additions and 0 deletions

View File

@@ -3912,4 +3912,16 @@ wmi_unified_extract_time_sync_ftm_offset(wmi_unified_t wmi_handle,
struct ftm_time_sync_offset *param); struct ftm_time_sync_offset *param);
#endif /* FEATURE_WLAN_TIME_SYNC_FTM */ #endif /* FEATURE_WLAN_TIME_SYNC_FTM */
/**
* wmi_unified_send_injector_frame_config_cmd() - configure injector frame
* @wmi_handle: wmi handle
* @param: params received in the injector frame configure command
*
* This function configures the AP to send out injector frames
*
* Return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS
wmi_unified_send_injector_frame_config_cmd(wmi_unified_t wmi_handle,
struct wmi_host_injector_frame_params *param);
#endif /* _WMI_UNIFIED_API_H_ */ #endif /* _WMI_UNIFIED_API_H_ */

View File

@@ -7352,6 +7352,22 @@ struct wmi_host_obss_spatial_reuse_set_def_thresh {
}; };
#endif #endif
/**
* struct wmi_host_injector_frame_params - Injector frame configuration params
* @vdev_id: vdev identifer of VAP
* @enable: Enable/disable flag for the frame
* @frame_type: Frame type to be enabled
* @frame_inject_period: Periodicity of injector frame transmission
* @dstmac: Destination address to be used for the frame
*/
struct wmi_host_injector_frame_params {
uint32_t vdev_id;
uint32_t enable;
uint32_t frame_type;
uint32_t frame_inject_period;
uint8_t dstmac[QDF_MAC_ADDR_SIZE];
};
/** /**
* struct wds_entry - WDS entry structure * struct wds_entry - WDS entry structure
* @peer_mac: peer mac * @peer_mac: peer mac

View File

@@ -2254,6 +2254,9 @@ QDF_STATUS (*extract_time_sync_ftm_offset_event)(
#endif /* FEATURE_WLAN_TIME_SYNC_FTM */ #endif /* FEATURE_WLAN_TIME_SYNC_FTM */
QDF_STATUS (*send_roam_scan_ch_list_req_cmd)(wmi_unified_t wmi_hdl, QDF_STATUS (*send_roam_scan_ch_list_req_cmd)(wmi_unified_t wmi_hdl,
uint32_t vdev_id); uint32_t vdev_id);
QDF_STATUS (*send_injector_config_cmd)(wmi_unified_t wmi_handle,
struct wmi_host_injector_frame_params *params);
}; };
/* Forward declartion for psoc*/ /* Forward declartion for psoc*/

View File

@@ -3196,3 +3196,15 @@ QDF_STATUS wmi_unified_extract_time_sync_ftm_offset(
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
#endif /* FEATURE_WLAN_TIME_SYNC_FTM */ #endif /* FEATURE_WLAN_TIME_SYNC_FTM */
QDF_STATUS
wmi_unified_send_injector_frame_config_cmd(wmi_unified_t wmi_handle,
struct wmi_host_injector_frame_params *param)
{
if (wmi_handle->ops->send_injector_config_cmd) {
return wmi_handle->ops->send_injector_config_cmd(wmi_handle,
param);
}
return QDF_STATUS_E_FAILURE;
}

View File

@@ -8477,6 +8477,46 @@ QDF_STATUS send_obss_spatial_reuse_set_cmd_tlv(wmi_unified_t wmi_handle,
} }
#endif #endif
static
QDF_STATUS send_injector_config_cmd_tlv(wmi_unified_t wmi_handle,
struct wmi_host_injector_frame_params *inject_config_params)
{
wmi_buf_t buf;
wmi_frame_inject_cmd_fixed_param *cmd;
QDF_STATUS ret;
uint32_t len;
len = sizeof(*cmd);
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf)
return QDF_STATUS_E_NOMEM;
cmd = (wmi_frame_inject_cmd_fixed_param *)wmi_buf_data(buf);
WMITLV_SET_HDR(&cmd->tlv_header,
WMITLV_TAG_STRUC_wmi_frame_inject_cmd_fixed_param,
WMITLV_GET_STRUCT_TLVLEN
(wmi_frame_inject_cmd_fixed_param));
cmd->vdev_id = inject_config_params->vdev_id;
cmd->enable = inject_config_params->enable;
cmd->frame_type = inject_config_params->frame_type;
cmd->frame_inject_period = inject_config_params->frame_inject_period;
WMI_CHAR_ARRAY_TO_MAC_ADDR(inject_config_params->dstmac,
&cmd->frame_addr1);
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
WMI_PDEV_FRAME_INJECT_CMDID);
if (QDF_IS_STATUS_ERROR(ret)) {
WMI_LOGE(
"WMI_PDEV_FRAME_INJECT_CMDID send returned Error %d",
ret);
wmi_buf_free(buf);
}
return ret;
}
#ifdef QCA_SUPPORT_CP_STATS #ifdef QCA_SUPPORT_CP_STATS
/** /**
* extract_cca_stats_tlv - api to extract congestion stats from event buffer * extract_cca_stats_tlv - api to extract congestion stats from event buffer
@@ -13727,6 +13767,7 @@ struct wmi_ops tlv_ops = {
extract_time_sync_ftm_offset_event_tlv, extract_time_sync_ftm_offset_event_tlv,
#endif /* FEATURE_WLAN_TIME_SYNC_FTM */ #endif /* FEATURE_WLAN_TIME_SYNC_FTM */
.send_roam_scan_ch_list_req_cmd = send_roam_scan_ch_list_req_cmd_tlv, .send_roam_scan_ch_list_req_cmd = send_roam_scan_ch_list_req_cmd_tlv,
.send_injector_config_cmd = send_injector_config_cmd_tlv,
}; };
/** /**