cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mac.h (3684B)


      1/* Copyright 2008-2015 Freescale Semiconductor, Inc.
      2 *
      3 * Redistribution and use in source and binary forms, with or without
      4 * modification, are permitted provided that the following conditions are met:
      5 *     * Redistributions of source code must retain the above copyright
      6 *	 notice, this list of conditions and the following disclaimer.
      7 *     * Redistributions in binary form must reproduce the above copyright
      8 *	 notice, this list of conditions and the following disclaimer in the
      9 *	 documentation and/or other materials provided with the distribution.
     10 *     * Neither the name of Freescale Semiconductor nor the
     11 *	 names of its contributors may be used to endorse or promote products
     12 *	 derived from this software without specific prior written permission.
     13 *
     14 *
     15 * ALTERNATIVELY, this software may be distributed under the terms of the
     16 * GNU General Public License ("GPL") as published by the Free Software
     17 * Foundation, either version 2 of that License or (at your option) any
     18 * later version.
     19 *
     20 * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
     21 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     22 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     23 * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
     24 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     25 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     26 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     27 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     30 */
     31
     32#ifndef __MAC_H
     33#define __MAC_H
     34
     35#include <linux/device.h>
     36#include <linux/if_ether.h>
     37#include <linux/phy.h>
     38#include <linux/list.h>
     39
     40#include "fman_port.h"
     41#include "fman.h"
     42#include "fman_mac.h"
     43
     44struct fman_mac;
     45struct mac_priv_s;
     46
     47struct mac_device {
     48	struct resource		*res;
     49	u8			 addr[ETH_ALEN];
     50	struct fman_port	*port[2];
     51	u32			 if_support;
     52	struct phy_device	*phy_dev;
     53	phy_interface_t		phy_if;
     54	struct device_node	*phy_node;
     55
     56	bool autoneg_pause;
     57	bool rx_pause_req;
     58	bool tx_pause_req;
     59	bool rx_pause_active;
     60	bool tx_pause_active;
     61	bool promisc;
     62	bool allmulti;
     63
     64	int (*init)(struct mac_device *mac_dev);
     65	int (*start)(struct mac_device *mac_dev);
     66	int (*stop)(struct mac_device *mac_dev);
     67	void (*adjust_link)(struct mac_device *mac_dev);
     68	int (*set_promisc)(struct fman_mac *mac_dev, bool enable);
     69	int (*change_addr)(struct fman_mac *mac_dev, const enet_addr_t *enet_addr);
     70	int (*set_allmulti)(struct fman_mac *mac_dev, bool enable);
     71	int (*set_tstamp)(struct fman_mac *mac_dev, bool enable);
     72	int (*set_multi)(struct net_device *net_dev,
     73			 struct mac_device *mac_dev);
     74	int (*set_rx_pause)(struct fman_mac *mac_dev, bool en);
     75	int (*set_tx_pause)(struct fman_mac *mac_dev, u8 priority,
     76			    u16 pause_time, u16 thresh_time);
     77	int (*set_exception)(struct fman_mac *mac_dev,
     78			     enum fman_mac_exceptions exception, bool enable);
     79	int (*add_hash_mac_addr)(struct fman_mac *mac_dev,
     80				 enet_addr_t *eth_addr);
     81	int (*remove_hash_mac_addr)(struct fman_mac *mac_dev,
     82				    enet_addr_t *eth_addr);
     83
     84	struct fman_mac		*fman_mac;
     85	struct mac_priv_s	*priv;
     86};
     87
     88struct dpaa_eth_data {
     89	struct mac_device *mac_dev;
     90	int mac_hw_id;
     91	int fman_hw_id;
     92};
     93
     94extern const char	*mac_driver_description;
     95
     96int fman_set_mac_active_pause(struct mac_device *mac_dev, bool rx, bool tx);
     97
     98void fman_get_pause_cfg(struct mac_device *mac_dev, bool *rx_pause,
     99			bool *tx_pause);
    100
    101#endif	/* __MAC_H */