No description
Find a file
Gabor Juhos 7bd3a7bc7b ar71xx: ag71xx: fix a race involving netdev registration
In particular, phy_connect before register_netdev. This is because
register_netdev runs the netdev notifiers, which can race with the rest of
the initialization in ag71xx_probe. In my case this manifested in two ways:

1) If ag71xx is compiled as a module and inserted after netifd has started,
   netifd is notified by register_netdev before the call to
   ag71xx_phy_connect. netifd tries to bring the interface up, which calls
   ag71xx_open, which in turn enters ag71xx_phy_start. This keys off
   ag->phy_dev (which is still NULL) and thinks this is a fixed-link board,
   and enters ag71xx_link_adjust. This looks at ag->speed which is not yet
   initialized and hits the BUG() in the switch (ag->speed) in
   ag71xx_link_adjust.

   This is the wrong code path for ag71xx_phy_start - my board has PHYs that
   need to be brought up with phy_start. Doing ag71xx_phy_connect before
   register_netdev ensures that ag->phy_dev is non-NULL before
   ag71xx_phy_start is ever called.

2) When ag71xx is built into the kernel, and netconsole is enabled, there
   is a gap in the initial burst of replayed printks right after the netdev
   comes up. My assumption is that netconsole is also triggered by a netdev
   notifier, and part of this printk burst happens before the call into
   ag71xx_phy_connect, so part of the burst is lost while the PHY comes up.
   This patch fixes the gap - all the printks before eth0 comes up are bursted
   in full when netconsole initializes.

ag71xx_phy_connect_xxx no longer runs with a registered netdev, so the
logging has been adjusted accordingly to avoid "unregistered net_device" or
"eth%d" messages in dmesg.

Signed-off-by: Catalin Patulea <cat@vv.carleton.ca>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 38689
2013-11-08 08:17:54 +00:00
docs docs: update remaining references to functions.sh 2012-12-20 15:29:33 +00:00
include kernel: update 3.10 to 3.10.18 2013-11-05 08:25:45 +00:00
package mac80211: mark rt2x00 library packages as hidden, there's no point in allowing users to enable them without the packages that depend on them 2013-11-07 20:59:22 +00:00
scripts build: fix build on Mac OS X 10.9 2013-10-28 15:15:09 +00:00
target ar71xx: ag71xx: fix a race involving netdev registration 2013-11-08 08:17:54 +00:00
toolchain uClibc: get rid of bogus unused strlcpy definition to fix build errors 2013-10-28 15:15:35 +00:00
tools tools: adapt addpattern for WD's Range Extender 2013-11-07 22:31:48 +00:00
.gitattributes add .gitattributes to prevent the git autocrlf option from messing with CRLF/LF in files 2012-05-08 13:30:49 +00:00
.gitignore .gitignore: Ignore Emacs editor generated files 2011-10-31 09:37:59 +00:00
BSDmakefile add missing copyright header 2007-02-26 01:05:09 +00:00
Config-kernel.in buildroot: split Kernel config options to Config-kernel.in 2013-10-24 00:28:33 +00:00
Config.in buildroot: add lz4 initramfs compression option 2013-10-25 01:48:10 +00:00
feeds.conf.default feeds.conf.default: switch packages feed to git (#13818) 2013-07-05 02:04:40 +00:00
LICENSE finally move buildroot-ng to trunk 2016-03-20 17:29:15 +01:00
Makefile build: it is no longer necessary to call make target/linux/clean as part of make clean 2012-12-02 15:26:28 +00:00
README build: BSD compile fixes 2013-03-07 17:32:29 +00:00
rules.mk build: include the cpu type as part of the toolchain/target directory name 2013-09-26 17:53:32 +00:00

This is the buildsystem for the OpenWrt Linux distribution.

Please use "make menuconfig" to configure your appreciated
configuration for the toolchain and firmware.

You need to have installed gcc, binutils, bzip2, flex, python, perl
make, find, grep, diff, unzip, gawk, getopt, libz-dev and libc headers.

Run "./scripts/feeds update -a" to get all the latest package definitions
defined in feeds.conf / feeds.conf.default respectively
and "./scripts/feeds install -a" to install symlinks of all of them into
package/feeds/.

Use "make menuconfig" to configure your image.

Simply running "make" will build your firmware.
It will download all sources, build the cross-compile toolchain, 
the kernel and all choosen applications.

You can use "scripts/flashing/flash.sh" for remotely updating your embedded
system via tftp.

The OpenWrt system is documented in docs/. You will need a LaTeX distribution
and the tex4ht package to build the documentation. Type "make -C docs/" to build it.

To build your own firmware you need to have access to a Linux, BSD or MacOSX system
(case-sensitive filesystem required). Cygwin will not be supported because of
the lack of case sensitiveness in the file system.


Sunshine!
	Your OpenWrt Project
	http://openwrt.org