Search Linux Wireless

Re: [ath5k-devel] [PATCH] ath5k: Port to new bitrate/channel API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2008/2/12, bruno randolf <bruno@xxxxxxxxxxxxx>:
> On Thursday 31 January 2008 03:38:24 Nick Kossifidis wrote:
> > Tested on 5211, 5213+5112, 5213A+2112A and it wors fine.
> >
> > Also i figured out a way to process rate vallue found on status
> > descriptors, it's still buggy but we are getting closer (i think it
> > improved stability a little).
> > [...]
> > +/*
> > + * Match the hw provided rate index (through descriptors)
> > + * to an index for sc->curband->bitrates, so it can be used
> > + * by the stack.
> > + *
> > + * This one is a little bit tricky but i think i'm right
> > + * about this...
> > + *
> > + * We have 4 rate tables in the following order:
> > + * XR (4 rates)
> > + * 802.11a (8 rates)
> > + * 802.11b (4 rates)
> > + * 802.11g (12 rates)
> > + * that make the hw rate table.
> > + *
> > + * Lets take a 5211 for example that supports a and b modes only.
> > + * First comes the 802.11a table and then 802.11b (total 12 rates).
> > + * When hw returns eg. 11 it points to the last 802.11b rate (11Mbit),
> > + * if it returns 2 it points to the second 802.11a rate etc.
> > + *
> > + * Same goes for 5212 who has xr/a/b/g support (total 28 rates).
> > + * First comes the XR table, then 802.11a, 802.11b and 802.11g.
> > + * When hw returns eg. 27 it points to the last 802.11g rate (54Mbits) etc
> > + */
> > +static void
> > +ath5k_set_total_hw_rates(struct ath5k_softc *sc){
> > +
> > +     struct ath5k_hw *ah = sc->ah;
> > +
> > +     if(test_bit(AR5K_MODE_11A, ah->ah_modes))
> > +             sc->a_rates = 8;
> > +
> > +     if(test_bit(AR5K_MODE_11B, ah->ah_modes))
> > +             sc->b_rates = 4;
> > +
> > +     if(test_bit(AR5K_MODE_11G, ah->ah_modes))
> > +             sc->g_rates = 12;
> > +
> > +     /* XXX: Need to see what what happens when
> > +             xr disable bits in eeprom are set */
> > +     if(ah->ah_version >= AR5K_AR5212)
> > +             sc->xr_rates = 4;
> > +
> > +}
> > +
> > +static inline int
> > +ath5k_hw_to_driver_rix(struct ath5k_softc *sc, int hw_rix){
> > +
> > +     int mac80211_rix;
> > +
> > +     if(sc->curband->band == IEEE80211_BAND_2GHZ){
> > +             /* We setup a g ratetable for both b/g modes */
> > +             mac80211_rix = hw_rix - sc->b_rates - sc->a_rates - sc->xr_rates;
> > +     } else {
> > +             mac80211_rix = hw_rix - sc->xr_rates;
> > +     }
> > +
> > +     /* Something went wrong, fallback to basic rate for this band */
> > +     if((mac80211_rix >= sc->curband->n_bitrates) ||
> > +     (mac80211_rix <= 0 )){
> > +             mac80211_rix = 1;
> > +     }
> > +
> > +     return mac80211_rix;
> > +}
> > +
>
> hi nick!
>
> i don't think that works (for me / right now)... the reported rate on received
> frames is just all wrong. receiving a frame which was sent with 6Mbps (5GHz
> band) the hw rix is 0xb which translates to mac80211 rate index 7 = 54Mbps.
> looking at the dumped rate table it seems the hardware reports rates with a
> hw value which don't directly translate into indices (at least i can't see
> any pattern right now).
>
> Band 5 GHz: channels 194, rates 8
>  rates:
> ( rate hw )
>     60 000b 0000 0000
>     90 000f 0000 0000
>    120 000a 0000 0000
>    180 000e 0000 0000
>    240 0009 0000 0000
>    360 000d 0000 0000
>    480 0008 0000 0000
>    540 000c 0000 0000
>
> i have verified that ds->ds_rxstat.rs_rate matches this table in 5GHz band on
> a AR5213 (meaning rs_rate 0xb == 6Mbps, 0xf == 9Mbps, etc...). i haven't done
> this on the 2GHz band, because it's just too noisy here.
>
> bruno
>

Yup, i'm working on it, i also found some old code on svn that might
be what we want ;-)

I'm done with exams so i'll start working again on ath5k asap...


-- 
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux