]>
Commit | Line | Data |
---|---|---|
e190d6b1 | 1 | /* |
2fb9d6f5 | 2 | * Blackfin On-Chip MAC Driver |
e190d6b1 | 3 | * |
2fb9d6f5 | 4 | * Copyright 2004-2007 Analog Devices Inc. |
e190d6b1 | 5 | * |
2fb9d6f5 | 6 | * Enter bugs at http://blackfin.uclinux.org/ |
e190d6b1 | 7 | * |
2fb9d6f5 | 8 | * Licensed under the GPL-2 or later. |
e190d6b1 | 9 | */ |
fe92afed BS |
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> | |
4fcc3d34 | 16 | #include <linux/timer.h> |
02460d08 SZ |
17 | #include <linux/etherdevice.h> |
18 | #include <linux/bfin_mac.h> | |
e190d6b1 | 19 | |
2d70a3d4 SZ |
20 | /* |
21 | * Disable hardware checksum for bug #5600 if writeback cache is | |
22 | * enabled. Otherwize, corrupted RX packet will be sent up stack | |
23 | * without error mark. | |
24 | */ | |
25 | #ifndef CONFIG_BFIN_EXTMEM_WRITEBACK | |
e190d6b1 | 26 | #define BFIN_MAC_CSUM_OFFLOAD |
2d70a3d4 | 27 | #endif |
e190d6b1 | 28 | |
4fcc3d34 SZ |
29 | #define TX_RECLAIM_JIFFIES (HZ / 5) |
30 | ||
e190d6b1 BW |
31 | struct dma_descriptor { |
32 | struct dma_descriptor *next_dma_desc; | |
33 | unsigned long start_addr; | |
34 | unsigned short config; | |
35 | unsigned short x_count; | |
36 | }; | |
37 | ||
38 | struct status_area_rx { | |
39 | #if defined(BFIN_MAC_CSUM_OFFLOAD) | |
40 | unsigned short ip_hdr_csum; /* ip header checksum */ | |
41 | /* ip payload(udp or tcp or others) checksum */ | |
42 | unsigned short ip_payload_csum; | |
43 | #endif | |
44 | unsigned long status_word; /* the frame status word */ | |
45 | }; | |
46 | ||
47 | struct status_area_tx { | |
48 | unsigned long status_word; /* the frame status word */ | |
49 | }; | |
50 | ||
51 | /* use two descriptors for a packet */ | |
52 | struct net_dma_desc_rx { | |
53 | struct net_dma_desc_rx *next; | |
54 | struct sk_buff *skb; | |
55 | struct dma_descriptor desc_a; | |
56 | struct dma_descriptor desc_b; | |
57 | struct status_area_rx status; | |
58 | }; | |
59 | ||
60 | /* use two descriptors for a packet */ | |
61 | struct net_dma_desc_tx { | |
62 | struct net_dma_desc_tx *next; | |
63 | struct sk_buff *skb; | |
64 | struct dma_descriptor desc_a; | |
65 | struct dma_descriptor desc_b; | |
66 | unsigned char packet[1560]; | |
67 | struct status_area_tx status; | |
68 | }; | |
69 | ||
7ef0a7ee | 70 | struct bfin_mac_local { |
e190d6b1 BW |
71 | /* |
72 | * these are things that the kernel wants me to keep, so users | |
73 | * can find out semi-useless statistics of how well the card is | |
74 | * performing | |
75 | */ | |
4ae5a3ad | 76 | struct net_device_stats stats; |
e190d6b1 | 77 | |
e190d6b1 | 78 | spinlock_t lock; |
4ae5a3ad | 79 | |
53fd3f28 MH |
80 | int wol; /* Wake On Lan */ |
81 | int irq_wake_requested; | |
4fcc3d34 SZ |
82 | struct timer_list tx_reclaim_timer; |
83 | struct net_device *ndev; | |
53fd3f28 | 84 | |
c599bd6b MF |
85 | /* Data for EMAC_VLAN1 regs */ |
86 | u16 vlan1_mask, vlan2_mask; | |
87 | ||
4ae5a3ad BW |
88 | /* MII and PHY stuffs */ |
89 | int old_link; /* used by bf537_adjust_link */ | |
90 | int old_speed; | |
91 | int old_duplex; | |
92 | ||
93 | struct phy_device *phydev; | |
298cf9be | 94 | struct mii_bus *mii_bus; |
fe92afed BS |
95 | |
96 | #if defined(CONFIG_BFIN_MAC_USE_HWSTAMP) | |
97 | struct cyclecounter cycles; | |
98 | struct timecounter clock; | |
99 | struct timecompare compare; | |
100 | struct hwtstamp_config stamp_cfg; | |
101 | #endif | |
e190d6b1 BW |
102 | }; |
103 | ||
9862cc52 | 104 | extern void bfin_get_ether_addr(char *addr); |
fe92afed BS |
105 | |
106 | #endif |