[Prism54-devel] Re: basic rates

Denis Vlasenko vda at port.imtp.ilyichevsk.odessa.ua
Fri Jul 30 14:13:21 UTC 2004


On Tuesday 27 July 2004 15:23, Feyd wrote:
> On Tue, 27 Jul 2004 14:16:06 +0300
>
> Denis Vlasenko <vda at port.imtp.ilyichevsk.odessa.ua> wrote:
> > After browsing code for a while, I have an impression
> > that it is simply not known how to do it.
>
> from isl_ioctl.c:
>         ret |= mgt_set_request(priv, DOT11_OID_EXTENDEDRATES, 0, data);
>         ret |= mgt_set_request(priv, DOT11_OID_RATES, 0, data);
>
> DOT11_OID_RATES sets the basic rates i guess, so try to set the data after
> the last rate you want to advertise to zero between the two calls.

Thanks Feyd, this is exactly it.
I sent a patch yesterday which implemented setting of basis/operational
rate sets. There are two things to be aware of:

+       profile = -1;
+       ret = mgt_set_request(priv, DOT11_OID_PROFILES, 0, &profile);
+       /* peculiar: remove line below - and sometimes ext rates
+       will be erroneously advertised as basic: */
+       if(!ret)
+               ret = mgt_set_request(priv, DOT11_OID_EXTENDEDRATES, 0, &zerobyte);

because I've seen beacons with all rates flagged as basic without this.
Sometimes.

+       /* add ext rates to basic, or else ext rates won't be advertised: */
+       strcat((char*)brate,(char*)erate);
+       if(!ret)
+               ret = mgt_set_request(priv, DOT11_OID_RATES, 0, brate);

RATES are all rates. Basic ones must be or'ed with 0x80.

+       /* I didn't test whether this is needed at all: */
+       if(!ret && erate[0])
+               ret = mgt_set_request(priv, DOT11_OID_EXTENDEDRATES, 0, erate);

Don't know why this is needed, since RATES have them all.
I do it 'just in case'.
--
vda



More information about the Prism54-devel mailing list