From fa3b6f6a31bccb6d19bdffbae57723013c8083aa Mon Sep 17 00:00:00 2001 From: Hemant Ramdasi Date: Fri, 27 Jan 2012 13:05:34 +0530 Subject: shrm-net : remove netif_carrier_off/on calls This patch removes netif_carrier_off() call from machine suspend sequence. Also removes netif_carrier_on() call from resume sequence. This error is introduced because of the below behaviour. Important control message PNS_PEP_STATUS_IND message from phonet stack is getting dropped sometimes in the APE sleep-wakeup transition. It happens because, the Qdisc (between Phonet and SHRM) changes to "noop" when APE goes to sleep. The normal Qdisc in operation in pfifo_fast. When APE wakes up, the transition to pfast_fifo is not fast enough as it is done in a workqueue. So before the switch happens, APE receives 3 packets very quickly and must grant credits in any of the 3 packets. This does not happen. Hence modem cannot send any new packet as it has exhausted all its credits and APE cannot send credit-grant message as it will not receive any new packet. This leads to a deadlock situation for IP data transfer. ST-Ericsson ID: 405569 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I94e1d117c4c191e27a08f6a558b26c442a750816 Signed-off-by: Hemant Ramdasi Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/47661 Reviewed-by: Srinidhi KASAGAR Reviewed-by: Dinesh Kumar SHARMA (STE) Reviewed-by: QABUILD Reviewed-by: Durga Prasada Rao BATHINA --- drivers/net/u8500_shrm.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/net/u8500_shrm.c b/drivers/net/u8500_shrm.c index 0e813bbb3cc..08597623443 100644 --- a/drivers/net/u8500_shrm.c +++ b/drivers/net/u8500_shrm.c @@ -292,23 +292,17 @@ int shrm_start_netdev(struct net_device *dev) int shrm_suspend_netdev(struct net_device *dev) { - if (netif_running(dev)) { + if (netif_running(dev)) netif_stop_queue(dev); - netif_carrier_off(dev); - } netif_device_detach(dev); - return 0; } int shrm_resume_netdev(struct net_device *dev) { netif_device_attach(dev); - if (netif_running(dev)) { - netif_carrier_on(dev); + if (netif_running(dev)) netif_wake_queue(dev); - } - return 0; } -- cgit v1.2.3