summary refs log tree commit diff
path: root/ipc
diff options
context:
space:
mode:
authorMatan Barak <matanb@mellanox.com>2016-04-17 17:08:40 +0300
committerDoug Ledford <dledford@redhat.com>2016-05-18 10:45:49 -0400
commit94c6825e0ff75829207af6246782811b7c7af2c0 (patch)
tree695b147b15bbecbb234cbb06c6bd1fdab63c0abe /ipc
parente3b6d8cf8de6d07af9a27c86861edfa5b3290cb6 (diff)
downloadlinux-94c6825e0ff75829207af6246782811b7c7af2c0.tar.gz
net/mlx5_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, mlx5 Ethernet
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: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'ipc')
0 files changed, 0 insertions, 0 deletions