aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2014-02-24 15:03:32 -0500
committerJohn W. Linville <linville@tuxdriver.com>2014-02-24 15:03:32 -0500
commitc77986c78aa941af8266272841567e78b72d54cc (patch)
treecb30e1bd7d5799bfce5a3837bcfddee059a81733 /include
parent9e4b4269ecee426f1647425a24186dd1566db554 (diff)
parent6658ab80fd4ef940fc2366ddb66690a15ea69c18 (diff)
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Diffstat (limited to 'include')
-rw-r--r--include/net/cfg80211.h24
-rw-r--r--include/net/mac80211.h43
-rw-r--r--include/uapi/linux/nl80211.h42
3 files changed, 62 insertions, 47 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 9f90554e88c4..8c9ba44fb7cf 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -2206,7 +2206,12 @@ struct cfg80211_qos_map {
2206 * @set_cqm_txe_config: Configure connection quality monitor TX error 2206 * @set_cqm_txe_config: Configure connection quality monitor TX error
2207 * thresholds. 2207 * thresholds.
2208 * @sched_scan_start: Tell the driver to start a scheduled scan. 2208 * @sched_scan_start: Tell the driver to start a scheduled scan.
2209 * @sched_scan_stop: Tell the driver to stop an ongoing scheduled scan. 2209 * @sched_scan_stop: Tell the driver to stop an ongoing scheduled scan. This
2210 * call must stop the scheduled scan and be ready for starting a new one
2211 * before it returns, i.e. @sched_scan_start may be called immediately
2212 * after that again and should not fail in that case. The driver should
2213 * not call cfg80211_sched_scan_stopped() for a requested stop (when this
2214 * method returns 0.)
2210 * 2215 *
2211 * @mgmt_frame_register: Notify driver that a management frame type was 2216 * @mgmt_frame_register: Notify driver that a management frame type was
2212 * registered. Note that this callback may not sleep, and cannot run 2217 * registered. Note that this callback may not sleep, and cannot run
@@ -2465,7 +2470,8 @@ struct cfg80211_ops {
2465 2470
2466 int (*tdls_mgmt)(struct wiphy *wiphy, struct net_device *dev, 2471 int (*tdls_mgmt)(struct wiphy *wiphy, struct net_device *dev,
2467 u8 *peer, u8 action_code, u8 dialog_token, 2472 u8 *peer, u8 action_code, u8 dialog_token,
2468 u16 status_code, const u8 *buf, size_t len); 2473 u16 status_code, u32 peer_capability,
2474 const u8 *buf, size_t len);
2469 int (*tdls_oper)(struct wiphy *wiphy, struct net_device *dev, 2475 int (*tdls_oper)(struct wiphy *wiphy, struct net_device *dev,
2470 u8 *peer, enum nl80211_tdls_operation oper); 2476 u8 *peer, enum nl80211_tdls_operation oper);
2471 2477
@@ -2610,9 +2616,12 @@ struct ieee80211_iface_limit {
2610 * only in special cases. 2616 * only in special cases.
2611 * @radar_detect_widths: bitmap of channel widths supported for radar detection 2617 * @radar_detect_widths: bitmap of channel widths supported for radar detection
2612 * 2618 *
2613 * These examples can be expressed as follows: 2619 * With this structure the driver can describe which interface
2620 * combinations it supports concurrently.
2614 * 2621 *
2615 * Allow #STA <= 1, #AP <= 1, matching BI, channels = 1, 2 total: 2622 * Examples:
2623 *
2624 * 1. Allow #STA <= 1, #AP <= 1, matching BI, channels = 1, 2 total:
2616 * 2625 *
2617 * struct ieee80211_iface_limit limits1[] = { 2626 * struct ieee80211_iface_limit limits1[] = {
2618 * { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, 2627 * { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), },
@@ -2626,7 +2635,7 @@ struct ieee80211_iface_limit {
2626 * }; 2635 * };
2627 * 2636 *
2628 * 2637 *
2629 * Allow #{AP, P2P-GO} <= 8, channels = 1, 8 total: 2638 * 2. Allow #{AP, P2P-GO} <= 8, channels = 1, 8 total:
2630 * 2639 *
2631 * struct ieee80211_iface_limit limits2[] = { 2640 * struct ieee80211_iface_limit limits2[] = {
2632 * { .max = 8, .types = BIT(NL80211_IFTYPE_AP) | 2641 * { .max = 8, .types = BIT(NL80211_IFTYPE_AP) |
@@ -2640,7 +2649,8 @@ struct ieee80211_iface_limit {
2640 * }; 2649 * };
2641 * 2650 *
2642 * 2651 *
2643 * Allow #STA <= 1, #{P2P-client,P2P-GO} <= 3 on two channels, 4 total. 2652 * 3. Allow #STA <= 1, #{P2P-client,P2P-GO} <= 3 on two channels, 4 total.
2653 *
2644 * This allows for an infrastructure connection and three P2P connections. 2654 * This allows for an infrastructure connection and three P2P connections.
2645 * 2655 *
2646 * struct ieee80211_iface_limit limits3[] = { 2656 * struct ieee80211_iface_limit limits3[] = {
@@ -2790,7 +2800,7 @@ struct wiphy_vendor_command {
2790 * @perm_addr: permanent MAC address of this device 2800 * @perm_addr: permanent MAC address of this device
2791 * @addr_mask: If the device supports multiple MAC addresses by masking, 2801 * @addr_mask: If the device supports multiple MAC addresses by masking,
2792 * set this to a mask with variable bits set to 1, e.g. if the last 2802 * set this to a mask with variable bits set to 1, e.g. if the last
2793 * four bits are variable then set it to 00:...:00:0f. The actual 2803 * four bits are variable then set it to 00-00-00-00-00-0f. The actual
2794 * variable bits shall be determined by the interfaces added, with 2804 * variable bits shall be determined by the interfaces added, with
2795 * interfaces not matching the mask being rejected to be brought up. 2805 * interfaces not matching the mask being rejected to be brought up.
2796 * @n_addresses: number of addresses in @addresses. 2806 * @n_addresses: number of addresses in @addresses.
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 4f0f29dce0aa..86faa413b37d 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -66,10 +66,6 @@
66 * 66 *
67 * Secondly, when the hardware handles fragmentation, the frame handed to 67 * Secondly, when the hardware handles fragmentation, the frame handed to
68 * the driver from mac80211 is the MSDU, not the MPDU. 68 * the driver from mac80211 is the MSDU, not the MPDU.
69 *
70 * Finally, for received frames, the driver is able to indicate that it has
71 * filled a radiotap header and put that in front of the frame; if it does
72 * not do so then mac80211 may add this under certain circumstances.
73 */ 69 */
74 70
75/** 71/**
@@ -1507,8 +1503,6 @@ struct ieee80211_tx_control {
1507 * @IEEE80211_HW_CONNECTION_MONITOR: 1503 * @IEEE80211_HW_CONNECTION_MONITOR:
1508 * The hardware performs its own connection monitoring, including 1504 * The hardware performs its own connection monitoring, including
1509 * periodic keep-alives to the AP and probing the AP on beacon loss. 1505 * periodic keep-alives to the AP and probing the AP on beacon loss.
1510 * When this flag is set, signaling beacon-loss will cause an immediate
1511 * change to disassociated state.
1512 * 1506 *
1513 * @IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC: 1507 * @IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC:
1514 * This device needs to get data from beacon before association (i.e. 1508 * This device needs to get data from beacon before association (i.e.
@@ -1644,10 +1638,6 @@ enum ieee80211_hw_flags {
1644 * the hw can report back. 1638 * the hw can report back.
1645 * @max_rate_tries: maximum number of tries for each stage 1639 * @max_rate_tries: maximum number of tries for each stage
1646 * 1640 *
1647 * @napi_weight: weight used for NAPI polling. You must specify an
1648 * appropriate value here if a napi_poll operation is provided
1649 * by your driver.
1650 *
1651 * @max_rx_aggregation_subframes: maximum buffer size (number of 1641 * @max_rx_aggregation_subframes: maximum buffer size (number of
1652 * sub-frames) to be used for A-MPDU block ack receiver 1642 * sub-frames) to be used for A-MPDU block ack receiver
1653 * aggregation. 1643 * aggregation.
@@ -1701,7 +1691,6 @@ struct ieee80211_hw {
1701 int vif_data_size; 1691 int vif_data_size;
1702 int sta_data_size; 1692 int sta_data_size;
1703 int chanctx_data_size; 1693 int chanctx_data_size;
1704 int napi_weight;
1705 u16 queues; 1694 u16 queues;
1706 u16 max_listen_interval; 1695 u16 max_listen_interval;
1707 s8 max_signal; 1696 s8 max_signal;
@@ -2471,6 +2460,7 @@ enum ieee80211_roc_type {
2471 * This process will continue until sched_scan_stop is called. 2460 * This process will continue until sched_scan_stop is called.
2472 * 2461 *
2473 * @sched_scan_stop: Tell the hardware to stop an ongoing scheduled scan. 2462 * @sched_scan_stop: Tell the hardware to stop an ongoing scheduled scan.
2463 * In this case, ieee80211_sched_scan_stopped() must not be called.
2474 * 2464 *
2475 * @sw_scan_start: Notifier function that is called just before a software scan 2465 * @sw_scan_start: Notifier function that is called just before a software scan
2476 * is started. Can be NULL, if the driver doesn't need this notification. 2466 * is started. Can be NULL, if the driver doesn't need this notification.
@@ -2624,8 +2614,6 @@ enum ieee80211_roc_type {
2624 * callback. They must then call ieee80211_chswitch_done() to indicate 2614 * callback. They must then call ieee80211_chswitch_done() to indicate
2625 * completion of the channel switch. 2615 * completion of the channel switch.
2626 * 2616 *
2627 * @napi_poll: Poll Rx queue for incoming data frames.
2628 *
2629 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device. 2617 * @set_antenna: Set antenna configuration (tx_ant, rx_ant) on the device.
2630 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may 2618 * Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may
2631 * reject TX/RX mask combinations they cannot support by returning -EINVAL 2619 * reject TX/RX mask combinations they cannot support by returning -EINVAL
@@ -2820,7 +2808,7 @@ struct ieee80211_ops {
2820 struct ieee80211_vif *vif, 2808 struct ieee80211_vif *vif,
2821 struct cfg80211_sched_scan_request *req, 2809 struct cfg80211_sched_scan_request *req,
2822 struct ieee80211_sched_scan_ies *ies); 2810 struct ieee80211_sched_scan_ies *ies);
2823 void (*sched_scan_stop)(struct ieee80211_hw *hw, 2811 int (*sched_scan_stop)(struct ieee80211_hw *hw,
2824 struct ieee80211_vif *vif); 2812 struct ieee80211_vif *vif);
2825 void (*sw_scan_start)(struct ieee80211_hw *hw); 2813 void (*sw_scan_start)(struct ieee80211_hw *hw);
2826 void (*sw_scan_complete)(struct ieee80211_hw *hw); 2814 void (*sw_scan_complete)(struct ieee80211_hw *hw);
@@ -2884,7 +2872,6 @@ struct ieee80211_ops {
2884 void (*flush)(struct ieee80211_hw *hw, u32 queues, bool drop); 2872 void (*flush)(struct ieee80211_hw *hw, u32 queues, bool drop);
2885 void (*channel_switch)(struct ieee80211_hw *hw, 2873 void (*channel_switch)(struct ieee80211_hw *hw,
2886 struct ieee80211_channel_switch *ch_switch); 2874 struct ieee80211_channel_switch *ch_switch);
2887 int (*napi_poll)(struct ieee80211_hw *hw, int budget);
2888 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant); 2875 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
2889 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); 2876 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
2890 2877
@@ -3166,21 +3153,21 @@ void ieee80211_free_hw(struct ieee80211_hw *hw);
3166 */ 3153 */
3167void ieee80211_restart_hw(struct ieee80211_hw *hw); 3154void ieee80211_restart_hw(struct ieee80211_hw *hw);
3168 3155
3169/** ieee80211_napi_schedule - schedule NAPI poll 3156/**
3170 * 3157 * ieee80211_napi_add - initialize mac80211 NAPI context
3171 * Use this function to schedule NAPI polling on a device. 3158 * @hw: the hardware to initialize the NAPI context on
3172 * 3159 * @napi: the NAPI context to initialize
3173 * @hw: the hardware to start polling 3160 * @napi_dev: dummy NAPI netdevice, here to not waste the space if the
3174 */ 3161 * driver doesn't use NAPI
3175void ieee80211_napi_schedule(struct ieee80211_hw *hw); 3162 * @poll: poll function
3176 3163 * @weight: default weight
3177/** ieee80211_napi_complete - complete NAPI polling
3178 *
3179 * Use this function to finish NAPI polling on a device.
3180 * 3164 *
3181 * @hw: the hardware to stop polling 3165 * See also netif_napi_add().
3182 */ 3166 */
3183void ieee80211_napi_complete(struct ieee80211_hw *hw); 3167void ieee80211_napi_add(struct ieee80211_hw *hw, struct napi_struct *napi,
3168 struct net_device *napi_dev,
3169 int (*poll)(struct napi_struct *, int),
3170 int weight);
3184 3171
3185/** 3172/**
3186 * ieee80211_rx - receive frame 3173 * ieee80211_rx - receive frame
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index a12e6cae5132..ff72cab3cd3a 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -303,8 +303,9 @@
303 * passed, all channels allowed for the current regulatory domain 303 * passed, all channels allowed for the current regulatory domain
304 * are used. Extra IEs can also be passed from the userspace by 304 * are used. Extra IEs can also be passed from the userspace by
305 * using the %NL80211_ATTR_IE attribute. 305 * using the %NL80211_ATTR_IE attribute.
306 * @NL80211_CMD_STOP_SCHED_SCAN: stop a scheduled scan. Returns -ENOENT 306 * @NL80211_CMD_STOP_SCHED_SCAN: stop a scheduled scan. Returns -ENOENT if
307 * if scheduled scan is not running. 307 * scheduled scan is not running. The caller may assume that as soon
308 * as the call returns, it is safe to start a new scheduled scan again.
308 * @NL80211_CMD_SCHED_SCAN_RESULTS: indicates that there are scheduled scan 309 * @NL80211_CMD_SCHED_SCAN_RESULTS: indicates that there are scheduled scan
309 * results available. 310 * results available.
310 * @NL80211_CMD_SCHED_SCAN_STOPPED: indicates that the scheduled scan has 311 * @NL80211_CMD_SCHED_SCAN_STOPPED: indicates that the scheduled scan has
@@ -1575,6 +1576,9 @@ enum nl80211_commands {
1575 * advertise values that cannot always be met. In such cases, an attempt 1576 * advertise values that cannot always be met. In such cases, an attempt
1576 * to add a new station entry with @NL80211_CMD_NEW_STATION may fail. 1577 * to add a new station entry with @NL80211_CMD_NEW_STATION may fail.
1577 * 1578 *
1579 * @NL80211_ATTR_TDLS_PEER_CAPABILITY: flags for TDLS peer capabilities, u32.
1580 * As specified in the &enum nl80211_tdls_peer_capability.
1581 *
1578 * @NL80211_ATTR_MAX: highest attribute number currently defined 1582 * @NL80211_ATTR_MAX: highest attribute number currently defined
1579 * @__NL80211_ATTR_AFTER_LAST: internal use 1583 * @__NL80211_ATTR_AFTER_LAST: internal use
1580 */ 1584 */
@@ -1908,6 +1912,8 @@ enum nl80211_attrs {
1908 1912
1909 NL80211_ATTR_MAX_AP_ASSOC_STA, 1913 NL80211_ATTR_MAX_AP_ASSOC_STA,
1910 1914
1915 NL80211_ATTR_TDLS_PEER_CAPABILITY,
1916
1911 /* add attributes here, update the policy in nl80211.c */ 1917 /* add attributes here, update the policy in nl80211.c */
1912 1918
1913 __NL80211_ATTR_AFTER_LAST, 1919 __NL80211_ATTR_AFTER_LAST,
@@ -2437,10 +2443,7 @@ enum nl80211_reg_type {
2437 * in KHz. This is not a center a frequency but an actual regulatory 2443 * in KHz. This is not a center a frequency but an actual regulatory
2438 * band edge. 2444 * band edge.
2439 * @NL80211_ATTR_FREQ_RANGE_MAX_BW: maximum allowed bandwidth for this 2445 * @NL80211_ATTR_FREQ_RANGE_MAX_BW: maximum allowed bandwidth for this
2440 * frequency range, in KHz. If not present or 0, maximum available 2446 * frequency range, in KHz.
2441 * bandwidth should be calculated base on contiguous rules and wider
2442 * channels will be allowed to cross multiple contiguous/overlapping
2443 * frequency ranges.
2444 * @NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN: the maximum allowed antenna gain 2447 * @NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN: the maximum allowed antenna gain
2445 * for a given frequency range. The value is in mBi (100 * dBi). 2448 * for a given frequency range. The value is in mBi (100 * dBi).
2446 * If you don't have one then don't send this. 2449 * If you don't have one then don't send this.
@@ -2511,6 +2514,9 @@ enum nl80211_sched_scan_match_attr {
2511 * @NL80211_RRF_NO_IR: no mechanisms that initiate radiation are allowed, 2514 * @NL80211_RRF_NO_IR: no mechanisms that initiate radiation are allowed,
2512 * this includes probe requests or modes of operation that require 2515 * this includes probe requests or modes of operation that require
2513 * beaconing. 2516 * beaconing.
2517 * @NL80211_RRF_AUTO_BW: maximum available bandwidth should be calculated
2518 * base on contiguous rules and wider channels will be allowed to cross
2519 * multiple contiguous/overlapping frequency ranges.
2514 */ 2520 */
2515enum nl80211_reg_rule_flags { 2521enum nl80211_reg_rule_flags {
2516 NL80211_RRF_NO_OFDM = 1<<0, 2522 NL80211_RRF_NO_OFDM = 1<<0,
@@ -2522,6 +2528,7 @@ enum nl80211_reg_rule_flags {
2522 NL80211_RRF_PTMP_ONLY = 1<<6, 2528 NL80211_RRF_PTMP_ONLY = 1<<6,
2523 NL80211_RRF_NO_IR = 1<<7, 2529 NL80211_RRF_NO_IR = 1<<7,
2524 __NL80211_RRF_NO_IBSS = 1<<8, 2530 __NL80211_RRF_NO_IBSS = 1<<8,
2531 NL80211_RRF_AUTO_BW = 1<<11,
2525}; 2532};
2526 2533
2527#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR 2534#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
@@ -3843,11 +3850,6 @@ enum nl80211_ap_sme_features {
3843 * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested 3850 * @NL80211_FEATURE_CELL_BASE_REG_HINTS: This driver has been tested
3844 * to work properly to suppport receiving regulatory hints from 3851 * to work properly to suppport receiving regulatory hints from
3845 * cellular base stations. 3852 * cellular base stations.
3846 * @NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL: If this is set, an active
3847 * P2P Device (%NL80211_IFTYPE_P2P_DEVICE) requires its own channel
3848 * in the interface combinations, even when it's only used for scan
3849 * and remain-on-channel. This could be due to, for example, the
3850 * remain-on-channel implementation requiring a channel context.
3851 * @NL80211_FEATURE_SAE: This driver supports simultaneous authentication of 3853 * @NL80211_FEATURE_SAE: This driver supports simultaneous authentication of
3852 * equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station 3854 * equals (SAE) with user space SME (NL80211_CMD_AUTHENTICATE) in station
3853 * mode 3855 * mode
@@ -3889,7 +3891,7 @@ enum nl80211_feature_flags {
3889 NL80211_FEATURE_HT_IBSS = 1 << 1, 3891 NL80211_FEATURE_HT_IBSS = 1 << 1,
3890 NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2, 3892 NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2,
3891 NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3, 3893 NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3,
3892 NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4, 3894 /* bit 4 is reserved - don't use */
3893 NL80211_FEATURE_SAE = 1 << 5, 3895 NL80211_FEATURE_SAE = 1 << 5,
3894 NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6, 3896 NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6,
3895 NL80211_FEATURE_SCAN_FLUSH = 1 << 7, 3897 NL80211_FEATURE_SCAN_FLUSH = 1 << 7,
@@ -4079,4 +4081,20 @@ struct nl80211_vendor_cmd_info {
4079 __u32 subcmd; 4081 __u32 subcmd;
4080}; 4082};
4081 4083
4084/**
4085 * enum nl80211_tdls_peer_capability - TDLS peer flags.
4086 *
4087 * Used by tdls_mgmt() to determine which conditional elements need
4088 * to be added to TDLS Setup frames.
4089 *
4090 * @NL80211_TDLS_PEER_HT: TDLS peer is HT capable.
4091 * @NL80211_TDLS_PEER_VHT: TDLS peer is VHT capable.
4092 * @NL80211_TDLS_PEER_WMM: TDLS peer is WMM capable.
4093 */
4094enum nl80211_tdls_peer_capability {
4095 NL80211_TDLS_PEER_HT = 1<<0,
4096 NL80211_TDLS_PEER_VHT = 1<<1,
4097 NL80211_TDLS_PEER_WMM = 1<<2,
4098};
4099
4082#endif /* __LINUX_NL80211_H */ 4100#endif /* __LINUX_NL80211_H */