scsi: aacraid: Move function around to match existing code
Move the function to get phy luns information to the top of function to set target information Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
3edfb8b2e2
commit
a25b6ca1a9
drivers/scsi/aacraid
|
@ -1791,6 +1791,62 @@ out:
|
||||||
return rcode;
|
return rcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void aac_free_safw_ciss_luns(struct aac_dev *dev)
|
||||||
|
{
|
||||||
|
kfree(dev->safw_phys_luns);
|
||||||
|
dev->safw_phys_luns = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* aac_get_safw_ciss_luns() Process topology change
|
||||||
|
* @dev: aac_dev structure
|
||||||
|
* @rescan: Indicates rescan
|
||||||
|
*
|
||||||
|
* Execute a CISS REPORT PHYS LUNS and process the results into
|
||||||
|
* the current hba_map.
|
||||||
|
*/
|
||||||
|
static int aac_get_safw_ciss_luns(struct aac_dev *dev, int rescan)
|
||||||
|
{
|
||||||
|
int rcode = -ENOMEM;
|
||||||
|
int datasize;
|
||||||
|
struct aac_srb *srbcmd;
|
||||||
|
struct aac_srb_unit srbu;
|
||||||
|
struct aac_ciss_phys_luns_resp *phys_luns;
|
||||||
|
|
||||||
|
datasize = sizeof(struct aac_ciss_phys_luns_resp) +
|
||||||
|
(AAC_MAX_TARGETS - 1) * sizeof(struct _ciss_lun);
|
||||||
|
phys_luns = kmalloc(datasize, GFP_KERNEL);
|
||||||
|
if (phys_luns == NULL)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
memset(&srbu, 0, sizeof(struct aac_srb_unit));
|
||||||
|
|
||||||
|
srbcmd = &srbu.srb;
|
||||||
|
srbcmd->flags = cpu_to_le32(SRB_DataIn);
|
||||||
|
srbcmd->cdb[0] = CISS_REPORT_PHYSICAL_LUNS;
|
||||||
|
srbcmd->cdb[1] = 2; /* extended reporting */
|
||||||
|
srbcmd->cdb[8] = (u8)(datasize >> 8);
|
||||||
|
srbcmd->cdb[9] = (u8)(datasize);
|
||||||
|
|
||||||
|
rcode = aac_send_safw_bmic_cmd(dev, &srbu, phys_luns, datasize);
|
||||||
|
if (unlikely(rcode < 0))
|
||||||
|
goto mem_free_all;
|
||||||
|
|
||||||
|
if (phys_luns->resp_flag != 2) {
|
||||||
|
rcode = -ENOMSG;
|
||||||
|
goto mem_free_all;
|
||||||
|
}
|
||||||
|
|
||||||
|
dev->safw_phys_luns = phys_luns;
|
||||||
|
|
||||||
|
out:
|
||||||
|
return rcode;
|
||||||
|
mem_free_all:
|
||||||
|
kfree(phys_luns);
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* aac_set_safw_attr_all_targets- update current hba map with data from FW
|
* aac_set_safw_attr_all_targets- update current hba map with data from FW
|
||||||
* @dev: aac_dev structure
|
* @dev: aac_dev structure
|
||||||
|
@ -1854,62 +1910,6 @@ update_devtype:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void aac_free_safw_ciss_luns(struct aac_dev *dev)
|
|
||||||
{
|
|
||||||
kfree(dev->safw_phys_luns);
|
|
||||||
dev->safw_phys_luns = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* aac_get_safw_ciss_luns() Process topology change
|
|
||||||
* @dev: aac_dev structure
|
|
||||||
* @rescan: Indicates rescan
|
|
||||||
*
|
|
||||||
* Execute a CISS REPORT PHYS LUNS and process the results into
|
|
||||||
* the current hba_map.
|
|
||||||
*/
|
|
||||||
static int aac_get_safw_ciss_luns(struct aac_dev *dev, int rescan)
|
|
||||||
{
|
|
||||||
int rcode = -ENOMEM;
|
|
||||||
int datasize;
|
|
||||||
struct aac_srb *srbcmd;
|
|
||||||
struct aac_srb_unit srbu;
|
|
||||||
struct aac_ciss_phys_luns_resp *phys_luns;
|
|
||||||
|
|
||||||
datasize = sizeof(struct aac_ciss_phys_luns_resp) +
|
|
||||||
(AAC_MAX_TARGETS - 1) * sizeof(struct _ciss_lun);
|
|
||||||
phys_luns = kmalloc(datasize, GFP_KERNEL);
|
|
||||||
if (phys_luns == NULL)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
memset(&srbu, 0, sizeof(struct aac_srb_unit));
|
|
||||||
|
|
||||||
srbcmd = &srbu.srb;
|
|
||||||
srbcmd->flags = cpu_to_le32(SRB_DataIn);
|
|
||||||
srbcmd->cdb[0] = CISS_REPORT_PHYSICAL_LUNS;
|
|
||||||
srbcmd->cdb[1] = 2; /* extended reporting */
|
|
||||||
srbcmd->cdb[8] = (u8)(datasize >> 8);
|
|
||||||
srbcmd->cdb[9] = (u8)(datasize);
|
|
||||||
|
|
||||||
rcode = aac_send_safw_bmic_cmd(dev, &srbu, phys_luns, datasize);
|
|
||||||
if (unlikely(rcode < 0))
|
|
||||||
goto mem_free_all;
|
|
||||||
|
|
||||||
if (phys_luns->resp_flag != 2) {
|
|
||||||
rcode = -ENOMSG;
|
|
||||||
goto mem_free_all;
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->safw_phys_luns = phys_luns;
|
|
||||||
|
|
||||||
out:
|
|
||||||
return rcode;
|
|
||||||
mem_free_all:
|
|
||||||
kfree(phys_luns);
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static int aac_setup_safw_targets(struct aac_dev *dev, int rescan)
|
static int aac_setup_safw_targets(struct aac_dev *dev, int rescan)
|
||||||
{
|
{
|
||||||
int rcode = 0;
|
int rcode = 0;
|
||||||
|
|
Loading…
Reference in New Issue