Re: [PATCH net-next v11 0/2] net: mana: add ethtool private flag for full-page RX buffers
From: Dipayaan Roy <hidden>
Date: 2026-07-05 17:24:44
Also in:
bpf, linux-hyperv, linux-rdma, lkml
On Wed, Jul 01, 2026 at 04:45:14PM +0200, Maciej Fijalkowski wrote:
On Wed, Jul 01, 2026 at 07:15:44AM -0700, Dipayaan Roy wrote:quoted
On some ARM64 platforms with 4K PAGE_SIZE, utilizing page_pool fragments for allocation in the RX refill path (~2kB buffer per fragment) causes 15-20% throughput regression under high connection counts (>16 TCP streams at 180+ Gbps). Using full-page buffers on these platforms shows no regression and restores line-rate performance. This behavior is observed on a single platform; other platforms perform better with page_pool fragments, indicating this is not a page_pool issue but platform-specific. This series adds an ethtool private flag "full-page-rx" to let the user opt in to one RX buffer per page: ethtool --set-priv-flags eth0 full-page-rx on There is no behavioral change by default. The flag can be persisted via udev rule for affected platforms.Were you able to track down what is the actual bottleneck on the 'broken' platform? What is the performance of full-page approach on healthy platforms? On changelog below you mention the frag approach 'outperforms' the full-page one.
Hi Maciej, The HW team identified a PCIE root port stall occurring due to a PCIe errata in a HW IP used for this platform. Using full pages increases the time in packet refill path and indirectly helping to reduce the back pressure in NIC pipeline caused due to the stall in root port. As per them it will be fixed in next version of this hw which is not anytime soon. On various other healthy platforms with 4k base page size we tested, we see improvements using page fragments than full pages around anywhere between 5 to 15%. Regards Dipayaan Roy
quoted
This series depends on the following fixes now merged in net-next: commit 17bfe0a8c014 ("net: mana: Add NULL guards in teardown path to prevent panic on attach failure") commit 5b05aa36ee24 ("net: mana: Skip redundant detach on already-detached port") Changes in v11: - Rebased on net-next Changes in v10: - Rebased on net-next which now includes the prerequisite fixes. - Recovery logic in mana_set_priv_flags() leverages the idempotent mana_detach() from the merged fixes. Changes in v9: - Added correct tree. Changes in v8: - Fixed queue_reset_work recovery by restoring port_is_up before scheduling reset so the handler can properly re-attach. - Simplified "err && schedule_port_reset" to "schedule_port_reset". Changes in v7: - Rebased onto net-next. - Retained private flag approach after David Wei's testing on Grace (ARM64) confirmed that fragment mode outperforms full-page mode on other platforms, validating this is a single-platform workaround rather than a generic issue. Changes in v6: - Added missed maintainers. Changes in v5: - Split prep refactor into separate patch (patch 1/2) Changes in v4: - Dropping the smbios string parsing and add ethtool priv flag to reconfigure the queues with full page rx buffers. Changes in v3: - changed u8* to char* Changes in v2: - separate reading string index and the string, remove inline. Dipayaan Roy (2): net: mana: refactor mana_get_strings() and mana_get_sset_count() to use switch net: mana: force full-page RX buffers via ethtool private flag drivers/net/ethernet/microsoft/mana/mana_en.c | 22 ++- .../ethernet/microsoft/mana/mana_ethtool.c | 178 +++++++++++++++--- include/net/mana/mana.h | 8 + 3 files changed, 177 insertions(+), 31 deletions(-) -- 2.43.0