1 /* 2 * Copyright (c) 2021, The Linux Foundation. All rights reserved. 3 * Copyright (c) 2021-2022 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 { 67 if (wmi->ops->send_mlo_peer_tid_to_link_map) 68 return wmi->ops->send_mlo_peer_tid_to_link_map(wmi, params); 69 70 return QDF_STATUS_E_FAILURE; 71 } 72 73 QDF_STATUS wmi_send_mlo_vdev_tid_to_link_map_cmd( 74 wmi_unified_t wmi, 75 struct wmi_host_tid_to_link_map_ap_params *params) 76 { 77 if (wmi->ops->send_mlo_vdev_tid_to_link_map) 78 return wmi->ops->send_mlo_vdev_tid_to_link_map(wmi, params); 79 80 return QDF_STATUS_E_FAILURE; 81 } 82 83 QDF_STATUS 84 wmi_extract_mlo_vdev_tid_to_link_map_event( 85 wmi_unified_t wmi, void *evt_buf, 86 struct mlo_vdev_host_tid_to_link_map_resp *resp) 87 { 88 if (wmi->ops->extract_mlo_vdev_tid_to_link_map_event) { 89 return wmi->ops->extract_mlo_vdev_tid_to_link_map_event(wmi, 90 evt_buf, 91 resp); 92 } 93 return QDF_STATUS_E_FAILURE; 94 } 95 96 QDF_STATUS 97 wmi_extract_mlo_vdev_bcast_tid_to_link_map_event( 98 wmi_unified_t wmi, 99 void *evt_buf, 100 struct mlo_bcast_t2lm_info *bcast) 101 { 102 if (wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event) { 103 return wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event( 104 wmi, 105 evt_buf, 106 bcast); 107 } 108 return QDF_STATUS_E_FAILURE; 109 } 110 #endif /* WLAN_FEATURE_11BE */ 111 112 QDF_STATUS 113 wmi_extract_mgmt_rx_ml_cu_params(wmi_unified_t wmi, void *evt_buf, 114 struct mlo_mgmt_ml_info *cu_params) 115 { 116 if (wmi->ops->extract_mgmt_rx_ml_cu_params) 117 return wmi->ops->extract_mgmt_rx_ml_cu_params( 118 wmi, evt_buf, cu_params); 119 120 return QDF_STATUS_E_FAILURE; 121 } 122 123 QDF_STATUS wmi_send_mlo_link_removal_cmd( 124 wmi_unified_t wmi, 125 const struct mlo_link_removal_cmd_params *param) 126 { 127 if (wmi->ops->send_mlo_link_removal_cmd) 128 return wmi->ops->send_mlo_link_removal_cmd(wmi, param); 129 130 return QDF_STATUS_E_FAILURE; 131 } 132 133 QDF_STATUS wmi_extract_mlo_link_removal_evt_fixed_param( 134 struct wmi_unified *wmi, 135 void *buf, 136 struct mlo_link_removal_evt_params *params) 137 { 138 if (wmi->ops->extract_mlo_link_removal_evt_fixed_param) 139 return wmi->ops->extract_mlo_link_removal_evt_fixed_param( 140 wmi, buf, params); 141 142 return QDF_STATUS_E_FAILURE; 143 } 144 145 QDF_STATUS wmi_extract_mlo_link_removal_tbtt_update( 146 struct wmi_unified *wmi, 147 void *buf, 148 struct mlo_link_removal_tbtt_info *tbtt_info) 149 { 150 if (wmi->ops->extract_mlo_link_removal_tbtt_update) 151 return wmi->ops->extract_mlo_link_removal_tbtt_update( 152 wmi, buf, tbtt_info); 153 154 return QDF_STATUS_E_FAILURE; 155 } 156 157 QDF_STATUS wmi_extract_mgmt_rx_mlo_link_removal_info( 158 struct wmi_unified *wmi, 159 void *buf, 160 struct mgmt_rx_mlo_link_removal_info *link_removal_info, 161 int num_link_removal_info) 162 { 163 if (wmi->ops->extract_mgmt_rx_mlo_link_removal_info) 164 return wmi->ops->extract_mgmt_rx_mlo_link_removal_info( 165 wmi, buf, 166 link_removal_info, 167 num_link_removal_info); 168 169 return QDF_STATUS_E_FAILURE; 170 } 171