On Mon, 2009-09-28 at 16:54 +0200, Holger Schurig wrote: > 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(). Interesting. > A hint of what I should then would be most welcome :-) It might make sense to support adding interfaces with nl80211, since apparently it has mesh and monitor interfaces. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part