Index: head/sys/dev/sfxge/common/ef10_vpd.c =================================================================== --- head/sys/dev/sfxge/common/ef10_vpd.c +++ head/sys/dev/sfxge/common/ef10_vpd.c @@ -332,8 +332,11 @@ /* And then from the provided data buffer */ if ((rc = efx_vpd_hunk_get(data, size, evvp->evv_tag, - evvp->evv_keyword, &offset, &length)) != 0) + evvp->evv_keyword, &offset, &length)) != 0) { + if (rc == ENOENT) + return (rc); goto fail2; + } evvp->evv_length = length; memcpy(evvp->evv_value, data + offset, length); Index: head/sys/dev/sfxge/common/efx_vpd.c =================================================================== --- head/sys/dev/sfxge/common/efx_vpd.c +++ head/sys/dev/sfxge/common/efx_vpd.c @@ -253,8 +253,12 @@ EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC); EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_VPD); - if ((rc = evpdop->evpdo_get(enp, data, size, evvp)) != 0) + if ((rc = evpdop->evpdo_get(enp, data, size, evvp)) != 0) { + if (rc == ENOENT) + return (rc); + goto fail1; + } return (0); Index: head/sys/dev/sfxge/common/siena_vpd.c =================================================================== --- head/sys/dev/sfxge/common/siena_vpd.c +++ head/sys/dev/sfxge/common/siena_vpd.c @@ -436,8 +436,12 @@ /* And then from the provided data buffer */ if ((rc = efx_vpd_hunk_get(data, size, evvp->evv_tag, - evvp->evv_keyword, &offset, &length)) != 0) + evvp->evv_keyword, &offset, &length)) != 0) { + if (rc == ENOENT) + return (rc); + goto fail2; + } evvp->evv_length = length; memcpy(evvp->evv_value, data + offset, length);