summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBogdan Hamciuc <bogdan.hamciuc@freescale.com>2013-02-20 16:48:06 (GMT)
committerFleming Andrew-AFLEMING <AFLEMING@freescale.com>2013-04-08 23:23:39 (GMT)
commitb318f971abf991e94176e361c5bcbcc1900926de (patch)
treea1ceda5283fb89c4fd86c193f1ed68d301a6c042 /drivers
parentc0808bfd4c1e047ce6e25d5229abe1f90898564e (diff)
downloadlinux-fsl-qoriq-b318f971abf991e94176e361c5bcbcc1900926de.tar.xz
dpaa_eth: Put TxConf FQs in the default pool channel
Up until now, each Tx Confirmation FQ would stay in the dedicated channel of the CPU "owning" its peer Tx FQ. Although that boosts L2 statistics, in the end the Rx endpoint has to spend more time in Rx softirqs, thereby starving the userspace application listening on a UDP socket. So in our non-preemptible, default kernel configuration, more was in fact less, because the L4 throughput ("the goodput") was lower. By moving the Tx Confirmation FQs into the default pool channel, we get slightly lower L2 performance, but better L4 figures. This is especially the case for "power-deprived" configurations, such as 4-core setups with small-sized UDP traffic. Change-Id: I9b927ad35aa4570cca9827f1eb92b59f744173fb Signed-off-by: Bogdan Hamciuc <bogdan.hamciuc@freescale.com> (cherry picked from commit 7b732de9d8c2bb847a190d36886e6cfec0a8cfe6) Reviewed-on: http://git.am.freescale.net:8181/1052 Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com> Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ethernet/freescale/dpa/dpaa_eth.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c
index d7d0dd8..13859a2 100644
--- a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c
@@ -3448,7 +3448,6 @@ static void dpa_setup_recycle_queues(struct dpa_priv_s *priv, struct dpa_fq *fq,
static void dpa_setup_conf_queues(struct dpa_priv_s *priv, struct dpa_fq *fq)
{
- const cpumask_t *affine_cpus = qman_affine_cpus();
struct list_head *ptr = &fq->list;
int i;
@@ -3460,9 +3459,7 @@ static void dpa_setup_conf_queues(struct dpa_priv_s *priv, struct dpa_fq *fq)
struct dpa_fq *iter = list_entry(ptr, struct dpa_fq, list);
dpa_setup_ingress(priv, iter, &tx_private_defq);
- /* If cpu not online, just leave the default pool channel */
- if (cpumask_test_cpu(i, affine_cpus))
- iter->channel = qman_affine_channel(i);
+ /* Leave the confirmation queue in the default pool channel */
priv->conf_fqs[i] = &iter->fq_base;
ptr = ptr->next;