[PATCH 5/6] cciss: add performant mode support

Previous thread: [PATCH 2.6.27.y 0/3] ext4 fixes by Jayson R. King on Friday, May 28, 2010 - 12:24 pm. (9 messages)

Next thread: [PATCH 6/6] cciss: new controller support and bump driver version by Mike Miller on Friday, May 28, 2010 - 1:42 pm. (1 message)
From: Mike Miller
Date: Friday, May 28, 2010 - 1:17 pm

Patch 5 of 6
This patch adds a mode of controller operation called Performant Mode. Even
though cciss has been deprecated in favor of hpsa there are new controllers
due out next year that HP must support in older vendor distros. Vendors
require all fixes/features be upstream. These new controllers support only
16 commands in simple mode but support up to 1024 in performant mode. This
requires us to add this support at this late date.

The performant mode transport minimizes host PCI accesses by performinf many
completions per read. PCI writes are posted so the host can write then
immediately get off the bus not waiting for the writwe to complete to the
target. In the context of performant mode the host read out to a controller
pulls all posted writes into host memory ensuring the reply queue is
coherent.

cciss: add performant mode support for Stars/Sirius

From: Mike Miller <mike.miller@hp.com>
Cc: Stephen M. Cameron <scameron@beardog.cce.hp.com>

Signed-off-by: Mike Miller <mike.miller@hp.com>


cciss: add performant mode support for Stars/Sirius
---
 drivers/block/cciss.c      |  267 ++++++++++++++++++++++++++++++++++++--------
 drivers/block/cciss.h      |  109 +++++++++++++++++-
 drivers/block/cciss_cmd.h  |   34 +++++-
 drivers/block/cciss_scsi.c |    6 +
 4 files changed, 353 insertions(+), 63 deletions(-)

diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index cd830cb..08a2e61 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -206,6 +206,11 @@ static void cciss_device_release(struct device *dev);
 static void cciss_free_gendisk(ctlr_info_t *h, int drv_index);
 static void cciss_free_drive_info(ctlr_info_t *h, int drv_index);
 
+/* performant mode helper functions */
+static void  calc_bucket_map(int *bucket, int num_buckets, int nsgs,
+				int *bucket_map);
+static void cciss_put_controller_into_performant_mode(ctlr_info_t *h);
+
 #ifdef CONFIG_PROC_FS
 static void cciss_procinit(int i);
 #else
@@ -231,6 +236,16 @@ static const ...
Previous thread: [PATCH 2.6.27.y 0/3] ext4 fixes by Jayson R. King on Friday, May 28, 2010 - 12:24 pm. (9 messages)

Next thread: [PATCH 6/6] cciss: new controller support and bump driver version by Mike Miller on Friday, May 28, 2010 - 1:42 pm. (1 message)