>From e0d636846fcb37e6d0eeb93aeb1ad89fb392e126 Mon Sep 17 00:00:00 2001
From: Cyprian Lech <[email protected]>
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 <[email protected]>
---
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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev