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