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>
This commit is contained in:
parent
e360b5628f
commit
890de33283
|
@ -2071,10 +2071,20 @@ static void vlan_rx_register(struct net_device *dev, struct vlan_group *grp)
|
||||||
static void cxgb_netpoll(struct net_device *dev)
|
static void cxgb_netpoll(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct adapter *adapter = dev->priv;
|
struct adapter *adapter = dev->priv;
|
||||||
struct sge_qset *qs = dev2qset(dev);
|
struct port_info *pi = netdev_priv(dev);
|
||||||
|
int qidx;
|
||||||
|
|
||||||
t3_intr_handler(adapter, qs->rspq.polling) (adapter->pdev->irq,
|
for (qidx = pi->first_qset; qidx < pi->first_qset + pi->nqsets; qidx++) {
|
||||||
adapter);
|
struct sge_qset *qs = &adapter->sge.qs[qidx];
|
||||||
|
void *source;
|
||||||
|
|
||||||
|
if (adapter->flags & USING_MSIX)
|
||||||
|
source = qs;
|
||||||
|
else
|
||||||
|
source = adapter;
|
||||||
|
|
||||||
|
t3_intr_handler(adapter, qs->rspq.polling) (0, source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -2217,7 +2217,6 @@ irqreturn_t t3_sge_intr_msix_napi(int irq, void *cookie)
|
||||||
struct sge_rspq *q = &qs->rspq;
|
struct sge_rspq *q = &qs->rspq;
|
||||||
|
|
||||||
spin_lock(&q->lock);
|
spin_lock(&q->lock);
|
||||||
BUG_ON(napi_is_scheduled(qs->netdev));
|
|
||||||
|
|
||||||
if (handle_responses(adap, q) < 0)
|
if (handle_responses(adap, q) < 0)
|
||||||
q->unhandled_irqs++;
|
q->unhandled_irqs++;
|
||||||
|
|
Loading…
Reference in New Issue