aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/nl80211.h22
-rw-r--r--include/net/cfg80211.h26
2 files changed, 48 insertions, 0 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 4e7a7986a521..76aae3d8e97e 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -133,6 +133,14 @@
133 * @NL80211_CMD_SET_MESH_PARAMS: Set mesh networking properties for the 133 * @NL80211_CMD_SET_MESH_PARAMS: Set mesh networking properties for the
134 * interface identified by %NL80211_ATTR_IFINDEX 134 * interface identified by %NL80211_ATTR_IFINDEX
135 * 135 *
136 * @NL80211_CMD_SET_MGMT_EXTRA_IE: Set extra IEs for management frames. The
137 * interface is identified with %NL80211_ATTR_IFINDEX and the management
138 * frame subtype with %NL80211_ATTR_MGMT_SUBTYPE. The extra IE data to be
139 * added to the end of the specified management frame is specified with
140 * %NL80211_ATTR_IE. If the command succeeds, the requested data will be
141 * added to all specified management frames generated by
142 * kernel/firmware/driver.
143 *
136 * @NL80211_CMD_MAX: highest used command number 144 * @NL80211_CMD_MAX: highest used command number
137 * @__NL80211_CMD_AFTER_LAST: internal use 145 * @__NL80211_CMD_AFTER_LAST: internal use
138 */ 146 */
@@ -178,6 +186,8 @@ enum nl80211_commands {
178 NL80211_CMD_GET_MESH_PARAMS, 186 NL80211_CMD_GET_MESH_PARAMS,
179 NL80211_CMD_SET_MESH_PARAMS, 187 NL80211_CMD_SET_MESH_PARAMS,
180 188
189 NL80211_CMD_SET_MGMT_EXTRA_IE,
190
181 /* add new commands above here */ 191 /* add new commands above here */
182 192
183 /* used to define NL80211_CMD_MAX below */ 193 /* used to define NL80211_CMD_MAX below */
@@ -190,6 +200,7 @@ enum nl80211_commands {
190 * here 200 * here
191 */ 201 */
192#define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS 202#define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS
203#define NL80211_CMD_SET_MGMT_EXTRA_IE NL80211_CMD_SET_MGMT_EXTRA_IE
193 204
194/** 205/**
195 * enum nl80211_attrs - nl80211 netlink attributes 206 * enum nl80211_attrs - nl80211 netlink attributes
@@ -284,6 +295,12 @@ enum nl80211_commands {
284 * supported interface types, each a flag attribute with the number 295 * supported interface types, each a flag attribute with the number
285 * of the interface mode. 296 * of the interface mode.
286 * 297 *
298 * @NL80211_ATTR_MGMT_SUBTYPE: Management frame subtype for
299 * %NL80211_CMD_SET_MGMT_EXTRA_IE.
300 *
301 * @NL80211_ATTR_IE: Information element(s) data (used, e.g., with
302 * %NL80211_CMD_SET_MGMT_EXTRA_IE).
303 *
287 * @NL80211_ATTR_MAX: highest attribute number currently defined 304 * @NL80211_ATTR_MAX: highest attribute number currently defined
288 * @__NL80211_ATTR_AFTER_LAST: internal use 305 * @__NL80211_ATTR_AFTER_LAST: internal use
289 */ 306 */
@@ -348,6 +365,9 @@ enum nl80211_attrs {
348 365
349 NL80211_ATTR_KEY_DEFAULT_MGMT, 366 NL80211_ATTR_KEY_DEFAULT_MGMT,
350 367
368 NL80211_ATTR_MGMT_SUBTYPE,
369 NL80211_ATTR_IE,
370
351 /* add attributes here, update the policy in nl80211.c */ 371 /* add attributes here, update the policy in nl80211.c */
352 372
353 __NL80211_ATTR_AFTER_LAST, 373 __NL80211_ATTR_AFTER_LAST,
@@ -363,6 +383,8 @@ enum nl80211_attrs {
363#define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS 383#define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS
364#define NL80211_ATTR_WIPHY_FREQ NL80211_ATTR_WIPHY_FREQ 384#define NL80211_ATTR_WIPHY_FREQ NL80211_ATTR_WIPHY_FREQ
365#define NL80211_ATTR_WIPHY_CHANNEL_TYPE NL80211_ATTR_WIPHY_CHANNEL_TYPE 385#define NL80211_ATTR_WIPHY_CHANNEL_TYPE NL80211_ATTR_WIPHY_CHANNEL_TYPE
386#define NL80211_ATTR_MGMT_SUBTYPE NL80211_ATTR_MGMT_SUBTYPE
387#define NL80211_ATTR_IE NL80211_ATTR_IE
366 388
367#define NL80211_MAX_SUPP_RATES 32 389#define NL80211_MAX_SUPP_RATES 32
368#define NL80211_MAX_SUPP_REG_RULES 32 390#define NL80211_MAX_SUPP_REG_RULES 32
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index df78abc496f1..c7da88fb15b7 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -433,6 +433,26 @@ struct ieee80211_txq_params {
433 u8 aifs; 433 u8 aifs;
434}; 434};
435 435
436/**
437 * struct mgmt_extra_ie_params - Extra management frame IE parameters
438 *
439 * Used to add extra IE(s) into management frames. If the driver cannot add the
440 * requested data into all management frames of the specified subtype that are
441 * generated in kernel or firmware/hardware, it must reject the configuration
442 * call. The IE data buffer is added to the end of the specified management
443 * frame body after all other IEs. This addition is not applied to frames that
444 * are injected through a monitor interface.
445 *
446 * @subtype: Management frame subtype
447 * @ies: IE data buffer or %NULL to remove previous data
448 * @ies_len: Length of @ies in octets
449 */
450struct mgmt_extra_ie_params {
451 u8 subtype;
452 u8 *ies;
453 int ies_len;
454};
455
436/* from net/wireless.h */ 456/* from net/wireless.h */
437struct wiphy; 457struct wiphy;
438 458
@@ -501,6 +521,8 @@ struct ieee80211_channel;
501 * @set_txq_params: Set TX queue parameters 521 * @set_txq_params: Set TX queue parameters
502 * 522 *
503 * @set_channel: Set channel 523 * @set_channel: Set channel
524 *
525 * @set_mgmt_extra_ie: Set extra IE data for management frames
504 */ 526 */
505struct cfg80211_ops { 527struct cfg80211_ops {
506 int (*add_virtual_intf)(struct wiphy *wiphy, char *name, 528 int (*add_virtual_intf)(struct wiphy *wiphy, char *name,
@@ -571,6 +593,10 @@ struct cfg80211_ops {
571 int (*set_channel)(struct wiphy *wiphy, 593 int (*set_channel)(struct wiphy *wiphy,
572 struct ieee80211_channel *chan, 594 struct ieee80211_channel *chan,
573 enum nl80211_channel_type channel_type); 595 enum nl80211_channel_type channel_type);
596
597 int (*set_mgmt_extra_ie)(struct wiphy *wiphy,
598 struct net_device *dev,
599 struct mgmt_extra_ie_params *params);
574}; 600};
575 601
576/* temporary wext handlers */ 602/* temporary wext handlers */