aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-10-08 16:51:11 -0400
committerDavid S. Miller <davem@davemloft.net>2010-10-08 16:51:11 -0400
commit9cf8d1a3b8cb19fa49494c1b8f0f9e3a37f2c218 (patch)
tree0e9262488832ad27f6ba42680bf104872fa3c697 /include
parent8391d07b80e8da957cd888870e23f8e218438622 (diff)
parente9a68707d736f4f73d7e209885d7b4c5c452b1dc (diff)
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'include')
-rw-r--r--include/linux/nl80211.h25
-rw-r--r--include/linux/wl12xx.h13
-rw-r--r--include/net/cfg80211.h25
-rw-r--r--include/net/genetlink.h18
-rw-r--r--include/net/mac80211.h30
5 files changed, 100 insertions, 11 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index f0518b0278a9..c08709fe36fc 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -315,8 +315,8 @@
315 * channel for the specified amount of time. This can be used to do 315 * channel for the specified amount of time. This can be used to do
316 * off-channel operations like transmit a Public Action frame and wait for 316 * off-channel operations like transmit a Public Action frame and wait for
317 * a response while being associated to an AP on another channel. 317 * a response while being associated to an AP on another channel.
318 * %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify which 318 * %NL80211_ATTR_IFINDEX is used to specify which interface (and thus
319 * radio is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the 319 * radio) is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the
320 * frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be 320 * frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be
321 * optionally used to specify additional channel parameters. 321 * optionally used to specify additional channel parameters.
322 * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds 322 * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds
@@ -387,6 +387,8 @@
387 * of any other interfaces, and other interfaces will again take 387 * of any other interfaces, and other interfaces will again take
388 * precedence when they are used. 388 * precedence when they are used.
389 * 389 *
390 * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface.
391 *
390 * @NL80211_CMD_MAX: highest used command number 392 * @NL80211_CMD_MAX: highest used command number
391 * @__NL80211_CMD_AFTER_LAST: internal use 393 * @__NL80211_CMD_AFTER_LAST: internal use
392 */ 394 */
@@ -489,6 +491,7 @@ enum nl80211_commands {
489 NL80211_CMD_NOTIFY_CQM, 491 NL80211_CMD_NOTIFY_CQM,
490 492
491 NL80211_CMD_SET_CHANNEL, 493 NL80211_CMD_SET_CHANNEL,
494 NL80211_CMD_SET_WDS_PEER,
492 495
493 /* add new commands above here */ 496 /* add new commands above here */
494 497
@@ -798,6 +801,9 @@ enum nl80211_commands {
798 * This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING 801 * This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING
799 * for non-automatic settings. 802 * for non-automatic settings.
800 * 803 *
804 * @NL80211_ATTR_SUPPORT_IBSS_RSN: The device supports IBSS RSN, which mostly
805 * means support for per-station GTKs.
806 *
801 * @NL80211_ATTR_MAX: highest attribute number currently defined 807 * @NL80211_ATTR_MAX: highest attribute number currently defined
802 * @__NL80211_ATTR_AFTER_LAST: internal use 808 * @__NL80211_ATTR_AFTER_LAST: internal use
803 */ 809 */
@@ -965,6 +971,8 @@ enum nl80211_attrs {
965 NL80211_ATTR_CONTROL_PORT_ETHERTYPE, 971 NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
966 NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, 972 NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT,
967 973
974 NL80211_ATTR_SUPPORT_IBSS_RSN,
975
968 /* add attributes here, update the policy in nl80211.c */ 976 /* add attributes here, update the policy in nl80211.c */
969 977
970 __NL80211_ATTR_AFTER_LAST, 978 __NL80211_ATTR_AFTER_LAST,
@@ -1129,6 +1137,8 @@ enum nl80211_rate_info {
1129 * @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station) 1137 * @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station)
1130 * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this 1138 * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this
1131 * station) 1139 * station)
1140 * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station)
1141 * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station)
1132 */ 1142 */
1133enum nl80211_sta_info { 1143enum nl80211_sta_info {
1134 __NL80211_STA_INFO_INVALID, 1144 __NL80211_STA_INFO_INVALID,
@@ -1142,6 +1152,8 @@ enum nl80211_sta_info {
1142 NL80211_STA_INFO_TX_BITRATE, 1152 NL80211_STA_INFO_TX_BITRATE,
1143 NL80211_STA_INFO_RX_PACKETS, 1153 NL80211_STA_INFO_RX_PACKETS,
1144 NL80211_STA_INFO_TX_PACKETS, 1154 NL80211_STA_INFO_TX_PACKETS,
1155 NL80211_STA_INFO_TX_RETRIES,
1156 NL80211_STA_INFO_TX_FAILED,
1145 1157
1146 /* keep last */ 1158 /* keep last */
1147 __NL80211_STA_INFO_AFTER_LAST, 1159 __NL80211_STA_INFO_AFTER_LAST,
@@ -1400,6 +1412,7 @@ enum nl80211_reg_rule_flags {
1400 * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved 1412 * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved
1401 * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel 1413 * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel
1402 * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm) 1414 * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm)
1415 * @NL80211_SURVEY_INFO_IN_USE: channel is currently being used
1403 * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number 1416 * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
1404 * currently defined 1417 * currently defined
1405 * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use 1418 * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
@@ -1408,6 +1421,7 @@ enum nl80211_survey_info {
1408 __NL80211_SURVEY_INFO_INVALID, 1421 __NL80211_SURVEY_INFO_INVALID,
1409 NL80211_SURVEY_INFO_FREQUENCY, 1422 NL80211_SURVEY_INFO_FREQUENCY,
1410 NL80211_SURVEY_INFO_NOISE, 1423 NL80211_SURVEY_INFO_NOISE,
1424 NL80211_SURVEY_INFO_IN_USE,
1411 1425
1412 /* keep last */ 1426 /* keep last */
1413 __NL80211_SURVEY_INFO_AFTER_LAST, 1427 __NL80211_SURVEY_INFO_AFTER_LAST,
@@ -1654,11 +1668,14 @@ enum nl80211_auth_type {
1654 * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key 1668 * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key
1655 * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key 1669 * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key
1656 * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS) 1670 * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS)
1671 * @NUM_NL80211_KEYTYPES: number of defined key types
1657 */ 1672 */
1658enum nl80211_key_type { 1673enum nl80211_key_type {
1659 NL80211_KEYTYPE_GROUP, 1674 NL80211_KEYTYPE_GROUP,
1660 NL80211_KEYTYPE_PAIRWISE, 1675 NL80211_KEYTYPE_PAIRWISE,
1661 NL80211_KEYTYPE_PEERKEY, 1676 NL80211_KEYTYPE_PEERKEY,
1677
1678 NUM_NL80211_KEYTYPES
1662}; 1679};
1663 1680
1664/** 1681/**
@@ -1689,6 +1706,9 @@ enum nl80211_wpa_versions {
1689 * CCMP keys, each six bytes in little endian 1706 * CCMP keys, each six bytes in little endian
1690 * @NL80211_KEY_DEFAULT: flag indicating default key 1707 * @NL80211_KEY_DEFAULT: flag indicating default key
1691 * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key 1708 * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key
1709 * @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not
1710 * specified the default depends on whether a MAC address was
1711 * given with the command using the key or not (u32)
1692 * @__NL80211_KEY_AFTER_LAST: internal 1712 * @__NL80211_KEY_AFTER_LAST: internal
1693 * @NL80211_KEY_MAX: highest key attribute 1713 * @NL80211_KEY_MAX: highest key attribute
1694 */ 1714 */
@@ -1700,6 +1720,7 @@ enum nl80211_key_attributes {
1700 NL80211_KEY_SEQ, 1720 NL80211_KEY_SEQ,
1701 NL80211_KEY_DEFAULT, 1721 NL80211_KEY_DEFAULT,
1702 NL80211_KEY_DEFAULT_MGMT, 1722 NL80211_KEY_DEFAULT_MGMT,
1723 NL80211_KEY_TYPE,
1703 1724
1704 /* keep last */ 1725 /* keep last */
1705 __NL80211_KEY_AFTER_LAST, 1726 __NL80211_KEY_AFTER_LAST,
diff --git a/include/linux/wl12xx.h b/include/linux/wl12xx.h
index 95deae3968f4..4f902e1908aa 100644
--- a/include/linux/wl12xx.h
+++ b/include/linux/wl12xx.h
@@ -32,7 +32,20 @@ struct wl12xx_platform_data {
32 int board_ref_clock; 32 int board_ref_clock;
33}; 33};
34 34
35#ifdef CONFIG_WL12XX_PLATFORM_DATA
36
35int wl12xx_set_platform_data(const struct wl12xx_platform_data *data); 37int wl12xx_set_platform_data(const struct wl12xx_platform_data *data);
38
39#else
40
41static inline
42int wl12xx_set_platform_data(const struct wl12xx_platform_data *data)
43{
44 return -ENOSYS;
45}
46
47#endif
48
36const struct wl12xx_platform_data *wl12xx_get_platform_data(void); 49const struct wl12xx_platform_data *wl12xx_get_platform_data(void);
37 50
38#endif 51#endif
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index a0613ff62c97..0778d04b3bbe 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -293,12 +293,14 @@ struct key_params {
293 * enum survey_info_flags - survey information flags 293 * enum survey_info_flags - survey information flags
294 * 294 *
295 * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in 295 * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in
296 * @SURVEY_INFO_IN_USE: channel is currently being used
296 * 297 *
297 * Used by the driver to indicate which info in &struct survey_info 298 * Used by the driver to indicate which info in &struct survey_info
298 * it has filled in during the get_survey(). 299 * it has filled in during the get_survey().
299 */ 300 */
300enum survey_info_flags { 301enum survey_info_flags {
301 SURVEY_INFO_NOISE_DBM = 1<<0, 302 SURVEY_INFO_NOISE_DBM = 1<<0,
303 SURVEY_INFO_IN_USE = 1<<1,
302}; 304};
303 305
304/** 306/**
@@ -399,6 +401,8 @@ struct station_parameters {
399 * (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs) 401 * (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs)
400 * @STATION_INFO_RX_PACKETS: @rx_packets filled 402 * @STATION_INFO_RX_PACKETS: @rx_packets filled
401 * @STATION_INFO_TX_PACKETS: @tx_packets filled 403 * @STATION_INFO_TX_PACKETS: @tx_packets filled
404 * @STATION_INFO_TX_RETRIES: @tx_retries filled
405 * @STATION_INFO_TX_FAILED: @tx_failed filled
402 */ 406 */
403enum station_info_flags { 407enum station_info_flags {
404 STATION_INFO_INACTIVE_TIME = 1<<0, 408 STATION_INFO_INACTIVE_TIME = 1<<0,
@@ -411,6 +415,8 @@ enum station_info_flags {
411 STATION_INFO_TX_BITRATE = 1<<7, 415 STATION_INFO_TX_BITRATE = 1<<7,
412 STATION_INFO_RX_PACKETS = 1<<8, 416 STATION_INFO_RX_PACKETS = 1<<8,
413 STATION_INFO_TX_PACKETS = 1<<9, 417 STATION_INFO_TX_PACKETS = 1<<9,
418 STATION_INFO_TX_RETRIES = 1<<10,
419 STATION_INFO_TX_FAILED = 1<<11,
414}; 420};
415 421
416/** 422/**
@@ -460,6 +466,8 @@ struct rate_info {
460 * @txrate: current unicast bitrate to this station 466 * @txrate: current unicast bitrate to this station
461 * @rx_packets: packets received from this station 467 * @rx_packets: packets received from this station
462 * @tx_packets: packets transmitted to this station 468 * @tx_packets: packets transmitted to this station
469 * @tx_retries: cumulative retry counts
470 * @tx_failed: number of failed transmissions (retries exceeded, no ACK)
463 * @generation: generation number for nl80211 dumps. 471 * @generation: generation number for nl80211 dumps.
464 * This number should increase every time the list of stations 472 * This number should increase every time the list of stations
465 * changes, i.e. when a station is added or removed, so that 473 * changes, i.e. when a station is added or removed, so that
@@ -477,6 +485,8 @@ struct station_info {
477 struct rate_info txrate; 485 struct rate_info txrate;
478 u32 rx_packets; 486 u32 rx_packets;
479 u32 tx_packets; 487 u32 tx_packets;
488 u32 tx_retries;
489 u32 tx_failed;
480 490
481 int generation; 491 int generation;
482}; 492};
@@ -1128,13 +1138,14 @@ struct cfg80211_ops {
1128 struct vif_params *params); 1138 struct vif_params *params);
1129 1139
1130 int (*add_key)(struct wiphy *wiphy, struct net_device *netdev, 1140 int (*add_key)(struct wiphy *wiphy, struct net_device *netdev,
1131 u8 key_index, const u8 *mac_addr, 1141 u8 key_index, bool pairwise, const u8 *mac_addr,
1132 struct key_params *params); 1142 struct key_params *params);
1133 int (*get_key)(struct wiphy *wiphy, struct net_device *netdev, 1143 int (*get_key)(struct wiphy *wiphy, struct net_device *netdev,
1134 u8 key_index, const u8 *mac_addr, void *cookie, 1144 u8 key_index, bool pairwise, const u8 *mac_addr,
1145 void *cookie,
1135 void (*callback)(void *cookie, struct key_params*)); 1146 void (*callback)(void *cookie, struct key_params*));
1136 int (*del_key)(struct wiphy *wiphy, struct net_device *netdev, 1147 int (*del_key)(struct wiphy *wiphy, struct net_device *netdev,
1137 u8 key_index, const u8 *mac_addr); 1148 u8 key_index, bool pairwise, const u8 *mac_addr);
1138 int (*set_default_key)(struct wiphy *wiphy, 1149 int (*set_default_key)(struct wiphy *wiphy,
1139 struct net_device *netdev, 1150 struct net_device *netdev,
1140 u8 key_index); 1151 u8 key_index);
@@ -1218,7 +1229,7 @@ struct cfg80211_ops {
1218 int (*get_tx_power)(struct wiphy *wiphy, int *dbm); 1229 int (*get_tx_power)(struct wiphy *wiphy, int *dbm);
1219 1230
1220 int (*set_wds_peer)(struct wiphy *wiphy, struct net_device *dev, 1231 int (*set_wds_peer)(struct wiphy *wiphy, struct net_device *dev,
1221 u8 *addr); 1232 const u8 *addr);
1222 1233
1223 void (*rfkill_poll)(struct wiphy *wiphy); 1234 void (*rfkill_poll)(struct wiphy *wiphy);
1224 1235
@@ -1302,6 +1313,7 @@ struct cfg80211_ops {
1302 * @WIPHY_FLAG_CONTROL_PORT_PROTOCOL: This device supports setting the 1313 * @WIPHY_FLAG_CONTROL_PORT_PROTOCOL: This device supports setting the
1303 * control port protocol ethertype. The device also honours the 1314 * control port protocol ethertype. The device also honours the
1304 * control_port_no_encrypt flag. 1315 * control_port_no_encrypt flag.
1316 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN.
1305 */ 1317 */
1306enum wiphy_flags { 1318enum wiphy_flags {
1307 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), 1319 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
@@ -1312,6 +1324,7 @@ enum wiphy_flags {
1312 WIPHY_FLAG_4ADDR_AP = BIT(5), 1324 WIPHY_FLAG_4ADDR_AP = BIT(5),
1313 WIPHY_FLAG_4ADDR_STATION = BIT(6), 1325 WIPHY_FLAG_4ADDR_STATION = BIT(6),
1314 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7), 1326 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7),
1327 WIPHY_FLAG_IBSS_RSN = BIT(7),
1315}; 1328};
1316 1329
1317struct mac_address { 1330struct mac_address {
@@ -2551,8 +2564,6 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
2551 enum nl80211_cqm_rssi_threshold_event rssi_event, 2564 enum nl80211_cqm_rssi_threshold_event rssi_event,
2552 gfp_t gfp); 2565 gfp_t gfp);
2553 2566
2554#ifdef __KERNEL__
2555
2556/* Logging, debugging and troubleshooting/diagnostic helpers. */ 2567/* Logging, debugging and troubleshooting/diagnostic helpers. */
2557 2568
2558/* wiphy_printk helpers, similar to dev_printk */ 2569/* wiphy_printk helpers, similar to dev_printk */
@@ -2599,6 +2610,4 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev,
2599#define wiphy_WARN(wiphy, format, args...) \ 2610#define wiphy_WARN(wiphy, format, args...) \
2600 WARN(1, "wiphy: %s\n" format, wiphy_name(wiphy), ##args); 2611 WARN(1, "wiphy: %s\n" format, wiphy_name(wiphy), ##args);
2601 2612
2602#endif
2603
2604#endif /* __NET_CFG80211_H */ 2613#endif /* __NET_CFG80211_H */
diff --git a/include/net/genetlink.h b/include/net/genetlink.h
index f7dcd2c70412..8a64b811a39a 100644
--- a/include/net/genetlink.h
+++ b/include/net/genetlink.h
@@ -20,6 +20,9 @@ struct genl_multicast_group {
20 u32 id; 20 u32 id;
21}; 21};
22 22
23struct genl_ops;
24struct genl_info;
25
23/** 26/**
24 * struct genl_family - generic netlink family 27 * struct genl_family - generic netlink family
25 * @id: protocol family idenfitier 28 * @id: protocol family idenfitier
@@ -29,6 +32,10 @@ struct genl_multicast_group {
29 * @maxattr: maximum number of attributes supported 32 * @maxattr: maximum number of attributes supported
30 * @netnsok: set to true if the family can handle network 33 * @netnsok: set to true if the family can handle network
31 * namespaces and should be presented in all of them 34 * namespaces and should be presented in all of them
35 * @pre_doit: called before an operation's doit callback, it may
36 * do additional, common, filtering and return an error
37 * @post_doit: called after an operation's doit callback, it may
38 * undo operations done by pre_doit, for example release locks
32 * @attrbuf: buffer to store parsed attributes 39 * @attrbuf: buffer to store parsed attributes
33 * @ops_list: list of all assigned operations 40 * @ops_list: list of all assigned operations
34 * @family_list: family list 41 * @family_list: family list
@@ -41,6 +48,12 @@ struct genl_family {
41 unsigned int version; 48 unsigned int version;
42 unsigned int maxattr; 49 unsigned int maxattr;
43 bool netnsok; 50 bool netnsok;
51 int (*pre_doit)(struct genl_ops *ops,
52 struct sk_buff *skb,
53 struct genl_info *info);
54 void (*post_doit)(struct genl_ops *ops,
55 struct sk_buff *skb,
56 struct genl_info *info);
44 struct nlattr ** attrbuf; /* private */ 57 struct nlattr ** attrbuf; /* private */
45 struct list_head ops_list; /* private */ 58 struct list_head ops_list; /* private */
46 struct list_head family_list; /* private */ 59 struct list_head family_list; /* private */
@@ -55,6 +68,8 @@ struct genl_family {
55 * @genlhdr: generic netlink message header 68 * @genlhdr: generic netlink message header
56 * @userhdr: user specific header 69 * @userhdr: user specific header
57 * @attrs: netlink attributes 70 * @attrs: netlink attributes
71 * @_net: network namespace
72 * @user_ptr: user pointers
58 */ 73 */
59struct genl_info { 74struct genl_info {
60 u32 snd_seq; 75 u32 snd_seq;
@@ -66,6 +81,7 @@ struct genl_info {
66#ifdef CONFIG_NET_NS 81#ifdef CONFIG_NET_NS
67 struct net * _net; 82 struct net * _net;
68#endif 83#endif
84 void * user_ptr[2];
69}; 85};
70 86
71static inline struct net *genl_info_net(struct genl_info *info) 87static inline struct net *genl_info_net(struct genl_info *info)
@@ -81,6 +97,7 @@ static inline void genl_info_net_set(struct genl_info *info, struct net *net)
81/** 97/**
82 * struct genl_ops - generic netlink operations 98 * struct genl_ops - generic netlink operations
83 * @cmd: command identifier 99 * @cmd: command identifier
100 * @internal_flags: flags used by the family
84 * @flags: flags 101 * @flags: flags
85 * @policy: attribute validation policy 102 * @policy: attribute validation policy
86 * @doit: standard command callback 103 * @doit: standard command callback
@@ -90,6 +107,7 @@ static inline void genl_info_net_set(struct genl_info *info, struct net *net)
90 */ 107 */
91struct genl_ops { 108struct genl_ops {
92 u8 cmd; 109 u8 cmd;
110 u8 internal_flags;
93 unsigned int flags; 111 unsigned int flags;
94 const struct nla_policy *policy; 112 const struct nla_policy *policy;
95 int (*doit)(struct sk_buff *skb, 113 int (*doit)(struct sk_buff *skb,
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index fe8b9dae4dee..33aa2e39147b 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1041,6 +1041,13 @@ enum ieee80211_tkip_key_type {
1041 * @IEEE80211_HW_NEED_DTIM_PERIOD: 1041 * @IEEE80211_HW_NEED_DTIM_PERIOD:
1042 * This device needs to know the DTIM period for the BSS before 1042 * This device needs to know the DTIM period for the BSS before
1043 * associating. 1043 * associating.
1044 *
1045 * @IEEE80211_HW_SUPPORTS_PER_STA_GTK: The device's crypto engine supports
1046 * per-station GTKs as used by IBSS RSN or during fast transition. If
1047 * the device doesn't support per-station GTKs, but can be asked not
1048 * to decrypt group addressed frames, then IBSS RSN support is still
1049 * possible but software crypto will be used. Advertise the wiphy flag
1050 * only in that case.
1044 */ 1051 */
1045enum ieee80211_hw_flags { 1052enum ieee80211_hw_flags {
1046 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, 1053 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
@@ -1064,6 +1071,7 @@ enum ieee80211_hw_flags {
1064 IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, 1071 IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18,
1065 IEEE80211_HW_CONNECTION_MONITOR = 1<<19, 1072 IEEE80211_HW_CONNECTION_MONITOR = 1<<19,
1066 IEEE80211_HW_SUPPORTS_CQM_RSSI = 1<<20, 1073 IEEE80211_HW_SUPPORTS_CQM_RSSI = 1<<20,
1074 IEEE80211_HW_SUPPORTS_PER_STA_GTK = 1<<21,
1067}; 1075};
1068 1076
1069/** 1077/**
@@ -1109,7 +1117,10 @@ enum ieee80211_hw_flags {
1109 * @sta_data_size: size (in bytes) of the drv_priv data area 1117 * @sta_data_size: size (in bytes) of the drv_priv data area
1110 * within &struct ieee80211_sta. 1118 * within &struct ieee80211_sta.
1111 * 1119 *
1112 * @max_rates: maximum number of alternate rate retry stages 1120 * @max_rates: maximum number of alternate rate retry stages the hw
1121 * can handle.
1122 * @max_report_rates: maximum number of alternate rate retry stages
1123 * the hw can report back.
1113 * @max_rate_tries: maximum number of tries for each stage 1124 * @max_rate_tries: maximum number of tries for each stage
1114 * 1125 *
1115 * @napi_weight: weight used for NAPI polling. You must specify an 1126 * @napi_weight: weight used for NAPI polling. You must specify an
@@ -1131,6 +1142,7 @@ struct ieee80211_hw {
1131 u16 max_listen_interval; 1142 u16 max_listen_interval;
1132 s8 max_signal; 1143 s8 max_signal;
1133 u8 max_rates; 1144 u8 max_rates;
1145 u8 max_report_rates;
1134 u8 max_rate_tries; 1146 u8 max_rate_tries;
1135}; 1147};
1136 1148
@@ -2578,6 +2590,22 @@ void ieee80211_chswitch_done(struct ieee80211_vif *vif, bool success);
2578void ieee80211_request_smps(struct ieee80211_vif *vif, 2590void ieee80211_request_smps(struct ieee80211_vif *vif,
2579 enum ieee80211_smps_mode smps_mode); 2591 enum ieee80211_smps_mode smps_mode);
2580 2592
2593/**
2594 * ieee80211_key_removed - disable hw acceleration for key
2595 * @key_conf: The key hw acceleration should be disabled for
2596 *
2597 * This allows drivers to indicate that the given key has been
2598 * removed from hardware acceleration, due to a new key that
2599 * was added. Don't use this if the key can continue to be used
2600 * for TX, if the key restriction is on RX only it is permitted
2601 * to keep the key for TX only and not call this function.
2602 *
2603 * Due to locking constraints, it may only be called during
2604 * @set_key. This function must be allowed to sleep, and the
2605 * key it tries to disable may still be used until it returns.
2606 */
2607void ieee80211_key_removed(struct ieee80211_key_conf *key_conf);
2608
2581/* Rate control API */ 2609/* Rate control API */
2582 2610
2583/** 2611/**