tcpbench reports 90Mbs sending and 88.7Mbps receiving post-patch to a PC with an fxp(4) running 4.4-stable. I don't recall what it was pre- patch.

$ ifconfig gem
gem0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:03:ba:35:6e:7c
        priority: 0
        groups: egress
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 173.11.102.1 netmask 0xfffffff0 broadcast 173.11.102.15
        inet6 fe80::203:baff:fe35:6e7c%gem0 prefixlen 64 scopeid 0x1
        inet 173.11.102.2 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.3 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.4 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.5 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.6 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.7 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.8 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.9 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.10 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.11 netmask 0xfffffff0 broadcast 173.11.102.15
        inet 173.11.102.12 netmask 0xfffffff0 broadcast 173.11.102.15
gem1: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:03:ba:35:6e:7d
        priority: 0
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 172.22.2.126 netmask 0xffffff80 broadcast 172.22.2.127
        inet6 fe80::203:baff:fe35:6e7d%gem1 prefixlen 64 scopeid 0x2


OpenBSD IEEE 1275 Bootblock 1.1
..>> OpenBSD BOOT 1.3
Trying bsd...
Booting /p...@1f,0/p...@1/s...@8/d...@0,0:a/bsd
5964...@0x1000000+7128@0x15b0428+185...@0x1800000+4008728@0x182d4e8
symbols @ 0xfef6c2c0 81+372216+231756 start=0x1000000
[ using 604768 bytes of bsd ELF symbol table ]
console is /p...@1f,0/p...@1,1/i...@7/ser...@0,3f8
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2009 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 4.6-current (GENERIC) #0: Sun Jul 26 18:02:49 PDT 2009
    [email protected]:/usr/src/sys/arch/sparc64/compile/GENERIC
real mem = 1073741824 (1024MB)
avail mem = 1026121728 (978MB)
mainbus0 at root: Sun Fire V120 (UltraSPARC-IIe 648MHz)
cpu0 at mainbus0: SUNW,UltraSPARC-IIe (rev 3.3) @ 648 MHz
cpu0: physical 16K instruction (32 b/l), 16K data (32 b/l), 512K external (64 b)
psycho0 at mainbus0: SUNW,sabre, impl 0, version 0, ign 7c0
psycho0: bus range 0-2, PCI bus 0
psycho0: dvma map c0000000-dfffffff
pci0 at psycho0
ppb0 at pci0 dev 1 function 1 "Sun Simba PCI-PCI" rev 0x13
pci1 at ppb0 bus 1
ebus0 at pci1 dev 12 function 0 "Sun RIO EBus" rev 0x01
"flashprom" at ebus0 addr 0-fffff not configured
clock1 at ebus0 addr 0-1fff: mk48t59
"SUNW,lomh" at ebus0 addr 200000-200003 ivec 0x2a not configured
alipm0 at pci1 dev 3 function 0 "Acer Labs M7101 Power" rev 0x00: 74KHz clock
iic0 at alipm0
"max1617" at alipm0 addr 0x18 skipped due to alipm0 bugs
spdmem0 at iic0 addr 0x54: 512MB SDRAM registered ECC PC133CL2
spdmem1 at iic0 addr 0x55: 512MB SDRAM registered ECC PC133CL2
ebus1 at pci1 dev 7 function 0 "Acer Labs M1533 ISA" rev 0x00
power0 at ebus1 addr 2000-2007 ivec 0x25
com0 at ebus1 addr 3f8-3ff ivec 0x2b: ns16550a, 16 byte fifo
com0: console
com1 at ebus1 addr 2e8-2ef ivec 0x2b: ns16550a, 16 byte fifo
gem0 at pci1 dev 12 function 1 "Sun ERI Ether" rev 0x01: ivec 0x7c6, address 00c ukphy0 at gem0 phy 1: Generic IEEE 802.3u media interface, rev. 1: OUI 0x0010dd2 ohci0 at pci1 dev 12 function 3 "Sun USB" rev 0x01: ivec 0x7e4, version 1.0, let pciide0 at pci1 dev 13 function 0 "Acer Labs M5229 UDMA IDE" rev 0xc3: DMA, chaI
pciide0: using ivec 0x7cc for native-PCI interrupt
atapiscsi0 at pciide0 channel 0 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <TEAC, CD-224E, P.9A> ATAPI 5/cdrom removable
cd0(pciide0:0:0): using PIO mode 4, DMA mode 2
pciide0: channel 1 disabled (no drives)
gem1 at pci1 dev 5 function 1 "Sun ERI Ether" rev 0x01: ivec 0x7dc, address 00:d ukphy1 at gem1 phy 1: Generic IEEE 802.3u media interface, rev. 1: OUI 0x0010dd2 ohci1 at pci1 dev 5 function 3 "Sun USB" rev 0x01: ivec 0x7e6, version 1.0, legt
usb0 at ohci0: USB revision 1.0
uhub0 at usb0 "Sun OHCI root hub" rev 1.00/1.00 addr 1
usb1 at ohci1: USB revision 1.0
uhub1 at usb1 "Sun OHCI root hub" rev 1.00/1.00 addr 1
ppb1 at pci0 dev 1 function 0 "Sun Simba PCI-PCI" rev 0x13
pci2 at ppb1 bus 2
siop0 at pci2 dev 8 function 0 "Symbios Logic 53c896" rev 0x07: ivec 0x7e0, usiM
scsibus1 at siop0: 16 targets, initiator 7
sd0 at scsibus1 targ 0 lun 0: <SEAGATE, ST336607LSUN36G, 0207> SCSI3 0/ direct fd
sd0: 34732MB, 512 bytes/sec, 71132959 sec total
siop1 at pci2 dev 8 function 1 "Symbios Logic 53c896" rev 0x07: ivec 0x7e0, usiM
scsibus2 at siop1: 16 targets, initiator 7
uhci0 at pci2 dev 5 function 0 "VIA VT83C572 USB" rev 0x62: ivec 0x7d5
uhci1 at pci2 dev 5 function 1 "VIA VT83C572 USB" rev 0x62: ivec 0x7c5
ehci0 at pci2 dev 5 function 2 "VIA VT6202 USB" rev 0x65: ivec 0x7d4
usb2 at ehci0: USB revision 2.0
uhub2 at usb2 "VIA EHCI root hub" rev 2.00/1.00 addr 1
"VIA VT6306 FireWire" rev 0x80 at pci2 dev 5 function 3 not configured
usb3 at uhci0: USB revision 1.0
uhub3 at usb3 "VIA UHCI root hub" rev 1.00/1.00 addr 1
usb4 at uhci1: USB revision 1.0
uhub4 at usb4 "VIA UHCI root hub" rev 1.00/1.00 addr 1
umass0 at uhub2 port 4 configuration 1 interface 0 "Lexar JD FireFly" rev 2.00/2
umass0: using SCSI over Bulk-Only
scsibus3 at umass0: 2 targets, initiator 0
sd1 at scsibus3 targ 1 lun 0: <Lexar, JD FireFly, 1100> SCSI0 0/direct removable
sd1: 1912MB, 512 bytes/sec, 3915776 sec total
softraid0 at root
siop0: target 0 now using tagged 16 bit 40.0 MHz 31 REQ/ACK offset xfers
bootpath: /p...@1f,0/p...@1,0/s...@8,0/d...@0,0
root on sd0a swap on sd0b dump on sd0b

