diff options
Diffstat (limited to 'drivers/net/wireless/iwlegacy/3945-mac.c')
-rw-r--r-- | drivers/net/wireless/iwlegacy/3945-mac.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlegacy/3945-mac.c b/drivers/net/wireless/iwlegacy/3945-mac.c index 0487461ae4da..dc1d20cf64ee 100644 --- a/drivers/net/wireless/iwlegacy/3945-mac.c +++ b/drivers/net/wireless/iwlegacy/3945-mac.c | |||
@@ -1248,14 +1248,7 @@ il3945_rx_handle(struct il_priv *il) | |||
1248 | len = le32_to_cpu(pkt->len_n_flags) & IL_RX_FRAME_SIZE_MSK; | 1248 | len = le32_to_cpu(pkt->len_n_flags) & IL_RX_FRAME_SIZE_MSK; |
1249 | len += sizeof(u32); /* account for status word */ | 1249 | len += sizeof(u32); /* account for status word */ |
1250 | 1250 | ||
1251 | /* Reclaim a command buffer only if this packet is a response | 1251 | reclaim = il_need_reclaim(il, pkt); |
1252 | * to a (driver-originated) command. | ||
1253 | * If the packet (e.g. Rx frame) originated from uCode, | ||
1254 | * there is no command buffer to reclaim. | ||
1255 | * Ucode should set SEQ_RX_FRAME bit if ucode-originated, | ||
1256 | * but apparently a few don't get set; catch them here. */ | ||
1257 | reclaim = !(pkt->hdr.sequence & SEQ_RX_FRAME) && | ||
1258 | pkt->hdr.cmd != N_STATS && pkt->hdr.cmd != C_TX; | ||
1259 | 1252 | ||
1260 | /* Based on type of command response or notification, | 1253 | /* Based on type of command response or notification, |
1261 | * handle those that need handling via function in | 1254 | * handle those that need handling via function in |
@@ -1495,12 +1488,14 @@ il3945_irq_tasklet(struct il_priv *il) | |||
1495 | if (inta & CSR_INT_BIT_WAKEUP) { | 1488 | if (inta & CSR_INT_BIT_WAKEUP) { |
1496 | D_ISR("Wakeup interrupt\n"); | 1489 | D_ISR("Wakeup interrupt\n"); |
1497 | il_rx_queue_update_write_ptr(il, &il->rxq); | 1490 | il_rx_queue_update_write_ptr(il, &il->rxq); |
1491 | |||
1492 | spin_lock_irqsave(&il->lock, flags); | ||
1498 | il_txq_update_write_ptr(il, &il->txq[0]); | 1493 | il_txq_update_write_ptr(il, &il->txq[0]); |
1499 | il_txq_update_write_ptr(il, &il->txq[1]); | 1494 | il_txq_update_write_ptr(il, &il->txq[1]); |
1500 | il_txq_update_write_ptr(il, &il->txq[2]); | 1495 | il_txq_update_write_ptr(il, &il->txq[2]); |
1501 | il_txq_update_write_ptr(il, &il->txq[3]); | 1496 | il_txq_update_write_ptr(il, &il->txq[3]); |
1502 | il_txq_update_write_ptr(il, &il->txq[4]); | 1497 | il_txq_update_write_ptr(il, &il->txq[4]); |
1503 | il_txq_update_write_ptr(il, &il->txq[5]); | 1498 | spin_unlock_irqrestore(&il->lock, flags); |
1504 | 1499 | ||
1505 | il->isr_stats.wakeup++; | 1500 | il->isr_stats.wakeup++; |
1506 | handled |= CSR_INT_BIT_WAKEUP; | 1501 | handled |= CSR_INT_BIT_WAKEUP; |