diff options
Diffstat (limited to 'net/bridge/br_stp.c')
| -rw-r--r-- | net/bridge/br_stp.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c index b3cca126b103..9cb7044d0801 100644 --- a/net/bridge/br_stp.c +++ b/net/bridge/br_stp.c | |||
| @@ -30,13 +30,6 @@ static const char *const br_port_state_names[] = { | |||
| 30 | [BR_STATE_BLOCKING] = "blocking", | 30 | [BR_STATE_BLOCKING] = "blocking", |
| 31 | }; | 31 | }; |
| 32 | 32 | ||
| 33 | void br_log_state(const struct net_bridge_port *p) | ||
| 34 | { | ||
| 35 | br_info(p->br, "port %u(%s) entered %s state\n", | ||
| 36 | (unsigned int) p->port_no, p->dev->name, | ||
| 37 | br_port_state_names[p->state]); | ||
| 38 | } | ||
| 39 | |||
| 40 | void br_set_state(struct net_bridge_port *p, unsigned int state) | 33 | void br_set_state(struct net_bridge_port *p, unsigned int state) |
| 41 | { | 34 | { |
| 42 | struct switchdev_attr attr = { | 35 | struct switchdev_attr attr = { |
| @@ -52,6 +45,10 @@ void br_set_state(struct net_bridge_port *p, unsigned int state) | |||
| 52 | if (err && err != -EOPNOTSUPP) | 45 | if (err && err != -EOPNOTSUPP) |
| 53 | br_warn(p->br, "error setting offload STP state on port %u(%s)\n", | 46 | br_warn(p->br, "error setting offload STP state on port %u(%s)\n", |
| 54 | (unsigned int) p->port_no, p->dev->name); | 47 | (unsigned int) p->port_no, p->dev->name); |
| 48 | else | ||
| 49 | br_info(p->br, "port %u(%s) entered %s state\n", | ||
| 50 | (unsigned int) p->port_no, p->dev->name, | ||
| 51 | br_port_state_names[p->state]); | ||
| 55 | } | 52 | } |
| 56 | 53 | ||
| 57 | /* called under bridge lock */ | 54 | /* called under bridge lock */ |
| @@ -126,7 +123,6 @@ static void br_root_port_block(const struct net_bridge *br, | |||
| 126 | (unsigned int) p->port_no, p->dev->name); | 123 | (unsigned int) p->port_no, p->dev->name); |
| 127 | 124 | ||
| 128 | br_set_state(p, BR_STATE_LISTENING); | 125 | br_set_state(p, BR_STATE_LISTENING); |
| 129 | br_log_state(p); | ||
| 130 | br_ifinfo_notify(RTM_NEWLINK, p); | 126 | br_ifinfo_notify(RTM_NEWLINK, p); |
| 131 | 127 | ||
| 132 | if (br->forward_delay > 0) | 128 | if (br->forward_delay > 0) |
| @@ -407,7 +403,6 @@ static void br_make_blocking(struct net_bridge_port *p) | |||
| 407 | br_topology_change_detection(p->br); | 403 | br_topology_change_detection(p->br); |
| 408 | 404 | ||
| 409 | br_set_state(p, BR_STATE_BLOCKING); | 405 | br_set_state(p, BR_STATE_BLOCKING); |
| 410 | br_log_state(p); | ||
| 411 | br_ifinfo_notify(RTM_NEWLINK, p); | 406 | br_ifinfo_notify(RTM_NEWLINK, p); |
| 412 | 407 | ||
| 413 | del_timer(&p->forward_delay_timer); | 408 | del_timer(&p->forward_delay_timer); |
| @@ -431,7 +426,6 @@ static void br_make_forwarding(struct net_bridge_port *p) | |||
| 431 | else | 426 | else |
| 432 | br_set_state(p, BR_STATE_LEARNING); | 427 | br_set_state(p, BR_STATE_LEARNING); |
| 433 | 428 | ||
| 434 | br_log_state(p); | ||
| 435 | br_ifinfo_notify(RTM_NEWLINK, p); | 429 | br_ifinfo_notify(RTM_NEWLINK, p); |
| 436 | 430 | ||
| 437 | if (br->forward_delay != 0) | 431 | if (br->forward_delay != 0) |
| @@ -568,6 +562,14 @@ int br_set_max_age(struct net_bridge *br, unsigned long val) | |||
| 568 | 562 | ||
| 569 | } | 563 | } |
| 570 | 564 | ||
| 565 | /* Set time interval that dynamic forwarding entries live | ||
| 566 | * For pure software bridge, allow values outside the 802.1 | ||
| 567 | * standard specification for special cases: | ||
| 568 | * 0 - entry never ages (all permanant) | ||
| 569 | * 1 - entry disappears (no persistance) | ||
| 570 | * | ||
| 571 | * Offloaded switch entries maybe more restrictive | ||
| 572 | */ | ||
| 571 | int br_set_ageing_time(struct net_bridge *br, u32 ageing_time) | 573 | int br_set_ageing_time(struct net_bridge *br, u32 ageing_time) |
| 572 | { | 574 | { |
| 573 | struct switchdev_attr attr = { | 575 | struct switchdev_attr attr = { |
| @@ -579,11 +581,8 @@ int br_set_ageing_time(struct net_bridge *br, u32 ageing_time) | |||
| 579 | unsigned long t = clock_t_to_jiffies(ageing_time); | 581 | unsigned long t = clock_t_to_jiffies(ageing_time); |
| 580 | int err; | 582 | int err; |
| 581 | 583 | ||
| 582 | if (t < BR_MIN_AGEING_TIME || t > BR_MAX_AGEING_TIME) | ||
| 583 | return -ERANGE; | ||
| 584 | |||
| 585 | err = switchdev_port_attr_set(br->dev, &attr); | 584 | err = switchdev_port_attr_set(br->dev, &attr); |
| 586 | if (err) | 585 | if (err && err != -EOPNOTSUPP) |
| 587 | return err; | 586 | return err; |
| 588 | 587 | ||
| 589 | br->ageing_time = t; | 588 | br->ageing_time = t; |
