summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/if_fwe.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/firewire/if_fwe.c')
-rw-r--r--sys/dev/firewire/if_fwe.c52
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);
OpenPOWER on IntegriCloud