X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fstaging%2Fwlan-ng%2Fp80211wext.c;h=0d570f1f378cd2274df70c0a43c596e5de686e27;hb=97d61b8e3aef163a75f80f4762794c154572293d;hp=b2c9ea25fa425a3558bff9ab5b1c96da01de841c;hpb=3f4b5c5d275608d42ff54c4981307f9a5c75ea4a;p=linux-2.6-omap-h63xx.git diff --git a/drivers/staging/wlan-ng/p80211wext.c b/drivers/staging/wlan-ng/p80211wext.c index b2c9ea25fa4..0d570f1f378 100644 --- a/drivers/staging/wlan-ng/p80211wext.c +++ b/drivers/staging/wlan-ng/p80211wext.c @@ -38,7 +38,6 @@ /* System Includes */ -#include #include #include @@ -47,9 +46,7 @@ #include #include #include -#if WIRELESS_EXT > 12 #include -#endif #include #include #include @@ -58,7 +55,6 @@ /*================================================================*/ /* Project Includes */ -#include "version.h" #include "wlan_compat.h" #include "p80211types.h" @@ -78,10 +74,8 @@ static int p80211wext_giwrate(netdevice_t *dev, static int p80211wext_giwessid(netdevice_t *dev, struct iw_request_info *info, struct iw_point *data, char *essid); -/* compatibility to wireless extensions */ -#ifdef WIRELESS_EXT -static UINT8 p80211_mhz_to_channel(UINT16 mhz) +static u8 p80211_mhz_to_channel(u16 mhz) { if (mhz >= 5000) { return ((mhz - 5000) / 5); @@ -97,7 +91,7 @@ static UINT8 p80211_mhz_to_channel(UINT16 mhz) return 0; } -static UINT16 p80211_channel_to_mhz(UINT8 ch, int dot11a) +static u16 p80211_channel_to_mhz(u8 ch, int dot11a) { if (ch == 0) @@ -128,7 +122,7 @@ static const long p80211wext_channel_freq[] = { 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472, 2484 }; -#define NUM_CHANNELS (sizeof(p80211wext_channel_freq) / sizeof(p80211wext_channel_freq[0])) +#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 */ #define HOSTWEP_SHAREDKEY BIT3 @@ -147,7 +141,7 @@ static int qual_as_percent(int snr ) { -static int p80211wext_dorequest(wlandevice_t *wlandev, UINT32 did, UINT32 data) +static int p80211wext_dorequest(wlandevice_t *wlandev, u32 did, u32 data) { p80211msg_dot11req_mibset_t msg; p80211item_uint32_t mibitem; @@ -159,7 +153,7 @@ static int p80211wext_dorequest(wlandevice_t *wlandev, UINT32 did, UINT32 data) mibitem.did = did; mibitem.data = data; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); DBFEXIT; return result; @@ -200,7 +194,7 @@ static int p80211wext_autojoin(wlandevice_t *wlandev) memcpy(msg.ssid.data.data, ssid, data.length); msg.ssid.data.len = data.length; - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -245,20 +239,14 @@ struct iw_statistics* p80211wext_get_wireless_stats (netdevice_t *dev) wstats->qual.level = quality.level.data; /* instant signal level */ wstats->qual.noise = quality.noise.data; /* instant noise level */ -#if WIRELESS_EXT > 18 wstats->qual.updated = IW_QUAL_ALL_UPDATED | IW_QUAL_DBM; -#else - wstats->qual.updated = 7; -#endif wstats->discard.code = wlandev->rx.decrypt_err; wstats->discard.nwid = 0; wstats->discard.misc = 0; -#if WIRELESS_EXT > 11 wstats->discard.fragment = 0; // incomplete fragments wstats->discard.retries = 0; // tx retries. wstats->miss.beacon = 0; -#endif DBFEXIT; @@ -312,7 +300,7 @@ static int p80211wext_giwfreq(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_dot11phy_dot11PhyDSSSTable_dot11CurrentChannel; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -362,7 +350,7 @@ static int p80211wext_siwfreq(netdevice_t *dev, mibitem.data = p80211_mhz_to_channel(freq->m); memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -374,8 +362,6 @@ static int p80211wext_siwfreq(netdevice_t *dev, return err; } -#if WIRELESS_EXT > 8 - static int p80211wext_giwmode(netdevice_t *dev, struct iw_request_info *info, __u32 *mode, char *extra) @@ -447,14 +433,11 @@ static int p80211wext_siwmode(netdevice_t *dev, } /* Set Operation mode to the PORT TYPE RID */ - -#warning "get rid of p2mib here" - msg.msgcode = DIDmsg_dot11req_mibset; 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, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) err = -EFAULT; @@ -479,12 +462,9 @@ static int p80211wext_giwrange(netdevice_t *dev, data->length = sizeof(*range); memset(range,0,sizeof(*range)); -#if WIRELESS_EXT > 9 range->txpower_capa = IW_TXPOW_DBM; // XXX what about min/max_pmp, min/max_pmt, etc. -#endif -#if WIRELESS_EXT > 10 range->we_version_compiled = WIRELESS_EXT; range->we_version_source = 13; @@ -492,16 +472,13 @@ static int p80211wext_giwrange(netdevice_t *dev, range->retry_flags = IW_RETRY_LIMIT; range->min_retry = 0; range->max_retry = 255; -#endif /* WIRELESS_EXT > 10 */ -#if WIRELESS_EXT > 16 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) ); -#endif range->num_channels = NUM_CHANNELS; @@ -543,7 +520,6 @@ static int p80211wext_giwrange(netdevice_t *dev, DBFEXIT; return 0; } -#endif static int p80211wext_giwap(netdevice_t *dev, struct iw_request_info *info, @@ -561,7 +537,6 @@ static int p80211wext_giwap(netdevice_t *dev, return 0; } -#if WIRELESS_EXT > 8 static int p80211wext_giwencode(netdevice_t *dev, struct iw_request_info *info, struct iw_point *erq, char *key) @@ -572,10 +547,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; @@ -613,7 +591,6 @@ static int p80211wext_siwencode(netdevice_t *dev, int err = 0; int result = 0; - int enable = 0; int i; DBFENTER; @@ -632,23 +609,23 @@ static int p80211wext_siwencode(netdevice_t *dev, else i--; - result = p80211wext_dorequest(wlandev, DIDmib_dot11smt_dot11PrivacyTable_dot11WEPDefaultKeyID, 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); - if (result) { - err = -EFAULT; - goto exit; - } - else { - enable = 1; + 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 @@ -690,7 +667,7 @@ static int p80211wext_siwencode(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_mibset; memcpy(&msg.mibattribute.data, &pstr, sizeof(pstr)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -703,8 +680,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); } @@ -713,7 +689,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); } @@ -798,7 +780,7 @@ static int p80211wext_siwessid(netdevice_t *dev, msg.ssid.data.len = length; WLAN_LOG_DEBUG(1,"autojoin_ssid for %s \n",essid); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); WLAN_LOG_DEBUG(1,"autojoin_ssid %d\n",result); if (result) { @@ -850,7 +832,7 @@ static int p80211wext_giwrate(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_p2_p2MAC_p2CurrentTxRate; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -863,10 +845,10 @@ static int p80211wext_giwrate(netdevice_t *dev, rrq->disabled = 0; rrq->value = 0; -#define HFA384x_RATEBIT_1 ((UINT16)1) -#define HFA384x_RATEBIT_2 ((UINT16)2) -#define HFA384x_RATEBIT_5dot5 ((UINT16)4) -#define HFA384x_RATEBIT_11 ((UINT16)8) +#define HFA384x_RATEBIT_1 ((u16)1) +#define HFA384x_RATEBIT_2 ((u16)2) +#define HFA384x_RATEBIT_5dot5 ((u16)4) +#define HFA384x_RATEBIT_11 ((u16)8) switch (mibitem.data) { case HFA384x_RATEBIT_1: @@ -904,7 +886,7 @@ static int p80211wext_giwrts(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11RTSThreshold; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -948,7 +930,7 @@ static int p80211wext_siwrts(netdevice_t *dev, mibitem.data = rts->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -975,7 +957,7 @@ static int p80211wext_giwfrag(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_mibget; mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11FragmentationThreshold; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1019,7 +1001,7 @@ static int p80211wext_siwfrag(netdevice_t *dev, mibitem.data = frag->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1031,10 +1013,6 @@ static int p80211wext_siwfrag(netdevice_t *dev, return err; } -#endif /* WIRELESS_EXT > 8 */ - -#if WIRELESS_EXT > 10 - #ifndef IW_RETRY_LONG #define IW_RETRY_LONG IW_RETRY_MAX #endif @@ -1052,7 +1030,7 @@ static int p80211wext_giwretry(netdevice_t *dev, p80211msg_dot11req_mibset_t msg; int result; int err = 0; - UINT16 shortretry, longretry, lifetime; + u16 shortretry, longretry, lifetime; DBFENTER; @@ -1060,7 +1038,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, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1074,7 +1052,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, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1088,7 +1066,7 @@ static int p80211wext_giwretry(netdevice_t *dev, mibitem.did = DIDmib_dot11mac_dot11OperationTable_dot11MaxTransmitMSDULifetime; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1151,7 +1129,7 @@ static int p80211wext_siwretry(netdevice_t *dev, mibitem.data = rrq->value /= 1024; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1163,7 +1141,7 @@ static int p80211wext_siwretry(netdevice_t *dev, mibitem.data = rrq->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1176,7 +1154,7 @@ static int p80211wext_siwretry(netdevice_t *dev, mibitem.data = rrq->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1191,9 +1169,6 @@ static int p80211wext_siwretry(netdevice_t *dev, } -#endif /* WIRELESS_EXT > 10 */ - -#if WIRELESS_EXT > 9 static int p80211wext_siwtxpow(netdevice_t *dev, struct iw_request_info *info, struct iw_param *rrq, char *extra) @@ -1212,22 +1187,13 @@ static int p80211wext_siwtxpow(netdevice_t *dev, } msg.msgcode = DIDmsg_dot11req_mibset; - - switch (rrq->value) { - - case 1 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel1; break; - case 2 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel2; break; - case 3 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel3; break; - case 4 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel4; break; - case 5 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel5; break; - case 6 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel6; break; - case 7 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel7; break; - case 8 : mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8; break; - default: mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11TxPowerLevel8; break; - } - + mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel; + if (rrq->fixed == 0) + mibitem.data = 30; + else + mibitem.data = rrq->value; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1255,7 +1221,7 @@ static int p80211wext_giwtxpow(netdevice_t *dev, mibitem.did = DIDmib_dot11phy_dot11PhyTxPowerTable_dot11CurrentTxPowerLevel; memcpy(&msg.mibattribute.data, &mibitem, sizeof(mibitem)); - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) { err = -EFAULT; @@ -1275,7 +1241,6 @@ static int p80211wext_giwtxpow(netdevice_t *dev, DBFEXIT; return err; } -#endif /* WIRELESS_EXT > 9 */ static int p80211wext_siwspy(netdevice_t *dev, struct iw_request_info *info, @@ -1373,7 +1338,6 @@ static int prism2_result2err (int prism2_result) return err; } -#if WIRELESS_EXT > 13 static int p80211wext_siwscan(netdevice_t *dev, struct iw_request_info *info, struct iw_point *srq, char *extra) @@ -1409,7 +1373,7 @@ static int p80211wext_siwscan(netdevice_t *dev, msg.maxchanneltime.data = 250; msg.minchanneltime.data = 200; - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if (result) err = prism2_result2err (msg.resultcode.data); @@ -1520,7 +1484,7 @@ static int p80211wext_giwscan(netdevice_t *dev, msg.msgcode = DIDmsg_dot11req_scan_results; msg.bssindex.data = i; - result = p80211req_dorequest(wlandev, (UINT8*)&msg); + result = p80211req_dorequest(wlandev, (u8*)&msg); if ((result != 0) || (msg.resultcode.data != P80211ENUM_resultcode_success)) { break; @@ -1540,12 +1504,10 @@ static int p80211wext_giwscan(netdevice_t *dev, DBFEXIT; return err; } -#endif /*****************************************************/ //extra wireless extensions stuff to support NetworkManager (I hope) -#if WIRELESS_EXT > 17 /* SIOCSIWENCODEEXT */ static int p80211wext_set_encodeext(struct net_device *dev, struct iw_request_info *info, @@ -1580,7 +1542,7 @@ static int p80211wext_set_encodeext(struct net_device *dev, if ( ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY ) { - if ( ! ext->alg & IW_ENCODE_ALG_WEP) { + if (!(ext->alg & IW_ENCODE_ALG_WEP)) { WLAN_LOG_DEBUG(1,"asked to set a non wep key :("); return -EINVAL; } @@ -1615,7 +1577,7 @@ static int p80211wext_set_encodeext(struct net_device *dev, break; } msg.msgcode = DIDmsg_dot11req_mibset; - result = p80211req_dorequest(wlandev,(UINT8*)&msg); + result = p80211req_dorequest(wlandev,(u8*)&msg); WLAN_LOG_DEBUG(1,"result (%d)\n",result); } return result; @@ -1763,26 +1725,6 @@ static int p80211_wext_get_iwauth (struct net_device *dev, return result; } - -#endif - - - - - - -/*****************************************************/ - - - - - -/* -typedef int (*iw_handler)(netdevice_t *dev, struct iw_request_info *info, - union iwreq_data *wrqu, char *extra); -*/ - -#if WIRELESS_EXT > 12 static iw_handler p80211wext_handlers[] = { (iw_handler) p80211wext_siwcommit, /* SIOCSIWCOMMIT */ (iw_handler) p80211wext_giwname, /* SIOCGIWNAME */ @@ -1808,13 +1750,8 @@ static iw_handler p80211wext_handlers[] = { (iw_handler) p80211wext_giwap, /* SIOCGIWAP */ (iw_handler) NULL, /* -- hole -- */ (iw_handler) NULL, /* SIOCGIWAPLIST */ -#if WIRELESS_EXT > 13 - (iw_handler) p80211wext_siwscan, /* SIOCSIWSCAN */ - (iw_handler) p80211wext_giwscan, /* SIOCGIWSCAN */ -#else /* WIRELESS_EXT > 13 */ - (iw_handler) NULL, /* null */ /* SIOCSIWSCAN */ - (iw_handler) NULL, /* null */ /* SIOCGIWSCAN */ -#endif /* WIRELESS_EXT > 13 */ + (iw_handler) p80211wext_siwscan, /* SIOCSIWSCAN */ + (iw_handler) p80211wext_giwscan, /* SIOCGIWSCAN */ (iw_handler) p80211wext_siwessid, /* SIOCSIWESSID */ (iw_handler) p80211wext_giwessid, /* SIOCGIWESSID */ (iw_handler) NULL, /* SIOCSIWNICKN */ @@ -1835,9 +1772,7 @@ static iw_handler p80211wext_handlers[] = { (iw_handler) p80211wext_giwencode, /* SIOCGIWENCODE */ (iw_handler) NULL, /* SIOCSIWPOWER */ (iw_handler) NULL, /* SIOCGIWPOWER */ -#if WIRELESS_EXT > 17 /* WPA operations */ - (iw_handler) NULL, /* -- hole -- */ (iw_handler) NULL, /* -- hole -- */ (iw_handler) NULL, /* SIOCSIWGENIE set generic IE */ @@ -1848,170 +1783,18 @@ static iw_handler p80211wext_handlers[] = { (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 */ -#endif }; struct iw_handler_def p80211wext_handler_def = { - .num_standard = sizeof(p80211wext_handlers) / sizeof(iw_handler), + .num_standard = ARRAY_SIZE(p80211wext_handlers), .num_private = 0, .num_private_args = 0, .standard = p80211wext_handlers, .private = NULL, .private_args = NULL, -#if WIRELESS_EXT > 16 .get_wireless_stats = p80211wext_get_wireless_stats -#endif }; -#endif - -/* wireless extensions' ioctls */ -int p80211wext_support_ioctl(netdevice_t *dev, struct ifreq *ifr, int cmd) -{ - wlandevice_t *wlandev = dev->ml_priv; - -#if WIRELESS_EXT < 13 - struct iwreq *iwr = (struct iwreq*)ifr; -#endif - - p80211item_uint32_t mibitem; - int err = 0; - - DBFENTER; - - mibitem.status = P80211ENUM_msgitem_status_data_ok; - - if ( wlandev->msdstate != WLAN_MSD_RUNNING ) { - err = -ENODEV; - goto exit; - } - - WLAN_LOG_DEBUG(1, "Received wireless extension ioctl #%d.\n", cmd); - - switch (cmd) { -#if WIRELESS_EXT < 13 - case SIOCSIWNAME: /* unused */ - err = (-EOPNOTSUPP); - break; - case SIOCGIWNAME: /* get name == wireless protocol */ - err = p80211wext_giwname(dev, NULL, (char *) &iwr->u, NULL); - break; - case SIOCSIWNWID: - case SIOCGIWNWID: - err = (-EOPNOTSUPP); - break; - case SIOCSIWFREQ: /* set channel */ - err = p80211wext_siwfreq(dev, NULL, &(iwr->u.freq), NULL); - break; - case SIOCGIWFREQ: /* get channel */ - err = p80211wext_giwfreq(dev, NULL, &(iwr->u.freq), NULL); - break; - case SIOCSIWRANGE: - case SIOCSIWPRIV: - case SIOCSIWAP: /* set access point MAC addresses (BSSID) */ - err = (-EOPNOTSUPP); - break; - - case SIOCGIWAP: /* get access point MAC addresses (BSSID) */ - err = p80211wext_giwap(dev, NULL, &(iwr->u.ap_addr), NULL); - break; - -#if WIRELESS_EXT > 8 - case SIOCSIWMODE: /* set operation mode */ - case SIOCSIWESSID: /* set SSID (network name) */ - case SIOCSIWRATE: /* set default bit rate (bps) */ - err = (-EOPNOTSUPP); - break; - - case SIOCGIWMODE: /* get operation mode */ - err = p80211wext_giwmode(dev, NULL, &iwr->u.mode, NULL); - - break; - case SIOCGIWNICKN: /* get node name/nickname */ - case SIOCGIWESSID: /* get SSID */ - if(iwr->u.essid.pointer) { - char ssid[IW_ESSID_MAX_SIZE+1]; - memset(ssid, 0, sizeof(ssid)); - - err = p80211wext_giwessid(dev, NULL, &iwr->u.essid, ssid); - if(copy_to_user(iwr->u.essid.pointer, ssid, sizeof(ssid))) - err = (-EFAULT); - } - break; - case SIOCGIWRATE: - err = p80211wext_giwrate(dev, NULL, &iwr->u.bitrate, NULL); - break; - case SIOCGIWRTS: - err = p80211wext_giwrts(dev, NULL, &iwr->u.rts, NULL); - break; - case SIOCGIWFRAG: - err = p80211wext_giwfrag(dev, NULL, &iwr->u.rts, NULL); - break; - case SIOCGIWENCODE: - if (!capable(CAP_NET_ADMIN)) - err = -EPERM; - else if (iwr->u.encoding.pointer) { - char keybuf[MAX_KEYLEN]; - err = p80211wext_giwencode(dev, NULL, - &iwr->u.encoding, keybuf); - if (copy_to_user(iwr->u.encoding.pointer, keybuf, - iwr->u.encoding.length)) - err = -EFAULT; - } - break; - case SIOCGIWAPLIST: - case SIOCSIWRTS: - case SIOCSIWFRAG: - case SIOCSIWSENS: - case SIOCGIWSENS: - case SIOCSIWNICKN: /* set node name/nickname */ - case SIOCSIWENCODE: /* set encoding token & mode */ - case SIOCSIWSPY: - case SIOCGIWSPY: - case SIOCSIWPOWER: - case SIOCGIWPOWER: - case SIOCGIWPRIV: - err = (-EOPNOTSUPP); - break; - case SIOCGIWRANGE: - if(iwr->u.data.pointer != NULL) { - struct iw_range range; - err = p80211wext_giwrange(dev, NULL, &iwr->u.data, - (char *) &range); - /* Push that up to the caller */ - if (copy_to_user(iwr->u.data.pointer, &range, sizeof(range))) - err = -EFAULT; - } - break; -#endif /* WIRELESS_EXT > 8 */ -#if WIRELESS_EXT > 9 - case SIOCSIWTXPOW: - err = (-EOPNOTSUPP); - break; - case SIOCGIWTXPOW: - err = p80211wext_giwtxpow(dev, NULL, &iwr->u.txpower, NULL); - break; -#endif /* WIRELESS_EXT > 9 */ -#if WIRELESS_EXT > 10 - case SIOCSIWRETRY: - err = (-EOPNOTSUPP); - break; - case SIOCGIWRETRY: - err = p80211wext_giwretry(dev, NULL, &iwr->u.retry, NULL); - break; -#endif /* WIRELESS_EXT > 10 */ - -#endif /* WIRELESS_EXT <= 12 */ - - default: - err = (-EOPNOTSUPP); - break; - } - - exit: - DBFEXIT; - return (err); -} int p80211wext_event_associated(wlandevice_t *wlandev, int assoc) { @@ -2019,7 +1802,6 @@ int p80211wext_event_associated(wlandevice_t *wlandev, int assoc) DBFENTER; -#if WIRELESS_EXT > 13 /* Send the association state first */ data.ap_addr.sa_family = ARPHRD_ETHER; if (assoc) { @@ -2034,15 +1816,12 @@ int p80211wext_event_associated(wlandevice_t *wlandev, int assoc) if (!assoc) goto done; // XXX send association data, like IEs, etc etc. -#endif + done: DBFEXIT; return 0; } -#endif /* compatibility to wireless extensions */ - -