aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpi3mr/mpi3mr.h
diff options
context:
space:
mode:
authorSreekanth Reddy <sreekanth.reddy@broadcom.com>2022-08-04 18:42:17 +0530
committerMartin K. Petersen <martin.petersen@oracle.com>2022-08-22 23:34:05 -0400
commit125ad1e6b445e8538e50d77d9c82ec811e98895e (patch)
tree0bdc5cf5c50326cb6803a6689d3a427ec8eb7c48 /drivers/scsi/mpi3mr/mpi3mr.h
parentscsi: mpi3mr: Add framework to add phys to STL (diff)
downloadlinux-rng-125ad1e6b445e8538e50d77d9c82ec811e98895e.tar.xz
linux-rng-125ad1e6b445e8538e50d77d9c82ec811e98895e.zip
scsi: mpi3mr: Add helper functions to retrieve device objects
Add the following helper functions: - Get the device's sas address by reading corresponding device's Device page0 - Get the expander object from expander list based on expander's handle - Get the target device object from target device list based on device's sas address - Get the expander device object from expander list based on expanders's sas address - Get hba port object from hba port table list based on port's port id Link: https://lore.kernel.org/r/20220804131226.16653-7-sreekanth.reddy@broadcom.com Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com> Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/mpi3mr/mpi3mr.h')
-rw-r--r--drivers/scsi/mpi3mr/mpi3mr.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/scsi/mpi3mr/mpi3mr.h b/drivers/scsi/mpi3mr/mpi3mr.h
index 006bc5dc71ab..742caf52b27a 100644
--- a/drivers/scsi/mpi3mr/mpi3mr.h
+++ b/drivers/scsi/mpi3mr/mpi3mr.h
@@ -570,10 +570,12 @@ struct mpi3mr_enclosure_node {
*
* @sas_address: World wide unique SAS address
* @dev_info: Device information bits
+ * @hba_port: HBA port entry
*/
struct tgt_dev_sas_sata {
u64 sas_address;
u16 dev_info;
+ struct mpi3mr_hba_port *hba_port;
};
/**
@@ -984,6 +986,10 @@ struct scmd_priv {
* @cfg_page: Default memory for configuration pages
* @cfg_page_dma: Configuration page DMA address
* @cfg_page_sz: Default configuration page memory size
+ * @sas_hba: SAS node for the controller
+ * @sas_expander_list: SAS node list of expanders
+ * @sas_node_lock: Lock to protect SAS node list
+ * @hba_port_table_list: List of HBA Ports
* @enclosure_list: List of Enclosure objects
*/
struct mpi3mr_ioc {
@@ -1162,6 +1168,10 @@ struct mpi3mr_ioc {
dma_addr_t cfg_page_dma;
u16 cfg_page_sz;
+ struct mpi3mr_sas_node sas_hba;
+ struct list_head sas_expander_list;
+ spinlock_t sas_node_lock;
+ struct list_head hba_port_table_list;
struct list_head enclosure_list;
};
@@ -1317,4 +1327,8 @@ int mpi3mr_cfg_set_sas_io_unit_pg1(struct mpi3mr_ioc *mrioc,
struct mpi3_sas_io_unit_page1 *sas_io_unit_pg1, u16 pg_sz);
int mpi3mr_cfg_get_driver_pg1(struct mpi3mr_ioc *mrioc,
struct mpi3_driver_page1 *driver_pg1, u16 pg_sz);
+
+u8 mpi3mr_is_expander_device(u16 device_info);
+struct mpi3mr_hba_port *mpi3mr_get_hba_port_by_id(struct mpi3mr_ioc *mrioc,
+ u8 port_id);
#endif /*MPI3MR_H_INCLUDED*/