diff options
author | David S. Miller <davem@davemloft.net> | 2010-10-08 16:51:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-08 16:51:11 -0400 |
commit | 9cf8d1a3b8cb19fa49494c1b8f0f9e3a37f2c218 (patch) | |
tree | 0e9262488832ad27f6ba42680bf104872fa3c697 /include | |
parent | 8391d07b80e8da957cd888870e23f8e218438622 (diff) | |
parent | e9a68707d736f4f73d7e209885d7b4c5c452b1dc (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.h | 25 | ||||
-rw-r--r-- | include/linux/wl12xx.h | 13 | ||||
-rw-r--r-- | include/net/cfg80211.h | 25 | ||||
-rw-r--r-- | include/net/genetlink.h | 18 | ||||
-rw-r--r-- | include/net/mac80211.h | 30 |
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 | */ |
1133 | enum nl80211_sta_info { | 1143 | enum 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 | */ |
1658 | enum nl80211_key_type { | 1673 | enum 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 | |||
35 | int wl12xx_set_platform_data(const struct wl12xx_platform_data *data); | 37 | int wl12xx_set_platform_data(const struct wl12xx_platform_data *data); |
38 | |||
39 | #else | ||
40 | |||
41 | static inline | ||
42 | int wl12xx_set_platform_data(const struct wl12xx_platform_data *data) | ||
43 | { | ||
44 | return -ENOSYS; | ||
45 | } | ||
46 | |||
47 | #endif | ||
48 | |||
36 | const struct wl12xx_platform_data *wl12xx_get_platform_data(void); | 49 | const 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 | */ |
300 | enum survey_info_flags { | 301 | enum 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 | */ |
403 | enum station_info_flags { | 407 | enum 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 | */ |
1306 | enum wiphy_flags { | 1318 | enum 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 | ||
1317 | struct mac_address { | 1330 | struct 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 | ||
23 | struct genl_ops; | ||
24 | struct 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 | */ |
59 | struct genl_info { | 74 | struct 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 | ||
71 | static inline struct net *genl_info_net(struct genl_info *info) | 87 | static 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 | */ |
91 | struct genl_ops { | 108 | struct 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 | */ |
1045 | enum ieee80211_hw_flags { | 1052 | enum 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); | |||
2578 | void ieee80211_request_smps(struct ieee80211_vif *vif, | 2590 | void 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 | */ | ||
2607 | void ieee80211_key_removed(struct ieee80211_key_conf *key_conf); | ||
2608 | |||
2581 | /* Rate control API */ | 2609 | /* Rate control API */ |
2582 | 2610 | ||
2583 | /** | 2611 | /** |