Linux Marvell (88E8053) – (2) Bug Stack-Trace Hardware Checksum

Al parecer hay un bug en el driver (sky2, kernel 2.6.27) para el chipset Marvell 88E8053, cuando hay mucha carga (yo lo uso como iSCSI-target) y está activo el checksum acelerado por hardware salen unos stacktraces horribles, en otro sitio ([2]) lei de otro problema con el mismo driver que se solucionaba arrancando el kernel con idle=poll, no lo he probado, pero como tampoco sé si eso tendrá un efecto colateral sobre otras cosas prefiero directamente deshabilitarlo solo en la tarjeta…
Este es el stacktrace del kernel:
Sep  6 01:56:47 linux kernel: eth1: hw csum failure.
Sep  6 01:56:47 linux kernel: Pid: 0, comm: swapper Tainted: G        W 2.6.27.23-0.1-pae #1
Sep  6 01:56:47 linux kernel:  [<c010X1cc>] dump_trace+0x6b/0x249
Sep  6 01:56:47 linux kernel:  [<c010Xca3>] show_trace+0x20/0x39
Sep  6 01:56:47 linux kernel:  [<c034Xfd8>] dump_stack+0x71/0x76
Sep  6 01:56:47 linux kernel:  [<c02eX179>] __skb_checksum_complete_head+0x45/0x57
Sep  6 01:56:47 linux kernel:  [<c031X7f3>] tcp_v4_rcv+0x10e/0x601
Sep  6 01:56:47 linux kernel:  [<c030Xa0b>] ip_local_deliver_finish+0xf6/0x1ac
Sep  6 01:56:47 linux kernel:  [<c030X6dd>] ip_rcv_finish+0x28d/0x2a3
Sep  6 01:56:47 linux kernel:  [<c02eX8b4>] netif_receive_skb+0x43d/0x48a
Sep  6 01:56:47 linux kernel:  [<f8a4X035>] sky2_status_intr+0x14a/0x442 [sky2]
Sep  6 01:56:47 linux kernel:  [<f8a4X37d>] sky2_poll+0x50/0xcf [sky2]
Sep  6 01:56:47 linux kernel:  [<c02eX178>] net_rx_action+0x92/0x161
Sep  6 01:56:47 linux kernel:  [<c012X515>] __do_softirq+0x83/0x107
Sep  6 01:56:47 linux kernel:  [<c012X5cb>] do_softirq+0x32/0x36
Sep  6 01:56:47 linux kernel:  [<c012X6c9>] irq_exit+0x35/0x69
Sep  6 01:56:47 linux kernel:  [<c010X408>] do_IRQ+0x5c/0x70
Sep  6 01:56:47 linux kernel:  [<c010X9c3>] common_interrupt+0x23/0x30
Sep  6 01:56:47 linux kernel:  [<c010X545>] default_idle+0x2a/0x3d
Sep  6 01:56:47 linux kernel:  [<c010X629>] c1e_idle+0xd1/0xd6
Sep  6 01:56:47 linux kernel:  [<c010Xaaa>] cpu_idle+0xc7/0xe9
El workarround:
# /etc/sysconfig/network/ifcfg-ethX
ETHTOOL_OPTIONS=”-K iface rx off tx off” # DISABLE HW CSUM
Si se prefiere, se puede hacer a manija o colocar en algun script de arranque:
# ethtool -K ethX rx off tx off

Se reinicia la maquina (o se hace un rmmod sky2 / modprobe sky2) y deberia volver a funcionar:

 
# ethtool -k ethX
Offload parameters for ethX:
rx-checksumming: off
tx-checksumming: off
scatter-gather: off
tcp segmentation offload: off
udp fragmentation offload: off
generic segmentation offload: on
large receive offload: off
 
Y eso es todo…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: