ib_isert: Add support for completion interrupt coalescing
authorNicholas Bellinger <nab@linux-iscsi.org>
Tue, 5 Nov 2013 21:16:12 +0000 (13:16 -0800)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 6 Nov 2013 20:48:22 +0000 (12:48 -0800)
commit95b60f078899a9680688bab909d02169e1fd632e
tree15af0172ede5d13a482e6d9cebca7a2ae8ab47d2
parent2dd1d53fe004cd3b1e93e96508cfe637e6e31ef5
ib_isert: Add support for completion interrupt coalescing

This patch adds support for completion interrupt coalescing that
allows only every ISERT_COMP_BATCH_COUNT (8) to set IB_SEND_SIGNALED,
thus avoiding completion interrupts for every posted iser_tx_desc.

The batch processing is done using a per isert_conn llist that once
IB_SEND_SIGNALED has been set is saved to tx_desc->comp_llnode_batch,
and completion processing of previously posted iser_tx_descs is done
in a single shot from within isert_send_completion() code.

Note this is only done for response PDUs from ISCSI_OP_SCSI_CMD, and
all other control type of PDU responses will force an implicit batch
drain to occur.

Cc: Or Gerlitz <ogerlitz@mellanox.com>
Cc: Sagi Grimberg <sagig@mellanox.com>
Cc: Kent Overstreet <kmo@daterainc.com>
Cc: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/infiniband/ulp/isert/ib_isert.c
drivers/infiniband/ulp/isert/ib_isert.h