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

octeon-ethernet.h (2889B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * This file is based on code from OCTEON SDK by Cavium Networks.
      4 *
      5 * Copyright (c) 2003-2010 Cavium Networks
      6 */
      7
      8/*
      9 * External interface for the Cavium Octeon ethernet driver.
     10 */
     11#ifndef OCTEON_ETHERNET_H
     12#define OCTEON_ETHERNET_H
     13
     14#include <linux/of.h>
     15#include <linux/phy.h>
     16
     17#ifdef CONFIG_CAVIUM_OCTEON_SOC
     18
     19#include <asm/octeon/octeon.h>
     20
     21#include <asm/octeon/cvmx-asxx-defs.h>
     22#include <asm/octeon/cvmx-config.h>
     23#include <asm/octeon/cvmx-fau.h>
     24#include <asm/octeon/cvmx-gmxx-defs.h>
     25#include <asm/octeon/cvmx-helper.h>
     26#include <asm/octeon/cvmx-helper-util.h>
     27#include <asm/octeon/cvmx-ipd.h>
     28#include <asm/octeon/cvmx-ipd-defs.h>
     29#include <asm/octeon/cvmx-npi-defs.h>
     30#include <asm/octeon/cvmx-pip.h>
     31#include <asm/octeon/cvmx-pko.h>
     32#include <asm/octeon/cvmx-pow.h>
     33#include <asm/octeon/cvmx-scratch.h>
     34#include <asm/octeon/cvmx-spi.h>
     35#include <asm/octeon/cvmx-spxx-defs.h>
     36#include <asm/octeon/cvmx-stxx-defs.h>
     37#include <asm/octeon/cvmx-wqe.h>
     38
     39#else
     40
     41#include "octeon-stubs.h"
     42
     43#endif
     44
     45/**
     46 * This is the definition of the Ethernet driver's private
     47 * driver state stored in netdev_priv(dev).
     48 */
     49struct octeon_ethernet {
     50	/* PKO hardware output port */
     51	int port;
     52	/* PKO hardware queue for the port */
     53	int queue;
     54	/* Hardware fetch and add to count outstanding tx buffers */
     55	int fau;
     56	/* My netdev. */
     57	struct net_device *netdev;
     58	/*
     59	 * Type of port. This is one of the enums in
     60	 * cvmx_helper_interface_mode_t
     61	 */
     62	int imode;
     63	/* PHY mode */
     64	phy_interface_t phy_mode;
     65	/* List of outstanding tx buffers per queue */
     66	struct sk_buff_head tx_free_list[16];
     67	unsigned int last_speed;
     68	unsigned int last_link;
     69	/* Last negotiated link state */
     70	u64 link_info;
     71	/* Called periodically to check link status */
     72	void (*poll)(struct net_device *dev);
     73	struct delayed_work	port_periodic_work;
     74	struct device_node	*of_node;
     75};
     76
     77int cvm_oct_free_work(void *work_queue_entry);
     78
     79int cvm_oct_rgmii_open(struct net_device *dev);
     80
     81int cvm_oct_sgmii_init(struct net_device *dev);
     82int cvm_oct_sgmii_open(struct net_device *dev);
     83
     84int cvm_oct_spi_init(struct net_device *dev);
     85void cvm_oct_spi_uninit(struct net_device *dev);
     86
     87int cvm_oct_common_init(struct net_device *dev);
     88void cvm_oct_common_uninit(struct net_device *dev);
     89void cvm_oct_adjust_link(struct net_device *dev);
     90int cvm_oct_common_stop(struct net_device *dev);
     91int cvm_oct_common_open(struct net_device *dev,
     92			void (*link_poll)(struct net_device *));
     93void cvm_oct_note_carrier(struct octeon_ethernet *priv,
     94			  union cvmx_helper_link_info li);
     95void cvm_oct_link_poll(struct net_device *dev);
     96
     97extern int always_use_pow;
     98extern int pow_send_group;
     99extern int pow_receive_groups;
    100extern char pow_send_list[];
    101extern struct net_device *cvm_oct_device[];
    102extern atomic_t cvm_oct_poll_queue_stopping;
    103extern u64 cvm_oct_tx_poll_interval;
    104
    105extern int rx_napi_weight;
    106
    107#endif