Message ID | 1253129879.2989.48.camel@note (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
You are essentially implementing dead code at this point - this will only ever be called if hardware-accelerated TX power control is enabled - and HW TX power control is unsupported, even for G-PHYs. On Wed, Sep 16, 2009 at 9:37 PM, Thomas Ilnseher <illth@gmx.de> wrote: > This patch adds the lpphy_clear_tx_power_offsets to b43. > > Signed-off-by: Thomas Ilnseher <illth@gmx.de> > > --- > diff -uNr a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c > --- a/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:52:17.501318374 +0200 > +++ b/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:53:36.593319452 +0200 > @@ -1125,6 +1125,18 @@ > Â Â Â Â dev->phy.lp->tssi_idx = (b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_STAT) & 0x7F00) >> 8; > Â } > > +static void lpphy_clear_tx_power_offsets(struct b43_wldev *dev) > +{ > + Â Â Â int i; > + Â Â Â int id = 7; > + Â Â Â if (dev->phy.rev < 2) > + Â Â Â Â Â Â Â id = 10; > + Â Â Â for (i = 0; i < 12; i++) > + Â Â Â Â Â Â Â b43_lptab_write(dev, B43_LPTAB32(id, 0x40 + i), 0); > + Â Â Â for (i = 0; i < 64; i++) > + Â Â Â Â Â Â Â b43_lptab_write(dev, B43_LPTAB32(id, 0x80 + i), 0); > +} > + > Â static void lpphy_set_tx_power_control(struct b43_wldev *dev, > Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â enum b43_lpphy_txpctl_mode mode) > Â { > @@ -1139,7 +1151,7 @@ > > Â Â Â Â if (oldmode == B43_LPPHY_TXPCTL_HW) { > Â Â Â Â Â Â Â Â lpphy_update_tx_power_npt(dev); > - Â Â Â Â Â Â Â //TODO Clear all TX Power offsets > + Â Â Â Â Â Â Â lpphy_clear_tx_power_offsets(dev); > Â Â Â Â } else { > Â Â Â Â Â Â Â Â if (mode == B43_LPPHY_TXPCTL_HW) { > Â Â Â Â Â Â Â Â Â Â Â Â //TODO Recalculate target TX power > >
Am Mittwoch, den 16.09.2009, 21:40 +0200 schrieb Gábor Stefanik: > You are essentially implementing dead code at this point - this will > only ever be called if hardware-accelerated TX power control is > enabled - and HW TX power control is unsupported, even for G-PHYs. Then the question remains, why this brings my device to 54 MBit/s ? I did double check again with the old driver: wlan0 IEEE 802.11bg ESSID:"tommy" Mode:Managed Frequency:2.412 GHz Access Point: Bit Rate=9 Mb/s Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=70/70 Signal level=5 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 Patched driver: wlan0 IEEE 802.11bg ESSID:"tommy" Mode:Managed Frequency:2.412 GHz Access Point: XXX Bit Rate=54 Mb/s Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality=70/70 Signal level=10 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 > > Signed-off-by: Thomas Ilnseher <illth@gmx.de> > > > > --- > > diff -uNr a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c > > --- a/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:52:17.501318374 +0200 > > +++ b/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:53:36.593319452 +0200 > > @@ -1125,6 +1125,18 @@ > > dev->phy.lp->tssi_idx = (b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_STAT) & 0x7F00) >> 8; > > } > > > > +static void lpphy_clear_tx_power_offsets(struct b43_wldev *dev) > > +{ > > + int i; > > + int id = 7; > > + if (dev->phy.rev < 2) > > + id = 10; > > + for (i = 0; i < 12; i++) > > + b43_lptab_write(dev, B43_LPTAB32(id, 0x40 + i), 0); > > + for (i = 0; i < 64; i++) > > + b43_lptab_write(dev, B43_LPTAB32(id, 0x80 + i), 0); > > +} > > + > > static void lpphy_set_tx_power_control(struct b43_wldev *dev, > > enum b43_lpphy_txpctl_mode mode) > > { > > @@ -1139,7 +1151,7 @@ > > > > if (oldmode == B43_LPPHY_TXPCTL_HW) { > > lpphy_update_tx_power_npt(dev); > > - //TODO Clear all TX Power offsets > > + lpphy_clear_tx_power_offsets(dev); > > } else { > > if (mode == B43_LPPHY_TXPCTL_HW) { > > //TODO Recalculate target TX power > > > > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
2009/9/16 Thomas Ilnseher <illth@gmx.de>: > Am Mittwoch, den 16.09.2009, 21:40 +0200 schrieb Gábor Stefanik: >> You are essentially implementing dead code at this point - this will >> only ever be called if hardware-accelerated TX power control is >> enabled - and HW TX power control is unsupported, even for G-PHYs. > Then the question remains, why this brings my device to 54 MBit/s ? > > I did double check again with the old driver: > > wlan0   IEEE 802.11bg  ESSID:"tommy" >      Mode:Managed  Frequency:2.412 GHz  Access Point: >      Bit Rate=9 Mb/s  Tx-Power=20 dBm >      Retry  long limit:7  RTS thr:off  Fragment thr:off >      Encryption key:off >      Power Management:off >      Link Quality=70/70  Signal level=5 dBm >      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0 >      Tx excessive retries:0  Invalid misc:0  Missed beacon:0 > > Patched driver: > > wlan0   IEEE 802.11bg  ESSID:"tommy" >      Mode:Managed  Frequency:2.412 GHz  Access Point: XXX >      Bit Rate=54 Mb/s  Tx-Power=20 dBm >      Retry  long limit:7  RTS thr:off  Fragment thr:off >      Encryption key:off >      Power Management:off >      Link Quality=70/70  Signal level=10 dBm >      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0 >      Tx excessive retries:0  Invalid misc:0  Missed beacon:0 > > > >> > Signed-off-by: Thomas Ilnseher <illth@gmx.de> >> > >> > --- >> > diff -uNr a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c >> > --- a/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:52:17.501318374 +0200 >> > +++ b/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:53:36.593319452 +0200 >> > @@ -1125,6 +1125,18 @@ >> >     dev->phy.lp->tssi_idx = (b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_STAT) & 0x7F00) >> 8; >> >  } >> > >> > +static void lpphy_clear_tx_power_offsets(struct b43_wldev *dev) >> > +{ >> > +    int i; >> > +    int id = 7; >> > +    if (dev->phy.rev < 2) >> > +        id = 10; >> > +    for (i = 0; i < 12; i++) >> > +        b43_lptab_write(dev, B43_LPTAB32(id, 0x40 + i), 0); >> > +    for (i = 0; i < 64; i++) >> > +        b43_lptab_write(dev, B43_LPTAB32(id, 0x80 + i), 0); >> > +} >> > + >> >  static void lpphy_set_tx_power_control(struct b43_wldev *dev, >> >                    enum b43_lpphy_txpctl_mode mode) >> >  { >> > @@ -1139,7 +1151,7 @@ >> > >> >     if (oldmode == B43_LPPHY_TXPCTL_HW) { >> >         lpphy_update_tx_power_npt(dev); >> > -        //TODO Clear all TX Power offsets >> > +        lpphy_clear_tx_power_offsets(dev); Put a printk here to see if this branch is getting hit. (BTW, are you loading b43 with the "hwpctl" modparam? That enables experimental HW TX power control support, which might explain what you were seeing.) >> >     } else { >> >         if (mode == B43_LPPHY_TXPCTL_HW) { >> >             //TODO Recalculate target TX power >> > >> > >> >> >> > >
On Wednesday 16 September 2009 22:17:55 Thomas Ilnseher wrote: > Am Mittwoch, den 16.09.2009, 21:40 +0200 schrieb Gábor Stefanik: > > You are essentially implementing dead code at this point - this will > > only ever be called if hardware-accelerated TX power control is > > enabled - and HW TX power control is unsupported, even for G-PHYs. > Then the question remains, why this brings my device to 54 MBit/s ? > > I did double check again with the old driver: > > wlan0 IEEE 802.11bg ESSID:"tommy" > Mode:Managed Frequency:2.412 GHz Access Point: > Bit Rate=9 Mb/s Tx-Power=20 dBm > Retry long limit:7 RTS thr:off Fragment thr:off > Encryption key:off > Power Management:off > Link Quality=70/70 Signal level=5 dBm > Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 > Tx excessive retries:0 Invalid misc:0 Missed beacon:0 > > Patched driver: > > wlan0 IEEE 802.11bg ESSID:"tommy" > Mode:Managed Frequency:2.412 GHz Access Point: XXX > Bit Rate=54 Mb/s Tx-Power=20 dBm > Retry long limit:7 RTS thr:off Fragment thr:off > Encryption key:off > Power Management:off > Link Quality=70/70 Signal level=10 dBm > Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 > Tx excessive retries:0 Invalid misc:0 Missed beacon:0 The iwconfig output doesn't tell you anything about the actual net TX rate. Please benchmark it with iperf.
> > Put a printk here to see if this branch is getting hit. > > (BTW, are you loading b43 with the "hwpctl" modparam? That enables > experimental HW TX power control support, which might explain what you > were seeing.) Hi Gabor, I'm stupid. I applied 3 Patches, the analog switch patch, and the other two patches. The analog switch patch did it. > >> > >> > > > > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff -uNr a/drivers/net/wireless/b43/phy_lp.c b/drivers/net/wireless/b43/phy_lp.c --- a/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:52:17.501318374 +0200 +++ b/drivers/net/wireless/b43/phy_lp.c 2009-09-16 20:53:36.593319452 +0200 @@ -1125,6 +1125,18 @@ dev->phy.lp->tssi_idx = (b43_phy_read(dev, B43_LPPHY_TX_PWR_CTL_STAT) & 0x7F00) >> 8; } +static void lpphy_clear_tx_power_offsets(struct b43_wldev *dev) +{ + int i; + int id = 7; + if (dev->phy.rev < 2) + id = 10; + for (i = 0; i < 12; i++) + b43_lptab_write(dev, B43_LPTAB32(id, 0x40 + i), 0); + for (i = 0; i < 64; i++) + b43_lptab_write(dev, B43_LPTAB32(id, 0x80 + i), 0); +} + static void lpphy_set_tx_power_control(struct b43_wldev *dev, enum b43_lpphy_txpctl_mode mode) { @@ -1139,7 +1151,7 @@ if (oldmode == B43_LPPHY_TXPCTL_HW) { lpphy_update_tx_power_npt(dev); - //TODO Clear all TX Power offsets + lpphy_clear_tx_power_offsets(dev); } else { if (mode == B43_LPPHY_TXPCTL_HW) { //TODO Recalculate target TX power
This patch adds the lpphy_clear_tx_power_offsets to b43. Signed-off-by: Thomas Ilnseher <illth@gmx.de> --- -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html