diff options
Diffstat (limited to 'include/uapi/linux/nl80211.h')
| -rw-r--r-- | include/uapi/linux/nl80211.h | 156 |
1 files changed, 145 insertions, 11 deletions
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index c46bb016f4e4..d1e48b5e348f 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h | |||
| @@ -36,7 +36,21 @@ | |||
| 36 | * The station is still assumed to belong to the AP interface it was added | 36 | * The station is still assumed to belong to the AP interface it was added |
| 37 | * to. | 37 | * to. |
| 38 | * | 38 | * |
| 39 | * TODO: need more info? | 39 | * Station handling varies per interface type and depending on the driver's |
| 40 | * capabilities. | ||
| 41 | * | ||
| 42 | * For drivers supporting TDLS with external setup (WIPHY_FLAG_SUPPORTS_TDLS | ||
| 43 | * and WIPHY_FLAG_TDLS_EXTERNAL_SETUP), the station lifetime is as follows: | ||
| 44 | * - a setup station entry is added, not yet authorized, without any rate | ||
| 45 | * or capability information, this just exists to avoid race conditions | ||
| 46 | * - when the TDLS setup is done, a single NL80211_CMD_SET_STATION is valid | ||
| 47 | * to add rate and capability information to the station and at the same | ||
| 48 | * time mark it authorized. | ||
| 49 | * - %NL80211_TDLS_ENABLE_LINK is then used | ||
| 50 | * - after this, the only valid operation is to remove it by tearing down | ||
| 51 | * the TDLS link (%NL80211_TDLS_DISABLE_LINK) | ||
| 52 | * | ||
| 53 | * TODO: need more info for other interface types | ||
| 40 | */ | 54 | */ |
| 41 | 55 | ||
| 42 | /** | 56 | /** |
| @@ -499,9 +513,11 @@ | |||
| 499 | * @NL80211_CMD_NEW_PEER_CANDIDATE: Notification on the reception of a | 513 | * @NL80211_CMD_NEW_PEER_CANDIDATE: Notification on the reception of a |
| 500 | * beacon or probe response from a compatible mesh peer. This is only | 514 | * beacon or probe response from a compatible mesh peer. This is only |
| 501 | * sent while no station information (sta_info) exists for the new peer | 515 | * sent while no station information (sta_info) exists for the new peer |
| 502 | * candidate and when @NL80211_MESH_SETUP_USERSPACE_AUTH is set. On | 516 | * candidate and when @NL80211_MESH_SETUP_USERSPACE_AUTH, |
| 503 | * reception of this notification, userspace may decide to create a new | 517 | * @NL80211_MESH_SETUP_USERSPACE_AMPE, or |
| 504 | * station (@NL80211_CMD_NEW_STATION). To stop this notification from | 518 | * @NL80211_MESH_SETUP_USERSPACE_MPM is set. On reception of this |
| 519 | * notification, userspace may decide to create a new station | ||
| 520 | * (@NL80211_CMD_NEW_STATION). To stop this notification from | ||
| 505 | * reoccurring, the userspace authentication daemon may want to create the | 521 | * reoccurring, the userspace authentication daemon may want to create the |
| 506 | * new station with the AUTHENTICATED flag unset and maybe change it later | 522 | * new station with the AUTHENTICATED flag unset and maybe change it later |
| 507 | * depending on the authentication result. | 523 | * depending on the authentication result. |
| @@ -611,6 +627,25 @@ | |||
| 611 | * %NL80211_ATTR_RADAR_EVENT is used to inform about the type of the | 627 | * %NL80211_ATTR_RADAR_EVENT is used to inform about the type of the |
| 612 | * event. | 628 | * event. |
| 613 | * | 629 | * |
| 630 | * @NL80211_CMD_GET_PROTOCOL_FEATURES: Get global nl80211 protocol features, | ||
| 631 | * i.e. features for the nl80211 protocol rather than device features. | ||
| 632 | * Returns the features in the %NL80211_ATTR_PROTOCOL_FEATURES bitmap. | ||
| 633 | * | ||
| 634 | * @NL80211_CMD_UPDATE_FT_IES: Pass down the most up-to-date Fast Transition | ||
| 635 | * Information Element to the WLAN driver | ||
| 636 | * | ||
| 637 | * @NL80211_CMD_FT_EVENT: Send a Fast transition event from the WLAN driver | ||
| 638 | * to the supplicant. This will carry the target AP's MAC address along | ||
| 639 | * with the relevant Information Elements. This event is used to report | ||
| 640 | * received FT IEs (MDIE, FTIE, RSN IE, TIE, RICIE). | ||
| 641 | * | ||
| 642 | * @NL80211_CMD_CRIT_PROTOCOL_START: Indicates user-space will start running | ||
| 643 | * a critical protocol that needs more reliability in the connection to | ||
| 644 | * complete. | ||
| 645 | * | ||
| 646 | * @NL80211_CMD_CRIT_PROTOCOL_STOP: Indicates the connection reliability can | ||
| 647 | * return back to normal. | ||
| 648 | * | ||
| 614 | * @NL80211_CMD_MAX: highest used command number | 649 | * @NL80211_CMD_MAX: highest used command number |
| 615 | * @__NL80211_CMD_AFTER_LAST: internal use | 650 | * @__NL80211_CMD_AFTER_LAST: internal use |
| 616 | */ | 651 | */ |
| @@ -765,6 +800,14 @@ enum nl80211_commands { | |||
| 765 | 800 | ||
| 766 | NL80211_CMD_RADAR_DETECT, | 801 | NL80211_CMD_RADAR_DETECT, |
| 767 | 802 | ||
| 803 | NL80211_CMD_GET_PROTOCOL_FEATURES, | ||
| 804 | |||
| 805 | NL80211_CMD_UPDATE_FT_IES, | ||
| 806 | NL80211_CMD_FT_EVENT, | ||
| 807 | |||
| 808 | NL80211_CMD_CRIT_PROTOCOL_START, | ||
| 809 | NL80211_CMD_CRIT_PROTOCOL_STOP, | ||
| 810 | |||
| 768 | /* add new commands above here */ | 811 | /* add new commands above here */ |
| 769 | 812 | ||
| 770 | /* used to define NL80211_CMD_MAX below */ | 813 | /* used to define NL80211_CMD_MAX below */ |
| @@ -884,7 +927,8 @@ enum nl80211_commands { | |||
| 884 | * consisting of a nested array. | 927 | * consisting of a nested array. |
| 885 | * | 928 | * |
| 886 | * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes). | 929 | * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes). |
| 887 | * @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link. | 930 | * @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link |
| 931 | * (see &enum nl80211_plink_action). | ||
| 888 | * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path. | 932 | * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path. |
| 889 | * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path | 933 | * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path |
| 890 | * info given for %NL80211_CMD_GET_MPATH, nested attribute described at | 934 | * info given for %NL80211_CMD_GET_MPATH, nested attribute described at |
| @@ -1167,10 +1211,10 @@ enum nl80211_commands { | |||
| 1167 | * @NL80211_ATTR_SUPPORT_MESH_AUTH: Currently, this means the underlying driver | 1211 | * @NL80211_ATTR_SUPPORT_MESH_AUTH: Currently, this means the underlying driver |
| 1168 | * allows auth frames in a mesh to be passed to userspace for processing via | 1212 | * allows auth frames in a mesh to be passed to userspace for processing via |
| 1169 | * the @NL80211_MESH_SETUP_USERSPACE_AUTH flag. | 1213 | * the @NL80211_MESH_SETUP_USERSPACE_AUTH flag. |
| 1170 | * @NL80211_ATTR_STA_PLINK_STATE: The state of a mesh peer link as | 1214 | * @NL80211_ATTR_STA_PLINK_STATE: The state of a mesh peer link as defined in |
| 1171 | * defined in &enum nl80211_plink_state. Used when userspace is | 1215 | * &enum nl80211_plink_state. Used when userspace is driving the peer link |
| 1172 | * driving the peer link management state machine. | 1216 | * management state machine. @NL80211_MESH_SETUP_USERSPACE_AMPE or |
| 1173 | * @NL80211_MESH_SETUP_USERSPACE_AMPE must be enabled. | 1217 | * @NL80211_MESH_SETUP_USERSPACE_MPM must be enabled. |
| 1174 | * | 1218 | * |
| 1175 | * @NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED: indicates, as part of the wiphy | 1219 | * @NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED: indicates, as part of the wiphy |
| 1176 | * capabilities, the supported WoWLAN triggers | 1220 | * capabilities, the supported WoWLAN triggers |
| @@ -1368,6 +1412,23 @@ enum nl80211_commands { | |||
| 1368 | * advertised to the driver, e.g., to enable TDLS off channel operations | 1412 | * advertised to the driver, e.g., to enable TDLS off channel operations |
| 1369 | * and PU-APSD. | 1413 | * and PU-APSD. |
| 1370 | * | 1414 | * |
| 1415 | * @NL80211_ATTR_PROTOCOL_FEATURES: global nl80211 feature flags, see | ||
| 1416 | * &enum nl80211_protocol_features, the attribute is a u32. | ||
| 1417 | * | ||
| 1418 | * @NL80211_ATTR_SPLIT_WIPHY_DUMP: flag attribute, userspace supports | ||
| 1419 | * receiving the data for a single wiphy split across multiple | ||
| 1420 | * messages, given with wiphy dump message | ||
| 1421 | * | ||
| 1422 | * @NL80211_ATTR_MDID: Mobility Domain Identifier | ||
| 1423 | * | ||
| 1424 | * @NL80211_ATTR_IE_RIC: Resource Information Container Information | ||
| 1425 | * Element | ||
| 1426 | * | ||
| 1427 | * @NL80211_ATTR_CRIT_PROT_ID: critical protocol identifier requiring increased | ||
| 1428 | * reliability, see &enum nl80211_crit_proto_id (u16). | ||
| 1429 | * @NL80211_ATTR_MAX_CRIT_PROT_DURATION: duration in milliseconds in which | ||
| 1430 | * the connection should have increased reliability (u16). | ||
| 1431 | * | ||
| 1371 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 1432 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 1372 | * @__NL80211_ATTR_AFTER_LAST: internal use | 1433 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| 1373 | */ | 1434 | */ |
| @@ -1654,6 +1715,18 @@ enum nl80211_attrs { | |||
| 1654 | NL80211_ATTR_STA_CAPABILITY, | 1715 | NL80211_ATTR_STA_CAPABILITY, |
| 1655 | NL80211_ATTR_STA_EXT_CAPABILITY, | 1716 | NL80211_ATTR_STA_EXT_CAPABILITY, |
| 1656 | 1717 | ||
| 1718 | NL80211_ATTR_PROTOCOL_FEATURES, | ||
| 1719 | NL80211_ATTR_SPLIT_WIPHY_DUMP, | ||
| 1720 | |||
| 1721 | NL80211_ATTR_DISABLE_VHT, | ||
| 1722 | NL80211_ATTR_VHT_CAPABILITY_MASK, | ||
| 1723 | |||
| 1724 | NL80211_ATTR_MDID, | ||
| 1725 | NL80211_ATTR_IE_RIC, | ||
| 1726 | |||
| 1727 | NL80211_ATTR_CRIT_PROT_ID, | ||
| 1728 | NL80211_ATTR_MAX_CRIT_PROT_DURATION, | ||
| 1729 | |||
| 1657 | /* add attributes here, update the policy in nl80211.c */ | 1730 | /* add attributes here, update the policy in nl80211.c */ |
| 1658 | 1731 | ||
| 1659 | __NL80211_ATTR_AFTER_LAST, | 1732 | __NL80211_ATTR_AFTER_LAST, |
| @@ -2412,8 +2485,10 @@ enum nl80211_mesh_power_mode { | |||
| 2412 | * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh | 2485 | * @NL80211_MESHCONF_TTL: specifies the value of TTL field set at a source mesh |
| 2413 | * point. | 2486 | * point. |
| 2414 | * | 2487 | * |
| 2415 | * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically | 2488 | * @NL80211_MESHCONF_AUTO_OPEN_PLINKS: whether we should automatically open |
| 2416 | * open peer links when we detect compatible mesh peers. | 2489 | * peer links when we detect compatible mesh peers. Disabled if |
| 2490 | * @NL80211_MESH_SETUP_USERSPACE_MPM or @NL80211_MESH_SETUP_USERSPACE_AMPE are | ||
| 2491 | * set. | ||
| 2417 | * | 2492 | * |
| 2418 | * @NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES: the number of action frames | 2493 | * @NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES: the number of action frames |
| 2419 | * containing a PREQ that an MP can send to a particular destination (path | 2494 | * containing a PREQ that an MP can send to a particular destination (path |
| @@ -2559,6 +2634,9 @@ enum nl80211_meshconf_params { | |||
| 2559 | * vendor specific synchronization method or disable it to use the default | 2634 | * vendor specific synchronization method or disable it to use the default |
| 2560 | * neighbor offset synchronization | 2635 | * neighbor offset synchronization |
| 2561 | * | 2636 | * |
| 2637 | * @NL80211_MESH_SETUP_USERSPACE_MPM: Enable this option if userspace will | ||
| 2638 | * implement an MPM which handles peer allocation and state. | ||
| 2639 | * | ||
| 2562 | * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number | 2640 | * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number |
| 2563 | * | 2641 | * |
| 2564 | * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use | 2642 | * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use |
| @@ -2571,6 +2649,7 @@ enum nl80211_mesh_setup_params { | |||
| 2571 | NL80211_MESH_SETUP_USERSPACE_AUTH, | 2649 | NL80211_MESH_SETUP_USERSPACE_AUTH, |
| 2572 | NL80211_MESH_SETUP_USERSPACE_AMPE, | 2650 | NL80211_MESH_SETUP_USERSPACE_AMPE, |
| 2573 | NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC, | 2651 | NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC, |
| 2652 | NL80211_MESH_SETUP_USERSPACE_MPM, | ||
| 2574 | 2653 | ||
| 2575 | /* keep last */ | 2654 | /* keep last */ |
| 2576 | __NL80211_MESH_SETUP_ATTR_AFTER_LAST, | 2655 | __NL80211_MESH_SETUP_ATTR_AFTER_LAST, |
| @@ -3307,6 +3386,23 @@ enum nl80211_plink_state { | |||
| 3307 | MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1 | 3386 | MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1 |
| 3308 | }; | 3387 | }; |
| 3309 | 3388 | ||
| 3389 | /** | ||
| 3390 | * enum nl80211_plink_action - actions to perform in mesh peers | ||
| 3391 | * | ||
| 3392 | * @NL80211_PLINK_ACTION_NO_ACTION: perform no action | ||
| 3393 | * @NL80211_PLINK_ACTION_OPEN: start mesh peer link establishment | ||
| 3394 | * @NL80211_PLINK_ACTION_BLOCK: block traffic from this mesh peer | ||
| 3395 | * @NUM_NL80211_PLINK_ACTIONS: number of possible actions | ||
| 3396 | */ | ||
| 3397 | enum plink_actions { | ||
| 3398 | NL80211_PLINK_ACTION_NO_ACTION, | ||
| 3399 | NL80211_PLINK_ACTION_OPEN, | ||
| 3400 | NL80211_PLINK_ACTION_BLOCK, | ||
| 3401 | |||
| 3402 | NUM_NL80211_PLINK_ACTIONS, | ||
| 3403 | }; | ||
| 3404 | |||
| 3405 | |||
| 3310 | #define NL80211_KCK_LEN 16 | 3406 | #define NL80211_KCK_LEN 16 |
| 3311 | #define NL80211_KEK_LEN 16 | 3407 | #define NL80211_KEK_LEN 16 |
| 3312 | #define NL80211_REPLAY_CTR_LEN 8 | 3408 | #define NL80211_REPLAY_CTR_LEN 8 |
| @@ -3456,6 +3552,10 @@ enum nl80211_ap_sme_features { | |||
| 3456 | * stations the authenticated/associated bits have to be set in the mask. | 3552 | * stations the authenticated/associated bits have to be set in the mask. |
| 3457 | * @NL80211_FEATURE_ADVERTISE_CHAN_LIMITS: cfg80211 advertises channel limits | 3553 | * @NL80211_FEATURE_ADVERTISE_CHAN_LIMITS: cfg80211 advertises channel limits |
| 3458 | * (HT40, VHT 80/160 MHz) if this flag is set | 3554 | * (HT40, VHT 80/160 MHz) if this flag is set |
| 3555 | * @NL80211_FEATURE_USERSPACE_MPM: This driver supports a userspace Mesh | ||
| 3556 | * Peering Management entity which may be implemented by registering for | ||
| 3557 | * beacons or NL80211_CMD_NEW_PEER_CANDIDATE events. The mesh beacon is | ||
| 3558 | * still generated by the driver. | ||
| 3459 | */ | 3559 | */ |
| 3460 | enum nl80211_feature_flags { | 3560 | enum nl80211_feature_flags { |
| 3461 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, | 3561 | NL80211_FEATURE_SK_TX_STATUS = 1 << 0, |
| @@ -3474,6 +3574,7 @@ enum nl80211_feature_flags { | |||
| 3474 | /* bit 13 is reserved */ | 3574 | /* bit 13 is reserved */ |
| 3475 | NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14, | 3575 | NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14, |
| 3476 | NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15, | 3576 | NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15, |
| 3577 | NL80211_FEATURE_USERSPACE_MPM = 1 << 16, | ||
| 3477 | }; | 3578 | }; |
| 3478 | 3579 | ||
| 3479 | /** | 3580 | /** |
| @@ -3587,4 +3688,37 @@ enum nl80211_dfs_state { | |||
| 3587 | NL80211_DFS_AVAILABLE, | 3688 | NL80211_DFS_AVAILABLE, |
| 3588 | }; | 3689 | }; |
| 3589 | 3690 | ||
| 3691 | /** | ||
| 3692 | * enum enum nl80211_protocol_features - nl80211 protocol features | ||
| 3693 | * @NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP: nl80211 supports splitting | ||
| 3694 | * wiphy dumps (if requested by the application with the attribute | ||
| 3695 | * %NL80211_ATTR_SPLIT_WIPHY_DUMP. Also supported is filtering the | ||
| 3696 | * wiphy dump by %NL80211_ATTR_WIPHY, %NL80211_ATTR_IFINDEX or | ||
| 3697 | * %NL80211_ATTR_WDEV. | ||
| 3698 | */ | ||
| 3699 | enum nl80211_protocol_features { | ||
| 3700 | NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 1 << 0, | ||
| 3701 | }; | ||
| 3702 | |||
| 3703 | /** | ||
| 3704 | * enum nl80211_crit_proto_id - nl80211 critical protocol identifiers | ||
| 3705 | * | ||
| 3706 | * @NL80211_CRIT_PROTO_UNSPEC: protocol unspecified. | ||
| 3707 | * @NL80211_CRIT_PROTO_DHCP: BOOTP or DHCPv6 protocol. | ||
| 3708 | * @NL80211_CRIT_PROTO_EAPOL: EAPOL protocol. | ||
| 3709 | * @NL80211_CRIT_PROTO_APIPA: APIPA protocol. | ||
| 3710 | * @NUM_NL80211_CRIT_PROTO: must be kept last. | ||
| 3711 | */ | ||
| 3712 | enum nl80211_crit_proto_id { | ||
| 3713 | NL80211_CRIT_PROTO_UNSPEC, | ||
| 3714 | NL80211_CRIT_PROTO_DHCP, | ||
| 3715 | NL80211_CRIT_PROTO_EAPOL, | ||
| 3716 | NL80211_CRIT_PROTO_APIPA, | ||
| 3717 | /* add other protocols before this one */ | ||
| 3718 | NUM_NL80211_CRIT_PROTO | ||
| 3719 | }; | ||
| 3720 | |||
| 3721 | /* maximum duration for critical protocol measures */ | ||
| 3722 | #define NL80211_CRIT_PROTO_MAX_DURATION 5000 /* msec */ | ||
| 3723 | |||
| 3590 | #endif /* __LINUX_NL80211_H */ | 3724 | #endif /* __LINUX_NL80211_H */ |
