O driver e1000e
é o que pode executar os controladores% ethernet I2xx
intel. E o o mais recente driver e1000e (até o momento desta publicação) é capaz de executar o chip I219
.
A mensagem The NVM Checksum Is Not Valid
durante a inicialização é o que estava impedindo que os drivers antigos fossem carregados. Em outros sistemas operacionais (principalmente no MS Windows), esse erro é ignorado. Mas o Linux parece ser mais rigoroso.
O NVM é uma memória ROM (somente leitura) no chip, que passa por uma soma de verificação, e a versão mais antiga do driver e1000
não estava ciente do conteúdo NVM dos chips mais recentes. Como a placa funciona em outros sistemas operacionais que ignoram o erro, outra possibilidade poderia ter sido forçar o driver a ignorar o erro.
A soma de verificação é executada dentro de nvm.c
, embora outros vários modelos apresentem suas próprias funções fix_checksum
que são executadas antes de e1000e_validate_nvm_checksum_generic
.
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
s32 ret_val;
u16 checksum = 0;
u16 i, nvm_data;
for (i = 0; i < (NVM_CHECKSUM_REG + 1); i++) {
ret_val = e1000_read_nvm(hw, i, 1, &nvm_data);
if (ret_val) {
e_dbg("NVM Read Error\n");
return ret_val;
}
checksum += nvm_data;
}
if (checksum != (u16)NVM_SUM) {
e_dbg("NVM Checksum Invalid\n");
return -E1000_ERR_NVM;
}
return 0;
}
NVM_SUM
está definido dentro de define.h
#define NVM_SUM 0xBABA
Se tiver certeza de que a placa é executada (e só falha por causa da soma de verificação da NVM), você pode tentar editar a função de soma de verificação para:
s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
return 0;
}
E isso forçará a soma de verificação a ser sempre bem-sucedida.
Referências de confiança extras (mais ou menos):