Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 265603
b: refs/heads/master
c: 2a19032
h: refs/heads/master
i:
  265601: d7f15a1
  265599: 64cc843
v: v3
  • Loading branch information
Felix Fietkau authored and John W. Linville committed Aug 22, 2011
1 parent a316234 commit 5ceb1c7
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 69ce674bfa69c55cdf32710d811fa89738eafbef
refs/heads/master: 2a190322d4390bbd5184a2fd4f97bbef9f1f5b4e
42 changes: 37 additions & 5 deletions trunk/drivers/net/wireless/b43/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,10 @@ static void b43_wireless_core_exit(struct b43_wldev *dev);
static int b43_wireless_core_init(struct b43_wldev *dev);
static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev);
static int b43_wireless_core_start(struct b43_wldev *dev);
static void b43_op_bss_info_changed(struct ieee80211_hw *hw,
struct ieee80211_vif *vif,
struct ieee80211_bss_conf *conf,
u32 changed);

static int b43_ratelimit(struct b43_wl *wl)
{
Expand Down Expand Up @@ -3778,14 +3782,24 @@ static int b43_op_config(struct ieee80211_hw *hw, u32 changed)
struct ieee80211_conf *conf = &hw->conf;
int antenna;
int err = 0;
bool reload_bss = false;

mutex_lock(&wl->mutex);

dev = wl->current_dev;

/* Switch the band (if necessary). This might change the active core. */
err = b43_switch_band(wl, conf->channel);
if (err)
goto out_unlock_mutex;
dev = wl->current_dev;

/* Need to reload all settings if the core changed */
if (dev != wl->current_dev) {
dev = wl->current_dev;
changed = ~0;
reload_bss = true;
}

phy = &dev->phy;

if (conf_is_ht(conf))
Expand Down Expand Up @@ -3846,6 +3860,9 @@ static int b43_op_config(struct ieee80211_hw *hw, u32 changed)
out_unlock_mutex:
mutex_unlock(&wl->mutex);

if (wl->vif && reload_bss)
b43_op_bss_info_changed(hw, wl->vif, &wl->vif->bss_conf, ~0);

return err;
}

Expand Down Expand Up @@ -3934,7 +3951,8 @@ static void b43_op_bss_info_changed(struct ieee80211_hw *hw,
if (changed & BSS_CHANGED_BEACON_INT &&
(b43_is_mode(wl, NL80211_IFTYPE_AP) ||
b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) ||
b43_is_mode(wl, NL80211_IFTYPE_ADHOC)))
b43_is_mode(wl, NL80211_IFTYPE_ADHOC)) &&
conf->beacon_int)
b43_set_beacon_int(dev, conf->beacon_int);

if (changed & BSS_CHANGED_BASIC_RATES)
Expand Down Expand Up @@ -4702,6 +4720,9 @@ static int b43_op_add_interface(struct ieee80211_hw *hw,
out_mutex_unlock:
mutex_unlock(&wl->mutex);

if (err == 0)
b43_op_bss_info_changed(hw, vif, &vif->bss_conf, ~0);

return err;
}

Expand Down Expand Up @@ -4772,6 +4793,9 @@ static int b43_op_start(struct ieee80211_hw *hw)
out_mutex_unlock:
mutex_unlock(&wl->mutex);

/* reload configuration */
b43_op_config(hw, ~0);

return err;
}

Expand Down Expand Up @@ -4928,10 +4952,18 @@ static void b43_chip_reset(struct work_struct *work)
if (err)
wl->current_dev = NULL; /* Failed to init the dev. */
mutex_unlock(&wl->mutex);
if (err)

if (err) {
b43err(wl, "Controller restart FAILED\n");
else
b43info(wl, "Controller restarted\n");
return;
}

/* reload configuration */
b43_op_config(wl->hw, ~0);
if (wl->vif)
b43_op_bss_info_changed(wl->hw, wl->vif, &wl->vif->bss_conf, ~0);

b43info(wl, "Controller restarted\n");
}

static int b43_setup_bands(struct b43_wldev *dev,
Expand Down

0 comments on commit 5ceb1c7

Please sign in to comment.