|
@@ -1718,9 +1718,17 @@ static int sas_find_bcast_phy(struct domain_device *dev, int *phy_id,
|
|
int phy_change_count = 0;
|
|
int phy_change_count = 0;
|
|
|
|
|
|
res = sas_get_phy_change_count(dev, i, &phy_change_count);
|
|
res = sas_get_phy_change_count(dev, i, &phy_change_count);
|
|
- if (res)
|
|
|
|
- goto out;
|
|
|
|
- else if (phy_change_count != ex->ex_phy[i].phy_change_count) {
|
|
|
|
|
|
+ switch (res) {
|
|
|
|
+ case SMP_RESP_PHY_VACANT:
|
|
|
|
+ case SMP_RESP_NO_PHY:
|
|
|
|
+ continue;
|
|
|
|
+ case SMP_RESP_FUNC_ACC:
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ return res;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (phy_change_count != ex->ex_phy[i].phy_change_count) {
|
|
if (update)
|
|
if (update)
|
|
ex->ex_phy[i].phy_change_count =
|
|
ex->ex_phy[i].phy_change_count =
|
|
phy_change_count;
|
|
phy_change_count;
|
|
@@ -1728,8 +1736,7 @@ static int sas_find_bcast_phy(struct domain_device *dev, int *phy_id,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-out:
|
|
|
|
- return res;
|
|
|
|
|
|
+ return 0;
|
|
}
|
|
}
|
|
|
|
|
|
static int sas_get_ex_change_count(struct domain_device *dev, int *ecc)
|
|
static int sas_get_ex_change_count(struct domain_device *dev, int *ecc)
|