Hi all,
I use Beagleboard C4 with Zippy2 expansion board (KSZ8851SNL Ethernet
controller with SPI interface), linux kernel 2.6.35. When I run my
network application I see that CPU load for [omap2_mcspi] driver = 25%
and for [events/0] process = 10%. Network application produces a lot
of network traffic (avg. bytes/sec = 160.000, avg. packets/sec = 2200,
avg. packet size = 74 bytes). At some moment I see that tx buffer for
KSZ8851SNL chip is full, linux driver (drivers/net/ks8851.c) stops
network interface for a short time (netif_stop_queue) and my
application drops a call during this period.
I understand that SPI interface is a bottleneck in this situation, but
is it possible to do some optimization for McSPI (drivers/spi/
omap2_mcspi.c) or KSZ8851SNL (drivers/net/ks8851.c) drivers? I tried
to use DMA for smaller packets (DMA_MIN_BYTES macro), I tried to add
separate kernel thread in ks8851.c for receiving the packets from the
Ethernet chip but I still have an issue with buffer overflow. McSPI
driver is quite complicated and unfortunately I don't have enough time
to implement my own SPI driver for OMAP.
Cheers,
Max.