IB/SA: Split struct sa_path_rec based on IB and ROCE specific fields
sa_path_rec now contains a union of sa_path_rec_ib and sa_path_rec_roce based on the type of the path record. Note that fields applicable to path record type ROCE v1 and ROCE v2 fall under sa_path_rec_roce. Accessor functions are added to these fields so the caller doesn't have to know the type. Reviewed-by: Don Hiatt <don.hiatt@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
此提交包含在:

提交者
Doug Ledford

父節點
dfa834e1d9
當前提交
9fdca4da4d
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
新增問題並參考
封鎖使用者