Приведу пример установки или обновления ixgbe драйверов в Linux.
Посмотрим текущую версию (например у меня в Ubuntu Server 16.04 для HP 560SFP+ по умолчанию установилась версия ixgbe 4.2.1-k):
ethtool -i ens5f0
/sbin/modinfo ixgbe
Скачаем новую версию драйверов с официального сайта
https://downloadcenter.intel.com/download/14687/Intel-Network-Adapter-Driver-for-PCIe-Intel-10-Gigabit-Ethernet-Network-Connections-Under-Linux-
или
https://sourceforge.net/projects/e1000/files/ixgbe%20stable/
Или патченую версию драйвера для правильного распределения прерываний сетевой платы по ядра процессора при использовании QinQ
https://github.com/serhepopovych/ixgbe/tree/ixgbe-5.6.3/double-vlan
cd ~
git clone https://github.com/serhepopovych/ixgbe.git
Или:
cd ~
git clone --single-branch --branch ixgbe-5.6.3/double-vlan https://github.com/serhepopovych/ixgbe.git
Установим в системе необходимые компоненты:
apt install make gcc
Командами ниже становим драйвер, замечу что если ядро Linux было обновлено, то перезагрузим сервер перед установкой драйвера (модуль обычно записывается в /lib/modules/KERNEL_VERSION/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko):
cd ixgbe/src/
make install
На ошибку ниже можно не обращать внимания, она просто означает что make не может найти ключи чтобы подписать драйвер:
SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175
После установки драйвера любой из команд выгрузим из памяти старый модуль драйвера:
modprobe -r ixgbe
rmmod ixgbe
И загрузим новый, который только что установили:
modprobe ixgbe
Проверим версию:
ethtool -i ens5f0
Чтобы Ubuntu загрузила новый драйвер при старте системы, а не старый, выполним:
update-initramfs -u
Для RedHat:
dracut --force
При необходимости укажем сетевому интерфейсу IP адрес (имя сетевого интерфейса можно увидеть например в логах набрав команду «dmesg -T»):
ip address add 192.168.2.2/32 dev eth0
Замечу что на некоторых версиях драйверов может быстро увеличиваться занятое пространство оперативной памяти, обычно это стает заметно по графикам спустя день или неделю. Стабильные версии в которых не было замечено утечки памяти были 5.6.3 и 5.3.8.
Если увеличивается, то можно например выгрузить и загрузить модуль ixgbe, чтобы понять в нем ли проблема (внимание, пропадет соединение с сервером):
rmmod ixgbe && modprobe ixgbe
Для поддержки сторонних SFP возможно придется загрузить модуль с опцией:
modprobe ixgbe allow_unsupported_sfp=1
Чтобы при запуске системы драйвер тоже загрузился с этой опцией укажем в файле /etc/modprobe.d/ixgbe.conf:
options ixgbe allow_unsupported_sfp=1
А также в файле /etc/default/grub укажем:
GRUB_CMDLINE_LINUX="ixgbe.allow_unsupported_sfp=1"
Применим изменения:
grub-mkconfig -o /boot/grub/grub.cfg
Смотрите также мою статью:
Обновление драйвера i40e Intel
Настройка сети в Linux
Распределение прерываний сетевой платы по ядрам процессора