| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef DSA_LOOP_H |
| #define DSA_LOOP_H |
| |
| #include <linux/types.h> |
| #include <linux/ethtool.h> |
| #include <net/dsa.h> |
| |
| struct dsa_loop_vlan { |
| u16 members; |
| u16 untagged; |
| }; |
| |
| struct dsa_loop_mib_entry { |
| char name[ETH_GSTRING_LEN]; |
| unsigned long val; |
| }; |
| |
| enum dsa_loop_mib_counters { |
| DSA_LOOP_PHY_READ_OK, |
| DSA_LOOP_PHY_READ_ERR, |
| DSA_LOOP_PHY_WRITE_OK, |
| DSA_LOOP_PHY_WRITE_ERR, |
| __DSA_LOOP_CNT_MAX, |
| }; |
| |
| struct dsa_loop_port { |
| struct dsa_loop_mib_entry mib[__DSA_LOOP_CNT_MAX]; |
| u16 pvid; |
| int mtu; |
| }; |
| |
| struct dsa_loop_priv { |
| struct mii_bus *bus; |
| unsigned int port_base; |
| struct dsa_loop_vlan vlans[VLAN_N_VID]; |
| struct net_device *netdev; |
| struct dsa_loop_port ports[DSA_MAX_PORTS]; |
| }; |
| |
| #endif /* DSA_LOOP_H */ |