diff options
author | Richard Kennedy <richard@rsk.demon.co.uk> | 2008-11-03 11:20:04 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-01-06 13:52:00 -0800 |
commit | 46fa61f3600ad608b0fe69a17ece29323654e5c3 (patch) | |
tree | e7ef748c1232f41f9149963fbde7a7ba23311e19 /drivers/staging/wlan-ng/p80211wext.c | |
parent | 7b7e7e84bdba1553c4a8a0d6b0fa4ebddfbac420 (diff) |
Staging: wlan-ng: p80211wext.c add latest changes & remove extra nulls from wext_handlers
add the latest changes from wlan-ng-devel
remove 2 stray nulls from the wext_handler table introduced
by the tidy up patch.
Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/wlan-ng/p80211wext.c')
-rw-r--r-- | drivers/staging/wlan-ng/p80211wext.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/drivers/staging/wlan-ng/p80211wext.c b/drivers/staging/wlan-ng/p80211wext.c index 9cf05ce1f07..c795a36ad6f 100644 --- a/drivers/staging/wlan-ng/p80211wext.c +++ b/drivers/staging/wlan-ng/p80211wext.c @@ -548,10 +548,13 @@ static int p80211wext_giwencode(netdevice_t *dev, DBFENTER; + i = (erq->flags & IW_ENCODE_INDEX) - 1; + erq->flags = 0; + if (wlandev->hostwep & HOSTWEP_PRIVACYINVOKED) - erq->flags = IW_ENCODE_ENABLED; + erq->flags |= IW_ENCODE_ENABLED; else - erq->flags = IW_ENCODE_DISABLED; + erq->flags |= IW_ENCODE_DISABLED; if (wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED) erq->flags |= IW_ENCODE_RESTRICTED; @@ -614,17 +617,24 @@ static int p80211wext_siwencode(netdevice_t *dev, err = -EFAULT; goto exit; } - else { - enable = 1; + + /* Set current key number only if no keys are given */ + if (erq->flags & IW_ENCODE_NOKEY) { + result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, i); + + if (result) { + err = -EFAULT; + goto exit; + } } - } - else { - // Do not thing when no Key Index + } else { + // Use defaultkey if no Key Index + i = wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK; } /* Check if there is no key information in the iwconfig request */ - if((erq->flags & IW_ENCODE_NOKEY) == 0 && enable == 1) { + if((erq->flags & IW_ENCODE_NOKEY) == 0 ) { /*------------------------------------------------------------ * If there is WEP Key for setting, check the Key Information @@ -679,8 +689,7 @@ static int p80211wext_siwencode(netdevice_t *dev, /* Check the PrivacyInvoked flag */ if (erq->flags & IW_ENCODE_DISABLED) { result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_false); - } - else if((erq->flags & IW_ENCODE_ENABLED) || enable == 1) { + } else { result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_true); } @@ -689,7 +698,13 @@ static int p80211wext_siwencode(netdevice_t *dev, goto exit; } - /* Check the ExcludeUnencrypted flag */ + /* The security mode may be open or restricted, and its meaning + depends on the card used. With most cards, in open mode no + authentication is used and the card may also accept non- + encrypted sessions, whereas in restricted mode only encrypted + sessions are accepted and the card will use authentication if + available. + */ if (erq->flags & IW_ENCODE_RESTRICTED) { result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_true); } @@ -1746,8 +1761,6 @@ static iw_handler p80211wext_handlers[] = { (iw_handler) NULL, /* SIOCGIWAPLIST */ (iw_handler) p80211wext_siwscan, /* SIOCSIWSCAN */ (iw_handler) p80211wext_giwscan, /* SIOCGIWSCAN */ - (iw_handler) NULL, /* null */ /* SIOCSIWSCAN */ - (iw_handler) NULL, /* null */ /* SIOCGIWSCAN */ (iw_handler) p80211wext_siwessid, /* SIOCSIWESSID */ (iw_handler) p80211wext_giwessid, /* SIOCGIWESSID */ (iw_handler) NULL, /* SIOCSIWNICKN */ |