|
@@ -453,7 +453,8 @@ static int cm_init_av_by_path(struct sa_path_rec *path, struct cm_av *av,
|
|
|
read_lock_irqsave(&cm.device_lock, flags);
|
|
|
list_for_each_entry(cm_dev, &cm.device_list, list) {
|
|
|
if (!ib_find_cached_gid(cm_dev->ib_device, &path->sgid,
|
|
|
- path->gid_type, ndev, &p, NULL)) {
|
|
|
+ sa_conv_pathrec_to_gid_type(path),
|
|
|
+ ndev, &p, NULL)) {
|
|
|
port = cm_dev->port[p-1];
|
|
|
break;
|
|
|
}
|
|
@@ -1775,8 +1776,11 @@ static int cm_req_handler(struct cm_work *work)
|
|
|
work->path[0].ifindex = gid_attr.ndev->ifindex;
|
|
|
work->path[0].net = dev_net(gid_attr.ndev);
|
|
|
dev_put(gid_attr.ndev);
|
|
|
+ work->path[0].rec_type =
|
|
|
+ sa_conv_gid_to_pathrec_type(gid_attr.gid_type);
|
|
|
+ } else {
|
|
|
+ work->path[0].rec_type = SA_PATH_REC_TYPE_IB;
|
|
|
}
|
|
|
- work->path[0].gid_type = gid_attr.gid_type;
|
|
|
ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av,
|
|
|
cm_id_priv);
|
|
|
}
|
|
@@ -1789,8 +1793,13 @@ static int cm_req_handler(struct cm_work *work)
|
|
|
work->path[0].ifindex = gid_attr.ndev->ifindex;
|
|
|
work->path[0].net = dev_net(gid_attr.ndev);
|
|
|
dev_put(gid_attr.ndev);
|
|
|
+ work->path[0].rec_type =
|
|
|
+ sa_conv_gid_to_pathrec_type(gid_attr.gid_type);
|
|
|
+ } else {
|
|
|
+ work->path[0].rec_type = SA_PATH_REC_TYPE_IB;
|
|
|
}
|
|
|
- work->path[0].gid_type = gid_attr.gid_type;
|
|
|
+ if (req_msg->alt_local_lid)
|
|
|
+ work->path[1].rec_type = work->path[0].rec_type;
|
|
|
ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID,
|
|
|
&work->path[0].sgid, sizeof work->path[0].sgid,
|
|
|
NULL, 0);
|