|  | /* | 
|  | * 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. | 
|  | * | 
|  | *		Global definitions for the Token-Ring IEEE 802.5 interface. | 
|  | * | 
|  | * Version:	@(#)if_tr.h	0.0	07/11/94 | 
|  | * | 
|  | * Author:	Fred N. van Kempen, <[email protected]> | 
|  | *		Donald Becker, <[email protected]> | 
|  | *		Peter De Schrijver, <[email protected]> | 
|  | * | 
|  | *		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. | 
|  | */ | 
|  | #ifndef _LINUX_IF_TR_H | 
|  | #define _LINUX_IF_TR_H | 
|  |  | 
|  | #include <asm/byteorder.h>	/* For __be16 */ | 
|  |  | 
|  | /* IEEE 802.5 Token-Ring magic constants.  The frame sizes omit the preamble | 
|  | and FCS/CRC (frame check sequence). */ | 
|  | #define TR_ALEN		6		/* Octets in one token-ring addr */ | 
|  | #define TR_HLEN 	(sizeof(struct trh_hdr)+sizeof(struct trllc)) | 
|  | #define AC		0x10 | 
|  | #define LLC_FRAME 	0x40 | 
|  |  | 
|  | /* LLC and SNAP constants */ | 
|  | #define EXTENDED_SAP 	0xAA | 
|  | #define UI_CMD       	0x03 | 
|  |  | 
|  | /* This is an Token-Ring frame header. */ | 
|  | struct trh_hdr { | 
|  | __u8  ac;			/* access control field */ | 
|  | __u8  fc;			/* frame control field */ | 
|  | __u8  daddr[TR_ALEN];		/* destination address */ | 
|  | __u8  saddr[TR_ALEN];		/* source address */ | 
|  | __be16 rcf;			/* route control field */ | 
|  | __be16 rseg[8];			/* routing registers */ | 
|  | }; | 
|  |  | 
|  | #ifdef __KERNEL__ | 
|  | #include <linux/config.h> | 
|  | #include <linux/skbuff.h> | 
|  |  | 
|  | static inline struct trh_hdr *tr_hdr(const struct sk_buff *skb) | 
|  | { | 
|  | return (struct trh_hdr *)skb->mac.raw; | 
|  | } | 
|  | #ifdef CONFIG_SYSCTL | 
|  | extern struct ctl_table tr_table[]; | 
|  | #endif | 
|  | #endif | 
|  |  | 
|  | /* This is an Token-Ring LLC structure */ | 
|  | struct trllc { | 
|  | __u8  dsap;			/* destination SAP */ | 
|  | __u8  ssap;			/* source SAP */ | 
|  | __u8  llc;			/* LLC control field */ | 
|  | __u8  protid[3];		/* protocol id */ | 
|  | __be16 ethertype;		/* ether type field */ | 
|  | }; | 
|  |  | 
|  | /* Token-Ring statistics collection data. */ | 
|  | struct tr_statistics { | 
|  | 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 transmit_collision; | 
|  |  | 
|  | /* detailed Token-Ring errors. See IBM Token-Ring Network | 
|  | Architecture for more info */ | 
|  |  | 
|  | unsigned long line_errors; | 
|  | unsigned long internal_errors; | 
|  | unsigned long burst_errors; | 
|  | unsigned long A_C_errors; | 
|  | unsigned long abort_delimiters; | 
|  | unsigned long lost_frames; | 
|  | unsigned long recv_congest_count; | 
|  | unsigned long frame_copied_errors; | 
|  | unsigned long frequency_errors; | 
|  | unsigned long token_errors; | 
|  | unsigned long dummy1; | 
|  | }; | 
|  |  | 
|  | /* source routing stuff */ | 
|  | #define TR_RII 			0x80 | 
|  | #define TR_RCF_DIR_BIT 		0x80 | 
|  | #define TR_RCF_LEN_MASK 	0x1f00 | 
|  | #define TR_RCF_BROADCAST 	0x8000	/* all-routes broadcast */ | 
|  | #define TR_RCF_LIMITED_BROADCAST 0xC000	/* single-route broadcast */ | 
|  | #define TR_RCF_FRAME2K 		0x20 | 
|  | #define TR_RCF_BROADCAST_MASK 	0xC000 | 
|  | #define TR_MAXRIFLEN 		18 | 
|  |  | 
|  | #endif	/* _LINUX_IF_TR_H */ |