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>
This commit is contained in:

committed by
David S. Miller

parent
4b3a61b030
commit
c6676e7d62
@@ -65,7 +65,8 @@ int br_mrp_switchdev_set_ring_role(struct net_bridge *br,
|
||||
|
||||
int br_mrp_switchdev_send_ring_test(struct net_bridge *br,
|
||||
struct br_mrp *mrp, u32 interval,
|
||||
u8 max_miss, u32 period)
|
||||
u8 max_miss, u32 period,
|
||||
bool monitor)
|
||||
{
|
||||
struct switchdev_obj_ring_test_mrp test = {
|
||||
.obj.orig_dev = br->dev,
|
||||
@@ -74,6 +75,7 @@ int br_mrp_switchdev_send_ring_test(struct net_bridge *br,
|
||||
.max_miss = max_miss,
|
||||
.ring_id = mrp->ring_id,
|
||||
.period = period,
|
||||
.monitor = monitor,
|
||||
};
|
||||
int err;
|
||||
|
||||
|
Reference in New Issue
Block a user