Lines Matching full:wr

97 	struct ionic_admin_wr *wr, *wr_next;  in ionic_admin_poll_locked()  local
108 list_for_each_entry_safe(wr, wr_next, &aq->wr_prod, aq_ent) { in ionic_admin_poll_locked()
109 INIT_LIST_HEAD(&wr->aq_ent); in ionic_admin_poll_locked()
110 aq->q_wr[wr->status].wr = NULL; in ionic_admin_poll_locked()
111 wr->status = atomic_read(&aq->admin_state); in ionic_admin_poll_locked()
112 complete_all(&wr->work); in ionic_admin_poll_locked()
116 list_for_each_entry_safe(wr, wr_next, &aq->wr_post, aq_ent) { in ionic_admin_poll_locked()
117 INIT_LIST_HEAD(&wr->aq_ent); in ionic_admin_poll_locked()
118 wr->status = atomic_read(&aq->admin_state); in ionic_admin_poll_locked()
119 complete_all(&wr->work); in ionic_admin_poll_locked()
159 wr = aq->q_wr[aq->q.cons].wr; in ionic_admin_poll_locked()
160 if (wr) { in ionic_admin_poll_locked()
161 aq->q_wr[aq->q.cons].wr = NULL; in ionic_admin_poll_locked()
162 list_del_init(&wr->aq_ent); in ionic_admin_poll_locked()
164 wr->cqe = *cqe; in ionic_admin_poll_locked()
165 wr->status = atomic_read(&aq->admin_state); in ionic_admin_poll_locked()
166 complete_all(&wr->work); in ionic_admin_poll_locked()
208 wr = list_first_entry(&aq->wr_post, struct ionic_admin_wr, in ionic_admin_poll_locked()
210 wr_strides = (le16_to_cpu(wr->wqe.len) + ADMIN_WQE_HDR_LEN + in ionic_admin_poll_locked()
217 list_move(&wr->aq_ent, &aq->wr_prod); in ionic_admin_poll_locked()
218 wr->status = aq->q.prod; in ionic_admin_poll_locked()
219 aq->q_wr[aq->q.prod].wr = wr; in ionic_admin_poll_locked()
222 src_len = le16_to_cpu(wr->wqe.len); in ionic_admin_poll_locked()
223 src = (uint8_t *)&wr->wqe.cmd; in ionic_admin_poll_locked()
226 memcpy(ionic_queue_at_prod(&aq->q), &wr->wqe, in ionic_admin_poll_locked()
329 static void ionic_admin_post_aq(struct ionic_aq *aq, struct ionic_admin_wr *wr) in ionic_admin_post_aq() argument
334 wr->status = IONIC_ADMIN_POSTED; in ionic_admin_post_aq()
335 wr->aq = aq; in ionic_admin_post_aq()
339 list_add(&wr->aq_ent, &aq->wr_post); in ionic_admin_post_aq()
345 void ionic_admin_post(struct ionic_ibdev *dev, struct ionic_admin_wr *wr) in ionic_admin_post() argument
351 ionic_admin_post_aq(dev->aq_vec[aq_idx], wr); in ionic_admin_post()
354 static void ionic_admin_cancel(struct ionic_admin_wr *wr) in ionic_admin_cancel() argument
356 struct ionic_aq *aq = wr->aq; in ionic_admin_cancel()
361 if (!list_empty(&wr->aq_ent)) { in ionic_admin_cancel()
362 list_del(&wr->aq_ent); in ionic_admin_cancel()
363 if (wr->status != IONIC_ADMIN_POSTED) in ionic_admin_cancel()
364 aq->q_wr[wr->status].wr = NULL; in ionic_admin_cancel()
370 static int ionic_admin_busy_wait(struct ionic_admin_wr *wr) in ionic_admin_busy_wait() argument
372 struct ionic_aq *aq = wr->aq; in ionic_admin_busy_wait()
377 if (completion_done(&wr->work)) in ionic_admin_busy_wait()
395 int ionic_admin_wait(struct ionic_ibdev *dev, struct ionic_admin_wr *wr, in ionic_admin_wait() argument
402 rc = ionic_admin_busy_wait(wr); in ionic_admin_wait()
409 timo = wait_for_completion_interruptible_timeout(&wr->work, in ionic_admin_wait()
425 wait_for_completion(&wr->work); in ionic_admin_wait()
431 ionic_admin_cancel(wr); in ionic_admin_wait()
432 } else if (wr->status == IONIC_ADMIN_KILLED) { in ionic_admin_wait()
437 } else if (ionic_v1_cqe_error(&wr->cqe)) { in ionic_admin_wait()
439 wr->wqe.op, in ionic_admin_wait()
440 be32_to_cpu(wr->cqe.status_length)); in ionic_admin_wait()