• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/xnu-2782.1.97/bsd/net/pktsched/

Lines Matching defs:cl

203 	struct priq_class	*cl;
210 if ((cl = pif->pif_classes[pri]) != NULL)
211 priq_class_destroy(pif, cl);
220 struct priq_class *cl;
226 if ((cl = pif->pif_classes[pri]) != NULL && !qempty(&cl->cl_q))
227 priq_purgeq(pif, cl, 0, NULL, NULL);
255 priq_purgeq(pif, ifq->ifcq_disc_slots[i].cl,
264 priq_purgeq(pif, ifq->ifcq_disc_slots[i].cl,
275 struct priq_class *cl;
281 if ((cl = pif->pif_classes[pri]) != NULL)
282 priq_updateq(pif, cl, ev);
289 struct priq_class *cl;
301 cl = priq_class_create(pif, priority, qlimit, flags, qid);
302 if (cl == NULL)
306 *clp = cl;
317 struct priq_class *cl;
363 if ((cl = pif->pif_classes[pri]) != NULL) {
365 if (!qempty(&cl->cl_q))
366 priq_purgeq(pif, cl, 0, NULL, NULL);
368 if (q_is_rio(&cl->cl_q))
369 rio_destroy(cl->cl_rio);
372 if (q_is_red(&cl->cl_q))
373 red_destroy(cl->cl_red);
376 if (q_is_blue(&cl->cl_q))
377 blue_destroy(cl->cl_blue);
379 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
380 sfb_destroy(cl->cl_sfb);
381 cl->cl_qalg.ptr = NULL;
382 qtype(&cl->cl_q) = Q_DROPTAIL;
383 qstate(&cl->cl_q) = QS_RUNNING;
385 cl = zalloc(priq_cl_zone);
386 if (cl == NULL)
389 bzero(cl, priq_cl_size);
392 pif->pif_classes[pri] = cl;
394 pif->pif_default = cl;
400 _qinit(&cl->cl_q, Q_DROPTAIL, qlimit);
401 cl->cl_flags = flags;
402 cl->cl_pri = pri;
405 cl->cl_pif = pif;
406 cl->cl_handle = qid;
414 cl->cl_qflags = 0;
417 cl->cl_qflags |= BLUEF_ECN;
419 cl->cl_qflags |= SFBF_ECN;
421 cl->cl_qflags |= REDF_ECN;
423 cl->cl_qflags |= RIOF_ECN;
427 cl->cl_qflags |= SFBF_FLOWCTL;
431 cl->cl_qflags |= RIOF_CLEARDSCP;
447 cl->cl_red = red_alloc(ifp, 0, 0,
448 qlimit(&cl->cl_q) * 10/100,
449 qlimit(&cl->cl_q) * 30/100,
450 cl->cl_qflags, pkttime);
451 if (cl->cl_red != NULL)
452 qtype(&cl->cl_q) = Q_RED;
457 cl->cl_rio =
458 rio_alloc(ifp, 0, NULL, cl->cl_qflags, pkttime);
459 if (cl->cl_rio != NULL)
460 qtype(&cl->cl_q) = Q_RIO;
466 cl->cl_blue = blue_alloc(ifp, 0, 0, cl->cl_qflags);
467 if (cl->cl_blue != NULL)
468 qtype(&cl->cl_q) = Q_BLUE;
472 if (!(cl->cl_flags & PRCF_LAZY))
473 cl->cl_sfb = sfb_alloc(ifp, cl->cl_handle,
474 qlimit(&cl->cl_q), cl->cl_qflags);
475 if (cl->cl_sfb != NULL || (cl->cl_flags & PRCF_LAZY))
476 qtype(&cl->cl_q) = Q_SFB;
483 cl->cl_handle, cl->cl_pri, qlimit, flags, PRCF_BITS);
486 return (cl);
492 struct priq_class *cl;
496 if ((cl = priq_clh_to_clp(pif, qid)) == NULL)
499 return (priq_class_destroy(pif, cl));
503 priq_class_destroy(struct priq_if *pif, struct priq_class *cl)
510 if (!qempty(&cl->cl_q))
511 priq_purgeq(pif, cl, 0, NULL, NULL);
513 VERIFY(cl->cl_pri < PRIQ_MAXPRI);
514 VERIFY(!pktsched_bit_tst(cl->cl_pri, &pif->pif_bitmap));
516 pif->pif_classes[cl->cl_pri] = NULL;
517 if (pif->pif_maxpri == cl->cl_pri) {
518 for (pri = cl->cl_pri; pri >= 0; pri--)
527 if (pif->pif_default == cl)
530 if (cl->cl_qalg.ptr != NULL) {
532 if (q_is_rio(&cl->cl_q))
533 rio_destroy(cl->cl_rio);
536 if (q_is_red(&cl->cl_q))
537 red_destroy(cl->cl_red);
540 if (q_is_blue(&cl->cl_q))
541 blue_destroy(cl->cl_blue);
543 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
544 sfb_destroy(cl->cl_sfb);
545 cl->cl_qalg.ptr = NULL;
546 qtype(&cl->cl_q) = Q_DROPTAIL;
547 qstate(&cl->cl_q) = QS_RUNNING;
553 cl->cl_handle, cl->cl_pri);
556 zfree(priq_cl_zone, cl);
562 priq_enqueue(struct priq_if *pif, struct priq_class *cl, struct mbuf *m,
570 VERIFY(cl == NULL || cl->cl_pif == pif);
572 if (cl == NULL) {
574 cl = priq_clh_to_clp(pif, t->pftag_qid);
576 cl = priq_clh_to_clp(pif, 0);
578 if (cl == NULL) {
579 cl = pif->pif_default;
580 if (cl == NULL) {
587 pri = cl->cl_pri;
592 ret = priq_addq(cl, m, t);
602 PKTCNTR_ADD(&cl->cl_dropcnt, 1, len);
635 struct priq_class *cl;
649 cl = pif->pif_classes[pri];
650 VERIFY(cl != NULL && !qempty(&cl->cl_q));
653 return (priq_pollq(cl));
655 m = priq_getq(cl);
660 if (qempty(&cl->cl_q)) {
661 cl->cl_period++;
665 PKTCNTR_ADD(&cl->cl_xmitcnt, 1, len);
672 priq_addq(struct priq_class *cl, struct mbuf *m, struct pf_mtag *t)
674 struct priq_if *pif = cl->cl_pif;
680 if (q_is_rio(&cl->cl_q))
681 return (rio_addq(cl->cl_rio, &cl->cl_q, m, t));
685 if (q_is_red(&cl->cl_q))
686 return (red_addq(cl->cl_red, &cl->cl_q, m, t));
690 if (q_is_blue(&cl->cl_q))
691 return (blue_addq(cl->cl_blue, &cl->cl_q, m, t));
694 if (q_is_sfb(&cl->cl_q)) {
695 if (cl->cl_sfb == NULL) {
698 VERIFY(cl->cl_flags & PRCF_LAZY);
699 cl->cl_flags &= ~PRCF_LAZY;
702 cl->cl_sfb = sfb_alloc(ifp, cl->cl_handle,
703 qlimit(&cl->cl_q), cl->cl_qflags);
704 if (cl->cl_sfb == NULL) {
706 qtype(&cl->cl_q) = Q_DROPTAIL;
707 cl->cl_flags &= ~PRCF_SFB;
708 cl->cl_qflags &= ~(SFBF_ECN | SFBF_FLOWCTL);
713 priq_style(pif), cl->cl_handle,
714 cl->cl_pri);
728 if (cl->cl_sfb != NULL)
729 return (sfb_addq(cl->cl_sfb, &cl->cl_q, m, t));
730 } else if (qlen(&cl->cl_q) >= qlimit(&cl->cl_q)) {
737 if (cl->cl_flags & PRCF_CLEARDSCP)
741 _addq(&cl->cl_q, m);
747 priq_getq(struct priq_class *cl)
749 IFCQ_LOCK_ASSERT_HELD(cl->cl_pif->pif_ifq);
752 if (q_is_rio(&cl->cl_q))
753 return (rio_getq(cl->cl_rio, &cl->cl_q));
757 if (q_is_red(&cl->cl_q))
758 return (red_getq(cl->cl_red, &cl->cl_q));
762 if (q_is_blue(&cl->cl_q))
763 return (blue_getq(cl->cl_blue, &cl->cl_q));
766 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
767 return (sfb_getq(cl->cl_sfb, &cl->cl_q));
769 return (_getq(&cl->cl_q));
773 priq_pollq(struct priq_class *cl)
775 IFCQ_LOCK_ASSERT_HELD(cl->cl_pif->pif_ifq);
777 return (qhead(&cl->cl_q));
781 priq_purgeq(struct priq_if *pif, struct priq_class *cl, u_int32_t flow,
789 if ((qlen = qlen(&cl->cl_q)) == 0) {
790 VERIFY(!pktsched_bit_tst(cl->cl_pri, &pif->pif_bitmap));
798 if (q_is_rio(&cl->cl_q))
799 rio_purgeq(cl->cl_rio, &cl->cl_q, flow, &cnt, &len);
803 if (q_is_red(&cl->cl_q))
804 red_purgeq(cl->cl_red, &cl->cl_q, flow, &cnt, &len);
808 if (q_is_blue(&cl->cl_q))
809 blue_purgeq(cl->cl_blue, &cl->cl_q, flow, &cnt, &len);
812 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
813 sfb_purgeq(cl->cl_sfb, &cl->cl_q, flow, &cnt, &len);
815 _flushq_flow(&cl->cl_q, flow, &cnt, &len);
818 VERIFY(qlen(&cl->cl_q) == (qlen - cnt));
820 PKTCNTR_ADD(&cl->cl_dropcnt, cnt, len);
826 if (qempty(&cl->cl_q))
827 pktsched_bit_clr(cl->cl_pri, &pif->pif_bitmap);
833 cl->cl_handle, cl->cl_pri, qlen, qlen(&cl->cl_q),
845 priq_updateq(struct priq_if *pif, struct priq_class *cl, cqev_t ev)
852 cl->cl_handle, cl->cl_pri, ifclassq_ev2str(ev));
856 if (q_is_rio(&cl->cl_q))
857 return (rio_updateq(cl->cl_rio, ev));
860 if (q_is_red(&cl->cl_q))
861 return (red_updateq(cl->cl_red, ev));
864 if (q_is_blue(&cl->cl_q))
865 return (blue_updateq(cl->cl_blue, ev));
867 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
868 return (sfb_updateq(cl->cl_sfb, ev));
875 struct priq_class *cl;
879 if ((cl = priq_clh_to_clp(pif, qid)) == NULL)
882 sp->class_handle = cl->cl_handle;
883 sp->priority = cl->cl_pri;
884 sp->qlength = qlen(&cl->cl_q);
885 sp->qlimit = qlimit(&cl->cl_q);
886 sp->period = cl->cl_period;
887 sp->xmitcnt = cl->cl_xmitcnt;
888 sp->dropcnt = cl->cl_dropcnt;
890 sp->qtype = qtype(&cl->cl_q);
891 sp->qstate = qstate(&cl->cl_q);
893 if (q_is_red(&cl->cl_q))
894 red_getstats(cl->cl_red, &sp->red[0]);
897 if (q_is_rio(&cl->cl_q))
898 rio_getstats(cl->cl_rio, &sp->red[0]);
901 if (q_is_blue(&cl->cl_q))
902 blue_getstats(cl->cl_blue, &sp->blue);
904 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
905 sfb_getstats(cl->cl_sfb, &sp->sfb);
914 struct priq_class *cl;
924 cl = ifq->ifcq_disc_slots[i].cl;
925 sr->packets = qlen(&cl->cl_q);
926 sr->bytes = qsize(&cl->cl_q);
935 struct priq_class *cl;
941 if ((cl = pif->pif_classes[idx]) != NULL &&
942 cl->cl_handle == chandle)
943 return (cl);
978 ifq->ifcq_disc_slots[i].cl, m, m_pftag(m)));
1109 ifq->ifcq_disc_slots[SCIDX_BK_SYS].cl = cl0;
1112 ifq->ifcq_disc_slots[SCIDX_BK].cl = cl1;
1115 ifq->ifcq_disc_slots[SCIDX_BE].cl = cl2;
1118 ifq->ifcq_disc_slots[SCIDX_RD].cl = cl3;
1121 ifq->ifcq_disc_slots[SCIDX_OAM].cl = cl4;
1124 ifq->ifcq_disc_slots[SCIDX_AV].cl = cl5;
1127 ifq->ifcq_disc_slots[SCIDX_RV].cl = cl6;
1130 ifq->ifcq_disc_slots[SCIDX_VI].cl = cl7;
1133 ifq->ifcq_disc_slots[SCIDX_VO].cl = cl8;
1136 ifq->ifcq_disc_slots[SCIDX_CTL].cl = cl9;
1160 ifq->ifcq_disc_slots[i].cl = NULL;
1186 struct priq_class *cl;
1201 cl = ifq->ifcq_disc_slots[SCIDX_BK_SYS].cl;
1205 err = priq_resumeq(pif, cl);
1209 err = priq_suspendq(pif, cl);
1228 priq_purgeq(pif, cl, 0, NULL, NULL);
1239 priq_resumeq(struct priq_if *pif, struct priq_class *cl)
1247 if (q_is_rio(&cl->cl_q))
1248 err = rio_suspendq(cl->cl_rio, &cl->cl_q, FALSE);
1252 if (q_is_red(&cl->cl_q))
1253 err = red_suspendq(cl->cl_red, &cl->cl_q, FALSE);
1257 if (q_is_blue(&cl->cl_q))
1258 err = blue_suspendq(cl->cl_blue, &cl->cl_q, FALSE);
1261 if (q_is_sfb(&cl->cl_q) && cl->cl_sfb != NULL)
1262 err = sfb_suspendq(cl->cl_sfb, &cl->cl_q, FALSE);
1265 qstate(&cl->cl_q) = QS_RUNNING;
1271 priq_suspendq(struct priq_if *pif, struct priq_class *cl)
1279 if (q_is_rio(&cl->cl_q))
1280 err = rio_suspendq(cl->cl_rio, &cl->cl_q, TRUE);
1284 if (q_is_red(&cl->cl_q))
1285 err = red_suspendq(cl->cl_red, &cl->cl_q, TRUE);
1289 if (q_is_blue(&cl->cl_q))
1290 err = blue_suspendq(cl->cl_blue, &cl->cl_q, TRUE);
1293 if (q_is_sfb(&cl->cl_q)) {
1294 if (cl->cl_sfb != NULL) {
1295 err = sfb_suspendq(cl->cl_sfb, &cl->cl_q, TRUE);
1297 VERIFY(cl->cl_flags & PRCF_LAZY);
1303 qstate(&cl->cl_q) = QS_SUSPENDED;