<html>
<head>
<base href="https://bugs.dpdk.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8" class="bz_new_table">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_UNCONFIRMED "
title="UNCONFIRMED - inconsistency in eventdev dev_info and config structs makes some valid configs impossible"
href="https://bugs.dpdk.org/show_bug.cgi?id=1368">1368</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>inconsistency in eventdev dev_info and config structs makes some valid configs impossible
</td>
</tr>
<tr>
<th>Product</th>
<td>DPDK
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>All
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>UNCONFIRMED
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>Normal
</td>
</tr>
<tr>
<th>Component</th>
<td>eventdev
</td>
</tr>
<tr>
<th>Assignee</th>
<td>dev@dpdk.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>bruce.richardson@intel.com
</td>
</tr>
<tr>
<th>Target Milestone</th>
<td>---
</td>
</tr></table>
<p>
<div class="bz_comment_block">
<pre class="bz_comment_text">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] <a href="https://doc.dpdk.org/api/structrte__event__dev__info.html">https://doc.dpdk.org/api/structrte__event__dev__info.html</a>
[2]
<a href="https://doc.dpdk.org/api/structrte__event__dev__info.html#a1cebb1d19943d6b8e3d6e51ffc72982a">https://doc.dpdk.org/api/structrte__event__dev__info.html#a1cebb1d19943d6b8e3d6e51ffc72982a</a>
[3]
<a href="https://doc.dpdk.org/api/structrte__event__dev__info.html#ae65bf9e4dba80ccb205f3c43f5907d5d">https://doc.dpdk.org/api/structrte__event__dev__info.html#ae65bf9e4dba80ccb205f3c43f5907d5d</a>
[4] <a href="https://doc.dpdk.org/api/structrte__event__dev__config.html">https://doc.dpdk.org/api/structrte__event__dev__config.html</a>
[5]
<a href="https://doc.dpdk.org/api/structrte__event__dev__config.html#a703c026d74436b05fc656652324101e4">https://doc.dpdk.org/api/structrte__event__dev__config.html#a703c026d74436b05fc656652324101e4</a>
[6]
<a href="https://doc.dpdk.org/api/structrte__event__dev__config.html#a39f29448dce5baf491f6685299faa0c9">https://doc.dpdk.org/api/structrte__event__dev__config.html#a39f29448dce5baf491f6685299faa0c9</a>
</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
<link itemprop="url" href="https://bugs.dpdk.org/show_bug.cgi?id=1368">
<meta itemprop="name" content="View bug">
</div>
<meta itemprop="description" content="Bugzilla bug update notification">
</div>
</body>
</html>