X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fevent%2Fdsw%2Fdsw_evdev.c;h=e796975dfcf1540c3b56c82cbdddfbf38127a183;hb=a2c6d3f34f9065a75fbbe70699610388e711ac6c;hp=4157d130cc0a920fe9bb6c55d21da742459fbd34;hpb=773025cab668f72122e66900c5a55d588e1ddf45;p=dpdk.git diff --git a/drivers/event/dsw/dsw_evdev.c b/drivers/event/dsw/dsw_evdev.c index 4157d130cc..e796975dfc 100644 --- a/drivers/event/dsw/dsw_evdev.c +++ b/drivers/event/dsw/dsw_evdev.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "dsw_evdev.h" @@ -46,9 +47,11 @@ dsw_port_setup(struct rte_eventdev *dev, uint8_t port_id, snprintf(ring_name, sizeof(ring_name), "dswctl%d_p%u", dev->data->dev_id, port_id); - ctl_in_ring = rte_ring_create(ring_name, DSW_CTL_IN_RING_SIZE, - dev->data->socket_id, - RING_F_SC_DEQ|RING_F_EXACT_SZ); + ctl_in_ring = rte_ring_create_elem(ring_name, + sizeof(struct dsw_ctl_msg), + DSW_CTL_IN_RING_SIZE, + dev->data->socket_id, + RING_F_SC_DEQ|RING_F_EXACT_SZ); if (ctl_in_ring == NULL) { rte_event_ring_free(in_ring); @@ -59,6 +62,7 @@ dsw_port_setup(struct rte_eventdev *dev, uint8_t port_id, port->ctl_in_ring = ctl_in_ring; rte_atomic16_init(&port->load); + rte_atomic32_init(&port->immigration_load); port->load_update_interval = (DSW_LOAD_UPDATE_INTERVAL * rte_get_timer_hz()) / US_PER_S; @@ -102,9 +106,6 @@ dsw_queue_setup(struct rte_eventdev *dev, uint8_t queue_id, if (RTE_EVENT_QUEUE_CFG_ALL_TYPES & conf->event_queue_cfg) return -ENOTSUP; - if (conf->schedule_type == RTE_SCHED_TYPE_ORDERED) - return -ENOTSUP; - /* SINGLE_LINK is better off treated as TYPE_ATOMIC, since it * avoid the "fake" TYPE_PARALLEL flow_id assignment. Since * the queue will only have a single serving port, no @@ -113,8 +114,12 @@ dsw_queue_setup(struct rte_eventdev *dev, uint8_t queue_id, */ if (RTE_EVENT_QUEUE_CFG_SINGLE_LINK & conf->event_queue_cfg) queue->schedule_type = RTE_SCHED_TYPE_ATOMIC; - else /* atomic or parallel */ + else { + if (conf->schedule_type == RTE_SCHED_TYPE_ORDERED) + return -ENOTSUP; + /* atomic or parallel */ queue->schedule_type = conf->schedule_type; + } queue->num_serving_ports = 0;