mirror of https://gitee.com/openkylin/linux.git
gianfar: Remove redundant programming of [rt]xic registers
For Multi Q Multi Group (MQ_MG_MODE) mode, the Rx/Tx colescing registers [rt]xic are aliased with the [rt]xic0 registers (coalescing setting regs for Q0). This avoids programming twice in a row the coalescing registers for the Rx/Tx hw Q0. Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6be5ed3fef
commit
5d9657d83a
|
@ -1821,20 +1821,9 @@ void gfar_configure_coalescing(struct gfar_private *priv,
|
||||||
{
|
{
|
||||||
struct gfar __iomem *regs = priv->gfargrp[0].regs;
|
struct gfar __iomem *regs = priv->gfargrp[0].regs;
|
||||||
u32 __iomem *baddr;
|
u32 __iomem *baddr;
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
/* Backward compatible case ---- even if we enable
|
|
||||||
* multiple queues, there's only single reg to program
|
|
||||||
*/
|
|
||||||
gfar_write(®s->txic, 0);
|
|
||||||
if (likely(priv->tx_queue[0]->txcoalescing))
|
|
||||||
gfar_write(®s->txic, priv->tx_queue[0]->txic);
|
|
||||||
|
|
||||||
gfar_write(®s->rxic, 0);
|
|
||||||
if (unlikely(priv->rx_queue[0]->rxcoalescing))
|
|
||||||
gfar_write(®s->rxic, priv->rx_queue[0]->rxic);
|
|
||||||
|
|
||||||
if (priv->mode == MQ_MG_MODE) {
|
if (priv->mode == MQ_MG_MODE) {
|
||||||
|
int i = 0;
|
||||||
baddr = ®s->txic0;
|
baddr = ®s->txic0;
|
||||||
for_each_set_bit(i, &tx_mask, priv->num_tx_queues) {
|
for_each_set_bit(i, &tx_mask, priv->num_tx_queues) {
|
||||||
gfar_write(baddr + i, 0);
|
gfar_write(baddr + i, 0);
|
||||||
|
@ -1848,6 +1837,17 @@ void gfar_configure_coalescing(struct gfar_private *priv,
|
||||||
if (likely(priv->rx_queue[i]->rxcoalescing))
|
if (likely(priv->rx_queue[i]->rxcoalescing))
|
||||||
gfar_write(baddr + i, priv->rx_queue[i]->rxic);
|
gfar_write(baddr + i, priv->rx_queue[i]->rxic);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
/* Backward compatible case ---- even if we enable
|
||||||
|
* multiple queues, there's only single reg to program
|
||||||
|
*/
|
||||||
|
gfar_write(®s->txic, 0);
|
||||||
|
if (likely(priv->tx_queue[0]->txcoalescing))
|
||||||
|
gfar_write(®s->txic, priv->tx_queue[0]->txic);
|
||||||
|
|
||||||
|
gfar_write(®s->rxic, 0);
|
||||||
|
if (unlikely(priv->rx_queue[0]->rxcoalescing))
|
||||||
|
gfar_write(®s->rxic, priv->rx_queue[0]->rxic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue