diff options
author | Hemant Ramdasi <hemant.ramdasi@stericsson.com> | 2012-01-27 13:05:34 +0530 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:07:27 +0200 |
commit | 5885e4a2af9b0f4e4d0fd4decfab42563d24b477 (patch) | |
tree | b2d530d7d2bb31709f7f329d456b16d11c8629aa | |
parent | 30713fa549ec7984e6755de8df363c6871723c88 (diff) |
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 <hemant.ramdasi@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/47661
Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
Reviewed-by: Dinesh Kumar SHARMA (STE) <dinesh.sharma@stericsson.com>
Reviewed-by: QABUILD
Reviewed-by: Durga Prasada Rao BATHINA <durgaprasadarao.b@stericsson.com>
-rw-r--r-- | drivers/net/u8500_shrm.c | 10 |
1 files 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; } |