|
@@ -3139,20 +3139,6 @@ void brcms_c_reset(struct brcms_c_info *wlc)
|
|
|
brcms_b_reset(wlc->hw);
|
|
|
}
|
|
|
|
|
|
-/* Return the channel the driver should initialize during brcms_c_init.
|
|
|
- * the channel may have to be changed from the currently configured channel
|
|
|
- * if other configurations are in conflict (bandlocked, 11n mode disabled,
|
|
|
- * invalid channel for current country, etc.)
|
|
|
- */
|
|
|
-static u16 brcms_c_init_chanspec(struct brcms_c_info *wlc)
|
|
|
-{
|
|
|
- u16 chanspec =
|
|
|
- 1 | WL_CHANSPEC_BW_20 | WL_CHANSPEC_CTL_SB_NONE |
|
|
|
- WL_CHANSPEC_BAND_2G;
|
|
|
-
|
|
|
- return chanspec;
|
|
|
-}
|
|
|
-
|
|
|
void brcms_c_init_scb(struct scb *scb)
|
|
|
{
|
|
|
int i;
|
|
@@ -5129,6 +5115,8 @@ static void brcms_c_wme_retries_write(struct brcms_c_info *wlc)
|
|
|
/* make interface operational */
|
|
|
int brcms_c_up(struct brcms_c_info *wlc)
|
|
|
{
|
|
|
+ struct ieee80211_channel *ch;
|
|
|
+
|
|
|
BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit);
|
|
|
|
|
|
/* HW is turned off so don't try to access it */
|
|
@@ -5195,8 +5183,9 @@ int brcms_c_up(struct brcms_c_info *wlc)
|
|
|
wlc->pub->up = true;
|
|
|
|
|
|
if (wlc->bandinit_pending) {
|
|
|
+ ch = wlc->pub->ieee_hw->conf.channel;
|
|
|
brcms_c_suspend_mac_and_wait(wlc);
|
|
|
- brcms_c_set_chanspec(wlc, wlc->default_bss->chanspec);
|
|
|
+ brcms_c_set_chanspec(wlc, ch20mhz_chspec(ch->hw_value));
|
|
|
wlc->bandinit_pending = false;
|
|
|
brcms_c_enable_mac(wlc);
|
|
|
}
|
|
@@ -8201,19 +8190,12 @@ bool brcms_c_dpc(struct brcms_c_info *wlc, bool bounded)
|
|
|
void brcms_c_init(struct brcms_c_info *wlc, bool mute_tx)
|
|
|
{
|
|
|
struct bcma_device *core = wlc->hw->d11core;
|
|
|
+ struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel;
|
|
|
u16 chanspec;
|
|
|
|
|
|
BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit);
|
|
|
|
|
|
- /*
|
|
|
- * This will happen if a big-hammer was executed. In
|
|
|
- * that case, we want to go back to the channel that
|
|
|
- * we were on and not new channel
|
|
|
- */
|
|
|
- if (wlc->pub->associated)
|
|
|
- chanspec = wlc->home_chanspec;
|
|
|
- else
|
|
|
- chanspec = brcms_c_init_chanspec(wlc);
|
|
|
+ chanspec = ch20mhz_chspec(ch->hw_value);
|
|
|
|
|
|
brcms_b_init(wlc->hw, chanspec);
|
|
|
|