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