On 20/02/2015 00:02, Somnath Kotur wrote: > @@ -1521,6 +1520,8 @@ static int cm_req_handler(struct cm_work *work) > struct ib_cm_id *cm_id; > struct cm_id_private *cm_id_priv, *listen_cm_id_priv; > struct cm_req_msg *req_msg; > + union ib_gid gid; > + struct ib_gid_attr gid_attr; > int ret; > > req_msg = (struct cm_req_msg *)work->mad_recv_wc->recv_buf.mad; > @@ -1560,11 +1561,19 @@ static int cm_req_handler(struct cm_work *work) > cm_format_paths_from_req(req_msg, &work->path[0], &work->path[1]); > > memcpy(work->path[0].dmac, cm_id_priv->av.ah_attr.dmac, ETH_ALEN); > - ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av); > + ret = ib_get_cached_gid(work->port->cm_dev->ib_device, > + work->port->port_num, > + cm_id_priv->av.ah_attr.grh.sgid_index, > + &gid, &gid_attr); > + if (!ret) { > + work->path[0].gid_type = gid_attr.gid_type; > + ret = cm_init_av_by_path(&work->path[0], &cm_id_priv->av); > + } > if (ret) { > ib_get_cached_gid(work->port->cm_dev->ib_device, > work->port->port_num, 0, &work->path[0].sgid, > - NULL); > + &gid_attr); > + work->path[0].gid_type = gid_attr.gid_type; > ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID, > &work->path[0].sgid, sizeof work->path[0].sgid, > NULL, 0); Is there support for alternative path? (Because I don't see a similar change for path[1]). -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html