DTS WG Meeting Minutes - November 21, 2024
# 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
# 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
# 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
# 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
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
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/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
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); + +