Blame view
net/mac80211/driver-ops.h
18.5 KB
244879813 mac80211: add dri... |
1 2 3 4 5 |
#ifndef __MAC80211_DRIVER_OPS #define __MAC80211_DRIVER_OPS #include <net/mac80211.h> #include "ieee80211_i.h" |
0a2b8bb24 mac80211: driver ... |
6 |
#include "driver-trace.h" |
244879813 mac80211: add dri... |
7 |
|
7b7eab6fc mac80211: verify ... |
8 9 10 11 |
static inline void check_sdata_in_driver(struct ieee80211_sub_if_data *sdata) { WARN_ON(!(sdata->flags & IEEE80211_SDATA_IN_DRIVER)); } |
bc192f891 mac80211: do not ... |
12 13 14 15 16 17 18 19 20 |
static inline struct ieee80211_sub_if_data * get_bss_sdata(struct ieee80211_sub_if_data *sdata) { if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) sdata = container_of(sdata->bss, struct ieee80211_sub_if_data, u.ap); return sdata; } |
7bb456837 mac80211: make tx... |
21 |
static inline void drv_tx(struct ieee80211_local *local, struct sk_buff *skb) |
244879813 mac80211: add dri... |
22 |
{ |
7bb456837 mac80211: make tx... |
23 |
local->ops->tx(&local->hw, skb); |
244879813 mac80211: add dri... |
24 |
} |
11127e912 mac80211: transmi... |
25 26 27 28 29 30 31 |
static inline void drv_tx_frags(struct ieee80211_local *local, struct ieee80211_vif *vif, struct ieee80211_sta *sta, struct sk_buff_head *skbs) { local->ops->tx_frags(&local->hw, vif, sta, skbs); } |
244879813 mac80211: add dri... |
32 33 |
static inline int drv_start(struct ieee80211_local *local) { |
ea77f12f2 mac80211: remove ... |
34 |
int ret; |
e1781ed33 mac80211: annotat... |
35 |
might_sleep(); |
4efc76bdb mac80211: bracket... |
36 |
trace_drv_start(local); |
ea77f12f2 mac80211: remove ... |
37 38 39 |
local->started = true; smp_mb(); ret = local->ops->start(&local->hw); |
4efc76bdb mac80211: bracket... |
40 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
41 |
return ret; |
244879813 mac80211: add dri... |
42 43 44 45 |
} static inline void drv_stop(struct ieee80211_local *local) { |
e1781ed33 mac80211: annotat... |
46 |
might_sleep(); |
0a2b8bb24 mac80211: driver ... |
47 |
trace_drv_stop(local); |
4efc76bdb mac80211: bracket... |
48 49 |
local->ops->stop(&local->hw); trace_drv_return_void(local); |
ea77f12f2 mac80211: remove ... |
50 51 52 53 54 55 56 57 |
/* sync away all work on the tasklet before clearing started */ tasklet_disable(&local->tasklet); tasklet_enable(&local->tasklet); barrier(); local->started = false; |
244879813 mac80211: add dri... |
58 |
} |
eecc48000 mac80211: add bas... |
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#ifdef CONFIG_PM static inline int drv_suspend(struct ieee80211_local *local, struct cfg80211_wowlan *wowlan) { int ret; might_sleep(); trace_drv_suspend(local); ret = local->ops->suspend(&local->hw, wowlan); trace_drv_return_int(local, ret); return ret; } static inline int drv_resume(struct ieee80211_local *local) { int ret; might_sleep(); trace_drv_resume(local); ret = local->ops->resume(&local->hw); trace_drv_return_int(local, ret); return ret; } #endif |
244879813 mac80211: add dri... |
85 |
static inline int drv_add_interface(struct ieee80211_local *local, |
7b7eab6fc mac80211: verify ... |
86 |
struct ieee80211_sub_if_data *sdata) |
244879813 mac80211: add dri... |
87 |
{ |
e1781ed33 mac80211: annotat... |
88 89 90 |
int ret; might_sleep(); |
7b7eab6fc mac80211: verify ... |
91 92 93 94 95 96 |
if (WARN_ON(sdata->vif.type == NL80211_IFTYPE_AP_VLAN || sdata->vif.type == NL80211_IFTYPE_MONITOR)) return -EINVAL; trace_drv_add_interface(local, sdata); ret = local->ops->add_interface(&local->hw, &sdata->vif); |
4efc76bdb mac80211: bracket... |
97 |
trace_drv_return_int(local, ret); |
7b7eab6fc mac80211: verify ... |
98 99 100 |
if (ret == 0) sdata->flags |= IEEE80211_SDATA_IN_DRIVER; |
0a2b8bb24 mac80211: driver ... |
101 |
return ret; |
244879813 mac80211: add dri... |
102 |
} |
34d4bc4d4 mac80211: support... |
103 104 |
static inline int drv_change_interface(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, |
2ca27bcff mac80211: add p2p... |
105 |
enum nl80211_iftype type, bool p2p) |
34d4bc4d4 mac80211: support... |
106 107 108 109 |
{ int ret; might_sleep(); |
7b7eab6fc mac80211: verify ... |
110 |
check_sdata_in_driver(sdata); |
2ca27bcff mac80211: add p2p... |
111 112 |
trace_drv_change_interface(local, sdata, type, p2p); ret = local->ops->change_interface(&local->hw, &sdata->vif, type, p2p); |
34d4bc4d4 mac80211: support... |
113 114 115 |
trace_drv_return_int(local, ret); return ret; } |
244879813 mac80211: add dri... |
116 |
static inline void drv_remove_interface(struct ieee80211_local *local, |
7b7eab6fc mac80211: verify ... |
117 |
struct ieee80211_sub_if_data *sdata) |
244879813 mac80211: add dri... |
118 |
{ |
e1781ed33 mac80211: annotat... |
119 |
might_sleep(); |
7b7eab6fc mac80211: verify ... |
120 121 122 123 124 |
check_sdata_in_driver(sdata); trace_drv_remove_interface(local, sdata); local->ops->remove_interface(&local->hw, &sdata->vif); sdata->flags &= ~IEEE80211_SDATA_IN_DRIVER; |
4efc76bdb mac80211: bracket... |
125 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
126 127 128 129 |
} static inline int drv_config(struct ieee80211_local *local, u32 changed) { |
e1781ed33 mac80211: annotat... |
130 131 132 |
int ret; might_sleep(); |
4efc76bdb mac80211: bracket... |
133 |
trace_drv_config(local, changed); |
e1781ed33 mac80211: annotat... |
134 |
ret = local->ops->config(&local->hw, changed); |
4efc76bdb mac80211: bracket... |
135 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
136 |
return ret; |
244879813 mac80211: add dri... |
137 138 139 |
} static inline void drv_bss_info_changed(struct ieee80211_local *local, |
12375ef93 mac80211: trace i... |
140 |
struct ieee80211_sub_if_data *sdata, |
244879813 mac80211: add dri... |
141 142 143 |
struct ieee80211_bss_conf *info, u32 changed) { |
e1781ed33 mac80211: annotat... |
144 |
might_sleep(); |
7b7eab6fc mac80211: verify ... |
145 |
check_sdata_in_driver(sdata); |
4efc76bdb mac80211: bracket... |
146 |
trace_drv_bss_info_changed(local, sdata, info, changed); |
244879813 mac80211: add dri... |
147 |
if (local->ops->bss_info_changed) |
12375ef93 mac80211: trace i... |
148 |
local->ops->bss_info_changed(&local->hw, &sdata->vif, info, changed); |
4efc76bdb mac80211: bracket... |
149 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
150 |
} |
b2abb6e2b mac80211: sync dr... |
151 152 153 154 155 156 157 158 |
static inline int drv_tx_sync(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, const u8 *bssid, enum ieee80211_tx_sync_type type) { int ret = 0; might_sleep(); |
7b7eab6fc mac80211: verify ... |
159 |
check_sdata_in_driver(sdata); |
b2abb6e2b mac80211: sync dr... |
160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
trace_drv_tx_sync(local, sdata, bssid, type); if (local->ops->tx_sync) ret = local->ops->tx_sync(&local->hw, &sdata->vif, bssid, type); trace_drv_return_int(local, ret); return ret; } static inline void drv_finish_tx_sync(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, const u8 *bssid, enum ieee80211_tx_sync_type type) { might_sleep(); |
7b7eab6fc mac80211: verify ... |
174 |
check_sdata_in_driver(sdata); |
b2abb6e2b mac80211: sync dr... |
175 176 177 178 179 180 |
trace_drv_finish_tx_sync(local, sdata, bssid, type); if (local->ops->finish_tx_sync) local->ops->finish_tx_sync(&local->hw, &sdata->vif, bssid, type); trace_drv_return_void(local); } |
3ac64beec mac80211: allow c... |
181 |
static inline u64 drv_prepare_multicast(struct ieee80211_local *local, |
22bedad3c net: convert mult... |
182 |
struct netdev_hw_addr_list *mc_list) |
3ac64beec mac80211: allow c... |
183 184 |
{ u64 ret = 0; |
4efc76bdb mac80211: bracket... |
185 |
trace_drv_prepare_multicast(local, mc_list->count); |
3ac64beec mac80211: allow c... |
186 |
if (local->ops->prepare_multicast) |
22bedad3c net: convert mult... |
187 |
ret = local->ops->prepare_multicast(&local->hw, mc_list); |
3ac64beec mac80211: allow c... |
188 |
|
4efc76bdb mac80211: bracket... |
189 |
trace_drv_return_u64(local, ret); |
3ac64beec mac80211: allow c... |
190 191 192 |
return ret; } |
244879813 mac80211: add dri... |
193 194 195 |
static inline void drv_configure_filter(struct ieee80211_local *local, unsigned int changed_flags, unsigned int *total_flags, |
3ac64beec mac80211: allow c... |
196 |
u64 multicast) |
244879813 mac80211: add dri... |
197 |
{ |
3ac64beec mac80211: allow c... |
198 |
might_sleep(); |
0a2b8bb24 mac80211: driver ... |
199 |
trace_drv_configure_filter(local, changed_flags, total_flags, |
3ac64beec mac80211: allow c... |
200 |
multicast); |
4efc76bdb mac80211: bracket... |
201 202 203 |
local->ops->configure_filter(&local->hw, changed_flags, total_flags, multicast); trace_drv_return_void(local); |
244879813 mac80211: add dri... |
204 205 206 207 208 |
} static inline int drv_set_tim(struct ieee80211_local *local, struct ieee80211_sta *sta, bool set) { |
0a2b8bb24 mac80211: driver ... |
209 |
int ret = 0; |
4efc76bdb mac80211: bracket... |
210 |
trace_drv_set_tim(local, sta, set); |
244879813 mac80211: add dri... |
211 |
if (local->ops->set_tim) |
0a2b8bb24 mac80211: driver ... |
212 |
ret = local->ops->set_tim(&local->hw, sta, set); |
4efc76bdb mac80211: bracket... |
213 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
214 |
return ret; |
244879813 mac80211: add dri... |
215 216 217 |
} static inline int drv_set_key(struct ieee80211_local *local, |
12375ef93 mac80211: trace i... |
218 219 |
enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata, |
244879813 mac80211: add dri... |
220 221 222 |
struct ieee80211_sta *sta, struct ieee80211_key_conf *key) { |
e1781ed33 mac80211: annotat... |
223 224 225 |
int ret; might_sleep(); |
7b7eab6fc mac80211: verify ... |
226 |
check_sdata_in_driver(sdata); |
4efc76bdb mac80211: bracket... |
227 |
trace_drv_set_key(local, cmd, sdata, sta, key); |
e1781ed33 mac80211: annotat... |
228 |
ret = local->ops->set_key(&local->hw, cmd, &sdata->vif, sta, key); |
4efc76bdb mac80211: bracket... |
229 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
230 |
return ret; |
244879813 mac80211: add dri... |
231 232 233 |
} static inline void drv_update_tkip_key(struct ieee80211_local *local, |
b3fbdcf49 mac80211: pass vi... |
234 |
struct ieee80211_sub_if_data *sdata, |
244879813 mac80211: add dri... |
235 |
struct ieee80211_key_conf *conf, |
b3fbdcf49 mac80211: pass vi... |
236 |
struct sta_info *sta, u32 iv32, |
244879813 mac80211: add dri... |
237 238 |
u16 *phase1key) { |
b3fbdcf49 mac80211: pass vi... |
239 |
struct ieee80211_sta *ista = NULL; |
b3fbdcf49 mac80211: pass vi... |
240 241 |
if (sta) ista = &sta->sta; |
7b7eab6fc mac80211: verify ... |
242 |
check_sdata_in_driver(sdata); |
4efc76bdb mac80211: bracket... |
243 |
trace_drv_update_tkip_key(local, sdata, conf, ista, iv32); |
244879813 mac80211: add dri... |
244 |
if (local->ops->update_tkip_key) |
b3fbdcf49 mac80211: pass vi... |
245 246 |
local->ops->update_tkip_key(&local->hw, &sdata->vif, conf, ista, iv32, phase1key); |
4efc76bdb mac80211: bracket... |
247 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
248 249 250 |
} static inline int drv_hw_scan(struct ieee80211_local *local, |
a060bbfe4 mac80211: give vi... |
251 |
struct ieee80211_sub_if_data *sdata, |
244879813 mac80211: add dri... |
252 253 |
struct cfg80211_scan_request *req) { |
e1781ed33 mac80211: annotat... |
254 255 256 |
int ret; might_sleep(); |
7b7eab6fc mac80211: verify ... |
257 |
check_sdata_in_driver(sdata); |
79f460ca4 mac80211: add sup... |
258 |
trace_drv_hw_scan(local, sdata); |
a060bbfe4 mac80211: give vi... |
259 |
ret = local->ops->hw_scan(&local->hw, &sdata->vif, req); |
4efc76bdb mac80211: bracket... |
260 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
261 |
return ret; |
244879813 mac80211: add dri... |
262 |
} |
b856439b1 mac80211: add can... |
263 264 265 266 |
static inline void drv_cancel_hw_scan(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata) { might_sleep(); |
7b7eab6fc mac80211: verify ... |
267 |
check_sdata_in_driver(sdata); |
b856439b1 mac80211: add can... |
268 269 270 271 |
trace_drv_cancel_hw_scan(local, sdata); local->ops->cancel_hw_scan(&local->hw, &sdata->vif); trace_drv_return_void(local); } |
79f460ca4 mac80211: add sup... |
272 273 274 275 276 277 278 279 280 |
static inline int drv_sched_scan_start(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct cfg80211_sched_scan_request *req, struct ieee80211_sched_scan_ies *ies) { int ret; might_sleep(); |
7b7eab6fc mac80211: verify ... |
281 |
check_sdata_in_driver(sdata); |
79f460ca4 mac80211: add sup... |
282 283 284 285 286 287 288 289 290 291 292 |
trace_drv_sched_scan_start(local, sdata); ret = local->ops->sched_scan_start(&local->hw, &sdata->vif, req, ies); trace_drv_return_int(local, ret); return ret; } static inline void drv_sched_scan_stop(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata) { might_sleep(); |
7b7eab6fc mac80211: verify ... |
293 |
check_sdata_in_driver(sdata); |
79f460ca4 mac80211: add sup... |
294 295 296 297 |
trace_drv_sched_scan_stop(local, sdata); local->ops->sched_scan_stop(&local->hw, &sdata->vif); trace_drv_return_void(local); } |
244879813 mac80211: add dri... |
298 299 |
static inline void drv_sw_scan_start(struct ieee80211_local *local) { |
e1781ed33 mac80211: annotat... |
300 |
might_sleep(); |
4efc76bdb mac80211: bracket... |
301 |
trace_drv_sw_scan_start(local); |
244879813 mac80211: add dri... |
302 303 |
if (local->ops->sw_scan_start) local->ops->sw_scan_start(&local->hw); |
4efc76bdb mac80211: bracket... |
304 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
305 306 307 308 |
} static inline void drv_sw_scan_complete(struct ieee80211_local *local) { |
e1781ed33 mac80211: annotat... |
309 |
might_sleep(); |
4efc76bdb mac80211: bracket... |
310 |
trace_drv_sw_scan_complete(local); |
244879813 mac80211: add dri... |
311 312 |
if (local->ops->sw_scan_complete) local->ops->sw_scan_complete(&local->hw); |
4efc76bdb mac80211: bracket... |
313 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
314 315 316 317 318 |
} static inline int drv_get_stats(struct ieee80211_local *local, struct ieee80211_low_level_stats *stats) { |
0a2b8bb24 mac80211: driver ... |
319 |
int ret = -EOPNOTSUPP; |
e1781ed33 mac80211: annotat... |
320 |
might_sleep(); |
0a2b8bb24 mac80211: driver ... |
321 322 323 324 325 |
if (local->ops->get_stats) ret = local->ops->get_stats(&local->hw, stats); trace_drv_get_stats(local, stats, ret); return ret; |
244879813 mac80211: add dri... |
326 327 328 329 330 331 332 |
} static inline void drv_get_tkip_seq(struct ieee80211_local *local, u8 hw_key_idx, u32 *iv32, u16 *iv16) { if (local->ops->get_tkip_seq) local->ops->get_tkip_seq(&local->hw, hw_key_idx, iv32, iv16); |
0a2b8bb24 mac80211: driver ... |
333 |
trace_drv_get_tkip_seq(local, hw_key_idx, iv32, iv16); |
244879813 mac80211: add dri... |
334 |
} |
f23a47807 mac80211: support... |
335 336 337 338 339 340 341 342 343 344 345 346 347 |
static inline int drv_set_frag_threshold(struct ieee80211_local *local, u32 value) { int ret = 0; might_sleep(); trace_drv_set_frag_threshold(local, value); if (local->ops->set_frag_threshold) ret = local->ops->set_frag_threshold(&local->hw, value); trace_drv_return_int(local, ret); return ret; } |
244879813 mac80211: add dri... |
348 349 350 |
static inline int drv_set_rts_threshold(struct ieee80211_local *local, u32 value) { |
0a2b8bb24 mac80211: driver ... |
351 |
int ret = 0; |
e1781ed33 mac80211: annotat... |
352 353 |
might_sleep(); |
4efc76bdb mac80211: bracket... |
354 |
trace_drv_set_rts_threshold(local, value); |
244879813 mac80211: add dri... |
355 |
if (local->ops->set_rts_threshold) |
0a2b8bb24 mac80211: driver ... |
356 |
ret = local->ops->set_rts_threshold(&local->hw, value); |
4efc76bdb mac80211: bracket... |
357 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
358 |
return ret; |
244879813 mac80211: add dri... |
359 |
} |
310bc676e mac80211: Add new... |
360 361 362 363 364 |
static inline int drv_set_coverage_class(struct ieee80211_local *local, u8 value) { int ret = 0; might_sleep(); |
4efc76bdb mac80211: bracket... |
365 |
trace_drv_set_coverage_class(local, value); |
310bc676e mac80211: Add new... |
366 367 368 369 |
if (local->ops->set_coverage_class) local->ops->set_coverage_class(&local->hw, value); else ret = -EOPNOTSUPP; |
4efc76bdb mac80211: bracket... |
370 |
trace_drv_return_int(local, ret); |
310bc676e mac80211: Add new... |
371 372 |
return ret; } |
244879813 mac80211: add dri... |
373 |
static inline void drv_sta_notify(struct ieee80211_local *local, |
12375ef93 mac80211: trace i... |
374 |
struct ieee80211_sub_if_data *sdata, |
244879813 mac80211: add dri... |
375 376 377 |
enum sta_notify_cmd cmd, struct ieee80211_sta *sta) { |
bc192f891 mac80211: do not ... |
378 |
sdata = get_bss_sdata(sdata); |
7b7eab6fc mac80211: verify ... |
379 |
check_sdata_in_driver(sdata); |
4efc76bdb mac80211: bracket... |
380 |
trace_drv_sta_notify(local, sdata, cmd, sta); |
244879813 mac80211: add dri... |
381 |
if (local->ops->sta_notify) |
12375ef93 mac80211: trace i... |
382 |
local->ops->sta_notify(&local->hw, &sdata->vif, cmd, sta); |
4efc76bdb mac80211: bracket... |
383 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
384 |
} |
34e895075 mac80211: allow s... |
385 386 387 388 389 390 391 |
static inline int drv_sta_add(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct ieee80211_sta *sta) { int ret = 0; might_sleep(); |
bc192f891 mac80211: do not ... |
392 |
sdata = get_bss_sdata(sdata); |
7b7eab6fc mac80211: verify ... |
393 |
check_sdata_in_driver(sdata); |
4efc76bdb mac80211: bracket... |
394 |
trace_drv_sta_add(local, sdata, sta); |
34e895075 mac80211: allow s... |
395 396 |
if (local->ops->sta_add) ret = local->ops->sta_add(&local->hw, &sdata->vif, sta); |
34e895075 mac80211: allow s... |
397 |
|
4efc76bdb mac80211: bracket... |
398 |
trace_drv_return_int(local, ret); |
34e895075 mac80211: allow s... |
399 400 401 402 403 404 405 406 407 |
return ret; } static inline void drv_sta_remove(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct ieee80211_sta *sta) { might_sleep(); |
bc192f891 mac80211: do not ... |
408 |
sdata = get_bss_sdata(sdata); |
7b7eab6fc mac80211: verify ... |
409 |
check_sdata_in_driver(sdata); |
4efc76bdb mac80211: bracket... |
410 |
trace_drv_sta_remove(local, sdata, sta); |
34e895075 mac80211: allow s... |
411 412 |
if (local->ops->sta_remove) local->ops->sta_remove(&local->hw, &sdata->vif, sta); |
34e895075 mac80211: allow s... |
413 |
|
4efc76bdb mac80211: bracket... |
414 |
trace_drv_return_void(local); |
34e895075 mac80211: allow s... |
415 |
} |
f6f3def32 mac80211: save tx... |
416 417 |
static inline int drv_conf_tx(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, u16 queue, |
244879813 mac80211: add dri... |
418 419 |
const struct ieee80211_tx_queue_params *params) { |
0a2b8bb24 mac80211: driver ... |
420 |
int ret = -EOPNOTSUPP; |
e1781ed33 mac80211: annotat... |
421 422 |
might_sleep(); |
7b7eab6fc mac80211: verify ... |
423 |
check_sdata_in_driver(sdata); |
f6f3def32 mac80211: save tx... |
424 |
trace_drv_conf_tx(local, sdata, queue, params); |
244879813 mac80211: add dri... |
425 |
if (local->ops->conf_tx) |
8a3a3c85e mac80211: pass vi... |
426 427 |
ret = local->ops->conf_tx(&local->hw, &sdata->vif, queue, params); |
4efc76bdb mac80211: bracket... |
428 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
429 |
return ret; |
244879813 mac80211: add dri... |
430 |
} |
37a41b4af mac80211: add iee... |
431 432 |
static inline u64 drv_get_tsf(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata) |
244879813 mac80211: add dri... |
433 |
{ |
0a2b8bb24 mac80211: driver ... |
434 |
u64 ret = -1ULL; |
e1781ed33 mac80211: annotat... |
435 436 |
might_sleep(); |
7b7eab6fc mac80211: verify ... |
437 |
check_sdata_in_driver(sdata); |
37a41b4af mac80211: add iee... |
438 |
trace_drv_get_tsf(local, sdata); |
244879813 mac80211: add dri... |
439 |
if (local->ops->get_tsf) |
37a41b4af mac80211: add iee... |
440 |
ret = local->ops->get_tsf(&local->hw, &sdata->vif); |
4efc76bdb mac80211: bracket... |
441 |
trace_drv_return_u64(local, ret); |
0a2b8bb24 mac80211: driver ... |
442 |
return ret; |
244879813 mac80211: add dri... |
443 |
} |
37a41b4af mac80211: add iee... |
444 445 446 |
static inline void drv_set_tsf(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, u64 tsf) |
244879813 mac80211: add dri... |
447 |
{ |
e1781ed33 mac80211: annotat... |
448 |
might_sleep(); |
7b7eab6fc mac80211: verify ... |
449 |
check_sdata_in_driver(sdata); |
37a41b4af mac80211: add iee... |
450 |
trace_drv_set_tsf(local, sdata, tsf); |
244879813 mac80211: add dri... |
451 |
if (local->ops->set_tsf) |
37a41b4af mac80211: add iee... |
452 |
local->ops->set_tsf(&local->hw, &sdata->vif, tsf); |
4efc76bdb mac80211: bracket... |
453 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
454 |
} |
37a41b4af mac80211: add iee... |
455 456 |
static inline void drv_reset_tsf(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata) |
244879813 mac80211: add dri... |
457 |
{ |
e1781ed33 mac80211: annotat... |
458 |
might_sleep(); |
7b7eab6fc mac80211: verify ... |
459 |
check_sdata_in_driver(sdata); |
37a41b4af mac80211: add iee... |
460 |
trace_drv_reset_tsf(local, sdata); |
244879813 mac80211: add dri... |
461 |
if (local->ops->reset_tsf) |
37a41b4af mac80211: add iee... |
462 |
local->ops->reset_tsf(&local->hw, &sdata->vif); |
4efc76bdb mac80211: bracket... |
463 |
trace_drv_return_void(local); |
244879813 mac80211: add dri... |
464 465 466 467 |
} static inline int drv_tx_last_beacon(struct ieee80211_local *local) { |
91f44b029 mac80211 default ... |
468 |
int ret = 0; /* default unsuported op for less congestion */ |
e1781ed33 mac80211: annotat... |
469 470 |
might_sleep(); |
4efc76bdb mac80211: bracket... |
471 |
trace_drv_tx_last_beacon(local); |
244879813 mac80211: add dri... |
472 |
if (local->ops->tx_last_beacon) |
0a2b8bb24 mac80211: driver ... |
473 |
ret = local->ops->tx_last_beacon(&local->hw); |
4efc76bdb mac80211: bracket... |
474 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
475 |
return ret; |
244879813 mac80211: add dri... |
476 477 478 |
} static inline int drv_ampdu_action(struct ieee80211_local *local, |
12375ef93 mac80211: trace i... |
479 |
struct ieee80211_sub_if_data *sdata, |
244879813 mac80211: add dri... |
480 481 |
enum ieee80211_ampdu_mlme_action action, struct ieee80211_sta *sta, u16 tid, |
0b01f030d mac80211: track r... |
482 |
u16 *ssn, u8 buf_size) |
244879813 mac80211: add dri... |
483 |
{ |
0a2b8bb24 mac80211: driver ... |
484 |
int ret = -EOPNOTSUPP; |
cfcdbde35 mac80211: change ... |
485 486 |
might_sleep(); |
bc192f891 mac80211: do not ... |
487 |
sdata = get_bss_sdata(sdata); |
7b7eab6fc mac80211: verify ... |
488 |
check_sdata_in_driver(sdata); |
0b01f030d mac80211: track r... |
489 |
trace_drv_ampdu_action(local, sdata, action, sta, tid, ssn, buf_size); |
4efc76bdb mac80211: bracket... |
490 |
|
244879813 mac80211: add dri... |
491 |
if (local->ops->ampdu_action) |
12375ef93 mac80211: trace i... |
492 |
ret = local->ops->ampdu_action(&local->hw, &sdata->vif, action, |
0b01f030d mac80211: track r... |
493 |
sta, tid, ssn, buf_size); |
85ad181ea mac80211: allow d... |
494 |
|
4efc76bdb mac80211: bracket... |
495 |
trace_drv_return_int(local, ret); |
0a2b8bb24 mac80211: driver ... |
496 |
return ret; |
244879813 mac80211: add dri... |
497 |
} |
1f87f7d3a cfg80211: add rfk... |
498 |
|
1289723ef mac80211: sample ... |
499 500 501 502 |
static inline int drv_get_survey(struct ieee80211_local *local, int idx, struct survey_info *survey) { int ret = -EOPNOTSUPP; |
c466d4efb mac80211: add bas... |
503 504 |
trace_drv_get_survey(local, idx, survey); |
35dd0509b mac80211: fix fun... |
505 |
if (local->ops->get_survey) |
1289723ef mac80211: sample ... |
506 |
ret = local->ops->get_survey(&local->hw, idx, survey); |
c466d4efb mac80211: add bas... |
507 508 |
trace_drv_return_int(local, ret); |
1289723ef mac80211: sample ... |
509 510 |
return ret; } |
1f87f7d3a cfg80211: add rfk... |
511 512 513 |
static inline void drv_rfkill_poll(struct ieee80211_local *local) { |
e1781ed33 mac80211: annotat... |
514 |
might_sleep(); |
1f87f7d3a cfg80211: add rfk... |
515 516 517 |
if (local->ops->rfkill_poll) local->ops->rfkill_poll(&local->hw); } |
a80f7c0b0 mac80211: introdu... |
518 519 520 |
static inline void drv_flush(struct ieee80211_local *local, bool drop) { |
e1781ed33 mac80211: annotat... |
521 |
might_sleep(); |
a80f7c0b0 mac80211: introdu... |
522 523 524 |
trace_drv_flush(local, drop); if (local->ops->flush) local->ops->flush(&local->hw, drop); |
4efc76bdb mac80211: bracket... |
525 |
trace_drv_return_void(local); |
a80f7c0b0 mac80211: introdu... |
526 |
} |
5ce6e438d mac80211: add off... |
527 528 529 530 531 |
static inline void drv_channel_switch(struct ieee80211_local *local, struct ieee80211_channel_switch *ch_switch) { might_sleep(); |
5ce6e438d mac80211: add off... |
532 |
trace_drv_channel_switch(local, ch_switch); |
4efc76bdb mac80211: bracket... |
533 534 |
local->ops->channel_switch(&local->hw, ch_switch); trace_drv_return_void(local); |
5ce6e438d mac80211: add off... |
535 |
} |
15d967532 mac80211: Add ant... |
536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 |
static inline int drv_set_antenna(struct ieee80211_local *local, u32 tx_ant, u32 rx_ant) { int ret = -EOPNOTSUPP; might_sleep(); if (local->ops->set_antenna) ret = local->ops->set_antenna(&local->hw, tx_ant, rx_ant); trace_drv_set_antenna(local, tx_ant, rx_ant, ret); return ret; } static inline int drv_get_antenna(struct ieee80211_local *local, u32 *tx_ant, u32 *rx_ant) { int ret = -EOPNOTSUPP; might_sleep(); if (local->ops->get_antenna) ret = local->ops->get_antenna(&local->hw, tx_ant, rx_ant); trace_drv_get_antenna(local, *tx_ant, *rx_ant, ret); return ret; } |
21f835896 mac80211: impleme... |
558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 |
static inline int drv_remain_on_channel(struct ieee80211_local *local, struct ieee80211_channel *chan, enum nl80211_channel_type chantype, unsigned int duration) { int ret; might_sleep(); trace_drv_remain_on_channel(local, chan, chantype, duration); ret = local->ops->remain_on_channel(&local->hw, chan, chantype, duration); trace_drv_return_int(local, ret); return ret; } static inline int drv_cancel_remain_on_channel(struct ieee80211_local *local) { int ret; might_sleep(); trace_drv_cancel_remain_on_channel(local); ret = local->ops->cancel_remain_on_channel(&local->hw); trace_drv_return_int(local, ret); |
5f16a4361 mac80211: support... |
584 585 586 |
return ret; } |
38c091590 mac80211: impleme... |
587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 |
static inline int drv_set_ringparam(struct ieee80211_local *local, u32 tx, u32 rx) { int ret = -ENOTSUPP; might_sleep(); trace_drv_set_ringparam(local, tx, rx); if (local->ops->set_ringparam) ret = local->ops->set_ringparam(&local->hw, tx, rx); trace_drv_return_int(local, ret); return ret; } static inline void drv_get_ringparam(struct ieee80211_local *local, u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max) { might_sleep(); trace_drv_get_ringparam(local, tx, tx_max, rx, rx_max); if (local->ops->get_ringparam) local->ops->get_ringparam(&local->hw, tx, tx_max, rx, rx_max); trace_drv_return_void(local); } |
e8306f989 mac80211: Check f... |
612 613 614 615 616 617 618 619 620 621 622 623 624 |
static inline bool drv_tx_frames_pending(struct ieee80211_local *local) { bool ret = false; might_sleep(); trace_drv_tx_frames_pending(local); if (local->ops->tx_frames_pending) ret = local->ops->tx_frames_pending(&local->hw); trace_drv_return_bool(local, ret); return ret; } |
bdbfd6b58 mac80211: Add new... |
625 626 627 628 629 630 631 632 |
static inline int drv_set_bitrate_mask(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, const struct cfg80211_bitrate_mask *mask) { int ret = -EOPNOTSUPP; might_sleep(); |
7b7eab6fc mac80211: verify ... |
633 |
check_sdata_in_driver(sdata); |
bdbfd6b58 mac80211: Add new... |
634 635 636 637 638 639 640 641 |
trace_drv_set_bitrate_mask(local, sdata, mask); if (local->ops->set_bitrate_mask) ret = local->ops->set_bitrate_mask(&local->hw, &sdata->vif, mask); trace_drv_return_int(local, ret); return ret; } |
c68f4b892 mac80211: support... |
642 643 644 645 |
static inline void drv_set_rekey_data(struct ieee80211_local *local, struct ieee80211_sub_if_data *sdata, struct cfg80211_gtk_rekey_data *data) { |
7b7eab6fc mac80211: verify ... |
646 |
check_sdata_in_driver(sdata); |
c68f4b892 mac80211: support... |
647 648 649 650 651 |
trace_drv_set_rekey_data(local, sdata, data); if (local->ops->set_rekey_data) local->ops->set_rekey_data(&local->hw, &sdata->vif, data); trace_drv_return_void(local); } |
615f7b9bb mac80211: add dri... |
652 653 654 655 656 657 658 659 |
static inline void drv_rssi_callback(struct ieee80211_local *local, const enum ieee80211_rssi_event event) { trace_drv_rssi_callback(local, event); if (local->ops->rssi_callback) local->ops->rssi_callback(&local->hw, event); trace_drv_return_void(local); } |
4049e09ac mac80211: allow r... |
660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 |
static inline void drv_release_buffered_frames(struct ieee80211_local *local, struct sta_info *sta, u16 tids, int num_frames, enum ieee80211_frame_release_type reason, bool more_data) { trace_drv_release_buffered_frames(local, &sta->sta, tids, num_frames, reason, more_data); if (local->ops->release_buffered_frames) local->ops->release_buffered_frames(&local->hw, &sta->sta, tids, num_frames, reason, more_data); trace_drv_return_void(local); } |
40b964088 mac80211: explici... |
675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 |
static inline void drv_allow_buffered_frames(struct ieee80211_local *local, struct sta_info *sta, u16 tids, int num_frames, enum ieee80211_frame_release_type reason, bool more_data) { trace_drv_allow_buffered_frames(local, &sta->sta, tids, num_frames, reason, more_data); if (local->ops->allow_buffered_frames) local->ops->allow_buffered_frames(&local->hw, &sta->sta, tids, num_frames, reason, more_data); trace_drv_return_void(local); } |
244879813 mac80211: add dri... |
690 |
#endif /* __MAC80211_DRIVER_OPS */ |