linux/drivers/net/stmmac/stmmac.h
<<
>>
Prefs
   1/*******************************************************************************
   2  Copyright (C) 2007-2009  STMicroelectronics Ltd
   3
   4  This program is free software; you can redistribute it and/or modify it
   5  under the terms and conditions of the GNU General Public License,
   6  version 2, as published by the Free Software Foundation.
   7
   8  This program is distributed in the hope it will be useful, but WITHOUT
   9  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  11  more details.
  12
  13  You should have received a copy of the GNU General Public License along with
  14  this program; if not, write to the Free Software Foundation, Inc.,
  15  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
  16
  17  The full GNU General Public License is included in this distribution in
  18  the file called "COPYING".
  19
  20  Author: Giuseppe Cavallaro <peppe.cavallaro@st.com>
  21*******************************************************************************/
  22
  23#define DRV_MODULE_VERSION      "Oct_09"
  24
  25#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
  26#define STMMAC_VLAN_TAG_USED
  27#include <linux/if_vlan.h>
  28#endif
  29
  30#include "common.h"
  31#ifdef CONFIG_STMMAC_TIMER
  32#include "stmmac_timer.h"
  33#endif
  34
  35struct stmmac_priv {
  36        /* Frequently used values are kept adjacent for cache effect */
  37        struct dma_desc *dma_tx ____cacheline_aligned;
  38        dma_addr_t dma_tx_phy;
  39        struct sk_buff **tx_skbuff;
  40        unsigned int cur_tx;
  41        unsigned int dirty_tx;
  42        unsigned int dma_tx_size;
  43        int tx_coe;
  44        int tx_coalesce;
  45
  46        struct dma_desc *dma_rx ;
  47        unsigned int cur_rx;
  48        unsigned int dirty_rx;
  49        struct sk_buff **rx_skbuff;
  50        dma_addr_t *rx_skbuff_dma;
  51        struct sk_buff_head rx_recycle;
  52
  53        struct net_device *dev;
  54        int is_gmac;
  55        dma_addr_t dma_rx_phy;
  56        unsigned int dma_rx_size;
  57        int rx_csum;
  58        unsigned int dma_buf_sz;
  59        struct device *device;
  60        struct mac_device_info *mac_type;
  61
  62        struct stmmac_extra_stats xstats;
  63        struct napi_struct napi;
  64
  65        phy_interface_t phy_interface;
  66        int pbl;
  67        int bus_id;
  68        int phy_addr;
  69        int phy_mask;
  70        int (*phy_reset) (void *priv);
  71        void (*fix_mac_speed) (void *priv, unsigned int speed);
  72        void *bsp_priv;
  73
  74        int phy_irq;
  75        struct phy_device *phydev;
  76        int oldlink;
  77        int speed;
  78        int oldduplex;
  79        unsigned int flow_ctrl;
  80        unsigned int pause;
  81        struct mii_bus *mii;
  82
  83        u32 msg_enable;
  84        spinlock_t lock;
  85        int wolopts;
  86        int wolenabled;
  87        int shutdown;
  88#ifdef CONFIG_STMMAC_TIMER
  89        struct stmmac_timer *tm;
  90#endif
  91#ifdef STMMAC_VLAN_TAG_USED
  92        struct vlan_group *vlgrp;
  93#endif
  94};
  95
  96extern int stmmac_mdio_unregister(struct net_device *ndev);
  97extern int stmmac_mdio_register(struct net_device *ndev);
  98extern void stmmac_set_ethtool_ops(struct net_device *netdev);
  99