On Tue, 4 Nov 2025 14:23:24 +0530 Meghana Malladi wrote:
I tried honoring Jakub's comment to avoid freeing the rx memory wherever necessary.
"In case of icssg driver, freeing the rx memory is necessary as the rx descriptor memory is owned by the cppi dma controller and can be mapped to a single memory model (pages/xdp buffers) at a given time. In order to remap it, the memory needs to be freed and reallocated."
Just to make sure we are on the same page, does the above explanation make sense to you or do you want me to make any changes in this series for v5 ?
No. Based on your reply below you seem to understand what is being asked, so you're expected to do it.
I think you should:
- stop the H/W from processing incoming packets,
- spool all the pending packets
- attach/detach the xsk_pool
- refill the ring
- re-enable the H/W
Current implementation follows the same sequence:
- Does a channel teardown -> stop incoming traffic
- free the rx descriptors from free queue and completion queue -> spool
all pending packets/descriptors 3. attach/detach the xsk pool 4. allocate rx descriptors and fill the freeq after mapping them to the correct memory buffers -> refill the ring 5. restart the NAPI - re-enable the H/W to recv the traffic
I am still working on skipping 2 and 4 steps but this will be a long shot. Need to make sure all corner cases are getting covered. If this approach looks doable without causing any regressions I might post it as a followup patch later in the future.