DTS WG Meeting Minutes - November 21, 2024

2024-12-15 Thread Patrick Robb
#
November 21, 2024
Attendees
* Patrick Robb
* Paul Szczepanek
* Luca Vizzarro

#
Minutes

=
General Discussion
* 24.11 roadmap status:
https://docs.google.com/document/d/1doTZOOpkv4D5P2w6K7fEJpa_CjzrlMl3mCeDBWtxnko/edit
   * We should work on the 25.03 roadmap at the DTS meeting in 2 weeks.
Patrick will come prepared with a rough draft.
* 24.11 RC3 has released
   * Next-dts was pulled, and we are not applying any additional patches
for the 24.11 release
   * Do not push anything to next-dts until the release of 24.11 (excluding
any bugfixes)
   * Our major framework goals were included in this release (pydantic,
prebuilt binaries, detailed results.json)
   * We added ~5 new testsuites, including l2fwd, blocklist, dynamic
config, checksum offload
  * UNH can start to run these in it’s CI lab
* There will be no CI meeting next Thursday due to the American
Thanksgiving holiday

=
Patch discussions
* Meson –werror settings was being passed to Sphinx -W (treat warnings as
errors) inadvertently. Luca provided a bugfix which Thomas merged:
https://git.dpdk.org/dpdk/commit/?id=f4ccce58c1a33cb41e1e820da504698437987efc
* Luca will work on addin ruff linting
* No docs are generated for the testsuite docstrings, so they are not
validated, but if they were Sphinx would complain about some issues which
are present.
* Testsuite Docstrings:
   * For 25.03, we will rewrite our testsuite docstrings to use the “Steps”
and “Verify” categories (currently used in a subset of testsuites)
* Luca will pick up the task of upgrading scapy and mypy to improve type
checking (brought in with a recent scapy version)

=
Bugzilla discussions
* Action item: Patrick needs to clean up the list now that RC3 has been
released

=
Any other business
* There are some small inaccuracies throughout the framework docstrings due
to framework updates which have come in from 24.07 and 24.11, where the
corresponding docstring updates were missed
   * Part of the reason for this is that multiple things are documented in
2 places, which we should stop doing going forward
   * UNH guys should each volunteer to review docstrings for a certain set
of framework dirs/files early in the 25.03 release cycle and submit
docstring updates to bring everything up to date
* Next meeting Dec 5, 2024


Community CI Meeting Minutes - November 14, 2024

2024-12-15 Thread Patrick Robb
#
November 14, 2024

Attendees
1. Patrick Robb
2. Paul Szczepanek
3. Luca Vizzarro

#
Minutes

=
General Announcements
* Bruce raised an idea on slack of provide initial pending status for all
labs from one centralized job (can be run by UNH)
* Meeting time will be moved by 1 hour to accommodate for daylight savings.
The meeting time will be 14:00 UTC.
* Dts roadmap:
https://docs.google.com/document/d/1doTZOOpkv4D5P2w6K7fEJpa_CjzrlMl3mCeDBWtxnko/edit?tab=t.0
* RC3 is out next Tuesday
   * Thomas has indicated he may pull from next-dts today

=
CI Status

-
UNH-IOL Community Lab
* Cody at UNH is dry running tests on the new CN10K cryptodev (legacy) DTS
testcases
   *
https://patchwork.dpdk.org/project/dts/patch/20241030164419.3164992-1-gpalanet...@marvell.com/
* We have merged to next-dts a series which adds detailed testrun json
output, which we have been needing in order to meaningfully run DTS in CI.
Once this series is pulled into mainline (ideally rc3), UNH should be able
to start reporting results to the mailing list from new DTS.
* Adam’s v2 patchwork patch for depends-on has had a review from the
maintainer and got some light comments - he is working on the v3 now.

-
Intel Lab
* None

-
Github Actions
* None

-
Loongarch Lab
* None

=
DTS Improvements & Test Development
* Testsuites merged this week:
   * Pydantic data validation
   * L2fwd testsuite and testsuite helper functions
   * Async sniffer bugfix
* Patrick will be continuing to merge some testsuite patches today and
tomorrow
* Testsuite documentation style:
   * Current testsuites have different docstring sections for the testcase
