diff options
author | Cristian Sovaiala <cristian.sovaiala@freescale.com> | 2013-10-11 09:39:18 (GMT) |
---|---|---|
committer | J. German Rivera <German.Rivera@freescale.com> | 2013-10-30 20:51:38 (GMT) |
commit | 5849bd78544ecccc7978a1ce97522fe38e44d15a (patch) | |
tree | ca9c70d503dd9a2426d07f7911528e621ded6084 | |
parent | 8367f3118782210881c1af073d554cd5498107cd (diff) | |
download | linux-fsl-qoriq-5849bd78544ecccc7978a1ce97522fe38e44d15a.tar.xz |
dpaa_eth: Update Netpoll to the new NAPI logic
Use the new NAPI logic inside the Netpoll controller callback.
Signed-off-by: Cristian Sovaiala <cristian.sovaiala@freescale.com>
Change-Id: I395db60bc93083030c8d20f0038cb0d1dd8cf23a
Reviewed-on: http://git.am.freescale.net:8181/5630
Reviewed-by: Bucur Madalin-Cristian-B32716 <madalin.bucur@freescale.com>
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Ruxandra Ioana Radulescu <ruxandra.radulescu@freescale.com>
Reviewed-by: Bogdan Hamciuc <bogdan.hamciuc@freescale.com>
Reviewed-by: Rivera Jose-B46482 <German.Rivera@freescale.com>
-rw-r--r-- | drivers/net/ethernet/freescale/dpa/dpaa_eth.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c index dbb9112..11d87bf 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c @@ -552,11 +552,17 @@ static void dpaa_eth_poll_controller(struct net_device *net_dev) struct dpa_priv_s *priv = netdev_priv(net_dev); struct dpa_percpu_priv_s *percpu_priv = __this_cpu_ptr(priv->percpu_priv); - struct napi_struct napi = percpu_priv->napi; + struct qman_portal *p; + const struct qman_portal_config *pc; + struct dpa_napi_portal *np; - qman_p_irqsource_remove(percpu_priv->p, QM_PIRQ_DQRI); - qman_poll_dqrr(napi.weight); - qman_p_irqsource_add(percpu_priv->p, QM_PIRQ_DQRI); + p = (struct qman_portal *)qman_get_affine_portal(smp_processor_id()); + pc = qman_p_get_portal_config(p); + np = &percpu_priv->np[pc->index]; + + qman_p_irqsource_remove(np->p, QM_PIRQ_DQRI); + qman_p_poll_dqrr(np->p, np->napi.weight); + qman_p_irqsource_add(np->p, QM_PIRQ_DQRI); } #endif |