diff options
Diffstat (limited to 'net/dsa/dsa2.c')
-rw-r--r-- | net/dsa/dsa2.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 405552ac4c08..8c4eccb0cfe6 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c | |||
@@ -264,6 +264,7 @@ static int dsa_port_setup(struct dsa_port *dp) | |||
264 | 264 | ||
265 | switch (dp->type) { | 265 | switch (dp->type) { |
266 | case DSA_PORT_TYPE_UNUSED: | 266 | case DSA_PORT_TYPE_UNUSED: |
267 | dsa_port_disable(dp); | ||
267 | break; | 268 | break; |
268 | case DSA_PORT_TYPE_CPU: | 269 | case DSA_PORT_TYPE_CPU: |
269 | memset(dlp, 0, sizeof(*dlp)); | 270 | memset(dlp, 0, sizeof(*dlp)); |
@@ -276,6 +277,10 @@ static int dsa_port_setup(struct dsa_port *dp) | |||
276 | err = dsa_port_link_register_of(dp); | 277 | err = dsa_port_link_register_of(dp); |
277 | if (err) | 278 | if (err) |
278 | return err; | 279 | return err; |
280 | |||
281 | err = dsa_port_enable(dp, NULL); | ||
282 | if (err) | ||
283 | return err; | ||
279 | break; | 284 | break; |
280 | case DSA_PORT_TYPE_DSA: | 285 | case DSA_PORT_TYPE_DSA: |
281 | memset(dlp, 0, sizeof(*dlp)); | 286 | memset(dlp, 0, sizeof(*dlp)); |
@@ -288,6 +293,10 @@ static int dsa_port_setup(struct dsa_port *dp) | |||
288 | err = dsa_port_link_register_of(dp); | 293 | err = dsa_port_link_register_of(dp); |
289 | if (err) | 294 | if (err) |
290 | return err; | 295 | return err; |
296 | |||
297 | err = dsa_port_enable(dp, NULL); | ||
298 | if (err) | ||
299 | return err; | ||
291 | break; | 300 | break; |
292 | case DSA_PORT_TYPE_USER: | 301 | case DSA_PORT_TYPE_USER: |
293 | memset(dlp, 0, sizeof(*dlp)); | 302 | memset(dlp, 0, sizeof(*dlp)); |
@@ -317,11 +326,13 @@ static void dsa_port_teardown(struct dsa_port *dp) | |||
317 | case DSA_PORT_TYPE_UNUSED: | 326 | case DSA_PORT_TYPE_UNUSED: |
318 | break; | 327 | break; |
319 | case DSA_PORT_TYPE_CPU: | 328 | case DSA_PORT_TYPE_CPU: |
329 | dsa_port_disable(dp); | ||
320 | dsa_tag_driver_put(dp->tag_ops); | 330 | dsa_tag_driver_put(dp->tag_ops); |
321 | devlink_port_unregister(dlp); | 331 | devlink_port_unregister(dlp); |
322 | dsa_port_link_unregister_of(dp); | 332 | dsa_port_link_unregister_of(dp); |
323 | break; | 333 | break; |
324 | case DSA_PORT_TYPE_DSA: | 334 | case DSA_PORT_TYPE_DSA: |
335 | dsa_port_disable(dp); | ||
325 | devlink_port_unregister(dlp); | 336 | devlink_port_unregister(dlp); |
326 | dsa_port_link_unregister_of(dp); | 337 | dsa_port_link_unregister_of(dp); |
327 | break; | 338 | break; |