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:
@@ -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_ */
|
||||||
|
@@ -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
|
||||||
|
@@ -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*/
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
|
@@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user