Re: skb_warn_bad_offload with kernel 3.5 (maybe gso/bridge related ?)
flat view
From: Ben Hutchings <hidden>
Date: 2012-08-03 15:40:15
On Fri, 2012-08-03 at 10:51 +0200, Eric Dumazet wrote:
On Fri, 2012-08-03 at 10:10 +0200, Yann Dupont wrote:quoted
Hello everybody, I have a machine using ceph rbd volume, as a client (rbd module) to backup data. I was running kernel 3.2.22 ok. Tried 3.5.0 because some rbd fixes went in. Now, shortly after the start, my logs are filled by that : Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.780860] WARNING: at net/core/dev.c:1888 skb_warn_bad_offload+0xb6/0xc1() Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.780920] Hardware name: PowerEdge M605 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.780990] : caps=(0x0000000000005000, 0x0000000000000000) len=7292 data_len=5792 gso_size=1448 gso_type=1 ip_summed=1 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.781071] Modules linked in: rbd libceph ipt_MASQUERADE iptable_nat nf_nat ipt_REJECT veth fuse xt_physdev xt_iprange xt_multiport ip6table_filter ip6_tables xt_LOG xt_limit xt_tcpudp xt_state iptable_filter ip_tables x_tables nf_conntrack_tftp nf_conntrack_ftp nf_conntrack_ipv4 nf_defrag_ipv4 8021q bridge stp llc ext2 mbcache dm_round_robin dm_multipath scsi_dh nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6 powernow_k8 freq_table mperf kvm_amd snd_pcm kvm snd_timer snd soundcore snd_page_alloc tpm_tis tpm tpm_bios pcspkr evdev psmouse microcode joydev dcdbas shpchp i2c_nforce2 pci_hotplug serio_raw processor i2c_core hid_generic thermal_sys hed button xfs exportfs dm_mod ses enclosure usbhid hid sg sr_mod sd_mod cdrom usb_storage lpfc scsi_transport_fc scsi_tgt ohci_hcd bnx2x mptsas mptscsih bnx2 mptbase scsi_transport_sas crc32c scsi_mod libcrc32c mdio ehci_hcd [last unloaded: scsi_wait_scan] Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.785995] Pid: 0, comm: swapper/0 Not tainted 3.5.0-dsiun-120521 #5 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786055] Call Trace: Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786108] <IRQ> [<ffffffff813bde00>] ? skb_warn_bad_offload+0x6f/0xc1 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786209] [<ffffffff8103a109>] ? warn_slowpath_common+0x79/0xc0 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786269] [<ffffffff8103a205>] ? warn_slowpath_fmt+0x45/0x50 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786330] [<ffffffff81068647>] ? get_nohz_timer_target+0x57/0xd0 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786390] [<ffffffff813bde47>] ? skb_warn_bad_offload+0xb6/0xc1 Jul 31 18:15:01 singleton.u06.univ-nantes.prive kernel: [ 1175.786452] [<ffffffff813110e7>] ? skb_gso_segment+0x207/0x280
[...]
I dont know, maybe its more a GRO issue ? When a NIC delivers skbs with ip_summed set to CHECKSUM_UNNECESSARY, should resulting GRO packet have ip_summed set to CHECKSUM_PARTIAL ?
I think GRO is doing the right thing, and I can't think why we should see ip_summed = CHECKSUM_PARTIAL if the skb is forwarded by a bridge. I think skb_gso_segment() now needs to handle CHECKSUM_UNNECESSARY without warning, and it can be done somewhat more efficiently (as there is no need to copy payload and generate checksums). By the way, the warning in skb_gso_segment() is not new, even though I changed it recently. I don't know why it might have started being triggered between 3.2 and 3.5. Ben. -- Ben Hutchings, Staff Engineer, Solarflare Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.