Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v4.11-rc4 88 lines 2.6 kB view raw
1/* 2 * net/dsa/dsa_priv.h - Hardware switch handling 3 * Copyright (c) 2008-2009 Marvell Semiconductor 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 14#include <linux/phy.h> 15#include <linux/netdevice.h> 16#include <linux/netpoll.h> 17 18struct dsa_device_ops { 19 struct sk_buff *(*xmit)(struct sk_buff *skb, struct net_device *dev); 20 int (*rcv)(struct sk_buff *skb, struct net_device *dev, 21 struct packet_type *pt, struct net_device *orig_dev); 22}; 23 24struct dsa_slave_priv { 25 struct sk_buff * (*xmit)(struct sk_buff *skb, 26 struct net_device *dev); 27 28 /* DSA port data, such as switch, port index, etc. */ 29 struct dsa_port *dp; 30 31 /* 32 * The phylib phy_device pointer for the PHY connected 33 * to this port. 34 */ 35 struct phy_device *phy; 36 phy_interface_t phy_interface; 37 int old_link; 38 int old_pause; 39 int old_duplex; 40 41#ifdef CONFIG_NET_POLL_CONTROLLER 42 struct netpoll *netpoll; 43#endif 44 45 /* TC context */ 46 struct list_head mall_tc_list; 47}; 48 49/* dsa.c */ 50int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev, 51 struct dsa_port *dport, int port); 52void dsa_cpu_dsa_destroy(struct dsa_port *dport); 53const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol); 54int dsa_cpu_port_ethtool_setup(struct dsa_switch *ds); 55void dsa_cpu_port_ethtool_restore(struct dsa_switch *ds); 56 57/* slave.c */ 58extern const struct dsa_device_ops notag_netdev_ops; 59void dsa_slave_mii_bus_init(struct dsa_switch *ds); 60void dsa_cpu_port_ethtool_init(struct ethtool_ops *ops); 61int dsa_slave_create(struct dsa_switch *ds, struct device *parent, 62 int port, const char *name); 63void dsa_slave_destroy(struct net_device *slave_dev); 64int dsa_slave_suspend(struct net_device *slave_dev); 65int dsa_slave_resume(struct net_device *slave_dev); 66int dsa_slave_register_notifier(void); 67void dsa_slave_unregister_notifier(void); 68 69/* switch.c */ 70int dsa_switch_register_notifier(struct dsa_switch *ds); 71void dsa_switch_unregister_notifier(struct dsa_switch *ds); 72 73/* tag_dsa.c */ 74extern const struct dsa_device_ops dsa_netdev_ops; 75 76/* tag_edsa.c */ 77extern const struct dsa_device_ops edsa_netdev_ops; 78 79/* tag_trailer.c */ 80extern const struct dsa_device_ops trailer_netdev_ops; 81 82/* tag_brcm.c */ 83extern const struct dsa_device_ops brcm_netdev_ops; 84 85/* tag_qca.c */ 86extern const struct dsa_device_ops qca_netdev_ops; 87 88#endif