summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchuck <chuck@openbsd.org>1996-07-03 17:21:17 +0000
committerchuck <chuck@openbsd.org>1996-07-03 17:21:17 +0000
commitc143e3bd79a70fd982b51e377bf9259464d6b660 (patch)
treee6ca98067a4eb32e3887c2fa3f8ef790ae94fdd8
parentported to FreeBSD 2.2-960612-SNAP. (diff)
downloadwireguard-openbsd-c143e3bd79a70fd982b51e377bf9259464d6b660.tar.xz
wireguard-openbsd-c143e3bd79a70fd982b51e377bf9259464d6b660.zip
ported to FreeBSD 2.2-960612-SNAP.
-rw-r--r--sys/dev/ic/midway.c60
-rw-r--r--sys/dev/ic/midwayreg.h12
-rw-r--r--sys/dev/ic/midwayvar.h38
-rw-r--r--sys/netnatm/natm.c25
-rw-r--r--sys/netnatm/natm.h21
-rw-r--r--sys/netnatm/natm_pcb.c4
-rw-r--r--sys/netnatm/natm_proto.c19
7 files changed, 144 insertions, 35 deletions
diff --git a/sys/dev/ic/midway.c b/sys/dev/ic/midway.c
index 152218367e4..95b052eb1f2 100644
--- a/sys/dev/ic/midway.c
+++ b/sys/dev/ic/midway.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: midway.c,v 1.7 1996/06/29 23:22:31 chuck Exp $ */
-/* (sync'd to midway.c 1.56) */
+/* $OpenBSD: midway.c,v 1.8 1996/07/03 17:21:19 chuck Exp $ */
+/* (sync'd to midway.c 1.57) */
/*
*
@@ -81,11 +81,18 @@
#define INLINE inline
#endif /* EN_DEBUG */
+#ifdef __FreeBSD__
+#include "en.h"
+#endif
+
+#if NEN > 0 || !defined(__FreeBSD__)
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/types.h>
+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__)
#include <sys/device.h>
+#endif
#include <sys/ioctl.h>
#include <sys/mbuf.h>
#include <sys/socket.h>
@@ -106,12 +113,21 @@
#endif
-#ifndef sparc
+#if !defined(sparc) && !defined(__FreeBSD__)
#include <machine/bus.h>
#endif
+#if defined(__NetBSD__) || defined(__OpenBSD__)
#include <dev/ic/midwayreg.h>
#include <dev/ic/midwayvar.h>
+#elif defined(__FreeBSD__)
+#include <machine/cpufunc.h> /* for rdtsc proto for clock.h below */
+#include <machine/clock.h> /* for DELAY */
+#include <pci/midwayreg.h>
+#include <pci/midwayvar.h>
+#include <vm/pmap.h> /* for vtophys proto */
+#define IFF_NOTRAILERS 0
+#endif
/*
* params
@@ -311,9 +327,8 @@ u_int32_t r, v;
* prototypes
*/
-void en_attach __P((struct en_softc *));
STATIC int en_b2sz __P((int));
-#ifdef EN_DEBUG
+#ifdef EN_DDBHOOK
int en_dump __P((int,int));
int en_dumpmem __P((int,int,int));
#endif
@@ -322,13 +337,11 @@ STATIC int en_dmaprobe_doit __P((struct en_softc *, u_int8_t *,
u_int8_t *, int));
STATIC int en_dqneed __P((struct en_softc *, caddr_t, u_int));
STATIC void en_init __P((struct en_softc *));
-int en_intr __P((void *));
-STATIC int en_ioctl __P((struct ifnet *, u_long, caddr_t));
+STATIC int en_ioctl __P((struct ifnet *, EN_IOCTL_CMDT, caddr_t));
STATIC int en_k2sz __P((int));
STATIC void en_loadvc __P((struct en_softc *, int));
STATIC void en_mfix __P((struct en_softc *, struct mbuf *));
STATIC struct mbuf *en_mget __P((struct en_softc *, u_int, u_int *));
-STATIC void en_reset __P((struct en_softc *));
STATIC int en_rxctl __P((struct en_softc *, struct atm_pseudoioctl *, int));
STATIC void en_txdma __P((struct en_softc *, int));
STATIC void en_txlaunch __P((struct en_softc *, int, struct en_launch *));
@@ -518,9 +531,7 @@ struct en_softc *sc;
{
struct ifnet *ifp = &sc->enif;
- bus_mem_addr_t membase;
- const char *intrstr;
- int retval, sz;
+ int sz;
u_int32_t reg, lcv, check, ptr, sav, midvloc;
/*
@@ -579,7 +590,9 @@ done_probe:
* link into network subsystem and prepare card
*/
+#if defined(__NetBSD__) || defined(__OpenBSD__)
bcopy(sc->sc_dev.dv_xname, sc->enif.if_xname, IFNAMSIZ);
+#endif
sc->enif.if_softc = sc;
ifp->if_flags = IFF_SIMPLEX|IFF_NOTRAILERS;
ifp->if_ioctl = en_ioctl;
@@ -745,6 +758,7 @@ struct en_softc *sc;
* en_dmaprobe_doit: do actual testing
*/
+int
en_dmaprobe_doit(sc, sp, dp, wmtry)
struct en_softc *sc;
@@ -866,7 +880,7 @@ int wmtry;
STATIC int en_ioctl(ifp, cmd, data)
struct ifnet *ifp;
-u_long cmd;
+EN_IOCTL_CMDT cmd;
caddr_t data;
{
@@ -876,8 +890,9 @@ caddr_t data;
struct atm_pseudoioctl *api = (struct atm_pseudoioctl *)data;
#ifdef NATM
struct atm_rawioctl *ario = (struct atm_rawioctl *)data;
+ int slot;
#endif
- int s, error = 0, slot;
+ int s, error = 0;
s = splnet();
@@ -1061,7 +1076,7 @@ int on;
* must en_init to recover.
*/
-STATIC void en_reset(sc)
+void en_reset(sc)
struct en_softc *sc;
@@ -1140,7 +1155,7 @@ struct en_softc *sc;
{
int vc, slot;
- u_int32_t reg, loc;
+ u_int32_t loc;
if ((sc->enif.if_flags & IFF_UP) == 0) {
#ifdef EN_DEBUG
@@ -1313,7 +1328,7 @@ struct ifnet *ifp;
if (atm_vpi || atm_vci > MID_N_VC) {
printf("%s: output vpi=%d, vci=%d out of card range, dropping...\n",
- ifp->if_xname, atm_vpi, atm_vci);
+ sc->sc_dev.dv_xname, atm_vpi, atm_vci);
m_freem(m);
continue;
}
@@ -1485,7 +1500,7 @@ int chan;
struct mbuf *tmp;
struct atm_pseudohdr *ap;
struct en_launch launch;
- int datalen, dtqneed, len, ncells, needalign;
+ int datalen, dtqneed, len, ncells;
u_int8_t *cp;
#ifdef EN_DEBUG
@@ -1893,7 +1908,7 @@ done:
* interrupt handler
*/
-int en_intr(arg)
+EN_INTR_TYPE en_intr(arg)
void *arg;
@@ -1907,7 +1922,7 @@ void *arg;
reg = EN_READ(sc, MID_INTACK);
if ((reg & MID_INT_ANY) == 0)
- return(0); /* not us */
+ EN_INTR_RET(0); /* not us */
#ifdef EN_DEBUG
printf("%s: interrupt=0x%b\n", sc->sc_dev.dv_xname, reg, MID_INTBITS);
@@ -1929,7 +1944,7 @@ void *arg;
en_reset(sc);
en_init(sc);
#endif
- return(1);
+ EN_INTR_RET(1); /* for us */
}
/*******************
@@ -2143,7 +2158,7 @@ void *arg;
sc->vtrash += MID_VTRASH(reg);
#endif
- return(1);
+ EN_INTR_RET(1); /* for us */
}
@@ -2720,3 +2735,6 @@ int unit, addr, len;
return(0);
}
#endif
+
+
+#endif /* NEN > 0 || !defined(__FreeBSD__) */
diff --git a/sys/dev/ic/midwayreg.h b/sys/dev/ic/midwayreg.h
index e2f04895ba4..01428c4d877 100644
--- a/sys/dev/ic/midwayreg.h
+++ b/sys/dev/ic/midwayreg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: midwayreg.h,v 1.2 1996/06/26 04:07:02 chuck Exp $ */
+/* $OpenBSD: midwayreg.h,v 1.3 1996/07/03 17:21:17 chuck Exp $ */
/*
* m i d w a y r e g . h
@@ -8,8 +8,8 @@
*
*/
-#ifdef sparc
-/* XXX: gross. sparc doesn't have machine/bus.h yet. */
+#if defined(sparc) || defined(__FreeBSD__)
+/* XXX: gross. netbsd/sparc doesn't have machine/bus.h yet. */
typedef void * bus_chipset_tag_t;
typedef u_int32_t pci_chipset_tag_t;
typedef caddr_t bus_mem_handle_t;
@@ -19,7 +19,11 @@ typedef caddr_t bus_mem_addr_t;
#define bus_mem_read_4(t, h, o) ((void) t, (*(volatile u_int32_t *)((h) + (o))))
#define bus_mem_write_4(t, h, o, v) \
((void) t, ((void)(*(volatile u_int32_t *)((h) + (o)) = (v))))
-#define vtophys(x) ((u_int32_t)(x))
+
+#if defined(sparc)
+#define vtophys(x) ((u_int32_t)(x)) /* sun4c dvma */
+#endif
+
#endif
diff --git a/sys/dev/ic/midwayvar.h b/sys/dev/ic/midwayvar.h
index f83b62f42ac..86b07f41548 100644
--- a/sys/dev/ic/midwayvar.h
+++ b/sys/dev/ic/midwayvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: midwayvar.h,v 1.5 1996/06/29 23:22:35 chuck Exp $ */
+/* $OpenBSD: midwayvar.h,v 1.6 1996/07/03 17:21:18 chuck Exp $ */
/*
*
@@ -58,6 +58,39 @@
#define EN_MAXNRX ((2048-(EN_NTX*EN_TXSZ))/EN_RXSZ)
/* largest possible NRX (depends on RAM size) */
+
+#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__)
+#define EN_INTR_TYPE int
+#define EN_INTR_RET(X) return(X)
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+#define EN_IOCTL_CMDT u_long
+#elif defined(__bsdi__)
+#define EN_IOCTL_CMDT int
+#endif
+
+#elif defined(__FreeBSD__)
+
+#define EN_INTR_TYPE void
+#define EN_INTR_RET(X) return
+#define EN_IOCTL_CMDT int
+
+struct device {
+ char dv_xname[IFNAMSIZ];
+};
+
+#define DV_IFNET 1
+
+struct cfdriver {
+ int zero;
+ char *name;
+ int one;
+ int cd_ndevs;
+ void *cd_devs[NEN];
+};
+
+#endif
+
+
/*
* softc
*/
@@ -159,4 +192,5 @@ struct en_softc {
*/
void en_attach __P((struct en_softc *));
-int en_intr __P((void *));
+EN_INTR_TYPE en_intr __P((void *));
+void en_reset __P((struct en_softc *));
diff --git a/sys/netnatm/natm.c b/sys/netnatm/natm.c
index 51da47eb433..289aeab3017 100644
--- a/sys/netnatm/natm.c
+++ b/sys/netnatm/natm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: natm.c,v 1.1 1996/06/30 21:40:12 chuck Exp $ */
+/* $OpenBSD: natm.c,v 1.2 1996/07/03 17:24:29 chuck Exp $ */
/*
*
@@ -38,6 +38,7 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/kernel.h>
#include <sys/domain.h>
#include <sys/ioctl.h>
#include <sys/proc.h>
@@ -48,6 +49,7 @@
#include <net/if.h>
#include <net/if_atm.h>
+#include <net/netisr.h>
#include <net/radix.h>
#include <net/route.h>
@@ -65,12 +67,18 @@ u_long natm0_recvspace = 16*1024;
* user requests
*/
+#if defined(__NetBSD__) || defined(__OpenBSD__)
int natm_usrreq(so, req, m, nam, control, p)
+#elif defined(__FreeBSD__)
+int natm_usrreq(so, req, m, nam, control)
+#endif
struct socket *so;
int req;
struct mbuf *m, *nam, *control;
+#if defined(__NetBSD__) || defined(__OpenBSD__)
struct proc *p;
+#endif
{
int error = 0, s, s2;
@@ -82,7 +90,7 @@ struct proc *p;
struct ifnet *ifp;
int proto = so->so_proto->pr_protocol;
- s = splsoftnet();
+ s = SPLSOFTNET();
npcb = (struct natmpcb *) so->so_pcb;
@@ -109,7 +117,7 @@ struct proc *p;
break;
}
- so->so_pcb = npcb = npcb_alloc(M_WAITOK);
+ so->so_pcb = (caddr_t) (npcb = npcb_alloc(M_WAITOK));
npcb->npcb_socket = so;
break;
@@ -259,9 +267,15 @@ struct proc *p;
case PRU_PEERADDR: /* fetch peer's address */
snatm = mtod(nam, struct sockaddr_natm *);
+ bzero(snatm, sizeof(*snatm));
nam->m_len = snatm->snatm_len = sizeof(*snatm);
snatm->snatm_family = AF_NATM;
+#if defined(__NetBSD__) || defined(__OpenBSD__)
bcopy(npcb->npcb_ifp->if_xname, snatm->snatm_if, sizeof(snatm->snatm_if));
+#elif defined(__FreeBSD__)
+ sprintf(snatm->snatm_if, "%s%d", npcb->npcb_ifp->if_name,
+ npcb->npcb_ifp->if_unit);
+#endif
snatm->snatm_vci = npcb->npcb_vci;
snatm->snatm_vpi = npcb->npcb_vpi;
break;
@@ -396,6 +410,11 @@ m->m_pkthdr.rcvif = NULL; /* null it out to be safe */
goto next;
}
+#if defined(__FreeBSD__)
+NETISR_SET(NETISR_NATM, natmintr);
+#endif
+
+
/*
* natm0_sysctl: not used, but here in case we want to add something
* later...
diff --git a/sys/netnatm/natm.h b/sys/netnatm/natm.h
index 143d1623cc4..032c59d35fa 100644
--- a/sys/netnatm/natm.h
+++ b/sys/netnatm/natm.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: natm.h,v 1.1 1996/06/30 21:40:14 chuck Exp $ */
+/* $OpenBSD: natm.h,v 1.2 1996/07/03 17:24:30 chuck Exp $ */
/*
*
@@ -57,6 +57,20 @@ struct sockaddr_natm {
};
+#if defined(__FreeBSD__) && defined(KERNEL)
+
+#ifndef _KERNEL
+#define _KERNEL
+#endif
+
+#define SPLSOFTNET() splnet()
+
+#elif defined(__NetBSD__) || defined(__OpenBSD__)
+
+#define SPLSOFTNET() splsoftnet()
+
+#endif
+
#ifdef _KERNEL
/*
@@ -124,8 +138,13 @@ void npcb_free __P((struct natmpcb *, int));
struct natmpcb *npcb_add __P((struct natmpcb *, struct ifnet *, int, int));
/* natm.c */
+#if defined(__NetBSD__) || defined(__OpenBSD__)
int natm_usrreq __P((struct socket *, int, struct mbuf *,
struct mbuf *, struct mbuf *, struct proc *));
+#elif defined(__FreeBSD__)
+int natm_usrreq __P((struct socket *, int, struct mbuf *,
+ struct mbuf *, struct mbuf *));
+#endif
int natm0_sysctl __P((int *, u_int, void *, size_t *, void *, size_t));
int natm5_sysctl __P((int *, u_int, void *, size_t *, void *, size_t));
void natmintr __P((void));
diff --git a/sys/netnatm/natm_pcb.c b/sys/netnatm/natm_pcb.c
index 3be08a0c920..68c5ebc6776 100644
--- a/sys/netnatm/natm_pcb.c
+++ b/sys/netnatm/natm_pcb.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: natm_pcb.c,v 1.1 1996/06/30 21:40:13 chuck Exp $ */
+/* $OpenBSD: natm_pcb.c,v 1.2 1996/07/03 17:24:29 chuck Exp $ */
/*
*
@@ -38,6 +38,8 @@
*/
#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/protosw.h>
#include <sys/domain.h>
diff --git a/sys/netnatm/natm_proto.c b/sys/netnatm/natm_proto.c
index 33eaf6b0f97..dbb3fe9eaad 100644
--- a/sys/netnatm/natm_proto.c
+++ b/sys/netnatm/natm_proto.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: natm_proto.c,v 1.1 1996/06/30 21:40:14 chuck Exp $ */
+/* $OpenBSD: natm_proto.c,v 1.2 1996/07/03 17:24:29 chuck Exp $ */
/*
*
@@ -37,6 +37,9 @@
*/
#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/protosw.h>
#include <sys/domain.h>
@@ -58,12 +61,18 @@ struct protosw natmsw[] = {
{ SOCK_STREAM, &natmdomain, PROTO_NATMAAL5, PR_CONNREQUIRED,
0, 0, 0, 0,
natm_usrreq,
- 0, 0, 0, 0, natm5_sysctl
+ 0, 0, 0, 0,
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+ natm5_sysctl
+#endif
},
{ SOCK_STREAM, &natmdomain, PROTO_NATMAAL0, PR_CONNREQUIRED,
0, 0, 0, 0,
natm_usrreq,
- 0, 0, 0, 0, natm0_sysctl
+ 0, 0, 0, 0,
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+ natm0_sysctl
+#endif
},
};
@@ -90,3 +99,7 @@ void natm_init()
bzero(&natmintrq, sizeof(natmintrq));
natmintrq.ifq_maxlen = natmqmaxlen;
}
+
+#if defined(__FreeBSD__)
+DOMAIN_SET(natm);
+#endif