|
@@ -3163,22 +3163,6 @@ int ib_cm_init_qp_attr(struct ib_cm_id *cm_id,
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(ib_cm_init_qp_attr);
|
|
EXPORT_SYMBOL(ib_cm_init_qp_attr);
|
|
|
|
|
|
-static __be64 cm_get_ca_guid(struct ib_device *device)
|
|
|
|
-{
|
|
|
|
- struct ib_device_attr *device_attr;
|
|
|
|
- __be64 guid;
|
|
|
|
- int ret;
|
|
|
|
-
|
|
|
|
- device_attr = kmalloc(sizeof *device_attr, GFP_KERNEL);
|
|
|
|
- if (!device_attr)
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
- ret = ib_query_device(device, device_attr);
|
|
|
|
- guid = ret ? 0 : device_attr->node_guid;
|
|
|
|
- kfree(device_attr);
|
|
|
|
- return guid;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static void cm_add_one(struct ib_device *device)
|
|
static void cm_add_one(struct ib_device *device)
|
|
{
|
|
{
|
|
struct cm_device *cm_dev;
|
|
struct cm_device *cm_dev;
|
|
@@ -3200,9 +3184,7 @@ static void cm_add_one(struct ib_device *device)
|
|
return;
|
|
return;
|
|
|
|
|
|
cm_dev->device = device;
|
|
cm_dev->device = device;
|
|
- cm_dev->ca_guid = cm_get_ca_guid(device);
|
|
|
|
- if (!cm_dev->ca_guid)
|
|
|
|
- goto error1;
|
|
|
|
|
|
+ cm_dev->ca_guid = device->node_guid;
|
|
|
|
|
|
set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
|
|
set_bit(IB_MGMT_METHOD_SEND, reg_req.method_mask);
|
|
for (i = 1; i <= device->phys_port_cnt; i++) {
|
|
for (i = 1; i <= device->phys_port_cnt; i++) {
|
|
@@ -3217,11 +3199,11 @@ static void cm_add_one(struct ib_device *device)
|
|
cm_recv_handler,
|
|
cm_recv_handler,
|
|
port);
|
|
port);
|
|
if (IS_ERR(port->mad_agent))
|
|
if (IS_ERR(port->mad_agent))
|
|
- goto error2;
|
|
|
|
|
|
+ goto error1;
|
|
|
|
|
|
ret = ib_modify_port(device, i, 0, &port_modify);
|
|
ret = ib_modify_port(device, i, 0, &port_modify);
|
|
if (ret)
|
|
if (ret)
|
|
- goto error3;
|
|
|
|
|
|
+ goto error2;
|
|
}
|
|
}
|
|
ib_set_client_data(device, &cm_client, cm_dev);
|
|
ib_set_client_data(device, &cm_client, cm_dev);
|
|
|
|
|
|
@@ -3230,9 +3212,9 @@ static void cm_add_one(struct ib_device *device)
|
|
write_unlock_irqrestore(&cm.device_lock, flags);
|
|
write_unlock_irqrestore(&cm.device_lock, flags);
|
|
return;
|
|
return;
|
|
|
|
|
|
-error3:
|
|
|
|
- ib_unregister_mad_agent(port->mad_agent);
|
|
|
|
error2:
|
|
error2:
|
|
|
|
+ ib_unregister_mad_agent(port->mad_agent);
|
|
|
|
+error1:
|
|
port_modify.set_port_cap_mask = 0;
|
|
port_modify.set_port_cap_mask = 0;
|
|
port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
|
|
port_modify.clr_port_cap_mask = IB_PORT_CM_SUP;
|
|
while (--i) {
|
|
while (--i) {
|
|
@@ -3240,7 +3222,6 @@ error2:
|
|
ib_modify_port(device, port->port_num, 0, &port_modify);
|
|
ib_modify_port(device, port->port_num, 0, &port_modify);
|
|
ib_unregister_mad_agent(port->mad_agent);
|
|
ib_unregister_mad_agent(port->mad_agent);
|
|
}
|
|
}
|
|
-error1:
|
|
|
|
kfree(cm_dev);
|
|
kfree(cm_dev);
|
|
}
|
|
}
|
|
|
|
|