Date: Fri, 13 Jan 2012 15:27:18 -0800 From: YongHyeon PYUN <pyunyh@gmail.com> To: "Vladislav V. Prodan" <universite@ukr.net> Cc: net@freebsd.org Subject: Re: Lack of performance re0 (RTL8111/8168B) Message-ID: <20120113232718.GC18199@michelle.cdnetworks.com> In-Reply-To: <4F10B1B3.6090908@ukr.net> References: <4F109F79.5090406@ukr.net> <20120113221548.GA18199@michelle.cdnetworks.com> <4F10B1B3.6090908@ukr.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Sat, Jan 14, 2012 at 12:35:31AM +0200, Vladislav V. Prodan wrote:
> 14.01.2012 0:15, YongHyeon PYUN wrote:
> > On Fri, Jan 13, 2012 at 11:17:45PM +0200, Vladislav V. Prodan wrote:
> >>
> >> Tell me, what a performance in pps a network card RTL8111/8168B?
> >> Can I somehow increase it?
> >> Experimentally, since it begins to fall off 80Kpps: (
> >>
> >
> > RX performance number will show much better than that but TX is
> > major bottleneck of controller. I tried hard to enhance TX
> > performance for the controller but I'm under the impression that
> > that number would be the maximum(around 90Kpps) and this is also
> > similar number what I got on Linux.
> > Given that re(4) controllers are for non-server grade systems I
> > wouldn't be surprised to see that number. If you need higher pps,
> > choose controllers targeted for servers. Alternatively, low cost
> > controllers from JMicron/Atheros also show decent TX/RX
> > performance numbers.
>
> That's why I would like to get some numerical limitations of the
> controller re (4).
> While there is no way to put a network card from Intel.
>
> >
> >>
> >> Jan 13 18:12:49 XXX kernel: re0: watchdog timeout
> >> Jan 13 18:12:49 XXX kernel: re0: link state changed to DOWN
> >> Jan 13 18:12:53 XXX kernel: re0: link state changed to UP
> >>
> >
> > I'm more concerned on watchdog timeouts than performance numbers.
> > Would you show me re(4) related message from dmesg(8) output?
> See dmesg output below.
>
> > And if you know how to reliably trigger the watchdog timeout, would
> > you share with us?
>
> DDoS attack has undergone server and choked these packages: (
Sound like hard to reproduce this on my box.
> Trafshow showed a peak of 110K pps, but immediately operational watchdog
> timeout.
> I would appreciate help in setting up a network interface, so as long as
> it is not turned off by such scams.
>
> >>
> >>
> >> # uname -a
> >> FreeBSD pvppw.org 9.0-PRERELEASE FreeBSD 9.0-PRERELEASE #1: Mon Dec 5
> >> 14:56:07 EET 2011 root@XXX:/usr/obj/usr/src/sys/XXX.2 amd64
> >>
> >> # pciconf -lv | grep -A 4 "re0@"
> >> re0@pci0:2:0:0: class=0x020000 card=0x84321043 chip=0x816810ec rev=0x06
> >> hdr=0x00
> >> vendor = 'Realtek Semiconductor Co., Ltd.'
> >> device = 'RTL8111/8168B PCI Express Gigabit Ethernet controller'
> >> class = network
> >> subclass = ethernet
> >>
> >
> > RealTek controllers tend to use the same PCI id for different
> > controllers so pciconf(8) does not help here. re(4) may have shown
> > more details on your controller in dmesg output.
> >
> Jan 13 18:57:03 XXX kernel: re0: <RealTek 8168/8111 B/C/CP/D/DP/E PCIe
> Gigabit Ethernet> port 0xe800-0xe8ff mem
> 0xfcfff000-0xfcffffff,0xfcffffff,0xfcff8000-0xfcffbfff irq 18 at device
> 0.0 on pci2
> Jan 13 18:57:03 XXX kernel: re0: Using 1 MSI-X message
> Jan 13 18:57:03 XXX kernel: re0: Chip rev. 0x2c800000
> Jan 13 18:57:03 XXX kernel: re0: MAC rev. 0x00000000
> Jan 13 18:57:03 XXX kernel: miibus0: <MII bus> on re0
> Jan 13 18:57:03 XXX kernel: rgephy0: <RTL8169S/8110S/8211 1000BASE-T
> media interface> PHY 1 on miibus0
> Jan 13 18:57:03 XXX kernel: rgephy0: none, 10baseT, 10baseT-FDX,
> 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow,
> 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master,
> 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
> Jan 13 18:57:03 XXX kernel: re0: Ethernet address: 14:da:e9:75:5f:ee
>
Thanks, your controller is RTL8168E-VL.
Could you try attached patch? The patch also contains unrelated
one for the issue but it wouldn't hurt either.
[-- Attachment #2 --]
Index: sys/dev/re/if_re.c
===================================================================
--- sys/dev/re/if_re.c (revision 230063)
+++ sys/dev/re/if_re.c (working copy)
@@ -3147,7 +3147,13 @@
} else
CSR_WRITE_4(sc, RL_TXCFG, RL_TXCFG_CONFIG);
- CSR_WRITE_1(sc, RL_EARLY_TX_THRESH, 16);
+ /* XXX */
+ if ((sc->rl_flags & RL_FLAG_CMDSTOP_WAIT_TXQ) != 0) {
+ CSR_WRITE_1(sc, RL_EARLY_TX_THRESH, 4992 / 128);
+ CSR_WRITE_4(sc, RL_TXCFG, CSR_READ_4(sc, RL_TXCFG) |
+ RL_TXCFG_AUTO_FIFO);
+ } else
+ CSR_WRITE_1(sc, RL_EARLY_TX_THRESH, 16);
/*
* Set the initial RX configuration.
@@ -3558,7 +3564,6 @@
}
/* Free the TX list buffers. */
-
for (i = 0; i < sc->rl_ldata.rl_tx_desc_cnt; i++) {
txd = &sc->rl_ldata.rl_tx_desc[i];
if (txd->tx_m != NULL) {
@@ -3572,11 +3577,10 @@
}
/* Free the RX list buffers. */
-
for (i = 0; i < sc->rl_ldata.rl_rx_desc_cnt; i++) {
rxd = &sc->rl_ldata.rl_rx_desc[i];
if (rxd->rx_m != NULL) {
- bus_dmamap_sync(sc->rl_ldata.rl_tx_mtag,
+ bus_dmamap_sync(sc->rl_ldata.rl_rx_mtag,
rxd->rx_dmamap, BUS_DMASYNC_POSTREAD);
bus_dmamap_unload(sc->rl_ldata.rl_rx_mtag,
rxd->rx_dmamap);
@@ -3584,6 +3588,20 @@
rxd->rx_m = NULL;
}
}
+
+ if ((sc->rl_flags & RL_FLAG_JUMBOV2) != 0) {
+ for (i = 0; i < sc->rl_ldata.rl_rx_desc_cnt; i++) {
+ rxd = &sc->rl_ldata.rl_jrx_desc[i];
+ if (rxd->rx_m != NULL) {
+ bus_dmamap_sync(sc->rl_ldata.rl_jrx_mtag,
+ rxd->rx_dmamap, BUS_DMASYNC_POSTREAD);
+ bus_dmamap_unload(sc->rl_ldata.rl_jrx_mtag,
+ rxd->rx_dmamap);
+ m_freem(rxd->rx_m);
+ rxd->rx_m = NULL;
+ }
+ }
+ }
}
/*
Index: sys/pci/if_rlreg.h
===================================================================
--- sys/pci/if_rlreg.h (revision 230063)
+++ sys/pci/if_rlreg.h (working copy)
@@ -142,6 +142,7 @@
* TX config register bits
*/
#define RL_TXCFG_CLRABRT 0x00000001 /* retransmit aborted pkt */
+#define RL_TXCFG_AUTO_FIFO 0x00000080 /* 8168E-VL or higher */
#define RL_TXCFG_MAXDMA 0x00000700 /* max DMA burst size */
#define RL_TXCFG_QUEUE_EMPTY 0x00000800 /* 8168E-VL or higher */
#define RL_TXCFG_CRCAPPEND 0x00010000 /* CRC append (0 = yes) */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120113232718.GC18199>
