Lines Matching refs:sch

138 static void	 syncache_timeout(struct syncache *sc, struct syncache_head *sch,
153 static int syncookie_cmp(struct in_conninfo *inc, struct syncache_head *sch,
226 #define SCH_LOCK(sch) mtx_lock(&(sch)->sch_mtx)
227 #define SCH_UNLOCK(sch) mtx_unlock(&(sch)->sch_mtx)
228 #define SCH_LOCK_ASSERT(sch) mtx_assert(&(sch)->sch_mtx, MA_OWNED)
322 struct syncache_head *sch;
342 sch = &V_tcp_syncache.hashbase[i];
343 callout_drain(&sch->sch_timer);
345 SCH_LOCK(sch);
346 TAILQ_FOREACH_SAFE(sc, &sch->sch_bucket, sc_hash, nsc)
347 syncache_drop(sc, sch);
348 SCH_UNLOCK(sch);
349 KASSERT(TAILQ_EMPTY(&sch->sch_bucket),
350 ("%s: sch->sch_bucket not empty", __func__));
351 KASSERT(sch->sch_length == 0, ("%s: sch->sch_length %d not 0",
352 __func__, sch->sch_length));
353 mtx_destroy(&sch->sch_mtx);
371 syncache_insert(struct syncache *sc, struct syncache_head *sch)
375 SCH_LOCK(sch);
381 if (sch->sch_length >= V_tcp_syncache.bucket_limit) {
382 KASSERT(!TAILQ_EMPTY(&sch->sch_bucket),
383 ("sch->sch_length incorrect"));
385 sc2 = TAILQ_LAST(&sch->sch_bucket, sch_head);
386 sch->sch_last_overflow = time_uptime;
387 syncache_drop(sc2, sch);
391 TAILQ_INSERT_HEAD(&sch->sch_bucket, sc, sc_hash);
392 sch->sch_length++;
403 if (sch->sch_length == 1)
404 sch->sch_nextc = ticks + INT_MAX;
405 syncache_timeout(sc, sch, 1);
407 SCH_UNLOCK(sch);
418 syncache_drop(struct syncache *sc, struct syncache_head *sch)
421 SCH_LOCK_ASSERT(sch);
424 TAILQ_REMOVE(&sch->sch_bucket, sc, sc_hash);
425 sch->sch_length--;
442 syncache_timeout(struct syncache *sc, struct syncache_head *sch, int docallout)
454 if (TSTMP_LT(sc->sc_rxttime, sch->sch_nextc)) {
455 sch->sch_nextc = sc->sc_rxttime;
457 callout_reset(&sch->sch_timer, sch->sch_nextc - ticks,
458 syncache_timer, (void *)sch);
470 struct syncache_head *sch = (struct syncache_head *)xsch;
477 CURVNET_SET(sch->sch_sc->vnet);
480 SCH_LOCK_ASSERT(sch);
486 sch->sch_nextc = tick + INT_MAX;
496 TAILQ_FOREACH_SAFE(sc, &sch->sch_bucket, sc_hash, nsc) {
498 syncache_drop(sc, sch);
510 if (TSTMP_LT(sc->sc_rxttime, sch->sch_nextc))
511 sch->sch_nextc = sc->sc_rxttime;
524 syncache_drop(sc, sch);
539 syncache_timeout(sc, sch, 0);
541 if (!TAILQ_EMPTY(&(sch)->sch_bucket))
542 callout_reset(&(sch)->sch_timer, (sch)->sch_nextc - tick,
543 syncache_timer, (void *)(sch));
589 struct syncache_head *sch;
591 *schp = sch = syncache_hashbucket(inc);
592 SCH_LOCK(sch);
595 TAILQ_FOREACH(sc, &sch->sch_bucket, sc_hash)
600 return (sc); /* Always returns with locked sch. */
614 struct syncache_head *sch;
619 sc = syncache_lookup(inc, &sch); /* returns locked sch */
620 SCH_LOCK_ASSERT(sch);
692 syncache_drop(sc, sch);
723 SCH_UNLOCK(sch);
730 struct syncache_head *sch;
734 sc = syncache_lookup(inc, &sch); /* returns locked sch */
735 SCH_LOCK_ASSERT(sch);
737 syncache_drop(sc, sch);
740 SCH_UNLOCK(sch);
747 struct syncache_head *sch;
751 sc = syncache_lookup(inc, &sch); /* returns locked sch */
752 SCH_LOCK_ASSERT(sch);
776 syncache_drop(sc, sch);
779 SCH_UNLOCK(sch);
1090 struct syncache_head *sch;
1101 sch = syncache_hashbucket(inc);
1104 sc = syncache_lookup(inc, &sch); /* returns locked sch */
1106 SCH_LOCK_ASSERT(sch);
1115 syncookie_cmp(inc, sch, sc, th, to, *lsop, port);
1132 SCH_UNLOCK(sch);
1140 sch->sch_last_overflow < time_uptime - SYNCOOKIE_LIFETIME) {
1141 SCH_UNLOCK(sch);
1149 sc = syncookie_lookup(inc, sch, &scs, th, to, *lsop, port);
1151 SCH_UNLOCK(sch);
1177 SCH_UNLOCK(sch);
1191 SCH_UNLOCK(sch);
1203 SCH_UNLOCK(sch);
1225 SCH_UNLOCK(sch);
1270 SCH_UNLOCK(sch);
1292 TAILQ_REMOVE(&sch->sch_bucket, sc, sc_hash);
1293 sch->sch_length--;
1301 SCH_UNLOCK(sch);
1402 struct syncache_head *sch;
1544 sch = syncache_hashbucket(inc);
1547 sc = syncache_lookup(inc, &sch); /* returns locked sch */
1549 SCH_LOCK_ASSERT(sch);
1596 syncache_timeout(sc, sch, 1);
1600 SCH_UNLOCK(sch);
1626 if ((sc = TAILQ_LAST(&sch->sch_bucket, sch_head)) != NULL) {
1627 sch->sch_last_overflow = time_uptime;
1628 syncache_drop(sc, sch);
1640 SCH_UNLOCK(sch);
1744 sc->sc_iss = syncookie_generate(sch, sc);
1757 SCH_UNLOCK(sch);
1774 syncache_insert(sc, sch); /* locks and unlocks sch */
2233 syncookie_generate(struct syncache_head *sch, struct syncache *sc)
2272 (uintptr_t)sch);
2288 syncookie_lookup(struct in_conninfo *inc, struct syncache_head *sch,
2314 hash = syncookie_mac(inc, seq, cookie.cookie, secbits, (uintptr_t)sch);
2384 syncookie_cmp(struct in_conninfo *inc, struct syncache_head *sch,
2392 scx = syncookie_lookup(inc, sch, &scs, th, to, lso, port);
2556 struct syncache_head *sch;
2568 sch = &V_tcp_syncache.hashbase[i];
2569 SCH_LOCK(sch);
2570 TAILQ_FOREACH(sc, &sch->sch_bucket, sc_hash) {
2582 SCH_UNLOCK(sch);
2586 SCH_UNLOCK(sch);