> -----Original Message----- > From: Ursula Braun [mailto:ubraun@xxxxxxxxxxxxxxxxxx] > Sent: Tuesday, October 10, 2017 9:14 AM > To: davem@xxxxxxxxxxxxx > Cc: netdev@xxxxxxxxxxxxxxx; linux-rdma@xxxxxxxxxxxxxxx; linux- > s390@xxxxxxxxxxxxxxx; jwi@xxxxxxxxxxxxxxxxxx; schwidefsky@xxxxxxxxxx; > heiko.carstens@xxxxxxxxxx; raspl@xxxxxxxxxxxxxxxxxx; > ubraun@xxxxxxxxxxxxxxxxxx; Parav Pandit <parav@xxxxxxxxxxxx> > Subject: [PATCH 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@xxxxxxxxxxxxxxxxxx> > Suggested-by: Parav Pandit <parav@xxxxxxxxxxxx> Looks fine to me. Minor nit below. Reviewed-by: Parav Pandit <parav@xxxxxxxxxxxx> > --- > 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..b428c0f6c782 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 */ RoCE MAC address > rc = smc_ib_fill_gid_and_mac(smcibdev, ibport); > if (rc) > goto out; > -- > 2.13.5 -- To unsubscribe from this list: send the line "unsubscribe linux-s390" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html