* [PATCH v2 net 0/2] net/smc: ib_query_gid() patches @ 2017-10-11 11:47 Ursula Braun 2017-10-11 11:47 ` [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() Ursula Braun ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Ursula Braun @ 2017-10-11 11:47 UTC (permalink / raw) To: davem-fT/PcQaiUtIeIZ0/mPfg9Q Cc: netdev-u79uwXL29TY76Z2rM5mHXA, linux-rdma-u79uwXL29TY76Z2rM5mHXA, linux-s390-u79uwXL29TY76Z2rM5mHXA, jwi-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8, schwidefsky-tA70FqPdS9bQT0dZR+AlfA, heiko.carstens-tA70FqPdS9bQT0dZR+AlfA, raspl-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8, ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8, parav-VPRAkNaXOzVWk0Htik3J/w Dave, triggered by Parav Pandit here are 2 cleanup patches for usage of ib_query_gid() in the smc-code. Thanks, Ursula v2 changes advised by Parav Pandit: extra check is_vlan_dev() in patch 2/2 "RoCE" spelling added "Reported-by" added "Reviewed-by" added "Fixes" Ursula Braun (2): net/smc: replace function pointer get_netdev() net/smc: dev_put for netdev after usage of ib_query_gid() net/smc/smc_core.c | 12 ++++++++---- net/smc/smc_ib.c | 26 +++++++++----------------- 2 files changed, 17 insertions(+), 21 deletions(-) -- 2.13.5 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() 2017-10-11 11:47 [PATCH v2 net 0/2] net/smc: ib_query_gid() patches Ursula Braun @ 2017-10-11 11:47 ` Ursula Braun [not found] ` <20171011114723.30733-2-ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> 2017-10-11 11:47 ` [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of ib_query_gid() Ursula Braun 2017-10-12 19:20 ` [PATCH v2 net 0/2] net/smc: ib_query_gid() patches David Miller 2 siblings, 1 reply; 6+ messages in thread From: Ursula Braun @ 2017-10-11 11:47 UTC (permalink / raw) To: davem Cc: netdev, linux-rdma, linux-s390, jwi, schwidefsky, heiko.carstens, raspl, ubraun, parav SMC should not open code the function pointer get_netdev of the IB device. Replacing ib_query_gid(..., NULL) with ib_query_gid(..., gid_attr) allows access to the netdev. Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Suggested-by: Parav Pandit <parav@mellanox.com> Reviewed-by: Parav Pandit <parav@mellanox.com> --- net/smc/smc_ib.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c index 0b5852299158..468e1d725d97 100644 --- a/net/smc/smc_ib.c +++ b/net/smc/smc_ib.c @@ -369,26 +369,17 @@ void smc_ib_buf_unmap_sg(struct smc_ib_device *smcibdev, static int smc_ib_fill_gid_and_mac(struct smc_ib_device *smcibdev, u8 ibport) { - struct net_device *ndev; + struct ib_gid_attr gattr; int rc; rc = ib_query_gid(smcibdev->ibdev, ibport, 0, - &smcibdev->gid[ibport - 1], NULL); - /* the SMC protocol requires specification of the roce MAC address; - * if net_device cannot be determined, it can be derived from gid 0 - */ - ndev = smcibdev->ibdev->get_netdev(smcibdev->ibdev, ibport); - if (ndev) { - memcpy(&smcibdev->mac, ndev->dev_addr, ETH_ALEN); - dev_put(ndev); - } else if (!rc) { - memcpy(&smcibdev->mac[ibport - 1][0], - &smcibdev->gid[ibport - 1].raw[8], 3); - memcpy(&smcibdev->mac[ibport - 1][3], - &smcibdev->gid[ibport - 1].raw[13], 3); - smcibdev->mac[ibport - 1][0] &= ~0x02; - } - return rc; + &smcibdev->gid[ibport - 1], &gattr); + if (rc || !gattr.ndev) + return -ENODEV; + + memcpy(smcibdev->mac[ibport - 1], gattr.ndev->dev_addr, ETH_ALEN); + dev_put(gattr.ndev); + return 0; } /* Create an identifier unique for this instance of SMC-R. @@ -419,6 +410,7 @@ int smc_ib_remember_port_attr(struct smc_ib_device *smcibdev, u8 ibport) &smcibdev->pattr[ibport - 1]); if (rc) goto out; + /* the SMC protocol requires specification of the RoCE MAC address */ rc = smc_ib_fill_gid_and_mac(smcibdev, ibport); if (rc) goto out; -- 2.13.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <20171011114723.30733-2-ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>]
* RE: [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() [not found] ` <20171011114723.30733-2-ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> @ 2017-10-11 14:41 ` Parav Pandit 0 siblings, 0 replies; 6+ messages in thread From: Parav Pandit @ 2017-10-11 14:41 UTC (permalink / raw) To: Ursula Braun, davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, jwi-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org, schwidefsky-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org, heiko.carstens-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org, raspl-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org > -----Original Message----- > From: Ursula Braun [mailto:ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org] > Sent: Wednesday, October 11, 2017 6:47 AM > To: davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org > Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux- > s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; jwi-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org; schwidefsky-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org; > heiko.carstens-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org; raspl-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org; > ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org; Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> > Subject: [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() > > SMC should not open code the function pointer get_netdev of the IB device. > Replacing ib_query_gid(..., NULL) with ib_query_gid(..., gid_attr) allows access > to the netdev. > > Signed-off-by: Ursula Braun <ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> > Suggested-by: Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> > Reviewed-by: Parav Pandit <parav-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org> Looks fine. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of ib_query_gid() 2017-10-11 11:47 [PATCH v2 net 0/2] net/smc: ib_query_gid() patches Ursula Braun 2017-10-11 11:47 ` [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() Ursula Braun @ 2017-10-11 11:47 ` Ursula Braun 2017-10-11 14:43 ` Parav Pandit 2017-10-12 19:20 ` [PATCH v2 net 0/2] net/smc: ib_query_gid() patches David Miller 2 siblings, 1 reply; 6+ messages in thread From: Ursula Braun @ 2017-10-11 11:47 UTC (permalink / raw) To: davem Cc: netdev, linux-rdma, linux-s390, jwi, schwidefsky, heiko.carstens, raspl, ubraun, parav For RoCEs ib_query_gid() takes a reference count on the net_device. This reference count must be decreased by the caller. Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> Reported-by: Parav Pandit <parav@mellanox.com> Reviewed-by: Parav Pandit <parav@mellanox.com> Fixes: 0cfdd8f92cac ("smc: connection and link group creation") --- net/smc/smc_core.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index 20b66e79c5d6..5f6a20084157 100644 --- a/net/smc/smc_core.c +++ b/net/smc/smc_core.c @@ -380,10 +380,14 @@ static int smc_link_determine_gid(struct smc_link_group *lgr) if (ib_query_gid(lnk->smcibdev->ibdev, lnk->ibport, i, &gid, &gattr)) continue; - if (gattr.ndev && - (vlan_dev_vlan_id(gattr.ndev) == lgr->vlan_id)) { - lnk->gid = gid; - return 0; + if (gattr.ndev) { + if (is_vlan_dev(gattr.ndev) && + vlan_dev_vlan_id(gattr.ndev) == lgr->vlan_id) { + lnk->gid = gid; + dev_put(gattr.ndev); + return 0; + } + dev_put(gattr.ndev); } } return -ENODEV; -- 2.13.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* RE: [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of ib_query_gid() 2017-10-11 11:47 ` [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of ib_query_gid() Ursula Braun @ 2017-10-11 14:43 ` Parav Pandit 0 siblings, 0 replies; 6+ messages in thread From: Parav Pandit @ 2017-10-11 14:43 UTC (permalink / raw) To: Ursula Braun, davem@davemloft.net Cc: netdev@vger.kernel.org, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, jwi@linux.vnet.ibm.com, schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com, raspl@linux.vnet.ibm.com > -----Original Message----- > From: Ursula Braun [mailto:ubraun@linux.vnet.ibm.com] > Sent: Wednesday, October 11, 2017 6:47 AM > To: davem@davemloft.net > Cc: netdev@vger.kernel.org; linux-rdma@vger.kernel.org; linux- > s390@vger.kernel.org; jwi@linux.vnet.ibm.com; schwidefsky@de.ibm.com; > heiko.carstens@de.ibm.com; raspl@linux.vnet.ibm.com; > ubraun@linux.vnet.ibm.com; Parav Pandit <parav@mellanox.com> > Subject: [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of > ib_query_gid() > > For RoCEs ib_query_gid() takes a reference count on the net_device. > This reference count must be decreased by the caller. > > Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com> > Reported-by: Parav Pandit <parav@mellanox.com> > Reviewed-by: Parav Pandit <parav@mellanox.com> > Fixes: 0cfdd8f92cac ("smc: connection and link group creation") > --- > net/smc/smc_core.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/net/smc/smc_core.c b/net/smc/smc_core.c index > 20b66e79c5d6..5f6a20084157 100644 > --- a/net/smc/smc_core.c > +++ b/net/smc/smc_core.c > @@ -380,10 +380,14 @@ static int smc_link_determine_gid(struct > smc_link_group *lgr) > if (ib_query_gid(lnk->smcibdev->ibdev, lnk->ibport, i, &gid, > &gattr)) > continue; > - if (gattr.ndev && > - (vlan_dev_vlan_id(gattr.ndev) == lgr->vlan_id)) { > - lnk->gid = gid; > - return 0; > + if (gattr.ndev) { > + if (is_vlan_dev(gattr.ndev) && > + vlan_dev_vlan_id(gattr.ndev) == lgr->vlan_id) { > + lnk->gid = gid; > + dev_put(gattr.ndev); > + return 0; > + } > + dev_put(gattr.ndev); > } > } > return -ENODEV; > -- > 2.13.5 Looks fine now. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 net 0/2] net/smc: ib_query_gid() patches 2017-10-11 11:47 [PATCH v2 net 0/2] net/smc: ib_query_gid() patches Ursula Braun 2017-10-11 11:47 ` [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() Ursula Braun 2017-10-11 11:47 ` [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of ib_query_gid() Ursula Braun @ 2017-10-12 19:20 ` David Miller 2 siblings, 0 replies; 6+ messages in thread From: David Miller @ 2017-10-12 19:20 UTC (permalink / raw) To: ubraun Cc: netdev, linux-rdma, linux-s390, jwi, schwidefsky, heiko.carstens, raspl, parav From: Ursula Braun <ubraun@linux.vnet.ibm.com> Date: Wed, 11 Oct 2017 13:47:21 +0200 > triggered by Parav Pandit here are 2 cleanup patches for usage of > ib_query_gid() in the smc-code. Series applied to net-next, thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-10-12 19:20 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-10-11 11:47 [PATCH v2 net 0/2] net/smc: ib_query_gid() patches Ursula Braun 2017-10-11 11:47 ` [PATCH v2 net 1/2] net/smc: replace function pointer get_netdev() Ursula Braun [not found] ` <20171011114723.30733-2-ubraun-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> 2017-10-11 14:41 ` Parav Pandit 2017-10-11 11:47 ` [PATCH v2 net 2/2] net/smc: dev_put for netdev after usage of ib_query_gid() Ursula Braun 2017-10-11 14:43 ` Parav Pandit 2017-10-12 19:20 ` [PATCH v2 net 0/2] net/smc: ib_query_gid() patches David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).