Module Name:    src
Committed By:   skrll
Date:           Mon Apr  6 08:58:44 UTC 2015

Modified Files:
        src/sys/dev/usb [nick-nhusb]: ehci.c ehcivar.h ohci.c uhci.c

Log Message:
Use anonymous unions in various structs and rename the ctl/iso members of
the pipe structs to ctrl/isoc.

No functional change intended.


To generate a diff of this commit:
cvs rdiff -u -r1.234.2.47 -r1.234.2.48 src/sys/dev/usb/ehci.c
cvs rdiff -u -r1.42.14.12 -r1.42.14.13 src/sys/dev/usb/ehcivar.h
cvs rdiff -u -r1.254.2.20 -r1.254.2.21 src/sys/dev/usb/ohci.c
cvs rdiff -u -r1.264.4.32 -r1.264.4.33 src/sys/dev/usb/uhci.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/ehci.c
diff -u src/sys/dev/usb/ehci.c:1.234.2.47 src/sys/dev/usb/ehci.c:1.234.2.48
--- src/sys/dev/usb/ehci.c:1.234.2.47	Mon Apr  6 07:08:59 2015
+++ src/sys/dev/usb/ehci.c	Mon Apr  6 08:58:43 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ehci.c,v 1.234.2.47 2015/04/06 07:08:59 skrll Exp $ */
+/*	$NetBSD: ehci.c,v 1.234.2.48 2015/04/06 08:58:43 skrll Exp $ */
 
 /*
  * Copyright (c) 2004-2012 The NetBSD Foundation, Inc.
@@ -53,7 +53,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.234.2.47 2015/04/06 07:08:59 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.234.2.48 2015/04/06 08:58:43 skrll Exp $");
 
 #include "ohci.h"
 #include "uhci.h"
@@ -1824,7 +1824,7 @@ ehci_dump_sitd(struct ehci_soft_itd *itd
 	USBHIST_FUNC(); USBHIST_CALLED(ehcidebug);
 
 	USBHIST_LOG(ehcidebug, "SITD %p next = %p prev = %p",
-	    itd, itd->u.frame_list.next, itd->u.frame_list.prev, 0);
+	    itd, itd->frame_list.next, itd->frame_list.prev, 0);
 	USBHIST_LOG(ehcidebug, "        xfernext=%p physaddr=%X slot=%d",
 	    itd->xfer_next, itd->physaddr, itd->slot, 0);
 }
@@ -2173,18 +2173,18 @@ ehci_rem_free_itd_chain(ehci_softc_t *sc
 		panic("ehci isoc xfer being freed, but with no itd chain\n");
 
 	for (itd = exfer->ex_itdstart; itd != NULL; itd = itd->xfer_next) {
-		prev = itd->u.frame_list.prev;
+		prev = itd->frame_list.prev;
 		/* Unlink itd from hardware chain, or frame array */
 		if (prev == NULL) { /* We're at the table head */
-			sc->sc_softitds[itd->slot] = itd->u.frame_list.next;
+			sc->sc_softitds[itd->slot] = itd->frame_list.next;
 			sc->sc_flist[itd->slot] = itd->itd.itd_next;
 			usb_syncmem(&sc->sc_fldma,
 			    sizeof(ehci_link_t) * itd->slot,
 			    sizeof(ehci_link_t),
 			    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
-			if (itd->u.frame_list.next != NULL)
-				itd->u.frame_list.next->u.frame_list.prev = NULL;
+			if (itd->frame_list.next != NULL)
+				itd->frame_list.next->frame_list.prev = NULL;
 		} else {
 			/* XXX this part is untested... */
 			prev->itd.itd_next = itd->itd.itd_next;
@@ -2192,9 +2192,9 @@ ehci_rem_free_itd_chain(ehci_softc_t *sc
 			    itd->offs + offsetof(ehci_itd_t, itd_next),
 			    sizeof(itd->itd.itd_next), BUS_DMASYNC_PREWRITE);
 
-			prev->u.frame_list.next = itd->u.frame_list.next;
-			if (itd->u.frame_list.next != NULL)
-				itd->u.frame_list.next->u.frame_list.prev = prev;
+			prev->frame_list.next = itd->frame_list.next;
+			if (itd->frame_list.next != NULL)
+				itd->frame_list.next->frame_list.prev = prev;
 		}
 	}
 
