Search Linux Wireless

RE: [PATCH] mwifiex: don't drop carrier flag over suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Daniel,

> If the system suspends with mwifiex wifi powered on, and is then woken
> by an ICMP ping packet, the ping response is discarded by the kernel
> because the kernel incorrectly thinks there is no carrier.
> 
> I can't see any valid reason to want to report loss of carrier here,
> so remove the offending code.
> 
> Fixes http://dev.laptop.org/ticket/12554

Thanks for the patch.

> 
> Signed-off-by: Daniel Drake <dsd@xxxxxxxxxx>

Acked-by: Bing Zhao <bzhao@xxxxxxxxxxx>

Thanks,
Bing

> ---
>  drivers/net/wireless/mwifiex/pcie.c | 10 +---------
>  drivers/net/wireless/mwifiex/sdio.c |  9 ---------
>  2 files changed, 1 insertion(+), 18 deletions(-)
> 
> diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
> index b879e13..db29dea 100644
> --- a/drivers/net/wireless/mwifiex/pcie.c
> +++ b/drivers/net/wireless/mwifiex/pcie.c
> @@ -157,7 +157,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)
>  {
>  	struct mwifiex_adapter *adapter;
>  	struct pcie_service_card *card;
> -	int hs_actived, i;
> +	int hs_actived;
> 
>  	if (pdev) {
>  		card = (struct pcie_service_card *) pci_get_drvdata(pdev);
> @@ -177,9 +177,6 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)
>  	/* Indicate device suspended */
>  	adapter->is_suspended = true;
> 
> -	for (i = 0; i < adapter->priv_num; i++)
> -		netif_carrier_off(adapter->priv[i]->netdev);
> -
>  	return 0;
>  }
> 
> @@ -195,7 +192,6 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)
>  {
>  	struct mwifiex_adapter *adapter;
>  	struct pcie_service_card *card;
> -	int i;
> 
>  	if (pdev) {
>  		card = (struct pcie_service_card *) pci_get_drvdata(pdev);
> @@ -217,10 +213,6 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)
> 
>  	adapter->is_suspended = false;
> 
> -	for (i = 0; i < adapter->priv_num; i++)
> -		if (adapter->priv[i]->media_connected)
> -			netif_carrier_on(adapter->priv[i]->netdev);
> -
>  	mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA),
>  			  MWIFIEX_ASYNC_CMD);
> 
> diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c
> index 5a1c1d0..133ecb5 100644
> --- a/drivers/net/wireless/mwifiex/sdio.c
> +++ b/drivers/net/wireless/mwifiex/sdio.c
> @@ -161,7 +161,6 @@ static int mwifiex_sdio_suspend(struct device *dev)
>  	struct sdio_mmc_card *card;
>  	struct mwifiex_adapter *adapter;
>  	mmc_pm_flag_t pm_flag = 0;
> -	int i;
>  	int ret = 0;
> 
>  	if (func) {
> @@ -198,9 +197,6 @@ static int mwifiex_sdio_suspend(struct device *dev)
>  	/* Indicate device suspended */
>  	adapter->is_suspended = true;
> 
> -	for (i = 0; i < adapter->priv_num; i++)
> -		netif_carrier_off(adapter->priv[i]->netdev);
> -
>  	return ret;
>  }
> 
> @@ -220,7 +216,6 @@ static int mwifiex_sdio_resume(struct device *dev)
>  	struct sdio_mmc_card *card;
>  	struct mwifiex_adapter *adapter;
>  	mmc_pm_flag_t pm_flag = 0;
> -	int i;
> 
>  	if (func) {
>  		pm_flag = sdio_get_host_pm_caps(func);
> @@ -243,10 +238,6 @@ static int mwifiex_sdio_resume(struct device *dev)
> 
>  	adapter->is_suspended = false;
> 
> -	for (i = 0; i < adapter->priv_num; i++)
> -		if (adapter->priv[i]->media_connected)
> -			netif_carrier_on(adapter->priv[i]->netdev);
> -
>  	/* Disable Host Sleep */
>  	mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA),
>  			  MWIFIEX_ASYNC_CMD);
> --
> 1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux