Index: sys/netpfil/pf/if_pfsync.c =================================================================== --- sys/netpfil/pf/if_pfsync.c +++ sys/netpfil/pf/if_pfsync.c @@ -363,7 +363,7 @@ } if (sync || (time_uptime - st->pfsync_time) < 2) - pfsync_push(sc); + sc->sc_flags |= PFSYNCF_PUSH; } static void @@ -431,6 +431,10 @@ } PFSYNC_UNLOCK(sc); + + /* We can immediately send out the sync data now. */ + pfsyncintr(sc); + CURVNET_RESTORE(); } @@ -1963,7 +1967,7 @@ callout_init_mtx(&pd->pd_tmo, &sc->sc_mtx, CALLOUT_RETURNUNLOCKED); callout_reset(&pd->pd_tmo, 10, pfsync_defer_tmo, pd); - pfsync_push(sc); + sc->sc_flags |= PFSYNCF_PUSH; } static void @@ -2242,7 +2246,7 @@ nlen += sizeof(struct pfsync_subheader); if (sc->sc_len + nlen > sc->sc_ifp->if_mtu) { - pfsync_sendout(1); + pfsync_sendout(0); nlen = sizeof(struct pfsync_subheader) + pfsync_qs[q].len; }