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 #define QDF_IPA_WDI_SETUP_INFO_SMMU_RX_BANK_ID(txrx, bid) \ 125 __QDF_IPA_WDI_SETUP_INFO_SMMU_RX_BANK_ID(txrx, bid) 126 127 typedef __qdf_ipa_ep_cfg_t qdf_ipa_ep_cfg_t; 128 129 #define QDF_IPA_EP_CFG_NAT_EN(cfg) \ 130 __QDF_IPA_EP_CFG_NAT_EN(cfg) 131 #define QDF_IPA_EP_CFG_HDR_LEN(cfg) \ 132 __QDF_IPA_EP_CFG_HDR_LEN(cfg) 133 #define QDF_IPA_EP_CFG_HDR_OFST_METADATA_VALID(cfg) \ 134 __QDF_IPA_EP_CFG_HDR_OFST_METADATA_VALID(cfg) 135 #define QDF_IPA_EP_CFG_HDR_METADATA_REG_VALID(cfg) \ 136 __QDF_IPA_EP_CFG_HDR_METADATA_REG_VALID(cfg) 137 #define QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE_VALID(cfg) \ 138 __QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE_VALID(cfg) 139 #define QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE(cfg) \ 140 __QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE(cfg) 141 #define QDF_IPA_EP_CFG_HDR_ADDITIONAL_CONST_LEN(cfg) \ 142 __QDF_IPA_EP_CFG_HDR_ADDITIONAL_CONST_LEN(cfg) 143 #define QDF_IPA_EP_CFG_MODE(cfg) \ 144 __QDF_IPA_EP_CFG_MODE(cfg) 145 #define QDF_IPA_EP_CFG_HDR_LITTLE_ENDIAN(cfg) \ 146 __QDF_IPA_EP_CFG_HDR_LITTLE_ENDIAN(cfg) 147 148 /** 149 * qdf_ipa_wdi_init - Client should call this function to 150 * init WDI IPA offload data path 151 * 152 * Note: Should not be called from atomic context and only 153 * after checking IPA readiness using ipa_register_ipa_ready_cb() 154 * 155 * @Return 0 on success, negative on failure 156 */ 157 static inline int qdf_ipa_wdi_init(qdf_ipa_wdi_init_in_params_t *in, 158 qdf_ipa_wdi_init_out_params_t *out) 159 { 160 return __qdf_ipa_wdi_init(in, out); 161 } 162 163 /** 164 * qdf_ipa_wdi_cleanup - Client should call this function to 165 * clean up WDI IPA offload data path 166 * @hdl: IPA handle 167 * 168 * @Return 0 on success, negative on failure 169 */ 170 static inline int qdf_ipa_wdi_cleanup(qdf_ipa_wdi_hdl_t hdl) 171 { 172 return __qdf_ipa_wdi_cleanup(hdl); 173 } 174 #endif /* CONFIG_IPA_WDI_UNIFIED_API */ 175 176 /** 177 * qdf_ipa_wdi_hdr_info_t - Header to install on IPA HW 178 */ 179 typedef __qdf_ipa_wdi_hdr_info_t qdf_ipa_wdi_hdr_info_t; 180 181 #define QDF_IPA_WDI_HDR_INFO_HDR(hdr_info) \ 182 __QDF_IPA_WDI_HDR_INFO_HDR(hdr_info) 183 #define QDF_IPA_WDI_HDR_INFO_HDR_LEN(hdr_info) \ 184 __QDF_IPA_WDI_HDR_INFO_HDR_LEN(hdr_info) 185 #define QDF_IPA_WDI_HDR_INFO_DST_MAC_ADDR_OFFSET(hdr_info) \ 186 __QDF_IPA_WDI_HDR_INFO_DST_MAC_ADDR_OFFSET(hdr_info) 187 #define QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info) \ 188 __QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info) 189 190 /** 191 * qdf_ipa_wdi_reg_intf_in_params_t - parameters for uC offload 192 * interface registration 193 */ 194 typedef __qdf_ipa_wdi_reg_intf_in_params_t qdf_ipa_wdi_reg_intf_in_params_t; 195 196 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_NETDEV_NAME(in) \ 197 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_NETDEV_NAME(in) 198 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_HDR_INFO(in) \ 199 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_HDR_INFO(in) 200 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(in) \ 201 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(in) 202 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(in) \ 203 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(in) 204 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) \ 205 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) 206 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) \ 207 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) 208 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(in) \ 209 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(in) 210 #ifdef IPA_WDI3_TX_TWO_PIPES 211 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_TX1_USED(in) \ 212 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_TX1_USED(in) 213 #endif 214 #ifdef IPA_WDI3_VLAN_SUPPORT 215 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_RX1_USED(in) \ 216 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_RX1_USED(in) 217 #endif 218 219 220 /** 221 * qdf_ipa_wdi_pipe_setup_info_t - WDI TX/Rx configuration 222 */ 223 typedef __qdf_ipa_wdi_pipe_setup_info_t qdf_ipa_wdi_pipe_setup_info_t; 224 225 #define QDF_IPA_WDI_SETUP_INFO_EP_CFG(txrx) \ 226 __QDF_IPA_WDI_SETUP_INFO_EP_CFG(txrx) 227 228 #define QDF_IPA_WDI_SETUP_INFO_NAT_EN(txrx) \ 229 __QDF_IPA_WDI_SETUP_INFO_NAT_EN(txrx) 230 #define QDF_IPA_WDI_SETUP_INFO_HDR_LEN(txrx) \ 231 __QDF_IPA_WDI_SETUP_INFO_HDR_LEN(txrx) 232 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_METADATA_VALID(txrx) \ 233 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_METADATA_VALID(txrx) 234 #define QDF_IPA_WDI_SETUP_INFO_HDR_METADATA_REG_VALID(txrx) \ 235 __QDF_IPA_WDI_SETUP_INFO_HDR_METADATA_REG_VALID(txrx) 236 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE_VALID(txrx) \ 237 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE_VALID(txrx) 238 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE(txrx) \ 239 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE(txrx) 240 #define QDF_IPA_WDI_SETUP_INFO_HDR_ADDITIONAL_CONST_LEN(txrx) \ 241 __QDF_IPA_WDI_SETUP_INFO_HDR_ADDITIONAL_CONST_LEN(txrx) 242 #define QDF_IPA_WDI_SETUP_INFO_MODE(txrx) \ 243 __QDF_IPA_WDI_SETUP_INFO_MODE(txrx) 244 #define QDF_IPA_WDI_SETUP_INFO_HDR_LITTLE_ENDIAN(txrx) \ 245 __QDF_IPA_WDI_SETUP_INFO_HDR_LITTLE_ENDIAN(txrx) 246 247 #define QDF_IPA_WDI_SETUP_INFO_CLIENT(txrx) \ 248 __QDF_IPA_WDI_SETUP_INFO_CLIENT(txrx) 249 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(txrx) \ 250 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(txrx) 251 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(txrx) \ 252 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(txrx) 253 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_DOORBELL_PA(txrx) \ 254 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_DOORBELL_PA(txrx) 255 #define QDF_IPA_WDI_SETUP_INFO_IS_TXR_RN_DB_PCIE_ADDR(txrx) \ 256 __QDF_IPA_WDI_SETUP_INFO_IS_TXR_RN_DB_PCIE_ADDR(txrx) 257 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(txrx) \ 258 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(txrx) 259 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(txrx) \ 260 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(txrx) 261 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(txrx) \ 262 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(txrx) 263 #define QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(txrx) \ 264 __QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(txrx) 265 #define QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(txrx) \ 266 __QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(txrx) 267 #define QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(txrx) \ 268 __QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(txrx) 269 #define QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(txrx) \ 270 __QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(txrx) 271 #define QDF_IPA_WDI_SETUP_INFO_RX_BANK_ID(txrx, bid) \ 272 __QDF_IPA_WDI_SETUP_INFO_RX_BANK_ID(txrx, bid) 273 274 /** 275 * qdf_ipa_wdi_conn_in_params_t - information provided by 276 * uC offload client 277 */ 278 typedef __qdf_ipa_wdi_conn_in_params_t qdf_ipa_wdi_conn_in_params_t; 279 280 #define QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(pipe_in) \ 281 __QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(pipe_in) 282 #define QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(pipe_in) \ 283 __QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(pipe_in) 284 #define QDF_IPA_WDI_CONN_IN_PARAMS_SMMU_ENABLED(pipe_in) \ 285 __QDF_IPA_WDI_CONN_IN_PARAMS_SMMU_ENABLED(pipe_in) 286 #define QDF_IPA_WDI_CONN_IN_PARAMS_NUM_SYS_PIPE_NEEDED(pipe_in) \ 287 __QDF_IPA_WDI_CONN_IN_PARAMS_NUM_SYS_PIPE_NEEDED(pipe_in) 288 #define QDF_IPA_WDI_CONN_IN_PARAMS_SYS_IN(in) \ 289 __QDF_IPA_WDI_CONN_IN_PARAMS_SYS_IN(in) 290 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX(pipe_in) \ 291 __QDF_IPA_WDI_CONN_IN_PARAMS_TX(pipe_in) 292 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_SMMU(pipe_in) \ 293 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_SMMU(pipe_in) 294 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX(pipe_in) \ 295 __QDF_IPA_WDI_CONN_IN_PARAMS_RX(pipe_in) 296 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_SMMU(pipe_in) \ 297 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_SMMU(pipe_in) 298 #define QDF_IPA_WDI_CONN_IN_PARAMS_HANDLE(pipe_in) \ 299 __QDF_IPA_WDI_CONN_IN_PARAMS_HANDLE(pipe_in) 300 301 #ifdef IPA_WDS_EASYMESH_FEATURE 302 #define QDF_IPA_WDI_CONN_IN_PARAMS_AST_NOTIFY(pipe_in) \ 303 __QDF_IPA_WDI_CONN_IN_PARAMS_AST_NOTIFY(pipe_in) 304 #endif 305 306 #ifdef IPA_WDI3_TX_TWO_PIPES 307 #define QDF_IPA_WDI_CONN_IN_PARAMS_IS_TX1_USED(pipe_in) \ 308 __QDF_IPA_WDI_CONN_IN_PARAMS_IS_TX1_USED(pipe_in) 309 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE(pipe_in) \ 310 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE(pipe_in) 311 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE_SMMU(pipe_in) \ 312 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE_SMMU(pipe_in) 313 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_ALT_DB_PA(pipe_out) \ 314 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_ALT_DB_PA(pipe_out) 315 #endif 316 #ifdef IPA_WDI3_VLAN_SUPPORT 317 #define QDF_IPA_WDI_CONN_IN_PARAMS_IS_RX1_USED(pipe_in) \ 318 __QDF_IPA_WDI_CONN_IN_PARAMS_IS_RX1_USED(pipe_in) 319 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT(pipe_in) \ 320 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT(pipe_in) 321 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT_SMMU(pipe_in) \ 322 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT_SMMU(pipe_in) 323 #endif 324 /** 325 * qdf_ipa_wdi_conn_out_params_t - information provided 326 * to WLAN druver 327 */ 328 typedef __qdf_ipa_wdi_conn_out_params_t qdf_ipa_wdi_conn_out_params_t; 329 330 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_PA(pipe_out) \ 331 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_PA(pipe_out) 332 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_VA(pipe_out) \ 333 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_VA(pipe_out) 334 #define QDF_IPA_WDI_CONN_OUT_PARAMS_RX_UC_DB_PA(pipe_out) \ 335 __QDF_IPA_WDI_CONN_OUT_PARAMS_RX_UC_DB_PA(pipe_out) 336 #ifdef IPA_WDI3_VLAN_SUPPORT 337 #define QDF_IPA_WDI_CONN_OUT_PARAMS_RX_ALT_UC_DB_PA(pipe_out) \ 338 __QDF_IPA_WDI_CONN_OUT_PARAMS_RX_ALT_UC_DB_PA(pipe_out) 339 #endif 340 #define QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) \ 341 __QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) 342 343 /** 344 * qdf_ipa_wdi_perf_profile_t - To set BandWidth profile 345 */ 346 typedef __qdf_ipa_wdi_perf_profile_t qdf_ipa_wdi_perf_profile_t; 347 348 #define QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) \ 349 __QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) 350 #define QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) \ 351 __QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) 352 353 /** 354 * qdf_ipa_wdi_reg_intf - Client should call this function to 355 * init WDI IPA offload data path 356 * 357 * Note: Should not be called from atomic context and only 358 * after checking IPA readiness using ipa_register_ipa_ready_cb() 359 * 360 * @Return 0 on success, negative on failure 361 */ 362 static inline int qdf_ipa_wdi_reg_intf( 363 qdf_ipa_wdi_reg_intf_in_params_t *in) 364 { 365 return __qdf_ipa_wdi_reg_intf(in); 366 } 367 368 /** 369 * qdf_ipa_wdi_dereg_intf - Client Driver should call this 370 * function to deregister before unload and after disconnect 371 * @netdev_name: Net device name 372 * @hdl: IPA handle 373 * 374 * @Return 0 on success, negative on failure 375 */ 376 static inline int qdf_ipa_wdi_dereg_intf(const char *netdev_name, 377 qdf_ipa_wdi_hdl_t hdl) 378 { 379 return __qdf_ipa_wdi_dereg_intf(netdev_name, hdl); 380 } 381 382 /** 383 * qdf_ipa_wdi_conn_pipes - Client should call this 384 * function to connect pipes 385 * @in: [in] input parameters from client 386 * @out: [out] output params to client 387 * 388 * Note: Should not be called from atomic context and only 389 * after checking IPA readiness using ipa_register_ipa_ready_cb() 390 * 391 * @Return 0 on success, negative on failure 392 */ 393 static inline int qdf_ipa_wdi_conn_pipes(qdf_ipa_wdi_conn_in_params_t *in, 394 qdf_ipa_wdi_conn_out_params_t *out) 395 { 396 return __qdf_ipa_wdi_conn_pipes(in, out); 397 } 398 399 /** 400 * qdf_ipa_wdi_disconn_pipes() - Client should call this 401 * function to disconnect pipes 402 * @hdl: IPA handle 403 * 404 * Note: Should not be called from atomic context 405 * 406 * Returns: 0 on success, negative on failure 407 */ 408 static inline int qdf_ipa_wdi_disconn_pipes(qdf_ipa_wdi_hdl_t hdl) 409 { 410 return __qdf_ipa_wdi_disconn_pipes(hdl); 411 } 412 413 /** 414 * qdf_ipa_wdi_enable_pipes() - Client should call this 415 * function to enable IPA offload data path 416 * @hdl: IPA handle 417 * 418 * Note: Should not be called from atomic context 419 * 420 * Returns: 0 on success, negative on failure 421 */ 422 static inline int qdf_ipa_wdi_enable_pipes(qdf_ipa_wdi_hdl_t hdl) 423 { 424 return __qdf_ipa_wdi_enable_pipes(hdl); 425 } 426 427 /** 428 * qdf_ipa_wdi_disable_pipes() - Client should call this 429 * function to disable IPA offload data path 430 * @hdl: IPA handle 431 * 432 * Note: Should not be called from atomic context 433 * 434 * Returns: 0 on success, negative on failure 435 */ 436 static inline int qdf_ipa_wdi_disable_pipes(qdf_ipa_wdi_hdl_t hdl) 437 { 438 return __qdf_ipa_wdi_disable_pipes(hdl); 439 } 440 441 /** 442 * qdf_ipa_wdi_set_perf_profile() - Client should call this function to 443 * set IPA clock bandwidth based on data rates 444 * @hdl: IPA handle 445 * @profile: [in] BandWidth profile to use 446 * 447 * Returns: 0 on success, negative on failure 448 */ 449 static inline int qdf_ipa_wdi_set_perf_profile(qdf_ipa_wdi_hdl_t hdl, 450 qdf_ipa_wdi_perf_profile_t *profile) 451 { 452 return __qdf_ipa_wdi_set_perf_profile(hdl, profile); 453 } 454 455 /** 456 * qdf_ipa_wdi_create_smmu_mapping() - Client should call this function to 457 * create smmu mapping 458 * @hdl: IPA handle 459 * @num_buffers: [in] number of buffers 460 * @info: [in] wdi buffer info 461 * 462 * Returns: 0 on success, negative on failure 463 */ 464 static inline int qdf_ipa_wdi_create_smmu_mapping(qdf_ipa_wdi_hdl_t hdl, 465 uint32_t num_buffers, 466 qdf_ipa_wdi_buffer_info_t *info) 467 { 468 return __qdf_ipa_wdi_create_smmu_mapping(hdl, num_buffers, info); 469 } 470 471 /** 472 * qdf_ipa_wdi_release_smmu_mapping() - Client should call this function to 473 * release smmu mapping 474 * @hdl: IPA handle 475 * @num_buffers: [in] number of buffers 476 * @info: [in] wdi buffer info 477 * 478 * Returns: 0 on success, negative on failure 479 */ 480 static inline int qdf_ipa_wdi_release_smmu_mapping(qdf_ipa_wdi_hdl_t hdl, 481 uint32_t num_buffers, 482 qdf_ipa_wdi_buffer_info_t *info) 483 { 484 return __qdf_ipa_wdi_release_smmu_mapping(hdl, num_buffers, info); 485 } 486 487 #ifdef WDI3_STATS_UPDATE 488 /** 489 * qdf_ipa_wdi_wlan_stats() - Client should call this function to 490 * send Tx byte counts to IPA driver 491 * @tx_count: number of Tx bytes 492 * 493 * Returns: 0 on success, negative on failure 494 */ 495 static inline int qdf_ipa_wdi_wlan_stats(qdf_ipa_wdi_tx_info_t *tx_stats) 496 { 497 return __qdf_ipa_wdi_wlan_stats(tx_stats); 498 } 499 500 /** 501 * qdf_ipa_uc_bw_monitor() - start/stop uc bw monitoring 502 * @bw_info: set bw info levels to monitor 503 * 504 * Returns: 0 on success, negative on failure 505 */ 506 static inline int qdf_ipa_uc_bw_monitor(qdf_ipa_wdi_bw_info_t *bw_info) 507 { 508 return __qdf_ipa_uc_bw_monitor(bw_info); 509 } 510 #endif 511 512 #endif /* IPA_OFFLOAD */ 513 #endif /* _QDF_IPA_WDI3_H */ 514