diff options
author | Bogdan Hamciuc <bogdan.hamciuc@freescale.com> | 2013-02-20 16:48:06 (GMT) |
---|---|---|
committer | Fleming Andrew-AFLEMING <AFLEMING@freescale.com> | 2013-04-08 23:23:39 (GMT) |
commit | b318f971abf991e94176e361c5bcbcc1900926de (patch) | |
tree | a1ceda5283fb89c4fd86c193f1ed68d301a6c042 /drivers | |
parent | c0808bfd4c1e047ce6e25d5229abe1f90898564e (diff) | |
download | linux-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.c | 5 |
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; |