From f4505647504001914b55749257f2c7270c8bfbf7 Mon Sep 17 00:00:00 2001 From: harti Date: Mon, 16 Jun 2003 13:52:27 +0000 Subject: Fix the breakage introduced by rev. 1.43 of sys/dev/midway.c (don't commit on friday 13th and without making a universe). This adds struct and constant definitions for ATM traffic parameters and re-enables the build of the midway driver. Tested by: make universe --- sys/net/if_atm.h | 109 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 92 insertions(+), 17 deletions(-) (limited to 'sys/net') diff --git a/sys/net/if_atm.h b/sys/net/if_atm.h index 98f3b3b..fee0185 100644 --- a/sys/net/if_atm.h +++ b/sys/net/if_atm.h @@ -46,15 +46,23 @@ #define ATM_DEVICE_HE622 3 /* Fore/Marconi HE622 */ #define ATM_DEVICE_ENI155P 4 /* Efficient networks 155p */ #define ATM_DEVICE_ADP155P 5 /* Adaptec 155p */ +#define ATM_DEVICE_FORELE25 6 /* ForeRunnerLE 25 */ +#define ATM_DEVICE_FORELE155 7 /* ForeRunnerLE 155 */ +#define ATM_DEVICE_NICSTAR25 8 /* other 77211 25.6MBit */ +#define ATM_DEVICE_NICSTAR155 9 /* other 77211 155MBit */ /* map to strings and vendors */ -#define ATM_DEVICE_NAMES \ - { "Unknown", "Unknown" }, \ - { "PCA200-E", "Fore/Marconi" }, \ - { "HE155", "Fore/Marconi" }, \ - { "HE622", "Fore/Marconi" }, \ - { "ENI155p", "Efficient Networks" }, \ - { "ADP155p", "Adaptec" }, +#define ATM_DEVICE_NAMES \ + { "Unknown", "Unknown" }, \ + { "PCA200-E", "Fore/Marconi" }, \ + { "HE155", "Fore/Marconi" }, \ + { "HE622", "Fore/Marconi" }, \ + { "ENI155p", "Efficient Networks" }, \ + { "ADP155p", "Adaptec" }, \ + { "ForeRunnerLE25", "Fore/Marconi" }, \ + { "ForeRunnerLE155", "Fore/Marconi" }, \ + { "IDT77211/25", "IDT" }, \ + { "IDT77211/155", "IDT" }, /* * This is the common link layer MIB for all ATM interfaces. Much of the @@ -76,26 +84,91 @@ struct ifatm_mib { uint32_t max_vccs; /* maximum number of VCCs */ }; -#ifdef _KERNEL /* - * Common fields for all ATM interfaces. Each driver's softc must start with - * this structure. + * Traffic parameters for ATM connections. This contains all parameters + * to accomodate UBR, UBR+MCR, CBR, VBR and ABR connections. + * + * Keep in sync with ng_atm.h */ -struct ifatm { - struct ifnet ifnet; /* required by if_var.h */ - struct ifatm_mib mib; /* exported data */ - void *phy; /* usually SUNI */ - void *ngpriv; /* netgraph link */ +struct atmio_tparam { + uint32_t pcr; /* 24bit: Peak Cell Rate */ + uint32_t scr; /* 24bit: VBR Sustainable Cell Rate */ + uint32_t mbs; /* 24bit: VBR Maximum burst size */ + uint32_t mcr; /* 24bit: ABR/VBR/UBR+MCR MCR */ + uint32_t icr; /* 24bit: ABR ICR */ + uint32_t tbe; /* 24bit: ABR TBE (1...2^24-1) */ + uint8_t nrm; /* 3bit: ABR Nrm */ + uint8_t trm; /* 3bit: ABR Trm */ + uint16_t adtf; /* 10bit: ABR ADTF */ + uint8_t rif; /* 4bit: ABR RIF */ + uint8_t rdf; /* 4bit: ABR RDF */ + uint8_t cdf; /* 3bit: ABR CDF */ +}; + +/* + * VCC parameters + * + * Keep in sync with ng_atm.h + */ +struct atmio_vcc { + uint16_t flags; /* VCC flags */ + uint16_t vpi; + uint16_t vci; + uint16_t rmtu; /* maximum receive PDU */ + uint16_t tmtu; /* maximum transmit PDU */ + uint8_t aal; /* aal type */ + uint8_t traffic; /* traffic type */ + struct atmio_tparam tparam; /* traffic parameters */ +}; + +/* VCC flags */ +#define ATMIO_FLAG_LLCSNAP 0x0002 /* same as ATM_PH_LLCSNAP */ +#define ATMIO_FLAG_NG 0x0010 /* owned by netgraph */ +#define ATMIO_FLAG_HARP 0x0020 /* owned by HARP */ +#define ATMIO_FLAG_NORX 0x0100 /* not receiving on this VCC */ +#define ATMIO_FLAG_NOTX 0x0200 /* not transmitting on this VCC */ +#define ATMIO_FLAG_PVC 0x0400 /* this is a PVC */ +#define ATMIO_FLAGS "\020\2LLCSNAP\5NG\6HARP\11NORX\12NOTX\13PVC" + +#define ATMIO_AAL_0 0 /* pure cells */ +#define ATMIO_AAL_34 4 /* AAL3 and 4 */ +#define ATMIO_AAL_5 5 /* AAL5 */ +#define ATMIO_AAL_RAW 10 /* whatever the card does */ + +#define ATMIO_TRAFFIC_UBR 0 +#define ATMIO_TRAFFIC_CBR 1 +#define ATMIO_TRAFFIC_ABR 2 +#define ATMIO_TRAFFIC_VBR 3 + +/* + * VCC table + * + * Keep in sync with ng_atm.h + */ +struct atmio_vcctable { + uint32_t count; /* number of vccs */ + struct atmio_vcc vccs[0]; /* array of VCCs */ }; -#endif /* * Peak cell rates for various physical media. Note, that there are * different opinions on what the correct values are. */ +#define ATM_RATE_25_6M 59259 #define ATM_RATE_155M 353208 #define ATM_RATE_622M 1412830 -#define ATM_RATE_24G 5651320 +#define ATM_RATE_2_4G 5651320 + +/* + * Common fields for all ATM interfaces. Each driver's softc must start with + * this structure. + */ +struct ifatm { + struct ifnet ifnet; /* required by if_var.h */ + struct ifatm_mib mib; /* exported data */ + void *phy; /* usually SUNI */ + void *ngpriv; /* netgraph link */ +}; #if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) #define RTALLOC1(A,B) rtalloc1((A),(B)) @@ -138,7 +211,9 @@ struct atm_pseudoioctl { }; #define SIOCATMENA _IOWR('a', 123, struct atm_pseudoioctl) /* enable */ #define SIOCATMDIS _IOWR('a', 124, struct atm_pseudoioctl) /* disable */ +#define SIOCATMGETVCCS _IOW('a', 125, struct atmio_vcctable) +#define SIOCATMGVCCS _IOWR('i', 230, struct ifreq) /* * XXX forget all the garbage in if_llc.h and do it the easy way -- cgit v1.1