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#define BFIN_MAC_RX_IRQ_DISABLED        1
  30
  31struct dma_descriptor {
  32        struct dma_descriptor *next_dma_desc;
  33        unsigned long start_addr;
  34        unsigned short config;
  35        unsigned short x_count;
  36};
  37
  38struct status_area_rx {
  39#if defined(BFIN_MAC_CSUM_OFFLOAD)
  40        unsigned short ip_hdr_csum;     /* ip header checksum */
  41        /* ip payload(udp or tcp or others) checksum */
  42        unsigned short ip_payload_csum;
  43#endif
  44        unsigned long status_word;      /* the frame status word */
  45};
  46
  47struct status_area_tx {
  48        unsigned long status_word;      /* the frame status word */
  49};
  50
  51/* use two descriptors for a packet */
  52struct net_dma_desc_rx {
  53        struct net_dma_desc_rx *next;
  54        struct sk_buff *skb;
  55        struct dma_descriptor desc_a;
  56        struct dma_descriptor desc_b;
  57        struct status_area_rx status;
  58};
  59
  60/* use two descriptors for a packet */
  61struct net_dma_desc_tx {
  62        struct net_dma_desc_tx *next;
  63        struct sk_buff *skb;
  64        struct dma_descriptor desc_a;
  65        struct dma_descriptor desc_b;
  66        unsigned char packet[1560];
  67        struct status_area_tx status;
  68};
  69
  70struct bfin_mac_local {
  71        /*
  72         * these are things that the kernel wants me to keep, so users
  73         * can find out semi-useless statistics of how well the card is
  74         * performing
  75         */
  76        struct net_device_stats stats;
  77
  78        spinlock_t lock;
  79
  80        int wol;                /* Wake On Lan */
  81        int irq_wake_requested;
  82        struct timer_list tx_reclaim_timer;
  83        struct net_device *ndev;
  84        struct napi_struct napi;
  85        unsigned long flags;
  86
  87        /* Data for EMAC_VLAN1 regs */
  88        u16 vlan1_mask, vlan2_mask;
  89
  90        /* MII and PHY stuffs */
  91        int old_link;          /* used by bf537_adjust_link */
  92        int old_speed;
  93        int old_duplex;
  94
  95        struct phy_device *phydev;
  96        struct mii_bus *mii_bus;
  97
  98#if defined(CONFIG_BFIN_MAC_USE_HWSTAMP)
  99        u32 addend;
 100        unsigned int shift;
 101        s32 max_ppb;
 102        struct hwtstamp_config stamp_cfg;
 103        struct ptp_clock_info caps;
 104        struct ptp_clock *clock;
 105        int phc_index;
 106        spinlock_t phc_lock; /* protects time lo/hi registers */
 107#endif
 108};
 109
 110int bfin_get_ether_addr(char *addr);
 111
 112#endif
 113