aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-06-17 17:19:06 -0400
committerDavid S. Miller <davem@davemloft.net>2010-06-17 17:19:06 -0400
commitbb9c03d8a6893517737b16fdbeb54be3c73b3023 (patch)
tree35fa0d1defaaf94641963a49126d7bb475ffa4c6 /include
parent4de57826810fd2cfeb2ab5c7d003ff9116b8f7ee (diff)
parentabf52f86aa0a49a7377350cafa8f218c4cd227e7 (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.h2
-rw-r--r--include/net/mac80211.h74
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 */
814struct cfg80211_ibss_params { 815struct 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 */
151enum ieee80211_bss_change { 151enum 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 */
204struct ieee80211_bss_conf { 221struct 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 */
698struct ieee80211_conf { 715struct 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,
2314int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid); 2318int 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 */
2325void 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 */
2337void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, 2330void 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,
2351int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid); 2344int 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 */
2362void 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 */
2374void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra, 2356void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
2375 u16 tid); 2357 u16 tid);