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