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)


-- 
Will Dyson
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to