diff options
author | Roland Vossen <rvossen@broadcom.com> | 2011-10-21 10:16:26 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-11-08 15:54:19 -0500 |
commit | c6c44893c864429a7c6a4f7942dfb3ee182b4ad1 (patch) | |
tree | d8e76eebe3bf5570b94281aa20dab219dd692f24 /drivers/net/wireless/brcm80211 | |
parent | a8bc4917ed6bd6101569630708baaac14504ab8c (diff) |
brcm80211: smac: fixed inconsistency in transmit mute
Transmit was muted in two ways: full mute and a partial mute called
'pre ism cac time' mute. But, this 'pre ism cac time' mute was done at
one place in the code (when tx_mute == false), and overridden later
on in another place in code.
To fix this, the 'pre ism cac time' mute has been replaced by a non
mute.
Reviewed-by: Alwin Beukers <alwin@broadcom.com>
Reviewed-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Roland Vossen <rvossen@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/brcm80211')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/main.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c index 8eb665ee974a..cc74205708ed 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c | |||
@@ -2453,11 +2453,11 @@ static void brcms_b_tx_fifo_resume(struct brcms_hardware *wlc_hw, | |||
2453 | } | 2453 | } |
2454 | 2454 | ||
2455 | /* precondition: requires the mac core to be enabled */ | 2455 | /* precondition: requires the mac core to be enabled */ |
2456 | static void brcms_b_mute(struct brcms_hardware *wlc_hw, bool on, u32 flags) | 2456 | static void brcms_b_mute(struct brcms_hardware *wlc_hw, bool mute_tx) |
2457 | { | 2457 | { |
2458 | static const u8 null_ether_addr[ETH_ALEN] = {0, 0, 0, 0, 0, 0}; | 2458 | static const u8 null_ether_addr[ETH_ALEN] = {0, 0, 0, 0, 0, 0}; |
2459 | 2459 | ||
2460 | if (on) { | 2460 | if (mute_tx) { |
2461 | /* suspend tx fifos */ | 2461 | /* suspend tx fifos */ |
2462 | brcms_b_tx_fifo_suspend(wlc_hw, TX_DATA_FIFO); | 2462 | brcms_b_tx_fifo_suspend(wlc_hw, TX_DATA_FIFO); |
2463 | brcms_b_tx_fifo_suspend(wlc_hw, TX_CTL_FIFO); | 2463 | brcms_b_tx_fifo_suspend(wlc_hw, TX_CTL_FIFO); |
@@ -2479,9 +2479,9 @@ static void brcms_b_mute(struct brcms_hardware *wlc_hw, bool on, u32 flags) | |||
2479 | wlc_hw->etheraddr); | 2479 | wlc_hw->etheraddr); |
2480 | } | 2480 | } |
2481 | 2481 | ||
2482 | wlc_phy_mute_upd(wlc_hw->band->pi, on, flags); | 2482 | wlc_phy_mute_upd(wlc_hw->band->pi, mute_tx, 0); |
2483 | 2483 | ||
2484 | if (on) | 2484 | if (mute_tx) |
2485 | brcms_c_ucode_mute_override_set(wlc_hw); | 2485 | brcms_c_ucode_mute_override_set(wlc_hw); |
2486 | else | 2486 | else |
2487 | brcms_c_ucode_mute_override_clear(wlc_hw); | 2487 | brcms_c_ucode_mute_override_clear(wlc_hw); |
@@ -3892,7 +3892,7 @@ static void brcms_c_set_home_chanspec(struct brcms_c_info *wlc, u16 chanspec) | |||
3892 | 3892 | ||
3893 | void | 3893 | void |
3894 | brcms_b_set_chanspec(struct brcms_hardware *wlc_hw, u16 chanspec, | 3894 | brcms_b_set_chanspec(struct brcms_hardware *wlc_hw, u16 chanspec, |
3895 | bool mute, struct txpwr_limits *txpwr) | 3895 | bool mute_tx, struct txpwr_limits *txpwr) |
3896 | { | 3896 | { |
3897 | uint bandunit; | 3897 | uint bandunit; |
3898 | 3898 | ||
@@ -3918,7 +3918,7 @@ brcms_b_set_chanspec(struct brcms_hardware *wlc_hw, u16 chanspec, | |||
3918 | } | 3918 | } |
3919 | } | 3919 | } |
3920 | 3920 | ||
3921 | wlc_phy_initcal_enable(wlc_hw->band->pi, !mute); | 3921 | wlc_phy_initcal_enable(wlc_hw->band->pi, !mute_tx); |
3922 | 3922 | ||
3923 | if (!wlc_hw->up) { | 3923 | if (!wlc_hw->up) { |
3924 | if (wlc_hw->clk) | 3924 | if (wlc_hw->clk) |
@@ -3930,7 +3930,7 @@ brcms_b_set_chanspec(struct brcms_hardware *wlc_hw, u16 chanspec, | |||
3930 | wlc_phy_txpower_limit_set(wlc_hw->band->pi, txpwr, chanspec); | 3930 | wlc_phy_txpower_limit_set(wlc_hw->band->pi, txpwr, chanspec); |
3931 | 3931 | ||
3932 | /* Update muting of the channel */ | 3932 | /* Update muting of the channel */ |
3933 | brcms_b_mute(wlc_hw, mute, 0); | 3933 | brcms_b_mute(wlc_hw, mute_tx); |
3934 | } | 3934 | } |
3935 | } | 3935 | } |
3936 | 3936 | ||
@@ -8341,7 +8341,7 @@ void brcms_c_init(struct brcms_c_info *wlc) | |||
8341 | 8341 | ||
8342 | /* suspend the tx fifos and mute the phy for preism cac time */ | 8342 | /* suspend the tx fifos and mute the phy for preism cac time */ |
8343 | if (mute_tx) | 8343 | if (mute_tx) |
8344 | brcms_b_mute(wlc->hw, ON, PHY_MUTE_FOR_PREISM); | 8344 | brcms_b_mute(wlc->hw, true); |
8345 | 8345 | ||
8346 | /* clear tx flow control */ | 8346 | /* clear tx flow control */ |
8347 | brcms_c_txflowcontrol_reset(wlc); | 8347 | brcms_c_txflowcontrol_reset(wlc); |