/* * File: drivers/net/bfin_mac.c * Based on: * Maintainer: * Bryan Wu <bryan.wu@analog.com> * * Original author: * Luke Yang <luke.yang@analog.com> * * Created: * Description: * * Modified: * Copyright 2004-2006 Analog Devices Inc. * * Bugs: Enter bugs at http://blackfin.uclinux.org/ * * This program is free software ; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation ; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY ; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program ; see the file COPYING. * If not, write to the Free Software Foundation, * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #define BFIN_MAC_CSUM_OFFLOAD 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 bf537mac_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; unsigned char Mac[6]; /* MAC address of the board */ spinlock_t lock; /* MII and PHY stuffs */ int old_link; /* used by bf537_adjust_link */ int old_speed; int old_duplex; struct phy_device *phydev; struct mii_bus mii_bus; }; extern void bfin_get_ether_addr(char *addr);