Home | History | Annotate | Download | only in net

Lines Matching defs:pq

132 	struct pktqueue *pq = vpq;
134 *qp = pcq_create(pq->pq_maxlen, KM_SLEEP);
148 pktq_pcq(struct pktqueue *pq, struct cpu_info *ci)
158 qp = percpu_getptr_remote(pq->pq_pcq, ci);
168 pktqueue_t *pq;
180 pq = kmem_zalloc(sizeof(*pq), KM_SLEEP);
181 mutex_init(&pq->pq_lock, MUTEX_DEFAULT, IPL_NONE);
182 pq->pq_maxlen = maxlen;
183 pq->pq_counters = pc;
184 pq->pq_sih = sih;
185 pq->pq_pcq = percpu_create(sizeof(struct pcq *),
186 pktq_init_cpu, pktq_fini_cpu, pq);
189 LIST_INSERT_HEAD(&pktqueue_list, pq, pq_list);
192 return pq;
196 pktq_destroy(pktqueue_t *pq)
202 LIST_REMOVE(pq, pq_list);
205 percpu_free(pq->pq_pcq, sizeof(struct pcq *));
206 percpu_free(pq->pq_counters, sizeof(pktq_counters_t));
207 softint_disestablish(pq->pq_sih);
208 mutex_destroy(&pq->pq_lock);
209 kmem_free(pq, sizeof(*pq));
219 pktq_inc_count(pktqueue_t *pq, u_int i)
221 percpu_t *pc = pq->pq_counters;
245 pktq_get_count(pktqueue_t *pq, pktq_count_t c)
251 percpu_foreach_xcall(pq->pq_counters,
260 return pq->pq_maxlen;
416 pktq_enqueue(pktqueue_t *pq, struct mbuf *m, const u_int hash __unused)
426 if (__predict_false(!pcq_put(pktq_pcq(pq, ci), m))) {
427 pktq_inc_count(pq, PQCNT_DROP);
430 softint_schedule_cpu(pq->pq_sih, ci);
431 pktq_inc_count(pq, PQCNT_ENQUEUE);
442 pktq_dequeue(pktqueue_t *pq)
449 m = pcq_get(pktq_pcq(pq, ci));
452 atomic_inc_uint(&pq->pq_barrier);
455 m = pcq_get(pktq_pcq(pq, ci));
465 pktq_inc_count(pq, PQCNT_DEQUEUE);
476 pktq_barrier(pktqueue_t *pq)
482 mutex_enter(&pq->pq_lock);
483 KASSERT(pq->pq_barrier == 0);
489 q = pktq_pcq(pq, ci);
501 softint_schedule_cpu(pq->pq_sih, ci);
507 while (pq->pq_barrier != pending) {
510 pq->pq_barrier = 0;
511 mutex_exit(&pq->pq_lock);
521 pktqueue_t *pq;
527 LIST_FOREACH(pq, &pktqueue_list, pq_list) {
528 pktq_barrier(pq);
539 pktq_flush(pktqueue_t *pq)
559 mutex_enter(&pq->pq_lock);
565 q = pktq_pcq(pq, ci);
573 pktq_inc_count(pq, PQCNT_DEQUEUE);
579 mutex_exit(&pq->pq_lock);
591 struct pktqueue *pq = vpq;
597 qp = percpu_getref(pq->pq_pcq);
601 percpu_putref(pq->pq_pcq);
612 pktq_set_maxlen(pktqueue_t *pq, size_t maxlen)
619 if (pq->pq_maxlen == maxlen)
632 mutex_enter(&pq->pq_lock);
633 xc_wait(xc_broadcast(XC_HIGHPRI, pktq_set_maxlen_cpu, pq, qs));
634 pq->pq_maxlen = maxlen;
635 mutex_exit(&pq->pq_lock);
649 pktq_barrier(pq);
656 q = pktq_pcq(pq, cpu_lookup(i));
676 pktqueue_t * const pq = node.sysctl_data;
677 u_int nmaxlen = pktq_get_count(pq, PKTQ_MAXLEN);
684 return pktq_set_maxlen(pq, nmaxlen);
691 pktqueue_t * const pq
692 uint64_t count = pktq_get_count(pq, count_id);
716 pktq_sysctl_setup(pktqueue_t * const pq, struct sysctllog ** const clog,
721 KASSERT(pq != NULL);
740 sysctl_pktq_nitems, 0, (void *)pq, 0,
746 sysctl_pktq_maxlen, 0, (void *)pq, 0,
752 sysctl_pktq_drops, 0, (void *)pq, 0,