aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-12-28 08:32:58 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:09:43 -0500
commit471b3efdfccc257591331724145f8ccf8b3217e1 (patch)
treec9e576442c7b62c8c667ae1046e560323f0821fd /drivers/net/wireless/rt2x00
parent2bc454b0b30b3645d114689b64321cb49be99923 (diff)
mac80211: add unified BSS configuration
This patch (based on Ron Rindjunsky's) creates a framework for a unified way to pass BSS configuration to drivers that require the information, e.g. for implementing power save mode. This patch introduces new ieee80211_bss_conf structure that is passed to the driver via the new bss_info_changed() callback when the BSS configuration changes. This new BSS configuration infrastructure adds the following new features: * drivers are notified of their association AID * drivers are notified of association status and replaces the erp_ie_changed() callback. The patch also does the relevant driver updates for the latter change. Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h6
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c13
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c16
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c2
8 files changed, 29 insertions, 16 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
index f4d0c779ac78..d6cba138c7ab 100644
--- a/drivers/net/wireless/rt2x00/rt2400pci.c
+++ b/drivers/net/wireless/rt2x00/rt2400pci.c
@@ -1524,7 +1524,7 @@ static const struct ieee80211_ops rt2400pci_mac80211_ops = {
1524 .configure_filter = rt2400pci_configure_filter, 1524 .configure_filter = rt2400pci_configure_filter,
1525 .get_stats = rt2x00mac_get_stats, 1525 .get_stats = rt2x00mac_get_stats,
1526 .set_retry_limit = rt2400pci_set_retry_limit, 1526 .set_retry_limit = rt2400pci_set_retry_limit,
1527 .erp_ie_changed = rt2x00mac_erp_ie_changed, 1527 .bss_info_changed = rt2x00mac_bss_info_changed,
1528 .conf_tx = rt2400pci_conf_tx, 1528 .conf_tx = rt2400pci_conf_tx,
1529 .get_tx_stats = rt2x00mac_get_tx_stats, 1529 .get_tx_stats = rt2x00mac_get_tx_stats,
1530 .get_tsf = rt2400pci_get_tsf, 1530 .get_tsf = rt2400pci_get_tsf,
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
index 206b50ff831f..e874fdcae204 100644
--- a/drivers/net/wireless/rt2x00/rt2500pci.c
+++ b/drivers/net/wireless/rt2x00/rt2500pci.c
@@ -1835,7 +1835,7 @@ static const struct ieee80211_ops rt2500pci_mac80211_ops = {
1835 .configure_filter = rt2500pci_configure_filter, 1835 .configure_filter = rt2500pci_configure_filter,
1836 .get_stats = rt2x00mac_get_stats, 1836 .get_stats = rt2x00mac_get_stats,
1837 .set_retry_limit = rt2500pci_set_retry_limit, 1837 .set_retry_limit = rt2500pci_set_retry_limit,
1838 .erp_ie_changed = rt2x00mac_erp_ie_changed, 1838 .bss_info_changed = rt2x00mac_bss_info_changed,
1839 .conf_tx = rt2x00mac_conf_tx, 1839 .conf_tx = rt2x00mac_conf_tx,
1840 .get_tx_stats = rt2x00mac_get_tx_stats, 1840 .get_tx_stats = rt2x00mac_get_tx_stats,
1841 .get_tsf = rt2500pci_get_tsf, 1841 .get_tsf = rt2500pci_get_tsf,
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
index 6579718f36ad..1933113d7baf 100644
--- a/drivers/net/wireless/rt2x00/rt2500usb.c
+++ b/drivers/net/wireless/rt2x00/rt2500usb.c
@@ -1776,7 +1776,7 @@ static const struct ieee80211_ops rt2500usb_mac80211_ops = {
1776 .config_interface = rt2x00mac_config_interface, 1776 .config_interface = rt2x00mac_config_interface,
1777 .configure_filter = rt2500usb_configure_filter, 1777 .configure_filter = rt2500usb_configure_filter,
1778 .get_stats = rt2x00mac_get_stats, 1778 .get_stats = rt2x00mac_get_stats,
1779 .erp_ie_changed = rt2x00mac_erp_ie_changed, 1779 .bss_info_changed = rt2x00mac_bss_info_changed,
1780 .conf_tx = rt2x00mac_conf_tx, 1780 .conf_tx = rt2x00mac_conf_tx,
1781 .get_tx_stats = rt2x00mac_get_tx_stats, 1781 .get_tx_stats = rt2x00mac_get_tx_stats,
1782 .beacon_update = rt2500usb_beacon_update, 1782 .beacon_update = rt2500usb_beacon_update,
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 94a8a7ce5382..05927b908f80 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -936,8 +936,10 @@ int rt2x00mac_get_stats(struct ieee80211_hw *hw,
936 struct ieee80211_low_level_stats *stats); 936 struct ieee80211_low_level_stats *stats);
937int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw, 937int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw,
938 struct ieee80211_tx_queue_stats *stats); 938 struct ieee80211_tx_queue_stats *stats);
939void rt2x00mac_erp_ie_changed(struct ieee80211_hw *hw, u8 changes, 939void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
940 int cts_protection, int preamble); 940 struct ieee80211_vif *vif,
941 struct ieee80211_bss_conf *bss_conf,
942 u32 changes);
941int rt2x00mac_conf_tx(struct ieee80211_hw *hw, int queue, 943int rt2x00mac_conf_tx(struct ieee80211_hw *hw, int queue,
942 const struct ieee80211_tx_queue_params *params); 944 const struct ieee80211_tx_queue_params *params);
943 945
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index b26c634f210b..72cfe6f866f8 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -481,10 +481,17 @@ static void rt2x00lib_configuration_scheduled(struct work_struct *work)
481{ 481{
482 struct rt2x00_dev *rt2x00dev = 482 struct rt2x00_dev *rt2x00dev =
483 container_of(work, struct rt2x00_dev, config_work); 483 container_of(work, struct rt2x00_dev, config_work);
484 int preamble = !test_bit(CONFIG_SHORT_PREAMBLE, &rt2x00dev->flags); 484 struct ieee80211_bss_conf bss_conf;
485 485
486 rt2x00mac_erp_ie_changed(rt2x00dev->hw, 486 bss_conf.use_short_preamble =
487 IEEE80211_ERP_CHANGE_PREAMBLE, 0, preamble); 487 test_bit(CONFIG_SHORT_PREAMBLE, &rt2x00dev->flags);
488
489 /*
490 * FIXME: shouldn't invoke it this way because all other contents
491 * of bss_conf is invalid.
492 */
493 rt2x00mac_bss_info_changed(rt2x00dev->hw, rt2x00dev->interface.id,
494 &bss_conf, BSS_CHANGED_ERP_PREAMBLE);
488} 495}
489 496
490/* 497/*
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index 1d67bcd46bcb..e3f15e518c76 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -342,23 +342,27 @@ int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw,
342} 342}
343EXPORT_SYMBOL_GPL(rt2x00mac_get_tx_stats); 343EXPORT_SYMBOL_GPL(rt2x00mac_get_tx_stats);
344 344
345void rt2x00mac_erp_ie_changed(struct ieee80211_hw *hw, u8 changes, 345void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
346 int cts_protection, int preamble) 346 struct ieee80211_vif *vif,
347 struct ieee80211_bss_conf *bss_conf,
348 u32 changes)
347{ 349{
348 struct rt2x00_dev *rt2x00dev = hw->priv; 350 struct rt2x00_dev *rt2x00dev = hw->priv;
349 int short_preamble; 351 int short_preamble;
350 int ack_timeout; 352 int ack_timeout;
351 int ack_consume_time; 353 int ack_consume_time;
352 int difs; 354 int difs;
355 int preamble;
353 356
354 /* 357 /*
355 * We only support changing preamble mode. 358 * We only support changing preamble mode.
356 */ 359 */
357 if (!(changes & IEEE80211_ERP_CHANGE_PREAMBLE)) 360 if (!(changes & BSS_CHANGED_ERP_PREAMBLE))
358 return; 361 return;
359 362
360 short_preamble = !preamble; 363 short_preamble = bss_conf->use_short_preamble;
361 preamble = !!(preamble) ? PREAMBLE : SHORT_PREAMBLE; 364 preamble = bss_conf->use_short_preamble ?
365 SHORT_PREAMBLE : PREAMBLE;
362 366
363 difs = (hw->conf.flags & IEEE80211_CONF_SHORT_SLOT_TIME) ? 367 difs = (hw->conf.flags & IEEE80211_CONF_SHORT_SLOT_TIME) ?
364 SHORT_DIFS : DIFS; 368 SHORT_DIFS : DIFS;
@@ -374,7 +378,7 @@ void rt2x00mac_erp_ie_changed(struct ieee80211_hw *hw, u8 changes,
374 rt2x00dev->ops->lib->config_preamble(rt2x00dev, short_preamble, 378 rt2x00dev->ops->lib->config_preamble(rt2x00dev, short_preamble,
375 ack_timeout, ack_consume_time); 379 ack_timeout, ack_consume_time);
376} 380}
377EXPORT_SYMBOL_GPL(rt2x00mac_erp_ie_changed); 381EXPORT_SYMBOL_GPL(rt2x00mac_bss_info_changed);
378 382
379int rt2x00mac_conf_tx(struct ieee80211_hw *hw, int queue, 383int rt2x00mac_conf_tx(struct ieee80211_hw *hw, int queue,
380 const struct ieee80211_tx_queue_params *params) 384 const struct ieee80211_tx_queue_params *params)
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index 88d169800886..ab52f221cd71 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2441,7 +2441,7 @@ static const struct ieee80211_ops rt61pci_mac80211_ops = {
2441 .configure_filter = rt61pci_configure_filter, 2441 .configure_filter = rt61pci_configure_filter,
2442 .get_stats = rt2x00mac_get_stats, 2442 .get_stats = rt2x00mac_get_stats,
2443 .set_retry_limit = rt61pci_set_retry_limit, 2443 .set_retry_limit = rt61pci_set_retry_limit,
2444 .erp_ie_changed = rt2x00mac_erp_ie_changed, 2444 .bss_info_changed = rt2x00mac_bss_info_changed,
2445 .conf_tx = rt2x00mac_conf_tx, 2445 .conf_tx = rt2x00mac_conf_tx,
2446 .get_tx_stats = rt2x00mac_get_tx_stats, 2446 .get_tx_stats = rt2x00mac_get_tx_stats,
2447 .get_tsf = rt61pci_get_tsf, 2447 .get_tsf = rt61pci_get_tsf,
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 47ed3070ae0b..f9518764aeb0 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -2024,7 +2024,7 @@ static const struct ieee80211_ops rt73usb_mac80211_ops = {
2024 .configure_filter = rt73usb_configure_filter, 2024 .configure_filter = rt73usb_configure_filter,
2025 .get_stats = rt2x00mac_get_stats, 2025 .get_stats = rt2x00mac_get_stats,
2026 .set_retry_limit = rt73usb_set_retry_limit, 2026 .set_retry_limit = rt73usb_set_retry_limit,
2027 .erp_ie_changed = rt2x00mac_erp_ie_changed, 2027 .bss_info_changed = rt2x00mac_bss_info_changed,
2028 .conf_tx = rt2x00mac_conf_tx, 2028 .conf_tx = rt2x00mac_conf_tx,
2029 .get_tx_stats = rt2x00mac_get_tx_stats, 2029 .get_tx_stats = rt2x00mac_get_tx_stats,
2030 .get_tsf = rt73usb_get_tsf, 2030 .get_tsf = rt73usb_get_tsf,