Re: [rdma-next v1 13/22] RDMA/hns: Remove empty functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 Removing the "modify_port" hook is causing some issues with ib_cm module.
While adding a mad agent for the new device, ib_cm invokes
ib_modify_port  which fails
with return value -ENOSYS. So the mad agent gets unregistered. This
break the connection
establishment. It is broken for bnxt_re also.

The following patch helps. But it is like a workaround to solve the problem.

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index d5ca101..59911dd 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -4189,7 +4189,7 @@ static void cm_add_one(struct ib_device *ib_device)
                        goto error2;

                ret = ib_modify_port(ib_device, i, 0, &port_modify);
-               if (ret)
+               if (ret && ret != -ENOSYS)
                        goto error3;

                count++;

Or should we have the modify_port hook with some basic checks?

Thanks,
Selvin

On Sun, Aug 13, 2017 at 3:48 PM, Leon Romanovsky <leon@xxxxxxxxxx> wrote:
> From: Leon Romanovsky <leonro@xxxxxxxxxxxx>
>
> The functions which are not implemented can be simply ignored
> instead of defining empty function. This patch removes such functions
> from hns driver.
>
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> Reviewed-by: Dennis Dalessandro <dennis.dalessandro@xxxxxxxxx>
> ---
>  drivers/infiniband/hw/hns/hns_roce_main.c | 14 --------------
>  1 file changed, 14 deletions(-)
>
> diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
> index d9777b662eba..250e2059ef07 100644
> --- a/drivers/infiniband/hw/hns/hns_roce_main.c
> +++ b/drivers/infiniband/hw/hns/hns_roce_main.c
> @@ -285,12 +285,6 @@ static enum rdma_link_layer hns_roce_get_link_layer(struct ib_device *device,
>         return IB_LINK_LAYER_ETHERNET;
>  }
>
> -static int hns_roce_query_gid(struct ib_device *ib_dev, u8 port_num, int index,
> -                             union ib_gid *gid)
> -{
> -       return 0;
> -}
> -
>  static int hns_roce_query_pkey(struct ib_device *ib_dev, u8 port, u16 index,
>                                u16 *pkey)
>  {
> @@ -316,12 +310,6 @@ static int hns_roce_modify_device(struct ib_device *ib_dev, int mask,
>         return 0;
>  }
>
> -static int hns_roce_modify_port(struct ib_device *ib_dev, u8 port_num, int mask,
> -                               struct ib_port_modify *props)
> -{
> -       return 0;
> -}
> -
>  static struct ib_ucontext *hns_roce_alloc_ucontext(struct ib_device *ib_dev,
>                                                    struct ib_udata *udata)
>  {
> @@ -462,10 +450,8 @@ static int hns_roce_register_device(struct hns_roce_dev *hr_dev)
>         ib_dev->modify_device           = hns_roce_modify_device;
>         ib_dev->query_device            = hns_roce_query_device;
>         ib_dev->query_port              = hns_roce_query_port;
> -       ib_dev->modify_port             = hns_roce_modify_port;
>         ib_dev->get_link_layer          = hns_roce_get_link_layer;
>         ib_dev->get_netdev              = hns_roce_get_netdev;
> -       ib_dev->query_gid               = hns_roce_query_gid;
>         ib_dev->add_gid                 = hns_roce_add_gid;
>         ib_dev->del_gid                 = hns_roce_del_gid;
>         ib_dev->query_pkey              = hns_roce_query_pkey;
> --
> 2.14.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux