On Monday 27 November 2006 9:41 am, Oliver Neukum wrote:
> Hi,
> 
> as David has objected to the patch against the gl620a driver,
> here's a patch implementing David' suggestion of removing the incomplete
> ifdefed code from the gl620a driver.
> 
>       Regards
>               Oliver
> 
> Signed-off-by: Oliver Neukum <[EMAIL PROTECTED]>

Signed-off-by: David Brownell <[EMAIL PROTECTED]>

> 
> --- drivers/usb/net/gl620a.c.old      2006-11-16 05:03:40.000000000 +0100
> +++ drivers/usb/net/gl620a.c  2006-11-27 18:29:51.000000000 +0100
> @@ -79,160 +79,6 @@
>       struct gl_packet        packets;
>  };
>  
> -#ifdef       GENELINK_ACK
> -
> -// FIXME:  this code is incomplete, not debugged; it doesn't
> -// handle interrupts correctly; it should use the generic
> -// status IRQ code (which didn't exist back in 2001).
> -
> -struct gl_priv {
> -     struct urb      *irq_urb;
> -     char            irq_buf [INTERRUPT_BUFSIZE];
> -};
> -
> -static inline int gl_control_write(struct usbnet *dev, u8 request, u16 value)
> -{
> -     int retval;
> -
> -     retval = usb_control_msg(dev->udev,
> -                   usb_sndctrlpipe(dev->udev, 0),
> -                   request,
> -                   USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
> -                   value,
> -                   0,                        // index
> -                   0,                        // data buffer
> -                   0,                        // size
> -                   USB_CTRL_SET_TIMEOUT);
> -     return retval;
> -}
> -
> -static void gl_interrupt_complete(struct urb *urb)
> -{
> -     int status = urb->status;
> -
> -     switch (status) {
> -     case 0:
> -             /* success */
> -             break;
> -     case -ECONNRESET:
> -     case -ENOENT:
> -     case -ESHUTDOWN:
> -             /* this urb is terminated, clean up */
> -             dbg("%s - urb shutting down with status: %d",
> -                             __FUNCTION__, status);
> -             return;
> -     default:
> -             dbg("%s - nonzero urb status received: %d",
> -                             __FUNCTION__, urb->status);
> -     }
> -
> -     status = usb_submit_urb(urb, GFP_ATOMIC);
> -     if (status)
> -             err("%s - usb_submit_urb failed with result %d",
> -                  __FUNCTION__, status);
> -}
> -
> -static int gl_interrupt_read(struct usbnet *dev)
> -{
> -     struct gl_priv  *priv = dev->priv_data;
> -     int             retval;
> -
> -     // issue usb interrupt read
> -     if (priv && priv->irq_urb) {
> -             // submit urb
> -             if ((retval = usb_submit_urb(priv->irq_urb, GFP_KERNEL)) != 0)
> -                     dbg("gl_interrupt_read: submit fail - %X...", retval);
> -             else
> -                     dbg("gl_interrupt_read: submit success...");
> -     }
> -
> -     return 0;
> -}
> -
> -// check whether another side is connected
> -static int genelink_check_connect(struct usbnet *dev)
> -{
> -     int                     retval;
> -
> -     dbg("genelink_check_connect...");
> -
> -     // detect whether another side is connected
> -     if ((retval = gl_control_write(dev, GENELINK_CONNECT_WRITE, 0)) != 0) {
> -             dbg("%s: genelink_check_connect write fail - %X",
> -                     dev->net->name, retval);
> -             return retval;
> -     }
> -
> -     // usb interrupt read to ack another side
> -     if ((retval = gl_interrupt_read(dev)) != 0) {
> -             dbg("%s: genelink_check_connect read fail - %X",
> -                     dev->net->name, retval);
> -             return retval;
> -     }
> -
> -     dbg("%s: genelink_check_connect read success", dev->net->name);
> -     return 0;
> -}
> -
> -// allocate and initialize the private data for genelink
> -static int genelink_init(struct usbnet *dev)
> -{
> -     struct gl_priv *priv;
> -
> -     // allocate the private data structure
> -     if ((priv = kmalloc(sizeof *priv, GFP_KERNEL)) == 0) {
> -             dbg("%s: cannot allocate private data per device",
> -                     dev->net->name);
> -             return -ENOMEM;
> -     }
> -
> -     // allocate irq urb
> -     if ((priv->irq_urb = usb_alloc_urb(0, GFP_KERNEL)) == 0) {
> -             dbg("%s: cannot allocate private irq urb per device",
> -                     dev->net->name);
> -             kfree(priv);
> -             return -ENOMEM;
> -     }
> -
> -     // fill irq urb
> -     usb_fill_int_urb(priv->irq_urb, dev->udev,
> -             usb_rcvintpipe(dev->udev, GENELINK_INTERRUPT_PIPE),
> -             priv->irq_buf, INTERRUPT_BUFSIZE,
> -             gl_interrupt_complete, 0,
> -             GENELINK_INTERRUPT_INTERVAL);
> -
> -     // set private data pointer
> -     dev->priv_data = priv;
> -
> -     return 0;
> -}
> -
> -// release the private data
> -static int genelink_free(struct usbnet *dev)
> -{
> -     struct gl_priv  *priv = dev->priv_data;
> -
> -     if (!priv)
> -             return 0;
> -
> -// FIXME:  can't cancel here; it's synchronous, and
> -// should have happened earlier in any case (interrupt
> -// handling needs to be generic)
> -
> -     // cancel irq urb first
> -     usb_kill_urb(priv->irq_urb);
> -
> -     // free irq urb
> -     usb_free_urb(priv->irq_urb);
> -
> -     // free the private data structure
> -     kfree(priv);
> -
> -     return 0;
> -}
> -
> -#endif
> -
>  static int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
>  {
>       struct gl_header        *header;
> 

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to