⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netdevice.h

📁 Axis 221 camera embedded programing interface
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * INET		An implementation of the TCP/IP protocol suite for the LINUX *		operating system.  INET is implemented using the  BSD Socket *		interface as the means of communication with the user level. * *		Definitions for the Interfaces handler. * * Version:	@(#)dev.h	1.0.10	08/12/93 * * Authors:	Ross Biro *		Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> *		Corey Minyard <wf-rch!minyard@relay.EU.net> *		Donald J. Becker, <becker@cesdis.gsfc.nasa.gov> *		Alan Cox, <Alan.Cox@linux.org> *		Bjorn Ekwall. <bj0rn@blox.se> *              Pekka Riikonen <priikone@poseidon.pspt.fi> * *		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 of the License, or (at your option) any later version. * *		Moved to /usr/include/linux for NET3 */#ifndef _LINUX_NETDEVICE_H#define _LINUX_NETDEVICE_H#include <linux/if.h>#include <linux/if_ether.h>#include <linux/if_packet.h>#ifdef __KERNEL__#include <linux/timer.h>#include <asm/atomic.h>#include <asm/cache.h>#include <asm/byteorder.h>#include <linux/device.h>#include <linux/percpu.h>#include <linux/dmaengine.h>struct vlan_group;struct ethtool_ops;struct netpoll_info;					/* source back-compat hooks */#define SET_ETHTOOL_OPS(netdev,ops) \	( (netdev)->ethtool_ops = (ops) )#define HAVE_ALLOC_NETDEV		/* feature macro: alloc_xxxdev					   functions are available. */#define HAVE_FREE_NETDEV		/* free_netdev() */#define HAVE_NETDEV_PRIV		/* netdev_priv() */#define NET_XMIT_SUCCESS	0#define NET_XMIT_DROP		1	/* skb dropped			*/#define NET_XMIT_CN		2	/* congestion notification	*/#define NET_XMIT_POLICED	3	/* skb is shot by police	*/#define NET_XMIT_BYPASS		4	/* packet does not leave via dequeue;					   (TC use only - dev_queue_xmit					   returns this as NET_XMIT_SUCCESS) *//* Backlog congestion levels */#define NET_RX_SUCCESS		0   /* keep 'em coming, baby */#define NET_RX_DROP		1  /* packet dropped */#define NET_RX_CN_LOW		2   /* storm alert, just in case */#define NET_RX_CN_MOD		3   /* Storm on its way! */#define NET_RX_CN_HIGH		4   /* The storm is here */#define NET_RX_BAD		5  /* packet dropped due to kernel error *//* NET_XMIT_CN is special. It does not guarantee that this packet is lost. It * indicates that the device will soon be dropping packets, or already drops * some packets of the same priority; prompting us to send less aggressively. */#define net_xmit_eval(e)	((e) == NET_XMIT_CN? 0 : (e))#define net_xmit_errno(e)	((e) != NET_XMIT_CN ? -ENOBUFS : 0)#endif#define MAX_ADDR_LEN	32		/* Largest hardware address length *//* Driver transmit return codes */#define NETDEV_TX_OK 0		/* driver took care of packet */#define NETDEV_TX_BUSY 1	/* driver tx path was busy*/#define NETDEV_TX_LOCKED -1	/* driver tx lock was already taken *//* *	Compute the worst case header length according to the protocols *	used. */ #if !defined(CONFIG_AX25) && !defined(CONFIG_AX25_MODULE) && !defined(CONFIG_TR)#define LL_MAX_HEADER	32#else#if defined(CONFIG_AX25) || defined(CONFIG_AX25_MODULE)#define LL_MAX_HEADER	96#else#define LL_MAX_HEADER	48#endif#endif#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \    !defined(CONFIG_NET_IPGRE) &&  !defined(CONFIG_NET_IPGRE_MODULE) && \    !defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \    !defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE)#define MAX_HEADER LL_MAX_HEADER#else#define MAX_HEADER (LL_MAX_HEADER + 48)#endif/* *	Network device statistics. Akin to the 2.0 ether stats but *	with byte counters. */ struct net_device_stats{	unsigned long	rx_packets;		/* total packets received	*/	unsigned long	tx_packets;		/* total packets transmitted	*/	unsigned long	rx_bytes;		/* total bytes received 	*/	unsigned long	tx_bytes;		/* total bytes transmitted	*/	unsigned long	rx_errors;		/* bad packets received		*/	unsigned long	tx_errors;		/* packet transmit problems	*/	unsigned long	rx_dropped;		/* no space in linux buffers	*/	unsigned long	tx_dropped;		/* no space available in linux	*/	unsigned long	multicast;		/* multicast packets received	*/	unsigned long	collisions;	/* detailed rx_errors: */	unsigned long	rx_length_errors;	unsigned long	rx_over_errors;		/* receiver ring buff overflow	*/	unsigned long	rx_crc_errors;		/* recved pkt with crc error	*/	unsigned long	rx_frame_errors;	/* recv'd frame alignment error */	unsigned long	rx_fifo_errors;		/* recv'r fifo overrun		*/	unsigned long	rx_missed_errors;	/* receiver missed packet	*/	/* detailed tx_errors */	unsigned long	tx_aborted_errors;	unsigned long	tx_carrier_errors;	unsigned long	tx_fifo_errors;	unsigned long	tx_heartbeat_errors;	unsigned long	tx_window_errors;		/* for cslip etc */	unsigned long	rx_compressed;	unsigned long	tx_compressed;};/* Media selection options. */enum {        IF_PORT_UNKNOWN = 0,        IF_PORT_10BASE2,        IF_PORT_10BASET,        IF_PORT_AUI,        IF_PORT_100BASET,        IF_PORT_100BASETX,        IF_PORT_100BASEFX};#ifdef __KERNEL__#include <linux/cache.h>#include <linux/skbuff.h>struct neighbour;struct neigh_parms;struct sk_buff;struct netif_rx_stats{	unsigned total;	unsigned dropped;	unsigned time_squeeze;	unsigned cpu_collision;};DECLARE_PER_CPU(struct netif_rx_stats, netdev_rx_stat);/* *	We tag multicasts with these structures. */ struct dev_mc_list{		struct dev_mc_list	*next;	__u8			dmi_addr[MAX_ADDR_LEN];	unsigned char		dmi_addrlen;	int			dmi_users;	int			dmi_gusers;};struct hh_cache{	struct hh_cache *hh_next;	/* Next entry			     */	atomic_t	hh_refcnt;	/* number of users                   *//* * We want hh_output, hh_len, hh_lock and hh_data be a in a separate * cache line on SMP. * They are mostly read, but hh_refcnt may be changed quite frequently, * incurring cache line ping pongs. */	__be16		hh_type ____cacheline_aligned_in_smp;					/* protocol identifier, f.e ETH_P_IP                                         *  NOTE:  For VLANs, this will be the                                         *  encapuslated type. --BLG                                         */	u16		hh_len;		/* length of header */	int		(*hh_output)(struct sk_buff *skb);	seqlock_t	hh_lock;	/* cached hardware header; allow for machine alignment needs.        */#define HH_DATA_MOD	16#define HH_DATA_OFF(__len) \	(HH_DATA_MOD - (((__len - 1) & (HH_DATA_MOD - 1)) + 1))#define HH_DATA_ALIGN(__len) \	(((__len)+(HH_DATA_MOD-1))&~(HH_DATA_MOD - 1))	unsigned long	hh_data[HH_DATA_ALIGN(LL_MAX_HEADER) / sizeof(long)];};/* Reserve HH_DATA_MOD byte aligned hard_header_len, but at least that much. * Alternative is: *   dev->hard_header_len ? (dev->hard_header_len + *                           (HH_DATA_MOD - 1)) & ~(HH_DATA_MOD - 1) : 0 * * We could use other alignment values, but we must maintain the * relationship HH alignment <= LL alignment. */#define LL_RESERVED_SPACE(dev) \	(((dev)->hard_header_len&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)#define LL_RESERVED_SPACE_EXTRA(dev,extra) \	((((dev)->hard_header_len+extra)&~(HH_DATA_MOD - 1)) + HH_DATA_MOD)/* These flag bits are private to the generic network queueing * layer, they may not be explicitly referenced by any other * code. */enum netdev_state_t{	__LINK_STATE_XOFF=0,	__LINK_STATE_START,	__LINK_STATE_PRESENT,	__LINK_STATE_SCHED,	__LINK_STATE_NOCARRIER,	__LINK_STATE_RX_SCHED,	__LINK_STATE_LINKWATCH_PENDING,	__LINK_STATE_DORMANT,	__LINK_STATE_QDISC_RUNNING,};/* * This structure holds at boot time configured netdevice settings. They * are then used in the device probing.  */struct netdev_boot_setup {	char name[IFNAMSIZ];	struct ifmap map;};#define NETDEV_BOOT_SETUP_MAX 8extern int __init netdev_boot_setup(char *str);/* *	The DEVICE structure. *	Actually, this whole structure is a big mistake.  It mixes I/O *	data with strictly "high-level" data, and it has to know about *	almost every data structure used in the INET module. * *	FIXME: cleanup struct net_device such that network protocol info *	moves out. */struct net_device{	/*	 * This is the first field of the "visible" part of this structure	 * (i.e. as seen by users in the "Space.c" file).  It is the name	 * the interface.	 */	char			name[IFNAMSIZ];	/* device name hash chain */	struct hlist_node	name_hlist;	/*	 *	I/O specific fields	 *	FIXME: Merge these and struct ifmap into one	 */	unsigned long		mem_end;	/* shared mem end	*/	unsigned long		mem_start;	/* shared mem start	*/	unsigned long		base_addr;	/* device I/O address	*/	unsigned int		irq;		/* device IRQ number	*/	/*	 *	Some hardware also needs these fields, but they are not	 *	part of the usual set specified in Space.c.	 */	unsigned char		if_port;	/* Selectable AUI, TP,..*/	unsigned char		dma;		/* DMA channel		*/	unsigned long		state;	struct net_device	*next;		/* The device initialization function. Called only once. */	int			(*init)(struct net_device *dev);	/* ------- Fields preinitialized in Space.c finish here ------- */	/* Net device features */	unsigned long		features;#define NETIF_F_SG		1	/* Scatter/gather IO. */#define NETIF_F_IP_CSUM		2	/* Can checksum only TCP/UDP over IPv4. */#define NETIF_F_NO_CSUM		4	/* Does not require checksum. F.e. loopack. */#define NETIF_F_HW_CSUM		8	/* Can checksum all the packets. */#define NETIF_F_HIGHDMA		32	/* Can DMA to high memory. */#define NETIF_F_FRAGLIST	64	/* Scatter/gather IO. */#define NETIF_F_HW_VLAN_TX	128	/* Transmit VLAN hw acceleration */#define NETIF_F_HW_VLAN_RX	256	/* Receive VLAN hw acceleration */#define NETIF_F_HW_VLAN_FILTER	512	/* Receive filtering on VLAN */#define NETIF_F_VLAN_CHALLENGED	1024	/* Device cannot handle VLAN packets */#define NETIF_F_GSO		2048	/* Enable software GSO. */#define NETIF_F_LLTX		4096	/* LockLess TX */	/* Segmentation offload features */#define NETIF_F_GSO_SHIFT	16#define NETIF_F_GSO_MASK	0xffff0000#define NETIF_F_TSO		(SKB_GSO_TCPV4 << NETIF_F_GSO_SHIFT)#define NETIF_F_UFO		(SKB_GSO_UDP << NETIF_F_GSO_SHIFT)#define NETIF_F_GSO_ROBUST	(SKB_GSO_DODGY << NETIF_F_GSO_SHIFT)#define NETIF_F_TSO_ECN		(SKB_GSO_TCP_ECN << NETIF_F_GSO_SHIFT)#define NETIF_F_TSO6		(SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)	/* List of features with software fallbacks. */#define NETIF_F_GSO_SOFTWARE	(NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)#define NETIF_F_GEN_CSUM	(NETIF_F_NO_CSUM | NETIF_F_HW_CSUM)#define NETIF_F_ALL_CSUM	(NETIF_F_IP_CSUM | NETIF_F_GEN_CSUM)	struct net_device	*next_sched;	/* Interface index. Unique device identifier	*/	int			ifindex;	int			iflink;	struct net_device_stats* (*get_stats)(struct net_device *dev);	/* List of functions to handle Wireless Extensions (instead of ioctl).	 * See <net/iw_handler.h> for details. Jean II */	const struct iw_handler_def *	wireless_handlers;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -