Messages in this thread | | | Date | Sun, 24 Jan 2021 13:01:36 +0000 | From | Russell King - ARM Linux admin <> | Subject | Re: [PATCH v2 RFC net-next 09/18] net: mvpp2: add FCA RXQ non occupied descriptor threshold |
| |
On Sun, Jan 24, 2021 at 01:43:58PM +0200, stefanc@marvell.com wrote: > diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c > index 9d69752..0f5069f 100644 > --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c > +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c > @@ -1154,6 +1154,9 @@ static void mvpp2_interrupts_mask(void *arg) > mvpp2_thread_write(port->priv, > mvpp2_cpu_to_thread(port->priv, smp_processor_id()), > MVPP2_ISR_RX_TX_MASK_REG(port->id), 0); > + mvpp2_thread_write(port->priv, > + mvpp2_cpu_to_thread(port->priv, smp_processor_id()), > + MVPP2_ISR_RX_ERR_CAUSE_REG(port->id), 0);
I wonder if this should be refactored:
u32 thread = mvpp2_cpu_to_thread(port->priv, smp_processor_id());
mvpp2_thread_write(port->priv, thread, MVPP2_ISR_RX_TX_MASK_REG(port->id), 0); mvpp2_thread_write(port->priv, thread, MVPP2_ISR_RX_ERR_CAUSE_REG(port->id), 0);
to avoid having to recompute mvpp2_cpu_to_thread() for each write?
However, looking deeper...
static void mvpp2_interrupts_mask(void *arg) { struct mvpp2_port *port = arg; u32 thread; int cpu;
cpu = smp_processor_id(); if (cpu > port->priv->nthreads) return
thread = mvpp2_cpu_to_thread(port->priv, cpu); ...
and I wonder about that condition - "cpu > port->priv->nthreads". If cpu == port->priv->nthreads, then mvpp2_cpu_to_thread() will return zero, just like the cpu=0 case. This leads me to suspect that this comparison off by one.
-- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
| |