Lines Matching refs:wq
367 static inline int t4_rqes_posted(struct t4_wq *wq) in t4_rqes_posted() argument
369 return wq->rq.in_use; in t4_rqes_posted()
372 static inline int t4_rq_empty(struct t4_wq *wq) in t4_rq_empty() argument
374 return wq->rq.in_use == 0; in t4_rq_empty()
377 static inline int t4_rq_full(struct t4_wq *wq) in t4_rq_full() argument
379 return wq->rq.in_use == (wq->rq.size - 1); in t4_rq_full()
382 static inline u32 t4_rq_avail(struct t4_wq *wq) in t4_rq_avail() argument
384 return wq->rq.size - 1 - wq->rq.in_use; in t4_rq_avail()
387 static inline void t4_rq_produce(struct t4_wq *wq, u8 len16) in t4_rq_produce() argument
389 wq->rq.in_use++; in t4_rq_produce()
390 if (++wq->rq.pidx == wq->rq.size) in t4_rq_produce()
391 wq->rq.pidx = 0; in t4_rq_produce()
392 wq->rq.wq_pidx += DIV_ROUND_UP(len16*16, T4_EQ_ENTRY_SIZE); in t4_rq_produce()
393 if (wq->rq.wq_pidx >= wq->rq.size * T4_RQ_NUM_SLOTS) in t4_rq_produce()
394 wq->rq.wq_pidx %= wq->rq.size * T4_RQ_NUM_SLOTS; in t4_rq_produce()
397 static inline void t4_rq_consume(struct t4_wq *wq) in t4_rq_consume() argument
399 wq->rq.in_use--; in t4_rq_consume()
400 wq->rq.msn++; in t4_rq_consume()
401 if (++wq->rq.cidx == wq->rq.size) in t4_rq_consume()
402 wq->rq.cidx = 0; in t4_rq_consume()
405 static inline u16 t4_rq_host_wq_pidx(struct t4_wq *wq) in t4_rq_host_wq_pidx() argument
407 return wq->rq.queue[wq->rq.size].status.host_wq_pidx; in t4_rq_host_wq_pidx()
410 static inline u16 t4_rq_wq_size(struct t4_wq *wq) in t4_rq_wq_size() argument
412 return wq->rq.size * T4_RQ_NUM_SLOTS; in t4_rq_wq_size()
420 static inline int t4_sq_empty(struct t4_wq *wq) in t4_sq_empty() argument
422 return wq->sq.in_use == 0; in t4_sq_empty()
425 static inline int t4_sq_full(struct t4_wq *wq) in t4_sq_full() argument
427 return wq->sq.in_use == (wq->sq.size - 1); in t4_sq_full()
430 static inline u32 t4_sq_avail(struct t4_wq *wq) in t4_sq_avail() argument
432 return wq->sq.size - 1 - wq->sq.in_use; in t4_sq_avail()
435 static inline void t4_sq_produce(struct t4_wq *wq, u8 len16) in t4_sq_produce() argument
437 wq->sq.in_use++; in t4_sq_produce()
438 if (++wq->sq.pidx == wq->sq.size) in t4_sq_produce()
439 wq->sq.pidx = 0; in t4_sq_produce()
440 wq->sq.wq_pidx += DIV_ROUND_UP(len16*16, T4_EQ_ENTRY_SIZE); in t4_sq_produce()
441 if (wq->sq.wq_pidx >= wq->sq.size * T4_SQ_NUM_SLOTS) in t4_sq_produce()
442 wq->sq.wq_pidx %= wq->sq.size * T4_SQ_NUM_SLOTS; in t4_sq_produce()
445 static inline void t4_sq_consume(struct t4_wq *wq) in t4_sq_consume() argument
447 BUG_ON(wq->sq.in_use < 1); in t4_sq_consume()
448 if (wq->sq.cidx == wq->sq.flush_cidx) in t4_sq_consume()
449 wq->sq.flush_cidx = -1; in t4_sq_consume()
450 wq->sq.in_use--; in t4_sq_consume()
451 if (++wq->sq.cidx == wq->sq.size) in t4_sq_consume()
452 wq->sq.cidx = 0; in t4_sq_consume()
455 static inline u16 t4_sq_host_wq_pidx(struct t4_wq *wq) in t4_sq_host_wq_pidx() argument
457 return wq->sq.queue[wq->sq.size].status.host_wq_pidx; in t4_sq_host_wq_pidx()
460 static inline u16 t4_sq_wq_size(struct t4_wq *wq) in t4_sq_wq_size() argument
462 return wq->sq.size * T4_SQ_NUM_SLOTS; in t4_sq_wq_size()
482 t4_ring_sq_db(struct t4_wq *wq, u16 inc, union t4_wr *wqe, u8 wc) in t4_ring_sq_db() argument
487 if (wc && inc == 1 && wq->sq.bar2_qid == 0 && wqe) { in t4_ring_sq_db()
489 __func__, wq->sq.pidx); in t4_ring_sq_db()
491 ((u64)wq->sq.bar2_va + SGE_UDB_WCDOORBELL), in t4_ring_sq_db()
495 __func__, wq->sq.pidx); in t4_ring_sq_db()
496 writel(V_PIDX_T5(inc) | V_QID(wq->sq.bar2_qid), in t4_ring_sq_db()
497 (void __iomem *)((u64)wq->sq.bar2_va + in t4_ring_sq_db()
507 t4_ring_rq_db(struct t4_wq *wq, u16 inc, union t4_recv_wr *wqe, u8 wc) in t4_ring_rq_db() argument
512 if (wc && inc == 1 && wq->rq.bar2_qid == 0 && wqe) { in t4_ring_rq_db()
514 __func__, wq->rq.pidx); in t4_ring_rq_db()
515 pio_copy((u64 __iomem *)((u64)wq->rq.bar2_va + in t4_ring_rq_db()
519 __func__, wq->rq.pidx); in t4_ring_rq_db()
520 writel(V_PIDX_T5(inc) | V_QID(wq->rq.bar2_qid), in t4_ring_rq_db()
521 (void __iomem *)((u64)wq->rq.bar2_va + in t4_ring_rq_db()
530 static inline int t4_wq_in_error(struct t4_wq *wq) in t4_wq_in_error() argument
532 return wq->rq.queue[wq->rq.size].status.qp_err; in t4_wq_in_error()
535 static inline void t4_set_wq_in_error(struct t4_wq *wq) in t4_set_wq_in_error() argument
537 wq->rq.queue[wq->rq.size].status.qp_err = 1; in t4_set_wq_in_error()