aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index d711158b0d4b..218b759c506e 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -1976,7 +1976,6 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
1976 int nreq = min_t(int, dev->caps.num_ports * 1976 int nreq = min_t(int, dev->caps.num_ports *
1977 min_t(int, netif_get_num_default_rss_queues() + 1, 1977 min_t(int, netif_get_num_default_rss_queues() + 1,
1978 MAX_MSIX_P_PORT) + MSIX_LEGACY_SZ, MAX_MSIX); 1978 MAX_MSIX_P_PORT) + MSIX_LEGACY_SZ, MAX_MSIX);
1979 int err;
1980 int i; 1979 int i;
1981 1980
1982 if (msi_x) { 1981 if (msi_x) {
@@ -1990,23 +1989,13 @@ static void mlx4_enable_msi_x(struct mlx4_dev *dev)
1990 for (i = 0; i < nreq; ++i) 1989 for (i = 0; i < nreq; ++i)
1991 entries[i].entry = i; 1990 entries[i].entry = i;
1992 1991
1993 retry: 1992 nreq = pci_enable_msix_range(dev->pdev, entries, 2, nreq);
1994 err = pci_enable_msix(dev->pdev, entries, nreq); 1993
1995 if (err) { 1994 if (nreq < 0) {
1996 /* Try again if at least 2 vectors are available */
1997 if (err > 1) {
1998 mlx4_info(dev, "Requested %d vectors, "
1999 "but only %d MSI-X vectors available, "
2000 "trying again\n", nreq, err);
2001 nreq = err;
2002 goto retry;
2003 }
2004 kfree(entries); 1995 kfree(entries);
2005 goto no_msi; 1996 goto no_msi;
2006 } 1997 } else if (nreq < MSIX_LEGACY_SZ +
2007 1998 dev->caps.num_ports * MIN_MSIX_P_PORT) {
2008 if (nreq <
2009 MSIX_LEGACY_SZ + dev->caps.num_ports * MIN_MSIX_P_PORT) {
2010 /*Working in legacy mode , all EQ's shared*/ 1999 /*Working in legacy mode , all EQ's shared*/
2011 dev->caps.comp_pool = 0; 2000 dev->caps.comp_pool = 0;
2012 dev->caps.num_comp_vectors = nreq - 1; 2001 dev->caps.num_comp_vectors = nreq - 1;