diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/de/if_de.c | 86 | ||||
-rw-r--r-- | sys/modules/Makefile | 2 | ||||
-rw-r--r-- | sys/modules/de/Makefile | 7 | ||||
-rw-r--r-- | sys/pci/if_de.c | 86 |
4 files changed, 36 insertions, 145 deletions
diff --git a/sys/dev/de/if_de.c b/sys/dev/de/if_de.c index 4b86793..aa624cd 100644 --- a/sys/dev/de/if_de.c +++ b/sys/dev/de/if_de.c @@ -53,10 +53,9 @@ #include <sys/bus.h> #include <sys/rman.h> -#include "opt_inet.h" -#include "opt_ipx.h" - #include <net/if.h> +#include <net/if_arp.h> +#include <net/ethernet.h> #include <net/if_media.h> #include <net/if_dl.h> #ifdef TULIP_USE_SOFTINTR @@ -70,16 +69,6 @@ #include <netinet/if_ether.h> #endif -#ifdef IPX -#include <netipx/ipx.h> -#include <netipx/ipx_if.h> -#endif - -#ifdef NS -#include <netns/ns.h> -#include <netns/ns_if.h> -#endif - #include <vm/vm.h> #include <net/if_var.h> @@ -125,6 +114,7 @@ static void tulip_mii_autonegotiate(tulip_softc_t * const sc, const unsigned phy static void tulip_intr_shared(void *arg); static void tulip_intr_normal(void *arg); static void tulip_init(tulip_softc_t * const sc); +static void tulip_ifinit(void *); static void tulip_reset(tulip_softc_t * const sc); static void tulip_ifstart_one(struct ifnet *ifp); static void tulip_ifstart(struct ifnet *ifp); @@ -3297,6 +3287,14 @@ tulip_reset( tulip_addr_filter(sc); } + +static void +tulip_ifinit( + void * sc) +{ + tulip_init((tulip_softc_t *)sc); +} + static void tulip_init( tulip_softc_t * const sc) @@ -4552,7 +4550,6 @@ tulip_ifioctl( { TULIP_PERFSTART(ifioctl) tulip_softc_t * const sc = (tulip_softc_t *)ifp->if_softc; - struct ifaddr *ifa = (struct ifaddr *)data; struct ifreq *ifr = (struct ifreq *) data; int s; int error = 0; @@ -4563,65 +4560,9 @@ tulip_ifioctl( s = splimp(); #endif switch (cmd) { - case SIOCSIFADDR: { - ifp->if_flags |= IFF_UP; - switch(ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: { - tulip_init(sc); - arp_ifinit(&(sc)->tulip_ac, ifa); - break; - } -#endif /* INET */ - -#ifdef IPX - case AF_IPX: { - struct ipx_addr *ina = &(IA_SIPX(ifa)->sipx_addr); - if (ipx_nullhost(*ina)) { - ina->x_host = *(union ipx_host *)(sc->tulip_enaddr); - } else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t)ina->x_host.c_host, - (caddr_t)sc->tulip_enaddr, - sizeof(sc->tulip_enaddr)); - } - tulip_init(sc); - break; - } -#endif /* IPX */ - -#ifdef NS - /* - * This magic copied from if_is.c; I don't use XNS, - * so I have no way of telling if this actually - * works or not. - */ - case AF_NS: { - struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr); - if (ns_nullhost(*ina)) { - ina->x_host = *(union ns_host *)(sc->tulip_enaddr); - } else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t)ina->x_host.c_host, - (caddr_t)sc->tulip_enaddr, - sizeof(sc->tulip_enaddr)); - } - tulip_init(sc); - break; - } -#endif /* NS */ - - default: { - tulip_init(sc); - break; - } - } - break; - } + case SIOCSIFADDR: case SIOCGIFADDR: { - bcopy((caddr_t) sc->tulip_enaddr, - (caddr_t) ((struct sockaddr *)&ifr->ifr_data)->sa_data, - 6); + error = ether_ioctl(ifp, cmd, data); break; } @@ -4843,6 +4784,7 @@ tulip_attach( ifp->if_watchdog = tulip_ifwatchdog; ifp->if_timer = 1; ifp->if_output = ether_output; + ifp->if_init = tulip_ifinit; printf("%s%d: %s%s pass %d.%d%s\n", sc->tulip_name, sc->tulip_unit, diff --git a/sys/modules/Makefile b/sys/modules/Makefile index e89256b..2decdbb 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -7,7 +7,7 @@ _random= random .endif SUBDIR= 3dfx accf_data accf_http agp aha amr an aue \ - cam ccd cd9660 coda cue dc ed fdesc fxp if_disc if_ef \ + cam ccd cd9660 coda cue dc de ed fdesc fxp if_disc if_ef \ if_ppp if_sl if_tap if_tun ip6fw ipfilter ipfw ispfw joy kernfs kue \ md mfs mii mlx msdos ncp netgraph nfs ntfs nullfs \ nwfs pcn portal procfs ${_random} \ diff --git a/sys/modules/de/Makefile b/sys/modules/de/Makefile new file mode 100644 index 0000000..5e83ec9 --- /dev/null +++ b/sys/modules/de/Makefile @@ -0,0 +1,7 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../pci +KMOD = if_de +SRCS = if_de.c opt_bdg.h device_if.h bus_if.h pci_if.h + +.include <bsd.kmod.mk> diff --git a/sys/pci/if_de.c b/sys/pci/if_de.c index 4b86793..aa624cd 100644 --- a/sys/pci/if_de.c +++ b/sys/pci/if_de.c @@ -53,10 +53,9 @@ #include <sys/bus.h> #include <sys/rman.h> -#include "opt_inet.h" -#include "opt_ipx.h" - #include <net/if.h> +#include <net/if_arp.h> +#include <net/ethernet.h> #include <net/if_media.h> #include <net/if_dl.h> #ifdef TULIP_USE_SOFTINTR @@ -70,16 +69,6 @@ #include <netinet/if_ether.h> #endif -#ifdef IPX -#include <netipx/ipx.h> -#include <netipx/ipx_if.h> -#endif - -#ifdef NS -#include <netns/ns.h> -#include <netns/ns_if.h> -#endif - #include <vm/vm.h> #include <net/if_var.h> @@ -125,6 +114,7 @@ static void tulip_mii_autonegotiate(tulip_softc_t * const sc, const unsigned phy static void tulip_intr_shared(void *arg); static void tulip_intr_normal(void *arg); static void tulip_init(tulip_softc_t * const sc); +static void tulip_ifinit(void *); static void tulip_reset(tulip_softc_t * const sc); static void tulip_ifstart_one(struct ifnet *ifp); static void tulip_ifstart(struct ifnet *ifp); @@ -3297,6 +3287,14 @@ tulip_reset( tulip_addr_filter(sc); } + +static void +tulip_ifinit( + void * sc) +{ + tulip_init((tulip_softc_t *)sc); +} + static void tulip_init( tulip_softc_t * const sc) @@ -4552,7 +4550,6 @@ tulip_ifioctl( { TULIP_PERFSTART(ifioctl) tulip_softc_t * const sc = (tulip_softc_t *)ifp->if_softc; - struct ifaddr *ifa = (struct ifaddr *)data; struct ifreq *ifr = (struct ifreq *) data; int s; int error = 0; @@ -4563,65 +4560,9 @@ tulip_ifioctl( s = splimp(); #endif switch (cmd) { - case SIOCSIFADDR: { - ifp->if_flags |= IFF_UP; - switch(ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: { - tulip_init(sc); - arp_ifinit(&(sc)->tulip_ac, ifa); - break; - } -#endif /* INET */ - -#ifdef IPX - case AF_IPX: { - struct ipx_addr *ina = &(IA_SIPX(ifa)->sipx_addr); - if (ipx_nullhost(*ina)) { - ina->x_host = *(union ipx_host *)(sc->tulip_enaddr); - } else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t)ina->x_host.c_host, - (caddr_t)sc->tulip_enaddr, - sizeof(sc->tulip_enaddr)); - } - tulip_init(sc); - break; - } -#endif /* IPX */ - -#ifdef NS - /* - * This magic copied from if_is.c; I don't use XNS, - * so I have no way of telling if this actually - * works or not. - */ - case AF_NS: { - struct ns_addr *ina = &(IA_SNS(ifa)->sns_addr); - if (ns_nullhost(*ina)) { - ina->x_host = *(union ns_host *)(sc->tulip_enaddr); - } else { - ifp->if_flags &= ~IFF_RUNNING; - bcopy((caddr_t)ina->x_host.c_host, - (caddr_t)sc->tulip_enaddr, - sizeof(sc->tulip_enaddr)); - } - tulip_init(sc); - break; - } -#endif /* NS */ - - default: { - tulip_init(sc); - break; - } - } - break; - } + case SIOCSIFADDR: case SIOCGIFADDR: { - bcopy((caddr_t) sc->tulip_enaddr, - (caddr_t) ((struct sockaddr *)&ifr->ifr_data)->sa_data, - 6); + error = ether_ioctl(ifp, cmd, data); break; } @@ -4843,6 +4784,7 @@ tulip_attach( ifp->if_watchdog = tulip_ifwatchdog; ifp->if_timer = 1; ifp->if_output = ether_output; + ifp->if_init = tulip_ifinit; printf("%s%d: %s%s pass %d.%d%s\n", sc->tulip_name, sc->tulip_unit, |