mvi_device->sas_device = dev;
        if (parent_dev && dev_is_expander(parent_dev->dev_type)) {
                int phy_id;
-               u8 phy_num = parent_dev->ex_dev.num_phys;
-               struct ex_phy *phy;
-               for (phy_id = 0; phy_id < phy_num; phy_id++) {
-                       phy = &parent_dev->ex_dev.ex_phy[phy_id];
-                       if (SAS_ADDR(phy->attached_sas_addr) ==
-                               SAS_ADDR(dev->sas_addr)) {
-                               mvi_device->attached_phy = phy_id;
-                               break;
-                       }
-               }
 
-               if (phy_id == phy_num) {
+               phy_id = sas_find_attached_phy_id(&parent_dev->ex_dev, dev);
+               if (phy_id < 0) {
                        mv_printk("Error: no attached dev:%016llx"
                                "at ex:%016llx.\n",
                                SAS_ADDR(dev->sas_addr),
                                SAS_ADDR(parent_dev->sas_addr));
-                       res = -1;
+                       res = phy_id;
+               } else {
+                       mvi_device->attached_phy = phy_id;
                }
        }