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