Skip to content

Commit a120e86

Browse files
Manish Chopradavem330
authored andcommitted
netxen_nic: netxen_setup_intr() function code cleanup
Signed-off-by: Manish Chopra <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent b08a92b commit a120e86

File tree

1 file changed

+46
-31
lines changed

1 file changed

+46
-31
lines changed

drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -593,47 +593,43 @@ static const struct net_device_ops netxen_netdev_ops = {
593593
};
594594

595595
static void
596-
netxen_setup_intr(struct netxen_adapter *adapter)
596+
netxen_initialize_interrupt_registers(struct netxen_adapter *adapter)
597597
{
598598
struct netxen_legacy_intr_set *legacy_intrp;
599-
struct pci_dev *pdev = adapter->pdev;
600-
int err, num_msix;
601-
602-
if (adapter->rss_supported) {
603-
num_msix = (num_online_cpus() >= MSIX_ENTRIES_PER_ADAPTER) ?
604-
MSIX_ENTRIES_PER_ADAPTER : 2;
605-
} else
606-
num_msix = 1;
607-
608-
adapter->max_sds_rings = 1;
609-
610-
adapter->flags &= ~(NETXEN_NIC_MSI_ENABLED | NETXEN_NIC_MSIX_ENABLED);
599+
u32 tgt_status_reg, int_state_reg;
611600

612601
if (adapter->ahw.revision_id >= NX_P3_B0)
613602
legacy_intrp = &legacy_intr[adapter->ahw.pci_func];
614603
else
615604
legacy_intrp = &legacy_intr[0];
616605

606+
tgt_status_reg = legacy_intrp->tgt_status_reg;
607+
int_state_reg = ISR_INT_STATE_REG;
608+
617609
adapter->int_vec_bit = legacy_intrp->int_vec_bit;
618-
adapter->tgt_status_reg = netxen_get_ioaddr(adapter,
619-
legacy_intrp->tgt_status_reg);
610+
adapter->tgt_status_reg = netxen_get_ioaddr(adapter, tgt_status_reg);
620611
adapter->tgt_mask_reg = netxen_get_ioaddr(adapter,
621-
legacy_intrp->tgt_mask_reg);
612+
legacy_intrp->tgt_mask_reg);
622613
adapter->pci_int_reg = netxen_get_ioaddr(adapter,
623-
legacy_intrp->pci_int_reg);
614+
legacy_intrp->pci_int_reg);
624615
adapter->isr_int_vec = netxen_get_ioaddr(adapter, ISR_INT_VECTOR);
625616

626617
if (adapter->ahw.revision_id >= NX_P3_B1)
627618
adapter->crb_int_state_reg = netxen_get_ioaddr(adapter,
628-
ISR_INT_STATE_REG);
619+
int_state_reg);
629620
else
630621
adapter->crb_int_state_reg = netxen_get_ioaddr(adapter,
631-
CRB_INT_VECTOR);
622+
CRB_INT_VECTOR);
623+
}
632624

633-
netxen_set_msix_bit(pdev, 0);
625+
static int netxen_setup_msi_interrupts(struct netxen_adapter *adapter,
626+
int num_msix)
627+
{
628+
struct pci_dev *pdev = adapter->pdev;
629+
u32 value;
630+
int err;
634631

635632
if (adapter->msix_supported) {
636-
637633
netxen_init_msix_entries(adapter, num_msix);
638634
err = pci_enable_msix(pdev, adapter->msix_entries, num_msix);
639635
if (err == 0) {
@@ -644,26 +640,45 @@ netxen_setup_intr(struct netxen_adapter *adapter)
644640
adapter->max_sds_rings = num_msix;
645641

646642
dev_info(&pdev->dev, "using msi-x interrupts\n");
647-
return;
643+
return 0;
648644
}
649-
650-
if (err > 0)
651-
pci_disable_msix(pdev);
652-
653645
/* fall through for msi */
654646
}
655647

656648
if (use_msi && !pci_enable_msi(pdev)) {
649+
value = msi_tgt_status[adapter->ahw.pci_func];
657650
adapter->flags |= NETXEN_NIC_MSI_ENABLED;
658-
adapter->tgt_status_reg = netxen_get_ioaddr(adapter,
659-
msi_tgt_status[adapter->ahw.pci_func]);
660-
dev_info(&pdev->dev, "using msi interrupts\n");
651+
adapter->tgt_status_reg = netxen_get_ioaddr(adapter, value);
661652
adapter->msix_entries[0].vector = pdev->irq;
662-
return;
653+
dev_info(&pdev->dev, "using msi interrupts\n");
654+
return 0;
663655
}
664656

665-
dev_info(&pdev->dev, "using legacy interrupts\n");
657+
return -EIO;
658+
}
659+
660+
static void netxen_setup_intr(struct netxen_adapter *adapter)
661+
{
662+
struct pci_dev *pdev = adapter->pdev;
663+
int num_msix;
664+
665+
if (adapter->rss_supported)
666+
num_msix = (num_online_cpus() >= MSIX_ENTRIES_PER_ADAPTER) ?
667+
MSIX_ENTRIES_PER_ADAPTER : 2;
668+
else
669+
num_msix = 1;
670+
671+
adapter->max_sds_rings = 1;
672+
adapter->flags &= ~(NETXEN_NIC_MSI_ENABLED | NETXEN_NIC_MSIX_ENABLED);
673+
674+
netxen_initialize_interrupt_registers(adapter);
675+
netxen_set_msix_bit(pdev, 0);
676+
677+
if (!netxen_setup_msi_interrupts(adapter, num_msix))
678+
return;
679+
666680
adapter->msix_entries[0].vector = pdev->irq;
681+
dev_info(&pdev->dev, "using legacy interrupts\n");
667682
}
668683

669684
static void

0 commit comments

Comments
 (0)