1 /* 2 * Copyright (c) 2017-2019, 2021, The Linux Foundation. All rights reserved. 3 * Copyright (c) 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 /** 19 * DOC: qdf_ipa_wdi3.h 20 * This file provides OS abstraction for IPA WDI APIs. 21 */ 22 23 #ifndef _QDF_IPA_WDI3_H 24 #define _QDF_IPA_WDI3_H 25 26 #ifdef IPA_OFFLOAD 27 28 #include <qdf_ipa.h> 29 #include <i_qdf_ipa_wdi3.h> 30 31 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) || \ 32 defined(CONFIG_IPA_WDI_UNIFIED_API) 33 34 /** 35 * qdf_ipa_wdi_version_t - IPA WDI version 36 */ 37 typedef __qdf_ipa_wdi_version_t qdf_ipa_wdi_version_t; 38 39 /** 40 * qdf_ipa_wdi_hdl_t - IPA handle 41 */ 42 typedef __qdf_ipa_wdi_hdl_t qdf_ipa_wdi_hdl_t; 43 44 /** 45 * qdf_ipa_wdi_capabilities_out_params_t - wdi capabilities output parameters 46 */ 47 typedef __qdf_ipa_wdi_capabilities_out_params_t \ 48 qdf_ipa_wdi_capabilities_out_params_t; 49 50 #define QDF_IPA_WDI_CAPABILITIES_OUT_PARAMS_NUM_INSTANCES(out_params) \ 51 __QDF_IPA_WDI_CAPABILITIES_OUT_PARAMS_NUM_INSTANCES(out_params) 52 53 static inline int qdf_ipa_wdi_get_capabilities( 54 qdf_ipa_wdi_capabilities_out_params_t *out) 55 { 56 return __qdf_ipa_wdi_get_capabilities(out); 57 } 58 59 /** 60 * qdf_ipa_wdi_init_in_params_t - wdi init input parameters 61 */ 62 typedef __qdf_ipa_wdi_init_in_params_t qdf_ipa_wdi_init_in_params_t; 63 64 #define QDF_IPA_WDI_INIT_IN_PARAMS_WDI_VERSION(in_params) \ 65 __QDF_IPA_WDI_INIT_IN_PARAMS_WDI_VERSION(in_params) 66 #define QDF_IPA_WDI_INIT_IN_PARAMS_NOTIFY(in_params) \ 67 __QDF_IPA_WDI_INIT_IN_PARAMS_NOTIFY(in_params) 68 #define QDF_IPA_WDI_INIT_IN_PARAMS_PRIV(in_params) \ 69 __QDF_IPA_WDI_INIT_IN_PARAMS_PRIV(in_params) 70 #define QDF_IPA_WDI_INIT_IN_PARAMS_WDI_NOTIFY(in_params) \ 71 __QDF_IPA_WDI_INIT_IN_PARAMS_WDI_NOTIFY(in_params) 72 #define QDF_IPA_WDI_INIT_IN_PARAMS_INSTANCE_ID(in_params) \ 73 __QDF_IPA_WDI_INIT_IN_PARAMS_INSTANCE_ID(in_params) 74 75 #ifdef IPA_WDS_EASYMESH_FEATURE 76 #define QDF_IPA_WDI_INIT_IN_PARAMS_WDS_UPDATE(in_params) \ 77 __QDF_IPA_WDI_INIT_IN_PARAMS_WDS_UPDATE(in_params) 78 #endif 79 80 /** 81 * qdf_ipa_wdi_init_out_params_t - wdi init output parameters 82 */ 83 typedef __qdf_ipa_wdi_init_out_params_t qdf_ipa_wdi_init_out_params_t; 84 85 #define QDF_IPA_WDI_INIT_OUT_PARAMS_IS_UC_READY(out_params) \ 86 __QDF_IPA_WDI_INIT_OUT_PARAMS_IS_UC_READY(out_params) 87 #define QDF_IPA_WDI_INIT_OUT_PARAMS_IS_SMMU_ENABLED(out_params) \ 88 __QDF_IPA_WDI_INIT_OUT_PARAMS_IS_SMMU_ENABLED(out_params) 89 #define QDF_IPA_WDI_INIT_OUT_PARAMS_HANDLE(out_params) \ 90 __QDF_IPA_WDI_INIT_OUT_PARAMS_HANDLE(out_params) 91 92 /** 93 * qdf_ipa_wdi_pipe_setup_info_smmu_t - WDI TX/Rx configuration 94 */ 95 typedef __qdf_ipa_wdi_pipe_setup_info_smmu_t qdf_ipa_wdi_pipe_setup_info_smmu_t; 96 97 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EP_CFG(txrx) \ 98 __QDF_IPA_WDI_SETUP_INFO_SMMU_EP_CFG(txrx) 99 100 #define QDF_IPA_WDI_SETUP_INFO_SMMU_CLIENT(txrx) \ 101 __QDF_IPA_WDI_SETUP_INFO_SMMU_CLIENT(txrx) 102 #define QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_BASE(txrx) \ 103 __QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_BASE(txrx) 104 #define QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_SIZE(txrx) \ 105 __QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_SIZE(txrx) 106 #define QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_DOORBELL_PA(txrx) \ 107 __QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_DOORBELL_PA(txrx) 108 #define QDF_IPA_WDI_SETUP_INFO_SMMU_IS_TXR_RN_DB_PCIE_ADDR(txrx) \ 109 __QDF_IPA_WDI_SETUP_INFO_SMMU_IS_TXR_RN_DB_PCIE_ADDR(txrx) 110 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_BASE(txrx) \ 111 __QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_BASE(txrx) 112 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_SIZE(txrx) \ 113 __QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_SIZE(txrx) 114 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_DOORBELL_PA(txrx) \ 115 __QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_DOORBELL_PA(txrx) 116 #define QDF_IPA_WDI_SETUP_INFO_SMMU_IS_EVT_RN_DB_PCIE_ADDR(txrx) \ 117 __QDF_IPA_WDI_SETUP_INFO_SMMU_IS_EVT_RN_DB_PCIE_ADDR(txrx) 118 #define QDF_IPA_WDI_SETUP_INFO_SMMU_NUM_PKT_BUFFERS(txrx) \ 119 __QDF_IPA_WDI_SETUP_INFO_SMMU_NUM_PKT_BUFFERS(txrx) 120 #define QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(txrx) \ 121 __QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(txrx) 122 #define QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(txrx) \ 123 __QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(txrx) 124 125 typedef __qdf_ipa_ep_cfg_t qdf_ipa_ep_cfg_t; 126 127 #define QDF_IPA_EP_CFG_NAT_EN(cfg) \ 128 __QDF_IPA_EP_CFG_NAT_EN(cfg) 129 #define QDF_IPA_EP_CFG_HDR_LEN(cfg) \ 130 __QDF_IPA_EP_CFG_HDR_LEN(cfg) 131 #define QDF_IPA_EP_CFG_HDR_OFST_METADATA_VALID(cfg) \ 132 __QDF_IPA_EP_CFG_HDR_OFST_METADATA_VALID(cfg) 133 #define QDF_IPA_EP_CFG_HDR_METADATA_REG_VALID(cfg) \ 134 __QDF_IPA_EP_CFG_HDR_METADATA_REG_VALID(cfg) 135 #define QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE_VALID(cfg) \ 136 __QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE_VALID(cfg) 137 #define QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE(cfg) \ 138 __QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE(cfg) 139 #define QDF_IPA_EP_CFG_HDR_ADDITIONAL_CONST_LEN(cfg) \ 140 __QDF_IPA_EP_CFG_HDR_ADDITIONAL_CONST_LEN(cfg) 141 #define QDF_IPA_EP_CFG_MODE(cfg) \ 142 __QDF_IPA_EP_CFG_MODE(cfg) 143 #define QDF_IPA_EP_CFG_HDR_LITTLE_ENDIAN(cfg) \ 144 __QDF_IPA_EP_CFG_HDR_LITTLE_ENDIAN(cfg) 145 146 /** 147 * qdf_ipa_wdi_init - Client should call this function to 148 * init WDI IPA offload data path 149 * 150 * Note: Should not be called from atomic context and only 151 * after checking IPA readiness using ipa_register_ipa_ready_cb() 152 * 153 * @Return 0 on success, negative on failure 154 */ 155 static inline int qdf_ipa_wdi_init(qdf_ipa_wdi_init_in_params_t *in, 156 qdf_ipa_wdi_init_out_params_t *out) 157 { 158 return __qdf_ipa_wdi_init(in, out); 159 } 160 161 /** 162 * qdf_ipa_wdi_cleanup - Client should call this function to 163 * clean up WDI IPA offload data path 164 * @hdl: IPA handle 165 * 166 * @Return 0 on success, negative on failure 167 */ 168 static inline int qdf_ipa_wdi_cleanup(qdf_ipa_wdi_hdl_t hdl) 169 { 170 return __qdf_ipa_wdi_cleanup(hdl); 171 } 172 #endif /* CONFIG_IPA_WDI_UNIFIED_API */ 173 174 /** 175 * qdf_ipa_wdi_hdr_info_t - Header to install on IPA HW 176 */ 177 typedef __qdf_ipa_wdi_hdr_info_t qdf_ipa_wdi_hdr_info_t; 178 179 #define QDF_IPA_WDI_HDR_INFO_HDR(hdr_info) \ 180 __QDF_IPA_WDI_HDR_INFO_HDR(hdr_info) 181 #define QDF_IPA_WDI_HDR_INFO_HDR_LEN(hdr_info) \ 182 __QDF_IPA_WDI_HDR_INFO_HDR_LEN(hdr_info) 183 #define QDF_IPA_WDI_HDR_INFO_DST_MAC_ADDR_OFFSET(hdr_info) \ 184 __QDF_IPA_WDI_HDR_INFO_DST_MAC_ADDR_OFFSET(hdr_info) 185 #define QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info) \ 186 __QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info) 187 188 /** 189 * qdf_ipa_wdi_reg_intf_in_params_t - parameters for uC offload 190 * interface registration 191 */ 192 typedef __qdf_ipa_wdi_reg_intf_in_params_t qdf_ipa_wdi_reg_intf_in_params_t; 193 194 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_NETDEV_NAME(in) \ 195 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_NETDEV_NAME(in) 196 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_HDR_INFO(in) \ 197 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_HDR_INFO(in) 198 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(in) \ 199 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(in) 200 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(in) \ 201 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(in) 202 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) \ 203 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) 204 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) \ 205 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) 206 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(in) \ 207 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(in) 208 #ifdef IPA_WDI3_TX_TWO_PIPES 209 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_TX1_USED(in) \ 210 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_TX1_USED(in) 211 #endif 212 #ifdef IPA_WDI3_VLAN_SUPPORT 213 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_RX1_USED(in) \ 214 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_RX1_USED(in) 215 #endif 216 217 218 /** 219 * qdf_ipa_wdi_pipe_setup_info_t - WDI TX/Rx configuration 220 */ 221 typedef __qdf_ipa_wdi_pipe_setup_info_t qdf_ipa_wdi_pipe_setup_info_t; 222 223 #define QDF_IPA_WDI_SETUP_INFO_EP_CFG(txrx) \ 224 __QDF_IPA_WDI_SETUP_INFO_EP_CFG(txrx) 225 226 #define QDF_IPA_WDI_SETUP_INFO_NAT_EN(txrx) \ 227 __QDF_IPA_WDI_SETUP_INFO_NAT_EN(txrx) 228 #define QDF_IPA_WDI_SETUP_INFO_HDR_LEN(txrx) \ 229 __QDF_IPA_WDI_SETUP_INFO_HDR_LEN(txrx) 230 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_METADATA_VALID(txrx) \ 231 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_METADATA_VALID(txrx) 232 #define QDF_IPA_WDI_SETUP_INFO_HDR_METADATA_REG_VALID(txrx) \ 233 __QDF_IPA_WDI_SETUP_INFO_HDR_METADATA_REG_VALID(txrx) 234 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE_VALID(txrx) \ 235 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE_VALID(txrx) 236 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE(txrx) \ 237 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE(txrx) 238 #define QDF_IPA_WDI_SETUP_INFO_HDR_ADDITIONAL_CONST_LEN(txrx) \ 239 __QDF_IPA_WDI_SETUP_INFO_HDR_ADDITIONAL_CONST_LEN(txrx) 240 #define QDF_IPA_WDI_SETUP_INFO_MODE(txrx) \ 241 __QDF_IPA_WDI_SETUP_INFO_MODE(txrx) 242 #define QDF_IPA_WDI_SETUP_INFO_HDR_LITTLE_ENDIAN(txrx) \ 243 __QDF_IPA_WDI_SETUP_INFO_HDR_LITTLE_ENDIAN(txrx) 244 245 #define QDF_IPA_WDI_SETUP_INFO_CLIENT(txrx) \ 246 __QDF_IPA_WDI_SETUP_INFO_CLIENT(txrx) 247 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(txrx) \ 248 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(txrx) 249 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(txrx) \ 250 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(txrx) 251 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_DOORBELL_PA(txrx) \ 252 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_DOORBELL_PA(txrx) 253 #define QDF_IPA_WDI_SETUP_INFO_IS_TXR_RN_DB_PCIE_ADDR(txrx) \ 254 __QDF_IPA_WDI_SETUP_INFO_IS_TXR_RN_DB_PCIE_ADDR(txrx) 255 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(txrx) \ 256 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(txrx) 257 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(txrx) \ 258 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(txrx) 259 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(txrx) \ 260 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(txrx) 261 #define QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(txrx) \ 262 __QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(txrx) 263 #define QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(txrx) \ 264 __QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(txrx) 265 #define QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(txrx) \ 266 __QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(txrx) 267 #define QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(txrx) \ 268 __QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(txrx) 269 270 /** 271 * qdf_ipa_wdi_conn_in_params_t - information provided by 272 * uC offload client 273 */ 274 typedef __qdf_ipa_wdi_conn_in_params_t qdf_ipa_wdi_conn_in_params_t; 275 276 #define QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(pipe_in) \ 277 __QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(pipe_in) 278 #define QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(pipe_in) \ 279 __QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(pipe_in) 280 #define QDF_IPA_WDI_CONN_IN_PARAMS_SMMU_ENABLED(pipe_in) \ 281 __QDF_IPA_WDI_CONN_IN_PARAMS_SMMU_ENABLED(pipe_in) 282 #define QDF_IPA_WDI_CONN_IN_PARAMS_NUM_SYS_PIPE_NEEDED(pipe_in) \ 283 __QDF_IPA_WDI_CONN_IN_PARAMS_NUM_SYS_PIPE_NEEDED(pipe_in) 284 #define QDF_IPA_WDI_CONN_IN_PARAMS_SYS_IN(in) \ 285 __QDF_IPA_WDI_CONN_IN_PARAMS_SYS_IN(in) 286 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX(pipe_in) \ 287 __QDF_IPA_WDI_CONN_IN_PARAMS_TX(pipe_in) 288 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_SMMU(pipe_in) \ 289 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_SMMU(pipe_in) 290 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX(pipe_in) \ 291 __QDF_IPA_WDI_CONN_IN_PARAMS_RX(pipe_in) 292 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_SMMU(pipe_in) \ 293 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_SMMU(pipe_in) 294 #define QDF_IPA_WDI_CONN_IN_PARAMS_HANDLE(pipe_in) \ 295 __QDF_IPA_WDI_CONN_IN_PARAMS_HANDLE(pipe_in) 296 297 #ifdef IPA_WDS_EASYMESH_FEATURE 298 #define QDF_IPA_WDI_CONN_IN_PARAMS_AST_NOTIFY(pipe_in) \ 299 __QDF_IPA_WDI_CONN_IN_PARAMS_AST_NOTIFY(pipe_in) 300 #endif 301 302 #ifdef IPA_WDI3_TX_TWO_PIPES 303 #define QDF_IPA_WDI_CONN_IN_PARAMS_IS_TX1_USED(pipe_in) \ 304 __QDF_IPA_WDI_CONN_IN_PARAMS_IS_TX1_USED(pipe_in) 305 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE(pipe_in) \ 306 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE(pipe_in) 307 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE_SMMU(pipe_in) \ 308 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE_SMMU(pipe_in) 309 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_ALT_DB_PA(pipe_out) \ 310 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_ALT_DB_PA(pipe_out) 311 #endif 312 #ifdef IPA_WDI3_VLAN_SUPPORT 313 #define QDF_IPA_WDI_CONN_IN_PARAMS_IS_RX1_USED(pipe_in) \ 314 __QDF_IPA_WDI_CONN_IN_PARAMS_IS_RX1_USED(pipe_in) 315 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT(pipe_in) \ 316 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT(pipe_in) 317 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT_SMMU(pipe_in) \ 318 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT_SMMU(pipe_in) 319 #endif 320 /** 321 * qdf_ipa_wdi_conn_out_params_t - information provided 322 * to WLAN druver 323 */ 324 typedef __qdf_ipa_wdi_conn_out_params_t qdf_ipa_wdi_conn_out_params_t; 325 326 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_PA(pipe_out) \ 327 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_PA(pipe_out) 328 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_VA(pipe_out) \ 329 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_VA(pipe_out) 330 #define QDF_IPA_WDI_CONN_OUT_PARAMS_RX_UC_DB_PA(pipe_out) \ 331 __QDF_IPA_WDI_CONN_OUT_PARAMS_RX_UC_DB_PA(pipe_out) 332 #ifdef IPA_WDI3_VLAN_SUPPORT 333 #define QDF_IPA_WDI_CONN_OUT_PARAMS_RX_ALT_UC_DB_PA(pipe_out) \ 334 __QDF_IPA_WDI_CONN_OUT_PARAMS_RX_ALT_UC_DB_PA(pipe_out) 335 #endif 336 #define QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) \ 337 __QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) 338 339 /** 340 * qdf_ipa_wdi_perf_profile_t - To set BandWidth profile 341 */ 342 typedef __qdf_ipa_wdi_perf_profile_t qdf_ipa_wdi_perf_profile_t; 343 344 #define QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) \ 345 __QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) 346 #define QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) \ 347 __QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) 348 349 /** 350 * qdf_ipa_wdi_reg_intf - Client should call this function to 351 * init WDI IPA offload data path 352 * 353 * Note: Should not be called from atomic context and only 354 * after checking IPA readiness using ipa_register_ipa_ready_cb() 355 * 356 * @Return 0 on success, negative on failure 357 */ 358 static inline int qdf_ipa_wdi_reg_intf( 359 qdf_ipa_wdi_reg_intf_in_params_t *in) 360 { 361 return __qdf_ipa_wdi_reg_intf(in); 362 } 363 364 /** 365 * qdf_ipa_wdi_dereg_intf - Client Driver should call this 366 * function to deregister before unload and after disconnect 367 * @netdev_name: Net device name 368 * @hdl: IPA handle 369 * 370 * @Return 0 on success, negative on failure 371 */ 372 static inline int qdf_ipa_wdi_dereg_intf(const char *netdev_name, 373 qdf_ipa_wdi_hdl_t hdl) 374 { 375 return __qdf_ipa_wdi_dereg_intf(netdev_name, hdl); 376 } 377 378 /** 379 * qdf_ipa_wdi_conn_pipes - Client should call this 380 * function to connect pipes 381 * @in: [in] input parameters from client 382 * @out: [out] output params to client 383 * 384 * Note: Should not be called from atomic context and only 385 * after checking IPA readiness using ipa_register_ipa_ready_cb() 386 * 387 * @Return 0 on success, negative on failure 388 */ 389 static inline int qdf_ipa_wdi_conn_pipes(qdf_ipa_wdi_conn_in_params_t *in, 390 qdf_ipa_wdi_conn_out_params_t *out) 391 { 392 return __qdf_ipa_wdi_conn_pipes(in, out); 393 } 394 395 /** 396 * qdf_ipa_wdi_disconn_pipes() - Client should call this 397 * function to disconnect pipes 398 * @hdl: IPA handle 399 * 400 * Note: Should not be called from atomic context 401 * 402 * Returns: 0 on success, negative on failure 403 */ 404 static inline int qdf_ipa_wdi_disconn_pipes(qdf_ipa_wdi_hdl_t hdl) 405 { 406 return __qdf_ipa_wdi_disconn_pipes(hdl); 407 } 408 409 /** 410 * qdf_ipa_wdi_enable_pipes() - Client should call this 411 * function to enable IPA offload data path 412 * @hdl: IPA handle 413 * 414 * Note: Should not be called from atomic context 415 * 416 * Returns: 0 on success, negative on failure 417 */ 418 static inline int qdf_ipa_wdi_enable_pipes(qdf_ipa_wdi_hdl_t hdl) 419 { 420 return __qdf_ipa_wdi_enable_pipes(hdl); 421 } 422 423 /** 424 * qdf_ipa_wdi_disable_pipes() - Client should call this 425 * function to disable IPA offload data path 426 * @hdl: IPA handle 427 * 428 * Note: Should not be called from atomic context 429 * 430 * Returns: 0 on success, negative on failure 431 */ 432 static inline int qdf_ipa_wdi_disable_pipes(qdf_ipa_wdi_hdl_t hdl) 433 { 434 return __qdf_ipa_wdi_disable_pipes(hdl); 435 } 436 437 /** 438 * qdf_ipa_wdi_set_perf_profile() - Client should call this function to 439 * set IPA clock bandwidth based on data rates 440 * @hdl: IPA handle 441 * @profile: [in] BandWidth profile to use 442 * 443 * Returns: 0 on success, negative on failure 444 */ 445 static inline int qdf_ipa_wdi_set_perf_profile(qdf_ipa_wdi_hdl_t hdl, 446 qdf_ipa_wdi_perf_profile_t *profile) 447 { 448 return __qdf_ipa_wdi_set_perf_profile(hdl, profile); 449 } 450 451 /** 452 * qdf_ipa_wdi_create_smmu_mapping() - Client should call this function to 453 * create smmu mapping 454 * @hdl: IPA handle 455 * @num_buffers: [in] number of buffers 456 * @info: [in] wdi buffer info 457 * 458 * Returns: 0 on success, negative on failure 459 */ 460 static inline int qdf_ipa_wdi_create_smmu_mapping(qdf_ipa_wdi_hdl_t hdl, 461 uint32_t num_buffers, 462 qdf_ipa_wdi_buffer_info_t *info) 463 { 464 return __qdf_ipa_wdi_create_smmu_mapping(hdl, num_buffers, info); 465 } 466 467 /** 468 * qdf_ipa_wdi_release_smmu_mapping() - Client should call this function to 469 * release smmu mapping 470 * @hdl: IPA handle 471 * @num_buffers: [in] number of buffers 472 * @info: [in] wdi buffer info 473 * 474 * Returns: 0 on success, negative on failure 475 */ 476 static inline int qdf_ipa_wdi_release_smmu_mapping(qdf_ipa_wdi_hdl_t hdl, 477 uint32_t num_buffers, 478 qdf_ipa_wdi_buffer_info_t *info) 479 { 480 return __qdf_ipa_wdi_release_smmu_mapping(hdl, num_buffers, info); 481 } 482 483 #ifdef WDI3_STATS_UPDATE 484 /** 485 * qdf_ipa_wdi_wlan_stats() - Client should call this function to 486 * send Tx byte counts to IPA driver 487 * @tx_count: number of Tx bytes 488 * 489 * Returns: 0 on success, negative on failure 490 */ 491 static inline int qdf_ipa_wdi_wlan_stats(qdf_ipa_wdi_tx_info_t *tx_stats) 492 { 493 return __qdf_ipa_wdi_wlan_stats(tx_stats); 494 } 495 496 /** 497 * qdf_ipa_uc_bw_monitor() - start/stop uc bw monitoring 498 * @bw_info: set bw info levels to monitor 499 * 500 * Returns: 0 on success, negative on failure 501 */ 502 static inline int qdf_ipa_uc_bw_monitor(qdf_ipa_wdi_bw_info_t *bw_info) 503 { 504 return __qdf_ipa_uc_bw_monitor(bw_info); 505 } 506 #endif 507 508 #endif /* IPA_OFFLOAD */ 509 #endif /* _QDF_IPA_WDI3_H */ 510