diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/libertas/cmdresp.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c index 4d384612afa7..0cd96628293a 100644 --- a/drivers/net/wireless/libertas/cmdresp.c +++ b/drivers/net/wireless/libertas/cmdresp.c | |||
@@ -665,6 +665,16 @@ int lbs_process_rx_command(struct lbs_private *priv) | |||
665 | goto done; | 665 | goto done; |
666 | } | 666 | } |
667 | 667 | ||
668 | if (resp->result == cpu_to_le16(0x0004)) { | ||
669 | /* 0x0004 means -EAGAIN. Drop the response, let it time out | ||
670 | and be resubmitted */ | ||
671 | lbs_pr_info("Firmware returns DEFER to command %x. Will let it time out...\n", | ||
672 | le16_to_cpu(resp->command)); | ||
673 | spin_unlock_irqrestore(&priv->driver_lock, flags); | ||
674 | ret = -1; | ||
675 | goto done; | ||
676 | } | ||
677 | |||
668 | /* Now we got response from FW, cancel the command timer */ | 678 | /* Now we got response from FW, cancel the command timer */ |
669 | del_timer(&priv->command_timer); | 679 | del_timer(&priv->command_timer); |
670 | priv->cmd_timed_out = 0; | 680 | priv->cmd_timed_out = 0; |