diff --git a/src/libs/compat/freebsd_network/Jamfile b/src/libs/compat/freebsd_network/Jamfile index b61a2711ae..a3b3351a88 100644 --- a/src/libs/compat/freebsd_network/Jamfile +++ b/src/libs/compat/freebsd_network/Jamfile @@ -26,3 +26,22 @@ KernelStaticLibrary libfreebsd_network.a : mutex.c taskqueue.c ; + +rule MIIHeaderGen +{ + SEARCH on $(2) = [ FDirName $(SUBDIR) compat dev mii ] ; + SEARCH on $(3) = $(SEARCH_SOURCE) ; + + Depends $(1) : $(2) $(3) ; + MakeLocateArch $(<) ; + MIIHeaderGen1 $(1) : $(2) $(3) ; + LocalClean clean : $(<) ; +} + +actions MIIHeaderGen1 +{ + gawk -v HEADERFILE=$(1) -f $(2[2]) $(2[1]) +} + +MIIHeaderGen [ FGristFiles miidevs.h ] : miidevs : miidevs2h.awk ; + diff --git a/src/libs/compat/freebsd_network/compat/dev/mii/miidevs b/src/libs/compat/freebsd_network/compat/dev/mii/miidevs new file mode 100644 index 0000000000..f35cb7b859 --- /dev/null +++ b/src/libs/compat/freebsd_network/compat/dev/mii/miidevs @@ -0,0 +1,250 @@ +$FreeBSD: src/sys/dev/mii/miidevs,v 1.62 2008/10/23 01:27:15 yongari Exp $ +/*$NetBSD: miidevs,v 1.6 1999/05/14 11:37:30 drochner Exp $*/ + +/*- + * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, + * NASA Ames Research Center. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the NetBSD + * Foundation, Inc. and its contributors. + * 4. Neither the name of The NetBSD Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * List of known MII OUIs. + * For a complete list see http://standards.ieee.org/regauth/oui/ + * + * XXX Vendors do obviously not agree how OUIs (18 bit) are mapped + * to the 16 bits available in the id registers. The MII_OUI() macro + * in "mii.h" reflects the most obvious way. If a vendor uses a + * different mapping, an "xx" prefixed OUI is defined here which is + * mangled accordingly to compensate. + */ + +oui AGERE 0x00a0bc Agere Systems +oui ALTIMA 0x0010a9 Altima Communications +oui AMD 0x00001a Advanced Micro Devices +oui ATHEROS 0x001374 Atheros Communications +oui BROADCOM 0x001018 Broadcom Corporation +oui BROADCOM2 0x000af7 Broadcom Corporation +oui CICADA 0x0003F1 Cicada Semiconductor +oui DAVICOM 0x00606e Davicom Semiconductor +oui ICPLUS 0x0090c3 IC Plus Corp. +oui ICS 0x00a0be Integrated Circuit Systems +oui INTEL 0x00aa00 Intel +oui JATO 0x00e083 Jato Technologies +oui JMICRON 0x001b8c JMicron Technologies +oui LEVEL1 0x00207b Level 1 +oui NATSEMI 0x080017 National Semiconductor +oui QUALSEMI 0x006051 Quality Semiconductor +oui REALTEK 0x000020 RealTek Semicondctor +oui SEEQ 0x00a07d Seeq +oui SIS 0x00e006 Silicon Integrated Systems +oui SMSC 0x0005be SMSC +oui TDK 0x00c039 TDK +oui TI 0x080028 Texas Instruments +oui VITESSE 0x0001c1 Vitesse Semiconductor +oui XAQTI 0x00e0ae XaQti Corp. +oui MARVELL 0x005043 Marvell Semiconductor +oui xxMARVELL 0x000ac2 Marvell Semiconductor + +/* in the 79c873, AMD uses another OUI (which matches Davicom!) */ +oui xxAMD 0x00606e Advanced Micro Devices + +/* Intel 82553 A/B steppings */ +oui xxINTEL 0x00f800 Intel + +/* some vendors have the bits swapped within bytes + (ie, ordered as on the wire) */ +oui xxALTIMA 0x000895 Altima Communications +oui xxBROADCOM 0x000818 Broadcom Corporation +oui xxBROADCOM_ALT1 0x0050ef Broadcom Corporation +oui xxICS 0x00057d Integrated Circuit Systems +oui xxSEEQ 0x0005be Seeq +oui xxSIS 0x000760 Silicon Integrated Systems +oui xxTI 0x100014 Texas Instruments +oui xxXAQTI 0x350700 XaQti Corp. + +/* Level 1 is completely different - from right to left. + (Two bits get lost in the third OUI byte.) */ +oui xxLEVEL1 0x1e0400 Level 1 + +/* Don't know what's going on here. */ +oui xxDAVICOM 0x006040 Davicom Semiconductor + +/* This is the OUI of the gigE PHY in the RealTek 8169S/8110S/8211B chips */ +oui xxREALTEK 0x000732 + +/* + * List of known models. Grouped by oui. + */ + +/* Agere Systems PHYs */ +model AGERE ET1011C 0x0004 ET1011C 10/100/1000baseT PHY + +/* Altima Communications PHYs */ +model xxALTIMA AC101 0x0021 AC101 10/100 media interface +model xxALTIMA AC101L 0x0012 AC101L 10/100 media interface +model xxALTIMA ACXXX 0x0001 ACXXX 10/100 media interface + +/* Advanced Micro Devices PHYs */ +model AMD 79c973phy 0x0036 Am79c973 internal PHY +model AMD 79c978 0x0039 Am79c978 HomePNA PHY +model xxAMD 79C873 0x0000 Am79C873/DM9101 10/100 media interface + +/* Atheros Communications/Attansic PHYs. */ +model ATHEROS F1 0x0001 Atheros F1 10/100/1000 PHY +model ATHEROS F2 0x0002 Atheros F2 10/100 PHY + +/* Broadcom Corp. PHYs. */ +model BROADCOM 3C905B 0x0012 3c905B 10/100 internal PHY +model BROADCOM 3C905C 0x0017 3c905C 10/100 internal PHY +model BROADCOM BCM5201 0x0021 BCM5201 10/100baseTX PHY +model BROADCOM BCM5221 0x001e BCM5221 10/100baseTX PHY +model BROADCOM BCM4401 0x0036 BCM4401 10/100baseTX PHY +model xxBROADCOM BCM5400 0x0004 Broadcom 1000baseTX PHY +model xxBROADCOM BCM5401 0x0005 BCM5401 10/100/1000baseTX PHY +model xxBROADCOM BCM5411 0x0007 BCM5411 10/100/1000baseTX PHY +model xxBROADCOM BCM5754 0x000e BCM5754 10/100/1000baseTX PHY +model xxBROADCOM BCM5752 0x0010 BCM5752 10/100/1000baseTX PHY +model xxBROADCOM BCM5701 0x0011 BCM5701 10/100/1000baseTX PHY +model xxBROADCOM BCM5706 0x0015 BCM5706 10/100/1000baseTX/SX PHY +model xxBROADCOM BCM5703 0x0016 BCM5703 10/100/1000baseTX PHY +model xxBROADCOM BCM5704 0x0019 BCM5704 10/100/1000baseTX PHY +model xxBROADCOM BCM5705 0x001a BCM5705 10/100/1000baseTX PHY +model xxBROADCOM BCM5750 0x0018 BCM5750 10/100/1000baseTX PHY +model xxBROADCOM BCM5714 0x0034 BCM5714 10/100/1000baseTX PHY +model xxBROADCOM BCM5780 0x0035 BCM5780 10/100/1000baseTX PHY +model xxBROADCOM BCM5708C 0x0036 BCM5708C 10/100/1000baseTX PHY +model xxBROADCOM_ALT1 BCM5755 0x000c BCM5755 10/100/1000baseTX PHY +model xxBROADCOM_ALT1 BCM5787 0x000e BCM5787 10/100/1000baseTX PHY +model xxBROADCOM_ALT1 BCM5708S 0x0015 BCM5708S 1000/2500BaseSX PHY +model xxBROADCOM_ALT1 BCM5709CAX 0x002c BCM5709C(AX) 10/100/1000baseTX PHY +model xxBROADCOM_ALT1 BCM5722 0x002d BCM5722 10/100/1000baseTX PHY +model xxBROADCOM_ALT1 BCM5709C 0x003c BCM5709C 10/100/1000baseTX PHY +model BROADCOM2 BCM5906 0x0004 BCM5906 10/100baseTX PHY + +/* Cicada Semiconductor PHYs (now owned by Vitesse?) */ +model CICADA CS8201 0x0001 Cicada CS8201 10/100/1000TX PHY +model CICADA CS8204 0x0004 Cicada CS8204 10/100/1000TX PHY +model CICADA VSC8211 0x000b Cicada VSC8211 10/100/1000TX PHY +model CICADA CS8201A 0x0020 Cicada CS8201 10/100/1000TX PHY +model CICADA CS8201B 0x0021 Cicada CS8201 10/100/1000TX PHY +model CICADA CS8244 0x002c Cicada CS8244 10/100/1000TX PHY +model VITESSE VSC8601 0x0002 Vitesse VSC8601 10/100/1000TX PHY + +/* Davicom Semiconductor PHYs */ +model DAVICOM DM9102 0x0004 DM9102 10/100 media interface +model xxDAVICOM DM9101 0x0000 DM9101 10/100 media interface + +/* Integrated Circuit Systems PHYs */ +model xxICS 1889 0x0001 ICS1889 10/100 media interface +model xxICS 1890 0x0002 ICS1890 10/100 media interface +model xxICS 1892 0x0003 ICS1892 10/100 media interface +model xxICS 1893 0x0004 ICS1893 10/100 media interface + +/* IC Plus Corp. PHYs */ +model ICPLUS IP101 0x0005 IC Plus 10/100 PHY +model ICPLUS IP1000A 0x0008 IC Plus 10/100/1000 media interface +model ICPLUS IP1001 0x0019 IC Plus IP1001 10/100/1000 media interface + +/* Intel PHYs */ +model xxINTEL I82553AB 0x0000 i83553 10/100 media interface +model INTEL I82555 0x0015 i82555 10/100 media interface +model INTEL I82562EM 0x0032 i82562EM 10/100 media interface +model INTEL I82562ET 0x0033 i82562ET 10/100 media interface +model INTEL I82553C 0x0035 i82553 10/100 media interface + +/* Jato Technologies PHYs */ +model JATO BASEX 0x0000 Jato 1000baseX media interface + +/* JMicron Technologies PHYs */ +model JMICRON JMP211 0x0021 JMP211 10/100/1000 media interface +model JMICRON JMP202 0x0022 JMP202 10/100 media interface + +/* Level 1 PHYs */ +model xxLEVEL1 LXT970 0x0000 LXT970 10/100 media interface + +/* National Semiconductor PHYs */ +model NATSEMI DP83840 0x0000 DP83840 10/100 media interface +model NATSEMI DP83843 0x0001 DP83843 10/100 media interface +model NATSEMI DP83815 0x0002 DP83815 10/100 media interface +model NATSEMI DP83847 0x0003 DP83847 10/100 media interface +model NATSEMI DP83891 0x0005 DP83891 10/100/1000 media interface +model NATSEMI DP83861 0x0006 DP83861 10/100/1000 media interface + +/* Quality Semiconductor PHYs */ +model QUALSEMI QS6612 0x0000 QS6612 10/100 media interface + +/* RealTek Semiconductor PHYs */ +model REALTEK RTL8201L 0x0020 RTL8201L 10/100 media interface +model xxREALTEK RTL8305SC 0x0005 RTL8305SC 10/100 802.1q switch +model xxREALTEK RTL8169S 0x0011 RTL8169S/8110S/8211B media interface + +/* Seeq PHYs */ +model xxSEEQ 80220 0x0003 Seeq 80220 10/100 media interface +model xxSEEQ 84220 0x0004 Seeq 84220 10/100 media interface + +/* Silicon Integrated Systems PHYs */ +model xxSIS 900 0x0000 SiS 900 10/100 media interface + +/* SMSC PHYs */ +model SMSC LAN83C183 0x0004 SMSC LAN83C183 10/100 media interface + +/* TDK */ +model TDK 78Q2120 0x0014 TDK 78Q2120 media interface + +/* Texas Instruments PHYs */ +model xxTI TLAN10T 0x0001 ThunderLAN 10baseT media interface +model xxTI 100VGPMI 0x0002 ThunderLAN 100VG-AnyLan media interface + +/* XaQti Corp. PHYs. */ +model XAQTI XMACII 0x0000 XaQti Corp. XMAC II gigabit interface + +/* Marvell Semiconductor PHYs */ +model MARVELL E1000 0x0000 Marvell 88E1000 Gigabit PHY +model MARVELL E1011 0x0002 Marvell 88E1011 Gigabit PHY +model MARVELL E1000_3 0x0003 Marvell 88E1000 Gigabit PHY +model MARVELL E1000S 0x0004 Marvell 88E1000S Gigabit PHY +model MARVELL E1000_5 0x0005 Marvell 88E1000 Gigabit PHY +model MARVELL E1000_6 0x0006 Marvell 88E1000 Gigabit PHY +model MARVELL E3082 0x0008 Marvell 88E3082 10/100 Fast Ethernet PHY +model MARVELL E1112 0x0009 Marvell 88E1112 Gigabit PHY +model MARVELL E1149 0x000b Marvell 88E1149 Gigabit PHY +model MARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY +model MARVELL E1116 0x0021 Marvell 88E1116 Gigabit PHY +model MARVELL E1116R 0x0024 Marvell 88E1116R Gigabit PHY +model MARVELL E1118 0x0022 Marvell 88E1118 Gigabit PHY +model xxMARVELL E1000 0x0005 Marvell 88E1000 Gigabit PHY +model xxMARVELL E1011 0x0002 Marvell 88E1011 Gigabit PHY +model xxMARVELL E1000_3 0x0003 Marvell 88E1000 Gigabit PHY +model xxMARVELL E1000_5 0x0005 Marvell 88E1000 Gigabit PHY +model xxMARVELL E1111 0x000c Marvell 88E1111 Gigabit PHY diff --git a/src/libs/compat/freebsd_network/compat/net/if_media.h b/src/libs/compat/freebsd_network/compat/net/if_media.h index 79ddd9a012..2635dd6857 100644 --- a/src/libs/compat/freebsd_network/compat/net/if_media.h +++ b/src/libs/compat/freebsd_network/compat/net/if_media.h @@ -1,5 +1,5 @@ /* $NetBSD: if_media.h,v 1.3 1997/03/26 01:19:27 thorpej Exp $ */ -/* $FreeBSD: src/sys/net/if_media.h,v 1.30.2.3 2006/08/10 10:21:00 glebius Exp $ */ +/* $FreeBSD: src/sys/net/if_media.h,v 1.43 2008/08/01 22:13:39 antoine Exp $ */ /*- * Copyright (c) 1997 @@ -144,6 +144,7 @@ uint64_t ifmedia_baudrate(int); #define IFM_10G_LR 18 /* 10GBase-LR 1310nm Single-mode */ #define IFM_10G_SR 19 /* 10GBase-SR 850nm Multi-mode */ #define IFM_10G_CX4 20 /* 10GBase CX4 copper */ +#define IFM_2500_SX 21 /* 2500BaseSX - multi-mode fiber */ /* note 31 is the max! */ @@ -198,11 +199,16 @@ uint64_t ifmedia_baudrate(int); #define IFM_IEEE80211_OFDM72 18 /* OFDM 72Mbps */ #define IFM_IEEE80211_DS354k 19 /* Direct Sequence 354Kbps */ #define IFM_IEEE80211_DS512k 20 /* Direct Sequence 512Kbps */ +#define IFM_IEEE80211_OFDM3 21 /* OFDM 3Mbps */ +#define IFM_IEEE80211_OFDM4 22 /* OFDM 4.5Mbps */ +#define IFM_IEEE80211_OFDM27 23 /* OFDM 27Mbps */ +/* NB: not enough bits to express MCS fully */ +#define IFM_IEEE80211_MCS 24 /* HT MCS rate */ #define IFM_IEEE80211_ADHOC 0x00000100 /* Operate in Adhoc mode */ #define IFM_IEEE80211_HOSTAP 0x00000200 /* Operate in Host AP mode */ #define IFM_IEEE80211_IBSS 0x00000400 /* Operate in IBSS mode */ -#define IFM_IEEE80211_IBSSMASTER 0x00000800 /* Operate as an IBSS master */ +#define IFM_IEEE80211_WDS 0x00000800 /* Operate in WDS mode */ #define IFM_IEEE80211_TURBO 0x00001000 /* Operate in turbo mode */ #define IFM_IEEE80211_MONITOR 0x00002000 /* Operate in monitor mode */ @@ -211,6 +217,8 @@ uint64_t ifmedia_baudrate(int); #define IFM_IEEE80211_11B 0x00020000 /* Direct Sequence mode */ #define IFM_IEEE80211_11G 0x00030000 /* 2Ghz, CCK mode */ #define IFM_IEEE80211_FH 0x00040000 /* 2Ghz, GFSK mode */ +#define IFM_IEEE80211_11NA 0x00050000 /* 5Ghz, HT mode */ +#define IFM_IEEE80211_11NG 0x00060000 /* 2Ghz, HT mode */ /* * ATM @@ -267,8 +275,8 @@ uint64_t ifmedia_baudrate(int); /* * Status bits */ -#define IFM_AVALID 0x10000000 /* Active bit valid */ -#define IFM_ACTIVE 0x00800000 /* same as Haiku's */ +#define IFM_AVALID 0x00000001 /* Active bit valid */ +#define IFM_ACTIVE 0x00000002 /* Interface attached to working net */ /* Mask of "status valid" bits, for ifconfig(8). */ #define IFM_STATUS_VALID IFM_AVALID @@ -335,12 +343,12 @@ struct ifmedia_description { { IFM_1000_SX, "1000baseSX" }, \ { IFM_1000_LX, "1000baseLX" }, \ { IFM_1000_CX, "1000baseCX" }, \ - { IFM_1000_T, "1000baseTX" }, \ { IFM_1000_T, "1000baseT" }, \ { IFM_HPNA_1, "homePNA" }, \ { IFM_10G_LR, "10Gbase-LR" }, \ { IFM_10G_SR, "10Gbase-SR" }, \ { IFM_10G_CX4, "10Gbase-CX4" }, \ + { IFM_2500_SX, "2500BaseSX" }, \ { 0, NULL }, \ } @@ -360,8 +368,10 @@ struct ifmedia_description { { IFM_1000_SX, "1000SX" }, \ { IFM_1000_LX, "1000LX" }, \ { IFM_1000_CX, "1000CX" }, \ + { IFM_1000_T, "1000baseTX" }, \ { IFM_1000_T, "1000TX" }, \ { IFM_1000_T, "1000T" }, \ + { IFM_2500_SX, "2500SX" }, \ { 0, NULL }, \ } @@ -437,6 +447,9 @@ struct ifmedia_description { { IFM_IEEE80211_OFDM72, "OFDM/72Mbps" }, \ { IFM_IEEE80211_DS354k, "DS/354Kbps" }, \ { IFM_IEEE80211_DS512k, "DS/512Kbps" }, \ + { IFM_IEEE80211_OFDM3, "OFDM/3Mbps" }, \ + { IFM_IEEE80211_OFDM4, "OFDM/4.5Mbps" }, \ + { IFM_IEEE80211_OFDM27, "OFDM/27Mbps" }, \ { 0, NULL }, \ } @@ -472,6 +485,9 @@ struct ifmedia_description { { IFM_IEEE80211_DS354k, "DirectSequence/354Kbps" }, \ { IFM_IEEE80211_DS512k, "DS512K" }, \ { IFM_IEEE80211_DS512k, "DirectSequence/512Kbps" }, \ + { IFM_IEEE80211_OFDM3, "OFDM3" }, \ + { IFM_IEEE80211_OFDM4, "OFDM4.5" }, \ + { IFM_IEEE80211_OFDM27, "OFDM27" }, \ { 0, NULL }, \ } @@ -479,7 +495,7 @@ struct ifmedia_description { { IFM_IEEE80211_ADHOC, "adhoc" }, \ { IFM_IEEE80211_HOSTAP, "hostap" }, \ { IFM_IEEE80211_IBSS, "ibss" }, \ - { IFM_IEEE80211_IBSSMASTER, "ibss-master" }, \ + { IFM_IEEE80211_WDS, "wds" }, \ { IFM_IEEE80211_TURBO, "turbo" }, \ { IFM_IEEE80211_MONITOR, "monitor" }, \ { 0, NULL }, \ @@ -491,6 +507,8 @@ struct ifmedia_description { { IFM_IEEE80211_11B, "11b" }, \ { IFM_IEEE80211_11G, "11g" }, \ { IFM_IEEE80211_FH, "fh" }, \ + { IFM_IEEE80211_11NA, "11na" }, \ + { IFM_IEEE80211_11NG, "11ng" }, \ { 0, NULL }, \ } @@ -584,6 +602,7 @@ struct ifmedia_baudrate { { IFM_ETHER | IFM_10G_LR, IF_Gbps(10ULL) }, \ { IFM_ETHER | IFM_10G_SR, IF_Gbps(10ULL) }, \ { IFM_ETHER | IFM_10G_CX4, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_2500_SX, IF_Mbps(2500ULL) }, \ \ { IFM_TOKEN | IFM_TOK_STP4, IF_Mbps(4) }, \ { IFM_TOKEN | IFM_TOK_STP16, IF_Mbps(16) }, \ diff --git a/src/libs/compat/freebsd_network/miidevs2h.awk b/src/libs/compat/freebsd_network/miidevs2h.awk new file mode 100644 index 0000000000..8330de49c0 --- /dev/null +++ b/src/libs/compat/freebsd_network/miidevs2h.awk @@ -0,0 +1,148 @@ +#! /usr/bin/awk -f +# $NetBSD: devlist2h.awk,v 1.2 1998/09/05 14:42:06 christos Exp $ + +#- +# Copyright (c) 1998 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Christos Zoulas. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by the NetBSD +# Foundation, Inc. and its contributors. +# 4. Neither the name of The NetBSD Foundation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# Copyright (c) 1995, 1996 Christopher G. Demetriou +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This model includes software developed by Christopher G. Demetriou. +# This model includes software developed by Christos Zoulas +# 4. The name of the author(s) may not be used to endorse or promote models +# derived from this software without specific prior written permission +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# $FreeBSD: src/sys/tools/miidevs2h.awk,v 1.6 2005/01/07 02:29:25 imp Exp $ +# +function collectline(f, line) { + oparen = 0 + line = "" + while (f <= NF) { + if ($f == "#") { + line = line "(" + oparen = 1 + f++ + continue + } + if (oparen) { + line = line $f + if (f < NF) + line = line " " + f++ + continue + } + line = line $f + if (f < NF) + line = line " " + f++ + } + if (oparen) + line = line ")" + return line +} +BEGIN { + nmodels = nouis = 0 + hfile=HEADERFILE +} +NR == 1 { + VERSION = $0 + gsub("\\$", "", VERSION) + + printf("/* \$FreeBSD\$ */\n\n") > hfile + printf("/*\n") > hfile + printf(" * THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT.\n") \ + > hfile + printf(" *\n") > hfile + printf(" * generated from:\n") > hfile + printf(" *\t%s\n", VERSION) > hfile + printf(" */\n") > hfile + + next +} +$1 == "oui" { + nuios++ + + ouiindex[$2] = nouis; # record index for this name, for later. + + ouis[nouis, 1] = $2; # name + ouis[nouis, 2] = $3; # id + printf("#define\tMII_OUI_%s\t%s\t", ouis[nouis, 1], + ouis[nouis, 2]) > hfile + ouis[nouis, 3] = collectline(4, line) + printf("/* %s */\n", ouis[nouis, 3]) > hfile + next +} +$1 == "model" { + nmodels++ + + models[nmodels, 1] = $2; # oui name + models[nmodels, 2] = $3; # model id + models[nmodels, 3] = $4; # id + + printf("#define\tMII_MODEL_%s_%s\t%s\n", models[nmodels, 1], + models[nmodels, 2], models[nmodels, 3]) > hfile + + models[nmodels, 4] = collectline(5, line) + + printf("#define\tMII_STR_%s_%s\t\"%s\"\n", + models[nmodels, 1], models[nmodels, 2], + models[nmodels, 4]) > hfile + + next +} +{ + print $0 > hfile +}