diff options
author | Bogdan Hamciuc <bogdan.hamciuc@freescale.com> | 2013-05-30 15:05:56 (GMT) |
---|---|---|
committer | Fleming Andrew-AFLEMING <AFLEMING@freescale.com> | 2013-05-31 20:11:17 (GMT) |
commit | 229dc6b7173c4c8bbd586e32cbcf871f0bb27d60 (patch) | |
tree | 284a5e80328dc89c4445aa3f317953164ca5c501 /drivers/net/ethernet/freescale | |
parent | dd2ca76f9780e502f98b09b8b74cb7b20525e832 (diff) | |
download | linux-fsl-qoriq-229dc6b7173c4c8bbd586e32cbcf871f0bb27d60.tar.xz |
dpaa_eth: Create TxConf FQs with HOLDACTIVE flag
Tx Confirmation FQs tend, with originating traffic, to generate a high
number of portal interrupts. A machine doing only TCP transmits may well
end up having more portal interrupts than its Rx peer.
By setting the HOLDACTIVE flag on the Tx Confirmation FQs, we
significantly reduce the number of portal interrupts in termination
tests.
The quantitative effect is anywhere between 2% and 4% on Tx-mainly
cores (most visible in UDP_STREAM tests, least visible on TCP_STREAM).
Signed-off-by: Bogdan Hamciuc <bogdan.hamciuc@freescale.com>
Change-Id: I54e2e8287f72da0cfe231af91c624be805ddee17
Reviewed-on: http://git.am.freescale.net:8181/2815
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Sovaiala Cristian-Constantin-B39531 <Cristian.Sovaiala@freescale.com>
Reviewed-by: Bucur Madalin-Cristian-B32716 <madalin.bucur@freescale.com>
Reviewed-by: Radulescu Ruxandra Ioana-B05472 <ruxandra.radulescu@freescale.com>
Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale')
-rw-r--r-- | drivers/net/ethernet/freescale/dpa/dpaa_eth.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c index db624ec..2d47c8a 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_eth.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth.c @@ -615,6 +615,14 @@ _dpa_fq_alloc(struct list_head *list, struct dpa_fq *dpa_fq) /* FIXME: why would we want to keep an empty FQ in cache? */ initfq.fqd.fq_ctrl = QM_FQCTRL_PREFERINCACHE; +#ifdef CONFIG_FSL_DPAA_ETH_SG_SUPPORT + /* Try to reduce the number of portal interrupts for + * Tx Confirmation FQs. + */ + if (dpa_fq->fq_type == FQ_TYPE_TX_CONFIRM) + initfq.fqd.fq_ctrl |= QM_FQCTRL_HOLDACTIVE; +#endif + /* FQ placement */ initfq.we_mask |= QM_INITFQ_WE_DESTWQ; |