linux/drivers/net/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/clocksource.h>
  15#include <linux/timecompare.h>
  16#include <linux/timer.h>
  17#include <linux/etherdevice.h>
  18#include <linux/bfin_mac.h>
  19
  20/*
  21 * Disable hardware checksum for bug #5600 if writeback cache is
  22 * enabled. Otherwize, corrupted RX packet will be sent up stack
  23 * without error mark.
  24 */
  25#ifndef CONFIG_BFIN_EXTMEM_WRITEBACK
  26#define BFIN_MAC_CSUM_OFFLOAD
  27#endif
  28
  29#define TX_RECLAIM_JIFFIES (HZ / 5)
  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
  85        /* Data for EMAC_VLAN1 regs */
  86        u16 vlan1_mask, vlan2_mask;
  87
  88        /* MII and PHY stuffs */
  89        int old_link;          /* used by bf537_adjust_link */
  90        int old_speed;
  91        int old_duplex;
  92
  93        struct phy_device *phydev;
  94        struct mii_bus *mii_bus;
  95
  96#if defined(CONFIG_BFIN_MAC_USE_HWSTAMP)
  97        struct cyclecounter cycles;
  98        struct timecounter clock;
  99        struct timecompare compare;
 100        struct hwtstamp_config stamp_cfg;
 101#endif
 102};
 103
 104extern void bfin_get_ether_addr(char *addr);
 105
 106#endif
 107