linux/drivers/infiniband/hw/mlx4
Matan Barak 3dca0f42c7 net/mlx4_core: Use tasklet for user-space CQ completion events
Previously, we've fired all our completion callbacks straight from our ISR.

Some of those callbacks were lightweight (for example, mlx4_en's and
IPoIB napi callbacks), but some of them did more work (for example,
the user-space RDMA stack uverbs' completion handler). Besides that,
doing more than the minimal work in ISR is generally considered wrong,
it could even lead to a hard lockup of the system. Since when a lot
of completion events are generated by the hardware, the loop over those
events could be so long, that we'll get into a hard lockup by the system
watchdog.

In order to avoid that, add a new way of invoking completion events
callbacks. In the interrupt itself, we add the CQs which receive completion
event to a per-EQ list and schedule a tasklet. In the tasklet context
we loop over all the CQs in the list and invoke the user callback.

Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-12-11 14:47:34 -05:00
..
ah.c IB/mlx4: fix unitialised variable is_mcast 2014-05-28 10:00:06 -07:00
alias_GUID.c mlx4: Use actual number of PCI functions (PF + VFs) for alias GUID logic 2014-03-25 20:48:05 -04:00
cm.c mlx4_ib: Fix SIDR support of for UD QPs under SRIOV/RoCE 2014-03-12 15:57:16 -04:00
cq.c net/mlx4_core: Use tasklet for user-space CQ completion events 2014-12-11 14:47:34 -05:00
doorbell.c IB: Refactor umem to use linear SG table 2014-03-04 10:34:28 -08:00
Kconfig IB/mlx4: Add dependency INET 2014-01-19 15:14:05 -08:00
mad.c IB/mad: add new ioctl to ABI to support new registration options 2014-08-10 20:36:00 -07:00
main.c net/mlx4_core: Flexible (asymmetric) allocation of EQs and MSI-X vectors for PF/VFs 2014-11-13 15:16:21 -05:00
Makefile IB/mlx4: Add iov directory in sysfs under the ib device 2012-09-30 20:33:39 -07:00
mcg.c mlx4: Implement IP based gids support for RoCE/SRIOV 2014-03-12 15:57:16 -04:00
mlx4_ib.h IB/mlx4: Avoid accessing netdevice when building RoCE qp1 header 2014-09-22 09:46:53 -07:00
mr.c mlx4: Correct error flows in rereg_mr 2014-09-22 08:47:47 -07:00
qp.c Last late set of InfiniBand/RDMA fixes for 3.17: 2014-09-23 16:47:34 -07:00
srq.c IB/mlx4: Implement IB_QP_CREATE_USE_GFP_NOIO 2014-06-02 14:58:11 -07:00
sysfs.c IB/mlx4: Add interface for selecting VFs to enable QP0 via MLX proxy QPs 2014-05-29 21:13:19 -07:00
user.h mlx4: 64-byte CQE/EQE support 2012-11-26 10:19:17 -08:00