xref: /linux/net/bridge/br_private_mrp.h (revision 40e79150c1686263e6a031d7702aec63aff31332)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef _BR_PRIVATE_MRP_H_
4 #define _BR_PRIVATE_MRP_H_
5 
6 #include "br_private.h"
7 #include <uapi/linux/mrp_bridge.h>
8 
9 struct br_mrp {
10 	/* list of mrp instances */
11 	struct list_head		__rcu list;
12 
13 	struct net_bridge_port __rcu	*p_port;
14 	struct net_bridge_port __rcu	*s_port;
15 
16 	u32				ring_id;
17 
18 	enum br_mrp_ring_role_type	ring_role;
19 	u8				ring_role_offloaded;
20 	enum br_mrp_ring_state_type	ring_state;
21 	u32				ring_transitions;
22 
23 	struct delayed_work		test_work;
24 	u32				test_interval;
25 	unsigned long			test_end;
26 	u32				test_count_miss;
27 	u32				test_max_miss;
28 
29 	u32				seq_id;
30 
31 	struct rcu_head			rcu;
32 };
33 
34 /* br_mrp.c */
35 int br_mrp_add(struct net_bridge *br, struct br_mrp_instance *instance);
36 int br_mrp_del(struct net_bridge *br, struct br_mrp_instance *instance);
37 int br_mrp_set_port_state(struct net_bridge_port *p,
38 			  enum br_mrp_port_state_type state);
39 int br_mrp_set_port_role(struct net_bridge_port *p,
40 			 struct br_mrp_port_role *role);
41 int br_mrp_set_ring_state(struct net_bridge *br,
42 			  struct br_mrp_ring_state *state);
43 int br_mrp_set_ring_role(struct net_bridge *br, struct br_mrp_ring_role *role);
44 int br_mrp_start_test(struct net_bridge *br, struct br_mrp_start_test *test);
45 
46 /* br_mrp_switchdev.c */
47 int br_mrp_switchdev_add(struct net_bridge *br, struct br_mrp *mrp);
48 int br_mrp_switchdev_del(struct net_bridge *br, struct br_mrp *mrp);
49 int br_mrp_switchdev_set_ring_role(struct net_bridge *br, struct br_mrp *mrp,
50 				   enum br_mrp_ring_role_type role);
51 int br_mrp_switchdev_set_ring_state(struct net_bridge *br, struct br_mrp *mrp,
52 				    enum br_mrp_ring_state_type state);
53 int br_mrp_switchdev_send_ring_test(struct net_bridge *br, struct br_mrp *mrp,
54 				    u32 interval, u8 max_miss, u32 period);
55 int br_mrp_port_switchdev_set_state(struct net_bridge_port *p,
56 				    enum br_mrp_port_state_type state);
57 int br_mrp_port_switchdev_set_role(struct net_bridge_port *p,
58 				   enum br_mrp_port_role_type role);
59 
60 /* br_mrp_netlink.c  */
61 int br_mrp_port_open(struct net_device *dev, u8 loc);
62 
63 #endif /* _BR_PRIVATE_MRP_H */
64