]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: libsas: Simplify sas_check_eeds()
authorJason Yan <yanaijie@huawei.com>
Fri, 21 Apr 2023 09:37:42 +0000 (17:37 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 8 May 2023 11:16:18 +0000 (07:16 -0400)
In sas_check_eeds() there is an empty branch. We can reverse the test
expression and then remove the empty branch. Also the test expression is a
little bit complex so it deserves an individual function. And make the
continuing prototype lines indented after the opening parenthesis to follow
the standard coding style.

Signed-off-by: Jason Yan <yanaijie@huawei.com>
Link: https://lore.kernel.org/r/20230421093744.1583609-2-yanaijie@huawei.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/libsas/sas_expander.c

index dc670304f181fc741ff8a787e9afa3a64ea6cd88..e6101a511cc7d0a268ac25b098cb3a427f7545a1 100644 (file)
@@ -1198,37 +1198,37 @@ static void sas_print_parent_topology_bug(struct domain_device *child,
                  sas_route_char(child, child_phy));
 }
 
+static bool sas_eeds_valid(struct domain_device *parent,
+                          struct domain_device *child)
+{
+       struct sas_discovery *disc = &parent->port->disc;
+
+       return (SAS_ADDR(disc->eeds_a) == SAS_ADDR(parent->sas_addr) ||
+               SAS_ADDR(disc->eeds_a) == SAS_ADDR(child->sas_addr)) &&
+              (SAS_ADDR(disc->eeds_b) == SAS_ADDR(parent->sas_addr) ||
+               SAS_ADDR(disc->eeds_b) == SAS_ADDR(child->sas_addr));
+}
+
 static int sas_check_eeds(struct domain_device *child,
-                                struct ex_phy *parent_phy,
-                                struct ex_phy *child_phy)
+                         struct ex_phy *parent_phy,
+                         struct ex_phy *child_phy)
 {
        int res = 0;
        struct domain_device *parent = child->parent;
+       struct sas_discovery *disc = &parent->port->disc;
 
-       if (SAS_ADDR(parent->port->disc.fanout_sas_addr) != 0) {
+       if (SAS_ADDR(disc->fanout_sas_addr) != 0) {
                res = -ENODEV;
                pr_warn("edge ex %016llx phy S:%02d <--> edge ex %016llx phy S:%02d, while there is a fanout ex %016llx\n",
                        SAS_ADDR(parent->sas_addr),
                        parent_phy->phy_id,
                        SAS_ADDR(child->sas_addr),
                        child_phy->phy_id,
-                       SAS_ADDR(parent->port->disc.fanout_sas_addr));
-       } else if (SAS_ADDR(parent->port->disc.eeds_a) == 0) {
-               memcpy(parent->port->disc.eeds_a, parent->sas_addr,
-                      SAS_ADDR_SIZE);
-               memcpy(parent->port->disc.eeds_b, child->sas_addr,
-                      SAS_ADDR_SIZE);
-       } else if (((SAS_ADDR(parent->port->disc.eeds_a) ==
-                   SAS_ADDR(parent->sas_addr)) ||
-                  (SAS_ADDR(parent->port->disc.eeds_a) ==
-                   SAS_ADDR(child->sas_addr)))
-                  &&
-                  ((SAS_ADDR(parent->port->disc.eeds_b) ==
-                    SAS_ADDR(parent->sas_addr)) ||
-                   (SAS_ADDR(parent->port->disc.eeds_b) ==
-                    SAS_ADDR(child->sas_addr))))
-               ;
-       else {
+                       SAS_ADDR(disc->fanout_sas_addr));
+       } else if (SAS_ADDR(disc->eeds_a) == 0) {
+               memcpy(disc->eeds_a, parent->sas_addr, SAS_ADDR_SIZE);
+               memcpy(disc->eeds_b, child->sas_addr, SAS_ADDR_SIZE);
+       } else if (!sas_eeds_valid(parent, child)) {
                res = -ENODEV;
                pr_warn("edge ex %016llx phy%02d <--> edge ex %016llx phy%02d link forms a third EEDS!\n",
                        SAS_ADDR(parent->sas_addr),