|
@@ -635,8 +635,7 @@ static int digi_write_oob_command(struct usb_serial_port *port,
|
|
|
|
|
|
spin_lock_irqsave(&oob_priv->dp_port_lock, flags);
|
|
|
while (count > 0) {
|
|
|
- while (oob_port->write_urb->status == -EINPROGRESS
|
|
|
- || oob_priv->dp_write_urb_in_use) {
|
|
|
+ while (oob_priv->dp_write_urb_in_use) {
|
|
|
cond_wait_interruptible_timeout_irqrestore(
|
|
|
&oob_port->write_wait, DIGI_RETRY_TIMEOUT,
|
|
|
&oob_priv->dp_port_lock, flags);
|
|
@@ -699,9 +698,8 @@ static int digi_write_inb_command(struct usb_serial_port *port,
|
|
|
|
|
|
spin_lock_irqsave(&priv->dp_port_lock, flags);
|
|
|
while (count > 0 && ret == 0) {
|
|
|
- while ((port->write_urb->status == -EINPROGRESS
|
|
|
- || priv->dp_write_urb_in_use)
|
|
|
- && time_before(jiffies, timeout)) {
|
|
|
+ while (priv->dp_write_urb_in_use &&
|
|
|
+ time_before(jiffies, timeout)) {
|
|
|
cond_wait_interruptible_timeout_irqrestore(
|
|
|
&port->write_wait, DIGI_RETRY_TIMEOUT,
|
|
|
&priv->dp_port_lock, flags);
|
|
@@ -779,8 +777,7 @@ static int digi_set_modem_signals(struct usb_serial_port *port,
|
|
|
spin_lock_irqsave(&oob_priv->dp_port_lock, flags);
|
|
|
spin_lock(&port_priv->dp_port_lock);
|
|
|
|
|
|
- while (oob_port->write_urb->status == -EINPROGRESS ||
|
|
|
- oob_priv->dp_write_urb_in_use) {
|
|
|
+ while (oob_priv->dp_write_urb_in_use) {
|
|
|
spin_unlock(&port_priv->dp_port_lock);
|
|
|
cond_wait_interruptible_timeout_irqrestore(
|
|
|
&oob_port->write_wait, DIGI_RETRY_TIMEOUT,
|
|
@@ -1168,12 +1165,10 @@ static int digi_write(struct tty_struct *tty, struct usb_serial_port *port,
|
|
|
|
|
|
/* be sure only one write proceeds at a time */
|
|
|
/* there are races on the port private buffer */
|
|
|
- /* and races to check write_urb->status */
|
|
|
spin_lock_irqsave(&priv->dp_port_lock, flags);
|
|
|
|
|
|
/* wait for urb status clear to submit another urb */
|
|
|
- if (port->write_urb->status == -EINPROGRESS ||
|
|
|
- priv->dp_write_urb_in_use) {
|
|
|
+ if (priv->dp_write_urb_in_use) {
|
|
|
/* buffer data if count is 1 (probably put_char) if possible */
|
|
|
if (count == 1 && priv->dp_out_buf_len < DIGI_OUT_BUF_SIZE) {
|
|
|
priv->dp_out_buf[priv->dp_out_buf_len++] = *buf;
|
|
@@ -1236,7 +1231,7 @@ static void digi_write_bulk_callback(struct urb *urb)
|
|
|
int ret = 0;
|
|
|
int status = urb->status;
|
|
|
|
|
|
- dbg("digi_write_bulk_callback: TOP, urb->status=%d", status);
|
|
|
+ dbg("digi_write_bulk_callback: TOP, status=%d", status);
|
|
|
|
|
|
/* port and serial sanity check */
|
|
|
if (port == NULL || (priv = usb_get_serial_port_data(port)) == NULL) {
|
|
@@ -1266,8 +1261,7 @@ static void digi_write_bulk_callback(struct urb *urb)
|
|
|
/* try to send any buffered data on this port, if it is open */
|
|
|
spin_lock(&priv->dp_port_lock);
|
|
|
priv->dp_write_urb_in_use = 0;
|
|
|
- if (port->port.count && port->write_urb->status != -EINPROGRESS
|
|
|
- && priv->dp_out_buf_len > 0) {
|
|
|
+ if (port->port.count && priv->dp_out_buf_len > 0) {
|
|
|
*((unsigned char *)(port->write_urb->transfer_buffer))
|
|
|
= (unsigned char)DIGI_CMD_SEND_DATA;
|
|
|
*((unsigned char *)(port->write_urb->transfer_buffer) + 1)
|
|
@@ -1305,8 +1299,7 @@ static int digi_write_room(struct tty_struct *tty)
|
|
|
|
|
|
spin_lock_irqsave(&priv->dp_port_lock, flags);
|
|
|
|
|
|
- if (port->write_urb->status == -EINPROGRESS ||
|
|
|
- priv->dp_write_urb_in_use)
|
|
|
+ if (priv->dp_write_urb_in_use)
|
|
|
room = 0;
|
|
|
else
|
|
|
room = port->bulk_out_size - 2 - priv->dp_out_buf_len;
|
|
@@ -1322,8 +1315,7 @@ static int digi_chars_in_buffer(struct tty_struct *tty)
|
|
|
struct usb_serial_port *port = tty->driver_data;
|
|
|
struct digi_port *priv = usb_get_serial_port_data(port);
|
|
|
|
|
|
- if (port->write_urb->status == -EINPROGRESS
|
|
|
- || priv->dp_write_urb_in_use) {
|
|
|
+ if (priv->dp_write_urb_in_use) {
|
|
|
dbg("digi_chars_in_buffer: port=%d, chars=%d",
|
|
|
priv->dp_port_num, port->bulk_out_size - 2);
|
|
|
/* return(port->bulk_out_size - 2); */
|
|
@@ -1702,7 +1694,7 @@ static int digi_read_inb_callback(struct urb *urb)
|
|
|
/* short/multiple packet check */
|
|
|
if (urb->actual_length != len + 2) {
|
|
|
dev_err(&port->dev, "%s: INCOMPLETE OR MULTIPLE PACKET, "
|
|
|
- "urb->status=%d, port=%d, opcode=%d, len=%d, "
|
|
|
+ "status=%d, port=%d, opcode=%d, len=%d, "
|
|
|
"actual_length=%d, status=%d\n", __func__, status,
|
|
|
priv->dp_port_num, opcode, len, urb->actual_length,
|
|
|
port_status);
|