{
        u16 *p = _p;
        u16 reg;
+       int err;
        int i;
 
        if (!mv88e6352_port_has_serdes(chip, port))
                return;
 
        for (i = 0 ; i < 32; i++) {
-               mv88e6352_serdes_read(chip, i, ®);
-               p[i] = reg;
+               err = mv88e6352_serdes_read(chip, i, ®);
+               if (!err)
+                       p[i] = reg;
        }
 }
 
        u16 *p = _p;
        int lane;
        u16 reg;
+       int err;
        int i;
 
        lane = mv88e6xxx_serdes_get_lane(chip, port);
                return;
 
        for (i = 0 ; i < ARRAY_SIZE(mv88e6390_serdes_regs); i++) {
-               mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS,
-                                     mv88e6390_serdes_regs[i], ®);
-               p[i] = reg;
+               err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS,
+                                           mv88e6390_serdes_regs[i], ®);
+               if (!err)
+                       p[i] = reg;
        }
 }