2009/4/16 Johannes Berg <johannes@xxxxxxxxxxxxxxxx>: > On Wed, 2009-04-15 at 02:33 +0200, Gábor Stefanik wrote: > >> - Define bit 1 (mask 0x0002) as "CTS-to-self protection", >> - Define bit 2 (mask 0x0004) as "RTS/CTS handshake", > > Since you're defining these for injection too I think it would be useful > to also define a way to _not_ use RTS or CTS, or define a way to use the > default that the device would use from dot11RTSThreshold for example. > > Otherwise, when leaving out these bits, it wouldn't be clear whether > that means "do not use, overriding default" or "use default". > > johannes > Here is how I think this can be done: Because it's impossible to have a packet protected both by CTS-to-self and by RTS/CTS, we can define the case where both the CTS and RTS flags are set as "Automatically use RTS or CTS as needed". The same should be true when the TX flags field is missing entirely. When the TX flags field is present, and both flags are 0, that should be interpreted as "don't protect the packet". So, in summary, this is how things should be interpreted: TX Flags absent: Use RTS & CTS as needed. TX Flags present: { RTS=0, CTS=0: Use neither RTS nor CTS. RTS=0, CTS=1: Use CTS-to-self. RTS=1, CTS=0: Use RTS/CTS-handshake. RTS=1, CTS=1: Use RTS & CTS as needed. } Alternatively, the meanings of the {0,0} and {1,1} cases could be switched around (making the {0,0} case more logical, at the expense of the {1,1} one): TX Flags absent: Use RTS & CTS as needed. TX Flags present: { RTS=0, CTS=0: Use RTS & CTS as needed. RTS=0, CTS=1: Use CTS-to-self. RTS=1, CTS=0: Use RTS/CTS-handshake. RTS=1, CTS=1: Use neither RTS nor CTS. } (By reading the second proposal again, I find it more and more sympathetic... but let the discussion decide.) --Gábor -- Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-) -- 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