diff options
Diffstat (limited to 'sys/dev/firewire/if_fwe.c')
-rw-r--r-- | sys/dev/firewire/if_fwe.c | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/sys/dev/firewire/if_fwe.c b/sys/dev/firewire/if_fwe.c index 9764ec9..cc52d2b 100644 --- a/sys/dev/firewire/if_fwe.c +++ b/sys/dev/firewire/if_fwe.c @@ -52,11 +52,18 @@ #include <net/ethernet.h> #include <net/if.h> #include <net/if_arp.h> +#ifdef __DragonFly__ +#include <net/vlan/if_vlan_var.h> +#include <bus/firewire/firewire.h> +#include <bus/firewire/firewirereg.h> +#include "if_fwevar.h" +#else #include <net/if_vlan_var.h> #include <dev/firewire/firewire.h> #include <dev/firewire/firewirereg.h> #include <dev/firewire/if_fwevar.h> +#endif #define FWEDEBUG if (fwedebug) if_printf #define TX_MAX_QUEUE (FWMAXQUEUE - 1) @@ -195,7 +202,7 @@ fwe_attach(device_t dev) ifp = &fwe->fwe_if; ifp->if_softc = &fwe->eth_softc; -#if __FreeBSD_version >= 501113 +#if __FreeBSD_version >= 501113 || defined(__DragonFly__) if_initname(ifp, device_get_name(dev), unit); #else ifp->if_unit = unit; @@ -210,16 +217,16 @@ fwe_attach(device_t dev) ifp->if_snd.ifq_maxlen = TX_MAX_QUEUE; s = splimp(); -#if __FreeBSD_version >= 500000 - ether_ifattach(ifp, eaddr); -#else +#if defined(__DragonFly__) || __FreeBSD_version < 500000 ether_ifattach(ifp, 1); +#else + ether_ifattach(ifp, eaddr); #endif splx(s); /* Tell the upper layer(s) we support long frames. */ ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header); -#if __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 ifp->if_capabilities |= IFCAP_VLAN_MTU; #endif @@ -279,10 +286,10 @@ fwe_detach(device_t dev) s = splimp(); fwe_stop(fwe); -#if __FreeBSD_version >= 500000 - ether_ifdetach(&fwe->fwe_if); -#else +#if defined(__DragonFly__) || __FreeBSD_version < 500000 ether_ifdetach(&fwe->fwe_if, 1); +#else + ether_ifdetach(&fwe->fwe_if); #endif splx(s); @@ -345,10 +352,10 @@ found: xferq->stproc = NULL; for (i = 0; i < xferq->bnchunk; i ++) { m = -#if __FreeBSD_version >= 500000 - m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); -#else +#if defined(__DragonFly__) || __FreeBSD_version < 500000 m_getcl(M_WAIT, MT_DATA, M_PKTHDR); +#else + m_getcl(M_TRYWAIT, MT_DATA, M_PKTHDR); #endif xferq->bulkxfer[i].mbuf = m; if (m != NULL) { @@ -425,7 +432,7 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) fwe->stream_ch, fwe->dma_ch); splx(s); break; -#if __FreeBSD_version >= 500000 +#if defined(__FreeBSD__) && __FreeBSD_version >= 500000 default: #else case SIOCSIFADDR: @@ -436,7 +443,7 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) error = ether_ioctl(ifp, cmd, data); splx(s); return (error); -#if __FreeBSD_version < 500000 +#if defined(__DragonFly__) || __FreeBSD_version < 500000 default: return (EINVAL); #endif @@ -532,11 +539,11 @@ fwe_as_output(struct fwe_softc *fwe, struct ifnet *ifp) if (m == NULL) break; STAILQ_REMOVE_HEAD(&fwe->xferlist, link); -#if __FreeBSD_version >= 500000 - BPF_MTAP(ifp, m); -#else +#if defined(__DragonFly__) || __FreeBSD_version < 500000 if (ifp->if_bpf != NULL) bpf_mtap(ifp, m); +#else + BPF_MTAP(ifp, m); #endif /* keep ip packet alignment for alpha */ @@ -575,7 +582,7 @@ fwe_as_input(struct fw_xferq *xferq) struct fw_bulkxfer *sxfer; struct fw_pkt *fp; u_char *c; -#if __FreeBSD_version < 500000 +#if defined(__DragonFly__) || __FreeBSD_version < 500000 struct ether_header *eh; #endif @@ -608,7 +615,7 @@ fwe_as_input(struct fw_xferq *xferq) m->m_data += HDR_LEN + ETHER_ALIGN; c = mtod(m, char *); -#if __FreeBSD_version < 500000 +#if defined(__DragonFly__) || __FreeBSD_version < 500000 eh = (struct ether_header *)c; m->m_data += sizeof(struct ether_header); #endif @@ -630,10 +637,10 @@ fwe_as_input(struct fw_xferq *xferq) c[20], c[21], c[22], c[23] ); #endif -#if __FreeBSD_version >= 500000 - (*ifp->if_input)(ifp, m); -#else +#if defined(__DragonFly__) || __FreeBSD_version < 500000 ether_input(ifp, eh, m); +#else + (*ifp->if_input)(ifp, m); #endif ifp->if_ipackets ++; } @@ -660,6 +667,9 @@ static driver_t fwe_driver = { }; +#ifdef __DragonFly__ +DECLARE_DUMMY_MODULE(fwe); +#endif DRIVER_MODULE(fwe, firewire, fwe_driver, fwe_devclass, 0, 0); MODULE_VERSION(fwe, 1); MODULE_DEPEND(fwe, firewire, 1, 1, 1); |