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