rmnet_hook.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. */
  12. #if !defined(__RMNET_HOOKS__) || defined(__RMNET_HOOK_MULTIREAD__)
  13. #define __RMNET_HOOKS__
  14. #include <linux/skbuff.h>
  15. #include <linux/tcp.h>
  16. #include "rmnet_descriptor.h"
  17. RMNET_MODULE_HOOK(offload_ingress,
  18. RMNET_MODULE_HOOK_NUM(OFFLOAD_INGRESS),
  19. RMNET_MODULE_HOOK_PROTOCOL(struct list_head *desc_list,
  20. struct rmnet_port *port),
  21. RMNET_MODULE_HOOK_ARGS(desc_list, port),
  22. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  23. );
  24. RMNET_MODULE_HOOK(offload_chain_end,
  25. RMNET_MODULE_HOOK_NUM(OFFLOAD_CHAIN_END),
  26. RMNET_MODULE_HOOK_PROTOCOL(void),
  27. RMNET_MODULE_HOOK_ARGS(),
  28. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  29. );
  30. RMNET_MODULE_HOOK(shs_skb_entry,
  31. RMNET_MODULE_HOOK_NUM(SHS_SKB_ENTRY),
  32. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb,
  33. struct rmnet_shs_clnt_s *cfg),
  34. RMNET_MODULE_HOOK_ARGS(skb, cfg),
  35. RMNET_MODULE_HOOK_RETURN_TYPE(int)
  36. );
  37. RMNET_MODULE_HOOK(shs_skb_ll_entry,
  38. RMNET_MODULE_HOOK_NUM(SHS_SKB_LL_ENTRY),
  39. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb,
  40. struct rmnet_shs_clnt_s *cfg),
  41. RMNET_MODULE_HOOK_ARGS(skb, cfg),
  42. RMNET_MODULE_HOOK_RETURN_TYPE(int)
  43. );
  44. RMNET_MODULE_HOOK(shs_switch,
  45. RMNET_MODULE_HOOK_NUM(SHS_SWITCH),
  46. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb,
  47. struct rmnet_shs_clnt_s *cfg),
  48. RMNET_MODULE_HOOK_ARGS(skb, cfg),
  49. RMNET_MODULE_HOOK_RETURN_TYPE(int)
  50. );
  51. RMNET_MODULE_HOOK(perf_tether_ingress,
  52. RMNET_MODULE_HOOK_NUM(PERF_TETHER_INGRESS),
  53. RMNET_MODULE_HOOK_PROTOCOL(struct tcphdr *tp,
  54. struct sk_buff *skb),
  55. RMNET_MODULE_HOOK_ARGS(tp, skb),
  56. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  57. );
  58. RMNET_MODULE_HOOK(perf_tether_egress,
  59. RMNET_MODULE_HOOK_NUM(PERF_TETHER_EGRESS),
  60. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb),
  61. RMNET_MODULE_HOOK_ARGS(skb),
  62. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  63. );
  64. RMNET_MODULE_HOOK(perf_tether_cmd,
  65. RMNET_MODULE_HOOK_NUM(PERF_TETHER_CMD),
  66. RMNET_MODULE_HOOK_PROTOCOL(u8 message, u64 val),
  67. RMNET_MODULE_HOOK_ARGS(message, val),
  68. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  69. );
  70. RMNET_MODULE_HOOK(perf_ingress,
  71. RMNET_MODULE_HOOK_NUM(PERF_INGRESS),
  72. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb),
  73. RMNET_MODULE_HOOK_ARGS(skb),
  74. RMNET_MODULE_HOOK_RETURN_TYPE(int)
  75. );
  76. RMNET_MODULE_HOOK(perf_egress,
  77. RMNET_MODULE_HOOK_NUM(PERF_EGRESS),
  78. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb),
  79. RMNET_MODULE_HOOK_ARGS(skb),
  80. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  81. );
  82. RMNET_MODULE_HOOK(perf_set_thresh,
  83. RMNET_MODULE_HOOK_NUM(PERF_SET_THRESH),
  84. RMNET_MODULE_HOOK_PROTOCOL(u32 hash, u32 thresh),
  85. RMNET_MODULE_HOOK_ARGS(hash, thresh),
  86. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  87. );
  88. RMNET_MODULE_HOOK(aps_pre_queue,
  89. RMNET_MODULE_HOOK_NUM(APS_PRE_QUEUE),
  90. RMNET_MODULE_HOOK_PROTOCOL(struct net_device *dev, struct sk_buff *skb),
  91. RMNET_MODULE_HOOK_ARGS(dev, skb),
  92. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  93. );
  94. RMNET_MODULE_HOOK(aps_post_queue,
  95. RMNET_MODULE_HOOK_NUM(APS_POST_QUEUE),
  96. RMNET_MODULE_HOOK_PROTOCOL(struct net_device *dev, struct sk_buff *skb),
  97. RMNET_MODULE_HOOK_ARGS(dev, skb),
  98. RMNET_MODULE_HOOK_RETURN_TYPE(int)
  99. );
  100. RMNET_MODULE_HOOK(wlan_flow_match,
  101. RMNET_MODULE_HOOK_NUM(WLAN_FLOW_MATCH),
  102. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb),
  103. RMNET_MODULE_HOOK_ARGS(skb),
  104. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  105. );
  106. RMNET_MODULE_HOOK(aps_data_inactive,
  107. RMNET_MODULE_HOOK_NUM(APS_DATA_INACTIVE),
  108. RMNET_MODULE_HOOK_PROTOCOL(void),
  109. RMNET_MODULE_HOOK_ARGS(),
  110. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  111. );
  112. RMNET_MODULE_HOOK(aps_data_active,
  113. RMNET_MODULE_HOOK_NUM(APS_DATA_ACTIVE),
  114. RMNET_MODULE_HOOK_PROTOCOL(struct rmnet_frag_descriptor *frag_desc,
  115. struct sk_buff *skb),
  116. RMNET_MODULE_HOOK_ARGS(frag_desc, skb),
  117. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  118. );
  119. RMNET_MODULE_HOOK(aps_data_report,
  120. RMNET_MODULE_HOOK_NUM(APS_DATA_REPORT),
  121. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb),
  122. RMNET_MODULE_HOOK_ARGS(skb),
  123. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  124. );
  125. RMNET_MODULE_HOOK(perf_ingress_rx_handler,
  126. RMNET_MODULE_HOOK_NUM(PERF_INGRESS_RX_HANDLER),
  127. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff *skb),
  128. RMNET_MODULE_HOOK_ARGS(skb),
  129. RMNET_MODULE_HOOK_RETURN_TYPE(void)
  130. );
  131. RMNET_MODULE_HOOK(wlan_ingress_rx_handler,
  132. RMNET_MODULE_HOOK_NUM(WLAN_INGRESS_RX_HANDLER),
  133. RMNET_MODULE_HOOK_PROTOCOL(struct sk_buff **pskb),
  134. RMNET_MODULE_HOOK_ARGS(pskb),
  135. RMNET_MODULE_HOOK_RETURN_TYPE(rx_handler_result_t)
  136. );
  137. #endif