| 121 | } |
| 122 | |
| 123 | static int |
| 124 | cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs) |
| 125 | { |
| 126 | uint8_t enabled_cdev_count = 0, nb_lcores, cdev_id; |
| 127 | uint32_t sessions_needed = 0; |
| 128 | unsigned int i, j; |
| 129 | int ret; |
| 130 | |
| 131 | enabled_cdev_count = rte_cryptodev_devices_get(opts->device_type, |
| 132 | enabled_cdevs, RTE_CRYPTO_MAX_DEVS); |
| 133 | if (enabled_cdev_count == 0) { |
| 134 | printf("No crypto devices type %s available\n", |
| 135 | opts->device_type); |
| 136 | return -EINVAL; |
| 137 | } |
| 138 | |
| 139 | nb_lcores = rte_lcore_count() - 1; |
| 140 | |
| 141 | if (nb_lcores < 1) { |
| 142 | RTE_LOG(ERR, USER1, |
| 143 | "Number of enabled cores need to be higher than 1\n"); |
| 144 | return -EINVAL; |
| 145 | } |
| 146 | |
| 147 | /* |
| 148 | * Use less number of devices, |
| 149 | * if there are more available than cores. |
| 150 | */ |
| 151 | if (enabled_cdev_count > nb_lcores) |
| 152 | enabled_cdev_count = nb_lcores; |
| 153 | |
| 154 | /* Create a mempool shared by all the devices */ |
| 155 | uint32_t max_sess_size = 0, sess_size; |
| 156 | |
| 157 | for (cdev_id = 0; cdev_id < rte_cryptodev_count(); cdev_id++) { |
| 158 | sess_size = rte_cryptodev_sym_get_private_session_size(cdev_id); |
| 159 | if (sess_size > max_sess_size) |
| 160 | max_sess_size = sess_size; |
| 161 | } |
| 162 | #ifdef RTE_LIB_SECURITY |
| 163 | for (cdev_id = 0; cdev_id < rte_cryptodev_count(); cdev_id++) { |
| 164 | sess_size = rte_security_session_get_size( |
| 165 | rte_cryptodev_get_sec_ctx(cdev_id)); |
| 166 | if (sess_size > max_sess_size) |
| 167 | max_sess_size = sess_size; |
| 168 | } |
| 169 | #endif |
| 170 | /* |
| 171 | * Calculate number of needed queue pairs, based on the amount |
| 172 | * of available number of logical cores and crypto devices. |
| 173 | * For instance, if there are 4 cores and 2 crypto devices, |
| 174 | * 2 queue pairs will be set up per device. |
| 175 | */ |
| 176 | opts->nb_qps = (nb_lcores % enabled_cdev_count) ? |
| 177 | (nb_lcores / enabled_cdev_count) + 1 : |
| 178 | nb_lcores / enabled_cdev_count; |
| 179 | |
| 180 | for (i = 0; i < enabled_cdev_count && |
no test coverage detected