diff options
author | Josh Boyer <jwboyer@redhat.com> | 2012-05-04 06:57:53 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@redhat.com> | 2012-05-04 06:57:53 -0400 |
commit | 3637da2acda70e27627e993dee67e97d598eddc5 (patch) | |
tree | 835b295347c17be62446c0b2b860a3a7dff5fc43 /ipw2200-Fix-race-condition-in-the-command-completion-acknowledge.patch | |
parent | fbdf88c7b39d14eca78a24e14c304872beb4fc33 (diff) | |
download | kernel-3637da2acda70e27627e993dee67e97d598eddc5.tar.gz kernel-3637da2acda70e27627e993dee67e97d598eddc5.tar.xz kernel-3637da2acda70e27627e993dee67e97d598eddc5.zip |
Linux v3.4-rc5-183-g0a6ba09
Diffstat (limited to 'ipw2200-Fix-race-condition-in-the-command-completion-acknowledge.patch')
-rw-r--r-- | ipw2200-Fix-race-condition-in-the-command-completion-acknowledge.patch | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/ipw2200-Fix-race-condition-in-the-command-completion-acknowledge.patch b/ipw2200-Fix-race-condition-in-the-command-completion-acknowledge.patch deleted file mode 100644 index 3b7451f9f..000000000 --- a/ipw2200-Fix-race-condition-in-the-command-completion-acknowledge.patch +++ /dev/null @@ -1,69 +0,0 @@ -Driver incorrectly validates command completion: instead of waiting -for a command to be acknowledged it continues execution. Most of the -time driver gets acknowledge of the command completion in a tasklet -before it executes the next one. But sometimes it sends the next -command before it gets acknowledge for the previous one. In such a -case one of the following error messages appear in the log: - -Failed to send SYSTEM_CONFIG: Already sending a command. -Failed to send ASSOCIATE: Already sending a command. -Failed to send TX_POWER: Already sending a command. - -After that you need to reload the driver to get it working again. - -This bug occurs during roammaping (reported by Sam Varshavchik) -https://bugzilla.redhat.com/show_bug.cgi?id=738508 -and machine booting (reported by Tom Gundersen and Mads Kiilerich) -https://bugs.archlinux.org/task/28097 -https://bugzilla.redhat.com/show_bug.cgi?id=802106 - -This patch doesn't fix the delay issue during firmware load. -But at least device now works as usual after boot. - -Cc: stable@kernel.org -Signed-off-by: Stanislav Yakovlev <stas.yakovlev@gmail.com> ---- - drivers/net/wireless/ipw2x00/ipw2200.c | 13 ++++++++++++- - 1 files changed, 12 insertions(+), 1 deletions(-) - -diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c -index 4130802..8cbafa5 100644 ---- a/drivers/net/wireless/ipw2x00/ipw2200.c -+++ b/drivers/net/wireless/ipw2x00/ipw2200.c -@@ -2192,6 +2192,7 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd) - { - int rc = 0; - unsigned long flags; -+ unsigned long now, end; - - spin_lock_irqsave(&priv->lock, flags); - if (priv->status & STATUS_HCMD_ACTIVE) { -@@ -2233,10 +2234,20 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd) - } - spin_unlock_irqrestore(&priv->lock, flags); - -+ now = jiffies; -+ end = now + HOST_COMPLETE_TIMEOUT; -+again: - rc = wait_event_interruptible_timeout(priv->wait_command_queue, - !(priv-> - status & STATUS_HCMD_ACTIVE), -- HOST_COMPLETE_TIMEOUT); -+ end - now); -+ if (rc < 0) { -+ now = jiffies; -+ if (time_before(now, end)) -+ goto again; -+ rc = 0; -+ } -+ - if (rc == 0) { - spin_lock_irqsave(&priv->lock, flags); - if (priv->status & STATUS_HCMD_ACTIVE) { --- -1.7.2.5 - --- -To unsubscribe from this list: send the line "unsubscribe linux-wireless" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html
\ No newline at end of file |