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