diff options
author | David S. Miller <davem@davemloft.net> | 2012-05-07 23:35:40 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-07 23:35:40 -0400 |
commit | 0d6c4a2e4641bbc556dd74d3aa158c413a972492 (patch) | |
tree | da944af17682659bb433dc2282dcb48380c14cd1 /drivers/net/wireless/ipw2x00 | |
parent | 6e06c0e2347ec79d0bd5702b2438fe883f784545 (diff) | |
parent | 1c430a727fa512500a422ffe4712166c550ea06a (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/ethernet/intel/e1000e/param.c
drivers/net/wireless/iwlwifi/iwl-agn-rx.c
drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
drivers/net/wireless/iwlwifi/iwl-trans.h
Resolved the iwlwifi conflict with mainline using 3-way diff posted
by John Linville and Stephen Rothwell. In 'net' we added a bug
fix to make iwlwifi report a more accurate skb->truesize but this
conflicted with RX path changes that happened meanwhile in net-next.
In e1000e a conflict arose in the validation code for settings of
adapter->itr. 'net-next' had more sophisticated logic so that
logic was used.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/ipw2x00')
-rw-r--r-- | 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 d57522c64073..b3707dadad15 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) | |||
2192 | { | 2192 | { |
2193 | int rc = 0; | 2193 | int rc = 0; |
2194 | unsigned long flags; | 2194 | unsigned long flags; |
2195 | unsigned long now, end; | ||
2195 | 2196 | ||
2196 | spin_lock_irqsave(&priv->lock, flags); | 2197 | spin_lock_irqsave(&priv->lock, flags); |
2197 | if (priv->status & STATUS_HCMD_ACTIVE) { | 2198 | if (priv->status & STATUS_HCMD_ACTIVE) { |
@@ -2233,10 +2234,20 @@ static int __ipw_send_cmd(struct ipw_priv *priv, struct host_cmd *cmd) | |||
2233 | } | 2234 | } |
2234 | spin_unlock_irqrestore(&priv->lock, flags); | 2235 | spin_unlock_irqrestore(&priv->lock, flags); |
2235 | 2236 | ||
2237 | now = jiffies; | ||
2238 | end = now + HOST_COMPLETE_TIMEOUT; | ||
2239 | again: | ||
2236 | rc = wait_event_interruptible_timeout(priv->wait_command_queue, | 2240 | rc = wait_event_interruptible_timeout(priv->wait_command_queue, |
2237 | !(priv-> | 2241 | !(priv-> |
2238 | status & STATUS_HCMD_ACTIVE), | 2242 | status & STATUS_HCMD_ACTIVE), |
2239 | HOST_COMPLETE_TIMEOUT); | 2243 | end - now); |
2244 | if (rc < 0) { | ||
2245 | now = jiffies; | ||
2246 | if (time_before(now, end)) | ||
2247 | goto again; | ||
2248 | rc = 0; | ||
2249 | } | ||
2250 | |||
2240 | if (rc == 0) { | 2251 | if (rc == 0) { |
2241 | spin_lock_irqsave(&priv->lock, flags); | 2252 | spin_lock_irqsave(&priv->lock, flags); |
2242 | if (priv->status & STATUS_HCMD_ACTIVE) { | 2253 | if (priv->status & STATUS_HCMD_ACTIVE) { |