summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorCristian Sovaiala <cristian.sovaiala@freescale.com>2013-10-10 15:45:53 (GMT)
committerJ. German Rivera <German.Rivera@freescale.com>2013-10-30 20:24:14 (GMT)
commit8367f3118782210881c1af073d554cd5498107cd (patch)
tree83255935160ea71ac144301e263ef36d3dffce43 /drivers
parent76eddd0cc21d2acc36d1355bd4affe46fdb65980 (diff)
downloadlinux-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.c5
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;
}