bridge: mrp: Extend bridge interface
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Sun, 26 Apr 2020 13:22:00 +0000 (15:22 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Apr 2020 18:40:25 +0000 (11:40 -0700)
To integrate MRP into the bridge, first the bridge needs to be aware of ports
that are part of an MRP ring and which rings are on the bridge.
Therefore extend bridge interface with the following:
- add new flag(BR_MPP_AWARE) to the net bridge ports, this bit will be
  set when the port is added to an MRP instance. In this way it knows if
  the frame was received on MRP ring port
- add new flag(BR_MRP_LOST_CONT) to the net bridge ports, this bit will be set
  when the port lost the continuity of MRP Test frames.
- add a list of MRP instances

Reviewed-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/if_bridge.h
net/bridge/br_private.h

index 9e57c4411734915a83c8c5fdc52ae334e22e8452..b3a8d3054af0f3fad0256bacf1250c9991b3e126 100644 (file)
@@ -47,6 +47,8 @@ struct br_ip_list {
 #define BR_BCAST_FLOOD         BIT(14)
 #define BR_NEIGH_SUPPRESS      BIT(15)
 #define BR_ISOLATED            BIT(16)
+#define BR_MRP_AWARE           BIT(17)
+#define BR_MRP_LOST_CONT       BIT(18)
 
 #define BR_DEFAULT_AGEING_TIME (300 * HZ)
 
index 1f97703a52ffbac36b4e5a176202a0ca18f40df1..835a70f8d3eac1fa4de9061199c3519c828c4dad 100644 (file)
@@ -428,6 +428,10 @@ struct net_bridge {
        int offload_fwd_mark;
 #endif
        struct hlist_head               fdb_list;
+
+#if IS_ENABLED(CONFIG_BRIDGE_MRP)
+       struct list_head                __rcu mrp_list;
+#endif
 };
 
 struct br_input_skb_cb {