USB: remove uses of URB_NO_SETUP_DMA_MAP
This patch (as1350) removes all usages of coherent buffers for USB control-request setup-packet buffers. There's no good reason to reserve coherent memory for these things; control requests are hardly ever used in large quantity (the major exception is firmware transfers, and they aren't time-critical). Furthermore, only seven drivers used it. We might as well always use streaming DMA mappings for setup-packet buffers, and remove some extra complexity from usbcore. The DMA-mapping portion of hcd.c is currently in flux. A separate patch will be submitted to remove support for URB_NO_SETUP_DMA_MAP after everything else settles down. The removal should go smoothly, as by then nobody will be using it. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
749da5f82f
commit
0ede76fcec
@@ -407,9 +407,8 @@ static int associate_dev(struct us_data *us, struct usb_interface *intf)
|
||||
/* Store our private data in the interface */
|
||||
usb_set_intfdata(intf, us);
|
||||
|
||||
/* Allocate the device-related DMA-mapped buffers */
|
||||
us->cr = usb_buffer_alloc(us->pusb_dev, sizeof(*us->cr),
|
||||
GFP_KERNEL, &us->cr_dma);
|
||||
/* Allocate the control/setup and DMA-mapped buffers */
|
||||
us->cr = kmalloc(sizeof(*us->cr), GFP_KERNEL);
|
||||
if (!us->cr) {
|
||||
US_DEBUGP("usb_ctrlrequest allocation failed\n");
|
||||
return -ENOMEM;
|
||||
@@ -757,13 +756,9 @@ static void dissociate_dev(struct us_data *us)
|
||||
{
|
||||
US_DEBUGP("-- %s\n", __func__);
|
||||
|
||||
/* Free the device-related DMA-mapped buffers */
|
||||
if (us->cr)
|
||||
usb_buffer_free(us->pusb_dev, sizeof(*us->cr), us->cr,
|
||||
us->cr_dma);
|
||||
if (us->iobuf)
|
||||
usb_buffer_free(us->pusb_dev, US_IOBUF_SIZE, us->iobuf,
|
||||
us->iobuf_dma);
|
||||
/* Free the buffers */
|
||||
kfree(us->cr);
|
||||
usb_buffer_free(us->pusb_dev, US_IOBUF_SIZE, us->iobuf, us->iobuf_dma);
|
||||
|
||||
/* Remove our private data from the interface */
|
||||
usb_set_intfdata(us->pusb_intf, NULL);
|
||||
|
Reference in New Issue
Block a user