Olhando para os drivers / net / dummy.c e include / linux / netdevice.h , parece que o driver da interface de rede fictícia implementa apenas um pequeno subconjunto de operações do dispositivo de rede:
Da linha 112 do drivers / net /dummy.c aprendemos que:
static const struct net_device_ops dummy_netdev_ops = {
.ndo_init = dummy_dev_init,
.ndo_uninit = dummy_dev_uninit,
.ndo_start_xmit = dummy_xmit,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_rx_mode = set_multicast_list,
.ndo_set_mac_address = eth_mac_addr,
.ndo_get_stats64 = dummy_get_stats64,
.ndo_change_carrier = dummy_change_carrier,
};
Ao olhar para include / linux /netdevice.h , onde struct net_device_ops
está definido, parece haver (na linha 1057 para ser exato):
int (*ndo_set_vf_link_state)(struct net_device *dev,
int vf, int link_state);
Onde isso nos deixa em termos de dar uma resposta à sua pergunta, em vez de apenas colocar uma parede de texto aqui e esperar marcar +10? Bem, a resposta é sim ou não.
A fonte revela que sim, o estado DESCONHECIDO é o comportamento esperado porque não há nada que possa definir o estado, portanto, definitivamente deve ser DESCONHECIDO. Por outro lado, é razoável esperar que um usuário que traz uma interface fictícia para cima veja o estado mudar. Um exemplo clássico de expectativas razoáveis da perspectiva do usuário não atendidas por uma parte do kernel.
A próxima pergunta pode ser: Isso é um bug? Deve ser consertado? Isso está além do escopo se essa resposta, embora certamente seja possível consertar isso, se alguém desejar fazê-lo. No entanto, pode ser interessante notar que a interface fictícia está no kernel há algum tempo, 20 anos para ser exata. Em 1994, apresentar um estado de link correto para a interface fictícia para a área de usuário não era uma prioridade, eu acho.