Skip to content

Conversation

@slahmer97
Copy link

Summary

Fixes RX queue hang observed at high PPS (>2 Gbps) where QDMA stops producing completions. The problem occur only in the RX data path.

Root cause

  • NAPI poll exited on budget exhaustion without posting a completion CIDX update.
  • napi_complete with zero work and then napi_schedule on budget exhaustion.

Fix

  • Call napi_complete_done() only when queue is drained (pidx==cidx)..(i.e., Should not call complete_done when next_to_clear = 0).
  • Remove self-scheduling, napi_reschedule should not be called

Testing

  • Validated at line iperf : "iperf -c 10.10.99.99 -u -b 4096M -t 120 -l 64 -P 16" and "iperf -c 10.10.99.99 -u -b 4096M -t 120 -l 1450 -P 16"
  • No more RX stalls

Prevent RX queue hang under heavy load by posting CIDX doorbell on budget exhaustion, following proper NAPI semantics.

Signed-off-by: slahmer97 <seyyidahmedlahmer@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant