Lines Matching defs:cl

167 	struct priq_class *cl;
182 cl = priq_class_create(pif, a->priority, a->qlimit,
184 if (cl == NULL)
194 struct priq_class *cl;
199 if ((cl = clh_to_clp(pif, a->qid)) == NULL)
202 return priq_class_destroy(cl);
209 struct priq_class *cl;
216 if ((cl = clh_to_clp(pif, a->qid)) == NULL)
223 get_class_stats(&stats, cl);
239 struct priq_class *cl;
249 if ((cl = pif->pif_classes[pri]) != NULL)
250 priq_class_destroy(cl);
272 struct priq_class *cl;
276 if ((cl = pif->pif_classes[pri]) != NULL && !qempty(cl->cl_q))
277 priq_purgeq(cl);
286 struct priq_class *cl;
298 if ((cl = pif->pif_classes[pri]) != NULL) {
301 if (!qempty(cl->cl_q))
302 priq_purgeq(cl);
305 if (q_is_rio(cl->cl_q))
306 rio_destroy((rio_t *)cl->cl_red);
309 if (q_is_red(cl->cl_q))
310 red_destroy(cl->cl_red);
313 cl = malloc(sizeof(struct priq_class), M_DEVBUF,
315 if (cl == NULL)
318 cl->cl_q = malloc(sizeof(class_queue_t), M_DEVBUF,
320 if (cl->cl_q == NULL) {
321 free(cl, M_DEVBUF);
326 pif->pif_classes[pri] = cl;
328 pif->pif_default = cl;
331 qlimit(cl->cl_q) = qlimit;
332 qtype(cl->cl_q) = Q_DROPTAIL;
333 qlen(cl->cl_q) = 0;
334 cl->cl_flags = flags;
335 cl->cl_pri = pri;
338 cl->cl_pif = pif;
339 cl->cl_handle = qid;
359 cl->cl_red = (red_t *)rio_alloc(0, NULL,
361 if (cl->cl_red != NULL)
362 qtype(cl->cl_q) = Q_RIO;
366 cl->cl_red = red_alloc(0, 0,
367 qlimit(cl->cl_q) * 10/100,
368 qlimit(cl->cl_q) * 30/100,
370 if (cl->cl_red != NULL)
371 qtype(cl->cl_q) = Q_RED;
376 return cl;
380 priq_class_destroy(struct priq_class *cl)
389 acc_discard_filters(&cl->cl_pif->pif_classifier, cl, 0);
392 if (!qempty(cl->cl_q))
393 priq_purgeq(cl);
395 pif = cl->cl_pif;
396 pif->pif_classes[cl->cl_pri] = NULL;
397 if (pif->pif_maxpri == cl->cl_pri) {
398 for (pri = cl->cl_pri; pri >= 0; pri--)
408 if (cl->cl_red != NULL) {
410 if (q_is_rio(cl->cl_q))
411 rio_destroy((rio_t *)cl->cl_red);
414 if (q_is_red(cl->cl_q))
415 red_destroy(cl->cl_red);
418 free(cl->cl_q, M_DEVBUF);
419 free(cl, M_DEVBUF);
432 struct priq_class *cl;
444 cl = NULL;
446 cl = clh_to_clp(pif, ((struct altq_tag *)(t+1))->qid);
449 cl = m->m_pkthdr.pattr_class;
451 if (cl == NULL) {
452 cl = pif->pif_default;
453 if (cl == NULL) {
464 cl->cl_pktattr = &pktattr; /* save proto hdr used by ECN */
467 cl->cl_pktattr = NULL;
469 if (priq_addq(cl, m) != 0) {
471 PKTCNTR_ADD(&cl->cl_dropcnt, len);
493 struct priq_class *cl;
502 if ((cl = pif->pif_classes[pri]) != NULL &&
503 !qempty(cl->cl_q)) {
505 return priq_pollq(cl);
507 m = priq_getq(cl);
510 if (qempty(cl->cl_q))
511 cl->cl_period++;
512 PKTCNTR_ADD(&cl->cl_xmitcnt, m_pktlen(m));
521 priq_addq(struct priq_class *cl, struct mbuf *m)
525 if (q_is_rio(cl->cl_q))
526 return rio_addq((rio_t *)cl->cl_red, cl->cl_q, m,
527 cl->cl_pktattr);
530 if (q_is_red(cl->cl_q))
531 return red_addq(cl->cl_red, cl->cl_q, m, cl->cl_pktattr);
533 if (qlen(cl->cl_q) >= qlimit(cl->cl_q)) {
538 if (cl->cl_flags & PRCF_CLEARDSCP)
539 write_dsfield(m, cl->cl_pktattr, 0);
541 _addq(cl->cl_q, m);
547 priq_getq(struct priq_class *cl)
550 if (q_is_rio(cl->cl_q))
551 return rio_getq((rio_t *)cl->cl_red, cl->cl_q);
554 if (q_is_red(cl->cl_q))
555 return red_getq(cl->cl_red, cl->cl_q);
557 return _getq(cl->cl_q);
561 priq_pollq(struct priq_class *cl)
563 return qhead(cl->cl_q);
567 priq_purgeq(struct priq_class *cl)
571 if (qempty(cl->cl_q))
574 while ((m = _getq(cl->cl_q)) != NULL) {
575 PKTCNTR_ADD(&cl->cl_dropcnt, m_pktlen(m));
578 ASSERT(qlen(cl->cl_q) == 0);
582 get_class_stats(struct priq_classstats *sp, struct priq_class *cl)
584 sp->class_handle = cl->cl_handle;
585 sp->qlength = qlen(cl->cl_q);
586 sp->qlimit = qlimit(cl->cl_q);
587 sp->period = cl->cl_period;
588 sp->xmitcnt = cl->cl_xmitcnt;
589 sp->dropcnt = cl->cl_dropcnt;
591 sp->qtype = qtype(cl->cl_q);
593 if (q_is_red(cl->cl_q))
594 red_getstats(cl->cl_red, &sp->red[0]);
597 if (q_is_rio(cl->cl_q))
598 rio_getstats((rio_t *)cl->cl_red, &sp->red[0]);
607 struct priq_class *cl;
614 if ((cl = pif->pif_classes[idx]) != NULL &&
615 cl->cl_handle == chandle)
616 return cl;
841 struct priq_class *cl;
853 if ((cl = priq_class_create(pif, ap->pri,
858 ap->class_handle = cl->cl_handle;
867 struct priq_class *cl;
872 if ((cl = clh_to_clp(pif, ap->class_handle)) == NULL)
875 return priq_class_destroy(cl);
882 struct priq_class *cl;
890 if ((cl = clh_to_clp(pif, ap->class_handle)) == NULL)
896 if (pif->pif_classes[ap->pri] != cl) {
899 pif->pif_classes[cl->cl_pri] = NULL;
900 pif->pif_classes[ap->pri] = cl;
901 cl->cl_pri = ap->pri;
905 if ((cl = priq_class_create(pif, ap->pri,
915 struct priq_class *cl;
920 if ((cl = clh_to_clp(pif, ap->class_handle)) == NULL)
924 cl, &ap->filter_handle);
943 struct priq_class *cl;
955 cl = pif->pif_classes[pri];
957 if (cl != NULL)
958 get_class_stats(&stats, cl);