From patchwork Thu Sep 20 11:21:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leon Romanovsky X-Patchwork-Id: 10607471 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AA578157B for ; Thu, 20 Sep 2018 11:22:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 996022D0ED for ; Thu, 20 Sep 2018 11:22:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8B7A82D1A3; Thu, 20 Sep 2018 11:22:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 299362D0ED for ; Thu, 20 Sep 2018 11:22:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732628AbeITRFO (ORCPT ); Thu, 20 Sep 2018 13:05:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:58596 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730984AbeITRFO (ORCPT ); Thu, 20 Sep 2018 13:05:14 -0400 Received: from localhost (unknown [193.47.165.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 69A4821531; Thu, 20 Sep 2018 11:22:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1537442534; bh=GgVULJ3/7Rrzg8bcsh2TtnmDbtJwLEBPaSlDsjw/fBY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a/npVlydC/ox3rWTgE/kB3yVgQ7W0p4kDYbqL3LvmgStvYYdiujuQRzz5JCYAeekV 5GY/C7T0XhXKK9QogZABJNx23eKgezU2PHeH2/IiSJSzhkWHm8qIgD2TPMT5P7RzZ/ BBh1/ZTPfic050tNqJdSTUPMHEfDrZmhhDM73XXE= From: Leon Romanovsky To: Doug Ledford , Jason Gunthorpe Cc: Leon Romanovsky , RDMA mailing list , linux-s390@vger.kernel.org, Ursula Braun , "David S. Miller" , netdev@vger.kernel.org, Selvin Xavier , Steve Wise , Lijun Ou , Shiraz Saleem , Ariel Elior , Christian Benvenuti , Adit Ranadive , Dennis Dalessandro Subject: [PATCH rdma-next 2/5] net/smc: Use IB device index instead of name Date: Thu, 20 Sep 2018 14:21:59 +0300 Message-Id: <20180920112202.9181-3-leon@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180920112202.9181-1-leon@kernel.org> References: <20180920112202.9181-1-leon@kernel.org> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Leon Romanovsky IB device name is not stable and will be possible to rename in the following patches, update SMC code to use IB index as a stable identification. Signed-off-by: Leon Romanovsky --- net/smc/smc_diag.c | 6 +++--- net/smc/smc_pnet.c | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 14 deletions(-) -- 2.14.4 diff --git a/net/smc/smc_diag.c b/net/smc/smc_diag.c index dbf64a93d68a..ba8b5a5671ec 100644 --- a/net/smc/smc_diag.c +++ b/net/smc/smc_diag.c @@ -156,9 +156,9 @@ static int __smc_diag_dump(struct sock *sk, struct sk_buff *skb, .lnk[0].link_id = smc->conn.lgr->lnk[0].link_id, }; - memcpy(linfo.lnk[0].ibname, - smc->conn.lgr->lnk[0].smcibdev->ibdev->name, - sizeof(smc->conn.lgr->lnk[0].smcibdev->ibdev->name)); + ib_device_get_name(smc->conn.lgr->lnk[0].smcibdev->ibdev, + linfo.lnk[0].ibname); + smc_gid_be16_convert(linfo.lnk[0].gid, smc->conn.lgr->lnk[0].gid); smc_gid_be16_convert(linfo.lnk[0].peer_gid, diff --git a/net/smc/smc_pnet.c b/net/smc/smc_pnet.c index 01c6ce042a1c..67aec5ce6112 100644 --- a/net/smc/smc_pnet.c +++ b/net/smc/smc_pnet.c @@ -70,15 +70,14 @@ struct smc_pnetentry { u8 ib_port; }; -/* Check if two RDMA device entries are identical. Use device name and port +/* Check if two RDMA device entries are identical. Use device index and port * number for comparison. */ -static bool smc_pnet_same_ibname(struct smc_pnetentry *pnetelem, char *ibname, - u8 ibport) +static bool smc_pnet_same_ibindex(struct smc_pnetentry *pnetelem, u32 ibindex, + u8 ibport) { return pnetelem->ib_port == ibport && - !strncmp(pnetelem->smcibdev->ibdev->name, ibname, - sizeof(pnetelem->smcibdev->ibdev->name)); + pnetelem->smcibdev->ibdev->index == ibindex; } /* Find a pnetid in the pnet table. @@ -179,9 +178,9 @@ static int smc_pnet_enter(struct smc_pnetentry *new_pnetelem) sizeof(new_pnetelem->pnet_name)) || !strncmp(pnetelem->ndev->name, new_pnetelem->ndev->name, sizeof(new_pnetelem->ndev->name)) || - smc_pnet_same_ibname(pnetelem, - new_pnetelem->smcibdev->ibdev->name, - new_pnetelem->ib_port)) { + smc_pnet_same_ibindex(pnetelem, + new_pnetelem->smcibdev->ibdev->index, + new_pnetelem->ib_port)) { dev_put(pnetelem->ndev); goto found; } @@ -227,10 +226,11 @@ static struct smc_ib_device *smc_pnet_find_ib(char *ib_name) spin_lock(&smc_ib_devices.lock); list_for_each_entry(ibdev, &smc_ib_devices.list, list) { - if (!strncmp(ibdev->ibdev->name, ib_name, - sizeof(ibdev->ibdev->name))) { + char name[IB_DEVICE_NAME_MAX] = {}; + + ib_device_get_name(ibdev->ibdev, name); + if (!strncmp(name, ib_name, IB_DEVICE_NAME_MAX)) goto out; - } } ibdev = NULL; out: @@ -267,6 +267,11 @@ static int smc_pnet_fill_entry(struct net *net, struct smc_pnetentry *pnetelem, goto error; rc = -EINVAL; + /* NOTE !!!: Sadly enough, but this is part of ABI. + * From day one, the accesses are performed with device names and not + * device indexes for both ETH and IB. It means that this function isn't + * reliable after device renaming. + */ if (!tb[SMC_PNETID_IBNAME]) goto error; rc = -ENOENT;