bnx2x: fix crash during TSO tunneling
When TSO packet is transmitted additional BD w/o mapping is used
to describe the packed. The BD needs special handling in tx
completion.
kernel: Call Trace:
kernel: <IRQ> [<
ffffffff815e19ba>] dump_stack+0x19/0x1b
kernel: [<
ffffffff8105dee1>] warn_slowpath_common+0x61/0x80
kernel: [<
ffffffff8105df5c>] warn_slowpath_fmt+0x5c/0x80
kernel: [<
ffffffff814a8c0d>] ? find_iova+0x4d/0x90
kernel: [<
ffffffff814ab0e2>] intel_unmap_page.part.36+0x142/0x160
kernel: [<
ffffffff814ad0e6>] intel_unmap_page+0x26/0x30
kernel: [<
ffffffffa01f55d7>] bnx2x_free_tx_pkt+0x157/0x2b0 [bnx2x]
kernel: [<
ffffffffa01f8dac>] bnx2x_tx_int+0xac/0x220 [bnx2x]
kernel: [<
ffffffff8101a0d9>] ? read_tsc+0x9/0x20
kernel: [<
ffffffffa01f8fdb>] bnx2x_poll+0xbb/0x3c0 [bnx2x]
kernel: [<
ffffffff814d041a>] net_rx_action+0x15a/0x250
kernel: [<
ffffffff81067047>] __do_softirq+0xf7/0x290
kernel: [<
ffffffff815f3a5c>] call_softirq+0x1c/0x30
kernel: [<
ffffffff81014d25>] do_softirq+0x55/0x90
kernel: [<
ffffffff810673e5>] irq_exit+0x115/0x120
kernel: [<
ffffffff815f4358>] do_IRQ+0x58/0xf0
kernel: [<
ffffffff815e94ad>] common_interrupt+0x6d/0x6d
kernel: <EOI> [<
ffffffff810bbff7>] ? clockevents_notify+0x127/0x140
kernel: [<
ffffffff814834df>] ? cpuidle_enter_state+0x4f/0xc0
kernel: [<
ffffffff81483615>] cpuidle_idle_call+0xc5/0x200
kernel: [<
ffffffff8101bc7e>] arch_cpu_idle+0xe/0x30
kernel: [<
ffffffff810b4725>] cpu_startup_entry+0xf5/0x290
kernel: [<
ffffffff815cfee1>] start_secondary+0x265/0x27b
kernel: ---[ end trace
11aa7726f18d7e80 ]---
Fixes:
a848ade408b ("bnx2x: add CSUM and TSO support for encapsulation protocols")
Reported-by: Yulong Pei <ypei@redhat.com>
Cc: Michal Schmidt <mschmidt@redhat.com>
Signed-off-by: Dmitry Kravkov <Dmitry.Kravkov@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>