Hi Roland,
This patch:
+ introduces srp_sg_tablesize as module parameter - default value is 16
+ adjusts SRP_MAX_IU_LEN, SRP_MAX_INDIRECT from srp_sg_tablesize

Signed-off-by: Vu Pham <[EMAIL PROTECTED]>

Index: infiniband/ulp/srp/ib_srp.c
===================================================================
--- infiniband/ulp/srp/ib_srp.c	(revision 7075)
+++ infiniband/ulp/srp/ib_srp.c	(working copy)
@@ -62,6 +62,12 @@ MODULE_DESCRIPTION("InfiniBand SCSI RDMA
 		   "v" DRV_VERSION " (" DRV_RELDATE ")");
 MODULE_LICENSE("Dual BSD/GPL");
 
+int srp_sg_tablesize = SRP_MAX_SG_TABLESIZE;
+
+module_param(srp_sg_tablesize, int, 0444);
+MODULE_PARM_DESC(srp_sg_tablesize,
+		 "Max number of scatter lists supportted per IO - default is 16");
+
 static int topspin_workarounds = 1;
 
 module_param(topspin_workarounds, int, 0444);
@@ -1356,7 +1362,6 @@ static struct scsi_host_template srp_tem
 	.eh_host_reset_handler		= srp_reset_host,
 	.can_queue			= SRP_SQ_SIZE,
 	.this_id			= -1,
-	.sg_tablesize			= SRP_MAX_INDIRECT,
 	.cmd_per_lun			= SRP_SQ_SIZE,
 	.use_clustering			= ENABLE_CLUSTERING,
 	.shost_attrs			= srp_host_attrs
@@ -1540,6 +1545,7 @@ static ssize_t srp_create_target(struct 
 		return -ENOMEM;
 
 	target_host->max_lun = SRP_MAX_LUN;
+	target_host->sg_tablesize = srp_sg_tablesize;
 
 	target = host_to_target(target_host);
 	memset(target, 0, sizeof *target);
Index: infiniband/ulp/srp/ib_srp.h
===================================================================
--- infiniband/ulp/srp/ib_srp.h	(revision 7075)
+++ infiniband/ulp/srp/ib_srp.h	(working copy)
@@ -47,6 +47,8 @@
 #include <rdma/ib_sa.h>
 #include <rdma/ib_cm.h>
 
+extern int srp_sg_tablesize;
+
 enum {
 	SRP_PATH_REC_TIMEOUT_MS	= 1000,
 	SRP_ABORT_TIMEOUT_MS	= 5000,
@@ -55,7 +57,7 @@ enum {
 	SRP_DLID_REDIRECT	= 2,
 
 	SRP_MAX_LUN		= 512,
-	SRP_MAX_IU_LEN		= 256,
+	SRP_MAX_SG_TABLESIZE	= 16,
 
 	SRP_RQ_SHIFT    	= 6,
 	SRP_RQ_SIZE		= 1 << SRP_RQ_SHIFT,
@@ -66,9 +68,10 @@ enum {
 };
 
 #define SRP_OP_RECV		(1 << 31)
-#define SRP_MAX_INDIRECT	((SRP_MAX_IU_LEN -			\
-				  sizeof (struct srp_cmd) -		\
-				  sizeof (struct srp_indirect_buf)) / 16)
+#define SRP_MAX_INDIRECT	srp_sg_tablesize	
+#define SRP_MAX_IU_LEN		(srp_sg_tablesize * 16 +		\
+				 sizeof (struct srp_cmd) +		\
+				 sizeof (struct srp_indirect_buf))	\
 
 enum srp_target_state {
 	SRP_TARGET_LIVE,
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to