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 | |
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')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-3945.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 24 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 13 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_mac.c | 12 |
12 files changed, 57 insertions, 36 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c index a793cd11f738..77e7202c026b 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945.c | |||
@@ -520,10 +520,8 @@ static void iwl3945_rx_reply_rx(struct iwl3945_priv *priv, | |||
520 | break; | 520 | break; |
521 | 521 | ||
522 | /* | 522 | /* |
523 | * TODO: There is no callback function from upper | 523 | * TODO: Use the new callback function from |
524 | * stack to inform us when associated status. this | 524 | * mac80211 instead of sniffing these packets. |
525 | * work around to sniff assoc_resp management frame | ||
526 | * and finish the association process. | ||
527 | */ | 525 | */ |
528 | case IEEE80211_STYPE_ASSOC_RESP: | 526 | case IEEE80211_STYPE_ASSOC_RESP: |
529 | case IEEE80211_STYPE_REASSOC_RESP:{ | 527 | case IEEE80211_STYPE_REASSOC_RESP:{ |
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 89e2c44bfcca..ed3f119b56cd 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -4095,10 +4095,8 @@ static void iwl4965_rx_reply_rx(struct iwl4965_priv *priv, | |||
4095 | break; | 4095 | break; |
4096 | 4096 | ||
4097 | /* | 4097 | /* |
4098 | * TODO: There is no callback function from upper | 4098 | * TODO: Use the new callback function from |
4099 | * stack to inform us when associated status. this | 4099 | * mac80211 instead of sniffing these packets. |
4100 | * work around to sniff assoc_resp management frame | ||
4101 | * and finish the association process. | ||
4102 | */ | 4100 | */ |
4103 | case IEEE80211_STYPE_ASSOC_RESP: | 4101 | case IEEE80211_STYPE_ASSOC_RESP: |
4104 | case IEEE80211_STYPE_REASSOC_RESP: | 4102 | case IEEE80211_STYPE_REASSOC_RESP: |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index 92bb7e13a1f0..2597c08a2395 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -7764,25 +7764,35 @@ static void iwl4965_mac_remove_interface(struct ieee80211_hw *hw, | |||
7764 | IWL_DEBUG_MAC80211("leave\n"); | 7764 | IWL_DEBUG_MAC80211("leave\n"); |
7765 | 7765 | ||
7766 | } | 7766 | } |
7767 | static void iwl4965_mac_erp_ie_changed(struct ieee80211_hw *hw, | 7767 | |
7768 | u8 changes, int cts_protection, int preamble) | 7768 | static void iwl4965_bss_info_changed(struct ieee80211_hw *hw, |
7769 | struct ieee80211_vif *vif, | ||
7770 | struct ieee80211_bss_conf *bss_conf, | ||
7771 | u32 changes) | ||
7769 | { | 7772 | { |
7770 | struct iwl4965_priv *priv = hw->priv; | 7773 | struct iwl4965_priv *priv = hw->priv; |
7771 | 7774 | ||
7772 | if (changes & IEEE80211_ERP_CHANGE_PREAMBLE) { | 7775 | if (changes & BSS_CHANGED_ERP_PREAMBLE) { |
7773 | if (preamble == WLAN_ERP_PREAMBLE_SHORT) | 7776 | if (bss_conf->use_short_preamble) |
7774 | priv->staging_rxon.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; | 7777 | priv->staging_rxon.flags |= RXON_FLG_SHORT_PREAMBLE_MSK; |
7775 | else | 7778 | else |
7776 | priv->staging_rxon.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; | 7779 | priv->staging_rxon.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK; |
7777 | } | 7780 | } |
7778 | 7781 | ||
7779 | if (changes & IEEE80211_ERP_CHANGE_PROTECTION) { | 7782 | if (changes & BSS_CHANGED_ERP_CTS_PROT) { |
7780 | if (cts_protection && (priv->phymode != MODE_IEEE80211A)) | 7783 | if (bss_conf->use_cts_prot && (priv->phymode != MODE_IEEE80211A)) |
7781 | priv->staging_rxon.flags |= RXON_FLG_TGG_PROTECT_MSK; | 7784 | priv->staging_rxon.flags |= RXON_FLG_TGG_PROTECT_MSK; |
7782 | else | 7785 | else |
7783 | priv->staging_rxon.flags &= ~RXON_FLG_TGG_PROTECT_MSK; | 7786 | priv->staging_rxon.flags &= ~RXON_FLG_TGG_PROTECT_MSK; |
7784 | } | 7787 | } |
7785 | 7788 | ||
7789 | if (changes & BSS_CHANGED_ASSOC) { | ||
7790 | /* | ||
7791 | * TODO: | ||
7792 | * do stuff instead of sniffing assoc resp | ||
7793 | */ | ||
7794 | } | ||
7795 | |||
7786 | if (iwl4965_is_associated(priv)) | 7796 | if (iwl4965_is_associated(priv)) |
7787 | iwl4965_send_rxon_assoc(priv); | 7797 | iwl4965_send_rxon_assoc(priv); |
7788 | } | 7798 | } |
@@ -8952,7 +8962,7 @@ static struct ieee80211_ops iwl4965_hw_ops = { | |||
8952 | .get_tsf = iwl4965_mac_get_tsf, | 8962 | .get_tsf = iwl4965_mac_get_tsf, |
8953 | .reset_tsf = iwl4965_mac_reset_tsf, | 8963 | .reset_tsf = iwl4965_mac_reset_tsf, |
8954 | .beacon_update = iwl4965_mac_beacon_update, | 8964 | .beacon_update = iwl4965_mac_beacon_update, |
8955 | .erp_ie_changed = iwl4965_mac_erp_ie_changed, | 8965 | .bss_info_changed = iwl4965_bss_info_changed, |
8956 | #ifdef CONFIG_IWL4965_HT | 8966 | #ifdef CONFIG_IWL4965_HT |
8957 | .conf_ht = iwl4965_mac_conf_ht, | 8967 | .conf_ht = iwl4965_mac_conf_ht, |
8958 | .ampdu_action = iwl4965_mac_ampdu_action, | 8968 | .ampdu_action = iwl4965_mac_ampdu_action, |
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); |
937 | int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw, | 937 | int rt2x00mac_get_tx_stats(struct ieee80211_hw *hw, |
938 | struct ieee80211_tx_queue_stats *stats); | 938 | struct ieee80211_tx_queue_stats *stats); |
939 | void rt2x00mac_erp_ie_changed(struct ieee80211_hw *hw, u8 changes, | 939 | void 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); | ||
941 | int rt2x00mac_conf_tx(struct ieee80211_hw *hw, int queue, | 943 | int 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 | } |
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) |
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, |
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index 3409cf97f5f8..49127e4b42c2 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -849,17 +849,19 @@ static void set_rts_cts_work(struct work_struct *work) | |||
849 | mutex_unlock(&mac->chip.mutex); | 849 | mutex_unlock(&mac->chip.mutex); |
850 | } | 850 | } |
851 | 851 | ||
852 | static void zd_op_erp_ie_changed(struct ieee80211_hw *hw, u8 changes, | 852 | static void zd_op_bss_info_changed(struct ieee80211_hw *hw, |
853 | int cts_protection, int preamble) | 853 | struct ieee80211_vif *vif, |
854 | struct ieee80211_bss_conf *bss_conf, | ||
855 | u32 changes) | ||
854 | { | 856 | { |
855 | struct zd_mac *mac = zd_hw_mac(hw); | 857 | struct zd_mac *mac = zd_hw_mac(hw); |
856 | unsigned long flags; | 858 | unsigned long flags; |
857 | 859 | ||
858 | dev_dbg_f(zd_mac_dev(mac), "changes: %x\n", changes); | 860 | dev_dbg_f(zd_mac_dev(mac), "changes: %x\n", changes); |
859 | 861 | ||
860 | if (changes & IEEE80211_ERP_CHANGE_PREAMBLE) { | 862 | if (changes & BSS_CHANGED_ERP_PREAMBLE) { |
861 | spin_lock_irqsave(&mac->lock, flags); | 863 | spin_lock_irqsave(&mac->lock, flags); |
862 | mac->short_preamble = !preamble; | 864 | mac->short_preamble = bss_conf->use_short_preamble; |
863 | if (!mac->updating_rts_rate) { | 865 | if (!mac->updating_rts_rate) { |
864 | mac->updating_rts_rate = 1; | 866 | mac->updating_rts_rate = 1; |
865 | /* FIXME: should disable TX here, until work has | 867 | /* FIXME: should disable TX here, until work has |
@@ -879,7 +881,7 @@ static const struct ieee80211_ops zd_ops = { | |||
879 | .config = zd_op_config, | 881 | .config = zd_op_config, |
880 | .config_interface = zd_op_config_interface, | 882 | .config_interface = zd_op_config_interface, |
881 | .configure_filter = zd_op_configure_filter, | 883 | .configure_filter = zd_op_configure_filter, |
882 | .erp_ie_changed = zd_op_erp_ie_changed, | 884 | .bss_info_changed = zd_op_bss_info_changed, |
883 | }; | 885 | }; |
884 | 886 | ||
885 | struct ieee80211_hw *zd_mac_alloc_hw(struct usb_interface *intf) | 887 | struct ieee80211_hw *zd_mac_alloc_hw(struct usb_interface *intf) |