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);