From swell.k@gmail.com  Tue Jul  7 08:45:48 2009
Return-Path: <swell.k@gmail.com>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id D5C32106566C
	for <FreeBSD-gnats-submit@freebsd.org>; Tue,  7 Jul 2009 08:45:48 +0000 (UTC)
	(envelope-from swell.k@gmail.com)
Received: from mail-fx0-f218.google.com (mail-fx0-f218.google.com [209.85.220.218])
	by mx1.freebsd.org (Postfix) with ESMTP id 599FA8FC14
	for <FreeBSD-gnats-submit@freebsd.org>; Tue,  7 Jul 2009 08:45:48 +0000 (UTC)
	(envelope-from swell.k@gmail.com)
Received: by fxm18 with SMTP id 18so4006941fxm.43
        for <FreeBSD-gnats-submit@freebsd.org>; Tue, 07 Jul 2009 01:45:47 -0700 (PDT)
Received: by 10.103.172.9 with SMTP id z9mr3184702muo.58.1246956346966;
        Tue, 07 Jul 2009 01:45:46 -0700 (PDT)
Received: from localhost (95-24-86-242.broadband.corbina.ru [95.24.86.242])
        by mx.google.com with ESMTPS id n10sm4068756mue.47.2009.07.07.01.45.45
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Tue, 07 Jul 2009 01:45:45 -0700 (PDT)
Message-Id: <86k52k2866.fsf@gmail.com>
Date: Tue, 07 Jul 2009 12:45:21 +0400
From: Anonymous <swell.k@gmail.com>
To: FreeBSD-gnats-submit@freebsd.org
Subject: [xl] doesn't compile with TX checksumming enabled
X-Send-Pr-Version: 3.113

>Number:         136409
>Category:       kern
>Synopsis:       [xl] doesn't compile with TX checksumming enabled
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    yongari
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jul 07 08:50:00 UTC 2009
>Closed-Date:    Fri Sep 24 20:33:32 UTC 2010
>Last-Modified:  Fri Sep 24 20:33:32 UTC 2010
>Originator:     Anonymous
>Release:        FreeBSD 8.0-CURRENT amd64
>Organization:
>Environment:
System: FreeBSD luffy 8.0-CURRENT FreeBSD 8.0-CURRENT #0 r195403M: Sun Jul  5 09:49:17 UTC 2009     root@luffy:/usr/obj/usr/src/sys/PHOENIX  amd64
>Description:
sys/dev/xl/if_xl.c have this

--- begin if_xl.c
/*
 * TX Checksumming is disabled by default for two reasons:
 * - TX Checksumming will occasionally produce corrupt packets
 * - TX Checksumming seems to reduce performance
 *
 * Only 905B/C cards were reported to have this problem, it is possible
 * that later chips _may_ be immune.
 */
#define	XL905B_TXCSUM_BROKEN	1

#ifdef XL905B_TXCSUM_BROKEN
#define XL905B_CSUM_FEATURES	0
#else
#define XL905B_CSUM_FEATURES	(CSUM_IP | CSUM_TCP | CSUM_UDP)
#endif
--- end if_xl.c

