qcacld-3.0: Enable vdev manager support for LFR3.0
Enable vdev manager support for LFR3.0 Change-Id: I5e8a420eadd98786fe43d7d6e60980209f7a42e1 CRs-Fixed: 2405842
这个提交包含在:
@@ -197,6 +197,26 @@ static QDF_STATUS sta_mlme_vdev_notify_up_complete(struct vdev_mlme_obj *vdev_ml
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* sta_mlme_vdev_notify_roam_start() - MLME vdev Roam start callback
|
||||
* @vdev_mlme: vdev mlme object
|
||||
* @event_data_len: event data length
|
||||
* @event_data: event data
|
||||
*
|
||||
* This function is called to VDEV MLME on roaming
|
||||
* to UP state
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static
|
||||
QDF_STATUS sta_mlme_vdev_notify_roam_start(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t event_data_len,
|
||||
void *event_data)
|
||||
{
|
||||
return wma_sta_mlme_vdev_roam_notify(vdev_mlme, event_data_len,
|
||||
event_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* sta_mlme_vdev_disconnect_bss() - MLME vdev disconnect bss callback
|
||||
* @vdev_mlme: vdev mlme object
|
||||
@@ -715,6 +735,7 @@ static struct vdev_mlme_ops sta_mlme_ops = {
|
||||
.mlme_vdev_sta_conn_start = sta_mlme_vdev_start_connection,
|
||||
.mlme_vdev_up_send = sta_mlme_vdev_up_send,
|
||||
.mlme_vdev_notify_up_complete = sta_mlme_vdev_notify_up_complete,
|
||||
.mlme_vdev_notify_roam_start = sta_mlme_vdev_notify_roam_start,
|
||||
.mlme_vdev_disconnect_peers = sta_mlme_vdev_disconnect_bss,
|
||||
.mlme_vdev_stop_send = sta_mlme_vdev_stop_send,
|
||||
.mlme_vdev_stop_continue = vdevmgr_mlme_stop_continue,
|
||||
|
@@ -461,6 +461,20 @@ void wma_set_channel_switch_in_progress(struct wma_txrx_node *iface)
|
||||
QDF_STATUS wma_sta_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t data_len, void *data);
|
||||
|
||||
/**
|
||||
* wma_sta_mlme_vdev_roam_notify - VDEV roam notify handling
|
||||
* @vdev_mlme_obj: VDEV MLME comp object
|
||||
* @data_len: data size
|
||||
* @data: event data
|
||||
*
|
||||
* API invokes VDEV roam event handling
|
||||
*
|
||||
* Return: SUCCESS on successful completion of roam event handling
|
||||
* FAILURE, if it fails due to any
|
||||
*/
|
||||
QDF_STATUS wma_sta_mlme_vdev_roam_notify(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t data_len, void *data);
|
||||
|
||||
/**
|
||||
* wma_ap_mlme_vdev_start_continue - VDEV start response handling
|
||||
* @vdev_mlme_obj: VDEV MLME comp object
|
||||
|
@@ -205,6 +205,20 @@ void wma_process_roam_synch_fail(WMA_HANDLE handle,
|
||||
int wma_roam_synch_event_handler(void *handle, uint8_t *event,
|
||||
uint32_t len);
|
||||
|
||||
/**
|
||||
* wma_mlme_roam_synch_event_handler_cb() - roam synch event handler
|
||||
* @handle: wma handle
|
||||
* @event: event data
|
||||
* @len: length of data
|
||||
*
|
||||
* This function is roam synch event handler. It sends roam
|
||||
* indication for upper layer.
|
||||
*
|
||||
* Return: Success or Failure status
|
||||
*/
|
||||
int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event,
|
||||
uint32_t len);
|
||||
|
||||
/**
|
||||
* wma_roam_synch_frame_event_handler() - roam synch frame event handler
|
||||
* @handle: wma handle
|
||||
|
@@ -2389,19 +2389,8 @@ static void wma_roam_update_vdev(tp_wma_handle wma,
|
||||
qdf_mem_free(add_sta_params);
|
||||
}
|
||||
|
||||
/**
|
||||
* wma_roam_synch_event_handler() - roam synch event handler
|
||||
* @handle: wma handle
|
||||
* @event: event data
|
||||
* @len: length of data
|
||||
*
|
||||
* This function is roam synch event handler. It sends roam
|
||||
* indication for upper layer.
|
||||
*
|
||||
* Return: Success or Failure status
|
||||
*/
|
||||
int wma_roam_synch_event_handler(void *handle, uint8_t *event,
|
||||
uint32_t len)
|
||||
int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event,
|
||||
uint32_t len)
|
||||
{
|
||||
WMI_ROAM_SYNCH_EVENTID_param_tlvs *param_buf = NULL;
|
||||
wmi_roam_synch_event_fixed_param *synch_event = NULL;
|
||||
@@ -2787,6 +2776,78 @@ int wma_roam_synch_frame_event_handler(void *handle, uint8_t *event,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_VDEV_SM
|
||||
/**
|
||||
* __wma_roam_synch_event_handler() - roam synch event handler
|
||||
* @handle: wma handle
|
||||
* @event: event data
|
||||
* @len: length of data
|
||||
*
|
||||
* This function is roam synch event handler.It sends roam
|
||||
* indication for upper layer.
|
||||
*
|
||||
* Return: Success or Failure status
|
||||
*/
|
||||
int wma_roam_synch_event_handler(void *handle, uint8_t *event,
|
||||
uint32_t len)
|
||||
{
|
||||
QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
|
||||
int status = -EINVAL;
|
||||
tp_wma_handle wma = (tp_wma_handle) handle;
|
||||
struct wma_txrx_node *iface = NULL;
|
||||
wmi_roam_synch_event_fixed_param *synch_event = NULL;
|
||||
WMI_ROAM_SYNCH_EVENTID_param_tlvs *param_buf = NULL;
|
||||
|
||||
if (!event) {
|
||||
wma_err_rl("event param null");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
param_buf = (WMI_ROAM_SYNCH_EVENTID_param_tlvs *)event;
|
||||
if (!param_buf) {
|
||||
wma_err_rl("received null buf from target");
|
||||
goto cleanup;
|
||||
}
|
||||
synch_event = param_buf->fixed_param;
|
||||
if (!synch_event) {
|
||||
wma_err_rl("received null event data from target");
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (synch_event->vdev_id >= wma->max_bssid) {
|
||||
wma_err_rl("received invalid vdev_id %d",
|
||||
synch_event->vdev_id);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
iface = &wma->interfaces[synch_event->vdev_id];
|
||||
qdf_status = wlan_vdev_mlme_sm_deliver_evt(iface->vdev,
|
||||
WLAN_VDEV_SM_EV_ROAM,
|
||||
sizeof(*synch_event),
|
||||
synch_event);
|
||||
if (QDF_IS_STATUS_ERROR(qdf_status)) {
|
||||
wma_err("Failed to send the EV_ROAM");
|
||||
} else {
|
||||
wma_debug("Posted EV_ROAM to VDEV SM");
|
||||
return 0;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if (wma && synch_event)
|
||||
iface->roam_synch_in_progress = false;
|
||||
|
||||
return status;
|
||||
}
|
||||
#else
|
||||
int wma_roam_synch_event_handler(void *handle, uint8_t *event,
|
||||
uint32_t len)
|
||||
{
|
||||
wma_mlme_roam_synch_event_handler_cb(handle, event, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define RSN_CAPS_SHIFT 16
|
||||
/**
|
||||
* wma_roam_scan_fill_self_caps() - fill capabilities
|
||||
|
@@ -4923,6 +4923,22 @@ QDF_STATUS wma_sta_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS wma_sta_mlme_vdev_roam_notify(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t data_len, void *data)
|
||||
{
|
||||
tp_wma_handle wma = cds_get_context(QDF_MODULE_ID_WMA);
|
||||
int ret;
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
|
||||
ret = wma_mlme_roam_synch_event_handler_cb(wma, data, data_len);
|
||||
if (ret != 0) {
|
||||
wma_err("Failed to process roam synch event");
|
||||
status = QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS wma_ap_mlme_vdev_start_continue(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t data_len, void *data)
|
||||
{
|
||||
|
在新工单中引用
屏蔽一个用户