aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/cfg80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r--include/net/cfg80211.h47
1 files changed, 46 insertions, 1 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 5b3569b2a74c..7188934b64d3 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -3,7 +3,7 @@
3/* 3/*
4 * 802.11 device and configuration interface 4 * 802.11 device and configuration interface
5 * 5 *
6 * Copyright 2006-2009 Johannes Berg <johannes@sipsolutions.net> 6 * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
@@ -998,6 +998,7 @@ struct cfg80211_pmksa {
998 * @cancel_remain_on_channel: Cancel an on-going remain-on-channel operation. 998 * @cancel_remain_on_channel: Cancel an on-going remain-on-channel operation.
999 * This allows the operation to be terminated prior to timeout based on 999 * This allows the operation to be terminated prior to timeout based on
1000 * the duration value. 1000 * the duration value.
1001 * @action: Transmit an action frame
1001 * 1002 *
1002 * @testmode_cmd: run a test mode command 1003 * @testmode_cmd: run a test mode command
1003 * 1004 *
@@ -1144,6 +1145,11 @@ struct cfg80211_ops {
1144 struct net_device *dev, 1145 struct net_device *dev,
1145 u64 cookie); 1146 u64 cookie);
1146 1147
1148 int (*action)(struct wiphy *wiphy, struct net_device *dev,
1149 struct ieee80211_channel *chan,
1150 enum nl80211_channel_type channel_type,
1151 const u8 *buf, size_t len, u64 *cookie);
1152
1147 /* some temporary stuff to finish wext */ 1153 /* some temporary stuff to finish wext */
1148 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, 1154 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev,
1149 bool enabled, int timeout); 1155 bool enabled, int timeout);
@@ -1445,6 +1451,8 @@ struct cfg80211_cached_keys;
1445 * set by driver (if supported) on add_interface BEFORE registering the 1451 * set by driver (if supported) on add_interface BEFORE registering the
1446 * netdev and may otherwise be used by driver read-only, will be update 1452 * netdev and may otherwise be used by driver read-only, will be update
1447 * by cfg80211 on change_interface 1453 * by cfg80211 on change_interface
1454 * @action_registrations: list of registrations for action frames
1455 * @action_registrations_lock: lock for the list
1448 */ 1456 */
1449struct wireless_dev { 1457struct wireless_dev {
1450 struct wiphy *wiphy; 1458 struct wiphy *wiphy;
@@ -1454,6 +1462,9 @@ struct wireless_dev {
1454 struct list_head list; 1462 struct list_head list;
1455 struct net_device *netdev; 1463 struct net_device *netdev;
1456 1464
1465 struct list_head action_registrations;
1466 spinlock_t action_registrations_lock;
1467
1457 struct mutex mtx; 1468 struct mutex mtx;
1458 1469
1459 struct work_struct cleanup_work; 1470 struct work_struct cleanup_work;
@@ -2291,4 +2302,38 @@ void cfg80211_remain_on_channel_expired(struct net_device *dev,
2291void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr, 2302void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr,
2292 struct station_info *sinfo, gfp_t gfp); 2303 struct station_info *sinfo, gfp_t gfp);
2293 2304
2305/**
2306 * cfg80211_rx_action - notification of received, unprocessed Action frame
2307 * @dev: network device
2308 * @freq: Frequency on which the frame was received in MHz
2309 * @buf: Action frame (header + body)
2310 * @len: length of the frame data
2311 * @gfp: context flags
2312 * Returns %true if a user space application is responsible for rejecting the
2313 * unrecognized Action frame; %false if no such application is registered
2314 * (i.e., the driver is responsible for rejecting the unrecognized Action
2315 * frame)
2316 *
2317 * This function is called whenever an Action frame is received for a station
2318 * mode interface, but is not processed in kernel.
2319 */
2320bool cfg80211_rx_action(struct net_device *dev, int freq, const u8 *buf,
2321 size_t len, gfp_t gfp);
2322
2323/**
2324 * cfg80211_action_tx_status - notification of TX status for Action frame
2325 * @dev: network device
2326 * @cookie: Cookie returned by cfg80211_ops::action()
2327 * @buf: Action frame (header + body)
2328 * @len: length of the frame data
2329 * @ack: Whether frame was acknowledged
2330 * @gfp: context flags
2331 *
2332 * This function is called whenever an Action frame was requested to be
2333 * transmitted with cfg80211_ops::action() to report the TX status of the
2334 * transmission attempt.
2335 */
2336void cfg80211_action_tx_status(struct net_device *dev, u64 cookie,
2337 const u8 *buf, size_t len, bool ack, gfp_t gfp);
2338
2294#endif /* __NET_CFG80211_H */ 2339#endif /* __NET_CFG80211_H */