[SCSI] bnx2i: Optimized the iSCSI offload performance
authorEddie Wai <eddie.wai@broadcom.com>
Mon, 16 May 2011 18:13:20 +0000 (11:13 -0700)
committerJames Bottomley <jbottomley@parallels.com>
Tue, 24 May 2011 16:41:10 +0000 (12:41 -0400)
commit9ae58e144df1a4ecc91dcd9eea5a3f4a6d13b5fc
treecc6ef10a0aa8d4a13aebc7d07bede9eba51069fa
parentd5307a078bb0288945c900c6f4a2fd77ba6d0817
[SCSI] bnx2i: Optimized the iSCSI offload performance

Modified the event coalescing code for iSCSI offload to combat both
corner cases and optimize performance as follows:

1. Added mechanism to loop back a second time to process any leftover
CQEs that was generated by the hardware during the time the driver is
busy processing previous CQEs in the bh.  This not only helps the
performance but also fixes the corner case when no more CQEs are being
generated in the pipeline; so those leftover CQEs will get a a chance
to be processed.

2. Added ARM_CQE_FP to distinguish between fast path arming versus
slow path arming.  This change will guarantee that the CQEs will
always get a chance to be re-armed during fast path completions.

3. Removed the inline event coalescing division for perf optimization.
Also fixed a division-by-zero error when the event_coal_div module
param was set to 0.

4. Changed the default SQ WQEs size from 256 to 128 to match chip
default.

5. Changed the cmd_per_lun from 32 to 24.

Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
drivers/scsi/bnx2i/bnx2i.h
drivers/scsi/bnx2i/bnx2i_hwi.c
drivers/scsi/bnx2i/bnx2i_iscsi.c