Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #ifndef _BR_PRIVATE_MRP_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) #define _BR_PRIVATE_MRP_H_
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #include "br_private.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <uapi/linux/mrp_bridge.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) struct br_mrp {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 	/* list of mrp instances */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 	struct list_head		list;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	struct net_bridge_port __rcu	*p_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	struct net_bridge_port __rcu	*s_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	struct net_bridge_port __rcu	*i_port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	u32				ring_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	u16				in_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	u16				prio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	enum br_mrp_ring_role_type	ring_role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	u8				ring_role_offloaded;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	enum br_mrp_ring_state_type	ring_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	u32				ring_transitions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	enum br_mrp_in_role_type	in_role;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	u8				in_role_offloaded;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	enum br_mrp_in_state_type	in_state;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	u32				in_transitions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	struct delayed_work		test_work;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	u32				test_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	unsigned long			test_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	u32				test_count_miss;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 	u32				test_max_miss;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	bool				test_monitor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	struct delayed_work		in_test_work;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	u32				in_test_interval;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	unsigned long			in_test_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	u32				in_test_count_miss;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	u32				in_test_max_miss;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	u32				seq_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	struct rcu_head			rcu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) /* br_mrp.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) int br_mrp_add(struct net_bridge *br, struct br_mrp_instance *instance);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) int br_mrp_del(struct net_bridge *br, struct br_mrp_instance *instance);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) int br_mrp_set_port_state(struct net_bridge_port *p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 			  enum br_mrp_port_state_type state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) int br_mrp_set_port_role(struct net_bridge_port *p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 			 enum br_mrp_port_role_type role);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) int br_mrp_set_ring_state(struct net_bridge *br,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 			  struct br_mrp_ring_state *state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) int br_mrp_set_ring_role(struct net_bridge *br, struct br_mrp_ring_role *role);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) int br_mrp_start_test(struct net_bridge *br, struct br_mrp_start_test *test);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) int br_mrp_set_in_state(struct net_bridge *br, struct br_mrp_in_state *state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) int br_mrp_set_in_role(struct net_bridge *br, struct br_mrp_in_role *role);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) int br_mrp_start_in_test(struct net_bridge *br,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 			 struct br_mrp_start_in_test *test);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) /* br_mrp_switchdev.c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) int br_mrp_switchdev_add(struct net_bridge *br, struct br_mrp *mrp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) int br_mrp_switchdev_del(struct net_bridge *br, struct br_mrp *mrp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) int br_mrp_switchdev_set_ring_role(struct net_bridge *br, struct br_mrp *mrp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 				   enum br_mrp_ring_role_type role);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) int br_mrp_switchdev_set_ring_state(struct net_bridge *br, struct br_mrp *mrp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 				    enum br_mrp_ring_state_type state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) int br_mrp_switchdev_send_ring_test(struct net_bridge *br, struct br_mrp *mrp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 				    u32 interval, u8 max_miss, u32 period,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 				    bool monitor);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) int br_mrp_port_switchdev_set_state(struct net_bridge_port *p, u32 state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) int br_mrp_port_switchdev_set_role(struct net_bridge_port *p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 				   enum br_mrp_port_role_type role);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) int br_mrp_switchdev_set_in_role(struct net_bridge *br, struct br_mrp *mrp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 				 u16 in_id, u32 ring_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 				 enum br_mrp_in_role_type role);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) int br_mrp_switchdev_set_in_state(struct net_bridge *br, struct br_mrp *mrp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 				  enum br_mrp_in_state_type state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) int br_mrp_switchdev_send_in_test(struct net_bridge *br, struct br_mrp *mrp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 				  u32 interval, u8 max_miss, u32 period);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) /* br_mrp_netlink.c  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) int br_mrp_ring_port_open(struct net_device *dev, u8 loc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) int br_mrp_in_port_open(struct net_device *dev, u8 loc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #endif /* _BR_PRIVATE_MRP_H */