Merge branch 'x86/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux...
[deliverable/linux.git] / drivers / net / bfin_mac.h
CommitLineData
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>
e190d6b1 17
e190d6b1
BW
18#define BFIN_MAC_CSUM_OFFLOAD
19
4fcc3d34
SZ
20#define TX_RECLAIM_JIFFIES (HZ / 5)
21
e190d6b1
BW
22struct dma_descriptor {
23 struct dma_descriptor *next_dma_desc;
24 unsigned long start_addr;
25 unsigned short config;
26 unsigned short x_count;
27};
28
29struct 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;
34#endif
35 unsigned long status_word; /* the frame status word */
36};
37
38struct status_area_tx {
39 unsigned long status_word; /* the frame status word */
40};
41
42/* use two descriptors for a packet */
43struct net_dma_desc_rx {
44 struct net_dma_desc_rx *next;
45 struct sk_buff *skb;
46 struct dma_descriptor desc_a;
47 struct dma_descriptor desc_b;
48 struct status_area_rx status;
49};
50
51/* use two descriptors for a packet */
52struct net_dma_desc_tx {
53 struct net_dma_desc_tx *next;
54 struct sk_buff *skb;
55 struct dma_descriptor desc_a;
56 struct dma_descriptor desc_b;
57 unsigned char packet[1560];
58 struct status_area_tx status;
59};
60
7ef0a7ee 61struct bfin_mac_local {
e190d6b1
BW
62 /*
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
65 * performing
66 */
4ae5a3ad 67 struct net_device_stats stats;
e190d6b1 68
e190d6b1
BW
69 unsigned char Mac[6]; /* MAC address of the board */
70 spinlock_t lock;
4ae5a3ad 71
53fd3f28
MH
72 int wol; /* Wake On Lan */
73 int irq_wake_requested;
4fcc3d34
SZ
74 struct timer_list tx_reclaim_timer;
75 struct net_device *ndev;
53fd3f28 76
4ae5a3ad
BW
77 /* MII and PHY stuffs */
78 int old_link; /* used by bf537_adjust_link */
79 int old_speed;
80 int old_duplex;
81
82 struct phy_device *phydev;
298cf9be 83 struct mii_bus *mii_bus;
fe92afed
BS
84
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;
90#endif
e190d6b1
BW
91};
92
9862cc52 93extern void bfin_get_ether_addr(char *addr);
fe92afed
BS
94
95#endif
This page took 0.368264 seconds and 5 git commands to generate.