i_qdf_nbuf_api_m.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  1. /*
  2. * Copyright (c) 2014-2017,2019-2021 The Linux Foundation. All rights reserved.
  3. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for
  6. * any purpose with or without fee is hereby granted, provided that the
  7. * above copyright notice and this permission notice appear in all
  8. * copies.
  9. *
  10. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  11. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  12. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  13. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  14. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  15. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  16. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  17. * PERFORMANCE OF THIS SOFTWARE.
  18. */
  19. /**
  20. * DOC: i_qdf_nbuf_api_m.h
  21. *
  22. * Platform specific qdf_nbuf_public network buffer API
  23. * This file defines the network buffer abstraction.
  24. * Included by qdf_nbuf.h and should not be included
  25. * directly from other files.
  26. */
  27. #ifndef _QDF_NBUF_M_H
  28. #define _QDF_NBUF_M_H
  29. static inline int qdf_nbuf_ipa_owned_get(qdf_nbuf_t buf)
  30. {
  31. return __qdf_nbuf_ipa_owned_get(buf);
  32. }
  33. static inline void qdf_nbuf_ipa_owned_set(qdf_nbuf_t buf)
  34. {
  35. __qdf_nbuf_ipa_owned_set(buf);
  36. }
  37. static inline void qdf_nbuf_ipa_owned_clear(qdf_nbuf_t buf)
  38. {
  39. __qdf_nbuf_ipa_owned_clear(buf);
  40. }
  41. static inline int qdf_nbuf_ipa_priv_get(qdf_nbuf_t buf)
  42. {
  43. return __qdf_nbuf_ipa_priv_get(buf);
  44. }
  45. static inline void qdf_nbuf_ipa_priv_set(qdf_nbuf_t buf, uint32_t priv)
  46. {
  47. QDF_BUG(!(priv & QDF_NBUF_IPA_CHECK_MASK));
  48. __qdf_nbuf_ipa_priv_set(buf, priv);
  49. }
  50. static inline void qdf_nbuf_tx_notify_comp_set(qdf_nbuf_t buf, uint8_t val)
  51. {
  52. QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_NOTIFY_COMP(buf) = val;
  53. }
  54. static inline uint8_t qdf_nbuf_tx_notify_comp_get(qdf_nbuf_t buf)
  55. {
  56. return QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_NOTIFY_COMP(buf);
  57. }
  58. /**
  59. * qdf_nbuf_set_rx_protocol_tag()
  60. * @buf: Network buffer
  61. * @val: Value to be set in the nbuf
  62. * Return: None
  63. */
  64. static inline void qdf_nbuf_set_rx_protocol_tag(qdf_nbuf_t buf, uint16_t val)
  65. {
  66. }
  67. /**
  68. * qdf_nbuf_get_rx_protocol_tag()
  69. * @buf: Network buffer
  70. * Return: Value of rx protocol tag, here 0
  71. */
  72. static inline uint16_t qdf_nbuf_get_rx_protocol_tag(qdf_nbuf_t buf)
  73. {
  74. return 0;
  75. }
  76. /**
  77. * qdf_nbuf_set_rx_flow_tag() - set given value in flow tag field
  78. * of buf(skb->cb)
  79. * @buf: Network buffer
  80. * @val: Rx Flow Tag to be set in the nbuf
  81. * Return: None
  82. */
  83. static inline void qdf_nbuf_set_rx_flow_tag(qdf_nbuf_t buf, uint16_t val)
  84. {
  85. }
  86. /**
  87. * qdf_nbuf_get_rx_flow_tag() - Get the value of flow_tag
  88. * field of buf(skb->cb)
  89. * @buf: Network buffer
  90. * Return: Value of rx flow tag, here 0
  91. */
  92. static inline uint16_t qdf_nbuf_get_rx_flow_tag(qdf_nbuf_t buf)
  93. {
  94. return 0;
  95. }
  96. /**
  97. * qdf_nbuf_set_exc_frame() - set exception frame flag
  98. * @buf: Network buffer whose cb is to set exception frame flag
  99. * @value: exception frame flag, value 0 or 1.
  100. *
  101. * Return: none
  102. */
  103. static inline void qdf_nbuf_set_exc_frame(qdf_nbuf_t buf, uint8_t value)
  104. {
  105. QDF_NBUF_CB_RX_PACKET_EXC_FRAME(buf) = value;
  106. }
  107. /**
  108. * qdf_nbuf_is_exc_frame() - check exception frame flag bit
  109. * @buf: Network buffer to get exception flag
  110. *
  111. * Return: 0 or 1
  112. */
  113. static inline uint8_t qdf_nbuf_is_exc_frame(qdf_nbuf_t buf)
  114. {
  115. return QDF_NBUF_CB_RX_PACKET_EXC_FRAME(buf);
  116. }
  117. /**
  118. * qdf_nbuf_set_lmac_id() - set lmac ID
  119. * @buf: Network buffer
  120. * @value: lmac ID value
  121. *
  122. * Return: none
  123. */
  124. static inline void qdf_nbuf_set_lmac_id(qdf_nbuf_t buf, uint8_t value)
  125. {
  126. QDF_NBUF_CB_RX_PACKET_LMAC_ID(buf) = value;
  127. }
  128. /**
  129. * qdf_nbuf_get_lmac_id() - get lmac ID of RX packet
  130. * @buf: Network buffer
  131. *
  132. * Return: lmac ID value
  133. */
  134. static inline uint8_t qdf_nbuf_get_lmac_id(qdf_nbuf_t buf)
  135. {
  136. return QDF_NBUF_CB_RX_PACKET_LMAC_ID(buf);
  137. }
  138. /**
  139. * qdf_nbuf_get_mpdu_seq_num() - get MPDU sequence number
  140. * @buf: Network buffer
  141. *
  142. * Return: mpdu sequence number value
  143. */
  144. static inline uint16_t qdf_nbuf_get_mpdu_seq_num(qdf_nbuf_t buf)
  145. {
  146. return QDF_NBUF_CB_RX_MPDU_SEQ_NUM(buf);
  147. }
  148. /**
  149. * qdf_nbuf_set_rx_ipa_smmu_map() - set ipa smmu mapped flag
  150. * @buf: Network buffer
  151. * @value: 1 - ipa smmu mapped, 0 - ipa smmu unmapped
  152. *
  153. * Return: none
  154. */
  155. static inline void qdf_nbuf_set_rx_ipa_smmu_map(qdf_nbuf_t buf,
  156. uint8_t value)
  157. {
  158. QDF_NBUF_CB_RX_PACKET_IPA_SMMU_MAP(buf) = value;
  159. }
  160. /**
  161. * qdf_nbuf_is_rx_ipa_smmu_map() - check ipa smmu map flag
  162. * @buf: Network buffer
  163. *
  164. * Return 0 or 1
  165. */
  166. static inline uint8_t qdf_nbuf_is_rx_ipa_smmu_map(qdf_nbuf_t buf)
  167. {
  168. return QDF_NBUF_CB_RX_PACKET_IPA_SMMU_MAP(buf);
  169. }
  170. /**
  171. * qdf_nbuf_set_rx_reo_dest_ind_or_sw_excpt() - set reo destination indication
  172. * or sw exception flag
  173. * @buf: Network buffer
  174. * @value: value to set
  175. *
  176. * Return: none
  177. */
  178. static inline void qdf_nbuf_set_rx_reo_dest_ind_or_sw_excpt(qdf_nbuf_t buf,
  179. uint8_t value)
  180. {
  181. QDF_NBUF_CB_RX_PACKET_REO_DEST_IND_OR_SW_EXCPT(buf) = value;
  182. }
  183. /**
  184. * qdf_nbuf_get_rx_reo_dest_ind_or_sw_excpt() - get reo destination indication
  185. * or sw exception flag
  186. * @buf: Network buffer
  187. *
  188. * Return reo destination indication value (0 ~ 31) or sw exception (0 ~ 1)
  189. */
  190. static inline uint8_t qdf_nbuf_get_rx_reo_dest_ind_or_sw_excpt(qdf_nbuf_t buf)
  191. {
  192. return QDF_NBUF_CB_RX_PACKET_REO_DEST_IND_OR_SW_EXCPT(buf);
  193. }
  194. /**
  195. * qdf_nbuf_get_tx_fctx() - get fctx of nbuf
  196. *
  197. * @buf: Network buffer
  198. * Return: fctx value
  199. */
  200. static inline void *qdf_nbuf_get_tx_fctx(qdf_nbuf_t buf)
  201. {
  202. return NULL;
  203. }
  204. /**
  205. * qdf_nbuf_set_tx_fctx_type() - set ftype and fctx
  206. *
  207. * @buf: Network buffer
  208. * @ctx: address to fctx
  209. * @type: ftype
  210. *
  211. * Return: void
  212. */
  213. static inline void
  214. qdf_nbuf_set_tx_fctx_type(qdf_nbuf_t buf, void *ctx, uint8_t type)
  215. {
  216. }
  217. /**
  218. * qdf_nbuf_tx_set_band() - Set band in nbuf cb
  219. * @nbuf: nbuf pointer
  220. * @band: peer band
  221. *
  222. * Return: None
  223. */
  224. static inline void
  225. qdf_nbuf_tx_set_band(qdf_nbuf_t nbuf, uint8_t band)
  226. {
  227. QDF_NBUF_CB_TX_BAND(nbuf) = band;
  228. }
  229. /**
  230. * qdf_nbuf_tx_get_band() - Get band from nbuf cb
  231. * @nbuf: nbuf pointer
  232. *
  233. * Return: Band
  234. */
  235. static inline uint8_t
  236. qdf_nbuf_tx_get_band(qdf_nbuf_t nbuf)
  237. {
  238. return QDF_NBUF_CB_TX_BAND(nbuf);
  239. }
  240. /**
  241. * qdf_nbuf_rx_set_band() - Set band in nbuf cb
  242. * @nbuf: nbuf pointer
  243. * @band: peer band
  244. *
  245. * Return: None
  246. */
  247. static inline void
  248. qdf_nbuf_rx_set_band(qdf_nbuf_t nbuf, uint8_t band)
  249. {
  250. QDF_NBUF_CB_RX_BAND(nbuf) = band;
  251. }
  252. /**
  253. * qdf_nbuf_rx_get_band() - Get band from nbuf cb
  254. * @nbuf: nbuf pointer
  255. *
  256. * Return: Band
  257. */
  258. static inline uint8_t
  259. qdf_nbuf_rx_get_band(qdf_nbuf_t nbuf)
  260. {
  261. return QDF_NBUF_CB_RX_BAND(nbuf);
  262. }
  263. /**
  264. * qdf_nbuf_set_tx_ts() - set tx timestamp of nbuf
  265. * @buf: Network buffer
  266. *
  267. * Return: None
  268. */
  269. static inline void qdf_nbuf_set_tx_ts(qdf_nbuf_t buf)
  270. {
  271. __qdf_nbuf_set_tx_ts(buf, qdf_ktime_real_get());
  272. }
  273. /**
  274. * qdf_nbuf_get_tx_ts() - get tx timestamp of nbuf
  275. * @buf: Network buffer
  276. * @clear: clear the fields after getting tx timestamp
  277. *
  278. * Return: tx timestamp
  279. */
  280. static inline qdf_time_t qdf_nbuf_get_tx_ts(qdf_nbuf_t buf, bool clear)
  281. {
  282. qdf_time_t ts = __qdf_nbuf_get_tx_ts(buf);
  283. if (clear)
  284. __qdf_nbuf_clear_tx_ts(buf);
  285. return ts;
  286. }
  287. #endif /* _QDF_NBUF_M_H */