aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDivy Le Ray <divy@chelsio.com>2007-05-30 13:01:34 -0400
committerJeff Garzik <jeff@garzik.org>2007-06-20 19:16:58 -0400
commit890de332834a95450a74e5f615f4f9a0fa564623 (patch)
tree555e87ff623f98f74741ece661b7928d2bb14e08
parente360b5628f1d040c0e96dd9ee011196645e08aef (diff)
cxgb3 - fix netpoll hanlder
Fix netpoll handler to work with line interrupt, msi and msi-x. Signed-off-by: Divy Le Ray <divy@chelsio.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r--drivers/net/cxgb3/cxgb3_main.c16
-rw-r--r--drivers/net/cxgb3/sge.c1
2 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c
index 1b20f4060e2d..d8a1f5452c51 100644
--- a/drivers/net/cxgb3/cxgb3_main.c
+++ b/drivers/net/cxgb3/cxgb3_main.c
@@ -2071,10 +2071,20 @@ static void vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
2071static void cxgb_netpoll(struct net_device *dev) 2071static void cxgb_netpoll(struct net_device *dev)
2072{ 2072{
2073 struct adapter *adapter = dev->priv; 2073 struct adapter *adapter = dev->priv;
2074 struct sge_qset *qs = dev2qset(dev); 2074 struct port_info *pi = netdev_priv(dev);
2075 int qidx;
2075 2076
2076 t3_intr_handler(adapter, qs->rspq.polling) (adapter->pdev->irq, 2077 for (qidx = pi->first_qset; qidx < pi->first_qset + pi->nqsets; qidx++) {
2077 adapter); 2078 struct sge_qset *qs = &adapter->sge.qs[qidx];
2079 void *source;
2080
2081 if (adapter->flags & USING_MSIX)
2082 source = qs;
2083 else
2084 source = adapter;
2085
2086 t3_intr_handler(adapter, qs->rspq.polling) (0, source);
2087 }
2078} 2088}
2079#endif 2089#endif
2080 2090
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c
index eaa7dace4182..a60ec4d4707c 100644
--- a/drivers/net/cxgb3/sge.c
+++ b/drivers/net/cxgb3/sge.c
@@ -2217,7 +2217,6 @@ irqreturn_t t3_sge_intr_msix_napi(int irq, void *cookie)
2217 struct sge_rspq *q = &qs->rspq; 2217 struct sge_rspq *q = &qs->rspq;
2218 2218
2219 spin_lock(&q->lock); 2219 spin_lock(&q->lock);
2220 BUG_ON(napi_is_scheduled(qs->netdev));
2221 2220
2222 if (handle_responses(adap, q) < 0) 2221 if (handle_responses(adap, q) < 0)
2223 q->unhandled_irqs++; 2222 q->unhandled_irqs++;