Revision ccf899a27c08038db91765ff12bb0380dcd85887 authored by Enric Balletbo i Serra on 13 November 2014, 08:14:34 UTC, committed by David S. Miller on 13 November 2014, 20:09:28 UTC
With commit be9dad1f9f26604fb ("net: phy: suspend phydev when going
to HALTED"), the PHY device will be put in a low-power mode using
BMCR_PDOWN if the the interface is set down. The smsc911x driver does
a software_reset opening the device driver (ndo_open). In such case,
the PHY must be powered-up before access to any register and before
calling the software_reset function. Otherwise, as the PHY is powered
down the software reset fails and the interface can not be enabled
again.

This patch fixes this scenario that is easy to reproduce setting down
the network interface and setting up again.

    $ ifconfig eth0 down
    $ ifconfig eth0 up
    ifconfig: SIOCSIFFLAGS: Input/output error

Signed-off-by: Enric Balletbo i Serra <eballetbo@iseebcn.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 0c828f2
History
File Mode Size
bpf
configs
debug
events
gcov
irq
locking
power
printk
rcu
sched
time
trace
.gitignore -rw-r--r-- 91 bytes
Kconfig.freezer -rw-r--r-- 52 bytes
Kconfig.hz -rw-r--r-- 1.6 KB
Kconfig.locks -rw-r--r-- 4.5 KB
Kconfig.preempt -rw-r--r-- 2.1 KB
Makefile -rw-r--r-- 7.3 KB
acct.c -rw-r--r-- 15.4 KB
async.c -rw-r--r-- 9.9 KB
audit.c -rw-r--r-- 52.7 KB
audit.h -rw-r--r-- 10.2 KB
audit_tree.c -rw-r--r-- 22.0 KB
audit_watch.c -rw-r--r-- 13.6 KB
auditfilter.c -rw-r--r-- 33.8 KB
auditsc.c -rw-r--r-- 65.9 KB
backtracetest.c -rw-r--r-- 2.1 KB
bounds.c -rw-r--r-- 703 bytes
capability.c -rw-r--r-- 12.0 KB
cgroup.c -rw-r--r-- 148.0 KB
cgroup_freezer.c -rw-r--r-- 12.5 KB
compat.c -rw-r--r-- 29.5 KB
configs.c -rw-r--r-- 2.8 KB
context_tracking.c -rw-r--r-- 5.7 KB
cpu.c -rw-r--r-- 19.3 KB
cpu_pm.c -rw-r--r-- 6.5 KB
cpuset.c -rw-r--r-- 77.7 KB
crash_dump.c -rw-r--r-- 1.3 KB
cred.c -rw-r--r-- 21.2 KB
delayacct.c -rw-r--r-- 4.5 KB
dma.c -rw-r--r-- 3.6 KB
elfcore.c -rw-r--r-- 396 bytes
exec_domain.c -rw-r--r-- 4.3 KB
exit.c -rw-r--r-- 41.9 KB
extable.c -rw-r--r-- 3.9 KB
fork.c -rw-r--r-- 47.6 KB
freezer.c -rw-r--r-- 4.4 KB
futex.c -rw-r--r-- 81.7 KB
futex_compat.c -rw-r--r-- 4.5 KB
groups.c -rw-r--r-- 5.8 KB
hung_task.c -rw-r--r-- 5.7 KB
irq_work.c -rw-r--r-- 4.5 KB
jump_label.c -rw-r--r-- 11.0 KB
kallsyms.c -rw-r--r-- 14.9 KB
kcmp.c -rw-r--r-- 4.3 KB
kexec.c -rw-r--r-- 67.8 KB
kmod.c -rw-r--r-- 19.5 KB
kprobes.c -rw-r--r-- 60.4 KB
ksysfs.c -rw-r--r-- 5.6 KB
kthread.c -rw-r--r-- 18.6 KB
latencytop.c -rw-r--r-- 7.6 KB
module-internal.h -rw-r--r-- 458 bytes
module.c -rw-r--r-- 96.6 KB
module_signing.c -rw-r--r-- 5.9 KB
notifier.c -rw-r--r-- 16.2 KB
nsproxy.c -rw-r--r-- 6.1 KB
padata.c -rw-r--r-- 26.9 KB
panic.c -rw-r--r-- 12.0 KB
params.c -rw-r--r-- 22.3 KB
pid.c -rw-r--r-- 14.9 KB
pid_namespace.c -rw-r--r-- 9.0 KB
profile.c -rw-r--r-- 16.1 KB
ptrace.c -rw-r--r-- 29.8 KB
range.c -rw-r--r-- 3.0 KB
reboot.c -rw-r--r-- 12.5 KB
relay.c -rw-r--r-- 32.6 KB
res_counter.c -rw-r--r-- 4.4 KB
resource.c -rw-r--r-- 36.6 KB
seccomp.c -rw-r--r-- 23.9 KB
signal.c -rw-r--r-- 94.8 KB
smp.c -rw-r--r-- 19.4 KB
smpboot.c -rw-r--r-- 6.9 KB
smpboot.h -rw-r--r-- 564 bytes
softirq.c -rw-r--r-- 18.8 KB
stacktrace.c -rw-r--r-- 1.1 KB
stop_machine.c -rw-r--r-- 17.2 KB
sys.c -rw-r--r-- 55.8 KB
sys_ni.c -rw-r--r-- 6.3 KB
sysctl.c -rw-r--r-- 62.3 KB
sysctl_binary.c -rw-r--r-- 51.0 KB
system_certificates.S -rw-r--r-- 470 bytes
system_keyring.c -rw-r--r-- 2.8 KB
task_work.c -rw-r--r-- 3.4 KB
taskstats.c -rw-r--r-- 16.2 KB
test_kprobes.c -rw-r--r-- 7.4 KB
torture.c -rw-r--r-- 19.9 KB
tracepoint.c -rw-r--r-- 13.3 KB
tsacct.c -rw-r--r-- 4.9 KB
uid16.c -rw-r--r-- 5.0 KB
up.c -rw-r--r-- 1.7 KB
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 5.3 KB
user_namespace.c -rw-r--r-- 23.0 KB
utsname.c -rw-r--r-- 2.9 KB
utsname_sysctl.c -rw-r--r-- 3.0 KB
watchdog.c -rw-r--r-- 18.9 KB
workqueue.c -rw-r--r-- 135.6 KB
workqueue_internal.h -rw-r--r-- 2.2 KB

back to top