aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ipw2x00
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-05-07 23:35:40 -0400
committerDavid S. Miller <davem@davemloft.net>2012-05-07 23:35:40 -0400
commit0d6c4a2e4641bbc556dd74d3aa158c413a972492 (patch)
treeda944af17682659bb433dc2282dcb48380c14cd1 /drivers/net/wireless/ipw2x00
parent6e06c0e2347ec79d0bd5702b2438fe883f784545 (diff)
parent1c430a727fa512500a422ffe4712166c550ea06a (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.c13
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;
2239again:
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) {