Lines Matching refs:cbqp

132 	cbq_state_t	*cbqp;
135 cbqp = (how == M_WAITOK) ? zalloc(cbq_zone) : zalloc_noblock(cbq_zone);
136 if (cbqp == NULL)
139 bzero(cbqp, cbq_size);
140 CALLOUT_INIT(&cbqp->cbq_callout);
141 cbqp->cbq_qlen = 0;
142 cbqp->ifnp.ifq_ = &ifp->if_snd; /* keep the ifclassq */
144 cbqp->cbq_flags |= CBQSF_ALTQ;
148 if_name(ifp), cbq_style(cbqp));
151 return (cbqp);
155 cbq_destroy(cbq_state_t *cbqp)
157 struct ifclassq *ifq = cbqp->ifnp.ifq_;
161 err = cbq_destroy_locked(cbqp);
168 cbq_destroy_locked(cbq_state_t *cbqp)
170 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
172 (void) cbq_clear_interface(cbqp);
176 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
179 if (cbqp->ifnp.default_)
180 cbq_class_destroy(cbqp, cbqp->ifnp.default_);
181 if (cbqp->ifnp.root_)
182 cbq_class_destroy(cbqp, cbqp->ifnp.root_);
185 zfree(cbq_zone, cbqp);
191 cbq_add_queue(cbq_state_t *cbqp, u_int32_t qlimit, u_int32_t priority,
202 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
205 if (cbqp->cbq_flags & CBQSF_ALTQ)
214 if (cbqp->cbq_class_tbl[i] != NULL) {
216 if (cbqp->cbq_class_tbl[i] == NULL)
228 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
233 parent = cbq_clh_to_clp(cbqp, parent_qid);
245 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
251 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
262 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
265 if (cbqp->ifnp.root_) {
267 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
272 if (cbqp->ifnp.default_) {
274 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp));
283 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp),
293 error = rmc_init(cbqp->ifnp.ifq_, &cbqp->ifnp, ns_per_byte,
298 cl = cbqp->ifnp.root_;
300 cl = rmc_newclass(priority, &cbqp->ifnp, ns_per_byte,
312 cbqp->cbq_class_tbl[i] = cl;
315 cbqp->ifnp.default_ = cl;
322 "flags=%b\n", if_name(CBQS_IFP(cbqp)), cbq_style(cbqp),
330 cbq_remove_queue(cbq_state_t *cbqp, u_int32_t qid)
335 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
337 if ((cl = cbq_clh_to_clp(cbqp, qid)) == NULL)
345 rmc_delete_class(&cbqp->ifnp, cl);
351 if (cbqp->cbq_class_tbl[i] == cl) {
352 cbqp->cbq_class_tbl[i] = NULL;
353 if (cl == cbqp->ifnp.root_)
354 cbqp->ifnp.root_ = NULL;
355 if (cl == cbqp->ifnp.default_)
356 cbqp->ifnp.default_ = NULL;
370 cbq_class_destroy(cbq_state_t *cbqp, struct rm_class *cl)
374 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
378 if_name(CBQS_IFP(cbqp)), cbq_style(cbqp),
383 rmc_delete_class(&cbqp->ifnp, cl);
389 if (cbqp->cbq_class_tbl[i] == cl)
390 cbqp->cbq_class_tbl[i] = NULL;
392 if (cl == cbqp->ifnp.root_)
393 cbqp->ifnp.root_ = NULL;
394 if (cl == cbqp->ifnp.default_)
395 cbqp->ifnp.default_ = NULL;
402 cbq_clh_to_clp(cbq_state_t *cbqp, u_int32_t chandle)
407 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
414 if ((cl = cbqp->cbq_class_tbl[i]) != NULL &&
418 if ((cl = cbqp->cbq_class_tbl[i]) != NULL &&
425 cbq_style(cbq_state_t *cbqp)
427 return ((cbqp->cbq_flags & CBQSF_ALTQ) ? "ALTQ_CBQ" : "CBQ");
431 cbq_clear_interface(cbq_state_t *cbqp)
436 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
442 if ((cl = cbqp->cbq_class_tbl[i]) != NULL) {
446 cbq_class_destroy(cbqp, cl);
447 cbqp->cbq_class_tbl[i] = NULL;
448 if (cl == cbqp->ifnp.root_)
449 cbqp->ifnp.root_ = NULL;
450 if (cl == cbqp->ifnp.default_)
451 cbqp->ifnp.default_ = NULL;
462 cbq_get_class_stats(cbq_state_t *cbqp, u_int32_t qid, class_stats_t *statsp)
466 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
468 if ((cl = cbq_clh_to_clp(cbqp, qid)) == NULL)
510 cbq_enqueue(cbq_state_t *cbqp, struct rm_class *cl, struct mbuf *m,
513 struct ifclassq *ifq = cbqp->ifnp.ifq_;
529 cl = cbq_clh_to_clp(cbqp, t->pftag_qid);
531 cl = cbqp->ifnp.default_;
567 ++cbqp->cbq_qlen;
574 cbq_dequeue(cbq_state_t *cbqp, cqdq_op_t op)
576 struct ifclassq *ifq = cbqp->ifnp.ifq_;
581 m = rmc_dequeue_next(&cbqp->ifnp, op);
584 --cbqp->cbq_qlen; /* decrement # of packets in cbq */
589 rmc_update_class_util(&cbqp->ifnp);
616 cbq_purge(cbq_state_t *cbqp)
621 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
624 if ((cl = cbqp->cbq_class_tbl[i]) != NULL) {
627 "qlen=%d\n", if_name(CBQS_IFP(cbqp)),
628 cbq_style(cbqp), cl->stats_.handle,
637 cbq_event(cbq_state_t *cbqp, cqev_t ev)
642 IFCQ_LOCK_ASSERT_HELD(cbqp->ifnp.ifq_);
645 if ((cl = cbqp->cbq_class_tbl[i]) != NULL) {
648 "event=%s\n", if_name(CBQS_IFP(cbqp)),
649 cbq_style(cbqp), cl->stats_.handle,
667 cbq_state_t *cbqp = ifq->ifcq_disc;
671 VERIFY(cbqp != NULL && ifq->ifcq_type == PKTSCHEDT_CBQ);
673 (void) cbq_destroy_locked(cbqp);
688 cbq_state_t *cbqp = ifq->ifcq_disc;
696 return (cbq_get_class_stats(cbqp, ifq->ifcq_disc_slots[slot].qid,