isdn/gigaset: try USB reset for bas_gigaset error recovery
In error_reset(), if sending HD_RESET_INTERRUPT_PIPE to the device fails, try performing an USB reset. Also correct an error in the leading comment. Signed-off-by: Tilman Schmidt <tilman@imap.cc> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1d5a9edcd5
commit
60798c68be
1 changed files with 4 additions and 2 deletions
|
@ -350,7 +350,7 @@ static inline void error_hangup(struct bc_state *bcs)
|
||||||
* reset Gigaset device because of an unrecoverable error
|
* reset Gigaset device because of an unrecoverable error
|
||||||
* This function may be called from any context, and takes care of
|
* This function may be called from any context, and takes care of
|
||||||
* scheduling the necessary actions for execution outside of interrupt context.
|
* scheduling the necessary actions for execution outside of interrupt context.
|
||||||
* cs->lock must not be held.
|
* cs->hw.bas->lock must not be held.
|
||||||
* argument:
|
* argument:
|
||||||
* controller state structure
|
* controller state structure
|
||||||
*/
|
*/
|
||||||
|
@ -358,7 +358,9 @@ static inline void error_reset(struct cardstate *cs)
|
||||||
{
|
{
|
||||||
/* reset interrupt pipe to recover (ignore errors) */
|
/* reset interrupt pipe to recover (ignore errors) */
|
||||||
update_basstate(cs->hw.bas, BS_RESETTING, 0);
|
update_basstate(cs->hw.bas, BS_RESETTING, 0);
|
||||||
req_submit(cs->bcs, HD_RESET_INTERRUPT_PIPE, 0, BAS_TIMEOUT);
|
if (req_submit(cs->bcs, HD_RESET_INTERRUPT_PIPE, 0, BAS_TIMEOUT))
|
||||||
|
/* submission failed, escalate to USB port reset */
|
||||||
|
usb_queue_reset_device(cs->hw.bas->interface);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check_pending
|
/* check_pending
|
||||||
|
|
Loading…
Add table
Reference in a new issue