From 2f4ab4e34f2586a1a2583145814fa6f56a7d1530 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Mon, 17 Dec 2007 15:41:30 -0500 Subject: [PATCH] --- yaml --- r: 79247 b: refs/heads/master c: 8538823f7c692c98e8b7e19cb580faa56e25e89f h: refs/heads/master i: 79245: 75e4e85e7fd9176fd2ad9f48254223bc0a3ab9bc 79243: 0a48cc522ea8a9b9a7b08c0b458a88cbda103f06 79239: 056cfcce963de3e257622986fd1126467483952f 79231: f1a3189a81426d65518782841dfe27e62998f231 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/libertas/cmdresp.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c2a414fe6eac..1ca933a61d49 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7003b078c82d141216deecef4de154711a107aab +refs/heads/master: 8538823f7c692c98e8b7e19cb580faa56e25e89f diff --git a/trunk/drivers/net/wireless/libertas/cmdresp.c b/trunk/drivers/net/wireless/libertas/cmdresp.c index 4d384612afa7..0cd96628293a 100644 --- a/trunk/drivers/net/wireless/libertas/cmdresp.c +++ b/trunk/drivers/net/wireless/libertas/cmdresp.c @@ -665,6 +665,16 @@ int lbs_process_rx_command(struct lbs_private *priv) goto done; } + if (resp->result == cpu_to_le16(0x0004)) { + /* 0x0004 means -EAGAIN. Drop the response, let it time out + and be resubmitted */ + lbs_pr_info("Firmware returns DEFER to command %x. Will let it time out...\n", + le16_to_cpu(resp->command)); + spin_unlock_irqrestore(&priv->driver_lock, flags); + ret = -1; + goto done; + } + /* Now we got response from FW, cancel the command timer */ del_timer(&priv->command_timer); priv->cmd_timed_out = 0;