[SCSI] megaraid_{mm,mbox}: 64-bit DMA capability checker
[pandora-kernel.git] / Documentation / scsi / ChangeLog.megaraid
1 Release Date    : Fri May 19 09:31:45 EST 2006 - Seokmann Ju <sju@lsil.com>
2 Current Version : 2.20.4.9 (scsi module), 2.20.2.6 (cmm module)
3 Older Version   : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
4
5 1.      Fixed a bug in megaraid_init_mbox().
6         Customer reported "garbage in file on x86_64 platform".
7         Root Cause: the driver registered controllers as 64-bit DMA capable
8         for those which are not support it.
9         Fix: Made change in the function inserting identification machanism
10         identifying 64-bit DMA capable controllers.
11
12         > -----Original Message-----
13         > From: Vasily Averin [mailto:vvs@sw.ru]
14         > Sent: Thursday, May 04, 2006 2:49 PM
15         > To: linux-scsi@vger.kernel.org; Kolli, Neela; Mukker, Atul;
16         > Ju, Seokmann; Bagalkote, Sreenivas;
17         > James.Bottomley@SteelEye.com; devel@openvz.org
18         > Subject: megaraid_mbox: garbage in file
19         >
20         > Hello all,
21         >
22         > I've investigated customers claim on the unstable work of
23         > their node and found a
24         > strange effect: reading from some files leads to the
25         >  "attempt to access beyond end of device" messages.
26         >
27         > I've checked filesystem, memory on the node, motherboard BIOS
28         > version, but it
29         > does not help and issue still has been reproduced by simple
30         > file reading.
31         >
32         > Reproducer is simple:
33         >
34         > echo 0xffffffff >/proc/sys/dev/scsi/logging_level ;
35         > cat /vz/private/101/root/etc/ld.so.cache >/tmp/ttt  ;
36         > echo 0 >/proc/sys/dev/scsi/logging
37         >
38         > It leads to the following messages in dmesg
39         >
40         > sd_init_command: disk=sda, block=871769260, count=26
41         > sda : block=871769260
42         > sda : reading 26/26 512 byte blocks.
43         > scsi_add_timer: scmd: f79ed980, time: 7500, (c02b1420)
44         > sd 0:1:0:0: send 0xf79ed980                  sd 0:1:0:0:
45         >         command: Read (10): 28 00 33 f6 24 ac 00 00 1a 00
46         > buffer = 0xf7cfb540, bufflen = 13312, done = 0xc0366b40,
47         > queuecommand 0xc0344010
48         > leaving scsi_dispatch_cmnd()
49         > scsi_delete_timer: scmd: f79ed980, rtn: 1
50         > sd 0:1:0:0: done 0xf79ed980 SUCCESS        0 sd 0:1:0:0:
51         >         command: Read (10): 28 00 33 f6 24 ac 00 00 1a 00
52         > scsi host busy 1 failed 0
53         > sd 0:1:0:0: Notifying upper driver of completion (result 0)
54         > sd_rw_intr: sda: res=0x0
55         > 26 sectors total, 13312 bytes done.
56         > use_sg is 4
57         > attempt to access beyond end of device
58         > sda6: rw=0, want=1044134458, limit=951401367
59         > Buffer I/O error on device sda6, logical block 522067228
60         > attempt to access beyond end of device
61
62 Release Date    : Mon Apr 11 12:27:22 EST 2006 - Seokmann Ju <sju@lsil.com>
63 Current Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
64 Older Version   : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
65
66 1.      Fixed a bug in megaraid_reset_handler().
67         Customer reported "Unable to handle kernel NULL pointer dereference
68         at virtual address 00000000" when system goes to reset condition
69         for some reason. It happened randomly.
70         Root Cause: in the megaraid_reset_handler(), there is possibility not
71         returning pending packets in the pend_list if there are multiple
72         pending packets.
73         Fix: Made the change in the driver so that it will return all packets
74         in the pend_list.
75
76 2.      Added change request.
77         As found in the following URL, rmb() only didn't help the
78         problem. I had to increase the loop counter to 0xFFFFFF. (6 F's)
79         http://marc.theaimsgroup.com/?l=linux-scsi&m=110971060502497&w=2
80
81         I attached a patch for your reference, too.
82         Could you check and get this fix in your driver?
83
84         Best Regards,
85         Jun'ichi Nomura
86
87 Release Date    : Fri Nov 11 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
88 Current Version : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
89 Older Version   : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
90
91 1.      Sorted out PCI IDs to remove megaraid support overlaps.
92         Based on the patch from Daniel, sorted out PCI IDs along with
93         charactor node name change from 'megadev' to 'megadev_legacy' to avoid
94         conflict.
95         ---
96         Hopefully we'll be getting the build restriction zapped much sooner, 
97         but we should also be thinking about totally removing the hardware 
98         support overlap in the megaraid drivers.
99
100         This patch pencils in a date of Feb 06 for this, and performs some 
101         printk abuse in hope that existing legacy users might pick up on what's
102         going on.
103
104         Signed-off-by: Daniel Drake <dsd@gentoo.org>
105         ---
106
107 2.      Fixed a issue: megaraid always fails to reset handler.
108         ---
109         I found that the megaraid driver always fails to reset the
110         adapter with the following message:
111                 megaraid: resetting the host...
112                 megaraid mbox: reset sequence completed successfully
113                 megaraid: fast sync command timed out
114                 megaraid: reservation reset failed
115         when the "Cluster mode" of the adapter BIOS is enabled.
116         So, whenever the reset occurs, the adapter goes to
117         offline and just become unavailable.
118
119         Jun'ichi Nomura [mailto:jnomura@mtc.biglobe.ne.jp]
120         ---
121
122 Release Date    : Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
123 Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
124 Older Version   : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
125
126 1.      Added IOCTL backward compatibility.
127         Convert megaraid_mm driver to new compat_ioctl entry points.
128         I don't have easy access to hardware, so only compile tested.
129                 - Signed-off-by:Andi Kleen <ak@muc.de>
130
131 2.      megaraid_mbox fix: wrong order of arguments in memset()
132         That, BTW, shows why cross-builds are useful-the only indication of
133         problem had been a new warning showing up in sparse output on alpha
134         build (number of exceeding 256 got truncated).
135                 - Signed-off-by: Al Viro
136                 <viro@parcelfarce.linux.theplanet.co.uk>
137
138 3.      Convert pci_module_init to pci_register_driver
139         Convert from pci_module_init to pci_register_driver
140         (from:http://kerneljanitors.org/TODO)
141                 - Signed-off-by: Domen Puncer <domen@coderock.org>
142
143 4.      Use the pre defined DMA mask constants from dma-mapping.h
144         Use the DMA_{64,32}BIT_MASK constants from dma-mapping.h when calling
145         pci_set_dma_mask() or pci_set_consistend_dma_mask(). See
146         http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for more
147         details.
148                 Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
149                 Signed-off-by: Domen Puncer <domen@coderock.org>
150
151 5.      Remove SSID checking for Dobson, Lindsay, and Verde based products.
152         Checking the SSVID/SSID for controllers which have Dobson, Lindsay,
153         and Verde is unnecessary because device ID has been assigned by LSI
154         and it is unique value. So, all controllers with these IOPs have to be
155         supported by the driver regardless SSVID/SSID.
156
157 6.      Date Thu, 27 Jan 2005 04:31:09 +0100 
158         From Herbert Poetzl <> 
159         Subject RFC: assert_spin_locked() for 2.6 
160
161         Greetings!
162
163         overcautious programming will kill your kernel ;)
164         ever thought about checking a spin_lock or even
165         asserting that it must be held (maybe just for
166         spinlock debugging?) ...
167
168         there are several checks present in the kernel
169         where somebody does a variation on the following:
170
171           BUG_ON(!spin_is_locked(&some_lock));
172
173         so what's wrong about that? nothing, unless you
174         compile the code with CONFIG_DEBUG_SPINLOCK but 
175         without CONFIG_SMP ... in which case the BUG()
176         will kill your kernel ...
177
178         maybe it's not advised to make such assertions, 
179         but here is a solution which works for me ...
180         (compile tested for sh, x86_64 and x86, boot/run
181         tested for x86 only)
182
183         best,
184         Herbert
185
186                 - Herbert Poetzl <herbert@13thfloor.at>, Thu, 27 Jan 2005
187
188 Release Date    : Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
189 Current Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
190 Older Version   : 2.20.4.4 (scsi module), 2.20.2.4 (cmm module)
191
192 1.      Modified name of two attributes in scsi_host_template.
193         On Wed, 2005-02-02 at 10:56 -0500, Ju, Seokmann wrote:
194         > +     .sdev_attrs                     = megaraid_device_attrs,
195         > +     .shost_attrs                    = megaraid_class_device_attrs,
196
197         These are, perhaps, slightly confusing names.
198         The terms device and class_device have well defined meanings in the
199         generic device model, neither of which is what you mean here.
200         Why not simply megaraid_sdev_attrs and megaraid_shost_attrs?
201
202         Other than this, it looks fine to me too.
203
204 Release Date    : Thu Jan 27 00:01:03 EST 2005 - Atul Mukker <atulm@lsil.com>
205 Current Version : 2.20.4.4 (scsi module), 2.20.2.5 (cmm module)
206 Older Version   : 2.20.4.3 (scsi module), 2.20.2.4 (cmm module)
207
208 1.      Bump up the version of scsi module due to its conflict.
209
210 Release Date    : Thu Jan 21 00:01:03 EST 2005 - Atul Mukker <atulm@lsil.com>
211 Current Version : 2.20.4.3 (scsi module), 2.20.2.5 (cmm module)
212 Older Version   : 2.20.4.2 (scsi module), 2.20.2.4 (cmm module)
213
214 1.      Remove driver ioctl for logical drive to scsi address translation and
215         replace with the sysfs attribute. To remove drives and change
216         capacity, application shall now use the device attribute to get the
217         logical drive number for a scsi device. For adding newly created
218         logical drives, class device attribute would be required to uniquely
219         identify each controller.
220                 - Atul Mukker <atulm@lsil.com>
221
222         "James, I've been thinking about this a little more, and you may be on
223         to something here. Let each driver add files as such:"
224
225                 - Matt Domsch <Matt_Domsch@dell.com>, 12.15.2004
226                  linux-scsi mailing list
227
228
229         "Then, if you simply publish your LD number as an extra parameter of
230         the device, you can look through /sys to find it."
231
232                 - James Bottomley <James.Bottomley@SteelEye.com>, 01.03.2005
233                  linux-scsi mailing list
234
235
236         "I don't see why not ... it's your driver, you can publish whatever
237         extra information you need as scsi_device attributes; that was one of
238         the designs of the extensible attribute system."
239
240                 - James Bottomley <James.Bottomley@SteelEye.com>, 01.06.2005
241                  linux-scsi mailing list
242
243 2.      Add AMI megaraid support - Brian King <brking@charter.net>
244                 PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
245                 PCI_VENDOR_ID_AMI, PCI_SUBSYS_ID_PERC3_DC,
246
247 3.      Make some code static - Adrian Bunk <bunk@stusta.de>
248         Date:   Mon, 15 Nov 2004 03:14:57 +0100
249
250         The patch below makes some needlessly global code static.
251         -wait_queue_head_t wait_q;
252         +static wait_queue_head_t wait_q;
253
254         Signed-off-by: Adrian Bunk <bunk@stusta.de>
255
256 4.      Added NEC ROMB support - NEC MegaRAID PCI Express ROMB controller
257                 PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_MEGARAID_NEC_ROMB_2E,
258                 PCI_SUBSYS_ID_NEC, PCI_SUBSYS_ID_MEGARAID_NEC_ROMB_2E,
259
260 5.      Fixed Tape drive issue : For any Direct CDB command to physical device
261         including tape, timeout value set by driver was 10 minutes. With this 
262         value, most of command will return within timeout. However, for those
263         command like ERASE or FORMAT, it takes more than an hour depends on
264         capacity of the device and the command could be terminated before it 
265         completes.
266         To address this issue, the 'timeout' field in the DCDB command will 
267         have NO TIMEOUT (i.e., 4) value as its timeout on DCDB command.
268
269
270
271 Release Date    : Thu Dec  9 19:10:23 EST 2004
272         - Sreenivas Bagalkote <sreenib@lsil.com>
273
274 Current Version : 2.20.4.2 (scsi module), 2.20.2.4 (cmm module)
275 Older Version   : 2.20.4.1 (scsi module), 2.20.2.3 (cmm module)
276
277 i.      Introduced driver ioctl that returns scsi address for a given ld.
278         
279         "Why can't the existing sysfs interfaces be used to do this?"
280                 - Brian King (brking@us.ibm.com)
281         
282         "I've looked into solving this another way, but I cannot see how
283         to get this driver-private mapping of logical drive number-> HCTL
284         without putting code something like this into the driver."
285
286         "...and by providing a mapping a function to userspace, the driver
287         is free to change its mapping algorithm in the future if necessary .."
288                 - Matt Domsch (Matt_Domsch@dell.com)
289
290 Release Date    : Thu Dec  9 19:02:14 EST 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
291
292 Current Version : 2.20.4.1 (scsi module), 2.20.2.3 (cmm module)
293 Older Version   : 2.20.4.1 (scsi module), 2.20.2.2 (cmm module)
294
295 i.      Fix a bug in kioc's dma buffer deallocation
296
297 Release Date    : Thu Nov  4 18:24:56 EST 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
298
299 Current Version : 2.20.4.1 (scsi module), 2.20.2.2 (cmm module)
300 Older Version   : 2.20.4.0 (scsi module), 2.20.2.1 (cmm module)
301
302 i.      Handle IOCTL cmd timeouts more properly.
303
304 ii.     pci_dma_sync_{sg,single}_for_cpu was introduced into megaraid_mbox
305         incorrectly (instead of _for_device). Changed to appropriate 
306         pci_dma_sync_{sg,single}_for_device.
307
308 Release Date    : Wed Oct 06 11:15:29 EDT 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
309 Current Version : 2.20.4.0 (scsi module), 2.20.2.1 (cmm module)
310 Older Version   : 2.20.4.0 (scsi module), 2.20.2.0 (cmm module)
311
312 i.      Remove CONFIG_COMPAT around register_ioctl32_conversion
313
314 Release Date    : Mon Sep 27 22:15:07 EDT 2004 - Atul Mukker <atulm@lsil.com>
315 Current Version : 2.20.4.0 (scsi module), 2.20.2.0 (cmm module)
316 Older Version   : 2.20.3.1 (scsi module), 2.20.2.0 (cmm module)
317
318 i.      Fix data corruption. Because of a typo in the driver, the IO packets
319         were wrongly shared by the ioctl path. This causes a whole IO command
320         to be replaced by an incoming ioctl command.
321
322 Release Date    : Tue Aug 24 09:43:35 EDT 2004 - Atul Mukker <atulm@lsil.com>
323 Current Version : 2.20.3.1 (scsi module), 2.20.2.0 (cmm module)
324 Older Version   : 2.20.3.0 (scsi module), 2.20.2.0 (cmm module)
325
326 i.      Function reordering so that inline functions are defined before they
327         are actually used. It is now mandatory for GCC 3.4.1 (current stable)
328
329         Declare some heavy-weight functions to be non-inlined,
330         megaraid_mbox_build_cmd, megaraid_mbox_runpendq,
331         megaraid_mbox_prepare_pthru, megaraid_mbox_prepare_epthru,
332         megaraid_busywait_mbox
333
334                 - Andrew Morton <akpm@osdl.org>, 08.19.2004
335                 linux-scsi mailing list
336
337         "Something else to clean up after inclusion: every instance of an
338         inline function is actually rendered as a full function call, because
339         the function is always used before it is defined.  Atul, please
340         re-arrange the code to eliminate the need for most (all) of the
341         function prototypes at the top of each file, and define (not just
342         declare with a prototype) each inline function before its first use"
343
344                 - Matt Domsch <Matt_Domsch@dell.com>, 07.27.2004
345                 linux-scsi mailing list
346
347
348 ii.     Display elapsed time (countdown) while waiting for FW to boot.
349
350 iii.    Module compilation reorder in Makefile so that unresolved symbols do
351         not occur when driver is compiled non-modular.
352
353                 Patrick J. LoPresti <patl@users.sourceforge.net>, 8.22.2004
354                 linux-scsi mailing list
355
356
357 Release Date    : Thu Aug 19 09:58:33 EDT 2004 - Atul Mukker <atulm@lsil.com>
358 Current Version : 2.20.3.0 (scsi module), 2.20.2.0 (cmm module)
359 Older Version   : 2.20.2.0 (scsi module), 2.20.1.0 (cmm module)
360
361 i.      When copying the mailbox packets, copy only first 14 bytes (for 32-bit
362         mailboxes) and only first 22 bytes (for 64-bit mailboxes). This is to
363         avoid getting the stale values for busy bit. We want to set the busy
364         bit just before issuing command to the FW.
365
366 ii.     In the reset handling, if the reseted command is not owned by the
367         driver, do not (wrongly) print information for the "attached" driver
368         packet.
369
370 iii.    Have extended wait when issuing command in synchronous mode. This is
371         required for the cases where the option ROM is disabled and there is
372         no BIOS to start the controller. The FW starts to boot after receiving
373         the first command from the driver. The current driver has 1 second
374         timeout for the synchronous commands, which is far less than what is
375         actually required. We now wait up to MBOX_RESET_TIME (180 seconds) for
376         FW boot process.
377
378 iv.     In megaraid_mbox_product_info, clear the mailbox contents completely
379         before preparing the command for inquiry3. This is to ensure that the
380         FW does not get junk values in the command.
381
382 v.      Do away with the redundant LSI_CONFIG_COMPAT redefinition for
383         CONFIG_COMPAT. Replace <asm/ioctl32.h> with <linux/ioctl32.h>
384
385                 - James Bottomley <James.Bottomley@SteelEye.com>, 08.17.2004
386                  linux-scsi mailing list
387
388 vi.     Add support for 64-bit applications. Current drivers assume only
389         32-bit applications, even on 64-bit platforms. Use the "data" and
390         "buffer" fields of the mimd_t structure, instead of embedded 32-bit
391         addresses in application mailbox and passthru structures.
392
393 vii.    Move the function declarations for the management module from
394         megaraid_mm.h to megaraid_mm.c
395
396                 - Andrew Morton <akpm@osdl.org>, 08.19.2004
397                 linux-scsi mailing list
398
399 viii.   Change default values for MEGARAID_NEWGEN, MEGARAID_MM, and
400         MEGARAID_MAILBOX to 'n' in Kconfig.megaraid
401
402                 - Andrew Morton <akpm@osdl.org>, 08.19.2004
403                 linux-scsi mailing list
404
405 ix.     replace udelay with msleep
406
407 x.      Typos corrected in comments and whitespace adjustments, explicit
408         grouping of expressions.
409
410
411 Release Date    : Fri Jul 23 15:22:07 EDT 2004 - Atul Mukker <atulm@lsil.com>
412 Current Version : 2.20.2.0 (scsi module), 2.20.1.0 (cmm module)
413 Older Version   : 2.20.1.0 (scsi module), 2.20.0.0 (cmm module)
414
415 i.      Add PCI ids for Acer ROMB 2E solution
416
417 ii.     Add PCI ids for I4
418
419 iii.    Typo corrected for subsys id for megaraid sata 300-4x
420
421 iv.     Remove yield() while mailbox handshake in synchronous commands
422
423
424         "My other main gripe is things like this:
425
426         +       // wait for maximum 1 second for status to post
427         +       for (i = 0; i < 40000; i++) {
428         +               if (mbox->numstatus != 0xFF) break;
429         +               udelay(25); yield();
430         +       }
431
432         which litter the driver.  Use of yield() in drivers is deprecated."
433
434                 - James Bottomley <James.Bottomley@SteelEye.com>, 07.14.2004
435                  linux-scsi mailing list
436
437 v.      Remove redundant __megaraid_busywait_mbox routine
438
439 vi.     Fix bug in the managment module, which causes a system lockup when the
440         IO module is loaded and then unloaded, followed by executing any
441         management utility. The current version of management module does not
442         handle the adapter unregister properly.
443
444         Specifically, it still keeps a reference to the unregistered
445         controllers. To avoid this, the static array adapters has been
446         replaced by a dynamic list, which gets updated every time an adapter
447         is added or removed.
448
449         Also, during unregistration of the IO module, the resources are
450         now released in the exact reverse order of the allocation time
451         sequence.
452
453
454 Release Date    : Fri Jun 25 18:58:43 EDT 2004 - Atul Mukker <atulm@lsil.com>
455 Current Version : 2.20.1.0
456 Older Version   : megaraid 2.20.0.1
457
458 i.      Stale list pointer in adapter causes kernel panic when module
459         megaraid_mbox is unloaded
460
461
462 Release Date    : Thu Jun 24 20:37:11 EDT 2004 - Atul Mukker <atulm@lsil.com>
463 Current Version : 2.20.0.1
464 Older Version   : megaraid 2.20.0.00
465
466 i.      Modules are not 'y' by default, but depend on current definition of
467         SCSI & PCI.
468
469 ii.     Redundant structure mraid_driver_t removed.
470
471 iii.    Miscellaneous indentation and goto/label fixes.
472                 - Christoph Hellwig <hch@infradead.org>, 06.24.2004 linux-scsi
473
474 iv.     scsi_host_put(), do just before completing HBA shutdown.
475
476
477
478 Release Date    : Mon Jun 21 19:53:54 EDT 2004 - Atul Mukker <atulm@lsil.com>
479 Current Version : 2.20.0.0
480 Older Version   : megaraid 2.20.0.rc2 and 2.00.3
481
482 i.      Independent module to interact with userland applications and
483         multiplex command to low level RAID module(s).
484
485         "Shared code in a third module, a "library module", is an acceptable
486         solution. modprobe automatically loads dependent modules, so users
487         running "modprobe driver1" or "modprobe driver2" would automatically
488         load the shared library module."
489
490                 - Jeff Garzik <jgarzik@pobox.com> 02.25.2004 LKML
491
492         "As Jeff hinted, if your userspace<->driver API is consistent between
493         your new MPT-based RAID controllers and your existing megaraid driver,
494         then perhaps you need a single small helper module (lsiioctl or some
495         better name), loaded by both mptraid and megaraid automatically, which
496         handles registering the /dev/megaraid node dynamically. In this case,
497         both mptraid and megaraid would register with lsiioctl for each
498         adapter discovered, and lsiioctl would essentially be a switch,
499         redirecting userspace tool ioctls to the appropriate driver."
500
501                 - Matt Domsch <Matt_Domsch@dell.com> 02.25.2004 LKML
502
503 ii.     Remove C99 initializations from pci_device id.
504
505         "pci_id_table_g would be much more readable when not using C99
506         initializers.
507         PCI table doesn't change, there's lots of users that prefer the more
508         readable variant.  And it's really far less and much easier to grok
509         lines without C99 initializers."
510
511                 - Christoph Hellwig <hch@infradead.org>, 05.28.2004 linux-scsi
512
513 iii.    Many fixes as suggested by Christoph Hellwig <hch@infradead.org> on
514         linux-scsi, 05.28.2004
515
516 iv.     We now support up to 32 parallel ioctl commands instead of current 1.
517         There is a conscious effort to let memory allocation not fail for ioctl
518         commands.
519
520 v.      Do away with internal memory management. Use pci_pool_(create|alloc)
521         instead.
522
523 vi.     Kill tasklet when unloading the driver.
524
525 vii.    Do not use "host_lock', driver has fine-grain locks now to protect all
526         data structures.
527
528 viii.   Optimize the build scatter-gather list routine. The callers already
529         know the data transfer address and length.
530
531 ix.     Better implementation of error handling and recovery. Driver now
532         performs extended errors recovery for instances like scsi cable pull.
533
534 x.      Disassociate the management commands with an overlaid scsi command.
535         Driver now treats the management packets as special packets and has a
536         dedicated callback routine.