diff options
author | David S. Miller <davem@davemloft.net> | 2010-06-17 17:19:06 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-17 17:19:06 -0400 |
commit | bb9c03d8a6893517737b16fdbeb54be3c73b3023 (patch) | |
tree | 35fa0d1defaaf94641963a49126d7bb475ffa4c6 /include | |
parent | 4de57826810fd2cfeb2ab5c7d003ff9116b8f7ee (diff) | |
parent | abf52f86aa0a49a7377350cafa8f218c4cd227e7 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'include')
-rw-r--r-- | include/net/cfg80211.h | 2 | ||||
-rw-r--r-- | include/net/mac80211.h | 74 |
2 files changed, 30 insertions, 46 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index a56bac1e69e..9c45b905aef 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -810,6 +810,7 @@ struct cfg80211_disassoc_request { | |||
810 | * @beacon_interval: beacon interval to use | 810 | * @beacon_interval: beacon interval to use |
811 | * @privacy: this is a protected network, keys will be configured | 811 | * @privacy: this is a protected network, keys will be configured |
812 | * after joining | 812 | * after joining |
813 | * @basic_rates: bitmap of basic rates to use when creating the IBSS | ||
813 | */ | 814 | */ |
814 | struct cfg80211_ibss_params { | 815 | struct cfg80211_ibss_params { |
815 | u8 *ssid; | 816 | u8 *ssid; |
@@ -818,6 +819,7 @@ struct cfg80211_ibss_params { | |||
818 | u8 *ie; | 819 | u8 *ie; |
819 | u8 ssid_len, ie_len; | 820 | u8 ssid_len, ie_len; |
820 | u16 beacon_interval; | 821 | u16 beacon_interval; |
822 | u32 basic_rates; | ||
821 | bool channel_fixed; | 823 | bool channel_fixed; |
822 | bool privacy; | 824 | bool privacy; |
823 | }; | 825 | }; |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index abb3b1a9ddc..fe1a3a60337 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/wireless.h> | 19 | #include <linux/wireless.h> |
20 | #include <linux/device.h> | 20 | #include <linux/device.h> |
21 | #include <linux/ieee80211.h> | 21 | #include <linux/ieee80211.h> |
22 | #include <linux/inetdevice.h> | ||
23 | #include <net/cfg80211.h> | 22 | #include <net/cfg80211.h> |
24 | 23 | ||
25 | /** | 24 | /** |
@@ -147,6 +146,7 @@ struct ieee80211_low_level_stats { | |||
147 | * enabled/disabled (beaconing modes) | 146 | * enabled/disabled (beaconing modes) |
148 | * @BSS_CHANGED_CQM: Connection quality monitor config changed | 147 | * @BSS_CHANGED_CQM: Connection quality monitor config changed |
149 | * @BSS_CHANGED_IBSS: IBSS join status changed | 148 | * @BSS_CHANGED_IBSS: IBSS join status changed |
149 | * @BSS_CHANGED_ARP_FILTER: Hardware ARP filter address list or state changed. | ||
150 | */ | 150 | */ |
151 | enum ieee80211_bss_change { | 151 | enum ieee80211_bss_change { |
152 | BSS_CHANGED_ASSOC = 1<<0, | 152 | BSS_CHANGED_ASSOC = 1<<0, |
@@ -161,10 +161,18 @@ enum ieee80211_bss_change { | |||
161 | BSS_CHANGED_BEACON_ENABLED = 1<<9, | 161 | BSS_CHANGED_BEACON_ENABLED = 1<<9, |
162 | BSS_CHANGED_CQM = 1<<10, | 162 | BSS_CHANGED_CQM = 1<<10, |
163 | BSS_CHANGED_IBSS = 1<<11, | 163 | BSS_CHANGED_IBSS = 1<<11, |
164 | BSS_CHANGED_ARP_FILTER = 1<<12, | ||
164 | 165 | ||
165 | /* when adding here, make sure to change ieee80211_reconfig */ | 166 | /* when adding here, make sure to change ieee80211_reconfig */ |
166 | }; | 167 | }; |
167 | 168 | ||
169 | /* | ||
170 | * The maximum number of IPv4 addresses listed for ARP filtering. If the number | ||
171 | * of addresses for an interface increase beyond this value, hardware ARP | ||
172 | * filtering will be disabled. | ||
173 | */ | ||
174 | #define IEEE80211_BSS_ARP_ADDR_LIST_LEN 4 | ||
175 | |||
168 | /** | 176 | /** |
169 | * struct ieee80211_bss_conf - holds the BSS's changing parameters | 177 | * struct ieee80211_bss_conf - holds the BSS's changing parameters |
170 | * | 178 | * |
@@ -200,6 +208,15 @@ enum ieee80211_bss_change { | |||
200 | * @cqm_rssi_thold: Connection quality monitor RSSI threshold, a zero value | 208 | * @cqm_rssi_thold: Connection quality monitor RSSI threshold, a zero value |
201 | * implies disabled | 209 | * implies disabled |
202 | * @cqm_rssi_hyst: Connection quality monitor RSSI hysteresis | 210 | * @cqm_rssi_hyst: Connection quality monitor RSSI hysteresis |
211 | * @arp_addr_list: List of IPv4 addresses for hardware ARP filtering. The | ||
212 | * may filter ARP queries targeted for other addresses than listed here. | ||
213 | * The driver must allow ARP queries targeted for all address listed here | ||
214 | * to pass through. An empty list implies no ARP queries need to pass. | ||
215 | * @arp_addr_cnt: Number of addresses currently on the list. | ||
216 | * @arp_filter_enabled: Enable ARP filtering - if enabled, the hardware may | ||
217 | * filter ARP queries based on the @arp_addr_list, if disabled, the | ||
218 | * hardware must not perform any ARP filtering. Note, that the filter will | ||
219 | * be enabled also in promiscuous mode. | ||
203 | */ | 220 | */ |
204 | struct ieee80211_bss_conf { | 221 | struct ieee80211_bss_conf { |
205 | const u8 *bssid; | 222 | const u8 *bssid; |
@@ -220,6 +237,9 @@ struct ieee80211_bss_conf { | |||
220 | s32 cqm_rssi_thold; | 237 | s32 cqm_rssi_thold; |
221 | u32 cqm_rssi_hyst; | 238 | u32 cqm_rssi_hyst; |
222 | enum nl80211_channel_type channel_type; | 239 | enum nl80211_channel_type channel_type; |
240 | __be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN]; | ||
241 | u8 arp_addr_cnt; | ||
242 | bool arp_filter_enabled; | ||
223 | }; | 243 | }; |
224 | 244 | ||
225 | /** | 245 | /** |
@@ -675,9 +695,6 @@ enum ieee80211_smps_mode { | |||
675 | * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the | 695 | * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the |
676 | * powersave documentation below. This variable is valid only when | 696 | * powersave documentation below. This variable is valid only when |
677 | * the CONF_PS flag is set. | 697 | * the CONF_PS flag is set. |
678 | * @dynamic_ps_forced_timeout: The dynamic powersave timeout (in ms) configured | ||
679 | * by cfg80211 (essentially, wext) If set, this value overrules the value | ||
680 | * chosen by mac80211 based on ps qos network latency. | ||
681 | * | 698 | * |
682 | * @power_level: requested transmit power (in dBm) | 699 | * @power_level: requested transmit power (in dBm) |
683 | * | 700 | * |
@@ -697,7 +714,7 @@ enum ieee80211_smps_mode { | |||
697 | */ | 714 | */ |
698 | struct ieee80211_conf { | 715 | struct ieee80211_conf { |
699 | u32 flags; | 716 | u32 flags; |
700 | int power_level, dynamic_ps_timeout, dynamic_ps_forced_timeout; | 717 | int power_level, dynamic_ps_timeout; |
701 | int max_sleep_period; | 718 | int max_sleep_period; |
702 | 719 | ||
703 | u16 listen_interval; | 720 | u16 listen_interval; |
@@ -1445,7 +1462,7 @@ enum ieee80211_filter_flags { | |||
1445 | * | 1462 | * |
1446 | * Note that drivers MUST be able to deal with a TX aggregation | 1463 | * Note that drivers MUST be able to deal with a TX aggregation |
1447 | * session being stopped even before they OK'ed starting it by | 1464 | * session being stopped even before they OK'ed starting it by |
1448 | * calling ieee80211_start_tx_ba_cb(_irqsafe), because the peer | 1465 | * calling ieee80211_start_tx_ba_cb_irqsafe, because the peer |
1449 | * might receive the addBA frame and send a delBA right away! | 1466 | * might receive the addBA frame and send a delBA right away! |
1450 | * | 1467 | * |
1451 | * @IEEE80211_AMPDU_RX_START: start Rx aggregation | 1468 | * @IEEE80211_AMPDU_RX_START: start Rx aggregation |
@@ -1529,16 +1546,6 @@ enum ieee80211_ampdu_mlme_action { | |||
1529 | * of the bss parameters has changed when a call is made. The callback | 1546 | * of the bss parameters has changed when a call is made. The callback |
1530 | * can sleep. | 1547 | * can sleep. |
1531 | * | 1548 | * |
1532 | * @configure_arp_filter: Configuration function for hardware ARP query filter. | ||
1533 | * This function is called with all the IP addresses configured to the | ||
1534 | * interface as argument - all ARP queries targeted to any of these | ||
1535 | * addresses must pass through. If the hardware filter does not support | ||
1536 | * enought addresses, hardware filtering must be disabled. The ifa_list | ||
1537 | * argument may be NULL, indicating that filtering must be disabled. | ||
1538 | * This function is called upon association complete with current | ||
1539 | * address(es), and while associated whenever the IP address(es) change. | ||
1540 | * The callback can sleep. | ||
1541 | * | ||
1542 | * @prepare_multicast: Prepare for multicast filter configuration. | 1549 | * @prepare_multicast: Prepare for multicast filter configuration. |
1543 | * This callback is optional, and its return value is passed | 1550 | * This callback is optional, and its return value is passed |
1544 | * to configure_filter(). This callback must be atomic. | 1551 | * to configure_filter(). This callback must be atomic. |
@@ -1640,7 +1647,7 @@ enum ieee80211_ampdu_mlme_action { | |||
1640 | * is the first frame we expect to perform the action on. Notice | 1647 | * is the first frame we expect to perform the action on. Notice |
1641 | * that TX/RX_STOP can pass NULL for this parameter. | 1648 | * that TX/RX_STOP can pass NULL for this parameter. |
1642 | * Returns a negative error code on failure. | 1649 | * Returns a negative error code on failure. |
1643 | * The callback must be atomic. | 1650 | * The callback can sleep. |
1644 | * | 1651 | * |
1645 | * @get_survey: Return per-channel survey information | 1652 | * @get_survey: Return per-channel survey information |
1646 | * | 1653 | * |
@@ -1678,9 +1685,6 @@ struct ieee80211_ops { | |||
1678 | struct ieee80211_vif *vif, | 1685 | struct ieee80211_vif *vif, |
1679 | struct ieee80211_bss_conf *info, | 1686 | struct ieee80211_bss_conf *info, |
1680 | u32 changed); | 1687 | u32 changed); |
1681 | int (*configure_arp_filter)(struct ieee80211_hw *hw, | ||
1682 | struct ieee80211_vif *vif, | ||
1683 | struct in_ifaddr *ifa_list); | ||
1684 | u64 (*prepare_multicast)(struct ieee80211_hw *hw, | 1688 | u64 (*prepare_multicast)(struct ieee80211_hw *hw, |
1685 | struct netdev_hw_addr_list *mc_list); | 1689 | struct netdev_hw_addr_list *mc_list); |
1686 | void (*configure_filter)(struct ieee80211_hw *hw, | 1690 | void (*configure_filter)(struct ieee80211_hw *hw, |
@@ -2314,25 +2318,14 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw, | |||
2314 | int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); | 2318 | int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); |
2315 | 2319 | ||
2316 | /** | 2320 | /** |
2317 | * ieee80211_start_tx_ba_cb - low level driver ready to aggregate. | ||
2318 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | ||
2319 | * @ra: receiver address of the BA session recipient. | ||
2320 | * @tid: the TID to BA on. | ||
2321 | * | ||
2322 | * This function must be called by low level driver once it has | ||
2323 | * finished with preparations for the BA session. | ||
2324 | */ | ||
2325 | void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid); | ||
2326 | |||
2327 | /** | ||
2328 | * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. | 2321 | * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. |
2329 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | 2322 | * @vif: &struct ieee80211_vif pointer from the add_interface callback |
2330 | * @ra: receiver address of the BA session recipient. | 2323 | * @ra: receiver address of the BA session recipient. |
2331 | * @tid: the TID to BA on. | 2324 | * @tid: the TID to BA on. |
2332 | * | 2325 | * |
2333 | * This function must be called by low level driver once it has | 2326 | * This function must be called by low level driver once it has |
2334 | * finished with preparations for the BA session. | 2327 | * finished with preparations for the BA session. It can be called |
2335 | * This version of the function is IRQ-safe. | 2328 | * from any context. |
2336 | */ | 2329 | */ |
2337 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, | 2330 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, |
2338 | u16 tid); | 2331 | u16 tid); |
@@ -2351,25 +2344,14 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, | |||
2351 | int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid); | 2344 | int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid); |
2352 | 2345 | ||
2353 | /** | 2346 | /** |
2354 | * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. | ||
2355 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | ||
2356 | * @ra: receiver address of the BA session recipient. | ||
2357 | * @tid: the desired TID to BA on. | ||
2358 | * | ||
2359 | * This function must be called by low level driver once it has | ||
2360 | * finished with preparations for the BA session tear down. | ||
2361 | */ | ||
2362 | void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid); | ||
2363 | |||
2364 | /** | ||
2365 | * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. | 2347 | * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. |
2366 | * @vif: &struct ieee80211_vif pointer from the add_interface callback | 2348 | * @vif: &struct ieee80211_vif pointer from the add_interface callback |
2367 | * @ra: receiver address of the BA session recipient. | 2349 | * @ra: receiver address of the BA session recipient. |
2368 | * @tid: the desired TID to BA on. | 2350 | * @tid: the desired TID to BA on. |
2369 | * | 2351 | * |
2370 | * This function must be called by low level driver once it has | 2352 | * This function must be called by low level driver once it has |
2371 | * finished with preparations for the BA session tear down. | 2353 | * finished with preparations for the BA session tear down. It |
2372 | * This version of the function is IRQ-safe. | 2354 | * can be called from any context. |
2373 | */ | 2355 | */ |
2374 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, | 2356 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, |
2375 | u16 tid); | 2357 | u16 tid); |