]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - net/dsa/dsa_priv.h
net: dsa: move VLAN filtering setter
[mirror_ubuntu-bionic-kernel.git] / net / dsa / dsa_priv.h
CommitLineData
91da11f8
LB
1/*
2 * net/dsa/dsa_priv.h - Hardware switch handling
e84665c9 3 * Copyright (c) 2008-2009 Marvell Semiconductor
91da11f8
LB
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 */
10
11#ifndef __DSA_PRIV_H
12#define __DSA_PRIV_H
13
91da11f8 14#include <linux/phy.h>
5075314e 15#include <linux/netdevice.h>
04ff53f9 16#include <linux/netpoll.h>
ea5dd34b 17#include <net/dsa.h>
5075314e
AD
18
19struct dsa_device_ops {
4ed70ce9 20 struct sk_buff *(*xmit)(struct sk_buff *skb, struct net_device *dev);
a86d8bec
FF
21 struct sk_buff *(*rcv)(struct sk_buff *skb, struct net_device *dev,
22 struct packet_type *pt,
23 struct net_device *orig_dev);
5075314e 24};
91da11f8 25
91da11f8 26struct dsa_slave_priv {
4ed70ce9 27 struct sk_buff * (*xmit)(struct sk_buff *skb,
5075314e 28 struct net_device *dev);
e84665c9 29
afdcf151
VD
30 /* DSA port data, such as switch, port index, etc. */
31 struct dsa_port *dp;
e84665c9
LB
32
33 /*
34 * The phylib phy_device pointer for the PHY connected
35 * to this port.
36 */
91da11f8 37 struct phy_device *phy;
0d8bcdd3
FF
38 phy_interface_t phy_interface;
39 int old_link;
40 int old_pause;
41 int old_duplex;
b73adef6 42
04ff53f9
FF
43#ifdef CONFIG_NET_POLL_CONTROLLER
44 struct netpoll *netpoll;
45#endif
f50f2127
FF
46
47 /* TC context */
48 struct list_head mall_tc_list;
91da11f8
LB
49};
50
91da11f8 51/* dsa.c */
9b8e895c 52int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev,
293784a8
FF
53 struct dsa_port *dport, int port);
54void dsa_cpu_dsa_destroy(struct dsa_port *dport);
39a7f2a4 55const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol);
0c73c523
FF
56int dsa_cpu_port_ethtool_setup(struct dsa_switch *ds);
57void dsa_cpu_port_ethtool_restore(struct dsa_switch *ds);
91da11f8 58
a6a71f19
VD
59/* legacy.c */
60int dsa_legacy_register(void);
61void dsa_legacy_unregister(void);
62
a40c175b
VD
63/* port.c */
64int dsa_port_set_state(struct dsa_port *dp, u8 state,
65 struct switchdev_trans *trans);
66void dsa_port_set_state_now(struct dsa_port *dp, u8 state);
cfbed329
VD
67int dsa_port_bridge_join(struct dsa_port *dp, struct net_device *br);
68void dsa_port_bridge_leave(struct dsa_port *dp, struct net_device *br);
4d61d304
VD
69int dsa_port_vlan_filtering(struct dsa_port *dp, bool vlan_filtering,
70 struct switchdev_trans *trans);
a40c175b 71
91da11f8 72/* slave.c */
5075314e 73extern const struct dsa_device_ops notag_netdev_ops;
91da11f8 74void dsa_slave_mii_bus_init(struct dsa_switch *ds);
af42192c 75void dsa_cpu_port_ethtool_init(struct ethtool_ops *ops);
d87d6f44 76int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
83c0afae 77 int port, const char *name);
cda5c15b 78void dsa_slave_destroy(struct net_device *slave_dev);
24462549
FF
79int dsa_slave_suspend(struct net_device *slave_dev);
80int dsa_slave_resume(struct net_device *slave_dev);
88e4f0ca
VD
81int dsa_slave_register_notifier(void);
82void dsa_slave_unregister_notifier(void);
91da11f8 83
f515f192
VD
84/* switch.c */
85int dsa_switch_register_notifier(struct dsa_switch *ds);
86void dsa_switch_unregister_notifier(struct dsa_switch *ds);
87
eb7b7211
AL
88/* tag_brcm.c */
89extern const struct dsa_device_ops brcm_netdev_ops;
90
cf85d08f 91/* tag_dsa.c */
3e8a72d1 92extern const struct dsa_device_ops dsa_netdev_ops;
cf85d08f 93
91da11f8 94/* tag_edsa.c */
3e8a72d1 95extern const struct dsa_device_ops edsa_netdev_ops;
91da11f8 96
eb7b7211
AL
97/* tag_lan9303.c */
98extern const struct dsa_device_ops lan9303_netdev_ops;
396138f0 99
eb7b7211
AL
100/* tag_mtk.c */
101extern const struct dsa_device_ops mtk_netdev_ops;
5037d532 102
cafdc45c
JC
103/* tag_qca.c */
104extern const struct dsa_device_ops qca_netdev_ops;
91da11f8 105
eb7b7211
AL
106/* tag_trailer.c */
107extern const struct dsa_device_ops trailer_netdev_ops;
e8fe177a 108
91da11f8 109#endif