i40e: Fix XDP redirect failure when queue count < CPU count #19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This patch fixes XDP redirect operations failing with -ENXIO when the number of configured network queues is less than the number of online CPUs.
Problem Description
The i40e_xdp_xmit() function uses smp_processor_id() directly as a queue index without proper bounds checking. In performance-optimized environments where users configure fewer queues than CPUs (e.g., 4 queues on a 6-CPU system), XDP redirect operations from higher-numbered CPUs fail with errno 6 (ENXIO).
Root Cause
src/i40e_txrx.ci40e_xdp_xmit()queue_index = smp_processor_id()can exceedvsi->num_queue_pairsSolution
Implement modulo-based CPU-to-queue mapping to ensure queue index never exceeds available queues:
i40e_xdp_queue_index()helper function using modulo operationTesting
Test Environment
Test Configuration
Additional Notes
Signed-off-by: Diego [email protected]