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 <[EMAIL PROTECTED]> 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.

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
Index: if_em.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/em/if_em.c,v
retrieving revision 1.160
diff -u -p -r1.160 if_em.c
--- if_em.c     31 Oct 2006 17:21:14 -0000      1.160
+++ if_em.c     1 Nov 2006 10:34:00 -0000
@@ -2614,31 +2603,21 @@ em_dma_free(struct adapter *adapter, str
 static int
 em_allocate_transmit_structures(struct adapter *adapter)
 {
-       struct ifnet   *ifp = adapter->ifp;
        device_t dev = adapter->dev;
        struct em_buffer *tx_buffer;
-       bus_size_t size, segsize;
        int error, i;
 
        /*
         * Setup DMA descriptor areas.
         */
-       segsize = size = roundup2(adapter->hw.max_frame_size, MCLBYTES);
-
-       /* Overrides for TSO - want large sizes */
-       if (ifp->if_hwassist & EM_TCPSEG_FEATURES) {
-               size = EM_TSO_SIZE;
-               segsize = PAGE_SIZE;
-       }
-
        if ((error = bus_dma_tag_create(bus_get_dma_tag(dev),   /* parent */
                                1, 0,                   /* alignment, bounds */
                                BUS_SPACE_MAXADDR,      /* lowaddr */
                                BUS_SPACE_MAXADDR,      /* highaddr */
                                NULL, NULL,             /* filter, filterarg */
-                               size,                   /* maxsize */
+                               EM_TSO_SIZE,            /* maxsize */
                                EM_MAX_SCATTER,         /* nsegments */
-                               segsize,                /* maxsegsize */
+                               PAGE_SIZE,              /* maxsegsize */
                                0,                      /* flags */
                                NULL,           /* lockfunc */
                                NULL,           /* lockarg */
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to