Lines Matching refs:frag
6171 ipsec_fragcache_init(ipsec_fragcache_t *frag) in ipsec_fragcache_init() argument
6176 mutex_init(&frag->itpf_lock, NULL, MUTEX_DEFAULT, NULL); in ipsec_fragcache_init()
6177 frag->itpf_ptr = (ipsec_fragcache_entry_t **) in ipsec_fragcache_init()
6180 if (frag->itpf_ptr == NULL) in ipsec_fragcache_init()
6187 kmem_free(frag->itpf_ptr, sizeof (ipsec_fragcache_entry_t *) * in ipsec_fragcache_init()
6192 frag->itpf_freelist = NULL; in ipsec_fragcache_init()
6195 ftemp->itpfe_next = frag->itpf_freelist; in ipsec_fragcache_init()
6196 frag->itpf_freelist = ftemp; in ipsec_fragcache_init()
6200 frag->itpf_expire_hint = 0; in ipsec_fragcache_init()
6206 ipsec_fragcache_uninit(ipsec_fragcache_t *frag, ipsec_stack_t *ipss) in ipsec_fragcache_uninit() argument
6211 mutex_enter(&frag->itpf_lock); in ipsec_fragcache_uninit()
6212 if (frag->itpf_ptr) { in ipsec_fragcache_uninit()
6215 fep = (frag->itpf_ptr)[i]; in ipsec_fragcache_uninit()
6218 fep = fragcache_delentry(i, fep, frag, ipss); in ipsec_fragcache_uninit()
6226 while (frag->itpf_freelist->itpfe_next != NULL) in ipsec_fragcache_uninit()
6227 frag->itpf_freelist = frag->itpf_freelist->itpfe_next; in ipsec_fragcache_uninit()
6234 kmem_free(frag->itpf_freelist, in ipsec_fragcache_uninit()
6238 kmem_free(frag->itpf_ptr, in ipsec_fragcache_uninit()
6242 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_uninit()
6243 mutex_destroy(&frag->itpf_lock); in ipsec_fragcache_uninit()
6254 ipsec_fragcache_add(ipsec_fragcache_t *frag, mblk_t *iramp, mblk_t *mp, in ipsec_fragcache_add() argument
6296 mutex_enter(&frag->itpf_lock); in ipsec_fragcache_add()
6313 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6332 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6355 if (itpf_time >= frag->itpf_expire_hint) in ipsec_fragcache_add()
6356 ipsec_fragcache_clean(frag, ipss); in ipsec_fragcache_add()
6365 for (fep = (frag->itpf_ptr)[i]; fep; fep = fep->itpfe_next) { in ipsec_fragcache_add()
6411 (void) fragcache_delentry(i, fep, frag, ipss); in ipsec_fragcache_add()
6412 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6423 if (frag->itpf_freelist == NULL) { in ipsec_fragcache_add()
6425 ipsec_fragcache_clean(frag, ipss); in ipsec_fragcache_add()
6426 if (frag->itpf_freelist == NULL) { in ipsec_fragcache_add()
6427 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6437 fep = frag->itpf_freelist; in ipsec_fragcache_add()
6438 frag->itpf_freelist = fep->itpfe_next; in ipsec_fragcache_add()
6464 fep->itpfe_next = (frag->itpf_ptr)[i]; in ipsec_fragcache_add()
6465 (frag->itpf_ptr)[i] = fep; in ipsec_fragcache_add()
6467 if (frag->itpf_expire_hint > fep->itpfe_exp) in ipsec_fragcache_add()
6468 frag->itpf_expire_hint = fep->itpfe_exp; in ipsec_fragcache_add()
6529 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6572 (void) fragcache_delentry(i, fep, frag, ipss); in ipsec_fragcache_add()
6573 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6592 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6635 (void) fragcache_delentry(i, fep, frag, in ipsec_fragcache_add()
6637 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6678 (void) fragcache_delentry(i, fep, frag, ipss); in ipsec_fragcache_add()
6679 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6692 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6735 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6757 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6787 (void) fragcache_delentry(i, fep, frag, ipss); in ipsec_fragcache_add()
6788 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6819 mutex_exit(&frag->itpf_lock); in ipsec_fragcache_add()
6826 ipsec_fragcache_clean(ipsec_fragcache_t *frag, ipsec_stack_t *ipss) in ipsec_fragcache_clean() argument
6835 ASSERT(MUTEX_HELD(&frag->itpf_lock)); in ipsec_fragcache_clean()
6841 fep = (frag->itpf_ptr)[i]; in ipsec_fragcache_clean()
6845 fep = fragcache_delentry(i, fep, frag, ipss); in ipsec_fragcache_clean()
6857 frag->itpf_expire_hint = earlyexp; in ipsec_fragcache_clean()
6860 if (frag->itpf_freelist == NULL) in ipsec_fragcache_clean()
6861 (void) fragcache_delentry(earlyi, earlyfep, frag, ipss); in ipsec_fragcache_clean()
6866 ipsec_fragcache_t *frag, ipsec_stack_t *ipss) in fragcache_delentry() argument
6871 ASSERT(MUTEX_HELD(&frag->itpf_lock)); in fragcache_delentry()
6882 targp = (frag->itpf_ptr)[slot]; in fragcache_delentry()
6887 (frag->itpf_ptr)[slot] = nextp; in fragcache_delentry()
6889 fep->itpfe_next = frag->itpf_freelist; in fragcache_delentry()
6890 frag->itpf_freelist = fep; in fragcache_delentry()
6901 fep->itpfe_next = frag->itpf_freelist; in fragcache_delentry()
6902 frag->itpf_freelist = fep; in fragcache_delentry()