diff options
author | Moritz Muehlenhoff <jmm@debian.org> | 2009-02-08 02:20:50 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-03 14:53:21 -0700 |
commit | c7d4bd7d290b4f7a7b9888751df3c951ce35c13b (patch) | |
tree | e2f998d34e182813112881d1c2aa6c366bf14d25 /drivers/staging/wlan-ng/p80211wext.c | |
parent | e573aaa4fd2bf704ce7edb37905fb5e66c886444 (diff) | |
download | op-kernel-dev-c7d4bd7d290b4f7a7b9888751df3c951ce35c13b.zip op-kernel-dev-c7d4bd7d290b4f7a7b9888751df3c951ce35c13b.tar.gz |
Staging: wlan-ng: p80211wext.c: Coding style cleanups
Signed-off-by: Moritz Muehlenhoff <jmm@debian.org>
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 | 1110 |
1 files changed, 576 insertions, 534 deletions
diff --git a/drivers/staging/wlan-ng/p80211wext.c b/drivers/staging/wlan-ng/p80211wext.c index 9a638e2..2d35093 100644 --- a/drivers/staging/wlan-ng/p80211wext.c +++ b/drivers/staging/wlan-ng/p80211wext.c @@ -79,16 +79,14 @@ static int p80211wext_giwessid(netdevice_t *dev, static u8 p80211_mhz_to_channel(u16 mhz) { - if (mhz >= 5000) { - return ((mhz - 5000) / 5); - } + if (mhz >= 5000) + return (mhz - 5000) / 5; if (mhz == 2482) return 14; - if (mhz >= 2407) { - return ((mhz - 2407) / 5); - } + if (mhz >= 2407) + return (mhz - 2407) / 5; return 0; } @@ -102,19 +100,15 @@ static u16 p80211_channel_to_mhz(u8 ch, int dot11a) return 0; /* 5G */ - - if (dot11a) { - return (5000 + (5 * ch)); - } + if (dot11a) + return 5000 + (5 * ch); /* 2.4G */ - if (ch == 14) return 2484; - if ((ch < 14) && (ch > 0)) { - return (2407 + (5 * ch)); - } + if ((ch < 14) && (ch > 0)) + return 2407 + (5 * ch); return 0; } @@ -124,44 +118,41 @@ static const long p80211wext_channel_freq[] = { 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484 }; + #define NUM_CHANNELS ARRAY_SIZE(p80211wext_channel_freq) -/* steal a spare bit to store the shared/opensystems state. should default to open if not set */ +/* steal a spare bit to store the shared/opensystems state. + should default to open if not set */ #define HOSTWEP_SHAREDKEY BIT(3) - -/** function declarations =============== */ - -static int qual_as_percent(int snr ) { - if ( snr <= 0 ) - return 0; - if ( snr <= 40 ) - return snr*5/2; - return 100; +static int qual_as_percent(int snr) +{ + if (snr <= 0) + return 0; + if (snr <= 40) + return snr * 5 / 2; + return 100; } - - - static int p80211wext_dorequest(wlandevice_t *wlandev, u32 did, u32 data) { - p80211msg_dot11req_mibset_t msg; - p80211item_uint32_t mibitem; - int result; + p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + int result; msg.msgcode = DIDmsg_dot11req_mibset; mibitem.did = did; mibitem.data = data; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); return result; } static int p80211wext_autojoin(wlandevice_t *wlandev) { - p80211msg_lnxreq_autojoin_t msg; - struct iw_point data; + p80211msg_lnxreq_autojoin_t msg; + struct iw_point data; char ssid[IW_ESSID_MAX_SIZE]; int result; @@ -175,23 +166,22 @@ static int p80211wext_autojoin(wlandevice_t *wlandev) goto exit; } - if ( wlandev->hostwep & HOSTWEP_SHAREDKEY ) - msg.authtype.data = P80211ENUM_authalg_sharedkey; + if (wlandev->hostwep & HOSTWEP_SHAREDKEY) + msg.authtype.data = P80211ENUM_authalg_sharedkey; else - msg.authtype.data = P80211ENUM_authalg_opensystem; + msg.authtype.data = P80211ENUM_authalg_opensystem; msg.msgcode = DIDmsg_lnxreq_autojoin; /* Trim the last '\0' to fit the SSID format */ - if (data.length && ssid[data.length-1] == '\0') { + if (data.length && ssid[data.length - 1] == '\0') data.length = data.length - 1; - } memcpy(msg.ssid.data.data, ssid, data.length); msg.ssid.data.len = data.length; - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -205,15 +195,15 @@ exit: } /* called by /proc/net/wireless */ -struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev) +struct iw_statistics *p80211wext_get_wireless_stats(netdevice_t * dev) { - p80211msg_lnxreq_commsquality_t quality; + p80211msg_lnxreq_commsquality_t quality; wlandevice_t *wlandev = dev->ml_priv; - struct iw_statistics* wstats = &wlandev->wstats; + struct iw_statistics *wstats = &wlandev->wstats; int retval; /* Check */ - if ( (wlandev == NULL) || (wlandev->msdstate != WLAN_MSD_RUNNING) ) + if ((wlandev == NULL) || (wlandev->msdstate != WLAN_MSD_RUNNING)) return NULL; /* XXX Only valid in station mode */ @@ -225,22 +215,22 @@ struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev) quality.dbm.status = P80211ENUM_msgitem_status_data_ok; /* send message to nsd */ - if ( wlandev->mlmerequest == NULL ) + if (wlandev->mlmerequest == NULL) return NULL; - retval = wlandev->mlmerequest(wlandev, (p80211msg_t*) &quality); + retval = wlandev->mlmerequest(wlandev, (p80211msg_t *)&quality); - wstats->qual.qual = qual_as_percent(quality.link.data); /* overall link quality */ - wstats->qual.level = quality.level.data; /* instant signal level */ - wstats->qual.noise = quality.noise.data; /* instant noise level */ + wstats->qual.qual = qual_as_percent(quality.link.data); /* overall link quality */ + wstats->qual.level = quality.level.data; /* instant signal level */ + wstats->qual.noise = quality.noise.data; /* instant noise level */ wstats->qual.updated = IW_QUAL_ALL_UPDATED | IW_QUAL_DBM; wstats->discard.code = wlandev->rx.decrypt_err; wstats->discard.nwid = 0; wstats->discard.misc = 0; - wstats->discard.fragment = 0; // incomplete fragments - wstats->discard.retries = 0; // tx retries. + wstats->discard.fragment = 0; /* incomplete fragments */ + wstats->discard.retries = 0; /* tx retries. */ wstats->miss.beacon = 0; return wstats; @@ -280,15 +270,15 @@ static int p80211wext_giwfreq(netdevice_t *dev, struct iw_freq *freq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -306,7 +296,7 @@ static int p80211wext_giwfreq(netdevice_t *dev, freq->e = 1; freq->m = p80211_channel_to_mhz(mibitem.data, 0) * 100000; - exit: +exit: return err; } @@ -315,8 +305,8 @@ static int p80211wext_siwfreq(netdevice_t *dev, struct iw_freq *freq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; @@ -329,20 +319,20 @@ static int p80211wext_siwfreq(netdevice_t *dev, mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel; mibitem.status = P80211ENUM_msgitem_status_data_ok; - if ( (freq->e == 0) && (freq->m <= 1000) ) + if ((freq->e == 0) && (freq->m <= 1000)) mibitem.data = freq->m; else mibitem.data = p80211_mhz_to_channel(freq->m); memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; goto exit; } - exit: +exit: return err; } @@ -375,10 +365,10 @@ static int p80211wext_siwmode(netdevice_t *dev, __u32 *mode, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; - int result; - int err = 0; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; + int result; + int err = 0; if (!wlan_wext_write) { err = (-EOPNOTSUPP); @@ -416,29 +406,28 @@ static int p80211wext_siwmode(netdevice_t *dev, mibitem.did = DIDmib_p2_p2Static_p2CnfPortType; mibitem.data = (*mode == IW_MODE_ADHOC) ? 0 : 1; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) err = -EFAULT; - exit: +exit: return err; } - static int p80211wext_giwrange(netdevice_t *dev, struct iw_request_info *info, struct iw_point *data, char *extra) { - struct iw_range *range = (struct iw_range *) extra; + struct iw_range *range = (struct iw_range *)extra; int i, val; - // for backward compatability set size & zero everything we don't understand + /* for backward compatability set size and zero everything we don't understand */ data->length = sizeof(*range); - memset(range,0,sizeof(*range)); + memset(range, 0, sizeof(*range)); range->txpower_capa = IW_TXPOW_DBM; - // XXX what about min/max_pmp, min/max_pmt, etc. + /* XXX what about min/max_pmp, min/max_pmt, etc. */ range->we_version_compiled = WIRELESS_EXT; range->we_version_source = 13; @@ -448,18 +437,18 @@ static int p80211wext_giwrange(netdevice_t *dev, range->min_retry = 0; range->max_retry = 255; - range->event_capa[0] = (IW_EVENT_CAPA_K_0 | //mode/freq/ssid - IW_EVENT_CAPA_MASK(SIOCGIWAP) | - IW_EVENT_CAPA_MASK(SIOCGIWSCAN)); - range->event_capa[1] = IW_EVENT_CAPA_K_1; //encode - range->event_capa[4] = (IW_EVENT_CAPA_MASK(IWEVQUAL) | - IW_EVENT_CAPA_MASK(IWEVCUSTOM) ); + range->event_capa[0] = (IW_EVENT_CAPA_K_0 | /* mode/freq/ssid */ + IW_EVENT_CAPA_MASK(SIOCGIWAP) | + IW_EVENT_CAPA_MASK(SIOCGIWSCAN)); + range->event_capa[1] = IW_EVENT_CAPA_K_1; /* encode */ + range->event_capa[4] = (IW_EVENT_CAPA_MASK(IWEVQUAL) | + IW_EVENT_CAPA_MASK(IWEVCUSTOM)); range->num_channels = NUM_CHANNELS; /* XXX need to filter against the regulatory domain &| active set */ val = 0; - for (i = 0; i < NUM_CHANNELS ; i++) { + for (i = 0; i < NUM_CHANNELS; i++) { range->freq[val].i = i + 1; range->freq[val].m = p80211wext_channel_freq[i] * 100000; range->freq[val].e = 1; @@ -473,7 +462,7 @@ static int p80211wext_giwrange(netdevice_t *dev, range->max_qual.level = 0; range->max_qual.noise = 0; range->sensitivity = 3; - // XXX these need to be nsd-specific! + /* XXX these need to be nsd-specific! */ range->min_rts = 0; range->max_rts = 2347; @@ -485,11 +474,11 @@ static int p80211wext_giwrange(netdevice_t *dev, range->encoding_size[0] = 5; range->encoding_size[1] = 13; - // XXX what about num_bitrates/throughput? + /* XXX what about num_bitrates/throughput? */ range->num_bitrates = 0; /* estimated max throughput */ - // XXX need to cap it if we're running at ~2Mbps.. + /* XXX need to cap it if we're running at ~2Mbps.. */ range->throughput = 5500000; return 0; @@ -545,7 +534,7 @@ static int p80211wext_giwencode(netdevice_t *dev, erq->length = wlandev->wep_keylens[i]; memcpy(key, wlandev->wep_keys[i], erq->length); - exit: +exit: return err; } @@ -554,8 +543,8 @@ static int p80211wext_siwencode(netdevice_t *dev, struct iw_point *erq, char *key) { wlandevice_t *wlandev = dev->ml_priv; - p80211msg_dot11req_mibset_t msg; - p80211item_pstr32_t pstr; + p80211msg_dot11req_mibset_t msg; + p80211item_pstr32_t pstr; int err = 0; int result = 0; @@ -567,18 +556,20 @@ static int p80211wext_siwencode(netdevice_t *dev, } /* Check the Key index first. */ - if((i = (erq->flags & IW_ENCODE_INDEX))) { + if ((i = (erq->flags & IW_ENCODE_INDEX))) { if ((i < 1) || (i > NUM_WEPKEYS)) { err = -EINVAL; goto exit; - } - else + } else i--; /* 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); + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, + i); if (result) { err = -EFAULT; @@ -587,12 +578,12 @@ static int p80211wext_siwencode(netdevice_t *dev, } } else { - // Use defaultkey if no Key Index + /* 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 ) { + if ((erq->flags & IW_ENCODE_NOKEY) == 0) { /*------------------------------------------------------------ * If there is WEP Key for setting, check the Key Information @@ -609,32 +600,35 @@ static int p80211wext_siwencode(netdevice_t *dev, memcpy(pstr.data.data, key, erq->length); pstr.data.len = erq->length; - switch(i) - { - case 0: - pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0; - break; - - case 1: - pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1; - break; - - case 2: - pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2; - break; - - case 3: - pstr.did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3; - break; - - default: - err = -EINVAL; - goto exit; + switch (i) { + case 0: + pstr.did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0; + break; + + case 1: + pstr.did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1; + break; + + case 2: + pstr.did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2; + break; + + case 3: + pstr.did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3; + break; + + default: + err = -EINVAL; + goto exit; } msg.msgcode = DIDmsg_dot11req_mibset; memcpy(&msg.mibattribute.data, &pstr, sizeof(pstr)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -646,9 +640,15 @@ 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); + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, + P80211ENUM_truth_false); } else { - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_true); + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, + P80211ENUM_truth_true); } if (result) { @@ -657,17 +657,22 @@ static int p80211wext_siwencode(netdevice_t *dev, } /* 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. - */ + 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); - } - else if (erq->flags & IW_ENCODE_OPEN) { - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_false); + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, + P80211ENUM_truth_true); + } else if (erq->flags & IW_ENCODE_OPEN) { + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, + P80211ENUM_truth_false); } if (result) { @@ -675,7 +680,7 @@ static int p80211wext_siwencode(netdevice_t *dev, goto exit; } - exit: +exit: return err; } @@ -695,7 +700,7 @@ static int p80211wext_giwessid(netdevice_t *dev, data->length++; #endif } else { - memset(essid, 0, sizeof(wlandev->ssid.data)); + memset(essid, 0, sizeof(wlandev->ssid.data)); data->length = 0; data->flags = 0; } @@ -708,7 +713,7 @@ static int p80211wext_siwessid(netdevice_t *dev, struct iw_point *data, char *essid) { wlandevice_t *wlandev = dev->ml_priv; - p80211msg_lnxreq_autojoin_t msg; + p80211msg_lnxreq_autojoin_t msg; int result; int err = 0; @@ -719,41 +724,38 @@ static int p80211wext_siwessid(netdevice_t *dev, goto exit; } - - if ( wlandev->hostwep & HOSTWEP_SHAREDKEY ) - msg.authtype.data = P80211ENUM_authalg_sharedkey; + if (wlandev->hostwep & HOSTWEP_SHAREDKEY) + msg.authtype.data = P80211ENUM_authalg_sharedkey; else - msg.authtype.data = P80211ENUM_authalg_opensystem; + msg.authtype.data = P80211ENUM_authalg_opensystem; msg.msgcode = DIDmsg_lnxreq_autojoin; #if (WIRELESS_EXT < 21) - if (length) length--; + if (length) + length--; #endif /* Trim the last '\0' to fit the SSID format */ - - if (length && essid[length-1] == '\0') { - length--; - } + if (length && essid[length - 1] == '\0') + length--; memcpy(msg.ssid.data.data, essid, length); msg.ssid.data.len = length; - pr_debug("autojoin_ssid for %s \n",essid); - result = p80211req_dorequest(wlandev, (u8*)&msg); - pr_debug("autojoin_ssid %d\n",result); + pr_debug("autojoin_ssid for %s \n", essid); + result = p80211req_dorequest(wlandev, (u8 *)&msg); + pr_debug("autojoin_ssid %d\n", result); if (result) { err = -EFAULT; goto exit; } - exit: +exit: return err; } - static int p80211wext_siwcommit(netdevice_t *dev, struct iw_request_info *info, struct iw_point *data, char *essid) @@ -769,25 +771,24 @@ static int p80211wext_siwcommit(netdevice_t *dev, /* Auto Join */ err = p80211wext_autojoin(wlandev); - exit: +exit: return err; } - static int p80211wext_giwrate(netdevice_t *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_p2_p2MAC_p2CurrentTxRate; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -796,7 +797,7 @@ static int p80211wext_giwrate(netdevice_t *dev, memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem)); - rrq->fixed = 0; /* can it change? */ + rrq->fixed = 0; /* can it change? */ rrq->disabled = 0; rrq->value = 0; @@ -821,7 +822,7 @@ static int p80211wext_giwrate(netdevice_t *dev, default: err = -EINVAL; } - exit: +exit: return err; } @@ -830,15 +831,15 @@ static int p80211wext_giwrts(netdevice_t *dev, struct iw_param *rts, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -851,18 +852,17 @@ static int p80211wext_giwrts(netdevice_t *dev, rts->disabled = (rts->value == 2347); rts->fixed = 1; - exit: +exit: return err; } - static int p80211wext_siwrts(netdevice_t *dev, struct iw_request_info *info, struct iw_param *rts, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; @@ -879,14 +879,14 @@ static int p80211wext_siwrts(netdevice_t *dev, mibitem.data = rts->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; goto exit; } - exit: +exit: return err; } @@ -895,15 +895,16 @@ static int p80211wext_giwfrag(netdevice_t *dev, struct iw_param *frag, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; msg.msgcode = DIDmsg_dot11req_mibget; - mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold; + mibitem.did = + DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -916,7 +917,7 @@ static int p80211wext_giwfrag(netdevice_t *dev, frag->disabled = (frag->value == 2346); frag->fixed = 1; - exit: +exit: return err; } @@ -925,8 +926,8 @@ static int p80211wext_siwfrag(netdevice_t *dev, struct iw_param *frag, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; @@ -936,7 +937,8 @@ static int p80211wext_siwfrag(netdevice_t *dev, } msg.msgcode = DIDmsg_dot11req_mibset; - mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold; + mibitem.did = + DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold; if (frag->disabled) mibitem.data = 2346; @@ -944,14 +946,14 @@ static int p80211wext_siwfrag(netdevice_t *dev, mibitem.data = frag->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; goto exit; } - exit: +exit: return err; } @@ -968,8 +970,8 @@ static int p80211wext_giwretry(netdevice_t *dev, struct iw_param *rrq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; u16 shortretry, longretry, lifetime; @@ -978,7 +980,7 @@ static int p80211wext_giwretry(netdevice_t *dev, mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -992,7 +994,7 @@ static int p80211wext_giwretry(netdevice_t *dev, mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -1003,10 +1005,11 @@ static int p80211wext_giwretry(netdevice_t *dev, longretry = mibitem.data; - mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime; + mibitem.did = + DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -1034,7 +1037,7 @@ static int p80211wext_giwretry(netdevice_t *dev, } } - exit: +exit: return err; } @@ -1044,8 +1047,8 @@ static int p80211wext_siwretry(netdevice_t *dev, struct iw_param *rrq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; @@ -1062,11 +1065,12 @@ static int p80211wext_siwretry(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_mibset; if ((rrq->flags & IW_RETRY_TYPE) == IW_RETRY_LIFETIME) { - mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime; - mibitem.data = rrq->value /= 1024; + mibitem.did = + DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime; + mibitem.data = rrq->value /= 1024; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -1074,11 +1078,13 @@ static int p80211wext_siwretry(netdevice_t *dev, } } else { if (rrq->flags & IW_RETRY_LONG) { - mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit; + mibitem.did = + DIDmib_dot11mac_dot11OperationTable_dot11LongRetryLimit; mibitem.data = rrq->value; - memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + memcpy(&msg.mibattribute.data, &mibitem, + sizeof(mibitem)); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -1087,11 +1093,13 @@ static int p80211wext_siwretry(netdevice_t *dev, } if (rrq->flags & IW_RETRY_SHORT) { - mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit; + mibitem.did = + DIDmib_dot11mac_dot11OperationTable_dot11ShortRetryLimit; mibitem.data = rrq->value; - memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + memcpy(&msg.mibattribute.data, &mibitem, + sizeof(mibitem)); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -1100,42 +1108,43 @@ static int p80211wext_siwretry(netdevice_t *dev, } } - exit: +exit: return err; } static int p80211wext_siwtxpow(netdevice_t *dev, - struct iw_request_info *info, - struct iw_param *rrq, char *extra) + struct iw_request_info *info, + struct iw_param *rrq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; - int result; - int err = 0; - - if (!wlan_wext_write) { - err = (-EOPNOTSUPP); - goto exit; - } - - msg.msgcode = DIDmsg_dot11req_mibset; - mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; + int result; + int err = 0; + + if (!wlan_wext_write) { + err = (-EOPNOTSUPP); + goto exit; + } + + msg.msgcode = DIDmsg_dot11req_mibset; + mibitem.did = + DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel; if (rrq->fixed == 0) - mibitem.data = 30; + mibitem.data = 30; else - mibitem.data = rrq->value; - memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + mibitem.data = rrq->value; + memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); + result = p80211req_dorequest(wlandev, (u8 *)&msg); - if (result) { - err = -EFAULT; - goto exit; - } + if (result) { + err = -EFAULT; + goto exit; + } - exit: - return err; +exit: + return err; } static int p80211wext_giwtxpow(netdevice_t *dev, @@ -1143,16 +1152,17 @@ static int p80211wext_giwtxpow(netdevice_t *dev, struct iw_param *rrq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211item_uint32_t mibitem; - p80211msg_dot11req_mibset_t msg; + p80211item_uint32_t mibitem; + p80211msg_dot11req_mibset_t msg; int result; int err = 0; msg.msgcode = DIDmsg_dot11req_mibget; - mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel; + mibitem.did = + DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) { err = -EFAULT; @@ -1161,14 +1171,14 @@ static int p80211wext_giwtxpow(netdevice_t *dev, memcpy(&mibitem, &msg.mibattribute.data, sizeof(mibitem)); - // XXX handle OFF by setting disabled = 1; + /* XXX handle OFF by setting disabled = 1; */ - rrq->flags = 0; // IW_TXPOW_DBM; + rrq->flags = 0; /* IW_TXPOW_DBM; */ rrq->disabled = 0; rrq->fixed = 0; rrq->value = mibitem.data; - exit: +exit: return err; } @@ -1177,30 +1187,31 @@ static int p80211wext_siwspy(netdevice_t *dev, struct iw_point *srq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - struct sockaddr address[IW_MAX_SPY]; - int number = srq->length; - int i; - + struct sockaddr address[IW_MAX_SPY]; + int number = srq->length; + int i; /* Copy the data from the input buffer */ - memcpy(address, extra, sizeof(struct sockaddr)*number); + memcpy(address, extra, sizeof(struct sockaddr) * number); - wlandev->spy_number = 0; + wlandev->spy_number = 0; - if (number > 0) { + if (number > 0) { - /* extract the addresses */ - for (i = 0; i < number; i++) { + /* extract the addresses */ + for (i = 0; i < number; i++) { - memcpy(wlandev->spy_address[i], address[i].sa_data, ETH_ALEN); + memcpy(wlandev->spy_address[i], address[i].sa_data, + ETH_ALEN); } - /* reset stats */ - memset(wlandev->spy_stat, 0, sizeof(struct iw_quality) * IW_MAX_SPY); + /* reset stats */ + memset(wlandev->spy_stat, 0, + sizeof(struct iw_quality) * IW_MAX_SPY); - /* set number of addresses */ - wlandev->spy_number = number; - } + /* set number of addresses */ + wlandev->spy_number = number; + } return 0; } @@ -1212,63 +1223,66 @@ static int p80211wext_giwspy(netdevice_t *dev, { wlandevice_t *wlandev = dev->ml_priv; - struct sockaddr address[IW_MAX_SPY]; - struct iw_quality spy_stat[IW_MAX_SPY]; - int number; - int i; + struct sockaddr address[IW_MAX_SPY]; + struct iw_quality spy_stat[IW_MAX_SPY]; + int number; + int i; - number = wlandev->spy_number; + number = wlandev->spy_number; - if (number > 0) { + if (number > 0) { - /* populate address and spy struct's */ - for (i = 0; i < number; i++) { - memcpy(address[i].sa_data, wlandev->spy_address[i], ETH_ALEN); - address[i].sa_family = AF_UNIX; - memcpy(&spy_stat[i], &wlandev->spy_stat[i], sizeof(struct iw_quality)); - } + /* populate address and spy struct's */ + for (i = 0; i < number; i++) { + memcpy(address[i].sa_data, wlandev->spy_address[i], + ETH_ALEN); + address[i].sa_family = AF_UNIX; + memcpy(&spy_stat[i], &wlandev->spy_stat[i], + sizeof(struct iw_quality)); + } /* reset update flag */ - for (i=0; i < number; i++) - wlandev->spy_stat[i].updated = 0; - } + for (i = 0; i < number; i++) + wlandev->spy_stat[i].updated = 0; + } - /* push stuff to user space */ - srq->length = number; - memcpy(extra, address, sizeof(struct sockaddr)*number); - memcpy(extra+sizeof(struct sockaddr)*number, spy_stat, sizeof(struct iw_quality)*number); + /* push stuff to user space */ + srq->length = number; + memcpy(extra, address, sizeof(struct sockaddr) * number); + memcpy(extra + sizeof(struct sockaddr) * number, spy_stat, + sizeof(struct iw_quality) * number); return 0; } -static int prism2_result2err (int prism2_result) +static int prism2_result2err(int prism2_result) { int err = 0; switch (prism2_result) { - case P80211ENUM_resultcode_invalid_parameters: - err = -EINVAL; - break; - case P80211ENUM_resultcode_implementation_failure: - err = -EIO; - break; - case P80211ENUM_resultcode_not_supported: - err = -EOPNOTSUPP; - break; - default: - err = 0; - break; + case P80211ENUM_resultcode_invalid_parameters: + err = -EINVAL; + break; + case P80211ENUM_resultcode_implementation_failure: + err = -EIO; + break; + case P80211ENUM_resultcode_not_supported: + err = -EOPNOTSUPP; + break; + default: + err = 0; + break; } return err; } static int p80211wext_siwscan(netdevice_t *dev, - struct iw_request_info *info, - struct iw_point *srq, char *extra) + struct iw_request_info *info, + struct iw_point *srq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211msg_dot11req_scan_t msg; + p80211msg_dot11req_scan_t msg; int result; int err = 0; int i = 0; @@ -1283,35 +1297,34 @@ static int p80211wext_siwscan(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_scan; msg.bsstype.data = P80211ENUM_bsstype_any; - memset(&(msg.bssid.data), 0xFF, sizeof (p80211item_pstr6_t)); + memset(&(msg.bssid.data), 0xFF, sizeof(p80211item_pstr6_t)); msg.bssid.data.len = 6; msg.scantype.data = P80211ENUM_scantype_active; msg.probedelay.data = 0; for (i = 1; i <= 14; i++) - msg.channellist.data.data[i-1] = i; + msg.channellist.data.data[i - 1] = i; msg.channellist.data.len = 14; msg.maxchanneltime.data = 250; msg.minchanneltime.data = 200; - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if (result) - err = prism2_result2err (msg.resultcode.data); + err = prism2_result2err(msg.resultcode.data); - exit: +exit: return err; } - /* Helper to translate scan into Wireless Extensions scan results. * Inspired by the prism54 code, which was in turn inspired by the * airo driver code. */ -static char * -wext_translate_bss(struct iw_request_info *info, char *current_ev, - char *end_buf, p80211msg_dot11req_scan_results_t *bss) +static char *wext_translate_bss(struct iw_request_info *info, char *current_ev, + char *end_buf, + p80211msg_dot11req_scan_results_t *bss) { struct iw_event iwe; /* Temporary buffer */ @@ -1319,7 +1332,9 @@ wext_translate_bss(struct iw_request_info *info, char *current_ev, memcpy(iwe.u.ap_addr.sa_data, bss->bssid.data.data, WLAN_BSSID_LEN); iwe.u.ap_addr.sa_family = ARPHRD_ETHER; iwe.cmd = SIOCGIWAP; - current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_ADDR_LEN); + current_ev = + iwe_stream_add_event(info, current_ev, end_buf, &iwe, + IW_EV_ADDR_LEN); /* The following entries will be displayed in the same order we give them */ @@ -1328,33 +1343,39 @@ wext_translate_bss(struct iw_request_info *info, char *current_ev, char essid[IW_ESSID_MAX_SIZE + 1]; int size; - size = min_t(unsigned short, IW_ESSID_MAX_SIZE, bss->ssid.data.len); - memset(&essid, 0, sizeof (essid)); + size = + min_t(unsigned short, IW_ESSID_MAX_SIZE, + bss->ssid.data.len); + memset(&essid, 0, sizeof(essid)); memcpy(&essid, bss->ssid.data.data, size); pr_debug(" essid size = %d\n", size); iwe.u.data.length = size; iwe.u.data.flags = 1; iwe.cmd = SIOCGIWESSID; - current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, &essid[0]); + current_ev = + iwe_stream_add_point(info, current_ev, end_buf, &iwe, + &essid[0]); pr_debug(" essid size OK.\n"); } switch (bss->bsstype.data) { - case P80211ENUM_bsstype_infrastructure: - iwe.u.mode = IW_MODE_MASTER; - break; + case P80211ENUM_bsstype_infrastructure: + iwe.u.mode = IW_MODE_MASTER; + break; - case P80211ENUM_bsstype_independent: - iwe.u.mode = IW_MODE_ADHOC; - break; + case P80211ENUM_bsstype_independent: + iwe.u.mode = IW_MODE_ADHOC; + break; - default: - iwe.u.mode = 0; - break; + default: + iwe.u.mode = 0; + break; } iwe.cmd = SIOCGIWMODE; if (iwe.u.mode) - current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_UINT_LEN); + current_ev = + iwe_stream_add_event(info, current_ev, end_buf, &iwe, + IW_EV_UINT_LEN); /* Encryption capability */ if (bss->privacy.data == P80211ENUM_truth_true) @@ -1363,13 +1384,16 @@ wext_translate_bss(struct iw_request_info *info, char *current_ev, iwe.u.data.flags = IW_ENCODE_DISABLED; iwe.u.data.length = 0; iwe.cmd = SIOCGIWENCODE; - current_ev = iwe_stream_add_point(info, current_ev, end_buf, &iwe, NULL); + current_ev = + iwe_stream_add_point(info, current_ev, end_buf, &iwe, NULL); /* Add frequency. (short) bss->channel is the frequency in MHz */ iwe.u.freq.m = bss->dschannel.data; iwe.u.freq.e = 0; iwe.cmd = SIOCGIWFREQ; - current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_FREQ_LEN); + current_ev = + iwe_stream_add_event(info, current_ev, end_buf, &iwe, + IW_EV_FREQ_LEN); /* Add quality statistics */ iwe.u.qual.level = bss->signal.data; @@ -1377,18 +1401,19 @@ wext_translate_bss(struct iw_request_info *info, char *current_ev, /* do a simple SNR for quality */ iwe.u.qual.qual = qual_as_percent(bss->signal.data - bss->noise.data); iwe.cmd = IWEVQUAL; - current_ev = iwe_stream_add_event(info, current_ev, end_buf, &iwe, IW_EV_QUAL_LEN); + current_ev = + iwe_stream_add_event(info, current_ev, end_buf, &iwe, + IW_EV_QUAL_LEN); return current_ev; } - static int p80211wext_giwscan(netdevice_t *dev, - struct iw_request_info *info, - struct iw_point *srq, char *extra) + struct iw_request_info *info, + struct iw_point *srq, char *extra) { wlandevice_t *wlandev = dev->ml_priv; - p80211msg_dot11req_scan_results_t msg; + p80211msg_dot11req_scan_results_t msg; int result = 0; int err = 0; int i = 0; @@ -1404,109 +1429,115 @@ static int p80211wext_giwscan(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_scan_results; msg.bssindex.data = i; - result = p80211req_dorequest(wlandev, (u8*)&msg); + result = p80211req_dorequest(wlandev, (u8 *)&msg); if ((result != 0) || (msg.resultcode.data != P80211ENUM_resultcode_success)) { break; } - current_ev = wext_translate_bss(info, current_ev, extra + IW_SCAN_MAX_DATA, &msg); + current_ev = + wext_translate_bss(info, current_ev, + extra + IW_SCAN_MAX_DATA, &msg); scan_good = 1; i++; } while (i < IW_MAX_AP); srq->length = (current_ev - extra); - srq->flags = 0; /* todo */ + srq->flags = 0; /* todo */ if (result && !scan_good) - err = prism2_result2err (msg.resultcode.data); + err = prism2_result2err(msg.resultcode.data); return err; } -/*****************************************************/ -//extra wireless extensions stuff to support NetworkManager (I hope) +/* extra wireless extensions stuff to support NetworkManager (I hope) */ /* SIOCSIWENCODEEXT */ static int p80211wext_set_encodeext(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) { - wlandevice_t *wlandev = dev->ml_priv; - struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; - p80211msg_dot11req_mibset_t msg; - p80211item_pstr32_t *pstr; - - int result = 0; - struct iw_point *encoding = &wrqu->encoding; - int idx = encoding->flags & IW_ENCODE_INDEX; - - pr_debug("set_encode_ext flags[%d] alg[%d] keylen[%d]\n",ext->ext_flags,(int)ext->alg,(int)ext->key_len); - - - if ( ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY ) { - // set default key ? I'm not sure if this the the correct thing to do here - - if ( idx ) { - if (idx < 1 || idx > NUM_WEPKEYS) { - return -EINVAL; - } else - idx--; - } - pr_debug("setting default key (%d)\n",idx); - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, idx); - if ( result ) - return -EFAULT; - } - - - if ( ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY ) { - if (!(ext->alg & IW_ENCODE_ALG_WEP)) { - pr_debug("asked to set a non wep key :("); - return -EINVAL; - } - if (idx) { - if (idx <1 || idx > NUM_WEPKEYS) - return -EINVAL; - else - idx--; - } - pr_debug("Set WEP key (%d)\n",idx); - wlandev->wep_keylens[idx] = ext->key_len; - memcpy(wlandev->wep_keys[idx], ext->key, ext->key_len); - - memset( &msg,0,sizeof(msg)); - pstr = (p80211item_pstr32_t*)&msg.mibattribute.data; - memcpy(pstr->data.data, ext->key,ext->key_len); - pstr->data.len = ext->key_len; - switch (idx) { - case 0: - pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0; - break; - case 1: - pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1; - break; - case 2: - pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2; - break; - case 3: - pstr->did = DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3; - break; - default: - break; - } - msg.msgcode = DIDmsg_dot11req_mibset; - result = p80211req_dorequest(wlandev,(u8*)&msg); - pr_debug("result (%d)\n",result); - } - return result; + wlandevice_t *wlandev = dev->ml_priv; + struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; + p80211msg_dot11req_mibset_t msg; + p80211item_pstr32_t *pstr; + + int result = 0; + struct iw_point *encoding = &wrqu->encoding; + int idx = encoding->flags & IW_ENCODE_INDEX; + + pr_debug("set_encode_ext flags[%d] alg[%d] keylen[%d]\n", + ext->ext_flags, (int)ext->alg, (int)ext->key_len); + + if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) { + /* set default key ? I'm not sure if this the the correct thing to do here */ + + if (idx) { + if (idx < 1 || idx > NUM_WEPKEYS) + return -EINVAL; + else + idx--; + } + pr_debug("setting default key (%d)\n", idx); + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, + idx); + if (result) + return -EFAULT; + } + + if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) { + if (!(ext->alg & IW_ENCODE_ALG_WEP)) { + pr_debug("asked to set a non wep key :("); + return -EINVAL; + } + if (idx) { + if (idx < 1 || idx > NUM_WEPKEYS) + return -EINVAL; + else + idx--; + } + pr_debug("Set WEP key (%d)\n", idx); + wlandev->wep_keylens[idx] = ext->key_len; + memcpy(wlandev->wep_keys[idx], ext->key, ext->key_len); + + memset(&msg, 0, sizeof(msg)); + pstr = (p80211item_pstr32_t *)&msg.mibattribute.data; + memcpy(pstr->data.data, ext->key, ext->key_len); + pstr->data.len = ext->key_len; + switch (idx) { + case 0: + pstr->did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey0; + break; + case 1: + pstr->did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey1; + break; + case 2: + pstr->did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey2; + break; + case 3: + pstr->did = + DIDmib_dot11smt_dot11WEPDefaultKeysTable_dot11WEPDefaultKey3; + break; + default: + break; + } + msg.msgcode = DIDmsg_dot11req_mibset; + result = p80211req_dorequest(wlandev, (u8 *)&msg); + pr_debug("result (%d)\n", result); + } + return result; } /* SIOCGIWENCODEEXT */ static int p80211wext_get_encodeext(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) - + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) { wlandevice_t *wlandev = dev->ml_priv; struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; @@ -1516,22 +1547,24 @@ static int p80211wext_get_encodeext(struct net_device *dev, int max_len; int idx; - pr_debug("get_encode_ext flags[%d] alg[%d] keylen[%d]\n",ext->ext_flags,(int)ext->alg,(int)ext->key_len); - + pr_debug("get_encode_ext flags[%d] alg[%d] keylen[%d]\n", + ext->ext_flags, (int)ext->alg, (int)ext->key_len); max_len = encoding->length - sizeof(*ext); - if ( max_len <= 0) { - pr_debug("get_encodeext max_len [%d] invalid\n",max_len); + if (max_len <= 0) { + pr_debug("get_encodeext max_len [%d] invalid\n", + max_len); result = -EINVAL; goto exit; } idx = encoding->flags & IW_ENCODE_INDEX; - pr_debug("get_encode_ext index [%d]\n",idx); + pr_debug("get_encode_ext index [%d]\n", idx); if (idx) { - if (idx < 1 || idx > NUM_WEPKEYS ) { - pr_debug("get_encode_ext invalid key index [%d]\n",idx); + if (idx < 1 || idx > NUM_WEPKEYS) { + printk(KERN_DEBUG + "get_encode_ext invalid key index [%d]\n", idx); result = -EINVAL; goto exit; } @@ -1542,198 +1575,207 @@ static int p80211wext_get_encodeext(struct net_device *dev, } encoding->flags = idx + 1; - memset(ext,0,sizeof(*ext)); + memset(ext, 0, sizeof(*ext)); ext->alg = IW_ENCODE_ALG_WEP; ext->key_len = wlandev->wep_keylens[idx]; - memcpy( ext->key, wlandev->wep_keys[idx] , ext->key_len ); + memcpy(ext->key, wlandev->wep_keys[idx], ext->key_len); encoding->flags |= IW_ENCODE_ENABLED; exit: return result; } - /* SIOCSIWAUTH */ -static int p80211_wext_set_iwauth (struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) +static int p80211_wext_set_iwauth(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) { - wlandevice_t *wlandev = dev->ml_priv; - struct iw_param *param = &wrqu->param; - int result =0; - - pr_debug("set_iwauth flags[%d]\n",(int)param->flags & IW_AUTH_INDEX ); - - switch (param->flags & IW_AUTH_INDEX) { - case IW_AUTH_DROP_UNENCRYPTED: - pr_debug("drop_unencrypted %d\n",param->value); - if (param->value) - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_true); - else - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, P80211ENUM_truth_false); - break; - - case IW_AUTH_PRIVACY_INVOKED: - pr_debug("privacy invoked %d\n",param->value); - if ( param->value) - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_true); - else - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, P80211ENUM_truth_false); - - break; - - case IW_AUTH_80211_AUTH_ALG: - if ( param->value & IW_AUTH_ALG_OPEN_SYSTEM ) { - pr_debug("set open_system\n"); - wlandev->hostwep &= ~HOSTWEP_SHAREDKEY; - } else if ( param->value & IW_AUTH_ALG_SHARED_KEY) { - pr_debug("set shared key\n"); - wlandev->hostwep |= HOSTWEP_SHAREDKEY; - } else { - /* don't know what to do know :( */ - pr_debug("unknown AUTH_ALG (%d)\n",param->value); - result = -EINVAL; - } - break; - - default: - break; - } - - - - return result; -} + wlandevice_t *wlandev = dev->ml_priv; + struct iw_param *param = &wrqu->param; + int result = 0; -/* SIOCSIWAUTH */ -static int p80211_wext_get_iwauth (struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - wlandevice_t *wlandev = dev->ml_priv; - struct iw_param *param = &wrqu->param; - int result =0; + pr_debug("set_iwauth flags[%d]\n", + (int)param->flags & IW_AUTH_INDEX); + + switch (param->flags & IW_AUTH_INDEX) { + case IW_AUTH_DROP_UNENCRYPTED: + pr_debug("drop_unencrypted %d\n", param->value); + if (param->value) + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, + P80211ENUM_truth_true); + else + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11ExcludeUnencrypted, + P80211ENUM_truth_false); + break; - pr_debug("get_iwauth flags[%d]\n",(int)param->flags & IW_AUTH_INDEX ); + case IW_AUTH_PRIVACY_INVOKED: + pr_debug("privacy invoked %d\n", param->value); + if (param->value) + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, + P80211ENUM_truth_true); + else + result = + p80211wext_dorequest(wlandev, + DIDmib_dot11smt_dot11PrivacyTable_dot11PrivacyInvoked, + P80211ENUM_truth_false); + + break; + + case IW_AUTH_80211_AUTH_ALG: + if (param->value & IW_AUTH_ALG_OPEN_SYSTEM) { + pr_debug("set open_system\n"); + wlandev->hostwep &= ~HOSTWEP_SHAREDKEY; + } else if (param->value & IW_AUTH_ALG_SHARED_KEY) { + pr_debug("set shared key\n"); + wlandev->hostwep |= HOSTWEP_SHAREDKEY; + } else { + /* don't know what to do know */ + pr_debug("unknown AUTH_ALG (%d)\n", + param->value); + result = -EINVAL; + } + break; + + default: + break; + } - switch (param->flags & IW_AUTH_INDEX) { - case IW_AUTH_DROP_UNENCRYPTED: - param->value = wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED?1:0; - break; + return result; +} - case IW_AUTH_PRIVACY_INVOKED: - param->value = wlandev->hostwep & HOSTWEP_PRIVACYINVOKED?1:0; - break; +/* SIOCSIWAUTH */ +static int p80211_wext_get_iwauth(struct net_device *dev, + struct iw_request_info *info, + union iwreq_data *wrqu, char *extra) +{ + wlandevice_t *wlandev = dev->ml_priv; + struct iw_param *param = &wrqu->param; + int result = 0; - case IW_AUTH_80211_AUTH_ALG: - param->value = wlandev->hostwep & HOSTWEP_SHAREDKEY?IW_AUTH_ALG_SHARED_KEY:IW_AUTH_ALG_OPEN_SYSTEM; - break; + pr_debug("get_iwauth flags[%d]\n", + (int)param->flags & IW_AUTH_INDEX); + switch (param->flags & IW_AUTH_INDEX) { + case IW_AUTH_DROP_UNENCRYPTED: + param->value = + wlandev->hostwep & HOSTWEP_EXCLUDEUNENCRYPTED ? 1 : 0; + break; - default: - break; - } + case IW_AUTH_PRIVACY_INVOKED: + param->value = + wlandev->hostwep & HOSTWEP_PRIVACYINVOKED ? 1 : 0; + break; + case IW_AUTH_80211_AUTH_ALG: + param->value = + wlandev-> + hostwep & HOSTWEP_SHAREDKEY ? IW_AUTH_ALG_SHARED_KEY : + IW_AUTH_ALG_OPEN_SYSTEM; + break; + default: + break; + } - return result; + return result; } -static iw_handler p80211wext_handlers[] = { - (iw_handler) p80211wext_siwcommit, /* SIOCSIWCOMMIT */ - (iw_handler) p80211wext_giwname, /* SIOCGIWNAME */ - (iw_handler) NULL, /* SIOCSIWNWID */ - (iw_handler) NULL, /* SIOCGIWNWID */ - (iw_handler) p80211wext_siwfreq, /* SIOCSIWFREQ */ - (iw_handler) p80211wext_giwfreq, /* SIOCGIWFREQ */ - (iw_handler) p80211wext_siwmode, /* SIOCSIWMODE */ - (iw_handler) p80211wext_giwmode, /* SIOCGIWMODE */ - (iw_handler) NULL, /* SIOCSIWSENS */ - (iw_handler) NULL, /* SIOCGIWSENS */ - (iw_handler) NULL, /* not used */ /* SIOCSIWRANGE */ - (iw_handler) p80211wext_giwrange, /* SIOCGIWRANGE */ - (iw_handler) NULL, /* not used */ /* SIOCSIWPRIV */ - (iw_handler) NULL, /* kernel code */ /* SIOCGIWPRIV */ - (iw_handler) NULL, /* not used */ /* SIOCSIWSTATS */ - (iw_handler) NULL, /* kernel code */ /* SIOCGIWSTATS */ - (iw_handler) p80211wext_siwspy, /* SIOCSIWSPY */ - (iw_handler) p80211wext_giwspy, /* SIOCGIWSPY */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWAP */ - (iw_handler) p80211wext_giwap, /* SIOCGIWAP */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCGIWAPLIST */ - (iw_handler) p80211wext_siwscan, /* SIOCSIWSCAN */ - (iw_handler) p80211wext_giwscan, /* SIOCGIWSCAN */ - (iw_handler) p80211wext_siwessid, /* SIOCSIWESSID */ - (iw_handler) p80211wext_giwessid, /* SIOCGIWESSID */ - (iw_handler) NULL, /* SIOCSIWNICKN */ - (iw_handler) p80211wext_giwessid, /* SIOCGIWNICKN */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWRATE */ - (iw_handler) p80211wext_giwrate, /* SIOCGIWRATE */ - (iw_handler) p80211wext_siwrts, /* SIOCSIWRTS */ - (iw_handler) p80211wext_giwrts, /* SIOCGIWRTS */ - (iw_handler) p80211wext_siwfrag, /* SIOCSIWFRAG */ - (iw_handler) p80211wext_giwfrag, /* SIOCGIWFRAG */ - (iw_handler) p80211wext_siwtxpow, /* SIOCSIWTXPOW */ - (iw_handler) p80211wext_giwtxpow, /* SIOCGIWTXPOW */ - (iw_handler) p80211wext_siwretry, /* SIOCSIWRETRY */ - (iw_handler) p80211wext_giwretry, /* SIOCGIWRETRY */ - (iw_handler) p80211wext_siwencode, /* SIOCSIWENCODE */ - (iw_handler) p80211wext_giwencode, /* SIOCGIWENCODE */ - (iw_handler) NULL, /* SIOCSIWPOWER */ - (iw_handler) NULL, /* SIOCGIWPOWER */ +static iw_handler p80211wext_handlers[] = { + (iw_handler) p80211wext_siwcommit, /* SIOCSIWCOMMIT */ + (iw_handler) p80211wext_giwname, /* SIOCGIWNAME */ + (iw_handler) NULL, /* SIOCSIWNWID */ + (iw_handler) NULL, /* SIOCGIWNWID */ + (iw_handler) p80211wext_siwfreq, /* SIOCSIWFREQ */ + (iw_handler) p80211wext_giwfreq, /* SIOCGIWFREQ */ + (iw_handler) p80211wext_siwmode, /* SIOCSIWMODE */ + (iw_handler) p80211wext_giwmode, /* SIOCGIWMODE */ + (iw_handler) NULL, /* SIOCSIWSENS */ + (iw_handler) NULL, /* SIOCGIWSENS */ + (iw_handler) NULL, /* not used *//* SIOCSIWRANGE */ + (iw_handler) p80211wext_giwrange, /* SIOCGIWRANGE */ + (iw_handler) NULL, /* not used *//* SIOCSIWPRIV */ + (iw_handler) NULL, /* kernel code *//* SIOCGIWPRIV */ + (iw_handler) NULL, /* not used *//* SIOCSIWSTATS */ + (iw_handler) NULL, /* kernel code *//* SIOCGIWSTATS */ + (iw_handler) p80211wext_siwspy, /* SIOCSIWSPY */ + (iw_handler) p80211wext_giwspy, /* SIOCGIWSPY */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWAP */ + (iw_handler) p80211wext_giwap, /* SIOCGIWAP */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCGIWAPLIST */ + (iw_handler) p80211wext_siwscan, /* SIOCSIWSCAN */ + (iw_handler) p80211wext_giwscan, /* SIOCGIWSCAN */ + (iw_handler) p80211wext_siwessid, /* SIOCSIWESSID */ + (iw_handler) p80211wext_giwessid, /* SIOCGIWESSID */ + (iw_handler) NULL, /* SIOCSIWNICKN */ + (iw_handler) p80211wext_giwessid, /* SIOCGIWNICKN */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWRATE */ + (iw_handler) p80211wext_giwrate, /* SIOCGIWRATE */ + (iw_handler) p80211wext_siwrts, /* SIOCSIWRTS */ + (iw_handler) p80211wext_giwrts, /* SIOCGIWRTS */ + (iw_handler) p80211wext_siwfrag, /* SIOCSIWFRAG */ + (iw_handler) p80211wext_giwfrag, /* SIOCGIWFRAG */ + (iw_handler) p80211wext_siwtxpow, /* SIOCSIWTXPOW */ + (iw_handler) p80211wext_giwtxpow, /* SIOCGIWTXPOW */ + (iw_handler) p80211wext_siwretry, /* SIOCSIWRETRY */ + (iw_handler) p80211wext_giwretry, /* SIOCGIWRETRY */ + (iw_handler) p80211wext_siwencode, /* SIOCSIWENCODE */ + (iw_handler) p80211wext_giwencode, /* SIOCGIWENCODE */ + (iw_handler) NULL, /* SIOCSIWPOWER */ + (iw_handler) NULL, /* SIOCGIWPOWER */ /* WPA operations */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* -- hole -- */ - (iw_handler) NULL, /* SIOCSIWGENIE set generic IE */ - (iw_handler) NULL, /* SIOCGIWGENIE get generic IE */ - (iw_handler) p80211_wext_set_iwauth, /* SIOCSIWAUTH set authentication mode params */ - (iw_handler) p80211_wext_get_iwauth, /* SIOCGIWAUTH get authentication mode params */ - - (iw_handler) p80211wext_set_encodeext, /* SIOCSIWENCODEEXT set encoding token & mode */ - (iw_handler) p80211wext_get_encodeext, /* SIOCGIWENCODEEXT get encoding token & mode */ - (iw_handler) NULL, /* SIOCSIWPMKSA PMKSA cache operation */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* -- hole -- */ + (iw_handler) NULL, /* SIOCSIWGENIE set generic IE */ + (iw_handler) NULL, /* SIOCGIWGENIE get generic IE */ + (iw_handler) p80211_wext_set_iwauth, /* SIOCSIWAUTH set authentication mode params */ + (iw_handler) p80211_wext_get_iwauth, /* SIOCGIWAUTH get authentication mode params */ + + (iw_handler) p80211wext_set_encodeext, /* SIOCSIWENCODEEXT set encoding token & mode */ + (iw_handler) p80211wext_get_encodeext, /* SIOCGIWENCODEEXT get encoding token & mode */ + (iw_handler) NULL, /* SIOCSIWPMKSA PMKSA cache operation */ }; struct iw_handler_def p80211wext_handler_def = { .num_standard = ARRAY_SIZE(p80211wext_handlers), .num_private = 0, .num_private_args = 0, - .standard = p80211wext_handlers, + .standard = p80211wext_handlers, .private = NULL, .private_args = NULL, .get_wireless_stats = p80211wext_get_wireless_stats }; - int p80211wext_event_associated(wlandevice_t *wlandev, int assoc) { - union iwreq_data data; + union iwreq_data data; - /* Send the association state first */ - data.ap_addr.sa_family = ARPHRD_ETHER; - if (assoc) { - memcpy(data.ap_addr.sa_data, wlandev->bssid, ETH_ALEN); - } else { - memset(data.ap_addr.sa_data, 0, ETH_ALEN); - } + /* Send the association state first */ + data.ap_addr.sa_family = ARPHRD_ETHER; + if (assoc) + memcpy(data.ap_addr.sa_data, wlandev->bssid, ETH_ALEN); + else + memset(data.ap_addr.sa_data, 0, ETH_ALEN); - if (wlan_wext_write) - wireless_send_event(wlandev->netdev, SIOCGIWAP, &data, NULL); + if (wlan_wext_write) + wireless_send_event(wlandev->netdev, SIOCGIWAP, &data, NULL); - if (!assoc) goto done; + if (!assoc) + goto done; - // XXX send association data, like IEs, etc etc. + /* XXX send association data, like IEs, etc etc. */ - done: - return 0; +done: + return 0; } - - - - |