Intel Ethernet Connection I219-V не работает под Linux на ноутбуке ASUSPRO B. , драйвер e1000e сообщает: «Контрольная сумма NVM недействительна»

В моих тестах работает что-то вроде этого:

awk -F"/>" -v RS="" -v RS=" 
 

 
Finding Cuplicates:              
  

Протестируйте это онлайн здесь

Мы пользуемся преимуществом awk, чтобы объявить настраиваемый разделитель записей (RS) и настраиваемый разделитель полей (FS). Вышеупомянутые две команды могут быть объединены в одном awk offourse, это был просто тест.

7
20.03.2017, 12:18
3 ответа

Мне удалось исправить контрольную сумму. Теперь Ethernet отлично работает под Linux. Я объяснил детали в моем ответе на мой вопрос SuperUser.SE.

По сути, я сначала пропатчил e1000e , чтобы пропустить проверку контрольной суммы NVM

for (i = 0;; i++) {
    if (e1000_validate_nvm_checksum(&adapter->hw) >= 0)
        break;
    if (i == 2) {
        dev_err(pci_dev_to_dev(pdev),
            "The NVM Checksum Is Not Valid\n");
        err = -EIO;
        goto err_eeprom;
    }
}

в src / netdev.c , и после того, как у меня был доступ к микросхеме Ethernet, я написал его NVM с ethtool , который автоматически фиксирует контрольную сумму.

2
20.08.2021, 12:03

Драйвер e1000e - это тот драйвер, который может запускать контроллеры Ethernet I2xx Intel. А последний драйвер e1000e (на момент написания) может работать с микросхемой I219 .

Сообщение Неправильная контрольная сумма NVM во время загрузки препятствовало загрузке старых драйверов. В других ОС (особенно в окнах MS) эта ошибка игнорируется. Но Linux кажется более строгим.

NVM - это ПЗУ (постоянное запоминающее устройство) в микросхеме, которое проверяет контрольную сумму, и более старая версия драйвера e1000 не знала о содержимом NVM новых микросхем. Поскольку карта работает в других операционных системах, которые игнорируют ошибку, другой возможностью было заставить драйвер игнорировать ошибку.

Контрольная сумма выполняется внутри nvm.c , хотя некоторые другие модели представляют свои собственные функции fix_checksum , которые выполняются до 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 определяется внутри define.h

#define NVM_SUM                         0xBABA

Если вы уверены, что карта работает (и дает сбой только из-за контрольной суммы NVM), вы можете попробовать изменить функцию контрольной суммы на:

s32 e1000e_validate_nvm_checksum_generic(struct e1000_hw *hw)
{
        return 0;
}

И это заставит контрольную сумму всегда быть успешной.


Дополнительные (более или менее) заслуживающие доверия ссылки:

6
20.08.2021, 12:03

Подробное руководство Поддержка Ubuntu 18.04.1 LTS -для Intel I219 -V

  1. Скачать драйвер из
    https://downloadcenter.intel.com/download/15817/Intel-Network-Adapter-Driver-for-PCI-E-Gigabit-Network-Connections-under-Linux-?product=71307(Тест на версии 3.4.0.2)

  2. Распаковать zip в папку по вашему выбору

  3. Перейдите в каталог src драйвера,
    например.cd e1000e-3.4.2.1/src/

  4. Перед загрузкой нового модуля убедитесь, что все старые драйверы e1000e удалены из ядра.sudo rmmod e1000e

  5. Скомпилируйте модуль драйвера :sudo make install

  6. Загрузите модуль с помощью команды modprobe :sudo modprobe e1000eБинарный файл будет установлен как :/lib/modules//updates/drivers/net/ethernet/intel/e1000e/e1000e.ko

  7. Убедитесь, что интерфейс работает. Введите следующее, где IP-адрес _это IP-адрес другого компьютера в той же подсети, что и интерфейс который проходит испытания :пинг

  8. Сделать драйвер постояннымsudo dpkg-reconfigure linux-image-$(uname -r)

Я думаю, это то, что делает pkt 8 ::.... Примечание. :Для некоторых дистрибутивов, таких как (, но не ограничиваясь )RedHat Enterprise. Linux 7 и Ubuntu, после установки драйвера файл initrd/initramfs может необходимо обновить, чтобы ОС не загружала старые версии драйвера e1000e. Для Ubuntu :#обновление -initramfs -u

0
20.08.2021, 12:03

Теги

Похожие вопросы