aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp
diff options
context:
space:
mode:
authorSagi Grimberg <sagig@mellanox.com>2014-03-05 12:43:42 -0500
committerRoland Dreier <roland@purestorage.com>2014-03-18 01:33:57 -0400
commit65198d6b843bf43650781f71caac1266d6b407cb (patch)
treeaf953c508834840f71edf41c45be8c7737fa0fe1 /drivers/infiniband/ulp
parent310b347c6017ca5f00fa1e574c2d9c5b1088a786 (diff)
IB/iser: Keep IB device attributes under iser_device
For T10-PI offload support, we will need to know the device signature offload capability upon every connection establishment. This patch does not change any functionality. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Alex Tabachnik <alext@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/ulp')
-rw-r--r--drivers/infiniband/ulp/iser/iscsi_iser.h1
-rw-r--r--drivers/infiniband/ulp/iser/iser_verbs.c18
2 files changed, 7 insertions, 12 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h
index ca161dfeee48..b4290f509a39 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
@@ -260,6 +260,7 @@ struct iscsi_iser_task;
260struct iser_device { 260struct iser_device {
261 struct ib_device *ib_device; 261 struct ib_device *ib_device;
262 struct ib_pd *pd; 262 struct ib_pd *pd;
263 struct ib_device_attr dev_attr;
263 struct ib_cq *rx_cq[ISER_MAX_CQ]; 264 struct ib_cq *rx_cq[ISER_MAX_CQ];
264 struct ib_cq *tx_cq[ISER_MAX_CQ]; 265 struct ib_cq *tx_cq[ISER_MAX_CQ];
265 struct ib_mr *mr; 266 struct ib_mr *mr;
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
index 9569e402d368..95fcfcac0100 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -71,17 +71,14 @@ static void iser_event_handler(struct ib_event_handler *handler,
71 */ 71 */
72static int iser_create_device_ib_res(struct iser_device *device) 72static int iser_create_device_ib_res(struct iser_device *device)
73{ 73{
74 int i, j;
75 struct iser_cq_desc *cq_desc; 74 struct iser_cq_desc *cq_desc;
76 struct ib_device_attr *dev_attr; 75 struct ib_device_attr *dev_attr = &device->dev_attr;
76 int ret, i, j;
77 77
78 dev_attr = kmalloc(sizeof(*dev_attr), GFP_KERNEL); 78 ret = ib_query_device(device->ib_device, dev_attr);
79 if (!dev_attr) 79 if (ret) {
80 return -ENOMEM;
81
82 if (ib_query_device(device->ib_device, dev_attr)) {
83 pr_warn("Query device failed for %s\n", device->ib_device->name); 80 pr_warn("Query device failed for %s\n", device->ib_device->name);
84 goto dev_attr_err; 81 return ret;
85 } 82 }
86 83
87 /* Assign function handles - based on FMR support */ 84 /* Assign function handles - based on FMR support */
@@ -101,7 +98,7 @@ static int iser_create_device_ib_res(struct iser_device *device)
101 device->iser_unreg_rdma_mem = iser_unreg_mem_fastreg; 98 device->iser_unreg_rdma_mem = iser_unreg_mem_fastreg;
102 } else { 99 } else {
103 iser_err("IB device does not support FMRs nor FastRegs, can't register memory\n"); 100 iser_err("IB device does not support FMRs nor FastRegs, can't register memory\n");
104 goto dev_attr_err; 101 return -1;
105 } 102 }
106 103
107 device->cqs_used = min(ISER_MAX_CQ, device->ib_device->num_comp_vectors); 104 device->cqs_used = min(ISER_MAX_CQ, device->ib_device->num_comp_vectors);
@@ -158,7 +155,6 @@ static int iser_create_device_ib_res(struct iser_device *device)
158 if (ib_register_event_handler(&device->event_handler)) 155 if (ib_register_event_handler(&device->event_handler))
159 goto handler_err; 156 goto handler_err;
160 157
161 kfree(dev_attr);
162 return 0; 158 return 0;
163 159
164handler_err: 160handler_err:
@@ -178,8 +174,6 @@ pd_err:
178 kfree(device->cq_desc); 174 kfree(device->cq_desc);
179cq_desc_err: 175cq_desc_err:
180 iser_err("failed to allocate an IB resource\n"); 176 iser_err("failed to allocate an IB resource\n");
181dev_attr_err:
182 kfree(dev_attr);
183 return -1; 177 return -1;
184} 178}
185 179