aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_private_mrp.h
diff options
context:
space:
mode:
authorHoratiu Vultur <horatiu.vultur@microchip.com>2020-05-30 18:09:48 +0000
committerDavid S. Miller <davem@davemloft.net>2020-06-01 11:56:11 -0700
commitc6676e7d62cfb5cb7c1c5320a26f3634a11afdb0 (patch)
treeac66bfc38aaea7b6f0cd6dfc0cd4a0a884e88a4d /net/bridge/br_private_mrp.h
parentbridge: mrp: Set the priority of MRP instance (diff)
downloadlinux-dev-c6676e7d62cfb5cb7c1c5320a26f3634a11afdb0.tar.xz
linux-dev-c6676e7d62cfb5cb7c1c5320a26f3634a11afdb0.zip
bridge: mrp: Add support for role MRA
A node that has the MRA role, it can behave as MRM or MRC. Initially it starts as MRM and sends MRP_Test frames on both ring ports. If it detects that there are MRP_Test send by another MRM, then it checks if these frames have a lower priority than itself. In this case it would send MRP_Nack frames to notify the other node that it needs to stop sending MRP_Test frames. If it receives a MRP_Nack frame then it stops sending MRP_Test frames and starts to behave as a MRC but it would continue to monitor the MRP_Test frames send by MRM. If at a point the MRM stops to send MRP_Test frames it would get the MRM role and start to send MRP_Test frames. Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_private_mrp.h')
-rw-r--r--net/bridge/br_private_mrp.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/bridge/br_private_mrp.h b/net/bridge/br_private_mrp.h
index 558941ce2366..33b255e38ffe 100644
--- a/net/bridge/br_private_mrp.h
+++ b/net/bridge/br_private_mrp.h
@@ -26,6 +26,7 @@ struct br_mrp {
unsigned long test_end;
u32 test_count_miss;
u32 test_max_miss;
+ bool test_monitor;
u32 seq_id;
@@ -52,7 +53,8 @@ int br_mrp_switchdev_set_ring_role(struct net_bridge *br, struct br_mrp *mrp,
int br_mrp_switchdev_set_ring_state(struct net_bridge *br, struct br_mrp *mrp,
enum br_mrp_ring_state_type state);
int br_mrp_switchdev_send_ring_test(struct net_bridge *br, struct br_mrp *mrp,
- u32 interval, u8 max_miss, u32 period);
+ u32 interval, u8 max_miss, u32 period,
+ bool monitor);
int br_mrp_port_switchdev_set_state(struct net_bridge_port *p,
enum br_mrp_port_state_type state);
int br_mrp_port_switchdev_set_role(struct net_bridge_port *p,