diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-11-25 04:02:29 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-11-29 15:24:35 -0500 |
commit | f7ca38dfe58c20cb1aa2ed9643187e8b194b5bae (patch) | |
tree | 42db54588fd5fa769a16def75708117903577b40 /net/wireless/mlme.c | |
parent | 9a67d761b39614c0495dcab9a204e21a9f4c4d31 (diff) |
nl80211/cfg80211: extend mgmt-tx API for off-channel
With p2p, it is sometimes necessary to transmit
a frame (typically an action frame) on another
channel than the current channel. Enable this
through the CMD_FRAME API, and allow it to wait
for a response. A new command allows that wait
to be aborted.
However, allow userspace to specify whether or
not it wants to allow off-channel TX, it may
actually want to use the same channel only.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r-- | net/wireless/mlme.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 6980a0c315b2..d7680f2a4c5b 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -864,9 +864,9 @@ void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev) | |||
864 | 864 | ||
865 | int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, | 865 | int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, |
866 | struct net_device *dev, | 866 | struct net_device *dev, |
867 | struct ieee80211_channel *chan, | 867 | struct ieee80211_channel *chan, bool offchan, |
868 | enum nl80211_channel_type channel_type, | 868 | enum nl80211_channel_type channel_type, |
869 | bool channel_type_valid, | 869 | bool channel_type_valid, unsigned int wait, |
870 | const u8 *buf, size_t len, u64 *cookie) | 870 | const u8 *buf, size_t len, u64 *cookie) |
871 | { | 871 | { |
872 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 872 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
@@ -946,8 +946,9 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, | |||
946 | return -EINVAL; | 946 | return -EINVAL; |
947 | 947 | ||
948 | /* Transmit the Action frame as requested by user space */ | 948 | /* Transmit the Action frame as requested by user space */ |
949 | return rdev->ops->mgmt_tx(&rdev->wiphy, dev, chan, channel_type, | 949 | return rdev->ops->mgmt_tx(&rdev->wiphy, dev, chan, offchan, |
950 | channel_type_valid, buf, len, cookie); | 950 | channel_type, channel_type_valid, |
951 | wait, buf, len, cookie); | ||
951 | } | 952 | } |
952 | 953 | ||
953 | bool cfg80211_rx_mgmt(struct net_device *dev, int freq, const u8 *buf, | 954 | bool cfg80211_rx_mgmt(struct net_device *dev, int freq, const u8 *buf, |