Lines Matching refs:hinfo

110 	if (hinfo->cfg.wfq && hinfo->cfg.bandwidth) {			\
112 + priv->overhead ) * hinfo->run.fifo_queues * \
113 8000000 / hinfo->cfg.bandwidth; \
117 TAILQ_FOREACH(ngp_f1, &hinfo->fifo_head, fifo_le) \
123 TAILQ_INSERT_TAIL(&hinfo->fifo_head, ngp_f, fifo_le); \
127 TAILQ_INSERT_TAIL(&hinfo->fifo_head, ngp_f, fifo_le); \
271 struct hookinfo *hinfo;
285 hinfo = NG_HOOK_PRIVATE(hook);
286 hinfo->cfg.qin_size_limit = 50;
287 hinfo->cfg.fifo = 1;
288 hinfo->cfg.droptail = 1;
289 TAILQ_INIT(&hinfo->fifo_head);
290 TAILQ_INIT(&hinfo->qout_head);
456 struct hookinfo *hinfo, priv_p priv)
461 if (hinfo->ber_p) {
462 free(hinfo->ber_p, M_NG_PIPE);
463 hinfo->ber_p = NULL;
470 if (hinfo->ber_p == NULL)
471 hinfo->ber_p =
488 hinfo->ber_p[fsize] = p;
553 hinfo->noqueue = 0;
555 hinfo->noqueue = 1;
590 struct hookinfo *const hinfo = NG_HOOK_PRIVATE(hook);
605 if (hinfo->run.qin_frames == 0 && hinfo->run.qout_frames == 0 &&
606 hinfo->noqueue) {
608 if (hinfo == &priv->lower)
619 hinfo->stats.out_disc_frames++;
620 hinfo->stats.out_disc_octets += plen;
622 hinfo->stats.fwd_frames++;
623 hinfo->stats.fwd_octets += plen;
634 if (hinfo->run.qin_frames == 0) {
635 struct timeval *when = &hinfo->qin_utime;
653 if (hinfo->cfg.fifo)
659 TAILQ_FOREACH(ngp_f, &hinfo->fifo_head, fifo_le)
672 ngp_f->rr_deficit = hinfo->cfg.drr; /* DRR quantum */
673 hinfo->run.fifo_queues++;
680 hinfo->run.qin_frames++;
681 hinfo->run.qin_octets += m->m_pkthdr.len;
684 if (hinfo->run.qin_frames > hinfo->cfg.qin_size_limit) {
689 TAILQ_FOREACH(ngp_f1, &hinfo->fifo_head, fifo_le)
696 if (hinfo->cfg.drophead)
703 hinfo->run.qin_octets -= m1->m_pkthdr.len;
704 hinfo->stats.in_disc_octets += m1->m_pkthdr.len;
707 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
709 hinfo->run.fifo_queues--;
711 hinfo->run.qin_frames--;
712 hinfo->stats.in_disc_frames++;
718 pipe_dequeue(hinfo, now);
736 pipe_dequeue(struct hookinfo *hinfo, struct timeval *now) {
738 const node_p node = NG_HOOK_NODE(hinfo->hook);
748 if (hinfo == &priv->lower)
754 while ((ngp_f = TAILQ_FIRST(&hinfo->fifo_head))) {
755 when = &hinfo->qin_utime;
764 if (hinfo->cfg.drr) {
768 ngp_f->rr_deficit += hinfo->cfg.drr;
769 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
770 TAILQ_INSERT_TAIL(&hinfo->fifo_head,
783 if (hinfo->cfg.duplicate &&
784 prng32_bounded(100) <= hinfo->cfg.duplicate) {
800 hinfo->run.qin_frames--;
801 hinfo->run.qin_octets -= m->m_pkthdr.len;
806 if (hinfo->cfg.bandwidth) {
807 hinfo->qin_utime.tv_usec +=
809 8000000 / hinfo->cfg.bandwidth;
810 hinfo->qin_utime.tv_sec +=
811 hinfo->qin_utime.tv_usec / 1000000;
812 hinfo->qin_utime.tv_usec =
813 hinfo->qin_utime.tv_usec % 1000000;
816 when->tv_sec = hinfo->qin_utime.tv_sec;
817 when->tv_usec = hinfo->qin_utime.tv_usec;
821 if (hinfo->cfg.wfq) {
822 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
827 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
829 hinfo->run.fifo_queues--;
833 if (hinfo->cfg.ber) {
837 hinfo->ber_p[priv->overhead + m->m_pkthdr.len]) {
838 hinfo->stats.out_disc_frames++;
839 hinfo->stats.out_disc_octets += m->m_pkthdr.len;
847 if (hinfo->cfg.qout_size_limit &&
848 hinfo->run.qout_frames>=hinfo->cfg.qout_size_limit) {
849 hinfo->stats.out_disc_frames++;
850 hinfo->stats.out_disc_octets += m->m_pkthdr.len;
862 TAILQ_INSERT_TAIL(&hinfo->qout_head, ngp_h, ngp_link);
863 hinfo->run.qout_frames++;
864 hinfo->run.qout_octets += m->m_pkthdr.len;
868 while ((ngp_h = TAILQ_FIRST(&hinfo->qout_head))) {
878 hinfo->run.qout_frames--;
879 hinfo->run.qout_octets -= plen;
882 TAILQ_REMOVE(&hinfo->qout_head, ngp_h, ngp_link);
887 hinfo->stats.out_disc_frames++;
888 hinfo->stats.out_disc_octets += plen;
890 hinfo->stats.fwd_frames++;
891 hinfo->stats.fwd_octets += plen;
895 if ((hinfo->run.qin_frames != 0 || hinfo->run.qout_frames != 0) &&
954 struct hookinfo *const hinfo = NG_HOOK_PRIVATE(hook);
959 KASSERT(hinfo != NULL, ("%s: null info", __FUNCTION__));
960 hinfo->hook = NULL;
963 while ((ngp_f = TAILQ_FIRST(&hinfo->fifo_head))) {
969 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
974 while ((ngp_h = TAILQ_FIRST(&hinfo->qout_head))) {
975 TAILQ_REMOVE(&hinfo->qout_head, ngp_h, ngp_link);
981 if (hinfo->ber_p)
982 free(hinfo->ber_p, M_NG_PIPE);