diff mbox

[v3,1/2] IB/usnic: Implement get_netdev hook

Message ID 20170611054450.7221-2-yuval.shaia@oracle.com (mailing list archive)
State Superseded
Headers show

Commit Message

Yuval Shaia June 11, 2017, 5:44 a.m. UTC
usnic's get_netdev hook for struct ib_device is missing - add it.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
Per Moni Shoua's suggestion - create seperate patch for this purpose.
---
 drivers/infiniband/hw/usnic/usnic_ib_main.c  |  1 +
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 10 ++++++++++
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h |  1 +
 3 files changed, 12 insertions(+)

Comments

Leon Romanovsky June 13, 2017, 7:25 a.m. UTC | #1
On Sun, Jun 11, 2017 at 08:44:49AM +0300, Yuval Shaia wrote:
> usnic's get_netdev hook for struct ib_device is missing - add it.
>
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> ---
> Per Moni Shoua's suggestion - create seperate patch for this purpose.
> ---
>  drivers/infiniband/hw/usnic/usnic_ib_main.c  |  1 +
>  drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 10 ++++++++++
>  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |  1 +
>  3 files changed, 12 insertions(+)
>
> diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
> index c0c1e8b..80577b9 100644
> --- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
> +++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
> @@ -409,6 +409,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
>  	us_ibdev->ib_dev.query_port = usnic_ib_query_port;
>  	us_ibdev->ib_dev.query_pkey = usnic_ib_query_pkey;
>  	us_ibdev->ib_dev.query_gid = usnic_ib_query_gid;
> +	us_ibdev->ib_dev.get_netdev = usnic_get_netdev;
>  	us_ibdev->ib_dev.get_link_layer = usnic_ib_port_link_layer;
>  	us_ibdev->ib_dev.alloc_pd = usnic_ib_alloc_pd;
>  	us_ibdev->ib_dev.dealloc_pd = usnic_ib_dealloc_pd;
> diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> index 4996984..f9dc1e80 100644
> --- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> +++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> @@ -424,6 +424,16 @@ int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
>  	return 0;
>  }
>
> +struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num)
> +{
> +	struct usnic_ib_dev *us_ibdev = to_usdev(device);
> +
> +	if (us_ibdev->netdev)
> +		dev_hold(us_ibdev->netdev);

Who will release this reference?

Thanks

> +
> +	return us_ibdev->netdev;
> +}
> +
>  int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
>  				u16 *pkey)
>  {
> diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
> index 172e43b..1fda944 100644
> --- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
> +++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
> @@ -48,6 +48,7 @@ int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
>  				struct ib_qp_init_attr *qp_init_attr);
>  int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
>  				union ib_gid *gid);
> +struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num);
>  int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
>  				u16 *pkey);
>  struct ib_pd *usnic_ib_alloc_pd(struct ib_device *ibdev,
> --
> 2.9.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yuval Shaia June 13, 2017, 7:35 a.m. UTC | #2
On Tue, Jun 13, 2017 at 10:25:26AM +0300, Leon Romanovsky wrote:
> On Sun, Jun 11, 2017 at 08:44:49AM +0300, Yuval Shaia wrote:
> > usnic's get_netdev hook for struct ib_device is missing - add it.
> >
> > Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> > ---
> > Per Moni Shoua's suggestion - create seperate patch for this purpose.
> > ---
> >  drivers/infiniband/hw/usnic/usnic_ib_main.c  |  1 +
> >  drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 10 ++++++++++
> >  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |  1 +
> >  3 files changed, 12 insertions(+)
> >
> > diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
> > index c0c1e8b..80577b9 100644
> > --- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
> > +++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
> > @@ -409,6 +409,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
> >  	us_ibdev->ib_dev.query_port = usnic_ib_query_port;
> >  	us_ibdev->ib_dev.query_pkey = usnic_ib_query_pkey;
> >  	us_ibdev->ib_dev.query_gid = usnic_ib_query_gid;
> > +	us_ibdev->ib_dev.get_netdev = usnic_get_netdev;
> >  	us_ibdev->ib_dev.get_link_layer = usnic_ib_port_link_layer;
> >  	us_ibdev->ib_dev.alloc_pd = usnic_ib_alloc_pd;
> >  	us_ibdev->ib_dev.dealloc_pd = usnic_ib_dealloc_pd;
> > diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> > index 4996984..f9dc1e80 100644
> > --- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> > +++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> > @@ -424,6 +424,16 @@ int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
> >  	return 0;
> >  }
> >
> > +struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num)
> > +{
> > +	struct usnic_ib_dev *us_ibdev = to_usdev(device);
> > +
> > +	if (us_ibdev->netdev)
> > +		dev_hold(us_ibdev->netdev);
> 
> Who will release this reference?

I followed the instructions in struct ib_device so assuming the one that
calls get_netdev will do it.
See ib_cache_gid_add as an example.

Patch #2 aslo take care of it.

> 
> Thanks
> 
> > +
> > +	return us_ibdev->netdev;
> > +}
> > +
> >  int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
> >  				u16 *pkey)
> >  {
> > diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
> > index 172e43b..1fda944 100644
> > --- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
> > +++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
> > @@ -48,6 +48,7 @@ int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
> >  				struct ib_qp_init_attr *qp_init_attr);
> >  int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
> >  				union ib_gid *gid);
> > +struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num);
> >  int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
> >  				u16 *pkey);
> >  struct ib_pd *usnic_ib_alloc_pd(struct ib_device *ibdev,
> > --
> > 2.9.4
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> > the body of a message to majordomo@vger.kernel.org
> > 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christian Benvenuti (benve) June 13, 2017, 7:56 a.m. UTC | #3
> -----Original Message-----
> From: Yuval Shaia [mailto:yuval.shaia@oracle.com]
> Sent: Saturday, June 10, 2017 10:45 PM
> To: dledford@redhat.com; sean.hefty@intel.com; hal.rosenstock@gmail.com;
> selvin.xavier@broadcom.com; devesh.sharma@broadcom.com;
> somnath.kotur@broadcom.com; sriharsha.basavapatna@broadcom.com; Christian
> Benvenuti (benve); Dave Goodell (dgoodell); monis@mellanox.com;
> leonro@mellanox.com; ira.weiny@intel.com;
> dasaratharaman.chandramouli@intel.com; sagi@rimberg.me;
> bart.vanassche@sandisk.com; yishaih@mellanox.com; yuval.shaia@oracle.com;
> linux-rdma@vger.kernel.org
> Subject: [PATCH v3 1/2] IB/usnic: Implement get_netdev hook
> 
> usnic's get_netdev hook for struct ib_device is missing - add it.
> 
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>

Reviewed-by: Christian Benvenuti <benve@cisco.com>

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Leon Romanovsky June 13, 2017, 10:37 a.m. UTC | #4
On Tue, Jun 13, 2017 at 10:35:03AM +0300, Yuval Shaia wrote:
> On Tue, Jun 13, 2017 at 10:25:26AM +0300, Leon Romanovsky wrote:
> > On Sun, Jun 11, 2017 at 08:44:49AM +0300, Yuval Shaia wrote:
> > > usnic's get_netdev hook for struct ib_device is missing - add it.
> > >
> > > Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> > > ---
> > > Per Moni Shoua's suggestion - create seperate patch for this purpose.
> > > ---
> > >  drivers/infiniband/hw/usnic/usnic_ib_main.c  |  1 +
> > >  drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 10 ++++++++++
> > >  drivers/infiniband/hw/usnic/usnic_ib_verbs.h |  1 +
> > >  3 files changed, 12 insertions(+)
> > >
> > > diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
> > > index c0c1e8b..80577b9 100644
> > > --- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
> > > +++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
> > > @@ -409,6 +409,7 @@ static void *usnic_ib_device_add(struct pci_dev *dev)
> > >  	us_ibdev->ib_dev.query_port = usnic_ib_query_port;
> > >  	us_ibdev->ib_dev.query_pkey = usnic_ib_query_pkey;
> > >  	us_ibdev->ib_dev.query_gid = usnic_ib_query_gid;
> > > +	us_ibdev->ib_dev.get_netdev = usnic_get_netdev;
> > >  	us_ibdev->ib_dev.get_link_layer = usnic_ib_port_link_layer;
> > >  	us_ibdev->ib_dev.alloc_pd = usnic_ib_alloc_pd;
> > >  	us_ibdev->ib_dev.dealloc_pd = usnic_ib_dealloc_pd;
> > > diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> > > index 4996984..f9dc1e80 100644
> > > --- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> > > +++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> > > @@ -424,6 +424,16 @@ int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
> > >  	return 0;
> > >  }
> > >
> > > +struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num)
> > > +{
> > > +	struct usnic_ib_dev *us_ibdev = to_usdev(device);
> > > +
> > > +	if (us_ibdev->netdev)
> > > +		dev_hold(us_ibdev->netdev);
> >
> > Who will release this reference?
>
> I followed the instructions in struct ib_device so assuming the one that
> calls get_netdev will do it.
> See ib_cache_gid_add as an example.
>
> Patch #2 aslo take care of it.
>

Thanks,
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
diff mbox

Patch

diff --git a/drivers/infiniband/hw/usnic/usnic_ib_main.c b/drivers/infiniband/hw/usnic/usnic_ib_main.c
index c0c1e8b..80577b9 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_main.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_main.c
@@ -409,6 +409,7 @@  static void *usnic_ib_device_add(struct pci_dev *dev)
 	us_ibdev->ib_dev.query_port = usnic_ib_query_port;
 	us_ibdev->ib_dev.query_pkey = usnic_ib_query_pkey;
 	us_ibdev->ib_dev.query_gid = usnic_ib_query_gid;
+	us_ibdev->ib_dev.get_netdev = usnic_get_netdev;
 	us_ibdev->ib_dev.get_link_layer = usnic_ib_port_link_layer;
 	us_ibdev->ib_dev.alloc_pd = usnic_ib_alloc_pd;
 	us_ibdev->ib_dev.dealloc_pd = usnic_ib_dealloc_pd;
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
index 4996984..f9dc1e80 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
@@ -424,6 +424,16 @@  int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
 	return 0;
 }
 
+struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num)
+{
+	struct usnic_ib_dev *us_ibdev = to_usdev(device);
+
+	if (us_ibdev->netdev)
+		dev_hold(us_ibdev->netdev);
+
+	return us_ibdev->netdev;
+}
+
 int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
 				u16 *pkey)
 {
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
index 172e43b..1fda944 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
@@ -48,6 +48,7 @@  int usnic_ib_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
 				struct ib_qp_init_attr *qp_init_attr);
 int usnic_ib_query_gid(struct ib_device *ibdev, u8 port, int index,
 				union ib_gid *gid);
+struct net_device *usnic_get_netdev(struct ib_device *device, u8 port_num);
 int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
 				u16 *pkey);
 struct ib_pd *usnic_ib_alloc_pd(struct ib_device *ibdev,