Hi all! >At the very last this change should apply only when the controller is in >RAID mode.
But what´s the sense in simply scrubbing all mode pages on driver initialisation? >In this case, the driver should also probably ignore the >modes set from the upper layer. Does this have an impact to the scsipi layer, e.g. would the SCBs then be different? >So the controller does not present us any such page for the logical target >device it provides? Not to my knowledge... >If the firmware vendor did *not* get it wrong, then there is a separate >page which holds these settings for the "logical" disk, and when we are >operating in RAID mode we need to use that one instead of ever accessing >the 16 pages for the physical disks. Do you have enough documentation >to say if it actually works this way? Mhhh... you could also have one RAID set containing 2 disks, and 2 other disks not being part of any RAID set. So the driver needs to decide weather a target is part of an array or not. Unfortunately I do not have any kind of documentation. There are other drivers (e.g. Linux and FreeBSD) which serve as a reference. I´m currently making the driver capable of reading RAID-settings with "mpt_mpilib.h" being the only documentation I have ;) As a start, removing the said code isn´t the best solution but stops the driver making things worse... I tested this on 2 different servers (FSC and IBM) sucessfully. While SCSI controllers are fine with that, SAS controllers still do not work optimal (120MB reading, only 1 disk is being accessed; 25MB write speed). There are 2 issues I see: 1)Write caching is not enabled by default in contrast to SCSI controllers. 2)Mode changing is ignored; tagged queueing won´t be enabled: if (!mpt->is_scsi) { /* * SCSI transport settings don't make any sense for * Fibre Channel; silently ignore the request. */ return; } => 1) I have no idea how to enable write caching. Just changing the RAID page and sending it back to the controller doesn´t work: mpt0: DEBUG: Write Cache: 0 mpt0: DEBUG: Applying write caching hack... mpt0: DEBUG: Sending setting to adapter... mpt0: page type 0x8 not changeable mpt0: DEBUG: ERROR sending setting to adapter... The Linux driver enables write caching by default. => 2) I made some modifications to mpt_set_xfer_mode() so that -for FC, settings are completely ignored. -for SAS, TQ and disconnecting are configured but no parallel port settings. -for SCSI the behaving is still the same sd0 at scsibus0 target 0 lun 0: <LSILOGIC, Logical Volume, 3000> disk fixed sd0: 68664 MB, 68664 cyl, 16 head, 128 sec, 512 bytes/sect x 140623872 sectors mpt0: DEBUG: mpt_set_xfer_mode() called mpt0: DEBUG: mpt_set_xfer_mode(): Requested Target: 0 mpt0: Tagged queueing is requested... mpt0: DEBUG: mpt_set_xfer_mode(): PERIPH_CAP_TQING is set TRUE sd0: async, 8-bit transfers, tagged queueing This makes nothing faster but leads to ugly messages on writing: sd0(mpt0:0:0:0): adapter resource shortage sd0(mpt0:0:0:0): adapter resource shortage sd0(mpt0:0:0:0): adapter resource shortage sd0(mpt0:0:0:0): adapter resource shortage sd0(mpt0:0:0:0): adapter resource shortage sd0(mpt0:0:0:0): adapter resource shortage Regards, Stephan