Date: Mon, 11 Jan 2010 16:08:59 -0800 From: Pyun YongHyeon <pyunyh@gmail.com> To: David Ehrmann <ehrmann@gmail.com> Cc: freebsd-current@freebsd.org Subject: Re: vge traffic problem Message-ID: <20100112000859.GD1228@michelle.cdnetworks.com> In-Reply-To: <4B4BB679.2060500@gmail.com> References: <4B40AFFA.6090706@gmail.com> <20100103221630.GV1166@michelle.cdnetworks.com> <4B47B4F6.8030106@gmail.com> <20100109013145.GG18529@michelle.cdnetworks.com> <4B4ACD68.5030907@gmail.com> <20100111203557.GB1228@michelle.cdnetworks.com> <4B4BB679.2060500@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jan 11, 2010 at 03:38:33PM -0800, David Ehrmann wrote: > Pyun YongHyeon wrote: > >If receiver drops TX UDP frame sent by vge(4) would you try > >disabling TX checksum offloading of vge(4)? If packet drop happens > >only with UDP frames it could be checksum offload bug. Does your > >controller is VT6130(PCIe)? > > > > First, netstat before and after the test: > > share2# netstat -I vge0 -d > Name Mtu Network Address Ipkts Ierrs Idrop > Opkts Oerrs Coll Drop > vge0 1500 <Link#1> 00:40:63:xx:xx:xx 38940717 0 0 > 55913584 0 0 0 > vge0 1500 10.0.0.0/22 share2 38886994 - - > 55898223 - - - > share2# netstat -I vge0 -d > Name Mtu Network Address Ipkts Ierrs Idrop > Opkts Oerrs Coll Drop > vge0 1500 <Link#1> 00:40:63:xx:xx:xx 38942065 0 0 > 55914869 0 0 0 > vge0 1500 10.0.0.0/22 share2 38888320 - - > 55899491 - - - > > The error counters were uninteresting. Here's what the internal > counters said, but they weren't very interesting, either: > > http://pastebin.com/m20114095 > Ok, it indicates there are no FIFO overrun or no buf condition occurred in controller. > I ran the test, again, and had tcpdump capture the packets (on the host > with the vge interface). > > tcpdump -i vge0 -w dump.cap -K -s 0 host 10.0.1.2 > > When I opened it up in Wireshark, it's reporting that the outgoing UDP > checksums are incorrect; they're always 0x1ae3. That said, maybe the Because bpf(4) see the frame before controller inserts checksum value it always reports incorrect checksum. It's normal for TX checksum offload capable controller. In order to verify the hardware assisted checksum you should check that on receiver side. If the checksum was invalid, receiver dropped them. See "netstat -s | grep bad" on receiver host. > checksums are done in hardware AFTER tcpdump sees them. > > I set net.inet.udp.checksum to 0. The bad checksums are gone, but I > still see dropped packets. > This doesn't disable TX checksum offload of driver. Instead use #ifconfig vge0 -txcsum > It's on the motherboard, probably wired directly to a PCI-E connection, > but yes, it is a VT6130. Show me "pciconf -lcv" output.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100112000859.GD1228>