|
@@ -1201,16 +1201,18 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
|
|
|
struct hso_serial *serial = urb->context;
|
|
|
int status = urb->status;
|
|
|
|
|
|
+ D4("\n--- Got serial_read_bulk callback %02x ---", status);
|
|
|
+
|
|
|
/* sanity check */
|
|
|
if (!serial) {
|
|
|
D1("serial == NULL");
|
|
|
return;
|
|
|
- } else if (status) {
|
|
|
+ }
|
|
|
+ if (status) {
|
|
|
handle_usb_error(status, __func__, serial->parent);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- D4("\n--- Got serial_read_bulk callback %02x ---", status);
|
|
|
D1("Actual length = %d\n", urb->actual_length);
|
|
|
DUMP1(urb->transfer_buffer, urb->actual_length);
|
|
|
|
|
@@ -1218,25 +1220,13 @@ static void hso_std_serial_read_bulk_callback(struct urb *urb)
|
|
|
if (serial->port.count == 0)
|
|
|
return;
|
|
|
|
|
|
- if (status == 0) {
|
|
|
- if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
|
|
|
- fix_crc_bug(urb, serial->in_endp->wMaxPacketSize);
|
|
|
- /* Valid data, handle RX data */
|
|
|
- spin_lock(&serial->serial_lock);
|
|
|
- serial->rx_urb_filled[hso_urb_to_index(serial, urb)] = 1;
|
|
|
- put_rxbuf_data_and_resubmit_bulk_urb(serial);
|
|
|
- spin_unlock(&serial->serial_lock);
|
|
|
- } else if (status == -ENOENT || status == -ECONNRESET) {
|
|
|
- /* Unlinked - check for throttled port. */
|
|
|
- D2("Port %d, successfully unlinked urb", serial->minor);
|
|
|
- spin_lock(&serial->serial_lock);
|
|
|
- serial->rx_urb_filled[hso_urb_to_index(serial, urb)] = 0;
|
|
|
- hso_resubmit_rx_bulk_urb(serial, urb);
|
|
|
- spin_unlock(&serial->serial_lock);
|
|
|
- } else {
|
|
|
- D2("Port %d, status = %d for read urb", serial->minor, status);
|
|
|
- return;
|
|
|
- }
|
|
|
+ if (serial->parent->port_spec & HSO_INFO_CRC_BUG)
|
|
|
+ fix_crc_bug(urb, serial->in_endp->wMaxPacketSize);
|
|
|
+ /* Valid data, handle RX data */
|
|
|
+ spin_lock(&serial->serial_lock);
|
|
|
+ serial->rx_urb_filled[hso_urb_to_index(serial, urb)] = 1;
|
|
|
+ put_rxbuf_data_and_resubmit_bulk_urb(serial);
|
|
|
+ spin_unlock(&serial->serial_lock);
|
|
|
}
|
|
|
|
|
|
/*
|