qcacld-3.0: wma to target_if migration of roam_auth_offload_event

Currently, wmi_roam_auth_offload_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.

Change-Id: I128db23077d423c5e5ecf27636bc3af35cbbc58f
CRs-Fixed: 3010419
This commit is contained in:
Vijay Patil
2021-08-16 15:08:00 +05:30
committed by Madan Koyyalamudi
parent 4de129d045
commit 23999e417d
10 changed files with 199 additions and 2 deletions

View File

@@ -381,6 +381,20 @@ QDF_STATUS
wmi_extract_roam_stats_event(wmi_unified_t wmi_handle,
uint8_t *event, uint32_t data_len,
struct roam_stats_event **stats_info);
/**
* wmi_extract_auth_offload_event - Extract auth offload event
* @wmi_handle: WMI handle
* @event: Event data received from firmware
* @data_len: Event data length received from firmware
* @roam_event: Extract the event and fill in auth_event
*
* Return: QDF_STATUS
*/
QDF_STATUS
wmi_extract_auth_offload_event(wmi_unified_t wmi_handle,
uint8_t *event, uint32_t data_len,
struct auth_offload_event *auth_event);
#endif /* ROAM_TARGET_IF_CONVERGENCE */
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */

View File

@@ -461,5 +461,18 @@ wmi_extract_roam_stats_event(wmi_unified_t wmi_handle,
return QDF_STATUS_E_FAILURE;
}
QDF_STATUS
wmi_extract_auth_offload_event(wmi_unified_t wmi_handle,
uint8_t *event, uint32_t data_len,
struct auth_offload_event *auth_event)
{
if (wmi_handle->ops->extract_auth_offload_event)
return wmi_handle->ops->extract_auth_offload_event(wmi_handle,
event,
data_len,
auth_event);
return QDF_STATUS_E_FAILURE;
}
#endif /* ROAM_TARGET_IF_CONVERGENCE */
#endif

View File

@@ -2991,6 +2991,44 @@ err:
}
return status;
}
static QDF_STATUS
extract_auth_offload_event_tlv(wmi_unified_t wmi_handle,
uint8_t *event, uint32_t len,
struct auth_offload_event *auth_event)
{
wmi_roam_preauth_start_event_fixed_param *rso_auth_start_ev;
WMI_ROAM_PREAUTH_START_EVENTID_param_tlvs *param_buf;
param_buf = (WMI_ROAM_PREAUTH_START_EVENTID_param_tlvs *) event;
rso_auth_start_ev = param_buf->fixed_param;
if (!rso_auth_start_ev) {
wmi_debug("received null event data from target");
return QDF_STATUS_E_INVAL;
}
if (rso_auth_start_ev->vdev_id > WLAN_MAX_VDEVS) {
wmi_debug("received invalid vdev_id %d",
rso_auth_start_ev->vdev_id);
return QDF_STATUS_E_INVAL;
}
auth_event->vdev_id = rso_auth_start_ev->vdev_id;
WMI_MAC_ADDR_TO_CHAR_ARRAY(&rso_auth_start_ev->candidate_ap_bssid,
auth_event->ap_bssid.bytes);
if (qdf_is_macaddr_zero(&auth_event->ap_bssid) ||
qdf_is_macaddr_broadcast(&auth_event->ap_bssid) ||
qdf_is_macaddr_group(&auth_event->ap_bssid)) {
wmi_debug("Invalid bssid");
return -EINVAL;
}
wmi_debug("Received Roam auth offload event for bss:"QDF_MAC_ADDR_FMT" vdev_id:%d",
QDF_MAC_ADDR_REF(auth_event->ap_bssid.bytes), auth_event->vdev_id);
return QDF_STATUS_SUCCESS;
}
#endif
void wmi_roam_offload_attach_tlv(wmi_unified_t wmi_handle)
@@ -3009,6 +3047,7 @@ void wmi_roam_offload_attach_tlv(wmi_unified_t wmi_handle)
ops->extract_vdev_disconnect_event = extract_vdev_disconnect_event_tlv;
ops->extract_roam_scan_chan_list = extract_roam_scan_chan_list_tlv;
ops->extract_roam_stats_event = extract_roam_stats_event_tlv;
ops->extract_auth_offload_event = extract_auth_offload_event_tlv;
#endif /* ROAM_TARGET_IF_CONVERGENCE */
ops->send_set_ric_req_cmd = send_set_ric_req_cmd_tlv;
ops->send_process_roam_synch_complete_cmd =