According to above comment to enable TX checksumming one should just
remove line `#define XL905B_TXCSUM_BROKEN 1'. But doing so breaks
compilation.
>How-To-Repeat:
$ sed -i '.bak' '/define[[:space:]]*XL905B_TXCSUM_BROKEN/d' /sys/dev/xl/if_xl.c
$ make depend all -C/sys/modules/xl
@ -> /usr/src/sys
machine -> /usr/src/sys/amd64/include
awk -f @/tools/makeobjops.awk @/kern/device_if.m -h
awk -f @/tools/makeobjops.awk @/kern/bus_if.m -h
awk -f @/tools/makeobjops.awk @/dev/pci/pci_if.m -h
awk -f @/tools/makeobjops.awk @/dev/mii/miibus_if.m -h
rm -f .depend
mkdep -f .depend -a   -nostdinc -D_KERNEL -DKLD_MODULE -I. -I@ -I@/contrib/altq /usr/src/sys/modules/xl/../../dev/xl/if_xl.c
Warning: Object directory not changed from original /usr/src/sys/modules/xl
cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc   -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common  -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone  -mfpmath=387 -mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow  -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign -fformat-extensions -c /usr/src/sys/modules/xl/../../dev/xl/if_xl.c
/usr/src/sys/modules/xl/../../dev/xl/if_xl.c: In function 'xl_encap':
/usr/src/sys/modules/xl/../../dev/xl/if_xl.c:2473: error: request for member 'M_dat' in something not a structure or union
/usr/src/sys/modules/xl/../../dev/xl/if_xl.c:2474: error: request for member 'M_dat' in something not a structure or union
/usr/src/sys/modules/xl/../../dev/xl/if_xl.c:2476: error: request for member 'M_dat' in something not a structure or union
/usr/src/sys/modules/xl/../../dev/xl/if_xl.c:2478: error: request for member 'M_dat' in something not a structure or union
*** Error code 1

Stop in /usr/src/sys/modules/xl.
>Fix:
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->yongari 
Responsible-Changed-By: yongari 
Responsible-Changed-When: Wed Jul 8 04:43:51 UTC 2009 
Responsible-Changed-Why:  
Grab. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=136409 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/136409: commit references a PR
Date: Thu,  9 Jul 2009 01:59:10 +0000 (UTC)

 Author: yongari
 Date: Thu Jul  9 01:58:59 2009
 New Revision: 195484
 URL: http://svn.freebsd.org/changeset/base/195484
 
 Log:
   Make xl(4) build with Tx checksum offload.
   
   PR:		kern/136409
   Approved by:	re (kib)
 
 Modified:
   head/sys/dev/xl/if_xl.c
 
 Modified: head/sys/dev/xl/if_xl.c
 ==============================================================================
 --- head/sys/dev/xl/if_xl.c	Thu Jul  9 00:39:56 2009	(r195483)
 +++ head/sys/dev/xl/if_xl.c	Thu Jul  9 01:58:59 2009	(r195484)
 @@ -2471,12 +2471,12 @@ xl_encap(struct xl_softc *sc, struct xl_
  		status = XL_TXSTAT_RND_DEFEAT;
  
  #ifndef XL905B_TXCSUM_BROKEN
 -		if (m_head->m_pkthdr.csum_flags) {
 -			if (m_head->m_pkthdr.csum_flags & CSUM_IP)
 +		if ((*m_head)->m_pkthdr.csum_flags) {
 +			if ((*m_head)->m_pkthdr.csum_flags & CSUM_IP)
  				status |= XL_TXSTAT_IPCKSUM;
 -			if (m_head->m_pkthdr.csum_flags & CSUM_TCP)
 +			if ((*m_head)->m_pkthdr.csum_flags & CSUM_TCP)
  				status |= XL_TXSTAT_TCPCKSUM;
 -			if (m_head->m_pkthdr.csum_flags & CSUM_UDP)
 +			if ((*m_head)->m_pkthdr.csum_flags & CSUM_UDP)
  				status |= XL_TXSTAT_UDPCKSUM;
  		}
  #endif
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->patched 
State-Changed-By: yongari 
State-Changed-When: Thu Jul 9 05:21:40 UTC 2009 
State-Changed-Why:  
Patch committed to HEAD. 
Thanks for reporting! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=136409 

From: swell.k@gmail.com
To: yongari@FreeBSD.org
Cc: bug-followup@FreeBSD.org
Subject: Re: kern/136409: [xl] doesn't compile with TX checksumming enabled
Date: Thu, 09 Jul 2009 14:24:47 +0400

 yongari@FreeBSD.org writes:
 
 > Patch committed to HEAD.
 > Thanks for reporting!
 
 Updated to r195484M with xl(4) in kernel config. Works ok here on
 
 xl0@pci0:5:0:0: class=0x020000 card=0x764610b7 chip=0x764610b7 rev=0x30 hdr=0x00
     vendor     = '3COM Corp, Networking Division'
     device     = 'Hurricane (3CSOHO100B-TX)'
     class      = network
     subclass   = ethernet
     bar   [10] = type I/O Port, range 32, base 0xd000, size 128, enabled
     bar   [14] = type Memory, range 32, base 0xf9000000, size 128, enabled
     cap 01[dc] = powerspec 1  supports D0 D1 D2 D3  current D0
 
 Though I had to explicitly enable `txcsum' on xl0 to make TXCSUM appear
 in interface `options' row.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/136409: commit references a PR
Date: Fri, 24 Sep 2010 20:04:31 +0000 (UTC)

 Author: yongari
 Date: Fri Sep 24 20:04:23 2010
 New Revision: 213138
 URL: http://svn.freebsd.org/changeset/base/213138
 
 Log:
   MFC r195484:
     Make xl(4) build with Tx checksum offload.
   
     PR:	kern/136409
 
 Modified:
   stable/7/sys/pci/if_xl.c
 Directory Properties:
   stable/7/sys/   (props changed)
   stable/7/sys/cddl/contrib/opensolaris/   (props changed)
   stable/7/sys/contrib/dev/acpica/   (props changed)
   stable/7/sys/contrib/pf/   (props changed)
 
 Modified: stable/7/sys/pci/if_xl.c
 ==============================================================================
 --- stable/7/sys/pci/if_xl.c	Fri Sep 24 19:53:55 2010	(r213137)
 +++ stable/7/sys/pci/if_xl.c	Fri Sep 24 20:04:23 2010	(r213138)
 @@ -2509,12 +2509,12 @@ xl_encap(struct xl_softc *sc, struct xl_
  		status = XL_TXSTAT_RND_DEFEAT;
  
  #ifndef XL905B_TXCSUM_BROKEN
 -		if (m_head->m_pkthdr.csum_flags) {
 -			if (m_head->m_pkthdr.csum_flags & CSUM_IP)
 +		if ((*m_head)->m_pkthdr.csum_flags) {
 +			if ((*m_head)->m_pkthdr.csum_flags & CSUM_IP)
  				status |= XL_TXSTAT_IPCKSUM;
 -			if (m_head->m_pkthdr.csum_flags & CSUM_TCP)
 +			if ((*m_head)->m_pkthdr.csum_flags & CSUM_TCP)
  				status |= XL_TXSTAT_TCPCKSUM;
 -			if (m_head->m_pkthdr.csum_flags & CSUM_UDP)
 +			if ((*m_head)->m_pkthdr.csum_flags & CSUM_UDP)
  				status |= XL_TXSTAT_UDPCKSUM;
  		}
  #endif
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: patched->closed 
State-Changed-By: yongari 
State-Changed-When: Fri Sep 24 20:33:03 UTC 2010 
State-Changed-Why:  
MFC to stable/7 done. 
The reason you have to explicitly enable Tx checksum offloading is 
intentional one. Anyway, thanks for reporting and testing! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=136409 
>Unformatted:
