Now that all providers have implemented the port APIs,
validate them on registration.

Signed-off-by: Eelco Chaudron <[email protected]>
---
 lib/dpif-offload.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/lib/dpif-offload.c b/lib/dpif-offload.c
index e8d96aef9..4045b0953 100644
--- a/lib/dpif-offload.c
+++ b/lib/dpif-offload.c
@@ -144,7 +144,9 @@ dp_offload_initialize(void)
     for (int i = 0; i < ARRAY_SIZE(base_dpif_offload_classes); i++) {
         ovs_assert(base_dpif_offload_classes[i]->open
                    && base_dpif_offload_classes[i]->close
-                   && base_dpif_offload_classes[i]->can_offload);
+                   && base_dpif_offload_classes[i]->can_offload
+                   && base_dpif_offload_classes[i]->port_add
+                   && base_dpif_offload_classes[i]->port_del);
 
         dpif_offload_register_provider(base_dpif_offload_classes[i]);
     }
@@ -428,10 +430,6 @@ dpif_offload_port_add(struct dpif *dpif, struct netdev 
*netdev,
     }
 
     LIST_FOR_EACH (offload, dpif_list_node, &dp_offload->offload_providers) {
-        if (!offload->class->port_add) {
-            continue;
-        }
-
         if (offload->class->can_offload(offload, netdev)) {
             int err = offload->class->port_add(offload, netdev, port_no);
             if (!err) {
@@ -463,13 +461,7 @@ dpif_offload_port_del(struct dpif *dpif, odp_port_t 
port_no)
     }
 
     LIST_FOR_EACH (offload, dpif_list_node, &dp_offload->offload_providers) {
-        int err;
-
-        if (!offload->class->port_del) {
-            continue;
-        }
-
-        err = offload->class->port_del(offload, port_no);
+        int err = offload->class->port_del(offload, port_no);
         if (err) {
             VLOG_ERR("Failed deleting port_no %d from dpif-offload provider "
                      "%s, error %s", port_no, dpif_offload_name(offload),
-- 
2.50.1

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

Reply via email to