2009-08-14 21:00:31

by Gábor Stefanik

[permalink] [raw]
Subject: [PATCH] b43: LP-PHY: Fix another TX power control abuse

This should fix the remaining WARN_ON.

Signed-off-by: Gábor Stefanik <[email protected]>
---
drivers/net/wireless/b43/phy_lp.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c
index bf89173..3872a31 100644
--- a/drivers/net/wireless/b43/phy_lp.c
+++ b/drivers/net/wireless/b43/phy_lp.c
@@ -1059,7 +1059,8 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev *dev)
bool old_txg_ovr;
u8 old_bbmult;
u16 old_rf_ovr, old_rf_ovrval, old_afe_ovr, old_afe_ovrval,
- old_rf2_ovr, old_rf2_ovrval, old_phy_ctl, old_txpctl;
+ old_rf2_ovr, old_rf2_ovrval, old_phy_ctl;
+ enum b43_lpphy_txpctl_mode old_txpctl;
u32 normal_pwr, ideal_pwr, mean_sq_pwr, tmp = 0, mean_sq_pwr_min = 0;
int loopback, i, j, inner_sum;

@@ -1077,8 +1078,8 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev *dev)
old_rf2_ovr = b43_phy_read(dev, B43_LPPHY_RF_OVERRIDE_2);
old_rf2_ovrval = b43_phy_read(dev, B43_LPPHY_RF_OVERRIDE_2_VAL);
old_phy_ctl = b43_phy_read(dev, B43_LPPHY_LP_PHY_CTL);
- old_txpctl = b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_CMD) &
- B43_LPPHY_TX_PWR_CTL_CMD_MODE;
+ lpphy_read_tx_pctl_mode_from_hardware(dev);
+ old_txpctl = lpphy->txpctl_mode;

lpphy_set_tx_power_control(dev, B43_LPPHY_TXPCTL_OFF);
lpphy_disable_crs(dev);
--
1.6.2.4





2009-08-14 22:01:18

by Gábor Stefanik

[permalink] [raw]
Subject: Re: [PATCH] b43: LP-PHY: Fix another TX power control abuse

2009/8/14 Larry Finger <[email protected]>:
> G?bor Stefanik wrote:
>> This should fix the remaining WARN_ON.
>>
>> Signed-off-by: G?bor Stefanik <[email protected]>
>> ---
>> drivers/net/wireless/b43/phy_lp.c | ? ?7 ++++---
>> 1 files changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/b43/phy_lp.c
>> b/drivers/net/wireless/b43/phy_lp.c
>> index bf89173..3872a31 100644
>> --- a/drivers/net/wireless/b43/phy_lp.c
>> +++ b/drivers/net/wireless/b43/phy_lp.c
>> @@ -1059,7 +1059,8 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev
>> *dev)
>> ? ? bool old_txg_ovr;
>> ? ? u8 old_bbmult;
>> ? ? u16 old_rf_ovr, old_rf_ovrval, old_afe_ovr, old_afe_ovrval,
>> - ? ? ? ?old_rf2_ovr, old_rf2_ovrval, old_phy_ctl, old_txpctl;
>> + ? ? ? ?old_rf2_ovr, old_rf2_ovrval, old_phy_ctl;
>> + ? ?enum b43_lpphy_txpctl_mode old_txpctl;
>> ? ? u32 normal_pwr, ideal_pwr, mean_sq_pwr, tmp = 0, mean_sq_pwr_min = 0;
>> ? ? int loopback, i, j, inner_sum;
>>
>> @@ -1077,8 +1078,8 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev
>> *dev)
>> ? ? old_rf2_ovr = b43_phy_read(dev, B43_LPPHY_RF_OVERRIDE_2);
>> ? ? old_rf2_ovrval = b43_phy_read(dev, B43_LPPHY_RF_OVERRIDE_2_VAL);
>> ? ? old_phy_ctl = b43_phy_read(dev, B43_LPPHY_LP_PHY_CTL);
>> - ? ?old_txpctl = b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_CMD) &
>> - ? ? ? ? ? ? ? ? ? ?B43_LPPHY_TX_PWR_CTL_CMD_MODE;
>> + ? ?lpphy_read_tx_pctl_mode_from_hardware(dev);
>> + ? ?old_txpctl = lpphy->txpctl_mode;
>>
>> ? ? lpphy_set_tx_power_control(dev, B43_LPPHY_TXPCTL_OFF);
>> ? ? lpphy_disable_crs(dev);
>
> Yes, this one got rid of the warnings.
>
> Larry
>
>

I guess the device still doesn't TX/RX.

--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)

2009-08-14 21:31:18

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] b43: LP-PHY: Fix another TX power control abuse

Gábor Stefanik wrote:
> This should fix the remaining WARN_ON.
>
> Signed-off-by: Gábor Stefanik <[email protected]>
> ---
> drivers/net/wireless/b43/phy_lp.c | 7 ++++---
> 1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/phy_lp.c
> b/drivers/net/wireless/b43/phy_lp.c
> index bf89173..3872a31 100644
> --- a/drivers/net/wireless/b43/phy_lp.c
> +++ b/drivers/net/wireless/b43/phy_lp.c
> @@ -1059,7 +1059,8 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev
> *dev)
> bool old_txg_ovr;
> u8 old_bbmult;
> u16 old_rf_ovr, old_rf_ovrval, old_afe_ovr, old_afe_ovrval,
> - old_rf2_ovr, old_rf2_ovrval, old_phy_ctl, old_txpctl;
> + old_rf2_ovr, old_rf2_ovrval, old_phy_ctl;
> + enum b43_lpphy_txpctl_mode old_txpctl;
> u32 normal_pwr, ideal_pwr, mean_sq_pwr, tmp = 0, mean_sq_pwr_min = 0;
> int loopback, i, j, inner_sum;
>
> @@ -1077,8 +1078,8 @@ static void lpphy_rev0_1_rc_calib(struct b43_wldev
> *dev)
> old_rf2_ovr = b43_phy_read(dev, B43_LPPHY_RF_OVERRIDE_2);
> old_rf2_ovrval = b43_phy_read(dev, B43_LPPHY_RF_OVERRIDE_2_VAL);
> old_phy_ctl = b43_phy_read(dev, B43_LPPHY_LP_PHY_CTL);
> - old_txpctl = b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_CMD) &
> - B43_LPPHY_TX_PWR_CTL_CMD_MODE;
> + lpphy_read_tx_pctl_mode_from_hardware(dev);
> + old_txpctl = lpphy->txpctl_mode;
>
> lpphy_set_tx_power_control(dev, B43_LPPHY_TXPCTL_OFF);
> lpphy_disable_crs(dev);

Yes, this one got rid of the warnings.

Larry


2009-08-14 22:12:52

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] b43: LP-PHY: Fix another TX power control abuse

G?bor Stefanik wrote:
> 2009/8/14 Larry Finger <[email protected]>:
>> Yes, this one got rid of the warnings.
>>
>> Larry
>>
>>
>
> I guess the device still doesn't TX/RX.
>

Not yet. The fact that it keeps getting shut down/restarted indicates
that the TX operations are not completing. I'm currently tracking the
path of operations.

Larry