Skip to content
Snippets Groups Projects
Select Git revision
  • 04ff53f96a931751a70c2bb3926770900b5fbebe
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

dsa_priv.h

Blame
  • dsa_priv.h 2.05 KiB
    /*
     * net/dsa/dsa_priv.h - Hardware switch handling
     * Copyright (c) 2008-2009 Marvell Semiconductor
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 2 of the License, or
     * (at your option) any later version.
     */
    
    #ifndef __DSA_PRIV_H
    #define __DSA_PRIV_H
    
    #include <linux/phy.h>
    #include <linux/netdevice.h>
    #include <linux/netpoll.h>
    
    struct dsa_device_ops {
    	struct sk_buff *(*xmit)(struct sk_buff *skb, struct net_device *dev);
    	int (*rcv)(struct sk_buff *skb, struct net_device *dev,
    		   struct packet_type *pt, struct net_device *orig_dev);
    };
    
    struct dsa_slave_priv {
    	/*
    	 * The linux network interface corresponding to this
    	 * switch port.
    	 */
    	struct net_device	*dev;
    	struct sk_buff *	(*xmit)(struct sk_buff *skb,
    					struct net_device *dev);
    
    	/*
    	 * Which switch this port is a part of, and the port index
    	 * for this port.
    	 */
    	struct dsa_switch	*parent;
    	u8			port;
    
    	/*
    	 * The phylib phy_device pointer for the PHY connected
    	 * to this port.
    	 */
    	struct phy_device	*phy;
    	phy_interface_t		phy_interface;
    	int			old_link;
    	int			old_pause;
    	int			old_duplex;
    
    	struct net_device	*bridge_dev;
    #ifdef CONFIG_NET_POLL_CONTROLLER
    	struct netpoll		*netpoll;
    #endif
    };
    
    /* dsa.c */
    extern char dsa_driver_version[];
    
    /* slave.c */
    extern const struct dsa_device_ops notag_netdev_ops;
    void dsa_slave_mii_bus_init(struct dsa_switch *ds);
    int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
    		     int port, char *name);
    int dsa_slave_suspend(struct net_device *slave_dev);
    int dsa_slave_resume(struct net_device *slave_dev);
    int dsa_slave_netdevice_event(struct notifier_block *unused,
    			      unsigned long event, void *ptr);
    
    /* tag_dsa.c */
    extern const struct dsa_device_ops dsa_netdev_ops;
    
    /* tag_edsa.c */
    extern const struct dsa_device_ops edsa_netdev_ops;
    
    /* tag_trailer.c */
    extern const struct dsa_device_ops trailer_netdev_ops;
    
    /* tag_brcm.c */
    extern const struct dsa_device_ops brcm_netdev_ops;
    
    
    #endif