IB/mthca: prevent event queue overrun
authorMichael S. Tsirkin <mst@mellanox.co.il>
Mon, 9 Jan 2006 22:04:40 +0000 (14:04 -0800)
committerRoland Dreier <rolandd@cisco.com>
Mon, 9 Jan 2006 22:04:40 +0000 (14:04 -0800)
commit92898522e3ee1a0ba54140aad1974d9e868f74ae
tree25f398798849c6806830aa3a32a98c72640a12e3
parent6627fa662e86c400284b64c13661fdf6bff05983
IB/mthca: prevent event queue overrun

I am seeing EQ overruns in SDP stress tests: if the CQ completion
handler arms a CQ, this could generate more EQEs, so that EQ will
never get empty and consumer index will never get updated.

This is similiar to what we have with command interface:
/*
 * cmd_event() may add more commands.
 * The card will think the queue has overflowed if
 * we don't tell it we've been processing events.
 */
However, for completion events, we *don't* want to update the consumer
index on each event. So, perform EQ doorbell coalescing: allocate EQs
with some spare EQEs, and update once we run out of them.

The value 0x80 was selected to avoid any performance impact.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_eq.c