Skip to contentSkip to conversation

b43: LP-PHY: Fix another TX power control abuse

PATCH In review Gábor Stefanik 2 participants 4 messages Aug 14, 2009 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 b43: LP-PHY: Fix another TX power control abuse

This should fix the remaining WARN_ON.

---
drivers/net/wireless/b43/phy_lp.c | 7 ++++---

1 files changed, 4 insertions(+), 3 deletions(-)
drivers/net/wireless/b43/phy_lp.c +0 -0
index bf89173..3872a31 100644
@@ -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);
Signature · 1 line
1.6.2.4
#1 lore raw
Quoted 34 lines · Gábor Stefanik

This should fix the remaining WARN_ON.

---
drivers/net/wireless/b43/phy_lp.c | 7 ++++---

1 files changed, 4 insertions(+), 3 deletions(-)
drivers/net/wireless/b43/phy_lp.c +4 -3
index bf89173..3872a31 100644
@@ -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);
Quoted 1 line
    lpphy_disable_crs(dev);

Yes, this one got rid of the warnings.

Larry

#2 lore raw

2009/8/14 Larry Finger <[email protected]>:

Quoted 34 lines
Quoted 33 lines · Gábor Stefanik

This should fix the remaining WARN_ON.

---
drivers/net/wireless/b43/phy_lp.c |    7 ++++---

1 files changed, 4 insertions(+), 3 deletions(-)
drivers/net/wireless/b43/phy_lp.c +4 -3
index bf89173..3872a31 100644
@@ -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;
 
Quoted 8 lines
Quoted 2 lines
drivers/net/wireless/b43/phy_lp.c +0 -0
     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.

Signature · 1 line
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
#3 lore raw
Quoted 9 lines · Gábor Stefanik

2009/8/14 Larry Finger <[email protected]>:

Quoted 5 lines

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