RDMA/hfi1: Move grh_required into update_sm_ah
grh_required is intended to be a global setting where all AV's will require a GRH, not just the sm_lid. Move the special logic to the creation of the SM AH. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Artemy Kovalyov <artemyko@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
This commit is contained in:
Родитель
2f944c0fbf
Коммит
958200ad8e
|
@ -2300,16 +2300,24 @@ static void update_sm_ah(struct work_struct *work)
|
|||
rdma_ah_set_dlid(&ah_attr, port_attr.sm_lid);
|
||||
rdma_ah_set_sl(&ah_attr, port_attr.sm_sl);
|
||||
rdma_ah_set_port_num(&ah_attr, port->port_num);
|
||||
if (port_attr.grh_required) {
|
||||
if (ah_attr.type == RDMA_AH_ATTR_TYPE_OPA) {
|
||||
rdma_ah_set_make_grd(&ah_attr, true);
|
||||
} else {
|
||||
rdma_ah_set_ah_flags(&ah_attr, IB_AH_GRH);
|
||||
rdma_ah_set_subnet_prefix(&ah_attr,
|
||||
cpu_to_be64(port_attr.subnet_prefix));
|
||||
rdma_ah_set_interface_id(&ah_attr,
|
||||
cpu_to_be64(IB_SA_WELL_KNOWN_GUID));
|
||||
}
|
||||
|
||||
/*
|
||||
* The OPA sm_lid of 0xFFFF needs special handling so that it can be
|
||||
* differentiated from a permissive LID of 0xFFFF. We set the
|
||||
* grh_required flag here so the SA can program the DGID in the
|
||||
* address handle appropriately
|
||||
*/
|
||||
if (ah_attr.type == RDMA_AH_ATTR_TYPE_OPA &&
|
||||
(port_attr.grh_required ||
|
||||
port_attr.sm_lid == be16_to_cpu(IB_LID_PERMISSIVE)))
|
||||
rdma_ah_set_make_grd(&ah_attr, true);
|
||||
|
||||
if (ah_attr.type == RDMA_AH_ATTR_TYPE_IB && port_attr.grh_required) {
|
||||
rdma_ah_set_ah_flags(&ah_attr, IB_AH_GRH);
|
||||
rdma_ah_set_subnet_prefix(&ah_attr,
|
||||
cpu_to_be64(port_attr.subnet_prefix));
|
||||
rdma_ah_set_interface_id(&ah_attr,
|
||||
cpu_to_be64(IB_SA_WELL_KNOWN_GUID));
|
||||
}
|
||||
|
||||
new_ah->ah = rdma_create_ah(port->agent->qp->pd, &ah_attr);
|
||||
|
|
|
@ -1498,15 +1498,6 @@ static int query_port(struct rvt_dev_info *rdi, u8 port_num,
|
|||
props->active_mtu = !valid_ib_mtu(ppd->ibmtu) ? props->max_mtu :
|
||||
mtu_to_enum(ppd->ibmtu, IB_MTU_4096);
|
||||
|
||||
/*
|
||||
* sm_lid of 0xFFFF needs special handling so that it can
|
||||
* be differentiated from a permissve LID of 0xFFFF.
|
||||
* We set the grh_required flag here so the SA can program
|
||||
* the DGID in the address handle appropriately
|
||||
*/
|
||||
if (props->sm_lid == be16_to_cpu(IB_LID_PERMISSIVE))
|
||||
props->grh_required = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче