diff options
author | Manish Chopra <manish.chopra@qlogic.com> | 2013-05-30 05:51:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-05-30 19:52:37 -0400 |
commit | a120e864676548454f8d061e7d8a2e68c908a794 (patch) | |
tree | f0da5a8acdca9921bb2a21ef65c2ede46b22244a /drivers/net/ethernet/qlogic | |
parent | b08a92bb7381ff03d4101bcc61e65120bc690a4f (diff) |
netxen_nic: netxen_setup_intr() function code cleanup
Signed-off-by: Manish Chopra <manish.chopra@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic')
-rw-r--r-- | drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 77 |
1 files changed, 46 insertions, 31 deletions
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c index 558df468f2e4..927ae9f801fb 100644 --- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | |||
@@ -593,47 +593,43 @@ static const struct net_device_ops netxen_netdev_ops = { | |||
593 | }; | 593 | }; |
594 | 594 | ||
595 | static void | 595 | static void |
596 | netxen_setup_intr(struct netxen_adapter *adapter) | 596 | netxen_initialize_interrupt_registers(struct netxen_adapter *adapter) |
597 | { | 597 | { |
598 | struct netxen_legacy_intr_set *legacy_intrp; | 598 | struct netxen_legacy_intr_set *legacy_intrp; |
599 | struct pci_dev *pdev = adapter->pdev; | 599 | u32 tgt_status_reg, int_state_reg; |
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); | ||
611 | 600 | ||
612 | if (adapter->ahw.revision_id >= NX_P3_B0) | 601 | if (adapter->ahw.revision_id >= NX_P3_B0) |
613 | legacy_intrp = &legacy_intr[adapter->ahw.pci_func]; | 602 | legacy_intrp = &legacy_intr[adapter->ahw.pci_func]; |
614 | else | 603 | else |
615 | legacy_intrp = &legacy_intr[0]; | 604 | legacy_intrp = &legacy_intr[0]; |
616 | 605 | ||
606 | tgt_status_reg = legacy_intrp->tgt_status_reg; | ||
607 | int_state_reg = ISR_INT_STATE_REG; | ||
608 | |||
617 | adapter->int_vec_bit = legacy_intrp->int_vec_bit; | 609 | adapter->int_vec_bit = legacy_intrp->int_vec_bit; |
618 | adapter->tgt_status_reg = netxen_get_ioaddr(adapter, | 610 | adapter->tgt_status_reg = netxen_get_ioaddr(adapter, tgt_status_reg); |
619 | legacy_intrp->tgt_status_reg); | ||
620 | adapter->tgt_mask_reg = netxen_get_ioaddr(adapter, | 611 | adapter->tgt_mask_reg = netxen_get_ioaddr(adapter, |
621 | legacy_intrp->tgt_mask_reg); | 612 | legacy_intrp->tgt_mask_reg); |
622 | adapter->pci_int_reg = netxen_get_ioaddr(adapter, | 613 | adapter->pci_int_reg = netxen_get_ioaddr(adapter, |
623 | legacy_intrp->pci_int_reg); | 614 | legacy_intrp->pci_int_reg); |
624 | adapter->isr_int_vec = netxen_get_ioaddr(adapter, ISR_INT_VECTOR); | 615 | adapter->isr_int_vec = netxen_get_ioaddr(adapter, ISR_INT_VECTOR); |
625 | 616 | ||
626 | if (adapter->ahw.revision_id >= NX_P3_B1) | 617 | if (adapter->ahw.revision_id >= NX_P3_B1) |
627 | adapter->crb_int_state_reg = netxen_get_ioaddr(adapter, | 618 | adapter->crb_int_state_reg = netxen_get_ioaddr(adapter, |
628 | ISR_INT_STATE_REG); | 619 | int_state_reg); |
629 | else | 620 | else |
630 | adapter->crb_int_state_reg = netxen_get_ioaddr(adapter, | 621 | adapter->crb_int_state_reg = netxen_get_ioaddr(adapter, |
631 | CRB_INT_VECTOR); | 622 | CRB_INT_VECTOR); |
623 | } | ||
632 | 624 | ||
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; | ||
634 | 631 | ||
635 | if (adapter->msix_supported) { | 632 | if (adapter->msix_supported) { |
636 | |||
637 | netxen_init_msix_entries(adapter, num_msix); | 633 | netxen_init_msix_entries(adapter, num_msix); |
638 | err = pci_enable_msix(pdev, adapter->msix_entries, num_msix); | 634 | err = pci_enable_msix(pdev, adapter->msix_entries, num_msix); |
639 | if (err == 0) { | 635 | if (err == 0) { |
@@ -644,26 +640,45 @@ netxen_setup_intr(struct netxen_adapter *adapter) | |||
644 | adapter->max_sds_rings = num_msix; | 640 | adapter->max_sds_rings = num_msix; |
645 | 641 | ||
646 | dev_info(&pdev->dev, "using msi-x interrupts\n"); | 642 | dev_info(&pdev->dev, "using msi-x interrupts\n"); |
647 | return; | 643 | return 0; |
648 | } | 644 | } |
649 | |||
650 | if (err > 0) | ||
651 | pci_disable_msix(pdev); | ||
652 | |||
653 | /* fall through for msi */ | 645 | /* fall through for msi */ |
654 | } | 646 | } |
655 | 647 | ||
656 | if (use_msi && !pci_enable_msi(pdev)) { | 648 | if (use_msi && !pci_enable_msi(pdev)) { |
649 | value = msi_tgt_status[adapter->ahw.pci_func]; | ||
657 | adapter->flags |= NETXEN_NIC_MSI_ENABLED; | 650 | adapter->flags |= NETXEN_NIC_MSI_ENABLED; |
658 | adapter->tgt_status_reg = netxen_get_ioaddr(adapter, | 651 | adapter->tgt_status_reg = netxen_get_ioaddr(adapter, value); |
659 | msi_tgt_status[adapter->ahw.pci_func]); | ||
660 | dev_info(&pdev->dev, "using msi interrupts\n"); | ||
661 | adapter->msix_entries[0].vector = pdev->irq; | 652 | adapter->msix_entries[0].vector = pdev->irq; |
662 | return; | 653 | dev_info(&pdev->dev, "using msi interrupts\n"); |
654 | return 0; | ||
663 | } | 655 | } |
664 | 656 | ||
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 | |||
666 | adapter->msix_entries[0].vector = pdev->irq; | 680 | adapter->msix_entries[0].vector = pdev->irq; |
681 | dev_info(&pdev->dev, "using legacy interrupts\n"); | ||
667 | } | 682 | } |
668 | 683 | ||
669 | static void | 684 | static void |