aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJouni Malinen <jkmaline@cc.hut.fi>2005-07-30 15:50:01 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-07-30 18:17:22 -0400
commit72ca9c61cddb82a8596cee8141656d50aba42be5 (patch)
treefe2fa88ebe7d39538e6d4789d29db0e5a58b50b3 /drivers
parentf06ac319c05c6822f878f201ae80e54fbbe8be8c (diff)
[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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/hostap/hostap_common.h1
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c1
-rw-r--r--drivers/net/wireless/hostap/hostap_ioctl.c18
-rw-r--r--drivers/net/wireless/hostap/hostap_wlan.h3
4 files changed, 20 insertions, 3 deletions
diff --git a/drivers/net/wireless/hostap/hostap_common.h b/drivers/net/wireless/hostap/hostap_common.h
index 1a9610add695..feec70e68d4e 100644
--- a/drivers/net/wireless/hostap/hostap_common.h
+++ b/drivers/net/wireless/hostap/hostap_common.h
@@ -423,6 +423,7 @@ enum {
423 PRISM2_PARAM_PRIVACY_INVOKED = 37, 423 PRISM2_PARAM_PRIVACY_INVOKED = 37,
424 PRISM2_PARAM_TKIP_COUNTERMEASURES = 38, 424 PRISM2_PARAM_TKIP_COUNTERMEASURES = 38,
425 PRISM2_PARAM_DROP_UNENCRYPTED = 39, 425 PRISM2_PARAM_DROP_UNENCRYPTED = 39,
426 PRISM2_PARAM_SCAN_CHANNEL_MASK = 40,
426}; 427};
427 428
428enum { HOSTAP_ANTSEL_DO_NOT_TOUCH = 0, HOSTAP_ANTSEL_DIVERSITY = 1, 429enum { HOSTAP_ANTSEL_DO_NOT_TOUCH = 0, HOSTAP_ANTSEL_DIVERSITY = 1,
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index 7572050db32d..b4f7feb669ef 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -3374,6 +3374,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx,
3374 * cnfDbmAdjust, if available */ 3374 * cnfDbmAdjust, if available */
3375 local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY; 3375 local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY;
3376 local->sram_type = -1; 3376 local->sram_type = -1;
3377 local->scan_channel_mask = 0xffff;
3377#if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER) 3378#if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER)
3378 local->bus_master_threshold_rx = GET_INT_PARM(bus_master_threshold_rx, 3379 local->bus_master_threshold_rx = GET_INT_PARM(bus_master_threshold_rx,
3379 card_idx); 3380 card_idx);
diff --git a/drivers/net/wireless/hostap/hostap_ioctl.c b/drivers/net/wireless/hostap/hostap_ioctl.c
index e545ac9c1b10..4c236e7903f5 100644
--- a/drivers/net/wireless/hostap/hostap_ioctl.c
+++ b/drivers/net/wireless/hostap/hostap_ioctl.c
@@ -1664,7 +1664,8 @@ static int prism2_request_hostscan(struct net_device *dev,
1664 local = iface->local; 1664 local = iface->local;
1665 1665
1666 memset(&scan_req, 0, sizeof(scan_req)); 1666 memset(&scan_req, 0, sizeof(scan_req));
1667 scan_req.channel_list = __constant_cpu_to_le16(local->channel_mask); 1667 scan_req.channel_list = cpu_to_le16(local->channel_mask &
1668 local->scan_channel_mask);
1668 scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS); 1669 scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS);
1669 if (ssid) { 1670 if (ssid) {
1670 if (ssid_len > 32) 1671 if (ssid_len > 32)
@@ -1693,7 +1694,8 @@ static int prism2_request_scan(struct net_device *dev)
1693 local = iface->local; 1694 local = iface->local;
1694 1695
1695 memset(&scan_req, 0, sizeof(scan_req)); 1696 memset(&scan_req, 0, sizeof(scan_req));
1696 scan_req.channel_list = __constant_cpu_to_le16(local->channel_mask); 1697 scan_req.channel_list = cpu_to_le16(local->channel_mask &
1698 local->scan_channel_mask);
1697 scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS); 1699 scan_req.txrate = __constant_cpu_to_le16(HFA384X_RATES_1MBPS);
1698 1700
1699 /* FIX: 1701 /* FIX:
@@ -2338,6 +2340,10 @@ static const struct iw_priv_args prism2_priv[] = {
2338 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "drop_unencrypte" }, 2340 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "drop_unencrypte" },
2339 { PRISM2_PARAM_DROP_UNENCRYPTED, 2341 { PRISM2_PARAM_DROP_UNENCRYPTED,
2340 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getdrop_unencry" }, 2342 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getdrop_unencry" },
2343 { PRISM2_PARAM_SCAN_CHANNEL_MASK,
2344 IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "scan_channels" },
2345 { PRISM2_PARAM_SCAN_CHANNEL_MASK,
2346 0, IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, "getscan_channel" },
2341}; 2347};
2342 2348
2343 2349
@@ -2699,6 +2705,10 @@ static int prism2_ioctl_priv_prism2_param(struct net_device *dev,
2699 local->drop_unencrypted = value; 2705 local->drop_unencrypted = value;
2700 break; 2706 break;
2701 2707
2708 case PRISM2_PARAM_SCAN_CHANNEL_MASK:
2709 local->scan_channel_mask = value;
2710 break;
2711
2702 default: 2712 default:
2703 printk(KERN_DEBUG "%s: prism2_param: unknown param %d\n", 2713 printk(KERN_DEBUG "%s: prism2_param: unknown param %d\n",
2704 dev->name, param); 2714 dev->name, param);
@@ -2890,6 +2900,10 @@ static int prism2_ioctl_priv_get_prism2_param(struct net_device *dev,
2890 *param = local->drop_unencrypted; 2900 *param = local->drop_unencrypted;
2891 break; 2901 break;
2892 2902
2903 case PRISM2_PARAM_SCAN_CHANNEL_MASK:
2904 *param = local->scan_channel_mask;
2905 break;
2906
2893 default: 2907 default:
2894 printk(KERN_DEBUG "%s: get_prism2_param: unknown param %d\n", 2908 printk(KERN_DEBUG "%s: get_prism2_param: unknown param %d\n",
2895 dev->name, *param); 2909 dev->name, *param);
diff --git a/drivers/net/wireless/hostap/hostap_wlan.h b/drivers/net/wireless/hostap/hostap_wlan.h
index 4b32e2e887ba..91beee50c9c9 100644
--- a/drivers/net/wireless/hostap/hostap_wlan.h
+++ b/drivers/net/wireless/hostap/hostap_wlan.h
@@ -680,7 +680,8 @@ struct local_info {
680 char essid[MAX_SSID_LEN + 1]; 680 char essid[MAX_SSID_LEN + 1];
681 char name[MAX_NAME_LEN + 1]; 681 char name[MAX_NAME_LEN + 1];
682 int name_set; 682 int name_set;
683 u16 channel_mask; 683 u16 channel_mask; /* mask of allowed channels */
684 u16 scan_channel_mask; /* mask of channels to be scanned */
684 struct comm_tallies_sums comm_tallies; 685 struct comm_tallies_sums comm_tallies;
685 struct net_device_stats stats; 686 struct net_device_stats stats;
686 struct proc_dir_entry *proc; 687 struct proc_dir_entry *proc;