>From e0d636846fcb37e6d0eeb93aeb1ad89fb392e126 Mon Sep 17 00:00:00 2001 From: Cyprian Lech <cl...@plume.com> Date: Wed, 5 Jun 2019 14:20:08 +0200 Subject: [PATCH] netdev: Fix to disable netdev flow offloading
Netdev flow functions were called although hw-offload was disabled, e.g. netdev_flow_dump_create. It fixes problem: netlink_socket(revalidator5)|INFO|netlink dump request error (Operation not supported) Fixes: 53611f7b05 ("other-config: Add hw-offload switch to control netdev flow offloading") Signed-off-by: Cyprian Lech <cl...@plume.com> --- lib/netdev.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lib/netdev.c b/lib/netdev.c index 45b50f26c..4f5147e6e 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -2154,6 +2154,10 @@ netdev_flow_flush(struct netdev *netdev) { const struct netdev_class *class = netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_flush ? class->flow_flush(netdev) : EOPNOTSUPP); @@ -2164,6 +2168,10 @@ netdev_flow_dump_create(struct netdev *netdev, struct netdev_flow_dump **dump) { const struct netdev_class *class = netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_dump_create ? class->flow_dump_create(netdev, dump) : EOPNOTSUPP); @@ -2174,6 +2182,10 @@ netdev_flow_dump_destroy(struct netdev_flow_dump *dump) { const struct netdev_class *class = dump->netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_dump_destroy ? class->flow_dump_destroy(dump) : EOPNOTSUPP); @@ -2187,6 +2199,10 @@ netdev_flow_dump_next(struct netdev_flow_dump *dump, struct match *match, { const struct netdev_class *class = dump->netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_dump_next ? class->flow_dump_next(dump, match, actions, stats, attrs, ufid, rbuffer, wbuffer) @@ -2201,6 +2217,10 @@ netdev_flow_put(struct netdev *netdev, struct match *match, { const struct netdev_class *class = netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_put ? class->flow_put(netdev, match, actions, act_len, ufid, info, stats) @@ -2215,6 +2235,10 @@ netdev_flow_get(struct netdev *netdev, struct match *match, { const struct netdev_class *class = netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_get ? class->flow_get(netdev, match, actions, ufid, stats, attrs, buf) : EOPNOTSUPP); @@ -2226,6 +2250,10 @@ netdev_flow_del(struct netdev *netdev, const ovs_u128 *ufid, { const struct netdev_class *class = netdev->netdev_class; + if (!netdev_is_flow_api_enabled()) { + return EOPNOTSUPP; + } + return (class->flow_del ? class->flow_del(netdev, ufid, stats) : EOPNOTSUPP); -- 2.20.1 Best Regards, *Cyprian Lech* _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev