aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/nl80211.h36
-rw-r--r--include/net/cfg80211.h47
2 files changed, 83 insertions, 0 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index da8ea2e19273..2bfbe88837ef 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -270,6 +270,31 @@
270 * @NL80211_CMD_SET_WIPHY_NETNS: Set a wiphy's netns. Note that all devices 270 * @NL80211_CMD_SET_WIPHY_NETNS: Set a wiphy's netns. Note that all devices
271 * associated with this wiphy must be down and will follow. 271 * associated with this wiphy must be down and will follow.
272 * 272 *
273 * @NL80211_CMD_REMAIN_ON_CHANNEL: Request to remain awake on the specified
274 * channel for the specified amount of time. This can be used to do
275 * off-channel operations like transmit a Public Action frame and wait for
276 * a response while being associated to an AP on another channel.
277 * %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify which
278 * radio is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the
279 * frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be
280 * optionally used to specify additional channel parameters.
281 * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds
282 * to remain on the channel. This command is also used as an event to
283 * notify when the requested duration starts (it may take a while for the
284 * driver to schedule this time due to other concurrent needs for the
285 * radio).
286 * When called, this operation returns a cookie (%NL80211_ATTR_COOKIE)
287 * that will be included with any events pertaining to this request;
288 * the cookie is also used to cancel the request.
289 * @NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL: This command can be used to cancel a
290 * pending remain-on-channel duration if the desired operation has been
291 * completed prior to expiration of the originally requested duration.
292 * %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify the
293 * radio. The %NL80211_ATTR_COOKIE attribute must be given as well to
294 * uniquely identify the request.
295 * This command is also used as an event to notify when a requested
296 * remain-on-channel duration has expired.
297 *
273 * @NL80211_CMD_MAX: highest used command number 298 * @NL80211_CMD_MAX: highest used command number
274 * @__NL80211_CMD_AFTER_LAST: internal use 299 * @__NL80211_CMD_AFTER_LAST: internal use
275 */ 300 */
@@ -353,6 +378,9 @@ enum nl80211_commands {
353 NL80211_CMD_DEL_PMKSA, 378 NL80211_CMD_DEL_PMKSA,
354 NL80211_CMD_FLUSH_PMKSA, 379 NL80211_CMD_FLUSH_PMKSA,
355 380
381 NL80211_CMD_REMAIN_ON_CHANNEL,
382 NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL,
383
356 /* add new commands above here */ 384 /* add new commands above here */
357 385
358 /* used to define NL80211_CMD_MAX below */ 386 /* used to define NL80211_CMD_MAX below */
@@ -606,6 +634,10 @@ enum nl80211_commands {
606 * @NL80211_ATTR_MAX_NUM_PMKIDS: maximum number of PMKIDs a firmware can 634 * @NL80211_ATTR_MAX_NUM_PMKIDS: maximum number of PMKIDs a firmware can
607 * cache, a wiphy attribute. 635 * cache, a wiphy attribute.
608 * 636 *
637 * @NL80211_ATTR_DURATION: Duration of an operation in milliseconds, u32.
638 *
639 * @NL80211_ATTR_COOKIE: Generic 64-bit cookie to identify objects.
640 *
609 * @NL80211_ATTR_MAX: highest attribute number currently defined 641 * @NL80211_ATTR_MAX: highest attribute number currently defined
610 * @__NL80211_ATTR_AFTER_LAST: internal use 642 * @__NL80211_ATTR_AFTER_LAST: internal use
611 */ 643 */
@@ -743,6 +775,10 @@ enum nl80211_attrs {
743 NL80211_ATTR_PMKID, 775 NL80211_ATTR_PMKID,
744 NL80211_ATTR_MAX_NUM_PMKIDS, 776 NL80211_ATTR_MAX_NUM_PMKIDS,
745 777
778 NL80211_ATTR_DURATION,
779
780 NL80211_ATTR_COOKIE,
781
746 /* add attributes here, update the policy in nl80211.c */ 782 /* add attributes here, update the policy in nl80211.c */
747 783
748 __NL80211_ATTR_AFTER_LAST, 784 __NL80211_ATTR_AFTER_LAST,
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 542a477a94da..b66beb052054 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -988,6 +988,15 @@ struct cfg80211_pmksa {
988 * 988 *
989 * @dump_survey: get site survey information. 989 * @dump_survey: get site survey information.
990 * 990 *
991 * @remain_on_channel: Request the driver to remain awake on the specified
992 * channel for the specified duration to complete an off-channel
993 * operation (e.g., public action frame exchange). When the driver is
994 * ready on the requested channel, it must indicate this with an event
995 * notification by calling cfg80211_ready_on_channel().
996 * @cancel_remain_on_channel: Cancel an on-going remain-on-channel operation.
997 * This allows the operation to be terminated prior to timeout based on
998 * the duration value.
999 *
991 * @testmode_cmd: run a test mode command 1000 * @testmode_cmd: run a test mode command
992 * 1001 *
993 * @set_pmksa: Cache a PMKID for a BSSID. This is mostly useful for fullmac 1002 * @set_pmksa: Cache a PMKID for a BSSID. This is mostly useful for fullmac
@@ -1123,6 +1132,16 @@ struct cfg80211_ops {
1123 struct cfg80211_pmksa *pmksa); 1132 struct cfg80211_pmksa *pmksa);
1124 int (*flush_pmksa)(struct wiphy *wiphy, struct net_device *netdev); 1133 int (*flush_pmksa)(struct wiphy *wiphy, struct net_device *netdev);
1125 1134
1135 int (*remain_on_channel)(struct wiphy *wiphy,
1136 struct net_device *dev,
1137 struct ieee80211_channel *chan,
1138 enum nl80211_channel_type channel_type,
1139 unsigned int duration,
1140 u64 *cookie);
1141 int (*cancel_remain_on_channel)(struct wiphy *wiphy,
1142 struct net_device *dev,
1143 u64 cookie);
1144
1126 /* some temporary stuff to finish wext */ 1145 /* some temporary stuff to finish wext */
1127 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, 1146 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev,
1128 bool enabled, int timeout); 1147 bool enabled, int timeout);
@@ -2147,5 +2166,33 @@ void cfg80211_roamed(struct net_device *dev, const u8 *bssid,
2147void cfg80211_disconnected(struct net_device *dev, u16 reason, 2166void cfg80211_disconnected(struct net_device *dev, u16 reason,
2148 u8 *ie, size_t ie_len, gfp_t gfp); 2167 u8 *ie, size_t ie_len, gfp_t gfp);
2149 2168
2169/**
2170 * cfg80211_ready_on_channel - notification of remain_on_channel start
2171 * @dev: network device
2172 * @cookie: the request cookie
2173 * @chan: The current channel (from remain_on_channel request)
2174 * @channel_type: Channel type
2175 * @duration: Duration in milliseconds that the driver intents to remain on the
2176 * channel
2177 * @gfp: allocation flags
2178 */
2179void cfg80211_ready_on_channel(struct net_device *dev, u64 cookie,
2180 struct ieee80211_channel *chan,
2181 enum nl80211_channel_type channel_type,
2182 unsigned int duration, gfp_t gfp);
2183
2184/**
2185 * cfg80211_remain_on_channel_expired - remain_on_channel duration expired
2186 * @dev: network device
2187 * @cookie: the request cookie
2188 * @chan: The current channel (from remain_on_channel request)
2189 * @channel_type: Channel type
2190 * @gfp: allocation flags
2191 */
2192void cfg80211_remain_on_channel_expired(struct net_device *dev,
2193 u64 cookie,
2194 struct ieee80211_channel *chan,
2195 enum nl80211_channel_type channel_type,
2196 gfp_t gfp);
2150 2197
2151#endif /* __NET_CFG80211_H */ 2198#endif /* __NET_CFG80211_H */