Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 205646
b: refs/heads/master
c: b55515c
h: refs/heads/master
v: v3
  • Loading branch information
Scott Kidder authored and Greg Kroah-Hartman committed Jun 18, 2010
1 parent 10b4f86 commit fc0c0cc
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 133 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 594578979d0e25e178e0243eca9aa53499b89b05
refs/heads/master: b55515cf729a33e49ecbc4f623ead33c735b5a65
251 changes: 119 additions & 132 deletions trunk/drivers/staging/otus/zdusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static const char driver_name[] = "Otus";
/* table of devices that work with this driver */
static const struct usb_device_id zd1221_ids[] = {
{ USB_DEVICE(VENDOR_ATHR, PRODUCT_AR9170) },
{ USB_DEVICE(VENDOR_DLINK, PRODUCT_DWA160A) },
{ USB_DEVICE(VENDOR_DLINK, PRODUCT_DWA160A) },
{ USB_DEVICE(VENDOR_NETGEAR, PRODUCT_WNDA3100) },
{ USB_DEVICE(VENDOR_NETGEAR, PRODUCT_WN111v2) },
{ } /* Terminating entry */
Expand All @@ -60,9 +60,9 @@ extern u8_t zfLnxInitSetup(struct net_device *dev, struct usbdrv_private *macp);
extern int usbdrv_close(struct net_device *dev);
extern u8_t zfLnxClearStructs(struct net_device *dev);
extern int zfWdsClose(struct net_device *dev);
extern int zfUnregisterWdsDev(struct net_device* parentDev, u16_t wdsId);
extern int zfUnregisterWdsDev(struct net_device *parentDev, u16_t wdsId);
extern int zfLnxVapClose(struct net_device *dev);
extern int zfLnxUnregisterVapDev(struct net_device* parentDev, u16_t vapId);
extern int zfLnxUnregisterVapDev(struct net_device *parentDev, u16_t vapId);

/* WDS */
extern struct zsWdsStruct wds[ZM_WDS_PORT_NUMBER];
Expand All @@ -73,148 +73,135 @@ extern struct zsVapStruct vap[ZM_VAP_PORT_NUMBER];
static int zfLnxProbe(struct usb_interface *interface,
const struct usb_device_id *id)
{
struct usb_device *dev = interface_to_usbdev(interface);

struct net_device *net = NULL;
struct usbdrv_private *macp = NULL;
int vendor_id, product_id;
int result = 0;

usb_get_dev(dev);

vendor_id = dev->descriptor.idVendor;
product_id = dev->descriptor.idProduct;

#ifdef HMAC_DEBUG
printk(KERN_NOTICE "vendor_id = %04x\n", vendor_id);
printk(KERN_NOTICE "product_id = %04x\n", product_id);

if (dev->speed == USB_SPEED_HIGH)
printk(KERN_NOTICE "USB 2.0 Host\n");
else
printk(KERN_NOTICE "USB 1.1 Host\n");
#endif

macp = kzalloc(sizeof(struct usbdrv_private), GFP_KERNEL);
if (!macp)
{
printk(KERN_ERR "out of memory allocating device structure\n");
result = -ENOMEM;
goto fail;
}

net = alloc_etherdev(0);

if (net == NULL)
{
printk(KERN_ERR "zfLnxProbe: Not able to alloc etherdev struct\n");
result = -ENOMEM;
goto fail1;
}

strcpy(net->name, "ath%d");

net->ml_priv = macp; //kernel 2.6
macp->udev = dev;
macp->device = net;

/* set up the endpoint information */
/* check out the endpoints */
macp->interface = interface;

//init_waitqueue_head(&macp->regSet_wait);
//init_waitqueue_head(&macp->iorwRsp_wait);
//init_waitqueue_head(&macp->term_wait);

if (!zfLnxAllocAllUrbs(macp))
{
result = -ENOMEM;
goto fail2;
}

if (!zfLnxInitSetup(net, macp))
{
result = -EIO;
goto fail3;
}
else
{
usb_set_intfdata(interface, macp);
SET_NETDEV_DEV(net, &interface->dev);

if (register_netdev(net) != 0)
{
usb_set_intfdata(interface, NULL);
goto fail3;
}
}

netif_carrier_off(net);
goto done;

struct usb_device *dev = interface_to_usbdev(interface);

struct net_device *net = NULL;
struct usbdrv_private *macp = NULL;
int vendor_id, product_id;
int result = 0;

usb_get_dev(dev);

vendor_id = dev->descriptor.idVendor;
product_id = dev->descriptor.idProduct;

#ifdef HMAC_DEBUG
printk(KERN_NOTICE "vendor_id = %04x\n", vendor_id);
printk(KERN_NOTICE "product_id = %04x\n", product_id);

if (dev->speed == USB_SPEED_HIGH)
printk(KERN_NOTICE "USB 2.0 Host\n");
else
printk(KERN_NOTICE "USB 1.1 Host\n");
#endif

macp = kzalloc(sizeof(struct usbdrv_private), GFP_KERNEL);
if (!macp) {
printk(KERN_ERR "out of memory allocating device structure\n");
result = -ENOMEM;
goto fail;
}

net = alloc_etherdev(0);

if (net == NULL) {
printk(KERN_ERR "zfLnxProbe: Not able to alloc etherdev struct\n");
result = -ENOMEM;
goto fail1;
}

strcpy(net->name, "ath%d");

net->ml_priv = macp; /* kernel 2.6 */
macp->udev = dev;
macp->device = net;

/* set up the endpoint information */
/* check out the endpoints */
macp->interface = interface;

/* init_waitqueue_head(&macp->regSet_wait); */
/* init_waitqueue_head(&macp->iorwRsp_wait); */
/* init_waitqueue_head(&macp->term_wait); */

if (!zfLnxAllocAllUrbs(macp)) {
result = -ENOMEM;
goto fail2;
}

if (!zfLnxInitSetup(net, macp)) {
result = -EIO;
goto fail3;
} else {
usb_set_intfdata(interface, macp);
SET_NETDEV_DEV(net, &interface->dev);

if (register_netdev(net) != 0) {
usb_set_intfdata(interface, NULL);
goto fail3;
}
}

netif_carrier_off(net);
goto done;
fail3:
zfLnxFreeAllUrbs(macp);
zfLnxFreeAllUrbs(macp);
fail2:
free_netdev(net); //kernel 2.6
free_netdev(net); /* kernel 2.6 */
fail1:
kfree(macp);

kfree(macp);
fail:
usb_put_dev(dev);
macp = NULL;

usb_put_dev(dev);
macp = NULL;
done:
return result;
return result;
}

static void zfLnxDisconnect(struct usb_interface *interface)
{
struct usbdrv_private *macp = (struct usbdrv_private *) usb_get_intfdata(interface);

printk(KERN_DEBUG "zfLnxDisconnect\n");

if (!macp)
{
printk(KERN_ERR "unregistering non-existant device\n");
return;
}

if (macp->driver_isolated)
{
if (macp->device->flags & IFF_UP)
usbdrv_close(macp->device);
}

#if 0
/* Close WDS */
//zfWdsClose(wds[0].dev);
/* Unregister WDS */
//zfUnregisterWdsDev(macp->device, 0);

/* Close VAP */
zfLnxVapClose(vap[0].dev);
/* Unregister VAP */
zfLnxUnregisterVapDev(macp->device, 0);
#endif
struct usbdrv_private *macp = (struct usbdrv_private *) usb_get_intfdata(interface);

printk(KERN_DEBUG "zfLnxDisconnect\n");

if (!macp) {
printk(KERN_ERR "unregistering non-existant device\n");
return;
}

if (macp->driver_isolated)
if (macp->device->flags & IFF_UP)
usbdrv_close(macp->device);

#if 0
/* Close WDS */
/* zfWdsClose(wds[0].dev); */
/* Unregister WDS */
/* zfUnregisterWdsDev(macp->device, 0); */

/* Close VAP */
zfLnxVapClose(vap[0].dev);
/* Unregister VAP */
zfLnxUnregisterVapDev(macp->device, 0);
#endif

zfLnxClearStructs(macp->device);
zfLnxClearStructs(macp->device);

unregister_netdev(macp->device);
unregister_netdev(macp->device);

usb_put_dev(interface_to_usbdev(interface));
usb_put_dev(interface_to_usbdev(interface));

//printk(KERN_ERR "3. zfLnxUnlinkAllUrbs\n");
//zfLnxUnlinkAllUrbs(macp);
/* printk(KERN_ERR "3. zfLnxUnlinkAllUrbs\n"); */
/* zfLnxUnlinkAllUrbs(macp); */

/* Free network interface */
free_netdev(macp->device);
/* Free network interface */
free_netdev(macp->device);

zfLnxFreeAllUrbs(macp);
//zfLnxClearStructs(macp->device);
kfree(macp);
macp = NULL;
zfLnxFreeAllUrbs(macp);
/* zfLnxClearStructs(macp->device); */
kfree(macp);
macp = NULL;

usb_set_intfdata(interface, NULL);
usb_set_intfdata(interface, NULL);
}

static struct usb_driver zd1221_driver = {
Expand All @@ -226,13 +213,13 @@ static struct usb_driver zd1221_driver = {

int __init zfLnxIinit(void)
{
printk(KERN_NOTICE "%s - version %s\n", DRIVER_NAME, VERSIONID);
return usb_register(&zd1221_driver);
printk(KERN_NOTICE "%s - version %s\n", DRIVER_NAME, VERSIONID);
return usb_register(&zd1221_driver);
}

void __exit zfLnxExit(void)
{
usb_deregister(&zd1221_driver);
usb_deregister(&zd1221_driver);
}

module_init(zfLnxIinit);
Expand Down

0 comments on commit fc0c0cc

Please sign in to comment.