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 <[email protected]>
---
 lib/dpif-offload-dummy.c | 24 +++++++++---------------
 lib/dummy.h              |  1 -
 lib/netdev-dummy.c       |  1 -
 3 files changed, 9 insertions(+), 17 deletions(-)

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);
 }
-- 
2.52.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to