Skip to content

Commit cb5b608

Browse files
sumitsaxena11martinkpetersen
authored andcommitted
scsi: mpi3mr: Increase maximum number of PHYs to 64 from 32
SAS5116 controllers supports maximum 48 physical PHYs. Modify driver to accommodate up to 64 PHYs (though current need is to support 48 PHYs). Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com> Link: https://lore.kernel.org/r/20231123160132.4155-4-sumit.saxena@broadcom.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent c9260ff commit cb5b608

2 files changed

Lines changed: 9 additions & 9 deletions

File tree

drivers/scsi/mpi3mr/mpi3mr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -506,7 +506,7 @@ struct mpi3mr_sas_port {
506506
u8 num_phys;
507507
u8 marked_responding;
508508
int lowest_phy;
509-
u32 phy_mask;
509+
u64 phy_mask;
510510
struct mpi3mr_hba_port *hba_port;
511511
struct sas_identify remote_identify;
512512
struct sas_rphy *rphy;

drivers/scsi/mpi3mr/mpi3mr_transport.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,7 +1587,7 @@ static void mpi3mr_sas_port_remove(struct mpi3mr_ioc *mrioc, u64 sas_address,
15871587
*/
15881588
struct host_port {
15891589
u64 sas_address;
1590-
u32 phy_mask;
1590+
u64 phy_mask;
15911591
u16 handle;
15921592
u8 iounit_port_id;
15931593
u8 used;
@@ -1611,15 +1611,15 @@ mpi3mr_update_mr_sas_port(struct mpi3mr_ioc *mrioc, struct host_port *h_port,
16111611
struct mpi3mr_sas_port *mr_sas_port)
16121612
{
16131613
struct mpi3mr_sas_phy *mr_sas_phy;
1614-
u32 phy_mask_xor;
1614+
u64 phy_mask_xor;
16151615
u64 phys_to_be_added, phys_to_be_removed;
16161616
int i;
16171617

16181618
h_port->used = 1;
16191619
mr_sas_port->marked_responding = 1;
16201620

16211621
dev_info(&mr_sas_port->port->dev,
1622-
"sas_address(0x%016llx), old: port_id %d phy_mask 0x%x, new: port_id %d phy_mask:0x%x\n",
1622+
"sas_address(0x%016llx), old: port_id %d phy_mask 0x%llx, new: port_id %d phy_mask:0x%llx\n",
16231623
mr_sas_port->remote_identify.sas_address,
16241624
mr_sas_port->hba_port->port_id, mr_sas_port->phy_mask,
16251625
h_port->iounit_port_id, h_port->phy_mask);
@@ -1637,7 +1637,7 @@ mpi3mr_update_mr_sas_port(struct mpi3mr_ioc *mrioc, struct host_port *h_port,
16371637
* if these phys are previously registered with another port
16381638
* then delete these phys from that port first.
16391639
*/
1640-
for_each_set_bit(i, (ulong *) &phys_to_be_added, BITS_PER_TYPE(u32)) {
1640+
for_each_set_bit(i, (ulong *) &phys_to_be_added, BITS_PER_TYPE(u64)) {
16411641
mr_sas_phy = &mrioc->sas_hba.phy[i];
16421642
if (mr_sas_phy->phy_belongs_to_port)
16431643
mpi3mr_del_phy_from_an_existing_port(mrioc,
@@ -1649,7 +1649,7 @@ mpi3mr_update_mr_sas_port(struct mpi3mr_ioc *mrioc, struct host_port *h_port,
16491649
}
16501650

16511651
/* Delete the phys which are not part of current mr_sas_port's port. */
1652-
for_each_set_bit(i, (ulong *) &phys_to_be_removed, BITS_PER_TYPE(u32)) {
1652+
for_each_set_bit(i, (ulong *) &phys_to_be_removed, BITS_PER_TYPE(u64)) {
16531653
mr_sas_phy = &mrioc->sas_hba.phy[i];
16541654
if (mr_sas_phy->phy_belongs_to_port)
16551655
mpi3mr_del_phy_from_an_existing_port(mrioc,
@@ -1671,7 +1671,7 @@ mpi3mr_update_mr_sas_port(struct mpi3mr_ioc *mrioc, struct host_port *h_port,
16711671
void
16721672
mpi3mr_refresh_sas_ports(struct mpi3mr_ioc *mrioc)
16731673
{
1674-
struct host_port h_port[32];
1674+
struct host_port h_port[64];
16751675
int i, j, found, host_port_count = 0, port_idx;
16761676
u16 sz, attached_handle, ioc_status;
16771677
struct mpi3_sas_io_unit_page0 *sas_io_unit_pg0 = NULL;
@@ -1742,7 +1742,7 @@ mpi3mr_refresh_sas_ports(struct mpi3mr_ioc *mrioc)
17421742
list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list,
17431743
port_list) {
17441744
ioc_info(mrioc,
1745-
"port_id:%d, sas_address:(0x%016llx), phy_mask:(0x%x), lowest phy id:%d\n",
1745+
"port_id:%d, sas_address:(0x%016llx), phy_mask:(0x%llx), lowest phy id:%d\n",
17461746
mr_sas_port->hba_port->port_id,
17471747
mr_sas_port->remote_identify.sas_address,
17481748
mr_sas_port->phy_mask, mr_sas_port->lowest_phy);
@@ -1751,7 +1751,7 @@ mpi3mr_refresh_sas_ports(struct mpi3mr_ioc *mrioc)
17511751
ioc_info(mrioc, "Host port details after reset\n");
17521752
for (i = 0; i < host_port_count; i++) {
17531753
ioc_info(mrioc,
1754-
"port_id:%d, sas_address:(0x%016llx), phy_mask:(0x%x), lowest phy id:%d\n",
1754+
"port_id:%d, sas_address:(0x%016llx), phy_mask:(0x%llx), lowest phy id:%d\n",
17551755
h_port[i].iounit_port_id, h_port[i].sas_address,
17561756
h_port[i].phy_mask, h_port[i].lowest_phy);
17571757
}

0 commit comments

Comments
 (0)