1 /* 2 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 /** 20 * DOC: wlan_vdev_mgr_tgt_if_rx_defs.h 21 * 22 * This header file provides definitions to data structures for 23 * corresponding vdev mgmt operation 24 */ 25 26 #ifndef __WLAN_VDEV_MGR_TGT_IF_RX_DEFS_H__ 27 #define __WLAN_VDEV_MGR_TGT_IF_RX_DEFS_H__ 28 29 #include <qdf_timer.h> 30 #include <qdf_atomic.h> 31 #include <qdf_util.h> 32 #include <wlan_cmn.h> 33 #ifdef FEATURE_RUNTIME_PM 34 #include <wlan_pmo_common_public_struct.h> 35 #endif 36 37 /** 38 * enum wlan_vdev_mgr_tgt_if_rsp_bit - response status bit 39 * START_RESPONSE_BIT: vdev start response bit 40 * RESTART_RESPONSE_BIT: vdev restart response bit 41 * STOP_RESPONSE_BIT: vdev stop response bit 42 * DELETE_RESPONSE_BIT: vdev delete response bit 43 * PEER_DELETE_ALL_RESPONSE_BIT: vdev peer delete all response bit 44 */ 45 enum wlan_vdev_mgr_tgt_if_rsp_bit { 46 START_RESPONSE_BIT = 0, 47 RESTART_RESPONSE_BIT = 1, 48 STOP_RESPONSE_BIT = 2, 49 DELETE_RESPONSE_BIT = 3, 50 PEER_DELETE_ALL_RESPONSE_BIT = 4, 51 RESPONSE_BIT_MAX, 52 }; 53 54 /** 55 * string_from_rsp_bit() - Convert response bit to string 56 * @bit - response bit as in wlan_vdev_mgr_tgt_if_rsp_bit 57 * 58 * Please note to add new string in the array at index equal to 59 * its enum value in wlan_vdev_mgr_tgt_if_rsp_bit. 60 */ 61 static inline char *string_from_rsp_bit(enum wlan_vdev_mgr_tgt_if_rsp_bit bit) 62 { 63 static const char *strings[] = { "START", 64 "RESTART", 65 "STOP", 66 "DELETE", 67 "PEER DELETE ALL", 68 "RESPONE MAX"}; 69 return (char *)strings[bit]; 70 } 71 72 #ifdef FEATURE_RUNTIME_PM 73 /* Add extra PMO_RESUME_TIMEOUT for runtime PM resume timeout */ 74 #define START_RESPONSE_TIMER (6000 + PMO_RESUME_TIMEOUT) 75 #define STOP_RESPONSE_TIMER (4000 + PMO_RESUME_TIMEOUT) 76 #define DELETE_RESPONSE_TIMER (4000 + PMO_RESUME_TIMEOUT) 77 #define PEER_DELETE_ALL_RESPONSE_TIMER (6000 + PMO_RESUME_TIMEOUT) 78 #else 79 #define START_RESPONSE_TIMER 8000 80 #define STOP_RESPONSE_TIMER 6000 81 #define DELETE_RESPONSE_TIMER 4000 82 #define PEER_DELETE_ALL_RESPONSE_TIMER 6000 83 #endif 84 85 /** 86 * struct vdev_response_timer - vdev mgmt response ops timer 87 * @psoc: Object manager psoc 88 * @rsp_timer: VDEV MLME mgmt response timer 89 * @rsp_status: variable to check response status 90 * @expire_time: time to expire timer 91 * @timer_status: status of timer 92 * @rsp_timer_inuse: Status bit to inform whether the rsp timer is inuse 93 * @vdev_id: vdev object id 94 */ 95 struct vdev_response_timer { 96 struct wlan_objmgr_psoc *psoc; 97 qdf_timer_t rsp_timer; 98 unsigned long rsp_status; 99 uint32_t expire_time; 100 QDF_STATUS timer_status; 101 qdf_atomic_t rsp_timer_inuse; 102 uint8_t vdev_id; 103 }; 104 105 /** 106 * struct vdev_start_response - start response structure 107 * @vdev_id: vdev id 108 * @requestor_id: requester id 109 * @status: status of start request 110 * @resp_type: response of event type START/RESTART 111 * @chain_mask: chain mask 112 * @smps_mode: smps mode 113 * @mac_id: mac id 114 * @cfgd_tx_streams: configured tx streams 115 * @cfgd_rx_streams: configured rx streams 116 * @max_allowed_tx_power: max tx power allowed 117 */ 118 struct vdev_start_response { 119 uint8_t vdev_id; 120 uint32_t requestor_id; 121 uint32_t status; 122 uint32_t resp_type; 123 uint32_t chain_mask; 124 uint32_t smps_mode; 125 uint32_t mac_id; 126 uint32_t cfgd_tx_streams; 127 uint32_t cfgd_rx_streams; 128 uint32_t max_allowed_tx_power; 129 }; 130 131 /** 132 * struct vdev_stop_response - stop response structure 133 * @vdev_id: vdev id 134 */ 135 struct vdev_stop_response { 136 uint8_t vdev_id; 137 }; 138 139 /** 140 * struct vdev_delete_response - delete response structure 141 * @vdev_id: vdev id 142 */ 143 struct vdev_delete_response { 144 uint8_t vdev_id; 145 }; 146 147 /** 148 * struct peer_delete_all_response - peer delete all response structure 149 * @vdev_id: vdev id 150 * @status: FW status for vdev delete all peer request 151 */ 152 struct peer_delete_all_response { 153 uint8_t vdev_id; 154 uint8_t status; 155 }; 156 157 /** 158 * struct multi_vdev_restart_resp - multi-vdev restart response structure 159 * @pdev_id: pdev id 160 * @status: FW status for multi vdev restart request 161 * @vdev_id_bmap: Bitmap of vdev_ids 162 */ 163 struct multi_vdev_restart_resp { 164 uint8_t pdev_id; 165 uint8_t status; 166 qdf_bitmap(vdev_id_bmap, WLAN_UMAC_PSOC_MAX_VDEVS); 167 }; 168 169 #endif /* __WLAN_VDEV_MGR_TGT_IF_RX_DEFS_H__ */ 170