* Remove and free entry from syncache bucket row. * Expects locked syncache head. */
| 413 | * Expects locked syncache head. |
| 414 | */ |
| 415 | static void |
| 416 | syncache_drop(struct syncache *sc, struct syncache_head *sch) |
| 417 | { |
| 418 | |
| 419 | SCH_LOCK_ASSERT(sch); |
| 420 | |
| 421 | TCPSTATES_DEC(TCPS_SYN_RECEIVED); |
| 422 | TAILQ_REMOVE(&sch->sch_bucket, sc, sc_hash); |
| 423 | sch->sch_length--; |
| 424 | |
| 425 | #ifdef TCP_OFFLOAD |
| 426 | if (ADDED_BY_TOE(sc)) { |
| 427 | struct toedev *tod = sc->sc_tod; |
| 428 | |
| 429 | tod->tod_syncache_removed(tod, sc->sc_todctx); |
| 430 | } |
| 431 | #endif |
| 432 | |
| 433 | syncache_free(sc); |
| 434 | } |
| 435 | |
| 436 | /* |
| 437 | * Engage/reengage time on bucket row. |
no test coverage detected