Merge patch series "libsas: Some tidy-up"
John Garry <john.g.garry@oracle.com> says:
This series tidies-up libsas a bit, including:
- delete structure(s) with only one member
- delete structure members which are only ever set
- delete structure members which are never set and code which relies on
that member being set
This conflicts with the following series:
https://lore.kernel.org/linux-scsi/20230809132249.37948-1-yuehaibing@huawei.com/
Any conflict should be trivial to resolve.
Based on mkp-scsi staging at a18e81d17a
("scsi: ufs: ufs-pci: Add support for QEMU")
Link: https://lore.kernel.org/r/20230815115156.343535-1-john.g.garry@oracle.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
commit
1451455e6f
@ -28,7 +28,7 @@ static int asd_get_user_sas_addr(struct asd_ha_struct *asd_ha)
|
||||
if (asd_ha->hw_prof.sas_addr[0])
|
||||
return 0;
|
||||
|
||||
return sas_request_addr(asd_ha->sas_ha.core.shost,
|
||||
return sas_request_addr(asd_ha->sas_ha.shost,
|
||||
asd_ha->hw_prof.sas_addr);
|
||||
}
|
||||
|
||||
@ -72,10 +72,8 @@ static int asd_init_phy(struct asd_phy *phy)
|
||||
struct asd_sas_phy *sas_phy = &phy->sas_phy;
|
||||
|
||||
sas_phy->enabled = 1;
|
||||
sas_phy->class = SAS;
|
||||
sas_phy->iproto = SAS_PROTOCOL_ALL;
|
||||
sas_phy->tproto = 0;
|
||||
sas_phy->type = PHY_TYPE_PHYSICAL;
|
||||
sas_phy->role = PHY_ROLE_INITIATOR;
|
||||
sas_phy->oob_mode = OOB_NOT_CONNECTED;
|
||||
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
|
||||
|
@ -667,7 +667,6 @@ static int asd_register_sas_ha(struct asd_ha_struct *asd_ha)
|
||||
}
|
||||
|
||||
asd_ha->sas_ha.sas_ha_name = (char *) asd_ha->name;
|
||||
asd_ha->sas_ha.lldd_module = THIS_MODULE;
|
||||
asd_ha->sas_ha.sas_addr = &asd_ha->hw_prof.sas_addr[0];
|
||||
|
||||
for (i = 0; i < ASD_MAX_PHYS; i++) {
|
||||
@ -688,8 +687,8 @@ static int asd_unregister_sas_ha(struct asd_ha_struct *asd_ha)
|
||||
|
||||
err = sas_unregister_ha(&asd_ha->sas_ha);
|
||||
|
||||
sas_remove_host(asd_ha->sas_ha.core.shost);
|
||||
scsi_host_put(asd_ha->sas_ha.core.shost);
|
||||
sas_remove_host(asd_ha->sas_ha.shost);
|
||||
scsi_host_put(asd_ha->sas_ha.shost);
|
||||
|
||||
kfree(asd_ha->sas_ha.sas_phy);
|
||||
kfree(asd_ha->sas_ha.sas_port);
|
||||
@ -739,7 +738,7 @@ static int asd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||
asd_printk("found %s, device %s\n", asd_ha->name, pci_name(dev));
|
||||
|
||||
SHOST_TO_SAS_HA(shost) = &asd_ha->sas_ha;
|
||||
asd_ha->sas_ha.core.shost = shost;
|
||||
asd_ha->sas_ha.shost = shost;
|
||||
shost->transportt = aic94xx_transport_template;
|
||||
shost->max_id = ~0;
|
||||
shost->max_lun = ~0;
|
||||
|
@ -388,14 +388,9 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task,
|
||||
flags |= data_dir_flags[task->data_dir];
|
||||
scb->ata_task.ata_flags = flags;
|
||||
|
||||
scb->ata_task.retry_count = task->ata_task.retry_count;
|
||||
scb->ata_task.retry_count = 0;
|
||||
|
||||
flags = 0;
|
||||
if (task->ata_task.set_affil_pol)
|
||||
flags |= SET_AFFIL_POLICY;
|
||||
if (task->ata_task.stp_affil_pol)
|
||||
flags |= STP_AFFIL_POLICY;
|
||||
scb->ata_task.flags = flags;
|
||||
scb->ata_task.flags = 0;
|
||||
}
|
||||
ascb->tasklet_complete = asd_task_tasklet_complete;
|
||||
|
||||
@ -485,9 +480,6 @@ static int asd_build_ssp_ascb(struct asd_ascb *ascb, struct sas_task *task,
|
||||
scb->ssp_task.ssp_frame.tptt = cpu_to_be16(0xFFFF);
|
||||
|
||||
memcpy(scb->ssp_task.ssp_cmd.lun, task->ssp_task.LUN, 8);
|
||||
if (task->ssp_task.enable_first_burst)
|
||||
scb->ssp_task.ssp_cmd.efb_prio_attr |= EFB_MASK;
|
||||
scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_prio << 3);
|
||||
scb->ssp_task.ssp_cmd.efb_prio_attr |= (task->ssp_task.task_attr & 7);
|
||||
memcpy(scb->ssp_task.ssp_cmd.cdb, task->ssp_task.cmd->cmnd,
|
||||
task->ssp_task.cmd->cmd_len);
|
||||
|
@ -1018,10 +1018,8 @@ static void hisi_sas_phy_init(struct hisi_hba *hisi_hba, int phy_no)
|
||||
phy->minimum_linkrate = SAS_LINK_RATE_1_5_GBPS;
|
||||
phy->maximum_linkrate = hisi_hba->hw->phy_get_max_linkrate();
|
||||
sas_phy->enabled = (phy_no < hisi_hba->n_phy) ? 1 : 0;
|
||||
sas_phy->class = SAS;
|
||||
sas_phy->iproto = SAS_PROTOCOL_ALL;
|
||||
sas_phy->tproto = 0;
|
||||
sas_phy->type = PHY_TYPE_PHYSICAL;
|
||||
sas_phy->role = PHY_ROLE_INITIATOR;
|
||||
sas_phy->oob_mode = OOB_NOT_CONNECTED;
|
||||
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
|
||||
@ -2514,10 +2512,9 @@ int hisi_sas_probe(struct platform_device *pdev,
|
||||
|
||||
sha->sas_ha_name = DRV_NAME;
|
||||
sha->dev = hisi_hba->dev;
|
||||
sha->lldd_module = THIS_MODULE;
|
||||
sha->sas_addr = &hisi_hba->sas_addr[0];
|
||||
sha->num_phys = hisi_hba->n_phy;
|
||||
sha->core.shost = hisi_hba->shost;
|
||||
sha->shost = hisi_hba->shost;
|
||||
|
||||
for (i = 0; i < hisi_hba->n_phy; i++) {
|
||||
sha->sas_phy[i] = &hisi_hba->phy[i].sas_phy;
|
||||
@ -2559,12 +2556,12 @@ void hisi_sas_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct sas_ha_struct *sha = platform_get_drvdata(pdev);
|
||||
struct hisi_hba *hisi_hba = sha->lldd_ha;
|
||||
struct Scsi_Host *shost = sha->core.shost;
|
||||
struct Scsi_Host *shost = sha->shost;
|
||||
|
||||
del_timer_sync(&hisi_hba->timer);
|
||||
|
||||
sas_unregister_ha(sha);
|
||||
sas_remove_host(sha->core.shost);
|
||||
sas_remove_host(shost);
|
||||
|
||||
hisi_sas_free(hisi_hba);
|
||||
scsi_host_put(shost);
|
||||
|
@ -960,7 +960,7 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,
|
||||
struct scsi_cmnd *scsi_cmnd = ssp_task->cmd;
|
||||
struct sas_tmf_task *tmf = slot->tmf;
|
||||
int has_data = 0, priority = !!tmf;
|
||||
u8 *buf_cmd, fburst = 0;
|
||||
u8 *buf_cmd;
|
||||
u32 dw1, dw2;
|
||||
|
||||
/* create header */
|
||||
@ -1018,16 +1018,11 @@ static void prep_ssp_v1_hw(struct hisi_hba *hisi_hba,
|
||||
|
||||
buf_cmd = hisi_sas_cmd_hdr_addr_mem(slot) +
|
||||
sizeof(struct ssp_frame_hdr);
|
||||
if (task->ssp_task.enable_first_burst) {
|
||||
fburst = (1 << 7);
|
||||
dw2 |= 1 << CMD_HDR_FIRST_BURST_OFF;
|
||||
}
|
||||
hdr->dw2 = cpu_to_le32(dw2);
|
||||
|
||||
memcpy(buf_cmd, &task->ssp_task.LUN, 8);
|
||||
if (!tmf) {
|
||||
buf_cmd[9] = fburst | task->ssp_task.task_attr |
|
||||
(task->ssp_task.task_prio << 3);
|
||||
buf_cmd[9] = task->ssp_task.task_attr;
|
||||
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
|
||||
task->ssp_task.cmd->cmd_len);
|
||||
} else {
|
||||
|
@ -1798,8 +1798,7 @@ static void prep_ssp_v2_hw(struct hisi_hba *hisi_hba,
|
||||
|
||||
memcpy(buf_cmd, &task->ssp_task.LUN, 8);
|
||||
if (!tmf) {
|
||||
buf_cmd[9] = task->ssp_task.task_attr |
|
||||
(task->ssp_task.task_prio << 3);
|
||||
buf_cmd[9] = task->ssp_task.task_attr;
|
||||
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
|
||||
task->ssp_task.cmd->cmd_len);
|
||||
} else {
|
||||
|
@ -1326,7 +1326,7 @@ static void prep_ssp_v3_hw(struct hisi_hba *hisi_hba,
|
||||
|
||||
memcpy(buf_cmd, &task->ssp_task.LUN, 8);
|
||||
if (!tmf) {
|
||||
buf_cmd[9] = ssp_task->task_attr | (ssp_task->task_prio << 3);
|
||||
buf_cmd[9] = ssp_task->task_attr;
|
||||
memcpy(buf_cmd + 12, scsi_cmnd->cmnd, scsi_cmnd->cmd_len);
|
||||
} else {
|
||||
buf_cmd[10] = tmf->tmf;
|
||||
@ -4956,7 +4956,7 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
|
||||
sha->sas_phy = arr_phy;
|
||||
sha->sas_port = arr_port;
|
||||
sha->core.shost = shost;
|
||||
sha->shost = shost;
|
||||
sha->lldd_ha = hisi_hba;
|
||||
|
||||
shost->transportt = hisi_sas_stt;
|
||||
@ -4973,7 +4973,6 @@ hisi_sas_v3_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
|
||||
sha->sas_ha_name = DRV_NAME;
|
||||
sha->dev = dev;
|
||||
sha->lldd_module = THIS_MODULE;
|
||||
sha->sas_addr = &hisi_hba->sas_addr[0];
|
||||
sha->num_phys = hisi_hba->n_phy;
|
||||
|
||||
@ -5061,14 +5060,14 @@ static void hisi_sas_v3_remove(struct pci_dev *pdev)
|
||||
struct device *dev = &pdev->dev;
|
||||
struct sas_ha_struct *sha = dev_get_drvdata(dev);
|
||||
struct hisi_hba *hisi_hba = sha->lldd_ha;
|
||||
struct Scsi_Host *shost = sha->core.shost;
|
||||
struct Scsi_Host *shost = sha->shost;
|
||||
|
||||
pm_runtime_get_noresume(dev);
|
||||
del_timer_sync(&hisi_hba->timer);
|
||||
|
||||
sas_unregister_ha(sha);
|
||||
flush_workqueue(hisi_hba->wq);
|
||||
sas_remove_host(sha->core.shost);
|
||||
sas_remove_host(shost);
|
||||
|
||||
hisi_sas_v3_destroy_irqs(pdev, hisi_hba);
|
||||
hisi_sas_free(hisi_hba);
|
||||
|
@ -306,7 +306,7 @@ static inline struct isci_pci_info *to_pci_info(struct pci_dev *pdev)
|
||||
|
||||
static inline struct Scsi_Host *to_shost(struct isci_host *ihost)
|
||||
{
|
||||
return ihost->sas_ha.core.shost;
|
||||
return ihost->sas_ha.shost;
|
||||
}
|
||||
|
||||
#define for_each_isci_host(id, ihost, pdev) \
|
||||
|
@ -250,7 +250,6 @@ static int isci_register_sas_ha(struct isci_host *isci_host)
|
||||
return -ENOMEM;
|
||||
|
||||
sas_ha->sas_ha_name = DRV_NAME;
|
||||
sas_ha->lldd_module = THIS_MODULE;
|
||||
sas_ha->sas_addr = &isci_host->phys[0].sas_addr[0];
|
||||
|
||||
for (i = 0; i < SCI_MAX_PHYS; i++) {
|
||||
@ -573,7 +572,7 @@ static struct isci_host *isci_host_alloc(struct pci_dev *pdev, int id)
|
||||
goto err_shost;
|
||||
|
||||
SHOST_TO_SAS_HA(shost) = &ihost->sas_ha;
|
||||
ihost->sas_ha.core.shost = shost;
|
||||
ihost->sas_ha.shost = shost;
|
||||
shost->transportt = isci_transport_template;
|
||||
|
||||
shost->max_id = ~0;
|
||||
@ -728,7 +727,7 @@ static int isci_resume(struct device *dev)
|
||||
sas_prep_resume_ha(&ihost->sas_ha);
|
||||
|
||||
isci_host_init(ihost);
|
||||
isci_host_start(ihost->sas_ha.core.shost);
|
||||
isci_host_start(ihost->sas_ha.shost);
|
||||
wait_for_start(ihost);
|
||||
|
||||
sas_resume_ha(&ihost->sas_ha);
|
||||
|
@ -1404,10 +1404,8 @@ void isci_phy_init(struct isci_phy *iphy, struct isci_host *ihost, int index)
|
||||
iphy->sas_phy.ha = &ihost->sas_ha;
|
||||
iphy->sas_phy.lldd_phy = iphy;
|
||||
iphy->sas_phy.enabled = 1;
|
||||
iphy->sas_phy.class = SAS;
|
||||
iphy->sas_phy.iproto = SAS_PROTOCOL_ALL;
|
||||
iphy->sas_phy.tproto = 0;
|
||||
iphy->sas_phy.type = PHY_TYPE_PHYSICAL;
|
||||
iphy->sas_phy.role = PHY_ROLE_INITIATOR;
|
||||
iphy->sas_phy.oob_mode = OOB_NOT_CONNECTED;
|
||||
iphy->sas_phy.linkrate = SAS_LINK_RATE_UNKNOWN;
|
||||
|
@ -180,7 +180,7 @@ static void sci_io_request_build_ssp_command_iu(struct isci_request *ireq)
|
||||
cmd_iu->_r_a = 0;
|
||||
cmd_iu->_r_b = 0;
|
||||
cmd_iu->en_fburst = 0; /* unsupported */
|
||||
cmd_iu->task_prio = task->ssp_task.task_prio;
|
||||
cmd_iu->task_prio = 0;
|
||||
cmd_iu->task_attr = task->ssp_task.task_attr;
|
||||
cmd_iu->_r_c = 0;
|
||||
|
||||
|
@ -162,7 +162,7 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
|
||||
struct ata_port *ap = qc->ap;
|
||||
struct domain_device *dev = ap->private_data;
|
||||
struct sas_ha_struct *sas_ha = dev->port->ha;
|
||||
struct Scsi_Host *host = sas_ha->core.shost;
|
||||
struct Scsi_Host *host = sas_ha->shost;
|
||||
struct sas_internal *i = to_sas_internal(host->transportt);
|
||||
|
||||
/* TODO: we should try to remove that unlock */
|
||||
@ -201,7 +201,6 @@ static unsigned int sas_ata_qc_issue(struct ata_queued_cmd *qc)
|
||||
task->data_dir = qc->dma_dir;
|
||||
}
|
||||
task->scatter = qc->sg;
|
||||
task->ata_task.retry_count = 1;
|
||||
qc->lldd_task = task;
|
||||
|
||||
task->ata_task.use_ncq = ata_is_ncq(qc->tf.protocol);
|
||||
@ -238,7 +237,7 @@ static void sas_ata_qc_fill_rtf(struct ata_queued_cmd *qc)
|
||||
|
||||
static struct sas_internal *dev_to_sas_internal(struct domain_device *dev)
|
||||
{
|
||||
return to_sas_internal(dev->port->ha->core.shost->transportt);
|
||||
return to_sas_internal(dev->port->ha->shost->transportt);
|
||||
}
|
||||
|
||||
static int sas_get_ata_command_set(struct domain_device *dev)
|
||||
@ -587,7 +586,7 @@ static struct ata_port_info sata_port_info = {
|
||||
int sas_ata_init(struct domain_device *found_dev)
|
||||
{
|
||||
struct sas_ha_struct *ha = found_dev->port->ha;
|
||||
struct Scsi_Host *shost = ha->core.shost;
|
||||
struct Scsi_Host *shost = ha->shost;
|
||||
struct ata_host *ata_host;
|
||||
struct ata_port *ap;
|
||||
int rc;
|
||||
@ -825,7 +824,7 @@ static void async_sas_ata_eh(void *data, async_cookie_t cookie)
|
||||
struct sas_ha_struct *ha = dev->port->ha;
|
||||
|
||||
sas_ata_printk(KERN_DEBUG, dev, "dev error handler\n");
|
||||
ata_scsi_port_error_handler(ha->core.shost, ap);
|
||||
ata_scsi_port_error_handler(ha->shost, ap);
|
||||
sas_put_device(dev);
|
||||
}
|
||||
|
||||
|
@ -170,7 +170,7 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
|
||||
{
|
||||
int res = 0;
|
||||
struct sas_ha_struct *sas_ha = dev->port->ha;
|
||||
struct Scsi_Host *shost = sas_ha->core.shost;
|
||||
struct Scsi_Host *shost = sas_ha->shost;
|
||||
struct sas_internal *i = to_sas_internal(shost->transportt);
|
||||
|
||||
if (!i->dft->lldd_dev_found)
|
||||
@ -192,7 +192,7 @@ int sas_notify_lldd_dev_found(struct domain_device *dev)
|
||||
void sas_notify_lldd_dev_gone(struct domain_device *dev)
|
||||
{
|
||||
struct sas_ha_struct *sas_ha = dev->port->ha;
|
||||
struct Scsi_Host *shost = sas_ha->core.shost;
|
||||
struct Scsi_Host *shost = sas_ha->shost;
|
||||
struct sas_internal *i = to_sas_internal(shost->transportt);
|
||||
|
||||
if (!i->dft->lldd_dev_gone)
|
||||
@ -234,7 +234,7 @@ static void sas_suspend_devices(struct work_struct *work)
|
||||
struct domain_device *dev;
|
||||
struct sas_discovery_event *ev = to_sas_discovery_event(work);
|
||||
struct asd_sas_port *port = ev->port;
|
||||
struct Scsi_Host *shost = port->ha->core.shost;
|
||||
struct Scsi_Host *shost = port->ha->shost;
|
||||
struct sas_internal *si = to_sas_internal(shost->transportt);
|
||||
|
||||
clear_bit(DISCE_SUSPEND, &port->disc.pending);
|
||||
@ -373,7 +373,7 @@ static bool sas_abort_cmd(struct request *req, void *data)
|
||||
static void sas_abort_device_scsi_cmds(struct domain_device *dev)
|
||||
{
|
||||
struct sas_ha_struct *sas_ha = dev->port->ha;
|
||||
struct Scsi_Host *shost = sas_ha->core.shost;
|
||||
struct Scsi_Host *shost = sas_ha->shost;
|
||||
|
||||
if (dev_is_expander(dev->dev_type))
|
||||
return;
|
||||
|
@ -37,7 +37,7 @@ static int smp_execute_task_sg(struct domain_device *dev,
|
||||
int res, retry;
|
||||
struct sas_task *task = NULL;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(dev->port->ha->core.shost->transportt);
|
||||
to_sas_internal(dev->port->ha->shost->transportt);
|
||||
struct sas_ha_struct *ha = dev->port->ha;
|
||||
|
||||
pm_runtime_get_sync(ha->dev);
|
||||
|
@ -114,7 +114,7 @@ static int sas_host_smp_write_gpio(struct sas_ha_struct *sas_ha, u8 *resp_data,
|
||||
u8 reg_type, u8 reg_index, u8 reg_count,
|
||||
u8 *req_data)
|
||||
{
|
||||
struct sas_internal *i = to_sas_internal(sas_ha->core.shost->transportt);
|
||||
struct sas_internal *i = to_sas_internal(sas_ha->shost->transportt);
|
||||
int written;
|
||||
|
||||
if (i->dft->lldd_write_gpio == NULL) {
|
||||
@ -182,7 +182,7 @@ static void sas_phy_control(struct sas_ha_struct *sas_ha, u8 phy_id,
|
||||
enum sas_linkrate max, u8 *resp_data)
|
||||
{
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
struct sas_phy_linkrates rates;
|
||||
struct asd_sas_phy *asd_phy;
|
||||
|
||||
|
@ -183,7 +183,7 @@ static int sas_get_linkerrors(struct sas_phy *phy)
|
||||
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
|
||||
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
return i->dft->lldd_control_phy(asd_phy, PHY_FUNC_GET_EVENTS, NULL);
|
||||
}
|
||||
@ -232,7 +232,7 @@ static int transport_sas_phy_reset(struct sas_phy *phy, int hard_reset)
|
||||
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
|
||||
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
if (!hard_reset && sas_try_ata_reset(asd_phy) == 0)
|
||||
return 0;
|
||||
@ -266,7 +266,7 @@ int sas_phy_enable(struct sas_phy *phy, int enable)
|
||||
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
|
||||
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
if (enable)
|
||||
ret = transport_sas_phy_reset(phy, 0);
|
||||
@ -303,7 +303,7 @@ int sas_phy_reset(struct sas_phy *phy, int hard_reset)
|
||||
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
|
||||
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
ret = i->dft->lldd_control_phy(asd_phy, reset_type, NULL);
|
||||
} else {
|
||||
@ -339,7 +339,7 @@ int sas_set_phy_speed(struct sas_phy *phy,
|
||||
struct sas_ha_struct *sas_ha = SHOST_TO_SAS_HA(shost);
|
||||
struct asd_sas_phy *asd_phy = sas_ha->sas_phy[phy->number];
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
ret = i->dft->lldd_control_phy(asd_phy, PHY_FUNC_SET_LINK_RATE,
|
||||
rates);
|
||||
@ -438,7 +438,7 @@ static void _sas_resume_ha(struct sas_ha_struct *ha, bool drain)
|
||||
/* all phys are back up or timed out, turn on i/o so we can
|
||||
* flush out disks that did not return
|
||||
*/
|
||||
scsi_unblock_requests(ha->core.shost);
|
||||
scsi_unblock_requests(ha->shost);
|
||||
if (drain)
|
||||
sas_drain_work(ha);
|
||||
clear_bit(SAS_HA_RESUMING, &ha->state);
|
||||
@ -468,7 +468,7 @@ void sas_suspend_ha(struct sas_ha_struct *ha)
|
||||
int i;
|
||||
|
||||
sas_disable_events(ha);
|
||||
scsi_block_requests(ha->core.shost);
|
||||
scsi_block_requests(ha->shost);
|
||||
for (i = 0; i < ha->num_phys; i++) {
|
||||
struct asd_sas_port *port = ha->sas_port[i];
|
||||
|
||||
@ -641,7 +641,7 @@ struct asd_sas_event *sas_alloc_event(struct asd_sas_phy *phy,
|
||||
struct asd_sas_event *event;
|
||||
struct sas_ha_struct *sas_ha = phy->ha;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
event = kmem_cache_zalloc(sas_event_cache, gfp_flags);
|
||||
if (!event)
|
||||
|
@ -38,7 +38,7 @@ static void sas_phye_oob_error(struct work_struct *work)
|
||||
struct sas_ha_struct *sas_ha = phy->ha;
|
||||
struct asd_sas_port *port = phy->port;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
sas_deform_port(phy, 1);
|
||||
|
||||
@ -66,7 +66,7 @@ static void sas_phye_spinup_hold(struct work_struct *work)
|
||||
struct asd_sas_phy *phy = ev->phy;
|
||||
struct sas_ha_struct *sas_ha = phy->ha;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
phy->error = 0;
|
||||
i->dft->lldd_control_phy(phy, PHY_FUNC_RELEASE_SPINUP_HOLD, NULL);
|
||||
@ -95,7 +95,7 @@ static void sas_phye_shutdown(struct work_struct *work)
|
||||
struct asd_sas_phy *phy = ev->phy;
|
||||
struct sas_ha_struct *sas_ha = phy->ha;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
if (phy->enabled) {
|
||||
int ret;
|
||||
@ -131,7 +131,7 @@ int sas_register_phys(struct sas_ha_struct *sas_ha)
|
||||
spin_lock_init(&phy->sas_prim_lock);
|
||||
phy->frame_rcvd_size = 0;
|
||||
|
||||
phy->phy = sas_phy_alloc(&sas_ha->core.shost->shost_gendev, i);
|
||||
phy->phy = sas_phy_alloc(&sas_ha->shost->shost_gendev, i);
|
||||
if (!phy->phy)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -28,7 +28,7 @@ static void sas_resume_port(struct asd_sas_phy *phy)
|
||||
struct domain_device *dev, *n;
|
||||
struct asd_sas_port *port = phy->port;
|
||||
struct sas_ha_struct *sas_ha = phy->ha;
|
||||
struct sas_internal *si = to_sas_internal(sas_ha->core.shost->transportt);
|
||||
struct sas_internal *si = to_sas_internal(sas_ha->shost->transportt);
|
||||
|
||||
if (si->dft->lldd_port_formed)
|
||||
si->dft->lldd_port_formed(phy);
|
||||
@ -83,7 +83,6 @@ static void sas_form_port_add_phy(struct asd_sas_port *port,
|
||||
memcpy(port->sas_addr, phy->sas_addr, SAS_ADDR_SIZE);
|
||||
|
||||
if (*(u64 *)port->attached_sas_addr == 0) {
|
||||
port->class = phy->class;
|
||||
memcpy(port->attached_sas_addr, phy->attached_sas_addr,
|
||||
SAS_ADDR_SIZE);
|
||||
port->iproto = phy->iproto;
|
||||
@ -109,7 +108,7 @@ static void sas_form_port(struct asd_sas_phy *phy)
|
||||
struct asd_sas_port *port = phy->port;
|
||||
struct domain_device *port_dev = NULL;
|
||||
struct sas_internal *si =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
unsigned long flags;
|
||||
|
||||
if (port) {
|
||||
@ -212,7 +211,7 @@ void sas_deform_port(struct asd_sas_phy *phy, int gone)
|
||||
struct sas_ha_struct *sas_ha = phy->ha;
|
||||
struct asd_sas_port *port = phy->port;
|
||||
struct sas_internal *si =
|
||||
to_sas_internal(sas_ha->core.shost->transportt);
|
||||
to_sas_internal(sas_ha->shost->transportt);
|
||||
struct domain_device *dev;
|
||||
unsigned long flags;
|
||||
|
||||
@ -249,7 +248,6 @@ void sas_deform_port(struct asd_sas_phy *phy, int gone)
|
||||
INIT_LIST_HEAD(&port->phy_list);
|
||||
memset(port->sas_addr, 0, SAS_ADDR_SIZE);
|
||||
memset(port->attached_sas_addr, 0, SAS_ADDR_SIZE);
|
||||
port->class = 0;
|
||||
port->iproto = 0;
|
||||
port->tproto = 0;
|
||||
port->oob_mode = 0;
|
||||
|
@ -142,7 +142,6 @@ static struct sas_task *sas_create_task(struct scsi_cmnd *cmd,
|
||||
task->dev = dev;
|
||||
task->task_proto = task->dev->tproto; /* BUG_ON(!SSP) */
|
||||
|
||||
task->ssp_task.retry_count = 1;
|
||||
int_to_scsilun(cmd->device->lun, &lun);
|
||||
memcpy(task->ssp_task.LUN, &lun.scsi_lun, 8);
|
||||
task->ssp_task.task_attr = TASK_ATTR_SIMPLE;
|
||||
@ -279,7 +278,7 @@ static enum task_disposition sas_scsi_find_task(struct sas_task *task)
|
||||
unsigned long flags;
|
||||
int i, res;
|
||||
struct sas_internal *si =
|
||||
to_sas_internal(task->dev->port->ha->core.shost->transportt);
|
||||
to_sas_internal(task->dev->port->ha->shost->transportt);
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
pr_notice("%s: aborting task 0x%p\n", __func__, task);
|
||||
@ -327,7 +326,7 @@ static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd)
|
||||
int res = TMF_RESP_FUNC_FAILED;
|
||||
struct scsi_lun lun;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(dev->port->ha->core.shost->transportt);
|
||||
to_sas_internal(dev->port->ha->shost->transportt);
|
||||
|
||||
int_to_scsilun(cmd->device->lun, &lun);
|
||||
|
||||
@ -355,7 +354,7 @@ static int sas_recover_I_T(struct domain_device *dev)
|
||||
{
|
||||
int res = TMF_RESP_FUNC_FAILED;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(dev->port->ha->core.shost->transportt);
|
||||
to_sas_internal(dev->port->ha->shost->transportt);
|
||||
|
||||
pr_notice("I_T nexus reset for dev %016llx\n",
|
||||
SAS_ADDR(dev->sas_addr));
|
||||
@ -410,7 +409,7 @@ static void sas_wait_eh(struct domain_device *dev)
|
||||
spin_unlock_irq(&ha->lock);
|
||||
|
||||
/* make sure SCSI EH is complete */
|
||||
if (scsi_host_in_recovery(ha->core.shost)) {
|
||||
if (scsi_host_in_recovery(ha->shost)) {
|
||||
msleep(10);
|
||||
goto retry;
|
||||
}
|
||||
@ -440,7 +439,7 @@ static int sas_queue_reset(struct domain_device *dev, int reset_type,
|
||||
set_bit(SAS_DEV_EH_PENDING, &dev->state);
|
||||
set_bit(reset_type, &dev->state);
|
||||
int_to_scsilun(lun, &dev->ssp_dev.reset_lun);
|
||||
scsi_schedule_eh(ha->core.shost);
|
||||
scsi_schedule_eh(ha->shost);
|
||||
}
|
||||
spin_unlock_irq(&ha->lock);
|
||||
|
||||
@ -925,7 +924,7 @@ static int sas_execute_internal_abort(struct domain_device *device,
|
||||
unsigned int qid, void *data)
|
||||
{
|
||||
struct sas_ha_struct *ha = device->port->ha;
|
||||
struct sas_internal *i = to_sas_internal(ha->core.shost->transportt);
|
||||
struct sas_internal *i = to_sas_internal(ha->shost->transportt);
|
||||
struct sas_task *task = NULL;
|
||||
int res, retry;
|
||||
|
||||
@ -1015,7 +1014,7 @@ int sas_execute_tmf(struct domain_device *device, void *parameter,
|
||||
{
|
||||
struct sas_task *task;
|
||||
struct sas_internal *i =
|
||||
to_sas_internal(device->port->ha->core.shost->transportt);
|
||||
to_sas_internal(device->port->ha->shost->transportt);
|
||||
int res, retry;
|
||||
|
||||
for (retry = 0; retry < TASK_RETRY; retry++) {
|
||||
|
@ -84,10 +84,8 @@ static void mvs_phy_init(struct mvs_info *mvi, int phy_id)
|
||||
phy->port = NULL;
|
||||
timer_setup(&phy->timer, NULL, 0);
|
||||
sas_phy->enabled = (phy_id < mvi->chip->n_phy) ? 1 : 0;
|
||||
sas_phy->class = SAS;
|
||||
sas_phy->iproto = SAS_PROTOCOL_ALL;
|
||||
sas_phy->tproto = 0;
|
||||
sas_phy->type = PHY_TYPE_PHYSICAL;
|
||||
sas_phy->role = PHY_ROLE_INITIATOR;
|
||||
sas_phy->oob_mode = OOB_NOT_CONNECTED;
|
||||
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
|
||||
@ -416,7 +414,7 @@ static int mvs_prep_sas_ha_init(struct Scsi_Host *shost,
|
||||
|
||||
sha->sas_phy = arr_phy;
|
||||
sha->sas_port = arr_port;
|
||||
sha->core.shost = shost;
|
||||
sha->shost = shost;
|
||||
|
||||
sha->lldd_ha = kzalloc(sizeof(struct mvs_prv_info), GFP_KERNEL);
|
||||
if (!sha->lldd_ha)
|
||||
@ -458,7 +456,6 @@ static void mvs_post_sas_ha_init(struct Scsi_Host *shost,
|
||||
|
||||
sha->sas_ha_name = DRV_NAME;
|
||||
sha->dev = mvi->dev;
|
||||
sha->lldd_module = THIS_MODULE;
|
||||
sha->sas_addr = &mvi->sas_addr[0];
|
||||
|
||||
sha->num_phys = nr_core * chip_info->n_phy;
|
||||
@ -473,7 +470,7 @@ static void mvs_post_sas_ha_init(struct Scsi_Host *shost,
|
||||
shost->sg_tablesize = min_t(u16, SG_ALL, MVS_MAX_SG);
|
||||
shost->can_queue = can_queue;
|
||||
mvi->shost->cmd_per_lun = MVS_QUEUE_SIZE;
|
||||
sha->core.shost = mvi->shost;
|
||||
sha->shost = mvi->shost;
|
||||
}
|
||||
|
||||
static void mvs_init_sas_add(struct mvs_info *mvi)
|
||||
|
@ -564,7 +564,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
|
||||
void *buf_prd;
|
||||
struct ssp_frame_hdr *ssp_hdr;
|
||||
void *buf_tmp;
|
||||
u8 *buf_cmd, *buf_oaf, fburst = 0;
|
||||
u8 *buf_cmd, *buf_oaf;
|
||||
dma_addr_t buf_tmp_dma;
|
||||
u32 flags;
|
||||
u32 resp_len, req_len, i, tag = tei->tag;
|
||||
@ -582,10 +582,6 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
|
||||
(phy_mask << TXQ_PHY_SHIFT));
|
||||
|
||||
flags = MCH_RETRY;
|
||||
if (task->ssp_task.enable_first_burst) {
|
||||
flags |= MCH_FBURST;
|
||||
fburst = (1 << 7);
|
||||
}
|
||||
if (is_tmf)
|
||||
flags |= (MCH_SSP_FR_TASK << MCH_SSP_FR_TYPE_SHIFT);
|
||||
else
|
||||
@ -667,8 +663,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
|
||||
memcpy(buf_cmd, &task->ssp_task.LUN, 8);
|
||||
|
||||
if (ssp_hdr->frame_type != SSP_TASK) {
|
||||
buf_cmd[9] = fburst | task->ssp_task.task_attr |
|
||||
(task->ssp_task.task_prio << 3);
|
||||
buf_cmd[9] = task->ssp_task.task_attr;
|
||||
memcpy(buf_cmd + 12, task->ssp_task.cmd->cmnd,
|
||||
task->ssp_task.cmd->cmd_len);
|
||||
} else{
|
||||
|
@ -4053,9 +4053,6 @@ static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
|
||||
ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
|
||||
ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
|
||||
ssp_cmd.tag = cpu_to_le32(tag);
|
||||
if (task->ssp_task.enable_first_burst)
|
||||
ssp_cmd.ssp_iu.efb_prio_attr |= 0x80;
|
||||
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
|
||||
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
|
||||
memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
|
||||
task->ssp_task.cmd->cmd_len);
|
||||
|
@ -162,10 +162,8 @@ static void pm8001_phy_init(struct pm8001_hba_info *pm8001_ha, int phy_id)
|
||||
phy->minimum_linkrate = SAS_LINK_RATE_1_5_GBPS;
|
||||
phy->maximum_linkrate = SAS_LINK_RATE_6_0_GBPS;
|
||||
sas_phy->enabled = (phy_id < pm8001_ha->chip->n_phy) ? 1 : 0;
|
||||
sas_phy->class = SAS;
|
||||
sas_phy->iproto = SAS_PROTOCOL_ALL;
|
||||
sas_phy->tproto = 0;
|
||||
sas_phy->type = PHY_TYPE_PHYSICAL;
|
||||
sas_phy->role = PHY_ROLE_INITIATOR;
|
||||
sas_phy->oob_mode = OOB_NOT_CONNECTED;
|
||||
sas_phy->linkrate = SAS_LINK_RATE_UNKNOWN;
|
||||
@ -654,10 +652,9 @@ static void pm8001_post_sas_ha_init(struct Scsi_Host *shost,
|
||||
sha->sas_ha_name = DRV_NAME;
|
||||
sha->dev = pm8001_ha->dev;
|
||||
sha->strict_wide_ports = 1;
|
||||
sha->lldd_module = THIS_MODULE;
|
||||
sha->sas_addr = &pm8001_ha->sas_addr[0];
|
||||
sha->num_phys = chip_info->n_phy;
|
||||
sha->core.shost = shost;
|
||||
sha->shost = shost;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4316,9 +4316,6 @@ static int pm80xx_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha,
|
||||
ssp_cmd.data_len = cpu_to_le32(task->total_xfer_len);
|
||||
ssp_cmd.device_id = cpu_to_le32(pm8001_dev->device_id);
|
||||
ssp_cmd.tag = cpu_to_le32(tag);
|
||||
if (task->ssp_task.enable_first_burst)
|
||||
ssp_cmd.ssp_iu.efb_prio_attr = 0x80;
|
||||
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_prio << 3);
|
||||
ssp_cmd.ssp_iu.efb_prio_attr |= (task->ssp_task.task_attr & 7);
|
||||
memcpy(ssp_cmd.ssp_iu.cdb, task->ssp_task.cmd->cmnd,
|
||||
task->ssp_task.cmd->cmd_len);
|
||||
|
@ -23,22 +23,12 @@
|
||||
|
||||
struct block_device;
|
||||
|
||||
enum sas_class {
|
||||
SAS,
|
||||
EXPANDER
|
||||
};
|
||||
|
||||
enum sas_phy_role {
|
||||
PHY_ROLE_NONE = 0,
|
||||
PHY_ROLE_TARGET = 0x40,
|
||||
PHY_ROLE_INITIATOR = 0x80,
|
||||
};
|
||||
|
||||
enum sas_phy_type {
|
||||
PHY_TYPE_PHYSICAL,
|
||||
PHY_TYPE_VIRTUAL
|
||||
};
|
||||
|
||||
/* The events are mnemonically described in sas_dump.c
|
||||
* so when updating/adding events here, please also
|
||||
* update the other file too.
|
||||
@ -258,7 +248,6 @@ struct asd_sas_port {
|
||||
/* public: */
|
||||
int id;
|
||||
|
||||
enum sas_class class;
|
||||
u8 sas_addr[SAS_ADDR_SIZE];
|
||||
u8 attached_sas_addr[SAS_ADDR_SIZE];
|
||||
enum sas_protocol iproto;
|
||||
@ -319,11 +308,9 @@ struct asd_sas_phy {
|
||||
int enabled; /* must be set */
|
||||
|
||||
int id; /* must be set */
|
||||
enum sas_class class;
|
||||
enum sas_protocol iproto;
|
||||
enum sas_protocol tproto;
|
||||
|
||||
enum sas_phy_type type;
|
||||
enum sas_phy_role role;
|
||||
enum sas_oob_mode oob_mode;
|
||||
enum sas_linkrate linkrate;
|
||||
@ -346,11 +333,6 @@ struct asd_sas_phy {
|
||||
void *lldd_phy; /* not touched by the sas_class_code */
|
||||
};
|
||||
|
||||
struct scsi_core {
|
||||
struct Scsi_Host *shost;
|
||||
|
||||
};
|
||||
|
||||
enum sas_ha_state {
|
||||
SAS_HA_REGISTERED,
|
||||
SAS_HA_DRAINING,
|
||||
@ -371,12 +353,11 @@ struct sas_ha_struct {
|
||||
|
||||
struct mutex disco_mutex;
|
||||
|
||||
struct scsi_core core;
|
||||
struct Scsi_Host *shost;
|
||||
|
||||
/* public: */
|
||||
char *sas_ha_name;
|
||||
struct device *dev; /* should be set */
|
||||
struct module *lldd_module; /* should be set */
|
||||
|
||||
struct workqueue_struct *event_q;
|
||||
struct workqueue_struct *disco_q;
|
||||
@ -544,12 +525,8 @@ struct sas_ata_task {
|
||||
struct host_to_dev_fis fis;
|
||||
u8 atapi_packet[16]; /* 0 if not ATAPI task */
|
||||
|
||||
u8 retry_count; /* hardware retry, should be > 0 */
|
||||
|
||||
u8 dma_xfer:1; /* PIO:0 or DMA:1 */
|
||||
u8 use_ncq:1;
|
||||
u8 set_affil_pol:1;
|
||||
u8 stp_affil_pol:1;
|
||||
u8 return_fis_on_success:1;
|
||||
|
||||
u8 device_control_reg_update:1;
|
||||
@ -583,12 +560,8 @@ enum task_attribute {
|
||||
};
|
||||
|
||||
struct sas_ssp_task {
|
||||
u8 retry_count; /* hardware retry, should be > 0 */
|
||||
|
||||
u8 LUN[8];
|
||||
u8 enable_first_burst:1;
|
||||
enum task_attribute task_attr;
|
||||
u8 task_prio;
|
||||
struct scsi_cmnd *cmd;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user