1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2 3 #ifndef _UAPI_LINUX_MRP_BRIDGE_H_ 4 #define _UAPI_LINUX_MRP_BRIDGE_H_ 5 6 #include <linux/types.h> 7 #include <linux/if_ether.h> 8 9 #define MRP_MAX_FRAME_LENGTH 200 10 #define MRP_DEFAULT_PRIO 0x8000 11 #define MRP_DOMAIN_UUID_LENGTH 16 12 #define MRP_VERSION 1 13 #define MRP_FRAME_PRIO 7 14 15 enum br_mrp_ring_role_type { 16 BR_MRP_RING_ROLE_DISABLED, 17 BR_MRP_RING_ROLE_MRC, 18 BR_MRP_RING_ROLE_MRM, 19 }; 20 21 enum br_mrp_ring_state_type { 22 BR_MRP_RING_STATE_OPEN, 23 BR_MRP_RING_STATE_CLOSED, 24 }; 25 26 enum br_mrp_port_state_type { 27 BR_MRP_PORT_STATE_DISABLED, 28 BR_MRP_PORT_STATE_BLOCKED, 29 BR_MRP_PORT_STATE_FORWARDING, 30 BR_MRP_PORT_STATE_NOT_CONNECTED, 31 }; 32 33 enum br_mrp_port_role_type { 34 BR_MRP_PORT_ROLE_PRIMARY, 35 BR_MRP_PORT_ROLE_SECONDARY, 36 BR_MRP_PORT_ROLE_NONE, 37 }; 38 39 enum br_mrp_tlv_header_type { 40 BR_MRP_TLV_HEADER_END = 0x0, 41 BR_MRP_TLV_HEADER_COMMON = 0x1, 42 BR_MRP_TLV_HEADER_RING_TEST = 0x2, 43 BR_MRP_TLV_HEADER_RING_TOPO = 0x3, 44 BR_MRP_TLV_HEADER_RING_LINK_DOWN = 0x4, 45 BR_MRP_TLV_HEADER_RING_LINK_UP = 0x5, 46 }; 47 48 struct br_mrp_tlv_hdr { 49 __u8 type; 50 __u8 length; 51 }; 52 53 struct br_mrp_end_hdr { 54 struct br_mrp_tlv_hdr hdr; 55 }; 56 57 struct br_mrp_common_hdr { 58 __u16 seq_id; 59 __u8 domain[MRP_DOMAIN_UUID_LENGTH]; 60 }; 61 62 struct br_mrp_ring_test_hdr { 63 __u16 prio; 64 __u8 sa[ETH_ALEN]; 65 __u16 port_role; 66 __u16 state; 67 __u16 transitions; 68 __u32 timestamp; 69 }; 70 71 struct br_mrp_ring_topo_hdr { 72 __u16 prio; 73 __u8 sa[ETH_ALEN]; 74 __u16 interval; 75 }; 76 77 struct br_mrp_ring_link_hdr { 78 __u8 sa[ETH_ALEN]; 79 __u16 port_role; 80 __u16 interval; 81 __u16 blocked; 82 }; 83 84 #endif 85