mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
qcacmn: Add support to event WLAN_VDEV_SM_EV_ROAM
- Add supprot to event 'WLAN_VDEV_SM_EV_ROAM'. - WLAN_VDEV_SM_EV_ROAM - roaming event to notify the vdev manager about the firmware triggered roaming. Change-Id: I249664e72ba5fe0e13ddc8e59533489c69963f5f CRs-Fixed: 2337795
This commit is contained in:
parent
433e0e3710
commit
0a4d67bf73
3 changed files with 81 additions and 43 deletions
|
|
@ -72,6 +72,7 @@ enum vdev_cmd_type {
|
|||
* MLME up operation
|
||||
* @mlme_vdev_notify_up_complete: callback to notify VDEV MLME on moving
|
||||
* to UP state
|
||||
* @mlme_vdev_notify_roam_start: callback to initiate roaming
|
||||
* @mlme_vdev_update_beacon: callback to initiate beacon update
|
||||
* @mlme_vdev_disconnect_peers: callback to initiate disconnection of
|
||||
* peers
|
||||
|
|
@ -123,6 +124,9 @@ struct vdev_mlme_ops {
|
|||
QDF_STATUS (*mlme_vdev_notify_up_complete)(
|
||||
struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t event_data_len, void *event_data);
|
||||
QDF_STATUS (*mlme_vdev_notify_roam_start)(
|
||||
struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t event_data_len, void *event_data);
|
||||
QDF_STATUS (*mlme_vdev_update_beacon)(
|
||||
struct vdev_mlme_obj *vdev_mlme,
|
||||
enum beacon_update_op op,
|
||||
|
|
@ -401,19 +405,44 @@ static inline QDF_STATUS mlme_vdev_up_send(
|
|||
* Return: SUCCESS on successful completion of up notification
|
||||
* FAILURE, if it fails due to any
|
||||
*/
|
||||
static inline QDF_STATUS mlme_vdev_notify_up_complete(
|
||||
struct vdev_mlme_obj *vdev_mlme,
|
||||
static inline
|
||||
QDF_STATUS mlme_vdev_notify_up_complete(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t event_data_len, void *event_data)
|
||||
{
|
||||
QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
||||
|
||||
if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_notify_up_complete)
|
||||
if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_notify_up_complete)
|
||||
ret = vdev_mlme->ops->mlme_vdev_notify_up_complete(
|
||||
vdev_mlme, event_data_len, event_data);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* mlme_vdev_notify_roam_start - VDEV Roaming notification
|
||||
* @vdev_mlme_obj: VDEV MLME comp object
|
||||
* @event_len: data size
|
||||
* @event_data: event data
|
||||
*
|
||||
* API notifies MLME on roaming
|
||||
*
|
||||
* Return: SUCCESS on successful completion of up notification
|
||||
* FAILURE, if it fails due to any
|
||||
*/
|
||||
static inline
|
||||
QDF_STATUS mlme_vdev_notify_roam_start(struct vdev_mlme_obj *vdev_mlme,
|
||||
uint16_t event_len, void *event_data)
|
||||
{
|
||||
QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
||||
|
||||
if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_notify_roam_start)
|
||||
ret = vdev_mlme->ops->mlme_vdev_notify_roam_start(vdev_mlme,
|
||||
event_len,
|
||||
event_data);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* mlme_vdev_update_beacon - Updates beacon
|
||||
* @vdev_mlme_obj: VDEV MLME comp object
|
||||
|
|
@ -426,14 +455,14 @@ static inline QDF_STATUS mlme_vdev_notify_up_complete(
|
|||
* Return: SUCCESS on successful update of beacon
|
||||
* FAILURE, if it fails due to any
|
||||
*/
|
||||
static inline QDF_STATUS mlme_vdev_update_beacon(
|
||||
struct vdev_mlme_obj *vdev_mlme,
|
||||
enum beacon_update_op op,
|
||||
uint16_t event_data_len, void *event_data)
|
||||
static inline
|
||||
QDF_STATUS mlme_vdev_update_beacon(struct vdev_mlme_obj *vdev_mlme,
|
||||
enum beacon_update_op op,
|
||||
uint16_t event_data_len, void *event_data)
|
||||
{
|
||||
QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
||||
|
||||
if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_update_beacon)
|
||||
if (vdev_mlme->ops && vdev_mlme->ops->mlme_vdev_update_beacon)
|
||||
ret = vdev_mlme->ops->mlme_vdev_update_beacon(vdev_mlme, op,
|
||||
event_data_len, event_data);
|
||||
|
||||
|
|
|
|||
|
|
@ -102,36 +102,38 @@ enum wlan_vdev_state {
|
|||
* @WLAN_VDEV_SM_EV_CSA_COMPLETE: Notifiction of CSA process complete
|
||||
* @WLAN_VDEV_SM_EV_MLME_DOWN_REQ: Invoke DOWN command operation
|
||||
* @WLAN_VDEV_SM_EV_DOWN_COMPLETE: Notification of DOWN complete
|
||||
* @WLAN_VDEV_SM_EV_ROAM: Notifiction on ROAMING
|
||||
*/
|
||||
enum wlan_vdev_sm_evt {
|
||||
WLAN_VDEV_SM_EV_START = 0,
|
||||
WLAN_VDEV_SM_EV_START_REQ,
|
||||
WLAN_VDEV_SM_EV_RESTART_REQ,
|
||||
WLAN_VDEV_SM_EV_START_RESP,
|
||||
WLAN_VDEV_SM_EV_RESTART_RESP,
|
||||
WLAN_VDEV_SM_EV_START_REQ_FAIL,
|
||||
WLAN_VDEV_SM_EV_RESTART_REQ_FAIL,
|
||||
WLAN_VDEV_SM_EV_START_SUCCESS,
|
||||
WLAN_VDEV_SM_EV_CONN_PROGRESS,
|
||||
WLAN_VDEV_SM_EV_STA_CONN_START,
|
||||
WLAN_VDEV_SM_EV_START_REQ = 1,
|
||||
WLAN_VDEV_SM_EV_RESTART_REQ = 2,
|
||||
WLAN_VDEV_SM_EV_START_RESP = 3,
|
||||
WLAN_VDEV_SM_EV_RESTART_RESP = 4,
|
||||
WLAN_VDEV_SM_EV_START_REQ_FAIL = 5,
|
||||
WLAN_VDEV_SM_EV_RESTART_REQ_FAIL = 6,
|
||||
WLAN_VDEV_SM_EV_START_SUCCESS = 7,
|
||||
WLAN_VDEV_SM_EV_CONN_PROGRESS = 8,
|
||||
WLAN_VDEV_SM_EV_STA_CONN_START = 9,
|
||||
WLAN_VDEV_SM_EV_DFS_CAC_WAIT = 10,
|
||||
WLAN_VDEV_SM_EV_DFS_CAC_COMPLETED,
|
||||
WLAN_VDEV_SM_EV_DOWN,
|
||||
WLAN_VDEV_SM_EV_CONNECTION_FAIL,
|
||||
WLAN_VDEV_SM_EV_STOP_RESP,
|
||||
WLAN_VDEV_SM_EV_STOP_FAIL,
|
||||
WLAN_VDEV_SM_EV_DOWN_FAIL,
|
||||
WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE,
|
||||
WLAN_VDEV_SM_EV_SUPSEND_RESTART,
|
||||
WLAN_VDEV_SM_EV_HOST_RESTART,
|
||||
WLAN_VDEV_SM_EV_DFS_CAC_COMPLETED = 11,
|
||||
WLAN_VDEV_SM_EV_DOWN = 12,
|
||||
WLAN_VDEV_SM_EV_CONNECTION_FAIL = 13,
|
||||
WLAN_VDEV_SM_EV_STOP_RESP = 14,
|
||||
WLAN_VDEV_SM_EV_STOP_FAIL = 15,
|
||||
WLAN_VDEV_SM_EV_DOWN_FAIL = 16,
|
||||
WLAN_VDEV_SM_EV_DISCONNECT_COMPLETE = 17,
|
||||
WLAN_VDEV_SM_EV_SUPSEND_RESTART = 18,
|
||||
WLAN_VDEV_SM_EV_HOST_RESTART = 19,
|
||||
WLAN_VDEV_SM_EV_UP_HOST_RESTART = 20,
|
||||
WLAN_VDEV_SM_EV_FW_VDEV_RESTART,
|
||||
WLAN_VDEV_SM_EV_UP_FAIL,
|
||||
WLAN_VDEV_SM_EV_RADAR_DETECTED,
|
||||
WLAN_VDEV_SM_EV_CSA_RESTART,
|
||||
WLAN_VDEV_SM_EV_CSA_COMPLETE,
|
||||
WLAN_VDEV_SM_EV_MLME_DOWN_REQ,
|
||||
WLAN_VDEV_SM_EV_DOWN_COMPLETE,
|
||||
WLAN_VDEV_SM_EV_FW_VDEV_RESTART = 21,
|
||||
WLAN_VDEV_SM_EV_UP_FAIL = 22,
|
||||
WLAN_VDEV_SM_EV_RADAR_DETECTED = 23,
|
||||
WLAN_VDEV_SM_EV_CSA_RESTART = 24,
|
||||
WLAN_VDEV_SM_EV_CSA_COMPLETE = 25,
|
||||
WLAN_VDEV_SM_EV_MLME_DOWN_REQ = 26,
|
||||
WLAN_VDEV_SM_EV_DOWN_COMPLETE = 27,
|
||||
WLAN_VDEV_SM_EV_ROAM = 28,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -409,9 +409,9 @@ static bool mlme_vdev_state_up_event(void *ctx, uint16_t event,
|
|||
struct vdev_mlme_obj *vdev_mlme = (struct vdev_mlme_obj *)ctx;
|
||||
enum QDF_OPMODE mode;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
bool status = false;
|
||||
|
||||
vdev = vdev_mlme->vdev;
|
||||
|
||||
mode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
|
||||
switch (event) {
|
||||
|
|
@ -427,7 +427,7 @@ static bool mlme_vdev_state_up_event(void *ctx, uint16_t event,
|
|||
mlme_vdev_notify_up_complete(vdev_mlme, event_data_len,
|
||||
event_data);
|
||||
|
||||
return true;
|
||||
status = true;
|
||||
break;
|
||||
|
||||
case WLAN_VDEV_SM_EV_SUPSEND_RESTART:
|
||||
|
|
@ -441,8 +441,8 @@ static bool mlme_vdev_state_up_event(void *ctx, uint16_t event,
|
|||
mlme_vdev_sm_transition_to(vdev_mlme, WLAN_VDEV_S_SUSPEND);
|
||||
mlme_vdev_sm_deliver_event(vdev_mlme, event,
|
||||
event_data_len, event_data);
|
||||
return true;
|
||||
break;
|
||||
status = true;
|
||||
break;
|
||||
|
||||
case WLAN_VDEV_SM_EV_RADAR_DETECTED:
|
||||
/* These events are not supported in STA mode */
|
||||
|
|
@ -452,8 +452,8 @@ static bool mlme_vdev_state_up_event(void *ctx, uint16_t event,
|
|||
mlme_vdev_sm_deliver_event(vdev_mlme,
|
||||
WLAN_VDEV_SM_EV_CSA_RESTART,
|
||||
event_data_len, event_data);
|
||||
return true;
|
||||
break;
|
||||
status = true;
|
||||
break;
|
||||
|
||||
case WLAN_VDEV_SM_EV_UP_HOST_RESTART:
|
||||
/* Reinit beacon, send template to FW(use ping-pong buffer) */
|
||||
|
|
@ -463,7 +463,7 @@ static bool mlme_vdev_state_up_event(void *ctx, uint16_t event,
|
|||
/* notify that UP command is completed */
|
||||
mlme_vdev_notify_up_complete(vdev_mlme,
|
||||
event_data_len, event_data);
|
||||
return true;
|
||||
status = true;
|
||||
break;
|
||||
|
||||
case WLAN_VDEV_SM_EV_FW_VDEV_RESTART:
|
||||
|
|
@ -471,20 +471,27 @@ static bool mlme_vdev_state_up_event(void *ctx, uint16_t event,
|
|||
mlme_vdev_sm_deliver_event(vdev_mlme,
|
||||
WLAN_VDEV_SM_EV_RESTART_REQ,
|
||||
event_data_len, event_data);
|
||||
return true;
|
||||
status = true;
|
||||
break;
|
||||
|
||||
case WLAN_VDEV_SM_EV_UP_FAIL:
|
||||
mlme_vdev_sm_transition_to(vdev_mlme, WLAN_VDEV_S_SUSPEND);
|
||||
mlme_vdev_sm_deliver_event(vdev_mlme, event,
|
||||
event_data_len, event_data);
|
||||
return true;
|
||||
status = true;
|
||||
break;
|
||||
|
||||
case WLAN_VDEV_SM_EV_ROAM:
|
||||
mlme_vdev_notify_roam_start(vdev_mlme, event_data_len,
|
||||
event_data);
|
||||
status = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue