void nmbclust_update(void) { /* * Set the hard limit on the mclpool to the number of * mbuf clusters the kernel is to support. Log the limit * reached message max once a minute. */ (void)pool_sethardlimit(&mclpool, nmbclust, mclpool_warnmsg, 60); pool_sethiwat(&mbpool, nmbclust); }
/* * Tcp initialization */ void tcp_init() { tcp_iss = 1; /* wrong */ pool_init(&tcpcb_pool, sizeof(struct tcpcb), 0, 0, 0, "tcpcbpl", NULL); pool_init(&tcpqe_pool, sizeof(struct tcpqent), 0, 0, 0, "tcpqepl", NULL); pool_sethardlimit(&tcpqe_pool, tcp_reass_limit, NULL, 0); #ifdef TCP_SACK pool_init(&sackhl_pool, sizeof(struct sackhole), 0, 0, 0, "sackhlpl", NULL); pool_sethardlimit(&sackhl_pool, tcp_sackhole_limit, NULL, 0); #endif /* TCP_SACK */ in_pcbinit(&tcbtable, tcbhashsize); #ifdef INET6 /* * Since sizeof(struct ip6_hdr) > sizeof(struct ip), we * do max length checks/computations only on the former. */ if (max_protohdr < (sizeof(struct ip6_hdr) + sizeof(struct tcphdr))) max_protohdr = (sizeof(struct ip6_hdr) + sizeof(struct tcphdr)); if ((max_linkhdr + sizeof(struct ip6_hdr) + sizeof(struct tcphdr)) > MHLEN) panic("tcp_init"); icmp6_mtudisc_callback_register(tcp6_mtudisc_callback); #endif /* INET6 */ /* Initialize the compressed state engine. */ syn_cache_init(); /* Initialize timer state. */ tcp_timer_init(); }
void nmbclust_update(void) { int i; /* * Set the hard limit on the mclpools to the number of * mbuf clusters the kernel is to support. Log the limit * reached message max once a minute. */ for (i = 0; i < nitems(mclsizes); i++) { (void)pool_sethardlimit(&mclpools[i], nmbclust, mclpool_warnmsg, 60); /* * XXX this needs to be reconsidered. * Setting the high water mark to nmbclust is too high * but we need to have enough spare buffers around so that * allocations in interrupt context don't fail or mclgeti() * drivers may end up with empty rings. */ pool_sethiwat(&mclpools[i], nmbclust); } pool_sethiwat(&mbpool, nmbclust); }