qcacmn: Support roam start and roam abort request in CM

Add support for roam start and roam abort request
in connection manager.

CRs-Fixed: 2882233
Change-Id: I5780e7f22363ee6014d39b0df9cb068b4afdd71c
Esse commit está contido em:
Amruta Kulkarni
2021-02-19 15:02:36 -08:00
commit de snandini
commit 64b096fde9
12 arquivos alterados com 373 adições e 34 exclusões

Ver arquivo

@@ -217,6 +217,20 @@ typedef QDF_STATUS
enum netif_action_type action,
enum netif_reason_type reason);
/**
* typedef os_if_cm_napi_serialize_ctrl_cb: Callback to update
* NAPI serialization
* @action: bool action to take on napi serialization
*
* This callback indicates legacy modules to take the actions
* related to napi serialization
*
* Context: Any context.
* Return: QDF_STATUS
*/
typedef QDF_STATUS
(*os_if_cm_napi_serialize_ctrl_cb)(bool action);
/**
* osif_cm_unlink_bss() - function to unlink bss from kernel and scan database
* on connect timeouts reasons
@@ -251,6 +265,8 @@ void osif_cm_unlink_bss(struct wlan_objmgr_vdev *vdev,
* legacy modules
* @osif_cm_netif_queue_ctrl_cb: callback to legacy module to take
* actions on netif queue
* @os_if_cm_napi_serialize_ctrl_cb: callback to legacy module to take
* actions on napi serialization
* @save_gtk_cb : callback to legacy module to save gtk
* @set_hlp_data_cb: callback to legacy module to save hlp data
*/
@@ -259,6 +275,7 @@ struct osif_cm_ops {
osif_cm_disconnect_comp_cb disconnect_complete_cb;
#ifdef CONN_MGR_ADV_FEATURE
osif_cm_netif_queue_ctrl_cb netif_queue_control_cb;
os_if_cm_napi_serialize_ctrl_cb napi_serialize_control_cb;
#endif
#ifdef WLAN_FEATURE_FILS_SK
osif_cm_save_gtk_cb save_gtk_cb;
@@ -314,6 +331,18 @@ QDF_STATUS osif_cm_disconnect_comp_ind(struct wlan_objmgr_vdev *vdev,
QDF_STATUS osif_cm_netif_queue_ind(struct wlan_objmgr_vdev *vdev,
enum netif_action_type action,
enum netif_reason_type reason);
/**
* osif_cm_napi_serialize() - Function to indicate napi serialize
* action to legacy module
* @action: Action to take on napi serialization
*
* This function indicates to take the actions related to napi activities
*
* Context: Any context.
* Return: QDF_STATUS
*/
QDF_STATUS osif_cm_napi_serialize(bool action);
#endif
#ifdef WLAN_FEATURE_FILS_SK

Ver arquivo

@@ -296,6 +296,7 @@ osif_cm_disable_netif_queue(struct wlan_objmgr_vdev *vdev)
return QDF_STATUS_SUCCESS;
}
#endif
/**
* osif_cm_disconnect_start_cb() - Disconnect start callback
* @vdev: vdev pointer
@@ -312,12 +313,53 @@ osif_cm_disconnect_start_cb(struct wlan_objmgr_vdev *vdev)
return osif_cm_disable_netif_queue(vdev);
}
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/**
* osif_cm_roam_start_cb() - Roam start callback
* @vdev: vdev pointer
*
* This callback indicates os_if that roaming has started
* so that os_if can stop all the activity on this connection
*
* Return: QDF_STATUS
*/
static QDF_STATUS
osif_cm_roam_start_cb(struct wlan_objmgr_vdev *vdev)
{
return osif_cm_netif_queue_ind(vdev,
WLAN_STOP_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
}
/**
* osif_cm_roam_abort_cb() - Roam abort callback
* @vdev: vdev pointer
*
* This callback indicates os_if that roaming has been aborted
* so that os_if can stop all the activity on this connection
*
* Return: QDF_STATUS
*/
static QDF_STATUS
osif_cm_roam_abort_cb(struct wlan_objmgr_vdev *vdev)
{
osif_cm_napi_serialize(false);
return osif_cm_netif_queue_ind(vdev,
WLAN_WAKE_ALL_NETIF_QUEUE,
WLAN_CONTROL_PATH);
}
#endif
static struct mlme_cm_ops cm_ops = {
.mlme_cm_connect_complete_cb = osif_cm_connect_complete_cb,
.mlme_cm_failed_candidate_cb = osif_cm_failed_candidate_cb,
.mlme_cm_update_id_and_src_cb = osif_cm_update_id_and_src_cb,
.mlme_cm_disconnect_complete_cb = osif_cm_disconnect_complete_cb,
.mlme_cm_disconnect_start_cb = osif_cm_disconnect_start_cb,
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
.mlme_cm_roam_start_cb = osif_cm_roam_start_cb,
.mlme_cm_roam_abort_cb = osif_cm_roam_abort_cb,
#endif
};
/**
@@ -417,8 +459,20 @@ QDF_STATUS osif_cm_netif_queue_ind(struct wlan_objmgr_vdev *vdev,
return ret;
}
#endif
QDF_STATUS osif_cm_napi_serialize(bool action)
{
os_if_cm_napi_serialize_ctrl_cb cb = NULL;
QDF_STATUS ret = QDF_STATUS_SUCCESS;
if (osif_cm_legacy_ops)
cb = osif_cm_legacy_ops->napi_serialize_control_cb;
if (cb)
ret = cb(action);
return ret;
}
#endif
#ifdef WLAN_FEATURE_FILS_SK
QDF_STATUS osif_cm_save_gtk(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_resp *rsp)