Subject: Re: [Bcm43xx-dev] [Fwd: State of the Union: Wireless]

From: Michael Buesch <[email-masked]>
Date: Fri, 6 Jan 2006 12:00:59 +0100

> > * We really have no wireless maintainer.  I'm just the defacto guy,
> >   with no interest in the job.  The ideal maintainer knows 802.11 well,
> >   uses git, and isn't an asshole with no taste.  I'm just the guy who
> >   wants to make sure the net driver portion doesn't turn out to be a
> >   stinker (read: review and pass up the chain).

That problem is easiest to solve. ;)

> > * Wireless management, in particular the wireless kernel<->user
> >   interface, needs some thinking.  Wireless Extensions (WE) isn't
> >   cutting it, but I haven't seen any netlink work yet (or some
> >   other interface).  Whatever the userspace interface is, it will be
> >   basically carved in stone for years (unlike kernel APIs), so this
> >   needs a lot more thought than people have been giving it.

We did some brainstorming about this yesterday evening on the bcm
irc channel. I think we all agreed on dropping WE.
So, now we asked: How would a sane UI look like. We had a few points:
* The interface needs to support some kind of "master" interface to
configure the hardware, 80211 parameters and
to actually configure and setup the
* Virtual interfaces.
Data is transferred only though the virtual interfaces, which could
be an AP interface, a STA interface in INFRA or Ad-Hoc mode, etc... .
Configuration is done though the master interface.

How would the virtual interfaces look like? That is quite easy to answer.
They are net_devices, as they transfer data.
They should probaly _not_ be on top of the ethernet, as 80211 does not
have very much in common with ethernet. Basically they share the same
MAC address format. Does someone have another thing, which he thinks
is shared?
How would the master interface look like? A somewhat unusual idea came
up. Using a device node in /dev. So every wireless card in the system
would have a node in /dev associated (/dev/wlan0 for example).
A node for the master device would be ok, because no data is transferred
through it. It is only a configuration interface.
So you would tell the, yet-to-be-written userspace tool wconfig (or something
like that) "I need a STA in INFRA mode and want to drive it on the
wlan0 card". So wconfig goes and write()s some data to /dev/wlan0
telling the 80211 code to setup a virtual net_device for the driver
associated to /dev/wlan0.
The virtual interface is then configured though /dev/wlan0 using write()
(no ugly ioctl anymore, you see...). Config data like TX rate,
current essid,.... basically everything + xyz which is done by WE today,
is written to /dev/wlan0.
This config data is entirely cached in the 80211 code for the /dev/wlan0
instance. This is important, to have the data persistent throughout
suspend/resume cycles, if up/down cycles.
After configuring, a virtual net_device (let's call it wlan0) exists,
which can be brought up by ifconfig and data can be transferred though
it as usual.

This whole concept is derived from how dscape does the stuff.
With a major exception, that a device node instead of a net_device
is used for the master device. With the effect of getting rid of the
ugly WE ioctl stuff.

> > * Long term, wireless should go from being a library of common code to a
> >   "real" wireless stack, as shown in the template developed by David Miller:
> >   http://kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/davem-p80211.tar.bz2
> >   Zhu Yi @ Intel and Vladmir @ somewhere both independently did some
> >   work in this area.

This looks very interresting and in fact is part of our thoughts I
explained above.

> > * I prefer GPL-only code.  Dual licensing has proven in practice to
> >   be a logistical nightmare that concentrates power in the hands of
> >   a few.  Dual licensing, BSD licensing works for some, but GPL-only
> >   code is quite simply the least amount of flamewars, headaches
> >   and worry.  IOW, the P.I.T.A. level of GPL-only code is lowest.

I personally prefer EXPORT_SYMBOL_GPL().
But that's only my opinion and that does not really matter. ;)

> > Dual licensed code gives kernel hackers yet more legal crapola to
> > worry about, which is never a good thing.

I don't see a point in dual licensing it.
The only benefit would be to allow BSD people to take the code.
Honestly, I really don't see this happening, anyway. ;)
They have net80211.

> > Patches welcome from all motivated, clueful parties.  Jiri Benc has a
> > long series of patches that looks nice.  Johannes Berg has done some
> > work on the ieee80211 softmac stuff and hw WEP.  But maybe DeviceScape
> > is what people like now.

Well, "like" is a strong word. I personally would say "It is better than
all currently existing solutions, if some final polishing is done to dscape."

-- 
Greetings Michael.