2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-28 23:23:55 +08:00
linux-next/drivers/net
Alexander Kochetkov 242bcd5ba1 net/smsc911x: Fix rare soft reset timeout issue due to PHY power-down mode
The patch affect SMSC LAN generation 4 chips with integrated PHY (LAN9221).

It is possible that PHY could enter power-down mode (ENERGYON clear),
between ENERGYON bit check in smsc911x_phy_disable_energy_detect and SRST
bit set in smsc911x_soft_reset. This could happen, for example, if someone
disconnect ethernet cable between the checks. The PHY in a power-down mode
would prevent the MAC portion of chip to be software reseted.

Initially found by code review, confirmed later using test case.

This is low probability issue, and in order to reproduce it you have to
run the script:

while true; do
	ifconfig eth0 down
	ifconfig eth0 up || break
done

While the script is running you have to plug/unplug ethernet cable many
times (using gpio controlled ethernet switch, for example) until get:

[ 4516.477783] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 4516.512207] smsc911x smsc911x.0: eth0: SMSC911x/921x identified at 0xce006000, IRQ: 336
[ 4516.524658] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 4516.559082] smsc911x smsc911x.0: eth0: SMSC911x/921x identified at 0xce006000, IRQ: 336
[ 4516.571990] ADDRCONF(NETDEV_UP): eth0: link is not ready
ifconfig: SIOCSIFFLAGS: Input/output error

The patch was reviewed by Steve Glendinning and Microchip Team.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Acked-by: Steve Glendinning <steve.glendinning@shawell.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-13 14:37:53 -05:00
..
appletalk net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
arcnet ARCNET: enable eae arcnet card support 2014-09-29 14:36:26 -04:00
bonding Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2014-10-08 21:40:54 -04:00
caif net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
can drivers/net/can/Kconfig: Let CAN_AT91 depend on HAS_IOMEM 2014-10-03 15:52:03 -07:00
cris eth_v10: remove unnecessary break after return 2014-07-20 21:29:49 -07:00
dsa dsa: mv88e6171: Fix tagging protocol/Kconfig 2014-10-28 15:27:54 -04:00
ethernet net/smsc911x: Fix rare soft reset timeout issue due to PHY power-down mode 2014-11-13 14:37:53 -05:00
fddi defxx: DEFEA's ESIC port I/O decoding cleanup 2014-09-28 17:22:10 -04:00
hamradio net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
hippi PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
hyperv hyperv: Fix the total_data_buflen in send path 2014-10-22 17:58:50 -04:00
ieee802154 mrf24j40: use pr_* / dev_* instead of printk() 2014-09-24 14:14:42 +02:00
irda drivers/net/irda/Kconfig: Let SH_IRDA depend on HAS_IOMEM 2014-10-03 15:52:04 -07:00
phy net: ptp: fix time stamp matching logic for VLAN packets. 2014-11-12 15:06:17 -05:00
plip
ppp net: ppp: Don't call bpf_prog_create() in ppp_lock 2014-11-11 15:15:03 -05:00
slip net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
team Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-08 16:22:22 -04:00
usb asix: Do full reset during ax88772_bind 2014-11-07 15:30:03 -05:00
vmxnet3 PCI changes for the v3.18 merge window: 2014-10-09 15:03:49 -04:00
wan net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
wimax kbuild: remove unnecessary "obj- := dummy.o" trick 2014-10-02 13:55:02 +02:00
wireless This contains another small set of fixes for 3.18, these are all 2014-11-04 15:56:33 -05:00
xen-netback xen-netback: reintroduce guest Rx stall detection 2014-10-25 14:15:20 -04:00
dummy.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
eql.c net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
ifb.c net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
Kconfig drivers/net: macvtap and tun depend on INET 2014-10-30 23:50:26 -04:00
LICENSE.SRC
loopback.c net: better IFF_XMIT_DST_RELEASE support 2014-10-07 13:22:11 -04:00
macvlan.c macvlan: fix a race on port dismantle and possible skb leaks 2014-10-25 16:24:02 -04:00
macvtap.c macvtap: Fix csum_start when VLAN tags are present 2014-11-03 14:52:20 -05:00
Makefile net: reduce USB network driver config options. 2014-08-05 16:48:59 -07:00
mdio.c
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c sungem: Fix global namespace pollution of phy accessors. 2014-08-27 23:07:12 -07:00
tun.c tun: Fix TUN_PKT_STRIP setting 2014-11-03 14:27:06 -05:00
veth.c net: rtnetlink - make create_link take name_assign_type 2014-07-15 16:13:07 -07:00
virtio_net.c drivers/net: Disable UFO through virtio 2014-10-30 20:01:18 -04:00
vxlan.c udptunnel: Add SKB_GSO_UDP_TUNNEL during gro_complete. 2014-11-10 15:09:45 -05:00
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-10-18 09:31:37 -07:00