1 /* 2 * Copyright (c) 2017-2020, 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 #define QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) \ 264 __QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) 265 266 /** 267 * qdf_ipa_wdi_perf_profile_t - To set BandWidth profile 268 */ 269 typedef __qdf_ipa_wdi_perf_profile_t qdf_ipa_wdi_perf_profile_t; 270 271 #define QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) \ 272 __QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) 273 #define QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) \ 274 __QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) 275 276 /** 277 * qdf_ipa_wdi_reg_intf - Client should call this function to 278 * init WDI IPA offload data path 279 * 280 * Note: Should not be called from atomic context and only 281 * after checking IPA readiness using ipa_register_ipa_ready_cb() 282 * 283 * @Return 0 on success, negative on failure 284 */ 285 static inline int qdf_ipa_wdi_reg_intf( 286 qdf_ipa_wdi_reg_intf_in_params_t *in) 287 { 288 return __qdf_ipa_wdi_reg_intf(in); 289 } 290 291 /** 292 * qdf_ipa_wdi_dereg_intf - Client Driver should call this 293 * function to deregister before unload and after disconnect 294 * 295 * @Return 0 on success, negative on failure 296 */ 297 static inline int qdf_ipa_wdi_dereg_intf(const char *netdev_name) 298 { 299 return __qdf_ipa_wdi_dereg_intf(netdev_name); 300 } 301 302 /** 303 * qdf_ipa_wdi_conn_pipes - Client should call this 304 * function to connect pipes 305 * 306 * @in: [in] input parameters from client 307 * @out: [out] output params to client 308 * 309 * Note: Should not be called from atomic context and only 310 * after checking IPA readiness using ipa_register_ipa_ready_cb() 311 * 312 * @Return 0 on success, negative on failure 313 */ 314 static inline int qdf_ipa_wdi_conn_pipes(qdf_ipa_wdi_conn_in_params_t *in, 315 qdf_ipa_wdi_conn_out_params_t *out) 316 { 317 return __qdf_ipa_wdi_conn_pipes(in, out); 318 } 319 320 /** 321 * qdf_ipa_wdi_disconn_pipes() - Client should call this 322 * function to disconnect pipes 323 * 324 * Note: Should not be called from atomic context 325 * 326 * Returns: 0 on success, negative on failure 327 */ 328 static inline int qdf_ipa_wdi_disconn_pipes(void) 329 { 330 return __qdf_ipa_wdi_disconn_pipes(); 331 } 332 333 /** 334 * qdf_ipa_wdi_enable_pipes() - Client should call this 335 * function to enable IPA offload data path 336 * 337 * Note: Should not be called from atomic context 338 * 339 * Returns: 0 on success, negative on failure 340 */ 341 static inline int qdf_ipa_wdi_enable_pipes(void) 342 { 343 return __qdf_ipa_wdi_enable_pipes(); 344 } 345 346 /** 347 * qdf_ipa_wdi_disable_pipes() - Client should call this 348 * function to disable IPA offload data path 349 * 350 * Note: Should not be called from atomic context 351 * 352 * Returns: 0 on success, negative on failure 353 */ 354 static inline int qdf_ipa_wdi_disable_pipes(void) 355 { 356 return __qdf_ipa_wdi_disable_pipes(); 357 } 358 359 /** 360 * qdf_ipa_wdi_set_perf_profile() - Client should call this function to 361 * set IPA clock bandwidth based on data rates 362 * 363 * @profile: [in] BandWidth profile to use 364 * 365 * Returns: 0 on success, negative on failure 366 */ 367 static inline int qdf_ipa_wdi_set_perf_profile( 368 qdf_ipa_wdi_perf_profile_t *profile) 369 { 370 return __qdf_ipa_wdi_set_perf_profile(profile); 371 } 372 373 /** 374 * qdf_ipa_wdi_create_smmu_mapping() - Client should call this function to 375 * create smmu mapping 376 * 377 * @num_buffers: [in] number of buffers 378 * @info: [in] wdi buffer info 379 * 380 * Returns: 0 on success, negative on failure 381 */ 382 static inline int qdf_ipa_wdi_create_smmu_mapping(uint32_t num_buffers, 383 qdf_ipa_wdi_buffer_info_t *info) 384 { 385 return __qdf_ipa_wdi_create_smmu_mapping(num_buffers, info); 386 } 387 388 /** 389 * qdf_ipa_wdi_release_smmu_mapping() - Client should call this function to 390 * release smmu mapping 391 * 392 * @num_buffers: [in] number of buffers 393 * @info: [in] wdi buffer info 394 * 395 * Returns: 0 on success, negative on failure 396 */ 397 static inline int qdf_ipa_wdi_release_smmu_mapping(uint32_t num_buffers, 398 qdf_ipa_wdi_buffer_info_t *info) 399 { 400 return __qdf_ipa_wdi_release_smmu_mapping(num_buffers, info); 401 } 402 403 #ifdef WDI3_STATS_UPDATE 404 /** 405 * qdf_ipa_wdi_wlan_stats() - Client should call this function to 406 * send Tx byte counts to IPA driver 407 * @tx_count: number of Tx bytes 408 * 409 * Returns: 0 on success, negative on failure 410 */ 411 static inline int qdf_ipa_wdi_wlan_stats(qdf_ipa_wdi_tx_info_t *tx_stats) 412 { 413 return __qdf_ipa_wdi_wlan_stats(tx_stats); 414 } 415 416 /** 417 * qdf_ipa_uc_bw_monitor() - start/stop uc bw monitoring 418 * @bw_info: set bw info levels to monitor 419 * 420 * Returns: 0 on success, negative on failure 421 */ 422 static inline int qdf_ipa_uc_bw_monitor(qdf_ipa_wdi_bw_info_t *bw_info) 423 { 424 return __qdf_ipa_uc_bw_monitor(bw_info); 425 } 426 #endif 427 428 #endif /* IPA_OFFLOAD */ 429 #endif /* _QDF_IPA_WDI3_H */ 430