Call netif_carrier_off/on while stoping/starting netdev queues.
This fixes netdev watchdog warning and ->ndo_tx_timeout() invocation
during suspend resume stress test.
Signed-off-by: Amitkumar Karwar <[email protected]>
Fixes: 54f008497b9f09f ('mwifiex: Empty Tx queue during suspend')
Tested-by: Wei-Ning Huang <[email protected]>
---
drivers/net/wireless/marvell/mwifiex/cfg80211.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
index bb7235e..b0663bd 100644
--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
@@ -3272,8 +3272,11 @@ static int mwifiex_cfg80211_suspend(struct wiphy *wiphy,
for (i = 0; i < adapter->priv_num; i++) {
priv = adapter->priv[i];
- if (priv && priv->netdev)
+ if (priv && priv->netdev) {
mwifiex_stop_net_dev_queue(priv->netdev, adapter);
+ if (netif_carrier_ok(priv->netdev))
+ netif_carrier_off(priv->netdev);
+ }
}
for (i = 0; i < retry_num; i++) {
@@ -3344,8 +3347,11 @@ static int mwifiex_cfg80211_resume(struct wiphy *wiphy)
for (i = 0; i < adapter->priv_num; i++) {
priv = adapter->priv[i];
- if (priv && priv->netdev)
+ if (priv && priv->netdev) {
+ if (!netif_carrier_ok(priv->netdev))
+ netif_carrier_on(priv->netdev);
mwifiex_wake_up_net_dev_queue(priv->netdev, adapter);
+ }
}
priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA);
--
1.8.1.4
Hi Kalle,
> From: Amitkumar Karwar [mailto:[email protected]]
> Sent: Wednesday, March 16, 2016 8:16 PM
> To: [email protected]
> Cc: Nishant Sarmukadam; Amitkumar Karwar
> Subject: [PATCH] mwifiex: fix Tx timeout issue during suspend test
>
> Call netif_carrier_off/on while stoping/starting netdev queues.
> This fixes netdev watchdog warning and ->ndo_tx_timeout() invocation
> during suspend resume stress test.
>
> Signed-off-by: Amitkumar Karwar <[email protected]>
> Fixes: 54f008497b9f09f ('mwifiex: Empty Tx queue during suspend')
> Tested-by: Wei-Ning Huang <[email protected]>
> ---
> drivers/net/wireless/marvell/mwifiex/cfg80211.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> index bb7235e..b0663bd 100644
> --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
> @@ -3272,8 +3272,11 @@ static int mwifiex_cfg80211_suspend(struct wiphy
> *wiphy,
>
> for (i = 0; i < adapter->priv_num; i++) {
> priv = adapter->priv[i];
> - if (priv && priv->netdev)
> + if (priv && priv->netdev) {
> mwifiex_stop_net_dev_queue(priv->netdev, adapter);
> + if (netif_carrier_ok(priv->netdev))
> + netif_carrier_off(priv->netdev);
> + }
> }
>
> for (i = 0; i < retry_num; i++) {
> @@ -3344,8 +3347,11 @@ static int mwifiex_cfg80211_resume(struct wiphy
> *wiphy)
>
> for (i = 0; i < adapter->priv_num; i++) {
> priv = adapter->priv[i];
> - if (priv && priv->netdev)
> + if (priv && priv->netdev) {
> + if (!netif_carrier_ok(priv->netdev))
> + netif_carrier_on(priv->netdev);
> mwifiex_wake_up_net_dev_queue(priv->netdev, adapter);
> + }
> }
>
> priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA);
> --
> 1.8.1.4
Could you please take this patch? It fixes an issue introduced by "mwifiex: Empty Tx queue during suspend"
Regards,
Amitkumar
> Call netif_carrier_off/on while stoping/starting netdev queues.
> This fixes netdev watchdog warning and ->ndo_tx_timeout() invocation
> during suspend resume stress test.
>
> Signed-off-by: Amitkumar Karwar <[email protected]>
> Fixes: 54f008497b9f09f ('mwifiex: Empty Tx queue during suspend')
> Tested-by: Wei-Ning Huang <[email protected]>
Thanks, applied to wireless-drivers-next.git.
Kalle Valo