Merge branch 'mini2440-dev-unlikely' into mini2440-dev
[linux-2.6/mini2440.git] / drivers / net / stmmac / stmmac.h
blob6d2eae3040e51ab027181c3d476f4c2b3aa418ab
1 /*******************************************************************************
2 Copyright (C) 2007-2009 STMicroelectronics Ltd
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.
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.
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.
17 The full GNU General Public License is included in this distribution in
18 the file called "COPYING".
20 Author: Giuseppe Cavallaro <peppe.cavallaro@st.com>
21 *******************************************************************************/
23 #define DRV_MODULE_VERSION "Oct_09"
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
30 #include "common.h"
31 #ifdef CONFIG_STMMAC_TIMER
32 #include "stmmac_timer.h"
33 #endif
35 struct 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;
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;
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;
62 struct stmmac_extra_stats xstats;
63 struct napi_struct napi;
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;
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;
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
96 extern int stmmac_mdio_unregister(struct net_device *ndev);
97 extern int stmmac_mdio_register(struct net_device *ndev);
98 extern void stmmac_set_ethtool_ops(struct net_device *netdev);