Ethernet connectivity drops periodically

Originator:craig.hockenberry
Number:rdar://18444866 Date Originated:
Status:Open Resolved:
Product:OS X Product Version:10.10 (14A361c)
Classification:Crash/Hang/Data Loss Reproducible:Sometimes
 
Ethernet interfaces start to timeout for no apparent reason. I cannot determine a specific set of events that can reproduce this behavior, but I notice that it most often happens after waking from sleep.

When the problem occurs, all requests on the currently active interface timeout:

====
Myrtle:Warbler craig$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
^C
====

Sometimes, switching the physical cable from en0 to en1 (or vice versa) restores connectivity.

Other behavior I've seen is that switching System Preferences > Network > <Interface> > Advanced > Hardware from "Automatic" to "Manual" sometimes causes the hardware to wake up when the changes are applied:

====
Request timeout for icmp_seq 330
Request timeout for icmp_seq 331
Request timeout for icmp_seq 332
Request timeout for icmp_seq 333
Request timeout for icmp_seq 334
Request timeout for icmp_seq 335
Request timeout for icmp_seq 336
ping: sendto: No route to host
Request timeout for icmp_seq 337
ping: sendto: No route to host
Request timeout for icmp_seq 338
ping: sendto: No route to host
Request timeout for icmp_seq 339
ping: sendto: No route to host
Request timeout for icmp_seq 340
ping: sendto: No route to host
Request timeout for icmp_seq 341

=> apply changes in Network panel of System Preferences

Request timeout for icmp_seq 342
64 bytes from 192.168.0.1: icmp_seq=343 ttl=64 time=0.721 ms
64 bytes from 192.168.0.1: icmp_seq=344 ttl=64 time=0.731 ms
64 bytes from 192.168.0.1: icmp_seq=345 ttl=64 time=0.637 ms
64 bytes from 192.168.0.1: icmp_seq=346 ttl=64 time=0.642 ms
64 bytes from 192.168.0.1: icmp_seq=347 ttl=64 time=0.689 ms
64 bytes from 192.168.0.1: icmp_seq=348 ttl=64 time=0.730 ms
64 bytes from 192.168.0.1: icmp_seq=349 ttl=64 time=0.723 ms
64 bytes from 192.168.0.1: icmp_seq=350 ttl=64 time=0.673 ms
64 bytes from 192.168.0.1: icmp_seq=351 ttl=64 time=0.621 ms
64 bytes from 192.168.0.1: icmp_seq=352 ttl=64 time=11.755 ms
Request timeout for icmp_seq 353
Request timeout for icmp_seq 354
Request timeout for icmp_seq 355
Request timeout for icmp_seq 356
Request timeout for icmp_seq 357
Request timeout for icmp_seq 358
Request timeout for icmp_seq 359
Request timeout for icmp_seq 360
====

This also shows some consistent behavior: the ping time increases just before the interface goes dead (this machine is a Mac Pro connected to the router with Gigabit Ethernet.)

Taking the interface down and back up again does something similar. In this case, the interface remained active until a web page was loaded in my browser (Google Chrome):

====
Myrtle:Warbler craig$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4

==> sudo ifconfig en1 down

ping: sendto: No route to host
Request timeout for icmp_seq 5
ping: sendto: No route to host
Request timeout for icmp_seq 6
ping: sendto: No route to host
Request timeout for icmp_seq 7
ping: sendto: No route to host
Request timeout for icmp_seq 8
ping: sendto: No route to host
Request timeout for icmp_seq 9
ping: sendto: No route to host
Request timeout for icmp_seq 10
ping: sendto: No route to host
Request timeout for icmp_seq 11
ping: sendto: No route to host
Request timeout for icmp_seq 12
ping: sendto: No route to host
Request timeout for icmp_seq 13
ping: sendto: No route to host
Request timeout for icmp_seq 14
ping: sendto: No route to host
Request timeout for icmp_seq 15
ping: sendto: No route to host
Request timeout for icmp_seq 16
ping: sendto: No route to host
Request timeout for icmp_seq 17
ping: sendto: No route to host
Request timeout for icmp_seq 18

==> sudo ifconfig en1 up

Request timeout for icmp_seq 19
64 bytes from 192.168.0.1: icmp_seq=20 ttl=64 time=0.596 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=64 time=0.656 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=64 time=0.722 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=64 time=0.594 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=64 time=0.714 ms
64 bytes from 192.168.0.1: icmp_seq=25 ttl=64 time=0.674 ms
64 bytes from 192.168.0.1: icmp_seq=26 ttl=64 time=0.751 ms
64 bytes from 192.168.0.1: icmp_seq=27 ttl=64 time=0.702 ms
64 bytes from 192.168.0.1: icmp_seq=28 ttl=64 time=0.741 ms
64 bytes from 192.168.0.1: icmp_seq=29 ttl=64 time=0.662 ms
64 bytes from 192.168.0.1: icmp_seq=30 ttl=64 time=0.677 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=64 time=0.632 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=64 time=0.702 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=64 time=0.613 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=64 time=0.750 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=64 time=0.656 ms
64 bytes from 192.168.0.1: icmp_seq=36 ttl=64 time=0.752 ms
64 bytes from 192.168.0.1: icmp_seq=37 ttl=64 time=0.717 ms
64 bytes from 192.168.0.1: icmp_seq=38 ttl=64 time=0.722 ms
64 bytes from 192.168.0.1: icmp_seq=39 ttl=64 time=0.730 ms
64 bytes from 192.168.0.1: icmp_seq=40 ttl=64 time=0.707 ms
64 bytes from 192.168.0.1: icmp_seq=41 ttl=64 time=0.711 ms
64 bytes from 192.168.0.1: icmp_seq=42 ttl=64 time=0.763 ms
64 bytes from 192.168.0.1: icmp_seq=43 ttl=64 time=0.821 ms
64 bytes from 192.168.0.1: icmp_seq=44 ttl=64 time=0.670 ms
64 bytes from 192.168.0.1: icmp_seq=45 ttl=64 time=0.648 ms
64 bytes from 192.168.0.1: icmp_seq=46 ttl=64 time=0.748 ms
64 bytes from 192.168.0.1: icmp_seq=47 ttl=64 time=0.747 ms
64 bytes from 192.168.0.1: icmp_seq=48 ttl=64 time=0.817 ms

==> load web page

Request timeout for icmp_seq 49
Request timeout for icmp_seq 50
Request timeout for icmp_seq 51
Request timeout for icmp_seq 52
Request timeout for icmp_seq 53
Request timeout for icmp_seq 54
Request timeout for icmp_seq 55
Request timeout for icmp_seq 56
Request timeout for icmp_seq 57
Request timeout for icmp_seq 58
Request timeout for icmp_seq 59
Request timeout for icmp_seq 60
====

Finally, if I change the interface to use an address supplied by DHCP, I get back a 169.254.132.* self-assigned IP address. More proof that the hardware is wedged.

At present, the only way I know to fix this problem is to restart my Mac. For a machine that used to go months between restarts, doing it every day or two is a real disruption to my productivity.

Note:

I have included a system report and screenshots of my Network settings.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!