Re: [PATCH 10/30] IB/core: Add gid_type to path and rdma_id_private

Haggai Eran
2015-02-19T15:51:49Z

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]).