aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2013-02-19 15:09:47 -0500
committerJohn W. Linville <linville@tuxdriver.com>2013-02-22 14:50:46 -0500
commit1499d9fa54a41942973bfc2c4ab12ccc5f1e15de (patch)
tree92ecc282d181ec742e32ee49fc99bd2f63191813 /drivers
parentb53cf458ea20dd7f5e32611366f63728e40c9021 (diff)
mwifiex: don't drop carrier flag over suspend
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 Signed-off-by: Daniel Drake <dsd@laptop.org> Acked-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/mwifiex/pcie.c10
-rw-r--r--drivers/net/wireless/mwifiex/sdio.c9
2 files changed, 1 insertions, 18 deletions
diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
index 4b54bcf382f3..22db934bd403 100644
--- a/drivers/net/wireless/mwifiex/pcie.c
+++ b/drivers/net/wireless/mwifiex/pcie.c
@@ -171,7 +171,7 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)
171{ 171{
172 struct mwifiex_adapter *adapter; 172 struct mwifiex_adapter *adapter;
173 struct pcie_service_card *card; 173 struct pcie_service_card *card;
174 int hs_actived, i; 174 int hs_actived;
175 175
176 if (pdev) { 176 if (pdev) {
177 card = (struct pcie_service_card *) pci_get_drvdata(pdev); 177 card = (struct pcie_service_card *) pci_get_drvdata(pdev);
@@ -191,9 +191,6 @@ static int mwifiex_pcie_suspend(struct pci_dev *pdev, pm_message_t state)
191 /* Indicate device suspended */ 191 /* Indicate device suspended */
192 adapter->is_suspended = true; 192 adapter->is_suspended = true;
193 193
194 for (i = 0; i < adapter->priv_num; i++)
195 netif_carrier_off(adapter->priv[i]->netdev);
196
197 return 0; 194 return 0;
198} 195}
199 196
@@ -209,7 +206,6 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)
209{ 206{
210 struct mwifiex_adapter *adapter; 207 struct mwifiex_adapter *adapter;
211 struct pcie_service_card *card; 208 struct pcie_service_card *card;
212 int i;
213 209
214 if (pdev) { 210 if (pdev) {
215 card = (struct pcie_service_card *) pci_get_drvdata(pdev); 211 card = (struct pcie_service_card *) pci_get_drvdata(pdev);
@@ -231,10 +227,6 @@ static int mwifiex_pcie_resume(struct pci_dev *pdev)
231 227
232 adapter->is_suspended = false; 228 adapter->is_suspended = false;
233 229
234 for (i = 0; i < adapter->priv_num; i++)
235 if (adapter->priv[i]->media_connected)
236 netif_carrier_on(adapter->priv[i]->netdev);
237
238 mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA), 230 mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA),
239 MWIFIEX_ASYNC_CMD); 231 MWIFIEX_ASYNC_CMD);
240 232
diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c
index e35b67a9e6a6..e819a4e82ca2 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)
161 struct sdio_mmc_card *card; 161 struct sdio_mmc_card *card;
162 struct mwifiex_adapter *adapter; 162 struct mwifiex_adapter *adapter;
163 mmc_pm_flag_t pm_flag = 0; 163 mmc_pm_flag_t pm_flag = 0;
164 int i;
165 int ret = 0; 164 int ret = 0;
166 165
167 if (func) { 166 if (func) {
@@ -198,9 +197,6 @@ static int mwifiex_sdio_suspend(struct device *dev)
198 /* Indicate device suspended */ 197 /* Indicate device suspended */
199 adapter->is_suspended = true; 198 adapter->is_suspended = true;
200 199
201 for (i = 0; i < adapter->priv_num; i++)
202 netif_carrier_off(adapter->priv[i]->netdev);
203
204 return ret; 200 return ret;
205} 201}
206 202
@@ -220,7 +216,6 @@ static int mwifiex_sdio_resume(struct device *dev)
220 struct sdio_mmc_card *card; 216 struct sdio_mmc_card *card;
221 struct mwifiex_adapter *adapter; 217 struct mwifiex_adapter *adapter;
222 mmc_pm_flag_t pm_flag = 0; 218 mmc_pm_flag_t pm_flag = 0;
223 int i;
224 219
225 if (func) { 220 if (func) {
226 pm_flag = sdio_get_host_pm_caps(func); 221 pm_flag = sdio_get_host_pm_caps(func);
@@ -243,10 +238,6 @@ static int mwifiex_sdio_resume(struct device *dev)
243 238
244 adapter->is_suspended = false; 239 adapter->is_suspended = false;
245 240
246 for (i = 0; i < adapter->priv_num; i++)
247 if (adapter->priv[i]->media_connected)
248 netif_carrier_on(adapter->priv[i]->netdev);
249
250 /* Disable Host Sleep */ 241 /* Disable Host Sleep */
251 mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA), 242 mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA),
252 MWIFIEX_ASYNC_CMD); 243 MWIFIEX_ASYNC_CMD);