diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-12-28 08:32:58 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:09:43 -0500 |
commit | 471b3efdfccc257591331724145f8ccf8b3217e1 (patch) | |
tree | c9e576442c7b62c8c667ae1046e560323f0821fd /drivers/net/wireless/rt2x00/rt2x00mac.c | |
parent | 2bc454b0b30b3645d114689b64321cb49be99923 (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/rt2x00mac.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 16 |
1 files changed, 10 insertions, 6 deletions
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 | } |
343 | EXPORT_SYMBOL_GPL(rt2x00mac_get_tx_stats); | 343 | EXPORT_SYMBOL_GPL(rt2x00mac_get_tx_stats); |
344 | 344 | ||
345 | void rt2x00mac_erp_ie_changed(struct ieee80211_hw *hw, u8 changes, | 345 | void 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 | } |
377 | EXPORT_SYMBOL_GPL(rt2x00mac_erp_ie_changed); | 381 | EXPORT_SYMBOL_GPL(rt2x00mac_bss_info_changed); |
378 | 382 | ||
379 | int rt2x00mac_conf_tx(struct ieee80211_hw *hw, int queue, | 383 | int 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) |