]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
IB/iser: Handle lack of memory management extentions correctly
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Thu, 22 Jun 2017 19:01:10 +0000 (15:01 -0400)
committerDoug Ledford <dledford@redhat.com>
Tue, 11 Jul 2017 14:47:16 +0000 (10:47 -0400)
max_fast_reg_page_list_len is only valid when the
memory management extentions are signaled by the underlying
driver.

Fix by adjusting iser_calc_scsi_params() to use
ISCSI_ISER_MAX_SG_TABLESIZE when the extentions are not indicated.

Reported-by: Thomas Rosenstein <thomas.rosenstein@creamfinance.com>
Fixes: Commit df749cdc45d9 ("IB/iser: Support up to 8MB data transfer in a single command")
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Acked-by: Sagi Grimberg <sagi@grimberg.me>
Tested-by: Thomas Rosenstein <thomas.rosenstein@creamfinance.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/iser/iser_verbs.c

index c538a38c91ce95acf8e00fcdf43fa28588ad2f49..26a004e97ae0fc3d4f7d257e725313f4b75ed82e 100644 (file)
@@ -708,8 +708,14 @@ iser_calc_scsi_params(struct iser_conn *iser_conn,
        unsigned short sg_tablesize, sup_sg_tablesize;
 
        sg_tablesize = DIV_ROUND_UP(max_sectors * 512, SIZE_4K);
-       sup_sg_tablesize = min_t(unsigned, ISCSI_ISER_MAX_SG_TABLESIZE,
-                                device->ib_device->attrs.max_fast_reg_page_list_len);
+       if (device->ib_device->attrs.device_cap_flags &
+                       IB_DEVICE_MEM_MGT_EXTENSIONS)
+               sup_sg_tablesize =
+                       min_t(
+                        uint, ISCSI_ISER_MAX_SG_TABLESIZE,
+                        device->ib_device->attrs.max_fast_reg_page_list_len);
+       else
+               sup_sg_tablesize = ISCSI_ISER_MAX_SG_TABLESIZE;
 
        iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize);
 }