diff options
Diffstat (limited to 'drivers/net/bnx2.c')
| -rw-r--r-- | drivers/net/bnx2.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 0b69ffb7951..802b538502e 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c @@ -246,6 +246,8 @@ static const struct flash_spec flash_5709 = {  MODULE_DEVICE_TABLE(pci, bnx2_pci_tbl); +static void bnx2_init_napi(struct bnx2 *bp); +  static inline u32 bnx2_tx_avail(struct bnx2 *bp, struct bnx2_tx_ring_info *txr)  {  	u32 diff; @@ -6196,6 +6198,7 @@ bnx2_open(struct net_device *dev)  	bnx2_disable_int(bp);  	bnx2_setup_int_mode(bp, disable_msi); +	bnx2_init_napi(bp);  	bnx2_napi_enable(bp);  	rc = bnx2_alloc_mem(bp);  	if (rc) @@ -7642,9 +7645,11 @@ poll_bnx2(struct net_device *dev)  	int i;  	for (i = 0; i < bp->irq_nvecs; i++) { -		disable_irq(bp->irq_tbl[i].vector); -		bnx2_interrupt(bp->irq_tbl[i].vector, &bp->bnx2_napi[i]); -		enable_irq(bp->irq_tbl[i].vector); +		struct bnx2_irq *irq = &bp->irq_tbl[i]; + +		disable_irq(irq->vector); +		irq->handler(irq->vector, &bp->bnx2_napi[i]); +		enable_irq(irq->vector);  	}  }  #endif @@ -8206,7 +8211,7 @@ bnx2_init_napi(struct bnx2 *bp)  {  	int i; -	for (i = 0; i < BNX2_MAX_MSIX_VEC; i++) { +	for (i = 0; i < bp->irq_nvecs; i++) {  		struct bnx2_napi *bnapi = &bp->bnx2_napi[i];  		int (*poll)(struct napi_struct *, int); @@ -8275,7 +8280,6 @@ bnx2_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)  	dev->ethtool_ops = &bnx2_ethtool_ops;  	bp = netdev_priv(dev); -	bnx2_init_napi(bp);  	pci_set_drvdata(pdev, dev);  |