| 583 | |
| 584 | |
| 585 | static __rte_always_inline int |
| 586 | copy_data(void *data, struct vhost_crypto_data_req *vc_req, |
| 587 | struct vhost_crypto_desc *head, struct vhost_crypto_desc **cur_desc, |
| 588 | uint32_t size, uint32_t max_n_descs) |
| 589 | __rte_shared_locks_required(&vc_req->vq->iotlb_lock) |
| 590 | { |
| 591 | struct vhost_crypto_desc *desc = *cur_desc; |
| 592 | uint32_t left = size; |
| 593 | |
| 594 | do { |
| 595 | uint32_t copied; |
| 596 | |
| 597 | copied = copy_data_from_desc(data, vc_req, desc, left); |
| 598 | if (copied == 0) |
| 599 | return -1; |
| 600 | left -= copied; |
| 601 | data = RTE_PTR_ADD(data, copied); |
| 602 | } while (left != 0 && ++desc < head + max_n_descs); |
| 603 | |
| 604 | if (unlikely(left != 0)) |
| 605 | return -1; |
| 606 | |
| 607 | if (unlikely(desc == head + max_n_descs)) |
| 608 | *cur_desc = NULL; |
| 609 | else |
| 610 | *cur_desc = desc + 1; |
| 611 | |
| 612 | return 0; |
| 613 | } |
| 614 | |
| 615 | static void |
| 616 | write_back_data(struct vhost_crypto_data_req *vc_req) |
no test coverage detected