PeterNSteinmetz wrote on 2009-01-28: > I understand this chip has had issues in the past under Linux kernels, and I > see in the > dmesg that a workaround is being used. The comments in the source (sdp2.c) > for this > workaround note, however, that this may have been only necessary for their > older > products, and the lookup is using a wildcard for the model_id. > > So is it possible, with the latest firmware upgrades, that this workaround > itself is > causing the timeout on login?
No, it doesn't. This particular workaround only influences behaviour of the SCSI layer which only kicks in after a successful login. > (the workaround seems to be chopping the length in the request to conform to > some > older windows bug) More precisely, it tells the Linux SCSI core how to set the ALLOCATION LENGTH parameter in the SCSI INQUIRY command. (See the SPC spec, section "Commands for all device types", "INQUIRY command", if you are interested in the details.) IIRC this was of more importance a few years ago in earlier revisions of the SCSI core. Nowadays the SCSI core sets it to 36 bytes in the first attempt of INQUIRY anyway. If the 36 byte INQUIRY is successful, the SCSI core will run a retry with a larger ALLOCATION LENGTH unless the device was blacklisted (because it returns wrong results with larger lengths or crashes or whatever). The reference to Windows in sbp2.c's comment basically means that popular Windows flavors apparently issue only 36 byte INQUIRYs, hence firmware authors don't easily notice if they made a mistake in their INQUIRY handler. So, the SBP2_WORKAROUND_INQUIRY_36 merely influences behaviour _after_ successful login and _after_ successful first INQUIRY SCSI transaction. Furthermore, an ALLOCATION LENGTH bigger than 36 bytes, if it is supported by the device, returns information that is mostly uninteresting for FireWire devices, except for marginally interesting claims of conformance to SCSI specifications in addition to the conformance claims made in the first 8 bytes of the INQUIRY response. > And if this is true, is there a way to turn off the workaround? So, you don't need to turn the hard-wired workaround off; yet you can do so easily: # echo 0x100 > /sys/module/sbp2/parameters/workarounds This, like any other echo command into sbp2's workaround parameter file, becomes effective at the next time a device is plugged in. # modinfo sbp2 has a brief overview of available workarounds flags. Note that usage of the workarounds module parameter is only meant as a measure of last resort, hence we don't provide actual documentation of it besides the sbp2.c source. > Or perhaps modify this module to identify the devices for which the > workaround is > really needed? This is impossible because we don't know which Initio firmwares are affected and whether they have any identifiers that differ from unaffected variants. -- External ieee1394 drive not recognized 2.6.27-5 https://bugs.launchpad.net/bugs/279342 You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs