[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