diff options
author | Jan Dumon <j.dumon@option.com> | 2010-01-04 23:51:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-01-07 03:43:45 -0500 |
commit | f4763e96c08ea0790750603999e5b3158c3b50d4 (patch) | |
tree | ec0b326a66ae8eea1b179c8b3b698b5c8d5020d0 /drivers/net | |
parent | d9ced80d1084758772d350ac66b1ad0eeefc7f95 (diff) |
hso: don't change the state of a closed port
Don't change the state of a port if it's not open. This fixes an issue where a
port sometimes has to be opened twice before data can be received.
Signed-off-by: Jan Dumon <j.dumon@option.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/usb/hso.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index aba90e77e077..fb1c5ac55c01 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c | |||
@@ -1915,18 +1915,18 @@ static void intr_callback(struct urb *urb) | |||
1915 | if (serial != NULL) { | 1915 | if (serial != NULL) { |
1916 | D1("Pending read interrupt on port %d\n", i); | 1916 | D1("Pending read interrupt on port %d\n", i); |
1917 | spin_lock(&serial->serial_lock); | 1917 | spin_lock(&serial->serial_lock); |
1918 | if (serial->rx_state == RX_IDLE) { | 1918 | if (serial->rx_state == RX_IDLE && |
1919 | serial->open_count > 0) { | ||
1919 | /* Setup and send a ctrl req read on | 1920 | /* Setup and send a ctrl req read on |
1920 | * port i */ | 1921 | * port i */ |
1921 | if (!serial->rx_urb_filled[0]) { | 1922 | if (!serial->rx_urb_filled[0]) { |
1922 | serial->rx_state = RX_SENT; | 1923 | serial->rx_state = RX_SENT; |
1923 | hso_mux_serial_read(serial); | 1924 | hso_mux_serial_read(serial); |
1924 | } else | 1925 | } else |
1925 | serial->rx_state = RX_PENDING; | 1926 | serial->rx_state = RX_PENDING; |
1926 | |||
1927 | } else { | 1927 | } else { |
1928 | D1("Already pending a read on " | 1928 | D1("Already a read pending on " |
1929 | "port %d\n", i); | 1929 | "port %d or port not open\n", i); |
1930 | } | 1930 | } |
1931 | spin_unlock(&serial->serial_lock); | 1931 | spin_unlock(&serial->serial_lock); |
1932 | } | 1932 | } |