1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | /* * Blackfin On-Chip MAC Driver * * Copyright 2004-2007 Analog Devices Inc. * * Enter bugs at http://blackfin.uclinux.org/ * * Licensed under the GPL-2 or later. */ #ifndef _BFIN_MAC_H_ #define _BFIN_MAC_H_ #include <linux/net_tstamp.h> #include <linux/ptp_clock_kernel.h> #include <linux/timer.h> #include <linux/etherdevice.h> #include <linux/bfin_mac.h> /* * Disable hardware checksum for bug #5600 if writeback cache is * enabled. Otherwize, corrupted RX packet will be sent up stack * without error mark. */ #ifndef [31mCONFIG_BFIN_EXTMEM_WRITEBACK[0m #define BFIN_MAC_CSUM_OFFLOAD #endif #define TX_RECLAIM_JIFFIES (HZ / 5) #define BFIN_MAC_RX_IRQ_DISABLED 1 struct dma_descriptor { struct dma_descriptor *next_dma_desc; unsigned long start_addr; unsigned short config; unsigned short x_count; }; struct status_area_rx { #if defined(BFIN_MAC_CSUM_OFFLOAD) unsigned short ip_hdr_csum; /* ip header checksum */ /* ip payload(udp or tcp or others) checksum */ unsigned short ip_payload_csum; #endif unsigned long status_word; /* the frame status word */ }; struct status_area_tx { unsigned long status_word; /* the frame status word */ }; /* use two descriptors for a packet */ struct net_dma_desc_rx { struct net_dma_desc_rx *next; struct sk_buff *skb; struct dma_descriptor desc_a; struct dma_descriptor desc_b; struct status_area_rx status; }; /* use two descriptors for a packet */ struct net_dma_desc_tx { struct net_dma_desc_tx *next; struct sk_buff *skb; struct dma_descriptor desc_a; struct dma_descriptor desc_b; unsigned char packet[1560]; struct status_area_tx status; }; struct bfin_mac_local { /* * these are things that the kernel wants me to keep, so users * can find out semi-useless statistics of how well the card is * performing */ struct net_device_stats stats; spinlock_t lock; int wol; /* Wake On Lan */ int irq_wake_requested; struct timer_list tx_reclaim_timer; struct net_device *ndev; struct napi_struct napi; unsigned long flags; /* Data for EMAC_VLAN1 regs */ u16 vlan1_mask, vlan2_mask; /* MII and PHY stuffs */ int old_link; /* used by bf537_adjust_link */ int old_speed; int old_duplex; struct mii_bus *mii_bus; #if defined([31mCONFIG_BFIN_MAC_USE_HWSTAMP[0m) u32 addend; unsigned int shift; s32 max_ppb; struct hwtstamp_config stamp_cfg; struct ptp_clock_info caps; struct ptp_clock *clock; int phc_index; spinlock_t phc_lock; /* protects time lo/hi registers */ #endif }; int bfin_get_ether_addr(char *addr); #endif |