diff options
Diffstat (limited to 'net/dsa/dsa2.c')
-rw-r--r-- | net/dsa/dsa2.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index 56e46090526b..c442051d5a55 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c | |||
@@ -509,21 +509,22 @@ static int dsa_cpu_parse(struct dsa_port *port, u32 index, | |||
509 | dst->cpu_dp->netdev = ethernet_dev; | 509 | dst->cpu_dp->netdev = ethernet_dev; |
510 | } | 510 | } |
511 | 511 | ||
512 | /* Initialize cpu_port_mask now for drv->setup() | ||
513 | * to have access to a correct value, just like what | ||
514 | * net/dsa/dsa.c::dsa_switch_setup_one does. | ||
515 | */ | ||
516 | ds->cpu_port_mask |= BIT(index); | ||
517 | |||
512 | tag_protocol = ds->ops->get_tag_protocol(ds); | 518 | tag_protocol = ds->ops->get_tag_protocol(ds); |
513 | dst->tag_ops = dsa_resolve_tag_protocol(tag_protocol); | 519 | dst->tag_ops = dsa_resolve_tag_protocol(tag_protocol); |
514 | if (IS_ERR(dst->tag_ops)) { | 520 | if (IS_ERR(dst->tag_ops)) { |
515 | dev_warn(ds->dev, "No tagger for this switch\n"); | 521 | dev_warn(ds->dev, "No tagger for this switch\n"); |
522 | ds->cpu_port_mask &= ~BIT(index); | ||
516 | return PTR_ERR(dst->tag_ops); | 523 | return PTR_ERR(dst->tag_ops); |
517 | } | 524 | } |
518 | 525 | ||
519 | dst->rcv = dst->tag_ops->rcv; | 526 | dst->rcv = dst->tag_ops->rcv; |
520 | 527 | ||
521 | /* Initialize cpu_port_mask now for drv->setup() | ||
522 | * to have access to a correct value, just like what | ||
523 | * net/dsa/dsa.c::dsa_switch_setup_one does. | ||
524 | */ | ||
525 | ds->cpu_port_mask |= BIT(index); | ||
526 | |||
527 | return 0; | 528 | return 0; |
528 | } | 529 | } |
529 | 530 | ||