src/sys/dev/cxgbe/t4_sge.c
/*
 * Attempt to refill all starving freelists.
 */
Attempt to refill all starving freelists.
Attempt to refill all starving freelists .
static void
refill_sfl(void *arg)
{
	struct adapter *sc = arg;
	struct sge_fl *fl, *fl_temp;
	mtx_assert(&sc->sfl_lock, MA_OWNED);
	TAILQ_FOREACH_SAFE(fl, &sc->sfl, link, fl_temp) {
		FL_LOCK(fl);
		refill_fl(sc, fl, 64);
		if (FL_NOT_RUNNING_LOW(fl) || fl->flags & FL_DOOMED) {
			TAILQ_REMOVE(&sc->sfl, fl, link);
			fl->flags &= ~FL_STARVING;
		}
		FL_UNLOCK(fl);
	}
	if (!TAILQ_EMPTY(&sc->sfl))
		callout_schedule(&sc->sfl_callout, hz / 5);
}
static void refill_sfl ( void * arg ) { struct adapter * sc = arg ; struct sge_fl * fl , * fl_temp ; mtx_assert ( & sc -> sfl_lock , MA_OWNED ) ; TAILQ_FOREACH_SAFE ( fl , & sc -> sfl , link , fl_temp ) { FL_LOCK ( fl ) ; refill_fl ( sc , fl , 64 ) ; if ( FL_NOT_RUNNING_LOW ( fl ) || fl -> flags & FL_DOOMED ) { TAILQ_REMOVE ( & sc -> sfl , fl , link ) ; fl -> flags &= ~ FL_STARVING ; } FL_UNLOCK ( fl ) ; } if ( ! TAILQ_EMPTY ( & sc -> sfl ) ) callout_schedule ( & sc -> sfl_callout , hz / 5 ) ; }
Attempt to refill all starving freelists.
Attempt to refill all starving freelists .