https://bugs.dpdk.org/show_bug.cgi?id=1368 Bug ID: 1368 Summary: inconsistency in eventdev dev_info and config structs makes some valid configs impossible Product: DPDK Version: unspecified Hardware: All OS: All Status: UNCONFIRMED Severity: normal Priority: Normal Component: eventdev Assignee: dev@dpdk.org Reporter: bruce.richardson@intel.com Target Milestone: --- In the rte_event_dev_info struct[1], we have the max_event_queues[2] and max_single_link_event_port_queue_pairs[3] members. The doxygen docs on the latter states: "These ports and queues are not accounted for in max_event_ports or max_event_queues." This implies that a device which has 8 regular queues and an extra 8 single-link only queues, would report max_event_queues == 8, and max_single_link_event_port_queue_pairs == 8 on return from rte_event_dev_info_get() function. Those values returned from info_get are generally to be used to guide the configuration using rte_event_dev_configure() API, which takes the rte_event_dev_config[4] struct. This has two similar fields, in nb_event_queues[5] and nb_single_link_event_port_queues[6]. However, a problem arises in that the documentation states that nb_event_queues cannot be greater than the previously reported max_event_queues (which by itself makes sense), but the documentation also states that nb_single_link_event_port_queues is a subset of the overall event ports and queues, and cannot be greater than the nb_event_queues given in the same config structure. To illustrate the issue by continuing to use the same example as above, suppose an app wants to take that device with 8 regular queues and 8 single link ones, and have an app with 2 shared processing queues, e.g. for load-balancing packets/events among 8 cores, but also wants to use the 8 single link queues to allow sending packets/events directly to each core without load balancing. In this 2 + 8 scenario, there is no valid dev_config struct settings that will work: * making the 8 a subset of the nb_event_queues, means that nb_event_queues is 10, which is greater than max_event_queues and so invalid. * keeping them separate, so that nb_event_queues == 2 and nb_single_link_port_queues == 8 violates the constraint that the single_link value cannot exceed the former nb_event_queues value. We therefore need to adjust the constraints to make things work. Now we can do so, while keeping the single_link value *not included* in the total-count in dev_info, but have it *included* in the config struct, but such a setup is very confusing for the user. Therefore, I think instead we need to correct this by aligning the two structures - either the single_link queues are included in the queue/port counts in both structs, or they aren't included. [1] https://doc.dpdk.org/api/structrte__event__dev__info.html [2] https://doc.dpdk.org/api/structrte__event__dev__info.html#a1cebb1d19943d6b8e3d6e51ffc72982a [3] https://doc.dpdk.org/api/structrte__event__dev__info.html#ae65bf9e4dba80ccb205f3c43f5907d5d [4] https://doc.dpdk.org/api/structrte__event__dev__config.html [5] https://doc.dpdk.org/api/structrte__event__dev__config.html#a703c026d74436b05fc656652324101e4 [6] https://doc.dpdk.org/api/structrte__event__dev__config.html#a39f29448dce5baf491f6685299faa0c9 -- You are receiving this mail because: You are the assignee for the bug.