diff options
Diffstat (limited to 'drivers/net/wireless/orinoco/wext.c')
-rw-r--r-- | drivers/net/wireless/orinoco/wext.c | 183 |
1 files changed, 5 insertions, 178 deletions
diff --git a/drivers/net/wireless/orinoco/wext.c b/drivers/net/wireless/orinoco/wext.c index 57b850ebfeb2..a1006bf430cc 100644 --- a/drivers/net/wireless/orinoco/wext.c +++ b/drivers/net/wireless/orinoco/wext.c | |||
@@ -538,125 +538,6 @@ static int orinoco_ioctl_setsens(struct net_device *dev, | |||
538 | return -EINPROGRESS; /* Call commit handler */ | 538 | return -EINPROGRESS; /* Call commit handler */ |
539 | } | 539 | } |
540 | 540 | ||
541 | static int orinoco_ioctl_setrts(struct net_device *dev, | ||
542 | struct iw_request_info *info, | ||
543 | struct iw_param *rrq, | ||
544 | char *extra) | ||
545 | { | ||
546 | struct orinoco_private *priv = ndev_priv(dev); | ||
547 | int val = rrq->value; | ||
548 | unsigned long flags; | ||
549 | |||
550 | if (rrq->disabled) | ||
551 | val = 2347; | ||
552 | |||
553 | if ((val < 0) || (val > 2347)) | ||
554 | return -EINVAL; | ||
555 | |||
556 | if (orinoco_lock(priv, &flags) != 0) | ||
557 | return -EBUSY; | ||
558 | |||
559 | priv->rts_thresh = val; | ||
560 | orinoco_unlock(priv, &flags); | ||
561 | |||
562 | return -EINPROGRESS; /* Call commit handler */ | ||
563 | } | ||
564 | |||
565 | static int orinoco_ioctl_getrts(struct net_device *dev, | ||
566 | struct iw_request_info *info, | ||
567 | struct iw_param *rrq, | ||
568 | char *extra) | ||
569 | { | ||
570 | struct orinoco_private *priv = ndev_priv(dev); | ||
571 | |||
572 | rrq->value = priv->rts_thresh; | ||
573 | rrq->disabled = (rrq->value == 2347); | ||
574 | rrq->fixed = 1; | ||
575 | |||
576 | return 0; | ||
577 | } | ||
578 | |||
579 | static int orinoco_ioctl_setfrag(struct net_device *dev, | ||
580 | struct iw_request_info *info, | ||
581 | struct iw_param *frq, | ||
582 | char *extra) | ||
583 | { | ||
584 | struct orinoco_private *priv = ndev_priv(dev); | ||
585 | int err = -EINPROGRESS; /* Call commit handler */ | ||
586 | unsigned long flags; | ||
587 | |||
588 | if (orinoco_lock(priv, &flags) != 0) | ||
589 | return -EBUSY; | ||
590 | |||
591 | if (priv->has_mwo) { | ||
592 | if (frq->disabled) | ||
593 | priv->mwo_robust = 0; | ||
594 | else { | ||
595 | if (frq->fixed) | ||
596 | printk(KERN_WARNING "%s: Fixed fragmentation " | ||
597 | "is not supported on this firmware. " | ||
598 | "Using MWO robust instead.\n", | ||
599 | dev->name); | ||
600 | priv->mwo_robust = 1; | ||
601 | } | ||
602 | } else { | ||
603 | if (frq->disabled) | ||
604 | priv->frag_thresh = 2346; | ||
605 | else { | ||
606 | if ((frq->value < 256) || (frq->value > 2346)) | ||
607 | err = -EINVAL; | ||
608 | else | ||
609 | /* must be even */ | ||
610 | priv->frag_thresh = frq->value & ~0x1; | ||
611 | } | ||
612 | } | ||
613 | |||
614 | orinoco_unlock(priv, &flags); | ||
615 | |||
616 | return err; | ||
617 | } | ||
618 | |||
619 | static int orinoco_ioctl_getfrag(struct net_device *dev, | ||
620 | struct iw_request_info *info, | ||
621 | struct iw_param *frq, | ||
622 | char *extra) | ||
623 | { | ||
624 | struct orinoco_private *priv = ndev_priv(dev); | ||
625 | hermes_t *hw = &priv->hw; | ||
626 | int err; | ||
627 | u16 val; | ||
628 | unsigned long flags; | ||
629 | |||
630 | if (orinoco_lock(priv, &flags) != 0) | ||
631 | return -EBUSY; | ||
632 | |||
633 | if (priv->has_mwo) { | ||
634 | err = hermes_read_wordrec(hw, USER_BAP, | ||
635 | HERMES_RID_CNFMWOROBUST_AGERE, | ||
636 | &val); | ||
637 | if (err) | ||
638 | val = 0; | ||
639 | |||
640 | frq->value = val ? 2347 : 0; | ||
641 | frq->disabled = !val; | ||
642 | frq->fixed = 0; | ||
643 | } else { | ||
644 | err = hermes_read_wordrec(hw, USER_BAP, | ||
645 | HERMES_RID_CNFFRAGMENTATIONTHRESHOLD, | ||
646 | &val); | ||
647 | if (err) | ||
648 | val = 0; | ||
649 | |||
650 | frq->value = val; | ||
651 | frq->disabled = (val >= 2346); | ||
652 | frq->fixed = 1; | ||
653 | } | ||
654 | |||
655 | orinoco_unlock(priv, &flags); | ||
656 | |||
657 | return err; | ||
658 | } | ||
659 | |||
660 | static int orinoco_ioctl_setrate(struct net_device *dev, | 541 | static int orinoco_ioctl_setrate(struct net_device *dev, |
661 | struct iw_request_info *info, | 542 | struct iw_request_info *info, |
662 | struct iw_param *rrq, | 543 | struct iw_param *rrq, |
@@ -1201,60 +1082,6 @@ static int orinoco_ioctl_set_mlme(struct net_device *dev, | |||
1201 | return ret; | 1082 | return ret; |
1202 | } | 1083 | } |
1203 | 1084 | ||
1204 | static int orinoco_ioctl_getretry(struct net_device *dev, | ||
1205 | struct iw_request_info *info, | ||
1206 | struct iw_param *rrq, | ||
1207 | char *extra) | ||
1208 | { | ||
1209 | struct orinoco_private *priv = ndev_priv(dev); | ||
1210 | hermes_t *hw = &priv->hw; | ||
1211 | int err = 0; | ||
1212 | u16 short_limit, long_limit, lifetime; | ||
1213 | unsigned long flags; | ||
1214 | |||
1215 | if (orinoco_lock(priv, &flags) != 0) | ||
1216 | return -EBUSY; | ||
1217 | |||
1218 | err = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_SHORTRETRYLIMIT, | ||
1219 | &short_limit); | ||
1220 | if (err) | ||
1221 | goto out; | ||
1222 | |||
1223 | err = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_LONGRETRYLIMIT, | ||
1224 | &long_limit); | ||
1225 | if (err) | ||
1226 | goto out; | ||
1227 | |||
1228 | err = hermes_read_wordrec(hw, USER_BAP, HERMES_RID_MAXTRANSMITLIFETIME, | ||
1229 | &lifetime); | ||
1230 | if (err) | ||
1231 | goto out; | ||
1232 | |||
1233 | rrq->disabled = 0; /* Can't be disabled */ | ||
1234 | |||
1235 | /* Note : by default, display the retry number */ | ||
1236 | if ((rrq->flags & IW_RETRY_TYPE) == IW_RETRY_LIFETIME) { | ||
1237 | rrq->flags = IW_RETRY_LIFETIME; | ||
1238 | rrq->value = lifetime * 1000; /* ??? */ | ||
1239 | } else { | ||
1240 | /* By default, display the min number */ | ||
1241 | if ((rrq->flags & IW_RETRY_LONG)) { | ||
1242 | rrq->flags = IW_RETRY_LIMIT | IW_RETRY_LONG; | ||
1243 | rrq->value = long_limit; | ||
1244 | } else { | ||
1245 | rrq->flags = IW_RETRY_LIMIT; | ||
1246 | rrq->value = short_limit; | ||
1247 | if (short_limit != long_limit) | ||
1248 | rrq->flags |= IW_RETRY_SHORT; | ||
1249 | } | ||
1250 | } | ||
1251 | |||
1252 | out: | ||
1253 | orinoco_unlock(priv, &flags); | ||
1254 | |||
1255 | return err; | ||
1256 | } | ||
1257 | |||
1258 | static int orinoco_ioctl_reset(struct net_device *dev, | 1085 | static int orinoco_ioctl_reset(struct net_device *dev, |
1259 | struct iw_request_info *info, | 1086 | struct iw_request_info *info, |
1260 | void *wrqu, | 1087 | void *wrqu, |
@@ -1528,11 +1355,11 @@ static const iw_handler orinoco_handler[] = { | |||
1528 | IW_HANDLER(SIOCGIWESSID, (iw_handler)orinoco_ioctl_getessid), | 1355 | IW_HANDLER(SIOCGIWESSID, (iw_handler)orinoco_ioctl_getessid), |
1529 | IW_HANDLER(SIOCSIWRATE, (iw_handler)orinoco_ioctl_setrate), | 1356 | IW_HANDLER(SIOCSIWRATE, (iw_handler)orinoco_ioctl_setrate), |
1530 | IW_HANDLER(SIOCGIWRATE, (iw_handler)orinoco_ioctl_getrate), | 1357 | IW_HANDLER(SIOCGIWRATE, (iw_handler)orinoco_ioctl_getrate), |
1531 | IW_HANDLER(SIOCSIWRTS, (iw_handler)orinoco_ioctl_setrts), | 1358 | IW_HANDLER(SIOCSIWRTS, (iw_handler)cfg80211_wext_siwrts), |
1532 | IW_HANDLER(SIOCGIWRTS, (iw_handler)orinoco_ioctl_getrts), | 1359 | IW_HANDLER(SIOCGIWRTS, (iw_handler)cfg80211_wext_giwrts), |
1533 | IW_HANDLER(SIOCSIWFRAG, (iw_handler)orinoco_ioctl_setfrag), | 1360 | IW_HANDLER(SIOCSIWFRAG, (iw_handler)cfg80211_wext_siwfrag), |
1534 | IW_HANDLER(SIOCGIWFRAG, (iw_handler)orinoco_ioctl_getfrag), | 1361 | IW_HANDLER(SIOCGIWFRAG, (iw_handler)cfg80211_wext_giwfrag), |
1535 | IW_HANDLER(SIOCGIWRETRY, (iw_handler)orinoco_ioctl_getretry), | 1362 | IW_HANDLER(SIOCGIWRETRY, (iw_handler)cfg80211_wext_giwretry), |
1536 | IW_HANDLER(SIOCSIWENCODE, (iw_handler)orinoco_ioctl_setiwencode), | 1363 | IW_HANDLER(SIOCSIWENCODE, (iw_handler)orinoco_ioctl_setiwencode), |
1537 | IW_HANDLER(SIOCGIWENCODE, (iw_handler)orinoco_ioctl_getiwencode), | 1364 | IW_HANDLER(SIOCGIWENCODE, (iw_handler)orinoco_ioctl_getiwencode), |
1538 | IW_HANDLER(SIOCSIWPOWER, (iw_handler)orinoco_ioctl_setpower), | 1365 | IW_HANDLER(SIOCSIWPOWER, (iw_handler)orinoco_ioctl_setpower), |