diff options
Diffstat (limited to 'net/switchdev')
-rw-r--r-- | net/switchdev/switchdev.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c index 84f77a054025..9f2add3cba26 100644 --- a/net/switchdev/switchdev.c +++ b/net/switchdev/switchdev.c | |||
@@ -171,8 +171,10 @@ int switchdev_port_attr_set(struct net_device *dev, struct switchdev_attr *attr) | |||
171 | * released. | 171 | * released. |
172 | */ | 172 | */ |
173 | 173 | ||
174 | attr->trans = SWITCHDEV_TRANS_ABORT; | 174 | if (err != -EOPNOTSUPP) { |
175 | __switchdev_port_attr_set(dev, attr); | 175 | attr->trans = SWITCHDEV_TRANS_ABORT; |
176 | __switchdev_port_attr_set(dev, attr); | ||
177 | } | ||
176 | 178 | ||
177 | return err; | 179 | return err; |
178 | } | 180 | } |
@@ -249,8 +251,10 @@ int switchdev_port_obj_add(struct net_device *dev, struct switchdev_obj *obj) | |||
249 | * released. | 251 | * released. |
250 | */ | 252 | */ |
251 | 253 | ||
252 | obj->trans = SWITCHDEV_TRANS_ABORT; | 254 | if (err != -EOPNOTSUPP) { |
253 | __switchdev_port_obj_add(dev, obj); | 255 | obj->trans = SWITCHDEV_TRANS_ABORT; |
256 | __switchdev_port_obj_add(dev, obj); | ||
257 | } | ||
254 | 258 | ||
255 | return err; | 259 | return err; |
256 | } | 260 | } |