From: Alexander Gordeev <agordeev@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-mips@linux-mips.org, "VMware, Inc." <pv-drivers@vmware.com>,
linux-nvme@lists.infradead.org, linux-ide@vger.kernel.org,
linux-s390@vger.kernel.org, Andy King <acking@vmware.com>,
linux-scsi@vger.kernel.org, linux-rdma@vger.kernel.org,
x86@kernel.org, Alexander Gordeev <agordeev@redhat.com>,
linux-pci@vger.kernel.org, iss_storagedev@hp.com,
linux-driver@qlogic.com, Tejun Heo <tj@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Dan Williams <dan.j.williams@intel.com>,
Jon Mason <jon.mason@intel.com>, Ingo Molnar <mingo@redhat.com>,
Solarflare linux maintainers <linux-net-drivers@solarflare.com>,
netdev@vger.kernel.org, Ralf Baechle <ralf@linux-mips.org>,
e1000-devel@lists.sourceforge.net,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
linux390@de.ibm.com, linuxppc-dev@lists.ozlabs.org
Subject: [PATCH RFC 29/77] cxgb4vf: Update MSI/MSI-X interrupts enablement code
Date: Wed, 2 Oct 2013 12:48:45 +0200 [thread overview]
Message-ID: <e4d21d117874dbbe4aac4618b3cc3e3d9d0cbeb6.1380703262.git.agordeev@redhat.com> (raw)
In-Reply-To: <cover.1380703262.git.agordeev@redhat.com>
As result of recent re-design of the MSI/MSI-X interrupts enabling
pattern this driver has to be updated to use the new technique to
obtain a optimal number of MSI/MSI-X interrupts required.
Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
---
.../net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 49 ++++++++++++--------
1 files changed, 29 insertions(+), 20 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index 11cbce1..48bb33b 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -2437,13 +2437,10 @@ static void reduce_ethqs(struct adapter *adapter, int n)
*/
static int enable_msix(struct adapter *adapter)
{
- int i, err, want, need;
+ int i, err, want, need, nqsets;
struct msix_entry entries[MSIX_ENTRIES];
struct sge *s = &adapter->sge;
- for (i = 0; i < MSIX_ENTRIES; ++i)
- entries[i].entry = i;
-
/*
* We _want_ enough MSI-X interrupts to cover all of our "Queue Sets"
* plus those needed for our "extras" (for example, the firmware
@@ -2453,26 +2450,38 @@ static int enable_msix(struct adapter *adapter)
*/
want = s->max_ethqsets + MSIX_EXTRAS;
need = adapter->params.nports + MSIX_EXTRAS;
- while ((err = pci_enable_msix(adapter->pdev, entries, want)) >= need)
- want = err;
- if (err == 0) {
- int nqsets = want - MSIX_EXTRAS;
- if (nqsets < s->max_ethqsets) {
- dev_warn(adapter->pdev_dev, "only enough MSI-X vectors"
- " for %d Queue Sets\n", nqsets);
- s->max_ethqsets = nqsets;
- if (nqsets < s->ethqsets)
- reduce_ethqs(adapter, nqsets);
- }
- for (i = 0; i < want; ++i)
- adapter->msix_info[i].vec = entries[i].vector;
- } else if (err > 0) {
+ err = pci_msix_table_size(adapter->pdev);
+ if (err < 0)
+ return err;
+
+ want = min(want, err);
+ if (want < need) {
dev_info(adapter->pdev_dev, "only %d MSI-X vectors left,"
" not using MSI-X\n", err);
- err = -ENOSPC;
+ return -ENOSPC;
}
- return err;
+
+ BUG_ON(want > ARRAY_SIZE(entries));
+ for (i = 0; i < want; ++i)
+ entries[i].entry = i;
+
+ err = pci_enable_msix(adapter->pdev, entries, want);
+ if (err)
+ return err;
+
+ nqsets = want - MSIX_EXTRAS;
+ if (nqsets < s->max_ethqsets) {
+ dev_warn(adapter->pdev_dev, "only enough MSI-X vectors"
+ " for %d Queue Sets\n", nqsets);
+ s->max_ethqsets = nqsets;
+ if (nqsets < s->ethqsets)
+ reduce_ethqs(adapter, nqsets);
+ }
+ for (i = 0; i < want; ++i)
+ adapter->msix_info[i].vec = entries[i].vector;
+
+ return 0;
}
static const struct net_device_ops cxgb4vf_netdev_ops = {
--
1.7.7.6
next prev parent reply other threads:[~2013-10-02 17:25 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-02 10:48 [PATCH RFC 00/77] Re-design MSI/MSI-X interrupts enablement pattern Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 01/77] PCI/MSI: Fix return value when populate_msi_sysfs() failed Alexander Gordeev
2013-10-03 0:39 ` Jon Mason
2013-10-03 21:46 ` Ben Hutchings
2013-10-04 0:59 ` Jon Mason
2013-10-02 10:48 ` [PATCH RFC 02/77] PCI/MSI/PPC: Fix wrong RTAS error code reporting Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 03/77] PCI/MSI/s390: Fix single MSI only check Alexander Gordeev
2013-10-04 7:39 ` Martin Schwidefsky
2013-10-02 10:48 ` [PATCH RFC 04/77] PCI/MSI/s390: Remove superfluous check of MSI type Alexander Gordeev
2013-10-02 18:17 ` Greg KH
2013-10-04 7:40 ` Martin Schwidefsky
2013-10-02 10:48 ` [PATCH RFC 05/77] PCI/MSI: Convert pci_msix_table_size() to a public interface Alexander Gordeev
2013-10-07 18:10 ` Tejun Heo
2013-10-08 7:56 ` Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 06/77] PCI/MSI: Factor out pci_get_msi_cap() interface Alexander Gordeev
2013-10-03 21:52 ` Ben Hutchings
2013-10-04 5:13 ` Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 07/77] PCI/MSI: Re-design MSI/MSI-X interrupts enablement pattern Alexander Gordeev
2013-10-07 18:17 ` Tejun Heo
2013-10-08 7:48 ` Alexander Gordeev
2013-10-09 15:54 ` Tejun Heo
2013-10-02 10:48 ` [PATCH RFC 08/77] PCI/MSI: Get rid of pci_enable_msi_block_auto() interface Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 09/77] ahci: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 10/77] ahci: Check MRSM bit when multiple MSIs enabled Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 11/77] benet: Return -ENOSPC when not enough MSI-Xs available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 12/77] benet: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 13/77] bna: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 14/77] bnx2x: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 15/77] bnx2: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 16/77] cciss: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 17/77] cciss: Update a misleading comment on interrupt usage Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 18/77] cciss: Fallback to single MSI mode in case MSI-X failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 19/77] csiostor: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 20/77] csiostor: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 21/77] csiostor: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 22/77] cxgb3: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 23/77] cxgb3: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 24/77] cxgb3: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 25/77] cxgb4: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 26/77] cxgb4: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 27/77] cxgb4vf: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 28/77] cxgb4vf: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` Alexander Gordeev [this message]
2013-10-02 10:48 ` [PATCH RFC 30/77] hpsa: Update a misleading comment on interrupt usage Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 31/77] hpsa: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 32/77] hpsa: Fallback to single MSI mode in case MSI-X failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 33/77] ioat: Disable MSI-X in case request of IRQ failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 34/77] ioat: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 35/77] ipr: Do not call pci_disable_msi/msix() if pci_enable_msi/msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 36/77] ipr: Enable MSI-X when IPR_USE_MSIX type is set, not IPR_USE_MSI Alexander Gordeev
2013-10-02 19:31 ` Brian King
2013-10-02 10:48 ` [PATCH RFC 37/77] ipr: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 38/77] ixgbe: " Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 39/77] ixgbevf: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 40/77] ixgbevf: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 20:50 ` Keller, Jacob E
2013-10-02 10:48 ` [PATCH RFC 41/77] lpfc: Do not call pci_disable_msix() if pci_enable_msix() failed Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 42/77] lpfc: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:48 ` [PATCH RFC 43/77] lpfc: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 44/77] lpfc: Make MSI-X initialization routine more readable Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 45/77] megaraid: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 46/77] mlx4: " Alexander Gordeev
2013-10-03 8:02 ` Jack Morgenstein
2013-10-03 8:27 ` Jack Morgenstein
2013-10-03 8:39 ` Jack Morgenstein
2013-10-02 10:49 ` [PATCH RFC 47/77] mlx5: Fix memory leak in case not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 48/77] mlx5: Return -ENOSPC when " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 49/77] mlx5: Fix minimum number of MSI-Xs Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 50/77] mlx5: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-03 7:14 ` Eli Cohen
2013-10-03 19:48 ` Alexander Gordeev
2013-10-10 15:29 ` Eli Cohen
2013-10-02 10:49 ` [PATCH RFC 51/77] mthca: " Alexander Gordeev
2013-10-03 16:11 ` Jack Morgenstein
2013-10-02 10:49 ` [PATCH RFC 52/77] niu: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 53/77] ntb: Fix missed call to pci_enable_msix() Alexander Gordeev
2013-10-03 0:49 ` Jon Mason
2013-10-02 10:49 ` [PATCH RFC 54/77] ntb: Ensure number of MSIs on SNB is enough for the link interrupt Alexander Gordeev
2013-10-03 0:48 ` Jon Mason
2013-10-05 21:43 ` Alexander Gordeev
2013-10-07 16:50 ` Jon Mason
2013-10-07 18:38 ` Alexander Gordeev
2013-10-07 20:31 ` Jon Mason
2013-10-02 10:49 ` [PATCH RFC 55/77] ntb: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-03 1:02 ` Jon Mason
2013-10-02 10:49 ` [PATCH RFC 56/77] nvme: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 57/77] pmcraid: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 58/77] qib: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 59/77] qla2xxx: " Alexander Gordeev
2013-10-03 17:42 ` Saurav Kashyap
2013-10-02 10:49 ` [PATCH RFC 60/77] qlcnic: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 61/77] qlogic: Return -EINVAL in case MSI-X is not supported Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 62/77] qlcnic: Remove redundant return operator Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 63/77] qlcnic: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-08 22:46 ` Himanshu Madhani
2013-10-02 10:49 ` [PATCH RFC 64/77] qlcnic: Make MSI-X initialization routine bit more readable Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 65/77] qlge: Remove a redundant assignment Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 66/77] qlge: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 67/77] rapidio: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 68/77] sfc: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 69/77] tg3: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 70/77] vmci: " Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 71/77] vmxnet3: Return -EINVAL if number of requested MSI-Xs is not enough Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 72/77] vmxnet3: Fixup a weird loop exit Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 73/77] vmxnet3: Return -ENOSPC when not enough MSI-X vectors available Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 74/77] vmxnet3: Limit number of rx queues to 1 if per-queue MSI-Xs failed Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 75/77] vmxnet3: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 76/77] vxge: Sanitize MSI-X allocation routine error codes Alexander Gordeev
2013-10-02 10:49 ` [PATCH RFC 77/77] vxge: Update MSI/MSI-X interrupts enablement code Alexander Gordeev
2013-10-03 0:29 ` Jon Mason
2013-10-03 22:49 ` [PATCH RFC 00/77] Re-design MSI/MSI-X interrupts enablement pattern Ben Hutchings
2013-10-04 8:29 ` Alexander Gordeev
2013-10-04 8:31 ` David Laight
2013-10-04 9:21 ` Alexander Gordeev
2013-10-04 21:29 ` Ben Hutchings
2013-10-05 14:20 ` Alexander Gordeev
2013-10-05 21:46 ` Benjamin Herrenschmidt
2013-10-06 6:02 ` Alexander Gordeev
2013-10-06 6:19 ` Benjamin Herrenschmidt
2013-10-06 7:10 ` Alexander Gordeev
2013-10-07 18:01 ` Tejun Heo
2013-10-07 20:10 ` Benjamin Herrenschmidt
2013-10-07 20:46 ` Ben Hutchings
2013-10-07 22:21 ` [E1000-devel] " Waskiewicz Jr, Peter P
2013-10-08 12:22 ` Alexander Gordeev
2013-10-09 15:41 ` Tejun Heo
2013-10-09 12:57 ` Alexander Gordeev
2013-10-09 15:43 ` Tejun Heo
2013-10-07 20:48 ` Ben Hutchings
2013-10-09 15:46 ` Tejun Heo
2013-10-07 18:21 ` Tejun Heo
2013-10-08 9:07 ` Alexander Gordeev
2013-10-09 15:57 ` Tejun Heo
2013-10-08 4:33 ` Michael Ellerman
2013-10-08 7:33 ` Alexander Gordeev
2013-10-09 1:34 ` Michael Ellerman
2013-10-09 1:55 ` Mark Lord
2013-10-09 3:55 ` H. Peter Anvin
2013-10-09 4:24 ` Benjamin Herrenschmidt
2013-10-10 10:17 ` Alexander Gordeev
2013-10-10 16:28 ` H. Peter Anvin
2013-10-10 18:07 ` Alexander Gordeev
2013-10-10 23:17 ` Mark Lord
2013-10-11 8:41 ` Alexander Gordeev
2013-10-11 20:29 ` Mark Lord
2013-10-15 15:30 ` Alexander Gordeev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e4d21d117874dbbe4aac4618b3cc3e3d9d0cbeb6.1380703262.git.agordeev@redhat.com \
--to=agordeev@redhat.com \
--cc=acking@vmware.com \
--cc=bhelgaas@google.com \
--cc=dan.j.williams@intel.com \
--cc=e1000-devel@lists.sourceforge.net \
--cc=iss_storagedev@hp.com \
--cc=jon.mason@intel.com \
--cc=linux-driver@qlogic.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-net-drivers@solarflare.com \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux390@de.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pv-drivers@vmware.com \
--cc=ralf@linux-mips.org \
--cc=schwidefsky@de.ibm.com \
--cc=tj@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).