static void sif_eq_deinit_tables(struct sif_dev *sdev, struct sif_eps *es);
-static bool dispatch_eq(struct sif_eq *eq, int irq, bool interruptible);
+static bool dispatch_eq(struct sif_eq *eq, int irq, unsigned int msecs);
static enum ib_event_type epsc2ib_event(struct psif_eq_entry *eqe);
{
struct sif_eq *eq = (struct sif_eq *)d;
- dispatch_eq(eq, irq, false);
+ dispatch_eq(eq, irq, SIF_IRQ_THR_HANDLER_TIMEOUT);
return IRQ_HANDLED;
}
struct sif_eq *eq = (struct sif_eq *)d;
bool wakeup_thread;
- wakeup_thread = dispatch_eq(eq, irq, true);
+ wakeup_thread = dispatch_eq(eq, irq, SIF_IRQ_HANDLER_TIMEOUT);
elapsed = jiffies_to_msecs(jiffies - start_time);
/* Called from interrupt threads */
-static bool dispatch_eq(struct sif_eq *eq, int irq, bool interruptible)
+static bool dispatch_eq(struct sif_eq *eq, int irq, unsigned int msecs)
{
volatile struct psif_eq_entry *eqe;
struct psif_eq_entry leqe;
struct sif_dev *sdev = eq->ba.sdev;
struct ib_event ibe;
struct ib_qp *ibqp = NULL;
- ulong timeout = jiffies + msecs_to_jiffies(SIF_IRQ_HANDLER_TIMEOUT);
+ ulong timeout = jiffies + msecs_to_jiffies(msecs);
bool wakeup_thread = false;
u32 seqno;
u32 nreqs = 0;
eqe = (struct psif_eq_entry *)get_eq_entry(eq, seqno);
nreqs++;
/* check whether we should stop processing events */
- wakeup_thread = interruptible ? time_after(jiffies, timeout) : false;
+ wakeup_thread = msecs ? time_after(jiffies, timeout) : false;
}
spin_unlock_irqrestore(&eq->ba.lock, flags);
atomic_add(nreqs, &eq->intr_cnt);