| 548 | } |
| 549 | |
| 550 | int |
| 551 | rte_bbdev_start(uint16_t dev_id) |
| 552 | { |
| 553 | int i; |
| 554 | struct rte_bbdev *dev = get_dev(dev_id); |
| 555 | VALID_DEV_OR_RET_ERR(dev, dev_id); |
| 556 | |
| 557 | VALID_DEV_OPS_OR_RET_ERR(dev, dev_id); |
| 558 | |
| 559 | if (dev->data->started) { |
| 560 | rte_bbdev_log_debug("Device %u is already started", dev_id); |
| 561 | return 0; |
| 562 | } |
| 563 | |
| 564 | if (dev->dev_ops->start) { |
| 565 | int ret = dev->dev_ops->start(dev); |
| 566 | if (ret < 0) { |
| 567 | rte_bbdev_log(ERR, "Device %u start failed", dev_id); |
| 568 | return ret; |
| 569 | } |
| 570 | } |
| 571 | |
| 572 | /* Store new state */ |
| 573 | for (i = 0; i < dev->data->num_queues; i++) |
| 574 | if (!dev->data->queues[i].conf.deferred_start) |
| 575 | dev->data->queues[i].started = true; |
| 576 | dev->data->started = true; |
| 577 | |
| 578 | rte_bbdev_log_debug("Started device %u", dev_id); |
| 579 | return 0; |
| 580 | } |
| 581 | |
| 582 | int |
| 583 | rte_bbdev_stop(uint16_t dev_id) |