mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
Merge patch series "Add LIBSAS_SHT_BASE for libsas"
John Garry <john.g.garry@oracle.com> says: There is much duplication in the scsi_host_template structure for the drivers which use libsas. Similar to how a standard template is used in libata with __ATA_BASE_SHT, create a standard template in LIBSAS_SHT_BASE. Link: https://lore.kernel.org/r/20240308114339.1340549-1-john.g.garry@oracle.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
commit
4f378a7501
@ -25,6 +25,7 @@
|
||||
|
||||
/* The format is "version.release.patchlevel" */
|
||||
#define ASD_DRIVER_VERSION "1.0.3"
|
||||
#define DRV_NAME "aic94xx"
|
||||
|
||||
static int use_msi = 0;
|
||||
module_param_named(use_msi, use_msi, int, S_IRUGO);
|
||||
@ -38,29 +39,11 @@ static void asd_scan_start(struct Scsi_Host *);
|
||||
static const struct attribute_group *asd_sdev_groups[];
|
||||
|
||||
static const struct scsi_host_template aic94xx_sht = {
|
||||
.module = THIS_MODULE,
|
||||
/* .name is initialized */
|
||||
.name = "aic94xx",
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
.slave_configure = sas_slave_configure,
|
||||
LIBSAS_SHT_BASE
|
||||
.scan_finished = asd_scan_finished,
|
||||
.scan_start = asd_scan_start,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.can_queue = 1,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = SG_ALL,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.track_queue_depth = 1,
|
||||
.sdev_groups = asd_sdev_groups,
|
||||
};
|
||||
|
@ -1735,28 +1735,12 @@ static struct attribute *host_v1_hw_attrs[] = {
|
||||
ATTRIBUTE_GROUPS(host_v1_hw);
|
||||
|
||||
static const struct scsi_host_template sht_v1_hw = {
|
||||
.name = DRV_NAME,
|
||||
.proc_name = DRV_NAME,
|
||||
.module = THIS_MODULE,
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
LIBSAS_SHT_BASE_NO_SLAVE_INIT
|
||||
.slave_configure = hisi_sas_slave_configure,
|
||||
.scan_finished = hisi_sas_scan_finished,
|
||||
.scan_start = hisi_sas_scan_start,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = HISI_SAS_SGE_PAGE_CNT,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = hisi_sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.shost_groups = host_v1_hw_groups,
|
||||
.host_reset = hisi_sas_host_reset,
|
||||
};
|
||||
|
@ -3567,28 +3567,12 @@ static void map_queues_v2_hw(struct Scsi_Host *shost)
|
||||
}
|
||||
|
||||
static const struct scsi_host_template sht_v2_hw = {
|
||||
.name = DRV_NAME,
|
||||
.proc_name = DRV_NAME,
|
||||
.module = THIS_MODULE,
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
LIBSAS_SHT_BASE_NO_SLAVE_INIT
|
||||
.slave_configure = hisi_sas_slave_configure,
|
||||
.scan_finished = hisi_sas_scan_finished,
|
||||
.scan_start = hisi_sas_scan_start,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = HISI_SAS_SGE_PAGE_CNT,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = hisi_sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.shost_groups = host_v2_hw_groups,
|
||||
.sdev_groups = sdev_groups_v2_hw,
|
||||
.host_reset = hisi_sas_host_reset,
|
||||
|
@ -3320,30 +3320,14 @@ static void hisi_sas_map_queues(struct Scsi_Host *shost)
|
||||
}
|
||||
|
||||
static const struct scsi_host_template sht_v3_hw = {
|
||||
.name = DRV_NAME,
|
||||
.proc_name = DRV_NAME,
|
||||
.module = THIS_MODULE,
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
LIBSAS_SHT_BASE_NO_SLAVE_INIT
|
||||
.slave_configure = slave_configure_v3_hw,
|
||||
.scan_finished = hisi_sas_scan_finished,
|
||||
.scan_start = hisi_sas_scan_start,
|
||||
.map_queues = hisi_sas_map_queues,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = HISI_SAS_SGE_PAGE_CNT,
|
||||
.sg_prot_tablesize = HISI_SAS_SGE_PAGE_CNT,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = hisi_sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.shost_groups = host_v3_hw_groups,
|
||||
.sdev_groups = sdev_groups_v3_hw,
|
||||
.tag_alloc_policy = BLK_TAG_ALLOC_RR,
|
||||
|
@ -155,31 +155,12 @@ static const struct attribute_group *isci_sdev_groups[] = {
|
||||
};
|
||||
|
||||
static const struct scsi_host_template isci_sht = {
|
||||
|
||||
.module = THIS_MODULE,
|
||||
.name = DRV_NAME,
|
||||
.proc_name = DRV_NAME,
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
.slave_configure = sas_slave_configure,
|
||||
LIBSAS_SHT_BASE
|
||||
.scan_finished = isci_host_scan_finished,
|
||||
.scan_start = isci_host_start,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.can_queue = ISCI_CAN_QUEUE_VAL,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = SG_ALL,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_abort_handler = sas_eh_abort_handler,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.eh_abort_handler = sas_eh_abort_handler,
|
||||
.shost_groups = isci_host_groups,
|
||||
.sdev_groups = isci_sdev_groups,
|
||||
.track_queue_depth = 1,
|
||||
|
@ -31,28 +31,11 @@ static const struct attribute_group *mvst_sdev_groups[];
|
||||
#define SOC_SAS_NUM 2
|
||||
|
||||
static const struct scsi_host_template mvs_sht = {
|
||||
.module = THIS_MODULE,
|
||||
.name = DRV_NAME,
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
.slave_configure = sas_slave_configure,
|
||||
LIBSAS_SHT_BASE
|
||||
.scan_finished = mvs_scan_finished,
|
||||
.scan_start = mvs_scan_start,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.can_queue = 1,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = SG_ALL,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.shost_groups = mvst_host_groups,
|
||||
.sdev_groups = mvst_sdev_groups,
|
||||
.track_queue_depth = 1,
|
||||
|
@ -110,29 +110,11 @@ static void pm8001_map_queues(struct Scsi_Host *shost)
|
||||
* The main structure which LLDD must register for scsi core.
|
||||
*/
|
||||
static const struct scsi_host_template pm8001_sht = {
|
||||
.module = THIS_MODULE,
|
||||
.name = DRV_NAME,
|
||||
.proc_name = DRV_NAME,
|
||||
.queuecommand = sas_queuecommand,
|
||||
.dma_need_drain = ata_scsi_dma_need_drain,
|
||||
.target_alloc = sas_target_alloc,
|
||||
.slave_configure = sas_slave_configure,
|
||||
LIBSAS_SHT_BASE
|
||||
.scan_finished = pm8001_scan_finished,
|
||||
.scan_start = pm8001_scan_start,
|
||||
.change_queue_depth = sas_change_queue_depth,
|
||||
.bios_param = sas_bios_param,
|
||||
.can_queue = 1,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = PM8001_MAX_DMA_SG,
|
||||
.max_sectors = SCSI_DEFAULT_MAX_SECTORS,
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler,
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler,
|
||||
.slave_alloc = sas_slave_alloc,
|
||||
.target_destroy = sas_target_destroy,
|
||||
.ioctl = sas_ioctl,
|
||||
#ifdef CONFIG_COMPAT
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#endif
|
||||
.shost_groups = pm8001_host_groups,
|
||||
.sdev_groups = pm8001_sdev_groups,
|
||||
.track_queue_depth = 1,
|
||||
|
@ -726,4 +726,33 @@ void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
|
||||
void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
|
||||
gfp_t gfp_flags);
|
||||
|
||||
#define __LIBSAS_SHT_BASE \
|
||||
.module = THIS_MODULE, \
|
||||
.name = DRV_NAME, \
|
||||
.proc_name = DRV_NAME, \
|
||||
.queuecommand = sas_queuecommand, \
|
||||
.dma_need_drain = ata_scsi_dma_need_drain, \
|
||||
.target_alloc = sas_target_alloc, \
|
||||
.change_queue_depth = sas_change_queue_depth, \
|
||||
.bios_param = sas_bios_param, \
|
||||
.this_id = -1, \
|
||||
.eh_device_reset_handler = sas_eh_device_reset_handler, \
|
||||
.eh_target_reset_handler = sas_eh_target_reset_handler, \
|
||||
.target_destroy = sas_target_destroy, \
|
||||
.ioctl = sas_ioctl, \
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#define _LIBSAS_SHT_BASE __LIBSAS_SHT_BASE \
|
||||
.compat_ioctl = sas_ioctl,
|
||||
#else
|
||||
#define _LIBSAS_SHT_BASE __LIBSAS_SHT_BASE
|
||||
#endif
|
||||
|
||||
#define LIBSAS_SHT_BASE _LIBSAS_SHT_BASE \
|
||||
.slave_configure = sas_slave_configure, \
|
||||
.slave_alloc = sas_slave_alloc, \
|
||||
|
||||
#define LIBSAS_SHT_BASE_NO_SLAVE_INIT _LIBSAS_SHT_BASE
|
||||
|
||||
|
||||
#endif /* _SASLIB_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user