diff options
Diffstat (limited to 'package/mac80211/patches/420-mac80211-hw-conf-change-flags.patch')
-rw-r--r-- | package/mac80211/patches/420-mac80211-hw-conf-change-flags.patch | 616 |
1 files changed, 0 insertions, 616 deletions
diff --git a/package/mac80211/patches/420-mac80211-hw-conf-change-flags.patch b/package/mac80211/patches/420-mac80211-hw-conf-change-flags.patch deleted file mode 100644 index 4bae8cbb59..0000000000 --- a/package/mac80211/patches/420-mac80211-hw-conf-change-flags.patch +++ /dev/null @@ -1,616 +0,0 @@ -Subject: mac80211: introduce hw config change flags - -This makes mac80211 notify the driver which configuration -actually changed, e.g. channel etc. - -No driver changes, this is just plumbing, driver authors are -expected to act on this if they want to. - -Also remove the HW CONFIG debug printk, it's incorrect, often -we configure something else. - -Signed-off-by: Johannes Berg <johannes@sipsolutions.net> ---- - drivers/net/wireless/adm8211.c | 3 +- - drivers/net/wireless/at76_usb.c | 3 +- - drivers/net/wireless/ath5k/base.c | 7 ++---- - drivers/net/wireless/ath9k/main.c | 4 +-- - drivers/net/wireless/b43/main.c | 3 +- - drivers/net/wireless/b43legacy/main.c | 3 +- - drivers/net/wireless/iwlwifi/iwl-agn.c | 3 +- - drivers/net/wireless/iwlwifi/iwl3945-base.c | 7 +++--- - drivers/net/wireless/libertas_tf/main.c | 4 ++- - drivers/net/wireless/mac80211_hwsim.c | 4 +-- - drivers/net/wireless/p54/p54common.c | 3 +- - drivers/net/wireless/rt2x00/rt2x00.h | 2 - - drivers/net/wireless/rt2x00/rt2x00dev.c | 2 - - drivers/net/wireless/rt2x00/rt2x00mac.c | 3 +- - drivers/net/wireless/rtl8180_dev.c | 3 +- - drivers/net/wireless/rtl8187_dev.c | 3 +- - drivers/net/wireless/zd1211rw/zd_mac.c | 4 ++- - include/net/mac80211.h | 30 +++++++++++++++++++++++----- - net/mac80211/cfg.c | 3 +- - net/mac80211/ieee80211_i.h | 2 - - net/mac80211/iface.c | 25 +++++++++++++++++------ - net/mac80211/main.c | 29 ++++++++++++++------------- - net/mac80211/scan.c | 12 ++++++++--- - net/mac80211/util.c | 3 +- - net/mac80211/wext.c | 14 ++++++------- - 25 files changed, 118 insertions(+), 61 deletions(-) - ---- a/include/net/mac80211.h -+++ b/include/net/mac80211.h -@@ -464,12 +464,32 @@ static inline int __deprecated __IEEE802 - #define IEEE80211_CONF_SHORT_SLOT_TIME (__IEEE80211_CONF_SHORT_SLOT_TIME()) - - /** -+ * enum ieee80211_conf_changed - denotes which configuration changed -+ * -+ * @IEEE80211_CONF_CHANGE_RADIO_ENABLED: the value of radio_enabled changed -+ * @IEEE80211_CONF_CHANGE_BEACON_INTERVAL: the beacon interval changed -+ * @IEEE80211_CONF_CHANGE_LISTEN_INTERVAL: the listen interval changed -+ * @IEEE80211_CONF_CHANGE_RADIOTAP: the radiotap flag changed -+ * @IEEE80211_CONF_CHANGE_PS: the PS flag changed -+ * @IEEE80211_CONF_CHANGE_POWER: the TX power changed -+ * @IEEE80211_CONF_CHANGE_CHANNEL: the channel changed -+ */ -+enum ieee80211_conf_changed { -+ IEEE80211_CONF_CHANGE_RADIO_ENABLED = BIT(0), -+ IEEE80211_CONF_CHANGE_BEACON_INTERVAL = BIT(1), -+ IEEE80211_CONF_CHANGE_LISTEN_INTERVAL = BIT(2), -+ IEEE80211_CONF_CHANGE_RADIOTAP = BIT(3), -+ IEEE80211_CONF_CHANGE_PS = BIT(4), -+ IEEE80211_CONF_CHANGE_POWER = BIT(5), -+ IEEE80211_CONF_CHANGE_CHANNEL = BIT(6), -+}; -+ -+/** - * struct ieee80211_conf - configuration of the device - * - * This struct indicates how the driver shall configure the hardware. - * - * @radio_enabled: when zero, driver is required to switch off the radio. -- * TODO make a flag - * @beacon_int: beacon interval (TODO make interface config) - * @listen_interval: listen interval in units of beacon interval - * @flags: configuration flags defined above -@@ -479,13 +499,13 @@ static inline int __deprecated __IEEE802 - * @channel: the channel to tune to - */ - struct ieee80211_conf { -- int radio_enabled; -- - int beacon_int; -- u16 listen_interval; - u32 flags; - int power_level; - -+ u16 listen_interval; -+ bool radio_enabled; -+ - struct ieee80211_channel *channel; - - struct ieee80211_sta_ht_cap ht_cap; -@@ -1213,7 +1233,7 @@ struct ieee80211_ops { - struct ieee80211_if_init_conf *conf); - void (*remove_interface)(struct ieee80211_hw *hw, - struct ieee80211_if_init_conf *conf); -- int (*config)(struct ieee80211_hw *hw, struct ieee80211_conf *conf); -+ int (*config)(struct ieee80211_hw *hw, u32 changed); - int (*config_interface)(struct ieee80211_hw *hw, - struct ieee80211_vif *vif, - struct ieee80211_if_conf *conf); ---- a/net/mac80211/cfg.c -+++ b/net/mac80211/cfg.c -@@ -394,7 +394,8 @@ static int ieee80211_config_beacon(struc - */ - if (params->interval) { - sdata->local->hw.conf.beacon_int = params->interval; -- ieee80211_hw_config(sdata->local); -+ ieee80211_hw_config(sdata->local, -+ IEEE80211_CONF_CHANGE_BEACON_INTERVAL); - /* - * We updated some parameter so if below bails out - * it's not an error. ---- a/net/mac80211/ieee80211_i.h -+++ b/net/mac80211/ieee80211_i.h -@@ -880,7 +880,7 @@ static inline int ieee80211_bssid_match( - } - - --int ieee80211_hw_config(struct ieee80211_local *local); -+int ieee80211_hw_config(struct ieee80211_local *local, u32 changed); - int ieee80211_if_config(struct ieee80211_sub_if_data *sdata, u32 changed); - void ieee80211_tx_set_protected(struct ieee80211_tx_data *tx); - void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata, ---- a/net/mac80211/iface.c -+++ b/net/mac80211/iface.c -@@ -65,7 +65,7 @@ static int ieee80211_open(struct net_dev - struct ieee80211_if_init_conf conf; - u32 changed = 0; - int res; -- bool need_hw_reconfig = 0; -+ u32 hw_reconf_flags = 0; - u8 null_addr[ETH_ALEN] = {0}; - - /* fail early if user set an invalid address */ -@@ -152,7 +152,8 @@ static int ieee80211_open(struct net_dev - res = local->ops->start(local_to_hw(local)); - if (res) - goto err_del_bss; -- need_hw_reconfig = 1; -+ /* we're brought up, everything changes */ -+ hw_reconf_flags = ~0; - ieee80211_led_radio(local, local->hw.conf.radio_enabled); - } - -@@ -198,8 +199,10 @@ static int ieee80211_open(struct net_dev - - /* must be before the call to ieee80211_configure_filter */ - local->monitors++; -- if (local->monitors == 1) -+ if (local->monitors == 1) { - local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP; -+ hw_reconf_flags |= IEEE80211_CONF_CHANGE_RADIOTAP; -+ } - - if (sdata->u.mntr_flags & MONITOR_FLAG_FCSFAIL) - local->fif_fcsfail++; -@@ -279,8 +282,8 @@ static int ieee80211_open(struct net_dev - atomic_inc(&local->iff_promiscs); - - local->open_count++; -- if (need_hw_reconfig) { -- ieee80211_hw_config(local); -+ if (hw_reconf_flags) { -+ ieee80211_hw_config(local, hw_reconf_flags); - /* - * set default queue parameters so drivers don't - * need to initialise the hardware if the hardware -@@ -322,6 +325,7 @@ static int ieee80211_stop(struct net_dev - struct ieee80211_local *local = sdata->local; - struct ieee80211_if_init_conf conf; - struct sta_info *sta; -+ u32 hw_reconf_flags = 0; - - /* - * Stop TX on this interface first. -@@ -405,8 +409,10 @@ static int ieee80211_stop(struct net_dev - } - - local->monitors--; -- if (local->monitors == 0) -+ if (local->monitors == 0) { - local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP; -+ hw_reconf_flags |= IEEE80211_CONF_CHANGE_RADIOTAP; -+ } - - if (sdata->u.mntr_flags & MONITOR_FLAG_FCSFAIL) - local->fif_fcsfail--; -@@ -504,8 +510,15 @@ static int ieee80211_stop(struct net_dev - - tasklet_disable(&local->tx_pending_tasklet); - tasklet_disable(&local->tasklet); -+ -+ /* no reconfiguring after stop! */ -+ hw_reconf_flags = 0; - } - -+ /* do after stop to avoid reconfiguring when we stop anyway */ -+ if (hw_reconf_flags) -+ ieee80211_hw_config(local, hw_reconf_flags); -+ - return 0; - } - ---- a/net/mac80211/main.c -+++ b/net/mac80211/main.c -@@ -197,31 +197,34 @@ int ieee80211_if_config(struct ieee80211 - &sdata->vif, &conf); - } - --int ieee80211_hw_config(struct ieee80211_local *local) -+int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) - { - struct ieee80211_channel *chan; - int ret = 0; -+ int power; - - if (local->sw_scanning) - chan = local->scan_channel; - else - chan = local->oper_channel; - -- local->hw.conf.channel = chan; -+ if (chan != local->hw.conf.channel) { -+ local->hw.conf.channel = chan; -+ changed |= IEEE80211_CONF_CHANGE_CHANNEL; -+ } -+ - - if (!local->hw.conf.power_level) -- local->hw.conf.power_level = chan->max_power; -+ power = chan->max_power; - else -- local->hw.conf.power_level = min(chan->max_power, -- local->hw.conf.power_level); -- --#ifdef CONFIG_MAC80211_VERBOSE_DEBUG -- printk(KERN_DEBUG "%s: HW CONFIG: freq=%d\n", -- wiphy_name(local->hw.wiphy), chan->center_freq); --#endif -+ power = min(chan->max_power, local->hw.conf.power_level); -+ if (local->hw.conf.power_level != power) { -+ changed |= IEEE80211_CONF_CHANGE_POWER; -+ local->hw.conf.power_level = power; -+ } - -- if (local->open_count) { -- ret = local->ops->config(local_to_hw(local), &local->hw.conf); -+ if (changed && local->open_count) { -+ ret = local->ops->config(local_to_hw(local), changed); - /* - * HW reconfiguration should never fail, the driver has told - * us what it can support so it should live up to that promise. -@@ -672,7 +675,7 @@ struct ieee80211_hw *ieee80211_alloc_hw( - local->fragmentation_threshold = IEEE80211_MAX_FRAG_THRESHOLD; - local->short_retry_limit = 7; - local->long_retry_limit = 4; -- local->hw.conf.radio_enabled = 1; -+ local->hw.conf.radio_enabled = true; - - INIT_LIST_HEAD(&local->interfaces); - ---- a/net/mac80211/scan.c -+++ b/net/mac80211/scan.c -@@ -447,12 +447,17 @@ void ieee80211_scan_completed(struct iee - - if (local->hw_scanning) { - local->hw_scanning = false; -- ieee80211_hw_config(local); -+ /* -+ * Somebody might have requested channel change during scan -+ * that we won't have acted upon, try now. ieee80211_hw_config -+ * will set the flag based on actual changes. -+ */ -+ ieee80211_hw_config(local, 0); - goto done; - } - - local->sw_scanning = false; -- ieee80211_hw_config(local); -+ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); - - netif_tx_lock_bh(local->mdev); - netif_addr_lock(local->mdev); -@@ -539,7 +544,8 @@ void ieee80211_scan_work(struct work_str - - if (!skip) { - local->scan_channel = chan; -- if (ieee80211_hw_config(local)) -+ if (ieee80211_hw_config(local, -+ IEEE80211_CONF_CHANGE_CHANNEL)) - skip = 1; - } - ---- a/net/mac80211/util.c -+++ b/net/mac80211/util.c -@@ -645,7 +645,8 @@ int ieee80211_set_freq(struct ieee80211_ - if (local->sw_scanning || local->hw_scanning) - ret = 0; - else -- ret = ieee80211_hw_config(local); -+ ret = ieee80211_hw_config( -+ local, IEEE80211_CONF_CHANGE_CHANNEL); - - rate_control_clear(local); - } ---- a/net/mac80211/wext.c -+++ b/net/mac80211/wext.c -@@ -656,7 +656,7 @@ static int ieee80211_ioctl_siwtxpower(st - union iwreq_data *data, char *extra) - { - struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); -- bool need_reconfig = 0; -+ u32 reconf_flags = 0; - int new_power_level; - - if ((data->txpower.flags & IW_TXPOW_TYPE) != IW_TXPOW_DBM) -@@ -680,17 +680,17 @@ static int ieee80211_ioctl_siwtxpower(st - - if (local->hw.conf.power_level != new_power_level) { - local->hw.conf.power_level = new_power_level; -- need_reconfig = 1; -+ reconf_flags |= IEEE80211_CONF_CHANGE_POWER; - } - - if (local->hw.conf.radio_enabled != !(data->txpower.disabled)) { - local->hw.conf.radio_enabled = !(data->txpower.disabled); -- need_reconfig = 1; -+ reconf_flags |= IEEE80211_CONF_CHANGE_RADIO_ENABLED; - ieee80211_led_radio(local, local->hw.conf.radio_enabled); - } - -- if (need_reconfig) -- ieee80211_hw_config(local); -+ if (reconf_flags) -+ ieee80211_hw_config(local, reconf_flags); - - return 0; - } -@@ -976,7 +976,7 @@ static int ieee80211_ioctl_siwpower(stru - - if (wrq->disabled) { - conf->flags &= ~IEEE80211_CONF_PS; -- return ieee80211_hw_config(local); -+ return ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); - } - - switch (wrq->flags & IW_POWER_MODE) { -@@ -989,7 +989,7 @@ static int ieee80211_ioctl_siwpower(stru - return -EINVAL; - } - -- return ieee80211_hw_config(local); -+ return ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); - } - - static int ieee80211_ioctl_giwpower(struct net_device *dev, ---- a/drivers/net/wireless/adm8211.c -+++ b/drivers/net/wireless/adm8211.c -@@ -1314,9 +1314,10 @@ static int adm8211_set_ssid(struct ieee8 - return 0; - } - --static int adm8211_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) -+static int adm8211_config(struct ieee80211_hw *dev, u32 changed) - { - struct adm8211_priv *priv = dev->priv; -+ struct ieee80211_conf *conf = &dev->conf; - int channel = ieee80211_frequency_to_channel(conf->channel->center_freq); - - if (channel != priv->channel) { ---- a/drivers/net/wireless/at76_usb.c -+++ b/drivers/net/wireless/at76_usb.c -@@ -2057,9 +2057,10 @@ exit: - return 0; - } - --static int at76_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+static int at76_config(struct ieee80211_hw *hw, u32 changed) - { - struct at76_priv *priv = hw->priv; -+ struct ieee80211_conf *conf = &hw->conf; - - at76_dbg(DBG_MAC80211, "%s(): channel %d radio %d", - __func__, conf->channel->hw_value, conf->radio_enabled); ---- a/drivers/net/wireless/ath5k/base.c -+++ b/drivers/net/wireless/ath5k/base.c -@@ -219,8 +219,7 @@ static int ath5k_add_interface(struct ie - struct ieee80211_if_init_conf *conf); - static void ath5k_remove_interface(struct ieee80211_hw *hw, - struct ieee80211_if_init_conf *conf); --static int ath5k_config(struct ieee80211_hw *hw, -- struct ieee80211_conf *conf); -+static int ath5k_config(struct ieee80211_hw *hw, u32 changed); - static int ath5k_config_interface(struct ieee80211_hw *hw, - struct ieee80211_vif *vif, - struct ieee80211_if_conf *conf); -@@ -2767,10 +2766,10 @@ end: - * TODO: Phy disable/diversity etc - */ - static int --ath5k_config(struct ieee80211_hw *hw, -- struct ieee80211_conf *conf) -+ath5k_config(struct ieee80211_hw *hw, u32 changed) - { - struct ath5k_softc *sc = hw->priv; -+ struct ieee80211_conf *conf = &hw->conf; - - sc->bintval = conf->beacon_int; - sc->power_level = conf->power_level; ---- a/drivers/net/wireless/ath9k/main.c -+++ b/drivers/net/wireless/ath9k/main.c -@@ -1231,11 +1231,11 @@ static void ath9k_remove_interface(struc - __func__, error); - } - --static int ath9k_config(struct ieee80211_hw *hw, -- struct ieee80211_conf *conf) -+static int ath9k_config(struct ieee80211_hw *hw, u32 changed) - { - struct ath_softc *sc = hw->priv; - struct ieee80211_channel *curchan = hw->conf.channel; -+ struct ieee80211_conf *conf = &hw->conf; - int pos; - - DPRINTF(sc, ATH_DBG_CONFIG, "%s: Set channel: %d MHz\n", ---- a/drivers/net/wireless/b43/main.c -+++ b/drivers/net/wireless/b43/main.c -@@ -3320,11 +3320,12 @@ init_failure: - return err; - } - --static int b43_op_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+static int b43_op_config(struct ieee80211_hw *hw, u32 changed) - { - struct b43_wl *wl = hw_to_b43_wl(hw); - struct b43_wldev *dev; - struct b43_phy *phy; -+ struct ieee80211_conf *conf = &hw->conf; - unsigned long flags; - int antenna; - int err = 0; ---- a/drivers/net/wireless/b43legacy/main.c -+++ b/drivers/net/wireless/b43legacy/main.c -@@ -2557,11 +2557,12 @@ init_failure: - } - - static int b43legacy_op_dev_config(struct ieee80211_hw *hw, -- struct ieee80211_conf *conf) -+ u32 changed) - { - struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw); - struct b43legacy_wldev *dev; - struct b43legacy_phy *phy; -+ struct ieee80211_conf *conf = &hw->conf; - unsigned long flags; - unsigned int new_phymode = 0xFFFF; - int antenna_tx; ---- a/drivers/net/wireless/iwlwifi/iwl-agn.c -+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c -@@ -2760,10 +2760,11 @@ static int iwl4965_mac_add_interface(str - * be set inappropriately and the driver currently sets the hardware up to - * use it whenever needed. - */ --static int iwl4965_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+static int iwl4965_mac_config(struct ieee80211_hw *hw, u32 changed) - { - struct iwl_priv *priv = hw->priv; - const struct iwl_channel_info *ch_info; -+ struct ieee80211_conf *conf = &hw->conf; - unsigned long flags; - int ret = 0; - u16 channel; ---- a/drivers/net/wireless/iwlwifi/iwl3945-base.c -+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c -@@ -6427,7 +6427,7 @@ static void iwl3945_bg_abort_scan(struct - mutex_unlock(&priv->mutex); - } - --static int iwl3945_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf); -+static int iwl3945_mac_config(struct ieee80211_hw *hw, u32 changed); - - static void iwl3945_bg_scan_completed(struct work_struct *work) - { -@@ -6440,7 +6440,7 @@ static void iwl3945_bg_scan_completed(st - return; - - if (test_bit(STATUS_CONF_PENDING, &priv->status)) -- iwl3945_mac_config(priv->hw, ieee80211_get_hw_conf(priv->hw)); -+ iwl3945_mac_config(priv->hw, 0); - - ieee80211_scan_completed(priv->hw); - -@@ -6629,10 +6629,11 @@ static int iwl3945_mac_add_interface(str - * be set inappropriately and the driver currently sets the hardware up to - * use it whenever needed. - */ --static int iwl3945_mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+static int iwl3945_mac_config(struct ieee80211_hw *hw, u32 changed) - { - struct iwl3945_priv *priv = hw->priv; - const struct iwl3945_channel_info *ch_info; -+ struct ieee80211_conf *conf = &hw->conf; - unsigned long flags; - int ret = 0; - ---- a/drivers/net/wireless/mac80211_hwsim.c -+++ b/drivers/net/wireless/mac80211_hwsim.c -@@ -361,10 +361,10 @@ static void mac80211_hwsim_beacon(unsign - } - - --static int mac80211_hwsim_config(struct ieee80211_hw *hw, -- struct ieee80211_conf *conf) -+static int mac80211_hwsim_config(struct ieee80211_hw *hw, u32 changed) - { - struct mac80211_hwsim_data *data = hw->priv; -+ struct ieee80211_conf *conf = &hw->conf; - - printk(KERN_DEBUG "%s:%s (freq=%d radio_enabled=%d beacon_int=%d)\n", - wiphy_name(hw->wiphy), __func__, ---- a/drivers/net/wireless/p54/p54common.c -+++ b/drivers/net/wireless/p54/p54common.c -@@ -1205,10 +1205,11 @@ static void p54_remove_interface(struct - p54_set_filter(dev, 0, NULL); - } - --static int p54_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) -+static int p54_config(struct ieee80211_hw *dev, u32 changed) - { - int ret; - struct p54_common *priv = dev->priv; -+ struct ieee80211_conf *conf = &dev->conf; - - mutex_lock(&priv->conf_mutex); - priv->rx_antenna = 2; /* automatic */ ---- a/drivers/net/wireless/rt2x00/rt2x00.h -+++ b/drivers/net/wireless/rt2x00/rt2x00.h -@@ -997,7 +997,7 @@ int rt2x00mac_add_interface(struct ieee8 - struct ieee80211_if_init_conf *conf); - void rt2x00mac_remove_interface(struct ieee80211_hw *hw, - struct ieee80211_if_init_conf *conf); --int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf); -+int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed); - int rt2x00mac_config_interface(struct ieee80211_hw *hw, - struct ieee80211_vif *vif, - struct ieee80211_if_conf *conf); ---- a/drivers/net/wireless/rt2x00/rt2x00mac.c -+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c -@@ -335,9 +335,10 @@ void rt2x00mac_remove_interface(struct i - } - EXPORT_SYMBOL_GPL(rt2x00mac_remove_interface); - --int rt2x00mac_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed) - { - struct rt2x00_dev *rt2x00dev = hw->priv; -+ struct ieee80211_conf *conf = &hw->conf; - int radio_on; - int status; - ---- a/drivers/net/wireless/rtl8180_dev.c -+++ b/drivers/net/wireless/rtl8180_dev.c -@@ -692,9 +692,10 @@ static void rtl8180_remove_interface(str - priv->vif = NULL; - } - --static int rtl8180_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) -+static int rtl8180_config(struct ieee80211_hw *dev, u32 changed) - { - struct rtl8180_priv *priv = dev->priv; -+ struct ieee80211_conf *conf = &dev->conf; - - priv->rf->set_chan(dev, conf); - ---- a/drivers/net/wireless/rtl8187_dev.c -+++ b/drivers/net/wireless/rtl8187_dev.c -@@ -870,9 +870,10 @@ static void rtl8187_remove_interface(str - mutex_unlock(&priv->conf_mutex); - } - --static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) -+static int rtl8187_config(struct ieee80211_hw *dev, u32 changed) - { - struct rtl8187_priv *priv = dev->priv; -+ struct ieee80211_conf *conf = &dev->conf; - u32 reg; - - mutex_lock(&priv->conf_mutex); ---- a/drivers/net/wireless/zd1211rw/zd_mac.c -+++ b/drivers/net/wireless/zd1211rw/zd_mac.c -@@ -743,9 +743,11 @@ static void zd_op_remove_interface(struc - zd_write_mac_addr(&mac->chip, NULL); - } - --static int zd_op_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) -+static int zd_op_config(struct ieee80211_hw *hw, u32 changed) - { - struct zd_mac *mac = zd_hw_mac(hw); -+ struct ieee80211_conf *conf = &hw->conf; -+ - return zd_chip_set_channel(&mac->chip, conf->channel->hw_value); - } - ---- a/drivers/net/wireless/rt2x00/rt2x00dev.c -+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c -@@ -1245,7 +1245,7 @@ int rt2x00lib_resume(struct rt2x00_dev * - /* - * Reconfigure device. - */ -- retval = rt2x00mac_config(rt2x00dev->hw, &rt2x00dev->hw->conf); -+ retval = rt2x00mac_config(rt2x00dev->hw, ~0); - if (retval) - goto exit; - |