mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-31 16:38:12 +00:00
orinoco: convert giwrange to cfg80211
Signed-off-by: David Kilroy <kilroyd@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
c63cdbe8f8
commit
934fd51a94
1 changed files with 1 additions and 114 deletions
|
@ -172,119 +172,6 @@ static int orinoco_ioctl_getwap(struct net_device *dev,
|
|||
return err;
|
||||
}
|
||||
|
||||
static int orinoco_ioctl_getiwrange(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
struct iw_point *rrq,
|
||||
char *extra)
|
||||
{
|
||||
struct orinoco_private *priv = ndev_priv(dev);
|
||||
int err = 0;
|
||||
struct iw_range *range = (struct iw_range *) extra;
|
||||
int numrates;
|
||||
int i, k;
|
||||
|
||||
rrq->length = sizeof(struct iw_range);
|
||||
memset(range, 0, sizeof(struct iw_range));
|
||||
|
||||
range->we_version_compiled = WIRELESS_EXT;
|
||||
range->we_version_source = 22;
|
||||
|
||||
/* Set available channels/frequencies */
|
||||
range->num_channels = NUM_CHANNELS;
|
||||
k = 0;
|
||||
for (i = 0; i < NUM_CHANNELS; i++) {
|
||||
if (priv->channel_mask & (1 << i)) {
|
||||
range->freq[k].i = i + 1;
|
||||
range->freq[k].m = (ieee80211_dsss_chan_to_freq(i + 1) *
|
||||
100000);
|
||||
range->freq[k].e = 1;
|
||||
k++;
|
||||
}
|
||||
|
||||
if (k >= IW_MAX_FREQUENCIES)
|
||||
break;
|
||||
}
|
||||
range->num_frequency = k;
|
||||
range->sensitivity = 3;
|
||||
|
||||
if (priv->has_wep) {
|
||||
range->max_encoding_tokens = ORINOCO_MAX_KEYS;
|
||||
range->encoding_size[0] = SMALL_KEY_SIZE;
|
||||
range->num_encoding_sizes = 1;
|
||||
|
||||
if (priv->has_big_wep) {
|
||||
range->encoding_size[1] = LARGE_KEY_SIZE;
|
||||
range->num_encoding_sizes = 2;
|
||||
}
|
||||
}
|
||||
|
||||
if (priv->has_wpa)
|
||||
range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_CIPHER_TKIP;
|
||||
|
||||
if ((priv->iw_mode == NL80211_IFTYPE_ADHOC) && (!SPY_NUMBER(priv))) {
|
||||
/* Quality stats meaningless in ad-hoc mode */
|
||||
} else {
|
||||
range->max_qual.qual = 0x8b - 0x2f;
|
||||
range->max_qual.level = 0x2f - 0x95 - 1;
|
||||
range->max_qual.noise = 0x2f - 0x95 - 1;
|
||||
/* Need to get better values */
|
||||
range->avg_qual.qual = 0x24;
|
||||
range->avg_qual.level = 0xC2;
|
||||
range->avg_qual.noise = 0x9E;
|
||||
}
|
||||
|
||||
err = orinoco_hw_get_bitratelist(priv, &numrates,
|
||||
range->bitrate, IW_MAX_BITRATES);
|
||||
if (err)
|
||||
return err;
|
||||
range->num_bitrates = numrates;
|
||||
|
||||
/* Set an indication of the max TCP throughput in bit/s that we can
|
||||
* expect using this interface. May be use for QoS stuff...
|
||||
* Jean II */
|
||||
if (numrates > 2)
|
||||
range->throughput = 5 * 1000 * 1000; /* ~5 Mb/s */
|
||||
else
|
||||
range->throughput = 1.5 * 1000 * 1000; /* ~1.5 Mb/s */
|
||||
|
||||
range->min_rts = 0;
|
||||
range->max_rts = 2347;
|
||||
range->min_frag = 256;
|
||||
range->max_frag = 2346;
|
||||
|
||||
range->min_pmp = 0;
|
||||
range->max_pmp = 65535000;
|
||||
range->min_pmt = 0;
|
||||
range->max_pmt = 65535 * 1000; /* ??? */
|
||||
range->pmp_flags = IW_POWER_PERIOD;
|
||||
range->pmt_flags = IW_POWER_TIMEOUT;
|
||||
range->pm_capa = (IW_POWER_PERIOD | IW_POWER_TIMEOUT |
|
||||
IW_POWER_UNICAST_R);
|
||||
|
||||
range->retry_capa = IW_RETRY_LIMIT | IW_RETRY_LIFETIME;
|
||||
range->retry_flags = IW_RETRY_LIMIT;
|
||||
range->r_time_flags = IW_RETRY_LIFETIME;
|
||||
range->min_retry = 0;
|
||||
range->max_retry = 65535; /* ??? */
|
||||
range->min_r_time = 0;
|
||||
range->max_r_time = 65535 * 1000; /* ??? */
|
||||
|
||||
if (priv->firmware_type == FIRMWARE_TYPE_AGERE)
|
||||
range->scan_capa = IW_SCAN_CAPA_ESSID;
|
||||
else
|
||||
range->scan_capa = IW_SCAN_CAPA_NONE;
|
||||
|
||||
/* Event capability (kernel) */
|
||||
IW_EVENT_CAPA_SET_KERNEL(range->event_capa);
|
||||
/* Event capability (driver) */
|
||||
IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWTHRSPY);
|
||||
IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWAP);
|
||||
IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWSCAN);
|
||||
IW_EVENT_CAPA_SET(range->event_capa, IWEVTXDROP);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int orinoco_ioctl_setiwencode(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
struct iw_point *erq,
|
||||
|
@ -1641,7 +1528,7 @@ static const iw_handler orinoco_handler[] = {
|
|||
STD_IW_HANDLER(SIOCGIWMODE, cfg80211_wext_giwmode),
|
||||
STD_IW_HANDLER(SIOCSIWSENS, orinoco_ioctl_setsens),
|
||||
STD_IW_HANDLER(SIOCGIWSENS, orinoco_ioctl_getsens),
|
||||
STD_IW_HANDLER(SIOCGIWRANGE, orinoco_ioctl_getiwrange),
|
||||
STD_IW_HANDLER(SIOCGIWRANGE, cfg80211_wext_giwrange),
|
||||
STD_IW_HANDLER(SIOCSIWSPY, iw_handler_set_spy),
|
||||
STD_IW_HANDLER(SIOCGIWSPY, iw_handler_get_spy),
|
||||
STD_IW_HANDLER(SIOCSIWTHRSPY, iw_handler_set_thrspy),
|
||||
|
|
Loading…
Reference in a new issue