re(4) incorrect checksum
Pyun YongHyeon
pyunyh at gmail.com
Fri Jan 12 02:00:14 UTC 2007
On Thu, Jan 11, 2007 at 04:37:05PM +0100, Rene Ladan wrote:
> Pyun YongHyeon schreef:
> > On Thu, Jan 11, 2007 at 12:14:34PM +0100, Rene Ladan wrote:
> > > Pietro Cerutti schreef:
> > > > Hi lists,
> > > >
> > > > FreeBSD gahrtop.localhost 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #1:
> > > > Tue Jan 9 19:34:13 CET 2007
> > > > root at gahrtop:/usr/obj/usr/src/sys/GAHRTOP i386
> > > >
> > > > CPU: Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz (2000.15-MHz
> > > > 686-class CPU)
> > > > Cores per package: 2
> > > >
> > > > re0: <RealTek 8168B/8111B PCIe Gigabit Ethernet> port 0xc800-0xc8ff
> > > > mem 0xff2ff000-0xff2fffff irq 17 at device 0.0 on pci2
> > > >
> > > > ($FreeBSD: src/sys/dev/re/if_re.c,v 1.46.2.20 2006/09/21 11:08:28
> > > > yongari Exp $)
> > > >
> > > > I get checksum errors on every packet I send, example:
> > > >
> > > > Checksum: 0x0bc5 [incorrect, should be 0x78fe (maybe caused by
> > > > checksum offloading?)]
> > > >
> > > > I think this could be the cause of some web pages (e.g. Gmail in
> > > > standard view [html view works well]) not to be displayed.
> > > >
> > > > I tracked down the problem to the re(4) driver just because wlan works
> > > > good...
> > > >
> > > > Any ideas?
> > > >
> > > I'm also seeing these www problems with my re(4) card (chipid
> > > 0x816810ec), see
> > > http://lists.freebsd.org/pipermail/freebsd-current/2006-December/068333.html
> > >
> >
> > Does your re(4) also work when you disable checksum offload?
> >
> Yes, 'ifconfig re0 -txcsum' does the trick.
>
> re0: <RealTek 8168/8111B PCIe Gigabit Ethernet> port 0xc800-0xc8ff mem
> 0xfe0ff000-0xfe0fffff irq 16 at device 0.0 on pci2
>
> if.re.c revision 1.80 2006/12/20 02:13:59 marius
>
I've never encountered checksum offload issue after wpaul's fix.
How about attached one? It's just vague guess but please give it
try and let me know the result.
--
Regards,
Pyun YongHyeon
-------------- next part --------------
Index: if_re.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/re/if_re.c,v
retrieving revision 1.80
diff -u -r1.80 if_re.c
--- if_re.c 20 Dec 2006 02:13:59 -0000 1.80
+++ if_re.c 12 Jan 2007 01:42:59 -0000
@@ -2027,9 +2027,9 @@
arg.rl_flags = RL_TDESC_CMD_LGSEND |
((uint32_t)(*m_head)->m_pkthdr.tso_segsz <<
RL_TDESC_CMD_MSSVAL_SHIFT);
- else {
- if ((*m_head)->m_pkthdr.csum_flags & CSUM_IP)
- arg.rl_flags |= RL_TDESC_CMD_IPCSUM;
+ else if (((*m_head)->m_pkthdr.csum_flags &
+ (CSUM_IP | CSUM_TCP | CSUM_UDP)) != 0) {
+ arg.rl_flags |= RL_TDESC_CMD_IPCSUM;
if ((*m_head)->m_pkthdr.csum_flags & CSUM_TCP)
arg.rl_flags |= RL_TDESC_CMD_TCPCSUM;
if ((*m_head)->m_pkthdr.csum_flags & CSUM_UDP)
More information about the freebsd-hackers
mailing list