IB/hfi1: Process qp wait list in IRQ thread periodically
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Wed, 8 Feb 2017 13:26:02 +0000 (05:26 -0800)
committerDoug Ledford <dledford@redhat.com>
Sun, 19 Feb 2017 14:18:32 +0000 (09:18 -0500)
commita82a7fcd1f23497a97df237829622dfdfacf24fe
tree91632e824ea50c27223e39d952d7389ca9ec53dd
parent4fcf1de5a79bfe8ee4c638bd3902d20cd59376de
IB/hfi1: Process qp wait list in IRQ thread periodically

In the event that the IRQ thread is extremely busy, the
processing of an rcd wait list can be delayed by quite
a bit until the IRQ thread completes its work.

The QP reset reference count wait can then appear to be stuck, thus
causing up a QP destroy to emit the hung task diagnostic.

Fix by processing the qp wait list periodically from the thread.  The
interval is a multiple (currently 4) of the MAX_PKT_RECV.

Also, reduce some of the excessive inlining.   The guidelines
are per packet is ok inline, otherwise the choice is based on
likelyhood of execution.

Reviewed-by: Sebastian Sanchez <sebastian.sanchez@intel.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/driver.c