CodingBox Q&A Ask question

Intel X520 num R630 rejeita um SFP+ de cobre 10GBASE-T com comp_codes_10g=0x00 apesar do allow_unsupported_sfp=1

Asked Active Viewed 200 AI translation from English
6

Estamos consolidando um par de R630 em 10G e o cabeamento até o topo do rack é cobre, então em vez de puxar fibra coloquei módulos SFP+ 10GBASE-T nas placas X520. Do lado do switch eles são aceitos sem pestanejar. Os servidores recusam.

  • Dell PowerEdge R630, Intel X520 (82599), dual port
  • FS SFP-10GM-T-30, codificado Dell, um módulo por servidor
  • ixgbe fora da árvore da Intel, compilado via DKMS
  • /etc/modprobe.d/ixgbe.conf com o override setado para as duas portas
# cat /etc/modprobe.d/ixgbe.conf
options ixgbe allow_unsupported_sfp=1,1

# dmesg
ixgbe: failed to load because an unsupported SFP+ module type was detected

# 10G compliance codes read back from the module
comp_codes_10g=0x00

O que já tentei:

  • modprobe ixgbe allow_unsupported_sfp=1 na mão, além da entrada no modprobe.d
  • reconstruí o initramfs e dei cold boot na máquina, não só um reload de módulo
  • movi o módulo para a segunda porta e depois para o segundo servidor, mesmo resultado

A parte interessante é esse byte de compliance: o módulo não reporta nada para 10G. O driver testa isso antes mesmo de olhar para o override, e tem algo a fazer além de comprar óptica com a codificação certa?

Comments 6

Accepted answer

Você não está brigando com uma whitelist, está brigando com a ordem das checagens.

O SFF-8472 não tem bit de compliance para 10GBASE-T. Simplesmente não existe code point para isso, então um SFP+ de cobre honesto reporta códigos de compliance de 10G todos zerados, que é exatamente o seu comp_codes_10g=0x00. O ixgbe lê esse byte, não acha nada que reconheça como módulo de 10G e desiste ali mesmo, antes de chegar perto do override allow_unsupported_sfp. É por isso que a flag funciona bem para um módulo óptico não qualificado ou um DAC e não faz absolutamente nada pelos seus de cobre.

Existe um patch da comunidade contra o ixgbe fora da árvore da Intel que move essa checagem de compliance: quando o administrador setou explicitamente allow_unsupported_sfp=1, um módulo que reporta códigos de compliance de 10G todos zerados é classificado como SR em vez de ser descartado logo cedo. Foi submetido upstream e continua sem merge, então você aplica na mão sobre a fonte do DKMS e mantém isso junto com sua build. Quem escreveu relatou 10 Gb/s full duplex num par de servidores depois disso, e outra pessoa confirmou que o mesmo patch faz módulos de cobre HLX-SFPX funcionarem num X520.

Duas ressalvas antes de fazer isso. Uma óptica que a Intel não qualificou fica fora da garantia de compatibilidade deles, então isso vira problema seu, não deles. E o PHY do 10GBASE-T é uma peça quente - numa baia de servidor sem fluxo de ar próprio ela vai ficar bem acima de qualquer óptica no slot vizinho, então fique de olho na temperatura do módulo assim que o link subir.

5 IndiagigopsIN Show original (English) AI translation

Duas coisas para fechar antes de sair aplicando patch em qualquer coisa.

Primeiro, imprime o parâmetro como o kernel realmente vê ele, /sys/module/ixgbe/parameters/allow_unsupported_sfp, numa máquina que passou por um cold boot e não só um reload de módulo. Se isso não retornar exatamente o que está no seu arquivo de conf, alguma coisa está carregando o driver antes da sua config entrar em ação e o resto da depuração é desperdício.

Segundo, qual ixgbe está carregado? O ethtool -i não adianta nada enquanto o driver nunca termina de carregar e as interfaces estão ausentes, então posta o que o modinfo ixgbe reporta e a versão do pacote DKMS que você compilou.

E de onde vem esse comp_codes_10g=0x00 - isso é o driver te dizendo, ou você mesmo fez o dump do EEPROM do módulo?

1 South Koreawaverunner63KR Show original (English) AI translation

O parâmetro é 1,1 no arquivo e o /sys/module/ixgbe/parameters/allow_unsupported_sfp retorna 1,1 depois de um cold boot, então está aplicado, não sendo ignorado silenciosamente. O initramfs foi reconstruído antes do boot. Mesma linha no dmesg de qualquer jeito.

Os códigos de compliance eu li direto dos dados SFF-8472 do próprio módulo, não do driver - o byte de compliance de 10G é zero, todo o resto nos campos de ID parece normal. O mesmo módulo na porta do switch linka em 10G, então não é um módulo morto.

4 Brazilopticnerd31BR Show original (English) AI translation

Vale acrescentar do lado prático: com DKMS toda atualização de kernel reconstrói a partir das fontes em disco, então o patch tem que morar naquela árvore de fontes, não num diretório de build que você limpou depois. Confere se a porta volta depois do primeiro salto de kernel em vez de descobrir isso numa janela de reboot.

A lição mais ampla desse tipo de problema é que a safra do driver decide mais do que a codificação do módulo. Mesma história num X710 com um DAC passivo: um cabo, uma porta, feliz no Ubuntu 24.04 e morto no TrueNAS SCALE com Link detected: no e Speed: Unknown, porque essa build carregava o i40e do kernel 6.6.44-production. No 25.04-BETA.1, onde o i40e vem do 6.12.9-production, o twinax subiu sozinho - nada mais foi mexido, placa ainda no firmware 9.20. A óptica funcionava bem nessa porta nos dois sistemas, o que confirmou a falha em como o driver mais antigo lida com cobre passivo. ethtool -i dos dois lados da comparação teria economizado muita troca de cabo.

1 Italylambdapilot72IT Show original (English) AI translation

Tipo de módulo diferente, mesmo driver, e uma armadilha que vale descartar já que você está nisso. Dell R720 com uma daughter card X520, módulos Cisco 10G multimodo LC recusados, interfaces simplesmente ausentes. A opção estava no modprobe.d, estava no GRUB também, e nada mudou - porque o host dá boot via EFI e aquela linha de comando do GRUB nunca era usada.

Num Proxmox com boot EFI o parâmetro pertence a /etc/kernel/cmdline como ixgbe.allow_unsupported_sfp=1, seguido de pve-efiboot-tool refresh. Nesse caso nem isso resolveu e acabaram comprando módulos da própria Intel, então trata isso como algo para descartar, não como uma cura.

A outra coisa dessa bagunça: os dois lados têm que ficar satisfeitos com a óptica de forma independente. Um módulo que o switch aceita ainda pode ser rejeitado pelo host, que é onde você já está.

2 Franceedgenode83FR Show original (English) AI translation

Apliquei o patch na fonte do DKMS e reconstruí. As duas portas sobem em 10 Gb/s full duplex e continuam de pé sob carga desde então.

Funcionando, mas eu não diria que está resolvido. É um patch sem merge que agora carrego em cada atualização de kernel, e o driver apresenta a porta como SR, o que vai confundir quem olhar essa caixa depois de mim. O módulo também roda visivelmente mais quente que as ópticas no slot ao lado, e esse slot não tem fluxo de ar que preste. Para o próximo lote de servidores vou puxar fibra e parar de discutir com o driver.

4 Brazilopticnerd31BR Show original (English) AI translation
Log in to comment. Log in