diff options
author | Divy Le Ray <divy@chelsio.com> | 2007-05-30 13:01:34 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-06-20 19:16:58 -0400 |
commit | 890de332834a95450a74e5f615f4f9a0fa564623 (patch) | |
tree | 555e87ff623f98f74741ece661b7928d2bb14e08 /drivers/net | |
parent | e360b5628f1d040c0e96dd9ee011196645e08aef (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>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 16 | ||||
-rw-r--r-- | drivers/net/cxgb3/sge.c | 1 |
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) | |||
2071 | static void cxgb_netpoll(struct net_device *dev) | 2071 | static 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++; |