aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/mlme.c
diff options
context:
space:
mode:
authorJouni Malinen <jouni.malinen@atheros.com>2009-12-23 07:15:41 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-12-28 16:55:02 -0500
commit9588bbd5529461a3dacd435bf239c84c3508f569 (patch)
treedd00011714bdefdef1f818ac7caf53682253a515 /net/wireless/mlme.c
parentb203ffc3a447eb8d9e6120b783ddee081b143061 (diff)
cfg80211: add remain-on-channel command
Add new commands for requesting the driver to remain awake on a specified channel for the specified amount of time (and another command to cancel such an operation). This can be used to implement userspace-controlled off-channel operations, like Public Action frame exchange on another channel than the operation channel. The off-channel operation should behave similarly to scan, i.e. the local station (if associated) moves into power save mode to request the AP to buffer frames for it and then moves to the other channel to allow the off-channel operation to be completed. The duration parameter can be used to request enough time to receive a response from the target station. Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r--net/wireless/mlme.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index acaeaa784d68..11f6469b3f98 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -680,3 +680,30 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
680 } 680 }
681 } 681 }
682} 682}
683
684void cfg80211_ready_on_channel(struct net_device *dev, u64 cookie,
685 struct ieee80211_channel *chan,
686 enum nl80211_channel_type channel_type,
687 unsigned int duration, gfp_t gfp)
688{
689 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
690 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
691
692 nl80211_send_remain_on_channel(rdev, dev, cookie, chan, channel_type,
693 duration, gfp);
694}
695EXPORT_SYMBOL(cfg80211_ready_on_channel);
696
697void cfg80211_remain_on_channel_expired(struct net_device *dev,
698 u64 cookie,
699 struct ieee80211_channel *chan,
700 enum nl80211_channel_type channel_type,
701 gfp_t gfp)
702{
703 struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
704 struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
705
706 nl80211_send_remain_on_channel_cancel(rdev, dev, cookie, chan,
707 channel_type, gfp);
708}
709EXPORT_SYMBOL(cfg80211_remain_on_channel_expired);