aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorAyaz Abdulla <aabdulla@nvidia.com>2009-03-05 03:01:59 -0500
committerDavid S. Miller <davem@davemloft.net>2009-03-10 08:29:45 -0400
commitd41c628c514bceb33037c26f83585c629594bed5 (patch)
treede50b6b07f90468596ec97434a8018113d1d46ed /drivers/net
parent08d935757440872d46be77f95153972cdbfe550d (diff)
forcedeth: remove msix + napi
This patch removes support for msix running in conjunction with napi. There has been reported issues regarding the behaviour of irqmask and generation of interrupts by the HW when in MSIX mode. When running napi, the driver is constantly turning off/on the irqmask. For the time being, I am going to disable it until I can root cause the issue. Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/forcedeth.c26
1 files changed, 5 insertions, 21 deletions
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c
index 5346410aeb6e..a4f2f146ae68 100644
--- a/drivers/net/forcedeth.c
+++ b/drivers/net/forcedeth.c
@@ -3731,26 +3731,6 @@ static int nv_napi_poll(struct napi_struct *napi, int budget)
3731} 3731}
3732#endif 3732#endif
3733 3733
3734#ifdef CONFIG_FORCEDETH_NAPI
3735static irqreturn_t nv_nic_irq_rx(int foo, void *data)
3736{
3737 struct net_device *dev = (struct net_device *) data;
3738 struct fe_priv *np = netdev_priv(dev);
3739 u8 __iomem *base = get_hwbase(dev);
3740 u32 events;
3741
3742 events = readl(base + NvRegMSIXIrqStatus) & NVREG_IRQ_RX_ALL;
3743
3744 if (events) {
3745 /* disable receive interrupts on the nic */
3746 writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask);
3747 pci_push(base);
3748 writel(NVREG_IRQ_RX_ALL, base + NvRegMSIXIrqStatus);
3749 napi_schedule(&np->napi);
3750 }
3751 return IRQ_HANDLED;
3752}
3753#else
3754static irqreturn_t nv_nic_irq_rx(int foo, void *data) 3734static irqreturn_t nv_nic_irq_rx(int foo, void *data)
3755{ 3735{
3756 struct net_device *dev = (struct net_device *) data; 3736 struct net_device *dev = (struct net_device *) data;
@@ -3797,7 +3777,6 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data)
3797 3777
3798 return IRQ_RETVAL(i); 3778 return IRQ_RETVAL(i);
3799} 3779}
3800#endif
3801 3780
3802static irqreturn_t nv_nic_irq_other(int foo, void *data) 3781static irqreturn_t nv_nic_irq_other(int foo, void *data)
3803{ 3782{
@@ -5670,7 +5649,12 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
5670 np->msi_flags |= NV_MSI_CAPABLE; 5649 np->msi_flags |= NV_MSI_CAPABLE;
5671 } 5650 }
5672 if ((id->driver_data & DEV_HAS_MSI_X) && msix) { 5651 if ((id->driver_data & DEV_HAS_MSI_X) && msix) {
5652 /* msix has had reported issues when modifying irqmask
5653 as in the case of napi, therefore, disable for now
5654 */
5655#ifndef CONFIG_FORCEDETH_NAPI
5673 np->msi_flags |= NV_MSI_X_CAPABLE; 5656 np->msi_flags |= NV_MSI_X_CAPABLE;
5657#endif
5674 } 5658 }
5675 5659
5676 np->pause_flags = NV_PAUSEFRAME_RX_CAPABLE | NV_PAUSEFRAME_RX_REQ | NV_PAUSEFRAME_AUTONEG; 5660 np->pause_flags = NV_PAUSEFRAME_RX_CAPABLE | NV_PAUSEFRAME_RX_REQ | NV_PAUSEFRAME_AUTONEG;