The combination of r35942 and r35952 causes an issue where eth_schedule_poll()
can be called from a different CPU between the call to napi_complete() and the
setting of cur_index which can break the rx ring accounting and cause ethernet
latency and/or ethernet stalls. The issue can be easilly created by adding
a couple of artificial delays such as:
@@ -715,6 +715,7 @@ static int eth_poll(struct napi_struct *napi, int budget)
if (!received) {
napi_complete(napi);
+udelay(1000);
enable_irq(IRQ_CNS3XXX_SW_R0RXC);
}
@@ -727,6 +728,7 @@ static int eth_poll(struct napi_struct *napi, int budget)
rx_ring->cur_index = i;
wmb();
+udelay(1000);
enable_rx_dma(sw);
return received;
This patch moves the setting of cur_index back up where it needs to be and
addresses the original corner case that r35942 was trying to catch in an
improved fashion by checking to see if the rx descriptor ring has become
full before interrupts were re-enabled so that a poll can be scheduled again
and avoid an rx stall caused by rx interrupts ceasing to fire again.
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
SVN-Revision: 39761
The IMX6 SoC uses an ARM Cortext-A9 which has both NEON and VFPv3 hardware
blocks. This will tune gcc to use neon instead of vfpv3 which will outperform
VFPv3.
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
SVN-Revision: 39760
The OpenWrt build system uses MACHINE_FEATURES of fpu to set the HAS_FPU which
in turn sets the default of CONFIG_SOFT_FLOAT as well as uClibc configuration.
As the IMX6 SoC has both vfpv3 and NEON hardware support we want to add fpu
to the feature list. This will default the IMX6 target to use -mfloat-abi=hard
which will the be most efficient use of floating point.
When switching to hard float, we also need to enable VFP support in the kernel.
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
SVN-Revision: 39759
We were copying the actual vmlinux-initramfs.elf kernel which cannot be
launched by QEMU or a real bootloader, use zImage-initramfs instead.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 39756
The ar71xx platform always uses the eth0 interface to provide
access to the device in failsafe mode. Due to this, failsafe
access is broken on devices where the LAN ports are connected
to the 'eth1' interface.
Update the relevant script to correctly set the ifname variable
for these devices.
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 39752
Add support for 3.13 as a development kernel. Mostly untested, only net
booted. If flashed may brick your router or kill your cat.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 39746
Similarly to the previously broken address pools, DNS-servers and some
MSRs could be advertised incorrectly as well. This is now fixed.
SVN-Revision: 39739
Let the switch start the carrier and set the duplex mode independently
if this nic is up of not.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 39733
Reorder BuildPackage calls, as libubox needs to come first for ABI
version handling to work
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 39722
If a package directly depends on another package that recently changed
its ABI version, it will be cleaned up and rebuilt (assuming quilt is
not used).
This helps with packages that have no stable ABI, e.g. libubox, ubus,
etc.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 39720
We did not start the PHY when an external phy was in use. Without this
patch the driver uses half duplex mode and the switch uses full duplex
mode, which causes problems.
Thank you fback for spotting this problem.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 39719