Re: [net RFC] net/mlx4_en: Use frag stride in crossing page boundary condition
From: Saeed Mahameed <hidden>
Date: 2018-06-14 20:53:33
On Thu, 2018-06-14 at 13:47 -0700, saeedm@mellanox.com wrote:
On Thu, 2018-06-14 at 12:12 -0700, Eric Dumazet wrote:quoted
On 06/14/2018 11:56 AM, Saeed Mahameed wrote:quoted
Interestingly for this exact frag_stride we don't have an issue :) since it goes through a different condition branch (the page flipping thing): if (frag_info->frag_stride == PAGE_SIZE / 2) { frags->page_offset ^= PAGE_SIZE / 2; release = page_count(page) != 1 || page_is_pfmemalloc(page) || page_to_nid(page) != numa_mem_id();I guess you forgot to test on PowerPC where PAGE_SIZE=65536 ? On PowerPC, the first branch is never taken.
Oh, sorry i see where you are going with this, you mean for xdp in the other branch we need to take care of PAGE_SIZE > 4k .. You are totally right, good catch! I will have to figure this out :) ..
This code is already in the driver, i guess as optimization for when a page can be reused only twice (PAGE_SIZE=4K, strides_size = 2k). frag_stride is never more than 2k. for power PC we should always take the other branch which will reuse as much 2k strides as possible in a page regardless of PAGE_SIZE. so are we good with my change ?