On Saturday 04 August 2007, Will Dyson wrote:
> On 8/4/07, Michael Buesch <[EMAIL PROTECTED]> wrote:
>
> > So any suggestions on how to fix this?
> > The problem is that I'm not sure why we calibrate the LO by these strange
> > tables. Maybe we can fix this by dropping the tables and simply
> > calibrate it for every possible attenuation.
> > These tables have some relation to the hardware power control.
> > So maybe we don't need to adjust the LO from the txpower routines
> > at all, when using hwpctl? (Only on demand of the power vector).
>
> I certainly can't claim to understand how the LO calibration is
> supposed to work. I'm especially having a hard time understanding how
> these LO tables (lo->with_padmix and lo->no_padmix) get built.
>
> With that in mind, why can't we just make the table large enough for
> an RFATT of 11?
>
> It seems to work for me on a 4306....
>
> Gmail-mangled patch follows (just to show what I'm talking about)
>
> diff --git a/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_lo.h
> b/drivers/net/wireless/bcm43xx-mac80211/b
> index 377bda4..1d89fdd 100644
> --- a/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_lo.h
> +++ b/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_lo.h
> @@ -26,7 +26,7 @@ struct bcm43xx_loctl {
> * Use bcm43xx_get_lo_g_ctl() to retrieve a value from the lists.
> */
> struct bcm43xx_txpower_lo_control {
> -#define BCM43xx_NR_BB 9
> +#define BCM43xx_NR_BB 12
> #define BCM43xx_NR_RF 16
> /* LO Control values, with PAD Mixer */
> struct bcm43xx_loctl with_padmix[ BCM43xx_NR_BB ][ BCM43xx_NR_RF ];
> diff --git a/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_phy.c
> b/drivers/net/wireless/bcm43xx-mac80211/
> index 4db7c5c..8f35d33 100644
> --- a/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_phy.c
> +++ b/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_phy.c
> @@ -181,12 +181,15 @@ static void generate_bbatt_list(struct bcm43xx_wldev
> *dev,
> { .att = 6, },
> { .att = 7, },
> { .att = 8, },
> + { .att = 9, },
> + { .att = 10, },
> + { .att = 11, },
> };
>
> list->list = bbatt_0;
> list->len = ARRAY_SIZE(bbatt_0);
> list->min_val = 0;
> - list->max_val = 8;
> + list->max_val = 11;
> }
>
> static void bcm43xx_shm_clear_tssi(struct bcm43xx_wldev *dev)
>
>
Well, that's exactly the part I don't understand either.
It's can't be the case that we must extend the tables to get proper operation.
Except there's the same bug in the original driver, too, of course.
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev