From patchwork Wed Oct 2 10:49:20 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Gordeev X-Patchwork-Id: 2977071 Return-Path: X-Original-To: patchwork-linux-rdma@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id C605D9F245 for ; Wed, 2 Oct 2013 17:32:20 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 83411203A3 for ; Wed, 2 Oct 2013 17:32:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 502A0202B4 for ; Wed, 2 Oct 2013 17:32:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754319Ab3JBRcP (ORCPT ); Wed, 2 Oct 2013 13:32:15 -0400 Received: from 221-186-24-89.in-addr.arpa ([89.24.186.221]:26264 "EHLO dhcp-26-207.brq.redhat.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1754182Ab3JBRcO (ORCPT ); Wed, 2 Oct 2013 13:32:14 -0400 Received: from dhcp-26-207.brq.redhat.com (localhost [127.0.0.1]) by dhcp-26-207.brq.redhat.com (8.14.5/8.14.5) with ESMTP id r92AxXdN002735; Wed, 2 Oct 2013 12:59:33 +0200 Received: (from agordeev@localhost) by dhcp-26-207.brq.redhat.com (8.14.5/8.14.5/Submit) id r92AxWjO002734; Wed, 2 Oct 2013 12:59:32 +0200 From: Alexander Gordeev To: linux-kernel@vger.kernel.org Cc: Alexander Gordeev , Bjorn Helgaas , Ralf Baechle , Michael Ellerman , Benjamin Herrenschmidt , Martin Schwidefsky , Ingo Molnar , Tejun Heo , Dan Williams , Andy King , Jon Mason , Matt Porter , linux-pci@vger.kernel.org, linux-mips@linux-mips.org, linuxppc-dev@lists.ozlabs.org, linux390@de.ibm.com, linux-s390@vger.kernel.org, x86@kernel.org, linux-ide@vger.kernel.org, iss_storagedev@hp.com, linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org, netdev@vger.kernel.org, e1000-devel@lists.sourceforge.net, linux-driver@qlogic.com, Solarflare linux maintainers , "VMware, Inc." , linux-scsi@vger.kernel.org Subject: [PATCH RFC 64/77] qlcnic: Make MSI-X initialization routine bit more readable Date: Wed, 2 Oct 2013 12:49:20 +0200 Message-Id: <685e235adcdeafb5e72b5fe1efe63f8f03a8f035.1380703263.git.agordeev@redhat.com> X-Mailer: git-send-email 1.7.7.6 In-Reply-To: References: Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,KHOP_BIG_TO_CC, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Alexander Gordeev --- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 112 +++++++++++----------- 1 files changed, 56 insertions(+), 56 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index a137c14..8510457 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c @@ -568,7 +568,7 @@ int qlcnic_enable_msix(struct qlcnic_adapter *adapter, u32 num_msix) { struct pci_dev *pdev = adapter->pdev; int max_tx_rings, max_sds_rings, tx_vector; - int err = -EINVAL, i; + int err, i; if (adapter->flags & QLCNIC_TX_INTR_SHARED) { max_tx_rings = 0; @@ -589,68 +589,68 @@ int qlcnic_enable_msix(struct qlcnic_adapter *adapter, u32 num_msix) adapter->max_sds_rings = 1; adapter->flags &= ~(QLCNIC_MSI_ENABLED | QLCNIC_MSIX_ENABLED); - if (adapter->ahw->msix_supported) { - err = pci_msix_table_size(pdev); - if (err < 0) + if (!adapter->ahw->msix_supported) + return -EINVAL; + + err = pci_msix_table_size(pdev); + if (err < 0) + goto fail; + + if (err < num_msix) { + dev_info(&pdev->dev, + "Unable to allocate %d MSI-X interrupt vectors\n", + num_msix); + if (qlcnic_83xx_check(adapter)) { + if (err < (QLC_83XX_MINIMUM_VECTOR - tx_vector)) + return -ENOSPC; + err -= (max_tx_rings + 1); + num_msix = rounddown_pow_of_two(err); + num_msix += (max_tx_rings + 1); + } else { + num_msix = rounddown_pow_of_two(err); + if (qlcnic_check_multi_tx(adapter)) + num_msix += max_tx_rings; + } + + if (!num_msix) { + err = -ENOSPC; goto fail; + } - if (err < num_msix) { - dev_info(&pdev->dev, - "Unable to allocate %d MSI-X interrupt vectors\n", - num_msix); - if (qlcnic_83xx_check(adapter)) { - if (err < (QLC_83XX_MINIMUM_VECTOR - tx_vector)) - return -ENOSPC; - err -= (max_tx_rings + 1); - num_msix = rounddown_pow_of_two(err); - num_msix += (max_tx_rings + 1); - } else { - num_msix = rounddown_pow_of_two(err); - if (qlcnic_check_multi_tx(adapter)) - num_msix += max_tx_rings; - } + dev_info(&pdev->dev, + "Trying to allocate %d MSI-X interrupt vectors\n", + num_msix); + } - if (!num_msix) { - err = -ENOSPC; - goto fail; - } + for (i = 0; i < num_msix; i++) + adapter->msix_entries[i].entry = i; - dev_info(&pdev->dev, - "Trying to allocate %d MSI-X interrupt vectors\n", - num_msix); - } - } + err = pci_enable_msix(pdev, adapter->msix_entries, num_msix); + if (err) + goto fail; - for (i = 0; i < num_msix; i++) - adapter->msix_entries[i].entry = i; - err = pci_enable_msix(pdev, adapter->msix_entries, num_msix); - if (err == 0) { - adapter->flags |= QLCNIC_MSIX_ENABLED; - if (qlcnic_83xx_check(adapter)) { - adapter->ahw->num_msix = num_msix; - /* subtract mail box and tx ring vectors */ - adapter->max_sds_rings = num_msix - - max_tx_rings - 1; - } else { - adapter->ahw->num_msix = num_msix; - if (qlcnic_check_multi_tx(adapter) && - !adapter->ahw->diag_test && - (adapter->max_drv_tx_rings > 1)) - max_sds_rings = num_msix - max_tx_rings; - else - max_sds_rings = num_msix; - - adapter->max_sds_rings = max_sds_rings; - } - dev_info(&pdev->dev, "using msi-x interrupts\n"); - } else { -fail: - dev_info(&pdev->dev, - "Unable to allocate %d MSI-X interrupt vectors\n", - num_msix); - } + adapter->flags |= QLCNIC_MSIX_ENABLED; + if (qlcnic_83xx_check(adapter)) { + adapter->ahw->num_msix = num_msix; + /* subtract mail box and tx ring vectors */ + adapter->max_sds_rings = num_msix - max_tx_rings - 1; + } else { + adapter->ahw->num_msix = num_msix; + if (qlcnic_check_multi_tx(adapter) && + !adapter->ahw->diag_test && (adapter->max_drv_tx_rings > 1)) + max_sds_rings = num_msix - max_tx_rings; + else + max_sds_rings = num_msix; + + adapter->max_sds_rings = max_sds_rings; } + dev_info(&pdev->dev, "using msi-x interrupts\n"); + return 0; + +fail: + dev_info(&pdev->dev, + "Unable to allocate %d MSI-X interrupt vectors\n", num_msix); return err; }