1 /* SPDX-License-Identifier: GPL-2.0 */
3 * DPAA2 Ethernet Switch declarations
5 * Copyright 2014-2016 Freescale Semiconductor Inc.
6 * Copyright 2017-2018 NXP
13 #include <linux/netdevice.h>
14 #include <linux/etherdevice.h>
15 #include <linux/rtnetlink.h>
16 #include <linux/if_vlan.h>
17 #include <uapi/linux/if_bridge.h>
18 #include <net/switchdev.h>
19 #include <linux/if_bridge.h>
23 /* Number of IRQs supported */
24 #define DPSW_IRQ_NUM 2
26 /* Port is member of VLAN */
27 #define ETHSW_VLAN_MEMBER 1
28 /* VLAN to be treated as untagged on egress */
29 #define ETHSW_VLAN_UNTAGGED 2
30 /* Untagged frames will be assigned to this VLAN */
31 #define ETHSW_VLAN_PVID 4
32 /* VLAN configured on the switch */
33 #define ETHSW_VLAN_GLOBAL 8
35 /* Maximum Frame Length supported by HW (currently 10k) */
36 #define DPAA2_MFL (10 * 1024)
37 #define ETHSW_MAX_FRAME_LENGTH (DPAA2_MFL - VLAN_ETH_HLEN - ETH_FCS_LEN)
38 #define ETHSW_L2_MAX_FRM(mtu) ((mtu) + VLAN_ETH_HLEN + ETH_FCS_LEN)
40 #define ETHSW_FEATURE_MAC_ADDR BIT(0)
42 extern const struct ethtool_ops dpaa2_switch_port_ethtool_ops;
46 /* Per port private data */
47 struct ethsw_port_priv {
48 struct net_device *netdev;
50 struct ethsw_core *ethsw_data;
55 u8 vlans[VLAN_VID_MASK + 1];
57 struct net_device *bridge_dev;
63 struct fsl_mc_io *mc_io;
65 struct dpsw_attr sw_attr;
67 unsigned long features;
69 struct ethsw_port_priv **ports;
71 u8 vlans[VLAN_VID_MASK + 1];
74 struct notifier_block port_nb;
75 struct notifier_block port_switchdev_nb;
76 struct notifier_block port_switchdevb_nb;
77 struct workqueue_struct *workqueue;
80 #endif /* __ETHSW_H */