sunxi/sxie.c: ~3KB/s TX speed (6.2 + uboot 17.03)

Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

sunxi/sxie.c: ~3KB/s TX speed (6.2 + uboot 17.03)

Eduard Nicodei
Hi,

I've had same problem as Artturi (https://marc.info/?l=openbsd-bugs&m=150071170630651&w=2), but on a Olinuxino A10 Lime.  After trying u-boot 17.03 I noticed that TX speeds were very slow (~3KB/s).

Here is what the packets look like on the other machine (192.168.1.17):

192.168.1.3.1484 > 192.168.1.17.30000: S 3400651399:3400651399(0) win 16384
192.168.1.17.30000 > 192.168.1.3.1484: S 2057093871:2057093871(0) ack 3400651400 win 28960
192.168.1.3.1484 > 192.168.1.17.30000: . ack 1 win 256
0b:90:d0:de:44:1c 5f:bd:8a:25:ff:c6 69ef 118:
                         e506 fdff 29fe dfef 0094 3fff 0894 ffee
                         a0a9 f9ab 8446 dcf3 ba20 5c47 0249 f3de
                         c90a d7d1 0028 9ef4 9381 8b69 7103 8ef4
                         6e68 f7
192.168.1.3.1484 > 192.168.1.17.30000: . 1:1449(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 249
0b:90:d0:de:44:1c 5f:bd:8a:25:ff:c6 69ef 1514:
                         e506 fdff 29fe dfef 0094 3fff 0894 ffee
                         a0a9 f9ab 8446 dcf3 ba20 5c47 0249 f3de
                         c90a d7d1 0028 9ef4 9381 8b69 7103 8ef4
                         6e68 f7
192.168.1.3.1484 > 192.168.1.17.30000: . 1501:2949(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 272
192.168.1.3.1484 > 192.168.1.17.30000: . 4397:5845(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 295



On the Olinuxino Lime (192.168.1.3) they look OK:

192.168.1.3.1484 > 192.168.1.17.30000: S 3400651399:3400651399(0) win 16384
192.168.1.17.30000 > 192.168.1.3.1484: S 2057093871:2057093871(0) ack 3400651400 win 28960
192.168.1.3.1484 > 192.168.1.17.30000: . ack 1 win 256
192.168.1.3.1484 > 192.168.1.17.30000: . 1:1449(1448) ack 1 win 256
192.168.1.3.1484 > 192.168.1.17.30000: P 1449:1501(52) ack 1 win 256
192.168.1.3.1484 > 192.168.1.17.30000: . 1501:2949(1448) ack 1 win 256
192.168.1.3.1484 > 192.168.1.17.30000: . 2949:4397(1448) ack 1 win 256
192.168.1.3.1484 > 192.168.1.17.30000: . 4397:5845(1448) ack 1 win 256
192.168.1.3.1484 > 192.168.1.17.30000: . 5845:7293(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 249
192.168.1.3.1484 > 192.168.1.17.30000: . 7293:8741(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 272
192.168.1.3.1484 > 192.168.1.17.30000: . 8741:10189(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 295
192.168.1.3.1484 > 192.168.1.17.30000: . 10189:11637(1448) ack 1 win 256
192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 317


I believe this might be caused by sxie driver using two TX FIFOs:  I hacked a bit the kernel and when using only 1 TX FIFO it did not send any mangled frames (though packets were getting dropped by ifq_enqueue).  I also added some counters to keep track which queue was being used and the numbers of mangled frames were close the number of times the second FIFO was used.


I would like to investigate further, but I would like to know if this could be caused by the older u-boot or if it seems like an actual fault with the driver?

Has anybody had good TX speed using sxie?  I saw John DiMarco also reported a TX speed of about 4KB/s but that was over a year ago (https://marc.info/?l=openbsd-arm&m=147378434716041&w=2).

I booted a debian image and it run at a few *MB/s so I'm pretty confident it's not a hw problem.


Many Thanks,
Eduard



U-Boot SPL 2017.03 (Apr 03 2017 - 11:14:00)
DRAM: 512 MiB
CPU: 912000000Hz, AXI/AHB/APB: 3/2/2
Trying to boot from MMC1


U-Boot 2017.03 (Apr 03 2017 - 11:14:00 -0600) Allwinner Technology

CPU:   Allwinner A10 (SUN4I)
Model: Olimex A10-OLinuXino-LIME
I2C:   ready
DRAM:  512 MiB
MMC:   SUNXI SD/MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
SCSI:  SATA link 0 timeout.
AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
flags: ncq stag pm led clo only pmp pio slum part ccc apst
Net:   eth0: ethernet@01c0b000
starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
USB2:   USB EHCI 1.00
USB3:   USB OHCI 1.0
scanning bus 0 for devices... 1 USB Device(s) found
scanning bus 2 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
reading /sun4i-a10-olinuxino-lime.dtb
26581 bytes read in 30 ms (865.2 KiB/s)
Found EFI removable media binary efi/boot/bootarm.efi
reading efi/boot/bootarm.efi
67436 bytes read in 42 ms (1.5 MiB/s)
## Starting EFI application at 42000000 ...
Scanning disks on scsi...
Scanning disks on usb...
Scanning disks on mmc...
MMC Device 1 not found
MMC Device 2 not found
MMC Device 3 not found
Found 6 disks
>> OpenBSD/armv7 BOOTARM 1.0
boot>
booting sd0a:/bsd: 3935884+166328+562136 [273417+90+522736+245831]=0x5785f4

OpenBSD/armv7 booting ...
arg0 0xc08785f4 arg1 0x0 arg2 0x48000000
Allocating page tables
freestart = 0x40879000, free_pages = 128903 (0x0001f787)
IRQ stack: p0x408a7000 v0xc08a7000
ABT stack: p0x408a8000 v0xc08a8000
UND stack: p0x408a9000 v0xc08a9000
SVC stack: p0x408aa000 v0xc08aa000
Creating L1 page table at 0x4087c000
Mapping kernel
Constructing L2 page tables
undefined page pmap [ using 1042532 bytes of bsd ELF symbol table ]
board type: 0
Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2017 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 6.2-current (GENERIC) #122: Sat Nov 11 11:05:42 MST 2017
    [hidden email]:/usr/src/sys/arch/armv7/compile/GENERIC
real mem  = 536870912 (512MB)
avail mem = 517271552 (493MB)
mainbus0 at root: Olimex A10-OLinuXino-LIME
cpu0 at mainbus0: ARM Cortex-A8 r3p2 (ARMv7)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB(64b/l,4way) I-cache, 32KB(64b/l,4way) wr-back D-cache
sxiccmu0 at mainbus0
simplebus0 at mainbus0: "soc"
sxipio0 at simplebus0: 175 pins
sxitimer0 at simplebus0: cntrtimer @ 24000KHz
sxie0 at simplebus0, address 02:02:0a:81:e6:6c
rlphy0 at sxie0 phy 1: RTL8201L 10/100 PHY, rev. 1
sximmc0 at simplebus0
sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma
ehci0 at simplebus0
Reply | Threaded
Open this post in threaded view
|

Re: sunxi/sxie.c: ~3KB/s TX speed (6.2 + uboot 17.03)

Artturi Alm
On Mon, Nov 13, 2017 at 06:33:48PM -0500, Eduard Nicodei wrote:

> Hi,
>
> I've had same problem as Artturi (https://marc.info/?l=openbsd-bugs&m=150071170630651&w=2), but on a Olinuxino A10 Lime.  After trying u-boot 17.03 I noticed that TX speeds were very slow (~3KB/s).
>
> Here is what the packets look like on the other machine (192.168.1.17):
>
> 192.168.1.3.1484 > 192.168.1.17.30000: S 3400651399:3400651399(0) win 16384
> 192.168.1.17.30000 > 192.168.1.3.1484: S 2057093871:2057093871(0) ack 3400651400 win 28960
> 192.168.1.3.1484 > 192.168.1.17.30000: . ack 1 win 256
> 0b:90:d0:de:44:1c 5f:bd:8a:25:ff:c6 69ef 118:
>                          e506 fdff 29fe dfef 0094 3fff 0894 ffee
>                          a0a9 f9ab 8446 dcf3 ba20 5c47 0249 f3de
>                          c90a d7d1 0028 9ef4 9381 8b69 7103 8ef4
>                          6e68 f7
> 192.168.1.3.1484 > 192.168.1.17.30000: . 1:1449(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 249
> 0b:90:d0:de:44:1c 5f:bd:8a:25:ff:c6 69ef 1514:
>                          e506 fdff 29fe dfef 0094 3fff 0894 ffee
>                          a0a9 f9ab 8446 dcf3 ba20 5c47 0249 f3de
>                          c90a d7d1 0028 9ef4 9381 8b69 7103 8ef4
>                          6e68 f7
> 192.168.1.3.1484 > 192.168.1.17.30000: . 1501:2949(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 272
> 192.168.1.3.1484 > 192.168.1.17.30000: . 4397:5845(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 295
>
>
>
> On the Olinuxino Lime (192.168.1.3) they look OK:
>
> 192.168.1.3.1484 > 192.168.1.17.30000: S 3400651399:3400651399(0) win 16384
> 192.168.1.17.30000 > 192.168.1.3.1484: S 2057093871:2057093871(0) ack 3400651400 win 28960
> 192.168.1.3.1484 > 192.168.1.17.30000: . ack 1 win 256
> 192.168.1.3.1484 > 192.168.1.17.30000: . 1:1449(1448) ack 1 win 256
> 192.168.1.3.1484 > 192.168.1.17.30000: P 1449:1501(52) ack 1 win 256
> 192.168.1.3.1484 > 192.168.1.17.30000: . 1501:2949(1448) ack 1 win 256
> 192.168.1.3.1484 > 192.168.1.17.30000: . 2949:4397(1448) ack 1 win 256
> 192.168.1.3.1484 > 192.168.1.17.30000: . 4397:5845(1448) ack 1 win 256
> 192.168.1.3.1484 > 192.168.1.17.30000: . 5845:7293(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 249
> 192.168.1.3.1484 > 192.168.1.17.30000: . 7293:8741(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 272
> 192.168.1.3.1484 > 192.168.1.17.30000: . 8741:10189(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 295
> 192.168.1.3.1484 > 192.168.1.17.30000: . 10189:11637(1448) ack 1 win 256
> 192.168.1.17.30000 > 192.168.1.3.1484: . ack 1449 win 317
>
>
> I believe this might be caused by sxie driver using two TX FIFOs:  I hacked a bit the kernel and when using only 1 TX FIFO it did not send any mangled frames (though packets were getting dropped by ifq_enqueue).  I also added some counters to keep track which queue was being used and the numbers of mangled frames were close the number of times the second FIFO was used.
>
>
> I would like to investigate further, but I would like to know if this could be caused by the older u-boot or if it seems like an actual fault with the driver?
>
> Has anybody had good TX speed using sxie?  I saw John DiMarco also reported a TX speed of about 4KB/s but that was over a year ago (https://marc.info/?l=openbsd-arm&m=147378434716041&w=2).
>
> I booted a debian image and it run at a few *MB/s so I'm pretty confident it's not a hw problem.
>
>
> Many Thanks,
> Eduard
>
>

I can get ip and even ssh in on -current and latest u-boot,
but yeah it's broken enough that i did shutdown my boards w/it,
i know it used to do way more IRQs too.
I don't know yet, nor really feel like it'd be worth my time to do
anything than install something else on it, but it might be related
that someone did fuckup the timers on it too, tick does around 66/update
in systat, and stattick barely 100.

fwiw., i got some fixes commited to u-boot for sun4i_emac,
but otherwise it's unable to boot sd0a:/bsd w/bootarm.efi,
so still broken&useless, it will be(U-Boot 2017.11).

-Artturi

>
> U-Boot SPL 2017.03 (Apr 03 2017 - 11:14:00)
> DRAM: 512 MiB
> CPU: 912000000Hz, AXI/AHB/APB: 3/2/2
> Trying to boot from MMC1
>
>
> U-Boot 2017.03 (Apr 03 2017 - 11:14:00 -0600) Allwinner Technology
>
> CPU:   Allwinner A10 (SUN4I)
> Model: Olimex A10-OLinuXino-LIME
> I2C:   ready
> DRAM:  512 MiB
> MMC:   SUNXI SD/MMC: 0
> *** Warning - bad CRC, using default environment
>
> In:    serial
> Out:   serial
> Err:   serial
> SCSI:  SATA link 0 timeout.
> AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode
> flags: ncq stag pm led clo only pmp pio slum part ccc apst
> Net:   eth0: ethernet@01c0b000
> starting USB...
> USB0:   USB EHCI 1.00
> USB1:   USB OHCI 1.0
> USB2:   USB EHCI 1.00
> USB3:   USB OHCI 1.0
> scanning bus 0 for devices... 1 USB Device(s) found
> scanning bus 2 for devices... 1 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
> Hit any key to stop autoboot:  0
> switch to partitions #0, OK
> mmc0 is current device
> Scanning mmc 0:1...
> reading /sun4i-a10-olinuxino-lime.dtb
> 26581 bytes read in 30 ms (865.2 KiB/s)
> Found EFI removable media binary efi/boot/bootarm.efi
> reading efi/boot/bootarm.efi
> 67436 bytes read in 42 ms (1.5 MiB/s)
> ## Starting EFI application at 42000000 ...
> Scanning disks on scsi...
> Scanning disks on usb...
> Scanning disks on mmc...
> MMC Device 1 not found
> MMC Device 2 not found
> MMC Device 3 not found
> Found 6 disks
> >> OpenBSD/armv7 BOOTARM 1.0
> boot>
> booting sd0a:/bsd: 3935884+166328+562136 [273417+90+522736+245831]=0x5785f4
>
> OpenBSD/armv7 booting ...
> arg0 0xc08785f4 arg1 0x0 arg2 0x48000000
> Allocating page tables
> freestart = 0x40879000, free_pages = 128903 (0x0001f787)
> IRQ stack: p0x408a7000 v0xc08a7000
> ABT stack: p0x408a8000 v0xc08a8000
> UND stack: p0x408a9000 v0xc08a9000
> SVC stack: p0x408aa000 v0xc08aa000
> Creating L1 page table at 0x4087c000
> Mapping kernel
> Constructing L2 page tables
> undefined page pmap [ using 1042532 bytes of bsd ELF symbol table ]
> board type: 0
> Copyright (c) 1982, 1986, 1989, 1991, 1993
>         The Regents of the University of California.  All rights reserved.
> Copyright (c) 1995-2017 OpenBSD. All rights reserved.  https://www.OpenBSD.org
>
> OpenBSD 6.2-current (GENERIC) #122: Sat Nov 11 11:05:42 MST 2017
>     [hidden email]:/usr/src/sys/arch/armv7/compile/GENERIC
> real mem  = 536870912 (512MB)
> avail mem = 517271552 (493MB)
> mainbus0 at root: Olimex A10-OLinuXino-LIME
> cpu0 at mainbus0: ARM Cortex-A8 r3p2 (ARMv7)
> cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
> cpu0: 32KB(64b/l,4way) I-cache, 32KB(64b/l,4way) wr-back D-cache
> sxiccmu0 at mainbus0
> simplebus0 at mainbus0: "soc"
> sxipio0 at simplebus0: 175 pins
> sxitimer0 at simplebus0: cntrtimer @ 24000KHz
> sxie0 at simplebus0, address 02:02:0a:81:e6:6c
> rlphy0 at sxie0 phy 1: RTL8201L 10/100 PHY, rev. 1
> sximmc0 at simplebus0
> sdmmc0 at sximmc0: 4-bit, sd high-speed, mmc high-speed, dma
> ehci0 at simplebus0