diff options
author | simokawa <simokawa@FreeBSD.org> | 2003-03-06 05:06:44 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2003-03-06 05:06:44 +0000 |
commit | c00efc4a6458fc8f3d1e0efe77cba6ad40fa575b (patch) | |
tree | 471d8578c29742f90d52c760d12307f57dd822dc /sys/dev/firewire/fwdev.c | |
parent | c5c996630b414b6c8d83d61fa13f192b93da19fd (diff) | |
download | FreeBSD-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.c | 13 |
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; |