diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-02-25 09:36:57 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-02-25 15:33:40 -0500 |
commit | 5f16a43617d46cf255a66f4dc193a7f5b2540aaf (patch) | |
tree | add5e551c9d1abeee57b1fbad632a0e23bdd39b1 /net/mac80211/driver-ops.h | |
parent | 8628172f45c839376bf2b70bbd326d56e68dadc3 (diff) |
mac80211: support direct offchannel TX offload
For devices supported by iwlwifi sometimes
off-channel transmissions need to be handled
by the device completely. To support this
mac80211 needs to pass the frame directly
to the driver and not through the TX path
as the driver needs the frame and channel
information at the same time.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/driver-ops.h')
-rw-r--r-- | net/mac80211/driver-ops.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index 32f05c1abbaf..3729296f6f95 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h | |||
@@ -495,4 +495,35 @@ static inline int drv_cancel_remain_on_channel(struct ieee80211_local *local) | |||
495 | return ret; | 495 | return ret; |
496 | } | 496 | } |
497 | 497 | ||
498 | static inline int drv_offchannel_tx(struct ieee80211_local *local, | ||
499 | struct sk_buff *skb, | ||
500 | struct ieee80211_channel *chan, | ||
501 | enum nl80211_channel_type channel_type, | ||
502 | unsigned int wait) | ||
503 | { | ||
504 | int ret; | ||
505 | |||
506 | might_sleep(); | ||
507 | |||
508 | trace_drv_offchannel_tx(local, skb, chan, channel_type, wait); | ||
509 | ret = local->ops->offchannel_tx(&local->hw, skb, chan, | ||
510 | channel_type, wait); | ||
511 | trace_drv_return_int(local, ret); | ||
512 | |||
513 | return ret; | ||
514 | } | ||
515 | |||
516 | static inline int drv_offchannel_tx_cancel_wait(struct ieee80211_local *local) | ||
517 | { | ||
518 | int ret; | ||
519 | |||
520 | might_sleep(); | ||
521 | |||
522 | trace_drv_offchannel_tx_cancel_wait(local); | ||
523 | ret = local->ops->offchannel_tx_cancel_wait(&local->hw); | ||
524 | trace_drv_return_int(local, ret); | ||
525 | |||
526 | return ret; | ||
527 | } | ||
528 | |||
498 | #endif /* __MAC80211_DRIVER_OPS */ | 529 | #endif /* __MAC80211_DRIVER_OPS */ |