| From dd9c46408fdc07098333655ff27edf8cac8d9fcf Mon Sep 17 00:00:00 2001 |
| From: Stanislaw Gruszka <sgruszka@redhat.com> |
| Date: Tue, 7 May 2013 18:07:06 +0200 |
| Subject: iwl4965: workaround connection regression on passive channel |
| |
| From: Stanislaw Gruszka <sgruszka@redhat.com> |
| |
| commit dd9c46408fdc07098333655ff27edf8cac8d9fcf upstream. |
| |
| Jake reported that since commit 1672c0e31917f49d31d30d79067103432bc20cc7 |
| "mac80211: start auth/assoc timeout on frame status", he is unable to |
| connect to his AP, which is configured to use passive channel. |
| |
| After switch to passive channel 4965 firmware drops any TX packet until |
| it receives beacon. Before commit 1672c0e3 we waited on channel and |
| retransmit packet after 200ms, that makes we receive beacon on the |
| meantime and association process succeed. New mac80211 behaviour cause |
| that any ASSOC frame fail immediately on iwl4965 and we can not |
| associate. |
| |
| This patch restore old mac80211 behaviour for iwl4965, by removing |
| IEEE80211_HW_REPORTS_TX_ACK_STATUS feature. This feature will be |
| added again to iwl4965 driver, when different, more complex |
| workaround for this firmware issue, will be added to the driver. |
| |
| Bisected-by: Jake Edge <jake@lwn.net> |
| Reported-and-tested-by: Jake Edge <jake@lwn.net> |
| Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/iwlegacy/4965-mac.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/drivers/net/wireless/iwlegacy/4965-mac.c |
| +++ b/drivers/net/wireless/iwlegacy/4965-mac.c |
| @@ -5740,8 +5740,7 @@ il4965_mac_setup_register(struct il_priv |
| hw->flags = |
| IEEE80211_HW_SIGNAL_DBM | IEEE80211_HW_AMPDU_AGGREGATION | |
| IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC | IEEE80211_HW_SPECTRUM_MGMT | |
| - IEEE80211_HW_REPORTS_TX_ACK_STATUS | IEEE80211_HW_SUPPORTS_PS | |
| - IEEE80211_HW_SUPPORTS_DYNAMIC_PS; |
| + IEEE80211_HW_SUPPORTS_PS | IEEE80211_HW_SUPPORTS_DYNAMIC_PS; |
| if (il->cfg->sku & IL_SKU_N) |
| hw->flags |= |
| IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS | |