diff options
author | Denis Joseph Barrow <D.Barow@option.com> | 2008-11-25 09:30:48 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-25 09:30:48 +0100 |
commit | 89930b7b5e3e9bfe9c6ec5e19920451c8f5d9088 (patch) | |
tree | a2e43106f1b64b0f250223db5ac99f3c4a3fa598 /drivers/net/usb | |
parent | hso: Fix crashes on close. (diff) | |
download | linux-89930b7b5e3e9bfe9c6ec5e19920451c8f5d9088.tar.xz linux-89930b7b5e3e9bfe9c6ec5e19920451c8f5d9088.zip |
hso: Fix URB submission -EINVAL.
Added check for IFF_UP in hso_resume, this should eliminate -EINVAL (-22)
errors caused from urb's being submitted twice, once by hso_resume
& once in hso_net_open, if suspend/resume USB power saving mode is enabled
Signed-off-by: Denis Joseph Barrow <D.Barow@option.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb')
-rw-r--r-- | drivers/net/usb/hso.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index d5857321979b..2c172435495f 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -2762,18 +2762,21 @@ static int hso_resume(struct usb_interface *iface) if (network_table[i] && (network_table[i]->interface == iface)) { hso_net = dev2net(network_table[i]); - /* First transmit any lingering data, then restart the - * device. */ - if (hso_net->skb_tx_buf) { - dev_dbg(&iface->dev, - "Transmitting lingering data\n"); - hso_net_start_xmit(hso_net->skb_tx_buf, - hso_net->net); - hso_net->skb_tx_buf = NULL; + if (hso_net->flags & IFF_UP) { + /* First transmit any lingering data, + then restart the device. */ + if (hso_net->skb_tx_buf) { + dev_dbg(&iface->dev, + "Transmitting" + " lingering data\n"); + hso_net_start_xmit(hso_net->skb_tx_buf, + hso_net->net); + hso_net->skb_tx_buf = NULL; + } + result = hso_start_net_device(network_table[i]); + if (result) + goto out; } - result = hso_start_net_device(network_table[i]); - if (result) - goto out; } } |