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>
