mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-17 07:54:54 +08:00
IB/providers: Avoid null netdev check for RoCE
Now that IB core GID cache ensures that all RoCE entries have an associated netdev remove null checks from the provider drivers for clarity. Reviewed-by: Mark Bloch <markb@mellanox.com> Signed-off-by: Parav Pandit <parav@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
14169e333e
commit
3e44e0ee08
@ -718,8 +718,7 @@ struct ib_ah *bnxt_re_create_ah(struct ib_pd *ib_pd,
|
||||
grh->sgid_index);
|
||||
goto fail;
|
||||
}
|
||||
if (sgid_attr.ndev)
|
||||
dev_put(sgid_attr.ndev);
|
||||
dev_put(sgid_attr.ndev);
|
||||
/* Get network header type for this GID */
|
||||
nw_type = ib_gid_to_network_type(sgid_attr.gid_type, &sgid);
|
||||
switch (nw_type) {
|
||||
@ -1697,7 +1696,7 @@ int bnxt_re_modify_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
|
||||
status = ib_get_cached_gid(&rdev->ibdev, 1,
|
||||
grh->sgid_index,
|
||||
&sgid, &sgid_attr);
|
||||
if (!status && sgid_attr.ndev) {
|
||||
if (!status) {
|
||||
memcpy(qp->qplib_qp.smac, sgid_attr.ndev->dev_addr,
|
||||
ETH_ALEN);
|
||||
dev_put(sgid_attr.ndev);
|
||||
|
@ -68,11 +68,9 @@ struct ib_ah *hns_roce_create_ah(struct ib_pd *ibpd,
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
if (gid_attr.ndev) {
|
||||
if (is_vlan_dev(gid_attr.ndev))
|
||||
vlan_tag = vlan_dev_vlan_id(gid_attr.ndev);
|
||||
dev_put(gid_attr.ndev);
|
||||
}
|
||||
if (is_vlan_dev(gid_attr.ndev))
|
||||
vlan_tag = vlan_dev_vlan_id(gid_attr.ndev);
|
||||
dev_put(gid_attr.ndev);
|
||||
|
||||
if (vlan_tag < 0x1000)
|
||||
vlan_tag |= (rdma_ah_get_sl(ah_attr) &
|
||||
|
@ -101,12 +101,10 @@ static struct ib_ah *create_iboe_ah(struct ib_pd *pd,
|
||||
if (ret)
|
||||
return ERR_PTR(ret);
|
||||
eth_zero_addr(ah->av.eth.s_mac);
|
||||
if (gid_attr.ndev) {
|
||||
if (is_vlan_dev(gid_attr.ndev))
|
||||
vlan_tag = vlan_dev_vlan_id(gid_attr.ndev);
|
||||
memcpy(ah->av.eth.s_mac, gid_attr.ndev->dev_addr, ETH_ALEN);
|
||||
dev_put(gid_attr.ndev);
|
||||
}
|
||||
if (is_vlan_dev(gid_attr.ndev))
|
||||
vlan_tag = vlan_dev_vlan_id(gid_attr.ndev);
|
||||
memcpy(ah->av.eth.s_mac, gid_attr.ndev->dev_addr, ETH_ALEN);
|
||||
dev_put(gid_attr.ndev);
|
||||
if (vlan_tag < 0x1000)
|
||||
vlan_tag |= (rdma_ah_get_sl(ah_attr) & 7) << 13;
|
||||
ah->av.eth.port_pd = cpu_to_be32(to_mpd(pd)->pdn |
|
||||
|
@ -2370,7 +2370,7 @@ static int __mlx4_ib_modify_qp(void *src, enum mlx4_ib_source_type src_type,
|
||||
|
||||
status = ib_get_cached_gid(&dev->ib_dev, port_num,
|
||||
index, &gid, &gid_attr);
|
||||
if (!status && gid_attr.ndev) {
|
||||
if (!status) {
|
||||
vlan = rdma_vlan_dev_vlan_id(gid_attr.ndev);
|
||||
memcpy(smac, gid_attr.ndev->dev_addr, ETH_ALEN);
|
||||
dev_put(gid_attr.ndev);
|
||||
|
@ -525,9 +525,6 @@ __be16 mlx5_get_roce_udp_sport(struct mlx5_ib_dev *dev, u8 port_num,
|
||||
if (ib_get_cached_gid(&dev->ib_dev, port_num, index, &gid, &attr))
|
||||
return 0;
|
||||
|
||||
if (!attr.ndev)
|
||||
return 0;
|
||||
|
||||
dev_put(attr.ndev);
|
||||
|
||||
if (attr.gid_type != IB_GID_TYPE_ROCE_UDP_ENCAP)
|
||||
@ -547,9 +544,6 @@ int mlx5_get_roce_gid_type(struct mlx5_ib_dev *dev, u8 port_num,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!attr.ndev)
|
||||
return -ENODEV;
|
||||
|
||||
dev_put(attr.ndev);
|
||||
|
||||
*gid_type = attr.gid_type;
|
||||
|
@ -193,11 +193,9 @@ struct ib_ah *ocrdma_create_ah(struct ib_pd *ibpd, struct rdma_ah_attr *attr,
|
||||
__func__, status);
|
||||
goto av_conf_err;
|
||||
}
|
||||
if (sgid_attr.ndev) {
|
||||
if (is_vlan_dev(sgid_attr.ndev))
|
||||
vlan_tag = vlan_dev_vlan_id(sgid_attr.ndev);
|
||||
dev_put(sgid_attr.ndev);
|
||||
}
|
||||
if (is_vlan_dev(sgid_attr.ndev))
|
||||
vlan_tag = vlan_dev_vlan_id(sgid_attr.ndev);
|
||||
dev_put(sgid_attr.ndev);
|
||||
/* Get network header type for this GID */
|
||||
ah->hdr_type = ib_gid_to_network_type(sgid_attr.gid_type, &sgid);
|
||||
|
||||
|
@ -2527,7 +2527,7 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp,
|
||||
|
||||
status = ib_get_cached_gid(&dev->ibdev, 1, grh->sgid_index,
|
||||
&sgid, &sgid_attr);
|
||||
if (!status && sgid_attr.ndev) {
|
||||
if (!status) {
|
||||
vlan_id = rdma_vlan_dev_vlan_id(sgid_attr.ndev);
|
||||
memcpy(mac_addr, sgid_attr.ndev->dev_addr, ETH_ALEN);
|
||||
dev_put(sgid_attr.ndev);
|
||||
|
@ -412,13 +412,11 @@ static inline int qedr_gsi_build_header(struct qedr_dev *dev,
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (sgid_attr.ndev) {
|
||||
vlan_id = rdma_vlan_dev_vlan_id(sgid_attr.ndev);
|
||||
if (vlan_id < VLAN_CFI_MASK)
|
||||
has_vlan = true;
|
||||
vlan_id = rdma_vlan_dev_vlan_id(sgid_attr.ndev);
|
||||
if (vlan_id < VLAN_CFI_MASK)
|
||||
has_vlan = true;
|
||||
|
||||
dev_put(sgid_attr.ndev);
|
||||
}
|
||||
dev_put(sgid_attr.ndev);
|
||||
|
||||
has_udp = (sgid_attr.gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP);
|
||||
if (!has_udp) {
|
||||
|
@ -1093,43 +1093,41 @@ static inline int get_gid_info_from_table(struct ib_qp *ibqp,
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
if (gid_attr.ndev) {
|
||||
qp_params->vlan_id = rdma_vlan_dev_vlan_id(gid_attr.ndev);
|
||||
qp_params->vlan_id = rdma_vlan_dev_vlan_id(gid_attr.ndev);
|
||||
|
||||
dev_put(gid_attr.ndev);
|
||||
nw_type = ib_gid_to_network_type(gid_attr.gid_type, &gid);
|
||||
switch (nw_type) {
|
||||
case RDMA_NETWORK_IPV6:
|
||||
memcpy(&qp_params->sgid.bytes[0], &gid.raw[0],
|
||||
sizeof(qp_params->sgid));
|
||||
memcpy(&qp_params->dgid.bytes[0],
|
||||
&grh->dgid,
|
||||
sizeof(qp_params->dgid));
|
||||
qp_params->roce_mode = ROCE_V2_IPV6;
|
||||
SET_FIELD(qp_params->modify_flags,
|
||||
QED_ROCE_MODIFY_QP_VALID_ROCE_MODE, 1);
|
||||
break;
|
||||
case RDMA_NETWORK_IB:
|
||||
memcpy(&qp_params->sgid.bytes[0], &gid.raw[0],
|
||||
sizeof(qp_params->sgid));
|
||||
memcpy(&qp_params->dgid.bytes[0],
|
||||
&grh->dgid,
|
||||
sizeof(qp_params->dgid));
|
||||
qp_params->roce_mode = ROCE_V1;
|
||||
break;
|
||||
case RDMA_NETWORK_IPV4:
|
||||
memset(&qp_params->sgid, 0, sizeof(qp_params->sgid));
|
||||
memset(&qp_params->dgid, 0, sizeof(qp_params->dgid));
|
||||
ipv4_addr = qedr_get_ipv4_from_gid(gid.raw);
|
||||
qp_params->sgid.ipv4_addr = ipv4_addr;
|
||||
ipv4_addr =
|
||||
qedr_get_ipv4_from_gid(grh->dgid.raw);
|
||||
qp_params->dgid.ipv4_addr = ipv4_addr;
|
||||
SET_FIELD(qp_params->modify_flags,
|
||||
QED_ROCE_MODIFY_QP_VALID_ROCE_MODE, 1);
|
||||
qp_params->roce_mode = ROCE_V2_IPV4;
|
||||
break;
|
||||
}
|
||||
dev_put(gid_attr.ndev);
|
||||
nw_type = ib_gid_to_network_type(gid_attr.gid_type, &gid);
|
||||
switch (nw_type) {
|
||||
case RDMA_NETWORK_IPV6:
|
||||
memcpy(&qp_params->sgid.bytes[0], &gid.raw[0],
|
||||
sizeof(qp_params->sgid));
|
||||
memcpy(&qp_params->dgid.bytes[0],
|
||||
&grh->dgid,
|
||||
sizeof(qp_params->dgid));
|
||||
qp_params->roce_mode = ROCE_V2_IPV6;
|
||||
SET_FIELD(qp_params->modify_flags,
|
||||
QED_ROCE_MODIFY_QP_VALID_ROCE_MODE, 1);
|
||||
break;
|
||||
case RDMA_NETWORK_IB:
|
||||
memcpy(&qp_params->sgid.bytes[0], &gid.raw[0],
|
||||
sizeof(qp_params->sgid));
|
||||
memcpy(&qp_params->dgid.bytes[0],
|
||||
&grh->dgid,
|
||||
sizeof(qp_params->dgid));
|
||||
qp_params->roce_mode = ROCE_V1;
|
||||
break;
|
||||
case RDMA_NETWORK_IPV4:
|
||||
memset(&qp_params->sgid, 0, sizeof(qp_params->sgid));
|
||||
memset(&qp_params->dgid, 0, sizeof(qp_params->dgid));
|
||||
ipv4_addr = qedr_get_ipv4_from_gid(gid.raw);
|
||||
qp_params->sgid.ipv4_addr = ipv4_addr;
|
||||
ipv4_addr =
|
||||
qedr_get_ipv4_from_gid(grh->dgid.raw);
|
||||
qp_params->dgid.ipv4_addr = ipv4_addr;
|
||||
SET_FIELD(qp_params->modify_flags,
|
||||
QED_ROCE_MODIFY_QP_VALID_ROCE_MODE, 1);
|
||||
qp_params->roce_mode = ROCE_V2_IPV4;
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
@ -256,9 +256,7 @@ static int rxe_init_av(struct rxe_dev *rxe, struct rdma_ah_attr *attr,
|
||||
|
||||
rxe_av_from_attr(rdma_ah_get_port_num(attr), av, attr);
|
||||
rxe_av_fill_ip_info(av, attr, &sgid_attr, &sgid);
|
||||
|
||||
if (sgid_attr.ndev)
|
||||
dev_put(sgid_attr.ndev);
|
||||
dev_put(sgid_attr.ndev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user