Hi all experts :
we are using the Intel I350AM2 ( Two GE Ports ) chip to interface the Cortex-A8 SoC from TI through PCIE x 2 bus .
The OS version is Linux 2.6.37
The I350 driver version is 5.0.6
and after some hours , we found the log as below with GDB backtrace info.
igb 0000:01:00.0: Detected Tx Unit Hang
Tx Queue <0>
------------[ cut here ]------------
WARNING: at net/sched/sch_generic.c:258 dev_watchdog+0x148/0x230()
NETDEV WATCHDOG: eth0 (igb): transmit queue 0 timed out
Modules linked in: aur5g8ke_face_lcd avst_digit_audio ti81xxhdmi ti81xxfb vpss osa_kermod syslink
 (dump_backtrace+0x0/0x110) from  (dump_stack+0x18/0x1c)
r6:c042b298 r5:00000102 r4:c0457df0 r3:60000113
 (dump_stack+0x0/0x1c) from  (warn_slowpath_common+0x54/0x6c)
 (warn_slowpath_common+0x0/0x6c) from  (warn_slowpath_fmt+0x38/0x40)
r8:c02c78bc r7:00000100 r6:00000000 r5:c04cb59c r4:cdc0c000
 (warn_slowpath_fmt+0x0/0x40) from  (dev_watchdog+0x148/0x230)
 (dev_watchdog+0x0/0x230) from  (run_timer_softirq+0x130/0x1c8)
r6:00000100 r5:c0456000 r4:c04b7c40
 (run_timer_softirq+0x0/0x1c8) from  (__do_softirq+0x84/0x114)
 (__do_softirq+0x0/0x114) from  (irq_exit+0x48/0x98)
 (irq_exit+0x0/0x98) from  (asm_do_IRQ+0x7c/0x9c)
 (asm_do_IRQ+0x0/0x9c) from  (__irq_svc+0x34/0xa0)
Exception stack(0xc0457f18 to 0xc0457f60)
7f00: c0496610 00000002
7f20: cbaa8000 5efe1920 cbaa801c c0459040 00000015 c982f8c0 ccd24300 413fc082
7f40: ccd24300 c0457f6c c0457f70 c0457f60 c033b460 c033d01c 60000013 ffffffff
 (atomic_notifier_call_chain+0x0/0x28) from  (__switch_to+0x2c/0x4c)
 (schedule+0x0/0x304) from  (cpu_idle+0x80/0x90)
 (cpu_idle+0x0/0x90) from  (rest_init+0x60/0x78)
r6:c06d0900 r5:c002dd50 r4:c04babbc r3:00000000
 (rest_init+0x0/0x78) from  (start_kernel+0x264/0x2b8)
 (start_kernel+0x0/0x2b8) from [<80008048>] (0x80008048)
---[ end trace bb79dcc8c86613b8 ]---
we have tried to disable the offload option as below but not work , the I350AM2 still hang , btw , we only use the eth0 port now .
Offload parameters for eth0:
is there any suggestions on this case ?
Not yet , but we will try it .
There is a tip in the i350AM2 driver readme.txt as below
Using the igb driver on 2.4 or older 2.6 based kernels
Due to limited support for PCI-Express in 2.4 kernels and older 2.6 kernels,
the igb driver may run into interrupt related problems on some systems, such
as no link or hang when bringing up the device.
We recommend the newer 2.6 based kernels, as these kernels correctly configure
the PCI-Express configuration space of the adapter and all intervening
bridges. If you are required to use a 2.4 kernel, use a 2.4 kernel newer than
2.4.30. For 2.6 kernels we recommend using the 2.6.21 kernel or newer.
Alternatively, on 2.6 kernels you may disable MSI support in the kernel by
booting with the "pci=nomsi" option or permanently disable MSI support in your
kernel by configuring your kernel with CONFIG_PCI_MSI unset.
our kernel version is 2.6.37 , so if we disable the MSI and MSI-X in the Kernel config file , there would be no response from the Cortex-A8 side to process the
MSI / MSI-X interrupt events when there is 'igb Tx Unit Hang' .
we observed that the 'igb Tx Unit Hang' seems disappeared if we disable all offload options by ethtools , but why ?
what is the real reason trigger the 'igb Tx Unit Hang' ?
would you please explain it to us ?
Please feel free to provide the result of driver update. As mentioned in our ReadMe notes:
""We recommend the newer 2.6 based kernels, as these kernels correctly configure the PCI-Express configuration space of the adapter and all intervening bridges. If you are required to use a 2.4 kernel, use a 2.4 kernel newer than 2.4.30. For 2.6 kernels we recommend using the 2.6.21 kernel or newer.
Hope this help.