diff mbox series

[ovs-dev,v2,2/2] dummy-offload: Use pmd_thread_lifecycle APIs for HW simulator.

Message ID f718486b7f0108a965c96c6a3b56d502a5248603.1775044381.git.echaudro@redhat.com
State New
Headers show
Series dpif-offload: Add PMD thread helpers and hardware offload simulation | expand

Checks

Context Check Description
ovsrobot/apply-robot fail apply and check: fail

Commit Message

Eelco Chaudron April 1, 2026, 11:57 a.m. UTC
Replace per-netdev dummy_netdev_hw_offload_run() callback with
PMD thread infrastructure. Move offload work processing into
dummy_pmd_thread_work_cb().

Signed-off-by: Eelco Chaudron <echaudro@redhat.com>
---
 lib/dpif-offload-dummy.c | 24 +++++++++---------------
 lib/dummy.h              |  1 -
 lib/netdev-dummy.c       |  1 -
 3 files changed, 9 insertions(+), 17 deletions(-)
diff mbox series

Patch

diff --git a/lib/dpif-offload-dummy.c b/lib/dpif-offload-dummy.c
index 80d6ce67c3..4335b199b9 100644
--- a/lib/dpif-offload-dummy.c
+++ b/lib/dpif-offload-dummy.c
@@ -972,15 +972,16 @@  dummy_netdev_simulate_offload(struct netdev *netdev, struct dp_packet *packet,
     return packet_stolen;
 }
 
-void
-dummy_netdev_hw_offload_run(struct netdev *netdev)
+static void
+dummy_pmd_thread_work_cb(unsigned core_id OVS_UNUSED, int numa_id OVS_UNUSED,
+                         void *ctx)
 {
-    const struct dpif_offload *offload = ovsrcu_get(
-        const struct dpif_offload *, &netdev->dpif_offload);
+    const struct dpif_offload *offload = ctx;
     struct dpif_offload_port *port_;
 
-    if (!dpif_offload_enabled() || !offload
-        || strcmp(dpif_offload_type(offload), "dummy")) {
+    COVERAGE_INC(dummy_offload_do_work);
+
+    if (!offload) {
         return;
     }
 
@@ -1023,13 +1024,6 @@  dummy_netdev_hw_offload_run(struct netdev *netdev)
     }
 }
 
-static void
-dummy_pmd_thread_work_cb(unsigned core_id OVS_UNUSED, int numa_id OVS_UNUSED,
-                         void *ctx OVS_UNUSED)
-{
-    COVERAGE_INC(dummy_offload_do_work);
-}
-
 static void
 dummy_pmd_thread_lifecycle(const struct dpif_offload *dpif_offload,
                            bool exit, unsigned core_id, int numa_id,
@@ -1050,9 +1044,9 @@  dummy_pmd_thread_lifecycle(const struct dpif_offload *dpif_offload,
     ovs_assert(!*callback || *callback == dummy_pmd_thread_work_cb);
 
     if (exit) {
-        free(*ctx);
+        *ctx = NULL;
     } else {
-        *ctx = *ctx ? *ctx : xstrdup("DUMMY_OFFLOAD_WORK");
+        *ctx = (void *) dpif_offload;
         *callback = dummy_pmd_thread_work_cb;
     }
 }
diff --git a/lib/dummy.h b/lib/dummy.h
index f250ae5933..312fbed17c 100644
--- a/lib/dummy.h
+++ b/lib/dummy.h
@@ -49,6 +49,5 @@  void ofpact_dummy_enable(void);
 bool is_dummy_netdev_class(const struct netdev_class *);
 bool dummy_netdev_simulate_offload(struct netdev *, struct dp_packet *,
                                    int queue_id, struct flow *);
-void dummy_netdev_hw_offload_run(struct netdev *);
 
 #endif /* dummy.h */
diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c
index d5e8599349..17ff436290 100644
--- a/lib/netdev-dummy.c
+++ b/lib/netdev-dummy.c
@@ -695,7 +695,6 @@  netdev_dummy_run(const struct netdev_class *netdev_class)
         ovs_mutex_lock(&dev->mutex);
         dummy_packet_conn_run(dev);
         ovs_mutex_unlock(&dev->mutex);
-        dummy_netdev_hw_offload_run(&dev->up);
     }
     ovs_mutex_unlock(&dummy_list_mutex);
 }