linux/drivers/net/ethernet/freescale
Claudiu Manoil 614b42426c gianfar: Fix suspend/resume for wol magic packet
If we disable NAPI in the first place we can mask the device's
interrupts (and halt it) without fearing that imask may be
concurrently accessed from interrupt context, so there's
no need to do local_irq_save() around gfar_halt_nodisable().
lock_rx_qs()/unlock_tx_qs() are just obsoleted and potentially
buggy routines.  The txlock is currently used in the driver only
to manage TX congestion, it has nothing to do with halting the
device.  With these changes, the TX processing is stopped before
gfar_halt().

Compact gfar_halt() is used instead of gfar_halt_nodisable(),
as it disables Rx/TX DMA h/w blocks and the Rx/TX h/w queues.
gfar_start() re-enables all these blocks on resume.  Enabling
the magic-packet mode remains the same, note that the RX block
is re-enabled just before entering sleep mode.

Add IRQF_NO_SUSPEND flag for the error interrupt line, to signal
that the interrupt line must remain active during sleep in order
to wake the system by magic packet (MAG) reception interrupt.
(On some systems the MAG interrupt did trigger w/o this flag
as well, but on others it didn't.)

Without these fixes, when suspended during fair Tx traffic the
interface occasionally failed to be woken up by magic packet.

Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-07-31 15:41:49 -07:00
..
fs_enet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-06-24 02:58:51 -07:00
fec_main.c net: fec: Ensure clocks are enabled while using mdio bus 2015-07-27 01:21:47 -07:00
fec_mpc52xx_phy.c net/fsl: constify of_device_id array 2015-03-17 15:00:21 -04:00
fec_mpc52xx.c net/fsl: constify of_device_id array 2015-03-17 15:00:21 -04:00
fec_mpc52xx.h
fec_ptp.c net: fec: introduce fec_ptp_stop and use in probe fail path 2015-07-26 21:51:53 -07:00
fec.h net: fec: introduce fec_ptp_stop and use in probe fail path 2015-07-26 21:51:53 -07:00
fsl_pq_mdio.c net/fsl: constify of_device_id array 2015-03-17 15:00:21 -04:00
gianfar_ethtool.c gianfar: correct the bad expression while writing bit-pattern 2015-02-04 13:55:24 -08:00
gianfar_ptp.c ptp: gianfar: use helpers for converting ns to timespec. 2015-03-31 17:19:18 -04:00
gianfar.c gianfar: Fix suspend/resume for wol magic packet 2015-07-31 15:41:49 -07:00
gianfar.h gianfar: Make FCB access endian safe 2015-03-15 19:56:47 -04:00
Kconfig net/fsl: remove dependency FSL_SOC for Gianfar 2015-06-25 02:13:04 -07:00
Makefile gianfar: Remove sysfs stubs for FIFOCFG and stashing 2014-02-18 15:03:02 -05:00
ucc_geth_ethtool.c net: get rid of SET_ETHTOOL_OPS 2014-05-13 17:43:20 -04:00
ucc_geth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-04-02 16:16:53 -04:00
ucc_geth.h net: remove skb recycling 2012-10-07 00:40:54 -04:00
xgmac_mdio.c net/fsl: constify of_device_id array 2015-03-17 15:00:21 -04:00