cvs commit: src/sys/dev/em if_em.c
Gleb Smirnoff
glebius at FreeBSD.org
Wed Nov 1 10:46:51 UTC 2006
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.
--
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
-------------- next part --------------
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 */
More information about the cvs-src
mailing list