Because the eal interrupt framework can race when invoking the callback
and a separate unregister call, the test needs to accommodate the chance
that the two collide. Do this by checking the return value of unregister
against the race-condition flag (EAGAIN).
Fixes:
f1a6c22424ce ("app/test: update interrupts test")
Cc: stable@dpdk.org
Signed-off-by: Aaron Conole <aconole@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL);
- if (rte_intr_callback_unregister(&test_intr_handle,
- test_interrupt_callback, &test_intr_handle) < 0)
- return -1;
+ while ((count =
+ rte_intr_callback_unregister(&test_intr_handle,
+ test_interrupt_callback,
+ &test_intr_handle)) < 0) {
+ if (count != -EAGAIN)
+ return -1;
+ }
if (flag == 0) {
printf("callback has not been called\n");