Я делаю так. При инициализации lwip сразу ставлю флаги netif->flags |= NETIF_FLAG_UP|NETIF_FLAG_LINK_UP; А сразу после инициализации провожу первичную проверку. Флаги NETIF_FLAG_UP и NETIF_FLAG_LINK_UP важны для инициализации lwip, без их установки инициализация у меня проходила криво.
// Первичная проверка линка
reg = PHY_REG_READ(PHY_ADR, PHY_REG_BSR);
if (reg & PHY_BSR_LU)
{
netif->flags |= NETIF_FLAG_LINK_UP|NETIF_FLAG_UP;
}
else
{
netif->flags &= ~(NETIF_FLAG_LINK_UP|NETIF_FLAG_UP);
}