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); \
272 struct hookinfo *hinfo;
286 hinfo = NG_HOOK_PRIVATE(hook);
287 hinfo->cfg.qin_size_limit = 50;
288 hinfo->cfg.fifo = 1;
289 hinfo->cfg.droptail = 1;
290 TAILQ_INIT(&hinfo->fifo_head);
291 TAILQ_INIT(&hinfo->qout_head);
457 struct hookinfo *hinfo, priv_p priv)
462 if (hinfo->ber_p) {
463 free(hinfo->ber_p, M_NG_PIPE);
464 hinfo->ber_p = NULL;
471 if (hinfo->ber_p == NULL)
472 hinfo->ber_p =
489 hinfo->ber_p[fsize] = p;
554 hinfo->noqueue = 0;
556 hinfo->noqueue = 1;
591 struct hookinfo *const hinfo = NG_HOOK_PRIVATE(hook);
606 if (hinfo->run.qin_frames == 0 && hinfo->run.qout_frames == 0 &&
607 hinfo->noqueue) {
609 if (hinfo == &priv->lower)
620 hinfo->stats.out_disc_frames++;
621 hinfo->stats.out_disc_octets += plen;
623 hinfo->stats.fwd_frames++;
624 hinfo->stats.fwd_octets += plen;
635 if (hinfo->run.qin_frames == 0) {
636 struct timeval *when = &hinfo->qin_utime;
652 if (hinfo->cfg.fifo)
658 TAILQ_FOREACH(ngp_f, &hinfo->fifo_head, fifo_le)
667 ngp_f->rr_deficit = hinfo->cfg.drr; /* DRR quantum */
668 hinfo->run.fifo_queues++;
675 hinfo->run.qin_frames++;
676 hinfo->run.qin_octets += m->m_pkthdr.len;
679 if (hinfo->run.qin_frames > hinfo->cfg.qin_size_limit) {
684 TAILQ_FOREACH(ngp_f1, &hinfo->fifo_head, fifo_le)
691 if (hinfo->cfg.drophead)
698 hinfo->run.qin_octets -= m1->m_pkthdr.len;
699 hinfo->stats.in_disc_octets += m1->m_pkthdr.len;
702 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
704 hinfo->run.fifo_queues--;
706 hinfo->run.qin_frames--;
707 hinfo->stats.in_disc_frames++;
708 } else if (hinfo->run.qin_frames > hinfo->cfg.qin_size_limit) {
713 TAILQ_FOREACH(ngp_f1, &hinfo->fifo_head, fifo_le)
720 if (hinfo->cfg.drophead)
727 hinfo->run.qin_octets -= m1->m_pkthdr.len;
728 hinfo->stats.in_disc_octets += m1->m_pkthdr.len;
731 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
733 hinfo->run.fifo_queues--;
735 hinfo->run.qin_frames--;
736 hinfo->stats.in_disc_frames++;
742 pipe_dequeue(hinfo, now);
761 pipe_dequeue(struct hookinfo *hinfo, struct timeval *now) {
763 const node_p node = NG_HOOK_NODE(hinfo->hook);
773 if (hinfo == &priv->lower)
779 while ((ngp_f = TAILQ_FIRST(&hinfo->fifo_head))) {
780 when = &hinfo->qin_utime;
789 if (hinfo->cfg.drr) {
793 ngp_f->rr_deficit += hinfo->cfg.drr;
794 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
795 TAILQ_INSERT_TAIL(&hinfo->fifo_head,
805 if (hinfo->cfg.duplicate &&
806 random() % 100 <= hinfo->cfg.duplicate) {
814 hinfo->run.qin_frames--;
815 hinfo->run.qin_octets -= m->m_pkthdr.len;
820 if (hinfo->cfg.bandwidth) {
821 hinfo->qin_utime.tv_usec +=
823 8000000 / hinfo->cfg.bandwidth;
824 hinfo->qin_utime.tv_sec +=
825 hinfo->qin_utime.tv_usec / 1000000;
826 hinfo->qin_utime.tv_usec =
827 hinfo->qin_utime.tv_usec % 1000000;
830 when->tv_sec = hinfo->qin_utime.tv_sec;
831 when->tv_usec = hinfo->qin_utime.tv_usec;
835 if (hinfo->cfg.wfq) {
836 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
841 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
843 hinfo->run.fifo_queues--;
847 if (hinfo->cfg.ber) {
851 hinfo->ber_p[priv->overhead + m->m_pkthdr.len]) {
852 hinfo->stats.out_disc_frames++;
853 hinfo->stats.out_disc_octets += m->m_pkthdr.len;
861 if (hinfo->cfg.qout_size_limit &&
862 hinfo->run.qout_frames>=hinfo->cfg.qout_size_limit) {
863 hinfo->stats.out_disc_frames++;
864 hinfo->stats.out_disc_octets += m->m_pkthdr.len;
876 TAILQ_INSERT_TAIL(&hinfo->qout_head, ngp_h, ngp_link);
877 hinfo->run.qout_frames++;
878 hinfo->run.qout_octets += m->m_pkthdr.len;
882 while ((ngp_h = TAILQ_FIRST(&hinfo->qout_head))) {
892 hinfo->run.qout_frames--;
893 hinfo->run.qout_octets -= plen;
896 TAILQ_REMOVE(&hinfo->qout_head, ngp_h, ngp_link);
901 hinfo->stats.out_disc_frames++;
902 hinfo->stats.out_disc_octets += plen;
904 hinfo->stats.fwd_frames++;
905 hinfo->stats.fwd_octets += plen;
909 if ((hinfo->run.qin_frames != 0 || hinfo->run.qout_frames != 0) &&
969 struct hookinfo *const hinfo = NG_HOOK_PRIVATE(hook);
973 KASSERT(hinfo != NULL, ("%s: null info", __FUNCTION__));
974 hinfo->hook = NULL;
977 while ((ngp_f = TAILQ_FIRST(&hinfo->fifo_head))) {
983 TAILQ_REMOVE(&hinfo->fifo_head, ngp_f, fifo_le);
988 while ((ngp_h = TAILQ_FIRST(&hinfo->qout_head))) {
989 TAILQ_REMOVE(&hinfo->qout_head, ngp_h, ngp_link);
995 if (hinfo->ber_p)
996 free(hinfo->ber_p, M_NG_PIPE);