[infiniband] Poll completion queues automatically
authorMichael Brown <mcb30@etherboot.org>
Mon, 6 Jul 2009 18:12:12 +0000 (19:12 +0100)
committerMichael Brown <mcb30@etherboot.org>
Fri, 17 Jul 2009 22:06:33 +0000 (23:06 +0100)
commit887d296b886aeb5eb9dd67dd85221f64f2683849
tree51d5502ceaafcb56875eb9733efe36700574b334
parent1f5c0239b4fc5dea895645397d5aaa3d4b95205a
[infiniband] Poll completion queues automatically

Currently, all Infiniband users must create a process for polling
their completion queues (or rely on a regular hook such as
netdev_poll() in ipoib.c).

Move instead to a model whereby the Infiniband core maintains a single
process calling ib_poll_eq(), and polling the event queue triggers
polls of the applicable completion queues.  (At present, the
Infiniband core simply polls all of the device's completion queues.)
Polling a completion queue will now implicitly refill all attached
receive work queues; this is analogous to the way that netdev_poll()
implicitly refills the RX ring.

Infiniband users no longer need to create a process just to poll their
completion queues and refill their receive rings.
src/drivers/net/ipoib.c
src/include/gpxe/ib_qset.h
src/include/gpxe/ib_sma.h
src/include/gpxe/infiniband.h
src/net/infiniband.c
src/net/infiniband/ib_qset.c
src/net/infiniband/ib_sma.c