> > The other way I could imagine would be to export, in a yet to be defined > > way, a radiotap header that lists the capabilities. For example, upon > > feature query you'd return a header like this: > > > > 0x00, 0x00, // <-- radiotap version > > 0x0b, 0x00, // <- radiotap header length > > 0x04, 0x84, 0x00, 0x00, // <-- bitmap > > 0x00, // <-- rate > > 0x00, // <-- tx power > > 0x08, 0x00 // <-- tx flags > > > > This would indicate support for controlling > > * rate > > * tx power > > * tx flags - only no-ACK > > > > How to export this information is to be determined and would most likely > > be platform dependent though. > > Some standardization may be possible. For example, Linux, *BSD, et > cetera, may be able to share a getsockopt(2) interface for querying > the capabilities on a socket. Platforms with BPF could share an > ioctl(2) interface for the same. Indeed, that would be doable. Any suggestions? > > Thoughts? > > Suppose that we let the OS pass back one or more "capability headers." > Each capability header consists of two radiotap headers. The first > header contains supported Tx parameters. The second header must be as > long as the first, and it is a bitmap that tells which bits are variable > (0) and which are fixed (1). In your example, the first header > > > 0x00, 0x00, // <-- radiotap version > > 0x0b, 0x00, // <- radiotap header length > > 0x04, 0x84, 0x00, 0x00, // <-- bitmap > > 0x00, // <-- rate > > 0x00, // <-- tx power > > 0x08, 0x00 // <-- tx flags > > may be followed by the bitmap > > > 0xff, 0xff, // <-- radiotap version > > 0xf0, 0xff, // <- radiotap header length > > 0xfb, 0x7b, 0xff, 0xff, // <-- bitmap > > 0x00, // <-- rate > > 0x00, // <-- tx power > > 0xf7, 0xff // <-- tx flags > > meaning that only radiotap version 0 is supported, the header length is > somewhat variable, only rate, tx power and flags may be set, and only > the no-ACK Tx flag is allowed. Hmm. That seems useful on first sight, but is it really? It seems to be useful only for things like the tx flags. Supporting multiple radiotap versions is still impossible, since the bits would have entirely different meanings, or even the format changed, otherwise we wouldn't have cycled the version number. For the bitmap we already know - I don't think any reasonable implementation would _require_ some field to be present. For rate/txpower there may be limits you cannot express with this, but must discover in some other way, or the implementation just clamps or something. So that leaves tx flags only, and could there really be flags that are _required_ to be set or will be assumed to be set? I guess with the 'override default' thing I just asked for that might make sense... johannes