]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
IB/providers: Avoid null netdev check for RoCE
authorParav Pandit <parav@mellanox.com>
Sun, 1 Apr 2018 12:08:23 +0000 (15:08 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Apr 2018 03:33:51 +0000 (21:33 -0600)
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>
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/hns/hns_roce_ah.c
drivers/infiniband/hw/mlx4/ah.c
drivers/infiniband/hw/mlx4/qp.c
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/ocrdma/ocrdma_ah.c
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
drivers/infiniband/hw/qedr/qedr_roce_cm.c
drivers/infiniband/hw/qedr/verbs.c
drivers/infiniband/sw/rxe/rxe_verbs.c

index 944eb0acbbac76f86b4263922bd35a8e3c25b5e9..63a0e08dd6fe56ae9b66f644ce08b6cdf171a858 100644 (file)
@@ -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);
index 7dd6a66ea244aab697aed262c2f60efa57efc05c..d74928621559bb6e9696eedde2382885cc33fb53 100644 (file)
@@ -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) &
index 6dee4fdc5d671a27100658ab7ad53a6ee0829b85..9345d5b546d16bd8507ef2fc977c9d60b172d7e2 100644 (file)
@@ -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 |
index 726a6ae90de0e1047ea65e452e57f54df5c2204c..50af8915e7ec799e87297c1b678a4ae9eed4f262 100644 (file)
@@ -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);
index 6b50711df786b30bcad633914ce0292638a9048c..9e6780eadd1e9a67c6ddea537b37a83345a64f37 100644 (file)
@@ -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;
index dec650930ca66abde3fe34a4e27ce6e0ca2d3e34..3897b64532e12480aed07b324b8126935ad86b81 100644 (file)
@@ -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);
 
index 12783262eb7597a55d2df877338bc2c757db11ee..2c260e1c29d16f425cf2b9d654ff17bc73460e5e 100644 (file)
@@ -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);
index eedb937d6fa9a90af2c16b85bad814f2f0b20283..0f14e687bb9199cb34d0a69cf48ca74db2c68ced 100644 (file)
@@ -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) {
index a523d6f5fef33d42b1f8f48e43a39f038fa727a9..a9f494fb892a772c544cd1c0ab7ac682a75c2807 100644 (file)
@@ -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);
-
-               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;
-               }
+       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;
        }
 
        for (i = 0; i < 4; i++) {
index f83bbf550ec0f30915e987b3345c0ef63421c088..0661c2783b14674b0e21acb493f55966aa06455b 100644 (file)
@@ -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;
 }