Lines Matching refs:mr_sas_port
594 struct mpi3mr_sas_port *mr_sas_port, in mpi3mr_delete_sas_phy() argument
597 u64 sas_address = mr_sas_port->remote_identify.sas_address; in mpi3mr_delete_sas_phy()
604 mr_sas_port->num_phys--; in mpi3mr_delete_sas_phy()
605 mr_sas_port->phy_mask &= ~(1 << mr_sas_phy->phy_id); in mpi3mr_delete_sas_phy()
606 if (mr_sas_port->lowest_phy == mr_sas_phy->phy_id) in mpi3mr_delete_sas_phy()
607 mr_sas_port->lowest_phy = ffs(mr_sas_port->phy_mask) - 1; in mpi3mr_delete_sas_phy()
608 sas_port_delete_phy(mr_sas_port->port, mr_sas_phy->phy); in mpi3mr_delete_sas_phy()
621 struct mpi3mr_sas_port *mr_sas_port, in mpi3mr_add_sas_phy() argument
624 u64 sas_address = mr_sas_port->remote_identify.sas_address; in mpi3mr_add_sas_phy()
630 list_add_tail(&mr_sas_phy->port_siblings, &mr_sas_port->phy_list); in mpi3mr_add_sas_phy()
631 mr_sas_port->num_phys++; in mpi3mr_add_sas_phy()
632 mr_sas_port->phy_mask |= (1 << mr_sas_phy->phy_id); in mpi3mr_add_sas_phy()
633 if (mr_sas_phy->phy_id < mr_sas_port->lowest_phy) in mpi3mr_add_sas_phy()
634 mr_sas_port->lowest_phy = ffs(mr_sas_port->phy_mask) - 1; in mpi3mr_add_sas_phy()
635 sas_port_add_phy(mr_sas_port->port, mr_sas_phy->phy); in mpi3mr_add_sas_phy()
654 struct mpi3mr_sas_port *mr_sas_port; in mpi3mr_add_phy_to_an_existing_port() local
663 list_for_each_entry(mr_sas_port, &mr_sas_node->sas_port_list, in mpi3mr_add_phy_to_an_existing_port()
665 if (mr_sas_port->remote_identify.sas_address != in mpi3mr_add_phy_to_an_existing_port()
668 if (mr_sas_port->hba_port != hba_port) in mpi3mr_add_phy_to_an_existing_port()
670 list_for_each_entry(srch_phy, &mr_sas_port->phy_list, in mpi3mr_add_phy_to_an_existing_port()
675 mpi3mr_add_sas_phy(mrioc, mr_sas_port, mr_sas_phy); in mpi3mr_add_phy_to_an_existing_port()
688 struct mpi3mr_sas_port *mr_sas_port) in mpi3mr_delete_sas_port() argument
690 u64 sas_address = mr_sas_port->remote_identify.sas_address; in mpi3mr_delete_sas_port()
691 struct mpi3mr_hba_port *hba_port = mr_sas_port->hba_port; in mpi3mr_delete_sas_port()
693 mr_sas_port->remote_identify.device_type; in mpi3mr_delete_sas_port()
695 dev_info(&mr_sas_port->port->dev, in mpi3mr_delete_sas_port()
719 struct mpi3mr_sas_port *mr_sas_port, *next; in mpi3mr_del_phy_from_an_existing_port() local
725 list_for_each_entry_safe(mr_sas_port, next, &mr_sas_node->sas_port_list, in mpi3mr_del_phy_from_an_existing_port()
727 list_for_each_entry(srch_phy, &mr_sas_port->phy_list, in mpi3mr_del_phy_from_an_existing_port()
731 if ((mr_sas_port->num_phys == 1) && in mpi3mr_del_phy_from_an_existing_port()
733 mpi3mr_delete_sas_port(mrioc, mr_sas_port); in mpi3mr_del_phy_from_an_existing_port()
735 mpi3mr_delete_sas_phy(mrioc, mr_sas_port, in mpi3mr_del_phy_from_an_existing_port()
1310 struct mpi3mr_sas_port *mr_sas_port; in mpi3mr_sas_port_add() local
1324 mr_sas_port = kzalloc(sizeof(struct mpi3mr_sas_port), GFP_KERNEL); in mpi3mr_sas_port_add()
1325 if (!mr_sas_port) in mpi3mr_sas_port_add()
1328 INIT_LIST_HEAD(&mr_sas_port->port_list); in mpi3mr_sas_port_add()
1329 INIT_LIST_HEAD(&mr_sas_port->phy_list); in mpi3mr_sas_port_add()
1342 &mr_sas_port->remote_identify))) { in mpi3mr_sas_port_add()
1348 if (mr_sas_port->remote_identify.device_type == SAS_PHY_UNUSED) { in mpi3mr_sas_port_add()
1354 mr_sas_port->hba_port = hba_port; in mpi3mr_sas_port_add()
1356 mr_sas_port->remote_identify.sas_address, hba_port); in mpi3mr_sas_port_add()
1358 if (mr_sas_node->num_phys > sizeof(mr_sas_port->phy_mask) * 8) in mpi3mr_sas_port_add()
1364 mr_sas_port->remote_identify.sas_address) || in mpi3mr_sas_port_add()
1368 if (i > sizeof(mr_sas_port->phy_mask) * 8) { in mpi3mr_sas_port_add()
1370 i, sizeof(mr_sas_port->phy_mask) * 8); in mpi3mr_sas_port_add()
1374 &mr_sas_port->phy_list); in mpi3mr_sas_port_add()
1375 mr_sas_port->num_phys++; in mpi3mr_sas_port_add()
1376 mr_sas_port->phy_mask |= (1 << i); in mpi3mr_sas_port_add()
1379 if (!mr_sas_port->num_phys) { in mpi3mr_sas_port_add()
1385 mr_sas_port->lowest_phy = ffs(mr_sas_port->phy_mask) - 1; in mpi3mr_sas_port_add()
1387 if (mr_sas_port->remote_identify.device_type == SAS_END_DEVICE) { in mpi3mr_sas_port_add()
1389 mr_sas_port->remote_identify.sas_address, in mpi3mr_sas_port_add()
1390 mr_sas_port->hba_port); in mpi3mr_sas_port_add()
1413 list_for_each_entry(mr_sas_phy, &mr_sas_port->phy_list, in mpi3mr_sas_port_add()
1419 mr_sas_port->remote_identify.sas_address, in mpi3mr_sas_port_add()
1426 mr_sas_port->port = port; in mpi3mr_sas_port_add()
1427 if (mr_sas_port->remote_identify.device_type == SAS_END_DEVICE) { in mpi3mr_sas_port_add()
1432 mr_sas_port->remote_identify.device_type); in mpi3mr_sas_port_add()
1434 rphy->identify = mr_sas_port->remote_identify; in mpi3mr_sas_port_add()
1443 if (mr_sas_port->remote_identify.device_type == SAS_END_DEVICE) { in mpi3mr_sas_port_add()
1452 mr_sas_port->remote_identify.sas_address); in mpi3mr_sas_port_add()
1454 mr_sas_port->rphy = rphy; in mpi3mr_sas_port_add()
1456 list_add_tail(&mr_sas_port->port_list, &mr_sas_node->sas_port_list); in mpi3mr_sas_port_add()
1466 if (mr_sas_port->remote_identify.device_type == in mpi3mr_sas_port_add()
1468 mr_sas_port->remote_identify.device_type == in mpi3mr_sas_port_add()
1471 mr_sas_port->remote_identify.sas_address, in mpi3mr_sas_port_add()
1474 return mr_sas_port; in mpi3mr_sas_port_add()
1477 list_for_each_entry_safe(mr_sas_phy, next, &mr_sas_port->phy_list, in mpi3mr_sas_port_add()
1480 kfree(mr_sas_port); in mpi3mr_sas_port_add()
1501 struct mpi3mr_sas_port *mr_sas_port, *next; in mpi3mr_sas_port_remove() local
1517 list_for_each_entry_safe(mr_sas_port, next, &mr_sas_node->sas_port_list, in mpi3mr_sas_port_remove()
1519 if (mr_sas_port->remote_identify.sas_address != sas_address) in mpi3mr_sas_port_remove()
1521 if (mr_sas_port->hba_port != hba_port) in mpi3mr_sas_port_remove()
1524 list_del(&mr_sas_port->port_list); in mpi3mr_sas_port_remove()
1561 &mr_sas_port->phy_list, port_siblings) { in mpi3mr_sas_port_remove()
1564 dev_info(&mr_sas_port->port->dev, in mpi3mr_sas_port_remove()
1567 mr_sas_port->remote_identify.sas_address, in mpi3mr_sas_port_remove()
1571 sas_port_delete_phy(mr_sas_port->port, in mpi3mr_sas_port_remove()
1576 sas_port_delete(mr_sas_port->port); in mpi3mr_sas_port_remove()
1586 kfree(mr_sas_port); in mpi3mr_sas_port_remove()
1621 struct mpi3mr_sas_port *mr_sas_port) in mpi3mr_update_mr_sas_port() argument
1629 mr_sas_port->marked_responding = 1; in mpi3mr_update_mr_sas_port()
1631 dev_info(&mr_sas_port->port->dev, in mpi3mr_update_mr_sas_port()
1633 mr_sas_port->remote_identify.sas_address, in mpi3mr_update_mr_sas_port()
1634 mr_sas_port->hba_port->port_id, mr_sas_port->phy_mask, in mpi3mr_update_mr_sas_port()
1637 mr_sas_port->hba_port->port_id = h_port->iounit_port_id; in mpi3mr_update_mr_sas_port()
1638 mr_sas_port->hba_port->flags &= ~MPI3MR_HBA_PORT_FLAG_DIRTY; in mpi3mr_update_mr_sas_port()
1641 phy_mask_xor = mr_sas_port->phy_mask ^ h_port->phy_mask; in mpi3mr_update_mr_sas_port()
1643 phys_to_be_removed = mr_sas_port->phy_mask & phy_mask_xor; in mpi3mr_update_mr_sas_port()
1657 mr_sas_port->remote_identify.sas_address, in mpi3mr_update_mr_sas_port()
1658 mr_sas_port->hba_port); in mpi3mr_update_mr_sas_port()
1690 struct mpi3mr_sas_port *mr_sas_port; in mpi3mr_refresh_sas_ports() local
1752 list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list, in mpi3mr_refresh_sas_ports()
1756 mr_sas_port->hba_port->port_id, in mpi3mr_refresh_sas_ports()
1757 mr_sas_port->remote_identify.sas_address, in mpi3mr_refresh_sas_ports()
1758 mr_sas_port->phy_mask, mr_sas_port->lowest_phy); in mpi3mr_refresh_sas_ports()
1760 mr_sas_port = NULL; in mpi3mr_refresh_sas_ports()
1771 list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list, in mpi3mr_refresh_sas_ports()
1773 mr_sas_port->marked_responding = 0; in mpi3mr_refresh_sas_ports()
1774 mr_sas_port->hba_port->flags |= MPI3MR_HBA_PORT_FLAG_DIRTY; in mpi3mr_refresh_sas_ports()
1779 mr_sas_port = NULL; in mpi3mr_refresh_sas_ports()
1780 list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list, in mpi3mr_refresh_sas_ports()
1782 if (mr_sas_port->marked_responding) in mpi3mr_refresh_sas_ports()
1784 if (h_port[i].sas_address != mr_sas_port->remote_identify.sas_address) in mpi3mr_refresh_sas_ports()
1786 if (h_port[i].lowest_phy == mr_sas_port->lowest_phy) { in mpi3mr_refresh_sas_ports()
1787 mpi3mr_update_mr_sas_port(mrioc, &h_port[i], mr_sas_port); in mpi3mr_refresh_sas_ports()
1797 mr_sas_port = NULL; in mpi3mr_refresh_sas_ports()
1798 list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list, in mpi3mr_refresh_sas_ports()
1800 if (mr_sas_port->marked_responding) in mpi3mr_refresh_sas_ports()
1802 if (h_port[i].sas_address != mr_sas_port->remote_identify.sas_address) in mpi3mr_refresh_sas_ports()
1804 if (h_port[i].phy_mask & mr_sas_port->phy_mask) { in mpi3mr_refresh_sas_ports()
1805 mpi3mr_update_mr_sas_port(mrioc, &h_port[i], mr_sas_port); in mpi3mr_refresh_sas_ports()
1815 mr_sas_port = NULL; in mpi3mr_refresh_sas_ports()
1816 list_for_each_entry(mr_sas_port, &mrioc->sas_hba.sas_port_list, in mpi3mr_refresh_sas_ports()
1818 if (mr_sas_port->marked_responding) in mpi3mr_refresh_sas_ports()
1820 if (h_port[i].sas_address != mr_sas_port->remote_identify.sas_address) in mpi3mr_refresh_sas_ports()
1822 mpi3mr_update_mr_sas_port(mrioc, &h_port[i], mr_sas_port); in mpi3mr_refresh_sas_ports()
1970 struct mpi3mr_sas_port *mr_sas_port = NULL; in mpi3mr_expander_add() local
2096 mr_sas_port = mpi3mr_sas_port_add(mrioc, handle, sas_address_parent, in mpi3mr_expander_add()
2098 if (!mr_sas_port) { in mpi3mr_expander_add()
2104 sas_expander->parent_dev = &mr_sas_port->rphy->dev; in mpi3mr_expander_add()
2105 sas_expander->rphy = mr_sas_port->rphy; in mpi3mr_expander_add()
2153 if (mr_sas_port) in mpi3mr_expander_add()
2177 struct mpi3mr_sas_port *mr_sas_port, *next; in mpi3mr_expander_node_remove() local
2182 list_for_each_entry_safe(mr_sas_port, next, in mpi3mr_expander_node_remove()
2186 if (mr_sas_port->remote_identify.device_type == in mpi3mr_expander_node_remove()
2189 mr_sas_port->remote_identify.sas_address, in mpi3mr_expander_node_remove()
2190 mr_sas_port->hba_port); in mpi3mr_expander_node_remove()
2191 else if (mr_sas_port->remote_identify.device_type == in mpi3mr_expander_node_remove()
2193 mr_sas_port->remote_identify.device_type == in mpi3mr_expander_node_remove()
2196 mr_sas_port->remote_identify.sas_address, in mpi3mr_expander_node_remove()
2197 mr_sas_port->hba_port); in mpi3mr_expander_node_remove()