Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp948900pxb; Thu, 23 Sep 2021 14:15:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqL0FC/XspuaCEZbt8yuZ+09xjbQacX/X8tXdYfeHXS6XYknZXfI/OJ5s+vbtcIXzAzbRy X-Received: by 2002:aa7:c38c:: with SMTP id k12mr1148418edq.45.1632431720894; Thu, 23 Sep 2021 14:15:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632431720; cv=none; d=google.com; s=arc-20160816; b=IM4u3ZZjJHtl7z2ajBib5vjX0ciIMy/t/7TsXQX64y2JWTOEdxe0QEvP6XoOXGkMLA 4bD+DmZdT58J4DkzaNTG0fZbcOXmq7cClkA5Nj9nbHD1q0BhR8P9P/GNwQvmwsR2mIZU kro1WfaGmaL7NnGGBgIStdtOrdPKmUR+CxKPY/+G6RBPWK6MADfDLPXQFFTtpduWEVcF 5jKEaLXpn0ZF0RwyGsvyKzRpSgae4dTsDZaDBISdQpRIgygKCLdagjr8vKIeEeF/pnyU GvRatJSpGnjd9P63V0qWxEsL2NDFhVVidsGoL+YigI6tbQU0W68VLe8JH9CGJ5poVBSR u1Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=e4I0eibrZ4QXFLaZnyg/T68NEGU52nG0wW6n1XbQIjQ=; b=Q1ajsXDT+daaz4wYQUn0LAzlcTDmOsQVlL68Off2YyxZ7HhK7sFyMwoetyH5igDlTu mhnMtDnoBW4WUFgw1Wo3kWX9jBTEUgSqf0oYEtrWUu9BRRex9vkKh2wsZkvr0KTRDw6X RqwYlTvq7+ARMMIL/xOZZBxEDSw1Jtyw41g2fThffiBKkEi36mYt58Zv1dk+lzjsO/9D 5KlaNvYMxJusF06xNcdtaSbCLt6cEhzMsMks0NLojMcqfycyUX03gstuSl0C399SgdN3 iPuT5DIJp/OsZnXbZUP1syH5M/0eiMDHUJIFQjG/hQzaWFws++kJoThob0q3seDQFrqw LIVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=dG37ybSu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 6si9257871eje.315.2021.09.23.14.14.57; Thu, 23 Sep 2021 14:15:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=google header.b=dG37ybSu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243291AbhIWVNu (ORCPT + 99 others); Thu, 23 Sep 2021 17:13:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243221AbhIWVNt (ORCPT ); Thu, 23 Sep 2021 17:13:49 -0400 Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com [IPv6:2607:f8b0:4864:20::b2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5DB5C061574 for ; Thu, 23 Sep 2021 14:12:17 -0700 (PDT) Received: by mail-yb1-xb2b.google.com with SMTP id z5so1207933ybj.2 for ; Thu, 23 Sep 2021 14:12:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=e4I0eibrZ4QXFLaZnyg/T68NEGU52nG0wW6n1XbQIjQ=; b=dG37ybSuZM/2PWO2WUAlCFTgei4CWvCR+/3V/ba5AqbouIgMtK6R/N88t2fL6e8ES2 HXlfmDfLIxlNVt61DT2aeO3iHi1ERInV9PLlsO/SPeZ8qseDFM20DxIJnOXzZymLl5ma Sf4KMe1TIhD6jwCpVfOKcATIO++tuc9tkqgIc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=e4I0eibrZ4QXFLaZnyg/T68NEGU52nG0wW6n1XbQIjQ=; b=hkR1mY4N+oSaNMrCCEcjpeqPWF3IBOWCcftN/ur0gO9+kkXhocFCWcmnzCnP4qTZ28 RucfsZA3r9AngVG3a3C3wmwlIPybde4M5UKOoX52gELxuwVxYb5RhhAelUsEZ7b9ZOEI NrXdYTxV1v7GXn6Tx+OMR3PesT8zIF7ssgaNc5PbjfXHruOtZZEd85ANKB1GmESOVYZc Om4fsCnLlXolAlGdopIy+vLSQ1ZHnASMIGXXF2GnfPCjpbG4qZUyHZdqVbZ+12QXNX1j idYjAMqZkaSMfEEwEHyBl8hC8ZYvTysXF1geYExWZOg+nxCtJ51c5s2MgiQE59X4o7Ut ensw== X-Gm-Message-State: AOAM530VMXArpBejdVdoi9BbjYmKKtwaoiREbM8ztKDz/jckPgSec1e2 SzfH3In5PuAF1sjmBhkzFPZon31CSMbGbiqVm++bhQ== X-Received: by 2002:a25:748c:: with SMTP id p134mr7788992ybc.361.1632431536689; Thu, 23 Sep 2021 14:12:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Edwin Peer Date: Thu, 23 Sep 2021 14:11:40 -0700 Message-ID: Subject: Re: [PATCH net-next 1/6] bnxt_en: Check devlink allocation and registration status To: Leon Romanovsky Cc: "David S . Miller" , Jakub Kicinski , Leon Romanovsky , Alexander Lobakin , Anirudh Venkataramanan , Ariel Elior , GR-everest-linux-l2@marvell.com, GR-QLogic-Storage-Upstream@marvell.com, Igor Russkikh , intel-wired-lan@lists.osuosl.org, "James E.J. Bottomley" , Javed Hasan , Jeff Kirsher , Jesse Brandeburg , Jiri Pirko , Linux Kernel Mailing List , linux-scsi@vger.kernel.org, "Martin K. Petersen" , Michael Chan , Michal Kalderon , netdev , Sathya Perla , Saurav Kashyap , Tony Nguyen , Vasundhara Volam Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Sep 23, 2021 at 11:13 AM Leon Romanovsky wrote: > > From: Leon Romanovsky > > devlink is a software interface that doesn't depend on any hardware > capabilities. The failure in SW means memory issues, wrong parameters, > programmer error e.t.c. > > Like any other such interface in the kernel, the returned status of > devlink APIs should be checked and propagated further and not ignored. > > Fixes: 4ab0c6a8ffd7 ("bnxt_en: add support to enable VF-representors") > Signed-off-by: Leon Romanovsky > --- > drivers/net/ethernet/broadcom/bnxt/bnxt.c | 5 ++++- > drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 13 ++++++------- > drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h | 13 ------------- > 3 files changed, 10 insertions(+), 21 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > index 037767b370d5..4c483fd91dbe 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c > @@ -13370,7 +13370,9 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) > } > > bnxt_inv_fw_health_reg(bp); > - bnxt_dl_register(bp); > + rc = bnxt_dl_register(bp); > + if (rc) > + goto init_err_dl; > > rc = register_netdev(dev); > if (rc) > @@ -13390,6 +13392,7 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) > > init_err_cleanup: > bnxt_dl_unregister(bp); > +init_err_dl: > bnxt_shutdown_tc(bp); > bnxt_clear_int_mode(bp); > > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > index bf7d3c17049b..dc0851f709f5 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c > @@ -134,7 +134,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp) > { > struct bnxt_fw_health *health = bp->fw_health; > > - if (!bp->dl || !health) > + if (!health) > return; > > if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET) || health->fw_reset_reporter) > @@ -188,7 +188,7 @@ void bnxt_dl_fw_reporters_destroy(struct bnxt *bp, bool all) > { > struct bnxt_fw_health *health = bp->fw_health; > > - if (!bp->dl || !health) > + if (!health) > return; > > if ((all || !(bp->fw_cap & BNXT_FW_CAP_HOT_RESET)) && > @@ -781,6 +781,7 @@ int bnxt_dl_register(struct bnxt *bp) > { > const struct devlink_ops *devlink_ops; > struct devlink_port_attrs attrs = {}; > + struct bnxt_dl *bp_dl; > struct devlink *dl; > int rc; > > @@ -795,7 +796,9 @@ int bnxt_dl_register(struct bnxt *bp) > return -ENOMEM; > } > > - bnxt_link_bp_to_dl(bp, dl); > + bp->dl = dl; > + bp_dl = devlink_priv(dl); > + bp_dl->bp = bp; > > /* Add switchdev eswitch mode setting, if SRIOV supported */ > if (pci_find_ext_capability(bp->pdev, PCI_EXT_CAP_ID_SRIOV) && > @@ -826,7 +829,6 @@ int bnxt_dl_register(struct bnxt *bp) > err_dl_port_unreg: > devlink_port_unregister(&bp->dl_port); > err_dl_free: > - bnxt_link_bp_to_dl(bp, NULL); > devlink_free(dl); > return rc; > } > @@ -835,9 +837,6 @@ void bnxt_dl_unregister(struct bnxt *bp) > { > struct devlink *dl = bp->dl; > > - if (!dl) > - return; > - minor nit: There's obviously nothing incorrect about doing this (and adding the additional error label in the cleanup code above), but bnxt has generally adopted a style of having cleanup functions being idempotent. It generally makes error handling simpler and less error prone. > if (BNXT_PF(bp)) { > bnxt_dl_params_unregister(bp); > devlink_port_unregister(&bp->dl_port); > diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h > index d889f240da2b..406dc655a5fc 100644 > --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h > +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h > @@ -20,19 +20,6 @@ static inline struct bnxt *bnxt_get_bp_from_dl(struct devlink *dl) > return ((struct bnxt_dl *)devlink_priv(dl))->bp; > } > > -/* To clear devlink pointer from bp, pass NULL dl */ > -static inline void bnxt_link_bp_to_dl(struct bnxt *bp, struct devlink *dl) > -{ > - bp->dl = dl; > - > - /* add a back pointer in dl to bp */ > - if (dl) { > - struct bnxt_dl *bp_dl = devlink_priv(dl); > - > - bp_dl->bp = bp; > - } > -} > - > #define NVM_OFF_MSIX_VEC_PER_PF_MAX 108 > #define NVM_OFF_MSIX_VEC_PER_PF_MIN 114 > #define NVM_OFF_IGNORE_ARI 164 > -- > 2.31.1 > Reviewed-by: Edwin Peer Regards, Edwin Peer