Lines Matching refs:req
204 struct ddcb_requ *req; in ddcb_requ_alloc() local
206 req = kzalloc(sizeof(*req), GFP_ATOMIC); in ddcb_requ_alloc()
207 if (!req) in ddcb_requ_alloc()
210 return &req->cmd; in ddcb_requ_alloc()
215 struct ddcb_requ *req = container_of(cmd, struct ddcb_requ, cmd); in ddcb_requ_free() local
217 kfree(req); in ddcb_requ_free()
220 static inline enum genwqe_requ_state ddcb_requ_get_state(struct ddcb_requ *req) in ddcb_requ_get_state() argument
222 return req->req_state; in ddcb_requ_get_state()
225 static inline void ddcb_requ_set_state(struct ddcb_requ *req, in ddcb_requ_set_state() argument
228 req->req_state = new_state; in ddcb_requ_set_state()
231 static inline int ddcb_requ_collect_debug_data(struct ddcb_requ *req) in ddcb_requ_collect_debug_data() argument
233 return req->cmd.ddata_addr != 0x0; in ddcb_requ_collect_debug_data()
250 static int ddcb_requ_finished(struct genwqe_dev *cd, struct ddcb_requ *req) in ddcb_requ_finished() argument
252 return (ddcb_requ_get_state(req) == GENWQE_REQU_FINISHED) || in ddcb_requ_finished()
337 static void copy_ddcb_results(struct ddcb_requ *req, int ddcb_no) in copy_ddcb_results() argument
339 struct ddcb_queue *queue = req->queue; in copy_ddcb_results()
340 struct ddcb *pddcb = &queue->ddcb_vaddr[req->num]; in copy_ddcb_results()
342 memcpy(&req->cmd.asv[0], &pddcb->asv[0], DDCB_ASV_LENGTH); in copy_ddcb_results()
345 req->cmd.vcrc = be16_to_cpu(pddcb->vcrc_16); in copy_ddcb_results()
346 req->cmd.deque_ts = be64_to_cpu(pddcb->deque_ts_64); in copy_ddcb_results()
347 req->cmd.cmplt_ts = be64_to_cpu(pddcb->cmplt_ts_64); in copy_ddcb_results()
349 req->cmd.attn = be16_to_cpu(pddcb->attn_16); in copy_ddcb_results()
350 req->cmd.progress = be32_to_cpu(pddcb->progress_32); in copy_ddcb_results()
351 req->cmd.retc = be16_to_cpu(pddcb->retc_16); in copy_ddcb_results()
353 if (ddcb_requ_collect_debug_data(req)) { in copy_ddcb_results()
358 memcpy(&req->debug_data.ddcb_finished, pddcb, in copy_ddcb_results()
359 sizeof(req->debug_data.ddcb_finished)); in copy_ddcb_results()
360 memcpy(&req->debug_data.ddcb_prev, prev_pddcb, in copy_ddcb_results()
361 sizeof(req->debug_data.ddcb_prev)); in copy_ddcb_results()
384 struct ddcb_requ *req; in genwqe_check_ddcb_queue() local
396 req = queue->ddcb_req[queue->ddcb_act]; in genwqe_check_ddcb_queue()
397 if (req == NULL) { in genwqe_check_ddcb_queue()
426 copy_ddcb_results(req, queue->ddcb_act); in genwqe_check_ddcb_queue()
429 dev_dbg(&pci_dev->dev, "FINISHED DDCB#%d\n", req->num); in genwqe_check_ddcb_queue()
436 VCRC_LENGTH(req->cmd.asv_length), in genwqe_check_ddcb_queue()
443 pddcb->pre, VCRC_LENGTH(req->cmd.asv_length), in genwqe_check_ddcb_queue()
447 ddcb_requ_set_state(req, GENWQE_REQU_FINISHED); in genwqe_check_ddcb_queue()
483 int __genwqe_wait_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req) in __genwqe_wait_ddcb() argument
490 if (req == NULL) in __genwqe_wait_ddcb()
493 queue = req->queue; in __genwqe_wait_ddcb()
497 ddcb_no = req->num; in __genwqe_wait_ddcb()
502 ddcb_requ_finished(cd, req), in __genwqe_wait_ddcb()
512 struct ddcb_queue *queue = req->queue; in __genwqe_wait_ddcb()
520 genwqe_check_ddcb_queue(cd, req->queue); in __genwqe_wait_ddcb()
521 if (ddcb_requ_finished(cd, req)) in __genwqe_wait_ddcb()
526 __func__, req->num, rc, ddcb_requ_get_state(req), in __genwqe_wait_ddcb()
527 req); in __genwqe_wait_ddcb()
532 pddcb = &queue->ddcb_vaddr[req->num]; in __genwqe_wait_ddcb()
535 print_ddcb_info(cd, req->queue); in __genwqe_wait_ddcb()
548 __func__, req->num, rc, ddcb_requ_get_state(req)); in __genwqe_wait_ddcb()
556 __func__, req->num, rc); in __genwqe_wait_ddcb()
624 int __genwqe_purge_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req) in __genwqe_purge_ddcb() argument
629 struct ddcb_queue *queue = req->queue; in __genwqe_purge_ddcb()
642 pddcb = &queue->ddcb_vaddr[req->num]; in __genwqe_purge_ddcb()
649 if (ddcb_requ_get_state(req) == GENWQE_REQU_FINISHED) in __genwqe_purge_ddcb()
678 copy_ddcb_results(req, req->num); /* for the failing case */ in __genwqe_purge_ddcb()
683 copy_ddcb_results(req, req->num); in __genwqe_purge_ddcb()
684 ddcb_requ_set_state(req, GENWQE_REQU_FINISHED); in __genwqe_purge_ddcb()
686 queue->ddcb_req[req->num] = NULL; /* delete from array */ in __genwqe_purge_ddcb()
701 (queue->ddcb_act == req->num)) { in __genwqe_purge_ddcb()
716 dev_dbg(&pci_dev->dev, "UN/FINISHED DDCB#%d\n", req->num); in __genwqe_purge_ddcb()
721 __func__, req->num, genwqe_ddcb_software_timeout, in __genwqe_purge_ddcb()
724 print_ddcb_info(cd, req->queue); in __genwqe_purge_ddcb()
758 int __genwqe_enqueue_ddcb(struct genwqe_dev *cd, struct ddcb_requ *req, in __genwqe_enqueue_ddcb() argument
772 __func__, req->num); in __genwqe_enqueue_ddcb()
776 queue = req->queue = &cd->queue; in __genwqe_enqueue_ddcb()
791 pddcb = get_next_ddcb(cd, queue, &req->num); /* get ptr and num */ in __genwqe_enqueue_ddcb()
813 if (queue->ddcb_req[req->num] != NULL) { in __genwqe_enqueue_ddcb()
818 __func__, req->num, req); in __genwqe_enqueue_ddcb()
821 ddcb_requ_set_state(req, GENWQE_REQU_ENQUEUED); in __genwqe_enqueue_ddcb()
822 queue->ddcb_req[req->num] = req; in __genwqe_enqueue_ddcb()
824 pddcb->cmdopts_16 = cpu_to_be16(req->cmd.cmdopts); in __genwqe_enqueue_ddcb()
825 pddcb->cmd = req->cmd.cmd; in __genwqe_enqueue_ddcb()
826 pddcb->acfunc = req->cmd.acfunc; /* functional unit */ in __genwqe_enqueue_ddcb()
842 pddcb->psp = (((req->cmd.asiv_length / 8) << 4) | in __genwqe_enqueue_ddcb()
843 ((req->cmd.asv_length / 8))); in __genwqe_enqueue_ddcb()
844 pddcb->disp_ts_64 = cpu_to_be64(req->cmd.disp_ts); in __genwqe_enqueue_ddcb()
861 &req->cmd.__asiv[0], /* source */ in __genwqe_enqueue_ddcb()
864 pddcb->n.ats_64 = cpu_to_be64(req->cmd.ats); in __genwqe_enqueue_ddcb()
866 &req->cmd.asiv[0], /* source */ in __genwqe_enqueue_ddcb()
877 ICRC_LENGTH(req->cmd.asiv_length), 0xffff); in __genwqe_enqueue_ddcb()
884 dev_dbg(&pci_dev->dev, "INPUT DDCB#%d\n", req->num); in __genwqe_enqueue_ddcb()
887 if (ddcb_requ_collect_debug_data(req)) { in __genwqe_enqueue_ddcb()
891 genwqe_init_debug_data(cd, &req->debug_data); in __genwqe_enqueue_ddcb()
892 memcpy(&req->debug_data.ddcb_before, pddcb, in __genwqe_enqueue_ddcb()
893 sizeof(req->debug_data.ddcb_before)); in __genwqe_enqueue_ddcb()
896 enqueue_ddcb(cd, queue, pddcb, req->num); in __genwqe_enqueue_ddcb()
902 ddcb_requ_set_state(req, GENWQE_REQU_TAPPED); in __genwqe_enqueue_ddcb()
921 struct ddcb_requ *req = container_of(cmd, struct ddcb_requ, cmd); in __genwqe_execute_raw_ddcb() local
933 rc = __genwqe_enqueue_ddcb(cd, req, f_flags); in __genwqe_execute_raw_ddcb()
937 rc = __genwqe_wait_ddcb(cd, req); in __genwqe_execute_raw_ddcb()
941 if (ddcb_requ_collect_debug_data(req)) { in __genwqe_execute_raw_ddcb()
944 &req->debug_data, in __genwqe_execute_raw_ddcb()
963 __genwqe_purge_ddcb(cd, req); in __genwqe_execute_raw_ddcb()
965 if (ddcb_requ_collect_debug_data(req)) { in __genwqe_execute_raw_ddcb()
968 &req->debug_data, in __genwqe_execute_raw_ddcb()