]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/infiniband/ulp/srp/ib_srp.c
IB/SA: Split struct sa_path_rec based on IB and ROCE specific fields
[karo-tx-linux.git] / drivers / infiniband / ulp / srp / ib_srp.c
index cee46266f434850e6a9533615d812b4c610d5c13..89341dde9e5be370651fa578cc4edf9025ba7996 100644 (file)
@@ -312,10 +312,11 @@ static int srp_new_cm_id(struct srp_rdma_ch *ch)
        if (ch->cm_id)
                ib_destroy_cm_id(ch->cm_id);
        ch->cm_id = new_cm_id;
+       ch->path.rec_type = SA_PATH_REC_TYPE_IB;
        ch->path.sgid = target->sgid;
        ch->path.dgid = target->orig_dgid;
        ch->path.pkey = target->pkey;
-       ch->path.service_id = target->service_id;
+       sa_path_set_service_id(&ch->path, target->service_id);
 
        return 0;
 }
@@ -643,7 +644,7 @@ static void srp_free_ch_ib(struct srp_target_port *target,
 }
 
 static void srp_path_rec_completion(int status,
-                                   struct ib_sa_path_rec *pathrec,
+                                   struct sa_path_rec *pathrec,
                                    void *ch_ptr)
 {
        struct srp_rdma_ch *ch = ch_ptr;
@@ -2399,12 +2400,12 @@ static void srp_cm_rej_handler(struct ib_cm_id *cm_id,
        switch (event->param.rej_rcvd.reason) {
        case IB_CM_REJ_PORT_CM_REDIRECT:
                cpi = event->param.rej_rcvd.ari;
-               ch->path.dlid = cpi->redirect_lid;
+               sa_path_set_dlid(&ch->path, cpi->redirect_lid);
                ch->path.pkey = cpi->redirect_pkey;
                cm_id->remote_cm_qpn = be32_to_cpu(cpi->redirect_qp) & 0x00ffffff;
                memcpy(ch->path.dgid.raw, cpi->redirect_gid, 16);
 
-               ch->status = ch->path.dlid ?
+               ch->status = sa_path_get_dlid(&ch->path) ?
                        SRP_DLID_REDIRECT : SRP_PORT_REDIRECT;
                break;