diff options
Diffstat (limited to 'drivers/net/netxen/netxen_nic_main.c')
| -rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 645d384fe87e..3b17a7936147 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
| @@ -76,6 +76,7 @@ static void netxen_nic_poll_controller(struct net_device *netdev); | |||
| 76 | #endif | 76 | #endif |
| 77 | static irqreturn_t netxen_intr(int irq, void *data); | 77 | static irqreturn_t netxen_intr(int irq, void *data); |
| 78 | static irqreturn_t netxen_msi_intr(int irq, void *data); | 78 | static irqreturn_t netxen_msi_intr(int irq, void *data); |
| 79 | static irqreturn_t netxen_msix_intr(int irq, void *data); | ||
| 79 | 80 | ||
| 80 | /* PCI Device ID Table */ | 81 | /* PCI Device ID Table */ |
| 81 | #define ENTRY(device) \ | 82 | #define ENTRY(device) \ |
| @@ -1084,7 +1085,9 @@ static int netxen_nic_open(struct net_device *netdev) | |||
| 1084 | for (ring = 0; ring < adapter->max_rds_rings; ring++) | 1085 | for (ring = 0; ring < adapter->max_rds_rings; ring++) |
| 1085 | netxen_post_rx_buffers(adapter, ctx, ring); | 1086 | netxen_post_rx_buffers(adapter, ctx, ring); |
| 1086 | } | 1087 | } |
| 1087 | if (NETXEN_IS_MSI_FAMILY(adapter)) | 1088 | if (adapter->flags & NETXEN_NIC_MSIX_ENABLED) |
| 1089 | handler = netxen_msix_intr; | ||
| 1090 | else if (adapter->flags & NETXEN_NIC_MSI_ENABLED) | ||
| 1088 | handler = netxen_msi_intr; | 1091 | handler = netxen_msi_intr; |
| 1089 | else { | 1092 | else { |
| 1090 | flags |= IRQF_SHARED; | 1093 | flags |= IRQF_SHARED; |
| @@ -1612,6 +1615,14 @@ static irqreturn_t netxen_msi_intr(int irq, void *data) | |||
| 1612 | return IRQ_HANDLED; | 1615 | return IRQ_HANDLED; |
| 1613 | } | 1616 | } |
| 1614 | 1617 | ||
| 1618 | static irqreturn_t netxen_msix_intr(int irq, void *data) | ||
| 1619 | { | ||
| 1620 | struct netxen_adapter *adapter = data; | ||
| 1621 | |||
| 1622 | napi_schedule(&adapter->napi); | ||
| 1623 | return IRQ_HANDLED; | ||
| 1624 | } | ||
| 1625 | |||
| 1615 | static int netxen_nic_poll(struct napi_struct *napi, int budget) | 1626 | static int netxen_nic_poll(struct napi_struct *napi, int budget) |
| 1616 | { | 1627 | { |
| 1617 | struct netxen_adapter *adapter = container_of(napi, struct netxen_adapter, napi); | 1628 | struct netxen_adapter *adapter = container_of(napi, struct netxen_adapter, napi); |
