Merge branch 'linus' into cont_syslog
[safe/jmp/linux-2.6] / drivers / net / bfin_mac.h
1 /*
2  * Blackfin On-Chip MAC Driver
3  *
4  * Copyright 2004-2007 Analog Devices Inc.
5  *
6  * Enter bugs at http://blackfin.uclinux.org/
7  *
8  * Licensed under the GPL-2 or later.
9  */
10 #ifndef _BFIN_MAC_H_
11 #define _BFIN_MAC_H_
12
13 #include <linux/net_tstamp.h>
14 #include <linux/clocksource.h>
15 #include <linux/timecompare.h>
16
17 #define BFIN_MAC_CSUM_OFFLOAD
18
19 struct dma_descriptor {
20         struct dma_descriptor *next_dma_desc;
21         unsigned long start_addr;
22         unsigned short config;
23         unsigned short x_count;
24 };
25
26 struct status_area_rx {
27 #if defined(BFIN_MAC_CSUM_OFFLOAD)
28         unsigned short ip_hdr_csum;     /* ip header checksum */
29         /* ip payload(udp or tcp or others) checksum */
30         unsigned short ip_payload_csum;
31 #endif
32         unsigned long status_word;      /* the frame status word */
33 };
34
35 struct status_area_tx {
36         unsigned long status_word;      /* the frame status word */
37 };
38
39 /* use two descriptors for a packet */
40 struct net_dma_desc_rx {
41         struct net_dma_desc_rx *next;
42         struct sk_buff *skb;
43         struct dma_descriptor desc_a;
44         struct dma_descriptor desc_b;
45         struct status_area_rx status;
46 };
47
48 /* use two descriptors for a packet */
49 struct net_dma_desc_tx {
50         struct net_dma_desc_tx *next;
51         struct sk_buff *skb;
52         struct dma_descriptor desc_a;
53         struct dma_descriptor desc_b;
54         unsigned char packet[1560];
55         struct status_area_tx status;
56 };
57
58 struct bfin_mac_local {
59         /*
60          * these are things that the kernel wants me to keep, so users
61          * can find out semi-useless statistics of how well the card is
62          * performing
63          */
64         struct net_device_stats stats;
65
66         unsigned char Mac[6];   /* MAC address of the board */
67         spinlock_t lock;
68
69         int wol;                /* Wake On Lan */
70         int irq_wake_requested;
71
72         /* MII and PHY stuffs */
73         int old_link;          /* used by bf537_adjust_link */
74         int old_speed;
75         int old_duplex;
76
77         struct phy_device *phydev;
78         struct mii_bus *mii_bus;
79
80 #if defined(CONFIG_BFIN_MAC_USE_HWSTAMP)
81         struct cyclecounter cycles;
82         struct timecounter clock;
83         struct timecompare compare;
84         struct hwtstamp_config stamp_cfg;
85 #endif
86 };
87
88 extern void bfin_get_ether_addr(char *addr);
89
90 #endif