FreeBSD/sys/dev/sfxge/sfxge_rx.c
/* Stop tracking connections that have gone idle in order to keep hash
 * chains short.
 */
Stop tracking connections that have gone idle in order to keep hash
chains short.
Stop tracking connections that have gone idle in order to keep hash chains short .
static void sfxge_lro_purge_idle(struct sfxge_rxq *rxq, unsigned now)
{
	struct sfxge_lro_conn *c;
	unsigned i;
	KASSERT(LIST_EMPTY(&rxq->lro.active_conns),
		("found active connections"));
	rxq->lro.last_purge_ticks = now;
	for (i = 0; i <= rxq->lro.conns_mask; ++i) {
		if (TAILQ_EMPTY(&rxq->lro.conns[i]))
			continue;
		c = TAILQ_LAST(&rxq->lro.conns[i], sfxge_lro_tailq);
		if (now - c->last_pkt_ticks > lro_idle_ticks) {
			++rxq->lro.n_drop_idle;
			sfxge_lro_drop(rxq, c);
		}
	}
}
static void sfxge_lro_purge_idle ( struct sfxge_rxq * rxq , unsigned now ) { struct sfxge_lro_conn * c ; unsigned i ; KASSERT ( LIST_EMPTY ( & rxq -> lro . active_conns ) , ( " " ) ) ; rxq -> lro . last_purge_ticks = now ; for ( i = 0 ; i <= rxq -> lro . conns_mask ; ++ i ) { if ( TAILQ_EMPTY ( & rxq -> lro . conns [ i ] ) ) continue ; c = TAILQ_LAST ( & rxq -> lro . conns [ i ] , sfxge_lro_tailq ) ; if ( now - c -> last_pkt_ticks > lro_idle_ticks ) { ++ rxq -> lro . n_drop_idle ; sfxge_lro_drop ( rxq , c ) ; } } }
Stop tracking connections that have gone idle in order to keep hash
 chains short.
Stop tracking connections that have gone idle in order to keep hash chains short .