Lines Matching refs:pa

135 	memcpy(&altq->pa, a, sizeof(struct pf_altq));
139 item.key = altq->pa.ifname;
153 item.key = altq->pa.qname;
154 item.data = &altq->pa.qid;
306 eval_pfaltq(struct pfctl *pf, struct pf_altq *pa, struct node_queue_bw *bw,
313 pa->ifbandwidth = bw->bw_absolute;
315 if ((rate = getifspeed(pa->ifname)) == 0) {
318 pa->ifname);
320 } else if ((pa->ifbandwidth = eval_bwspec(bw, rate)) == 0)
321 pa->ifbandwidth = rate;
326 if ((pa->scheduler != ALTQT_HFSC) && (pa->ifbandwidth > UINT_MAX)) {
327 pa->ifbandwidth = UINT_MAX;
329 "because selected scheduler is 32-bit limited\n", pa->ifname,
330 pa->ifbandwidth);
332 errors += eval_queue_opts(pa, opts, pa->ifbandwidth);
335 if (pa->tbrsize == 0) {
336 rate = pa->ifbandwidth;
347 size = size * getifmtu(pa->ifname);
348 pa->tbrsize = size;
364 switch (if_ppa->pa.scheduler) {
388 eval_pfqueue(struct pfctl *pf, struct pf_altq *pa, struct node_queue_bw *bw,
396 if ((if_ppa = pfaltq_lookup(pa->ifname)) == NULL) {
397 fprintf(stderr, "altq not defined on %s\n", pa->ifname);
400 pa->scheduler = if_ppa->pa.scheduler;
401 pa->ifbandwidth = if_ppa->pa.ifbandwidth;
403 if (qname_to_pfaltq(pa->qname, pa->ifname) != NULL) {
405 pa->qname, pa->ifname);
408 pa->qid = qname_to_qid(pa->qname);
411 if (pa->parent[0] != 0) {
412 parent = qname_to_pfaltq(pa->parent, pa->ifname);
415 pa->parent, pa->qname);
418 pa->parent_qid = parent->pa.qid;
420 if (pa->qlimit == 0)
421 pa->qlimit = DEFAULT_QLIMIT;
423 if (pa->scheduler == ALTQT_CBQ || pa->scheduler == ALTQT_HFSC ||
424 pa->scheduler == ALTQT_FAIRQ) {
425 pa->bandwidth = eval_bwspec(bw,
426 parent == NULL ? pa->ifbandwidth : parent->pa.bandwidth);
428 if (pa->bandwidth > pa->ifbandwidth) {
430 "interface\n", pa->qname);
441 if ((parent != NULL) && (pa->scheduler != ALTQT_HFSC)) {
442 if (pa->bandwidth > parent->pa.bandwidth) {
444 pa->qname);
447 parent->meta.bwsum += pa->bandwidth;
448 if (parent->meta.bwsum > parent->pa.bandwidth) {
451 parent->meta.bwsum, parent->pa.qname,
452 parent->pa.bandwidth);
457 if (eval_queue_opts(pa, opts,
458 parent == NULL ? pa->ifbandwidth : parent->pa.bandwidth))
464 switch (pa->scheduler) {
466 error = eval_pfqueue_cbq(pf, pa, if_ppa);
469 error = eval_pfqueue_priq(pf, pa, if_ppa);
472 error = eval_pfqueue_hfsc(pf, pa, if_ppa, parent);
475 error = eval_pfqueue_fairq(pf, pa, if_ppa, parent);
490 eval_pfqueue_cbq(struct pfctl *pf, struct pf_altq *pa, struct pfctl_altq *if_ppa)
495 if (pa->priority >= CBQ_MAXPRI) {
500 ifmtu = getifmtu(pa->ifname);
501 opts = &pa->pq_u.cbq_opts;
517 if (pa->parent[0] == 0)
520 if (pa->pq_u.cbq_opts.flags & CBQCLF_ROOTCLASS)
522 if (pa->pq_u.cbq_opts.flags & CBQCLF_DEFCLASS)
525 cbq_compute_idletime(pf, pa);
533 cbq_compute_idletime(struct pfctl *pf, struct pf_altq *pa)
541 opts = &pa->pq_u.cbq_opts;
542 ifnsPerByte = (1.0 / (double)pa->ifbandwidth) * RM_NS_PER_SEC * 8;
546 if (pa->bandwidth == 0)
549 f = ((double) pa->bandwidth / (double) pa->ifbandwidth);
560 if (pa->bandwidth != 0 && (pf->opts & PF_OPT_QUIET) == 0) {
563 (double)INT_MAX * (double)pa->ifbandwidth));
565 pa->qname);
626 warnx("should have one root queue on %s", if_ppa->pa.ifname);
630 warnx("should have one default queue on %s", if_ppa->pa.ifname);
677 eval_pfqueue_priq(struct pfctl *pf, struct pf_altq *pa, struct pfctl_altq *if_ppa)
680 if (pa->priority >= PRIQ_MAXPRI) {
684 if (BIT_ISSET(QPRI_BITSET_SIZE, pa->priority, &if_ppa->meta.qpris)) {
686 pa->qname, pa->ifname);
689 BIT_SET(QPRI_BITSET_SIZE, pa->priority, &if_ppa->meta.qpris);
691 if (pa->pq_u.priq_opts.flags & PRCF_DEFAULTCLASS)
704 warnx("should have one default queue on %s", if_ppa->pa.ifname);
742 eval_pfqueue_hfsc(struct pfctl *pf, struct pf_altq *pa, struct pfctl_altq *if_ppa,
748 opts = &pa->pq_u.hfsc_opts;
752 opts->lssc_m1 = pa->ifbandwidth;
753 opts->lssc_m2 = pa->ifbandwidth;
764 if (parent->pa.pq_u.hfsc_opts.flags & HFCF_DEFAULTCLASS) {
766 pa->qname, pa->parent);
770 if (pa->pq_u.hfsc_opts.flags & HFCF_DEFAULTCLASS)
775 opts->lssc_m2 = pa->bandwidth;
780 warnx("m2 is zero for %s", pa->qname);
787 warnx("m1 must be zero for convex curve: %s", pa->qname);
813 sc.m2 = pa->ifbandwidth / 100 * 80;
829 sc.m1 = parent->pa.pq_u.hfsc_opts.lssc_m1;
830 sc.d = parent->pa.pq_u.hfsc_opts.lssc_d;
831 sc.m2 = parent->pa.pq_u.hfsc_opts.lssc_m2;
840 if (opts->ulsc_m1 > pa->ifbandwidth ||
841 opts->ulsc_m2 > pa->ifbandwidth) {
858 eval_pfqueue_fairq(struct pfctl *pf __unused, struct pf_altq *pa,
864 opts = &pa->pq_u.fairq_opts;
868 opts->lssc_m1 = pa->ifbandwidth;
869 opts->lssc_m2 = pa->ifbandwidth;
878 if (parent->pa.pq_u.fairq_opts.flags & FARF_DEFAULTCLASS) {
880 pa->qname, pa->parent);
884 if (pa->pq_u.fairq_opts.flags & FARF_DEFAULTCLASS)
889 opts->lssc_m2 = pa->bandwidth;
911 sc.m1 = parent->pa.pq_u.fairq_opts.lssc_m1;
912 sc.d = parent->pa.pq_u.fairq_opts.lssc_d;
913 sc.m2 = parent->pa.pq_u.fairq_opts.lssc_m2;
929 warnx("should have one default queue on %s", if_ppa->pa.ifname);
941 warnx("should have one default queue on %s", if_ppa->pa.ifname);
1292 eval_queue_opts(struct pf_altq *pa, struct node_queue_opt *opts,
1297 switch (pa->scheduler) {
1299 pa->pq_u.cbq_opts = opts->data.cbq_opts;
1302 pa->pq_u.priq_opts = opts->data.priq_opts;
1305 pa->pq_u.hfsc_opts.flags = opts->data.hfsc_opts.flags;
1307 pa->pq_u.hfsc_opts.lssc_m1 =
1310 pa->pq_u.hfsc_opts.lssc_m2 =
1313 pa->pq_u.hfsc_opts.lssc_d =
1317 pa->pq_u.hfsc_opts.rtsc_m1 =
1320 pa->pq_u.hfsc_opts.rtsc_m2 =
1323 pa->pq_u.hfsc_opts.rtsc_d =
1327 pa->pq_u.hfsc_opts.ulsc_m1 =
1330 pa->pq_u.hfsc_opts.ulsc_m2 =
1333 pa->pq_u.hfsc_opts.ulsc_d =
1338 pa->pq_u.fairq_opts.flags = opts->data.fairq_opts.flags;
1339 pa->pq_u.fairq_opts.nbuckets = opts->data.fairq_opts.nbuckets;
1340 pa->pq_u.fairq_opts.hogs_m1 =
1344 pa->pq_u.fairq_opts.lssc_m1 =
1347 pa->pq_u.fairq_opts.lssc_m2 =
1350 pa->pq_u.fairq_opts.lssc_d =
1355 pa->pq_u.codel_opts.target = opts->data.codel_opts.target;
1356 pa->pq_u.codel_opts.interval = opts->data.codel_opts.interval;
1357 pa->pq_u.codel_opts.ecn = opts->data.codel_opts.ecn;