diff options
Diffstat (limited to 'net/switchdev/switchdev.c')
| -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 | } |