functions. One approach used is specifying “steps” and “verify” content for
each testcase. We should move to this approach for all testsuites in DTS.

=
Any other business
* Next Meeting Nov 28, 2024
* Marvell crypto test legacy DTS patch was discussed - this is being
reviewed by Patrick


DTS WG Meeting Minutes - December 5, 2024

2024-12-15 Thread Patrick Robb
#
December 5, 2024
Attendees
* Patrick Robb
* Paul Szczepanek
* Luca Vizzarro

#
Minutes

=
General Discussion
* CI Testing labs discussion:
   * ABI testing can begin again
  * UNH is rebuilding its container images with the new v25 ABI
reference.
   * Still debugging some issues with cryptodev device creation on the
Marvell CN10K device. Going to rebuild the Marvell SDK with version 12 and
reflash the board.
   * AMD donated servers have been rack mounted, provisioned with ubuntu
24.04 and DTS/DPDK dependencies.
   * ARM Grace server delivery date is 12/23
* Patrick and Aaron had a call with AWS about setting up a CI “Lab” for AWS
which would do per patch testing for the test-report mailing list
* xSightLabs got a DTS demo from Patrick - they are using both legacy DTS
and new DTS in parallel
* December 26 CI meeting is cancelled
* January 2 DTS meeting is cancelled
* DPDK 24.11 has been released
* 25.03 roadmap status:
https://docs.google.com/document/d/1doTZOOpkv4D5P2w6K7fEJpa_CjzrlMl3mCeDBWtxnko/edit

=
Patch discussions
* Ruff:
   * The default rules are too minimal, but we don’t need to use literally
every rule. Luca will look for a recommended set of rules to use online
* Flow rule dataclass v5 series is submitted
* Bugzilla discussions

=
Any other business
* Patrick will invite the Microsoft Azure testers to the DTS meetings
   * mamcg...@microsoft.com
* Next meeting Dec 19, 2024


Community CI Meeting Minutes - December 12, 2024

2024-12-15 Thread Patrick Robb
#
December 12, 2024
Attendees
1. Patrick Robb
2. Aaron Conole
3. Paul Szczepanek
4. Luca Vizzarro

#
Minutes

=
General Announcements
* Dts roadmap:
https://docs.google.com/document/d/1doTZOOpkv4D5P2w6K7fEJpa_CjzrlMl3mCeDBWtxnko/edit?tab=t.0
* AWS:
   * They have confirmed that AWS ARM Graviton systems will be included in
CI testing
* Aaron: It would be ideal if we could update some of the scripts in
dpdk-ci repo such that the systems being brought over across labs are more
uniform
   * Polling patchwork is one example of a script requiring an update

=
CI Status

-
UNH-IOL Community Lab
* ABI Testing: UNH is building new container images now.
   * Libabigail 2.6 should be used going forward, which comes with a new
dependency “libxxhash”
* Marvell SDK 12: We are still having trouble setting up the Marvell crypto
devices, so we are upgrading to the latest SDK and reflashing the board.
* Maintenance:
   * Migrating and upgrading our Jenkins instance next Monday at 15:00 UTC
- downtime expected to be a few hours.
* Working on turning on new DTS in CI testing currently.
* “Retest Button” For periodic testing is in code review now, expected to
be available on the DPDK Dashboard next week.
* Dpdk-ci repo:
   * Need a review and merge of the create_series_artifact.py patch which
adds the meson check script.

-
Intel Lab
* None

-
Github Actions
* None

-
Loongarch Lab
* None

=
DTS Improvements & Test Development
* Patrick will do a review for the Ruff patch
* Paramiko:
   * bug has been resolved by Nick, by setting a while loop in which we
wait for the expected prompt to enter the paramiko buffer.
   * There is another Paramiko race condition in which a file read/write
error bubbles up at the conclusion of the DTS execution (may be a race
condition). This does not affect the testrun but it pollutes the logs, so
we should investigate this during the 25.03 cycle.
* Pending patches from the previous release: Work to review and merge Ruff
very quickly, then rebase all the old patches (in groups) and quickly merge
those groups.
   * Will rebase and review 1 old patchseries per developer per week in
