summaryrefslogtreecommitdiff
path: root/drivers/net
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-17 23:05:33 (GMT)
commit26d7e96258429d498f6fc7e3d2bb32b8f4c01097 (patch)
treee1b09399cb71a55ee1ac79aaaea14ffcda3b03da /drivers/net
parent2456de55ff645886c0c500183fa7023ff9f3f63d (diff)
downloadlinux-fsl-qoriq-26d7e96258429d498f6fc7e3d2bb32b8f4c01097.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/net')
-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 e04b3b7..7821195 100644
--- a/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c
+++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c
@@ -934,10 +934,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;
}