diff options
author | John W. Linville <linville@tuxdriver.com> | 2010-12-22 14:27:21 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-22 14:27:21 -0500 |
commit | 63e35cd9bd4c8ae085c8b9a70554595b529c4100 (patch) | |
tree | 68e771e0035d5f3ee394a3d86885631a2610bba5 /include | |
parent | 503b1a529a6b62b31904bab4699752c523cf76b2 (diff) | |
parent | 3d986b25b5faa50ba6afd94f60f270b6c3061e5e (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.h | 27 | ||||
-rw-r--r-- | include/linux/nl80211.h | 113 | ||||
-rw-r--r-- | include/net/cfg80211.h | 67 | ||||
-rw-r--r-- | include/net/mac80211.h | 4 |
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 | */ | ||
1300 | enum { | ||
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 | */ | ||
1312 | enum { | ||
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 | */ | ||
1683 | enum 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 | */ | ||
1860 | enum 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 | */ |
655 | struct mesh_setup { | 659 | struct 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 | */ |
1397 | enum wiphy_flags { | 1407 | enum 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 | ||
1409 | struct mac_address { | 1420 | struct 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 | */ |
1472 | struct wiphy { | 1496 | struct 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 | */ | ||
2388 | void 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 | */ | ||
2401 | void 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 | */ |
2445 | int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); | 2446 | int 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. |