staging: dpaa2-switch: add a dpaa2_switch_ prefix to all functions in ethsw-ethtool.c
[platform/kernel/linux-starfive.git] / drivers / staging / fsl-dpaa2 / ethsw / ethsw.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * DPAA2 Ethernet Switch declarations
4  *
5  * Copyright 2014-2016 Freescale Semiconductor Inc.
6  * Copyright 2017-2018 NXP
7  *
8  */
9
10 #ifndef __ETHSW_H
11 #define __ETHSW_H
12
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>
20
21 #include "dpsw.h"
22
23 /* Number of IRQs supported */
24 #define DPSW_IRQ_NUM    2
25
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
34
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)
39
40 #define ETHSW_FEATURE_MAC_ADDR  BIT(0)
41
42 extern const struct ethtool_ops dpaa2_switch_port_ethtool_ops;
43
44 struct ethsw_core;
45
46 /* Per port private data */
47 struct ethsw_port_priv {
48         struct net_device       *netdev;
49         u16                     idx;
50         struct ethsw_core       *ethsw_data;
51         u8                      link_state;
52         u8                      stp_state;
53         bool                    flood;
54
55         u8                      vlans[VLAN_VID_MASK + 1];
56         u16                     pvid;
57         struct net_device       *bridge_dev;
58 };
59
60 /* Switch data */
61 struct ethsw_core {
62         struct device                   *dev;
63         struct fsl_mc_io                *mc_io;
64         u16                             dpsw_handle;
65         struct dpsw_attr                sw_attr;
66         u16                             major, minor;
67         unsigned long                   features;
68         int                             dev_id;
69         struct ethsw_port_priv          **ports;
70
71         u8                              vlans[VLAN_VID_MASK + 1];
72         bool                            learning;
73
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;
78 };
79
80 #endif  /* __ETHSW_H */