diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nl80211.h | 22 | ||||
-rw-r--r-- | include/net/cfg80211.h | 26 |
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 | */ | ||
450 | struct 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 */ |
437 | struct wiphy; | 457 | struct 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 | */ |
505 | struct cfg80211_ops { | 527 | struct 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 */ |