mirror-linux/drivers/net
Tapio Reijonen b455410146 net: fec: fix pinctrl default state restore order on resume
In fec_resume(), fec_enet_clk_enable() is called before
pinctrl_pm_select_default_state() in the non-WoL path, inverting the
ordering used in fec_suspend() which correctly switches to the sleep
pinctrl state before disabling clocks.

For PHYs with the PHY_RST_AFTER_CLK_EN flag (e.g. TI DP83848 or
SMSC LAN87xx), fec_enet_clk_enable() triggers a hardware reset pulse
via the phy-reset GPIO. With the GPIO pin still in sleep pinctrl state
at that point, the GPIO write has no physical effect and the PHY never
receives the required reset after clock enable, leading to unreliable
link establishment after system resume.

Fix by restoring the default pinctrl state before enabling clocks,
making resume the proper mirror of suspend. The call is made
unconditionally: fec_suspend() only switches to the sleep pinctrl state
on the non-WoL path and leaves the pins in the default state when WoL
is enabled, so on a WoL resume the device is already in the default
state and pinctrl_pm_select_default_state() is a no-op.

Fixes: de40ed31b3 ("net: fec: add Wake-on-LAN support")
Signed-off-by: Tapio Reijonen <tapio.reijonen@vaisala.com>
Reviewed-by: Wei Fang <wei.fang@nxp.com>
Link: https://patch.msgid.link/20260529-b4-fec-resume-pinctrl-order-v3-1-6eda0f592fca@vaisala.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-06-02 14:23:02 -07:00
..
arcnet
bonding bonding: refuse to enslave CAN devices 2026-05-27 16:58:28 -07:00
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-04-14 12:04:00 -07:00
dsa net: dsa: mt7530: untag VLAN-aware bridge PVID 2026-05-19 12:37:34 +02:00
ethernet net: fec: fix pinctrl default state restore order on resume 2026-06-02 14:23:02 -07:00
fddi FDDI: defza: Sanitise the reset safety timer 2026-05-13 17:31:01 -07:00
fjes
hyperv
ieee802154
ipa Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-04-14 12:04:00 -07:00
ipvlan Networking changes for 7.1. 2026-04-14 18:36:10 -07:00
mctp net: mctp i2c: check length before marking flow active 2026-04-28 13:11:53 +02:00
mdio net: mdio: MDIO_PIC64HPSC should depend on ARCH_MICROCHIP 2026-04-16 19:04:58 -07:00
netdevsim netdevsim: psp: rcu protect psp_dev reference 2026-05-06 17:39:20 -07:00
ovpn ovpn: disable BHs when updating device stats 2026-05-15 00:43:55 +02:00
pcs net: pcs: pcs-mtk-lynxi: fix bpi-r3 serdes configuration 2026-05-28 18:09:03 -07:00
phy net: phy: air_en8811h: add AN8811HB MCU assert/deassert support 2026-05-26 17:59:47 -07:00
plip
ppp pppoe: drop PFC frames 2026-04-20 11:35:17 -07:00
pse-pd net: pse-pd: fix sign on -ENOENT check in of_load_pse_pis() 2026-05-19 17:44:27 -07:00
slip slip: bound decode() reads against the compressed packet length 2026-04-21 10:18:18 +02:00
team net: team: fix NULL pointer dereference in team_xmit during mode change 2026-05-26 10:49:16 +02:00
thunderbolt
usb net: usb: asix: ax88772: re-add usbnet_link_change() in phylink callbacks 2026-05-04 19:04:15 -07:00
vmxnet3
vxlan vxlan: do not reuse cached ip_hdr() value after skb_tunnel_check_pmtu() 2026-05-26 18:10:55 -07:00
wan net: wan: fsl_ucc_hdlc: free tx_skbuff in uhdlc_memclean 2026-05-08 18:48:30 -07:00
wireguard wireguard: send: append trailer after expanding head 2026-05-29 13:01:27 -07:00
wireless ath.git update for v7.1-rc5 2026-05-20 11:27:00 +02:00
wwan net: wwan: iosm: fix potential memory leaks in ipc_imem_init() 2026-05-21 08:06:02 -07:00
xen-netback
Kconfig caif: remove CAIF NETWORK LAYER 2026-04-23 10:23:44 -07:00
LICENSE.SRC
Makefile net: remove ax25 and amateur radio (hamradio) subsystem 2026-04-23 10:24:02 -07:00
Space.c drivers: net: 8390: wd80x3: Remove this driver 2026-04-23 15:57:10 -07:00
amt.c
bareudp.c bareudp: fix NULL pointer dereference in bareudp_fill_metadata_dst() 2026-04-28 18:16:53 -07:00
dummy.c dummy: convert to ndo_set_rx_mode_async 2026-04-21 12:50:25 +02:00
eql.c
geneve.c
gtp.c gtp: disable BH before calling udp_tunnel_xmit_skb() 2026-04-20 11:46:24 -07:00
ifb.c net: ifb: report ethtool stats over num_tx_queues 2026-05-14 18:40:04 -07:00
loopback.c
macsec.c macsec: fix replay protection at XPN lower-PN wrap 2026-05-25 12:40:47 -07:00
macvlan.c macvlan: fix macvlan_get_size() not reserving space for IFLA_MACVLAN_BC_CUTOFF 2026-04-16 12:17:11 +02:00
macvtap.c
mdio.c
mhi_net.c
mii.c
net_failover.c net: net_failover: Fix the deadlock in slave register 2026-05-13 19:01:03 -07:00
netconsole.c netconsole: restore userdatum value on update_userdata() failure 2026-04-28 18:28:12 -07:00
netkit.c netkit: convert to ndo_set_rx_mode_async 2026-04-21 12:50:25 +02:00
nlmon.c
ntb_netdev.c
pfcp.c
rionet.c
sungem_phy.c
tap.c tap: free page on error paths in tap_get_user_xdp() 2026-05-22 10:08:59 -07:00
tun.c tun: free page on build_skb failure in tun_xdp_one() 2026-05-22 10:10:07 -07:00
tun_vnet.h
veth.c veth: fix OOB txq access in veth_poll() with asymmetric queue counts 2026-05-07 16:24:07 +02:00
virtio_net.c virtio_net: sync rss_trailer.max_tx_vq on queue_pairs change via VQ_PAIRS_SET 2026-04-23 09:35:53 -07:00
vrf.c vrf: Fix a potential NPD when removing a port from a VRF 2026-04-27 17:43:22 -07:00
vsockmon.c
xen-netfront.c