--
bk



On Jul 25, 2009, at 4:14 AM, Brad wrote:

Please test the following diff which adds flow control support
with any gem(4) adapter.

Please provide a dmesg and "ifconfig gemX" output.


Index: gem.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/gem.c,v
retrieving revision 1.92
diff -u -p -r1.92 gem.c
--- gem.c       18 Jul 2009 14:42:47 -0000      1.92
+++ gem.c       25 Jul 2009 10:22:23 -0000
@@ -134,7 +134,7 @@ gem_config(struct gem_softc *sc)
        struct ifnet *ifp = &sc->sc_arpcom.ac_if;
        struct mii_data *mii = &sc->sc_mii;
        struct mii_softc *child;
-       int i, error, phyad;
+       int i, error, mii_flags, phyad;
        struct ifmedia_entry *ifm;

        /* Make sure the chip is stopped. */
@@ -248,6 +248,8 @@ gem_config(struct gem_softc *sc)

        gem_mifinit(sc);

+       mii_flags = MIIF_DOPAUSE;
+
        /*
         * Look for an external PHY.
         */
@@ -266,7 +268,7 @@ gem_config(struct gem_softc *sc)
                }

                mii_attach(&sc->sc_dev, mii, 0xffffffff, phyad,
-                   MII_OFFSET_ANY, 0);
+                   MII_OFFSET_ANY, mii_flags);
        }

        /*
@@ -292,7 +294,7 @@ gem_config(struct gem_softc *sc)
                }

                mii_attach(&sc->sc_dev, mii, 0xffffffff, phyad,
-                   MII_OFFSET_ANY, 0);
+                   MII_OFFSET_ANY, mii_flags);
        }

        /*
@@ -314,8 +316,10 @@ gem_config(struct gem_softc *sc)
                mii->mii_readreg = gem_pcs_readreg;
                mii->mii_writereg = gem_pcs_writereg;

+               mii_flags |= MIIF_NOISOLATE;
+
                mii_attach(&sc->sc_dev, mii, 0xffffffff, MII_PHY_ANY,
-                   MII_OFFSET_ANY, MIIF_NOISOLATE);
+                   MII_OFFSET_ANY, mii_flags);
        }

        child = LIST_FIRST(&mii->mii_phys);
@@ -873,8 +877,8 @@ gem_init_regs(struct gem_softc *sc)
        bus_space_write_4(t, h, GEM_MAC_RX_CRC_ERR_CNT, 0);
        bus_space_write_4(t, h, GEM_MAC_RX_CODE_VIOL, 0);

-       /* Un-pause stuff */
-       bus_space_write_4(t, h, GEM_MAC_SEND_PAUSE_CMD, 0);
+       /* Set XOFF PAUSE time */
+       bus_space_write_4(t, h, GEM_MAC_SEND_PAUSE_CMD, 0x1BF0);

        /*
         * Set the internal arbitration to "infinite" bursts of the
@@ -1331,6 +1335,17 @@ gem_mii_statchg(struct device *dev)
                v &= ~GEM_MAC_XIF_GMII_MODE;
        }
        bus_space_write_4(t, mac, GEM_MAC_XIF_CONFIG, v);
+
+       /*
+        * 802.3x flow control
+        */
+       v = bus_space_read_4(t, mac, GEM_MAC_CONTROL_CONFIG);
+       v &= ~(GEM_MAC_CC_RX_PAUSE | GEM_MAC_CC_TX_PAUSE);
+ if ((IFM_OPTIONS(sc->sc_mii.mii_media_active) & IFM_ETH_RXPAUSE) ! = 0)
+               v |= GEM_MAC_CC_RX_PAUSE;
+ if ((IFM_OPTIONS(sc->sc_mii.mii_media_active) & IFM_ETH_TXPAUSE) ! = 0)
+               v |= GEM_MAC_CC_TX_PAUSE;
+       bus_space_write_4(t, mac, GEM_MAC_CONTROL_CONFIG, v);
}

int

--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

Reply via email to