diff options
author | Cristian Sovaiala <cristian.sovaiala@freescale.com> | 2013-10-10 15:45:53 (GMT) |
---|---|---|
committer | J. German Rivera <German.Rivera@freescale.com> | 2013-10-30 20:24:14 (GMT) |
commit | 8367f3118782210881c1af073d554cd5498107cd (patch) | |
tree | 83255935160ea71ac144301e263ef36d3dffce43 /drivers | |
parent | 76eddd0cc21d2acc36d1355bd4affe46fdb65980 (diff) | |
download | linux-fsl-qoriq-8367f3118782210881c1af073d554cd5498107cd.tar.xz |
dpaa_eth: Add pool channel in each affined portal's SDQCR
There might be CPUs which are not enabled at boottime, therefore
the pool channel is not currently set to the SDQCR of the affined
portals of those CPUs.
This means that the portals affined to the offline CPUs and which
are migrated to the boot CPU, will not issue interrupts to the
boot CPU in first instance and to the affined CPU (when this comes
online) in the second instance.
Therefore we set the pool channel to the SDQCR of each affined portal.
Signed-off-by: Cristian Sovaiala <cristian.sovaiala@freescale.com>
Change-Id: I63f5649e0c2169617dff991f08dd872a435578a8
Reviewed-on: http://git.am.freescale.net:8181/5629
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c index 49d91b0..479ccff 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c @@ -935,10 +935,11 @@ int dpaa_eth_add_channel(void *__arg) const cpumask_t *cpus = qman_affine_cpus(); u32 pool = QM_SDQCR_CHANNELS_POOL_CONV((u32)(unsigned long)__arg); int cpu; + struct qman_portal *portal; for_each_cpu(cpu, cpus) { - set_cpus_allowed_ptr(current, get_cpu_mask(cpu)); - qman_static_dequeue_add(pool); + portal = (struct qman_portal *)qman_get_affine_portal(cpu); + qman_p_static_dequeue_add(portal, pool); } return 0; } |