ipa_qmi_service.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef IPA_QMI_SERVICE_H
  6. #define IPA_QMI_SERVICE_H
  7. #include <linux/ipa.h>
  8. #include <linux/ipa_qmi_service_v01.h>
  9. #include <uapi/linux/msm_rmnet.h>
  10. #include <linux/soc/qcom/qmi.h>
  11. #include "ipa_i.h"
  12. #include <linux/rmnet_ipa_fd_ioctl.h>
  13. /**
  14. * name of the DL wwan default routing tables for v4 and v6
  15. */
  16. #define IPA_A7_QMAP_HDR_NAME "ipa_qmap_hdr"
  17. #define IPA_DFLT_WAN_RT_TBL_NAME "ipa_dflt_wan_rt"
  18. #define MAX_NUM_Q6_RULE 35
  19. #define MAX_NUM_QMI_RULE_CACHE 10
  20. #define MAX_NUM_QMI_MPM_AGGR_CACHE 3
  21. #define DEV_NAME "ipa-wan"
  22. #define SUBSYS_LOCAL_MODEM "modem"
  23. #define SUBSYS_REMOTE_MODEM "esoc0"
  24. #define IPAWANDBG(fmt, args...) \
  25. do { \
  26. pr_debug(DEV_NAME " %s:%d " fmt, __func__,\
  27. __LINE__, ## args); \
  28. IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
  29. DEV_NAME " %s:%d " fmt, ## args); \
  30. IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
  31. DEV_NAME " %s:%d " fmt, ## args); \
  32. } while (0)
  33. #define IPAWANDBG_LOW(fmt, args...) \
  34. do { \
  35. pr_debug(DEV_NAME " %s:%d " fmt, __func__,\
  36. __LINE__, ## args); \
  37. IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
  38. DEV_NAME " %s:%d " fmt, ## args); \
  39. } while (0)
  40. #define IPAWANERR(fmt, args...) \
  41. do { \
  42. pr_err(DEV_NAME " %s:%d " fmt, __func__,\
  43. __LINE__, ## args); \
  44. IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
  45. DEV_NAME " %s:%d " fmt, ## args); \
  46. IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
  47. DEV_NAME " %s:%d " fmt, ## args); \
  48. } while (0)
  49. #define IPAWANERR_RL(fmt, args...) \
  50. do { \
  51. pr_err_ratelimited_ipa(DEV_NAME " %s:%d " fmt, __func__,\
  52. __LINE__, ## args); \
  53. IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
  54. DEV_NAME " %s:%d " fmt, ## args); \
  55. IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
  56. DEV_NAME " %s:%d " fmt, ## args); \
  57. } while (0)
  58. #define IPAWANINFO(fmt, args...) \
  59. do { \
  60. pr_info(DEV_NAME " %s:%d " fmt, __func__,\
  61. __LINE__, ## args); \
  62. IPA_IPC_LOGGING(ipa_get_ipc_logbuf(), \
  63. DEV_NAME " %s:%d " fmt, ## args); \
  64. IPA_IPC_LOGGING(ipa_get_ipc_logbuf_low(), \
  65. DEV_NAME " %s:%d " fmt, ## args); \
  66. } while (0)
  67. extern struct ipa3_qmi_context *ipa3_qmi_ctx;
  68. struct ipa_offload_connection_val {
  69. enum ipa_ip_type_enum_v01 ip_type;
  70. bool valid;
  71. uint32_t rule_id;
  72. uint32_t rule_hdl;
  73. };
  74. struct ipa3_qmi_context {
  75. struct ipa_ioc_ext_intf_prop q6_ul_filter_rule[MAX_NUM_Q6_RULE];
  76. u32 q6_ul_filter_rule_hdl[MAX_NUM_Q6_RULE];
  77. int num_ipa_install_fltr_rule_req_msg;
  78. struct ipa_install_fltr_rule_req_msg_v01
  79. ipa_install_fltr_rule_req_msg_cache[MAX_NUM_QMI_RULE_CACHE];
  80. int num_ipa_install_fltr_rule_req_ex_msg;
  81. struct ipa_install_fltr_rule_req_ex_msg_v01
  82. ipa_install_fltr_rule_req_ex_msg_cache[MAX_NUM_QMI_RULE_CACHE];
  83. int num_ipa_fltr_installed_notif_req_msg;
  84. struct ipa_fltr_installed_notif_req_msg_v01
  85. ipa_fltr_installed_notif_req_msg_cache[MAX_NUM_QMI_RULE_CACHE];
  86. int num_ipa_configure_ul_firewall_rules_req_msg;
  87. struct ipa_configure_ul_firewall_rules_req_msg_v01
  88. ipa_configure_ul_firewall_rules_req_msg_cache
  89. [MAX_NUM_QMI_RULE_CACHE];
  90. struct ipa_mhi_prime_aggr_info_req_msg_v01
  91. ipa_mhi_prime_aggr_info_req_msg_cache
  92. [MAX_NUM_QMI_MPM_AGGR_CACHE];
  93. bool modem_cfg_emb_pipe_flt;
  94. struct sockaddr_qrtr client_sq;
  95. struct sockaddr_qrtr server_sq;
  96. int num_ipa_offload_connection;
  97. struct ipa_offload_connection_val
  98. ipa_offload_cache[QMI_IPA_MAX_FILTERS_V01];
  99. };
  100. struct ipa3_rmnet_mux_val {
  101. uint32_t mux_id;
  102. int8_t vchannel_name[IFNAMSIZ];
  103. bool mux_channel_set;
  104. bool ul_flt_reg;
  105. bool mux_hdr_set;
  106. uint32_t hdr_hdl;
  107. };
  108. extern struct qmi_elem_info
  109. ipa3_init_modem_driver_req_msg_data_v01_ei[];
  110. extern struct qmi_elem_info
  111. ipa3_init_modem_driver_resp_msg_data_v01_ei[];
  112. extern struct qmi_elem_info
  113. ipa3_indication_reg_req_msg_data_v01_ei[];
  114. extern struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[];
  115. extern struct qmi_elem_info
  116. ipa3_master_driver_init_complt_ind_msg_data_v01_ei[];
  117. extern struct qmi_elem_info ipa3_install_fltr_rule_req_msg_data_v01_ei[];
  118. extern struct qmi_elem_info ipa3_install_fltr_rule_resp_msg_data_v01_ei[];
  119. extern struct qmi_elem_info ipa3_fltr_installed_notif_req_msg_data_v01_ei[];
  120. extern struct qmi_elem_info
  121. ipa3_fltr_installed_notif_resp_msg_data_v01_ei[];
  122. extern struct qmi_elem_info
  123. ipa3_enable_force_clear_datapath_req_msg_data_v01_ei[];
  124. extern struct qmi_elem_info
  125. ipa3_enable_force_clear_datapath_resp_msg_data_v01_ei[];
  126. extern struct qmi_elem_info
  127. ipa3_disable_force_clear_datapath_req_msg_data_v01_ei[];
  128. extern struct qmi_elem_info
  129. ipa3_disable_force_clear_datapath_resp_msg_data_v01_ei[];
  130. extern struct qmi_elem_info ipa3_config_req_msg_data_v01_ei[];
  131. extern struct qmi_elem_info ipa3_config_resp_msg_data_v01_ei[];
  132. extern struct qmi_elem_info ipa3_get_data_stats_req_msg_data_v01_ei[];
  133. extern struct qmi_elem_info ipa3_get_data_stats_resp_msg_data_v01_ei[];
  134. extern struct qmi_elem_info ipa3_get_apn_data_stats_req_msg_data_v01_ei[];
  135. extern struct qmi_elem_info ipa3_get_apn_data_stats_resp_msg_data_v01_ei[];
  136. extern struct qmi_elem_info ipa3_set_data_usage_quota_req_msg_data_v01_ei[];
  137. extern struct qmi_elem_info
  138. ipa3_set_data_usage_quota_resp_msg_data_v01_ei[];
  139. extern struct qmi_elem_info
  140. ipa3_data_usage_quota_reached_ind_msg_data_v01_ei[];
  141. extern struct qmi_elem_info
  142. ipa3_stop_data_usage_quota_req_msg_data_v01_ei[];
  143. extern struct qmi_elem_info
  144. ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[];
  145. extern struct qmi_elem_info
  146. ipa3_init_modem_driver_cmplt_req_msg_data_v01_ei[];
  147. extern struct qmi_elem_info
  148. ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei[];
  149. extern struct qmi_elem_info
  150. ipa3_install_fltr_rule_req_ex_msg_data_v01_ei[];
  151. extern struct qmi_elem_info
  152. ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[];
  153. extern struct qmi_elem_info
  154. ipa3_ul_firewall_rule_type_data_v01_ei[];
  155. extern struct qmi_elem_info
  156. ipa3_ul_firewall_config_result_type_data_v01_ei[];
  157. extern struct
  158. qmi_elem_info ipa3_per_client_stats_info_type_data_v01_ei[];
  159. extern struct qmi_elem_info
  160. ipa3_enable_per_client_stats_req_msg_data_v01_ei[];
  161. extern struct qmi_elem_info
  162. ipa3_enable_per_client_stats_resp_msg_data_v01_ei[];
  163. extern struct qmi_elem_info
  164. ipa3_get_stats_per_client_req_msg_data_v01_ei[];
  165. extern struct qmi_elem_info
  166. ipa3_get_stats_per_client_resp_msg_data_v01_ei[];
  167. extern struct qmi_elem_info
  168. ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[];
  169. extern struct qmi_elem_info
  170. ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[];
  171. extern struct qmi_elem_info
  172. ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[];
  173. extern struct qmi_elem_info ipa_mhi_ready_indication_msg_v01_ei[];
  174. extern struct qmi_elem_info ipa_mhi_mem_addr_info_type_v01_ei[];
  175. extern struct qmi_elem_info ipa_mhi_tr_info_type_v01_ei[];
  176. extern struct qmi_elem_info ipa_mhi_er_info_type_v01_ei[];
  177. extern struct qmi_elem_info ipa_mhi_alloc_channel_req_msg_v01_ei[];
  178. extern struct qmi_elem_info ipa_mhi_ch_alloc_resp_type_v01_ei[];
  179. extern struct qmi_elem_info ipa_mhi_alloc_channel_resp_msg_v01_ei[];
  180. extern struct qmi_elem_info ipa_mhi_clk_vote_req_msg_v01_ei[];
  181. extern struct qmi_elem_info ipa_mhi_clk_vote_resp_msg_v01_ei[];
  182. extern struct qmi_elem_info ipa_mhi_cleanup_req_msg_v01_ei[];
  183. extern struct qmi_elem_info ipa_mhi_cleanup_resp_msg_v01_ei[];
  184. extern struct qmi_elem_info ipa_endp_desc_indication_msg_v01_ei[];
  185. extern struct qmi_elem_info ipa_mhi_prime_aggr_info_req_msg_v01_ei[];
  186. extern struct qmi_elem_info ipa_mhi_prime_aggr_info_resp_msg_v01_ei[];
  187. extern struct qmi_elem_info ipa_add_offload_connection_req_msg_v01_ei[];
  188. extern struct qmi_elem_info ipa_add_offload_connection_resp_msg_v01_ei[];
  189. extern struct qmi_elem_info ipa_remove_offload_connection_req_msg_v01_ei[];
  190. extern struct qmi_elem_info ipa_remove_offload_connection_resp_msg_v01_ei[];
  191. /**
  192. * struct ipa3_rmnet_context - IPA rmnet context
  193. * @ipa_rmnet_ssr: support modem SSR
  194. * @polling_interval: Requested interval for polling tethered statistics
  195. * @metered_mux_id: The mux ID on which quota has been set
  196. */
  197. struct ipa3_rmnet_context {
  198. bool ipa_rmnet_ssr;
  199. u64 polling_interval;
  200. u32 metered_mux_id;
  201. };
  202. extern struct ipa3_rmnet_context ipa3_rmnet_ctx;
  203. #ifdef CONFIG_RMNET_IPA3
  204. int ipa3_qmi_service_init(uint32_t wan_platform_type);
  205. void ipa3_qmi_service_exit(void);
  206. /* sending filter-install-request to modem*/
  207. int ipa3_qmi_filter_request_send(
  208. struct ipa_install_fltr_rule_req_msg_v01 *req);
  209. int ipa3_qmi_filter_request_ex_send(
  210. struct ipa_install_fltr_rule_req_ex_msg_v01 *req);
  211. int ipa3_qmi_add_offload_request_send(
  212. struct ipa_add_offload_connection_req_msg_v01 *req);
  213. int ipa3_qmi_rmv_offload_request_send(
  214. struct ipa_remove_offload_connection_req_msg_v01 *req);
  215. int ipa3_qmi_ul_filter_request_send(
  216. struct ipa_configure_ul_firewall_rules_req_msg_v01 *req);
  217. /* sending filter-installed-notify-request to modem*/
  218. int ipa3_qmi_filter_notify_send(struct ipa_fltr_installed_notif_req_msg_v01
  219. *req);
  220. /* voting for bus BW to ipa_rm*/
  221. int ipa3_vote_for_bus_bw(uint32_t *bw_mbps);
  222. int ipa3_qmi_enable_force_clear_datapath_send(
  223. struct ipa_enable_force_clear_datapath_req_msg_v01 *req);
  224. int ipa3_qmi_disable_force_clear_datapath_send(
  225. struct ipa_disable_force_clear_datapath_req_msg_v01 *req);
  226. int ipa3_copy_ul_filter_rule_to_ipa(struct ipa_install_fltr_rule_req_msg_v01
  227. *rule_req);
  228. int ipa3_wwan_update_mux_channel_prop(void);
  229. int ipa3_wan_ioctl_init(void);
  230. void ipa3_wan_ioctl_stop_qmi_messages(void);
  231. void ipa3_wan_ioctl_enable_qmi_messages(void);
  232. void ipa3_wan_ioctl_deinit(void);
  233. void ipa3_qmi_stop_workqueues(void);
  234. int rmnet_ipa3_poll_tethering_stats(struct wan_ioctl_poll_tethering_stats
  235. *data);
  236. int rmnet_ipa3_set_data_quota(struct wan_ioctl_set_data_quota *data);
  237. void ipa3_broadcast_quota_reach_ind(uint32_t mux_id,
  238. enum ipa_upstream_type upstream_type);
  239. int rmnet_ipa3_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe
  240. *data);
  241. int rmnet_ipa3_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
  242. bool reset);
  243. int rmnet_ipa3_query_tethering_stats_all(
  244. struct wan_ioctl_query_tether_stats_all *data);
  245. int rmnet_ipa3_reset_tethering_stats(struct wan_ioctl_reset_tether_stats *data);
  246. int rmnet_ipa3_set_lan_client_info(struct wan_ioctl_lan_client_info *data);
  247. int rmnet_ipa3_clear_lan_client_info(struct wan_ioctl_lan_client_info *data);
  248. int rmnet_ipa3_send_lan_client_msg(struct wan_ioctl_send_lan_client_msg *data);
  249. int rmnet_ipa3_enable_per_client_stats(bool *data);
  250. int rmnet_ipa3_query_per_client_stats(
  251. struct wan_ioctl_query_per_client_stats *data);
  252. int ipa3_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req,
  253. struct ipa_get_data_stats_resp_msg_v01 *resp);
  254. int ipa3_qmi_get_network_stats(struct ipa_get_apn_data_stats_req_msg_v01 *req,
  255. struct ipa_get_apn_data_stats_resp_msg_v01 *resp);
  256. int ipa3_qmi_set_data_quota(struct ipa_set_data_usage_quota_req_msg_v01 *req);
  257. int ipa3_qmi_set_aggr_info(
  258. enum ipa_aggr_enum_type_v01 aggr_enum_type);
  259. int ipa3_qmi_stop_data_qouta(void);
  260. void ipa3_q6_handshake_complete(bool ssr_bootup);
  261. int ipa3_wwan_set_modem_perf_profile(int throughput);
  262. int ipa3_wwan_set_modem_state(struct wan_ioctl_notify_wan_state *state);
  263. int ipa3_qmi_enable_per_client_stats(
  264. struct ipa_enable_per_client_stats_req_msg_v01 *req,
  265. struct ipa_enable_per_client_stats_resp_msg_v01 *resp);
  266. int ipa3_qmi_get_per_client_packet_stats(
  267. struct ipa_get_stats_per_client_req_msg_v01 *req,
  268. struct ipa_get_stats_per_client_resp_msg_v01 *resp);
  269. int ipa3_qmi_send_mhi_ready_indication(
  270. struct ipa_mhi_ready_indication_msg_v01 *req);
  271. int ipa3_qmi_send_rsc_pipe_indication(
  272. struct ipa_endp_desc_indication_msg_v01 *req);
  273. int ipa3_qmi_send_mhi_cleanup_request(struct ipa_mhi_cleanup_req_msg_v01 *req);
  274. void ipa3_qmi_init(void);
  275. void ipa3_qmi_cleanup(void);
  276. #else /* CONFIG_RMNET_IPA3 */
  277. static inline int ipa3_qmi_service_init(uint32_t wan_platform_type)
  278. {
  279. return -EPERM;
  280. }
  281. static inline void ipa3_qmi_service_exit(void) { }
  282. /* sending filter-install-request to modem*/
  283. static inline int ipa3_qmi_filter_request_send(
  284. struct ipa_install_fltr_rule_req_msg_v01 *req)
  285. {
  286. return -EPERM;
  287. }
  288. static inline int ipa3_qmi_add_offload_request_send(
  289. struct ipa_add_offload_connection_req_msg_v01 *req)
  290. {
  291. return -EPERM;
  292. }
  293. static inline int ipa3_qmi_rmv_offload_request_send(
  294. struct ipa_rmv_offload_connection_req_msg_v01 *req)
  295. {
  296. return -EPERM;
  297. }
  298. static inline int ipa3_qmi_ul_filter_request_send(
  299. struct ipa_configure_ul_firewall_rules_req_msg_v01 *req)
  300. {
  301. return -EPERM;
  302. }
  303. static inline int ipa3_qmi_filter_request_ex_send(
  304. struct ipa_install_fltr_rule_req_ex_msg_v01 *req)
  305. {
  306. return -EPERM;
  307. }
  308. /* sending filter-installed-notify-request to modem*/
  309. static inline int ipa3_qmi_filter_notify_send(
  310. struct ipa_fltr_installed_notif_req_msg_v01 *req)
  311. {
  312. return -EPERM;
  313. }
  314. static inline int ipa3_qmi_enable_force_clear_datapath_send(
  315. struct ipa_enable_force_clear_datapath_req_msg_v01 *req)
  316. {
  317. return -EPERM;
  318. }
  319. static inline int ipa3_qmi_disable_force_clear_datapath_send(
  320. struct ipa_disable_force_clear_datapath_req_msg_v01 *req)
  321. {
  322. return -EPERM;
  323. }
  324. static inline int ipa3_copy_ul_filter_rule_to_ipa(
  325. struct ipa_install_fltr_rule_req_msg_v01 *rule_req)
  326. {
  327. return -EPERM;
  328. }
  329. static inline int ipa3_wwan_update_mux_channel_prop(void)
  330. {
  331. return -EPERM;
  332. }
  333. static inline int ipa3_wan_ioctl_init(void)
  334. {
  335. return -EPERM;
  336. }
  337. static inline void ipa3_wan_ioctl_stop_qmi_messages(void) { }
  338. static inline void ipa3_wan_ioctl_enable_qmi_messages(void) { }
  339. static inline void ipa3_wan_ioctl_deinit(void) { }
  340. static inline void ipa3_qmi_stop_workqueues(void) { }
  341. static inline int ipa3_vote_for_bus_bw(uint32_t *bw_mbps)
  342. {
  343. return -EPERM;
  344. }
  345. static inline int rmnet_ipa3_poll_tethering_stats(
  346. struct wan_ioctl_poll_tethering_stats *data)
  347. {
  348. return -EPERM;
  349. }
  350. static inline int rmnet_ipa3_set_data_quota(
  351. struct wan_ioctl_set_data_quota *data)
  352. {
  353. return -EPERM;
  354. }
  355. static inline void ipa3_broadcast_quota_reach_ind(uint32_t mux_id,
  356. enum ipa_upstream_type upstream_type) { }
  357. static inline int ipa3_qmi_get_data_stats(
  358. struct ipa_get_data_stats_req_msg_v01 *req,
  359. struct ipa_get_data_stats_resp_msg_v01 *resp)
  360. {
  361. return -EPERM;
  362. }
  363. static inline int ipa3_qmi_get_network_stats(
  364. struct ipa_get_apn_data_stats_req_msg_v01 *req,
  365. struct ipa_get_apn_data_stats_resp_msg_v01 *resp)
  366. {
  367. return -EPERM;
  368. }
  369. static inline int ipa3_qmi_set_data_quota(
  370. struct ipa_set_data_usage_quota_req_msg_v01 *req)
  371. {
  372. return -EPERM;
  373. }
  374. static inline int ipa3_qmi_stop_data_qouta(void)
  375. {
  376. return -EPERM;
  377. }
  378. static inline void ipa3_q6_handshake_complete(bool ssr_bootup) { }
  379. static inline int ipa3_qmi_send_mhi_ready_indication(
  380. struct ipa_mhi_ready_indication_msg_v01 *req)
  381. {
  382. return -EPERM;
  383. }
  384. static int ipa3_qmi_send_rsc_pipe_indication(
  385. struct ipa_endp_desc_indication_msg_v01 *req)
  386. {
  387. return -EPERM;
  388. }
  389. static inline int ipa3_qmi_send_mhi_cleanup_request(
  390. struct ipa_mhi_cleanup_req_msg_v01 *req)
  391. {
  392. return -EPERM;
  393. }
  394. static inline int ipa3_wwan_set_modem_perf_profile(
  395. int throughput)
  396. {
  397. return -EPERM;
  398. }
  399. static inline int ipa3_qmi_enable_per_client_stats(
  400. struct ipa_enable_per_client_stats_req_msg_v01 *req,
  401. struct ipa_enable_per_client_stats_resp_msg_v01 *resp)
  402. {
  403. return -EPERM;
  404. }
  405. static inline int ipa3_qmi_get_per_client_packet_stats(
  406. struct ipa_get_stats_per_client_req_msg_v01 *req,
  407. struct ipa_get_stats_per_client_resp_msg_v01 *resp)
  408. {
  409. return -EPERM;
  410. }
  411. static inline int ipa3_qmi_set_aggr_info(
  412. enum ipa_aggr_enum_type_v01 aggr_enum_type)
  413. {
  414. return -EPERM;
  415. }
  416. static inline void ipa3_qmi_init(void)
  417. {
  418. }
  419. static inline void ipa3_qmi_cleanup(void)
  420. {
  421. }
  422. #endif /* CONFIG_RMNET_IPA3 */
  423. #endif /* IPA_QMI_SERVICE_H */