1 /* 2 * Copyright (c) 2021, The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-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 * DOC: Implement API's specific to 11be. 19 */ 20 21 #include "wmi_unified_11be_api.h" 22 23 /** 24 * wmi_extract_mlo_link_set_active_resp() - extract mlo link set active resp 25 * from event 26 * @wmi: WMI handle for this pdev 27 * @evt_buf: pointer to event buffer 28 * @resp: Pointer to hold mlo link set active resp 29 * 30 * Return: QDF_STATUS code 31 */ 32 QDF_STATUS 33 wmi_extract_mlo_link_set_active_resp(wmi_unified_t wmi, 34 void *evt_buf, 35 struct mlo_link_set_active_resp *resp) 36 { 37 if (wmi->ops->extract_mlo_link_set_active_resp) { 38 return wmi->ops->extract_mlo_link_set_active_resp(wmi, 39 evt_buf, 40 resp); 41 } 42 return QDF_STATUS_E_FAILURE; 43 } 44 45 /** 46 * wmi_send_mlo_link_set_active_cmd() - send mlo link set active command 47 * @wmi: WMI handle for this pdev 48 * @param: Pointer to mlo link set active param 49 * 50 * Return: QDF_STATUS code 51 */ 52 QDF_STATUS 53 wmi_send_mlo_link_set_active_cmd(wmi_unified_t wmi, 54 struct mlo_link_set_active_param *param) 55 { 56 if (wmi->ops->send_mlo_link_set_active_cmd) 57 return wmi->ops->send_mlo_link_set_active_cmd(wmi, param); 58 59 return QDF_STATUS_E_FAILURE; 60 } 61 62 #ifdef WLAN_FEATURE_11BE 63 QDF_STATUS wmi_send_mlo_peer_tid_to_link_map_cmd( 64 wmi_unified_t wmi, 65 struct wmi_host_tid_to_link_map_params *params, 66 bool t2lm_info) 67 { 68 if (wmi->ops->send_mlo_peer_tid_to_link_map) 69 return wmi->ops->send_mlo_peer_tid_to_link_map(wmi, params, t2lm_info); 70 71 return QDF_STATUS_E_FAILURE; 72 } 73 74 QDF_STATUS wmi_send_mlo_vdev_tid_to_link_map_cmd( 75 wmi_unified_t wmi, 76 struct wmi_host_tid_to_link_map_ap_params *params) 77 { 78 if (wmi->ops->send_mlo_vdev_tid_to_link_map) 79 return wmi->ops->send_mlo_vdev_tid_to_link_map(wmi, params); 80 81 return QDF_STATUS_E_FAILURE; 82 } 83 84 QDF_STATUS wmi_send_mlo_link_state_request_cmd( 85 wmi_unified_t wmi, 86 struct wmi_host_link_state_params *params) 87 { 88 if (wmi->ops->send_mlo_link_state_request) 89 return wmi->ops->send_mlo_link_state_request(wmi, params); 90 return QDF_STATUS_E_FAILURE; 91 } 92 93 QDF_STATUS 94 wmi_extract_mlo_vdev_tid_to_link_map_event( 95 wmi_unified_t wmi, void *evt_buf, 96 struct mlo_vdev_host_tid_to_link_map_resp *resp) 97 { 98 if (wmi->ops->extract_mlo_vdev_tid_to_link_map_event) { 99 return wmi->ops->extract_mlo_vdev_tid_to_link_map_event(wmi, 100 evt_buf, 101 resp); 102 } 103 return QDF_STATUS_E_FAILURE; 104 } 105 106 QDF_STATUS 107 wmi_extract_mlo_vdev_bcast_tid_to_link_map_event( 108 wmi_unified_t wmi, 109 void *evt_buf, 110 struct mlo_bcast_t2lm_info *bcast) 111 { 112 if (wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event) { 113 return wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event( 114 wmi, 115 evt_buf, 116 bcast); 117 } 118 return QDF_STATUS_E_FAILURE; 119 } 120 121 QDF_STATUS wmi_extract_mlo_link_state_info_event( 122 wmi_unified_t wmi, 123 void *evt_buf, 124 struct ml_link_state_info_event *params) 125 { 126 if (wmi->ops->extract_mlo_link_state_event) 127 return wmi->ops->extract_mlo_link_state_event( 128 wmi, evt_buf, params); 129 return QDF_STATUS_E_FAILURE; 130 } 131 132 QDF_STATUS wmi_extract_mlo_link_disable_request_evt( 133 struct wmi_unified *wmi, 134 void *buf, 135 struct mlo_link_disable_request_evt_params *params) 136 { 137 if (wmi->ops->extract_mlo_link_disable_request_evt_param) 138 return wmi->ops->extract_mlo_link_disable_request_evt_param( 139 wmi, buf, params); 140 141 return QDF_STATUS_E_FAILURE; 142 } 143 144 #endif /* WLAN_FEATURE_11BE */ 145 146 QDF_STATUS 147 wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi, void *evt_buf, 148 struct mlo_mgmt_ml_info *cu_params) 149 { 150 if (wmi->ops->extract_mgmt_rx_ml_cu_params) 151 return wmi->ops->extract_mgmt_rx_ml_cu_params( 152 wmi, evt_buf, cu_params); 153 154 return QDF_STATUS_E_FAILURE; 155 } 156 157 QDF_STATUS wmi_send_mlo_link_removal_cmd( 158 wmi_unified_t wmi, 159 const struct mlo_link_removal_cmd_params *param) 160 { 161 if (wmi->ops->send_mlo_link_removal_cmd) 162 return wmi->ops->send_mlo_link_removal_cmd(wmi, param); 163 164 return QDF_STATUS_E_FAILURE; 165 } 166 167 QDF_STATUS wmi_send_mlo_vdev_pause(wmi_unified_t wmi, 168 struct mlo_vdev_pause *info) 169 { 170 if (wmi->ops->send_mlo_vdev_pause) 171 return wmi->ops->send_mlo_vdev_pause(wmi, info); 172 173 return QDF_STATUS_E_FAILURE; 174 } 175 176 QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param( 177 struct wmi_unified *wmi, 178 void *buf, 179 struct mlo_link_removal_evt_params *params) 180 { 181 if (wmi->ops->extract_mlo_link_removal_evt_fixed_param) 182 return wmi->ops->extract_mlo_link_removal_evt_fixed_param( 183 wmi, buf, params); 184 185 return QDF_STATUS_E_FAILURE; 186 } 187 188 QDF_STATUS wmi_extract_mlo_link_removal_tbtt_update( 189 struct wmi_unified *wmi, 190 void *buf, 191 struct mlo_link_removal_tbtt_info *tbtt_info) 192 { 193 if (wmi->ops->extract_mlo_link_removal_tbtt_update) 194 return wmi->ops->extract_mlo_link_removal_tbtt_update( 195 wmi, buf, tbtt_info); 196 197 return QDF_STATUS_E_FAILURE; 198 } 199 200 QDF_STATUS wmi_extract_mgmt_rx_mlo_link_removal_info( 201 struct wmi_unified *wmi, 202 void *buf, 203 struct mgmt_rx_mlo_link_removal_info *link_removal_info, 204 int num_link_removal_info) 205 { 206 if (wmi->ops->extract_mgmt_rx_mlo_link_removal_info) 207 return wmi->ops->extract_mgmt_rx_mlo_link_removal_info( 208 wmi, buf, 209 link_removal_info, 210 num_link_removal_info); 211 212 return QDF_STATUS_E_FAILURE; 213 } 214