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

Reply via email to