IB/qib: Improve SDMA performance
authorCQ Tang <cq.tang@intel.com>
Fri, 19 Jul 2013 17:57:21 +0000 (13:57 -0400)
committerRoland Dreier <roland@purestorage.com>
Tue, 13 Aug 2013 18:14:34 +0000 (11:14 -0700)
commit4668e4b527d2263a74a85334243bb740905da51e
tree4ef164dc33ae416ab87cf860a7718fdb7ef662c8
parentc095ba7224d8edc71dcef0d655911399a8bd4a3f
IB/qib: Improve SDMA performance

1. The code accepts chunks of messages, and splits the chunk into
   packets when converting packets into sdma queue entries.  Adjacent
   packets will use user buffer pages smartly to avoid pinning the
   same page multiple times.

2. Instead of discarding all the work when SDMA queue is full, the
   work is saved in a pending queue.  Whenever there are enough SDMA
   queue free entries, pending queue is directly put onto SDMA queue.

3. An interrupt handler is used to progress this pending queue.

Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: CQ Tang <cq.tang@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
[ Fixed up sparse warnings.  - Roland ]

Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/qib/qib.h
drivers/infiniband/hw/qib/qib_common.h
drivers/infiniband/hw/qib/qib_file_ops.c
drivers/infiniband/hw/qib/qib_sdma.c
drivers/infiniband/hw/qib/qib_user_sdma.c
This page took 0.025668 seconds and 5 git commands to generate.