From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 02:50:35 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 680A31065690; Sun, 28 Sep 2008 02:50:35 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 3F3348FC08; Sun, 28 Sep 2008 02:50:35 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m8S2oZd0077487; Sun, 28 Sep 2008 02:50:35 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m8S2oZ1C077483; Sun, 28 Sep 2008 02:50:35 GMT (envelope-from linimon) Date: Sun, 28 Sep 2008 02:50:35 GMT Message-Id: <200809280250.m8S2oZ1C077483@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: kern/107944: [wi] [patch] Forget to unlock mutex-locks X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 02:50:35 -0000 Synopsis: [wi] [patch] Forget to unlock mutex-locks Responsible-Changed-From-To: freebsd-bugs->freebsd-net Responsible-Changed-By: linimon Responsible-Changed-When: Sun Sep 28 02:50:27 UTC 2008 Responsible-Changed-Why: reclassify. http://www.freebsd.org/cgi/query-pr.cgi?pr=107944 From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 09:48:10 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 66F3A1065686; Sun, 28 Sep 2008 09:48:10 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 3E05F8FC0A; Sun, 28 Sep 2008 09:48:10 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from freefall.freebsd.org (weongyo@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m8S9mAxw056737; Sun, 28 Sep 2008 09:48:10 GMT (envelope-from weongyo@freefall.freebsd.org) Received: (from weongyo@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m8S9mAxn056733; Sun, 28 Sep 2008 09:48:10 GMT (envelope-from weongyo) Date: Sun, 28 Sep 2008 09:48:10 GMT Message-Id: <200809280948.m8S9mAxn056733@freefall.freebsd.org> To: weongyo@FreeBSD.org, freebsd-net@FreeBSD.org, weongyo@FreeBSD.org From: weongyo@FreeBSD.org Cc: Subject: Re: kern/127644: [ndis] [panic] NDIS panic X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 09:48:10 -0000 Synopsis: [ndis] [panic] NDIS panic Responsible-Changed-From-To: freebsd-net->weongyo Responsible-Changed-By: weongyo Responsible-Changed-When: Sun Sep 28 09:47:01 UTC 2008 Responsible-Changed-Why: grab it. http://www.freebsd.org/cgi/query-pr.cgi?pr=127644 From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 13:36:29 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 99BD01065687 for ; Sun, 28 Sep 2008 13:36:29 +0000 (UTC) (envelope-from Cy.Schubert@komquats.com) Received: from idcmail-mo1so.shaw.ca (idcmail-mo1so.shaw.ca [24.71.223.10]) by mx1.freebsd.org (Postfix) with ESMTP id 6CE228FC12 for ; Sun, 28 Sep 2008 13:36:29 +0000 (UTC) (envelope-from Cy.Schubert@komquats.com) Received: from pd4ml1so-ssvc.prod.shaw.ca ([10.0.141.141]) by pd2mo1so-svcs.prod.shaw.ca with ESMTP; 28 Sep 2008 07:08:27 -0600 X-Cloudmark-SP-Filtered: true X-Cloudmark-SP-Result: v=1.0 c=0 a=07d9gI8wAAAA:8 a=6I5d2MoRAAAA:8 a=On0htILmKK_c5LG7dZgA:9 a=ahHfgt_iTaZaYfhJmxvuNkYtb9AA:4 a=V7tsTZBp22UA:10 a=SV7veod9ZcQA:10 a=wAGQQ9Az6v0A:10 Received: from s01060002b31a8191.gv.shawcable.net (HELO spqr.komquats.com) ([24.68.166.226]) by pd4ml1so-dmz.prod.shaw.ca with ESMTP; 28 Sep 2008 07:08:27 -0600 Received: from cwsys.cwsent.com (cwsys [10.1.1.1]) by spqr.komquats.com (Postfix) with ESMTP id 3AE99410FC for ; Sun, 28 Sep 2008 06:08:27 -0700 (PDT) Received: from cwsys (localhost [127.0.0.1]) by cwsys.cwsent.com (8.14.3/8.14.3) with ESMTP id m8SD8Q0f076575 for ; Sun, 28 Sep 2008 06:08:26 -0700 (PDT) (envelope-from Cy.Schubert@komquats.com) Message-Id: <200809281308.m8SD8Q0f076575@cwsys.cwsent.com> X-Mailer: exmh version 2.7.2 01/07/2005 with nmh-1.2 From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.komquats.com/ To: freebsd-net@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 28 Sep 2008 06:08:26 -0700 Sender: Cy.Schubert@komquats.com Cc: Subject: Atheros releases ath5k HAL code X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Cy Schubert List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 13:36:29 -0000 I'm not sure of the veracity of this but here it is anyway. http://lwn.net/Articles/300758/ -- Cheers, Cy Schubert FreeBSD UNIX: Web: http://www.FreeBSD.org e**(i*pi)+1=0 From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 18:14:45 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E824B106568E for ; Sun, 28 Sep 2008 18:14:45 +0000 (UTC) (envelope-from firmdog@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.158]) by mx1.freebsd.org (Postfix) with ESMTP id 188BD8FC16 for ; Sun, 28 Sep 2008 18:14:44 +0000 (UTC) (envelope-from firmdog@gmail.com) Received: by fg-out-1718.google.com with SMTP id l26so1157972fgb.35 for ; Sun, 28 Sep 2008 11:14:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=noOWmJCax9gB5O+ojrhLnbWZ1dfvKEtKnZfz42WWl/4=; b=CYlyJr1XQAXUL9esvCX78GqmUZYOV/QBwlOB9gfYvv6AAsC3wFbX94S4ESPVtnEHdm bpcUIUayGaVG08C36gmW7TCJApHukJKHLYkLzy+mvogAptaY0CfexdR5niJ/QTt8Zt18 LEvN1ytPBUoi2ho12apKsqV9ytEgJELU7+zz0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=Fk8WjfeaVeV5KQYvaxyCtpHOUIzyCBs8sdlxHZq3zg6LsUluTr3pk/7PgAurGDSqMi k54Y6s5D9fe0pcG3PlOWqVxgoBIfgSdVn0+xK5e+gUpfjFOfwQKQ7a7ssx8MAbL1OU5a VIktMN/RvYMhWBN3H6nIgXq9Fhci0qEnGqQU8= Received: by 10.86.95.20 with SMTP id s20mr3366571fgb.65.1222623792923; Sun, 28 Sep 2008 10:43:12 -0700 (PDT) Received: by 10.86.82.4 with HTTP; Sun, 28 Sep 2008 10:43:12 -0700 (PDT) Message-ID: Date: Sun, 28 Sep 2008 13:43:12 -0400 From: "firmdog@gmail.com" To: "Arno J. Klaassen" In-Reply-To: MIME-Version: 1.0 References: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 18:14:46 -0000 I have the same problem on a Dell Poweredge SC440 when I transferred over 50GB from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover cable and the link was 1000 full duplex, but could only get about 10M/s. Very odd. Did a tcpdump and saw lots of bad checksum errors. What other troubleshooting steps can we take? What could be the problem? [root@gray ~]# uname -a FreeBSD 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Tue Sep 2 02:27:56 EDT 2008 andy@gray.home:/usr/obj/usr/src/sys/GENERIC i386 pciconf showing the NIC: bge0@pci0:5:0:0: class=0x020000 card=0x01df1028 chip=0x167a14e4 rev=0x02 hdr=0x00 vendor = 'Broadcom Corporation' device = 'BCM5754 Broadcom NetXtreme Gigabit Ethernet Controller' class = network subclass = ethernet cap 01[48] = powerspec 3 supports D0 D3 current D0 cap 03[50] = VPD cap 09[58] = vendor (length 120) cap 05[e8] = MSI supports 1 message, 64 bit cap 10[d0] = PCI-Express 1 endpoint from sysctl dev.bge.0.%desc: Broadcom NetXtreme Gigabit Ethernet Controller, ASIC rev. 0xb002 dev.bge.0.%driver: bge dev.bge.0.%location: slot=0 function=0 dev.bge.0.%pnpinfo: vendor=0x14e4 device=0x167a subvendor=0x1028 subdevice=0x01df class=0x020000 dev.bge.0.%parent: pci5 dev.miibus.0.%desc: MII bus dev.miibus.0.%driver: miibus dev.miibus.0.%parent: bge0 dev.brgphy.0.%desc: BCM5787 10/100/1000baseTX PHY On Sat, Sep 27, 2008 at 5:21 PM, Arno J. Klaassen wrote: > > > Hello, > > I've serious network performance problems on a HP Turion X2 > based brand new notebook; I only used a 7-1Beta CD and > 7-STABLE on this thing. > > Scp-ing ports.tgz from a rock-stable 7-STABLE server to it gives : > > # scp -p ports.tgz login@mv:/tmp/ > ports.tgz 100% 98MB 88.7KB/s 18:49 > > (doing the same thing by copy from an nfs-mounted disk even > takes mores than an hour ...) > > > Doing a top(1) aside, just shows the box 100% idle : > > PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND > 12 root 171 ki31 0K 16K CPU0 0 38:55 100.00% idle: cpu0 > 11 root 171 ki31 0K 16K RUN 1 38:55 100.00% idle: cpu1 > 13 root -32 - 0K 16K WAIT 0 0:02 0.00% swi4: clock sio > 29 root -68 - 0K 16K - 0 0:00 0.00% nfe0 taskq > 34 root -64 - 0K 16K WAIT 1 0:00 0.00% irq23: atapci1 > 1853 root 8 0 7060K 1920K wait 0 0:00 0.00% sh > 878 nono 44 0 8112K 2288K CPU1 1 0:00 0.00% top > 884 root 8 - 0K 16K - 1 0:00 0.00% nfsiod 0 > 4 root -8 - 0K 16K - 1 0:00 0.00% g_down > 16 root -16 - 0K 16K - 1 0:00 0.00% yarrow > 46 root 20 - 0K 16K syncer 0 0:00 0.00% syncer > 3 root -8 - 0K 16K - 0 0:00 0.00% g_up > 30 root -68 - 0K 16K - 0 0:00 0.00% fw0_taskq > > > I tested : > > Update Bios > ULE /4BSD > PREEMPTION on/off > PREEMPTION + IPI_PREEMPTION > hw.nfe.msi[x]_disable=1 > > All don't seem to matter to the problem. > > I put two tcpdumps (server and client during another scp(1) ) on > http://bare.snv.jussieu.fr/temp/tcpdump-s1518.server > http://bare.snv.jussieu.fr/temp/tcpdump-s1518.client > > I'm far from an expert on TCP/IP, but wireshark "expert info" shows > lots of sequences like : > > TCP Previous segment lost > TCP Duplicate ACK 1 > TCP Window update > TCP Duplicate ACK 2 > TCP Duplicate ACK 3 > TCP Duplicate ACK 4 > TCP Duplicate ACK 5 > TCP Fast retransmission (suspected) > TCP ... > TCP Out-of-Order segment > TCP ... > > > As usual, feel free to contact me for further info/tests. > > Thanx, Arno > > ##### uname -a > FreeBSD mv 7.1-PRERELEASE FreeBSD 7.1-PRERELEASE #0: Fri Sep 26 15:06:07 > CEST 2008 root@m39.scito.local:/usr/obj/usr/src/sys/PAVILLON amd64 > > ##### pciconf -lcv (bits) > nfe0@pci0:0:6:0: class=0x020000 card=0x30cf103c chip=0x045010de > rev=0xa3 hdr=0x00 > vendor = 'Nvidia Corp' > device = 'MCP65 Ethernet' > class = network > subclass = ethernet > cap 01[44] = powerspec 2 supports D0 D1 D2 D3 current D0 > > > ##### dmesg -a > > Copyright (c) 1992-2008 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 > The Regents of the University of California. All rights reserved. > FreeBSD is a registered trademark of The FreeBSD Foundation. > FreeBSD 7.1-PRERELEASE #0: Fri Sep 26 15:06:07 CEST 2008 > root@m39.scito.local:/usr/obj/usr/src/sys/PAVILLON > Timecounter "i8254" frequency 1193250 Hz quality 0 > CPU: AMD Turion(tm) 64 X2 Mobile Technology TL-62 (2109.70-MHz K8-class > CPU) > Origin = "AuthenticAMD" Id = 0x60f82 Stepping = 2 > > Features=0x178bfbff > Features2=0x2001 > AMD Features=0xea500800 > AMD Features2=0x11f > Cores per package: 2 > usable memory = 3210813440 (3062 MB) > avail memory = 3104542720 (2960 MB) > ACPI APIC Table: > FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs > cpu0 (BSP): APIC ID: 0 > cpu1 (AP): APIC ID: 1 > ioapic0 irqs 0-23 on motherboard > kbd1 at kbdmux0 > ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413) > acpi0: on motherboard > acpi0: [ITHREAD] > acpi0: Power Button (fixed) > ACPI Error (dsopcode-0671): Field [I9MN] at 544 exceeds Buffer [IORT] size > 464 (bits) [20070320] > ACPI Error (psparse-0626): Method parse/execution failed > [\\_SB_.PCI0.LPC0.PMIO._CRS] (Node 0xffffff00011f50a0), AE_AML_BUFFER_LIMIT > ACPI Error (uteval-0309): Method execution failed > [\\_SB_.PCI0.LPC0.PMIO._CRS] (Node 0xffffff00011f50a0), AE_AML_BUFFER_LIMIT > can't fetch resources for \\_SB_.PCI0.LPC0.PMIO - AE_AML_BUFFER_LIMIT > Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000 > acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0 > acpi_ec0: port 0x62,0x66 on acpi0 > acpi_hpet0: iomem 0xfed00000-0xfed003ff on > acpi0 > Timecounter "HPET" frequency 25000000 Hz quality 900 > acpi_acad0: on acpi0 > battery0: on acpi0 > acpi_lid0: on acpi0 > pcib0: port 0xcf8-0xcff on acpi0 > pci0: on pcib0 > pci0: at device 0.0 (no driver attached) > isab0: port 0x1d00-0x1dff at device 1.0 on pci0 > isa0: on isab0 > pci0: at device 1.1 (no driver attached) > pci0: at device 1.3 (no driver attached) > ohci0: mem 0xf2486000-0xf2486fff irq 18 at > device 2.0 on pci0 > ohci0: [GIANT-LOCKED] > ohci0: [ITHREAD] > usb0: OHCI version 1.0, legacy support > usb0: on ohci0 > usb0: USB revision 1.0 > uhub0: on usb0 > uhub0: 10 ports with 10 removable, self powered > ehci0: mem 0xf2488000-0xf24880ff irq 17 > at device 2.1 on pci0 > ehci0: [GIANT-LOCKED] > ehci0: [ITHREAD] > usb1: EHCI version 1.0 > usb1: companion controller, 10 ports each: usb0 > usb1: on ehci0 > usb1: USB revision 2.0 > uhub1: on usb1 > uhub1: 10 ports with 10 removable, self powered > ugen0: on uhub1 > nfe0: port 0x30e0-0x30e7 mem > 0xf2487000-0xf2487fff irq 20 at device 6.0 on pci0 > miibus0: on nfe0 > rgephy0: PHY 1 on miibus0 > rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, > 1000baseT-FDX, auto > nfe0: Ethernet address: 00:1e:68:5a:d2:e1 > nfe0: [FILTER] > pci0: at device 7.0 (no driver attached) > pcib1: at device 8.0 on pci0 > pci_link0: BIOS IRQ 15 for 7.5.INTA is invalid > pci_link1: BIOS IRQ 10 for 7.5.INTB is invalid > pci7: on pcib1 > fwohci0: <1394 Open Host Controller Interface> irq 9 at device 5.0 on pci7 > fwohci0: [FILTER] > fwohci0: OHCI version 1.10 (ROM=0) > fwohci0: No. of Isochronous channels is 4. > fwohci0: EUI64 00:24:1b:00:a1:b7:e8:00 > fwohci0: Phy 1394a available S400, 1 ports. > fwohci0: Link S400, max_rec 2048 bytes. > firewire0: on fwohci0 > fwe0: on firewire0 > if_fwe0: Fake Ethernet address: 02:24:1b:b7:e8:00 > fwe0: Ethernet address: 02:24:1b:b7:e8:00 > fwip0: on firewire0 > fwip0: Firewire address: 00:24:1b:00:a1:b7:e8:00 @ 0xfffe00000000, S400, > maxrec 2048 > sbp0: on firewire0 > dcons_crom0: on firewire0 > dcons_crom0: bus_addr 0x2550000 > fwohci0: Initiate bus reset > fwohci0: BUS reset > fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode > pci7: at device 5.1 (no driver attached) > pci7: at device 5.2 (no driver attached) > pci7: at device 5.3 (no driver attached) > pci7: at device 5.4 (no driver attached) > atapci0: port > 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x30c0-0x30cf at device 9.0 on pci0 > ata0: on atapci0 > ata0: [ITHREAD] > ata1: on atapci0 > ata1: [ITHREAD] > atapci1: port > 0x30f8-0x30ff,0x30ec-0x30ef,0x30f0-0x30f7,0x30e8-0x30eb,0x30d0-0x30df mem > 0xf2484000-0xf2485fff irq 23 at device 10.0 on pci0 > atapci1: [ITHREAD] > ata2: on atapci1 > ata2: [ITHREAD] > ata3: on atapci1 > ata3: [ITHREAD] > pcib2: at device 11.0 on pci0 > pci1: on pcib2 > pcib3: at device 12.0 on pci0 > pci3: on pcib3 > ath0: mem 0xf2000000-0xf200ffff irq 16 at device 0.0 on > pci3 > ath0: [ITHREAD] > ath0: unable to attach hardware; HAL status 13 > device_attach: ath0 attach returned 6 > pcib4: at device 13.0 on pci0 > pci5: on pcib4 > vgapci0: port 0x4000-0x407f mem > 0xce000000-0xceffffff,0xd0000000-0xdfffffff,0xcc000000-0xcdffffff irq 19 at > device 0.0 on pci5 > pcib5: at device 14.0 on pci0 > pci9: on pcib5 > acpi_button0: on acpi0 > acpi_button1: on acpi0 > acpi_tz0: on acpi0 > acpi_tz0: _CRT value is absurd, ignored (-72.6C) > atkbdc0: port 0x60,0x64 irq 1 on acpi0 > atkbd0: irq 1 on atkbdc0 > kbd0 at atkbd0 > atkbd0: [GIANT-LOCKED] > atkbd0: [ITHREAD] > psm0: irq 12 on atkbdc0 > psm0: [GIANT-LOCKED] > psm0: [ITHREAD] > psm0: model IntelliMouse, device ID 3 > cpu0: on acpi0 > acpi_throttle0: on cpu0 > powernow0: on cpu0 > cpu1: on acpi0 > acpi_throttle1: on cpu1 > acpi_throttle1: failed to attach P_CNT > device_attach: acpi_throttle1 attach returned 6 > powernow1: on cpu1 > orm0: at iomem 0xcd800-0xcefff,0xdf000-0xdffff on isa0 > ppc0: cannot reserve I/O port range > sc0: at flags 0x100 on isa0 > sc0: VGA <16 virtual consoles, flags=0x300> > sio0: configured irq 4 not in bitmap of probed irqs 0 > sio0: port may not be enabled > sio0: configured irq 4 not in bitmap of probed irqs 0 > sio0: port may not be enabled > sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 > sio0: type 8250 or not responding > sio0: [FILTER] > sio1: configured irq 3 not in bitmap of probed irqs 0 > sio1: port may not be enabled > vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 > Timecounters tick every 1.000 msec > firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) > firewire0: bus manager 0 (me) > acpi_tz0: _CRT value is absurd, ignored (-72.6C) > acd0: DVDR at ata0-master PIO4 > ad4: 305245MB at ata2-master UDMA33 > GEOM_LABEL: Label for provider acd0 is iso9660/CDROM. > SMP: AP CPU #1 Launched! > GEOM_LABEL: Label for provider ad4s2 is ntfs/HP_RECOVERY. > _______________________________________________ > freebsd-stable@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-stable > To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org" > From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 19:51:12 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3784E106568E for ; Sun, 28 Sep 2008 19:51:12 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from QMTA06.emeryville.ca.mail.comcast.net (qmta06.emeryville.ca.mail.comcast.net [76.96.30.56]) by mx1.freebsd.org (Postfix) with ESMTP id 1AE918FC0A for ; Sun, 28 Sep 2008 19:51:12 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from OMTA04.emeryville.ca.mail.comcast.net ([76.96.30.35]) by QMTA06.emeryville.ca.mail.comcast.net with comcast id LDgK1a0030lTkoCA6KbC0F; Sun, 28 Sep 2008 19:35:12 +0000 Received: from koitsu.dyndns.org ([67.180.253.227]) by OMTA04.emeryville.ca.mail.comcast.net with comcast id LKbB1a0074v8bD78QKbBSk; Sun, 28 Sep 2008 19:35:12 +0000 X-Authority-Analysis: v=1.0 c=1 a=g3XWG8PL9CAA:10 a=qSlgtixbqsUA:10 a=QycZ5dHgAAAA:8 a=nNU62_RgrPhi-SKxFK4A:9 a=Op30DxwxTIN7Sr_AjyOAHlqssIMA:4 a=EoioJ0NPDVgA:10 a=MSl-tDqOz04A:10 a=LY0hPdMaydYA:10 Received: by icarus.home.lan (Postfix, from userid 1000) id 3DF02C9437; Sun, 28 Sep 2008 12:35:11 -0700 (PDT) Date: Sun, 28 Sep 2008 12:35:11 -0700 From: Jeremy Chadwick To: "firmdog@gmail.com" Message-ID: <20080928193511.GB87069@icarus.home.lan> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 19:51:12 -0000 On Sun, Sep 28, 2008 at 01:43:12PM -0400, firmdog@gmail.com wrote: > I have the same problem on a Dell Poweredge SC440 when I transferred over > 50GB > from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover cable > and > the link was 1000 full duplex, but could only get about 10M/s. Very odd. > Did a tcpdump and saw lots of bad checksum errors. This is probably because checksum offloading was being done on the NIC. -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB | From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 20:53:01 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BEDAE1065694; Sun, 28 Sep 2008 20:53:01 +0000 (UTC) (envelope-from gpalmer@freebsd.org) Received: from noop.in-addr.com (mail.in-addr.com [IPv6:2001:470:8:162::1]) by mx1.freebsd.org (Postfix) with ESMTP id 9354E8FC1A; Sun, 28 Sep 2008 20:53:01 +0000 (UTC) (envelope-from gpalmer@freebsd.org) Received: from gjp by noop.in-addr.com with local (Exim 4.54 (FreeBSD)) id 1Kk3GG-000Kju-Fn; Sun, 28 Sep 2008 16:53:00 -0400 Date: Sun, 28 Sep 2008 16:53:00 -0400 From: Gary Palmer To: "firmdog@gmail.com" Message-ID: <20080928205300.GF60230@in-addr.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 20:53:01 -0000 On Sun, Sep 28, 2008 at 01:43:12PM -0400, firmdog@gmail.com wrote: > I have the same problem on a Dell Poweredge SC440 when I transferred over > 50GB > from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover cable > and > the link was 1000 full duplex, but could only get about 10M/s. Very odd. > Did a > tcpdump and saw lots of bad checksum errors. > > What other troubleshooting steps can we take? What could be the problem? Please post the first few lines of ifconfig for bge0. I'm suspecting you'll see something like em1: flags=8843 mtu 1500 options=1b (yes, I know thats an em, not bge, but I don't have any bge's around here) Note that the options line say that receive and transmit checksum offloading is enabled. This means that for packets transmitted by this system, tcpdump will show checksum errors as the kernel is not generating the checksums, the ethernet card will. Since tcpdump is seeting the packet before the ethernet card does its magic, you get the checksum errors on transmit. Received packets should be fine though. Regards, Gary From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 22:15:45 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 126331065689 for ; Sun, 28 Sep 2008 22:15:45 +0000 (UTC) (envelope-from firmdog@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.152]) by mx1.freebsd.org (Postfix) with ESMTP id 8E0A18FC0C for ; Sun, 28 Sep 2008 22:15:44 +0000 (UTC) (envelope-from firmdog@gmail.com) Received: by fg-out-1718.google.com with SMTP id l26so1204852fgb.35 for ; Sun, 28 Sep 2008 15:15:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=bFwDIMAFTWkrm4BD2n4hUZfKLZ2xppr0l0fHaWVTQx8=; b=j/igaZVUHfT25Upa1TwNkJnJLp78IaM4qBnPRnpLyXTCxc266lm3uEEBZy7nP49n7K P2tuvtqVba3X9PjdK8mYLPNS6yxH42b0vrPTreelHb1ohenwMS5atCq0BVuzRMQJPtD1 CsuZtx+h31RVGIykO5yKf6Rrp0Ed8RGYLS9uM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=WGXf3BmNndi518X3h0AvcZrKRiIOjJpW8eLN8Fia53qD7j/Oz/yV/infINAuwEVImJ V2wP/Z3PTHJFiR+NnQUL3aVWgc+bLKoHngTw+lDQd32tLzzt/gmA9ZT1HMee+rK9o8i7 YSO9SIqIrS1B84d88xso7HyfiMyGtZKBv9p/U= Received: by 10.86.74.15 with SMTP id w15mr3601064fga.42.1222640143170; Sun, 28 Sep 2008 15:15:43 -0700 (PDT) Received: by 10.86.82.4 with HTTP; Sun, 28 Sep 2008 15:15:43 -0700 (PDT) Message-ID: Date: Sun, 28 Sep 2008 18:15:43 -0400 From: "firmdog@gmail.com" To: "Gary Palmer" In-Reply-To: <20080928205300.GF60230@in-addr.com> MIME-Version: 1.0 References: <20080928205300.GF60230@in-addr.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 22:15:45 -0000 On Sun, Sep 28, 2008 at 4:53 PM, Gary Palmer wrote: > On Sun, Sep 28, 2008 at 01:43:12PM -0400, firmdog@gmail.com wrote: > > I have the same problem on a Dell Poweredge SC440 when I transferred over > > 50GB > > from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover > cable > > and > > the link was 1000 full duplex, but could only get about 10M/s. Very odd. > > Did a > > tcpdump and saw lots of bad checksum errors. > > > > What other troubleshooting steps can we take? What could be the problem? > > Please post the first few lines of ifconfig for bge0. I'm suspecting > you'll see something like > > em1: flags=8843 mtu 1500 > options=1b > > (yes, I know thats an em, not bge, but I don't have any bge's around > here) > > Note that the options line say that receive and transmit checksum > offloading is enabled. This means that for packets transmitted > by this system, tcpdump will show checksum errors as the kernel > is not generating the checksums, the ethernet card will. Since > tcpdump is seeting the packet before the ethernet card does its > magic, you get the checksum errors on transmit. Received packets > should be fine though. > > Regards, > > Gary > Pasted below. When I was doing the transfer, it was 1000 full duplex and was very slow. This is a web/email/database server and I don't see any performance problems yet, but I would like to know what the problem is/was. What else can I provide? bge0: flags=8843 metric 0 mtu 1500 options=9b ether 00:1a:a0:23:c0:03 inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255 media: Ethernet autoselect (100baseTX ) status: active From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 22:30:04 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C13DC106568A for ; Sun, 28 Sep 2008 22:30:04 +0000 (UTC) (envelope-from firmdog@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.159]) by mx1.freebsd.org (Postfix) with ESMTP id 46BF08FC1A for ; Sun, 28 Sep 2008 22:30:04 +0000 (UTC) (envelope-from firmdog@gmail.com) Received: by fg-out-1718.google.com with SMTP id l26so1207586fgb.35 for ; Sun, 28 Sep 2008 15:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=w/Rnd0RTtMEuVA1oiUo6t2VmWxMypXnn+SYAfPgK8eY=; b=RbhsLjY7ZeI+4wjWFkEzitD4hF1dRA3CFFIjtA6qqXYF+Y37PEPUmAiRRLSWUgRnWP wpGyXv+cljv+GltwokCBoeeOjMHS7Zv4Yt7LPaSxPnSo4s3aqf2Sv3a5V3iuiHgH0u0w ejfaG+j0Tuy19CpUumKadMSWYptwat5h7yGkY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=mM4e5DnW1jVVjRIZieWPpr56fMoZhX2gDfuLthdhQYg7tFyqfm9M/qkFxsM+/8H2qm 78OWg6iGo4xBVfu34lrJYT4gir0Uhc95qILRmcY/7dR/Az890ReIOsTq2iJdimKL03M3 m+Wiw2gm/wbABSoyPZCIG8taqbtT/OkiiHSAY= Received: by 10.86.66.19 with SMTP id o19mr3578016fga.68.1222641003202; Sun, 28 Sep 2008 15:30:03 -0700 (PDT) Received: by 10.86.82.4 with HTTP; Sun, 28 Sep 2008 15:30:03 -0700 (PDT) Message-ID: Date: Sun, 28 Sep 2008 18:30:03 -0400 From: "firmdog@gmail.com" To: "Jeremy Chadwick" In-Reply-To: <20080928222414.GA90269@icarus.home.lan> MIME-Version: 1.0 References: <20080928205300.GF60230@in-addr.com> <20080928222414.GA90269@icarus.home.lan> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 22:30:04 -0000 On Sun, Sep 28, 2008 at 6:24 PM, Jeremy Chadwick wrote: > On Sun, Sep 28, 2008 at 06:15:43PM -0400, firmdog@gmail.com wrote: > > On Sun, Sep 28, 2008 at 4:53 PM, Gary Palmer > wrote: > > > > > On Sun, Sep 28, 2008 at 01:43:12PM -0400, firmdog@gmail.com wrote: > > > > I have the same problem on a Dell Poweredge SC440 when I transferred > over > > > > 50GB > > > > from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover > > > cable > > > > and > > > > the link was 1000 full duplex, but could only get about 10M/s. Very > odd. > > > > Did a > > > > tcpdump and saw lots of bad checksum errors. > > > > > > > > What other troubleshooting steps can we take? What could be the > problem? > > > > > > Please post the first few lines of ifconfig for bge0. I'm suspecting > > > you'll see something like > > > > > > em1: flags=8843 mtu 1500 > > > options=1b > > > > > > (yes, I know thats an em, not bge, but I don't have any bge's around > > > here) > > > > > > Note that the options line say that receive and transmit checksum > > > offloading is enabled. This means that for packets transmitted > > > by this system, tcpdump will show checksum errors as the kernel > > > is not generating the checksums, the ethernet card will. Since > > > tcpdump is seeting the packet before the ethernet card does its > > > magic, you get the checksum errors on transmit. Received packets > > > should be fine though. > > > > > > Regards, > > > > > > Gary > > > > > > > > > Pasted below. When I was doing the transfer, it was 1000 full duplex and > > was very slow. > > This is a web/email/database server and I don't see any performance > problems > > yet, but > > I would like to know what the problem is/was. What else can I provide? > > > > bge0: flags=8843 metric 0 mtu > 1500 > > options=9b > > ether 00:1a:a0:23:c0:03 > > inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255 > > media: Ethernet autoselect (100baseTX ) > > status: active > > I see 100baseTX there, not 1000baseTX. This speed is being selected via > autoneg (auto speed/duplex negotiation). > > Whatever switch you're connected to is not properly negotiating the > speed. > > What brand and model of switch is this host connected to, and are you > *absolutely certain* it supports (and is configured for) gigE? No....you misunderstood. The 7.1 box was connected to a 5.4 box doing a 50GB data transfer over rsync. Both nics were 1000 full duplex with a crossover cable. The speed performance was terrible and I could only get up to 10 Mb/s and there was NO switch involved. I believe there is a problem or bug involved with the driver. Have the drivers or stack been updated in 7.1? What else can I provide? From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 22:34:17 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C52B1065686 for ; Sun, 28 Sep 2008 22:34:17 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from QMTA05.westchester.pa.mail.comcast.net (qmta05.westchester.pa.mail.comcast.net [76.96.62.48]) by mx1.freebsd.org (Postfix) with ESMTP id 02C318FC14 for ; Sun, 28 Sep 2008 22:34:16 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from OMTA09.westchester.pa.mail.comcast.net ([76.96.62.20]) by QMTA05.westchester.pa.mail.comcast.net with comcast id LKct1a00A0SCNGk55NQF0i; Sun, 28 Sep 2008 22:24:15 +0000 Received: from koitsu.dyndns.org ([67.180.253.227]) by OMTA09.westchester.pa.mail.comcast.net with comcast id LNQE1a0084v8bD73VNQFsX; Sun, 28 Sep 2008 22:24:15 +0000 X-Authority-Analysis: v=1.0 c=1 a=g3XWG8PL9CAA:10 a=qSlgtixbqsUA:10 a=QycZ5dHgAAAA:8 a=GdMVtckzp1B5kRWKAfkA:9 a=FMILXAL5VWvrbrjttcIA:7 a=z2GBRmGH9N5NSgHwbvdG02DJY2IA:4 a=EoioJ0NPDVgA:10 a=MSl-tDqOz04A:10 a=SV7veod9ZcQA:10 a=LY0hPdMaydYA:10 Received: by icarus.home.lan (Postfix, from userid 1000) id 47B47C9432; Sun, 28 Sep 2008 15:24:14 -0700 (PDT) Date: Sun, 28 Sep 2008 15:24:14 -0700 From: Jeremy Chadwick To: "firmdog@gmail.com" Message-ID: <20080928222414.GA90269@icarus.home.lan> References: <20080928205300.GF60230@in-addr.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 22:34:17 -0000 On Sun, Sep 28, 2008 at 06:15:43PM -0400, firmdog@gmail.com wrote: > On Sun, Sep 28, 2008 at 4:53 PM, Gary Palmer wrote: > > > On Sun, Sep 28, 2008 at 01:43:12PM -0400, firmdog@gmail.com wrote: > > > I have the same problem on a Dell Poweredge SC440 when I transferred over > > > 50GB > > > from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover > > cable > > > and > > > the link was 1000 full duplex, but could only get about 10M/s. Very odd. > > > Did a > > > tcpdump and saw lots of bad checksum errors. > > > > > > What other troubleshooting steps can we take? What could be the problem? > > > > Please post the first few lines of ifconfig for bge0. I'm suspecting > > you'll see something like > > > > em1: flags=8843 mtu 1500 > > options=1b > > > > (yes, I know thats an em, not bge, but I don't have any bge's around > > here) > > > > Note that the options line say that receive and transmit checksum > > offloading is enabled. This means that for packets transmitted > > by this system, tcpdump will show checksum errors as the kernel > > is not generating the checksums, the ethernet card will. Since > > tcpdump is seeting the packet before the ethernet card does its > > magic, you get the checksum errors on transmit. Received packets > > should be fine though. > > > > Regards, > > > > Gary > > > > > Pasted below. When I was doing the transfer, it was 1000 full duplex and > was very slow. > This is a web/email/database server and I don't see any performance problems > yet, but > I would like to know what the problem is/was. What else can I provide? > > bge0: flags=8843 metric 0 mtu 1500 > options=9b > ether 00:1a:a0:23:c0:03 > inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255 > media: Ethernet autoselect (100baseTX ) > status: active I see 100baseTX there, not 1000baseTX. This speed is being selected via autoneg (auto speed/duplex negotiation). Whatever switch you're connected to is not properly negotiating the speed. What brand and model of switch is this host connected to, and are you *absolutely certain* it supports (and is configured for) gigE? -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB | From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 22:44:05 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9543B106568D for ; Sun, 28 Sep 2008 22:44:05 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from QMTA01.emeryville.ca.mail.comcast.net (qmta01.emeryville.ca.mail.comcast.net [76.96.30.16]) by mx1.freebsd.org (Postfix) with ESMTP id 74CBC8FC17 for ; Sun, 28 Sep 2008 22:44:05 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from OMTA05.emeryville.ca.mail.comcast.net ([76.96.30.43]) by QMTA01.emeryville.ca.mail.comcast.net with comcast id LNQj1a00a0vp7WLA1NjiFs; Sun, 28 Sep 2008 22:43:42 +0000 Received: from koitsu.dyndns.org ([67.180.253.227]) by OMTA05.emeryville.ca.mail.comcast.net with comcast id LNk41a0014v8bD78RNk4WX; Sun, 28 Sep 2008 22:44:04 +0000 X-Authority-Analysis: v=1.0 c=1 a=g3XWG8PL9CAA:10 a=qSlgtixbqsUA:10 a=6I5d2MoRAAAA:8 a=QycZ5dHgAAAA:8 a=TaBqLT28euFuzUbQHJoA:9 a=zhPr7A6TN5_47Hu89_EA:7 a=fm7W4BaQJn0i24lrmi-ymYvEC50A:4 a=EoioJ0NPDVgA:10 a=MSl-tDqOz04A:10 a=SV7veod9ZcQA:10 a=LY0hPdMaydYA:10 Received: by icarus.home.lan (Postfix, from userid 1000) id F0791C9432; Sun, 28 Sep 2008 15:44:03 -0700 (PDT) Date: Sun, 28 Sep 2008 15:44:03 -0700 From: Jeremy Chadwick To: "firmdog@gmail.com" Message-ID: <20080928224403.GA90609@icarus.home.lan> References: <20080928205300.GF60230@in-addr.com> <20080928222414.GA90269@icarus.home.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 22:44:05 -0000 On Sun, Sep 28, 2008 at 06:30:03PM -0400, firmdog@gmail.com wrote: > On Sun, Sep 28, 2008 at 6:24 PM, Jeremy Chadwick wrote: > > > On Sun, Sep 28, 2008 at 06:15:43PM -0400, firmdog@gmail.com wrote: > > > On Sun, Sep 28, 2008 at 4:53 PM, Gary Palmer > > wrote: > > > > > > > On Sun, Sep 28, 2008 at 01:43:12PM -0400, firmdog@gmail.com wrote: > > > > > I have the same problem on a Dell Poweredge SC440 when I transferred > > over > > > > > 50GB > > > > > from a FreeBSD 5.4 box to my new Dell running 7.1. Used a crossover > > > > cable > > > > > and > > > > > the link was 1000 full duplex, but could only get about 10M/s. Very > > odd. > > > > > Did a > > > > > tcpdump and saw lots of bad checksum errors. > > > > > > > > > > What other troubleshooting steps can we take? What could be the > > problem? > > > > > > > > Please post the first few lines of ifconfig for bge0. I'm suspecting > > > > you'll see something like > > > > > > > > em1: flags=8843 mtu 1500 > > > > options=1b > > > > > > > > (yes, I know thats an em, not bge, but I don't have any bge's around > > > > here) > > > > > > > > Note that the options line say that receive and transmit checksum > > > > offloading is enabled. This means that for packets transmitted > > > > by this system, tcpdump will show checksum errors as the kernel > > > > is not generating the checksums, the ethernet card will. Since > > > > tcpdump is seeting the packet before the ethernet card does its > > > > magic, you get the checksum errors on transmit. Received packets > > > > should be fine though. > > > > > > > > Regards, > > > > > > > > Gary > > > > > > > > > > > > > Pasted below. When I was doing the transfer, it was 1000 full duplex and > > > was very slow. > > > This is a web/email/database server and I don't see any performance > > problems > > > yet, but > > > I would like to know what the problem is/was. What else can I provide? > > > > > > bge0: flags=8843 metric 0 mtu > > 1500 > > > options=9b > > > ether 00:1a:a0:23:c0:03 > > > inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255 > > > media: Ethernet autoselect (100baseTX ) > > > status: active > > > > I see 100baseTX there, not 1000baseTX. This speed is being selected via > > autoneg (auto speed/duplex negotiation). > > > > Whatever switch you're connected to is not properly negotiating the > > speed. > > > > What brand and model of switch is this host connected to, and are you > > *absolutely certain* it supports (and is configured for) gigE? > No....you misunderstood. The 7.1 box was connected to a 5.4 box doing > a 50GB data transfer over rsync. Both nics were 1000 full duplex with > a crossover cable. The speed performance was terrible and I could > only get up to 10 Mb/s and there was NO switch involved. > > I believe there is a problem or bug involved with the driver. This is "after the fact" evidence. The problem is that there are numerous other factors here which could explain a 10MByte/sec cap, such as small TCP window sizes or limited disk bandwidth. Your systems are no longer in this configuration, is that correct? > Have the drivers or stack been updated in 7.1? What else can I > provide? you're asking me to give you a run-down of the changes in a driver across **two** major versions of FreeBSD (from 5 to 6 to 7). There have been changes not just to the driver, but everything the driver relies on. I don't think there's necessarily any hard evidence the "driver" is the problem -- it could be one of a hundred things. If you want to review the changes to the bge(4) driver, they are below. You'll want to look at all of the commit messages between May 9th 2005 and present. http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/bge/if_bge.c -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB | From owner-freebsd-net@FreeBSD.ORG Sun Sep 28 23:50:52 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 95A541065689 for ; Sun, 28 Sep 2008 23:50:52 +0000 (UTC) (envelope-from rjf12@students.waikato.ac.nz) Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.171]) by mx1.freebsd.org (Postfix) with ESMTP id 78BB18FC15 for ; Sun, 28 Sep 2008 23:50:52 +0000 (UTC) (envelope-from rjf12@students.waikato.ac.nz) Received: by wf-out-1314.google.com with SMTP id 24so1783238wfg.7 for ; Sun, 28 Sep 2008 16:50:52 -0700 (PDT) Received: by 10.142.222.21 with SMTP id u21mr1888599wfg.67.1222644115998; Sun, 28 Sep 2008 16:21:55 -0700 (PDT) Received: by 10.142.200.18 with HTTP; Sun, 28 Sep 2008 16:21:55 -0700 (PDT) Message-ID: Date: Mon, 29 Sep 2008 12:21:55 +1300 From: "Ryan French" To: freebsd-net@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Subject: Initialisation of a networking protocol X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Sep 2008 23:50:52 -0000 Hi everyone, I'm having a bit of trouble with my MPLS protocol code at the moment. I have the code written and compiling (mostly based on some OpenBSD code I was shown) but when an MPLS packet is received it doesnt appear as thou my mpls_input routine is being called. I believe this is because I have not initialised the protocol properly. I have created protosw structure for MPLS as well as created an mpls_init(void) function which registers the protocol with netisr via netisr_register. Other than that I am not really sure where I tell the kernel to call the mpls_init function so that the protocol is initialised, and a couple of hours of googling/looking through ip6 code hasnt really helped at all. If anyone can help and needs to see the code it can be viewed on Perforce at http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2008/rfrench_mpls&HIDEDEL=NO Thanks for any help. - Ryan French From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 05:01:53 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF6B2106568B for ; Mon, 29 Sep 2008 05:01:52 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.188]) by mx1.freebsd.org (Postfix) with ESMTP id 62F5C8FC0C for ; Mon, 29 Sep 2008 05:01:52 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: by ti-out-0910.google.com with SMTP id d27so1150460tid.3 for ; Sun, 28 Sep 2008 22:01:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:received:date:from :to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=aTqtI0jx64aN/aRvKaK2+OKeOdUVqqmoUZ30lEtNczI=; b=dJ37jp9b3DnxodqOfYsnRhD6bZuAN3oEiW4qv2OLxLPXai1Pmq1TLZ2HFN60YEckiT VyPDyIc8t/SjktQ1O97WBzjbQ03eTa5D3EcSQtOVdpAH2I5OqLOYNLfn8ydcTtAdasFE aO8u5RxhrKv3cR9agfbJYUq+sar5ShUlGaj7I= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=yGqDPGsO7trEq+50IDEe7Qu9Rym5JURZfu682rp6w8IP2T6EB2P5e0P+8p2Kzm9PF3 WZu1WOTUm5V3XwqAl5o2FfWkWeFGzMdVxAHFzLZThafFRWVyfFgCiGRQ7VrMJLnwQr+m WWqwkMEAuX59Z5cd4P6jSd5wR+ZvDu9QBdUsg= Received: by 10.110.11.1 with SMTP id 1mr6490762tik.24.1222662817218; Sun, 28 Sep 2008 21:33:37 -0700 (PDT) Received: from michelle.cdnetworks.co.kr ([211.53.35.84]) by mx.google.com with ESMTPS id 22sm6351337tim.16.2008.09.28.21.33.33 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sun, 28 Sep 2008 21:33:35 -0700 (PDT) Received: from michelle.cdnetworks.co.kr (localhost.cdnetworks.co.kr [127.0.0.1]) by michelle.cdnetworks.co.kr (8.13.5/8.13.5) with ESMTP id m8T4Va73055761 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 29 Sep 2008 13:31:36 +0900 (KST) (envelope-from pyunyh@gmail.com) Received: (from yongari@localhost) by michelle.cdnetworks.co.kr (8.13.5/8.13.5/Submit) id m8T4VYhQ055760; Mon, 29 Sep 2008 13:31:34 +0900 (KST) (envelope-from pyunyh@gmail.com) Date: Mon, 29 Sep 2008 13:31:34 +0900 From: Pyun YongHyeon To: "Arno J. Klaassen" Message-ID: <20080929043134.GD54819@cdnetworks.co.kr> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 05:01:53 -0000 On Sat, Sep 27, 2008 at 11:21:00PM +0200, Arno J. Klaassen wrote: > > > Hello, > > I've serious network performance problems on a HP Turion X2 > based brand new notebook; I only used a 7-1Beta CD and > 7-STABLE on this thing. > > Scp-ing ports.tgz from a rock-stable 7-STABLE server to it gives : > > # scp -p ports.tgz login@mv:/tmp/ > ports.tgz 100% 98MB 88.7KB/s 18:49 > > (doing the same thing by copy from an nfs-mounted disk even > takes mores than an hour ...) > > > Doing a top(1) aside, just shows the box 100% idle : > > PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND > 12 root 171 ki31 0K 16K CPU0 0 38:55 100.00% idle: cpu0 > 11 root 171 ki31 0K 16K RUN 1 38:55 100.00% idle: cpu1 > 13 root -32 - 0K 16K WAIT 0 0:02 0.00% swi4: clock sio > 29 root -68 - 0K 16K - 0 0:00 0.00% nfe0 taskq > 34 root -64 - 0K 16K WAIT 1 0:00 0.00% irq23: atapci1 > 1853 root 8 0 7060K 1920K wait 0 0:00 0.00% sh > 878 nono 44 0 8112K 2288K CPU1 1 0:00 0.00% top > 884 root 8 - 0K 16K - 1 0:00 0.00% nfsiod 0 > 4 root -8 - 0K 16K - 1 0:00 0.00% g_down > 16 root -16 - 0K 16K - 1 0:00 0.00% yarrow > 46 root 20 - 0K 16K syncer 0 0:00 0.00% syncer > 3 root -8 - 0K 16K - 0 0:00 0.00% g_up > 30 root -68 - 0K 16K - 0 0:00 0.00% fw0_taskq > > > I tested : > > Update Bios > ULE /4BSD > PREEMPTION on/off > PREEMPTION + IPI_PREEMPTION > hw.nfe.msi[x]_disable=1 ^^^^^^^^^^^^^^^^^^^^^^^ This has no effect as MCP65 lacks MSI/MSI-X capability. > > All don't seem to matter to the problem. > > I put two tcpdumps (server and client during another scp(1) ) on > http://bare.snv.jussieu.fr/temp/tcpdump-s1518.server > http://bare.snv.jussieu.fr/temp/tcpdump-s1518.client > > I'm far from an expert on TCP/IP, but wireshark "expert info" shows > lots of sequences like : > > TCP Previous segment lost > TCP Duplicate ACK 1 > TCP Window update > TCP Duplicate ACK 2 > TCP Duplicate ACK 3 > TCP Duplicate ACK 4 > TCP Duplicate ACK 5 > TCP Fast retransmission (suspected) > TCP ... > TCP Out-of-Order segment > TCP ... > > > As usual, feel free to contact me for further info/tests. > AFAIK it seems that you're the first one that reports poor performance issue of MCP65. MCP65 has no checksum offload/TSO capability so nfe(4) never try to take advantage of the hardware capability. So you should have no checksum offload/TSO related issue here. Also note, checking network performance with scp(1) wouldn't show real numbers as scp(1) may involve other system activities. Use one of network benchmark programs in ports(e.g. benchmarks/netperf) to measure network performance. Other possible cause of issue could be link speed/duplex mismatch or excessive MAC control frames(e.g. pause frames). Does nfe(4) agree on resolved speed/duplex with link partner? If they all agree on resolved speed/duplex, would you check number of pause frames sent/received from link partner? Even though MCP65 supports hardware MAC statistics for pause frames nfe(4) has no support code yet so you may have to resort to managed switch that can show Tx/Rx statistics of each port. -- Regards, Pyun YongHyeon From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 07:41:43 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5F73610656AC for ; Mon, 29 Sep 2008 07:41:43 +0000 (UTC) (envelope-from noc@bg.net.ua) Received: from mail.bg.net.ua (mail.bg.net.ua [193.227.206.56]) by mx1.freebsd.org (Postfix) with ESMTP id E73A28FC22 for ; Mon, 29 Sep 2008 07:41:42 +0000 (UTC) (envelope-from noc@bg.net.ua) Received: from www by mail.bg.net.ua with local (Exim 4.69 (FreeBSD)) (envelope-from ) id 1KkDO1-0004CP-KZ; Mon, 29 Sep 2008 10:41:41 +0300 Received: from 193.227.206.220 (SquirrelMail authenticated user muff@bg.net.ua) by webmail.bg.net.ua with HTTP; Mon, 29 Sep 2008 10:41:41 +0300 (EEST) Message-ID: <38eb68e1e4bd90145fe7e90708c8979f.squirrel@webmail.bg.net.ua> In-Reply-To: References: <79dc33e3f3737f5beeadce88e96004bc.squirrel@webmail.bg.net.ua> Date: Mon, 29 Sep 2008 10:41:41 +0300 (EEST) From: "Zin'kov Oleg" To: "Dmitriy" <_pppp@mail.ru> User-Agent: SquirrelMail/1.4.15 MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal Cc: freebsd-net@freebsd.org, Zin'kov Oleg Subject: Re: Problem with process parallelization X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 07:41:43 -0000 >> Hello, freebsd-net mailing list. >> >> We have server such configurtion: >> - 2 quadcore AMD Opteron processors; >> - 4 GB RAM; >> - NIC Intel Pro/1000 PT, Dual Port Server Adapter. >> >> ########################################################### >> >> Problem: >> >> in some moments of time, at the growth of the network activity, one of >> the processors is fully loaded at 100%. >> >> ########################################################### >> >> Kernel configuration: >> >> FreeBSD atlantis.bg.net.ua 7.0-STABLE FreeBSD 7.0-STABLE #1: Tue Apr 1 >> 15:06:30 EEST 2008 >> root@atlantis.bg.net.ua:/usr/obj/usr/src/sys/ATLANTIS amd64 >> >> /etc/sysctl.conf: >> >> net.inet.tcp.blackhole=2 >> net.inet.udp.blackhole=1 >> kern.ipc.somaxconn=16384 >> net.inet.ip.fastforwarding=1 >> net.inet.ip.maxfragpackets=2000 >> net.inet.ip.intr_queue_maxlen=1000 >> net.inet.ip.dummynet.hash_size=2048 >> net.inet.tcp.recvspace=65536 >> net.inet.udp.recvspace=65536 >> net.inet.raw.recvspace=32768 >> net.local.stream.recvspace=32768 >> net.local.dgram.recvspace=32768 >> net.local.stream.sendspace=32768 >> net.inet.tcp.sendspace=65536 >> net.inet.icmp.icmplim=500 >> dev.em.0.rx_int_delay=500 >> dev.em.0.tx_int_delay=500 >> dev.em.0.rx_abs_int_delay=800 >> dev.em.0.tx_abs_int_delay=800 >> dev.em.1.rx_int_delay=500 >> dev.em.1.tx_int_delay=500 >> dev.em.1.rx_abs_int_delay=800 >> dev.em.1.tx_abs_int_delay=800 >> net.link.ether.inet.max_age=600 >> >> /boot/loader.conf: >> >> hw.em.rxd=4096 >> hw.em.txd=4096 >> >> /etc/rc.firewall: >> >> 82 pipes like theese: >> >> pipe 387 ip from any to 193.227.x.x in recv vlan10 >> pipe 388 ip from 193.227.x.x to any out xmit vlan10 >> >> >> ######################################### >> Kernel: >> >> >> cpu HAMMER >> ident ATLANTIS >> >> # To statically compile in device wiring instead of /boot/device.hints >> #hints "GENERIC.hints" # Default places to look for >> devices. >> >> makeoptions DEBUG=-g # Build kernel with gdb(1) debug >> symbols >> >> options SCHED_ULE # 4BSD scheduler >> options PREEMPTION # Enable kernel thread >> preemption >> options INET # InterNETworking >> #options SCTP # Stream Control Transmission >> Protocol >> options FFS # Berkeley Fast Filesystem >> options >> SOFTUPDATES # Enable FFS soft updates support >> options >> UFS_ACL # Support for access control lists >> options >> UFS_DIRHASH # Improve performance on big directories >> options PROCFS # Process filesystem (requires >> PSEUDOFS) >> options PSEUDOFS # Pseudo-filesystem framework >> options GEOM_PART_GPT # GUID Partition Tables. >> options GEOM_LABEL # Provides labelization >> options COMPAT_43TTY # BSD 4.3 TTY compat [KEEP >> THIS!] >> options COMPAT_IA32 # Compatible with i386 binaries >> options COMPAT_FREEBSD4 # Compatible with FreeBSD4 >> options >> COMPAT_FREEBSD5 # Compatible with FreeBSD5 options >> COMPAT_FREEBSD6 # Compatible with FreeBSD6 options >> KTRACE >> # ktrace(1) support >> options SYSVSHM # SYSV-style shared memory >> options >> SYSVMSG # SYSV-style message queues options >> SYSVSEM # SYSV-style semaphores >> options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time >> extensions >> options KBD_INSTALL_CDEV # install a CDEV entry in /dev >> options ADAPTIVE_GIANT # Giant mutex is adaptive. >> options >> STOP_NMI # Stop CPUS using NMI instead of IPI >> options AUDIT # Security event auditing >> >> # Make an SMP-capable kernel by default >> options SMP # Symmetric MultiProcessor >> Kernel >> >> # Bus support. >> device acpi >> device pci >> >> # ATA and ATAPI devices >> device ata >> >> device atadisk # ATA disk drives >> options ATA_STATIC_ID # Static device numbering >> >> # RAID controllers >> device twe # 3ware ATA RAID >> >> # atkbdc0 controls both the keyboard and the PS/2 mouse >> device atkbdc # AT keyboard controller >> device atkbd # AT keyboard >> >> device vga # VGA video card driver >> >> device splash # Splash screen and screen saver support >> >> # syscons is the default console driver, resembling an SCO console >> device >> sc >> >> ### COM >> device sio >> >> # PCI Ethernet NICs. >> device em # Intel PRO/1000 adapter Gigabit >> Ethernet >> Card >> >> # PCI Ethernet NICs that use the common MII bus controller code. >> # NOTE: Be sure to keep the 'device miibus' line in order to use these >> NICs! device miibus # MII bus support >> device bge # Broadcom BCM570xx Gigabit Ethernet >> device fxp # Intel EtherExpress PRO/100B (82557, >> 82558) >> >> # Pseudo devices. >> device loop # Network loopback >> device random # Entropy device >> device ether # Ethernet support >> device pty # Pseudo-ttys (telnet etc) >> device vlan >> >> # The `bpf' device enables the Berkeley Packet Filter. >> # Be aware of the administrative consequences of enabling this! >> # Note that 'bpf' is required for DHCP. >> device bpf # Berkeley packet filter >> >> ## Custom options >> # NetGraph >> options NETGRAPH >> options NETGRAPH_ONE2MANY >> options NETGRAPH_NETFLOW >> options NETGRAPH_CISCO >> options NETGRAPH_ETHER >> options NETGRAPH_KSOCKET >> options NETGRAPH_SOCKET >> options NETGRAPH_TEE >> >> options IPFIREWALL >> options IPFIREWALL_VERBOSE >> options IPFIREWALL_FORWARD >> options IPFIREWALL_VERBOSE_LIMIT=1000 >> options IPFIREWALL_DEFAULT_TO_ACCEPT >> options DUMMYNET >> options HZ=1000 >> options DEVICE_POLLING >> ##################################################### >> >> Interfaces: >> - em0 >> - em1 >> - bge0 >> - bge1 >> - vlan (61 virtual interfaces) >> >> ##################################################### >> top -S >> >> last pid: 9673; load averages: 1.94, 1.75, 1.57 >> up 0+19:17:21 >> 19:45:01 >> 77 processes: 11 running, 49 sleeping, 17 waiting >> CPU states: 0.0% user, 0.0% nice, 22.6% system, 0.3% interrupt, 77.0% >> idle Mem: 198M Active, 410M Inact, 455M Wired, 228K Cache, 214M Buf, >> 2874M >> Free Swap: 4096M Total, 4096M Free >> >> PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU >> COMMAND >> 11 root 1 171 ki31 0K 16K CPU7 7 19.0H 100.00% idle: >> cpu7 >> 16 root 1 171 ki31 0K 16K CPU2 2 18.9H 100.00% idle: >> cpu2 >> 17 root 1 171 ki31 0K 16K RUN 1 18.8H 100.00% idle: >> cpu1 >> 13 root 1 171 ki31 0K 16K CPU5 5 18.8H 100.00% idle: >> cpu5 >> 18 root 1 171 ki31 0K 16K CPU0 0 916:13 100.00% idle: >> cpu0 >> 12 root 1 171 ki31 0K 16K CPU6 6 18.8H 99.85% idle: >> cpu6 >> 35 root 1 -68 - 0K 16K CPU4 4 466:17 96.00% em1 >> taskq >> 34 root 1 -68 - 0K 16K CPU3 3 482:01 90.38% em0 >> taskq >> 15 root 1 171 ki31 0K 16K RUN 3 655:20 13.38% idle: >> cpu3 >> 14 root 1 171 ki31 0K 16K RUN 4 671:52 3.08% idle: >> cpu4 >> >> >> ############################################## >> 19:45[p0]root@atlantis#~>netstat -w 1 -I em0 >> input (em0) output >> packets errs bytes packets errs bytes colls >> 57381 0 36442155 68726 0 69126050 0 >> 56817 0 37480502 67656 0 66053093 0 >> 57847 0 39532712 68603 0 67037042 0 >> 56908 0 37197022 68924 0 68660108 0 >> 57107 0 37643382 68398 0 68113937 0 >> 56847 0 35944754 68394 0 67896267 0 >> 58754 0 39763361 68966 0 70029090 0 >> 58343 0 38301796 69635 0 69948678 0 >> ^C >> 19:46[p0]root@atlantis#~>netstat -w 1 -I em1 >> input (em1) output >> packets errs bytes packets errs bytes colls >> 67944 0 68877031 55376 0 36252905 0 >> 65943 0 66722222 54575 0 37710643 0 >> 64639 0 67149621 53298 0 35423539 0 >> 63988 0 65035759 51787 0 35402337 0 >> 63849 0 65968513 50727 0 31683425 0 >> 64301 0 66684912 50193 0 30917339 0 >> >> >> >> ################################################################### >> >> >> How can we solve this problem and parallelize em1:taskq kernel processes >> between all 8 processors? > > # sysctl net.isr.direct=0 > would add one more kernel thread to handle your network traffic. > > Regards, Dmitriy. > A problem remained :( >> >> >> -- >> ISP BGNet >> 288-03-53 >> 246-68-98 >> >> Zin'kov Oleg >> System administrator >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> ISP BGNet >> 288-03-53 >> 246-68-98 >> >> Zin'kov Oleg >> System administrator >> >> _______________________________________________ >> 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" >> > > -- ISP BGNet 288-03-53 246-68-98 Zin'kov Oleg System administrator From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 07:56:51 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F573106568E for ; Mon, 29 Sep 2008 07:56:51 +0000 (UTC) (envelope-from granica_raydom@rambler.ru) Received: from mxa.rambler.ru (mxa.rambler.ru [81.19.66.231]) by mx1.freebsd.org (Postfix) with ESMTP id 54C468FC12 for ; Mon, 29 Sep 2008 07:56:51 +0000 (UTC) (envelope-from granica_raydom@rambler.ru) Received: from mcgi62.rambler.ru (mcgi62.rambler.ru [81.19.67.192]) by mxa.rambler.ru (Postfix) with ESMTP id 546E574D4E for ; Mon, 29 Sep 2008 11:38:15 +0400 (MSD) Received: from mcgi62.rambler.ru (localhost [127.0.0.1]) by mcgi62.rambler.ru (Postfix) with ESMTP id 0EF6911516 for ; Mon, 29 Sep 2008 11:38:14 +0400 (MSD) Received: from [82.179.85.3] by mcgi62.rambler.ru with HTTP (mailimap); Mon, 29 Sep 2008 11:38:12 +0400 From: To: Date: Mon, 29 Sep 2008 11:38:12 +0400 MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; format="flowed" Message-Id: <84984638.1222673892.144643464.45273@mcgi62.rambler.ru> X-Mailer: Ramail 3u, (untone), http://mail.rambler.ru Subject: crpc-0.7.5 released X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 07:56:51 -0000 Hi all, CRPC version 0.7.5 is released. CRPC or C-based Remote Procedure Call is a remote procedure call system with automatic parallelization capabilities integrated into C language. The project site is http://crpc.sourceforge.net/ Regards, Andrey Babanin. From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 09:13:29 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2E862106568B; Mon, 29 Sep 2008 09:13:29 +0000 (UTC) (envelope-from hk@alogis.com) Received: from alogis.com (firewall.solit-ag.de [212.184.102.1]) by mx1.freebsd.org (Postfix) with ESMTP id B1B528FC25; Mon, 29 Sep 2008 09:13:28 +0000 (UTC) (envelope-from hk@alogis.com) Received: from alogis.com (localhost [127.0.0.1]) by alogis.com (8.13.4/8.13.1) with ESMTP id m8T93Aba070781; Mon, 29 Sep 2008 11:03:10 +0200 (CEST) (envelope-from hk@alogis.com) Received: (from hk@localhost) by alogis.com (8.13.4/8.13.1/Submit) id m8T93AN6070780; Mon, 29 Sep 2008 11:03:10 +0200 (CEST) (envelope-from hk) Date: Mon, 29 Sep 2008 11:03:10 +0200 From: Holger Kipp To: "firmdog@gmail.com" Message-ID: <20080929090310.GA70418@intserv.int1.b.intern> References: <20080928205300.GF60230@in-addr.com> <20080928222414.GA90269@icarus.home.lan> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i Cc: Jeremy Chadwick , stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 09:13:29 -0000 On Sun, Sep 28, 2008 at 06:30:03PM -0400, firmdog@gmail.com wrote: > No....you misunderstood. The 7.1 box was connected to a 5.4 box doing a 50GB > data transfer over rsync. Both nics were 1000 full duplex with a crossover cable. > The speed performance was terrible and I could only get up to 10 Mb/s and there > was NO switch involved. I believe there is a problem or bug involved with the > driver. Have the drivers or stack been updated in 7.1? What else can I provide? Hi, I only flipped through the messages in this thread, faintly remembering someone writing something about ssh. Anyway, if you're copying using ssh (scp, sftp), then the transfer rate is much less than what you'd expect - due to the encryption/decryption overhead (unless you have hardware acceleration on both sideds). Just my two cents (Euro) on general reasons for slow data transfers. Regards, Holger Kipp From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 11:06:54 2008 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C076A106568E for ; Mon, 29 Sep 2008 11:06:54 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id AEDC48FC20 for ; Mon, 29 Sep 2008 11:06:54 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m8TB6s48040876 for ; Mon, 29 Sep 2008 11:06:54 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m8TB6sgr040872 for freebsd-net@FreeBSD.org; Mon, 29 Sep 2008 11:06:54 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 29 Sep 2008 11:06:54 GMT Message-Id: <200809291106.m8TB6sgr040872@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-net@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-net@FreeBSD.org X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 11:06:54 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- s kern/127587 net [bge] [request] if_bge(4) doesn't support BCM576X fami f kern/127528 net [icmp]: icmp socket receives icmp replies not owned by o bin/127192 net routed(8) removes the secondary alias IP of interface f kern/127145 net [wi]: prism (wi) driver crash at bigger traffic o kern/127102 net [wpi] Intel 3945ABG low throughput o kern/127057 net [udp] Unable to send UDP packet via IPv6 socket to IPv o kern/127050 net [carp] ipv6 does not work on carp interfaces [regressi o kern/126984 net [carp][patch] add carp userland notifications via devc o kern/126945 net [carp] CARP interface destruction with ifconfig destro o kern/126895 net [patch] [ral] Add antenna selection (marked as TBD) o kern/126874 net [vlan]: Zebra problem if ifconfig vlanX destroy o bin/126822 net wpa_supplicant(8): WPA PSK does not work in adhoc mode o kern/126714 net [carp] CARP interface renaming makes system no longer o kern/126695 net rtfree messages and network disruption upon use of if_ o kern/126688 net [ixgbe] [patch] 1.4.7 ixgbe driver panic with 4GB and f kern/126564 net [ath] doesn't work with my PCI-E X1 wireless network a o kern/126561 net [nlm] [patch] NLM (rpclockd) RPC UNLOCK failure (stall o kern/126475 net [ath] [panic] ath pcmcia card inevitably panics under o kern/126469 net [fxp] [panic] fxp(4) related kernel panic o kern/126339 net [ipw] ipw driver drops the connection o kern/126214 net [ath] txpower problem with Atheros wifi card o kern/126075 net [in] Network: internet control accesses beyond end of o bin/125922 net [patch] Deadlock in arp(8) o kern/125920 net [arp] Kernel Routing Table loses Ethernet Link status o kern/125845 net [netinet] [patch] tcp_lro_rx() should make use of hard o kern/125816 net [carp] [bridge] carp stuck in init when using bridge i f kern/125502 net [ral] ifconfig ral0 scan produces no output unless in o kern/125258 net [socket] socket's SO_REUSEADDR option does not work o kern/125239 net [gre] kernel crash when using gre f kern/125195 net [fxp] fxp(4) driver failed to initialize device Intel o kern/125181 net [ndis] [patch] with wep enters kdb.enter.unknown, pani o kern/125079 net [ppp] host routes added by ppp with gateway flag (regr o kern/124904 net [fxp] EEPROM corruption with Compaq NC3163 NIC o kern/124767 net [iwi] Wireless connection using iwi0 driver (Intel 220 o kern/124753 net [ieee80211] net80211 discards power-save queue packets o kern/124609 net [ipsec] [panic] ipsec 'remainder too big' panic with p o kern/124341 net [ral] promiscuous mode for wireless device ral0 looses o kern/124160 net [libc] connect(2) function loops indefinitely o kern/124127 net [msk] watchdog timeout (missed Tx interrupts) -- recov o kern/124021 net [ip6] [panic] page fault in nd6_output() o bin/124004 net ifconfig(8): Cannot assign both an IP and a MAC addres o kern/123968 net [rum] [panic] rum driver causes kernel panic with WPA. p kern/123961 net [vr] [patch] Allow vr interface to handle vlans o kern/123892 net [tap] [patch] No buffer space available o kern/123881 net [tcp] Turning on TCP blackholing causes slow localhost o kern/123796 net [ipf] FreeBSD 6.1+VPN+ipnat+ipf: port mapping does not o bin/123633 net ifconfig(8) doesn't set inet and ether address in one o kern/123617 net [tcp] breaking connection when client downloading file o kern/123603 net [tcp] tcp_do_segment and Received duplicate SYN o kern/123559 net [iwi] iwi periodically disassociates/associates [regre o bin/123465 net [ip6] route(8): route add -inet6 -interfac o kern/123463 net [ipsec] [panic] repeatable crash related to ipsec-tool o kern/123429 net [nfe] [hang] "ifconfig nfe up" causes a hard system lo o kern/123347 net [bge] bge1: watchdog timeout -- linkstate changed to D o conf/123330 net [nsswitch.conf] Enabling samba wins in nsswitch.conf c o kern/123256 net [wpi] panic: blockable sleep lock with wpi(4) f kern/123200 net [netgraph] Server failure due to netgraph mpd and dhcp f kern/123172 net [bce] Watchdog timeout problems with if_bce o kern/123160 net [ip] Panic and reboot at sysctl kern.polling.enable=0 o kern/123066 net [ipsec] [panic] kernel trap with ipsec o kern/122989 net [swi] [panic] 6.3 kernel panic in swi1: net o kern/122954 net [lagg] IPv6 EUI64 incorrectly chosen for lagg devices o kern/122928 net [em] interface watchdog timeouts and stops receiving p f kern/122839 net [multicast] FreeBSD 7 multicast routing problem p kern/122794 net [lagg] Kernel panic after brings lagg(8) up if NICs ar o kern/122780 net [lagg] tcpdump on lagg interface during high pps wedge o kern/122772 net [em] em0 taskq panic, tcp reassembly bug causes radix o kern/122743 net [panic] vm_page_unwire: invalid wire count: 0 o kern/122697 net [ath] Atheros card is not well supported o kern/122685 net It is not visible passing packets in tcpdump(1) o kern/122551 net [bge] Broadcom 5715S no carrier on HP BL460c blade usi o kern/122427 net [apm] [panic] apm and mDNSResponder cause panic during o kern/122319 net [wi] imposible to enable ad-hoc demo mode with Orinoco o kern/122290 net [netgraph] [panic] Netgraph related "kmem_map too smal f kern/122252 net [ipmi] [bge] IPMI problem with BCM5704 (does not work o kern/122195 net [ed] Alignment problems in if_ed o kern/122082 net [in_pcb] NULL pointer dereference in in_pcbdrop o kern/122068 net [ppp] ppp can not set the correct interface with pptpd o kern/122058 net [em] [panic] Panic on em1: taskq o kern/122033 net [ral] [lor] Lock order reversal in ral0 at bootup [reg o kern/121983 net [fxp] fxp0 MBUF and PAE o kern/121872 net [wpi] driver fails to attach on a fujitsu-siemens s711 s kern/121774 net [swi] [panic] 6.3 kernel panic in swi1: net o kern/121706 net [netinet] [patch] "rtfree: 0xc4383870 has 1 refs" emit o kern/121624 net [em] [regression] Intel em WOL fails after upgrade to o kern/121555 net [panic] Fatal trap 12: current process = 12 (swi1: net o kern/121443 net [gif] LOR icmp6_input/nd6_lookup o kern/121437 net [vlan] Routing to layer-2 address does not work on VLA o kern/121298 net [em] [panic] Fatal trap 12: page fault while in kernel o kern/121257 net [tcp] TSO + natd -> slow outgoing tcp traffic o kern/121181 net [panic] Fatal trap 3: breakpoint instruction fault whi o kern/121080 net [bge] IPv6 NUD problem on multi address config on bge0 o kern/120966 net [rum] kernel panic with if_rum and WPA encryption p docs/120945 net [PATCH] ip6(4) man page lacks documentation for TCLASS o kern/120566 net [request]: ifconfig(8) make order of arguments more fr o kern/120304 net [netgraph] [patch] netgraph source assumes 32-bit time o kern/120266 net [panic] gnugk causes kernel panic when closing UDP soc o kern/120232 net [nfe] [patch] Bring in nfe(4) to RELENG_6 o kern/120130 net [carp] [panic] carp causes kernel panics in any conste o kern/119945 net [rum] [panic] rum device in hostap mode, cause kernel o kern/119791 net [nfs] UDP NFS mount of aliased IP addresses from a Sol o kern/119617 net [nfs] nfs error on wpa network when reseting/shutdown f kern/119516 net [ip6] [panic] _mtx_lock_sleep: recursed on non-recursi o kern/119432 net [arp] route add -host -iface causes arp e o kern/119361 net [bge] bge(4) transmit performance problem o kern/119345 net [ath] Unsuported Atheros 5424/2424 and CPU speedstep n o kern/119225 net [wi] 7.0-RC1 no carrier with Prism 2.5 wifi card [regr o bin/118987 net ifconfig(8): ifconfig -l (address_family) does not wor o kern/118880 net [ip6] IP_RECVDSTADDR & IP_SENDSRCADDR not implemented a kern/118879 net [bge] [patch] bge has checksum problems on the 5703 ch o kern/118727 net [netgraph] [patch] [request] add new ng_pf module o kern/117448 net [carp] 6.2 kernel crash [regression] o kern/117423 net [vlan] Duplicate IP on different interfaces o bin/117339 net [patch] route(8): loading routing management commands o kern/117271 net [tap] OpenVPN TAP uses 99% CPU on releng_6 when if_tap o kern/117043 net [em] Intel PWLA8492MT Dual-Port Network adapter EEPROM o kern/116837 net [tun] [panic] [patch] ifconfig tunX destroy: panic o kern/116747 net [ndis] FreeBSD 7.0-CURRENT crash with Dell TrueMobile o bin/116643 net [patch] [request] fstat(1): add INET/INET6 socket deta o kern/116328 net [bge]: Solid hang with bge interface o kern/116185 net [iwi] if_iwi driver leads system to reboot o kern/116077 net [ip] [patch] 6.2-STABLE panic during use of multi-cast o kern/115239 net [ipnat] panic with 'kmem_map too small' using ipnat o kern/114915 net [patch] [pcn] pcn (sys/pci/if_pcn.c) ethernet driver f o kern/114839 net [fxp] fxp looses ability to speak with traffic o kern/114714 net [gre][patch] gre(4) is not MPSAFE and does not support o kern/113842 net [ip6] PF_INET6 proto domain state can't be cleared wit o kern/112722 net [udp] IP v4 udp fragmented packet reject o kern/112686 net [patm] patm driver freezes System (FreeBSD 6.2-p4) i38 o bin/112557 net [patch] ppp(8) lock file should not use symlink name o kern/112528 net [nfs] NFS over TCP under load hangs with "impossible p o kern/109733 net [bge] bge link state issues [regression] o kern/109470 net [wi] Orinoco Classic Gold PC Card Can't Channel Hop o kern/109308 net [pppd] [panic] Multiple panics kernel ppp suspected [r o bin/108895 net pppd(8): PPPoE dead connections on 6.2 [regression] o kern/108542 net [bce]: Huge network latencies with 6.2-RELEASE / STABL o kern/107944 net [wi] [patch] Forget to unlock mutex-locks o conf/107035 net [patch] bridge interface given in rc.conf not taking a o kern/106438 net [ipf] ipfilter: keep state does not seem to allow repl o kern/106316 net [dummynet] dummynet with multipass ipfw drops packets s kern/105943 net Network stack may modify read-only mbuf chain copies o bin/105925 net problems with ifconfig(8) and vlan(4) [regression] o conf/102502 net [patch] ifconfig name does't rename netgraph node in n o kern/102035 net [plip] plip networking disables parallel port printing o kern/101948 net [ipf] [panic] Kernel Panic Trap No 12 Page Fault - cau o kern/100519 net [netisr] suggestion to fix suboptimal network polling o kern/98978 net [ipf] [patch] ipfilter drops OOW packets under 6.1-Rel o kern/95288 net [pppd] [tty] [panic] if_ppp panic in sys/kern/tty_subr o kern/95277 net [netinet] [patch] IP Encapsulation mask_match() return o kern/95267 net packet drops periodically appear o kern/93378 net [tcp] Slow data transfer in Postfix and Cyrus IMAP (wo f kern/92552 net A serious bug in most network drivers from 5.X to 6.X o kern/92090 net [bge] bge0: watchdog timeout -- resetting s kern/91777 net [ipf] [patch] wrong behaviour with skip rule inside an o kern/91594 net [em] FreeBSD > 5.4 w/ACPI fails to detect Intel Pro/10 o kern/87521 net [ipf] [panic] using ipfilter "auth" keyword leads to k s kern/86920 net [ndis] ifconfig: SIOCS80211: Invalid argument [regress o kern/86103 net [ipf] Illegal NAT Traversal in IPFilter s kern/81147 net [net] [patch] em0 reinitialization while adding aliase o kern/79895 net [ipf] 5.4-RC2 breaks ipfilter NAT when using netgraph o bin/79228 net [patch] extend arp(8) to be able to create blackhole r o kern/78090 net [ipf] ipf filtering on bridged packets doesn't work if p kern/77913 net [wi] [patch] Add the APDL-325 WLAN pccard to wi(4) o kern/77273 net [ipf] ipfilter breaks ipv6 statefull filtering on 5.3 s kern/77195 net [ipf] [patch] ipfilter ioctl SIOCGNATL does not match o kern/70904 net [ipf] ipfilter ipnat problem with h323 proxy support o kern/64556 net [sis] if_sis short cable fix problems with NetGear FA3 s kern/60293 net FreeBSD arp poison patch o kern/54383 net [nfs] [patch] NFS root configurations without dynamic s bin/41647 net ifconfig(8) doesn't accept lladdr along with inet addr s kern/39937 net ipstealth issue a kern/38554 net [patch] changing interface ipaddress doesn't seem to w o kern/35442 net [sis] [patch] Problem transmitting runts in if_sis dri o kern/34665 net [ipf] [hang] ipfilter rcmd proxy "hangs". o kern/27474 net [ipf] [ppp] Interactive use of user PPP and ipfilter c o conf/23063 net [PATCH] for static ARP tables in rc.network 176 problems total. From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 14:13:02 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61E081065687; Mon, 29 Sep 2008 14:13:02 +0000 (UTC) (envelope-from arno@heho.snv.jussieu.fr) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by mx1.freebsd.org (Postfix) with ESMTP id C4D5B8FC14; Mon, 29 Sep 2008 14:13:01 +0000 (UTC) (envelope-from arno@heho.snv.jussieu.fr) Received: from heho.snv.jussieu.fr (heho.snv.jussieu.fr [134.157.184.22]) by shiva.jussieu.fr (8.14.3/jtpda-5.4) with ESMTP id m8TECxbU034670 ; Mon, 29 Sep 2008 16:12:59 +0200 (CEST) X-Ids: 168 Received: from heho.snv.jussieu.fr (localhost [127.0.0.1]) by heho.snv.jussieu.fr (8.13.3/jtpda-5.2) with ESMTP id m8TECvO8097951 ; Mon, 29 Sep 2008 16:12:57 +0200 (MEST) Received: (from arno@localhost) by heho.snv.jussieu.fr (8.13.3/8.13.1/Submit) id m8TECvkp097948; Mon, 29 Sep 2008 16:12:57 +0200 (MEST) (envelope-from arno) To: pyunyh@gmail.com References: <20080929043134.GD54819@cdnetworks.co.kr> From: "Arno J. Klaassen" Date: 29 Sep 2008 16:12:56 +0200 In-Reply-To: <20080929043134.GD54819@cdnetworks.co.kr> Message-ID: Lines: 184 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (shiva.jussieu.fr [134.157.0.168]); Mon, 29 Sep 2008 16:12:59 +0200 (CEST) X-Virus-Scanned: ClamAV 0.93.3/8353/Mon Sep 29 11:57:09 2008 on shiva.jussieu.fr X-Virus-Status: Clean X-Miltered: at jchkmail.jussieu.fr with ID 48E0E26B.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 48E0E26B.000/134.157.184.22/heho.snv.jussieu.fr/heho.snv.jussieu.fr/ X-j-chkmail-Score: MSGID : 48E0E26B.000 on jchkmail.jussieu.fr : j-chkmail score : . : R=. U=. O=. B=0.006 -> S=0.006 X-j-chkmail-Status: Ham Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 14:13:02 -0000 Dear Pyun, thanx for your prompt answer (as usual). Pyun YongHyeon writes: > On Sat, Sep 27, 2008 at 11:21:00PM +0200, Arno J. Klaassen wrote: > > > > > > Hello, > > > > I've serious network performance problems on a HP Turion X2 > > based brand new notebook; I only used a 7-1Beta CD and > > 7-STABLE on this thing. > > > > Scp-ing ports.tgz from a rock-stable 7-STABLE server to it gives : > > > > # scp -p ports.tgz login@mv:/tmp/ > > ports.tgz 100% 98MB 88.7KB/s 18:49 > > > > (doing the same thing by copy from an nfs-mounted disk even > > takes mores than an hour ...) > > > > > > Doing a top(1) aside, just shows the box 100% idle : > > > > PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND > > 12 root 171 ki31 0K 16K CPU0 0 38:55 100.00% idle: cpu0 > > 11 root 171 ki31 0K 16K RUN 1 38:55 100.00% idle: cpu1 > > 13 root -32 - 0K 16K WAIT 0 0:02 0.00% swi4: clock sio > > 29 root -68 - 0K 16K - 0 0:00 0.00% nfe0 taskq > > 34 root -64 - 0K 16K WAIT 1 0:00 0.00% irq23: atapci1 > > 1853 root 8 0 7060K 1920K wait 0 0:00 0.00% sh > > 878 nono 44 0 8112K 2288K CPU1 1 0:00 0.00% top > > 884 root 8 - 0K 16K - 1 0:00 0.00% nfsiod 0 > > 4 root -8 - 0K 16K - 1 0:00 0.00% g_down > > 16 root -16 - 0K 16K - 1 0:00 0.00% yarrow > > 46 root 20 - 0K 16K syncer 0 0:00 0.00% syncer > > 3 root -8 - 0K 16K - 0 0:00 0.00% g_up > > 30 root -68 - 0K 16K - 0 0:00 0.00% fw0_taskq > > > > > > I tested : > > > > Update Bios > > ULE /4BSD > > PREEMPTION on/off > > PREEMPTION + IPI_PREEMPTION > > hw.nfe.msi[x]_disable=1 > ^^^^^^^^^^^^^^^^^^^^^^^ > This has no effect as MCP65 lacks MSI/MSI-X capability. > > > > All don't seem to matter to the problem. > > > > I put two tcpdumps (server and client during another scp(1) ) on > > http://bare.snv.jussieu.fr/temp/tcpdump-s1518.server > > http://bare.snv.jussieu.fr/temp/tcpdump-s1518.client > > > > I'm far from an expert on TCP/IP, but wireshark "expert info" shows > > lots of sequences like : > > > > TCP Previous segment lost > > TCP Duplicate ACK 1 > > TCP Window update > > TCP Duplicate ACK 2 > > TCP Duplicate ACK 3 > > TCP Duplicate ACK 4 > > TCP Duplicate ACK 5 > > TCP Fast retransmission (suspected) > > TCP ... > > TCP Out-of-Order segment > > TCP ... > > > > > > As usual, feel free to contact me for further info/tests. > > > > AFAIK it seems that you're the first one that reports poor > performance issue of MCP65. someone must be ;) no kiddin, I am not convinced this is (only) a driver issue (cf. "bad NFS/UDP performance" thread on -hackers). I just have no experience on this notebook, so I can't say " it worked great before" and my only other 7-stable-amd64 I have does not show the probs, having a cheap re0 *and* being UP. > MCP65 has no checksum offload/TSO > capability so nfe(4) never try to take advantage of the hardware > capability. So you should have no checksum offload/TSO related > issue here. > Also note, checking network performance with scp(1) wouldn't > show real numbers as scp(1) may involve other system activities. > Use one of network benchmark programs in ports(e.g. > benchmarks/netperf) to measure network performance. quite funny (even taken with lots of salt since the LAN is used for "normal work" as well in parallel, but differences are rather significant) : I test to same server (7-stable-amd64 from Jun 7 (using nfe0 as well btw, but another chip), either from a 6-stable-x86 (Jul 14, sk0) or the notebook (7-stable-x64 below), using for i in ; do echo $i; /usr/local/bin/netperf -H push -i 4,2 -I 95,10 -t $i; echo; done streaming results are OK for both : TCP_STREAM Throughput 10^6bits/sec 6-stable-x86 349.57 7-stable-x64 939.47 UDP_STREAM Throughput 10^6bits/sec 6-stable-x86 388.45 7-stable-x64 947.89 However, the "request/respones" tests are awfull for my notebook (test repeated on the notebook for the sake of conviction) : TCP_RR Trans. Rate per sec 6-stable-x86 9801.58 7-stable-x64 137.61 7-stable-x64 89.35 7-stable-x64 102.29 TCP_CRR Trans. Rate per sec 6-stable-x86 4520.98 7-stable-x64 7.00 7-stable-x64 8.10 7-stable-x64 18.49 UDP_RR Trans. Rate per sec 6-stable-x86 9473.20 7-stable-x64 9.60 7-stable-x64 0.90 7-stable-x64 0.10 I can send you complete results if wanted. > Other possible cause of issue could be link speed/duplex mismatch > or excessive MAC control frames(e.g. pause frames). Does nfe(4) > agree on resolved speed/duplex with link partner? yes (1000baseTX ) > If they all agree on resolved speed/duplex, would you check number > of pause frames sent/received from link partner? Even though MCP65 > supports hardware MAC statistics for pause frames nfe(4) has no > support code yet so you may have to resort to managed switch that > can show Tx/Rx statistics of each port. aargh; I do have a Netgear GS724TS around where I can connect it to. This thing should be manageable, but give me some time to find out how .... Thanx, Arno From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 19:47:49 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C3522106568C; Mon, 29 Sep 2008 19:47:49 +0000 (UTC) (envelope-from remko@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 9961C8FC19; Mon, 29 Sep 2008 19:47:49 +0000 (UTC) (envelope-from remko@FreeBSD.org) Received: from freefall.freebsd.org (remko@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m8TJlnWe087892; Mon, 29 Sep 2008 19:47:49 GMT (envelope-from remko@freefall.freebsd.org) Received: (from remko@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m8TJlnG4087888; Mon, 29 Sep 2008 19:47:49 GMT (envelope-from remko) Date: Mon, 29 Sep 2008 19:47:49 GMT Message-Id: <200809291947.m8TJlnG4087888@freefall.freebsd.org> To: remko@FreeBSD.org, freebsd-i386@FreeBSD.org, freebsd-net@FreeBSD.org From: remko@FreeBSD.org Cc: Subject: Re: bin/127719: arp: Segmentation fault (core dumped) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 19:47:49 -0000 Synopsis: arp: Segmentation fault (core dumped) Responsible-Changed-From-To: freebsd-i386->freebsd-net Responsible-Changed-By: remko Responsible-Changed-When: Mon Sep 29 19:47:28 UTC 2008 Responsible-Changed-Why: reassign to net http://www.freebsd.org/cgi/query-pr.cgi?pr=127719 From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 20:10:29 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA2F7106568D; Mon, 29 Sep 2008 20:10:29 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 81E458FC15; Mon, 29 Sep 2008 20:10:29 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTP id 1A60346B45; Mon, 29 Sep 2008 16:10:29 -0400 (EDT) Date: Mon, 29 Sep 2008 21:10:29 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: "Arno J. Klaassen" In-Reply-To: Message-ID: References: <20080929043134.GD54819@cdnetworks.co.kr> User-Agent: Alpine 1.10 (BSF 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: pyunyh@gmail.com, stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 20:10:29 -0000 On Mon, 29 Sep 2008, Arno J. Klaassen wrote: > However, the "request/respones" tests are awfull for my notebook (test > repeated on the notebook for the sake of conviction) : Is it possible to rerun these tests with a 7.0 kernel of the same general configuration? That would help us determine if it's a regression between 7.0 and 7.1, or perhaps a more general issue between 6.x and 7.x. I wouldn't reject a hardware, driver, or general stack issue at this point as things are still fairly unclear. If it's definitely between 7.0 and 7.1 that the problem arises, trying a series of kernels spaced at, say, one month intervals in that period would be quite helpful in narrowing down the source. Thanks, Robert N M Watson Computer Laboratory University of Cambridge > > TCP_RR > Trans. > Rate > per sec > > 6-stable-x86 9801.58 > 7-stable-x64 137.61 > 7-stable-x64 89.35 > 7-stable-x64 102.29 > > TCP_CRR > Trans. > Rate > per sec > > 6-stable-x86 4520.98 > 7-stable-x64 7.00 > 7-stable-x64 8.10 > 7-stable-x64 18.49 > > > UDP_RR > Trans. > Rate > per sec > > 6-stable-x86 9473.20 > 7-stable-x64 9.60 > 7-stable-x64 0.90 > 7-stable-x64 0.10 > > > I can send you complete results if wanted. > >> Other possible cause of issue could be link speed/duplex mismatch >> or excessive MAC control frames(e.g. pause frames). Does nfe(4) >> agree on resolved speed/duplex with link partner? > > > yes (1000baseTX ) > >> If they all agree on resolved speed/duplex, would you check number >> of pause frames sent/received from link partner? Even though MCP65 >> supports hardware MAC statistics for pause frames nfe(4) has no >> support code yet so you may have to resort to managed switch that >> can show Tx/Rx statistics of each port. > > aargh; I do have a Netgear GS724TS around where I can connect it to. > This thing should be manageable, but give me some time to > find out how .... > > Thanx, Arno > _______________________________________________ > freebsd-stable@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-stable > To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org" > From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 21:08:44 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82B471065687; Mon, 29 Sep 2008 21:08:44 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: from onelab2.iet.unipi.it (onelab2.iet.unipi.it [131.114.9.129]) by mx1.freebsd.org (Postfix) with ESMTP id 3B59B8FC1F; Mon, 29 Sep 2008 21:08:44 +0000 (UTC) (envelope-from luigi@onelab2.iet.unipi.it) Received: by onelab2.iet.unipi.it (Postfix, from userid 275) id F2476730A8; Mon, 29 Sep 2008 23:12:18 +0200 (CEST) Date: Mon, 29 Sep 2008 23:12:18 +0200 From: Luigi Rizzo To: Robert Watson Message-ID: <20080929211218.GC69054@onelab2.iet.unipi.it> References: <20080929043134.GD54819@cdnetworks.co.kr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i Cc: pyunyh@gmail.com, stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 21:08:44 -0000 On Mon, Sep 29, 2008 at 09:10:29PM +0100, Robert Watson wrote: > > On Mon, 29 Sep 2008, Arno J. Klaassen wrote: > > >However, the "request/respones" tests are awfull for my notebook (test > >repeated on the notebook for the sake of conviction) : > > Is it possible to rerun these tests with a 7.0 kernel of the same general > configuration? That would help us determine if it's a regression between > 7.0 and 7.1, or perhaps a more general issue between 6.x and 7.x. I > wouldn't reject a hardware, driver, or general stack issue at this point as > things are still fairly unclear. If it's definitely between 7.0 and 7.1 > that the problem arises, trying a series of kernels spaced at, say, one > month intervals in that period would be quite helpful in narrowing down the > source. two things: + the 'nfe' driver is not in 6.x so i wonder how these numbers were derived in 6.x -- perhaps using a backport, or using the nve driver instead ? In any case we cannot easily compare 6.x and 7.x behaviour with nfe. + with the nfe driver and the MCP67 chipset i have found a tendency of the card to stall at high data rates and with some system load (e.g. massive scp while some X applications is spinning). This was completely repeatable and caused the network card to become deaf (it could transmit though) and it required an ifconfig down/up to come back to life, watchdogs and timeouts did not fix it. Additionally i have found some bug in the polling implementation which may or may not relate to more generic interrupt handling. This was described in a thread in april. A patch to address the stalls is at http://info.iet.unipi.it/~luigi/FreeBSD/nfe-20080426.1044.diff (i have been running this on my home pc since late april) A related patch changes slightly the implementation of polling: http://info.iet.unipi.it/~luigi/FreeBSD/nfe-20080427.diff At the time when i raised the problem on the mailing list apparently others were not seeing the problem so i did not pursue the integration in the system - but if this is a significant problem in 7.1R then it is worth a try. cheers luigi From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 21:41:47 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24B90106569F; Mon, 29 Sep 2008 21:41:47 +0000 (UTC) (envelope-from oberman@es.net) Received: from postal1.es.net (postal2.es.net [198.128.3.206]) by mx1.freebsd.org (Postfix) with ESMTP id F2FA28FC16; Mon, 29 Sep 2008 21:41:46 +0000 (UTC) (envelope-from oberman@es.net) Received: from ptavv.es.net (ptavv.es.net [198.128.4.29]) by postal2.es.net (Postal Node 2) with ESMTP (SSL) id JEI41122; Mon, 29 Sep 2008 14:31:22 -0700 Received: from ptavv.es.net (localhost [127.0.0.1]) by ptavv.es.net (Tachyon Server) with ESMTP id 204444500F; Mon, 29 Sep 2008 14:31:22 -0700 (PDT) To: Holger Kipp In-Reply-To: Your message of "Mon, 29 Sep 2008 11:03:10 +0200." <20080929090310.GA70418@intserv.int1.b.intern> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="==_Exmh_1222723882_61810P"; micalg=pgp-sha1; protocol="application/pgp-signature" Content-Transfer-Encoding: 7bit Date: Mon, 29 Sep 2008 14:31:22 -0700 From: "Kevin Oberman" Message-Id: <20080929213122.204444500F@ptavv.es.net> X-Sender-IP: 198.128.4.29 X-Sender-Domain: es.net X-Recipent: ; ; ; ; ; X-Sender: X-To_Name: Holger Kipp X-To_Domain: alogis.com X-To: Holger Kipp X-To_Email: hk@alogis.com X-To_Alias: hk Cc: "firmdog@gmail.com" , Jeremy Chadwick , stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 21:41:47 -0000 --==_Exmh_1222723882_61810P Content-Type: text/plain; charset=us-ascii Content-Disposition: inline > Date: Mon, 29 Sep 2008 11:03:10 +0200 > From: Holger Kipp > Sender: owner-freebsd-stable@freebsd.org > > On Sun, Sep 28, 2008 at 06:30:03PM -0400, firmdog@gmail.com wrote: > > No....you misunderstood. The 7.1 box was connected to a 5.4 box > doing a 50GB > data transfer over rsync. Both nics were 1000 full > duplex with a crossover cable. > The speed performance was terrible > and I could only get up to 10 Mb/s and there > was NO switch involved. > I believe there is a problem or bug involved with the > driver. Have > the drivers or stack been updated in 7.1? What else can I provide? > > Hi, I only flipped through the messages in this thread, faintly > remembering someone writing something about ssh. Anyway, if you're > copying using ssh (scp, sftp), then the transfer rate is much less > than what you'd expect - due to the encryption/decryption overhead > (unless you have hardware acceleration on both sideds). > > Just my two cents (Euro) on general reasons for slow data transfers. ssh(1) and it's kin, scp(1) and sftp(1), are not at all well designed for performance. There are several issues and if you want details, read . If you want to use ssh(1) for high-bandwidth TCP streams, especially scp/sftp, install openssh-portable from ports after selecting the "enable HPN-SSH patch" option. You may want to over-write the base install, but be sure to edit make.conf/src.conf so that a system upgrade won't re-overwrite it. -- R. Kevin Oberman, Network Engineer Energy Sciences Network (ESnet) Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab) E-mail: oberman@es.net Phone: +1 510 486-8634 Key fingerprint:059B 2DDF 031C 9BA3 14A4 EADA 927D EBB3 987B 3751 --==_Exmh_1222723882_61810P Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (FreeBSD) Comment: Exmh version 2.5 06/03/2002 iD8DBQFI4Ukqkn3rs5h7N1ERAqIDAJwN37DIc7u0lsWCoPPEJtfHKZTVfQCggPCX yKD7F0uqvYJ+/QvbtgC1U/E= =wVqR -----END PGP SIGNATURE----- --==_Exmh_1222723882_61810P-- From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 21:57:38 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F0CC2106568C for ; Mon, 29 Sep 2008 21:57:38 +0000 (UTC) (envelope-from nomadlogic@gmail.com) Received: from wa-out-1112.google.com (wa-out-1112.google.com [209.85.146.182]) by mx1.freebsd.org (Postfix) with ESMTP id BF1288FC2D for ; Mon, 29 Sep 2008 21:57:38 +0000 (UTC) (envelope-from nomadlogic@gmail.com) Received: by wa-out-1112.google.com with SMTP id n4so1160276wag.27 for ; Mon, 29 Sep 2008 14:57:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=q8B+i/Lwed+OhmhaToESOhtxSpLQoSc7MKN/qi1NLaA=; b=hCuTqByrJGT5ZJ8CQSpIBmdOcJfQU8UXBYlYfuFlrNyCY8rR9xCMQESRwE9vsv9dOy fzCEpSR59zuXeA5SSHEHZKe9u+nYyJumo6EnxZxUuxOxA3NbgZJhpUR2M/uZ4i4p1Axp Lg9inRx1hP6O8q/I9Z357vNhbXvpGHgPz8oSc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=Qc+Ew0dDcSgqMZ8/f4bIcKHl64xvZTw7X5nELX/9JYOJIPcgrlN06ERvHkXmP3CqpC GRy+2cYrrnmKk6EdvH09OzL/SpAo5YhdIk3U9A6jbx/F87sxSSQ38qaHYRNsz4+rZCde sHEXCvn3nywhKaEHwbY2gTITnEFqijP34FquI= Received: by 10.114.37.1 with SMTP id k1mr6583676wak.44.1222724029498; Mon, 29 Sep 2008 14:33:49 -0700 (PDT) Received: by 10.115.95.2 with HTTP; Mon, 29 Sep 2008 14:33:49 -0700 (PDT) Message-ID: <57d710000809291433n2d8f48ebv9e54f868a7422654@mail.gmail.com> Date: Mon, 29 Sep 2008 14:33:49 -0700 From: "pete wright" To: "Holger Kipp" In-Reply-To: <20080929090310.GA70418@intserv.int1.b.intern> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <20080928205300.GF60230@in-addr.com> <20080928222414.GA90269@icarus.home.lan> <20080929090310.GA70418@intserv.int1.b.intern> Cc: "firmdog@gmail.com" , Jeremy Chadwick , stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 21:57:39 -0000 On Mon, Sep 29, 2008 at 2:03 AM, Holger Kipp wrote: > On Sun, Sep 28, 2008 at 06:30:03PM -0400, firmdog@gmail.com wrote: >> No....you misunderstood. The 7.1 box was connected to a 5.4 box doing a 50GB >> data transfer over rsync. Both nics were 1000 full duplex with a crossover cable. >> The speed performance was terrible and I could only get up to 10 Mb/s and there >> was NO switch involved. I believe there is a problem or bug involved with the >> driver. Have the drivers or stack been updated in 7.1? What else can I provide? > > Hi, I only flipped through the messages in this thread, faintly remembering someone > writing something about ssh. Anyway, if you're copying using ssh (scp, sftp), then > the transfer rate is much less than what you'd expect - due to the encryption/decryption > overhead (unless you have hardware acceleration on both sideds). > FWIW I think the general issue for the ssh suite of tools is the compiled in window size is not tuned for large transfers like this: http://www.psc.edu/networking/projects/hpn-ssh/theory.php we use a propritary tool called aspera to overcome these issues when moving large amounts of data b/w remote sites on our WAN: http://www.asperasoft.com/products/scp/index.html the encrytp/decrypt overhead should be pretty minimal on modern hardware, so i would not expect that to be the first bottle neck you run into. -pete -- ~~o0OO0o~~ Pete Wright www.nycbug.org NYC's *BSD User Group From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 22:17:50 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A0E21065691 for ; Mon, 29 Sep 2008 22:17:50 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 53CF58FC1F for ; Mon, 29 Sep 2008 22:17:50 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTP id 0129A46B65; Mon, 29 Sep 2008 18:17:50 -0400 (EDT) Date: Mon, 29 Sep 2008 23:17:49 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Ryan French In-Reply-To: Message-ID: References: User-Agent: Alpine 1.10 (BSF 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-net@freebsd.org Subject: Re: Initialisation of a networking protocol X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 22:17:50 -0000 On Mon, 29 Sep 2008, Ryan French wrote: > I'm having a bit of trouble with my MPLS protocol code at the moment. I have > the code written and compiling (mostly based on some OpenBSD code I was > shown) but when an MPLS packet is received it doesnt appear as thou my > mpls_input routine is being called. I believe this is because I have not > initialised the protocol properly. I have created protosw structure for MPLS > as well as created an mpls_init(void) function which registers the protocol > with netisr via netisr_register. Other than that I am not really sure where > I tell the kernel to call the mpls_init function so that the protocol is > initialised, and a couple of hours of googling/looking through ip6 code > hasnt really helped at all. If anyone can help and needs to see the code it > can be viewed on Perforce at > http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2008/rfrench_mpls&HIDEDEL=NO Hi Ryan: netisr is just a dispatch facility consisting of a series of named queues, worker thread(s), and a dispatch model -- it is the responsibility of some other piece of driver or protocol code to inject packets using netisr_queue() or netisr_dispatch(). Typically this occurs in the decapsulation code for the layer below the dispatched layer -- often the link layer. You can take a look at current dispatch points here: http://fxr.watson.org/fxr/ident?im=bigexcerpts;i=netisr_queue http://fxr.watson.org/fxr/ident?im=bigexcerpts;i=netisr_dispatch A typical dispatch point is ether_demux(), which switches on the etherhet frame header's protocol field and then hands off the packet to netisr for dispatch. If the dispatch may lead to recursion, then you may need to use netisr_queue() rather than netisr_direct() to disallow direct dispatch. Robert N M Watson Computer Laboratory University of Cambridge From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 22:26:06 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23EE91065698 for ; Mon, 29 Sep 2008 22:26:06 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by mx1.freebsd.org (Postfix) with ESMTP id EEE198FC21 for ; Mon, 29 Sep 2008 22:26:05 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from compute1.internal (compute1.internal [10.202.2.41]) by out1.messagingengine.com (Postfix) with ESMTP id 8433916A8C9; Mon, 29 Sep 2008 18:26:05 -0400 (EDT) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by compute1.internal (MEProxy); Mon, 29 Sep 2008 18:26:05 -0400 X-Sasl-enc: 6aZnR1x2FKl13ARGnE1+18rTVUTOPgUa2CqvodCela4r 1222727165 Received: from empiric.lon.incunabulum.net (82-35-112-254.cable.ubr07.dals.blueyonder.co.uk [82.35.112.254]) by mail.messagingengine.com (Postfix) with ESMTPSA id 07A6D131EB; Mon, 29 Sep 2008 18:26:04 -0400 (EDT) Message-ID: <48E155FB.7050009@FreeBSD.org> Date: Mon, 29 Sep 2008 23:26:03 +0100 From: "Bruce M. Simpson" User-Agent: Thunderbird 2.0.0.14 (X11/20080514) MIME-Version: 1.0 To: Ryan French References: In-Reply-To: X-Enigmail-Version: 0.95.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-net@freebsd.org Subject: Re: Initialisation of a networking protocol X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 22:26:06 -0000 Hi Ryan, Did you initialize the .pr_init member of struct protosw for MPLS? AFAIK, MPLS does not use an outer IP header, so adding a struct ipprotosw won't work; they are similar structs however. cheers BMS From owner-freebsd-net@FreeBSD.ORG Mon Sep 29 23:10:34 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C970106569D for ; Mon, 29 Sep 2008 23:10:34 +0000 (UTC) (envelope-from rjf12@students.waikato.ac.nz) Received: from wf-out-1314.google.com (wf-out-1314.google.com [209.85.200.173]) by mx1.freebsd.org (Postfix) with ESMTP id 1B2928FC12 for ; Mon, 29 Sep 2008 23:10:34 +0000 (UTC) (envelope-from rjf12@students.waikato.ac.nz) Received: by wf-out-1314.google.com with SMTP id 24so2270639wfg.7 for ; Mon, 29 Sep 2008 16:10:33 -0700 (PDT) Received: by 10.142.177.7 with SMTP id z7mr2466239wfe.15.1222729833559; Mon, 29 Sep 2008 16:10:33 -0700 (PDT) Received: by 10.142.200.18 with HTTP; Mon, 29 Sep 2008 16:10:33 -0700 (PDT) Message-ID: Date: Tue, 30 Sep 2008 12:10:33 +1300 From: "Ryan French" To: freebsd-net@freebsd.org In-Reply-To: MIME-Version: 1.0 References: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Re: Initialisation of a networking protocol X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Sep 2008 23:10:34 -0000 Hi, Thanks for the help. I managed to figure out that the problem was I had left out the DOMAIN_SET command in my code, but I've got that sorted now and am just working through bugs in my code causing page faults whenever an MPLS packet is received. Should hopefully have something up and running by the weeks end. Thanks again, Ryan French. From owner-freebsd-net@FreeBSD.ORG Tue Sep 30 00:41:57 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B3731065696; Tue, 30 Sep 2008 00:41:57 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 71A348FC0A; Tue, 30 Sep 2008 00:41:57 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m8U0fvqN011756; Tue, 30 Sep 2008 00:41:57 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m8U0fvvh011752; Tue, 30 Sep 2008 00:41:57 GMT (envelope-from linimon) Date: Tue, 30 Sep 2008 00:41:57 GMT Message-Id: <200809300041.m8U0fvvh011752@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: kern/127724: [rtalloc] rtfree: 0xc5a8f870 has 1 refs X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Sep 2008 00:41:57 -0000 Old Synopsis: rtfree: 0xc5a8f870 has 1 refs New Synopsis: [rtalloc] rtfree: 0xc5a8f870 has 1 refs Responsible-Changed-From-To: freebsd-bugs->freebsd-net Responsible-Changed-By: linimon Responsible-Changed-When: Tue Sep 30 00:40:50 UTC 2008 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=127724 From owner-freebsd-net@FreeBSD.ORG Tue Sep 30 04:20:12 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 235291065689 for ; Tue, 30 Sep 2008 04:20:12 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from rv-out-0506.google.com (rv-out-0506.google.com [209.85.198.224]) by mx1.freebsd.org (Postfix) with ESMTP id D90E28FC1C for ; Tue, 30 Sep 2008 04:20:11 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: by rv-out-0506.google.com with SMTP id b25so2258756rvf.43 for ; Mon, 29 Sep 2008 21:20:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:received:date:from :to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=s0ybi3lrq9FfpzKNuzOmGMgOCHTcZQVi1V/hYyHAubU=; b=oO565ce+0lH/dN0J3XYrTBkhzDVcz+Wt4D/kZPOyyWCo+gh+g/w3NNYb/CAfhizQov BWIHYU709PCG0JHsAsWKPYsb0d8WVu/96vPmXkf3aKwt9Rod4XzTe47jzfe8I8lO7ZRe 5XhAkMbydT86f2RHoBtlegYwVCuQAZalr0sJU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=mM8kYZwb0fceP+7NJnN5lJgF1RTYinknTk8hI1emQkqr1U8w5X1Vjpo4rDe3f2Ad4C 4/TXVWWTtA4weYDvKe7whAIp81qW+TYeaCMlBZ4mb97tg3Sdq5HZUVKtQqg7tls2hFwJ D8Q2XwwKG+zVvNeL0Oes+Kdoq6EBf07UI52wk= Received: by 10.110.93.12 with SMTP id q12mr8825841tib.16.1222748410361; Mon, 29 Sep 2008 21:20:10 -0700 (PDT) Received: from michelle.cdnetworks.co.kr ([211.53.35.84]) by mx.google.com with ESMTPS id u8sm3484659tia.8.2008.09.29.21.20.05 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 29 Sep 2008 21:20:07 -0700 (PDT) Received: from michelle.cdnetworks.co.kr (localhost.cdnetworks.co.kr [127.0.0.1]) by michelle.cdnetworks.co.kr (8.13.5/8.13.5) with ESMTP id m8U4I8hb059934 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 30 Sep 2008 13:18:08 +0900 (KST) (envelope-from pyunyh@gmail.com) Received: (from yongari@localhost) by michelle.cdnetworks.co.kr (8.13.5/8.13.5/Submit) id m8U4I7SR059933; Tue, 30 Sep 2008 13:18:07 +0900 (KST) (envelope-from pyunyh@gmail.com) Date: Tue, 30 Sep 2008 13:18:07 +0900 From: Pyun YongHyeon To: "Arno J. Klaassen" Message-ID: <20080930041807.GC59136@cdnetworks.co.kr> References: <20080929043134.GD54819@cdnetworks.co.kr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="jho1yZJdad60DJr+" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i Cc: stable@freebsd.org, net@freebsd.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Sep 2008 04:20:12 -0000 --jho1yZJdad60DJr+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Sep 29, 2008 at 04:12:56PM +0200, Arno J. Klaassen wrote: [...] > > > > AFAIK it seems that you're the first one that reports poor > > performance issue of MCP65. > > > someone must be ;) no kiddin, I am not convinced this is (only) > a driver issue (cf. "bad NFS/UDP performance" thread on -hackers). > > I just have no experience on this notebook, so I can't say " it worked > great before" and my only other 7-stable-amd64 I have does not > show the probs, having a cheap re0 *and* being UP. > > > > MCP65 has no checksum offload/TSO > > capability so nfe(4) never try to take advantage of the hardware > > capability. So you should have no checksum offload/TSO related > > issue here. > > Also note, checking network performance with scp(1) wouldn't > > show real numbers as scp(1) may involve other system activities. > > Use one of network benchmark programs in ports(e.g. > > benchmarks/netperf) to measure network performance. > > quite funny (even taken with lots of salt since the LAN is used > for "normal work" as well in parallel, but differences are > rather significant) : > > I test to same server (7-stable-amd64 from Jun 7 (using > nfe0 as well btw, but another chip), either from a > 6-stable-x86 (Jul 14, sk0) or the notebook (7-stable-x64 below), using > > for i in ; do > echo $i; /usr/local/bin/netperf -H push -i 4,2 -I 95,10 -t $i; echo; > done > > streaming results are OK for both : > > TCP_STREAM > Throughput > 10^6bits/sec > > 6-stable-x86 349.57 > 7-stable-x64 939.47 > > UDP_STREAM > Throughput > 10^6bits/sec > > 6-stable-x86 388.45 > 7-stable-x64 947.89 > > > However, the "request/respones" tests are awfull for my notebook > (test repeated on the notebook for the sake of conviction) : > > TCP_RR > Trans. > Rate > per sec > > 6-stable-x86 9801.58 > 7-stable-x64 137.61 > 7-stable-x64 89.35 > 7-stable-x64 102.29 > > TCP_CRR > Trans. > Rate > per sec > > 6-stable-x86 4520.98 > 7-stable-x64 7.00 > 7-stable-x64 8.10 > 7-stable-x64 18.49 > > > UDP_RR > Trans. > Rate > per sec > > 6-stable-x86 9473.20 > 7-stable-x64 9.60 > 7-stable-x64 0.90 > 7-stable-x64 0.10 > > > I can send you complete results if wanted. > Based on poor TCP_RR numbers I wonder how you can get such a high TCP_STREAM numbers. > > Other possible cause of issue could be link speed/duplex mismatch > > or excessive MAC control frames(e.g. pause frames). Does nfe(4) > > agree on resolved speed/duplex with link partner? > > > yes (1000baseTX ) > > > If they all agree on resolved speed/duplex, would you check number > > of pause frames sent/received from link partner? Even though MCP65 > > supports hardware MAC statistics for pause frames nfe(4) has no > > support code yet so you may have to resort to managed switch that > > can show Tx/Rx statistics of each port. > > aargh; I do have a Netgear GS724TS around where I can connect it to. > This thing should be manageable, but give me some time to > find out how .... > Or try attached patch. Use "sysctl dev.nfe.0.stats" to get statistics. -- Regards, Pyun YongHyeon --jho1yZJdad60DJr+ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="nfe.mib.patch" Index: sys/dev/nfe/if_nfe.c =================================================================== --- sys/dev/nfe/if_nfe.c (revision 183480) +++ sys/dev/nfe/if_nfe.c (working copy) @@ -122,6 +122,9 @@ static int sysctl_int_range(SYSCTL_HANDLER_ARGS, int, int); static int sysctl_hw_nfe_proc_limit(SYSCTL_HANDLER_ARGS); +static void nfe_sysctl_node(struct nfe_softc *); +static void nfe_stats_clear(struct nfe_softc *); +static void nfe_stats_update(struct nfe_softc *); #ifdef NFE_DEBUG static int nfedebug = 0; @@ -245,6 +248,22 @@ "NVIDIA nForce MCP73 Networking Adapter"}, {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN4, "NVIDIA nForce MCP73 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN1, + "NVIDIA nForce MCP77 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN2, + "NVIDIA nForce MCP77 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN3, + "NVIDIA nForce MCP77 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP77_LAN4, + "NVIDIA nForce MCP77 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN1, + "NVIDIA nForce MCP79 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN2, + "NVIDIA nForce MCP79 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN3, + "NVIDIA nForce MCP79 Networking Adapter"}, + {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP79_LAN4, + "NVIDIA nForce MCP79 Networking Adapter"}, {0, 0, NULL} }; @@ -438,18 +457,19 @@ break; case PCI_PRODUCT_NVIDIA_MCP51_LAN1: case PCI_PRODUCT_NVIDIA_MCP51_LAN2: - sc->nfe_flags |= NFE_40BIT_ADDR | NFE_PWR_MGMT; + sc->nfe_flags |= NFE_40BIT_ADDR | NFE_PWR_MGMT | NFE_MIB_V1; break; case PCI_PRODUCT_NVIDIA_CK804_LAN1: case PCI_PRODUCT_NVIDIA_CK804_LAN2: case PCI_PRODUCT_NVIDIA_MCP04_LAN1: case PCI_PRODUCT_NVIDIA_MCP04_LAN2: - sc->nfe_flags |= NFE_JUMBO_SUP | NFE_40BIT_ADDR | NFE_HW_CSUM; + sc->nfe_flags |= NFE_JUMBO_SUP | NFE_40BIT_ADDR | NFE_HW_CSUM | + NFE_MIB_V1; break; case PCI_PRODUCT_NVIDIA_MCP55_LAN1: case PCI_PRODUCT_NVIDIA_MCP55_LAN2: sc->nfe_flags |= NFE_JUMBO_SUP | NFE_40BIT_ADDR | NFE_HW_CSUM | - NFE_HW_VLAN | NFE_PWR_MGMT | NFE_TX_FLOW_CTRL; + NFE_HW_VLAN | NFE_PWR_MGMT | NFE_TX_FLOW_CTRL | NFE_MIB_V2; break; case PCI_PRODUCT_NVIDIA_MCP61_LAN1: @@ -465,14 +485,26 @@ case PCI_PRODUCT_NVIDIA_MCP73_LAN3: case PCI_PRODUCT_NVIDIA_MCP73_LAN4: sc->nfe_flags |= NFE_40BIT_ADDR | NFE_PWR_MGMT | - NFE_CORRECT_MACADDR | NFE_TX_FLOW_CTRL; + NFE_CORRECT_MACADDR | NFE_TX_FLOW_CTRL | NFE_MIB_V2; break; + case PCI_PRODUCT_NVIDIA_MCP77_LAN1: + case PCI_PRODUCT_NVIDIA_MCP77_LAN2: + case PCI_PRODUCT_NVIDIA_MCP77_LAN3: + case PCI_PRODUCT_NVIDIA_MCP77_LAN4: + case PCI_PRODUCT_NVIDIA_MCP79_LAN1: + case PCI_PRODUCT_NVIDIA_MCP79_LAN2: + case PCI_PRODUCT_NVIDIA_MCP79_LAN3: + case PCI_PRODUCT_NVIDIA_MCP79_LAN4: + sc->nfe_flags |= NFE_40BIT_ADDR | NFE_HW_CSUM | NFE_PWR_MGMT | + NFE_CORRECT_MACADDR | NFE_TX_FLOW_CTRL | NFE_MIB_V3; + break; case PCI_PRODUCT_NVIDIA_MCP65_LAN1: case PCI_PRODUCT_NVIDIA_MCP65_LAN2: case PCI_PRODUCT_NVIDIA_MCP65_LAN3: case PCI_PRODUCT_NVIDIA_MCP65_LAN4: sc->nfe_flags |= NFE_JUMBO_SUP | NFE_40BIT_ADDR | - NFE_PWR_MGMT | NFE_CORRECT_MACADDR | NFE_TX_FLOW_CTRL; + NFE_PWR_MGMT | NFE_CORRECT_MACADDR | NFE_TX_FLOW_CTRL | + NFE_MIB_V2; break; } @@ -519,25 +551,9 @@ goto fail; nfe_alloc_jrx_ring(sc, &sc->jrxq); + /* Create sysctl node. */ + nfe_sysctl_node(sc); - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "process_limit", CTLTYPE_INT | CTLFLAG_RW, - &sc->nfe_process_limit, 0, sysctl_hw_nfe_proc_limit, "I", - "max number of Rx events to process"); - - sc->nfe_process_limit = NFE_PROC_DEFAULT; - error = resource_int_value(device_get_name(dev), device_get_unit(dev), - "process_limit", &sc->nfe_process_limit); - if (error == 0) { - if (sc->nfe_process_limit < NFE_PROC_MIN || - sc->nfe_process_limit > NFE_PROC_MAX) { - device_printf(dev, "process_limit value out of range; " - "using default: %d\n", NFE_PROC_DEFAULT); - sc->nfe_process_limit = NFE_PROC_DEFAULT; - } - } - ifp->if_softc = sc; if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_mtu = ETHERMTU; @@ -902,6 +918,8 @@ if (sc->nfe_link != 0 && (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { txctl |= NFE_TX_START; rxctl |= NFE_RX_START; + /* Got a link, clear hardware stats. */ + nfe_stats_clear(sc); } else { txctl &= ~NFE_TX_START; rxctl &= ~NFE_RX_START; @@ -2823,6 +2841,8 @@ tdata->m = NULL; } } + /* Update hardware stats. */ + nfe_stats_update(sc); } @@ -2874,6 +2894,7 @@ mii = device_get_softc(sc->nfe_miibus); mii_tick(mii); + nfe_stats_update(sc); nfe_watchdog(ifp); callout_reset(&sc->nfe_stat_ch, hz, nfe_tick, sc); } @@ -2981,3 +3002,199 @@ return (sysctl_int_range(oidp, arg1, arg2, req, NFE_PROC_MIN, NFE_PROC_MAX)); } + + +#define NFE_SYSCTL_STAT_ADD32(c, h, n, p, d) \ + SYSCTL_ADD_UINT(c, h, OID_AUTO, n, CTLFLAG_RD, p, 0, d) +#define NFE_SYSCTL_STAT_ADD64(c, h, n, p, d) \ + SYSCTL_ADD_QUAD(c, h, OID_AUTO, n, CTLFLAG_RD, p, d) + +static void +nfe_sysctl_node(struct nfe_softc *sc) +{ + struct sysctl_ctx_list *ctx; + struct sysctl_oid_list *child, *parent; + struct sysctl_oid *tree; + struct nfe_hw_stats *stats; + int error; + + stats = &sc->nfe_stats; + ctx = device_get_sysctl_ctx(sc->nfe_dev); + child = SYSCTL_CHILDREN(device_get_sysctl_tree(sc->nfe_dev)); + SYSCTL_ADD_PROC(ctx, child, + OID_AUTO, "process_limit", CTLTYPE_INT | CTLFLAG_RW, + &sc->nfe_process_limit, 0, sysctl_hw_nfe_proc_limit, "I", + "max number of Rx events to process"); + + sc->nfe_process_limit = NFE_PROC_DEFAULT; + error = resource_int_value(device_get_name(sc->nfe_dev), + device_get_unit(sc->nfe_dev), "process_limit", + &sc->nfe_process_limit); + if (error == 0) { + if (sc->nfe_process_limit < NFE_PROC_MIN || + sc->nfe_process_limit > NFE_PROC_MAX) { + device_printf(sc->nfe_dev, + "process_limit value out of range; " + "using default: %d\n", NFE_PROC_DEFAULT); + sc->nfe_process_limit = NFE_PROC_DEFAULT; + } + } + + if ((sc->nfe_flags & (NFE_MIB_V1 | NFE_MIB_V2 | NFE_MIB_V3)) == 0) + return; + + tree = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "stats", CTLFLAG_RD, + NULL, "NFE statistics"); + parent = SYSCTL_CHILDREN(tree); + + /* Rx statistics. */ + tree = SYSCTL_ADD_NODE(ctx, parent, OID_AUTO, "tx", CTLFLAG_RD, + NULL, "Tx MAC statistics"); + child = SYSCTL_CHILDREN(tree); + NFE_SYSCTL_STAT_ADD64(ctx, child, "octets", + &stats->tx_octets, "Octets"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "zero_rexmits", + &stats->tx_zero_rexmits, "Zero Retransmits"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "one_rexmits", + &stats->tx_one_rexmits, "One Retransmits"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "multi_rexmits", + &stats->tx_multi_rexmits, "Multiple Retransmits"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "late_cols", + &stats->tx_late_cols, "Late Collisions"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "fifo_underuns", + &stats->tx_fifo_underuns, "FIFO Underruns"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "carrier_losts", + &stats->tx_carrier_losts, "Carrier Losts"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "excess_deferrals", + &stats->tx_excess_deferals, "Excess Deferrals"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "retry_errors", + &stats->tx_retry_errors, "Retry Errors"); + if ((sc->nfe_flags & NFE_MIB_V2) != 0) { + NFE_SYSCTL_STAT_ADD32(ctx, child, "deferrals", + &stats->tx_deferals, "Deferrals"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "frames", + &stats->tx_frames, "Frames"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "pause", + &stats->tx_pause, "Pause Frames"); + } + if ((sc->nfe_flags & NFE_MIB_V3) != 0) { + NFE_SYSCTL_STAT_ADD32(ctx, child, "unicast", + &stats->tx_deferals, "Unicast Frames"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "multicast", + &stats->tx_frames, "Multicast Frames"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "broadcast", + &stats->tx_pause, "Broadcast Frames"); + } + + /* Rx statistics. */ + tree = SYSCTL_ADD_NODE(ctx, parent, OID_AUTO, "rx", CTLFLAG_RD, + NULL, "Rx MAC statistics"); + child = SYSCTL_CHILDREN(tree); + + NFE_SYSCTL_STAT_ADD32(ctx, child, "frame_errors", + &stats->rx_frame_errors, "Framing Errors"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "extra_bytes", + &stats->rx_extra_bytes, "Extra Bytes"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "late_cols", + &stats->rx_late_cols, "Late Collisions"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "runts", + &stats->rx_runts, "Runts"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "jumbos", + &stats->rx_jumbos, "Jumbos"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "fifo_overuns", + &stats->rx_fifo_overuns, "FIFO Overruns"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "crc_errors", + &stats->rx_crc_errors, "CRC Errors"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "fae", + &stats->rx_fae, "Frame Alignment Errors"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "len_errors", + &stats->rx_len_errors, "Length Errors"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "unicast", + &stats->rx_unicast, "Unicast Frames"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "multicast", + &stats->rx_multicast, "Multicast Frames"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "brocadcast", + &stats->rx_broadcast, "Broadcast Frames"); + if ((sc->nfe_flags & NFE_MIB_V2) != 0) { + NFE_SYSCTL_STAT_ADD64(ctx, child, "octets", + &stats->rx_octets, "Octets"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "pause", + &stats->rx_pause, "Pause frames"); + NFE_SYSCTL_STAT_ADD32(ctx, child, "drops", + &stats->rx_drops, "Drop frames"); + } +} + +#undef NFE_SYSCTL_STAT_ADD32 +#undef NFE_SYSCTL_STAT_ADD64 + +static void +nfe_stats_clear(struct nfe_softc *sc) +{ + int i, mib_cnt; + + if ((sc->nfe_flags & NFE_MIB_V1) != 0) + mib_cnt = NFE_NUM_MIB_STATV1; + else if ((sc->nfe_flags & (NFE_MIB_V2 | NFE_MIB_V3)) != 0) + mib_cnt = NFE_NUM_MIB_STATV2; + else + return; + + for (i = 0; i < mib_cnt; i += sizeof(uint32_t)) + NFE_READ(sc, NFE_TX_OCTET + i); + + if ((sc->nfe_flags & NFE_MIB_V3) != 0) { + NFE_READ(sc, NFE_TX_UNICAST); + NFE_READ(sc, NFE_TX_MULTICAST); + NFE_READ(sc, NFE_TX_BROADCAST); + } +} + +static void +nfe_stats_update(struct nfe_softc *sc) +{ + struct nfe_hw_stats *stats; + + NFE_LOCK_ASSERT(sc); + + if ((sc->nfe_flags & (NFE_MIB_V1 | NFE_MIB_V2 | NFE_MIB_V3)) == 0) + return; + + stats = &sc->nfe_stats; + stats->tx_octets += NFE_READ(sc, NFE_TX_OCTET); + stats->tx_zero_rexmits += NFE_READ(sc, NFE_TX_ZERO_REXMIT); + stats->tx_one_rexmits += NFE_READ(sc, NFE_TX_ONE_REXMIT); + stats->tx_multi_rexmits += NFE_READ(sc, NFE_TX_MULTI_REXMIT); + stats->tx_late_cols += NFE_READ(sc, NFE_TX_LATE_COL); + stats->tx_fifo_underuns += NFE_READ(sc, NFE_TX_FIFO_UNDERUN); + stats->tx_carrier_losts += NFE_READ(sc, NFE_TX_CARRIER_LOST); + stats->tx_excess_deferals += NFE_READ(sc, NFE_TX_EXCESS_DEFERRAL); + stats->tx_retry_errors += NFE_READ(sc, NFE_TX_RETRY_ERROR); + stats->rx_frame_errors += NFE_READ(sc, NFE_RX_FRAME_ERROR); + stats->rx_extra_bytes += NFE_READ(sc, NFE_RX_EXTRA_BYTES); + stats->rx_late_cols += NFE_READ(sc, NFE_RX_LATE_COL); + stats->rx_runts += NFE_READ(sc, NFE_RX_RUNT); + stats->rx_jumbos += NFE_READ(sc, NFE_RX_JUMBO); + stats->rx_fifo_overuns += NFE_READ(sc, NFE_RX_FIFO_OVERUN); + stats->rx_crc_errors += NFE_READ(sc, NFE_RX_CRC_ERROR); + stats->rx_fae += NFE_READ(sc, NFE_RX_FAE); + stats->rx_len_errors += NFE_READ(sc, NFE_RX_LEN_ERROR); + stats->rx_unicast += NFE_READ(sc, NFE_RX_UNICAST); + stats->rx_multicast += NFE_READ(sc, NFE_RX_MULTICAST); + stats->rx_broadcast += NFE_READ(sc, NFE_RX_BROADCAST); + + if ((sc->nfe_flags & NFE_MIB_V2) != 0) { + stats->tx_deferals += NFE_READ(sc, NFE_TX_DEFERAL); + stats->tx_frames += NFE_READ(sc, NFE_TX_FRAME); + stats->rx_octets += NFE_READ(sc, NFE_RX_OCTET); + stats->tx_pause += NFE_READ(sc, NFE_TX_PAUSE); + stats->rx_pause += NFE_READ(sc, NFE_RX_PAUSE); + stats->rx_drops += NFE_READ(sc, NFE_RX_DROP); + } + + if ((sc->nfe_flags & NFE_MIB_V3) != 0) { + stats->tx_unicast += NFE_READ(sc, NFE_TX_UNICAST); + stats->tx_multicast += NFE_READ(sc, NFE_TX_MULTICAST); + stats->rx_broadcast += NFE_READ(sc, NFE_TX_BROADCAST); + } +} Index: sys/dev/nfe/if_nfereg.h =================================================================== --- sys/dev/nfe/if_nfereg.h (revision 183480) +++ sys/dev/nfe/if_nfereg.h (working copy) @@ -51,7 +51,7 @@ #define NFE_MSI_MAP0 0x020 #define NFE_MSI_MAP1 0x024 #define NFE_MSI_IRQ_MASK 0x030 -#define NFE_MAC_RESET 0x03c +#define NFE_MAC_RESET 0x034 #define NFE_MISC1 0x080 #define NFE_TX_CTL 0x084 #define NFE_TX_STATUS 0x088 @@ -87,11 +87,41 @@ #define NFE_PHY_SPEED 0x18c #define NFE_PHY_CTL 0x190 #define NFE_PHY_DATA 0x194 +#define NFE_TX_UNICAST 0x1a0 +#define NFE_TX_MULTICAST 0x1a4 +#define NFE_TX_BROADCAST 0x1a8 #define NFE_WOL_CTL 0x200 #define NFE_PATTERN_CRC 0x204 #define NFE_PATTERN_MASK 0x208 #define NFE_PWR_CAP 0x268 #define NFE_PWR_STATE 0x26c +#define NFE_TX_OCTET 0x280 +#define NFE_TX_ZERO_REXMIT 0x284 +#define NFE_TX_ONE_REXMIT 0x288 +#define NFE_TX_MULTI_REXMIT 0x28c +#define NFE_TX_LATE_COL 0x290 +#define NFE_TX_FIFO_UNDERUN 0x294 +#define NFE_TX_CARRIER_LOST 0x298 +#define NFE_TX_EXCESS_DEFERRAL 0x29c +#define NFE_TX_RETRY_ERROR 0x2a0 +#define NFE_RX_FRAME_ERROR 0x2a4 +#define NFE_RX_EXTRA_BYTES 0x2a8 +#define NFE_RX_LATE_COL 0x2ac +#define NFE_RX_RUNT 0x2b0 +#define NFE_RX_JUMBO 0x2b4 +#define NFE_RX_FIFO_OVERUN 0x2b8 +#define NFE_RX_CRC_ERROR 0x2bc +#define NFE_RX_FAE 0x2c0 +#define NFE_RX_LEN_ERROR 0x2c4 +#define NFE_RX_UNICAST 0x2c8 +#define NFE_RX_MULTICAST 0x2cc +#define NFE_RX_BROADCAST 0x2d0 +#define NFE_TX_DEFERAL 0x2d4 +#define NFE_TX_FRAME 0x2d8 +#define NFE_RX_OCTET 0x2dc +#define NFE_TX_PAUSE 0x2e0 +#define NFE_RX_PAUSE 0x2e4 +#define NFE_RX_DROP 0x2e8 #define NFE_VTAG_CTL 0x300 #define NFE_MSIX_MAP0 0x3e0 #define NFE_MSIX_MAP1 0x3e4 @@ -182,6 +212,10 @@ #define NFE_SEED_100TX 0x00002d00 #define NFE_SEED_1000T 0x00007400 +#define NFE_NUM_MIB_STATV1 21 +#define NFE_NUM_MIB_STATV2 27 +#define NFE_NUM_MIB_STATV3 30 + #define NFE_MSI_MESSAGES 8 #define NFE_MSI_VECTOR_0_ENABLED 0x01 @@ -295,6 +329,14 @@ #define PCI_PRODUCT_NVIDIA_MCP73_LAN2 0x07dd #define PCI_PRODUCT_NVIDIA_MCP73_LAN3 0x07de #define PCI_PRODUCT_NVIDIA_MCP73_LAN4 0x07df +#define PCI_PRODUCT_NVIDIA_MCP77_LAN1 0x0760 +#define PCI_PRODUCT_NVIDIA_MCP77_LAN2 0x0761 +#define PCI_PRODUCT_NVIDIA_MCP77_LAN3 0x0762 +#define PCI_PRODUCT_NVIDIA_MCP77_LAN4 0x0763 +#define PCI_PRODUCT_NVIDIA_MCP79_LAN1 0x0ab0 +#define PCI_PRODUCT_NVIDIA_MCP79_LAN2 0x0ab1 +#define PCI_PRODUCT_NVIDIA_MCP79_LAN3 0x0ab2 +#define PCI_PRODUCT_NVIDIA_MCP79_LAN4 0x0ab3 #define PCI_PRODUCT_NVIDIA_NFORCE3_LAN2 PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1 #define PCI_PRODUCT_NVIDIA_NFORCE3_LAN3 PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2 Index: sys/dev/nfe/if_nfevar.h =================================================================== --- sys/dev/nfe/if_nfevar.h (revision 183480) +++ sys/dev/nfe/if_nfevar.h (working copy) @@ -70,6 +70,39 @@ int jnext; }; +struct nfe_hw_stats { + uint64_t tx_octets; + uint32_t tx_zero_rexmits; + uint32_t tx_one_rexmits; + uint32_t tx_multi_rexmits; + uint32_t tx_late_cols; + uint32_t tx_fifo_underuns; + uint32_t tx_carrier_losts; + uint32_t tx_excess_deferals; + uint32_t tx_retry_errors; + uint32_t rx_frame_errors; + uint32_t rx_extra_bytes; + uint32_t rx_late_cols; + uint32_t rx_runts; + uint32_t rx_jumbos; + uint32_t rx_fifo_overuns; + uint32_t rx_crc_errors; + uint32_t rx_fae; + uint32_t rx_len_errors; + uint32_t rx_unicast; + uint32_t rx_multicast; + uint32_t rx_broadcast; + uint32_t tx_deferals; + uint32_t tx_frames; + uint64_t rx_octets; + uint32_t tx_pause; + uint32_t rx_pause; + uint32_t rx_drops; + uint32_t tx_unicast; + uint32_t tx_multicast; + uint32_t tx_broadcast; +}; + struct nfe_softc { struct ifnet *nfe_ifp; device_t nfe_dev; @@ -96,10 +129,14 @@ #define NFE_PWR_MGMT 0x0010 #define NFE_CORRECT_MACADDR 0x0020 #define NFE_TX_FLOW_CTRL 0x0040 +#define NFE_MIB_V1 0x0080 +#define NFE_MIB_V2 0x0100 +#define NFE_MIB_V3 0x0200 int nfe_jumbo_disable; uint32_t rxtxctl; uint8_t mii_phyaddr; uint8_t eaddr[ETHER_ADDR_LEN]; + struct nfe_hw_stats nfe_stats; struct taskqueue *nfe_tq; struct task nfe_int_task; struct task nfe_tx_task; --jho1yZJdad60DJr+-- From owner-freebsd-net@FreeBSD.ORG Tue Sep 30 09:24:06 2008 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C508B1065697; Tue, 30 Sep 2008 09:24:06 +0000 (UTC) (envelope-from s.c.sprong@student.utwente.nl) Received: from smtp.utwente.nl (unknown [IPv6:2001:610:1908:1000:204:23ff:feb7:ef56]) by mx1.freebsd.org (Postfix) with ESMTP id 4359A8FC29; Tue, 30 Sep 2008 09:24:06 +0000 (UTC) (envelope-from s.c.sprong@student.utwente.nl) Received: from exchange.service.utwente.nl (win016.service.utwente.nl [130.89.4.34]) by smtp.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id m8U9NXOV025256; Tue, 30 Sep 2008 11:23:34 +0200 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Date: Tue, 30 Sep 2008 11:23:33 +0200 Message-ID: <3F5099632A78C7488A80D6535C4F4E800A93DA@EX01.service.utwente.nl> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: kern/127529: [nfe] [patch] Summary of Nvidia 8200/MCP78S chipset, notably req nfe driver update Thread-Index: AckcfE56/NkZkxrNS46PXsDKzSZEbwF+6h3W References: <200809220627.m8M6RJ8o062822@freefall.freebsd.org> From: To: , X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact servicedesk@icts.utwente.nl for more information. X-UTwente-MailScanner: Found to be clean X-UTwente-MailScanner-From: s.c.sprong@student.utwente.nl X-Spam-Status: No Cc: Subject: RE: kern/127529: [nfe] [patch] Summary of Nvidia 8200/MCP78S chipset, notably req nfe driver update X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Sep 2008 09:24:06 -0000 yongari@FreeBSD.org wrote: >Would you try patch at the followng URL? >http://people.freebsd.org/~yongari/nfe/nfe.mcp77_79.patch Sorry for the late reply, but it took quite some effort to obtain a = bootable system with the latest RELENG_7 source. Unfortunately neither the kernel = nor world doesn't fully compile at the moment. Your patch works against the current RELENG_7 nfe module and compiles = correctly, but RELENG_7 is too new for the 7.0R kernel to load. Since the patch = only adds pci ids you can assume that it is correct. regards, scs From owner-freebsd-net@FreeBSD.ORG Tue Sep 30 14:35:29 2008 Return-Path: Delivered-To: net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3DF141065688; Tue, 30 Sep 2008 14:35:29 +0000 (UTC) (envelope-from arno@heho.snv.jussieu.fr) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by mx1.freebsd.org (Postfix) with ESMTP id C30268FC16; Tue, 30 Sep 2008 14:35:28 +0000 (UTC) (envelope-from arno@heho.snv.jussieu.fr) Received: from heho.snv.jussieu.fr (heho.snv.jussieu.fr [134.157.184.22]) by shiva.jussieu.fr (8.14.3/jtpda-5.4) with ESMTP id m8UEZPJZ005217 ; Tue, 30 Sep 2008 16:35:25 +0200 (CEST) X-Ids: 166 Received: from heho.snv.jussieu.fr (localhost [127.0.0.1]) by heho.snv.jussieu.fr (8.13.3/jtpda-5.2) with ESMTP id m8UEZOeW004616 ; Tue, 30 Sep 2008 16:35:24 +0200 (MEST) Received: (from arno@localhost) by heho.snv.jussieu.fr (8.13.3/8.13.1/Submit) id m8UEZL1I004613; Tue, 30 Sep 2008 16:35:21 +0200 (MEST) (envelope-from arno) To: Robert Watson References: <20080929043134.GD54819@cdnetworks.co.kr> From: "Arno J. Klaassen" Date: 30 Sep 2008 16:35:17 +0200 In-Reply-To: Message-ID: Lines: 29 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: ClamAV 0.93.3/8359/Tue Sep 30 15:29:02 2008 on shiva.jussieu.fr X-Virus-Status: Clean X-Miltered: at jchkmail.jussieu.fr with ID 48E2392D.015 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 48E2392D.015/134.157.184.22/heho.snv.jussieu.fr/heho.snv.jussieu.fr/ X-j-chkmail-Score: MSGID : 48E2392D.015 on jchkmail.jussieu.fr : j-chkmail score : . : R=. U=. O=. B=0.011 -> S=0.011 X-j-chkmail-Status: Ham Cc: pyunyh@gmail.com, stable@FreeBSD.org, rizzo@iet.unipi.it, net@FreeBSD.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Sep 2008 14:35:29 -0000 Robert Watson writes: > On Mon, 29 Sep 2008, Arno J. Klaassen wrote: > > > However, the "request/respones" tests are awfull for my notebook > > (test repeated on the notebook for the sake of conviction) : > > Is it possible to rerun these tests with a 7.0 kernel of the same > general configuration? That would help us determine if it's a > regression between 7.0 and 7.1, 7.0-RELEASE-p4 kernel (and 7.1 world) as well as 7.0-RELEASE life-cd give same results : great streaming, very poor request/response > or perhaps a more general issue > between 6.x and 7.x. nve(4) does not recognise this chip. If someone does have a bootable 6-stable .iso with a backported nfe(4) ... or email if_nfe.ko to me and I will tes under 6-stable For now I will test the patches Pyun and Luigi sent me and let you know. Best, arno From owner-freebsd-net@FreeBSD.ORG Tue Sep 30 14:37:46 2008 Return-Path: Delivered-To: net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8CCF31065687; Tue, 30 Sep 2008 14:37:46 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 6345E8FC1F; Tue, 30 Sep 2008 14:37:46 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTP id 163DF46B23; Tue, 30 Sep 2008 10:37:46 -0400 (EDT) Date: Tue, 30 Sep 2008 15:37:45 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: "Arno J. Klaassen" In-Reply-To: Message-ID: References: <20080929043134.GD54819@cdnetworks.co.kr> User-Agent: Alpine 1.10 (BSF 962 2008-03-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: pyunyh@gmail.com, stable@FreeBSD.org, rizzo@iet.unipi.it, net@FreeBSD.org Subject: Re: 7.1-PRERELEASE : bad network performance (nfe0) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Sep 2008 14:37:46 -0000 On Tue, 30 Sep 2008, Arno J. Klaassen wrote: >>> However, the "request/respones" tests are awfull for my notebook (test >>> repeated on the notebook for the sake of conviction) : >> >> Is it possible to rerun these tests with a 7.0 kernel of the same general >> configuration? That would help us determine if it's a regression between >> 7.0 and 7.1, > > 7.0-RELEASE-p4 kernel (and 7.1 world) as well as 7.0-RELEASE life-cd give > same results : great streaming, very poor request/response Thanks for testing this -- it rules out a host of potential issues that could have been from changes in flight between 7.0 and 7.1, which is very helpful. At least for me, since I made many of those changes :-). >> or perhaps a more general issue between 6.x and 7.x. > > nve(4) does not recognise this chip. > > If someone does have a bootable 6-stable .iso with a backported nfe(4) ... > or email if_nfe.ko to me and I will tes under 6-stable > > For now I will test the patches Pyun and Luigi sent me and let you know. OK. I'll drop out of the loop on this one unless it's determined that the network stack itself is implicated rather than the drivers. Robert N M Watson Computer Laboratory University of Cambridge From owner-freebsd-net@FreeBSD.ORG Tue Sep 30 20:01:45 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 169541065688 for ; Tue, 30 Sep 2008 20:01:45 +0000 (UTC) (envelope-from freebsd-net@m.gmane.org) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by mx1.freebsd.org (Postfix) with ESMTP id C30038FC26 for ; Tue, 30 Sep 2008 20:01:44 +0000 (UTC) (envelope-from freebsd-net@m.gmane.org) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1KklPe-0007xt-6f for freebsd-net@freebsd.org; Tue, 30 Sep 2008 20:01:38 +0000 Received: from 78-1-218-66.adsl.net.t-com.hr ([78.1.218.66]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 30 Sep 2008 20:01:38 +0000 Received: from ivoras by 78-1-218-66.adsl.net.t-com.hr with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 30 Sep 2008 20:01:38 +0000 X-Injected-Via-Gmane: http://gmane.org/ To: freebsd-net@freebsd.org From: Ivan Voras Date: Tue, 30 Sep 2008 22:01:20 +0200 Lines: 39 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enigFDB417C7DB23F2FE24BFF4B7" X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 78-1-218-66.adsl.net.t-com.hr User-Agent: Thunderbird 2.0.0.17 (Windows/20080914) In-Reply-To: X-Enigmail-Version: 0.95.7 Sender: news Subject: Re: Optimizing for high PPS, Intel NICs X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Sep 2008 20:01:45 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enigFDB417C7DB23F2FE24BFF4B7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Ivan Voras wrote: > I've noticed something strange: the server is bottlenecked with "em1 > taskq" kernel thread taking 100% of a CPU core, while the global CPU > utilization is around 50%, but the client's em0 taskq thread for this > same load is ~~ 10% (with > 30% idle). The client CPU is a bit faster > then the server (2.4 GHz vs 2.0 GHz) but I don't think this can account= > for such a big difference. Toggling TSO on the server doesn't help. I've switched the server and the client role and the behaviour is always the same - on this one machine the taskq starts using 100% of a core when pushing more than about 150,000 PPS. It's the same when testing under Linux so it looks like I need to shop for a better NIC. Can anyone recommend a good but basic (no fancy features needed) PCI-E or PCI-X NIC that's known to be able to push > 500,000 PPS? --------------enigFDB417C7DB23F2FE24BFF4B7 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAkjihZUACgkQldnAQVacBcgmFwCgh4ywiPFeJeQ8P0XKnVxOcuA+ JlEAniwVzZ0ckU1GNQpCsRH3Pv+JAKL4 =0LMd -----END PGP SIGNATURE----- --------------enigFDB417C7DB23F2FE24BFF4B7-- From owner-freebsd-net@FreeBSD.ORG Wed Oct 1 22:16:48 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8DC2106564A for ; Wed, 1 Oct 2008 22:16:48 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: from mu-out-0910.google.com (mu-out-0910.google.com [209.85.134.187]) by mx1.freebsd.org (Postfix) with ESMTP id 31E3E8FC13 for ; Wed, 1 Oct 2008 22:16:47 +0000 (UTC) (envelope-from jfvogel@gmail.com) Received: by mu-out-0910.google.com with SMTP id i2so613200mue.3 for ; Wed, 01 Oct 2008 15:16:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type:content-transfer-encoding :content-disposition; bh=DGfhrc6OoT5HGoA6avk3zevO7xtjuPjcaPx5tUx8XEw=; b=qUirKG4r71dL0vShBRGALzgPU5GqpJNb29f8idZ8NJXihGY9q1f13/cDbsm9xaXsUM 80k7I8HXZBuB8JAn+ahMY4PK/GhlmWEZ8nRKeUmXQLjcqtp2Vwvs5519iljM1hjBlAcF DEAMqv9Xt7Y+PR7LBdV7swXUFtHqEaq/NF42k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type :content-transfer-encoding:content-disposition; b=vzBnShwUnNXhTgJnqllTmnSH6cqirw0tQ92l3cK+2DdBhMhqw5eArujypFB8ST0xFE wcj8/9SqlFwt15Vv5IIWZ/xMrHQgTFvocgtkJaexbQTi4py5v7OVCLDgZYdbXNIr1Wlc 3sEh1u1Jog9H8l9SUwKlyWnQQpf2dY4bghrsA= Received: by 10.181.2.10 with SMTP id e10mr4975152bki.107.1222899406442; Wed, 01 Oct 2008 15:16:46 -0700 (PDT) Received: by 10.180.208.16 with HTTP; Wed, 1 Oct 2008 15:16:46 -0700 (PDT) Message-ID: <2a41acea0810011516u77ca05b1k2df527e453dfe392@mail.gmail.com> Date: Wed, 1 Oct 2008 15:16:46 -0700 From: "Jack Vogel" To: "George V. Neville-Neil" , "John Baldwin" , "Scott Long" , "Kip Macy" , "Jeff Roberson" , "freebsd-net@freebsd.org" MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Cc: Subject: potential nasty bug in igb and ixgbe X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Oct 2008 22:16:48 -0000 Jeff Roberson uncovered an issue that might be behind any number of possible problems. Our newer hardware (meaning those supported by the igb and ixgbe drivers) overwrites the buffer address in the RX descriptor with a variety of data in support of advanced features (see the relevant header files for details). However, in the rxeof code, if you fail to get a new mbuf, and hence, will discard, the descriptor is being left in the wb form, meaning that the address is jibberish for the next time the engine uses that descriptor. I am modifying get_buf so that it fixes the address in the descriptor when this happens. I know when my test group has had the igb driver under heavy load they have had some panics, right now I'm not sure if this has been at the root of those or not. If you want to see how I'm changing the code just speak up :) And thanks for finding this Jeff. Jack From owner-freebsd-net@FreeBSD.ORG Thu Oct 2 01:19:10 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F10331065689; Thu, 2 Oct 2008 01:19:10 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id C765F8FC1C; Thu, 2 Oct 2008 01:19:10 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m921JAT4028978; Thu, 2 Oct 2008 01:19:10 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m921JABO028974; Thu, 2 Oct 2008 01:19:10 GMT (envelope-from linimon) Date: Thu, 2 Oct 2008 01:19:10 GMT Message-Id: <200810020119.m921JABO028974@freefall.freebsd.org> To: livitin@itprofservice.ru, linimon@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: bin/127719: arp: Segmentation fault (core dumped) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2008 01:19:11 -0000 Synopsis: arp: Segmentation fault (core dumped) State-Changed-From-To: open->feedback State-Changed-By: linimon State-Changed-When: Thu Oct 2 01:18:22 UTC 2008 State-Changed-Why: To submitter: since the patch was not encoded, it confused GNATS. Can you reply with a followup that has it encoded somehow? Thanks. http://www.freebsd.org/cgi/query-pr.cgi?pr=127719 From owner-freebsd-net@FreeBSD.ORG Thu Oct 2 09:40:35 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 080AF1065689 for ; Thu, 2 Oct 2008 09:40:35 +0000 (UTC) (envelope-from yonyossef.lists@gmail.com) Received: from mail-gx0-f21.google.com (mail-gx0-f21.google.com [209.85.217.21]) by mx1.freebsd.org (Postfix) with ESMTP id A54B18FC40 for ; Thu, 2 Oct 2008 09:40:34 +0000 (UTC) (envelope-from yonyossef.lists@gmail.com) Received: by gxk14 with SMTP id 14so1147492gxk.19 for ; Thu, 02 Oct 2008 02:40:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type; bh=94nJ30lKl26ZCWb0rI7xHVH8XiXZvlPs2sH8ZNCgLvw=; b=gnxc9XTAyd3anjYrsrWCcehStMYNjgXJOxgYxSwPUUot+EB0WDdz/dk/EiYQEKCUJ3 vpYh56sHT/p2hb4LVCynxmjocEJt15UCJFZOr1/+YwltuevBces/L94PVF8Bz3igJCtr P/41+yLPhQhWw0YBLaVKfrVsIiuMBnlbtmSK0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=JIoexTrK8JmZYT1yjMwg12/7i+niyhBSERY9IGUj3DRGUNaHZnZtvgezPpkuGMr2o3 cA5XieD87QaA0Uy2S+Bb+0ZvbQ50aKdsWFhViKW2KT014UrhOf69jpbF8dACzZwwDAyg 2RRrxepElR8cg2X65sDSEYYfZaBCy22g4p/u4= Received: by 10.150.225.10 with SMTP id x10mr6748166ybg.153.1222939000379; Thu, 02 Oct 2008 02:16:40 -0700 (PDT) Received: by 10.151.84.2 with HTTP; Thu, 2 Oct 2008 02:16:40 -0700 (PDT) Message-ID: <20def4870810020216x31f9c0d8yd4776622928c412e@mail.gmail.com> Date: Thu, 2 Oct 2008 12:16:40 +0300 From: "Yony Yossef" To: freebsd-net@freebsd.org, freebsd-questions@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Freeing an mbuf cluster X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2008 09:40:35 -0000 Hi All, I'm trying to manually build an mbuf chain with clusters in various sizes. I'm doing it using the MGETHDR and MEXTADD macros, it works fine. Now I'm looking for the simplest way to free an mbuf cluster, since I want to free the clusters seperately. This function will be given as a parameter to MEXTADD. Is there a simple command like 'free(buf)' to free an mbuf cluster? Thanks Yony From owner-freebsd-net@FreeBSD.ORG Thu Oct 2 11:40:04 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D34F61065696 for ; Thu, 2 Oct 2008 11:40:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id C03E08FC0C for ; Thu, 2 Oct 2008 11:40:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m92Be4IG018959 for ; Thu, 2 Oct 2008 11:40:04 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m92Be4Dw018958; Thu, 2 Oct 2008 11:40:04 GMT (envelope-from gnats) Date: Thu, 2 Oct 2008 11:40:04 GMT Message-Id: <200810021140.m92Be4Dw018958@freefall.freebsd.org> To: freebsd-net@FreeBSD.org From: =?koi8-r?B?7MnXydTJziDzxdLHxco=?= Cc: Subject: Re: bin/127719: arp: Segmentation fault (core dumped) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: =?koi8-r?B?7MnXydTJziDzxdLHxco=?= List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2008 11:40:04 -0000 The following reply was made to PR bin/127719; it has been noted by GNATS. From: =?koi8-r?B?7MnXydTJziDzxdLHxco=?= To: Cc: Subject: Re: bin/127719: arp: Segmentation fault (core dumped) Date: Thu, 2 Oct 2008 15:15:24 +0400 This is a multi-part message in MIME format. ------_=_NextPart_001_01C92480.2901E19D Content-Type: multipart/alternative; boundary="----_=_NextPart_002_01C92480.2901E19D" ------_=_NextPart_002_01C92480.2901E19D Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: quoted-printable <>=20 Livitin Serg livitin@itprofservice.ru ------_=_NextPart_002_01C92480.2901E19D Content-Type: text/html; charset="koi8-r" Content-Transfer-Encoding: quoted-printable Re: bin/127719: arp: Segmentation fault (core dumped)

