1 /* 2 * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 /** 19 * DOC: Define PDEV MLME structure and APIs 20 */ 21 #ifndef _WLAN_PDEV_MLME_H_ 22 #define _WLAN_PDEV_MLME_H_ 23 24 #include <qdf_timer.h> 25 #include <include/wlan_vdev_mlme.h> 26 #include <wlan_ext_mlme_obj_types.h> 27 28 /* 29 * struct pdev_restart_attr - Pdev restart attributes 30 * @vdev: vdev on which the pdev restart cmd was enqueued 31 * @restart_bmap: Bitmap for vdev requesting multivdev restart 32 * 33 * NB: Not using kernel-doc comment since the kernel-doc script 34 * doesn't handle the qdf_bitmap() macro. 35 */ 36 struct pdev_restart_attr { 37 struct wlan_objmgr_vdev *vdev; 38 qdf_bitmap(restart_bmap, WLAN_UMAC_PSOC_MAX_VDEVS); 39 }; 40 41 /* 42 * struct pdev_mlme_obj - PDEV MLME component object 43 * @pdev: PDEV object 44 * @ext_pdev_ptr: PDEV MLME legacy pointer 45 * @mlme_register_ops: Call back to register MLME legacy APIs 46 * @vdev_restart_lock: Lock for VDEVs restart 47 * @restart_req_timer: Timer handle for VDEVs restart 48 * @restart_pend_vdev_bmap: Bitmap for VDEV RESTART command pending 49 * @restart_send_vdev_bmap: Bitmap for VDEV RESTART command sending 50 * @start_send_vdev_arr: Bitmap for VDEV START command sending 51 * @pdev_restart: 52 * @multivdev_restart_wait_cnt: 53 * 54 * NB: Not using kernel-doc comment since the kernel-doc script 55 * doesn't handle the qdf_bitmap() macro. 56 */ 57 struct pdev_mlme_obj { 58 struct wlan_objmgr_pdev *pdev; 59 mlme_pdev_ext_t *ext_pdev_ptr; 60 QDF_STATUS (*mlme_register_ops)(struct vdev_mlme_obj *vdev_mlme); 61 qdf_spinlock_t vdev_restart_lock; 62 qdf_timer_t restart_req_timer; 63 qdf_bitmap(restart_pend_vdev_bmap, WLAN_UMAC_PSOC_MAX_VDEVS); 64 qdf_bitmap(restart_send_vdev_bmap, WLAN_UMAC_PSOC_MAX_VDEVS); 65 qdf_bitmap(start_send_vdev_arr, WLAN_UMAC_PSOC_MAX_VDEVS); 66 struct pdev_restart_attr pdev_restart; 67 qdf_atomic_t multivdev_restart_wait_cnt; 68 }; 69 70 #endif 71