static void xpad_irq_in(struct urb *urb) { struct usb_xpad *xpad = urb->context; struct device *dev = &xpad->intf->dev; int retval, status; status = urb->status; switch (status) { case 0: /* success */ break; case -ECONNRESET: case -ENOENT: case -ESHUTDOWN: /* this urb is terminated, clean up */ dev_dbg(dev, "%s - urb shutting down with status: %d\n", __func__, status); return; default: dev_dbg(dev, "%s - nonzero urb status received: %d\n", __func__, status); goto exit; } switch (xpad->xtype) { case XTYPE_XBOX360: trace_joystick_irq("Joystick_xpad360_process_packet"); xpad360_process_packet(xpad, 0, xpad->idata); break; case XTYPE_XBOX360W: trace_joystick_irq("Joystick_xpad360w_process_packet"); xpad360w_process_packet(xpad, 0, xpad->idata); break; default: trace_joystick_irq("Joystick_xpad_process_packet"); xpad_process_packet(xpad, 0, xpad->idata); } exit: trace_joystick_irq("Joystick_xpad_usb_submit_urb"); retval = usb_submit_urb(urb, GFP_ATOMIC); if (retval) dev_err(dev, "%s - usb_submit_urb failed with result %d\n", __func__, retval); }
static void xpad_irq_in(struct urb *urb) { struct usb_xpad *xpad = urb->context; int retval, status; 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", __func__, status); return; case -EPIPE: case -EPROTO: schedule_work(&xpad->submit_urb); return; default: dbg("%s - nonzero urb status received: %d", __func__, status); goto exit; } switch (xpad->xtype) { case XTYPE_XBOX360: xpad360_process_packet(xpad, 0, xpad->idata); break; case XTYPE_XBOX360W: xpad360w_process_packet(xpad, 0, xpad->idata); break; default: xpad_process_packet(xpad, 0, xpad->idata); } exit: retval = usb_submit_urb(urb, GFP_ATOMIC); if (retval) err ("%s - usb_submit_urb failed with result %d", __func__, retval); }