diff options
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/storage/scsiglue.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c index 5405ba8cd9d2..521f0297aef9 100644 --- a/drivers/usb/storage/scsiglue.c +++ b/drivers/usb/storage/scsiglue.c | |||
@@ -73,6 +73,7 @@ static const char* host_info(struct Scsi_Host *host) | |||
73 | static int slave_alloc (struct scsi_device *sdev) | 73 | static int slave_alloc (struct scsi_device *sdev) |
74 | { | 74 | { |
75 | struct us_data *us = host_to_us(sdev->host); | 75 | struct us_data *us = host_to_us(sdev->host); |
76 | struct usb_host_endpoint *bulk_in_ep; | ||
76 | 77 | ||
77 | /* | 78 | /* |
78 | * Set the INQUIRY transfer length to 36. We don't use any of | 79 | * Set the INQUIRY transfer length to 36. We don't use any of |
@@ -84,12 +85,13 @@ static int slave_alloc (struct scsi_device *sdev) | |||
84 | /* Scatter-gather buffers (all but the last) must have a length | 85 | /* Scatter-gather buffers (all but the last) must have a length |
85 | * divisible by the bulk maxpacket size. Otherwise a data packet | 86 | * divisible by the bulk maxpacket size. Otherwise a data packet |
86 | * would end up being short, causing a premature end to the data | 87 | * would end up being short, causing a premature end to the data |
87 | * transfer. Since high-speed bulk pipes have a maxpacket size | 88 | * transfer. We'll use the maxpacket value of the bulk-IN pipe |
88 | * of 512, we'll use that as the scsi device queue's DMA alignment | 89 | * to set the SCSI device queue's DMA alignment mask. |
89 | * mask. Guaranteeing proper alignment of the first buffer will | 90 | */ |
90 | * have the desired effect because, except at the beginning and | 91 | bulk_in_ep = us->pusb_dev->ep_in[usb_pipeendpoint(us->recv_bulk_pipe)]; |
91 | * the end, scatter-gather buffers follow page boundaries. */ | 92 | blk_queue_update_dma_alignment(sdev->request_queue, |
92 | blk_queue_update_dma_alignment(sdev->request_queue, (512 - 1)); | 93 | le16_to_cpu(bulk_in_ep->desc.wMaxPacketSize) - 1); |
94 | /* wMaxPacketSize must be a power of 2 */ | ||
93 | 95 | ||
94 | /* | 96 | /* |
95 | * The UFI spec treates the Peripheral Qualifier bits in an | 97 | * The UFI spec treates the Peripheral Qualifier bits in an |