[RFC] libertas: first stab at cfg80211 support
Holger Schurig
h.schurig at mn-solutions.de
Mon Sep 28 10:54:08 EDT 2009
> This seems wrong -- doesn't libertas have multiple netdevs?
> You're treating wdev == wiphy it seems here, rather than wdev
> == netdev.
Yes, it has three netdevs, but they aren't all setup at
card-initialization time.
Some details: "struct private" contains:
struct net_device *dev;
struct net_device *mesh_dev; /* Virtual device */
struct net_device *rtap_net_dev;
The old code did have an
dev = alloc_etherdev(sizeof(struct lbs_private));"
and the other two netdevs got initialized at some other location:
* priv->lbs_add_mesh() in lbs_add_mesh()
via "alloc_netdev(0, "msh%d", ether_setup)". And lbs_add_mesh()
is called only when the hardware supports this.
* rtap_net_dev is created in lbs_add_rtap() and again I haven't
change the creation of this thingy.
Please note that when I'm using the card in station mode, both
mesh_dev and rtap_net_dev are NULL. My firmware doesn't have
mesh code, and only when I set the card into monitor mode will
the rtap_net_dev created.
I kept this behavior for now: at initialzation I call:
wdev = lbs_wdev_alloc(sizeof(struct lbs_private), dmdev);
wdev->xyz = initialization;
...
dev = alloc_netdev()
For me it's not clear if I should create wdev's for mesh_dev and
rtap_net_dev as well. However, I'm not able to check the mesh
code anyway: my firmware doesn't support this. And for
rtap_net_dev I'm not sure if this shouldn't be handled
differently in a cfg80211 scenario, e.g. via
lbs_cfg80211_change_iface().
A hint of what I should then would be most welcome :-)
--
M&N Solutions GmbH Ein Unternehmen der Datagroup AG
Holger Schurig
Raiffeisenstr. 10
61191 Rosbach
Tel: 06003/9141-15 Fax 06003/9141-49
http://www.mn-solutions.de/
Handelsregister Friedberg, HRB 5903
Geschäftsführer: P.Schrittenlocher
More information about the libertas-dev
mailing list