Merge branch 'for-next' into for-linus
[linux-2.6.git] / drivers / net / stmmac / stmmac.h
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
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;
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
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);