diff --git a/wmi/inc/wmi_unified_ap_api.h b/wmi/inc/wmi_unified_ap_api.h index 92eca5e05e..3cff7309cd 100644 --- a/wmi/inc/wmi_unified_ap_api.h +++ b/wmi/inc/wmi_unified_ap_api.h @@ -492,6 +492,21 @@ QDF_STATUS wmi_unified_send_multiple_vdev_restart_req_cmd( wmi_unified_t wmi_handle, struct multiple_vdev_restart_params *param); +/** + * wmi_extract_peer_create_response_event() - + * extract vdev id and peer mac address and status from peer create + * response event + * @wmi_handle: wmi handle + * @evt_buf: pointer to event buffer + * @param: Pointer to hold evt buf + * + * Return: QDF_STATUS_SUCCESS for success or error code + */ +QDF_STATUS wmi_extract_peer_create_response_event( + wmi_unified_t wmi_handle, + uint8_t *evt_buf, + struct wmi_host_peer_create_response_event *param); + /** * wmi_extract_peer_delete_response_event() - * extract vdev id and peer mac addresse from peer delete response event diff --git a/wmi/src/wmi_unified_ap_api.c b/wmi/src/wmi_unified_ap_api.c index 5bcbfe424e..e4ace4085b 100644 --- a/wmi/src/wmi_unified_ap_api.c +++ b/wmi/src/wmi_unified_ap_api.c @@ -306,6 +306,19 @@ QDF_STATUS wmi_extract_dcs_im_tgt_stats(wmi_unified_t wmi_handle, void *evt_buf, return QDF_STATUS_E_FAILURE; } +QDF_STATUS wmi_extract_peer_create_response_event( + wmi_unified_t wmi_handle, + uint8_t *evt_buf, + struct wmi_host_peer_create_response_event *param) +{ + if (wmi_handle->ops->extract_peer_create_response_event) + return wmi_handle->ops->extract_peer_create_response_event( + wmi_handle, + evt_buf, param); + + return QDF_STATUS_E_FAILURE; +} + QDF_STATUS wmi_extract_peer_delete_response_event( wmi_unified_t wmi_handle, uint8_t *evt_buf, diff --git a/wmi/src/wmi_unified_ap_tlv.c b/wmi/src/wmi_unified_ap_tlv.c index ff30365595..2f44cce0db 100644 --- a/wmi/src/wmi_unified_ap_tlv.c +++ b/wmi/src/wmi_unified_ap_tlv.c @@ -1354,6 +1354,38 @@ static QDF_STATUS extract_dcs_im_tgt_stats_tlv(wmi_unified_t wmi_handle, return QDF_STATUS_SUCCESS; } +/* + * extract_peer_create_response_event_tlv() - extract peer create response event + * @wmi_handle: wmi handle + * @param evt_buf: pointer to event buffer + * @param vdev_id: Pointer to hold vdev_id + * @param mac_addr: Pointer to hold peer mac address + * @param status: Peer create status + * + * Return: QDF_STATUS_SUCCESS for success or error code + */ +static QDF_STATUS extract_peer_create_response_event_tlv(wmi_unified_t wmi_hdl, + void *evt_buf, struct wmi_host_peer_create_response_event *param) +{ + WMI_PEER_CREATE_CONF_EVENTID_param_tlvs *param_buf; + wmi_peer_create_conf_event_fixed_param *ev; + + param_buf = (WMI_PEER_CREATE_CONF_EVENTID_param_tlvs *)evt_buf; + + ev = (wmi_peer_create_conf_event_fixed_param *) param_buf->fixed_param; + if (!ev) { + WMI_LOGE("%s: Invalid peer_create response", __func__); + return QDF_STATUS_E_FAILURE; + } + + param->vdev_id = ev->vdev_id; + WMI_MAC_ADDR_TO_CHAR_ARRAY(&ev->peer_macaddr, + ¶m->mac_address.bytes[0]); + param->status = ev->status; + + return QDF_STATUS_SUCCESS; +} + /* * extract_peer_delete_response_event_tlv() - extract peer delete response event * @wmi_handle: wmi handle @@ -2589,6 +2621,8 @@ void wmi_ap_attach_tlv(wmi_unified_t wmi_handle) ops->extract_dcs_interference_type = extract_dcs_interference_type_tlv; ops->extract_dcs_cw_int = extract_dcs_cw_int_tlv; ops->extract_dcs_im_tgt_stats = extract_dcs_im_tgt_stats_tlv; + ops->extract_peer_create_response_event = + extract_peer_create_response_event_tlv; ops->extract_peer_delete_response_event = extract_peer_delete_response_event_tlv; ops->extract_pdev_csa_switch_count_status =