[PATCH] hostap update
Added support for setting channel mask for scan requests ('iwpriv wlan0 scan_channels 0x00ff' masks scans to use channels 1-8). Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
This commit is contained in:
Родитель
f06ac319c0
Коммит
72ca9c61cd
|
@ -423,6 +423,7 @@ enum {
|
||||||
PRISM2_PARAM_PRIVACY_INVOKED = 37,
|
PRISM2_PARAM_PRIVACY_INVOKED = 37,
|
||||||
PRISM2_PARAM_TKIP_COUNTERMEASURES = 38,
|
PRISM2_PARAM_TKIP_COUNTERMEASURES = 38,
|
||||||
PRISM2_PARAM_DROP_UNENCRYPTED = 39,
|
PRISM2_PARAM_DROP_UNENCRYPTED = 39,
|
||||||
|
PRISM2_PARAM_SCAN_CHANNEL_MASK = 40,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum { HOSTAP_ANTSEL_DO_NOT_TOUCH = 0, HOSTAP_ANTSEL_DIVERSITY = 1,
|
enum { HOSTAP_ANTSEL_DO_NOT_TOUCH = 0, HOSTAP_ANTSEL_DIVERSITY = 1,
|
||||||
|
|
|
@ -3374,6 +3374,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
|
||||||
* cnfDbmAdjust, if available */
|
* cnfDbmAdjust, if available */
|
||||||
local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY;
|
local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY;
|
||||||
local->sram_type = -1;
|
local->sram_type = -1;
|
||||||
|
local->scan_channel_mask = 0xffff;
|
||||||
#if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER)
|
#if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER)
|
||||||
local->bus_master_threshold_rx = GET_INT_PARM(bus_master_threshold_rx,
|
local->bus_master_threshold_rx = GET_INT_PARM(bus_master_threshold_rx,
|
||||||
card_idx);
|
card_idx);
|
||||||
|
|
|
@ -1664,7 +1664,8 @@ static int prism2_request_hostscan(struct net_device *dev,
|
||||||
local = iface->local;
|
local = iface->local;
|
||||||
|
|
||||||
memset(&scan_req, 0, sizeof(scan_req));
|
memset(&scan_req, 0, sizeof(scan_req));
|
||||||
scan_req.channel_list = __constant_cpu_to_le16(local->channel_mask);
|
scan_req.channel_list = cpu_to_le16(local->channel_mask &
|
||||||
|
local->scan_channel_mask);
|
||||||
scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS);
|
scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS);
|
||||||
if (ssid) {
|
if (ssid) {
|
||||||
if (ssid_len > 32)
|
if (ssid_len > 32)
|
||||||
|
@ -1693,7 +1694,8 @@ static int prism2_request_scan(struct net_device *dev)
|
||||||
local = iface->local;
|
local = iface->local;
|
||||||
|
|
||||||
memset(&scan_req, 0, sizeof(scan_req));
|
memset(&scan_req, 0, sizeof(scan_req));
|
||||||
scan_req.channel_list = __constant_cpu_to_le16(local->channel_mask);
|
scan_req.channel_list = cpu_to_le16(local->channel_mask &
|
||||||
|
local->scan_channel_mask);
|
||||||
scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS);
|
scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS);
|
||||||
|
|
||||||
/* FIX:
|
/* FIX:
|
||||||
|
@ -2338,6 +2340,10 @@ static const struct iw_priv_args prism2_priv[] = {
|
||||||
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "drop_unencrypte" },
|
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "drop_unencrypte" },
|
||||||
{ PRISM2_PARAM_DROP_UNENCRYPTED,
|
{ PRISM2_PARAM_DROP_UNENCRYPTED,
|
||||||
0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getdrop_unencry" },
|
0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getdrop_unencry" },
|
||||||
|
{ PRISM2_PARAM_SCAN_CHANNEL_MASK,
|
||||||
|
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "scan_channels" },
|
||||||
|
{ PRISM2_PARAM_SCAN_CHANNEL_MASK,
|
||||||
|
0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getscan_channel" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2699,6 +2705,10 @@ static int prism2_ioctl_priv_prism2_param(struct net_device *dev,
|
||||||
local->drop_unencrypted = value;
|
local->drop_unencrypted = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PRISM2_PARAM_SCAN_CHANNEL_MASK:
|
||||||
|
local->scan_channel_mask = value;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printk(KERN_DEBUG "%s: prism2_param: unknown param %d\n",
|
printk(KERN_DEBUG "%s: prism2_param: unknown param %d\n",
|
||||||
dev->name, param);
|
dev->name, param);
|
||||||
|
@ -2890,6 +2900,10 @@ static int prism2_ioctl_priv_get_prism2_param(struct net_device *dev,
|
||||||
*param = local->drop_unencrypted;
|
*param = local->drop_unencrypted;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PRISM2_PARAM_SCAN_CHANNEL_MASK:
|
||||||
|
*param = local->scan_channel_mask;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printk(KERN_DEBUG "%s: get_prism2_param: unknown param %d\n",
|
printk(KERN_DEBUG "%s: get_prism2_param: unknown param %d\n",
|
||||||
dev->name, *param);
|
dev->name, *param);
|
||||||
|
|
|
@ -680,7 +680,8 @@ struct local_info {
|
||||||
char essid[MAX_SSID_LEN + 1];
|
char essid[MAX_SSID_LEN + 1];
|
||||||
char name[MAX_NAME_LEN + 1];
|
char name[MAX_NAME_LEN + 1];
|
||||||
int name_set;
|
int name_set;
|
||||||
u16 channel_mask;
|
u16 channel_mask; /* mask of allowed channels */
|
||||||
|
u16 scan_channel_mask; /* mask of channels to be scanned */
|
||||||
struct comm_tallies_sums comm_tallies;
|
struct comm_tallies_sums comm_tallies;
|
||||||
struct net_device_stats stats;
|
struct net_device_stats stats;
|
||||||
struct proc_dir_entry *proc;
|
struct proc_dir_entry *proc;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче