Dan Williams scribbled: > Great!! I've seen about 10 people using ndiswrapper so far that are > having problems, both on this list and Fedora lists. Could you post the > patch to this list (or email it to me, I'm interested in it)? How hard > will it be to get upstream? I'm attaching it and CC:ing this list as well as the ndiswrapper-general list. I don't know how difficult this will be to get included upstream. It was a farily trivial patch to get working. This patch is against wrapper.c from ndiswrapper-0.11. Caveats: this is my first delving into kernel code. The USB patches are untested, as I don't have any USB/ndiswrapper devices. The kludge of passing NULL as the device if the kernel rev is <2.6 is icky, but it works. > What the ndiswrapper developers have to understand is that their stuff > is fundamentally broken until they support sysfs. They don't really > need a 'driver' link (though it would be really, really nice), but a > 'device' link is almost mandatory. It has to get done in ndiswrapper > because the Windows drivers, of course, aren't going to set a NETDEV on > themselves :) Can't imagine why. :) > Dan ja. -- Joe Ammond joe ammond org My new toy: http://www.ammond.org/Spitfire
--- wrapper.c.orig 2004-11-04 18:31:51.000000000 -0600 +++ wrapper.c 2004-11-05 12:01:38.719783112 -0600 @@ -1385,7 +1385,8 @@ static struct net_device *ndis_init_netdev(struct ndis_handle **phandle, struct ndis_device *device, - struct ndis_driver *driver) + struct ndis_driver *driver, + struct device *netdev) { int i, *ip; struct net_device *dev; @@ -1398,7 +1399,8 @@ } SET_MODULE_OWNER(dev); -// SET_NETDEV_DEV(dev, &pdev->dev); + if (netdev != NULL) + SET_NETDEV_DEV(dev, netdev); handle = dev->priv; /* Poision the fileds as they may contain function pointers @@ -1502,7 +1504,7 @@ "mind if you have problem.\n", device->driver->name); } - dev = ndis_init_netdev(&handle, device, driver); + dev = ndis_init_netdev(&handle, device, driver, &pdev->dev); if(!dev) { printk(KERN_ERR "Unable to alloc etherdev\n"); @@ -1610,7 +1612,11 @@ TRACEENTER1("%04x:%04x\n", usb_id->idVendor, usb_id->idProduct); - dev = ndis_init_netdev(&handle, device, driver); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) + dev = ndis_init_netdev(&handle, device, driver, &intf->dev); +#else + dev = ndis_init_netdev(&handle, device, driver, NULL); +#endif if(!dev) { ERROR("%s", "Unable to alloc etherdev\n"); res = -ENOMEM;
Attachment:
pgptN4FRm6yHA.pgp
Description: PGP signature