Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-2.6-block.git] / drivers / usb / storage / scsiglue.c
CommitLineData
5fd54ace 1// SPDX-License-Identifier: GPL-2.0+
f0183a33
FB
2/*
3 * Driver for USB Mass Storage compliant devices
1da177e4
LT
4 * SCSI layer glue code
5 *
1da177e4
LT
6 * Current development and maintenance by:
7 * (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
8 *
9 * Developed with the assistance of:
10 * (c) 2000 David L. Brown, Jr. (usb-storage@davidb.org)
11 * (c) 2000 Stephen J. Gowdy (SGowdy@lbl.gov)
12 *
13 * Initial work by:
14 * (c) 1999 Michael Gee (michael@linuxspecific.com)
15 *
16 * This driver is based on the 'USB Mass Storage Class' document. This
17 * describes in detail the protocol used to communicate with such
18 * devices. Clearly, the designers had SCSI and ATAPI commands in
19 * mind when they created this document. The commands are all very
20 * similar to commands in the SCSI-II and ATAPI specifications.
21 *
22 * It is important to note that in a number of cases this class
23 * exhibits class-specific exemptions from the USB specification.
24 * Notably the usage of NAK, STALL and ACK differs from the norm, in
25 * that they are used to communicate wait, failed and OK on commands.
26 *
27 * Also, for certain devices, the interrupt endpoint is used to convey
28 * status of a command.
1da177e4
LT
29 */
30
d74ffae8
YS
31#include <linux/blkdev.h>
32#include <linux/dma-mapping.h>
1da177e4 33#include <linux/module.h>
4186ecf8 34#include <linux/mutex.h>
1da177e4
LT
35
36#include <scsi/scsi.h>
37#include <scsi/scsi_cmnd.h>
38#include <scsi/scsi_devinfo.h>
39#include <scsi/scsi_device.h>
40#include <scsi/scsi_eh.h>
41
42#include "usb.h"
43#include "scsiglue.h"
44#include "debug.h"
45#include "transport.h"
46#include "protocol.h"
47
f0183a33
FB
48/*
49 * Vendor IDs for companies that seem to include the READ CAPACITY bug
a81a81a2
AS
50 * in all their devices
51 */
52#define VENDOR_ID_NOKIA 0x0421
53#define VENDOR_ID_NIKON 0x04b0
506e9469 54#define VENDOR_ID_PENTAX 0x0a17
a81a81a2
AS
55#define VENDOR_ID_MOTOROLA 0x22b8
56
1da177e4
LT
57/***********************************************************************
58 * Host functions
59 ***********************************************************************/
60
61static const char* host_info(struct Scsi_Host *host)
62{
00fa43ef
MW
63 struct us_data *us = host_to_us(host);
64 return us->scsi_name;
1da177e4
LT
65}
66
67static int slave_alloc (struct scsi_device *sdev)
68{
823d12c9
AS
69 struct us_data *us = host_to_us(sdev->host);
70
1da177e4
LT
71 /*
72 * Set the INQUIRY transfer length to 36. We don't use any of
73 * the extra data and many devices choke if asked for more or
74 * less than 36 bytes.
75 */
76 sdev->inquiry_len = 36;
3a3416b1 77
823d12c9
AS
78 /* Tell the SCSI layer if we know there is more than one LUN */
79 if (us->protocol == USB_PR_BULK && us->max_lun > 0)
80 sdev->sdev_bflags |= BLIST_FORCELUN;
81
1da177e4
LT
82 return 0;
83}
84
70a79493 85static int device_configure(struct scsi_device *sdev, struct queue_limits *lim)
1da177e4
LT
86{
87 struct us_data *us = host_to_us(sdev->host);
97ad4a77 88 struct device *dev = us->pusb_dev->bus->sysdev;
1da177e4 89
f0183a33
FB
90 /*
91 * Many devices have trouble transferring more than 32KB at a time,
883d989a
PD
92 * while others have trouble with more than 64K. At this time we
93 * are limiting both to 32K (64 sectores).
94 */
7e4d6c38 95 if (us->fflags & (US_FL_MAX_SECTORS_64 | US_FL_MAX_SECTORS_MIN)) {
33abc04f
DM
96 unsigned int max_sectors = 64;
97
7e4d6c38 98 if (us->fflags & US_FL_MAX_SECTORS_MIN)
09cbfeaf 99 max_sectors = PAGE_SIZE >> 9;
70a79493 100 lim->max_hw_sectors = min(lim->max_hw_sectors, max_sectors);
5c16034d 101 } else if (sdev->type == TYPE_TAPE) {
f0183a33
FB
102 /*
103 * Tapes need much higher max_sector limits, so just
5c16034d
AS
104 * raise it to the maximum possible (4 GB / 512) and
105 * let the queue segment size sort out the real limit.
106 */
70a79493 107 lim->max_hw_sectors = 0x7FFFFF;
5b91dfe1 108 } else if (us->pusb_dev->speed >= USB_SPEED_SUPER) {
f0183a33
FB
109 /*
110 * USB3 devices will be limited to 2048 sectors. This gives us
5b91dfe1
FB
111 * better throughput on most devices.
112 */
70a79493 113 lim->max_hw_sectors = 2048;
33abc04f 114 }
1da177e4 115
d74ffae8
YS
116 /*
117 * The max_hw_sectors should be up to maximum size of a mapping for
118 * the device. Otherwise, a DMA API might fail on swiotlb environment.
119 */
70a79493
CH
120 lim->max_hw_sectors = min_t(size_t,
121 lim->max_hw_sectors, dma_max_mapping_size(dev) >> SECTOR_SHIFT);
d74ffae8 122
f0183a33
FB
123 /*
124 * We can't put these settings in slave_alloc() because that gets
1da177e4 125 * called before the device type is known. Consequently these
f0183a33
FB
126 * settings can't be overridden via the scsi devinfo mechanism.
127 */
1da177e4
LT
128 if (sdev->type == TYPE_DISK) {
129
f0183a33
FB
130 /*
131 * Some vendors seem to put the READ CAPACITY bug into
a81a81a2
AS
132 * all their devices -- primarily makers of cell phones
133 * and digital cameras. Since these devices always use
134 * flash media and can be expected to have an even number
135 * of sectors, we will always enable the CAPACITY_HEURISTICS
f0183a33
FB
136 * flag unless told otherwise.
137 */
a81a81a2
AS
138 switch (le16_to_cpu(us->pusb_dev->descriptor.idVendor)) {
139 case VENDOR_ID_NOKIA:
140 case VENDOR_ID_NIKON:
506e9469 141 case VENDOR_ID_PENTAX:
a81a81a2
AS
142 case VENDOR_ID_MOTOROLA:
143 if (!(us->fflags & (US_FL_FIX_CAPACITY |
144 US_FL_CAPACITY_OK)))
145 us->fflags |= US_FL_CAPACITY_HEURISTICS;
146 break;
147 }
148
f0183a33
FB
149 /*
150 * Disk-type devices use MODE SENSE(6) if the protocol
1da177e4 151 * (SubClass) is Transparent SCSI, otherwise they use
f0183a33
FB
152 * MODE SENSE(10).
153 */
8fa7fd74 154 if (us->subclass != USB_SC_SCSI && us->subclass != USB_SC_CYP_ATACB)
1da177e4
LT
155 sdev->use_10_for_ms = 1;
156
f0183a33
FB
157 /*
158 *Many disks only accept MODE SENSE transfer lengths of
159 * 192 bytes (that's what Windows uses).
160 */
1da177e4
LT
161 sdev->use_192_bytes_for_3f = 1;
162
321da3dc
MP
163 /*
164 * Some devices report generic values until the media has been
165 * accessed. Force a READ(10) prior to querying device
166 * characteristics.
167 */
168 sdev->read_before_ms = 1;
169
f0183a33
FB
170 /*
171 * Some devices don't like MODE SENSE with page=0x3f,
1da177e4
LT
172 * which is the command used for checking if a device
173 * is write-protected. Now that we tell the sd driver
174 * to do a 192-byte transfer with this command the
175 * majority of devices work fine, but a few still can't
176 * handle it. The sd driver will simply assume those
f0183a33
FB
177 * devices are write-enabled.
178 */
7e4d6c38 179 if (us->fflags & US_FL_NO_WP_DETECT)
1da177e4
LT
180 sdev->skip_ms_page_3f = 1;
181
f0183a33
FB
182 /*
183 * A number of devices have problems with MODE SENSE for
184 * page x08, so we will skip it.
185 */
1da177e4
LT
186 sdev->skip_ms_page_8 = 1;
187
34914878
MPS
188 /*
189 * Some devices don't handle VPD pages correctly, so skip vpd
190 * pages if not forced by SCSI layer.
191 */
192 sdev->skip_vpd_pages = !sdev->try_vpd_pages;
09b6b51b 193
3c6bdaea
MP
194 /* Do not attempt to use REPORT SUPPORTED OPERATION CODES */
195 sdev->no_report_opcodes = 1;
196
5db44863
MP
197 /* Do not attempt to use WRITE SAME */
198 sdev->no_write_same = 1;
199
f0183a33
FB
200 /*
201 * Some disks return the total number of blocks in response
1da177e4 202 * to READ CAPACITY rather than the highest block number.
f0183a33
FB
203 * If this device makes that mistake, tell the sd driver.
204 */
7e4d6c38 205 if (us->fflags & US_FL_FIX_CAPACITY)
1da177e4 206 sdev->fix_capacity = 1;
86dbde9c 207
f0183a33
FB
208 /*
209 * A few disks have two indistinguishable version, one of
61bf54b7 210 * which reports the correct capacity and the other does not.
f0183a33
FB
211 * The sd driver has to guess which is the case.
212 */
7e4d6c38 213 if (us->fflags & US_FL_CAPACITY_HEURISTICS)
61bf54b7
ON
214 sdev->guess_capacity = 1;
215
00914025
HG
216 /* Some devices cannot handle READ_CAPACITY_16 */
217 if (us->fflags & US_FL_NO_READ_CAPACITY_16)
218 sdev->no_read_capacity_16 = 1;
219
6a0bdffa
AS
220 /*
221 * Many devices do not respond properly to READ_CAPACITY_16.
222 * Tell the SCSI layer to try READ_CAPACITY_10 first.
32c37fc3
ON
223 * However some USB 3.0 drive enclosures return capacity
224 * modulo 2TB. Those must use READ_CAPACITY_16
6a0bdffa 225 */
32c37fc3
ON
226 if (!(us->fflags & US_FL_NEEDS_CAP16))
227 sdev->try_rc_10_first = 1;
6a0bdffa 228
c5603d2f
IZ
229 /*
230 * assume SPC3 or latter devices support sense size > 18
231 * unless US_FL_BAD_SENSE quirk is specified.
232 */
233 if (sdev->scsi_level > SCSI_SPC_2 &&
234 !(us->fflags & US_FL_BAD_SENSE))
1537e0ad
BE
235 us->fflags |= US_FL_SANE_SENSE;
236
f0183a33
FB
237 /*
238 * USB-IDE bridges tend to report SK = 0x04 (Non-recoverable
86dbde9c
MD
239 * Hardware Error) when any low-level error occurs,
240 * recoverable or not. Setting this flag tells the SCSI
241 * midlayer to retry such commands, which frequently will
242 * succeed and fix the error. The worst this can lead to
f0183a33
FB
243 * is an occasional series of retries that will all fail.
244 */
86dbde9c
MD
245 sdev->retry_hwerror = 1;
246
f0183a33
FB
247 /*
248 * USB disks should allow restart. Some drives spin down
249 * automatically, requiring a START-STOP UNIT command.
250 */
f09e495d
MCC
251 sdev->allow_restart = 1;
252
f0183a33
FB
253 /*
254 * Some USB cardreaders have trouble reading an sdcard's last
23c3e290 255 * sector in a larger then 1 sector read, since the performance
f0183a33
FB
256 * impact is negligible we set this flag for all USB disks
257 */
23c3e290 258 sdev->last_sector_bug = 1;
25ff1c31 259
f0183a33
FB
260 /*
261 * Enable last-sector hacks for single-target devices using
25ff1c31 262 * the Bulk-only transport, unless we already know the
f0183a33
FB
263 * capacity will be decremented or is correct.
264 */
25ff1c31
AS
265 if (!(us->fflags & (US_FL_FIX_CAPACITY | US_FL_CAPACITY_OK |
266 US_FL_SCM_MULT_TARG)) &&
8fa7fd74 267 us->protocol == USB_PR_BULK)
25ff1c31 268 us->use_last_sector_hacks = 1;
eaa05dfc
NJ
269
270 /* Check if write cache default on flag is set or not */
271 if (us->fflags & US_FL_WRITE_CACHE)
272 sdev->wce_default_on = 1;
273
b14bf2d0
AS
274 /* A few buggy USB-ATA bridges don't understand FUA */
275 if (us->fflags & US_FL_BROKEN_FUA)
276 sdev->broken_fua = 1;
277
050bc4e8
ON
278 /* Some even totally fail to indicate a cache */
279 if (us->fflags & US_FL_ALWAYS_SYNC) {
280 /* don't read caching information */
281 sdev->skip_ms_page_8 = 1;
282 sdev->skip_ms_page_3f = 1;
283 /* assume sync is needed */
284 sdev->wce_default_on = 1;
285 }
1da177e4
LT
286 } else {
287
f0183a33 288 /*
19246d27 289 * Non-disk-type devices don't need to ignore any pages
1da177e4 290 * or to force 192-byte transfer lengths for MODE SENSE.
f0183a33
FB
291 * But they do need to use MODE SENSE(10).
292 */
1da177e4 293 sdev->use_10_for_ms = 1;
ae38c78a
HG
294
295 /* Some (fake) usb cdrom devices don't like READ_DISC_INFO */
296 if (us->fflags & US_FL_NO_READ_DISC_INFO)
297 sdev->no_read_disc_info = 1;
1da177e4
LT
298 }
299
f0183a33
FB
300 /*
301 * The CB and CBI transports have no way to pass LUN values
f3f49065
AS
302 * other than the bits in the second byte of a CDB. But those
303 * bits don't get set to the LUN value if the device reports
304 * scsi_level == 0 (UNKNOWN). Hence such devices must necessarily
305 * be single-LUN.
306 */
8fa7fd74 307 if ((us->protocol == USB_PR_CB || us->protocol == USB_PR_CBI) &&
f3f49065
AS
308 sdev->scsi_level == SCSI_UNKNOWN)
309 us->max_lun = 0;
310
f0183a33
FB
311 /*
312 * Some devices choke when they receive a PREVENT-ALLOW MEDIUM
313 * REMOVAL command, so suppress those commands.
314 */
7e4d6c38 315 if (us->fflags & US_FL_NOT_LOCKABLE)
1da177e4
LT
316 sdev->lockable = 0;
317
f0183a33
FB
318 /*
319 * this is to satisfy the compiler, tho I don't think the
320 * return code is ever checked anywhere.
321 */
1da177e4
LT
322 return 0;
323}
324
09b6b51b
AS
325static int target_alloc(struct scsi_target *starget)
326{
af74d2da
AS
327 struct us_data *us = host_to_us(dev_to_shost(starget->dev.parent));
328
09b6b51b
AS
329 /*
330 * Some USB drives don't support REPORT LUNS, even though they
331 * report a SCSI revision level above 2. Tell the SCSI layer
332 * not to issue that command; it will perform a normal sequential
333 * scan instead.
334 */
335 starget->no_report_luns = 1;
af74d2da
AS
336
337 /*
338 * The UFI spec treats the Peripheral Qualifier bits in an
339 * INQUIRY result as reserved and requires devices to set them
340 * to 0. However the SCSI spec requires these bits to be set
341 * to 3 to indicate when a LUN is not present.
342 *
343 * Let the scanning code know if this target merely sets
344 * Peripheral Device Type to 0x1f to indicate no LUN.
345 */
346 if (us->subclass == USB_SC_UFI)
347 starget->pdt_1f_for_no_lun = 1;
348
09b6b51b
AS
349 return 0;
350}
351
1da177e4
LT
352/* queue a command */
353/* This is always called with scsi_lock(host) held */
af049dfd 354static int queuecommand_lck(struct scsi_cmnd *srb)
1da177e4 355{
af049dfd 356 void (*done)(struct scsi_cmnd *) = scsi_done;
1da177e4
LT
357 struct us_data *us = host_to_us(srb->device->host);
358
1da177e4
LT
359 /* check for state-transition errors */
360 if (us->srb != NULL) {
3055c92c
MM
361 dev_err(&us->pusb_intf->dev,
362 "Error in %s: us->srb = %p\n", __func__, us->srb);
1da177e4
LT
363 return SCSI_MLQUEUE_HOST_BUSY;
364 }
365
366 /* fail the command if we are disconnecting */
7e4d6c38 367 if (test_bit(US_FLIDX_DISCONNECTING, &us->dflags)) {
191648d0 368 usb_stor_dbg(us, "Fail command during disconnect\n");
1da177e4
LT
369 srb->result = DID_NO_CONNECT << 16;
370 done(srb);
371 return 0;
f45681f9
TA
372 }
373
374 if ((us->fflags & US_FL_NO_ATA_1X) &&
375 (srb->cmnd[0] == ATA_12 || srb->cmnd[0] == ATA_16)) {
376 memcpy(srb->sense_buffer, usb_stor_sense_invalidCDB,
377 sizeof(usb_stor_sense_invalidCDB));
378 srb->result = SAM_STAT_CHECK_CONDITION;
379 done(srb);
380 return 0;
1da177e4
LT
381 }
382
383 /* enqueue the command and wake up the control thread */
1da177e4 384 us->srb = srb;
7119e3c3 385 complete(&us->cmnd_ready);
1da177e4
LT
386
387 return 0;
388}
389
f281233d
JG
390static DEF_SCSI_QCMD(queuecommand)
391
1da177e4
LT
392/***********************************************************************
393 * Error handling functions
394 ***********************************************************************/
395
396/* Command timeout and abort */
a398d5ea 397static int command_abort_matching(struct us_data *us, struct scsi_cmnd *srb_match)
1da177e4 398{
f0183a33
FB
399 /*
400 * us->srb together with the TIMED_OUT, RESETTING, and ABORTING
401 * bits are protected by the host lock.
402 */
226173ed
MD
403 scsi_lock(us_to_host(us));
404
a398d5ea
MB
405 /* is there any active pending command to abort ? */
406 if (!us->srb) {
226173ed 407 scsi_unlock(us_to_host(us));
191648d0 408 usb_stor_dbg(us, "-- nothing to abort\n");
a398d5ea
MB
409 return SUCCESS;
410 }
411
412 /* Does the command match the passed srb if any ? */
413 if (srb_match && us->srb != srb_match) {
414 scsi_unlock(us_to_host(us));
415 usb_stor_dbg(us, "-- pending command mismatch\n");
1da177e4
LT
416 return FAILED;
417 }
418
f0183a33
FB
419 /*
420 * Set the TIMED_OUT bit. Also set the ABORTING bit, but only if
1da177e4 421 * a device reset isn't already in progress (to avoid interfering
226173ed
MD
422 * with the reset). Note that we must retain the host lock while
423 * calling usb_stor_stop_transport(); otherwise it might interfere
f0183a33
FB
424 * with an auto-reset that begins as soon as we release the lock.
425 */
7e4d6c38
AS
426 set_bit(US_FLIDX_TIMED_OUT, &us->dflags);
427 if (!test_bit(US_FLIDX_RESETTING, &us->dflags)) {
428 set_bit(US_FLIDX_ABORTING, &us->dflags);
1da177e4
LT
429 usb_stor_stop_transport(us);
430 }
226173ed 431 scsi_unlock(us_to_host(us));
1da177e4
LT
432
433 /* Wait for the aborted command to finish */
434 wait_for_completion(&us->notify);
1da177e4
LT
435 return SUCCESS;
436}
437
a398d5ea
MB
438static int command_abort(struct scsi_cmnd *srb)
439{
440 struct us_data *us = host_to_us(srb->device->host);
441
442 usb_stor_dbg(us, "%s called\n", __func__);
443 return command_abort_matching(us, srb);
444}
445
f0183a33
FB
446/*
447 * This invokes the transport reset mechanism to reset the state of the
448 * device
449 */
1da177e4
LT
450static int device_reset(struct scsi_cmnd *srb)
451{
452 struct us_data *us = host_to_us(srb->device->host);
453 int result;
454
191648d0 455 usb_stor_dbg(us, "%s called\n", __func__);
1da177e4 456
a398d5ea
MB
457 /* abort any pending command before reset */
458 command_abort_matching(us, NULL);
459
d526875d
GKH
460 /* lock the device pointers and do the reset */
461 mutex_lock(&(us->dev_mutex));
462 result = us->transport_reset(us);
463 mutex_unlock(&us->dev_mutex);
1da177e4 464
4d07ef76 465 return result < 0 ? FAILED : SUCCESS;
1da177e4
LT
466}
467
4d07ef76 468/* Simulate a SCSI bus reset by resetting the device's USB port. */
1da177e4
LT
469static int bus_reset(struct scsi_cmnd *srb)
470{
471 struct us_data *us = host_to_us(srb->device->host);
4d07ef76 472 int result;
1da177e4 473
191648d0
JP
474 usb_stor_dbg(us, "%s called\n", __func__);
475
4d07ef76 476 result = usb_stor_port_reset(us);
1da177e4
LT
477 return result < 0 ? FAILED : SUCCESS;
478}
479
f0183a33
FB
480/*
481 * Report a driver-initiated device reset to the SCSI layer.
1da177e4 482 * Calling this for a SCSI-initiated reset is unnecessary but harmless.
f0183a33
FB
483 * The caller must own the SCSI host lock.
484 */
1da177e4
LT
485void usb_stor_report_device_reset(struct us_data *us)
486{
487 int i;
488 struct Scsi_Host *host = us_to_host(us);
489
490 scsi_report_device_reset(host, 0, 0);
7e4d6c38 491 if (us->fflags & US_FL_SCM_MULT_TARG) {
1da177e4
LT
492 for (i = 1; i < host->max_id; ++i)
493 scsi_report_device_reset(host, 0, i);
494 }
495}
496
f0183a33
FB
497/*
498 * Report a driver-initiated bus reset to the SCSI layer.
4d07ef76 499 * Calling this for a SCSI-initiated reset is unnecessary but harmless.
f0183a33
FB
500 * The caller must not own the SCSI host lock.
501 */
4d07ef76
MD
502void usb_stor_report_bus_reset(struct us_data *us)
503{
f07600cf
AS
504 struct Scsi_Host *host = us_to_host(us);
505
506 scsi_lock(host);
507 scsi_report_bus_reset(host, 0);
508 scsi_unlock(host);
4d07ef76
MD
509}
510
1da177e4
LT
511/***********************************************************************
512 * /proc/scsi/ functions
513 ***********************************************************************/
514
09dae7fc
AV
515static int write_info(struct Scsi_Host *host, char *buffer, int length)
516{
517 /* if someone is sending us data, just throw it away */
518 return length;
519}
520
09dae7fc 521static int show_info (struct seq_file *m, struct Scsi_Host *host)
1da177e4
LT
522{
523 struct us_data *us = host_to_us(host);
1da177e4
LT
524 const char *string;
525
1da177e4 526 /* print the controller name */
7d203a9e 527 seq_printf(m, " Host scsi%d: usb-storage\n", host->host_no);
1da177e4
LT
528
529 /* print product, vendor, and serial number strings */
530 if (us->pusb_dev->manufacturer)
531 string = us->pusb_dev->manufacturer;
532 else if (us->unusual_dev->vendorName)
533 string = us->unusual_dev->vendorName;
534 else
535 string = "Unknown";
7d203a9e 536 seq_printf(m, " Vendor: %s\n", string);
1da177e4
LT
537 if (us->pusb_dev->product)
538 string = us->pusb_dev->product;
539 else if (us->unusual_dev->productName)
540 string = us->unusual_dev->productName;
541 else
542 string = "Unknown";
7d203a9e 543 seq_printf(m, " Product: %s\n", string);
1da177e4
LT
544 if (us->pusb_dev->serial)
545 string = us->pusb_dev->serial;
546 else
547 string = "None";
7d203a9e 548 seq_printf(m, "Serial Number: %s\n", string);
1da177e4
LT
549
550 /* show the protocol and transport */
7d203a9e
JP
551 seq_printf(m, " Protocol: %s\n", us->protocol_name);
552 seq_printf(m, " Transport: %s\n", us->transport_name);
1da177e4
LT
553
554 /* show the device flags */
7d203a9e 555 seq_printf(m, " Quirks:");
1da177e4
LT
556
557#define US_FLAG(name, value) \
09dae7fc 558 if (us->fflags & value) seq_printf(m, " " #name);
1da177e4
LT
559US_DO_ALL_FLAGS
560#undef US_FLAG
09dae7fc
AV
561 seq_putc(m, '\n');
562 return 0;
1da177e4
LT
563}
564
565/***********************************************************************
566 * Sysfs interface
567 ***********************************************************************/
568
569/* Output routine for the sysfs max_sectors file */
f2e0ae93 570static ssize_t max_sectors_show(struct device *dev, struct device_attribute *attr, char *buf)
1da177e4
LT
571{
572 struct scsi_device *sdev = to_scsi_device(dev);
573
49d6271b 574 return sprintf(buf, "%u\n", queue_max_hw_sectors(sdev->request_queue));
1da177e4
LT
575}
576
577/* Input routine for the sysfs max_sectors file */
f2e0ae93 578static ssize_t max_sectors_store(struct device *dev, struct device_attribute *attr, const char *buf,
1da177e4
LT
579 size_t count)
580{
581 struct scsi_device *sdev = to_scsi_device(dev);
70a79493 582 struct queue_limits lim;
1da177e4 583 unsigned short ms;
70a79493 584 int ret;
1da177e4 585
70a79493
CH
586 if (sscanf(buf, "%hu", &ms) <= 0)
587 return -EINVAL;
588
589 blk_mq_freeze_queue(sdev->request_queue);
590 lim = queue_limits_start_update(sdev->request_queue);
591 lim.max_hw_sectors = ms;
592 ret = queue_limits_commit_update(sdev->request_queue, &lim);
593 blk_mq_unfreeze_queue(sdev->request_queue);
594
595 if (ret)
596 return ret;
597 return count;
1da177e4 598}
f2e0ae93 599static DEVICE_ATTR_RW(max_sectors);
1da177e4 600
01e570fe
BVA
601static struct attribute *usb_sdev_attrs[] = {
602 &dev_attr_max_sectors.attr,
f2e0ae93
GKH
603 NULL,
604};
1da177e4 605
01e570fe
BVA
606ATTRIBUTE_GROUPS(usb_sdev);
607
1da177e4
LT
608/*
609 * this defines our host template, with which we'll allocate hosts
610 */
611
aa519be3 612static const struct scsi_host_template usb_stor_host_template = {
1da177e4
LT
613 /* basic userland interface stuff */
614 .name = "usb-storage",
615 .proc_name = "usb-storage",
09dae7fc
AV
616 .show_info = show_info,
617 .write_info = write_info,
1da177e4
LT
618 .info = host_info,
619
620 /* command interface -- queued only */
621 .queuecommand = queuecommand,
622
623 /* error and abort handlers */
624 .eh_abort_handler = command_abort,
625 .eh_device_reset_handler = device_reset,
626 .eh_bus_reset_handler = bus_reset,
627
628 /* queue commands only, only one command per LUN */
629 .can_queue = 1,
1da177e4
LT
630
631 /* unknown initiator id */
632 .this_id = -1,
633
634 .slave_alloc = slave_alloc,
70a79493 635 .device_configure = device_configure,
09b6b51b 636 .target_alloc = target_alloc,
1da177e4
LT
637
638 /* lots of sg segments can be handled */
65e8617f 639 .sg_tablesize = SG_MAX_SEGMENTS,
1da177e4 640
5b7dfbef
CH
641 /*
642 * Some host controllers may have alignment requirements.
643 * We'll play it safe by requiring 512-byte alignment always.
644 */
645 .dma_alignment = 511,
779b457f
FB
646
647 /*
648 * Limit the total size of a transfer to 120 KB.
649 *
650 * Some devices are known to choke with anything larger. It seems like
651 * the problem stems from the fact that original IDE controllers had
652 * only an 8-bit register to hold the number of sectors in one transfer
653 * and even those couldn't handle a full 256 sectors.
654 *
655 * Because we want to make sure we interoperate with as many devices as
656 * possible, we will maintain a 240 sector transfer size limit for USB
657 * Mass Storage devices.
658 *
659 * Tests show that other operating have similar limits with Microsoft
660 * Windows 7 limiting transfers to 128 sectors for both USB2 and USB3
661 * and Apple Mac OS X 10.11 limiting transfers to 256 sectors for USB2
662 * and 2048 for USB3 devices.
663 */
1da177e4
LT
664 .max_sectors = 240,
665
1da177e4
LT
666 /* emulated HBA */
667 .emulated = 1,
668
669 /* we do our own delay after a device or bus reset */
670 .skip_settle_delay = 1,
671
672 /* sysfs device attributes */
01e570fe 673 .sdev_groups = usb_sdev_groups,
1da177e4
LT
674
675 /* module management */
676 .module = THIS_MODULE
677};
678
aa519be3
AM
679void usb_stor_host_template_init(struct scsi_host_template *sht,
680 const char *name, struct module *owner)
681{
682 *sht = usb_stor_host_template;
683 sht->name = name;
684 sht->proc_name = name;
685 sht->module = owner;
686}
687EXPORT_SYMBOL_GPL(usb_stor_host_template_init);
688
1da177e4
LT
689/* To Report "Illegal Request: Invalid Field in CDB */
690unsigned char usb_stor_sense_invalidCDB[18] = {
691 [0] = 0x70, /* current error */
692 [2] = ILLEGAL_REQUEST, /* Illegal Request = 0x05 */
693 [7] = 0x0a, /* additional length */
694 [12] = 0x24 /* Invalid Field in CDB */
695};
e6e244b6 696EXPORT_SYMBOL_GPL(usb_stor_sense_invalidCDB);