Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.12-rc3 99 lines 2.8 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 struct sk_buff *(*rcv)(struct sk_buff *skb, struct net_device *dev, 21 struct packet_type *pt, 22 struct net_device *orig_dev); 23}; 24 25struct dsa_slave_priv { 26 struct sk_buff * (*xmit)(struct sk_buff *skb, 27 struct net_device *dev); 28 29 /* DSA port data, such as switch, port index, etc. */ 30 struct dsa_port *dp; 31 32 /* 33 * The phylib phy_device pointer for the PHY connected 34 * to this port. 35 */ 36 struct phy_device *phy; 37 phy_interface_t phy_interface; 38 int old_link; 39 int old_pause; 40 int old_duplex; 41 42#ifdef CONFIG_NET_POLL_CONTROLLER 43 struct netpoll *netpoll; 44#endif 45 46 /* TC context */ 47 struct list_head mall_tc_list; 48}; 49 50/* dsa.c */ 51int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev, 52 struct dsa_port *dport, int port); 53void dsa_cpu_dsa_destroy(struct dsa_port *dport); 54const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol); 55int dsa_cpu_port_ethtool_setup(struct dsa_switch *ds); 56void dsa_cpu_port_ethtool_restore(struct dsa_switch *ds); 57 58/* legacy.c */ 59int dsa_legacy_register(void); 60void dsa_legacy_unregister(void); 61 62/* slave.c */ 63extern const struct dsa_device_ops notag_netdev_ops; 64void dsa_slave_mii_bus_init(struct dsa_switch *ds); 65void dsa_cpu_port_ethtool_init(struct ethtool_ops *ops); 66int dsa_slave_create(struct dsa_switch *ds, struct device *parent, 67 int port, const char *name); 68void dsa_slave_destroy(struct net_device *slave_dev); 69int dsa_slave_suspend(struct net_device *slave_dev); 70int dsa_slave_resume(struct net_device *slave_dev); 71int dsa_slave_register_notifier(void); 72void dsa_slave_unregister_notifier(void); 73 74/* switch.c */ 75int dsa_switch_register_notifier(struct dsa_switch *ds); 76void dsa_switch_unregister_notifier(struct dsa_switch *ds); 77 78/* tag_dsa.c */ 79extern const struct dsa_device_ops dsa_netdev_ops; 80 81/* tag_edsa.c */ 82extern const struct dsa_device_ops edsa_netdev_ops; 83 84/* tag_trailer.c */ 85extern const struct dsa_device_ops trailer_netdev_ops; 86 87/* tag_brcm.c */ 88extern const struct dsa_device_ops brcm_netdev_ops; 89 90/* tag_qca.c */ 91extern const struct dsa_device_ops qca_netdev_ops; 92 93/* tag_mtk.c */ 94extern const struct dsa_device_ops mtk_netdev_ops; 95 96/* tag_lan9303.c */ 97extern const struct dsa_device_ops lan9303_netdev_ops; 98 99#endif