diff options
author | John W. Linville <linville@tuxdriver.com> | 2013-08-12 14:45:06 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-08-12 14:45:06 -0400 |
commit | 89c2af3c14ddf8ae48637a7b454d66ac5e0ca728 (patch) | |
tree | 77faf3fc889fb0e77ce7c4778f2bbc93fdf8cdd2 /include/uapi | |
parent | f3dfd20860db3d0c400dd83a378176a28d3662db (diff) | |
parent | d1e2586f484dfc36eee2b2d3a6c6c77be67ca492 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Conflicts:
drivers/net/ethernet/broadcom/Kconfig
Diffstat (limited to 'include/uapi')
-rw-r--r-- | include/uapi/linux/nl80211.h | 183 |
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 | */ | ||
2849 | enum 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 | */ |
3083 | enum nl80211_wowlan_packet_pattern_attr { | 3166 | enum 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 | */ |
3104 | struct nl80211_wowlan_pattern_support { | 3189 | struct 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 | */ | ||
3414 | struct 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 | */ | ||
3431 | enum 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 | */ | ||
3449 | enum 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 |