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
--rJwd6BRFiFCcLxzm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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. --rJwd6BRFiFCcLxzm Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="re.txfifo.diff" 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) */ --rJwd6BRFiFCcLxzm--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120113232718.GC18199>