mpt_sas should not require targets to send SEP messages
Today, LEDs are driven for disks behind an instance of a mpt_sas controller by one of two methods:
- Driven by a SCSI Enclosure Services Processor
- Driven by a topology map and ioctls to the mpt_sas controller
When dealing with number one, the ses driver takes care of all of the lift. However, when dealing with path two, mpt_sas refused to send commands to enclosures whose disks are not present.
The reason the mpt_sas driver did this is a bit historical. Before 7751, the mpt_sas driver did not enumerate the logical enclosures that were present on the device. Therefore, to make sure that we were sending a command to something that actually was attached, we required that the mptsas_target_t exist for the given bay.
Now that we enumerate enclosures, this is unnecessary. First, we know the width of the enclosure in question so we can know which bays are valid on the enclosure. Secondly, because of the work done in 7751, we don't need to be checking the physical target's flags. It should be sufficient to rely on the enclosure type which we weren't checking back then because we didn't know about it.
Notably, this doesn't actually change any of the exposed ioctl interface. Just how we go through and interpret it inside of the driver. It also doesn't change how we send commands to the driver, which is still through the same enclosure/slot mappings.
One important thing to note about this is that it may still require backplane support for this to occur. Some CPLDs do not flash their LEDs if the drive is not present. Unfortunately, there is nothing that we can do to change that with this.
To test this, we used this on systems that provided SES and those systems that did not and were set up with topo maps. We verified that we could toggled the LEDs through fmtopo in both cases. Unfortunately we haven't been able to confirm that this functions properly on some of the MPI2 gear. However, as it was already getting some of the basic enclosure information, we believe it should be okay at this time. There will be some additional testing done on this before it gets further out in the field.