December/January, and we should be
* Scapy/MyPy updates:
   * The new Scapy version includes better type support - we will update
within the 25.03 cycle.
* Poetry.lock file is committed to the repo (it is not included in the
.gitignore). After some discussion we have confirmed that this is correct,
and that maintainers should periodically update the poetry.lock file in the
remote repo.
   * Lock file makes dependency resolution faster
   * Lock file provides a universal lock of dependencies across python
versions, across time

=
Any other business
* Next Meeting Jan 16, 2024


Re: [PATCH v2 1/5] ethdev: check that device supports deferred start

2024-12-15 Thread Andrew Rybchenko

On 12/14/24 21:07, Stephen Hemminger wrote:

The check for supporting deferred start should be handled at
the ethdev level for all devices.


It is a good idea to check it on ethdev level.

Strictly speaking presence of queue start/stop callback does not mean
support for deferred start right now. It is possible to use stop/start
without deferred start feature.

However, such check is much better than nothing since deferred start
definitely requires queue start callback.

It would be good to clarify it in the documentation.
doc/guides/nics/features.rst does not mention deferred start at all.
In fact, I don't mind to couple deferred start to queue start/stop
features.

One nit below.

Anyway:
Acked-by: Andrew Rybchenko 



Signed-off-by: Stephen Hemminger 
---
  lib/ethdev/rte_ethdev.c | 10 ++
  1 file changed, 10 insertions(+)

diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
index 6413c54e3b..7768058f6d 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -2264,6 +2264,11 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t 
rx_queue_id,
if (rx_conf != NULL)
rx_offloads |= rx_conf->offloads;
  
+	/* Deferred start requires that device supports queue start */

+   if (rx_conf != NULL && rx_conf->rx_deferred_start &&
+   *dev->dev_ops->rx_queue_start == NULL)
+   return -ENOTSUP;


Wouldn't it be useful to add some kind of logging to simplify
debugging in this case.


+
/* Ensure that we have one and only one source of Rx buffers */
if ((mp != NULL) +
(rx_conf != NULL && rx_conf->rx_nseg > 0) +
@@ -2575,6 +2580,11 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t 
tx_queue_id,
return -EINVAL;
}
  
+	/* Deferred start requires that device supports queue start */

+   if (tx_conf != NULL && tx_conf->tx_deferred_start &&
+   *dev->dev_ops->tx_queue_start == NULL)
+   return -ENOTSUP;
+
ret = rte_eth_dev_info_get(port_id, &dev_info);
if (ret != 0)
return ret;




[PATCH v6] graph: mcore: optimize graph search

2024-12-15 Thread Huichao Cai
In the function __rte_graph_mcore_dispatch_sched_node_enqueue,
use a slower loop to search for the graph, modify the search logic
to record the result of the first search, and use this record for
subsequent searches to improve search speed.

Signed-off-by: Huichao Cai 
---
 devtools/libabigail.abignore   |  5 +
 doc/guides/rel_notes/release_25_03.rst |  2 ++
 lib/graph/rte_graph_model_mcore_dispatch.c | 11 +++
 lib/graph/rte_graph_worker_common.h|  1 +
 4 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
index 21b8cd6113..a92ee29512 100644
--- a/devtools/libabigail.abignore
+++ b/devtools/libabigail.abignore
@@ -33,3 +33,8 @@
 
 ; Temporary exceptions till next major ABI version ;
 
+[suppress_type]
+   name = rte_node
+   has_size_change = no
+   has_data_member_inserted_between =
+{offset_of(total_sched_fail), offset_of(xstat_off)}
diff --git a/doc/guides/rel_notes/release_25_03.rst 
b/doc/guides/rel_notes/release_25_03.rst
index 426dfcd982..55ffe8170d 100644
--- a/doc/guides/rel_notes/release_25_03.rst
+++ b/doc/guides/rel_notes/release_25_03.rst
@@ -102,6 +102,8 @@ ABI Changes
 
 * No ABI change that would break compatibility with 24.11.
 
+* graph: Added ``graph`` field to the ``dispatch`` structure in the 
``rte_node`` structure.
+
 
 Known Issues
 
diff --git a/lib/graph/rte_graph_model_mcore_dispatch.c 
b/lib/graph/rte_graph_model_mcore_dispatch.c
index a590fc9497..a81d338227 100644
--- a/lib/graph/rte_graph_model_mcore_dispatch.c
+++ b/lib/graph/rte_graph_model_mcore_dispatch.c
@@ -118,11 +118,14 @@ __rte_graph_mcore_dispatch_sched_node_enqueue(struct 
rte_node *node,
  struct rte_graph_rq_head *rq)
 {
const unsigned int lcore_id = node->dispatch.lcore_id;
-   struct rte_graph *graph;
+   struct rte_graph *graph = node->dispatch.graph;
 
-   SLIST_FOREACH(graph, rq, next)
-   if (graph->dispatch.lcore_id == lcore_id)
-   break;
+   if (unlikely((!graph) || (graph->dispatch.lcore_id != lcore_id))) {
+   SLIST_FOREACH(graph, rq, next)
+   if (graph->dispatch.lcore_id == lcore_id)
+   break;
+   node->dispatch.graph = graph;
+   }
 
return graph != NULL ? __graph_sched_node_enqueue(node, graph) : false;
 }
diff --git a/lib/graph/rte_graph_worker_common.h 
b/lib/graph/rte_graph_worker_common.h
index d3ec88519d..aef0f65673 100644
--- a/lib/graph/rte_graph_worker_common.h
+++ b/lib/graph/rte_graph_worker_common.h
@@ -110,6 +110,7 @@ struct __rte_cache_aligned rte_node {
unsigned int lcore_id;  /**< Node running lcore. */
uint64_t total_sched_objs; /**< Number of objects 
scheduled. */
uint64_t total_sched_fail; /**< Number of scheduled 
failure. */
+   struct rte_graph *graph;  /**< Graph corresponding to 
lcore_id. */
} dispatch;
};
 
-- 
2.27.0



Re: [PATCH] test/bonding: fix active backup rx test

2024-12-15 Thread lihuisong (C)



在 2024/12/14 0:56, Stephen Hemminger 写道:

On Fri, 13 Dec 2024 14:57:23 +0800
"lihuisong (C)"  wrote:


Hi Stephen,

This patch looks good to me.

But this test case still runs failure when I run "link_bonding_autotest"
twice. like:
-->
...
EAL: Test assert configure_ethdev line 181 failed: rte_eth_dev_configure
for port 7 failed
EAL: Test assert initialize_bonding_device_with_members line 1138
failed: Failed to configure bonding port (7) in mode 3 with (4) members.
EAL: Test assert
test_broadcast_verify_member_link_status_change_behaviour line 4060
failed: Failed to initialise bonding device
   + TestCase [62] :
test_broadcast_verify_member_link_status_change_behaviour failed
ETHDEV: Invalid port_id=7
EAL: Test assert configure_ethdev line 181 failed: rte_eth_dev_configure
for port 7 failed
EAL: Test assert test_reconfigure_bonding_device line 4162 failed:
failed to reconfigure bonding device
   + TestCase [63] : test_reconfigure_bonding_device failed
ETHDEV: Invalid port_id=7
   + TestCase [64] : test_close_bonding_device succeeded
ETHDEV: Invalid port_id=7
EAL: Test assert remove_members_and_stop_bonding_device line 659 failed:
Failed to stop bonding port 7
   + --- +
   + Test Suite Summary : Link Bonding Unit Test Suite
   + --- +
   + Tests Total :   65
   + Tests Skipped :  0
   + Tests Executed :    65
   + Tests Unsupported:   0
   + Tests Passed :   5
   + Tests Failed :  60
   + --- +
Test Failed


I guess the bonding use case needs to close all bonding devices.


The test has lots of issues that would make it bad to run twice.
Like leaking mbufs, etc.
But these always existed and will leave that to bonding maintainers to fix.

ok, these issues aren't related to this patch and can be be fixed later.

.


Re: [PATCH v2] test/bonding: fix active backup rx test

2024-12-15 Thread lihuisong (C)

LGTM
Acked-by: Huisong Li 
Tested-by: Huisong Li 
在 2024/12/14 1:17, Stephen Hemminger 写道:

The test had incorrect assumptions about how active backup
should work. When in active backup mode, the secondary (not primary)
ports should be ignored. The test was always broken since initially
written but earlier bug was masking the part of the test which
tested non-primary ports.

Bugzilla ID: 1589
Fixes: 112ce3917674 ("test/bonding: fix loop on members")
Cc: sta...@dpdk.org

Signed-off-by: Stephen Hemminger 
---
v2 - fix checkpatch warning from long line

  app/test/test_link_bonding.c | 69 ++--
  1 file changed, 34 insertions(+), 35 deletions(-)

diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c
index b752a5ecbf..19b064771a 100644
--- a/app/test/test_link_bonding.c
+++ b/app/test/test_link_bonding.c
@@ -2246,49 +2246,48 @@ test_activebackup_rx_burst(void)

virtual_ethdev_add_mbufs_to_rx_queue(test_params->member_port_ids[i],
&gen_pkt_burst[0], burst_size);
  
+		/* Expect burst if this was the active port, zero otherwise */

+   unsigned int rx_expect
+   = (test_params->member_port_ids[i] == primary_port) ? 
burst_size : 0;
+
/* Call rx burst on bonding device */
-   
TEST_ASSERT_EQUAL(rte_eth_rx_burst(test_params->bonding_port_id, 0,
-   &rx_pkt_burst[0], MAX_PKT_BURST), burst_size,
-   "rte_eth_rx_burst failed");
+   unsigned int rx_count = 
rte_eth_rx_burst(test_params->bonding_port_id, 0,
+&rx_pkt_burst[0], 
MAX_PKT_BURST);
+   TEST_ASSERT_EQUAL(rx_count, rx_expect,
+ "rte_eth_rx_burst (%u) not as expected (%u)",
+ rx_count, rx_expect);
  
-		if (test_params->member_port_ids[i] == primary_port) {

-   /* Verify bonding device rx count */
-   rte_eth_stats_get(test_params->bonding_port_id, 
&port_stats);
-   TEST_ASSERT_EQUAL(port_stats.ipackets, 
(uint64_t)burst_size,
-   "Bonding Port (%d) ipackets value (%u) not 
as expected (%d)",
+   /* Verify bonding device rx count */
+   rte_eth_stats_get(test_params->bonding_port_id, &port_stats);
+   TEST_ASSERT_EQUAL(port_stats.ipackets, rx_expect,
+ "Bonding Port (%d) ipackets value (%u) not as 
expected (%u)",
test_params->bonding_port_id,
-   (unsigned int)port_stats.ipackets, 
burst_size);
+ (unsigned int)port_stats.ipackets, rx_expect);
  
-			/* Verify bonding member devices rx count */

-   for (j = 0; j < test_params->bonding_member_count; j++) 
{
-   rte_eth_stats_get(test_params->member_port_ids[j], 
&port_stats);
-   if (i == j) {
-   TEST_ASSERT_EQUAL(port_stats.ipackets, 
(uint64_t)burst_size,
-   "Member Port (%d) ipackets 
value (%u) not as "
-   "expected (%d)",
-   
test_params->member_port_ids[i],
-   (unsigned 
int)port_stats.ipackets,
-   burst_size);
-   } else {
-   TEST_ASSERT_EQUAL(port_stats.ipackets, 
0,
-   "Member Port (%d) ipackets 
value (%u) not as "
-   "expected (%d)\n",
-   
test_params->member_port_ids[i],
-   (unsigned 
int)port_stats.ipackets, 0);
-   }
-   }
-   } else {
-   for (j = 0; j < test_params->bonding_member_count; j++) 
{
-   rte_eth_stats_get(test_params->member_port_ids[j], 
&port_stats);
+   for (j = 0; j < test_params->bonding_member_count; j++) {
+   rte_eth_stats_get(test_params->member_port_ids[j], 
&port_stats);
+   if (i == j) {
+   TEST_ASSERT_EQUAL(port_stats.ipackets, 
rx_expect,
+ "Member Port (%d) ipackets (%u) not as 
expected (%d)",
+ test_params->member_port_ids[i],
+ (unsigned int)port_stats.ipackets, 
rx_expect);
+
+