Lines Matching refs:pq

61 pktq_penq(struct pktq *pq, int prec, void *p)  in pktq_penq()  argument
66 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_penq()
69 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_penq()
72 ASSERT(!pktq_full(pq)); in pktq_penq()
73 ASSERT(!pktqprec_full(pq, prec)); in pktq_penq()
75 q = &pq->q[prec]; in pktq_penq()
85 pq->n_pkts_tot++; in pktq_penq()
87 if (pq->hi_prec < prec) in pktq_penq()
88 pq->hi_prec = (uint8)prec; in pktq_penq()
91 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_penq()
131 pktq_penq_head(struct pktq *pq, int prec, void *p) in pktq_penq_head() argument
136 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_penq_head()
139 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_penq_head()
142 ASSERT(!pktq_full(pq)); in pktq_penq_head()
143 ASSERT(!pktqprec_full(pq, prec)); in pktq_penq_head()
145 q = &pq->q[prec]; in pktq_penq_head()
154 pq->n_pkts_tot++; in pktq_penq_head()
156 if (pq->hi_prec < prec) in pktq_penq_head()
157 pq->hi_prec = (uint8)prec; in pktq_penq_head()
160 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_penq_head()
196 pktq_pdeq(struct pktq *pq, int prec) in pktq_pdeq() argument
202 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_pdeq()
205 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_pdeq()
207 q = &pq->q[prec]; in pktq_pdeq()
217 pq->n_pkts_tot--; in pktq_pdeq()
227 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_pdeq()
268 pktq_pdeq_tail(struct pktq *pq, int prec) in pktq_pdeq_tail() argument
274 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_pdeq_tail()
277 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_pdeq_tail()
279 q = &pq->q[prec]; in pktq_pdeq_tail()
295 pq->n_pkts_tot--; in pktq_pdeq_tail()
302 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_pdeq_tail()
346 pktq_peek_tail(struct pktq *pq, int *prec_out) in pktq_peek_tail() argument
352 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_peek_tail()
355 if (pq->n_pkts_tot == 0) in pktq_peek_tail()
358 for (prec = 0; prec < pq->hi_prec; prec++) in pktq_peek_tail()
359 if (pq->q[prec].head) in pktq_peek_tail()
365 p = pq->q[prec].tail; in pktq_peek_tail()
369 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_peek_tail()
379 pktq_append(struct pktq *pq, int prec, struct spktq *list) in pktq_append() argument
385 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_append()
394 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_append()
397 ASSERT(!pktq_full(pq)); in pktq_append()
398 ASSERT(!pktqprec_full(pq, prec)); in pktq_append()
400 q = &pq->q[prec]; in pktq_append()
409 pq->n_pkts_tot += list_q->n_pkts; in pktq_append()
411 if (pq->hi_prec < prec) in pktq_append()
412 pq->hi_prec = (uint8)prec; in pktq_append()
424 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_append()
479 pktq_prepend(struct pktq *pq, int prec, struct spktq *list) in pktq_prepend() argument
485 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_prepend()
494 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_prepend()
497 ASSERT(!pktq_full(pq)); in pktq_prepend()
498 ASSERT(!pktqprec_full(pq, prec)); in pktq_prepend()
500 q = &pq->q[prec]; in pktq_prepend()
515 pq->n_pkts_tot += list_q->n_pkts; in pktq_prepend()
517 if (pq->hi_prec < prec) in pktq_prepend()
518 pq->hi_prec = (uint8)prec; in pktq_prepend()
530 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_prepend()
588 pktq_pdeq_prev(struct pktq *pq, int prec, void *prev_p) in pktq_pdeq_prev() argument
594 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_pdeq_prev()
597 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_pdeq_prev()
599 q = &pq->q[prec]; in pktq_pdeq_prev()
609 pq->n_pkts_tot--; in pktq_pdeq_prev()
619 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_pdeq_prev()
626 pktq_pdeq_with_fn(struct pktq *pq, int prec, ifpkt_cb_t fn, int arg) in pktq_pdeq_with_fn() argument
632 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_pdeq_with_fn()
635 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_pdeq_with_fn()
637 q = &pq->q[prec]; in pktq_pdeq_with_fn()
664 pq->n_pkts_tot--; in pktq_pdeq_with_fn()
673 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_pdeq_with_fn()
680 pktq_pdel(struct pktq *pq, void *pktbuf, int prec) in pktq_pdel() argument
687 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_pdel()
690 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_pdel()
696 q = &pq->q[prec]; in pktq_pdel()
713 pq->n_pkts_tot--; in pktq_pdel()
724 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_pdel()
731 _pktq_pfilter(struct pktq *pq, int prec, pktq_filter_t fltr, void* fltr_ctx, in _pktq_pfilter() argument
739 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in _pktq_pfilter()
743 q = &pq->q[prec]; in _pktq_pfilter()
755 pq->n_pkts_tot -= wq.n_pkts; in _pktq_pfilter()
758 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in _pktq_pfilter()
777 pktq_penq(pq, prec, p); in _pktq_pfilter()
800 pktq_pfilter(struct pktq *pq, int prec, pktq_filter_t fltr, void* fltr_ctx, in pktq_pfilter() argument
803 _pktq_pfilter(pq, prec, fltr, fltr_ctx, defer, defer_ctx); in pktq_pfilter()
810 pktq_filter(struct pktq *pq, pktq_filter_t fltr, void* fltr_ctx, in pktq_filter() argument
816 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_filter()
822 if (pq->n_pkts_tot > 0) { in pktq_filter()
827 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_filter()
833 PKTQ_PREC_ITER(pq, prec) { in pktq_filter()
834 _pktq_pfilter(pq, prec, fltr, fltr_ctx, defer, defer_ctx); in pktq_filter()
919 pktq_init(struct pktq *pq, int num_prec, int max_pkts) in pktq_init() argument
926 bzero(pq, OFFSETOF(struct pktq, q) + (sizeof(struct pktq_prec) * num_prec)); in pktq_init()
928 if (HND_PKTQ_MUTEX_CREATE("pktq", &pq->mutex) != OSL_EXT_SUCCESS) in pktq_init()
931 pq->num_prec = (uint16)num_prec; in pktq_init()
933 pq->max_pkts = (uint16)max_pkts; in pktq_init()
936 pq->q[prec].max_pkts = pq->max_pkts; in pktq_init()
955 pktq_deinit(struct pktq *pq) in pktq_deinit() argument
957 BCM_REFERENCE(pq); in pktq_deinit()
958 if (HND_PKTQ_MUTEX_DELETE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_deinit()
975 pktq_set_max_plen(struct pktq *pq, int prec, int max_pkts) in pktq_set_max_plen() argument
977 ASSERT(prec >= 0 && prec < pq->num_prec); in pktq_set_max_plen()
980 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_set_max_plen()
983 if (prec < pq->num_prec) in pktq_set_max_plen()
984 pq->q[prec].max_pkts = (uint16)max_pkts; in pktq_set_max_plen()
987 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_set_max_plen()
992 pktq_deq(struct pktq *pq, int *prec_out) in pktq_deq() argument
999 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_deq()
1002 if (pq->n_pkts_tot == 0) in pktq_deq()
1005 while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL) in pktq_deq()
1006 pq->hi_prec--; in pktq_deq()
1008 q = &pq->q[prec]; in pktq_deq()
1018 pq->n_pkts_tot--; in pktq_deq()
1031 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_deq()
1038 pktq_deq_tail(struct pktq *pq, int *prec_out) in pktq_deq_tail() argument
1045 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_deq_tail()
1048 if (pq->n_pkts_tot == 0) in pktq_deq_tail()
1051 for (prec = 0; prec < pq->hi_prec; prec++) in pktq_deq_tail()
1052 if (pq->q[prec].head) in pktq_deq_tail()
1055 q = &pq->q[prec]; in pktq_deq_tail()
1071 pq->n_pkts_tot--; in pktq_deq_tail()
1084 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_deq_tail()
1091 pktq_peek(struct pktq *pq, int *prec_out) in pktq_peek() argument
1097 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_peek()
1100 if (pq->n_pkts_tot == 0) in pktq_peek()
1103 while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL) in pktq_peek()
1104 pq->hi_prec--; in pktq_peek()
1109 p = pq->q[prec].head; in pktq_peek()
1113 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_peek()
1142 pktq_pflush(osl_t *osh, struct pktq *pq, int prec, bool dir) in pktq_pflush() argument
1149 while ((p = pktq_pdeq(pq, prec)) != NULL) { in pktq_pflush()
1172 pktq_flush(osl_t *osh, struct pktq *pq, bool dir) in pktq_flush() argument
1177 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_flush()
1183 if (pq->n_pkts_tot > 0) { in pktq_flush()
1188 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_flush()
1194 PKTQ_PREC_ITER(pq, prec) { in pktq_flush()
1195 pktq_pflush(osh, pq, prec, dir); in pktq_flush()
1202 pktq_mlen(struct pktq *pq, uint prec_bmp) in pktq_mlen() argument
1207 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_mlen()
1212 for (prec = 0; prec <= pq->hi_prec; prec++) in pktq_mlen()
1214 len += pq->q[prec].n_pkts; in pktq_mlen()
1217 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_mlen()
1225 pktq_mpeek(struct pktq *pq, uint prec_bmp, int *prec_out) in pktq_mpeek() argument
1232 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_mpeek()
1235 if (pq->n_pkts_tot == 0) in pktq_mpeek()
1238 while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL) in pktq_mpeek()
1239 pq->hi_prec--; in pktq_mpeek()
1241 while ((prec_bmp & (1 << prec)) == 0 || pq->q[prec].head == NULL) in pktq_mpeek()
1245 q = &pq->q[prec]; in pktq_mpeek()
1255 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_mpeek()
1262 pktq_mdeq(struct pktq *pq, uint prec_bmp, int *prec_out) in pktq_mdeq() argument
1269 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_mdeq()
1272 if (pq->n_pkts_tot == 0) in pktq_mdeq()
1275 while ((prec = pq->hi_prec) > 0 && pq->q[prec].head == NULL) in pktq_mdeq()
1276 pq->hi_prec--; in pktq_mdeq()
1278 while ((pq->q[prec].head == NULL) || ((prec_bmp & (1 << prec)) == 0)) in pktq_mdeq()
1282 q = &pq->q[prec]; in pktq_mdeq()
1299 pq->n_pkts_tot--; in pktq_mdeq()
1305 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_mdeq()
1313 pktqprec_avail_pkts(struct pktq *pq, int prec) in pktqprec_avail_pkts() argument
1318 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktqprec_avail_pkts()
1321 ASSERT(prec >= 0 && prec < pq->num_prec); in pktqprec_avail_pkts()
1323 ret = pq->q[prec].max_pkts - pq->q[prec].n_pkts; in pktqprec_avail_pkts()
1326 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktqprec_avail_pkts()
1333 pktqprec_full(struct pktq *pq, int prec) in pktqprec_full() argument
1338 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktqprec_full()
1341 ASSERT(prec >= 0 && prec < pq->num_prec); in pktqprec_full()
1343 ret = pq->q[prec].n_pkts >= pq->q[prec].max_pkts; in pktqprec_full()
1346 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktqprec_full()
1353 pktq_avail(struct pktq *pq) in pktq_avail() argument
1358 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_avail()
1361 ret = pq->max_pkts - pq->n_pkts_tot; in pktq_avail()
1364 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_avail()
1389 pktq_full(struct pktq *pq) in pktq_full() argument
1394 if (HND_PKTQ_MUTEX_ACQUIRE(&pq->mutex, OSL_EXT_TIME_FOREVER) != OSL_EXT_SUCCESS) in pktq_full()
1397 ret = pq->n_pkts_tot >= pq->max_pkts; in pktq_full()
1400 if (HND_PKTQ_MUTEX_RELEASE(&pq->mutex) != OSL_EXT_SUCCESS) in pktq_full()