GNU Linux-libre 6.0.15-gnu
[releases.git] / include / linux / dsa / loop.h
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 */