[PATCH 1/6] net: macb: use dummy descriptor for RBQP
Eugen.Hristev at microchip.com
Eugen.Hristev at microchip.com
Wed Dec 16 07:54:54 CET 2020
On 03.12.2020 11:25, Claudiu Beznea wrote:
> In case of multiple queues on RX side the queue scheduler
> will try to use all the available configured queues (with
> descriptors having TX_USED bit cleared). If at least one RBQP
> points to a descriptor with a valid used bit configuration then
> the reception may block as this may point to any memory. To avoid
> this scenario all the queues (except queue zero) were disabled by
> setting DMA descriptors with used bit set on proper RBQP. The driver
> anyway uses only queue 0 for TX/RX.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea at microchip.com>
> ---
Hi Anup, Bin, Padmarao,
I noticed on the mailing list that you have been actively working and
testing the Macb driver on various platforms, we have this series
outstanding and I want to make sure that it does not break anything on
your side, so it would be appreciated if you could have a look or test
it before it goes into master branch.
Thanks !
Eugen
> drivers/net/macb.c | 4 +++-
> drivers/net/macb.h | 2 ++
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index b80a259ff757..836eb85ec96a 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -732,8 +732,10 @@ static int gmac_init_multi_queues(struct macb_device *macb)
> flush_dcache_range(macb->dummy_desc_dma, macb->dummy_desc_dma +
> ALIGN(MACB_TX_DUMMY_DMA_DESC_SIZE, PKTALIGN));
>
> - for (i = 1; i < num_queues; i++)
> + for (i = 1; i < num_queues; i++) {
> gem_writel_queue_TBQP(macb, macb->dummy_desc_dma, i - 1);
> + gem_writel_queue_RBQP(macb, macb->dummy_desc_dma, i - 1);
> + }
>
> return 0;
> }
> diff --git a/drivers/net/macb.h b/drivers/net/macb.h
> index 9b16383eba46..28c7fe306883 100644
> --- a/drivers/net/macb.h
> +++ b/drivers/net/macb.h
> @@ -768,5 +768,7 @@
> #define GEM_RX_CSUM_CHECKED_MASK 2
> #define gem_writel_queue_TBQP(port, value, queue_num) \
> writel((value), (port)->regs + GEM_TBQP(queue_num))
> +#define gem_writel_queue_RBQP(port, value, queue_num) \
> + writel((value), (port)->regs + GEM_RBQP(queue_num))
>
> #endif /* __DRIVERS_MACB_H__ */
>
More information about the U-Boot
mailing list