2 * Blackfin On-Chip MAC Driver
4 * Copyright 2004-2007 Analog Devices Inc.
6 * Enter bugs at http://blackfin.uclinux.org/
8 * Licensed under the GPL-2 or later.
13 #include <linux/net_tstamp.h>
14 #include <linux/clocksource.h>
15 #include <linux/timecompare.h>
16 #include <linux/timer.h>
18 #define BFIN_MAC_CSUM_OFFLOAD
20 #define TX_RECLAIM_JIFFIES (HZ / 5)
22 struct dma_descriptor
{
23 struct dma_descriptor
*next_dma_desc
;
24 unsigned long start_addr
;
25 unsigned short config
;
26 unsigned short x_count
;
29 struct status_area_rx
{
30 #if defined(BFIN_MAC_CSUM_OFFLOAD)
31 unsigned short ip_hdr_csum
; /* ip header checksum */
32 /* ip payload(udp or tcp or others) checksum */
33 unsigned short ip_payload_csum
;
35 unsigned long status_word
; /* the frame status word */
38 struct status_area_tx
{
39 unsigned long status_word
; /* the frame status word */
42 /* use two descriptors for a packet */
43 struct net_dma_desc_rx
{
44 struct net_dma_desc_rx
*next
;
46 struct dma_descriptor desc_a
;
47 struct dma_descriptor desc_b
;
48 struct status_area_rx status
;
51 /* use two descriptors for a packet */
52 struct net_dma_desc_tx
{
53 struct net_dma_desc_tx
*next
;
55 struct dma_descriptor desc_a
;
56 struct dma_descriptor desc_b
;
57 unsigned char packet
[1560];
58 struct status_area_tx status
;
61 struct bfin_mac_local
{
63 * these are things that the kernel wants me to keep, so users
64 * can find out semi-useless statistics of how well the card is
67 struct net_device_stats stats
;
69 unsigned char Mac
[6]; /* MAC address of the board */
72 int wol
; /* Wake On Lan */
73 int irq_wake_requested
;
74 struct timer_list tx_reclaim_timer
;
75 struct net_device
*ndev
;
77 /* MII and PHY stuffs */
78 int old_link
; /* used by bf537_adjust_link */
82 struct phy_device
*phydev
;
83 struct mii_bus
*mii_bus
;
85 #if defined(CONFIG_BFIN_MAC_USE_HWSTAMP)
86 struct cyclecounter cycles
;
87 struct timecounter clock
;
88 struct timecompare compare
;
89 struct hwtstamp_config stamp_cfg
;
93 extern void bfin_get_ether_addr(char *addr
);