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 /**
21 * DOC: i_qdf_nbuf_api_w.h
22 *
23 * Platform specific qdf_nbuf_public network buffer API
24 * This file defines the network buffer abstraction.
25 * Included by qdf_nbuf.h and should not be included
26 * directly from other files.
27 */
28
29 #ifndef _QDF_NBUF_W_H
30 #define _QDF_NBUF_W_H
31
qdf_nbuf_get_tx_fctx(qdf_nbuf_t buf)32 static inline void *qdf_nbuf_get_tx_fctx(qdf_nbuf_t buf)
33 {
34 return __qdf_nbuf_get_tx_fctx(buf);
35 }
36
qdf_nbuf_get_rx_fctx(qdf_nbuf_t buf)37 static inline void *qdf_nbuf_get_rx_fctx(qdf_nbuf_t buf)
38 {
39 return __qdf_nbuf_get_rx_fctx(buf);
40 }
41
42
43 static inline void
qdf_nbuf_set_tx_fctx_type(qdf_nbuf_t buf,void * ctx,uint8_t type)44 qdf_nbuf_set_tx_fctx_type(qdf_nbuf_t buf, void *ctx, uint8_t type)
45 {
46 __qdf_nbuf_set_tx_fctx_type(buf, ctx, type);
47 }
48
49 static inline void
qdf_nbuf_set_rx_fctx_type(qdf_nbuf_t buf,void * ctx,uint8_t type)50 qdf_nbuf_set_rx_fctx_type(qdf_nbuf_t buf, void *ctx, uint8_t type)
51 {
52 __qdf_nbuf_set_rx_fctx_type(buf, ctx, type);
53 }
54
55
56 static inline void *
qdf_nbuf_get_ext_cb(qdf_nbuf_t buf)57 qdf_nbuf_get_ext_cb(qdf_nbuf_t buf)
58 {
59 return __qdf_nbuf_get_ext_cb(buf);
60 }
61
62 static inline void
qdf_nbuf_set_ext_cb(qdf_nbuf_t buf,void * ref)63 qdf_nbuf_set_ext_cb(qdf_nbuf_t buf, void *ref)
64 {
65 __qdf_nbuf_set_ext_cb(buf, ref);
66 }
67
68 /**
69 * qdf_nbuf_set_rx_protocol_tag() - set given value in protocol_tag
70 * field of buf(skb->cb)
71 * @buf: Network buffer
72 * @val: Value to be set in the nbuf
73 * Return: None
74 */
qdf_nbuf_set_rx_protocol_tag(qdf_nbuf_t buf,uint16_t val)75 static inline void qdf_nbuf_set_rx_protocol_tag(qdf_nbuf_t buf, uint16_t val)
76 {
77 __qdf_nbuf_set_rx_protocol_tag(buf, val);
78 }
79
80 /**
81 * qdf_nbuf_get_rx_protocol_tag() - Get the value of protocol_tag
82 * field of buf(skb->cb)
83 * @buf: Network buffer
84 * Return: Value of Rx protocol tag in the nbuf
85 */
qdf_nbuf_get_rx_protocol_tag(qdf_nbuf_t buf)86 static inline uint16_t qdf_nbuf_get_rx_protocol_tag(qdf_nbuf_t buf)
87 {
88 return __qdf_nbuf_get_rx_protocol_tag(buf);
89 }
90
91 /**
92 * qdf_nbuf_set_rx_flow_tag() - set given value in flow tag field
93 * of buf(skb->cb)
94 * @buf: Network buffer
95 * @val: Value of Rx flow tag to be set in the nbuf
96 * Return: None
97 */
qdf_nbuf_set_rx_flow_tag(qdf_nbuf_t buf,uint16_t val)98 static inline void qdf_nbuf_set_rx_flow_tag(qdf_nbuf_t buf, uint16_t val)
99 {
100 __qdf_nbuf_set_rx_flow_tag(buf, val);
101 }
102
103 /**
104 * qdf_nbuf_get_rx_flow_tag() - Get the value of flow_tag
105 * field of buf(skb->cb)
106 * @buf: Network buffer
107 * Return: Value of the Rx flow tag in the nbuf
108 */
qdf_nbuf_get_rx_flow_tag(qdf_nbuf_t buf)109 static inline uint16_t qdf_nbuf_get_rx_flow_tag(qdf_nbuf_t buf)
110 {
111 return __qdf_nbuf_get_rx_flow_tag(buf);
112 }
113
114 /**
115 * qdf_nbuf_set_rx_flow_idx_valid() - set given value in flow idx valid
116 * of buf(skb->cb)
117 * @buf: Network buffer
118 * @val: Value of Rx flow tag to be set in the nbuf
119 * Return: None
120 */
qdf_nbuf_set_rx_flow_idx_valid(qdf_nbuf_t buf,uint8_t val)121 static inline void qdf_nbuf_set_rx_flow_idx_valid(qdf_nbuf_t buf, uint8_t val)
122 {
123 __qdf_nbuf_set_rx_flow_idx_valid(buf, val);
124 }
125
126 /**
127 * qdf_nbuf_get_rx_flow_idx_valid() - Get the value of flow_idx_valid
128 * field of buf(skb->cb)
129 * @buf: Network buffer
130 * Return: Value of the Rx flow tag in the nbuf
131 */
qdf_nbuf_get_rx_flow_idx_valid(qdf_nbuf_t buf)132 static inline uint8_t qdf_nbuf_get_rx_flow_idx_valid(qdf_nbuf_t buf)
133 {
134 return __qdf_nbuf_get_rx_flow_idx_valid(buf);
135 }
136
137 /**
138 * qdf_nbuf_set_rx_flow_idx_timeout() - set given value in flow idx timeout
139 * of buf(skb->cb)
140 * @buf: Network buffer
141 * @val: Value of Rx flow tag to be set in the nbuf
142 * Return: None
143 */
qdf_nbuf_set_rx_flow_idx_timeout(qdf_nbuf_t buf,uint8_t val)144 static inline void qdf_nbuf_set_rx_flow_idx_timeout(qdf_nbuf_t buf, uint8_t val)
145 {
146 __qdf_nbuf_set_rx_flow_idx_timeout(buf, val);
147 }
148
149 /**
150 * qdf_nbuf_get_rx_flow_idx_timeout() - Get the value of flow_idx_timeout
151 * field of buf(skb->cb)
152 * @buf: Network buffer
153 * Return: Value of the Rx flow idx timeout in the nbuf
154 */
qdf_nbuf_get_rx_flow_idx_timeout(qdf_nbuf_t buf)155 static inline uint8_t qdf_nbuf_get_rx_flow_idx_timeout(qdf_nbuf_t buf)
156 {
157 return __qdf_nbuf_get_rx_flow_idx_timeout(buf);
158 }
159
160 /**
161 * qdf_nbuf_set_exc_frame() - set exception frame flag
162 * @buf: Network buffer whose cb is to set exception frame flag
163 * @value: exception frame flag, value 0 or 1.
164 *
165 * Return: none
166 */
qdf_nbuf_set_exc_frame(qdf_nbuf_t buf,uint8_t value)167 static inline void qdf_nbuf_set_exc_frame(qdf_nbuf_t buf, uint8_t value)
168 {
169 }
170
171 /**
172 * qdf_nbuf_set_rx_ipa_smmu_map() - set ipa smmu mapped flag
173 * @buf: Network buffer
174 * @value: 1 - ipa smmu mapped, 0 - ipa smmu unmapped
175 *
176 * Return: none
177 */
qdf_nbuf_set_rx_ipa_smmu_map(qdf_nbuf_t buf,uint8_t value)178 static inline void qdf_nbuf_set_rx_ipa_smmu_map(qdf_nbuf_t buf,
179 uint8_t value)
180 {
181 QDF_NBUF_CB_RX_PACKET_IPA_SMMU_MAP(buf) = value;
182 }
183
184 /**
185 * qdf_nbuf_is_intra_bss() - get intra bss bit
186 * @buf: Network buffer
187 *
188 * Return: integer value - 0/1
189 */
qdf_nbuf_is_intra_bss(qdf_nbuf_t buf)190 static inline int qdf_nbuf_is_intra_bss(qdf_nbuf_t buf)
191 {
192 return __qdf_nbuf_is_intra_bss(buf);
193 }
194
195 /**
196 * qdf_nbuf_set_intra_bss() - set intra bss bit
197 * @buf: Network buffer
198 * @val: 0/1
199 *
200 * Return: void
201 */
qdf_nbuf_set_intra_bss(qdf_nbuf_t buf,uint8_t val)202 static inline void qdf_nbuf_set_intra_bss(qdf_nbuf_t buf, uint8_t val)
203 {
204 __qdf_nbuf_set_intra_bss(buf, val);
205 }
206
207 /**
208 * qdf_nbuf_is_rx_ipa_smmu_map() - check ipa smmu map flag
209 * @buf: Network buffer
210 *
211 * Return 0 or 1
212 */
qdf_nbuf_is_rx_ipa_smmu_map(qdf_nbuf_t buf)213 static inline uint8_t qdf_nbuf_is_rx_ipa_smmu_map(qdf_nbuf_t buf)
214 {
215 return QDF_NBUF_CB_RX_PACKET_IPA_SMMU_MAP(buf);
216 }
217
qdf_nbuf_ipa_owned_get(qdf_nbuf_t buf)218 static inline int qdf_nbuf_ipa_owned_get(qdf_nbuf_t buf)
219 {
220 return 0;
221 }
222
qdf_nbuf_ipa_owned_set(qdf_nbuf_t buf)223 static inline void qdf_nbuf_ipa_owned_set(qdf_nbuf_t buf)
224 { }
225
qdf_nbuf_ipa_owned_clear(qdf_nbuf_t buf)226 static inline void qdf_nbuf_ipa_owned_clear(qdf_nbuf_t buf)
227 { }
228
qdf_nbuf_ipa_priv_get(qdf_nbuf_t buf)229 static inline int qdf_nbuf_ipa_priv_get(qdf_nbuf_t buf)
230 {
231 return 0;
232 }
233
qdf_nbuf_ipa_priv_set(qdf_nbuf_t buf,uint32_t priv)234 static inline void qdf_nbuf_ipa_priv_set(qdf_nbuf_t buf, uint32_t priv)
235 { }
236
237 /**
238 * qdf_nbuf_set_rx_reo_dest_ind_or_sw_excpt() - set reo destination indication
239 * or sw exception flag
240 * @buf: Network buffer
241 * @value: value to set
242 *
243 * Return: none
244 */
qdf_nbuf_set_rx_reo_dest_ind_or_sw_excpt(qdf_nbuf_t buf,uint8_t value)245 static inline void qdf_nbuf_set_rx_reo_dest_ind_or_sw_excpt(qdf_nbuf_t buf,
246 uint8_t value)
247 {
248 }
249
qdf_nbuf_tx_notify_comp_set(qdf_nbuf_t buf,uint8_t val)250 static inline void qdf_nbuf_tx_notify_comp_set(qdf_nbuf_t buf, uint8_t val)
251 {
252 }
253
qdf_nbuf_tx_notify_comp_get(qdf_nbuf_t buf)254 static inline uint8_t qdf_nbuf_tx_notify_comp_get(qdf_nbuf_t buf)
255 {
256 return 0;
257 }
258
qdf_nbuf_set_lmac_id(qdf_nbuf_t buf,uint8_t value)259 static inline void qdf_nbuf_set_lmac_id(qdf_nbuf_t buf, uint8_t value)
260 {
261 }
262
qdf_nbuf_get_lmac_id(qdf_nbuf_t buf)263 static inline uint8_t qdf_nbuf_get_lmac_id(qdf_nbuf_t buf)
264 {
265 return 0;
266 }
267
qdf_nbuf_get_mpdu_seq_num(qdf_nbuf_t buf)268 static inline uint16_t qdf_nbuf_get_mpdu_seq_num(qdf_nbuf_t buf)
269 {
270 return 0;
271 }
272
273 /**
274 * qdf_nbuf_tx_set_band() - Set band in nbuf cb
275 * @nbuf: nbuf pointer
276 * @band: peer band
277 *
278 * Return: None
279 */
280 static inline void
qdf_nbuf_tx_set_band(qdf_nbuf_t nbuf,uint8_t band)281 qdf_nbuf_tx_set_band(qdf_nbuf_t nbuf, uint8_t band)
282 {
283 }
284
285 /**
286 * qdf_nbuf_tx_get_band() - Get band from nbuf cb
287 * @nbuf: nbuf pointer
288 *
289 * Return: Band
290 */
291 static inline uint8_t
qdf_nbuf_tx_get_band(qdf_nbuf_t nbuf)292 qdf_nbuf_tx_get_band(qdf_nbuf_t nbuf)
293 {
294 return 0;
295 }
296
297 /**
298 * qdf_nbuf_rx_set_band() - Set band in nbuf cb
299 * @nbuf: nbuf pointer
300 * @band: peer band
301 *
302 * Return: None
303 */
304 static inline void
qdf_nbuf_rx_set_band(qdf_nbuf_t nbuf,uint8_t band)305 qdf_nbuf_rx_set_band(qdf_nbuf_t nbuf, uint8_t band)
306 {
307 }
308
309 /**
310 * qdf_nbuf_rx_get_band() - Get band from nbuf cb
311 * @nbuf: nbuf pointer
312 *
313 * Return: Band
314 */
315 static inline uint8_t
qdf_nbuf_rx_get_band(qdf_nbuf_t nbuf)316 qdf_nbuf_rx_get_band(qdf_nbuf_t nbuf)
317 {
318 return 0;
319 }
320 #endif /* _QDF_NBUF_W_H */
321