]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: Slow down fpm_process_queue
authorDonald Sharp <sharpd@nvidia.com>
Fri, 11 Oct 2024 00:08:32 +0000 (20:08 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Fri, 11 Oct 2024 13:37:37 +0000 (09:37 -0400)
When the fpm_process_queue has run out of space
but has written to the fpm output buffer, schedule
it to wake up immediately, as that the write will go out
pretty much immediately, since it was scheduled first.
If the fpm_process_queue has not written to the output
buffer then delay the processing by 10 milliseconds to
allow a possibly backed up write processing to have a
chance to complete it's work.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra/dplane_fpm_nl.c

index 0e54952eea2c6348f487308f4e27487f6e4290df..4fb57d84d98ff8c34b1da80be65413cd93ecf71e 100644 (file)
@@ -1512,8 +1512,12 @@ static void fpm_process_queue(struct event *t)
 
        /* Re-schedule if we ran out of buffer space */
        if (no_bufs) {
-               event_add_event(fnc->fthread->master, fpm_process_queue, fnc, 0,
-                               &fnc->t_dequeue);
+               if (processed_contexts)
+                       event_add_event(fnc->fthread->master, fpm_process_queue, fnc, 0,
+                                       &fnc->t_dequeue);
+               else
+                       event_add_timer_msec(fnc->fthread->master, fpm_process_queue, fnc, 10,
+                                            &fnc->t_dequeue);
                event_add_timer(fnc->fthread->master, fpm_process_wedged, fnc,
                                DPLANE_FPM_NL_WEDGIE_TIME, &fnc->t_wedged);
        } else