Lines Matching +full:ext +full:- +full:26 +full:m

13 #include <net/cfg80211-wext.h>
34 kfree_sensitive(priv->keys[index].key); in orinoco_set_key()
35 kfree_sensitive(priv->keys[index].seq); in orinoco_set_key()
38 priv->keys[index].key = kzalloc(key_len, GFP_ATOMIC); in orinoco_set_key()
39 if (!priv->keys[index].key) in orinoco_set_key()
42 priv->keys[index].key = NULL; in orinoco_set_key()
45 priv->keys[index].seq = kzalloc(seq_len, GFP_ATOMIC); in orinoco_set_key()
46 if (!priv->keys[index].seq) in orinoco_set_key()
49 priv->keys[index].seq = NULL; in orinoco_set_key()
51 priv->keys[index].key_len = key_len; in orinoco_set_key()
52 priv->keys[index].seq_len = seq_len; in orinoco_set_key()
55 memcpy((void *)priv->keys[index].key, key, key_len); in orinoco_set_key()
57 memcpy((void *)priv->keys[index].seq, seq, seq_len); in orinoco_set_key()
61 priv->keys[index].cipher = WLAN_CIPHER_SUITE_TKIP; in orinoco_set_key()
65 priv->keys[index].cipher = (key_len > SMALL_KEY_SIZE) ? in orinoco_set_key()
71 priv->keys[index].cipher = 0; in orinoco_set_key()
78 kfree(priv->keys[index].key); in orinoco_set_key()
79 priv->keys[index].key = NULL; in orinoco_set_key()
82 priv->keys[index].key_len = 0; in orinoco_set_key()
83 priv->keys[index].seq_len = 0; in orinoco_set_key()
84 priv->keys[index].cipher = 0; in orinoco_set_key()
86 return -ENOMEM; in orinoco_set_key()
92 struct hermes *hw = &priv->hw; in orinoco_get_wireless_stats()
93 struct iw_statistics *wstats = &priv->wstats; in orinoco_get_wireless_stats()
99 dev->name); in orinoco_get_wireless_stats()
110 * a new tallies inquiry command for next time - Jean II */ in orinoco_get_wireless_stats()
111 /* FIXME: Really we should wait for the inquiry to come back - in orinoco_get_wireless_stats()
119 if (priv->iw_mode == NL80211_IFTYPE_ADHOC) { in orinoco_get_wireless_stats()
120 memset(&wstats->qual, 0, sizeof(wstats->qual)); in orinoco_get_wireless_stats()
122 * first spy address - Jean II */ in orinoco_get_wireless_stats()
124 wstats->qual.qual = priv->spy_data.spy_stat[0].qual; in orinoco_get_wireless_stats()
125 wstats->qual.level = priv->spy_data.spy_stat[0].level; in orinoco_get_wireless_stats()
126 wstats->qual.noise = priv->spy_data.spy_stat[0].noise; in orinoco_get_wireless_stats()
127 wstats->qual.updated = in orinoco_get_wireless_stats()
128 priv->spy_data.spy_stat[0].updated; in orinoco_get_wireless_stats()
139 wstats->qual.qual = (int)le16_to_cpu(cq.qual); in orinoco_get_wireless_stats()
140 wstats->qual.level = (int)le16_to_cpu(cq.signal) - 0x95; in orinoco_get_wireless_stats()
141 wstats->qual.noise = (int)le16_to_cpu(cq.noise) - 0x95; in orinoco_get_wireless_stats()
142 wstats->qual.updated = in orinoco_get_wireless_stats()
161 int err = -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setwap()
165 return -EBUSY; in orinoco_ioctl_setwap()
167 /* Enable automatic roaming - no sanity checks are needed */ in orinoco_ioctl_setwap()
168 if (is_zero_ether_addr(ap_addr->sa_data) || in orinoco_ioctl_setwap()
169 is_broadcast_ether_addr(ap_addr->sa_data)) { in orinoco_ioctl_setwap()
170 priv->bssid_fixed = 0; in orinoco_ioctl_setwap()
171 eth_zero_addr(priv->desired_bssid); in orinoco_ioctl_setwap()
174 if (ap_addr->sa_data[0] == 0) { in orinoco_ioctl_setwap()
181 if (priv->firmware_type == FIRMWARE_TYPE_AGERE) { in orinoco_ioctl_setwap()
184 dev->name); in orinoco_ioctl_setwap()
185 err = -EOPNOTSUPP; in orinoco_ioctl_setwap()
189 if (priv->iw_mode != NL80211_IFTYPE_STATION) { in orinoco_ioctl_setwap()
191 "managed mode\n", dev->name); in orinoco_ioctl_setwap()
192 err = -EOPNOTSUPP; in orinoco_ioctl_setwap()
197 if (priv->firmware_type == FIRMWARE_TYPE_INTERSIL && in orinoco_ioctl_setwap()
198 strlen(priv->desired_essid) == 0) { in orinoco_ioctl_setwap()
200 "manual roaming\n", dev->name); in orinoco_ioctl_setwap()
201 err = -EOPNOTSUPP; in orinoco_ioctl_setwap()
206 priv->bssid_fixed = 1; in orinoco_ioctl_setwap()
207 memcpy(priv->desired_bssid, &ap_addr->sa_data, ETH_ALEN); in orinoco_ioctl_setwap()
225 return -EBUSY; in orinoco_ioctl_getwap()
227 ap_addr->sa_family = ARPHRD_ETHER; in orinoco_ioctl_getwap()
228 err = orinoco_hw_get_current_bssid(priv, ap_addr->sa_data); in orinoco_ioctl_getwap()
241 int index = (erq->flags & IW_ENCODE_INDEX) - 1; in orinoco_ioctl_setiwencode()
242 int setindex = priv->tx_key; in orinoco_ioctl_setiwencode()
243 enum orinoco_alg encode_alg = priv->encode_alg; in orinoco_ioctl_setiwencode()
244 int restricted = priv->wep_restrict; in orinoco_ioctl_setiwencode()
245 int err = -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setiwencode()
248 if (!priv->has_wep) in orinoco_ioctl_setiwencode()
249 return -EOPNOTSUPP; in orinoco_ioctl_setiwencode()
251 if (erq->pointer) { in orinoco_ioctl_setiwencode()
252 /* We actually have a key to set - check its length */ in orinoco_ioctl_setiwencode()
253 if (erq->length > LARGE_KEY_SIZE) in orinoco_ioctl_setiwencode()
254 return -E2BIG; in orinoco_ioctl_setiwencode()
256 if ((erq->length > SMALL_KEY_SIZE) && !priv->has_big_wep) in orinoco_ioctl_setiwencode()
257 return -E2BIG; in orinoco_ioctl_setiwencode()
261 return -EBUSY; in orinoco_ioctl_setiwencode()
264 if ((priv->has_wpa) && (priv->encode_alg == ORINOCO_ALG_TKIP)) in orinoco_ioctl_setiwencode()
267 if (erq->length > 0) { in orinoco_ioctl_setiwencode()
269 index = priv->tx_key; in orinoco_ioctl_setiwencode()
278 * we will arrive there with an index of -1. This is valid in orinoco_ioctl_setiwencode()
281 if ((index != -1) || (erq->flags == 0)) { in orinoco_ioctl_setiwencode()
282 err = -EINVAL; in orinoco_ioctl_setiwencode()
287 if (priv->keys[index].key_len == 0) { in orinoco_ioctl_setiwencode()
288 err = -EINVAL; in orinoco_ioctl_setiwencode()
295 if (erq->flags & IW_ENCODE_DISABLED) in orinoco_ioctl_setiwencode()
297 if (erq->flags & IW_ENCODE_OPEN) in orinoco_ioctl_setiwencode()
299 if (erq->flags & IW_ENCODE_RESTRICTED) in orinoco_ioctl_setiwencode()
302 if (erq->pointer && erq->length > 0) { in orinoco_ioctl_setiwencode()
304 erq->length, NULL, 0); in orinoco_ioctl_setiwencode()
306 priv->tx_key = setindex; in orinoco_ioctl_setiwencode()
309 if ((priv->encode_alg == encode_alg) && in orinoco_ioctl_setiwencode()
310 (priv->wep_restrict == restricted) && in orinoco_ioctl_setiwencode()
317 priv->encode_alg = encode_alg; in orinoco_ioctl_setiwencode()
318 priv->wep_restrict = restricted; in orinoco_ioctl_setiwencode()
332 int index = (erq->flags & IW_ENCODE_INDEX) - 1; in orinoco_ioctl_getiwencode()
335 if (!priv->has_wep) in orinoco_ioctl_getiwencode()
336 return -EOPNOTSUPP; in orinoco_ioctl_getiwencode()
339 return -EBUSY; in orinoco_ioctl_getiwencode()
342 index = priv->tx_key; in orinoco_ioctl_getiwencode()
344 erq->flags = 0; in orinoco_ioctl_getiwencode()
345 if (!priv->encode_alg) in orinoco_ioctl_getiwencode()
346 erq->flags |= IW_ENCODE_DISABLED; in orinoco_ioctl_getiwencode()
347 erq->flags |= index + 1; in orinoco_ioctl_getiwencode()
349 if (priv->wep_restrict) in orinoco_ioctl_getiwencode()
350 erq->flags |= IW_ENCODE_RESTRICTED; in orinoco_ioctl_getiwencode()
352 erq->flags |= IW_ENCODE_OPEN; in orinoco_ioctl_getiwencode()
354 erq->length = priv->keys[index].key_len; in orinoco_ioctl_getiwencode()
356 memcpy(keybuf, priv->keys[index].key, erq->length); in orinoco_ioctl_getiwencode()
370 /* Note : ESSID is ignored in Ad-Hoc demo mode, but we can set it in orinoco_ioctl_setessid()
371 * anyway... - Jean II */ in orinoco_ioctl_setessid()
374 * should use our own... - Jean II */ in orinoco_ioctl_setessid()
375 if (erq->length > IW_ESSID_MAX_SIZE) in orinoco_ioctl_setessid()
376 return -E2BIG; in orinoco_ioctl_setessid()
379 return -EBUSY; in orinoco_ioctl_setessid()
381 /* NULL the string (for NULL termination & ESSID = ANY) - Jean II */ in orinoco_ioctl_setessid()
382 memset(priv->desired_essid, 0, sizeof(priv->desired_essid)); in orinoco_ioctl_setessid()
385 if (erq->flags) in orinoco_ioctl_setessid()
386 memcpy(priv->desired_essid, essidbuf, erq->length); in orinoco_ioctl_setessid()
390 return -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setessid()
407 erq->length = err; in orinoco_ioctl_getessid()
410 return -EBUSY; in orinoco_ioctl_getessid()
411 memcpy(essidbuf, priv->desired_essid, IW_ESSID_MAX_SIZE); in orinoco_ioctl_getessid()
412 erq->length = strlen(priv->desired_essid); in orinoco_ioctl_getessid()
416 erq->flags = 1; in orinoco_ioctl_getessid()
427 int chan = -1; in orinoco_ioctl_setfreq()
429 int err = -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setfreq()
432 if (priv->iw_mode == NL80211_IFTYPE_STATION) in orinoco_ioctl_setfreq()
433 return -EBUSY; in orinoco_ioctl_setfreq()
435 if ((frq->e == 0) && (frq->m <= 1000)) { in orinoco_ioctl_setfreq()
437 chan = frq->m; in orinoco_ioctl_setfreq()
444 for (i = 0; i < (6 - frq->e); i++) in orinoco_ioctl_setfreq()
447 chan = ieee80211_frequency_to_channel(frq->m / denom); in orinoco_ioctl_setfreq()
451 !(priv->channel_mask & (1 << (chan - 1)))) in orinoco_ioctl_setfreq()
452 return -EINVAL; in orinoco_ioctl_setfreq()
455 return -EBUSY; in orinoco_ioctl_setfreq()
457 priv->channel = chan; in orinoco_ioctl_setfreq()
458 if (priv->iw_mode == NL80211_IFTYPE_MONITOR) { in orinoco_ioctl_setfreq()
459 /* Fast channel change - no commit if successful */ in orinoco_ioctl_setfreq()
460 struct hermes *hw = &priv->hw; in orinoco_ioctl_setfreq()
461 err = hw->ops->cmd_wait(hw, HERMES_CMD_TEST | in orinoco_ioctl_setfreq()
483 frq->m = tmp * 100000; in orinoco_ioctl_getfreq()
484 frq->e = 1; in orinoco_ioctl_getfreq()
495 struct hermes *hw = &priv->hw; in orinoco_ioctl_getsens()
500 if (!priv->has_sensitivity) in orinoco_ioctl_getsens()
501 return -EOPNOTSUPP; in orinoco_ioctl_getsens()
504 return -EBUSY; in orinoco_ioctl_getsens()
512 srq->value = val; in orinoco_ioctl_getsens()
513 srq->fixed = 0; /* auto */ in orinoco_ioctl_getsens()
524 int val = srq->value; in orinoco_ioctl_setsens()
527 if (!priv->has_sensitivity) in orinoco_ioctl_setsens()
528 return -EOPNOTSUPP; in orinoco_ioctl_setsens()
531 return -EINVAL; in orinoco_ioctl_setsens()
534 return -EBUSY; in orinoco_ioctl_setsens()
535 priv->ap_density = val; in orinoco_ioctl_setsens()
538 return -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setsens()
551 /* As the user space doesn't know our highest rate, it uses -1 in orinoco_ioctl_setrate()
553 * ethX rate auto" - Jean II */ in orinoco_ioctl_setrate()
554 if (rrq->value == -1) in orinoco_ioctl_setrate()
557 if (rrq->value % 100000) in orinoco_ioctl_setrate()
558 return -EINVAL; in orinoco_ioctl_setrate()
559 bitrate = rrq->value / 100000; in orinoco_ioctl_setrate()
562 ratemode = orinoco_get_bitratemode(bitrate, !rrq->fixed); in orinoco_ioctl_setrate()
564 if (ratemode == -1) in orinoco_ioctl_setrate()
565 return -EINVAL; in orinoco_ioctl_setrate()
568 return -EBUSY; in orinoco_ioctl_setrate()
569 priv->bitratemode = ratemode; in orinoco_ioctl_setrate()
572 return -EINPROGRESS; in orinoco_ioctl_setrate()
586 return -EBUSY; in orinoco_ioctl_getrate()
588 orinoco_get_ratemode_cfg(priv->bitratemode, &bitrate, &automatic); in orinoco_ioctl_getrate()
604 rrq->value = bitrate; in orinoco_ioctl_getrate()
605 rrq->fixed = !automatic; in orinoco_ioctl_getrate()
606 rrq->disabled = 0; in orinoco_ioctl_getrate()
617 int err = -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setpower()
621 return -EBUSY; in orinoco_ioctl_setpower()
623 if (prq->disabled) { in orinoco_ioctl_setpower()
624 priv->pm_on = 0; in orinoco_ioctl_setpower()
626 switch (prq->flags & IW_POWER_MODE) { in orinoco_ioctl_setpower()
628 priv->pm_mcast = 0; in orinoco_ioctl_setpower()
629 priv->pm_on = 1; in orinoco_ioctl_setpower()
632 priv->pm_mcast = 1; in orinoco_ioctl_setpower()
633 priv->pm_on = 1; in orinoco_ioctl_setpower()
636 /* No flags : but we may have a value - Jean II */ in orinoco_ioctl_setpower()
639 err = -EINVAL; in orinoco_ioctl_setpower()
643 if (prq->flags & IW_POWER_TIMEOUT) { in orinoco_ioctl_setpower()
644 priv->pm_on = 1; in orinoco_ioctl_setpower()
645 priv->pm_timeout = prq->value / 1000; in orinoco_ioctl_setpower()
647 if (prq->flags & IW_POWER_PERIOD) { in orinoco_ioctl_setpower()
648 priv->pm_on = 1; in orinoco_ioctl_setpower()
649 priv->pm_period = prq->value / 1000; in orinoco_ioctl_setpower()
653 if (!priv->pm_on) { in orinoco_ioctl_setpower()
654 err = -EINVAL; in orinoco_ioctl_setpower()
671 struct hermes *hw = &priv->hw; in orinoco_ioctl_getpower()
677 return -EBUSY; in orinoco_ioctl_getpower()
699 prq->disabled = !enable; in orinoco_ioctl_getpower()
701 if ((prq->flags & IW_POWER_TYPE) == IW_POWER_TIMEOUT) { in orinoco_ioctl_getpower()
702 prq->flags = IW_POWER_TIMEOUT; in orinoco_ioctl_getpower()
703 prq->value = timeout * 1000; in orinoco_ioctl_getpower()
705 prq->flags = IW_POWER_PERIOD; in orinoco_ioctl_getpower()
706 prq->value = period * 1000; in orinoco_ioctl_getpower()
709 prq->flags |= IW_POWER_ALL_R; in orinoco_ioctl_getpower()
711 prq->flags |= IW_POWER_UNICAST_R; in orinoco_ioctl_getpower()
725 struct iw_point *encoding = &wrqu->encoding; in orinoco_ioctl_set_encodeext()
726 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; in orinoco_ioctl_set_encodeext() local
727 int idx, alg = ext->alg, set_key = 1; in orinoco_ioctl_set_encodeext()
729 int err = -EINVAL; in orinoco_ioctl_set_encodeext()
732 return -EBUSY; in orinoco_ioctl_set_encodeext()
735 idx = encoding->flags & IW_ENCODE_INDEX; in orinoco_ioctl_set_encodeext()
739 idx--; in orinoco_ioctl_set_encodeext()
741 idx = priv->tx_key; in orinoco_ioctl_set_encodeext()
743 if (encoding->flags & IW_ENCODE_DISABLED) in orinoco_ioctl_set_encodeext()
746 if (priv->has_wpa && (alg != IW_ENCODE_ALG_TKIP)) { in orinoco_ioctl_set_encodeext()
748 (void) orinoco_clear_tkip_key(priv, priv->tx_key); in orinoco_ioctl_set_encodeext()
751 if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) { in orinoco_ioctl_set_encodeext()
752 priv->tx_key = idx; in orinoco_ioctl_set_encodeext()
754 (ext->key_len > 0)) ? 1 : 0; in orinoco_ioctl_set_encodeext()
761 priv->encode_alg = ORINOCO_ALG_NONE; in orinoco_ioctl_set_encodeext()
767 if (ext->key_len <= 0) in orinoco_ioctl_set_encodeext()
770 priv->encode_alg = ORINOCO_ALG_WEP; in orinoco_ioctl_set_encodeext()
772 ext->key, ext->key_len, NULL, 0); in orinoco_ioctl_set_encodeext()
779 if (!priv->has_wpa || in orinoco_ioctl_set_encodeext()
780 (ext->key_len > sizeof(struct orinoco_tkip_key))) in orinoco_ioctl_set_encodeext()
783 priv->encode_alg = ORINOCO_ALG_TKIP; in orinoco_ioctl_set_encodeext()
785 if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) in orinoco_ioctl_set_encodeext()
786 tkip_iv = &ext->rx_seq[0]; in orinoco_ioctl_set_encodeext()
789 ext->key, ext->key_len, tkip_iv, in orinoco_ioctl_set_encodeext()
793 ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY, in orinoco_ioctl_set_encodeext()
794 priv->keys[idx].key, priv->keys[idx].key_len, in orinoco_ioctl_set_encodeext()
798 "\n", dev->name, err); in orinoco_ioctl_set_encodeext()
806 err = -EINPROGRESS; in orinoco_ioctl_set_encodeext()
819 struct iw_point *encoding = &wrqu->encoding; in orinoco_ioctl_get_encodeext()
820 struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; in orinoco_ioctl_get_encodeext() local
826 return -EBUSY; in orinoco_ioctl_get_encodeext()
828 err = -EINVAL; in orinoco_ioctl_get_encodeext()
829 max_key_len = encoding->length - sizeof(*ext); in orinoco_ioctl_get_encodeext()
833 idx = encoding->flags & IW_ENCODE_INDEX; in orinoco_ioctl_get_encodeext()
837 idx--; in orinoco_ioctl_get_encodeext()
839 idx = priv->tx_key; in orinoco_ioctl_get_encodeext()
841 encoding->flags = idx + 1; in orinoco_ioctl_get_encodeext()
842 memset(ext, 0, sizeof(*ext)); in orinoco_ioctl_get_encodeext()
844 switch (priv->encode_alg) { in orinoco_ioctl_get_encodeext()
846 ext->alg = IW_ENCODE_ALG_NONE; in orinoco_ioctl_get_encodeext()
847 ext->key_len = 0; in orinoco_ioctl_get_encodeext()
848 encoding->flags |= IW_ENCODE_DISABLED; in orinoco_ioctl_get_encodeext()
851 ext->alg = IW_ENCODE_ALG_WEP; in orinoco_ioctl_get_encodeext()
852 ext->key_len = min(priv->keys[idx].key_len, max_key_len); in orinoco_ioctl_get_encodeext()
853 memcpy(ext->key, priv->keys[idx].key, ext->key_len); in orinoco_ioctl_get_encodeext()
854 encoding->flags |= IW_ENCODE_ENABLED; in orinoco_ioctl_get_encodeext()
857 ext->alg = IW_ENCODE_ALG_TKIP; in orinoco_ioctl_get_encodeext()
858 ext->key_len = min(priv->keys[idx].key_len, max_key_len); in orinoco_ioctl_get_encodeext()
859 memcpy(ext->key, priv->keys[idx].key, ext->key_len); in orinoco_ioctl_get_encodeext()
860 encoding->flags |= IW_ENCODE_ENABLED; in orinoco_ioctl_get_encodeext()
876 struct hermes *hw = &priv->hw; in orinoco_ioctl_set_auth()
877 struct iw_param *param = &wrqu->param; in orinoco_ioctl_set_auth()
879 int ret = -EINPROGRESS; in orinoco_ioctl_set_auth()
882 return -EBUSY; in orinoco_ioctl_set_auth()
884 switch (param->flags & IW_AUTH_INDEX) { in orinoco_ioctl_set_auth()
900 if (param->value == IW_AUTH_MFP_REQUIRED) in orinoco_ioctl_set_auth()
901 ret = -EINVAL; in orinoco_ioctl_set_auth()
909 priv->key_mgmt = param->value; in orinoco_ioctl_set_auth()
914 * card; when disabled, re-enable the card. This must in orinoco_ioctl_set_auth()
920 if (param->value) { in orinoco_ioctl_set_auth()
921 priv->tkip_cm_active = 1; in orinoco_ioctl_set_auth()
924 priv->tkip_cm_active = 0; in orinoco_ioctl_set_auth()
930 if (param->value & IW_AUTH_ALG_SHARED_KEY) in orinoco_ioctl_set_auth()
931 priv->wep_restrict = 1; in orinoco_ioctl_set_auth()
932 else if (param->value & IW_AUTH_ALG_OPEN_SYSTEM) in orinoco_ioctl_set_auth()
933 priv->wep_restrict = 0; in orinoco_ioctl_set_auth()
935 ret = -EINVAL; in orinoco_ioctl_set_auth()
939 if (priv->has_wpa) { in orinoco_ioctl_set_auth()
940 priv->wpa_enabled = param->value ? 1 : 0; in orinoco_ioctl_set_auth()
942 if (param->value) in orinoco_ioctl_set_auth()
943 ret = -EOPNOTSUPP; in orinoco_ioctl_set_auth()
945 priv->wpa_enabled = 0; in orinoco_ioctl_set_auth()
950 ret = -EOPNOTSUPP; in orinoco_ioctl_set_auth()
962 struct iw_param *param = &wrqu->param; in orinoco_ioctl_get_auth()
967 return -EBUSY; in orinoco_ioctl_get_auth()
969 switch (param->flags & IW_AUTH_INDEX) { in orinoco_ioctl_get_auth()
971 param->value = priv->key_mgmt; in orinoco_ioctl_get_auth()
975 param->value = priv->tkip_cm_active; in orinoco_ioctl_get_auth()
979 if (priv->wep_restrict) in orinoco_ioctl_get_auth()
980 param->value = IW_AUTH_ALG_SHARED_KEY; in orinoco_ioctl_get_auth()
982 param->value = IW_AUTH_ALG_OPEN_SYSTEM; in orinoco_ioctl_get_auth()
986 param->value = priv->wpa_enabled; in orinoco_ioctl_get_auth()
990 ret = -EOPNOTSUPP; in orinoco_ioctl_get_auth()
1006 if ((wrqu->data.length > IEEE80211_MAX_DATA_LEN) || in orinoco_ioctl_set_genie()
1007 (wrqu->data.length && (extra == NULL))) in orinoco_ioctl_set_genie()
1008 return -EINVAL; in orinoco_ioctl_set_genie()
1010 if (wrqu->data.length) { in orinoco_ioctl_set_genie()
1011 buf = kmemdup(extra, wrqu->data.length, GFP_KERNEL); in orinoco_ioctl_set_genie()
1013 return -ENOMEM; in orinoco_ioctl_set_genie()
1019 return -EBUSY; in orinoco_ioctl_set_genie()
1022 kfree(priv->wpa_ie); in orinoco_ioctl_set_genie()
1023 priv->wpa_ie = buf; in orinoco_ioctl_set_genie()
1024 priv->wpa_ie_len = wrqu->data.length; in orinoco_ioctl_set_genie()
1026 if (priv->wpa_ie) { in orinoco_ioctl_set_genie()
1030 * - we do this in set auth. in orinoco_ioctl_set_genie()
1047 return -EBUSY; in orinoco_ioctl_get_genie()
1049 if ((priv->wpa_ie_len == 0) || (priv->wpa_ie == NULL)) { in orinoco_ioctl_get_genie()
1050 wrqu->data.length = 0; in orinoco_ioctl_get_genie()
1054 if (wrqu->data.length < priv->wpa_ie_len) { in orinoco_ioctl_get_genie()
1055 err = -E2BIG; in orinoco_ioctl_get_genie()
1059 wrqu->data.length = priv->wpa_ie_len; in orinoco_ioctl_get_genie()
1060 memcpy(extra, priv->wpa_ie, priv->wpa_ie_len); in orinoco_ioctl_get_genie()
1077 return -EBUSY; in orinoco_ioctl_set_mlme()
1079 switch (mlme->cmd) { in orinoco_ioctl_set_mlme()
1086 ret = orinoco_hw_disassociate(priv, mlme->addr.sa_data, in orinoco_ioctl_set_mlme()
1087 mlme->reason_code); in orinoco_ioctl_set_mlme()
1091 ret = -EOPNOTSUPP; in orinoco_ioctl_set_mlme()
1106 return -EPERM; in orinoco_ioctl_reset()
1108 if (info->cmd == (SIOCIWFIRSTPRIV + 0x1)) { in orinoco_ioctl_reset()
1109 printk(KERN_DEBUG "%s: Forcing reset!\n", dev->name); in orinoco_ioctl_reset()
1112 orinoco_reset(&priv->reset_work); in orinoco_ioctl_reset()
1114 printk(KERN_DEBUG "%s: Force scheduling reset!\n", dev->name); in orinoco_ioctl_reset()
1116 schedule_work(&priv->reset_work); in orinoco_ioctl_reset()
1133 return -EBUSY; in orinoco_ioctl_setibssport()
1135 priv->ibss_port = val; in orinoco_ioctl_setibssport()
1141 return -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setibssport()
1152 *val = priv->ibss_port; in orinoco_ioctl_getibssport()
1167 return -EBUSY; in orinoco_ioctl_setport3()
1170 case 0: /* Try to do IEEE ad-hoc mode */ in orinoco_ioctl_setport3()
1171 if (!priv->has_ibss) { in orinoco_ioctl_setport3()
1172 err = -EINVAL; in orinoco_ioctl_setport3()
1175 priv->prefer_port3 = 0; in orinoco_ioctl_setport3()
1179 case 1: /* Try to do Lucent proprietary ad-hoc mode */ in orinoco_ioctl_setport3()
1180 if (!priv->has_port3) { in orinoco_ioctl_setport3()
1181 err = -EINVAL; in orinoco_ioctl_setport3()
1184 priv->prefer_port3 = 1; in orinoco_ioctl_setport3()
1188 err = -EINVAL; in orinoco_ioctl_setport3()
1194 err = -EINPROGRESS; in orinoco_ioctl_setport3()
1210 *val = priv->prefer_port3; in orinoco_ioctl_getport3()
1223 if (!priv->has_preamble) in orinoco_ioctl_setpreamble()
1224 return -EOPNOTSUPP; in orinoco_ioctl_setpreamble()
1230 * this give compatibility troubles... - Jean II */ in orinoco_ioctl_setpreamble()
1234 return -EBUSY; in orinoco_ioctl_setpreamble()
1237 priv->preamble = 1; in orinoco_ioctl_setpreamble()
1239 priv->preamble = 0; in orinoco_ioctl_setpreamble()
1243 return -EINPROGRESS; /* Call commit handler */ in orinoco_ioctl_setpreamble()
1254 if (!priv->has_preamble) in orinoco_ioctl_getpreamble()
1255 return -EOPNOTSUPP; in orinoco_ioctl_getpreamble()
1257 *val = priv->preamble; in orinoco_ioctl_getpreamble()
1265 * For Wireless Tools 25 and 26 append "dummy" are the end. */
1272 struct hermes *hw = &priv->hw; in orinoco_ioctl_getrid()
1273 int rid = data->flags; in orinoco_ioctl_getrid()
1281 return -EPERM; in orinoco_ioctl_getrid()
1284 return -EINVAL; in orinoco_ioctl_getrid()
1287 return -EBUSY; in orinoco_ioctl_getrid()
1289 err = hw->ops->read_ltv(hw, USER_BAP, rid, MAX_RID_LEN, &length, in orinoco_ioctl_getrid()
1294 data->length = min_t(u16, HERMES_RECLEN_TO_BYTES(length), in orinoco_ioctl_getrid()
1313 if (!priv->open) in orinoco_ioctl_commit()
1391 Added typecasting since we no longer use iwreq_data -- Moustafa