• Damien Le Moal's avatar
    scsi: mpi3mr: Fix ATA NCQ priority support · 90e6f089
    Damien Le Moal authored
    The function mpi3mr_qcmd() of the mpi3mr driver is able to indicate to
    the HBA if a read or write command directed at an ATA device should be
    translated to an NCQ read/write command with the high prioiryt bit set
    when the request uses the RT priority class and the user has enabled NCQ
    priority through sysfs.
    
    However, unlike the mpt3sas driver, the mpi3mr driver does not define
    the sas_ncq_prio_supported and sas_ncq_prio_enable sysfs attributes, so
    the ncq_prio_enable field of struct mpi3mr_sdev_priv_data is never
    actually set and NCQ Priority cannot ever be used.
    
    Fix this by defining these missing atributes to allow a user to check if
    an ATA device supports NCQ priority and to enable/disable the use of NCQ
    priority. To do this, lift the function scsih_ncq_prio_supp() out of the
    mpt3sas driver and make it the generic SCSI SAS transport function
    sas_ata_ncq_prio_supported(). Nothing in that function is hardware
    specific, so this function can be used in both the mpt3sas driver and
    the mpi3mr driver.
    Reported-by: default avatarScott McCoy <scott.mccoy@wdc.com>
    Fixes: 023ab2a9 ("scsi: mpi3mr: Add support for queue command processing")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
    Link: https://lore.kernel.org/r/20240611083435.92961-1-dlemoal@kernel.orgReviewed-by: default avatarNiklas Cassel <cassel@kernel.org>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    90e6f089
mpt3sas_scsih.c 369 KB