[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190524135418.5408591e@carbon>
Date: Fri, 24 May 2019 13:54:18 +0200
From: Jesper Dangaard Brouer <brouer@...hat.com>
To: Ivan Khoronzhuk <ivan.khoronzhuk@...aro.org>
Cc: grygorii.strashko@...com, davem@...emloft.net, ast@...nel.org,
linux-kernel@...r.kernel.org, linux-omap@...r.kernel.org,
xdp-newbies@...r.kernel.org, ilias.apalodimas@...aro.org,
netdev@...r.kernel.org, daniel@...earbox.net,
jakub.kicinski@...ronome.com, john.fastabend@...il.com,
brouer@...hat.com, Tariq Toukan <tariqt@...lanox.com>
Subject: Re: [PATCH net-next 3/3] net: ethernet: ti: cpsw: add XDP support
On Thu, 23 May 2019 21:20:35 +0300
Ivan Khoronzhuk <ivan.khoronzhuk@...aro.org> wrote:
> Add XDP support based on rx page_pool allocator, one frame per page.
> Page pool allocator is used with assumption that only one rx_handler
> is running simultaneously. DMA map/unmap is reused from page pool
> despite there is no need to map whole page.
When using page_pool for DMA-mapping, your XDP-memory model must use
1-page per packet, which you state you do. This is because
__page_pool_put_page() fallback mode does a __page_pool_clean_page()
unmapping the DMA. Ilias and I are looking at options for removing this
restriction as Mlx5 would need it (when we extend the SKB to return
pages to page_pool).
Unfortunately, I've found another blocker for drivers using the DMA
mapping feature of page_pool. We don't properly handle the case, where
a remote TX-driver have xdp_frame's in-flight, and simultaneously the
sending driver is unloaded and take down the page_pool. Nothing crash,
but we end-up calling put_page() on a page that is still DMA-mapped.
I'm working on different solutions for fixing this, see here:
https://github.com/xdp-project/xdp-project/blob/master/areas/mem/page_pool03_shutdown_inflight.org
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
Powered by blists - more mailing lists