MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rte_bbdev_setup_queues

Function rte_bbdev_setup_queues

dpdk/lib/bbdev/rte_bbdev.c:312–400  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

310}
311
312int
313rte_bbdev_setup_queues(uint16_t dev_id, uint16_t num_queues, int socket_id)
314{
315 unsigned int i;
316 int ret;
317 struct rte_bbdev_driver_info dev_info;
318 struct rte_bbdev *dev = get_dev(dev_id);
319 VALID_DEV_OR_RET_ERR(dev, dev_id);
320
321 VALID_DEV_OPS_OR_RET_ERR(dev, dev_id);
322
323 if (dev->data->started) {
324 rte_bbdev_log(ERR,
325 "Device %u cannot be configured when started",
326 dev_id);
327 return -EBUSY;
328 }
329
330 /* Get device driver information to get max number of queues */
331 VALID_FUNC_OR_RET_ERR(dev->dev_ops->info_get, dev_id);
332 memset(&dev_info, 0, sizeof(dev_info));
333 dev->dev_ops->info_get(dev, &dev_info);
334
335 if ((num_queues == 0) || (num_queues > dev_info.max_num_queues)) {
336 rte_bbdev_log(ERR,
337 "Device %u supports 0 < N <= %u queues, not %u",
338 dev_id, dev_info.max_num_queues, num_queues);
339 return -EINVAL;
340 }
341
342 /* If re-configuration, get driver to free existing internal memory */
343 if (dev->data->queues != NULL) {
344 VALID_FUNC_OR_RET_ERR(dev->dev_ops->queue_release, dev_id);
345 for (i = 0; i < dev->data->num_queues; i++) {
346 int ret = dev->dev_ops->queue_release(dev, i);
347 if (ret < 0) {
348 rte_bbdev_log(ERR,
349 "Device %u queue %u release failed",
350 dev_id, i);
351 return ret;
352 }
353 }
354 /* Call optional device close */
355 if (dev->dev_ops->close) {
356 ret = dev->dev_ops->close(dev);
357 if (ret < 0) {
358 rte_bbdev_log(ERR,
359 "Device %u couldn't be closed",
360 dev_id);
361 return ret;
362 }
363 }
364 rte_free(dev->data->queues);
365 }
366
367 /* Allocate queue pointers */
368 dev->data->queues = rte_calloc_socket(DEV_NAME, num_queues,
369 sizeof(dev->data->queues[0]), RTE_CACHE_LINE_SIZE,

Callers 7

add_bbdev_devFunction · 0.85
ut_setupFunction · 0.85
prepare_bbdev_deviceFunction · 0.85

Calls 5

get_devFunction · 0.85
memsetFunction · 0.85
rte_freeFunction · 0.85
rte_calloc_socketFunction · 0.85
closeMethod · 0.45

Tested by 6

add_bbdev_devFunction · 0.68
ut_setupFunction · 0.68