@@ -2221,18 +2221,18 @@ ehci_rem_free_sitd_chain(ehci_softc_t *s
 		panic("ehci isoc xfer being freed, but with no sitd chain\n");
 
 	for (sitd = exfer->ex_sitdstart; sitd != NULL; sitd = sitd->xfer_next) {
-		prev = sitd->u.frame_list.prev;
+		prev = sitd->frame_list.prev;
 		/* Unlink sitd from hardware chain, or frame array */
 		if (prev == NULL) { /* We're at the table head */
-			sc->sc_softsitds[sitd->slot] = sitd->u.frame_list.next;
+			sc->sc_softsitds[sitd->slot] = sitd->frame_list.next;
 			sc->sc_flist[sitd->slot] = sitd->sitd.sitd_next;
 			usb_syncmem(&sc->sc_fldma,
 			    sizeof(ehci_link_t) * sitd->slot,
 			    sizeof(ehci_link_t),
 			    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
-			if (sitd->u.frame_list.next != NULL)
-				sitd->u.frame_list.next->u.frame_list.prev = NULL;
+			if (sitd->frame_list.next != NULL)
+				sitd->frame_list.next->frame_list.prev = NULL;
 		} else {
 			/* XXX this part is untested... */
 			prev->sitd.sitd_next = sitd->sitd.sitd_next;
@@ -2240,9 +2240,9 @@ ehci_rem_free_sitd_chain(ehci_softc_t *s
 			    sitd->offs + offsetof(ehci_sitd_t, sitd_next),
 			    sizeof(sitd->sitd.sitd_next), BUS_DMASYNC_PREWRITE);
 
-			prev->u.frame_list.next = sitd->u.frame_list.next;
-			if (sitd->u.frame_list.next != NULL)
-				sitd->u.frame_list.next->u.frame_list.prev = prev;
+			prev->frame_list.next = sitd->frame_list.next;
+			if (sitd->frame_list.next != NULL)
+				sitd->frame_list.next->frame_list.prev = prev;
 		}
 	}
 
@@ -2944,7 +2944,7 @@ ehci_alloc_itd(ehci_softc_t *sc)
 	previndex = (frindex != 0) ? frindex - 1 : sc->sc_flsize;
 
 	freeitd = NULL;
-	LIST_FOREACH(itd, &sc->sc_freeitds, u.free_list) {
+	LIST_FOREACH(itd, &sc->sc_freeitds, free_list) {
 		if (itd == NULL)
 			break;
 		if (itd->slot != frindex && itd->slot != previndex) {
@@ -2971,20 +2971,20 @@ ehci_alloc_itd(ehci_softc_t *sc)
 			itd->physaddr = DMAADDR(&dma, offs);
 	 		itd->dma = dma;
 			itd->offs = offs;
-			LIST_INSERT_HEAD(&sc->sc_freeitds, itd, u.free_list);
+			LIST_INSERT_HEAD(&sc->sc_freeitds, itd, free_list);
 		}
 		freeitd = LIST_FIRST(&sc->sc_freeitds);
 	}
 
 	itd = freeitd;
-	LIST_REMOVE(itd, u.free_list);
+	LIST_REMOVE(itd, free_list);
 	memset(&itd->itd, 0, sizeof(ehci_itd_t));
 	usb_syncmem(&itd->dma, itd->offs + offsetof(ehci_itd_t, itd_next),
 	    sizeof(itd->itd.itd_next),
 	    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
-	itd->u.frame_list.next = NULL;
-	itd->u.frame_list.prev = NULL;
+	itd->frame_list.next = NULL;
+	itd->frame_list.prev = NULL;
 	itd->xfer_next = NULL;
 	itd->slot = 0;
 
@@ -3015,7 +3015,7 @@ ehci_alloc_sitd(ehci_softc_t *sc)
 	previndex = (frindex != 0) ? frindex - 1 : sc->sc_flsize;
 
 	freesitd = NULL;
-	LIST_FOREACH(sitd, &sc->sc_freesitds, u.free_list) {
+	LIST_FOREACH(sitd, &sc->sc_freesitds, free_list) {
 		if (sitd == NULL)
 			break;
 		if (sitd->slot != frindex && sitd->slot != previndex) {
@@ -3042,20 +3042,20 @@ ehci_alloc_sitd(ehci_softc_t *sc)
 			sitd->physaddr = DMAADDR(&dma, offs);
 	 		sitd->dma = dma;
 			sitd->offs = offs;
-			LIST_INSERT_HEAD(&sc->sc_freesitds, sitd, u.free_list);
+			LIST_INSERT_HEAD(&sc->sc_freesitds, sitd, free_list);
 		}
 		freesitd = LIST_FIRST(&sc->sc_freesitds);
 	}
 
 	sitd = freesitd;
-	LIST_REMOVE(sitd, u.free_list);
+	LIST_REMOVE(sitd, free_list);
 	memset(&sitd->sitd, 0, sizeof(ehci_sitd_t));
 	usb_syncmem(&sitd->dma, sitd->offs + offsetof(ehci_sitd_t, sitd_next),
 		    sizeof(sitd->sitd.sitd_next), BUS_DMASYNC_PREWRITE |
 		    BUS_DMASYNC_PREREAD);
 
-	sitd->u.frame_list.next = NULL;
-	sitd->u.frame_list.prev = NULL;
+	sitd->frame_list.next = NULL;
+	sitd->frame_list.prev = NULL;
 	sitd->xfer_next = NULL;
 	sitd->slot = 0;
 
@@ -3070,7 +3070,7 @@ ehci_free_itd(ehci_softc_t *sc, ehci_sof
 
 	KASSERT(mutex_owned(&sc->sc_lock));
 
-	LIST_INSERT_HEAD(&sc->sc_freeitds, itd, u.free_list);
+	LIST_INSERT_HEAD(&sc->sc_freeitds, itd, free_list);
 }
 
 Static void
@@ -3079,7 +3079,7 @@ ehci_free_sitd(ehci_softc_t *sc, ehci_so
 
 	KASSERT(mutex_owned(&sc->sc_lock));
 
-	LIST_INSERT_HEAD(&sc->sc_freesitds, sitd, u.free_list);
+	LIST_INSERT_HEAD(&sc->sc_freesitds, sitd, free_list);
 }
 
 /****************/
@@ -4318,12 +4318,12 @@ ehci_device_fs_isoc_start(struct usbd_xf
 		    sizeof(ehci_link_t),
 		    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
-		sitd->u.frame_list.next = sc->sc_softsitds[frindex];
+		sitd->frame_list.next = sc->sc_softsitds[frindex];
 		sc->sc_softsitds[frindex] = sitd;
-		if (sitd->u.frame_list.next != NULL)
-			sitd->u.frame_list.next->u.frame_list.prev = sitd;
+		if (sitd->frame_list.next != NULL)
+			sitd->frame_list.next->frame_list.prev = sitd;
 		sitd->slot = frindex;
-		sitd->u.frame_list.prev = NULL;
+		sitd->frame_list.prev = NULL;
 
 		frindex += i;
 		if (frindex >= sc->sc_flsize)
@@ -4647,12 +4647,12 @@ ehci_device_isoc_start(struct usbd_xfer 
 		    sizeof(ehci_link_t),
 		    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
-		itd->u.frame_list.next = sc->sc_softitds[frindex];
+		itd->frame_list.next = sc->sc_softitds[frindex];
 		sc->sc_softitds[frindex] = itd;
-		if (itd->u.frame_list.next != NULL)
-			itd->u.frame_list.next->u.frame_list.prev = itd;
+		if (itd->frame_list.next != NULL)
+			itd->frame_list.next->frame_list.prev = itd;
 		itd->slot = frindex;
-		itd->u.frame_list.prev = NULL;
+		itd->frame_list.prev = NULL;
 
 		frindex += i;
 		if (frindex >= sc->sc_flsize)

Index: src/sys/dev/usb/ehcivar.h
diff -u src/sys/dev/usb/ehcivar.h:1.42.14.12 src/sys/dev/usb/ehcivar.h:1.42.14.13
--- src/sys/dev/usb/ehcivar.h:1.42.14.12	Thu Mar 19 17:26:42 2015
+++ src/sys/dev/usb/ehcivar.h	Mon Apr  6 08:58:43 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ehcivar.h,v 1.42.14.12 2015/03/19 17:26:42 skrll Exp $ */
+/*	$NetBSD: ehcivar.h,v 1.42.14.13 2015/04/06 08:58:43 skrll Exp $ */
 
 /*
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -73,7 +73,7 @@ typedef struct ehci_soft_itd {
 		} frame_list;
 		/* circular list of free itds */
 		LIST_ENTRY(ehci_soft_itd) free_list;
-	} u;
+	};
 	struct ehci_soft_itd *xfer_next; /* Next soft_itd in xfer */
 	ehci_physaddr_t physaddr;
 	usb_dma_t dma;

Index: src/sys/dev/usb/ohci.c
diff -u src/sys/dev/usb/ohci.c:1.254.2.20 src/sys/dev/usb/ohci.c:1.254.2.21
--- src/sys/dev/usb/ohci.c:1.254.2.20	Mon Mar 30 11:56:18 2015
+++ src/sys/dev/usb/ohci.c	Mon Apr  6 08:58:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ohci.c,v 1.254.2.20 2015/03/30 11:56:18 skrll Exp $	*/
+/*	$NetBSD: ohci.c,v 1.254.2.21 2015/04/06 08:58:44 skrll Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004, 2005, 2012 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.254.2.20 2015/03/30 11:56:18 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ohci.c,v 1.254.2.21 2015/04/06 08:58:44 skrll Exp $");
 
 #include "opt_usb.h"
 
@@ -258,7 +258,7 @@ struct ohci_pipe {
 			usb_dma_t reqdma;
 			u_int length;
 			ohci_soft_td_t *setup, *data, *stat;
-		} ctl;
+		} ctrl;
 		/* Interrupt pipe */
 		struct {
 			int nslots;
@@ -269,11 +269,11 @@ struct ohci_pipe {
 			u_int length;
 			int isread;
 		} bulk;
-		/* Iso pipe */
-		struct iso {
+		/* Isochronous pipe */
+		struct isoc {
 			int next, inuse;
-		} iso;
-	} u;
+		} isoc;
+	};
 };
 
 Static const struct usbd_bus_methods ohci_bus_methods = {
@@ -1425,7 +1425,7 @@ ohci_softintr(void *v)
 			ohci_soft_itd_t *next;
 
 			opipe = (struct ohci_pipe *)xfer->ux_pipe;
-			opipe->u.iso.inuse -= xfer->ux_nframes;
+			opipe->isoc.inuse -= xfer->ux_nframes;
 			uedir = UE_GET_DIR(xfer->ux_pipe->up_endpoint->ue_edesc->
 			    bEndpointAddress);
 			xfer->ux_status = USBD_NORMAL_COMPLETION;
@@ -1500,7 +1500,7 @@ ohci_device_ctrl_done(struct usbd_xfer *
 	if (len)
 		usb_syncmem(&xfer->ux_dmabuf, 0, len,
 		    isread ? BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
-	 usb_syncmem(&opipe->u.ctl.reqdma, 0,
+	 usb_syncmem(&opipe->ctrl.reqdma, 0,
 	     sizeof(usb_device_request_t),  BUS_DMASYNC_POSTWRITE);
 }
 
@@ -1737,7 +1737,7 @@ ohci_device_request(struct usbd_xfer *xf
 	tail->xfer = NULL;
 
 	sed = opipe->sed;
-	opipe->u.ctl.length = len;
+	opipe->ctrl.length = len;
 
 	KASSERTMSG(OHCI_ED_GET_FA(O32TOH(sed->ed.ed_flags)) == dev->ud_addr,
 	    "address ED %d pipe %d\n",
@@ -1771,12 +1771,12 @@ ohci_device_request(struct usbd_xfer *xf
 		    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 	}
 
-	memcpy(KERNADDR(&opipe->u.ctl.reqdma, 0), req, sizeof(*req));
-	usb_syncmem(&opipe->u.ctl.reqdma, 0, sizeof(*req), BUS_DMASYNC_PREWRITE);
+	memcpy(KERNADDR(&opipe->ctrl.reqdma, 0), req, sizeof(*req));
+	usb_syncmem(&opipe->ctrl.reqdma, 0, sizeof(*req), BUS_DMASYNC_PREWRITE);
 
 	setup->td.td_flags = HTOO32(OHCI_TD_SETUP | OHCI_TD_NOCC |
 				     OHCI_TD_TOGGLE_0 | OHCI_TD_NOINTR);
-	setup->td.td_cbp = HTOO32(DMAADDR(&opipe->u.ctl.reqdma, 0));
+	setup->td.td_cbp = HTOO32(DMAADDR(&opipe->ctrl.reqdma, 0));
 	setup->nexttd = next;
 	setup->td.td_nexttd = HTOO32(next->physaddr);
 	setup->td.td_be = HTOO32(O32TOH(setup->td.td_cbp) + sizeof(*req) - 1);
@@ -2216,7 +2216,7 @@ ohci_open(struct usbd_pipe *pipe)
 			pipe->up_methods = &ohci_device_ctrl_methods;
 			err = usb_allocmem(&sc->sc_bus,
 				  sizeof(usb_device_request_t),
-				  0, &opipe->u.ctl.reqdma);
+				  0, &opipe->ctrl.reqdma);
 			if (err)
 				goto bad;
 			mutex_enter(&sc->sc_lock);
@@ -2867,8 +2867,8 @@ ohci_device_bulk_start(struct usbd_xfer 
 	    xfer->ux_flags);
 	DPRINTFN(4, "endpt=%d", endpt, 0, 0, 0);
 
-	opipe->u.bulk.isread = isread;
-	opipe->u.bulk.length = len;
+	opipe->bulk.isread = isread;
+	opipe->bulk.length = len;
 
 	usb_syncmem(&sed->dma, sed->offs, sizeof(sed->ed),
 	    BUS_DMASYNC_POSTWRITE | BUS_DMASYNC_POSTREAD);
@@ -3107,8 +3107,8 @@ ohci_device_intr_close(struct usbd_pipe 
 {
 	struct ohci_pipe *opipe = (struct ohci_pipe *)pipe;
 	ohci_softc_t *sc = pipe->up_dev->ud_bus->ub_hcpriv;
-	int nslots = opipe->u.intr.nslots;
-	int pos = opipe->u.intr.pos;
+	int nslots = opipe->intr.nslots;
+	int pos = opipe->intr.pos;
 	int j;
 	ohci_soft_ed_t *p, *sed = opipe->sed;
 
@@ -3211,8 +3211,8 @@ ohci_device_setintr(ohci_softc_t *sc, st
 
 	for (j = 0; j < nslots; j++)
 		++sc->sc_bws[(best * nslots + j) % OHCI_NO_INTRS];
-	opipe->u.intr.nslots = nslots;
-	opipe->u.intr.pos = best;
+	opipe->intr.nslots = nslots;
+	opipe->intr.pos = best;
 
 	DPRINTFN(5, "returns %p", opipe, 0, 0, 0);
 	return USBD_NORMAL_COMPLETION;
@@ -3258,7 +3258,7 @@ ohci_device_isoc_enter(struct usbd_xfer 
 	struct usbd_device *dev = opipe->pipe.up_dev;
 	ohci_softc_t *sc = dev->ud_bus->ub_hcpriv;
 	ohci_soft_ed_t *sed = opipe->sed;
-	struct iso *iso = &opipe->u.iso;
+	struct isoc *isoc = &opipe->isoc;
 	ohci_soft_itd_t *sitd, *nsitd;
 	ohci_physaddr_t buf, offs, noffs, bp0;
 	int i, ncur, nframes;
@@ -3266,15 +3266,15 @@ ohci_device_isoc_enter(struct usbd_xfer 
 	OHCIHIST_FUNC(); OHCIHIST_CALLED();
 
 	DPRINTFN(1, "used=%d next=%d xfer=%p nframes=%d",
-	     iso->inuse, iso->next, xfer, xfer->ux_nframes);
+	     isoc->inuse, isoc->next, xfer, xfer->ux_nframes);
 
 	if (sc->sc_dying)
 		return;
 
-	if (iso->next == -1) {
+	if (isoc->next == -1) {
 		/* Not in use yet, schedule it a few frames ahead. */
-		iso->next = O32TOH(sc->sc_hcca->hcca_frame_number) + 5;
-		DPRINTFN(2,"start next=%d", iso->next, 0, 0, 0);
+		isoc->next = O32TOH(sc->sc_hcca->hcca_frame_number) + 5;
+		DPRINTFN(2,"start next=%d", isoc->next, 0, 0, 0);
 	}
 
 	sitd = opipe->tail.itd;
@@ -3302,7 +3302,7 @@ ohci_device_isoc_enter(struct usbd_xfer 
 			/* Fill current ITD */
 			sitd->itd.itd_flags = HTOO32(
 				OHCI_ITD_NOCC |
-				OHCI_ITD_SET_SF(iso->next) |
+				OHCI_ITD_SET_SF(isoc->next) |
 				OHCI_ITD_SET_DI(6) | /* delay intr a little */
 				OHCI_ITD_SET_FC(ncur));
 			sitd->itd.itd_bp0 = HTOO32(bp0);
@@ -3315,7 +3315,7 @@ ohci_device_isoc_enter(struct usbd_xfer 
 			    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
 			sitd = nsitd;
-			iso->next = iso->next + ncur;
+			isoc->next = isoc->next + ncur;
 			bp0 = OHCI_PAGE(buf + offs);
 			ncur = 0;
 		}
@@ -3334,7 +3334,7 @@ ohci_device_isoc_enter(struct usbd_xfer 
 	/* Fixup last used ITD */
 	sitd->itd.itd_flags = HTOO32(
 		OHCI_ITD_NOCC |
-		OHCI_ITD_SET_SF(iso->next) |
+		OHCI_ITD_SET_SF(isoc->next) |
 		OHCI_ITD_SET_DI(0) |
 		OHCI_ITD_SET_FC(ncur));
 	sitd->itd.itd_bp0 = HTOO32(bp0);
@@ -3346,8 +3346,8 @@ ohci_device_isoc_enter(struct usbd_xfer 
 	usb_syncmem(&sitd->dma, sitd->offs, sizeof(sitd->itd),
 	    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
-	iso->next = iso->next + ncur;
-	iso->inuse += nframes;
+	isoc->next = isoc->next + ncur;
+	isoc->inuse += nframes;
 
 	xfer->ux_actlen = offs;	/* XXX pretend we did it all */
 
@@ -3483,10 +3483,10 @@ ohci_setup_isoc(struct usbd_pipe *pipe)
 {
 	struct ohci_pipe *opipe = (struct ohci_pipe *)pipe;
 	ohci_softc_t *sc = pipe->up_dev->ud_bus->ub_hcpriv;
-	struct iso *iso = &opipe->u.iso;
+	struct isoc *isoc = &opipe->isoc;
 
-	iso->next = -1;
-	iso->inuse = 0;
+	isoc->next = -1;
+	isoc->inuse = 0;
 
 	mutex_enter(&sc->sc_lock);
 	ohci_add_ed(sc, opipe->sed, sc->sc_isoc_head);

Index: src/sys/dev/usb/uhci.c
diff -u src/sys/dev/usb/uhci.c:1.264.4.32 src/sys/dev/usb/uhci.c:1.264.4.33
--- src/sys/dev/usb/uhci.c:1.264.4.32	Sun Apr  5 07:26:31 2015
+++ src/sys/dev/usb/uhci.c	Mon Apr  6 08:58:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: uhci.c,v 1.264.4.32 2015/04/05 07:26:31 skrll Exp $	*/
+/*	$NetBSD: uhci.c,v 1.264.4.33 2015/04/06 08:58:44 skrll Exp $	*/
 
 /*
  * Copyright (c) 1998, 2004, 2011, 2012 The NetBSD Foundation, Inc.
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.264.4.32 2015/04/05 07:26:31 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.264.4.33 2015/04/06 08:58:44 skrll Exp $");
 
 #include "opt_usb.h"
 
@@ -141,7 +141,7 @@ struct uhci_pipe {
 			usb_dma_t reqdma;
 			uhci_soft_td_t *setup, *stat;
 			u_int length;
-		} ctl;
+		} ctrl;
 		/* Interrupt pipe */
 		struct {
 			int npoll;
@@ -154,12 +154,12 @@ struct uhci_pipe {
 			u_int length;
 			int isread;
 		} bulk;
-		/* Iso pipe */
-		struct iso {
+		/* Isochronous pipe */
+		struct isoc {
 			uhci_soft_td_t **stds;
 			int next, inuse;
-		} iso;
-	} u;
+		} isoc;
+	};
 };
 
 Static void		uhci_globalreset(uhci_softc_t *);
@@ -1474,8 +1474,8 @@ uhci_check_intr(uhci_softc_t *sc, uhci_i
 		if ((status & UHCI_TD_SPD) && xfertype == UE_CONTROL) {
 			struct uhci_pipe *upipe =
 			    (struct uhci_pipe *)xfer->ux_pipe;
-			uhci_soft_qh_t *sqh = upipe->u.ctl.sqh;
-			uhci_soft_td_t *stat = upipe->u.ctl.stat;
+			uhci_soft_qh_t *sqh = upipe->ctrl.sqh;
+			uhci_soft_td_t *stat = upipe->ctrl.stat;
 
 			DPRINTFN(12, "ii=%p std=%p control status"
 			    "phase needs completion", ii, ii->stdstart, 0, 0);
@@ -1531,7 +1531,7 @@ uhci_idone(uhci_intr_info_t *ii)
 
 	if (xfer->ux_nframes != 0) {
 		/* Isoc transfer, do things differently. */
-		uhci_soft_td_t **stds = upipe->u.iso.stds;
+		uhci_soft_td_t **stds = upipe->isoc.stds;
 		int i, n, nframes, len;
 
 		DPRINTFN(5, "ii=%p isoc ready", ii, 0, 0, 0);
@@ -1558,7 +1558,7 @@ uhci_idone(uhci_intr_info_t *ii)
 			xfer->ux_frlengths[i] = len;
 			actlen += len;
 		}
-		upipe->u.iso.inuse -= nframes;
+		upipe->isoc.inuse -= nframes;
 		xfer->ux_actlen = actlen;
 		xfer->ux_status = USBD_NORMAL_COMPLETION;
 		goto end;
@@ -2066,10 +2066,10 @@ uhci_device_bulk_start(struct usbd_xfer 
 	len = xfer->ux_length;
 	endpt = upipe->pipe.up_endpoint->ue_edesc->bEndpointAddress;
 	isread = UE_GET_DIR(endpt) == UE_DIR_IN;
-	sqh = upipe->u.bulk.sqh;
+	sqh = upipe->bulk.sqh;
 
-	upipe->u.bulk.isread = isread;
-	upipe->u.bulk.length = len;
+	upipe->bulk.isread = isread;
+	upipe->bulk.length = len;
 
 	err = uhci_alloc_std_chain(upipe, sc, len, isread, xfer->ux_flags,
 				   &xfer->ux_dmabuf, &data, &dataend);
@@ -2252,7 +2252,7 @@ uhci_device_bulk_close(struct usbd_pipe 
 
 	KASSERT(mutex_owned(&sc->sc_lock));
 
-	uhci_free_sqh(sc, upipe->u.bulk.sqh);
+	uhci_free_sqh(sc, upipe->bulk.sqh);
 
 	pipe->up_endpoint->ue_toggle = upipe->nexttoggle;
 }
@@ -2347,7 +2347,7 @@ uhci_device_intr_start(struct usbd_xfer 
 	endpt = upipe->pipe.up_endpoint->ue_edesc->bEndpointAddress;
 	isread = UE_GET_DIR(endpt) == UE_DIR_IN;
 
-	upipe->u.intr.isread = isread;
+	upipe->intr.isread = isread;
 
 	err = uhci_alloc_std_chain(upipe, sc, xfer->ux_length, isread,
 				   xfer->ux_flags, &xfer->ux_dmabuf, &data,
@@ -2367,7 +2367,7 @@ uhci_device_intr_start(struct usbd_xfer 
 #ifdef UHCI_DEBUG
 	if (uhcidebug > 10) {
 		uhci_dump_tds(data);
-		uhci_dump_qh(upipe->u.intr.qhs[0]);
+		uhci_dump_qh(upipe->intr.qhs[0]);
 	}
 #endif
 	DPRINTFN(10, "--- dump end ---", 0, 0, 0, 0);
@@ -2381,9 +2381,9 @@ uhci_device_intr_start(struct usbd_xfer 
 	ii->isdone = false;
 #endif
 
-	DPRINTFN(10, "qhs[0]=%p", upipe->u.intr.qhs[0], 0, 0, 0);
-	for (i = 0; i < upipe->u.intr.npoll; i++) {
-		sqh = upipe->u.intr.qhs[i];
+	DPRINTFN(10, "qhs[0]=%p", upipe->intr.qhs[0], 0, 0, 0);
+	for (i = 0; i < upipe->intr.npoll; i++) {
+		sqh = upipe->intr.qhs[i];
 		sqh->elink = data;
 		sqh->qh.qh_elink = htole32(data->physaddr | UHCI_PTR_TD);
 		usb_syncmem(&sqh->dma,
@@ -2399,7 +2399,7 @@ uhci_device_intr_start(struct usbd_xfer 
 #ifdef UHCI_DEBUG
 	if (uhcidebug > 10) {
 		uhci_dump_tds(data);
-		uhci_dump_qh(upipe->u.intr.qhs[0]);
+		uhci_dump_qh(upipe->intr.qhs[0]);
 	}
 #endif
 	DPRINTFN(10, "--- dump end ---", 0, 0, 0, 0);
@@ -2451,9 +2451,9 @@ uhci_device_intr_close(struct usbd_pipe 
 	KASSERT(mutex_owned(&sc->sc_lock));
 
 	/* Unlink descriptors from controller data structures. */
-	npoll = upipe->u.intr.npoll;
+	npoll = upipe->intr.npoll;
 	for (i = 0; i < npoll; i++)
-		uhci_remove_intr(sc, upipe->u.intr.qhs[i]);
+		uhci_remove_intr(sc, upipe->intr.qhs[i]);
 
 	/*
 	 * We now have to wait for any activity on the physical
@@ -2462,8 +2462,8 @@ uhci_device_intr_close(struct usbd_pipe 
 	usb_delay_ms_locked(&sc->sc_bus, 2, &sc->sc_lock);
 
 	for(i = 0; i < npoll; i++)
-		uhci_free_sqh(sc, upipe->u.intr.qhs[i]);
-	kmem_free(upipe->u.intr.qhs, npoll * sizeof(uhci_soft_qh_t *));
+		uhci_free_sqh(sc, upipe->intr.qhs[i]);
+	kmem_free(upipe->intr.qhs, npoll * sizeof(uhci_soft_qh_t *));
 
 	/* XXX free other resources */
 }
@@ -2499,9 +2499,9 @@ uhci_device_request(struct usbd_xfer *xf
 	isread = req->bmRequestType & UT_READ;
 	len = UGETW(req->wLength);
 
-	setup = upipe->u.ctl.setup;
-	stat = upipe->u.ctl.stat;
-	sqh = upipe->u.ctl.sqh;
+	setup = upipe->ctrl.setup;
+	stat = upipe->ctrl.stat;
+	sqh = upipe->ctrl.sqh;
 
 	/* Set up data transaction */
 	if (len != 0) {
@@ -2520,17 +2520,17 @@ uhci_device_request(struct usbd_xfer *xf
 	} else {
 		next = stat;
 	}
-	upipe->u.ctl.length = len;
+	upipe->ctrl.length = len;
 
-	memcpy(KERNADDR(&upipe->u.ctl.reqdma, 0), req, sizeof *req);
-	usb_syncmem(&upipe->u.ctl.reqdma, 0, sizeof *req, BUS_DMASYNC_PREWRITE);
+	memcpy(KERNADDR(&upipe->ctrl.reqdma, 0), req, sizeof *req);
+	usb_syncmem(&upipe->ctrl.reqdma, 0, sizeof *req, BUS_DMASYNC_PREWRITE);
 
 	setup->link.std = next;
 	setup->td.td_link = htole32(next->physaddr | UHCI_PTR_TD);
 	setup->td.td_status = htole32(UHCI_TD_SET_ERRCNT(3) | ls |
 		UHCI_TD_ACTIVE);
 	setup->td.td_token = htole32(UHCI_TD_SETUP(sizeof *req, endpt, addr));
-	setup->td.td_buffer = htole32(DMAADDR(&upipe->u.ctl.reqdma, 0));
+	setup->td.td_buffer = htole32(DMAADDR(&upipe->ctrl.reqdma, 0));
 	usb_syncmem(&setup->dma, setup->offs, sizeof(setup->td),
 	    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
 
@@ -2646,7 +2646,7 @@ uhci_device_isoc_enter(struct usbd_xfer 
 	struct uhci_pipe *upipe = (struct uhci_pipe *)xfer->ux_pipe;
 	struct usbd_device *dev = upipe->pipe.up_dev;
 	uhci_softc_t *sc = dev->ud_bus->ub_hcpriv;
-	struct iso *iso = &upipe->u.iso;
+	struct isoc *isoc = &upipe->isoc;
 	uhci_soft_td_t *std;
 	uint32_t buf, len, status, offs;
 	int i, next, nframes;
@@ -2654,7 +2654,7 @@ uhci_device_isoc_enter(struct usbd_xfer 
 
 	UHCIHIST_FUNC(); UHCIHIST_CALLED();
 	DPRINTFN(5, "used=%d next=%d xfer=%p nframes=%d",
-	    iso->inuse, iso->next, xfer, xfer->ux_nframes);
+	    isoc->inuse, isoc->next, xfer, xfer->ux_nframes);
 
 	if (sc->sc_dying)
 		return;
@@ -2666,11 +2666,11 @@ uhci_device_isoc_enter(struct usbd_xfer 
 	}
 
 #ifdef DIAGNOSTIC
-	if (iso->inuse >= UHCI_VFRAMELIST_COUNT)
+	if (isoc->inuse >= UHCI_VFRAMELIST_COUNT)
 		printf("uhci_device_isoc_enter: overflow!\n");
 #endif
 
-	next = iso->next;
+	next = isoc->next;
 	if (next == -1) {
 		/* Not in use yet, schedule it a few frames ahead. */
 		next = (UREAD2(sc, UHCI_FRNUM) + 3) % UHCI_VFRAMELIST_COUNT;
@@ -2688,7 +2688,7 @@ uhci_device_isoc_enter(struct usbd_xfer 
 	nframes = xfer->ux_nframes;
 	mutex_enter(&sc->sc_lock);
 	for (i = 0; i < nframes; i++) {
-		std = iso->stds[next];
+		std = isoc->stds[next];
 		if (++next >= UHCI_VFRAMELIST_COUNT)
 			next = 0;
 		len = xfer->ux_frlengths[i];
@@ -2713,8 +2713,8 @@ uhci_device_isoc_enter(struct usbd_xfer 
 		buf += len;
 		offs += len;
 	}
-	iso->next = next;
-	iso->inuse += xfer->ux_nframes;
+	isoc->next = next;
+	isoc->inuse += xfer->ux_nframes;
 
 	mutex_exit(&sc->sc_lock);
 }
@@ -2747,7 +2747,7 @@ uhci_device_isoc_start(struct usbd_xfer 
 	i = UXFER(xfer)->curframe + xfer->ux_nframes;
 	if (i >= UHCI_VFRAMELIST_COUNT)
 		i -= UHCI_VFRAMELIST_COUNT;
-	end = upipe->u.iso.stds[i];
+	end = upipe->isoc.stds[i];
 
 	KASSERT(end != NULL);
 
@@ -2772,7 +2772,7 @@ uhci_device_isoc_abort(struct usbd_xfer 
 {
 	uhci_softc_t *sc __diagused = xfer->ux_pipe->up_dev->ud_bus->ub_hcpriv;
 	struct uhci_pipe *upipe = (struct uhci_pipe *)xfer->ux_pipe;
-	uhci_soft_td_t **stds = upipe->u.iso.stds;
+	uhci_soft_td_t **stds = upipe->isoc.stds;
 	uhci_soft_td_t *std;
 	int i, n, nframes, maxlen, len;
 
@@ -2832,7 +2832,7 @@ uhci_device_isoc_close(struct usbd_pipe 
 	struct usbd_device *dev = upipe->pipe.up_dev;
 	uhci_softc_t *sc = dev->ud_bus->ub_hcpriv;
 	uhci_soft_td_t *std, *vstd;
-	struct iso *iso;
+	struct isoc *isoc;
 	int i;
 
 	KASSERT(mutex_owned(&sc->sc_lock));
@@ -2843,10 +2843,10 @@ uhci_device_isoc_close(struct usbd_pipe 
 	 * Unschedule.
 	 * Deallocate.
 	 */
-	iso = &upipe->u.iso;
+	isoc = &upipe->isoc;
 
 	for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
-		std = iso->stds[i];
+		std = isoc->stds[i];
 		usb_syncmem(&std->dma,
 		    std->offs + offsetof(uhci_td_t, td_status),
 		    sizeof(std->td.td_status),
@@ -2861,7 +2861,7 @@ uhci_device_isoc_close(struct usbd_pipe 
 	usb_delay_ms_locked(&sc->sc_bus, 2, &sc->sc_lock);
 
 	for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
-		std = iso->stds[i];
+		std = isoc->stds[i];
 		for (vstd = sc->sc_vframes[i].htd;
 		     vstd != NULL && vstd->link.std != std;
 		     vstd = vstd->link.std)
@@ -2885,7 +2885,7 @@ uhci_device_isoc_close(struct usbd_pipe 
 		uhci_free_std(sc, std);
 	}
 
-	kmem_free(iso->stds, UHCI_VFRAMELIST_COUNT * sizeof (uhci_soft_td_t *));
+	kmem_free(isoc->stds, UHCI_VFRAMELIST_COUNT * sizeof (uhci_soft_td_t *));
 }
 
 usbd_status
@@ -2899,14 +2899,14 @@ uhci_setup_isoc(struct usbd_pipe *pipe)
 	int rd = UE_GET_DIR(endpt) == UE_DIR_IN;
 	uhci_soft_td_t *std, *vstd;
 	uint32_t token;
-	struct iso *iso;
+	struct isoc *isoc;
 	int i;
 
-	iso = &upipe->u.iso;
-	iso->stds = kmem_alloc(UHCI_VFRAMELIST_COUNT *
+	isoc = &upipe->isoc;
+	isoc->stds = kmem_alloc(UHCI_VFRAMELIST_COUNT *
 				 sizeof (uhci_soft_td_t *),
 			       KM_SLEEP);
-	if (iso->stds == NULL)
+	if (isoc->stds == NULL)
 		return USBD_NOMEM;
 
 	token = rd ? UHCI_TD_IN (0, endpt, addr, 0) :
@@ -2923,12 +2923,12 @@ uhci_setup_isoc(struct usbd_pipe *pipe)
 		std->td.td_token = htole32(token);
 		usb_syncmem(&std->dma, std->offs, sizeof(std->td),
 		    BUS_DMASYNC_PREWRITE | BUS_DMASYNC_PREREAD);
-		iso->stds[i] = std;
+		isoc->stds[i] = std;
 	}
 
 	/* Insert TDs into schedule. */
 	for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
-		std = iso->stds[i];
+		std = isoc->stds[i];
 		vstd = sc->sc_vframes[i].htd;
 		usb_syncmem(&vstd->dma,
 		    vstd->offs + offsetof(uhci_td_t, td_link),
@@ -2949,16 +2949,16 @@ uhci_setup_isoc(struct usbd_pipe *pipe)
 	}
 	mutex_exit(&sc->sc_lock);
 
-	iso->next = -1;
-	iso->inuse = 0;
+	isoc->next = -1;
+	isoc->inuse = 0;
 
 	return USBD_NORMAL_COMPLETION;
 
  bad:
 	while (--i >= 0)
-		uhci_free_std(sc, iso->stds[i]);
+		uhci_free_std(sc, isoc->stds[i]);
 	mutex_exit(&sc->sc_lock);
-	kmem_free(iso->stds, UHCI_VFRAMELIST_COUNT * sizeof (uhci_soft_td_t *));
+	kmem_free(isoc->stds, UHCI_VFRAMELIST_COUNT * sizeof (uhci_soft_td_t *));
 	return USBD_NOMEM;
 }
 
@@ -3027,9 +3027,9 @@ uhci_device_intr_done(struct usbd_xfer *
 
 	KASSERT(sc->sc_bus.ub_usepolling || mutex_owned(&sc->sc_lock));
 
-	npoll = upipe->u.intr.npoll;
+	npoll = upipe->intr.npoll;
 	for(i = 0; i < npoll; i++) {
-		sqh = upipe->u.intr.qhs[i];
+		sqh = upipe->intr.qhs[i];
 		sqh->elink = NULL;
 		sqh->qh.qh_elink = htole32(UHCI_PTR_T);
 		usb_syncmem(&sqh->dma,
@@ -3051,7 +3051,7 @@ uhci_device_intr_done(struct usbd_xfer *
 
 		/* This alloc cannot fail since we freed the chain above. */
 		uhci_alloc_std_chain(upipe, sc, xfer->ux_length,
-				     upipe->u.intr.isread, xfer->ux_flags,
+				     upipe->intr.isread, xfer->ux_flags,
 				     &xfer->ux_dmabuf, &data, &dataend);
 		dataend->td.td_status |= htole32(UHCI_TD_IOC);
 		usb_syncmem(&dataend->dma,
@@ -3063,7 +3063,7 @@ uhci_device_intr_done(struct usbd_xfer *
 #ifdef UHCI_DEBUG
 		if (uhcidebug > 10) {
 			uhci_dump_tds(data);
-			uhci_dump_qh(upipe->u.intr.qhs[0]);
+			uhci_dump_qh(upipe->intr.qhs[0]);
 		}
 #endif
 		DPRINTFN(10, "--- dump end ---", 0, 0, 0, 0);
@@ -3075,7 +3075,7 @@ uhci_device_intr_done(struct usbd_xfer *
 		ii->isdone = false;
 #endif
 		for (i = 0; i < npoll; i++) {
-			sqh = upipe->u.intr.qhs[i];
+			sqh = upipe->intr.qhs[i];
 			sqh->elink = data;
 			sqh->qh.qh_elink = htole32(data->physaddr | UHCI_PTR_TD);
 			usb_syncmem(&sqh->dma,
@@ -3114,18 +3114,18 @@ uhci_device_ctrl_done(struct usbd_xfer *
 	uhci_del_intr_info(ii);	/* remove from active list */
 
 	if (upipe->pipe.up_dev->ud_speed == USB_SPEED_LOW)
-		uhci_remove_ls_ctrl(sc, upipe->u.ctl.sqh);
+		uhci_remove_ls_ctrl(sc, upipe->ctrl.sqh);
 	else
-		uhci_remove_hs_ctrl(sc, upipe->u.ctl.sqh);
+		uhci_remove_hs_ctrl(sc, upipe->ctrl.sqh);
 
-	if (upipe->u.ctl.length != 0)
+	if (upipe->ctrl.length != 0)
 		uhci_free_std_chain(sc, ii->stdstart->link.std, ii->stdend);
 
 	if (len) {
 		usb_syncmem(&xfer->ux_dmabuf, 0, len,
 		    isread ? BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
 	}
-	usb_syncmem(&upipe->u.ctl.reqdma, 0,
+	usb_syncmem(&upipe->ctrl.reqdma, 0,
 	    sizeof(usb_device_request_t),  BUS_DMASYNC_POSTWRITE);
 
 	DPRINTF("length=%d", xfer->ux_actlen, 0, 0, 0);
@@ -3150,7 +3150,7 @@ uhci_device_bulk_done(struct usbd_xfer *
 
 	uhci_del_intr_info(ii);	/* remove from active list */
 
-	uhci_remove_bulk(sc, upipe->u.bulk.sqh);
+	uhci_remove_bulk(sc, upipe->bulk.sqh);
 
 	uhci_free_std_chain(sc, ii->stdstart, NULL);
 
@@ -3243,10 +3243,10 @@ uhci_device_setintr(uhci_softc_t *sc, st
 	npoll = (UHCI_VFRAMELIST_COUNT + ival - 1) / ival;
 	DPRINTF("ival=%d npoll=%d", ival, npoll, 0, 0);
 
-	upipe->u.intr.npoll = npoll;
-	upipe->u.intr.qhs =
+	upipe->intr.npoll = npoll;
+	upipe->intr.qhs =
 		kmem_alloc(npoll * sizeof(uhci_soft_qh_t *), KM_SLEEP);
-	if (upipe->u.intr.qhs == NULL)
+	if (upipe->intr.qhs == NULL)
 		return USBD_NOMEM;
 
 	/*
@@ -3265,7 +3265,7 @@ uhci_device_setintr(uhci_softc_t *sc, st
 	DPRINTF("bw=%d offs=%d", bestbw, bestoffs, 0, 0);
 	mutex_enter(&sc->sc_lock);
 	for(i = 0; i < npoll; i++) {
-		upipe->u.intr.qhs[i] = sqh = uhci_alloc_sqh(sc);
+		upipe->intr.qhs[i] = sqh = uhci_alloc_sqh(sc);
 		sqh->elink = NULL;
 		sqh->qh.qh_elink = htole32(UHCI_PTR_T);
 		usb_syncmem(&sqh->dma,
@@ -3278,7 +3278,7 @@ uhci_device_setintr(uhci_softc_t *sc, st
 
 	/* Enter QHs into the controller data structures. */
 	for(i = 0; i < npoll; i++)
-		uhci_add_intr(sc, upipe->u.intr.qhs[i]);
+		uhci_add_intr(sc, upipe->intr.qhs[i]);
 	mutex_exit(&sc->sc_lock);
 
 	DPRINTFN(5, "returns %p", upipe, 0, 0, 0);
@@ -3323,27 +3323,27 @@ uhci_open(struct usbd_pipe *pipe)
 		switch (ed->bmAttributes & UE_XFERTYPE) {
 		case UE_CONTROL:
 			pipe->up_methods = &uhci_device_ctrl_methods;
-			upipe->u.ctl.sqh = uhci_alloc_sqh(sc);
-			if (upipe->u.ctl.sqh == NULL)
+			upipe->ctrl.sqh = uhci_alloc_sqh(sc);
+			if (upipe->ctrl.sqh == NULL)
 				goto bad;
-			upipe->u.ctl.setup = uhci_alloc_std(sc);
-			if (upipe->u.ctl.setup == NULL) {
-				uhci_free_sqh(sc, upipe->u.ctl.sqh);
+			upipe->ctrl.setup = uhci_alloc_std(sc);
+			if (upipe->ctrl.setup == NULL) {
+				uhci_free_sqh(sc, upipe->ctrl.sqh);
 				goto bad;
 			}
-			upipe->u.ctl.stat = uhci_alloc_std(sc);
-			if (upipe->u.ctl.stat == NULL) {
-				uhci_free_sqh(sc, upipe->u.ctl.sqh);
-				uhci_free_std(sc, upipe->u.ctl.setup);
+			upipe->ctrl.stat = uhci_alloc_std(sc);
+			if (upipe->ctrl.stat == NULL) {
+				uhci_free_sqh(sc, upipe->ctrl.sqh);
+				uhci_free_std(sc, upipe->ctrl.setup);
 				goto bad;
 			}
 			err = usb_allocmem(&sc->sc_bus,
 				  sizeof(usb_device_request_t),
-				  0, &upipe->u.ctl.reqdma);
+				  0, &upipe->ctrl.reqdma);
 			if (err) {
-				uhci_free_sqh(sc, upipe->u.ctl.sqh);
-				uhci_free_std(sc, upipe->u.ctl.setup);
-				uhci_free_std(sc, upipe->u.ctl.stat);
+				uhci_free_sqh(sc, upipe->ctrl.sqh);
+				uhci_free_std(sc, upipe->ctrl.setup);
+				uhci_free_std(sc, upipe->ctrl.stat);
 				goto bad;
 			}
 			break;
@@ -3358,8 +3358,8 @@ uhci_open(struct usbd_pipe *pipe)
 			return uhci_setup_isoc(pipe);
 		case UE_BULK:
 			pipe->up_methods = &uhci_device_bulk_methods;
-			upipe->u.bulk.sqh = uhci_alloc_sqh(sc);
-			if (upipe->u.bulk.sqh == NULL)
+			upipe->bulk.sqh = uhci_alloc_sqh(sc);
+			if (upipe->bulk.sqh == NULL)
 				goto bad;
 			break;
 		}

Reply via email to