1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * INET An implementation of the TCP/IP protocol suite for the LINUX 3*53ee8cc1Swenshuai.xi * operating system. INET is implemented using the BSD Socket 4*53ee8cc1Swenshuai.xi * interface as the means of communication with the user level. 5*53ee8cc1Swenshuai.xi * 6*53ee8cc1Swenshuai.xi * Definitions for the Interfaces handler. 7*53ee8cc1Swenshuai.xi * 8*53ee8cc1Swenshuai.xi * Version: @(#)dev.h 1.0.10 08/12/93 9*53ee8cc1Swenshuai.xi * 10*53ee8cc1Swenshuai.xi * Authors: Ross Biro 11*53ee8cc1Swenshuai.xi * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> 12*53ee8cc1Swenshuai.xi * Corey Minyard <wf-rch!minyard@relay.EU.net> 13*53ee8cc1Swenshuai.xi * Donald J. Becker, <becker@cesdis.gsfc.nasa.gov> 14*53ee8cc1Swenshuai.xi * Alan Cox, <Alan.Cox@linux.org> 15*53ee8cc1Swenshuai.xi * Bjorn Ekwall. <bj0rn@blox.se> 16*53ee8cc1Swenshuai.xi * Pekka Riikonen <priikone@poseidon.pspt.fi> 17*53ee8cc1Swenshuai.xi * 18*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or 19*53ee8cc1Swenshuai.xi * modify it under the terms of the GNU General Public License 20*53ee8cc1Swenshuai.xi * as published by the Free Software Foundation; either version 21*53ee8cc1Swenshuai.xi * 2 of the License, or (at your option) any later version. 22*53ee8cc1Swenshuai.xi * 23*53ee8cc1Swenshuai.xi * Moved to /usr/include/linux for NET3 24*53ee8cc1Swenshuai.xi */ 25*53ee8cc1Swenshuai.xi #ifndef _LINUX_NETDEVICE_H 26*53ee8cc1Swenshuai.xi #define _LINUX_NETDEVICE_H 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi #include <linux/if.h> 29*53ee8cc1Swenshuai.xi #include <linux/if_ether.h> 30*53ee8cc1Swenshuai.xi #include <linux/if_packet.h> 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi 33*53ee8cc1Swenshuai.xi #define MAX_ADDR_LEN 32 /* Largest hardware address length */ 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi /* Driver transmit return codes */ 36*53ee8cc1Swenshuai.xi #define NETDEV_TX_OK 0 /* driver took care of packet */ 37*53ee8cc1Swenshuai.xi #define NETDEV_TX_BUSY 1 /* driver tx path was busy*/ 38*53ee8cc1Swenshuai.xi #define NETDEV_TX_LOCKED -1 /* driver tx lock was already taken */ 39*53ee8cc1Swenshuai.xi 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi struct net_device_subqueue 42*53ee8cc1Swenshuai.xi { 43*53ee8cc1Swenshuai.xi /* Give a control state for each queue. This struct may contain 44*53ee8cc1Swenshuai.xi * per-queue locks in the future. 45*53ee8cc1Swenshuai.xi */ 46*53ee8cc1Swenshuai.xi unsigned long state; 47*53ee8cc1Swenshuai.xi }; 48*53ee8cc1Swenshuai.xi 49*53ee8cc1Swenshuai.xi /* 50*53ee8cc1Swenshuai.xi * Network device statistics. Akin to the 2.0 ether stats but 51*53ee8cc1Swenshuai.xi * with byte counters. 52*53ee8cc1Swenshuai.xi */ 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi struct net_device_stats 55*53ee8cc1Swenshuai.xi { 56*53ee8cc1Swenshuai.xi unsigned long rx_packets; /* total packets received */ 57*53ee8cc1Swenshuai.xi unsigned long tx_packets; /* total packets transmitted */ 58*53ee8cc1Swenshuai.xi unsigned long rx_bytes; /* total bytes received */ 59*53ee8cc1Swenshuai.xi unsigned long tx_bytes; /* total bytes transmitted */ 60*53ee8cc1Swenshuai.xi unsigned long rx_errors; /* bad packets received */ 61*53ee8cc1Swenshuai.xi unsigned long tx_errors; /* packet transmit problems */ 62*53ee8cc1Swenshuai.xi unsigned long rx_dropped; /* no space in linux buffers */ 63*53ee8cc1Swenshuai.xi unsigned long tx_dropped; /* no space available in linux */ 64*53ee8cc1Swenshuai.xi unsigned long multicast; /* multicast packets received */ 65*53ee8cc1Swenshuai.xi unsigned long collisions; 66*53ee8cc1Swenshuai.xi 67*53ee8cc1Swenshuai.xi /* detailed rx_errors: */ 68*53ee8cc1Swenshuai.xi unsigned long rx_length_errors; 69*53ee8cc1Swenshuai.xi unsigned long rx_over_errors; /* receiver ring buff overflow */ 70*53ee8cc1Swenshuai.xi unsigned long rx_crc_errors; /* recved pkt with crc error */ 71*53ee8cc1Swenshuai.xi unsigned long rx_frame_errors; /* recv'd frame alignment error */ 72*53ee8cc1Swenshuai.xi unsigned long rx_fifo_errors; /* recv'r fifo overrun */ 73*53ee8cc1Swenshuai.xi unsigned long rx_missed_errors; /* receiver missed packet */ 74*53ee8cc1Swenshuai.xi 75*53ee8cc1Swenshuai.xi /* detailed tx_errors */ 76*53ee8cc1Swenshuai.xi unsigned long tx_aborted_errors; 77*53ee8cc1Swenshuai.xi unsigned long tx_carrier_errors; 78*53ee8cc1Swenshuai.xi unsigned long tx_fifo_errors; 79*53ee8cc1Swenshuai.xi unsigned long tx_heartbeat_errors; 80*53ee8cc1Swenshuai.xi unsigned long tx_window_errors; 81*53ee8cc1Swenshuai.xi 82*53ee8cc1Swenshuai.xi /* for cslip etc */ 83*53ee8cc1Swenshuai.xi unsigned long rx_compressed; 84*53ee8cc1Swenshuai.xi unsigned long tx_compressed; 85*53ee8cc1Swenshuai.xi }; 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi 88*53ee8cc1Swenshuai.xi /* Media selection options. */ 89*53ee8cc1Swenshuai.xi enum { 90*53ee8cc1Swenshuai.xi IF_PORT_UNKNOWN = 0, 91*53ee8cc1Swenshuai.xi IF_PORT_10BASE2, 92*53ee8cc1Swenshuai.xi IF_PORT_10BASET, 93*53ee8cc1Swenshuai.xi IF_PORT_AUI, 94*53ee8cc1Swenshuai.xi IF_PORT_100BASET, 95*53ee8cc1Swenshuai.xi IF_PORT_100BASETX, 96*53ee8cc1Swenshuai.xi IF_PORT_100BASEFX 97*53ee8cc1Swenshuai.xi }; 98*53ee8cc1Swenshuai.xi 99*53ee8cc1Swenshuai.xi 100*53ee8cc1Swenshuai.xi #endif /* _LINUX_DEV_H */ 101