e1000.h
来自「是关于linux2.5.1的完全源码」· C头文件 代码 · 共 234 行
H
234 行
/******************************************************************************* This software program is available to you under a choice of one of two licenses. You may choose to be licensed under either the GNU General Public License 2.0, June 1991, available at http://www.fsf.org/copyleft/gpl.html, or the Intel BSD + Patent License, the text of which follows: Recipient has requested a license and Intel Corporation ("Intel") is willing to grant a license for the software entitled Linux Base Driver for the Intel(R) PRO/1000 Family of Adapters (e1000) (the "Software") being provided by Intel Corporation. The following definitions apply to this license: "Licensed Patents" means patent claims licensable by Intel Corporation which are necessarily infringed by the use of sale of the Software alone or when combined with the operating system referred to below. "Recipient" means the party to whom Intel delivers this Software. "Licensee" means Recipient and those third parties that receive a license to any operating system available under the GNU General Public License 2.0 or later. Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved. The license is provided to Recipient and Recipient's Licensees under the following terms. Redistribution and use in source and binary forms of the Software, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code of the Software may retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form of the Software may reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or materials provided with the distribution. Neither the name of Intel Corporation nor the names of its contributors shall be used to endorse or promote products derived from this Software without specific prior written permission. Intel hereby grants Recipient and Licensees a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Software, if any, in source code and object code form. This license shall include changes to the Software that are error corrections or other minor changes to the Software that do not add functionality or features when the Software is incorporated in any version of an operating system that has been distributed under the GNU General Public License 2.0 or later. This patent license shall apply to the combination of the Software and any operating system licensed under the GNU General Public License 2.0 or later if, at the time Intel provides the Software to Recipient, such addition of the Software to the then publicly available versions of such operating systems available under the GNU General Public License 2.0 or later (whether in gold, beta or alpha form) causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Software. NO hardware per se is licensed hereunder. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MECHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR IT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ANY LOSS OF USE; DATA, OR PROFITS; OR BUSINESS INTERUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*******************************************************************************//* Linux PRO/1000 Ethernet Driver main header file */#ifndef _E1000_H_#define _E1000_H_#include <linux/stddef.h>#include <linux/config.h>#include <linux/module.h>#include <linux/types.h>#include <asm/byteorder.h>#include <linux/init.h>#include <linux/mm.h>#include <linux/errno.h>#include <linux/ioport.h>#include <linux/pci.h>#include <linux/kernel.h>#include <linux/netdevice.h>#include <linux/etherdevice.h>#include <linux/skbuff.h>#include <linux/delay.h>#include <linux/timer.h>#include <linux/slab.h>#include <linux/interrupt.h>#include <linux/string.h>#include <linux/pagemap.h>#include <asm/bitops.h>#include <asm/io.h>#include <asm/irq.h>#include <linux/capability.h>#include <linux/in.h>#include <linux/ip.h>#include <linux/tcp.h>#include <linux/udp.h>#include <net/pkt_sched.h>#include <linux/list.h>#include <asm/uaccess.h>#include <linux/ethtool.h>#ifdef NETIF_F_HW_VLAN_TX#include <linux/if_vlan.h>#endifstruct e1000_adapter;#include "e1000_hw.h"#define BAR_0 0#if DBG#define E1000_DBG(args...) printk(KERN_DEBUG "e1000: " args)#else#define E1000_DBG(args...)#endif#define E1000_ERR(args...) printk(KERN_ERR "e1000: " args)#ifdef CONFIG_PPC#define E1000_MAX_INTR 1#else#define E1000_MAX_INTR 10#endif/* Supported Rx Buffer Sizes */#define E1000_RXBUFFER_2048 2048#define E1000_RXBUFFER_4096 4096#define E1000_RXBUFFER_8192 8192#define E1000_RXBUFFER_16384 16384/* How many Tx Descriptors do we need to call netif_wake_queue ? */#define E1000_TX_QUEUE_WAKE 16/* How many Rx Buffers do we bundle into one write to the hardware ? */#define E1000_RX_BUFFER_WRITE 16#define E1000_JUMBO_PBA 0x00000028#define E1000_DEFAULT_PBA 0x00000030/* only works for sizes that are powers of 2 */#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1)))/* wrapper around a pointer to a socket buffer, * so a DMA handle can be stored along with the buffer */struct e1000_buffer { struct sk_buff *skb; uint64_t dma; unsigned long length;};struct e1000_desc_ring { /* pointer to the descriptor ring memory */ void *desc; /* physical address of the descriptor ring */ dma_addr_t dma; /* length of descriptor ring in bytes */ unsigned int size; /* number of descriptors in the ring */ unsigned int count; /* next descriptor to associate a buffer with */ unsigned int next_to_use; /* next descriptor to check for DD status bit */ unsigned int next_to_clean; /* array of buffer information structs */ struct e1000_buffer *buffer_info;};#define E1000_DESC_UNUSED(R) \((((R)->next_to_clean + (R)->count) - ((R)->next_to_use + 1)) % ((R)->count))#define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i]))#define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc)#define E1000_TX_DESC(R, i) E1000_GET_DESC(R, i, e1000_tx_desc)#define E1000_CONTEXT_DESC(R, i) E1000_GET_DESC(R, i, e1000_context_desc)/* board specific private data structure */struct e1000_adapter { struct timer_list watchdog_timer; struct timer_list phy_info_timer;#ifdef CONFIG_PROC_FS struct list_head proc_list_head;#endif#ifdef NETIF_F_HW_VLAN_TX struct vlan_group *vlgrp;#endif char *id_string; uint32_t bd_number; uint32_t rx_buffer_len; uint32_t part_num; uint32_t wol; uint16_t link_speed; uint16_t link_duplex; spinlock_t stats_lock; atomic_t irq_sem; /* TX */ struct e1000_desc_ring tx_ring; unsigned long trans_finish; spinlock_t tx_lock; uint32_t txd_cmd; int max_data_per_txd; /* RX */ struct e1000_desc_ring rx_ring; uint64_t hw_csum_err; uint64_t hw_csum_good; uint32_t rx_int_delay; boolean_t rx_csum; /* OS defined structs */ struct net_device *netdev; struct pci_dev *pdev; struct net_device_stats net_stats; /* structs defined in e1000_hw.h */ struct e1000_hw hw; struct e1000_hw_stats stats; struct e1000_phy_info phy_info; struct e1000_phy_stats phy_stats;};#endif /* _E1000_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?