summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/fwdev.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2003-03-06 05:06:44 +0000
committersimokawa <simokawa@FreeBSD.org>2003-03-06 05:06:44 +0000
commitc00efc4a6458fc8f3d1e0efe77cba6ad40fa575b (patch)
tree471d8578c29742f90d52c760d12307f57dd822dc /sys/dev/firewire/fwdev.c
parentc5c996630b414b6c8d83d61fa13f192b93da19fd (diff)
downloadFreeBSD-src-c00efc4a6458fc8f3d1e0efe77cba6ad40fa575b.zip
FreeBSD-src-c00efc4a6458fc8f3d1e0efe77cba6ad40fa575b.tar.gz
MFp4(simokawa_sbp)
Improve if_fwe performance. - Simplify mbuf handling by using bulkxfer. Now, it uses mbuf clusters for RX buffer as usual ethernet drivers. - Recycle struct xfer buffer and don't call malloc at runtime. - Count input and output errors. - Handle a mbuf chain longer than 6 correctly. - Increase queue length.
Diffstat (limited to 'sys/dev/firewire/fwdev.c')
-rw-r--r--sys/dev/firewire/fwdev.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/dev/firewire/fwdev.c b/sys/dev/firewire/fwdev.c
index fe79bc7..e590edc 100644
--- a/sys/dev/firewire/fwdev.c
+++ b/sys/dev/firewire/fwdev.c
@@ -67,6 +67,7 @@ static d_mmap_t fw_mmap;
struct cdevsw firewire_cdevsw =
{
+#if __FreeBSD_version >= 500104
.d_open = fw_open,
.d_close = fw_close,
.d_read = fw_read,
@@ -77,6 +78,10 @@ struct cdevsw firewire_cdevsw =
.d_name = "fw",
.d_maj = CDEV_MAJOR,
.d_flags = D_MEM
+#else
+ fw_open, fw_close, fw_read, fw_write, fw_ioctl,
+ fw_poll, fw_mmap, nostrategy, "fw", CDEV_MAJOR, nodump, nopsize, D_MEM
+#endif
};
static int
@@ -707,18 +712,14 @@ fw_ioctl (dev_t dev, u_long cmd, caddr_t data, int flag, fw_proc *td)
for(i = 0 ; i < sc->fc->ir[sub]->bnchunk; i++){
ir->bulkxfer[i].buf =
- ir->buf +
- i * sc->fc->ir[sub]->bnpacket *
- sc->fc->ir[sub]->psize;
+ ir->buf + i * ir->bnpacket * ir->psize;
STAILQ_INSERT_TAIL(&ir->stfree,
&ir->bulkxfer[i], link);
ir->bulkxfer[i].npacket = ir->bnpacket;
}
for(i = 0 ; i < sc->fc->it[sub]->bnchunk; i++){
it->bulkxfer[i].buf =
- it->buf +
- i * sc->fc->it[sub]->bnpacket *
- sc->fc->it[sub]->psize;
+ it->buf + i * it->bnpacket * it->psize;
STAILQ_INSERT_TAIL(&it->stfree,
&it->bulkxfer[i], link);
it->bulkxfer[i].npacket = it->bnpacket;
OpenPOWER on IntegriCloud