Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 133846
b: refs/heads/master
c: 5cda936
h: refs/heads/master
v: v3
  • Loading branch information
Divy Le Ray authored and David S. Miller committed Jan 21, 2009
1 parent f2cabb2 commit c44052e
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c405b828161286729b6a5a729159114dca122923
refs/heads/master: 5cda9364f1fbc330f0d82f534505a8e375d0a66c
1 change: 1 addition & 0 deletions trunk/drivers/net/cxgb3/adapter.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ struct adapter {
unsigned int slow_intr_mask;
unsigned long irq_stats[IRQ_NUM_STATS];

int msix_nvectors;
struct {
unsigned short vec;
char desc[22];
Expand Down
23 changes: 15 additions & 8 deletions trunk/drivers/net/cxgb3/cxgb3_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ static void free_irq_resources(struct adapter *adapter)

free_irq(adapter->msix_info[0].vec, adapter);
for_each_port(adapter, i)
n += adap2pinfo(adapter, i)->nqsets;
n += adap2pinfo(adapter, i)->nqsets;

for (i = 0; i < n; ++i)
free_irq(adapter->msix_info[i + 1].vec,
Expand Down Expand Up @@ -2752,7 +2752,7 @@ static void set_nqsets(struct adapter *adap)
int i, j = 0;
int num_cpus = num_online_cpus();
int hwports = adap->params.nports;
int nqsets = SGE_QSETS;
int nqsets = adap->msix_nvectors - 1;

if (adap->params.rev > 0 && adap->flags & USING_MSIX) {
if (hwports == 2 &&
Expand Down Expand Up @@ -2781,18 +2781,25 @@ static void set_nqsets(struct adapter *adap)
static int __devinit cxgb_enable_msix(struct adapter *adap)
{
struct msix_entry entries[SGE_QSETS + 1];
int vectors;
int i, err;

for (i = 0; i < ARRAY_SIZE(entries); ++i)
vectors = ARRAY_SIZE(entries);
for (i = 0; i < vectors; ++i)
entries[i].entry = i;

err = pci_enable_msix(adap->pdev, entries, ARRAY_SIZE(entries));
while ((err = pci_enable_msix(adap->pdev, entries, vectors)) > 0)
vectors = err;

if (!err && vectors < (adap->params.nports + 1))
err = -1;

if (!err) {
for (i = 0; i < ARRAY_SIZE(entries); ++i)
for (i = 0; i < vectors; ++i)
adap->msix_info[i].vec = entries[i].vector;
} else if (err > 0)
dev_info(&adap->pdev->dev,
"only %d MSI-X vectors left, not using MSI-X\n", err);
adap->msix_nvectors = vectors;
}

return err;
}

Expand Down

0 comments on commit c44052e

Please sign in to comment.