static inline long interrupt_not_for_us(ctlr_info_t *h)
{
- return !(h->msi_vector || h->msix_vector) &&
- ((h->access.intr_pending(h) == 0) ||
+ return ((h->access.intr_pending(h) == 0) ||
(h->interrupts_enabled == 0));
}
if (interrupt_not_for_us(h))
return IRQ_NONE;
- /*
- * If there are completed commands in the completion queue,
- * we had better do something about it.
- */
spin_lock_irqsave(&h->lock, flags);
while (interrupt_pending(h)) {
raw_tag = get_next_completion(h);
raw_tag = process_nonindexed_cmd(h, raw_tag);
}
}
-
spin_unlock_irqrestore(&h->lock, flags);
return IRQ_HANDLED;
}
unsigned long flags;
u32 raw_tag;
- if (interrupt_not_for_us(h))
- return IRQ_NONE;
- /*
- * If there are completed commands in the completion queue,
- * we had better do something about it.
- */
spin_lock_irqsave(&h->lock, flags);
raw_tag = get_next_completion(h);
while (raw_tag != FIFO_EMPTY) {
else
raw_tag = process_nonindexed_cmd(h, raw_tag);
}
-
spin_unlock_irqrestore(&h->lock, flags);
return IRQ_HANDLED;
}