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