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 * Global definitions for the Token-Ring IEEE 802.5 interface. 7*53ee8cc1Swenshuai.xi * 8*53ee8cc1Swenshuai.xi * Version: @(#)if_tr.h 0.0 07/11/94 9*53ee8cc1Swenshuai.xi * 10*53ee8cc1Swenshuai.xi * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> 11*53ee8cc1Swenshuai.xi * Donald Becker, <becker@super.org> 12*53ee8cc1Swenshuai.xi * Peter De Schrijver, <stud11@cc4.kuleuven.ac.be> 13*53ee8cc1Swenshuai.xi * 14*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or 15*53ee8cc1Swenshuai.xi * modify it under the terms of the GNU General Public License 16*53ee8cc1Swenshuai.xi * as published by the Free Software Foundation; either version 17*53ee8cc1Swenshuai.xi * 2 of the License, or (at your option) any later version. 18*53ee8cc1Swenshuai.xi */ 19*53ee8cc1Swenshuai.xi #ifndef _LINUX_IF_TR_H 20*53ee8cc1Swenshuai.xi #define _LINUX_IF_TR_H 21*53ee8cc1Swenshuai.xi 22*53ee8cc1Swenshuai.xi #include <asm/byteorder.h> /* For __be16 */ 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xi /* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble 25*53ee8cc1Swenshuai.xi and FCS/CRC (frame check sequence). */ 26*53ee8cc1Swenshuai.xi #define TR_ALEN 6 /* Octets in one token-ring addr */ 27*53ee8cc1Swenshuai.xi #define TR_HLEN (sizeof(struct trh_hdr)+sizeof(struct trllc)) 28*53ee8cc1Swenshuai.xi #define AC 0x10 29*53ee8cc1Swenshuai.xi #define LLC_FRAME 0x40 30*53ee8cc1Swenshuai.xi 31*53ee8cc1Swenshuai.xi /* LLC and SNAP constants */ 32*53ee8cc1Swenshuai.xi #define EXTENDED_SAP 0xAA 33*53ee8cc1Swenshuai.xi #define UI_CMD 0x03 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi /* This is an Token-Ring frame header. */ 36*53ee8cc1Swenshuai.xi struct trh_hdr { 37*53ee8cc1Swenshuai.xi __u8 ac; /* access control field */ 38*53ee8cc1Swenshuai.xi __u8 fc; /* frame control field */ 39*53ee8cc1Swenshuai.xi __u8 daddr[TR_ALEN]; /* destination address */ 40*53ee8cc1Swenshuai.xi __u8 saddr[TR_ALEN]; /* source address */ 41*53ee8cc1Swenshuai.xi __be16 rcf; /* route control field */ 42*53ee8cc1Swenshuai.xi __be16 rseg[8]; /* routing registers */ 43*53ee8cc1Swenshuai.xi }; 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi 46*53ee8cc1Swenshuai.xi /* This is an Token-Ring LLC structure */ 47*53ee8cc1Swenshuai.xi struct trllc { 48*53ee8cc1Swenshuai.xi __u8 dsap; /* destination SAP */ 49*53ee8cc1Swenshuai.xi __u8 ssap; /* source SAP */ 50*53ee8cc1Swenshuai.xi __u8 llc; /* LLC control field */ 51*53ee8cc1Swenshuai.xi __u8 protid[3]; /* protocol id */ 52*53ee8cc1Swenshuai.xi __be16 ethertype; /* ether type field */ 53*53ee8cc1Swenshuai.xi }; 54*53ee8cc1Swenshuai.xi 55*53ee8cc1Swenshuai.xi /* Token-Ring statistics collection data. */ 56*53ee8cc1Swenshuai.xi struct tr_statistics { 57*53ee8cc1Swenshuai.xi unsigned long rx_packets; /* total packets received */ 58*53ee8cc1Swenshuai.xi unsigned long tx_packets; /* total packets transmitted */ 59*53ee8cc1Swenshuai.xi unsigned long rx_bytes; /* total bytes received */ 60*53ee8cc1Swenshuai.xi unsigned long tx_bytes; /* total bytes transmitted */ 61*53ee8cc1Swenshuai.xi unsigned long rx_errors; /* bad packets received */ 62*53ee8cc1Swenshuai.xi unsigned long tx_errors; /* packet transmit problems */ 63*53ee8cc1Swenshuai.xi unsigned long rx_dropped; /* no space in linux buffers */ 64*53ee8cc1Swenshuai.xi unsigned long tx_dropped; /* no space available in linux */ 65*53ee8cc1Swenshuai.xi unsigned long multicast; /* multicast packets received */ 66*53ee8cc1Swenshuai.xi unsigned long transmit_collision; 67*53ee8cc1Swenshuai.xi 68*53ee8cc1Swenshuai.xi /* detailed Token-Ring errors. See IBM Token-Ring Network 69*53ee8cc1Swenshuai.xi Architecture for more info */ 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi unsigned long line_errors; 72*53ee8cc1Swenshuai.xi unsigned long internal_errors; 73*53ee8cc1Swenshuai.xi unsigned long burst_errors; 74*53ee8cc1Swenshuai.xi unsigned long A_C_errors; 75*53ee8cc1Swenshuai.xi unsigned long abort_delimiters; 76*53ee8cc1Swenshuai.xi unsigned long lost_frames; 77*53ee8cc1Swenshuai.xi unsigned long recv_congest_count; 78*53ee8cc1Swenshuai.xi unsigned long frame_copied_errors; 79*53ee8cc1Swenshuai.xi unsigned long frequency_errors; 80*53ee8cc1Swenshuai.xi unsigned long token_errors; 81*53ee8cc1Swenshuai.xi unsigned long dummy1; 82*53ee8cc1Swenshuai.xi }; 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi /* source routing stuff */ 85*53ee8cc1Swenshuai.xi #define TR_RII 0x80 86*53ee8cc1Swenshuai.xi #define TR_RCF_DIR_BIT 0x80 87*53ee8cc1Swenshuai.xi #define TR_RCF_LEN_MASK 0x1f00 88*53ee8cc1Swenshuai.xi #define TR_RCF_BROADCAST 0x8000 /* all-routes broadcast */ 89*53ee8cc1Swenshuai.xi #define TR_RCF_LIMITED_BROADCAST 0xC000 /* single-route broadcast */ 90*53ee8cc1Swenshuai.xi #define TR_RCF_FRAME2K 0x20 91*53ee8cc1Swenshuai.xi #define TR_RCF_BROADCAST_MASK 0xC000 92*53ee8cc1Swenshuai.xi #define TR_MAXRIFLEN 18 93*53ee8cc1Swenshuai.xi 94*53ee8cc1Swenshuai.xi #endif /* _LINUX_IF_TR_H */ 95