summaryrefslogtreecommitdiffstats
path: root/net/dsa/dsa2.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dsa/dsa2.c')
-rw-r--r--net/dsa/dsa2.c11
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;