aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2010-12-22 14:27:21 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-22 14:27:21 -0500
commit63e35cd9bd4c8ae085c8b9a70554595b529c4100 (patch)
tree68e771e0035d5f3ee394a3d86885631a2610bba5 /include
parent503b1a529a6b62b31904bab4699752c523cf76b2 (diff)
parent3d986b25b5faa50ba6afd94f60f270b6c3061e5e (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
Conflicts: drivers/net/wireless/iwlwifi/iwl-1000.c drivers/net/wireless/iwlwifi/iwl-6000.c drivers/net/wireless/iwlwifi/iwl-core.h
Diffstat (limited to 'include')
-rw-r--r--include/linux/ieee80211.h27
-rw-r--r--include/linux/nl80211.h113
-rw-r--r--include/net/cfg80211.h67
-rw-r--r--include/net/mac80211.h4
4 files changed, 194 insertions, 17 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 351c0ab4e284..6042228954a7 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -122,6 +122,7 @@
122 122
123/* U-APSD queue for WMM IEs sent by AP */ 123/* U-APSD queue for WMM IEs sent by AP */
124#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7) 124#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7)
125#define IEEE80211_WMM_IE_AP_QOSINFO_PARAM_SET_CNT_MASK 0x0f
125 126
126/* U-APSD queues for WMM IEs sent by STA */ 127/* U-APSD queues for WMM IEs sent by STA */
127#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VO (1<<0) 128#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VO (1<<0)
@@ -535,7 +536,6 @@ struct ieee80211s_hdr {
535 __le32 seqnum; 536 __le32 seqnum;
536 u8 eaddr1[6]; 537 u8 eaddr1[6];
537 u8 eaddr2[6]; 538 u8 eaddr2[6];
538 u8 eaddr3[6];
539} __attribute__ ((packed)); 539} __attribute__ ((packed));
540 540
541/* Mesh flags */ 541/* Mesh flags */
@@ -1290,6 +1290,31 @@ enum ieee80211_key_len {
1290 WLAN_KEY_LEN_AES_CMAC = 16, 1290 WLAN_KEY_LEN_AES_CMAC = 16,
1291}; 1291};
1292 1292
1293/**
1294 * enum - mesh path selection protocol identifier
1295 *
1296 * @IEEE80211_PATH_PROTOCOL_HWMP: the default path selection protocol
1297 * @IEEE80211_PATH_PROTOCOL_VENDOR: a vendor specific protocol that will
1298 * be specified in a vendor specific information element
1299 */
1300enum {
1301 IEEE80211_PATH_PROTOCOL_HWMP = 0,
1302 IEEE80211_PATH_PROTOCOL_VENDOR = 255,
1303};
1304
1305/**
1306 * enum - mesh path selection metric identifier
1307 *
1308 * @IEEE80211_PATH_METRIC_AIRTIME: the default path selection metric
1309 * @IEEE80211_PATH_METRIC_VENDOR: a vendor specific metric that will be
1310 * specified in a vendor specific information element
1311 */
1312enum {
1313 IEEE80211_PATH_METRIC_AIRTIME = 0,
1314 IEEE80211_PATH_METRIC_VENDOR = 255,
1315};
1316
1317
1293/* 1318/*
1294 * IEEE 802.11-2007 7.3.2.9 Country information element 1319 * IEEE 802.11-2007 7.3.2.9 Country information element
1295 * 1320 *
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 380421253d16..2b89b712565b 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -172,10 +172,10 @@
172 * to the specified ISO/IEC 3166-1 alpha2 country code. The core will 172 * to the specified ISO/IEC 3166-1 alpha2 country code. The core will
173 * store this as a valid request and then query userspace for it. 173 * store this as a valid request and then query userspace for it.
174 * 174 *
175 * @NL80211_CMD_GET_MESH_PARAMS: Get mesh networking properties for the 175 * @NL80211_CMD_GET_MESH_CONFIG: Get mesh networking properties for the
176 * interface identified by %NL80211_ATTR_IFINDEX 176 * interface identified by %NL80211_ATTR_IFINDEX
177 * 177 *
178 * @NL80211_CMD_SET_MESH_PARAMS: Set mesh networking properties for the 178 * @NL80211_CMD_SET_MESH_CONFIG: Set mesh networking properties for the
179 * interface identified by %NL80211_ATTR_IFINDEX 179 * interface identified by %NL80211_ATTR_IFINDEX
180 * 180 *
181 * @NL80211_CMD_SET_MGMT_EXTRA_IE: Set extra IEs for management frames. The 181 * @NL80211_CMD_SET_MGMT_EXTRA_IE: Set extra IEs for management frames. The
@@ -399,6 +399,13 @@
399 * @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the 399 * @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the
400 * network is determined by the network interface. 400 * network is determined by the network interface.
401 * 401 *
402 * @NL80211_CMD_UNPROT_DEAUTHENTICATE: Unprotected deauthentication frame
403 * notification. This event is used to indicate that an unprotected
404 * deauthentication frame was dropped when MFP is in use.
405 * @NL80211_CMD_UNPROT_DISASSOCIATE: Unprotected disassociation frame
406 * notification. This event is used to indicate that an unprotected
407 * disassociation frame was dropped when MFP is in use.
408 *
402 * @NL80211_CMD_MAX: highest used command number 409 * @NL80211_CMD_MAX: highest used command number
403 * @__NL80211_CMD_AFTER_LAST: internal use 410 * @__NL80211_CMD_AFTER_LAST: internal use
404 */ 411 */
@@ -441,8 +448,8 @@ enum nl80211_commands {
441 NL80211_CMD_SET_REG, 448 NL80211_CMD_SET_REG,
442 NL80211_CMD_REQ_SET_REG, 449 NL80211_CMD_REQ_SET_REG,
443 450
444 NL80211_CMD_GET_MESH_PARAMS, 451 NL80211_CMD_GET_MESH_CONFIG,
445 NL80211_CMD_SET_MESH_PARAMS, 452 NL80211_CMD_SET_MESH_CONFIG,
446 453
447 NL80211_CMD_SET_MGMT_EXTRA_IE /* reserved; not used */, 454 NL80211_CMD_SET_MGMT_EXTRA_IE /* reserved; not used */,
448 455
@@ -508,6 +515,9 @@ enum nl80211_commands {
508 NL80211_CMD_JOIN_MESH, 515 NL80211_CMD_JOIN_MESH,
509 NL80211_CMD_LEAVE_MESH, 516 NL80211_CMD_LEAVE_MESH,
510 517
518 NL80211_CMD_UNPROT_DEAUTHENTICATE,
519 NL80211_CMD_UNPROT_DISASSOCIATE,
520
511 /* add new commands above here */ 521 /* add new commands above here */
512 522
513 /* used to define NL80211_CMD_MAX below */ 523 /* used to define NL80211_CMD_MAX below */
@@ -528,6 +538,10 @@ enum nl80211_commands {
528#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE 538#define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE
529#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT 539#define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT
530 540
541/* source-level API compatibility */
542#define NL80211_CMD_GET_MESH_PARAMS NL80211_CMD_GET_MESH_CONFIG
543#define NL80211_CMD_SET_MESH_PARAMS NL80211_CMD_SET_MESH_CONFIG
544
531/** 545/**
532 * enum nl80211_attrs - nl80211 netlink attributes 546 * enum nl80211_attrs - nl80211 netlink attributes
533 * 547 *
@@ -773,6 +787,9 @@ enum nl80211_commands {
773 * cache, a wiphy attribute. 787 * cache, a wiphy attribute.
774 * 788 *
775 * @NL80211_ATTR_DURATION: Duration of an operation in milliseconds, u32. 789 * @NL80211_ATTR_DURATION: Duration of an operation in milliseconds, u32.
790 * @NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION: Device attribute that
791 * specifies the maximum duration that can be requested with the
792 * remain-on-channel operation, in milliseconds, u32.
776 * 793 *
777 * @NL80211_ATTR_COOKIE: Generic 64-bit cookie to identify objects. 794 * @NL80211_ATTR_COOKIE: Generic 64-bit cookie to identify objects.
778 * 795 *
@@ -841,6 +858,12 @@ enum nl80211_commands {
841 * the hardware should not be configured to receive on this antenna. 858 * the hardware should not be configured to receive on this antenna.
842 * For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX. 859 * For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX.
843 * 860 *
861 * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX: Bitmap of antennas which are available
862 * for configuration as TX antennas via the above parameters.
863 *
864 * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX: Bitmap of antennas which are available
865 * for configuration as RX antennas via the above parameters.
866 *
844 * @NL80211_ATTR_MCAST_RATE: Multicast tx rate (in 100 kbps) for IBSS 867 * @NL80211_ATTR_MCAST_RATE: Multicast tx rate (in 100 kbps) for IBSS
845 * 868 *
846 * @NL80211_ATTR_OFFCHANNEL_TX_OK: For management frame TX, the frame may be 869 * @NL80211_ATTR_OFFCHANNEL_TX_OK: For management frame TX, the frame may be
@@ -851,6 +874,13 @@ enum nl80211_commands {
851 * 874 *
852 * @NL80211_ATTR_BSS_HTOPMODE: HT operation mode (u16) 875 * @NL80211_ATTR_BSS_HTOPMODE: HT operation mode (u16)
853 * 876 *
877 * @NL80211_ATTR_KEY_DEFAULT_TYPES: A nested attribute containing flags
878 * attributes, specifying what a key should be set as default as.
879 * See &enum nl80211_key_default_types.
880 *
881 * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be
882 * changed once the mesh is active.
883 *
854 * @NL80211_ATTR_MAX: highest attribute number currently defined 884 * @NL80211_ATTR_MAX: highest attribute number currently defined
855 * @__NL80211_ATTR_AFTER_LAST: internal use 885 * @__NL80211_ATTR_AFTER_LAST: internal use
856 */ 886 */
@@ -905,7 +935,7 @@ enum nl80211_attrs {
905 NL80211_ATTR_REG_ALPHA2, 935 NL80211_ATTR_REG_ALPHA2,
906 NL80211_ATTR_REG_RULES, 936 NL80211_ATTR_REG_RULES,
907 937
908 NL80211_ATTR_MESH_PARAMS, 938 NL80211_ATTR_MESH_CONFIG,
909 939
910 NL80211_ATTR_BSS_BASIC_RATES, 940 NL80211_ATTR_BSS_BASIC_RATES,
911 941
@@ -1029,6 +1059,15 @@ enum nl80211_attrs {
1029 1059
1030 NL80211_ATTR_BSS_HT_OPMODE, 1060 NL80211_ATTR_BSS_HT_OPMODE,
1031 1061
1062 NL80211_ATTR_KEY_DEFAULT_TYPES,
1063
1064 NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION,
1065
1066 NL80211_ATTR_MESH_SETUP,
1067
1068 NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX,
1069 NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX,
1070
1032 /* add attributes here, update the policy in nl80211.c */ 1071 /* add attributes here, update the policy in nl80211.c */
1033 1072
1034 __NL80211_ATTR_AFTER_LAST, 1073 __NL80211_ATTR_AFTER_LAST,
@@ -1037,6 +1076,7 @@ enum nl80211_attrs {
1037 1076
1038/* source-level API compatibility */ 1077/* source-level API compatibility */
1039#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION 1078#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
1079#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
1040 1080
1041/* 1081/*
1042 * Allow user space programs to use #ifdef on new attributes by defining them 1082 * Allow user space programs to use #ifdef on new attributes by defining them
@@ -1538,7 +1578,8 @@ enum nl80211_mntr_flags {
1538/** 1578/**
1539 * enum nl80211_meshconf_params - mesh configuration parameters 1579 * enum nl80211_meshconf_params - mesh configuration parameters
1540 * 1580 *
1541 * Mesh configuration parameters 1581 * Mesh configuration parameters. These can be changed while the mesh is
1582 * active.
1542 * 1583 *
1543 * @__NL80211_MESHCONF_INVALID: internal use 1584 * @__NL80211_MESHCONF_INVALID: internal use
1544 * 1585 *
@@ -1561,9 +1602,6 @@ enum nl80211_mntr_flags {
1561 * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh 1602 * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh
1562 * point. 1603 * point.
1563 * 1604 *
1564 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
1565 * source mesh point for path selection elements.
1566 *
1567 * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically 1605 * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically
1568 * open peer links when we detect compatible mesh peers. 1606 * open peer links when we detect compatible mesh peers.
1569 * 1607 *
@@ -1590,6 +1628,9 @@ enum nl80211_mntr_flags {
1590 * 1628 *
1591 * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not 1629 * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not
1592 * 1630 *
1631 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
1632 * source mesh point for path selection elements.
1633 *
1593 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute 1634 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
1594 * 1635 *
1595 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use 1636 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
@@ -1618,6 +1659,39 @@ enum nl80211_meshconf_params {
1618}; 1659};
1619 1660
1620/** 1661/**
1662 * enum nl80211_mesh_setup_params - mesh setup parameters
1663 *
1664 * Mesh setup parameters. These are used to start/join a mesh and cannot be
1665 * changed while the mesh is active.
1666 *
1667 * @__NL80211_MESH_SETUP_INVALID: Internal use
1668 *
1669 * @NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL: Enable this option to use a
1670 * vendor specific path selection algorithm or disable it to use the default
1671 * HWMP.
1672 *
1673 * @NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC: Enable this option to use a
1674 * vendor specific path metric or disable it to use the default Airtime
1675 * metric.
1676 *
1677 * @NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE: A vendor specific information
1678 * element that vendors will use to identify the path selection methods and
1679 * metrics in use.
1680 *
1681 * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
1682 */
1683enum nl80211_mesh_setup_params {
1684 __NL80211_MESH_SETUP_INVALID,
1685 NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
1686 NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
1687 NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE,
1688
1689 /* keep last */
1690 __NL80211_MESH_SETUP_ATTR_AFTER_LAST,
1691 NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1
1692};
1693
1694/**
1621 * enum nl80211_txq_attr - TX queue parameter attributes 1695 * enum nl80211_txq_attr - TX queue parameter attributes
1622 * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved 1696 * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved
1623 * @NL80211_TXQ_ATTR_QUEUE: TX queue identifier (NL80211_TXQ_Q_*) 1697 * @NL80211_TXQ_ATTR_QUEUE: TX queue identifier (NL80211_TXQ_Q_*)
@@ -1775,6 +1849,23 @@ enum nl80211_wpa_versions {
1775}; 1849};
1776 1850
1777/** 1851/**
1852 * enum nl80211_key_default_types - key default types
1853 * @__NL80211_KEY_DEFAULT_TYPE_INVALID: invalid
1854 * @NL80211_KEY_DEFAULT_TYPE_UNICAST: key should be used as default
1855 * unicast key
1856 * @NL80211_KEY_DEFAULT_TYPE_MULTICAST: key should be used as default
1857 * multicast key
1858 * @NUM_NL80211_KEY_DEFAULT_TYPES: number of default types
1859 */
1860enum nl80211_key_default_types {
1861 __NL80211_KEY_DEFAULT_TYPE_INVALID,
1862 NL80211_KEY_DEFAULT_TYPE_UNICAST,
1863 NL80211_KEY_DEFAULT_TYPE_MULTICAST,
1864
1865 NUM_NL80211_KEY_DEFAULT_TYPES
1866};
1867
1868/**
1778 * enum nl80211_key_attributes - key attributes 1869 * enum nl80211_key_attributes - key attributes
1779 * @__NL80211_KEY_INVALID: invalid 1870 * @__NL80211_KEY_INVALID: invalid
1780 * @NL80211_KEY_DATA: (temporal) key data; for TKIP this consists of 1871 * @NL80211_KEY_DATA: (temporal) key data; for TKIP this consists of
@@ -1790,6 +1881,9 @@ enum nl80211_wpa_versions {
1790 * @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not 1881 * @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not
1791 * specified the default depends on whether a MAC address was 1882 * specified the default depends on whether a MAC address was
1792 * given with the command using the key or not (u32) 1883 * given with the command using the key or not (u32)
1884 * @NL80211_KEY_DEFAULT_TYPES: A nested attribute containing flags
1885 * attributes, specifying what a key should be set as default as.
1886 * See &enum nl80211_key_default_types.
1793 * @__NL80211_KEY_AFTER_LAST: internal 1887 * @__NL80211_KEY_AFTER_LAST: internal
1794 * @NL80211_KEY_MAX: highest key attribute 1888 * @NL80211_KEY_MAX: highest key attribute
1795 */ 1889 */
@@ -1802,6 +1896,7 @@ enum nl80211_key_attributes {
1802 NL80211_KEY_DEFAULT, 1896 NL80211_KEY_DEFAULT,
1803 NL80211_KEY_DEFAULT_MGMT, 1897 NL80211_KEY_DEFAULT_MGMT,
1804 NL80211_KEY_TYPE, 1898 NL80211_KEY_TYPE,
1899 NL80211_KEY_DEFAULT_TYPES,
1805 1900
1806 /* keep last */ 1901 /* keep last */
1807 __NL80211_KEY_AFTER_LAST, 1902 __NL80211_KEY_AFTER_LAST,
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 0d5979924be3..bcc9f448ec4e 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -649,12 +649,20 @@ struct mesh_config {
649 * struct mesh_setup - 802.11s mesh setup configuration 649 * struct mesh_setup - 802.11s mesh setup configuration
650 * @mesh_id: the mesh ID 650 * @mesh_id: the mesh ID
651 * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes 651 * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes
652 * @path_sel_proto: which path selection protocol to use
653 * @path_metric: which metric to use
654 * @vendor_ie: vendor information elements (optional)
655 * @vendor_ie_len: length of vendor information elements
652 * 656 *
653 * These parameters are fixed when the mesh is created. 657 * These parameters are fixed when the mesh is created.
654 */ 658 */
655struct mesh_setup { 659struct mesh_setup {
656 const u8 *mesh_id; 660 const u8 *mesh_id;
657 u8 mesh_id_len; 661 u8 mesh_id_len;
662 u8 path_sel_proto;
663 u8 path_metric;
664 const u8 *vendor_ie;
665 u8 vendor_ie_len;
658}; 666};
659 667
660/** 668/**
@@ -1096,9 +1104,9 @@ struct cfg80211_pmksa {
1096 * @get_mpath: get a mesh path for the given parameters 1104 * @get_mpath: get a mesh path for the given parameters
1097 * @dump_mpath: dump mesh path callback -- resume dump at index @idx 1105 * @dump_mpath: dump mesh path callback -- resume dump at index @idx
1098 * 1106 *
1099 * @get_mesh_params: Put the current mesh parameters into *params 1107 * @get_mesh_config: Get the current mesh configuration
1100 * 1108 *
1101 * @update_mesh_params: Update mesh parameters on a running mesh. 1109 * @update_mesh_config: Update mesh parameters on a running mesh.
1102 * The mask is a bitfield which tells us which parameters to 1110 * The mask is a bitfield which tells us which parameters to
1103 * set, and which to leave alone. 1111 * set, and which to leave alone.
1104 * 1112 *
@@ -1211,7 +1219,7 @@ struct cfg80211_ops {
1211 u8 key_index, bool pairwise, const u8 *mac_addr); 1219 u8 key_index, bool pairwise, const u8 *mac_addr);
1212 int (*set_default_key)(struct wiphy *wiphy, 1220 int (*set_default_key)(struct wiphy *wiphy,
1213 struct net_device *netdev, 1221 struct net_device *netdev,
1214 u8 key_index); 1222 u8 key_index, bool unicast, bool multicast);
1215 int (*set_default_mgmt_key)(struct wiphy *wiphy, 1223 int (*set_default_mgmt_key)(struct wiphy *wiphy,
1216 struct net_device *netdev, 1224 struct net_device *netdev,
1217 u8 key_index); 1225 u8 key_index);
@@ -1246,10 +1254,10 @@ struct cfg80211_ops {
1246 int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev, 1254 int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev,
1247 int idx, u8 *dst, u8 *next_hop, 1255 int idx, u8 *dst, u8 *next_hop,
1248 struct mpath_info *pinfo); 1256 struct mpath_info *pinfo);
1249 int (*get_mesh_params)(struct wiphy *wiphy, 1257 int (*get_mesh_config)(struct wiphy *wiphy,
1250 struct net_device *dev, 1258 struct net_device *dev,
1251 struct mesh_config *conf); 1259 struct mesh_config *conf);
1252 int (*update_mesh_params)(struct wiphy *wiphy, 1260 int (*update_mesh_config)(struct wiphy *wiphy,
1253 struct net_device *dev, u32 mask, 1261 struct net_device *dev, u32 mask,
1254 const struct mesh_config *nconf); 1262 const struct mesh_config *nconf);
1255 int (*join_mesh)(struct wiphy *wiphy, struct net_device *dev, 1263 int (*join_mesh)(struct wiphy *wiphy, struct net_device *dev,
@@ -1393,6 +1401,8 @@ struct cfg80211_ops {
1393 * control port protocol ethertype. The device also honours the 1401 * control port protocol ethertype. The device also honours the
1394 * control_port_no_encrypt flag. 1402 * control_port_no_encrypt flag.
1395 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN. 1403 * @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN.
1404 * @WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS: The device supports separate
1405 * unicast and multicast TX keys.
1396 */ 1406 */
1397enum wiphy_flags { 1407enum wiphy_flags {
1398 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), 1408 WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
@@ -1404,6 +1414,7 @@ enum wiphy_flags {
1404 WIPHY_FLAG_4ADDR_STATION = BIT(6), 1414 WIPHY_FLAG_4ADDR_STATION = BIT(6),
1405 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7), 1415 WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7),
1406 WIPHY_FLAG_IBSS_RSN = BIT(8), 1416 WIPHY_FLAG_IBSS_RSN = BIT(8),
1417 WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS= BIT(9),
1407}; 1418};
1408 1419
1409struct mac_address { 1420struct mac_address {
@@ -1416,7 +1427,9 @@ struct ieee80211_txrx_stypes {
1416 1427
1417/** 1428/**
1418 * struct wiphy - wireless hardware description 1429 * struct wiphy - wireless hardware description
1419 * @reg_notifier: the driver's regulatory notification callback 1430 * @reg_notifier: the driver's regulatory notification callback,
1431 * note that if your driver uses wiphy_apply_custom_regulatory()
1432 * the reg_notifier's request can be passed as NULL
1420 * @regd: the driver's regulatory domain, if one was requested via 1433 * @regd: the driver's regulatory domain, if one was requested via
1421 * the regulatory_hint() API. This can be used by the driver 1434 * the regulatory_hint() API. This can be used by the driver
1422 * on the reg_notifier() if it chooses to ignore future 1435 * on the reg_notifier() if it chooses to ignore future
@@ -1468,6 +1481,17 @@ struct ieee80211_txrx_stypes {
1468 * @mgmt_stypes: bitmasks of frame subtypes that can be subscribed to or 1481 * @mgmt_stypes: bitmasks of frame subtypes that can be subscribed to or
1469 * transmitted through nl80211, points to an array indexed by interface 1482 * transmitted through nl80211, points to an array indexed by interface
1470 * type 1483 * type
1484 *
1485 * @available_antennas_tx: bitmap of antennas which are available to be
1486 * configured as TX antennas. Antenna configuration commands will be
1487 * rejected unless this or @available_antennas_rx is set.
1488 *
1489 * @available_antennas_rx: bitmap of antennas which are available to be
1490 * configured as RX antennas. Antenna configuration commands will be
1491 * rejected unless this or @available_antennas_tx is set.
1492 *
1493 * @max_remain_on_channel_duration: Maximum time a remain-on-channel operation
1494 * may request, if implemented.
1471 */ 1495 */
1472struct wiphy { 1496struct wiphy {
1473 /* assign these fields before you register the wiphy */ 1497 /* assign these fields before you register the wiphy */
@@ -1505,8 +1529,13 @@ struct wiphy {
1505 char fw_version[ETHTOOL_BUSINFO_LEN]; 1529 char fw_version[ETHTOOL_BUSINFO_LEN];
1506 u32 hw_version; 1530 u32 hw_version;
1507 1531
1532 u16 max_remain_on_channel_duration;
1533
1508 u8 max_num_pmkids; 1534 u8 max_num_pmkids;
1509 1535
1536 u32 available_antennas_tx;
1537 u32 available_antennas_rx;
1538
1510 /* If multiple wiphys are registered and you're handed e.g. 1539 /* If multiple wiphys are registered and you're handed e.g.
1511 * a regular netdev with assigned ieee80211_ptr, you won't 1540 * a regular netdev with assigned ieee80211_ptr, you won't
1512 * know whether it points to a wiphy your driver has registered 1541 * know whether it points to a wiphy your driver has registered
@@ -2347,6 +2376,32 @@ void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf,
2347 size_t len); 2376 size_t len);
2348 2377
2349/** 2378/**
2379 * cfg80211_send_unprot_deauth - notification of unprotected deauthentication
2380 * @dev: network device
2381 * @buf: deauthentication frame (header + body)
2382 * @len: length of the frame data
2383 *
2384 * This function is called whenever a received Deauthentication frame has been
2385 * dropped in station mode because of MFP being used but the Deauthentication
2386 * frame was not protected. This function may sleep.
2387 */
2388void cfg80211_send_unprot_deauth(struct net_device *dev, const u8 *buf,
2389 size_t len);
2390
2391/**
2392 * cfg80211_send_unprot_disassoc - notification of unprotected disassociation
2393 * @dev: network device
2394 * @buf: disassociation frame (header + body)
2395 * @len: length of the frame data
2396 *
2397 * This function is called whenever a received Disassociation frame has been
2398 * dropped in station mode because of MFP being used but the Disassociation
2399 * frame was not protected. This function may sleep.
2400 */
2401void cfg80211_send_unprot_disassoc(struct net_device *dev, const u8 *buf,
2402 size_t len);
2403
2404/**
2350 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP) 2405 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP)
2351 * @dev: network device 2406 * @dev: network device
2352 * @addr: The source MAC address of the frame 2407 * @addr: The source MAC address of the frame
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index e411cf87fb41..69ded1ee49ce 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2435,6 +2435,7 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw,
2435 * ieee80211_start_tx_ba_session - Start a tx Block Ack session. 2435 * ieee80211_start_tx_ba_session - Start a tx Block Ack session.
2436 * @sta: the station for which to start a BA session 2436 * @sta: the station for which to start a BA session
2437 * @tid: the TID to BA on. 2437 * @tid: the TID to BA on.
2438 * @timeout: session timeout value (in TUs)
2438 * 2439 *
2439 * Return: success if addBA request was sent, failure otherwise 2440 * Return: success if addBA request was sent, failure otherwise
2440 * 2441 *
@@ -2442,7 +2443,8 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw,
2442 * the need to start aggregation on a certain RA/TID, the session level 2443 * the need to start aggregation on a certain RA/TID, the session level
2443 * will be managed by the mac80211. 2444 * will be managed by the mac80211.
2444 */ 2445 */
2445int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); 2446int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid,
2447 u16 timeout);
2446 2448
2447/** 2449/**
2448 * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. 2450 * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate.