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