Lines Matching refs:q
36 void *c2_mq_alloc(struct c2_mq *q) in c2_mq_alloc() argument
38 BUG_ON(q->magic != C2_MQ_MAGIC); in c2_mq_alloc()
39 BUG_ON(q->type != C2_MQ_ADAPTER_TARGET); in c2_mq_alloc()
41 if (c2_mq_full(q)) { in c2_mq_alloc()
46 (struct c2wr_hdr *) (q->msg_pool.host + q->priv * q->msg_size); in c2_mq_alloc()
53 return q->msg_pool.host + q->priv * q->msg_size; in c2_mq_alloc()
58 void c2_mq_produce(struct c2_mq *q) in c2_mq_produce() argument
60 BUG_ON(q->magic != C2_MQ_MAGIC); in c2_mq_produce()
61 BUG_ON(q->type != C2_MQ_ADAPTER_TARGET); in c2_mq_produce()
63 if (!c2_mq_full(q)) { in c2_mq_produce()
64 q->priv = (q->priv + 1) % q->q_size; in c2_mq_produce()
65 q->hint_count++; in c2_mq_produce()
67 __raw_writew((__force u16) cpu_to_be16(q->priv), &q->peer->shared); in c2_mq_produce()
71 void *c2_mq_consume(struct c2_mq *q) in c2_mq_consume() argument
73 BUG_ON(q->magic != C2_MQ_MAGIC); in c2_mq_consume()
74 BUG_ON(q->type != C2_MQ_HOST_TARGET); in c2_mq_consume()
76 if (c2_mq_empty(q)) { in c2_mq_consume()
81 (q->msg_pool.host + q->priv * q->msg_size); in c2_mq_consume()
87 return q->msg_pool.host + q->priv * q->msg_size; in c2_mq_consume()
92 void c2_mq_free(struct c2_mq *q) in c2_mq_free() argument
94 BUG_ON(q->magic != C2_MQ_MAGIC); in c2_mq_free()
95 BUG_ON(q->type != C2_MQ_HOST_TARGET); in c2_mq_free()
97 if (!c2_mq_empty(q)) { in c2_mq_free()
102 (q->msg_pool.adapter + q->priv * q->msg_size); in c2_mq_free()
106 q->priv = (q->priv + 1) % q->q_size; in c2_mq_free()
108 __raw_writew((__force u16) cpu_to_be16(q->priv), &q->peer->shared); in c2_mq_free()
113 void c2_mq_lconsume(struct c2_mq *q, u32 wqe_count) in c2_mq_lconsume() argument
115 BUG_ON(q->magic != C2_MQ_MAGIC); in c2_mq_lconsume()
116 BUG_ON(q->type != C2_MQ_ADAPTER_TARGET); in c2_mq_lconsume()
119 BUG_ON(c2_mq_empty(q)); in c2_mq_lconsume()
120 *q->shared = cpu_to_be16((be16_to_cpu(*q->shared)+1) % q->q_size); in c2_mq_lconsume()
125 u32 c2_mq_count(struct c2_mq *q)
129 if (q->type == C2_MQ_HOST_TARGET)
130 count = be16_to_cpu(*q->shared) - q->priv;
132 count = q->priv - be16_to_cpu(*q->shared);
135 count += q->q_size;
141 void c2_mq_req_init(struct c2_mq *q, u32 index, u32 q_size, u32 msg_size, in c2_mq_req_init() argument
144 BUG_ON(!q->shared); in c2_mq_req_init()
147 q->index = index; in c2_mq_req_init()
148 q->q_size = q_size; in c2_mq_req_init()
149 q->msg_size = msg_size; in c2_mq_req_init()
150 q->msg_pool.adapter = pool_start; in c2_mq_req_init()
151 q->peer = (struct c2_mq_shared __iomem *) peer; in c2_mq_req_init()
152 q->magic = C2_MQ_MAGIC; in c2_mq_req_init()
153 q->type = type; in c2_mq_req_init()
154 q->priv = 0; in c2_mq_req_init()
155 q->hint_count = 0; in c2_mq_req_init()
158 void c2_mq_rep_init(struct c2_mq *q, u32 index, u32 q_size, u32 msg_size, in c2_mq_rep_init() argument
161 BUG_ON(!q->shared); in c2_mq_rep_init()
164 q->index = index; in c2_mq_rep_init()
165 q->q_size = q_size; in c2_mq_rep_init()
166 q->msg_size = msg_size; in c2_mq_rep_init()
167 q->msg_pool.host = pool_start; in c2_mq_rep_init()
168 q->peer = (struct c2_mq_shared __iomem *) peer; in c2_mq_rep_init()
169 q->magic = C2_MQ_MAGIC; in c2_mq_rep_init()
170 q->type = type; in c2_mq_rep_init()
171 q->priv = 0; in c2_mq_rep_init()
172 q->hint_count = 0; in c2_mq_rep_init()