aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/sun/niu.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index 8e2266e1f260..79606f47a08e 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -9041,7 +9041,7 @@ static void niu_try_msix(struct niu *np, u8 *ldg_num_map)
9041 struct msix_entry msi_vec[NIU_NUM_LDG]; 9041 struct msix_entry msi_vec[NIU_NUM_LDG];
9042 struct niu_parent *parent = np->parent; 9042 struct niu_parent *parent = np->parent;
9043 struct pci_dev *pdev = np->pdev; 9043 struct pci_dev *pdev = np->pdev;
9044 int i, num_irqs, err; 9044 int i, num_irqs;
9045 u8 first_ldg; 9045 u8 first_ldg;
9046 9046
9047 first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port; 9047 first_ldg = (NIU_NUM_LDG / parent->num_ports) * np->port;
@@ -9053,21 +9053,16 @@ static void niu_try_msix(struct niu *np, u8 *ldg_num_map)
9053 (np->port == 0 ? 3 : 1)); 9053 (np->port == 0 ? 3 : 1));
9054 BUG_ON(num_irqs > (NIU_NUM_LDG / parent->num_ports)); 9054 BUG_ON(num_irqs > (NIU_NUM_LDG / parent->num_ports));
9055 9055
9056retry:
9057 for (i = 0; i < num_irqs; i++) { 9056 for (i = 0; i < num_irqs; i++) {
9058 msi_vec[i].vector = 0; 9057 msi_vec[i].vector = 0;
9059 msi_vec[i].entry = i; 9058 msi_vec[i].entry = i;
9060 } 9059 }
9061 9060
9062 err = pci_enable_msix(pdev, msi_vec, num_irqs); 9061 num_irqs = pci_enable_msix_range(pdev, msi_vec, 1, num_irqs);
9063 if (err < 0) { 9062 if (num_irqs < 0) {
9064 np->flags &= ~NIU_FLAGS_MSIX; 9063 np->flags &= ~NIU_FLAGS_MSIX;
9065 return; 9064 return;
9066 } 9065 }
9067 if (err > 0) {
9068 num_irqs = err;
9069 goto retry;
9070 }
9071 9066
9072 np->flags |= NIU_FLAGS_MSIX; 9067 np->flags |= NIU_FLAGS_MSIX;
9073 for (i = 0; i < num_irqs; i++) 9068 for (i = 0; i < num_irqs; i++)