aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-08-13 18:58:59 -0400
committerDavid S. Miller <davem@davemloft.net>2013-08-13 18:59:09 -0400
commit98f1b7f3820a50a42e51f9bd3e7014cf9b2688a8 (patch)
tree9a3797eb18583717861029f5ec7d3438135bcd06 /include/uapi/linux
parent926489be1d2b030c17d38fa10b5921bf3409d91d (diff)
parent89c2af3c14ddf8ae48637a7b454d66ac5e0ca728 (diff)
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
John W. Linville says: ==================== This is a batch of updates intended for 3.12. It is mostly driver stuff, although Johannes Berg and Simon Wunderlich make a good showing with mac80211 bits (particularly some work on 5/10 MHz channel support). The usual suspects are mostly represented. There are lots of updates to iwlwifi, ath9k, ath10k, mwifiex, rt2x00, wil6210, as usual. The bcma bus gets some love this time, as do cw1200, iwl4965, and a few other bits here and there. I don't think there is much unusual here, FWIW. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/nl80211.h183
1 files changed, 163 insertions, 20 deletions
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 861e5eba3953..1f42bc3dcb9c 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -126,6 +126,31 @@
126 */ 126 */
127 127
128/** 128/**
129 * DOC: packet coalesce support
130 *
131 * In most cases, host that receives IPv4 and IPv6 multicast/broadcast
132 * packets does not do anything with these packets. Therefore the
133 * reception of these unwanted packets causes unnecessary processing
134 * and power consumption.
135 *
136 * Packet coalesce feature helps to reduce number of received interrupts
137 * to host by buffering these packets in firmware/hardware for some
138 * predefined time. Received interrupt will be generated when one of the
139 * following events occur.
140 * a) Expiration of hardware timer whose expiration time is set to maximum
141 * coalescing delay of matching coalesce rule.
142 * b) Coalescing buffer in hardware reaches it's limit.
143 * c) Packet doesn't match any of the configured coalesce rules.
144 *
145 * User needs to configure following parameters for creating a coalesce
146 * rule.
147 * a) Maximum coalescing delay
148 * b) List of packet patterns which needs to be matched
149 * c) Condition for coalescence. pattern 'match' or 'no match'
150 * Multiple such rules can be created.
151 */
152
153/**
129 * enum nl80211_commands - supported nl80211 commands 154 * enum nl80211_commands - supported nl80211 commands
130 * 155 *
131 * @NL80211_CMD_UNSPEC: unspecified command to catch errors 156 * @NL80211_CMD_UNSPEC: unspecified command to catch errors
@@ -648,6 +673,19 @@
648 * @NL80211_CMD_CRIT_PROTOCOL_STOP: Indicates the connection reliability can 673 * @NL80211_CMD_CRIT_PROTOCOL_STOP: Indicates the connection reliability can
649 * return back to normal. 674 * return back to normal.
650 * 675 *
676 * @NL80211_CMD_GET_COALESCE: Get currently supported coalesce rules.
677 * @NL80211_CMD_SET_COALESCE: Configure coalesce rules or clear existing rules.
678 *
679 * @NL80211_CMD_CHANNEL_SWITCH: Perform a channel switch by announcing the
680 * the new channel information (Channel Switch Announcement - CSA)
681 * in the beacon for some time (as defined in the
682 * %NL80211_ATTR_CH_SWITCH_COUNT parameter) and then change to the
683 * new channel. Userspace provides the new channel information (using
684 * %NL80211_ATTR_WIPHY_FREQ and the attributes determining channel
685 * width). %NL80211_ATTR_CH_SWITCH_BLOCK_TX may be supplied to inform
686 * other station that transmission must be blocked until the channel
687 * switch is complete.
688 *
651 * @NL80211_CMD_MAX: highest used command number 689 * @NL80211_CMD_MAX: highest used command number
652 * @__NL80211_CMD_AFTER_LAST: internal use 690 * @__NL80211_CMD_AFTER_LAST: internal use
653 */ 691 */
@@ -810,6 +848,11 @@ enum nl80211_commands {
810 NL80211_CMD_CRIT_PROTOCOL_START, 848 NL80211_CMD_CRIT_PROTOCOL_START,
811 NL80211_CMD_CRIT_PROTOCOL_STOP, 849 NL80211_CMD_CRIT_PROTOCOL_STOP,
812 850
851 NL80211_CMD_GET_COALESCE,
852 NL80211_CMD_SET_COALESCE,
853
854 NL80211_CMD_CHANNEL_SWITCH,
855
813 /* add new commands above here */ 856 /* add new commands above here */
814 857
815 /* used to define NL80211_CMD_MAX below */ 858 /* used to define NL80211_CMD_MAX below */
@@ -1436,6 +1479,20 @@ enum nl80211_commands {
1436 * allowed to be used with the first @NL80211_CMD_SET_STATION command to 1479 * allowed to be used with the first @NL80211_CMD_SET_STATION command to
1437 * update a TDLS peer STA entry. 1480 * update a TDLS peer STA entry.
1438 * 1481 *
1482 * @NL80211_ATTR_COALESCE_RULE: Coalesce rule information.
1483 *
1484 * @NL80211_ATTR_CH_SWITCH_COUNT: u32 attribute specifying the number of TBTT's
1485 * until the channel switch event.
1486 * @NL80211_ATTR_CH_SWITCH_BLOCK_TX: flag attribute specifying that transmission
1487 * must be blocked on the current channel (before the channel switch
1488 * operation).
1489 * @NL80211_ATTR_CSA_IES: Nested set of attributes containing the IE information
1490 * for the time while performing a channel switch.
1491 * @NL80211_ATTR_CSA_C_OFF_BEACON: Offset of the channel switch counter
1492 * field in the beacons tail (%NL80211_ATTR_BEACON_TAIL).
1493 * @NL80211_ATTR_CSA_C_OFF_PRESP: Offset of the channel switch counter
1494 * field in the probe response (%NL80211_ATTR_PROBE_RESP).
1495 *
1439 * @NL80211_ATTR_MAX: highest attribute number currently defined 1496 * @NL80211_ATTR_MAX: highest attribute number currently defined
1440 * @__NL80211_ATTR_AFTER_LAST: internal use 1497 * @__NL80211_ATTR_AFTER_LAST: internal use
1441 */ 1498 */
@@ -1736,6 +1793,14 @@ enum nl80211_attrs {
1736 1793
1737 NL80211_ATTR_PEER_AID, 1794 NL80211_ATTR_PEER_AID,
1738 1795
1796 NL80211_ATTR_COALESCE_RULE,
1797
1798 NL80211_ATTR_CH_SWITCH_COUNT,
1799 NL80211_ATTR_CH_SWITCH_BLOCK_TX,
1800 NL80211_ATTR_CSA_IES,
1801 NL80211_ATTR_CSA_C_OFF_BEACON,
1802 NL80211_ATTR_CSA_C_OFF_PRESP,
1803
1739 /* add attributes here, update the policy in nl80211.c */ 1804 /* add attributes here, update the policy in nl80211.c */
1740 1805
1741 __NL80211_ATTR_AFTER_LAST, 1806 __NL80211_ATTR_AFTER_LAST,
@@ -2773,6 +2838,21 @@ enum nl80211_chan_width {
2773}; 2838};
2774 2839
2775/** 2840/**
2841 * enum nl80211_bss_scan_width - control channel width for a BSS
2842 *
2843 * These values are used with the %NL80211_BSS_CHAN_WIDTH attribute.
2844 *
2845 * @NL80211_BSS_CHAN_WIDTH_20: control channel is 20 MHz wide or compatible
2846 * @NL80211_BSS_CHAN_WIDTH_10: control channel is 10 MHz wide
2847 * @NL80211_BSS_CHAN_WIDTH_5: control channel is 5 MHz wide
2848 */
2849enum nl80211_bss_scan_width {
2850 NL80211_BSS_CHAN_WIDTH_20,
2851 NL80211_BSS_CHAN_WIDTH_10,
2852 NL80211_BSS_CHAN_WIDTH_5,
2853};
2854
2855/**
2776 * enum nl80211_bss - netlink attributes for a BSS 2856 * enum nl80211_bss - netlink attributes for a BSS
2777 * 2857 *
2778 * @__NL80211_BSS_INVALID: invalid 2858 * @__NL80211_BSS_INVALID: invalid
@@ -2796,6 +2876,8 @@ enum nl80211_chan_width {
2796 * @NL80211_BSS_BEACON_IES: binary attribute containing the raw information 2876 * @NL80211_BSS_BEACON_IES: binary attribute containing the raw information
2797 * elements from a Beacon frame (bin); not present if no Beacon frame has 2877 * elements from a Beacon frame (bin); not present if no Beacon frame has
2798 * yet been received 2878 * yet been received
2879 * @NL80211_BSS_CHAN_WIDTH: channel width of the control channel
2880 * (u32, enum nl80211_bss_scan_width)
2799 * @__NL80211_BSS_AFTER_LAST: internal 2881 * @__NL80211_BSS_AFTER_LAST: internal
2800 * @NL80211_BSS_MAX: highest BSS attribute 2882 * @NL80211_BSS_MAX: highest BSS attribute
2801 */ 2883 */
@@ -2812,6 +2894,7 @@ enum nl80211_bss {
2812 NL80211_BSS_STATUS, 2894 NL80211_BSS_STATUS,
2813 NL80211_BSS_SEEN_MS_AGO, 2895 NL80211_BSS_SEEN_MS_AGO,
2814 NL80211_BSS_BEACON_IES, 2896 NL80211_BSS_BEACON_IES,
2897 NL80211_BSS_CHAN_WIDTH,
2815 2898
2816 /* keep last */ 2899 /* keep last */
2817 __NL80211_BSS_AFTER_LAST, 2900 __NL80211_BSS_AFTER_LAST,
@@ -3060,11 +3143,11 @@ enum nl80211_tx_power_setting {
3060}; 3143};
3061 3144
3062/** 3145/**
3063 * enum nl80211_wowlan_packet_pattern_attr - WoWLAN packet pattern attribute 3146 * enum nl80211_packet_pattern_attr - packet pattern attribute
3064 * @__NL80211_WOWLAN_PKTPAT_INVALID: invalid number for nested attribute 3147 * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute
3065 * @NL80211_WOWLAN_PKTPAT_PATTERN: the pattern, values where the mask has 3148 * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has
3066 * a zero bit are ignored 3149 * a zero bit are ignored
3067 * @NL80211_WOWLAN_PKTPAT_MASK: pattern mask, must be long enough to have 3150 * @NL80211_PKTPAT_MASK: pattern mask, must be long enough to have
3068 * a bit for each byte in the pattern. The lowest-order bit corresponds 3151 * a bit for each byte in the pattern. The lowest-order bit corresponds
3069 * to the first byte of the pattern, but the bytes of the pattern are 3152 * to the first byte of the pattern, but the bytes of the pattern are
3070 * in a little-endian-like format, i.e. the 9th byte of the pattern 3153 * in a little-endian-like format, i.e. the 9th byte of the pattern
@@ -3075,39 +3158,50 @@ enum nl80211_tx_power_setting {
3075 * Note that the pattern matching is done as though frames were not 3158 * Note that the pattern matching is done as though frames were not
3076 * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked 3159 * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked
3077 * first (including SNAP header unpacking) and then matched. 3160 * first (including SNAP header unpacking) and then matched.
3078 * @NL80211_WOWLAN_PKTPAT_OFFSET: packet offset, pattern is matched after 3161 * @NL80211_PKTPAT_OFFSET: packet offset, pattern is matched after
3079 * these fixed number of bytes of received packet 3162 * these fixed number of bytes of received packet
3080 * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes 3163 * @NUM_NL80211_PKTPAT: number of attributes
3081 * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number 3164 * @MAX_NL80211_PKTPAT: max attribute number
3082 */ 3165 */
3083enum nl80211_wowlan_packet_pattern_attr { 3166enum nl80211_packet_pattern_attr {
3084 __NL80211_WOWLAN_PKTPAT_INVALID, 3167 __NL80211_PKTPAT_INVALID,
3085 NL80211_WOWLAN_PKTPAT_MASK, 3168 NL80211_PKTPAT_MASK,
3086 NL80211_WOWLAN_PKTPAT_PATTERN, 3169 NL80211_PKTPAT_PATTERN,
3087 NL80211_WOWLAN_PKTPAT_OFFSET, 3170 NL80211_PKTPAT_OFFSET,
3088 3171
3089 NUM_NL80211_WOWLAN_PKTPAT, 3172 NUM_NL80211_PKTPAT,
3090 MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, 3173 MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1,
3091}; 3174};
3092 3175
3093/** 3176/**
3094 * struct nl80211_wowlan_pattern_support - pattern support information 3177 * struct nl80211_pattern_support - packet pattern support information
3095 * @max_patterns: maximum number of patterns supported 3178 * @max_patterns: maximum number of patterns supported
3096 * @min_pattern_len: minimum length of each pattern 3179 * @min_pattern_len: minimum length of each pattern
3097 * @max_pattern_len: maximum length of each pattern 3180 * @max_pattern_len: maximum length of each pattern
3098 * @max_pkt_offset: maximum Rx packet offset 3181 * @max_pkt_offset: maximum Rx packet offset
3099 * 3182 *
3100 * This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when 3183 * This struct is carried in %NL80211_WOWLAN_TRIG_PKT_PATTERN when
3101 * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the 3184 * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED or in
3102 * capability information given by the kernel to userspace. 3185 * %NL80211_ATTR_COALESCE_RULE_PKT_PATTERN when that is part of
3186 * %NL80211_ATTR_COALESCE_RULE in the capability information given
3187 * by the kernel to userspace.
3103 */ 3188 */
3104struct nl80211_wowlan_pattern_support { 3189struct nl80211_pattern_support {
3105 __u32 max_patterns; 3190 __u32 max_patterns;
3106 __u32 min_pattern_len; 3191 __u32 min_pattern_len;
3107 __u32 max_pattern_len; 3192 __u32 max_pattern_len;
3108 __u32 max_pkt_offset; 3193 __u32 max_pkt_offset;
3109} __attribute__((packed)); 3194} __attribute__((packed));
3110 3195
3196/* only for backward compatibility */
3197#define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID
3198#define NL80211_WOWLAN_PKTPAT_MASK NL80211_PKTPAT_MASK
3199#define NL80211_WOWLAN_PKTPAT_PATTERN NL80211_PKTPAT_PATTERN
3200#define NL80211_WOWLAN_PKTPAT_OFFSET NL80211_PKTPAT_OFFSET
3201#define NUM_NL80211_WOWLAN_PKTPAT NUM_NL80211_PKTPAT
3202#define MAX_NL80211_WOWLAN_PKTPAT MAX_NL80211_PKTPAT
3203#define nl80211_wowlan_pattern_support nl80211_pattern_support
3204
3111/** 3205/**
3112 * enum nl80211_wowlan_triggers - WoWLAN trigger definitions 3206 * enum nl80211_wowlan_triggers - WoWLAN trigger definitions
3113 * @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes 3207 * @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes
@@ -3127,7 +3221,7 @@ struct nl80211_wowlan_pattern_support {
3127 * pattern matching is done after the packet is converted to the MSDU. 3221 * pattern matching is done after the packet is converted to the MSDU.
3128 * 3222 *
3129 * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute 3223 * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute
3130 * carrying a &struct nl80211_wowlan_pattern_support. 3224 * carrying a &struct nl80211_pattern_support.
3131 * 3225 *
3132 * When reporting wakeup. it is a u32 attribute containing the 0-based 3226 * When reporting wakeup. it is a u32 attribute containing the 0-based
3133 * index of the pattern that caused the wakeup, in the patterns passed 3227 * index of the pattern that caused the wakeup, in the patterns passed
@@ -3284,7 +3378,7 @@ struct nl80211_wowlan_tcp_data_token_feature {
3284 * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a 3378 * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a
3285 * u32 attribute holding the maximum length 3379 * u32 attribute holding the maximum length
3286 * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for 3380 * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for
3287 * feature advertising. The mask works like @NL80211_WOWLAN_PKTPAT_MASK 3381 * feature advertising. The mask works like @NL80211_PKTPAT_MASK
3288 * but on the TCP payload only. 3382 * but on the TCP payload only.
3289 * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes 3383 * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes
3290 * @MAX_NL80211_WOWLAN_TCP: highest attribute number 3384 * @MAX_NL80211_WOWLAN_TCP: highest attribute number
@@ -3309,6 +3403,55 @@ enum nl80211_wowlan_tcp_attrs {
3309}; 3403};
3310 3404
3311/** 3405/**
3406 * struct nl80211_coalesce_rule_support - coalesce rule support information
3407 * @max_rules: maximum number of rules supported
3408 * @pat: packet pattern support information
3409 * @max_delay: maximum supported coalescing delay in msecs
3410 *
3411 * This struct is carried in %NL80211_ATTR_COALESCE_RULE in the
3412 * capability information given by the kernel to userspace.
3413 */
3414struct nl80211_coalesce_rule_support {
3415 __u32 max_rules;
3416 struct nl80211_pattern_support pat;
3417 __u32 max_delay;
3418} __attribute__((packed));
3419
3420/**
3421 * enum nl80211_attr_coalesce_rule - coalesce rule attribute
3422 * @__NL80211_COALESCE_RULE_INVALID: invalid number for nested attribute
3423 * @NL80211_ATTR_COALESCE_RULE_DELAY: delay in msecs used for packet coalescing
3424 * @NL80211_ATTR_COALESCE_RULE_CONDITION: condition for packet coalescence,
3425 * see &enum nl80211_coalesce_condition.
3426 * @NL80211_ATTR_COALESCE_RULE_PKT_PATTERN: packet offset, pattern is matched
3427 * after these fixed number of bytes of received packet
3428 * @NUM_NL80211_ATTR_COALESCE_RULE: number of attributes
3429 * @NL80211_ATTR_COALESCE_RULE_MAX: max attribute number
3430 */
3431enum nl80211_attr_coalesce_rule {
3432 __NL80211_COALESCE_RULE_INVALID,
3433 NL80211_ATTR_COALESCE_RULE_DELAY,
3434 NL80211_ATTR_COALESCE_RULE_CONDITION,
3435 NL80211_ATTR_COALESCE_RULE_PKT_PATTERN,
3436
3437 /* keep last */
3438 NUM_NL80211_ATTR_COALESCE_RULE,
3439 NL80211_ATTR_COALESCE_RULE_MAX = NUM_NL80211_ATTR_COALESCE_RULE - 1
3440};
3441
3442/**
3443 * enum nl80211_coalesce_condition - coalesce rule conditions
3444 * @NL80211_COALESCE_CONDITION_MATCH: coalaesce Rx packets when patterns
3445 * in a rule are matched.
3446 * @NL80211_COALESCE_CONDITION_NO_MATCH: coalesce Rx packets when patterns
3447 * in a rule are not matched.
3448 */
3449enum nl80211_coalesce_condition {
3450 NL80211_COALESCE_CONDITION_MATCH,
3451 NL80211_COALESCE_CONDITION_NO_MATCH
3452};
3453
3454/**
3312 * enum nl80211_iface_limit_attrs - limit attributes 3455 * enum nl80211_iface_limit_attrs - limit attributes
3313 * @NL80211_IFACE_LIMIT_UNSPEC: (reserved) 3456 * @NL80211_IFACE_LIMIT_UNSPEC: (reserved)
3314 * @NL80211_IFACE_LIMIT_MAX: maximum number of interfaces that 3457 * @NL80211_IFACE_LIMIT_MAX: maximum number of interfaces that