| 68 | } |
| 69 | |
| 70 | int |
| 71 | nitrox_qp_setup(struct nitrox_qp *qp, uint8_t *bar_addr, const char *dev_name, |
| 72 | uint32_t nb_descriptors, uint8_t instr_size, int socket_id) |
| 73 | { |
| 74 | int err; |
| 75 | uint32_t count; |
| 76 | |
| 77 | count = rte_align32pow2(nb_descriptors); |
| 78 | if (count > MAX_CMD_QLEN) { |
| 79 | NITROX_LOG(ERR, "%s: Number of descriptors too big %d," |
| 80 | " greater than max queue length %d\n", |
| 81 | dev_name, count, |
| 82 | MAX_CMD_QLEN); |
| 83 | return -EINVAL; |
| 84 | } |
| 85 | |
| 86 | qp->count = count; |
| 87 | qp->head = qp->tail = 0; |
| 88 | rte_atomic16_init(&qp->pending_count); |
| 89 | err = nitrox_setup_cmdq(qp, bar_addr, dev_name, instr_size, socket_id); |
| 90 | if (err) |
| 91 | return err; |
| 92 | |
| 93 | err = nitrox_setup_ridq(qp, socket_id); |
| 94 | if (err) |
| 95 | goto ridq_err; |
| 96 | |
| 97 | return 0; |
| 98 | |
| 99 | ridq_err: |
| 100 | nitrox_release_cmdq(qp, bar_addr); |
| 101 | return err; |
| 102 | } |
| 103 | |
| 104 | static void |
| 105 | nitrox_release_ridq(struct nitrox_qp *qp) |
no test coverage detected