| 571 | }; |
| 572 | |
| 573 | static int |
| 574 | skeleton_rawdev_create(const char *name, |
| 575 | struct rte_vdev_device *vdev, |
| 576 | int socket_id) |
| 577 | { |
| 578 | int ret = 0, i; |
| 579 | struct rte_rawdev *rawdev = NULL; |
| 580 | struct skeleton_rawdev *skeldev = NULL; |
| 581 | |
| 582 | if (!name) { |
| 583 | SKELETON_PMD_ERR("Invalid name of the device!"); |
| 584 | ret = -EINVAL; |
| 585 | goto cleanup; |
| 586 | } |
| 587 | |
| 588 | /* Allocate device structure */ |
| 589 | rawdev = rte_rawdev_pmd_allocate(name, sizeof(struct skeleton_rawdev), |
| 590 | socket_id); |
| 591 | if (rawdev == NULL) { |
| 592 | SKELETON_PMD_ERR("Unable to allocate rawdevice"); |
| 593 | ret = -EINVAL; |
| 594 | goto cleanup; |
| 595 | } |
| 596 | |
| 597 | ret = rawdev->dev_id; /* return the rawdev id of new device */ |
| 598 | |
| 599 | rawdev->dev_ops = &skeleton_rawdev_ops; |
| 600 | rawdev->device = &vdev->device; |
| 601 | |
| 602 | skeldev = skeleton_rawdev_get_priv(rawdev); |
| 603 | |
| 604 | skeldev->device_id = SKELETON_DEVICE_ID; |
| 605 | skeldev->vendor_id = SKELETON_VENDOR_ID; |
| 606 | skeldev->capabilities = SKELETON_DEFAULT_CAPA; |
| 607 | |
| 608 | memset(&skeldev->fw, 0, sizeof(struct skeleton_firmware)); |
| 609 | |
| 610 | skeldev->fw.firmware_state = SKELETON_FW_READY; |
| 611 | skeldev->fw.firmware_version.major = SKELETON_MAJOR_VER; |
| 612 | skeldev->fw.firmware_version.minor = SKELETON_MINOR_VER; |
| 613 | skeldev->fw.firmware_version.subrel = SKELETON_SUB_VER; |
| 614 | |
| 615 | skeldev->device_state = SKELETON_DEV_STOPPED; |
| 616 | |
| 617 | /* Reset/set to default queue configuration for this device */ |
| 618 | for (i = 0; i < SKELETON_MAX_QUEUES; i++) { |
| 619 | skeldev->queues[i].state = SKELETON_QUEUE_DETACH; |
| 620 | skeldev->queues[i].depth = SKELETON_QUEUE_DEF_DEPTH; |
| 621 | } |
| 622 | |
| 623 | /* Clear all allocated queue buffers */ |
| 624 | for (i = 0; i < SKELETON_MAX_QUEUES; i++) |
| 625 | clear_queue_bufs(i); |
| 626 | |
| 627 | return ret; |
| 628 | |
| 629 | cleanup: |
| 630 | if (rawdev) |
no test coverage detected