Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Jul 2014 20:51:01 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        "Russell L. Carter" <rcarter@pinyon.org>
Cc:        freebsd-net@freebsd.org
Subject:   Re: NFS client READ performance on -current
Message-ID:  <870285181.7082888.1404435061501.JavaMail.root@uoguelph.ca>
In-Reply-To: <53B4CC43.1050205@pinyon.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Russell L. Carter wrote:
> 
> 
> On 07/02/14 19:09, Rick Macklem wrote:
> 
> > Could you please post the dmesg stuff for the network interface,
> > so I can tell what driver is being used? I'll take a look at it,
> > in case it needs to be changed to use m_defrag().
> 
> em0: <Intel(R) PRO/1000 Network Connection 7.4.2> port 0xd020-0xd03f
> mem
> 0xfe4a0000-0xfe4bffff,0xfe480000-0xfe49ffff irq 44 at device 0.0 on
> pci2
> em0: Using an MSI interrupt
> em0: Ethernet address: 00:15:17:bc:29:ba
> 001.000007 [2323] netmap_attach             success for em0 tx 1/1024
> rx
> 1/1024 queues/slots
> 
> This is one of those dual nic cards, so there is em1 as well...
> 
Well, I took a quick look at the driver and it does use m_defrag(), but
I think that the "retry:" label it does a goto after doing so might be in
the wrong place.

The attached untested patch might fix this.

Is it convenient to build a kernel with this patch applied and then try
it with TSO enabled?

rick
ps: It does have the transmit segment limit set to 32. I have no idea if
    this is a hardware limitation.

> Best,
> Russell
> 
> > 
> > Thanks for letting us know this fixed the problem, rick
> > 
> _______________________________________________
> freebsd-net@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to
> "freebsd-net-unsubscribe@freebsd.org"
> 

[-- Attachment #2 --]
--- sys/dev/e1000/if_em.c.sav	2014-07-03 20:27:50.000000000 -0400
+++ sys/dev/e1000/if_em.c	2014-07-03 20:29:53.000000000 -0400
@@ -1818,7 +1818,6 @@ em_xmit(struct tx_ring *txr, struct mbuf
 	int			nsegs, i, j, first, last = 0;
 	int			error, do_tso, tso_desc = 0, remap = 1;
 
-retry:
 	m_head = *m_headp;
 	txd_upper = txd_lower = txd_used = txd_saved = 0;
 	do_tso = ((m_head->m_pkthdr.csum_flags & CSUM_TSO) != 0);
@@ -1944,6 +1943,7 @@ retry:
 	tx_buffer_mapped = tx_buffer;
 	map = tx_buffer->map;
 
+retry:
 	error = bus_dmamap_load_mbuf_sg(txr->txtag, map,
 	    *m_headp, segs, &nsegs, BUS_DMA_NOWAIT);
 

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?870285181.7082888.1404435061501.JavaMail.root>