aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/cxgb4/t4.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/cxgb4/t4.h')
-rw-r--r--drivers/infiniband/hw/cxgb4/t4.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/cxgb4/t4.h b/drivers/infiniband/hw/cxgb4/t4.h
index df5edfa31a8f..c04e5134b30c 100644
--- a/drivers/infiniband/hw/cxgb4/t4.h
+++ b/drivers/infiniband/hw/cxgb4/t4.h
@@ -524,6 +524,10 @@ static inline int t4_wq_db_enabled(struct t4_wq *wq)
524 return !wq->rq.queue[wq->rq.size].status.db_off; 524 return !wq->rq.queue[wq->rq.size].status.db_off;
525} 525}
526 526
527enum t4_cq_flags {
528 CQ_ARMED = 1,
529};
530
527struct t4_cq { 531struct t4_cq {
528 struct t4_cqe *queue; 532 struct t4_cqe *queue;
529 dma_addr_t dma_addr; 533 dma_addr_t dma_addr;
@@ -544,12 +548,19 @@ struct t4_cq {
544 u16 cidx_inc; 548 u16 cidx_inc;
545 u8 gen; 549 u8 gen;
546 u8 error; 550 u8 error;
551 unsigned long flags;
547}; 552};
548 553
554static inline int t4_clear_cq_armed(struct t4_cq *cq)
555{
556 return test_and_clear_bit(CQ_ARMED, &cq->flags);
557}
558
549static inline int t4_arm_cq(struct t4_cq *cq, int se) 559static inline int t4_arm_cq(struct t4_cq *cq, int se)
550{ 560{
551 u32 val; 561 u32 val;
552 562
563 set_bit(CQ_ARMED, &cq->flags);
553 while (cq->cidx_inc > CIDXINC_MASK) { 564 while (cq->cidx_inc > CIDXINC_MASK) {
554 val = SEINTARM(0) | CIDXINC(CIDXINC_MASK) | TIMERREG(7) | 565 val = SEINTARM(0) | CIDXINC(CIDXINC_MASK) | TIMERREG(7) |
555 INGRESSQID(cq->cqid); 566 INGRESSQID(cq->cqid);