tree fe2fa88ebe7d39538e6d4789d29db0e5a58b50b3
parent f06ac319c05c6822f878f201ae80e54fbbe8be8c
author Jouni Malinen <[EMAIL PROTECTED]> Sun, 31 Jul 2005 02:50:01 -0700
committer Jeff Garzik <[EMAIL PROTECTED]> Sun, 31 Jul 2005 02:17:22 -0400

[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 <[EMAIL PROTECTED]>
Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>

 drivers/net/wireless/hostap/hostap_common.h |    1 +
 drivers/net/wireless/hostap/hostap_hw.c     |    1 +
 drivers/net/wireless/hostap/hostap_ioctl.c  |   18 ++++++++++++++++--
 drivers/net/wireless/hostap/hostap_wlan.h   |    3 ++-
 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
--- a/drivers/net/wireless/hostap/hostap_common.h
+++ b/drivers/net/wireless/hostap/hostap_common.h
@@ -423,6 +423,7 @@ enum {
        PRISM2_PARAM_PRIVACY_INVOKED = 37,
        PRISM2_PARAM_TKIP_COUNTERMEASURES = 38,
        PRISM2_PARAM_DROP_UNENCRYPTED = 39,
+       PRISM2_PARAM_SCAN_CHANNEL_MASK = 40,
 };
 
 enum { 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
--- 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_hel
                                   * cnfDbmAdjust, if available */
        local->auth_algs = PRISM2_AUTH_OPEN | PRISM2_AUTH_SHARED_KEY;
        local->sram_type = -1;
+       local->scan_channel_mask = 0xffff;
 #if defined(PRISM2_PCI) && defined(PRISM2_BUS_MASTER)
        local->bus_master_threshold_rx = GET_INT_PARM(bus_master_threshold_rx,
                                                      card_idx);
diff --git a/drivers/net/wireless/hostap/hostap_ioctl.c 
b/drivers/net/wireless/hostap/hostap_ioctl.c
--- 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(struc
        local = iface->local;
 
        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);
        if (ssid) {
                if (ssid_len > 32)
@@ -1693,7 +1694,8 @@ static int prism2_request_scan(struct ne
        local = iface->local;
 
        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);
 
        /* FIX:
@@ -2338,6 +2340,10 @@ static const struct iw_priv_args prism2_
          IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "drop_unencrypte" },
        { PRISM2_PARAM_DROP_UNENCRYPTED,
          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_para
                local->drop_unencrypted = value;
                break;
 
+       case PRISM2_PARAM_SCAN_CHANNEL_MASK:
+               local->scan_channel_mask = value;
+               break;
+
        default:
                printk(KERN_DEBUG "%s: prism2_param: unknown param %d\n",
                       dev->name, param);
@@ -2890,6 +2900,10 @@ static int prism2_ioctl_priv_get_prism2_
                *param = local->drop_unencrypted;
                break;
 
+       case PRISM2_PARAM_SCAN_CHANNEL_MASK:
+               *param = local->scan_channel_mask;
+               break;
+
        default:
                printk(KERN_DEBUG "%s: get_prism2_param: unknown param %d\n",
                       dev->name, *param);
diff --git a/drivers/net/wireless/hostap/hostap_wlan.h 
b/drivers/net/wireless/hostap/hostap_wlan.h
--- a/drivers/net/wireless/hostap/hostap_wlan.h
+++ b/drivers/net/wireless/hostap/hostap_wlan.h
@@ -680,7 +680,8 @@ struct local_info {
        char essid[MAX_SSID_LEN + 1];
        char name[MAX_NAME_LEN + 1];
        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 net_device_stats stats;
        struct proc_dir_entry *proc;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to