X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Fserial%2Fipw.c;h=e760a70242c1ccace3664f1b2e46d72e67bb6386;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=812bc213a963349643b0e974cdf8b47629b57fef;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/usb/serial/ipw.c b/drivers/usb/serial/ipw.c index 812bc213a..e760a7024 100644 --- a/drivers/usb/serial/ipw.c +++ b/drivers/usb/serial/ipw.c @@ -46,8 +46,8 @@ #include #include #include -#include #include +#include "usb-serial.h" /* * Version Information @@ -373,12 +373,10 @@ static void ipw_write_bulk_callback(struct urb *urb, struct pt_regs *regs) dbg("%s", __FUNCTION__); - port->write_urb_busy = 0; - if (urb->status) dbg("%s - nonzero write bulk status received: %d", __FUNCTION__, urb->status); - usb_serial_port_softint(port); + schedule_work(&port->work); } static int ipw_write(struct usb_serial_port *port, const unsigned char *buf, int count) @@ -394,14 +392,14 @@ static int ipw_write(struct usb_serial_port *port, const unsigned char *buf, int return 0; } - spin_lock_bh(&port->lock); + spin_lock(&port->lock); if (port->write_urb_busy) { - spin_unlock_bh(&port->lock); + spin_unlock(&port->lock); dbg("%s - already writing", __FUNCTION__); return 0; } port->write_urb_busy = 1; - spin_unlock_bh(&port->lock); + spin_unlock(&port->lock); count = min(count, port->bulk_out_size); memcpy(port->bulk_out_buffer, buf, count);