> -----Original Message----- > From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma-owner@xxxxxxxxxxxxxxx> > On Behalf Of Stephen Rothwell > Sent: Thursday, July 26, 2018 10:29 PM > To: Jason Gunthorpe <jgg@xxxxxxxxxxxx> > Cc: David Miller <davem@xxxxxxxxxxxxx>; Networking > <netdev@xxxxxxxxxxxxxxx>; Doug Ledford <dledford@xxxxxxxxxx>; Linux-Next > Mailing List <linux-next@xxxxxxxxxxxxxxx>; Linux Kernel Mailing List <linux- > kernel@xxxxxxxxxxxxxxx>; Parav Pandit <parav@xxxxxxxxxxxx>; Ursula Braun > <ubraun@xxxxxxxxxxxxx>; Leon Romanovsky <leonro@xxxxxxxxxxxx>; linux- > rdma@xxxxxxxxxxxxxxx > Subject: Re: linux-next: manual merge of the net-next tree with the rdma tree > > Hi Jason, > > On Thu, 26 Jul 2018 20:48:32 -0600 Jason Gunthorpe <jgg@xxxxxxxxxxxx> > wrote: > > > > On Fri, Jul 27, 2018 at 12:33:01PM +1000, Stephen Rothwell wrote: > > > > > I fixed it up (I wasn't sure how to fix this up as so much has > > > changed in the net-next tree and both modified functions had been > > > (re)moved, so I effectively reverted the rdma tree commit) and can > > > carry the fix as necessary. Please come to some arrangement about this. > > > > How does that still compile? We removed ib_query_gid() from the rdma > > tree and replaced it with rdma_get_gid_attr().. > > Yeah, it doesn't :-( > > > I think the merge resolution is going to be a bit nasty to absorb that > > much changing.. > > > > Perhaps we should add a compatability ib_query_gid back to the RDMA > > tree and then send DaveM a commit to fix SMC and remove it during the > > next cycle? Linus can resolve smc_ib.c by using the net version > > > > Does someone else have a better idea? > > I applied this merge fix patch: > > From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > Date: Fri, 27 Jul 2018 13:19:31 +1000 > Subject: [PATCH] net/smc: fixups for ip_query_gid API removal > > Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> > --- > net/smc/smc_ib.c | 47 +++++++++++++++++++++++++---------------------- > 1 file changed, 25 insertions(+), 22 deletions(-) > > diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c index > 2cc64bc8ae20..debc6e44f738 100644 > --- a/net/smc/smc_ib.c > +++ b/net/smc/smc_ib.c > @@ -16,6 +16,7 @@ > #include <linux/workqueue.h> > #include <linux/scatterlist.h> > #include <rdma/ib_verbs.h> > +#include <rdma/ib_cache.h> > > #include "smc_pnet.h" > #include "smc_ib.h" > @@ -144,17 +145,21 @@ int smc_ib_ready_link(struct smc_link *lnk) > > static int smc_ib_fill_mac(struct smc_ib_device *smcibdev, u8 ibport) { > - struct ib_gid_attr gattr; > - union ib_gid gid; > - int rc; > + const struct ib_gid_attr *gattr; > + int rc = 0; > > - rc = ib_query_gid(smcibdev->ibdev, ibport, 0, &gid, &gattr); > - if (rc || !gattr.ndev) > - return -ENODEV; > + gattr = rdma_get_gid_attr(smcibdev->ibdev, ibport, 0); > + if (IS_ERR(gattr)) > + return PTR_ERR(gattr); > + if (!gattr->ndev) { > + rc = -ENODEV; > + goto done; > + } > > - memcpy(smcibdev->mac[ibport - 1], gattr.ndev->dev_addr, ETH_ALEN); > - dev_put(gattr.ndev); > - return 0; > + memcpy(smcibdev->mac[ibport - 1], gattr->ndev->dev_addr, > ETH_ALEN); > +done: > + rdma_put_gid_attr(gattr); > + return rc; > } > > /* Create an identifier unique for this instance of SMC-R. > @@ -179,29 +184,27 @@ bool smc_ib_port_active(struct smc_ib_device > *smcibdev, u8 ibport) int smc_ib_determine_gid(struct smc_ib_device > *smcibdev, u8 ibport, > unsigned short vlan_id, u8 gid[], u8 *sgid_index) { > - struct ib_gid_attr gattr; > - union ib_gid _gid; > + const struct ib_gid_attr *gattr; > int i; > > for (i = 0; i < smcibdev->pattr[ibport - 1].gid_tbl_len; i++) { > - memset(&_gid, 0, SMC_GID_SIZE); > - memset(&gattr, 0, sizeof(gattr)); > - if (ib_query_gid(smcibdev->ibdev, ibport, i, &_gid, &gattr)) > + gattr = rdma_get_gid_attr(smcibdev->ibdev, ibport, i); > + if (IS_ERR(gattr)) > continue; > - if (!gattr.ndev) > + if (!gattr->ndev) > continue; This requires a small fix. If (!gattr->ndev { rdma_put_gid_attr(gattr); continue; } > - if (((!vlan_id && !is_vlan_dev(gattr.ndev)) || > - (vlan_id && is_vlan_dev(gattr.ndev) && > - vlan_dev_vlan_id(gattr.ndev) == vlan_id)) && > - gattr.gid_type == IB_GID_TYPE_IB) { > + if (((!vlan_id && !is_vlan_dev(gattr->ndev)) || > + (vlan_id && is_vlan_dev(gattr->ndev) && > + vlan_dev_vlan_id(gattr->ndev) == vlan_id)) && > + gattr->gid_type == IB_GID_TYPE_IB) { > if (gid) > - memcpy(gid, &_gid, SMC_GID_SIZE); > + memcpy(gid, &gattr->gid, SMC_GID_SIZE); > if (sgid_index) > *sgid_index = i; > - dev_put(gattr.ndev); > + rdma_put_gid_attr(gattr); > return 0; > } > - dev_put(gattr.ndev); > + rdma_put_gid_attr(gattr); > } > return -ENODEV; > } > -- > 2.18.0 > > -- > Cheers, > Stephen Rothwell -- 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