| From c709443d6315e543ae302c0e91c188fdb59e06b2 Mon Sep 17 00:00:00 2001 |
| From: David Kilroy <kilroyd@googlemail.com> |
| Date: Sun, 5 Dec 2010 15:43:55 +0000 |
| Subject: [PATCH] orinoco: fix TKIP countermeasure behaviour |
| |
| commit 0a54917c3fc295cb61f3fb52373c173fd3b69f48 upstream. |
| |
| Enable the port when disabling countermeasures, and disable it on |
| enabling countermeasures. |
| |
| This bug causes the response of the system to certain attacks to be |
| ineffective. |
| |
| It also prevents wpa_supplicant from getting scan results, as |
| wpa_supplicant disables countermeasures on startup - preventing the |
| hardware from scanning. |
| |
| wpa_supplicant works with ap_mode=2 despite this bug because the commit |
| handler re-enables the port. |
| |
| The log tends to look like: |
| |
| State: DISCONNECTED -> SCANNING |
| Starting AP scan for wildcard SSID |
| Scan requested (ret=0) - scan timeout 5 seconds |
| EAPOL: disable timer tick |
| EAPOL: Supplicant port status: Unauthorized |
| Scan timeout - try to get results |
| Failed to get scan results |
| Failed to get scan results - try scanning again |
| Setting scan request: 1 sec 0 usec |
| Starting AP scan for wildcard SSID |
| Scan requested (ret=-1) - scan timeout 5 seconds |
| Failed to initiate AP scan. |
| |
| Reported by: Giacomo Comes <comes@naic.edu> |
| Signed-off by: David Kilroy <kilroyd@googlemail.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/wireless/orinoco/wext.c b/drivers/net/wireless/orinoco/wext.c |
| index fbcc6e1..7117d93 100644 |
| --- a/drivers/net/wireless/orinoco/wext.c |
| +++ b/drivers/net/wireless/orinoco/wext.c |
| @@ -1023,10 +1023,10 @@ static int orinoco_ioctl_set_auth(struct net_device *dev, |
| */ |
| if (param->value) { |
| priv->tkip_cm_active = 1; |
| - ret = hermes_enable_port(hw, 0); |
| + ret = hermes_disable_port(hw, 0); |
| } else { |
| priv->tkip_cm_active = 0; |
| - ret = hermes_disable_port(hw, 0); |
| + ret = hermes_enable_port(hw, 0); |
| } |
| break; |
| |
| -- |
| 1.7.4.4 |
| |