= <<arp.rar>>
Livitin = Serg
livitin@itprofservice.ru

------_=_NextPart_002_01C92480.2901E19D-- ------_=_NextPart_001_01C92480.2901E19D Content-Type: application/octet-stream; name="arp.rar" Content-Transfer-Encoding: base64 Content-Description: arp.rar Content-Disposition: attachment; filename="arp.rar" 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 +o+Psv7EZ33aV9G6hOik7qJSqi61rZz0M0+pe/d2p+J2lZ9RhJu9x22SneXHKeRJrJVm7jFzvHf8 eNbcf1P16J2XvnZXdJzXtVvkFkt9X+9yhxJv+sI9rt2OLsxcI1O/wrwudog0P6UgNNb3N5z9iqPL /wV1RuMxGOJcro5WMr++42JVxxalG7kWddPl3000KY2tkp9zE/8PovZVMbUB7qJ/LWzAM++o+NE7 1/pV3ppQafVnP8XKOlf61McRsoZ/nOfFmjsf21OhzJF9xOfyTx/REw/gK/9/HNT2LanPn6ZcTTyz cT3L+KePRwn/lA6+E+7dvE7Cp39a/6Yny3Zve1MbXS+fEzjj549bE+RWf2tXG1a4nv5y7esdsq/A Z77MzYbPlTn055/AqdluzspzJzU7uiifNnjfIT0sT3jL05/4RP+7qoztK2ZKq//tAwsj20kI+lA+ YvqmOKeRze4gfXhPiYF09htsbWzi+hmw2evqY4qFRYcehq42yCJ76EengcE6mc+g+O5eajG0cYTO dnPiVn/90D/sw8cUuOggaaMdJA927R9apjamPky6frWGzQ7bG2GRfdTn99T4B6HWxP63auxfwzT+ E85ND+jjo6uJ2oVxkI4CE7Kafg4WajG1so61Xv/f3oqZ5+af2OTieumjqZ2M/H/gKf3m4RW+A6fa l7r9lmenn6mEdNNRjb8nDQn7OTeYede0c0/Z7/++4StpZfRVMbfBV6QUfq4R080NT+eByzjZv2Wf BieqhP20DgYR7epjjuXIxjnoHwoRuG+T3qIHw4T0E1O6jLj1FMvH9T0EL+5hPEb7R86B0b+yp05W spPP+aajG36o63XQirjkt95vHYUOroZOw83h5TJ3n98hapuI5ye+xtVzI9qI5Y2FL6GVU+/Bjlj6 pHn42q5a5Yxyo6okxqd/jaj4C0d7jGV0Yo+BiL1scqnwJ6VnG1XNfuRjlR2Z3MlHKrmd+10cqOoE va+OVGOPvvhxyo+AEL2Ecqszux9PG28zYlkVvWC3iquW8UZZN4kmdtIeWP2p153F1Yf4JO2kqbH+ tdPXlIGuxdUxF2UC5+jGsXwMp+9pK898dWE4uBmZX3uwrQ83KQ1dlVuJzv/1A0/LylWEckRZ9zhm PPyj73OVao53/hTLH6GGHz2Kgf61csEX+KUhqf7KuXVF0ZKdKwq5TJ3Ra3rPQ4ZHYSE1euq2xRfo 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 bYwNf8erTnO/3+wmhjsJdfBXsJ06av0UVeynfXOL20PT8pwdhac7wVhlpP7SanwaflcBefyywxuI i8v4n43Iwllvu4I9fj511fBOVpldPPTZSmtRKR7pioK/77Z/OQLuUXN2ctV7vaut2X9anO65PaPX +B6ONdX6KopKEp3nXzkrgVn8aq2m9f7ynX3P90MfhL30Ffw0Zng7CjlT9v8OH3e+8JYZLotn5bM8 HT4+xyeAvr+hUq6Mu2t6ayWIy3XXesiuRtdl/4yty6ToeD26nMV0FNaiUj6ig09Xs/5k8WcqcpdP V18ybt4xopIrYcHGuZ4OopKEp3nvpyVMWnxqrZ6dfCvt4Y/CeogrTp4X0uEsKOWVVphw8j09NWfG MtS4Snx66QzqcrOtdXTyt+JprjYT1noYLu+DnXyZZcxncrwlPP1NjTWolI7WiXm/7Pq/B/f7Mypy 96ersTl/GOwy0pJdcJGtCM6fHVEp3monJUxrfjVWz099Cut4vMzbnLI5/fwV/DRp4GplO+vcXtoe T9BlLDM87wthltPwnk+XyQy/81BeHh8oO/bejprV7brpusx8LBH2H19l2/FxWpkMrozz/mYq+0/C VL/Nb1+z99rIatJ309XZbJu4jXq/SYC+4v+HjXT8JUUlCU7z3+OqXApvj1mzmv1FWnLLjIY9h80E tOUsKXto32OUgtPioGK20Psvj5WWz9bPy1jlPJredX2mAvw+gdjXRlqbfxPY4fg59Z/LxVh6rZf1 t6iu+6DKbdTn6+fitRKR46UZ22W2fb1glzKnLP21XaPLOMavR7T+a9/lY1scpUUlCU7y05SpcCpf Hqt/9uh0IAAEgTvX+/q055nc9t5NjrD4H7Z8HkbbnzIfh/xXU0MfhjWn/fn4AE+jj5D/T+Xw4Y/D Gfy7v5Jn4vJOWMbnweaH/v4ux/RNTx+GM479HfU8djjlhVp/pbMTeYnhV1TxWCreBkVEPCDxtmYv 3kFx3u4bFpB9fBeohFzF++gvYwi9g9RBdBCNPBy1MHRxjUwctTa6mMaqD56C93CL+DzsF8GEauDz 0F8WEa2Dz8F82Ea+D6CC1e4JH24xkuzjXd+CUou3wH7/GLGDkh/4eMYReljf7bHwu9pjGW4t/RvT 2v6Hot0cTitwNXQrq6EbiC73cKL7lO/uawzfGqqfjsYXfqnv62vhPrsRT0FPPcQ9zB+8huaeD6+G 5qoP3UNzVwdvykNvX1lY7WS+PVrEdqxg9RDczMH7+G5cwfPcp4+vF52G5qoPPQ3NXB5+O7F3ENye nQRrfdrBUu0q2GNrPVYcPYfHgReINkp55OT+0i8QhYxnZTl7F4hTMxnm5zUxeImC5jO8nL+LxE4a eM9ROa2LxFMaqM76d9rt9EavtJ5aycpdrTu1/aTy2E5Z9rt9SMlPPJzlpF4iuFjGdlOXsXiK0ZmM 83V8YNMTYi5nvmq+C9kbaegPTju+1jFZmsp3+C2DI/Ihdk4X8KsmYZtbrxpmodkvndtY8FsGR+TC 7Jwv4VZMwza3XjTNQ7JfO7ax4LYMj20LsnC/hVkzDNrdeNM1Dsl87trHgtgyPyoXZOF/CrJmGbW6 8aZqHZL53bWPBbBkflwuycL+FWTMM2t140zUOyXzu2seC2DI/Mhdk4X8KsmYZtbrxpmodkvndtY8 FsGRvoXZOF/CrJmGbW68aZqHZL53bWPBbBkf8IXZOF/CrJmGbW68aZqHZL53bWPBbBkf8YXZOF/C rJmGbW68aZqHZL53bWPBbBkfmwuycL+FWTMM2t140zUOyXzu2seCjo8LF1PuxMvW+7jG2eZSjrPn 1aHLx6P1Eb4yRN5IzVWHTY6d997ivx/oPb1+Pn1r2r4ZBU/entfw6s3zodDb5q2U27gEcuNFd0fg Fg+Fo8gP9oLqp5Ap7/a3Vzv82/+MkeOcAjnlWUjtT+z4z973I+zHX8jnybyepl90++WHtpNjreUS OoynBWHHzked+jQcHYfQiR53PfV9hYcdEjztF+HibDkIked01jwlhy0SPO53zPC2FjEjzvy8/lLD uYked+GblbD5cSPO/5+VBf6RI87+vk/UWF3Ejzt53zl7D/fe+Xhnvu5gs1LyFFs7S0XPdBbZy7pb /RcZna1x/b/Sjv01sIE37gyy+hHqXkOrfNgsvow6l5Dq3zYLLuodS8h1b5sFl/lDqXkOrfNgsv84 dS8h1b5sFl/pDqXkOrfNgsu7h1LyHVvmwWX0odS8h1b5sFl/rDqXkOrfNgsvpw6l5Dq3yPW2He7j wsTE/XiZvJNHynj4ABD/f4Vf5X2Vnu+L3SoM1P6fP7tB6itD7OsH7KMTf9JKc12lfDPzkYjbQxiP zo8VK/r8fwcDlfuYJd7e46w/6Vc7q29RYfyybTzaWJN+4M8synJdZ7Lbp85nrPZPZVoeJEytaL// a05ef7f/M1bn/zJS8+9DvNhDvbz/efvY97effj3se9vPwR72Pe3muj3se9vO/j3se9vPwx72Pe3n gR72Pe3ngx72Pe3n4o97Hvbz8ce9j3t54UO8n8Rr6vG6twFXx8/3r6rtn/G6vt3QeHCl71PD8fB6 veM5CnU9771bfS+lB0ud1OK9PA13RcrxkH/T13ndDAs/99RY/0tP5/uL767Lei/N0OR5Ca91vGdL 2/HwWp77qvXZbondczz+h+d/c9L/Jafe5v7nIWem7XpPPfF3nkcz4X3fr/e87y/I+6+tzGN+nr73 kcZV8hWvaQMv4X69jQ37sDwp42ET4jetfVi/rRN018ax3vQ6+qM/e/4GvnkLL32e9WFv8revHqw8 XV8hWeM/C+PNWP7Pjt5/m/2vvhb19LsLvn/P+qrv4Ph+5zPM4zTV9r5zG5n828+z6HqeF6zfOg+L 73oOs4v9HK/Z5rqes83jfqbHjNRsdL2tf7P7nr+W9z/J9PqNNxm6ez7D6Pq/7f4PR9bXdv6nfv8f Z/Z7fJ8z2nHfo5nsPD7O90uYsO3/Fvn2uX+b7j/ez+N/lvvL/j7/8HxPbchx/Q+xzX2O5/x/J3Ek zVybQ7Z3UVXTmUztt0WUu7vpeb9fie1JbfxcRVD03Q/qVa9lkLDX+knWpgZlSa3LyhxNUm8kZu/q qp1o/i7zUdn0eulH7jNy/9XI5Jt6tE0d398kUvYyWXr6an97FQLT2GQsIWm8sMi66HRonSz9bkLD FVp5a/NVX/DTbR7/sPNWGtut6sPKJFdCc7jalo4ehSzmQsMXCLT2UaxtaQ9XFQniUzUx9WNouObW x4ejtbq40Fxz+Xo/A6+XN1oufurXQ0tJo7bxJz9td6Ow9HwtLo9pOcz9KQXSXGjtc9bcPkKmSZ8b Br4vX7L6+TvZxO6TU9WhCfmkDrvj1ak99k76L49Wrrj4nMybX0zPzmjnKLzelnPezkuPzr4k58uc o1aY72c+7OY+c/XObp2k5Ob/OcNOUI74+c5ecl5CrPPzl1OS4/n3uZzW7GdS5EX7+WT/w5zdYmpp nw5zdpy/nMn2s6yU5/os27vrvuRJq1wvO9rVrawrbPJaEsd18xYTYihU3Rw4I5t+36rIslpd3sNX JvikRPHLmXjLKAeZyW3yl7D3cVDhn3sXND7ncSvt818/ebDm5N6uT+0Z2JLyE8t5y5nOFlM9u5zp JzPxLxexOwidTQTnNbOaZp4lB31051852P6sFOgpO/oUydzul+udamsM8g8my+xqCqnj3K7PEP/m QpVo8/PjP6UKT17yM/tvAhSp48nv5Yz/XClTyRft07fecLznhvE88nArcnM9DGfDMvAwsoPj4n/+ gEjWfKIiHMyQImGOEFwqvQwODbZyueJKACL5qFOLLAFbF41BSU4AYkgIcjbxkKIKWT2y1crrhFfi uzrnKSqItZsBRFX5kUbgY6vFLtlCjlb+OdVuXIwRPAACAMB3ADwbeZ5AIAw4zoIE42/X/Af5P1/r CBIjCQPsZAnoTxOPp4nvJIH5I6jEQPXo8dCmbJbCeXbncr5G65LNZnDYd5yWH5LkOR/28e1Mb6ZP 9Ld3cgt3JNmC+Y089pqz+Z/n07twaqzmvb3d3/1WpximFOQOTIo5sxZHHTEgZEkSSOpwVdvm/VWe 8IZ1yJdaWVY600J+w0h5ZPlAMUPVaa1Hsn+T3zYGzNtAQ/U0zcB+xv2JcFrGpamjixZHW6xS6OTt 63f4+iGqx9FvsPJKuRokxl0vMpcl7T88zS3WUTnkMpDr0Ms9lUMp7n0MvW+9AvU0HtP71ncN3MqN V3iX4KjdeclzijL1fDS/IUZe006X6CjL2KBLolGXtf6JfuqMvZxHqtYpfaf1N2DZl7TYouZsi6FQ XU2xdjcF3KsvCV/hJeVLScQcMXotxxJcS9m19VWLouHxSLwq70pfC+Ku+qcWX9V9+tAyydu219bc kQpii/GMIYkC/nWGAM6YElhlDvu0cYeGQ55JgjUmDPRMIemq6NTCn+VX1+vVMMpLqv4Fh4hGc1ap xqmxbPEbI44qTDn0nHlWcgOFk8iWtGILeckXYiS5HJnEnKEOcqcgYlksRyx0ZFGROnM8Y1kpS5lT qDxTqSeVerUxx66r16kgfCfoKhV2j/Kp17FFH6TilXxqnYHIli9Nj/x+0amUXaboVt/fSKmqW7rT YI2K39v9xchablcPItrysHENudGE9m0X7LPjtmOrsmO6Sl3sd4lLsm9KlNvASl2He289C63vC8dd 31+XwmB3T+pLhczurZHyqp4rdLPjyXztbj+CaJP4ppWw/mlcIwMsye21f6rmD51t3Jw3uql0Uvhg BKjVu9G0xpIe7v9+XILB5ZpELoGSW72bTA+8qZtEojsCWO1O3JglVx/ptNC07895din7Gk408U0x +880849E9Ioj1z5/jVP7opEMS++j4ioPoLai8ovxgzmjFnRmVOuO0P1mjP3mrP6mvPhPqLh76pxK jwjCQM8dwTZ5pcOO/p4+HufWfFsvetTi3ON/Zrf9NTXNPZNee4UpsDYmyKg2xuCrLTTKnDqXQYLx C3b40vxDmHOUOaOeI46MjzqR6ZMkTrTPEqS53ZNFv060zykn7m2pR556J+NS+0j/Iy1WCgrD3gUg eS/WYXWYIRFouH3b/xX4Dq6tl1sWW5ELuN5VbemJM/UfsNXtVTTLd9RHvn2Gx2rSoVONRzBjS31K 5K2ccEZ3K4ubW2fP7mzLWsxfUckdXtn97LGP+wC3mCgKrIvUubu79JbfxudCg/tcXcJ7CHMI7lXC o4To3u077sHbLoUWWHZWUNof7AsV/eur13u3F3K0e63DfgsJglebXzNTXT/6bkwpJEaOE71vVPam bOtL9FxsNA2N2j9+ylIr6kxYaCXs1cFeTBKzapNWtqdW0KzapNbHohXWfToRux3q7JfARHxq3SCd VNUpNUpNk2nm0quH/lsbfbUrDq9rtUvW69deYRrw26gleamqazd8akqpIEUOE75LT2pqojjIRX1I YSEJji379NaX9Sug1UErOCE2Ou1TqWhWaapSbJBOi4we9XXDspb+rdNp1U1Sk1Sk2Uqea60CtzMO nxzqpeLZvoeynYrpX9JEqo6P8XXWgx7UdZLddL1BG9STcgRGPaR6wfU/fmtL1VaOSW2lyayiNc3S Ipb+gyX35MUpG5NXBCK73vds/28bk21vkN4taOgXNy9wA/Rt2lcqix3M2n6H9zvTtmFchbH9ibe0 tJ1g+3VX63+gIxE4aAksnnZ7iOyf0jMfp/3736J6ln33winNaX2n9bYrYfi7TLPzFdGQ/m/nCl/n vs4yvnP4crqYR3wUXgr9v+FCT79Qm4DqeFMeg/KTHorK/ljPwM+2NRTxv+GRXX+a2dQuzNlMREB/ S6zfVa1s4LPvBRU/Ws/MAFctiONecdh+P5DkcRwD3PG+F8BtgcBLZdv2l7K5O6BbZslRx+UEtU47 V+MsNrjRcH2seAk65W+QV4sh2ypvmgR3/4rgda+Wpqn2vKnVr2eMpvfO3uHaf1+vdn61osfYMo8f wAPwD30ka1vb/0PLcoG084aADYJY9qFqrHRFqgEWUq5VwuRwOBwfiPd8F7f+3k6vb/0Q5hsDd3fL YF/XY5f+iIISA7z6w/Q4H7+jtfYZ5WA++4R3xsBAM225u6Dht1urQJ9k6zEWV49+UYhkrzc7DRiz fHXPfK2RXgf9/VF8HA7/aWo5Ou31y26cmBx/9QmK/M1KDm2o14zliZziomrj8QxKgleS+15eZudh qCxHLXMmOafv01caNXQbqCVnBCbIpOjrugVNiuQJpzrcr9TVgeoUb1lVdXcKzcjh2rKgV1bY7Vk1 q1UI1m4/YrfbH9wOvv7WGLm5nrtYP5TBNYZa7KtZ9mq2XFqXS9yp8NM/K2OvLVdy0mcE/qR/67AE HB0EAAEQBpUeO0Ydn1PRR9hSHwjDFSiqwX39xDet3wapxODVjkGnJiVi0RolSCMiJVzRJDhO9hMK qeZhFY+z4Puj69LwHqtTQKMmZ4jTxsG/1Gvpo9YtbJIt33sHd317Xao2y2svIq2lY0trS5LPbq0g 2n8rU3Jf0X3CPHSweM427s4RmqWpIY4cxC3cThLu1pz6OiW24tsq0yzRl7P6Gi+GdZf72K38sttz R3h4CLojyD97E1HoFC0uyL/hlT11Lue0t322l4abFoxSMxJjYhqdKtvENMk06xpemSphFEcSi2LX ma41/q3eHW/ua28Ujjji0XxDs0SxnFowZqR0RB7hfTkTk2kKjFnQI+pHWEmiqRnTr0fWiZO+RVo/ eeohlJvzWnntGVB9lkfxqYpG1K2vyNwblEMi6LmC7tL+0vxDronAMXjTBNsCjEHVw6RlU9xLTmGn GIxxkEV9ikk0ccEZnFxfYYZ/eB2rbPPH9WvdI0TZqvEaeUJXpI6LGJiiRiOhTFGj22jVfM024lWh dDbdEJji2mBErkkcu3T/i/O5eP6nedWDxjZqnq3crEJjrUdc0sa96n8BajlIBRklloD9NEtK71L4 Czi3m9J8JWelV3LCt8Rf1twhx4xJoF2uzLTL+0qcV6Byiw/mrykVS7snLLfxa2/nYklX/AWZ5w+4 J20uHEHAUxbYCurY/4GHhoGYLa3/vNparFk+3Fx/8bIT/kylfo5x/VLK7C5u434d1yHwfi8VWEwS vJSpXcWLKraLor6mNordIaROhN/U1k6gibqVbptXR4TMvjYBWNdBrOW/dcxbbo14bdN0n5mqpcRd FfUxilZa7DXRW2V8NXQkIlMnGLITjVbqBW+y7T2E768O6yBn9ZXZ0n5sXzPLxcXHb3/w096PxK2b GprFc+vPsadWdod4eQUB7RsysLpGqmAUijpDKmbO3O+P3HKdEqeYt300eyfCWhklWHvDbANuPOdI 8khfDNZVcf2JpG0wTrbWLf6xp8LTYtNu04eOVIZpiToy2dGqZpGIO3PAR0rTr0TyPWR8JBLvVm1g 9W04hthEbFEUdCiQOtO0NEeKeeW/pFT2EfAj6C2rvucWjkjFkQuP/ftN5/klv8827cxiwfiNPOae ufAfQQS5EuqIcr5+9ijB4B/fZymlWH3/2Kpi0N7Odsj9PxY7KY/M5TpXzHFRoLr978KzIKBeQ62V auEW2Y2apFKRq3/Cds7Z9+I3Qs/MT11uffRyCcO+7B2Jcd78D4XN99HGm6vvo483d/79u3l/+Z9v T/3+De3/v5m+P/zCrp/77RhX/v8iGf++8mAf+/xXb/4Aur/BJ/vWcBZZ9+I9VfCUs2zYHqrXV2Vd RsrQa7/dYek74zvbKjvPWevSIYa+e6TV/Cl/nu1ZBOJtxBQKj3JTDjcZ6Vdcndvw2uxZ+Yr3KnrL xXvWfR4Z+SBD2lycVlRcoL5OA5vzZ+Yr4jXuHdg9fY+QPiP8bi2MbBf4STE2vb4aV5cXVxeXf4XS DVk+I3YjzV7UVZrCeFdndlOaVXEmcr5jU1/mM+jy00i22iADY/cQMoK+w2a2RlR4FdHZhbFaNWI1 VuBO1EaNMVHgK/chNGrCd8/7CiZ5nSP84ux0sE+zlMjP8O+zo6iBnWez8z/4McjGsf66Sw+EwrKp M9/O4Pq1zEXmx/R9G6mYgnz/XdPBPs7Gxw++fCZWN6eCVt83m4JWnz/h/is+GZY7kspBu69/9wG9 sDo9ZcHDiZffCT259/bXcKtrwjeRuTuOW69RJksezx1becaTzTY+N9ro2lM0qRzNKlzUhSIuNbuL aRzR6SZLEyThPFCUZTFSOfAWSiFHhUTd0dxzR6iTHGSuDuZROInihKMpipHOjaIhR4RZHDhenzJt pZpMk4TxQlGUxUjn9jZEKPCl/evUyUfDu3q38m0liZJwnjY9CuW/sEQnY3V25/ahEKPCLI4ekmSx Mk4TxQlGUxUjnwUIhR4RZHD0kyWJknCeKEmLxvA6ZtUtHM22RCjwiyOHpIfXcncs0dZT7k5xbs82 oSjKYiv4bt3PhLJaTFT9rjczdncWpHIelR8Cwf+Lm7z38m3hDShI3wVh/TVKls5nGzaFKjRoW77P 9ro7ekm0liZJwnihKMpipNB1dwd3P9zRDwiyOHpJksTJOE8UJRlMVI50i0qJXk7g7eNqiW3gefWo PWP/9Llq3ZlpOaRoihKMpipHPhoW2FHhFkcPSTJYmScJ4cep929G2iNA28M8QbQo8Isjh6SZLEyT hPFCUZTFSOfFVNP5l0dwq3dsuy2LRHNHpJkx8X3BzLScaTxQlGTfFbt6lo50q0raFHhFkcPSTNCu gsy2nGk8UJRlMVI58ZZKIUeC/jhrHNnrSTJjyGzScaTxQlGXXxLq7qUOZ1o0hR4RZHD0kyWJknCe KEoymKk13krsyu55C+O2bRZHD0kyWJknCeKEoymKkc6ZaVEKPCLI4ekmSxMk4TxqFzDRrdpmlSOf IWSjNLDvG0W0jh6SZLEyThPFCUZN3Jc+tHWluzu5+Sho8Isjh6SZLEyThPFCUZTFSOfKQiS6JaVt FtI4ekmSxMk4TxQlGUHP3R3Uoc6ds0hR4RZHGv7C6u5NpLImScJ4oSjNQu3WpaOf3rJbQo8Isjh6 SZLEyThPFCUZTFSOZ5CIUeEWQk6uzraTaSxMk4TxQlGaddyypaOfLbNoZeDR42m7curqHraTJYce yu51pPNKEoyQ6pZLRzqENIUeEWRxUc7cHcm0lkTJOE8UJRlMVI58xoiFHhFkcPSTJYmSojro7nml CijISgWlaOfNbNoUpaW5u4tpHIX8d0dLkd4HUexw7uZXDnGzq9253Qrdo0UxUlB+6uH23h3V3C/w WlaRv7V4erdetJMliQXhl067tk8t/QtqMpipHOpWlRCjwcape8AoUj1tJoliZJwnihKMpipHPnKm uvjccdqufW0W2084kmL0vE1Es0mScJ4oSjKYqRzPtEQo8Isjh6SZLEyThPFCUZTFSOfPQiFHhFkc PSTJYmScJ4oSjMZ9jbzzVCIUeEWRw9JMliZNPb7k7nm1CijKYqRz6DZEKSXpVycW2jmj0kyWNP1b cmF4pZ5tQtqMpipHPotkQo8Isjh6SZLEyThPFCUZTFSOf4qjjpLm7hVuvERZEdDXVvWkm0liZJwn ihKMpipHNAtKiFHhFkcPSTHWyXga213R3N3PFC0qOLubumRUoc/yaIhR4RZHEwuzyTbSzSZNQutR xsa4uhW/o21MYPxbs7c0KyUQo8IsjiSeooREyThPFCTdzuTumaVLBHapsvErh4X0lkrbFkcPSTJY mScJB1dHdC2o0UxUjnVrSoxa1K81bRpHD0kyWJknClorm7oVu0aF/H5NS0c+m1NVxzZo8aRZHD0l V2SyzSZaThPGHw92d0aKZFSOfUbIhR4RZHD0kyWJknCeKE085XL0zapaOfVWSiFHhFkcPSTJYmSc J4oSjKYqRzrEIhR4RZHEV8i6JyS13WNm04TxQlGUxb2Ub/NUkONuDt15VauEXkaxf82jabwN0r/D CYSduLug/hWrhvQtNs1ELeHbrlLu711I1O480oIklbbeSfuD7Pd0VqvL7bewl0Xv9NJw7ug5Je+I 08I7kvQ3fzfq/b7Tbq39B+aDXv7iSYWNkILdegWY12crZyH7h1qW5uJZJIe4s5BXlnrNJn1ndStu n7GEVMnvC5L9n3Nulk0Gqrk9BbULMRqyncLfyWVbkR/jeD0uSuLuYbV061nSKk35td3K3Ze9eLKY u1qlBkd3+DXIZhecbN8Nu3kliyFsSapklRK9IkqNLuz0KzTRZv7XkVxesJuVSaZbuw0q5Jw9bfYt pKTWurksr4dd3o1ixXiV1clBE3kK38VK8O3Fg3EhWj1vv/dHlFmHWghHcUs9m+3akR1q1i5NyV/a uXOsW//Sqa7zq4uK6mtX1/iXd3p1tjWTAyVOvXvmt8rr4r+EI712XbjrxlrTrq0+n6r7X0qxmuk1 zJ2SwfcLmJMtyEWY9z+P3F4dZTT/w+16Va1vq6E0KzXVtsQuRKXxVqHIVwdW2dYVehquZJVdHJtc 6xC5goMcqUC4uV8euPjbzXP0qyNwYdbZBc4ZHz25IRkG7m100lcouXFprimujvX8U3KDOjj2rk70 /E7t5Dti2dms54Kp7jbTra7WdcTiz1aJp7beX2jZsmmMXSWl8StfN3StvllzTsGmH4lcsWqUC39K 5rTuuzf6PVmF2gXNSV7paJ466tFztqOnt+611h0WcWlXIO4XKciuoGMXNTFLbEeN90ekZQxcs13m 1r+UXMuLWmTflqmLXH1DJSu1SgXWT2Wm2NKsXQrh4Bc60CzOkW2V1NwSLI1sLeH2k11SxkR+eDdx SzSbRg1jZJcwRS5o03frpDKLsAuedcsXULGuuI3mcJ7S6u2lUpfKXXb57UjW1Rmvt+vhX+k11P+t 3+IWq4pbZVcxdPnt3efWeza7FYjQQj611x265+rqjprbwvS6WfmAAAAAArkHf8n00VL8nE/64r17 ttNH1Ha8dRzriFirj+ra5LK6yCxVz5D6HCufgACv6tk/+p37hOfgAAAAAAAAAAAAAAAAK9+37yYh zY3YRUrLi+8hoX5CmLQ/8siOX/lnDHkI/8s2ser7JpWCgH5qN+82nvRXq8O7G/scOysfemHkIz0w 5rliV7U+2ysQNj9urGaSHqV5jgaJbPy/1G1s/MV7jYuwNLDjMSfUOE5+AAAAAAAAAr4Te/+pF4X2 A7tBtLwz0HpFOGdl0UsnAJ3A5b4xL/0ZzXt+9h2MPcmvkbFyNe2fmAAAACvlM/E3h3y3EXLftAVO fgAAr3XfO21qwUhjODfk5WufWT/+ocOM643wA4a5+AAAAAAAAAAr5HV5u8O9UtsD21l1C39A0r4+ g0t16LhHYy5HFn5gAAAAAAAAAArmFA+7hVJhsXSYpw/90xLUo6oLPnb3eN8/AAV/stD/yTjXWuw5 54wT76sfNjh0F8uln3wsany0h4Nn3wzyz8wAAAAAAAAAAAAAAAAAAAAV+rYvjjXhHxxl//R5/K2f eiVWz8wAAAFfK0ti8YuVlY+hwlh61e8E+OYZv6Lw7/IdonD7f8i8O41n5Icxv0q9JUK9Ln9wr0l5 +o0yvSxVUr0nsq9LlPrV6SrV6WYq1ekhvsNSr0uL3KvSUqvy//B0lVLPzAAAFfks/Znid7YucKeW ffW2DXPwV+Zfx/FcJ8LA+bEP5OXEq5/HdzEz7/+FSgtfBvj1Sz76Q6/lmDWCsmPrmBBsfyw3cNCW ffMTFfmnrDuiLcTOKmnZDd77ONpQvuYZEp/7PSMn7Z+yNLPzABXmxF/d1Gpv/Bsqu95m65LNZDDZ nrHq+130cN8/BXI8NnMey3vVYbM4/rHtn3noVa5+Ncv33H3LdY/7PfNt8/Bvlq+VYas/ZA5b5+f+ uwBCeZGIABSAf+uwBPGZA4ABEAK5Zmcw4Vzt9se5Gz9d+2ufjXNmW9k83l3DXPwa56+3HuPQzchy /7QiWz8wFfN8Bt64Tn4K5NT8ZfndUttth1RwnDg4LhXEu//3OHqbHe/C362ECR7A4h97OyQ01tjO KI4F1QLqByYN3/tshsFZG/gZ2QXADyvj+CmvYfhDnCRn3qrBb8/hN8j7HmPy2wJrqC3/8Nr8WGvz u3OODciF6+dcfa4BXYf1v7uS8W9Pq0QOVA6rG89irh21RePKebeq+eoqan6PlwWr+f5tpUVFP8+1 p/9u22vy7Xl/Nqfm2W1226/g4ba7XZ/zhtvs9n1vIcnbNztttt/orX1VVt/p3TT/N8vzWvTRey+W 1/Lsab5Nl8+7euI+n6tvWi/31GyqK0/1bb6a53a/JT7fb1zexqdrtNvUbS0/Pt/pW583x/Rtaj5v n2m8D2+4+nZ7j5/n23rX+um+bZ13P0fTtv7334q7/Z1Hx1saim3Vtlm1tNps64Da1Oyyvbbf564H bbzCuV21czu0rpK2VPu4+fcfN9o3R9xG892dr2VSsr8n1bwL5lqdbxLbbLeJ7sa4uo3n+02Xx03x /Ha6feUfRu63Z11G2+7FY4+jeO7xTqNF86Su8+funtP91/ybyxZ3ddclsq6P5Fpd51tPlXK9+XaV rdwst7q2v11G4rv6laZs61NaP5a4rB/0+f7Nvs7/8+z8zlfkrUbXYfD8f1fVU/RXP7oWibHYbt1q fbq3jG87rk/i2+23TtFyv/uA+H4KfXONm5r/faG4titN7UN7O6P3ayosKpz9Nh08r9vROEgt+B/g y6rIJven1cdq4uFSrirPvz9VnCo+EqPwBa4Su3b5VX5XQcAHfCYfuuLPzFfw7PvQVIn8Wqf2Fc7m CgrV9G6rU427iD28G+DWj7GlrW+tf2fabQuFaIBYZg1fFza6x9Aq3G/5A9+tVVyNcfaLRVWiBkaf Qu7+vsbm3f8luytHT4+KuDWFYf20OGJ+rdVVsYj1f8gKT6395f/atwyIWbNaa0uGJ++uwR/a6pUX iHVV9dqtH1MP/uX2KL8JXTvlM13u4snIHba92f1cN9T6Xhcfbq6i1VwFuZAWp8uXx9p3n9rqmSXh vsq+GYEYbP12ussSdPlsMYtZtDiqfhd1V2326qgmTUtUFAU6Yr9a25u6rqN5vWMRh+RaLCa/s/MA V/OZs/ayxP2u3BOFd/WWQ+axzZMtesvTC80/wVlzJ+5f4OPox+OFm7X/FmxWV+yxAD2B8v3+5guB LYYPm7rf5LYAVqcVkFXrRiK/itzBcAmvt8B74vbFE1jfDWP5jFn38fyz8wFez3VxnnFLFaqrq+v0 ux0OWq+Zq1TR7LNVd7hP9+K2TU1mH6/dpMVesz2wq9jnsbV7a07jIixncbqrQs6LHIrcWnBsA1bP 8t7pU0C3jjW29wk0HKW/QuNVg43W0DjVsHO20SpjcPlti4rd2yrzWswdpoLzoKuS1FA1NfadbsWp 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 ------_=_NextPart_001_01C92480.2901E19D-- From owner-freebsd-net@FreeBSD.ORG Thu Oct 2 12:30:03 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79E3E106568C for ; Thu, 2 Oct 2008 12:30:03 +0000 (UTC) (envelope-from remko@elvandar.org) Received: from websrv01.jr-hosting.nl (websrv01.jr-hosting.nl [78.47.69.233]) by mx1.freebsd.org (Postfix) with ESMTP id 3837D8FC12 for ; Thu, 2 Oct 2008 12:30:03 +0000 (UTC) (envelope-from remko@elvandar.org) Received: from websrv01-loopback1 ([10.0.4.1] helo=galain.elvandar.org) by websrv01.jr-hosting.nl with esmtpa (Exim 4.69 (FreeBSD)) (envelope-from ) id 1KlMt6-000Pvi-Rk; Thu, 02 Oct 2008 14:02:32 +0200 Received: from 145.7.91.133 (SquirrelMail authenticated user remko) by galain.elvandar.org with HTTP; Thu, 2 Oct 2008 14:02:32 +0200 (CEST) Message-ID: In-Reply-To: <200810021140.m92Be4Dw018958@freefall.freebsd.org> References: <200810021140.m92Be4Dw018958@freefall.freebsd.org> Date: Thu, 2 Oct 2008 14:02:32 +0200 (CEST) From: "Remko Lodder" To: =?iso-8859-1?Q?=EC=C9=D7=C9=D4=C9=CE_=F3=C5=D2=C7=C5=CA?= User-Agent: SquirrelMail/1.4.16 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal Cc: freebsd-net@freebsd.org Subject: Re: bin/127719: arp: Segmentation fault (core dumped) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: remko@elvandar.org List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2008 12:30:03 -0000 Hmm the content seems to have been obfuscated, can you perhaps place it online somewhere? or send it over to me so that I can bring it up somewhere? compressing it using tar and gzip or tar and bzip is preferred for me... Thanks remko -- /"\ Best regards, | remko@FreeBSD.org \ / Remko Lodder | remko@EFnet X http://www.evilcoder.org/ | / \ ASCII Ribbon Campaign | Against HTML Mail and News From owner-freebsd-net@FreeBSD.ORG Thu Oct 2 12:46:23 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB4A8106568F for ; Thu, 2 Oct 2008 12:46:23 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by mx1.freebsd.org (Postfix) with ESMTP id 7E0168FC13 for ; Thu, 2 Oct 2008 12:46:23 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from compute2.internal (compute2.internal [10.202.2.42]) by out1.messagingengine.com (Postfix) with ESMTP id CF6CD17137A; Thu, 2 Oct 2008 08:46:22 -0400 (EDT) Received: from heartbeat2.messagingengine.com ([10.202.2.161]) by compute2.internal (MEProxy); Thu, 02 Oct 2008 08:46:22 -0400 X-Sasl-enc: 2MkX8hjFlbJGIgzevviyxLSbtLFeKNDPbZ20VrrT90m+ 1222951582 Received: from empiric.lon.incunabulum.net (82-35-112-254.cable.ubr07.dals.blueyonder.co.uk [82.35.112.254]) by mail.messagingengine.com (Postfix) with ESMTPSA id 3478A31009; Thu, 2 Oct 2008 08:46:22 -0400 (EDT) Message-ID: <48E4C29D.1020200@FreeBSD.org> Date: Thu, 02 Oct 2008 13:46:21 +0100 From: "Bruce M. Simpson" User-Agent: Thunderbird 2.0.0.14 (X11/20080514) MIME-Version: 1.0 To: Yony Yossef References: <20def4870810020216x31f9c0d8yd4776622928c412e@mail.gmail.com> In-Reply-To: <20def4870810020216x31f9c0d8yd4776622928c412e@mail.gmail.com> X-Enigmail-Version: 0.95.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-net@freebsd.org, freebsd-questions@freebsd.org Subject: Re: Freeing an mbuf cluster X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2008 12:46:23 -0000 Yony Yossef wrote: > Hi All, > > I'm trying to manually build an mbuf chain with clusters in various sizes. > I'm doing it using the MGETHDR and MEXTADD macros, it works fine. > Now I'm looking for the simplest way to free an mbuf cluster, since I want > to free the clusters seperately. This function will be given as a parameter > to MEXTADD. > > Is there a simple command like 'free(buf)' to free an mbuf cluster? > You don't specify if you are trying to add the external storage from a pool you manage, in which case, you're on your own. m_free() for a cluster or mbuf should just "do the right thing". Since the UMA cleanup there are destructor functions which should free the mbuf or cluster using the right pool. m_freem() works on chains, of course. cheers BMS From owner-freebsd-net@FreeBSD.ORG Thu Oct 2 14:43:02 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A25B71065687 for ; Thu, 2 Oct 2008 14:43:02 +0000 (UTC) (envelope-from rea-fbsd@codelabs.ru) Received: from 0.mx.codelabs.ru (0.mx.codelabs.ru [144.206.177.45]) by mx1.freebsd.org (Postfix) with ESMTP id 3CAC78FC1B for ; Thu, 2 Oct 2008 14:43:01 +0000 (UTC) (envelope-from rea-fbsd@codelabs.ru) DomainKey-Signature: a=rsa-sha1; q=dns; c=simple; s=one; d=codelabs.ru; h=Received:Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:Content-Disposition:In-Reply-To:Sender; b=DpjJDLMrEwcuJcJfb2fkoxOKFb0stc9NQGdJKOMpkakAdGa6X8FIHB2YDoQDlw5a0mE3Os135Vyk1ec5CKH+Tl7PlpdVOOH5uyf3Ky8I3SZI8LgxwMQRXr2qC5SAD3jTyJo7KQYR6ZP8m1r5/2PFUmrAKcpYj3xpwdu0PTw9VpU=; Received: from void.codelabs.ru (void.codelabs.ru [144.206.177.25]) by 0.mx.codelabs.ru with esmtpsa (TLSv1:AES256-SHA:256) id 1KlPON-000CAd-1j; Thu, 02 Oct 2008 18:42:59 +0400 Date: Thu, 2 Oct 2008 18:42:57 +0400 From: Eygene Ryabinkin To: Remko Lodder Message-ID: References: <200810021140.m92Be4Dw018958@freefall.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="1PHmS26pdpOR3Xc0" Content-Disposition: inline In-Reply-To: Sender: rea-fbsd@codelabs.ru Cc: freebsd-net@freebsd.org, ??????? ?????? Subject: Re: bin/127719: arp: Segmentation fault (core dumped) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Oct 2008 14:43:02 -0000 --1PHmS26pdpOR3Xc0 Content-Type: multipart/mixed; boundary="mgIE+9cwyCTt+85Z" Content-Disposition: inline --mgIE+9cwyCTt+85Z Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Remko, good day. Thu, Oct 02, 2008 at 02:02:32PM +0200, Remko Lodder wrote: > Hmm the content seems to have been obfuscated, can you perhaps place it > online somewhere? or send it over to me so that I can bring it up > somewhere? compressing it using tar and gzip or tar and bzip is preferred > for me... How about this? --=20 Eygene _ ___ _.--. # \`.|\..----...-'` `-._.-'_.-'` # Remember that it is hard / ' ` , __.--' # to read the on-line manual =20 )/' _/ \ `-_, / # while single-stepping the kernel. `-'" `"\_ ,_.-;_.-\_ ', fsc/as # _.-'_./ {_.' ; / # -- FreeBSD Developers handbook=20 {_.-``-' {_/ # --mgIE+9cwyCTt+85Z Content-Type: application/octet-stream Content-Disposition: attachment; filename="arp.core.bz2" Content-Transfer-Encoding: base64 QlpoOTFBWSZTWc2H6VYBi5F/////////////////////////////////////////////4Vc+ +lSBUR9Wl9rQ1rDO0XOydvdzvYdaMqAEiXANoa1rQXtrCHdouQB1QO9uhrZktaW2pZVo7u6N tKrWlsG2ZFSVaxQuAaQgiQgClR983EUwtUcUlMkAACQHANhJQiBKVAUUCqKSFUvQBvu4O7YA AAAAAV63MLYXAFAvDzl22vbrDAGj3vdvbtKGdwVp1XYLfRl8GxL6PikNF3HeHoHreOk4PoAH 0A5qYNnmgZcPp9999ZlDee+QAEfe+r576uPve9eefffb6+Tu+0dbq3dru6vM0ure7eliu9lz 3dqT6e973nbtFru3AN1GaAb3teudncvue97PAAACy3ducij3Z71M+765uHedb1bM65u7Z7QB Hr3YA573FzJed503XjtwC8970AA1HZt11J3N2buu2KKFKbtsi3c6Nq2u26Mudut3d1hbu7uu 13WW5lupcy3cUrdnLpadwcpSaqtczdtWRzndttHdm3drVYdrt1aG2pmwzncjdyLto2YslUZZ O7s6+++757vj31gMm1PAAwx5mOAOGeA33zPE4tsZD6e3d3twAAAAACXt7htmedzvo7trFG93 HRT7hque1cJ2N1j74Ao7AD69yc942kAAFJArvPsHu8A7uN8AAcma0eAAABSlCFU97Xs73C5y 6999730D6fR3fcl1u5vvPg9ugN9mpdehzs23vs9tnptwA95re83B69c8bcvo7W2m+59Gnpns q1le77gFPmfTte7EgU05s8jc1sGtsHLuzjc7awdHdqF98x3X172H23rp2bl3Z293d6d1q7tz O252BZTLuabS7ZK1uzbc53adu7S+89zCe2ynz2dK9t1rvdy2a9m93dspt7NrebknJRdjo0Ud saLsUbY0aOuWbzpo9d3d1r0PO3pTp7Z06c+AXr1IgCz77cza22utyzpztk6G97qem6Z51kl7 PrvZpezsy5kvTpyV2z29117zylLbdlWbLvc7tvdhooC7GHXjjSno6OrWpc3uZR9b7M7M61TM H19el7XsRNRATQaAAAAAAJiBgJiMQ0MGE1PQ0Jj8opgjQDIaAAp4AAAAAAAAAAAABMAAABQi IEAmIANPRgmgJkNGjTJkY/UgNDQU8RNAEJmQNKep4TTQymmamyGjUaMBNNNPU0aTzSMAKZqZ lT2gGKemp4FPKbFNPJlHinonioNTQAExCMgICaNATTAJkGhGmk2k2jQDRMSfppomaNT9UZTz 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 AJ+B322JcTnHMRNJimIC27yPwIDi9JLiujYjb9TKabIhCUjhNhVgzLNEg7A4e2zhQULAbI5w SN2GcKmoO/MN/F4pDFVdkCej+DXfXt/QV1aLAs0Gd2/b8Xe1bzteiQ2EIl96qwR3LF2WH2+T oqurOLxePx+K4TFLBcRpTAOggkmb+vt/NP/W977v2X5/S+jInqt2eD6QghtcjqGxBTOvxPDS CE44nvtDAoERHBni2PYu6+5pBAGcSfXY3cWTDolcpNtuGLFEUYvckhm4G5p8r310dqXZZUiz yjZTDlsVUiiqtdjFmGD7ktQzauWVYwVEWLaVCAkEwJ9r/S8+9m4DCr9x6q43lKMBIgkr4LyH wJOwh7BYSpm0DGrFTw/xO85/1H4/odZ2R1iyeLusUQZbKAisQFUiMgoKCIqb7By6KZELCLly VeIYnB86raaDN/byuF/+eXnMHBv8Hv+RgTYAdV8NwBRhle/MySQwOcSlQ580yaARm0zSkOGG 61s3nuM1uZ/a+Jj2+z22jre28UwwMYA1AYLINIzanrVkIvstunW1wrce4jCYMKFSJwFWKUlk 52OstjWs63WrsBuEVCMDERRSDGQgkIOYPW4LTbVkZPvttu37r77AalDvslI6StSxbFzm6dJW WZLqXZJGQCKaJWyjWUqTnZKdso/d+4UyyTg6t5KgpK5uop9p7baottPSTyB1LVY9s5zpSjKT pcbErTfcFYS7Wp2u67XamTu12u12u1kkAkGoVVRRSFCUUUUVVVVzG70906eOcx46d5j2ycHt VZBjoxhZZKya5zmt7nWRhASnr634fC/Z8zn/F7vtPcCUa24JwzZL8ccccc2d72MTKxzLG2T8 h7rH+33ifGBSVKIvNWU9qf+H/7/y7r8T9v9n3v+fI4vqvmf1SlKUpSlKUpSl+n9H7ata1rWt a1rWta1nOc5znOc5znOc+bbWta1rWta1rWtaznOc5znOc5znOc5znOc5znOc5znO4qUpSlKU pSlKUp5ClKUpSlKUpSlKUnOc5znOc5znOc5znOc5znOc5znPbpSlKUpSlKUpSlJznOc5znOc 5znPugY1KUpSlKUpSlKUpSlKUpSlKUpSlKUrSlKUpSlKUpSlKeTpSlKUpSlKUpSlJznOc5zn Oc5znOc5znOc5znOc5zrxK1rWta1rWta1rWc5znOc5znOc5zrSlKUpSlKUpSlKTnOc5znOc5 znOe9SlKUpSlKUpSlKXUpSlKUpSlKUpSk5znOc5znOc5zn/s/irWta1rWta1rWtZznOc5znO c5znPl0pSlKUpSlKUpSk5znOc5znOc5znb4PE1flpx6M78M6XKUDZNlTCllXm/mobogIMvLy 8vLy8vLy8vLy8vNmzezpSlKUpSlKUpSl/G5HjutIwAGz/lr/M73vfme67L5Puvk/4Na1rWta 34rnOc5znOdB73ve973vc5znOc5znOc5znOc5znOc5znO3nve973ve9znOc5znOc5znOc5zn Oc5znOc5znOc5znOc5znOc5zove973ve973ve973ve/d9dGMYxjGMY+v5vlh+X8b+D2fxfI+ q/H8Lqta1rWta3/H43YQhCEIQhCEXve973ve973ve973ve973ve973ve973ve9736YQhCEIQ hDwtrvjEYEQIjD1A2+xyH5947btfleF938Xzn934PyP82ta1rWtb8lznOc5znO2Xve973vff T0Hwf3P+nwPPe09N+UpSvgLWvL8X+H/t/+/j+y939z7j2nV95GMYxjGMYxjHxH4t/2/fdGzD +Xsz8juHftD2sbZ4LlFFFEjezPb1GUy+r7rWcdQK7O71r4LB2bRFfuXkpJHuqk57uyHvSkr3 iwojhxZ1sqUvu18rjcPK+EfQ0GTlMiZAS6iAkxk4U5RIlIgeeAS3uV7135E/PHzCXKMRj9nT JeXm88/WX18pZXxMpViZPl5cC3oDLl0ZxVPVXtRm3Hc0MaO9cRpnF3VYmo1OowVoVQfXIjPY 7of483CTR8WdSd681WjQmsgFCGMQ8r4mLpiev1Xz8ejFpNZocbPMDa4Zxm3Ka9RWfgUBwRYq 3M4TMwfelqut2Zus6zWyFvzHLY1+lyvraBdnfefPgfLmnfmz4CmxaXJz8tFfx7buED3bJHOO ElLV4ZDCYpnmg3lLQf1pjIkjmAuL1urVbZq3NWrVtZc7ubnpzswxGKbOJzLTBLCIZbEajk8P ya8A/DDDBpVeMnLPhTfiA25N9btg7rcUPuXddwcgusykbLSBhf7Lh8LXHepgbRx7NgsRbhTC WGDRqLfH3iylbVnJ4t/MI6QGXwbFeah3BLvXwPOEolPncrOP+zlPbabDzvkaLyNz5/z86Cnb ZABeMVg3TeqxZmO638g/J7TF5G7/eVHrH6iI9f9HQy6385nSRgaoxoCTXN5+R8T31nM1Gnsh Rl7m7M/yQ0B8do/EYAKd2n6KH3zIdowK+lawWQw/i49V99kN8FXnsfT0CsUD4doRRQmX9wlN jMfMRqCbMEWdBDpFLO4TBpT6g11ioP8Wd6RixaLkkEzGYNioU46TDO1ZNmLCWhYRUjJWFSVB awiywYKTSlcLe1Suc3DRbZWIzFxioLbUtLbCphCoGEcUDGGgvnMkpPZZPT41JMfh2YTGrFwR LZwuBIpMKgpctwwWUVJhgsMGOrndoaaWImjRjaYQwaUKhVVmMFFMRKSIiAG0LBumQpec9fwO YsVWL5mWPaOn7j4Mvkay9j77Ceq5XRr1WDFueh+1BpsfGZjwoHdlkAzhuhplVMk023I0rmMU FBzXX9jSrn/IkweADu87ZMocNmtqX4z0ARWOy6HbyHiu4b3HcdjBIBGBCAILQdZUZvsKR8Cs sfJL+HBCCTzrGWOhF0XnFxx33GORGF/HP3HjJ9lCHjPG2zv8bfmyOz0Bw43RQgGBPzstiU5W VpSlLK1t9blVcSZ3ObOs2uEqznStrMozEAREQsQhEEClHptbau2cpWW21t+H579b632Phe5v 5zkxqFwBFKA5ueyhde/7LFMNlQ5iY02fyWywjU1QBxwECATnnIAhj3+BQIwQCIOMDhBauHvw 4y28Tj8XjWcedXcfeOJKZHx3AR9//f+357/n7T1ec2WUskVW257mNy52/xgxey8H/j0PM/rf bu/6+17Xv2towQ/p/mPH7KgARzqWuf4tnm8LHVAw48w426BmzIuIS5Ts+DBUfPNlaG7IQ4Ck WhmQ9l4aCABtFMVQvTBwZTltZDgAisX4o4ssdmFWlTtIKAWIHvPB+pzPhcj+jxbnw/4dfjaj EMHC0u93u9oyDJ5/Kmy1QeD7rT0UiGlQRENjcBUNhx0oJgzSzzmLE20ommmCF6vvO1/jfU/N 02CxWW9i1Jl/gSns6DAmTabhQkMP6MMwkv+2iJJk1krBhvDCJMgJ9iQwdo0gLO7SDzCMMg8h Jy16hB+qADDWUqgDSlpNCb+92no2kzDwoabgiRlxODGDErEyxLHGWQxMb9JpmaRkuDRuJZnO aQzOZcaZSpidpjE3pRDISg3ROP0am1YQgY1uoVQ0gO2eqwE1yahDBiGDiVjimtUyiiaijqs2 OZBcVQxgpmzgukxkNbBSCheV5OmcwkVnuGxDXt14zlkNDFBN7YcTs1dI/rbsaadNoKAo60sE QWCqsUFijy+ExDDCLFILJBSP+z1f1X1m/9rf5GzmVWf2/P7m7wGVrGMWMlhbnOhEEMbb18ii UP8L/WHAllTzr139sg25xeb4rte1XXxT4Q7bxXiudXCR+/kcGAgQMYySAMJRskl9lls52220 eSQ1zbHMhBsH0jOylIAHI2n1L287pezs/Np8Pf874fmj2OxOjdjsXux2Ox2Oxdu3YS0OOqbq xYyK8SLHXeR4juSHstjv/z9P8vxvu+bosjex/MACa8XMToJUM9oUJ9sieRfUgNMAxo8n5eXS yCblcq4crlSvKwT7p8q2TBXxw5Nt5N0yeYfIjN5rNZjB18DwvS2NT+/v6F/f7bAcyAgIB/f5 h/zj+/v7W/v7bzH9+fn5+fl/e+3iLrraeZB0nOzDhw4cOG4W2Vllnyy0pZZZVXTVVVVVV11V VFFFtrmbK8EtFddddddeG3hw4cPbXXXXXXX211114etDgw9raiRIhvpUTU0kjkkkkoUKFJSl JppppzEkkkkkkkkpcJNNI6RFmr7cldddc9ddfdiRIkSJEiRIi6+0uuvtRF1111F11147zf3t /vDPt57xvNjryZG5IkHyJEiRIkTJMmTJkyZGhH0Y8KPHjx0YsWLF97HflcqKKbqqu+oooooo oooopnqbqqqs1ZZaAtuw4cNZbOnLrLbiyyyyyyyaab1NPcUUU3FVVd5ZZZZZbdjw4cOGjBiN 40mHDhw27iHFXXXXXXXXXXXhw1lllllVUVVVYqy27vAAb2wZI1XUXaiy40aNGjRo0aM7fyI8 ePnR48ePHj7cePHjxo0KLFixYsXcjBIlIPUc/ZjRo0aNGmbMiRIkSHsiRIkSJEiRIkamxJka 8iRIkSIysaM9l56EvOlRIkRddddddeHDhw4cOHDztOHDhw9naiRIkSTJjRtuPHjx3R+nDhw4 ayqqqqqqrtVVVVVVVVVVdZbWWWWWWWj7W1Dhy0tGBLbZyC666C67pddeHDhyoaymammmmkkk kklKTTlT9dKRnLwEU1TZTdY9ZaW4WcLLLLLLLZyyyyyyyyy2vLWWlw5fjzOn2xe+sAZ1qYGH FOLeaY3Wb99ves6V+/ZwcLcHQEGoaTk/dzHiqsV+9RipnSSduxWwz7KAVlZWVlZWVlZWVk3L W+srKx4dyPEVFfA9APU6uevsz6Owkv4pRAUx4AyCB+2PQniQ4ThQXH23GQXsWuYmLFxSZ7tc pA4/bWfjaNbmnSE8upeMVv8G54R9wkXuvJgsLN43dfGZ+FlCPMBBwMEedBQSDdwL8/Ze1zsD A0d3UXSbv4gS4AzMde74EOS5BBBLGyhDj4Ghk+/VHTOV1Go2+noNwipg0u3+3Pi73vvIOeKw xhiVSYwbAFiixjFILAWKAqgoKQUDjWuzYpP14xQ0z4fr/hev8v8bybuXZ+X9+l8bVYMvDXnd ncG1n8ZPz2em4R2bJ6gj3GL3H0FM+DLVXuLdRRO3s63BSdq19B6FHfeg7+Hous7/Hv7/Sek9 JIZSEDFOJ2pg2MayjOla1skQkFHomTmNnZScbJ0pMCwECLvep3Ozwu973ve973ve973ve973 aqY1sAc/HO2J5z9v/1vOD279gvM5sUUBE5z3AP58j7CO31Dy/e5aY488885J49m+Bmzm4l7/ 7ZgEzDzCRjXp3nuw+R08SnULxHWYYGtzwo61A6gjOo0Z9FWk8clLRKTihCg0HiIEQiiAh3zP IRANGINkoB2Xu7u+tN8dtrr47EYztan0Nafxe2kxX0fpoUWmmtzU1LDTTTTTTTT7SCxOM//d D2H4fq7pAngBP/XD3n2mvivGxZr36XV9gaHi08tMiHxEomnQhPGCJYLOB6KuFtJ4jjzlubFK vDcYhZ+u1SAkAWQWKCyCwRUFBSQftfk3H8lkJymEIYYWFoHuC7WdMHfH5C33b7zedRLNZVbq zp832+U6inUm/LSvLlqq3Sq8sjZKyeSiCnYpzqQhOlKUnS+g6XS6XS6XS6XS6XS6XS6XS6XS oDXbXx/s4lP3O1sdRY+Jx80G8wL29QEBAQEDAtr/AwTlh2WFh85I7zRHnvMUqVsYRaFCInkT F55xaBpmuYGoYYQA+/giOu56Vb2fsPL+R6Gmdo+ZUfZ5c2RTp06ehTp06dOnTk5OTZ2oYkQA 52fjyNd6bc7l8n/1fiPr6/CWXVq1bOESAEcjgZxCLajjmxBg+1eizUJqZowKjinhXOJlhhWV 6+cYLpQwh551Oddw4UZ5lhjVS68YNGRRtAP4Yw6TY9ZH8+3HvHtCwK7fOnAQQSTO6IRTEONr HkGQkJD13CcIwCU7kJApBEkF0CnHxrikLu1NyU1yQp4k5kQNr+MOHkns5lZri8XzjTLLZjl2 bsONtIx9NO4t8vb477Pc7nx/c9zzrN4EuDHtsk+cPH+RZExgLwRlZTUZdat+6fZj5/mP87Nc vyh+etWraVatWrVq0ytWrVqz8gRihpgBSetnPfnfj4/NjW/0+9to8bYbU8KZtHttrC0+PU9P qaFqlrhRNMoZc2e8rmB9T0+zZXRo8SXCXFy/vy5VwiYmJiYl+iYmJiYmJiYmJg3p2ARI9A/n CB5wiEBPyE/z/P8/z/P8/z+l5/n+f5/n8KNs8ZhyDRiMRqYyOJNH2mEh9g+MaNP9VCVA8EGV mpkFA0qHhophuMT8b60s/V61PVpNXorV8I+mx5/JX/Cv874WTLF6NLXlSBC2R2/JkUsTTbG8 WqUkMa3kZbIlHrWfO2c7HX0Einp6IPFQAHlPhzJkwhofv0j4GDqeCBZ5Sr96xrdcazlPaeJd cA/KQNY2IadmGAHU6IGdRBu3x9fq9bk66PXdwivtXSNJp4tPFixYsWLFer1eoO9Xq9MrO/W9 8PbRBrsdH5+1FM9XkfamTAxjbOCIZT53k4LyPjiTg5iMH7Z6/fbyW1vBOL7We18ubarLoTIw 8woL3iGt2OwDPnbi2Jau0d/reJzu3nYPV9/wanx9LS8HN9kYV9/v6Ae2+9o6WpULUf1KlSpU qb9SpUqVOzrZpAqqHaEDPnCjjTz/G43G43G43G4232/G43Gv78t0mwQvzg4SBUPhkBw4QkQi weSGLKbtUWolQkgSNIxZqKJTog2HWjRQ6BInUpGszqd2mRSZEnXvKnahFKkZ9xMVVzFDQztW rCy5Kddlk7JQPyZSS4Btjh88cZXSJtsG02iSQfQ20qur+/OT/s1c8ybJD/L/TlvEsEBVvidQ zMm+uAKdTvLgH3wBxm53Tzur0+q66uB3gt4DczCYTSrKVq1atWrVq1atWrVqyq63cfAhZn38 ct0HwcUmPTPdvyKHhoEDpC4dC06zyaBn3ncokQpKNlEWLZoCdFLvHhP1UPTY08zM/tv3Pibc OzmGgidC3jg0TQA0013vmn0jAmzUps2bN2Js2bN05s2a+0C/3A1HTfLQrZhbPLVq1atWrVq1 atWtNjAs54iIgACJGkQOECYc5tPEDnpCHIgeQ6iMgQF1/A7RRR5J+wYgbxi4SGouaiWw1Grq UxoYmwpbOZZ8aX5OepknfvxI1UCtDk8nc9nyvQcb0uhzcnI/5Xmvp8/mO1XpgVFalSpUqVKl SpUqVKlSG/CHo+kzP2/ge5/9b+194A8cP3h830f/Z/196JSiUpQ7+P/bzuF9S2B4PZdQ4Ev/ LR9jw5Aeb5x/bOF0EfRBLogoTjuGQyo7m9Vi0W1SY4AN/f39/fQl7+/v7+rv7+/v8Wln53QK ToG9DoK1auGVq1atWrVyb4AEZmcBEhAEZ+EuHEgEU4jwJ3ZGM0Cbo0CE/SMUaLxcPVvbM4yu AkwjxWcSVdwnVxCgK2kx+vfL1zJB0zZl2IQYVdamDWFqWr3aUq7ZbBVeXb8hwFNMrN6HEWlD xaOv+xQRe+ZSlW1jJNAW2kkYGkJuXiQArEgsAGzsvGZ1QojcwaQzSw72jgwwAIKJE4a/tTnA z0NZgTJSSsg5w3TOWQn3n0Zpgk/VZNDqUWeb6H7ga8z3zzVeaB0SgABXRNZpYYjmBaQ5e0+2 Z+IYtZAUIUB8egF9hkUEzyjstJJtJW0OJQBBA4R7aXOyShAXL3Yx5rzhpslLyodA5Tou2ARg qloebWmDwrTBIjNOEByzBAyZGmdXbr4IugXWUTDUsGwvGGCgu2SLAscqHVZTOrvrcE1bwGI0 XbKHUUMWsYNh27SMjJgCgazGakdiTfAoW3doMoFLmddp2sTk7HfYk7mtvvAt+Brszi+BYJke KeZlVxNVxNhxOJxOJxOJe73e73e729EcnxpCJGCEIjFC5uH+xfS8Pag+IlTM0ADOo7VqB2LI RvAVAAH4eehBtRtgOUPl8Ed3Ko1faX8I+n/Rfj7GQOxHB/7TnKc5ydfQvv+1XsyLGy9ozaAJ fXxs11LVEAIW4AYkGxlpRGAJ7IEHC1L16rJ6e+7lo9MEwQQ0GXv2Sxsn/5f+ZsNptcuRyDQc e+d5s5Hhaw5q3FjRbtO0+ipLBEwMQMChp8vMcAHlKZRbdb/U8EHjxzhDEWDixaELFixYsQ4s WJHPJoEAtk80vwcJNLFKIIbqjmDURinnETBGUyqHOfnZHO53A6Lnc7nbDlfPdB57AYjW00EH yzmyCVCgazsuAlz2bCscwaae38OJRDLZl1obUJc0EZPMa8GJl1atnZqq6jVKVKQaEGFTVMi1 ZLzYyhNfBqguXLktsVKBtgyyFBomkiExIKbckUV0SRDhhZTKdFCJK9qzEMQylkSsODEsROKm 3BYhvQobd+MFu2nNTpyO4roHeKdzHYYMnFSmLELZsnJ0SjbIDOzbBIgEk1zuRBo7ubIrjPpC RYx7dTnOldydfjqToTXfmhEFhhwjbQpRTIJghA/xW0G7oHuJsGylIUCSoBhmGKWtWTnsmIp/ U+r14+4/a1HPEQ38h4Jc/TtM266XwDvGdVGFVLwA/3/7eGf8JunBaT2pBhW5vGmlBy7K7Nbt zzClbmIEPIQwz7TYJBT/83Po2oTTTTTTTTTTW+01d2rFDd4OOw810mX0WLHpU0FmQvCS/ANQ TUZKxusujjMwgOafBjkRP+0aPLQXDjkZNb1d5ZDb3BGFXdyNZm8qem1ri81gGv+6uLLhfgl6 c5/ZFX26DrLCPeDcAsQV5Zu+N/8Zv/TWysHrHMtm+EstHDf+ZTZOidR1+agDGgIBHHCKEUgP C+8r19sXxK9evXr16+MjmcoCytZ2OEwhVoDgARJWCdfDm+B5Vz8DyfQZyEU7dgWILFHyWkMo MEPnbUYCixQqViKqQVVFkRg2EMExknnJL6IBI7dykonC3EoLs9vp33XXPYqQ1oYEAsSiySBS BYzo9h/69qreRh5GRkZGRkZG8yMjIyFck1aRo6WLjMhjejM7zP6LtS23oeJwCXmplwHVcHgY bCHnnnnIAW83mBZZ8LpoQV4Bc5434lqpqr+K8Y35uwl8zlN1jRGs9f1P9Pn9jDyp+6U+QU6o Ipg533+mPSYdjCrECf5fpT0khISMn4/c8b6k5aRMAA4iRsEhACrEgEq6urplD9Cdnvuz7Ps8 TY9n2eBB6XG6yQoYn1sQ0A8MI6hpGjfXNUansoeU4Pidn6jmiYlW0IbGmzvtlEhjrgjj9vL4 fcEvD69pqQCpYn8asGuz5qC24tiq6urq6uPq7db42rq6u4VdW0rfJ+V9twfin/u6RW4Yt3hT 70hsry539FEBr6AHoMS8iAbuL1aL2izjrUByMge46J5nywCBEHGnLhf+rYx2mc4Gj/bbNSuf 0vWH+WkdgWx+dcHfh9qP6vC+NbyckpeVh/og5ATP/6vxUbLXlH7EiEH45j4jOz2zO/PCMQEY mK88dp3jw2QtlK4ByRW1AB08c27W4H7EDwPSIKH9nEaK04K2lraetra2tu1bW1sZWxFanIvB pzx4EpxA8SCI1YkOERfv2/R/Q495mn5T3jMCQdI2EGsOyxZRI+ZbQiUKiwlEOnCABJdASKBD ugnT8lU2vlJ5Va2AkmDuRHuSAhnrnea/lxI2DLr9k1K5cv9HQbB6l/y+XegG8bIwISFxPUa0 ERArTmDCCS6r/G9XzXmer1er1er1er1er1W9saAfxdAEjiJCNggeKFyl66Os9P8PmzwyYOl5 M7v7hkNFxvjWQzcxuA3aAZ8n5L9l+NrNXtPp/UPnqM8i/Z/2OON89rB56r0LFLwrE1vf/oaY dp95eAuz1GHhLgJCeg1pXb9ssWiFKIbs1a/RcDppCZa+j4Ydqr5C8ImRErV2ShSPeIpYf2Xr jgWEkgbsiNdK1AlZ6tF35+YkGJ3nj0Tgc5hNl1lHX09f1+/6/r+v5Hr+v03X9f1/X5uHEiID SNaWWRoZ5mhgVTDQuZNYTBUVQJpipw2TIz5AFJKrM23+mbLatSQad3LO15obvU25FppWr8A2 BaaCsdTodeqt25osdp0sVt2MvWosrgKWQ+ueCuEXWXGEmZ9qEXGX2K9KFeYWM2I5VRedTvxf u3bl6obDau8yllDuWpS+GxhUQIN8RSdj3pYXZ3HulrLbu8lEQ9yxPSx2rItWwv1CQPOEZUqu Sx5xGxskmCyWQnM/BWce1JgpgxIigGYIFjI26k3zDBH1CwTWi3my+Z08ZXBVW//M4g+aCr9a 6lwZY9CgCpb6mpqampqampqampU1NTMM4/l6ltzc7v1rt+UFA8W3S7KqxWgxPHZOj3Jfu4fV dC/DN8yq1R4nuOcrPmNNjY/nxBgYf6Pp1gl9cn/zQl7L2n2HqvZN8D7f/3Of+4JneYVT/FDr KIfKw7LRJMwZXlkpCMogfMhA8b6pCARDLrj5VISCV6r6x9dgxXs4belAG0tYqVtg/pQB0Pxs a/RRqBC+495BxCMQcI85uoeXnf2jyaD/llpLXE5ELCWCEGnFhBXxAdmgw0aI/f7DKcPg4JFQ Qs4Ux+UWBBPAP8nU4I/bIHK67K7/JH9d6czgftRc5CsdLHjOZaNDD6U1RUy7DmUAk5mg3JSu x0Nxykr7WPCtUwnqm1WZ7QlpHsMu51rGP+7RFvdqjcP++r/w5BlFexNynkPlqoibAQWiz338 QC03ua0tCr9DULYzck+Tj7zjvbxkoGc2dGjw961NNiCJ71yMci7kK5O0xFzELjlIr50UtiWI hkIDwes4H8fUen6N1sU2LTLrDhSElbanQPpYMwouWSlZoopvW8da4SWcwbBIbEK1Vqddr5/M t0yz8WWHQuR7Y0pg7us7c5GrqaaC83q+U1q6mAiEAPdWP39X2fxCtlLp3+tw4LD7dfkWjI02 R6nU+R5Hkcz5HkcTyPI6HF1WE9/5SDimYcj7z62YQMf74jykR4ThNoEBEBEPZkNEeecgPIIR RwCNmnOB0ECEs7Ozs7Ozs7OGs7NdZ0kNZpwDGiSTFpCVA5zIAA3iAHN7vKcy67LR0OpmmKYk GjiICdT0CAQkyHktno7SNrRAIdXbOAW7nNjLrImaJvZI7LERoFwB6wQU7Enas8f06gmxHNNt yHfB+h/l6mPpjf3fym9gnyBW+w3FwdejtzbzQgxMt+J+xl71ntsxzOb+/8bNKMc8b6lZR0pf 3FB0ACMcIHXwiJVh8L5wUmhmIr6s6iIri2klpxILF92j7pQ8qDJerrI0T69nFMvuHsqeqvRO MGLgclbbaklFx9WO5abrf3ltM/mkD2ZuAnJOumU1Xd0gIGBOHR2ihqeBh/5yU2PI75s4e6zJ DJhlYMF2ygvVE39/mpmzxpgPvkWxMYPIADWe7J1iDZLtzPPCMZophlYdQiXBackPQf5RZhsc 3hdv7Ty4p7vNotuWvLk2LWFvj6EML+05+OrhaxVHAufdsUNWxrV7+x91wmfibyhvJz5UaMs+ bfS6zYv3DeSLZ2AS+GYIwz/qV0T0Hu4E8N/R9vxmb+Xs9dhR4mPz/uX7dZ778PUvww+ruufi Vm2cZ9OyhG2V1Em4ul9a9AAAV3G06R68hOql2P6/AGjd2/gas8+C8iIp5T9Tx2ZNvGPn4GWz 0+F8zHsNxL95BtvJt1TiSsK8Dcy0uZG7U+2ZERmkcH686FqVLzHwPh7nofV8IdD8HzSHCZOk 9PpPhjsfrNDguXT58TkFurGULVwtY21tbdaqqW1lbba2rY0bd5B7EAgBBrZFkikkUkWBH6ag Fe0fav6eafXNR1UfRL/xb93DMYQRDEknNll53iBM7H3CCRW5t5v9EX880Fli8Wsqb1i8Xi8X i2rF4vF02LaA5XSnKOhwzFrOQleOG3Voh5xQf+OgfVwfhLZKWev1f75SlKqc+x4/dXmTHYrA E8HP1Q7VFMY8CX2hYYqilc3qw51SyKaZObrD6Dt1E7TIZM/N0tPS5x7303l9yKa3vees/h9H sbf3PX+Wve35Hh+XZ9kRF53nBvxgHxt2gNHkZGRkZGRkZGRkZGRkZGR6191hbbYqZEDC7r+c XA+2tdGoqiPZeX/u/O7HTX8W7EBZ1mEH4/tuDTLoMRc4jjY+2hpCxRh88hWcwyX5/bzcCAQj CCQH8SEz6AK48650lxpJekpKSkpKSkUUlJSM5CEb3O7avL6Jl71/4ewvfN+TtrwnPt0TgpHR /y+9fQGadnMwtIpRAlDuHZDaRVJFTeTzNcPq+o4UtCQOi6IIHH3coZgZO+R7LIDuTUZ5lMHC v8LhcLhZXC4XC4XC4XC4XC4rCIz8eBpDGk2m00hpsixZ/NZYwEYyDGDFAUQiw/C6x1sZYIrI ertZ5D6d1ZL06FT0rCf4OpkwCqJaWFqnN2QIREfWN8dSc2XzxTbnoAOoyfb/WvcVh4d7h8Ph 8Nlmmyyyyyyzm/3eZ6ZXx/cI/k+RzvTyoHgXvBrmmmmnnHHHHNjzzzz/+7dBBBCcRERERERE RFKhOc5zlKUpSlKUpSlKUpSnOc5znKUpSlKUpSlKUpSlotNqsK81HQAPnJbrPaX/PH0Pf990 todGO8Q/DP9fvYahCcTsiacnJycnJycnJycnJyO99ftzuQepxzaNac3iQbwdOnzitAeQJ04j Rgr+T22MXTGEYwXzVKw821DlsbVF8o9yd6f8EzZNc20H7mFZ0MB6D4ULhg/g+dPKwMiQcji7 jdcTicSenp6AZp6enp5OTEDMCBHLYOcnp1eFfM7n71y2MkR0OUOZBIJ54SBwTevQwTREMUGv ml9sYQV8oLhP1VX2aLVSNBP8qqzdtvuMsIPcMMRS/DsztJtoXFS9RQYO46vCX/abf1vqe79x +D1uLmr/o/q8jzfwed+H7n46tWrVq1atWrVq1atWrVq1atWrVq1atWrVq1atWrVq1atWrVqh Vq1atWrVq1atWrVq1atWrVq1atWrVq1atXxAERERERERERERERERERERERERERERERERERER EREREREREREfYsMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMCIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIj+0wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiI64UwLVKTnFAwpDxJbxquOcCLPW48CJBIT997F2gtCDt niTEJEg/UcTNSEO83fE4nE4nEqsFifG8bAsfFQQ0uJC3XPTJdk+c5k6Lf0i4X0fw99ZqaYbb SbZLzNHhajv6bWot0WqOA7URfav+Ug5lHbMM8RsDZUotmHXfU5IOUGJRYN0n3aTweDweDweD weDweDwadrGsd7npeV6mPldvKMV0GYZNHBTOaPQoiQWDm41AHqYwGABPA7Lbb7Ddw2/+ldFB uW9evXr169evXqF69evXk35CZxAJ3RhDo4ttivv0bVVUPFaxfYNU1Ng+v+yLgBtZ78zKUhQx t/Q9DGtq5mmfsIEEDGXYRHgHMSQABxmikcQ60YfE0DSgUAt/4vs8HmS1atWrVq1atWrXHatW rWr/Bi1DSvrYB2BLqMx0Nl4Z+jYgYswIBDv+7H4NiXK/ngezuaTbdXXaiV7tVtIvcS0fz3Fw CfQW7uPvuRubAUsAluB4ACIQDgSxWZmYkaNiOODdiyvig8ii5KFChQoUKFHsu18n2XsvZfsc qc9AX+Wz8AxVD/rJ4lKKj0blkikgPsJWKD0sURP5t8tMH8in2+D4DjserfaJkEEBUiBwqxB7 EDw3z4JIMSBWb3hngsWLFixYsWLFixYsnVixsZwI3CHqtwOR75gsp+r60bLpxHAdEwRsI63R 2ZVE2DalbRA7RxJ2FY5qBra9uRwSY6ZipmZmZmZmZmZmXSZmZmZzvPd2zIsy78Wjh6+9y6Ps W702+I/d2aXoHkbDHzb2uQh1cLdFVfYNfg2+X5eJ7FMqgqKDnv/P/D+D4PqNhsQEMFQNZ7xK ACbJAE0AW4AZgBAuBpz+d7uUZ1qRkVTV0VKlSq8qlSpVExCp0e3kmLQa7U53p8Hf17nrYd6v XVqqqVt8tDtrGCsTzzhCOh1kbFJ4pH8hBTGtUipnFKlSpUqVKlSpbpjW6VZ+OJeHzhv8b/zk 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 1+082K5BAEC+OuLkXhCHvw8wyepCeabJiIxJuQmDJ1hamkyeTyeTyeTwGTyeTybeDa17ptuu Z4z4WA8wd9V1lFmPuLjwLYoZnl4wP5bft23GLtyXDVtUolKuMYcFGVcYxhbUcYMOBpUqVPmL hyUkSi6hyYAJMSkIhKRTpNZU8Skh4SnOGec3IeUIgkEvROQXqeZiE7ohJSmzUYkFEWW2Wa8Y NQlUjNDXnGvWaldVyGEVZFUlRRtG1a1LKBoOc00mc0RKiDBCKBCKo4cjKd15uyOnx75zLNX/ adbDkE3gqZxD2v+0H6fx5fFL5NubKPifNyvydCQFIruQEgUV5KIP/0Qyf/b7m34/jHWfu5/6 to0kebp6F30V6Gbv4kt/+GxG9hYC4IPrdfwofOaFeP7zxPiiH4wBx2TIAziIAOt1jd7wyoRt yI8EF3OuDwcxAOOxuLy2l/VhYWNxsbGxhrGxoADl8SAeVmRjqjuXs+u7nue57nueS7nue57n ue5xcRPEDz/oyCeK9kuKmoGmfSnWyY1MhsrYfbZI7PaSIRSEB/FaDmiaVvV5ey3yondBBo6T vjJ+WpA3Z22nKQcv8KJe8nPYhQ8nP+Lozq+rRxlnru8s8FhNUP3ZKH0cBf64SRgonlXv1Nr/ DzFCpZ5pkNstMs8r9HozmfzhA1A4KUd/n9/3+n7/v+/7/pO/6bv+/wWCTgDcIBjxA6KtdZXV VkrSJBdhOEYuCRO5/iP/qDy2kTX64cQkBGKNCi+Uy+Wk4AHM88rwki2/pnQLnh2eD/w/PYLC YYwIh5PqeT7Tyfk/Jz8/Pz8/Pz8/PtOHtElVK8pV3uVv09yqa66+5dloioqLZR47fdjNOft0 v8gvDDQxCPIh3oxS4uH5tJ7FJhFyw75DUzP4lD2kIA6Jl8ZIVngu3ZQyJDRJWeza+DikwqCm m6zDItZU1sqiv4zo4Xg91ftEPd7dNQT27p75gdjVyyPZ09jSEJv3d3wMf2HPeH2f/u6narot Wub7r/mpXmZ8K2e2AzegBBRBna7pkChsfX4+3XP1dXV1dXV1dXV1dXV1dXNwVDs5ucNE8fCa SLl/ZApdoO7392nvNP9X0Peex4XR/5e45HW/0+j/y0f0cPw/3/7fa4444444444444444444 4444449njjjjjjjjjjjjjjjjjjjjjjjjjnzZs2bNmzZs2bNmzZs2bNmzZs2bNmzDrNOfPnz5 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 UUUUUUUUUUUUUUUUUUUUUUUUUUqSFlllllllllllllllllllllllllllllllllllgUUUUUUU UUUUUUUUUUUUUUUUUUUUUUUUUUUUUkKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqppppppp pppppppppppppppppppppppppppp7Ciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOIqqqqqqqqq qqqqqqqqqqqqqqqqqqqqqqqqqqpQiGLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKKKK KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKRrEUlu3 vFm6HabNmxpgFKUpvpzF3Dg31pxnkxZSKrSFg7LcnwZygsTxAGAFlThu3+xQp+xIv5qN3mGA eJIVzNbj6MpujXbwHeKt3OVhFRDULkHjQ7d7UpGsiRMCouRJIEhAAuW9d6+9kqsKlQrXJcVl r2tJbSMRVWUaRFf/SVUpBEKU/a2RIkUNOMs2Zd6UwBACAiBCCIEESEEiAQd3NcT1Ia2Shczk ubXX7ren/MVa4qnW37r3fT99TYaCvc656rq6um5Oqrq6911dXV1c4a3T/wl6YupHttDZzeVu vC0kR0Pfr28PftsWHh2cfCdfbbENEmA73ncY5AgFAjZAtcqn4Nn8GNIzyqQDzw8qBrjBR7Ea ZxYrgxZKAodh1Xf6z4Osbb6eijfHtJnmHSCdXvpeT6Zd/aBs4rYr63D9Y3g8lhXWu12+V/ce Iqt3qzXdt9qXVzOrjG7CPJw4S5EDujG23otHjZHwcTbGIh4iCYiLVsUB/pDBDKzYDtH/hn4b H2yGarmZ/Hwqr7kIBHloIj1tI/DjvC41i+2HYJvXwHdgeSmd8z+fWEE1rSiBCiD3X/T655zH FnJWefP3Q6PiNju++K6cKkWSkb9fLy7fDOjZAL169evXr6O+L169tXp9VGyuUcKfnax7SjaY OgCLlAdcLpX3453K6rb83/2Sw3CgGVHns/kcd0gZBBsiJeWPOAQ9gh1R76MgBxs3/O5Cf716 DR7bu2klW2xn41Z4cGGYv1z/v/RHf0GMVe7636X+l9n9Jjtx7qQ2jNaW9pybWZ7dGTqyc/ST 13/4vy/67KUeDEkfljZjstQAODwt2NL2Cw4a6Uvb2dx85jQ4Osmmoo5IAOf6p5V9hdfupS0P Tmxl4i8R/811IWjcS68mIs6sbfkWr93emS5MmzRlbD3Y0JOxF0IsSLtRl4a8Dj83YiTI8XPN 24sWImlHUUnSpXDsfkladv4u273NGPGjRZEeLGiR4sUY0FaGvm7OzDhxfAn7O//n5XnWk9qb tbWnQ2nkRRjhixIm1FivIrv5dG3sT5HDKlSuGXKnTp0/bgStfZl6SU+HAUzX0Nbdc/zBV+ls be9myJEeXRlyp0qXVDN1J0WRtR5CMeRrxYjz0V/zviT/DpvJEuVJ09zZ2JcrNmTN2O8jw1/g f0/J+RHmpyI0uPGjy23DJk1diTsLQlqW5MuUNA58uvNSmx4axwpQ3nCmlvJ66ezCS4Q+JF+J QDZ2dmJFiJHxIiqsdaFubUxZbnk83Fo7ey9lRosaM/2UJceRH2o8Z7spR9qGtDV8v7pCE+2Q hPrhl3nmPti7FxR84lIW+F5VFAmKJBNBqanArKBQC7OtJ1Fc1MnMkC/v9n7pT9oe/0HVfS9t pSqO59p7Gdr+fI/iS+USCkMrzyLZ6T2n6v98r6E/Xe793YYNEi7UJWWOsbOuD8Yx31SvY0pm ALZgWLjf46WRIiTfUettkQivTsfrGe9lHRx508eJT7sQCA8SAIAFeJB88NpFaCoe95svtdZc vdZ+nXs89h8Nk5DjQPG7rtPYuBvNlk9DodDkdDodDodDoW9WtkquIVROTu0veJuIuspMba3b iT4bFiQBm15wCEpnDwjdKmRBHa/P8nuqaEVn/Xyu3/m8pv/veF+r23/Tzn6H89TTnOc5znOc 5zn+v4q7m1rWta1rWta1rXV7/y2JsFXXXXXXXXXXXXXXWZdGg9a1rWta1rWta1uNkz1rWta1 rWta1rm/TGrZK+22222222222223zMwNNta1rWta1rWta2DPnOLSBa7bbbbbbbbbbbbbaZ8D 0pSlKUpSlKUptY4D4mXLtX33333333333336Nuc5znOc5znOc6i3Xl06c199999999999999 v5k5znOc5znOc53jIC89t1rWta1rWta1rptE5znOc5znOc5o8j5rgAeiBh5nnkYDY8d+YgwG /3e6Abl98b0iz/I+VVue+22n3cfp/L6C3nZmRY0Xevhar12d2e68r2qCeiR2k0FNhR7Fn5OM 97A00xYD2invs4VMFMBguNhFJNMMGkR0ERY7Cl27RxSmsSnKTsEfppg4Y6gVNbDEe9+Fz9jE mHvkMDUdQEOw8y+92ZVnf7rOR5dgXKPq3v0zIQR0AI6ghg5aLQ6Yad2dCG2dW/FkKIluKwCf Vc1307tx663W/B+HIxwTJjhkpSkeAiP0406BA1ECNmwO/2UCMQAwR54IyDIAqA88bNIfW0WD 1Mh6mpGxAHeo/oisZ76Bxm9dNM2J27au2e1n5Z/97O2toz1vwGAh5HAYCspcBgMBgMBgMA0N EIctEjagODp9Ysk7/d9ibTVR03LWHk0/Tu6GHT5K+ZWSbW66bk8D78mIeQ8OddPC/ziFtCwu pABkAQ5SZFP+Y5ln0ILbc0BQSLBH/VuZ8fBBzXEPRIs9jOUW0DQU7tBKLSB8CRl87tZ21Tz7 yKKJc4ajqvP+u/Z3eyL7uWr2Bhdc25kIfpbYwEYoYQ5aBgZA+aZPAZ9Oh2mgUWf4mQKkh2rW LP3EJ/pTtWGX/G3o7bgeLE9tnM+gt5dsPoLILL+7/1YmEWMUZE2rWd3Pf99AUUNDDUc282XK LtXVruxoR0qLR+9Br6tbyx/0M0P/O48Ts927SuFlZXeyscrVusC2K1auSVq1atWrVp3cAbnP IXD5bK2Uv172fwlBO1NJQW9lmrt4+Z+h/Z+m+7+p/WZMKrGeY4gwIlT/OmWiYf38Z00ukf4+ npKnXe4vj+UxY5FEIPIXj1cmPxPUnW8stzSj8h9cPUnFbrnr75loroSP9sZBjUIouLZxUjCg 4S7pan2/nvTcDz/X06zr/NRiQx5uUSw5bUe86nI+tPje6ipt/D2FHtZ0Nt5B76UhoaG8yrLl Rz2fgmiDRARIcQFbwfww8FB6bBZ/zve8f/3sGzE/5YONQB2Iw4Lay0r9S0sHS0tLS0tLS0tL S0rzChHHRXu+uPZNf/Wj44m9e/u/qH6/m4lw6e8/OfkbtdbDH4+UIm2spLn3KOcmKfGChHp0 b9I6YR027qVWq1hUjgkzpwZ1tQLlfp8xUdQ/PNbNNeR6PO0PuKKeky+nia3DS59oUMbENg2C yERo5IUMTYG+YI6Vy0DwyWbe6KXp/k4csBZ4rQA156CpMH47LtEY/Z0yQ2tH0suq13dbj/Jv zR/aef6jutt7L/HOTyJ5MmTJZyZLuTJkyZMj9/FtUftVY/f6OrSz/QkP/H+8p/A/77YkbG1T 8D2no433tCvFp/LnBb9k9zxN9ynDNR4GyQNcOCfvBFS9KO2cfLB5blbufUaDM/9kuiDG50Mg LAkvOh4AfLK8lmSc19SXCY/YWpEnzUQQSSqubssx8nxPY+D/jtbdtDqzfkbOJAlgYIkcXGno Ip+0m+QUhviAHuW8H3aCpQbb5nK3/ev32L8y/frX799W/Yv8Wd0ykKX4nS6fTX9J6T/TTv+D 4vHf/7r+r3dP3v8EFcIHWX2+ayuy39o4t3AHc44QIJAIAiBAFko78f6044OVOmq/HmfF+L/P Wug4esFkZfK3MUPcbH2eyAU6PZrIlxzMjzfq0U7a4p/t5fMjpxIS7a5xn8F11qCNrCQHqcQB ASbu0ET7cf2vh6XycTBBYCfQCWKJ02HdMPmc3v3YmMWn+SMj2kOemQNEmDbM9yW988ermik6 O79jMnn9B0HQdBq+g6DoOg6CgoKCgoKBnrqCKgX/O3q8yloyP/h3jNd8gquGGtr1YeYI28XG skehsejrd5zF1DhYPeYV5sMtVbvo4Nd0sfBbDmR/FesJ0+pLRXP687p+HisvW3LDWuC2nMX7 X4XDAcXo+/X4i85HPbnh8G5cPk/68f3vaDQ/y95jZff7ZfSavlcPWcP6/vJ/xfw752Ona03I /X/ZHsfP/cL1WHx6/G0zAxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYx jGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGKUpSlKUpSlKUpSlKUpSlKUpSlKUpSl KUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpdaJjGMYxj GMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGM YxjGMYxjGMYxjGKvMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGM YxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxilKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUp SlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKWtMYxjGMYxjGMY xjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxj GMYxjGMYxilKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlK UpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUwGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxj GMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMY2vX/8wYMGDBgwYMGDBg wYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwY MGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGDBgwYMGFaYxjGMYxjGMYxjGMYxjGMYxjGMY xjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjfUxjG MYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMY xjGMYxjGMYxjGMYxjG/hjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjG MYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGMYxjGNtvmvXr169evXr169evXr169evXr169e vXr169evXr169evXr169evXr169evXr169evXr169evXr169evXr169evXr169evXr169evX r169evXr169evXr169evXr169evXr68pSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUp SlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpS+ApSlKUpSlKUpSlKUpSlK UpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUpSlKUp S/+y2v33Yzmf9+Ap6CZtsE54DZbKwJpyEAGkmtANgccAgIE2xMrrMVGA4BWB5aWB18/iU+aD A0hgx/Q/89V8r31MnS4iP7XAwfgf4ZMSj7P9OPMVR1PQtHCcNIfJx7ukW+eAAZlOzoIR7r3X uvde6917rx/Ndx1vRczyXuva4BSBCC+kABD93DvnxUnTqWF3z/owHK0/se+l5bwnQDxYqypN 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 --mgIE+9cwyCTt+85Z-- --1PHmS26pdpOR3Xc0 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (FreeBSD) iEYEARECAAYFAkjk3fEACgkQthUKNsbL7YiavACfXvADucTtDVmEh+nYn5vkx7Jd 23EAn3u3RgOjwXQaU7/BnROGpDoPMrN/ =JYdE -----END PGP SIGNATURE----- --1PHmS26pdpOR3Xc0-- From owner-freebsd-net@FreeBSD.ORG Fri Oct 3 14:44:31 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 409AD106569A; Fri, 3 Oct 2008 14:44:31 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 171028FC27; Fri, 3 Oct 2008 14:44:31 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m93EiUbm086195; Fri, 3 Oct 2008 14:44:30 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m93EiUEE086191; Fri, 3 Oct 2008 14:44:30 GMT (envelope-from linimon) Date: Fri, 3 Oct 2008 14:44:30 GMT Message-Id: <200810031444.m93EiUEE086191@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: kern/127815: [gif] [patch] if_gif does not set vlan attributes from EtherIP encapsulated 802.1 packets X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Oct 2008 14:44:31 -0000 Old Synopsis: if_gif does not set vlan attributes from EtherIP encapsulated 802.1 packets New Synopsis: [gif] [patch] if_gif does not set vlan attributes from EtherIP encapsulated 802.1 packets Responsible-Changed-From-To: freebsd-bugs->freebsd-net Responsible-Changed-By: linimon Responsible-Changed-When: Fri Oct 3 14:44:00 UTC 2008 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=127815 From owner-freebsd-net@FreeBSD.ORG Fri Oct 3 18:07:25 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B655D106568A; Fri, 3 Oct 2008 18:07:25 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 8CCD18FC1A; Fri, 3 Oct 2008 18:07:25 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m93I7Pxf001727; Fri, 3 Oct 2008 18:07:25 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m93I7Pbb001723; Fri, 3 Oct 2008 18:07:25 GMT (envelope-from linimon) Date: Fri, 3 Oct 2008 18:07:25 GMT Message-Id: <200810031807.m93I7Pbb001723@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: kern/127826: [iwi] iwi0 driver has reduced performance and connection strength [regression] X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Oct 2008 18:07:25 -0000 Old Synopsis: iwi0 driver has reduced performance and connection strength New Synopsis: [iwi] iwi0 driver has reduced performance and connection strength [regression] Responsible-Changed-From-To: freebsd-bugs->freebsd-net Responsible-Changed-By: linimon Responsible-Changed-When: Fri Oct 3 18:06:52 UTC 2008 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=127826 From owner-freebsd-net@FreeBSD.ORG Fri Oct 3 20:19:32 2008 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D6CF106564A for ; Fri, 3 Oct 2008 20:19:32 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from pooker.samsco.org (pooker.samsco.org [168.103.85.57]) by mx1.freebsd.org (Postfix) with ESMTP id E768C8FC08 for ; Fri, 3 Oct 2008 20:19:31 +0000 (UTC) (envelope-from scottl@samsco.org) Received: from pooker.samsco.home (pooker.samsco.home [192.168.254.1]) by pooker.samsco.org (8.14.2/8.14.2) with ESMTP id m93JuUvF003540; Fri, 3 Oct 2008 13:56:31 -0600 (MDT) (envelope-from scottl@samsco.org) Date: Fri, 3 Oct 2008 13:56:30 -0600 (MDT) From: Scott Long To: Jack Vogel In-Reply-To: <2a41acea0810011516u77ca05b1k2df527e453dfe392@mail.gmail.com> Message-ID: <20081003135625.C39726@pooker.samsco.org> References: <2a41acea0810011516u77ca05b1k2df527e453dfe392@mail.gmail.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Spam-Status: No, score=-4.4 required=3.8 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.1.8 X-Spam-Checker-Version: SpamAssassin 3.1.8 (2007-02-13) on pooker.samsco.org Cc: "freebsd-net@freebsd.org" , Jeff Roberson , Kip Macy , John Baldwin Subject: Re: potential nasty bug in igb and ixgbe X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Oct 2008 20:19:32 -0000 I'll bite. Scott On Wed, 1 Oct 2008, Jack Vogel wrote: > Jeff Roberson uncovered an issue that might be behind any number of > possible problems. > > Our newer hardware (meaning those supported by the igb and ixgbe > drivers) overwrites the buffer address in the RX > descriptor with a variety of data in support of advanced features (see > the relevant header files for details). > > However, in the rxeof code, if you fail to get a new mbuf, and hence, > will discard, the descriptor is being left in the wb form, > meaning that the address is jibberish for the next time the engine > uses that descriptor. > > I am modifying get_buf so that it fixes the address in the descriptor > when this happens. I know when my test group has had > the igb driver under heavy load they have had some panics, right now > I'm not sure if this has been at the root of those or not. > > If you want to see how I'm changing the code just speak up :) And > thanks for finding this Jeff. > > Jack > From owner-freebsd-net@FreeBSD.ORG Fri Oct 3 21:46:10 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFD661065687 for ; Fri, 3 Oct 2008 21:46:10 +0000 (UTC) (envelope-from Neff_Glen@emc.com) Received: from mexforward.lss.emc.com (mexforward.lss.emc.com [128.222.32.20]) by mx1.freebsd.org (Postfix) with ESMTP id A0EE88FC21 for ; Fri, 3 Oct 2008 21:46:10 +0000 (UTC) (envelope-from Neff_Glen@emc.com) Received: from hop04-l1d11-si02.isus.emc.com (HOP04-L1D11-SI02.isus.emc.com [10.254.111.55]) by mexforward.lss.emc.com (Switch-3.2.5/Switch-3.1.7) with ESMTP id m93LW2SG011363 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 3 Oct 2008 17:32:03 -0400 (EDT) Received: from mailhub.lss.emc.com (nagas.lss.emc.com [10.254.144.11]) by hop04-l1d11-si02.isus.emc.com (Tablus Interceptor); Fri, 3 Oct 2008 17:30:00 -0400 Received: from corpussmtp4.corp.emc.com (corpussmtp4.corp.emc.com [10.254.64.54]) by mailhub.lss.emc.com (Switch-3.2.5/Switch-3.1.7) with ESMTP id m93LVs2g023909; Fri, 3 Oct 2008 17:31:54 -0400 (EDT) Received: from CORPUSMX20B.corp.emc.com ([128.221.62.11]) by corpussmtp4.corp.emc.com with Microsoft SMTPSVC(6.0.3790.1830); Fri, 3 Oct 2008 17:31:54 -0400 Received: from 128.222.4.45 ([128.222.4.45]) by CORPUSMX20B.corp.emc.com ([128.221.62.14]) via Exchange Front-End Server email.emc.com ([128.221.14.157]) with Microsoft Exchange Server HTTP-DAV ; Fri, 3 Oct 2008 21:31:52 +0000 Received: from gneffpc.nas-v6.rtp.dg.com by email.emc.com; 03 Oct 2008 17:31:53 -0400 From: "Glen R. J. Neff" To: tech-userland@netbsd.org, freebsd-net@freebsd.org Content-Type: text/plain Content-Transfer-Encoding: 7bit Date: Fri, 03 Oct 2008 17:31:52 -0400 Message-Id: <1223069512.21019.24.camel@gneffpc.nas-v6.rtp.dg.com> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 X-OriginalArrivalTime: 03 Oct 2008 21:31:54.0327 (UTC) FILETIME=[749D6670:01C9259F] X-RSA-Inspected: yes X-RSA-Classifications: X-RSA-Action: allow Cc: Subject: IPv6 support for yp/NIS X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Oct 2008 21:46:11 -0000 I find myself in one hell of a conundrum. I need an NIS server that supports IPv6. I initially tried with FreeBSD but found that every piece of the yp suite supported IPv6 except ypserv. Then someone told me that NetBSD's ypserv supported it, so I gave it a try, and they're right, it does! But you know what, in the case of NetBSD, every piece of the yp suite supports IPv6 except ypbind. This is maddening! How can both of these projects have non-overlapping holes in their yp suites like this? Here's some console & sockstat output to show what I'm talking about: http://pastebin.ca/1218428 Thanks, -G -- /* * Glen R. J. Neff * RTP TSG Network Team * neff_glen@emc.com * * EMC^2 == E^2 */ From owner-freebsd-net@FreeBSD.ORG Fri Oct 3 23:33:54 2008 Return-Path: Delivered-To: freebsd-net@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2E4D1065686; Fri, 3 Oct 2008 23:33:54 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id B9F088FC14; Fri, 3 Oct 2008 23:33:54 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (linimon@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m93NXsla030053; Fri, 3 Oct 2008 23:33:54 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m93NXsOc030049; Fri, 3 Oct 2008 23:33:54 GMT (envelope-from linimon) Date: Fri, 3 Oct 2008 23:33:54 GMT Message-Id: <200810032333.m93NXsOc030049@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: kern/127834: [ixgbe] [patch] wrong error counting X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Oct 2008 23:33:55 -0000 Synopsis: [ixgbe] [patch] wrong error counting Responsible-Changed-From-To: freebsd-bugs->freebsd-net Responsible-Changed-By: linimon Responsible-Changed-When: Fri Oct 3 23:33:42 UTC 2008 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=127834 From owner-freebsd-net@FreeBSD.ORG Sat Oct 4 01:58:05 2008 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 564F21065687 for ; Sat, 4 Oct 2008 01:58:05 +0000 (UTC) (envelope-from freebsd-net@m.gmane.org) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by mx1.freebsd.org (Postfix) with ESMTP id D04038FC17 for ; Sat, 4 Oct 2008 01:58:04 +0000 (UTC) (envelope-from freebsd-net@m.gmane.org) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1KlwP8-00014V-KM for freebsd-net@freebsd.org; Sat, 04 Oct 2008 01:57:58 +0000 Received: from 77.237.105.56 ([77.237.105.56]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 04 Oct 2008 01:57:58 +0000 Received: from ivoras by 77.237.105.56 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 04 Oct 2008 01:57:58 +0000 X-Injected-Via-Gmane: http://gmane.org/ To: freebsd-net@freebsd.org From: Ivan Voras Date: Sat, 04 Oct 2008 03:57:50 +0200 Lines: 52 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: 77.237.105.56 User-Agent: Thunderbird 2.0.0.16 (Windows/20080708) In-Reply-To: Sender: news Cc: freebsd-hackers@freebsd.org Subject: Network IO & scheduling problem? (was: Optimizing for high PPS, Intel NICs) X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Oct 2008 01:58:05 -0000 I experimented some more with my problem and it would be pretty incredible if it weren't for the fact that I can reliably reproduce it. Excuse me if this description is overly verbose, I can't decide which information might be important. First, here's some more background on the problem: The application (not created for the purpose of being a benchmark) accepts TCP connections and assigns them into one of predefined connection groups, configured at serve startup. Each connection group is polled for network IO events by its own thread. There are no overlaps between these groups. This polling can be done by either kqueue() or poll(). The client application is a stress test application that creates 40+ parallel, long lived TCP connections and tries to saturate the server with queries (so, for example with 40 client connections and 4 connection groups on the server, each kqueue or poll list has 10 entries). For testing purposes, the server doesn't actually do any useful work so the emphasis is on network IO. The server hardware is 2x quad Xeon 5405, 8 cores total, running FreeBSD 8-CURRENT amd64 (debugging options turned off). The client system actually doesn't matter, I've tested with many systems, including desktops and laptops with different NICs. The problem is: a) When IO polling on the server is done with kqueues, one kqueue per thread / connection group, I can create up to 3 threads / connection groups without any problems. When I create 4 threads, suddenly the em1 taskq thread starts eating 100% CPU. With 3 or less threads, em taskq spends less than 1% CPU time. At this point I can push 150,000 packets in each direction. b) When polling with poll(), I can create up to 4 server threads without saturating the em taskq, but at 4 threads it starts to spend high random amounts of CPU time, from 30% to 80%. At 5 or more threads it's pinned to 100%. With 4 threads I can push 170,000 packets per direction. With 3 or less threads the em taskq seems to spike in CPU usage right at the start when clients connect and then goes to < 1% CPU time. c) It looks like the effect is much less pronounced on a 4-core machine. I don't have it now but previous tests showed em taskq at 10% with 5 threads and kqueue polling. Some things I tried: disabling TSO doesn't help, disabling PREEMPTION doesn't help, it's not an interrupt storm, the taskq thread doesn't seem to jump all over cpu cores, BUT the amount of context switches rises sharply from ~~12,000 with 3 threads to ~~65,000 with 4 threads to ~~220,000 with 5 threads. Interrupt rate varies between 1000 and 3000 (interrupt moderation by the NIC?). I'm looking for ideas that can explain all this, and also for guidance on how to instrument the kernel to find out what is happening here. Fixes would also be welcome :)