... h2. Теория У устройств известен *PCI-ID*. Драйвера при загрузке сообщаются ядру, устройства с каким PCI-ID они поддерживают. Так для устройства подбирается драйвер. Коллизий в поддержке разными драйверами одних и тех же устройств не бывает, а если бывают - это ошибка. h2. Примеры: как разобраться почему устройство не работает? h3. Узнать PCI-ID устройства {code} # lspci -nn | grep X7 03:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 02)
|
{code}
|
PCI-ID в квадратных скобках и состоит из двух чисел: *Vendor ID* - \- 8086 и *Device ID* - \- 1572.
|
8086 - Intel Corporation
|
1572 - Ethernet Controller X710 for 10GbE SFP\+
|
h3. Найти упоминание драйвера в исходном коде
|
... В исходных кодах драйверов можно найти упоминание device-id. Если его там нет - значит этот драйвер не поддерживает это устройство. {code} # grep -r 1572 ./ ./src/i40e_devids.h:#define I40E_DEV_ID_SFP_XL710 0x1572 {code} В драйверах для Intel с SourceForge обычно в корне есть файл pci.updates, в нём перечислены поддерживаемые устройства:
|
{code}
|
# egrep '(8086|1572)' pci.updates
|
8086 Intel Corporation 1572 Ethernet Controller X710 for 10GbE SFP+
|
... ...
|
{code}
|
h3. Гипотеза - NO-CARRIER на интерфейсах из-за неподдерживаемых SFP\+ модулей
|
|
В логах есть строчки:
|
В логе
|
{code}
|
/var/log/messages {code} есть строчки: {code}
|
kernel: i40e 0000:03:00.0: Rx/Tx is disabled on this device because an unsupported SFP+ module type was detected. {code}
|
В ixgbe драйвере есть параметр, с помощью которого можно игнорировать неподдерживаемые SFP\+ модули:
|
{code}
|
... allow_unsupported_sfp=1,1 {code} Но ни новый драйвер: {code} # modinfo i40e | egrep '(filename|parm)' filename: /lib/modules/2.6.32-754.el6.x86_64/updates/drivers/net/ethernet/intel/i40e/i40e.ko parm: debug:Debug level (0=none,...,16=all) (int) {code} Ни старый: {code} # modinfo /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/i40e/i40e.ko | egrep '(filename|parm)' filename: /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/i40e/i40e.ko parm: debug:Debug level (0=none,...,16=all) (int) {code} Не поддерживают параметров кроме debug. Следовательно *единственный способ заставить эти карты работать - купить поддерживаемые SFP-модули*.
|