bridge: mrp: Add support for role MRA
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Sat, 30 May 2020 18:09:48 +0000 (18:09 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Jun 2020 18:56:11 +0000 (11:56 -0700)
commitc6676e7d62cfb5cb7c1c5320a26f3634a11afdb0
treeac66bfc38aaea7b6f0cd6dfc0cd4a0a884e88a4d
parent4b3a61b030d1131dcf3633a276158a3d0a435a47
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>
include/net/switchdev.h
include/uapi/linux/if_bridge.h
include/uapi/linux/mrp_bridge.h
net/bridge/br_mrp.c
net/bridge/br_mrp_netlink.c
net/bridge/br_mrp_switchdev.c
net/bridge/br_private_mrp.h