diff mbox series

mpt3sas: only one vSES is handy even IOC has multi vSES

Message ID 20210330105004.20413-1-sreekanth.reddy@broadcom.com (mailing list archive)
State Accepted
Headers show
Series mpt3sas: only one vSES is handy even IOC has multi vSES | expand

Commit Message

Sreekanth Reddy March 30, 2021, 10:50 a.m. UTC
Whenever the driver is adding the vSES to virtual-phys list then
the driver is reinitializing this list every time. Hence those
vSES devices which were added earlier to this same list are lost.
So, Even though multiple vSES devices are configured in IOC;
but while scanning the vSES devices driver finds only one vSES device
in the list and hence adds only that device to SML.
So, don't reinitialize this list every time a new vSES device is
added to it.

Cc: stable@vger.kernel.org #v5.11.10+
Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
---
 drivers/scsi/mpt3sas/mpt3sas_scsih.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Martin K. Petersen April 13, 2021, 5:48 a.m. UTC | #1
On Tue, 30 Mar 2021 16:20:04 +0530, Sreekanth Reddy wrote:

> Whenever the driver is adding the vSES to virtual-phys list then
> the driver is reinitializing this list every time. Hence those
> vSES devices which were added earlier to this same list are lost.
> So, Even though multiple vSES devices are configured in IOC;
> but while scanning the vSES devices driver finds only one vSES device
> in the list and hence adds only that device to SML.
> So, don't reinitialize this list every time a new vSES device is
> added to it.

Applied to 5.13/scsi-queue, thanks!

[1/1] mpt3sas: only one vSES is handy even IOC has multi vSES
      https://git.kernel.org/mkp/scsi/c/4c51f9569651
diff mbox series

Patch

diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index 6aa6de729187..ae1973878cc7 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -6483,6 +6483,9 @@  _scsih_alloc_vphy(struct MPT3SAS_ADAPTER *ioc, u8 port_id, u8 phy_num)
 		if (!vphy)
 			return NULL;
 
+		if (!port->vphys_mask)
+			INIT_LIST_HEAD(&port->vphys_list);
+
 		/*
 		 * Enable bit corresponding to HBA phy number on its
 		 * parent hba_port object's vphys_mask field.
@@ -6490,7 +6493,6 @@  _scsih_alloc_vphy(struct MPT3SAS_ADAPTER *ioc, u8 port_id, u8 phy_num)
 		port->vphys_mask |= (1 << phy_num);
 		vphy->phy_mask |= (1 << phy_num);
 
-		INIT_LIST_HEAD(&port->vphys_list);
 		list_add_tail(&vphy->list, &port->vphys_list);
 
 		ioc_info(ioc,