cvs commit: src/sys/dev/em if_em.c

John Baldwin jhb at freebsd.org
Wed Nov 1 15:27:45 UTC 2006


On Wednesday 01 November 2006 05:46, Gleb Smirnoff wrote:
> On Wed, Nov 01, 2006 at 01:19:28PM +0300, Gleb Smirnoff wrote:
> T> On Wed, Nov 01, 2006 at 11:05:24AM +0100, Pawel Worach wrote:
> T> P> On 10/31/06, John Baldwin <jhb at freebsd.org> wrote:
> T> P> >jhb         2006-10-31 17:21:15 UTC
> T> P> >
> T> P> >  FreeBSD src repository
> T> P> >
> T> P> >  Modified files:
> T> P> >    sys/dev/em           if_em.c
> T> P> >  Log:
> T> P> >  Allocate receive and transmit data structures during attach() and 
free 
> T> P> >  them
> T> P> 
> T> P> Could this be related?
> T> 
> T> Yes, it is. John's patch was tested on RELENG_6 only, where TSO support
> T> isn't yet present.
> T> 
> T> I'll try to fix this.
> 
> The attached patch fixes this. I am not sure whether it is correct,
> I've mimiced behaviour of mxge(4) driver here.

Ahh, hmm.  I think it still needs to support variable size based on whether
or not the adapter supports TSO just to be safe.  How about this:

Index: if_em.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/em/if_em.c,v
retrieving revision 1.160
diff -u -r1.160 if_em.c
--- if_em.c     31 Oct 2006 17:21:14 -0000      1.160
+++ if_em.c     1 Nov 2006 15:26:42 -0000
@@ -1100,10 +1100,6 @@
        if (adapter->hw.mac_type >= em_82543) {
                if (ifp->if_capenable & IFCAP_TXCSUM)
                        ifp->if_hwassist = EM_CHECKSUM_FEATURES;
-               /*
-                * em_setup_transmit_structures() will behave differently
-                * based on the state of TSO.
-                */
                if (ifp->if_capenable & IFCAP_TSO)
                        ifp->if_hwassist |= EM_TCPSEG_FEATURES;
        }
@@ -2626,7 +2622,8 @@
        segsize = size = roundup2(adapter->hw.max_frame_size, MCLBYTES);

        /* Overrides for TSO - want large sizes */
-       if (ifp->if_hwassist & EM_TCPSEG_FEATURES) {
+       if ((adapter->hw.mac_type > em_82544) &&
+           (adapter->hw.mac_type != em_82547)) {
                size = EM_TSO_SIZE;
                segsize = PAGE_SIZE;
        }

-- 
John Baldwin


More information about the cvs-src mailing list