X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fevent%2Fskeleton%2Fskeleton_eventdev.c;h=bcd20556812013ff3f5e8ffd50fea9d8f964a766;hb=c0bad56ef8b84a2e03bff1f5739a52248d22aedd;hp=9330d7474fa81a220eb8c6cf84e87d49614bd725;hpb=d3e281a540567879a1fb65f4af95050de27eddca;p=dpdk.git diff --git a/drivers/event/skeleton/skeleton_eventdev.c b/drivers/event/skeleton/skeleton_eventdev.c index 9330d7474f..bcd2055681 100644 --- a/drivers/event/skeleton/skeleton_eventdev.c +++ b/drivers/event/skeleton/skeleton_eventdev.c @@ -1,7 +1,7 @@ /* * BSD LICENSE * - * Copyright (C) Cavium networks Ltd. 2016. + * Copyright (C) Cavium, Inc. 2016. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -13,7 +13,7 @@ * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. - * * Neither the name of Cavium networks nor the names of its + * * Neither the name of Cavium, Inc nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -43,10 +43,9 @@ #include #include #include +#include #include #include -#include -#include #include #include @@ -130,6 +129,7 @@ skeleton_eventdev_info_get(struct rte_eventdev *dev, dev_info->max_event_port_enqueue_depth = 16; dev_info->max_num_events = (1ULL << 20); dev_info->event_dev_cap = RTE_EVENT_DEV_CAP_QUEUE_QOS | + RTE_EVENT_DEV_CAP_BURST_MODE | RTE_EVENT_DEV_CAP_EVENT_QOS; } @@ -196,7 +196,7 @@ skeleton_eventdev_queue_def_conf(struct rte_eventdev *dev, uint8_t queue_id, queue_conf->nb_atomic_flows = (1ULL << 20); queue_conf->nb_atomic_order_sequences = (1ULL << 20); - queue_conf->event_queue_cfg = RTE_EVENT_QUEUE_CFG_DEFAULT; + queue_conf->event_queue_cfg = RTE_EVENT_QUEUE_CFG_ALL_TYPES; queue_conf->priority = RTE_EVENT_DEV_PRIORITY_NORMAL; } @@ -319,7 +319,7 @@ skeleton_eventdev_port_unlink(struct rte_eventdev *dev, void *port, } -static void +static int skeleton_eventdev_timeout_ticks(struct rte_eventdev *dev, uint64_t ns, uint64_t *timeout_ticks) { @@ -330,6 +330,8 @@ skeleton_eventdev_timeout_ticks(struct rte_eventdev *dev, uint64_t ns, RTE_SET_USED(skel); *timeout_ticks = ns * scale; + + return 0; } static void @@ -383,7 +385,7 @@ skeleton_eventdev_init(struct rte_eventdev *eventdev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - pci_dev = eventdev->pci_dev; + pci_dev = RTE_DEV_TO_PCI(eventdev->dev); skel->reg_base = (uintptr_t)pci_dev->mem_resource[0].addr; if (!skel->reg_base) { @@ -425,60 +427,41 @@ static const struct rte_pci_id pci_id_skeleton_map[] = { }, }; -static struct rte_eventdev_driver pci_eventdev_skeleton_pmd = { - .pci_drv = { - .id_table = pci_id_skeleton_map, - .drv_flags = RTE_PCI_DRV_NEED_MAPPING, - .probe = rte_event_pmd_pci_probe, - .remove = rte_event_pmd_pci_remove, - }, - .eventdev_init = skeleton_eventdev_init, - .dev_private_size = sizeof(struct skeleton_eventdev), +static int +event_skeleton_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev) +{ + return rte_event_pmd_pci_probe(pci_drv, pci_dev, + sizeof(struct skeleton_eventdev), skeleton_eventdev_init); +} + +static int +event_skeleton_pci_remove(struct rte_pci_device *pci_dev) +{ + return rte_event_pmd_pci_remove(pci_dev, NULL); +} + +static struct rte_pci_driver pci_eventdev_skeleton_pmd = { + .id_table = pci_id_skeleton_map, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, + .probe = event_skeleton_pci_probe, + .remove = event_skeleton_pci_remove, }; -RTE_PMD_REGISTER_PCI(event_skeleton_pci, pci_eventdev_skeleton_pmd.pci_drv); +RTE_PMD_REGISTER_PCI(event_skeleton_pci, pci_eventdev_skeleton_pmd); RTE_PMD_REGISTER_PCI_TABLE(event_skeleton_pci, pci_id_skeleton_map); /* VDEV based event device */ -/** - * Global static parameter used to create a unique name for each skeleton - * event device. - */ -static unsigned int skeleton_unique_id; - -static inline int -skeleton_create_unique_device_name(char *name, size_t size) -{ - int ret; - - if (name == NULL) - return -EINVAL; - - ret = snprintf(name, size, "%s_%u", RTE_STR(EVENTDEV_NAME_SKELETON_PMD), - skeleton_unique_id++); - if (ret < 0) - return ret; - return 0; -} - static int -skeleton_eventdev_create(int socket_id) +skeleton_eventdev_create(const char *name, int socket_id) { struct rte_eventdev *eventdev; - char eventdev_name[RTE_EVENTDEV_NAME_MAX_LEN]; - - /* Create a unique device name */ - if (skeleton_create_unique_device_name(eventdev_name, - RTE_EVENTDEV_NAME_MAX_LEN) != 0) { - PMD_DRV_ERR("Failed to create unique eventdev name"); - return -EINVAL; - } - eventdev = rte_event_pmd_vdev_init(eventdev_name, + eventdev = rte_event_pmd_vdev_init(name, sizeof(struct skeleton_eventdev), socket_id); if (eventdev == NULL) { - PMD_DRV_ERR("Failed to create eventdev vdev"); + PMD_DRV_ERR("Failed to create eventdev vdev %s", name); goto fail; } @@ -495,22 +478,25 @@ fail: } static int -skeleton_eventdev_probe(const char *name, __rte_unused const char *input_args) +skeleton_eventdev_probe(struct rte_vdev_device *vdev) { + const char *name; + + name = rte_vdev_device_name(vdev); RTE_LOG(INFO, PMD, "Initializing %s on NUMA node %d\n", name, rte_socket_id()); - return skeleton_eventdev_create(rte_socket_id()); + return skeleton_eventdev_create(name, rte_socket_id()); } static int -skeleton_eventdev_remove(const char *name) +skeleton_eventdev_remove(struct rte_vdev_device *vdev) { - if (name == NULL) - return -EINVAL; + const char *name; + name = rte_vdev_device_name(vdev); PMD_DRV_LOG(INFO, "Closing %s on NUMA node %d", name, rte_socket_id()); - return 0; + return rte_event_pmd_vdev_uninit(name); } static struct rte_vdev_driver vdev_eventdev_skeleton_pmd = {