|
@@ -97,6 +97,489 @@ QDF_STATUS mlme_vdev_sm_create(struct vdev_mlme_obj *vdev_mlme);
|
|
|
*/
|
|
|
QDF_STATUS mlme_vdev_sm_destroy(struct vdev_mlme_obj *vdev_mlme);
|
|
|
|
|
|
+/**
|
|
|
+ * mlme_vdev_validate_basic_params - Validate basic params
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API validate MLME VDEV basic parameters
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful validation
|
|
|
+ * FAILURE, if any parameter is not initialized
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_validate_basic_params(
|
|
|
+ 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_validate_basic_params)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_validate_basic_params(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_reset_proto_params - Reset VDEV protocol params
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API resets the protocol params fo vdev
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful reset
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_reset_proto_params(
|
|
|
+ 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_reset_proto_params)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_reset_proto_params(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_start_send - Invokes VDEV start operation
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV start operation
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of start operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_start_send(
|
|
|
+ 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_start_send)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_start_send(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_restart_send - Invokes VDEV restart operation
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV restart operation
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of restart operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_restart_send(
|
|
|
+ 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_restart_send)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_restart_send(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_stop_start_send - Invoke block VDEV restart operation
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @restart: restart req/start req
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes stops pending VDEV restart operation
|
|
|
+ *
|
|
|
+ * Return: SUCCESS alsways
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_stop_start_send(
|
|
|
+ struct vdev_mlme_obj *vdev_mlme,
|
|
|
+ uint8_t restart,
|
|
|
+ uint16_t event_data_len, void *event_data)
|
|
|
+{
|
|
|
+ QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
|
|
+
|
|
|
+ if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_stop_start_send)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_stop_start_send(
|
|
|
+ vdev_mlme, restart, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_start_continue - VDEV start response handling
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV start response actions
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of start response operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_start_continue(
|
|
|
+ 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_start_continue)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_start_continue(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_start_req_failed - Invoke Station VDEV connection, if it pause
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes on START fail response
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful invocation of callback
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_start_req_failed(
|
|
|
+ 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_start_req_failed)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_start_req_failed(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_sta_conn_start - Invoke Station VDEV connection, if it pause
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes connection SM to start station connection
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful invocation of connection sm
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_sta_conn_start(
|
|
|
+ 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_sta_conn_start)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_sta_conn_start(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_up_send - VDEV up operation
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV up operations
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of up operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_up_send(
|
|
|
+ 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_up_send)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_up_send(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_notify_up_complete - VDEV up state transition notification
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API notifies MLME on moving to UP state
|
|
|
+ *
|
|
|
+ * 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,
|
|
|
+ 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)
|
|
|
+ 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
|
|
|
+ * @op: beacon update type
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API updates/allocates/frees the beacon
|
|
|
+ *
|
|
|
+ * 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)
|
|
|
+{
|
|
|
+ QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_disconnect_peers - Disconnect peers
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API trigger stations disconnection with AP VDEV or AP disconnection with STA
|
|
|
+ * VDEV
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful invocation of station disconnection
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_disconnect_peers(
|
|
|
+ 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_disconnect_peers)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_disconnect_peers(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_dfs_cac_timer_stop - Stop CAC timer
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API stops the CAC timer through DFS API
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful CAC timer stop
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_dfs_cac_timer_stop(
|
|
|
+ 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_dfs_cac_timer_stop)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_dfs_cac_timer_stop(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_stop_send - Invokes VDEV stop operation
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV stop operation
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of stop operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_stop_send(
|
|
|
+ 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_stop_send)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_stop_send(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_stop_continue - VDEV stop response handling
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV stop response actions
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of stop response operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_stop_continue(
|
|
|
+ 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_stop_continue)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_stop_continue(vdev_mlme,
|
|
|
+ event_data_len,
|
|
|
+ event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_down_send - VDEV down operation
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API invokes VDEV down operation
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of VDEV down operation
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_down_send(
|
|
|
+ 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_down_send)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_down_send(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_notify_down_complete - VDEV init state transition notification
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ * @event_data_len: data size
|
|
|
+ * @event_data: event data
|
|
|
+ *
|
|
|
+ * API notifies MLME on moving to INIT state
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of down notification
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_notify_down_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_down_complete)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_notify_down_complete(
|
|
|
+ vdev_mlme, event_data_len, event_data);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_notify_start_state_exit - VDEV SM start state exit notification
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ *
|
|
|
+ * API notifies on start state exit
|
|
|
+ *
|
|
|
+ * Return: SUCCESS on successful completion of notification
|
|
|
+ * FAILURE, if it fails due to any
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_notify_start_state_exit(
|
|
|
+ struct vdev_mlme_obj *vdev_mlme)
|
|
|
+{
|
|
|
+ QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
|
|
+
|
|
|
+ if ((vdev_mlme->ops) &&
|
|
|
+ vdev_mlme->ops->mlme_vdev_notify_start_state_exit)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_notify_start_state_exit(
|
|
|
+ vdev_mlme);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * mlme_vdev_is_newchan_no_cac - Checks new channel requires CAC
|
|
|
+ * @vdev_mlme_obj: VDEV MLME comp object
|
|
|
+ *
|
|
|
+ * API checks whether Channel needs CAC period,
|
|
|
+ * if yes, it moves to SUSPEND_RESTART to disconnect stations before
|
|
|
+ * sending RESTART to FW, otherwise, it moves to RESTART_PROGRESS substate
|
|
|
+ *
|
|
|
+ * Return: SUCCESS to move to RESTART_PROGRESS substate
|
|
|
+ * FAILURE, move to SUSPEND_RESTART state
|
|
|
+ */
|
|
|
+static inline QDF_STATUS mlme_vdev_is_newchan_no_cac(
|
|
|
+ struct vdev_mlme_obj *vdev_mlme)
|
|
|
+{
|
|
|
+ QDF_STATUS ret = QDF_STATUS_SUCCESS;
|
|
|
+
|
|
|
+ if ((vdev_mlme->ops) && vdev_mlme->ops->mlme_vdev_is_newchan_no_cac)
|
|
|
+ ret = vdev_mlme->ops->mlme_vdev_is_newchan_no_cac(vdev_mlme);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+
|
|
|
#ifdef VDEV_SM_LOCK_SUPPORT
|
|
|
/**
|
|
|
* mlme_vdev_sm_spinlock_create - Create VDEV MLME spinlock
|