Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 890de332 authored by Divy Le Ray's avatar Divy Le Ray Committed by Jeff Garzik
Browse files

cxgb3 - fix netpoll hanlder



Fix netpoll handler to work with line interrupt, msi and msi-x.

Signed-off-by: default avatarDivy Le Ray <divy@chelsio.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent e360b562
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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)
{
	struct adapter *adapter = dev->priv;
	struct sge_qset *qs = dev2qset(dev);
	struct port_info *pi = netdev_priv(dev);
	int qidx;

	for (qidx = pi->first_qset; qidx < pi->first_qset + pi->nqsets; qidx++) {
		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) (adapter->pdev->irq,
						    adapter);
		t3_intr_handler(adapter, qs->rspq.polling) (0, source);
	}
}
#endif

+0 −1
Original line number Diff line number Diff line
@@ -2217,7 +2217,6 @@ irqreturn_t t3_sge_intr_msix_napi(int irq, void *cookie)
	struct sge_rspq *q = &qs->rspq;

	spin_lock(&q->lock);
	BUG_ON(napi_is_scheduled(qs->netdev));

	if (handle_responses(adap, q) < 0)
		q->unhandled_irqs++;