• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/
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#include <linux/timer.h>
17
18#define BFIN_MAC_CSUM_OFFLOAD
19
20#define TX_RECLAIM_JIFFIES (HZ / 5)
21
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
61struct bfin_mac_local {
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	 */
67	struct net_device_stats stats;
68
69	unsigned char Mac[6];	/* MAC address of the board */
70	spinlock_t lock;
71
72	int wol;		/* Wake On Lan */
73	int irq_wake_requested;
74	struct timer_list tx_reclaim_timer;
75	struct net_device *ndev;
76
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;
83	struct mii_bus *mii_bus;
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
91};
92
93extern void bfin_get_ether_addr(char *addr);
94
95#endif
96