]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net: bridge: mrp: Update ring transitions.
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Fri, 4 Jun 2021 10:37:47 +0000 (12:37 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 4 Jun 2021 21:41:28 +0000 (14:41 -0700)
According to the standard IEC 62439-2, the number of transitions needs
to be counted for each transition 'between' ring state open and ring
state closed and not from open state to closed state.

Therefore fix this for both ring and interconnect ring.

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_mrp.c

index cd2b1e424e54ef237208bbc3727d2cc4ae515019..f7012b7d7ce40304d2eddd02e518638f2ebe01c3 100644 (file)
@@ -627,8 +627,7 @@ int br_mrp_set_ring_state(struct net_bridge *br,
        if (!mrp)
                return -EINVAL;
 
-       if (mrp->ring_state == BR_MRP_RING_STATE_CLOSED &&
-           state->ring_state != BR_MRP_RING_STATE_CLOSED)
+       if (mrp->ring_state != state->ring_state)
                mrp->ring_transitions++;
 
        mrp->ring_state = state->ring_state;
@@ -715,8 +714,7 @@ int br_mrp_set_in_state(struct net_bridge *br, struct br_mrp_in_state *state)
        if (!mrp)
                return -EINVAL;
 
-       if (mrp->in_state == BR_MRP_IN_STATE_CLOSED &&
-           state->in_state != BR_MRP_IN_STATE_CLOSED)
+       if (mrp->in_state != state->in_state)
                mrp->in_transitions++;
 
        mrp->in_state = state->in_state;