summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordlg <dlg@openbsd.org>2006-03-20 09:59:26 +0000
committerdlg <dlg@openbsd.org>2006-03-20 09:59:26 +0000
commit7a5efd2163902c54c4c702574b8660653ec60bb8 (patch)
treeafc3fe61f1169fca7c984a2be58fa9ab51841c80
parentswitch the mgmt ioctl path to use the ioctl completion function. (diff)
downloadwireguard-openbsd-7a5efd2163902c54c4c702574b8660653ec60bb8.tar.xz
wireguard-openbsd-7a5efd2163902c54c4c702574b8660653ec60bb8.zip
remove the bits in the ccb for generalised handling of dmaable memory.
now that each code path that puts commands on the hardware has specific completion routines, we dont have to deal with the memory magic in a generic fashion.
-rw-r--r--sys/dev/ic/ami.c27
-rw-r--r--sys/dev/ic/amivar.h11
2 files changed, 6 insertions, 32 deletions
diff --git a/sys/dev/ic/ami.c b/sys/dev/ic/ami.c
index e0434435ac8..4f0c69e9387 100644
--- a/sys/dev/ic/ami.c
+++ b/sys/dev/ic/ami.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ami.c,v 1.131 2006/03/20 09:46:28 dlg Exp $ */
+/* $OpenBSD: ami.c,v 1.132 2006/03/20 09:59:26 dlg Exp $ */
/*
* Copyright (c) 2001 Michael Shalayeff
@@ -186,7 +186,6 @@ ami_put_ccb(struct ami_ccb *ccb)
ccb->ccb_state = AMI_CCB_FREE;
ccb->ccb_wakeup = 0;
- ccb->ccb_data = NULL;
ccb->ccb_xs = NULL;
ccb->ccb_flags = 0;
ccb->ccb_done = NULL;
@@ -1189,27 +1188,9 @@ ami_done_ccb(struct ami_softc *sc, struct ami_ccb *ccb)
{
int s;
- if (ccb->ccb_data != NULL) {
- bus_dmamap_sync(sc->sc_dmat, ccb->ccb_dmamap, 0,
- ccb->ccb_dmamap->dm_mapsize,
- (ccb->ccb_dir == AMI_CCB_IN) ?
- BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
-
- bus_dmamap_sync(sc->sc_dmat, AMIMEM_MAP(sc->sc_ccbmem_am),
- ccb->ccb_offset, sizeof(struct ami_ccbmem),
- BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
-
- bus_dmamap_unload(sc->sc_dmat, ccb->ccb_dmamap);
- }
-
- if (ccb->ccb_wakeup) {
- ccb->ccb_wakeup = 0;
- wakeup(ccb);
- } else {
- s = splbio();
- ami_put_ccb(ccb);
- splx(s);
- }
+ s = splbio();
+ ami_put_ccb(ccb);
+ splx(s);
return (0);
}
diff --git a/sys/dev/ic/amivar.h b/sys/dev/ic/amivar.h
index 944eabcb985..c8a92b4a7a0 100644
--- a/sys/dev/ic/amivar.h
+++ b/sys/dev/ic/amivar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: amivar.h,v 1.40 2006/03/19 11:53:23 dlg Exp $ */
+/* $OpenBSD: amivar.h,v 1.41 2006/03/20 09:59:26 dlg Exp $ */
/*
* Copyright (c) 2001 Michael Shalayeff
@@ -54,16 +54,9 @@ struct ami_ccb {
struct ami_sgent *ccb_sglist;
paddr_t ccb_sglistpa;
int ccb_offset;
+ bus_dmamap_t ccb_dmamap;
struct scsi_xfer *ccb_xs;
-
- void *ccb_data;
- int ccb_len;
- enum {
- AMI_CCB_IN,
- AMI_CCB_OUT
- } ccb_dir;
- bus_dmamap_t ccb_dmamap;
int (*ccb_done)(struct ami_softc *sc,
struct ami_ccb *ccb);