aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorJavier Cardona <javier@cozybit.com>2010-12-16 20:37:49 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-20 14:46:57 -0500
commitc80d545da3f7c0e534ccd4a780f322f80a92cff1 (patch)
treeedd5c51676b4677fc1a0b2fc692ffe97df863f25 /include/linux
parent24bdd9f4c9af75b33b438d60381a67626de0128d (diff)
mac80211: Let userspace enable and configure vendor specific path selection.
Userspace will now be allowed to toggle between the default path selection algorithm (HWMP, implemented in the kernel), and a vendor specific alternative. Also in the same patch, allow userspace to add information elements to mesh beacons. This is accordance with the Extensible Path Selection Framework specified in version 7.0 of the 802.11s draft. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ieee80211.h25
-rw-r--r--include/linux/nl80211.h47
2 files changed, 68 insertions, 4 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 7f2354534242..cd681681d211 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -1291,6 +1291,31 @@ enum ieee80211_key_len {
1291 WLAN_KEY_LEN_AES_CMAC = 16, 1291 WLAN_KEY_LEN_AES_CMAC = 16,
1292}; 1292};
1293 1293
1294/**
1295 * enum - mesh path selection protocol identifier
1296 *
1297 * @IEEE80211_PATH_PROTOCOL_HWMP: the default path selection protocol
1298 * @IEEE80211_PATH_PROTOCOL_VENDOR: a vendor specific protocol that will
1299 * be specified in a vendor specific information element
1300 */
1301enum {
1302 IEEE80211_PATH_PROTOCOL_HWMP = 0,
1303 IEEE80211_PATH_PROTOCOL_VENDOR = 255,
1304};
1305
1306/**
1307 * enum - mesh path selection metric identifier
1308 *
1309 * @IEEE80211_PATH_METRIC_AIRTIME: the default path selection metric
1310 * @IEEE80211_PATH_METRIC_VENDOR: a vendor specific metric that will be
1311 * specified in a vendor specific information element
1312 */
1313enum {
1314 IEEE80211_PATH_METRIC_AIRTIME = 0,
1315 IEEE80211_PATH_METRIC_VENDOR = 255,
1316};
1317
1318
1294/* 1319/*
1295 * IEEE 802.11-2007 7.3.2.9 Country information element 1320 * IEEE 802.11-2007 7.3.2.9 Country information element
1296 * 1321 *
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 11a1de67b618..69eaccac78c4 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -872,6 +872,9 @@ enum nl80211_commands {
872 * attributes, specifying what a key should be set as default as. 872 * attributes, specifying what a key should be set as default as.
873 * See &enum nl80211_key_default_types. 873 * See &enum nl80211_key_default_types.
874 * 874 *
875 * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be
876 * changed once the mesh is active.
877 *
875 * @NL80211_ATTR_MAX: highest attribute number currently defined 878 * @NL80211_ATTR_MAX: highest attribute number currently defined
876 * @__NL80211_ATTR_AFTER_LAST: internal use 879 * @__NL80211_ATTR_AFTER_LAST: internal use
877 */ 880 */
@@ -1054,6 +1057,8 @@ enum nl80211_attrs {
1054 1057
1055 NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION, 1058 NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION,
1056 1059
1060 NL80211_ATTR_MESH_SETUP,
1061
1057 /* add attributes here, update the policy in nl80211.c */ 1062 /* add attributes here, update the policy in nl80211.c */
1058 1063
1059 __NL80211_ATTR_AFTER_LAST, 1064 __NL80211_ATTR_AFTER_LAST,
@@ -1564,7 +1569,8 @@ enum nl80211_mntr_flags {
1564/** 1569/**
1565 * enum nl80211_meshconf_params - mesh configuration parameters 1570 * enum nl80211_meshconf_params - mesh configuration parameters
1566 * 1571 *
1567 * Mesh configuration parameters 1572 * Mesh configuration parameters. These can be changed while the mesh is
1573 * active.
1568 * 1574 *
1569 * @__NL80211_MESHCONF_INVALID: internal use 1575 * @__NL80211_MESHCONF_INVALID: internal use
1570 * 1576 *
@@ -1587,9 +1593,6 @@ enum nl80211_mntr_flags {
1587 * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh 1593 * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh
1588 * point. 1594 * point.
1589 * 1595 *
1590 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
1591 * source mesh point for path selection elements.
1592 *
1593 * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically 1596 * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically
1594 * open peer links when we detect compatible mesh peers. 1597 * open peer links when we detect compatible mesh peers.
1595 * 1598 *
@@ -1616,6 +1619,9 @@ enum nl80211_mntr_flags {
1616 * 1619 *
1617 * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not 1620 * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not
1618 * 1621 *
1622 * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a
1623 * source mesh point for path selection elements.
1624 *
1619 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute 1625 * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
1620 * 1626 *
1621 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use 1627 * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
@@ -1644,6 +1650,39 @@ enum nl80211_meshconf_params {
1644}; 1650};
1645 1651
1646/** 1652/**
1653 * enum nl80211_mesh_setup_params - mesh setup parameters
1654 *
1655 * Mesh setup parameters. These are used to start/join a mesh and cannot be
1656 * changed while the mesh is active.
1657 *
1658 * @__NL80211_MESH_SETUP_INVALID: Internal use
1659 *
1660 * @NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL: Enable this option to use a
1661 * vendor specific path selection algorithm or disable it to use the default
1662 * HWMP.
1663 *
1664 * @NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC: Enable this option to use a
1665 * vendor specific path metric or disable it to use the default Airtime
1666 * metric.
1667 *
1668 * @NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE: A vendor specific information
1669 * element that vendors will use to identify the path selection methods and
1670 * metrics in use.
1671 *
1672 * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use
1673 */
1674enum nl80211_mesh_setup_params {
1675 __NL80211_MESH_SETUP_INVALID,
1676 NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL,
1677 NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC,
1678 NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE,
1679
1680 /* keep last */
1681 __NL80211_MESH_SETUP_ATTR_AFTER_LAST,
1682 NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1
1683};
1684
1685/**
1647 * enum nl80211_txq_attr - TX queue parameter attributes 1686 * enum nl80211_txq_attr - TX queue parameter attributes
1648 * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved 1687 * @__NL80211_TXQ_ATTR_INVALID: Attribute number 0 is reserved
1649 * @NL80211_TXQ_ATTR_QUEUE: TX queue identifier (NL80211_TXQ_Q_*) 1688 * @NL80211_TXQ_ATTR_QUEUE: TX queue identifier (NL80211_TXQ_Q_*)