1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef DSA_LOOP_H 3 #define DSA_LOOP_H 4 5 #include <linux/types.h> 6 #include <linux/ethtool.h> 7 #include <net/dsa.h> 8 9 struct dsa_loop_vlan { 10 u16 members; 11 u16 untagged; 12 }; 13 14 struct dsa_loop_mib_entry { 15 char name[ETH_GSTRING_LEN]; 16 unsigned long val; 17 }; 18 19 enum dsa_loop_mib_counters { 20 DSA_LOOP_PHY_READ_OK, 21 DSA_LOOP_PHY_READ_ERR, 22 DSA_LOOP_PHY_WRITE_OK, 23 DSA_LOOP_PHY_WRITE_ERR, 24 __DSA_LOOP_CNT_MAX, 25 }; 26 27 struct dsa_loop_port { 28 struct dsa_loop_mib_entry mib[__DSA_LOOP_CNT_MAX]; 29 u16 pvid; 30 int mtu; 31 }; 32 33 struct dsa_loop_priv { 34 struct mii_bus *bus; 35 unsigned int port_base; 36 struct dsa_loop_vlan vlans[VLAN_N_VID]; 37 struct net_device *netdev; 38 struct dsa_loop_port ports[DSA_MAX_PORTS]; 39 }; 40 41 #endif /* DSA_LOOP_H */ 42