Files
android_kernel_samsung_sm86…/umac/mlme/include/wlan_mlme_cmn.h
Arun Kumar Khandavalli 536903de91 qcacmn: Dont use vdev object in vdev delete response
As part of the new changes, vdev mlme object will be freed before
the vdev delete response is received from the firmware. Hence do
not use the vdev_mlme object in the vdev delete response handler.

Change-Id: I6b2db32ac0ef415bf1b879b2cd222de67d9a69b7
CRs-Fixed: 2563404
2019-12-05 10:47:43 +05:30

263 righe
8.5 KiB
C

/*
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Define Common MLME structure and APIs
*/
#ifndef _WLAN_MLME_CMN_H_
#define _WLAN_MLME_CMN_H_
#include <include/wlan_psoc_mlme.h>
#include <include/wlan_pdev_mlme.h>
#include <include/wlan_vdev_mlme.h>
/**
* struct vdev_mlme_ext_ops - VDEV MLME legacy callbacks structure
* @mlme_psoc_ext_hdl_create: callback to invoke creation of legacy
* psoc object
* @mlme_psoc_ext_hdl_destroy: callback to invoke destroy of legacy
* psoc object
* @mlme_pdev_ext_hdl_create: callback to invoke creation of legacy
* pdev object
* @mlme_pdev_ext_hdl_destroy: callback to invoke destroy of legacy
* pdev object
* @mlme_vdev_ext_hdl_create: callback to invoke creation of legacy
* vdev object
* @mlme_vdev_ext_hdl_post_create: callback to invoke post creation actions
* of legacy vdev object
* @mlme_vdev_ext_hdl_destroy: callback to invoke destroy of legacy
* vdev object
* @mlme_vdev_start_fw_send: callback to invoke vdev start command
* @mlme_vdev_stop_fw_send: callback to invoke vdev stop command
* @mlme_vdev_down_fw_send: callback to invoke vdev down command
* @mlme_multivdev_restart_fw_send: callback to invoke multivdev restart
* command
* @mlme_vdev_enqueue_exp_cmd: callback to enqueue exception command
* required by serialization
*/
struct mlme_ext_ops {
QDF_STATUS (*mlme_psoc_ext_hdl_create)(
struct psoc_mlme_obj *psoc_mlme);
QDF_STATUS (*mlme_psoc_ext_hdl_destroy)(
struct psoc_mlme_obj *pdev_mlme);
QDF_STATUS (*mlme_pdev_ext_hdl_create)(
struct pdev_mlme_obj *pdev_mlme);
QDF_STATUS (*mlme_pdev_ext_hdl_destroy)(
struct pdev_mlme_obj *pdev_mlme);
QDF_STATUS (*mlme_vdev_ext_hdl_create)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_ext_hdl_post_create)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_ext_hdl_destroy)(
struct vdev_mlme_obj *vdev_mlme);
QDF_STATUS (*mlme_vdev_start_fw_send)(
struct wlan_objmgr_vdev *vdev, uint8_t restart);
QDF_STATUS (*mlme_vdev_stop_fw_send)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_vdev_down_fw_send)(struct wlan_objmgr_vdev *vdev);
QDF_STATUS (*mlme_multivdev_restart_fw_send)(
struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*mlme_vdev_enqueue_exp_cmd)(
struct vdev_mlme_obj *vdev_mlme,
uint8_t cmd_type);
QDF_STATUS (*mlme_vdev_ext_delete_rsp)(
struct wlan_objmgr_psoc *psoc,
struct vdev_delete_response *rsp);
};
/**
* mlme_psoc_ops_ext_hdl_create() - Alloc PSOC mlme ext handle
* @psoc_mlme: PSOC MLME comp object
*
* API to allocate PSOC MLME ext handle
*
* Return: SUCCESS on successful allocation
* Else FAILURE
*/
QDF_STATUS mlme_psoc_ops_ext_hdl_create(struct psoc_mlme_obj *psoc_mlme);
/**
* mlme_psoc_ops_ext_hdl_destroy() - Destroy PSOC mlme ext handle
* @psoc_mlme: PSOC MLME comp object
*
* API to free psoc MLME ext handle
*
* Return: SUCCESS on successful free
* Else FAILURE
*/
QDF_STATUS mlme_psoc_ops_ext_hdl_destroy(struct psoc_mlme_obj *psoc_mlme);
/**
* mlme_pdev_ops_ext_hdl_create - Alloc PDEV mlme ext handle
* @pdev_mlme_obj: PDEV MLME comp object
*
* API to allocate PDEV MLME ext handle
*
* Return: SUCCESS on successful allocation
* Else FAILURE
*/
QDF_STATUS mlme_pdev_ops_ext_hdl_create(struct pdev_mlme_obj *pdev_mlme);
/**
* mlme_pdev_ops_ext_hdl_destroy - Destroy PDEV mlme ext handle
* @pdev_mlme_obj: PDEV MLME comp object
*
* API to free pdev MLME ext handle
*
* Return: SUCCESS on successful free
* Else FAILURE
*/
QDF_STATUS mlme_pdev_ops_ext_hdl_destroy(struct pdev_mlme_obj *pdev_mlme);
/**
* mlme_vdev_ops_ext_hdl_create - Alloc VDEV mlme ext handle
* @vdev_mlme_obj: VDEV MLME comp object
*
* API to allocate VDEV MLME ext handle
*
* Return: SUCCESS on successful allocation
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_create(struct vdev_mlme_obj *vdev_mlme);
/**
* mlme_vdev_ops_ext_hdl_post_create - Perform post VDEV mlme ext handle alloc
* operations
* @vdev_mlme_obj: VDEV MLME comp object
*
* API to perform post vdev MLME ext handle allocation operations
*
* Return: SUCCESS on initialization successful
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_post_create(struct vdev_mlme_obj *vdev_mlme);
/**
* mlme_vdev_ops_ext_hdl_destroy - Destroy VDEV mlme ext handle
* @vdev_mlme_obj: VDEV MLME comp object
*
* API to free vdev MLME ext handle
*
* Return: SUCCESS on successful free
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_destroy(struct vdev_mlme_obj *vdev_mlme);
/**
* mlme_vdev_enqueue_exp_ser_cmd - Enqueue exception serialization cmd
* @vdev_mlme_obj: VDEV MLME comp object
* @cmd_type: Serialization command type
*
* API to enqueue the exception serialization command, used by
* mlme-serialization wrapper layer
*
* Return: SUCCESS on successful enqueuing the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_enqueue_exp_ser_cmd(struct vdev_mlme_obj *vdev_mlme,
uint8_t cmd_type);
/**
* mlme_vdev_ops_start_fw_send - Send WMI START/RESTART commmand to FW
* @vdev: VDEV object
*
* API to send WMI start/restart command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_start_fw_send(struct wlan_objmgr_vdev *vdev,
uint8_t restart);
/**
* mlme_vdev_ops_multivdev_restart_fw_cmd_send - Send WMI Multivdev restart
* commmand to FW
* @pdev: PDEV object
*
* API to send WMI multivdev restart command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_multivdev_restart_fw_cmd_send(
struct wlan_objmgr_pdev *pdev);
/**
* mlme_vdev_ops_stop_fw_send - Send WMI STOP commmand to FW
* @vdev: VDEV object
*
* API to send WMI stop command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_stop_fw_send(struct wlan_objmgr_vdev *vdev);
/**
* mlme_vdev_ops_down_fw_send - Send WMI Down commmand to FW
* @vdev: VDEV object
*
* API to send WMI down command to FW
*
* Return: SUCCESS on successful sending the command
* Else FAILURE
*/
QDF_STATUS mlme_vdev_ops_down_fw_send(struct wlan_objmgr_vdev *vdev);
/**
* mlme_set_ops_register_cb - Sets ops registration callback
* @ops_cb: Function pointer
*
* API to set ops registration call back
*
* Return: void
*/
typedef struct mlme_ext_ops *(*mlme_get_global_ops_cb)(void);
void mlme_set_ops_register_cb(mlme_get_global_ops_cb ops_cb);
/**
* wlan_cmn_mlme_init - Initializes MLME component
*
* Registers callbacks with object manager for create/destroy
*
* Return: SUCCESS on successful registration
* FAILURE, if registration fails
*/
QDF_STATUS wlan_cmn_mlme_init(void);
/**
* wlan_cmn_mlme_deinit - Uninitializes MLME component
*
* Unregisters callbacks with object manager for create/destroy
*
* Return: SUCCESS on successful registration
* FAILURE, if registration fails
*/
QDF_STATUS wlan_cmn_mlme_deinit(void);
/**
* mlme_vdev_ops_ext_hdl_delete_rsp - Vdev Delete response ext handler
* @psoc: PSOC object
* @rsp: Vdev delete response received from the firmware
*
* API to invoke the legacy delete response handler for legacy cleanup
*
* Return: SUCCESS on successful deletion
* FAILURE, if deletion fails
*/
QDF_STATUS mlme_vdev_ops_ext_hdl_delete_rsp(struct wlan_objmgr_psoc *psoc,
struct vdev_delete_response *rsp);
#endif