diff options
author | Sagi Grimberg <sagig@mellanox.com> | 2014-03-05 12:43:42 -0500 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2014-03-18 01:33:57 -0400 |
commit | 65198d6b843bf43650781f71caac1266d6b407cb (patch) | |
tree | af953c508834840f71edf41c45be8c7737fa0fe1 /drivers/infiniband/ulp | |
parent | 310b347c6017ca5f00fa1e574c2d9c5b1088a786 (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.h | 1 | ||||
-rw-r--r-- | drivers/infiniband/ulp/iser/iser_verbs.c | 18 |
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; | |||
260 | struct iser_device { | 260 | struct 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 | */ |
72 | static int iser_create_device_ib_res(struct iser_device *device) | 72 | static 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 | ||
164 | handler_err: | 160 | handler_err: |
@@ -178,8 +174,6 @@ pd_err: | |||
178 | kfree(device->cq_desc); | 174 | kfree(device->cq_desc); |
179 | cq_desc_err: | 175 | cq_desc_err: |
180 | iser_err("failed to allocate an IB resource\n"); | 176 | iser_err("failed to allocate an IB resource\n"); |
181 | dev_attr_err: | ||
182 | kfree(dev_attr); | ||
183 | return -1; | 177 | return -1; |
184 | } | 178 | } |
185 | 179 | ||