RE: [PATCH rdma-next 1/2] IB/core: Introduce and use rdma_is_zero_gid()

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

 




> -----Original Message-----
> From: Jason Gunthorpe [mailto:jgg@xxxxxxxx]
> Sent: Wednesday, May 23, 2018 5:58 PM
> To: Leon Romanovsky <leon@xxxxxxxxxx>
> Cc: Doug Ledford <dledford@xxxxxxxxxx>; Leon Romanovsky
> <leonro@xxxxxxxxxxxx>; RDMA mailing list <linux-rdma@xxxxxxxxxxxxxxx>;
> Parav Pandit <parav@xxxxxxxxxxxx>
> Subject: Re: [PATCH rdma-next 1/2] IB/core: Introduce and use
> rdma_is_zero_gid()
> 
> On Tue, May 22, 2018 at 08:33:45PM +0300, Leon Romanovsky wrote:
> > From: Parav Pandit <parav@xxxxxxxxxxxx>
> >
> > Instead of open coding memcmp() to check whether a given GID is zero
> > or not, use a helper function to do so.
> >
> > Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx>
> > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> > ---
> >  drivers/infiniband/core/cache.c   | 14 ++++++++++++--
> >  drivers/infiniband/hw/mlx4/main.c |  2 +-
> >  drivers/infiniband/hw/mlx4/qp.c   |  2 +-
> >  include/rdma/ib_cache.h           |  1 +
> >  4 files changed, 15 insertions(+), 4 deletions(-)
> 
> Applied, but I noticed this missed a memcmp, and I decided to drop the
> memcpy's too. Here is delta, please check my change.
2 out of 3 changes are fine.
cleanup_gid_table_port() cleanup was not needed because in next patch zero gid checking goes away as we completely rely on the state/validity of the gid.
But its fine, I will update the next patch to avoid merge conflict.

> 
> Would be nice to see the last two zgid users go away and with them the global
> symbol too..
> 
> diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c
> index c09b63f9960387..82699f70e9b60b 100644
> --- a/drivers/infiniband/core/cache.c
> +++ b/drivers/infiniband/core/cache.c
> @@ -274,7 +274,7 @@ static void del_gid(struct ib_device *ib_dev, u8 port,
> 
>  	if (rdma_protocol_roce(ib_dev, port))
>  		del_roce_gid(ib_dev, port, table, ix);
> -	memcpy(&table->data_vec[ix].gid, &zgid, sizeof(zgid));
> +	memset(&table->data_vec[ix].gid, 0, sizeof(table->data_vec[ix].gid));
>  	memset(&table->data_vec[ix].attr, 0, sizeof(table->data_vec[ix].attr));
>  	table->data_vec[ix].context = NULL;
>  }
> @@ -734,8 +734,7 @@ static void cleanup_gid_table_port(struct ib_device
> *ib_dev, u8 port,
> 
>  	mutex_lock(&table->lock);
>  	for (i = 0; i < table->sz; ++i) {
> -		if (memcmp(&table->data_vec[i].gid, &zgid,
> -			   sizeof(table->data_vec[i].gid))) {
> +		if (!rdma_is_zero_gid(&table->data_vec[i].gid)) {
>  			del_gid(ib_dev, port, table, i);
>  			deleted = true;
>  		}
> diff --git a/drivers/infiniband/hw/mlx4/main.c
> b/drivers/infiniband/hw/mlx4/main.c
> index c6d6c1c3410ecd..bf12394c13c165 100644
> --- a/drivers/infiniband/hw/mlx4/main.c
> +++ b/drivers/infiniband/hw/mlx4/main.c
> @@ -345,7 +345,8 @@ static int mlx4_ib_del_gid(const struct ib_gid_attr *attr,
> void **context)
>  		if (!ctx->refcount) {
>  			unsigned int real_index = ctx->real_index;
> 
> -			memcpy(&port_gid_table->gids[real_index].gid, &zgid,
> sizeof(zgid));
> +			memset(&port_gid_table->gids[real_index].gid, 0,
> +			       sizeof(port_gid_table->gids[real_index].gid));
>  			kfree(port_gid_table->gids[real_index].ctx);
>  			port_gid_table->gids[real_index].ctx = NULL;
>  			hw_update = 1;
--
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