wireless: consolidate on a single escape_essid implementation
authorJohn W. Linville <linville@tuxdriver.com>
Wed, 24 Sep 2008 22:13:14 +0000 (18:13 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 31 Oct 2008 23:00:46 +0000 (19:00 -0400)
Signed-off-by: John W. Linville <linville@tuxdriver.com>
23 files changed:
drivers/net/wireless/Kconfig
drivers/net/wireless/ipw2100.c
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.h
drivers/net/wireless/iwlwifi/Kconfig
drivers/net/wireless/iwlwifi/iwl-scan.c
drivers/net/wireless/iwlwifi/iwl3945-base.c
drivers/net/wireless/libertas/assoc.c
drivers/net/wireless/libertas/cmd.c
drivers/net/wireless/libertas/debugfs.c
drivers/net/wireless/libertas/decl.h
drivers/net/wireless/libertas/main.c
drivers/net/wireless/libertas/scan.c
drivers/net/wireless/libertas/wext.c
include/net/ieee80211.h
include/net/lib80211.h [new file with mode: 0644]
net/ieee80211/Kconfig
net/ieee80211/ieee80211_module.c
net/ieee80211/ieee80211_rx.c
net/ieee80211/ieee80211_wx.c
net/wireless/Kconfig
net/wireless/Makefile
net/wireless/lib80211.c [new file with mode: 0644]

index 45bdf0b..42afaed 100644 (file)
@@ -271,6 +271,7 @@ config LIBERTAS
        tristate "Marvell 8xxx Libertas WLAN driver support"
        depends on WLAN_80211
        select WIRELESS_EXT
+       select LIB80211
        select FW_LOADER
        ---help---
          A library for Marvell Libertas 8xxx devices.
index 079dbd0..223914e 100644 (file)
@@ -1975,7 +1975,7 @@ static void isr_indicate_associated(struct ipw2100_priv *priv, u32 status)
        }
 
        IPW_DEBUG_INFO("%s: Associated with '%s' at %s, channel %d (BSSID=%pM)\n",
-                      priv->net_dev->name, escape_essid(essid, essid_len),
+                      priv->net_dev->name, escape_ssid(essid, essid_len),
                       txratename, chan, bssid);
 
        /* now we copy read ssid into dev */
@@ -2003,7 +2003,7 @@ static int ipw2100_set_essid(struct ipw2100_priv *priv, char *essid,
        };
        int err;
 
-       IPW_DEBUG_HC("SSID: '%s'\n", escape_essid(essid, ssid_len));
+       IPW_DEBUG_HC("SSID: '%s'\n", escape_ssid(essid, ssid_len));
 
        if (ssid_len)
                memcpy(cmd.host_command_parameters, essid, ssid_len);
@@ -2046,7 +2046,7 @@ static void isr_indicate_association_lost(struct ipw2100_priv *priv, u32 status)
 {
        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE | IPW_DL_ASSOC,
                  "disassociated: '%s' %pM \n",
-                 escape_essid(priv->essid, priv->essid_len),
+                 escape_ssid(priv->essid, priv->essid_len),
                  priv->bssid);
 
        priv->status &= ~(STATUS_ASSOCIATED | STATUS_ASSOCIATING);
@@ -6987,7 +6987,7 @@ static int ipw2100_wx_set_essid(struct net_device *dev,
                goto done;
        }
 
-       IPW_DEBUG_WX("Setting ESSID: '%s' (%d)\n", escape_essid(essid, length),
+       IPW_DEBUG_WX("Setting ESSID: '%s' (%d)\n", escape_ssid(essid, length),
                     length);
 
        priv->essid_len = length;
@@ -7014,7 +7014,7 @@ static int ipw2100_wx_get_essid(struct net_device *dev,
         * configured ESSID then return that; otherwise return ANY */
        if (priv->config & CFG_STATIC_ESSID || priv->status & STATUS_ASSOCIATED) {
                IPW_DEBUG_WX("Getting essid: '%s'\n",
-                            escape_essid(priv->essid, priv->essid_len));
+                            escape_ssid(priv->essid, priv->essid_len));
                memcpy(extra, priv->essid, priv->essid_len);
                wrqu->essid.length = priv->essid_len;
                wrqu->essid.flags = 1;  /* active */
index 6ec6de2..22278f8 100644 (file)
@@ -4409,8 +4409,8 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
                                                  "associated: '%s' %pM \n",
-                                                 escape_essid(priv->essid,
-                                                              priv->essid_len),
+                                                 escape_ssid(priv->essid,
+                                                             priv->essid_len),
                                                  priv->bssid);
 
                                        switch (priv->ieee->iw_mode) {
@@ -4490,10 +4490,10 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                                          "deauthenticated: '%s' "
                                                          "%pM"
                                                          ": (0x%04X) - %s \n",
-                                                         escape_essid(priv->
-                                                                      essid,
-                                                                      priv->
-                                                                      essid_len),
+                                                         escape_ssid(priv->
+                                                                     essid,
+                                                                     priv->
+                                                                     essid_len),
                                                          priv->bssid,
                                                          le16_to_cpu(auth->status),
                                                          ipw_get_status_code
@@ -4512,7 +4512,7 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
                                                  "authenticated: '%s' %pM\n",
-                                                 escape_essid(priv->essid,
+                                                 escape_ssid(priv->essid,
                                                               priv->essid_len),
                                                  priv->bssid);
                                        break;
@@ -4540,7 +4540,7 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                        IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                                  IPW_DL_ASSOC,
                                                  "disassociated: '%s' %pM \n",
-                                                 escape_essid(priv->essid,
+                                                 escape_ssid(priv->essid,
                                                               priv->essid_len),
                                                  priv->bssid);
 
@@ -4578,7 +4578,7 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                        case CMAS_AUTHENTICATED:
                                IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE,
                                          "authenticated: '%s' %pM \n",
-                                         escape_essid(priv->essid,
+                                         escape_ssid(priv->essid,
                                                       priv->essid_len),
                                          priv->bssid);
                                priv->status |= STATUS_AUTH;
@@ -4597,8 +4597,8 @@ static void ipw_rx_notification(struct ipw_priv *priv,
                                IPW_DEBUG(IPW_DL_NOTIF | IPW_DL_STATE |
                                          IPW_DL_ASSOC,
                                          "deauthenticated: '%s' %pM\n",
-                                         escape_essid(priv->essid,
-                                                      priv->essid_len),
+                                         escape_ssid(priv->essid,
+                                                     priv->essid_len),
                                          priv->bssid);
 
                                priv->status &= ~(STATUS_ASSOCIATING |
@@ -5430,7 +5430,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
             !(network->capability & WLAN_CAPABILITY_IBSS))) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded due to "
                                "capability mismatch.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5440,7 +5440,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        if (network->flags & NETWORK_EMPTY_ESSID) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of hidden ESSID.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5453,8 +5453,8 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                           network->ssid_len)) {
                        IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                        "because of non-network ESSID.\n",
-                                       escape_essid(network->ssid,
-                                                    network->ssid_len),
+                                       escape_ssid(network->ssid,
+                                                   network->ssid_len),
                                        network->bssid);
                        return 0;
                }
@@ -5468,13 +5468,13 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                        char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
 
                        strncpy(escaped,
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                sizeof(escaped));
                        IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                        "because of ESSID mismatch: '%s'.\n",
                                        escaped, network->bssid,
-                                       escape_essid(priv->essid,
-                                                    priv->essid_len));
+                                       escape_ssid(priv->essid,
+                                                   priv->essid_len));
                        return 0;
                }
        }
@@ -5485,14 +5485,14 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        if (network->time_stamp[0] < match->network->time_stamp[0]) {
                IPW_DEBUG_MERGE("Network '%s excluded because newer than "
                                "current network.\n",
-                               escape_essid(match->network->ssid,
-                                            match->network->ssid_len));
+                               escape_ssid(match->network->ssid,
+                                           match->network->ssid_len));
                return 0;
        } else if (network->time_stamp[1] < match->network->time_stamp[1]) {
                IPW_DEBUG_MERGE("Network '%s excluded because newer than "
                                "current network.\n",
-                               escape_essid(match->network->ssid,
-                                            match->network->ssid_len));
+                               escape_ssid(match->network->ssid,
+                                           match->network->ssid_len));
                return 0;
        }
 
@@ -5501,7 +5501,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
            time_after(jiffies, network->last_scanned + priv->ieee->scan_age)) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of age: %ums.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                jiffies_to_msecs(jiffies -
                                                 network->last_scanned));
@@ -5512,7 +5512,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
            (network->channel != priv->channel)) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of channel mismatch: %d != %d.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                network->channel, priv->channel);
                return 0;
@@ -5523,7 +5523,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
            ((network->capability & WLAN_CAPABILITY_PRIVACY) ? 1 : 0)) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of privacy mismatch: %s != %s.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                priv->
                                capability & CAP_PRIVACY_ON ? "on" : "off",
@@ -5536,8 +5536,8 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        if (!memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of the same BSSID match: %pM"
-                               ".\n", escape_essid(network->ssid,
-                                                   network->ssid_len),
+                               ".\n", escape_ssid(network->ssid,
+                                                  network->ssid_len),
                                network->bssid,
                                priv->bssid);
                return 0;
@@ -5548,7 +5548,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of invalid frequency/mode "
                                "combination.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5559,7 +5559,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because configured rate mask excludes "
                                "AP mandatory rate.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5567,7 +5567,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        if (rates.num_rates == 0) {
                IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
                                "because of no compatible rates.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5580,7 +5580,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
        ipw_copy_rates(&match->rates, &rates);
        match->network = network;
        IPW_DEBUG_MERGE("Network '%s (%pM)' is a viable match.\n",
-                       escape_essid(network->ssid, network->ssid_len),
+                       escape_ssid(network->ssid, network->ssid_len),
                        network->bssid);
 
        return 1;
@@ -5618,8 +5618,8 @@ static void ipw_merge_adhoc_network(struct work_struct *work)
                mutex_lock(&priv->mutex);
                if ((priv->ieee->iw_mode == IW_MODE_ADHOC)) {
                        IPW_DEBUG_MERGE("remove network %s\n",
-                                       escape_essid(priv->essid,
-                                                    priv->essid_len));
+                                       escape_ssid(priv->essid,
+                                                   priv->essid_len));
                        ipw_remove_current_network(priv);
                }
 
@@ -5644,7 +5644,7 @@ static int ipw_best_network(struct ipw_priv *priv,
             !(network->capability & WLAN_CAPABILITY_IBSS))) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded due to "
                                "capability mismatch.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5654,7 +5654,7 @@ static int ipw_best_network(struct ipw_priv *priv,
        if (network->flags & NETWORK_EMPTY_ESSID) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of hidden ESSID.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5667,7 +5667,7 @@ static int ipw_best_network(struct ipw_priv *priv,
                           network->ssid_len)) {
                        IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                        "because of non-network ESSID.\n",
-                                       escape_essid(network->ssid,
+                                       escape_ssid(network->ssid,
                                                     network->ssid_len),
                                        network->bssid);
                        return 0;
@@ -5681,13 +5681,13 @@ static int ipw_best_network(struct ipw_priv *priv,
                            min(network->ssid_len, priv->essid_len)))) {
                        char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
                        strncpy(escaped,
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                sizeof(escaped));
                        IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                        "because of ESSID mismatch: '%s'.\n",
                                        escaped, network->bssid,
-                                       escape_essid(priv->essid,
-                                                    priv->essid_len));
+                                       escape_ssid(priv->essid,
+                                                   priv->essid_len));
                        return 0;
                }
        }
@@ -5697,13 +5697,13 @@ static int ipw_best_network(struct ipw_priv *priv,
        if (match->network && match->network->stats.rssi > network->stats.rssi) {
                char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
                strncpy(escaped,
-                       escape_essid(network->ssid, network->ssid_len),
+                       escape_ssid(network->ssid, network->ssid_len),
                        sizeof(escaped));
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded because "
                                "'%s (%pM)' has a stronger signal.\n",
                                escaped, network->bssid,
-                               escape_essid(match->network->ssid,
-                                            match->network->ssid_len),
+                               escape_ssid(match->network->ssid,
+                                           match->network->ssid_len),
                                match->network->bssid);
                return 0;
        }
@@ -5715,7 +5715,7 @@ static int ipw_best_network(struct ipw_priv *priv,
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of storming (%ums since last "
                                "assoc attempt).\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                jiffies_to_msecs(jiffies -
                                                 network->last_associate));
@@ -5727,7 +5727,7 @@ static int ipw_best_network(struct ipw_priv *priv,
            time_after(jiffies, network->last_scanned + priv->ieee->scan_age)) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of age: %ums.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                jiffies_to_msecs(jiffies -
                                                 network->last_scanned));
@@ -5738,7 +5738,7 @@ static int ipw_best_network(struct ipw_priv *priv,
            (network->channel != priv->channel)) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of channel mismatch: %d != %d.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                network->channel, priv->channel);
                return 0;
@@ -5749,7 +5749,7 @@ static int ipw_best_network(struct ipw_priv *priv,
            ((network->capability & WLAN_CAPABILITY_PRIVACY) ? 1 : 0)) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of privacy mismatch: %s != %s.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid,
                                priv->capability & CAP_PRIVACY_ON ? "on" :
                                "off",
@@ -5762,7 +5762,7 @@ static int ipw_best_network(struct ipw_priv *priv,
            memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of BSSID mismatch: %pM.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid, priv->bssid);
                return 0;
        }
@@ -5772,7 +5772,7 @@ static int ipw_best_network(struct ipw_priv *priv,
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of invalid frequency/mode "
                                "combination.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5781,7 +5781,7 @@ static int ipw_best_network(struct ipw_priv *priv,
        if (!ieee80211_is_valid_channel(priv->ieee, network->channel)) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of invalid channel in current GEO\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5792,7 +5792,7 @@ static int ipw_best_network(struct ipw_priv *priv,
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because configured rate mask excludes "
                                "AP mandatory rate.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5800,7 +5800,7 @@ static int ipw_best_network(struct ipw_priv *priv,
        if (rates.num_rates == 0) {
                IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
                                "because of no compatible rates.\n",
-                               escape_essid(network->ssid, network->ssid_len),
+                               escape_ssid(network->ssid, network->ssid_len),
                                network->bssid);
                return 0;
        }
@@ -5814,7 +5814,7 @@ static int ipw_best_network(struct ipw_priv *priv,
        match->network = network;
 
        IPW_DEBUG_ASSOC("Network '%s (%pM)' is a viable match.\n",
-                       escape_essid(network->ssid, network->ssid_len),
+                       escape_ssid(network->ssid, network->ssid_len),
                        network->bssid);
 
        return 1;
@@ -6065,7 +6065,7 @@ static void ipw_debug_config(struct ipw_priv *priv)
                IPW_DEBUG_INFO("Channel unlocked.\n");
        if (priv->config & CFG_STATIC_ESSID)
                IPW_DEBUG_INFO("ESSID locked to '%s'\n",
-                              escape_essid(priv->essid, priv->essid_len));
+                              escape_ssid(priv->essid, priv->essid_len));
        else
                IPW_DEBUG_INFO("ESSID unlocked.\n");
        if (priv->config & CFG_STATIC_BSSID)
@@ -7352,7 +7352,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
        IPW_DEBUG_ASSOC("%sssocation attempt: '%s', channel %d, "
                        "802.11%c [%d], %s[:%s], enc=%s%s%s%c%c\n",
                        roaming ? "Rea" : "A",
-                       escape_essid(priv->essid, priv->essid_len),
+                       escape_ssid(priv->essid, priv->essid_len),
                        network->channel,
                        ipw_modes[priv->assoc_request.ieee_mode],
                        rates->num_rates,
@@ -7452,7 +7452,7 @@ static int ipw_associate_network(struct ipw_priv *priv,
        }
 
        IPW_DEBUG(IPW_DL_STATE, "associating: '%s' %pM \n",
-                 escape_essid(priv->essid, priv->essid_len),
+                 escape_ssid(priv->essid, priv->essid_len),
                  priv->bssid);
 
        return 0;
@@ -7604,8 +7604,8 @@ static int ipw_associate(void *data)
                        target = oldest;
                        IPW_DEBUG_ASSOC("Expired '%s' (%pM) from "
                                        "network list.\n",
-                                       escape_essid(target->ssid,
-                                                    target->ssid_len),
+                                       escape_ssid(target->ssid,
+                                                   target->ssid_len),
                                        target->bssid);
                        list_add_tail(&target->list,
                                      &priv->ieee->network_free_list);
@@ -9057,7 +9057,7 @@ static int ipw_wx_set_essid(struct net_device *dev,
                return 0;
        }
 
-       IPW_DEBUG_WX("Setting ESSID: '%s' (%d)\n", escape_essid(extra, length),
+       IPW_DEBUG_WX("Setting ESSID: '%s' (%d)\n", escape_ssid(extra, length),
                     length);
 
        priv->essid_len = length;
@@ -9084,7 +9084,7 @@ static int ipw_wx_get_essid(struct net_device *dev,
        if (priv->config & CFG_STATIC_ESSID ||
            priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING)) {
                IPW_DEBUG_WX("Getting essid: '%s'\n",
-                            escape_essid(priv->essid, priv->essid_len));
+                            escape_ssid(priv->essid, priv->essid_len));
                memcpy(extra, priv->essid, priv->essid_len);
                wrqu->essid.length = priv->essid_len;
                wrqu->essid.flags = 1;  /* active */
index 0bad1ec..0a84d52 100644 (file)
@@ -48,6 +48,7 @@
 #include <linux/jiffies.h>
 #include <asm/io.h>
 
+#include <net/lib80211.h>
 #include <net/ieee80211.h>
 #include <net/ieee80211_radiotap.h>
 
index b0ac0ce..47bee0e 100644 (file)
@@ -4,6 +4,7 @@ config IWLWIFI
 config IWLCORE
        tristate "Intel Wireless Wifi Core"
        depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
+       select LIB80211
        select IWLWIFI
        select MAC80211_LEDS if IWLWIFI_LEDS
        select LEDS_CLASS if IWLWIFI_LEDS
@@ -105,6 +106,7 @@ config IWL3945
        tristate "Intel PRO/Wireless 3945ABG/BG Network Connection"
        depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
        select FW_LOADER
+       select LIB80211
        select IWLWIFI
        select MAC80211_LEDS if IWL3945_LEDS
        select LEDS_CLASS if IWL3945_LEDS
index 86b7457..1cc8aa5 100644 (file)
  * Tomas Winkler <tomas.winkler@intel.com>
  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
  *****************************************************************************/
-#include <net/mac80211.h>
+#include <linux/types.h>
 #include <linux/etherdevice.h>
+#include <net/lib80211.h>
+#include <net/mac80211.h>
 
 #include "iwl-eeprom.h"
 #include "iwl-dev.h"
 #define IWL_SCAN_PROBE_MASK(n)         cpu_to_le32((BIT(n) | (BIT(n) - BIT(1))))
 
 
-static int iwl_is_empty_essid(const char *essid, int essid_len)
-{
-       /* Single white space is for Linksys APs */
-       if (essid_len == 1 && essid[0] == ' ')
-               return 1;
-
-       /* Otherwise, if the entire essid is 0, we assume it is hidden */
-       while (essid_len) {
-               essid_len--;
-               if (essid[essid_len] != '\0')
-                       return 0;
-       }
-
-       return 1;
-}
-
-
-
-static const char *iwl_escape_essid(const char *essid, u8 essid_len)
-{
-       static char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
-       const char *s = essid;
-       char *d = escaped;
-
-       if (iwl_is_empty_essid(essid, essid_len)) {
-               memcpy(escaped, "<hidden>", sizeof("<hidden>"));
-               return escaped;
-       }
-
-       essid_len = min(essid_len, (u8) IW_ESSID_MAX_SIZE);
-       while (essid_len--) {
-               if (*s == '\0') {
-                       *d++ = '\\';
-                       *d++ = '0';
-                       s++;
-               } else
-                       *d++ = *s++;
-       }
-       *d = '\0';
-       return escaped;
-}
-
 /**
  * iwl_scan_cancel - Cancel any currently executing HW scan
  *
@@ -775,8 +735,8 @@ static void iwl_bg_request_scan(struct work_struct *data)
        /* We should add the ability for user to lock to PASSIVE ONLY */
        if (priv->one_direct_scan) {
                IWL_DEBUG_SCAN("Start direct scan for '%s'\n",
-                               iwl_escape_essid(priv->direct_ssid,
-                               priv->direct_ssid_len));
+                               escape_ssid(priv->direct_ssid,
+                                           priv->direct_ssid_len));
                scan->direct_scan[0].id = WLAN_EID_SSID;
                scan->direct_scan[0].len = priv->direct_ssid_len;
                memcpy(scan->direct_scan[0].ssid,
@@ -784,7 +744,7 @@ static void iwl_bg_request_scan(struct work_struct *data)
                n_probes++;
        } else if (!iwl_is_associated(priv) && priv->essid_len) {
                IWL_DEBUG_SCAN("Start direct scan for '%s' (not associated)\n",
-                               iwl_escape_essid(priv->essid, priv->essid_len));
+                               escape_ssid(priv->essid, priv->essid_len));
                scan->direct_scan[0].id = WLAN_EID_SSID;
                scan->direct_scan[0].len = priv->essid_len;
                memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len);
index 2cd33b4..370cc46 100644 (file)
@@ -41,6 +41,7 @@
 #include <linux/if_arp.h>
 
 #include <net/ieee80211_radiotap.h>
+#include <net/lib80211.h>
 #include <net/mac80211.h>
 
 #include <asm/div64.h>
@@ -107,46 +108,6 @@ static const struct ieee80211_supported_band *iwl3945_get_band(
        return priv->hw->wiphy->bands[band];
 }
 
-static int iwl3945_is_empty_essid(const char *essid, int essid_len)
-{
-       /* Single white space is for Linksys APs */
-       if (essid_len == 1 && essid[0] == ' ')
-               return 1;
-
-       /* Otherwise, if the entire essid is 0, we assume it is hidden */
-       while (essid_len) {
-               essid_len--;
-               if (essid[essid_len] != '\0')
-                       return 0;
-       }
-
-       return 1;
-}
-
-static const char *iwl3945_escape_essid(const char *essid, u8 essid_len)
-{
-       static char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
-       const char *s = essid;
-       char *d = escaped;
-
-       if (iwl3945_is_empty_essid(essid, essid_len)) {
-               memcpy(escaped, "<hidden>", sizeof("<hidden>"));
-               return escaped;
-       }
-
-       essid_len = min(essid_len, (u8) IW_ESSID_MAX_SIZE);
-       while (essid_len--) {
-               if (*s == '\0') {
-                       *d++ = '\\';
-                       *d++ = '0';
-                       s++;
-               } else
-                       *d++ = *s++;
-       }
-       *d = '\0';
-       return escaped;
-}
-
 /*************** DMA-QUEUE-GENERAL-FUNCTIONS  *****
  * DMA services
  *
@@ -6193,8 +6154,7 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
        if (priv->one_direct_scan) {
                IWL_DEBUG_SCAN
                    ("Kicking off one direct scan for '%s'\n",
-                    iwl3945_escape_essid(priv->direct_ssid,
-                                     priv->direct_ssid_len));
+                    escape_ssid(priv->direct_ssid, priv->direct_ssid_len));
                scan->direct_scan[0].id = WLAN_EID_SSID;
                scan->direct_scan[0].len = priv->direct_ssid_len;
                memcpy(scan->direct_scan[0].ssid,
@@ -6203,7 +6163,7 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
        } else if (!iwl3945_is_associated(priv) && priv->essid_len) {
                IWL_DEBUG_SCAN
                  ("Kicking off one direct scan for '%s' when not associated\n",
-                  iwl3945_escape_essid(priv->essid, priv->essid_len));
+                  escape_ssid(priv->essid, priv->essid_len));
                scan->direct_scan[0].id = WLAN_EID_SSID;
                scan->direct_scan[0].len = priv->essid_len;
                memcpy(scan->direct_scan[0].ssid, priv->essid, priv->essid_len);
@@ -7018,7 +6978,7 @@ static int iwl3945_mac_hw_scan(struct ieee80211_hw *hw, u8 *ssid, size_t len)
        }
        if (len) {
                IWL_DEBUG_SCAN("direct scan for %s [%d]\n ",
-                              iwl3945_escape_essid(ssid, len), (int)len);
+                              escape_ssid(ssid, len), (int)len);
 
                priv->one_direct_scan = 1;
                priv->direct_ssid_len = (u8)
index 8b88e95..3492e89 100644 (file)
@@ -1,6 +1,8 @@
 /* Copyright (C) 2006, Red Hat, Inc. */
 
+#include <linux/types.h>
 #include <linux/etherdevice.h>
+#include <net/lib80211.h>
 
 #include "assoc.h"
 #include "decl.h"
@@ -157,11 +159,11 @@ static int lbs_adhoc_join(struct lbs_private *priv,
        lbs_deb_enter(LBS_DEB_ASSOC);
 
        lbs_deb_join("current SSID '%s', ssid length %u\n",
-               escape_essid(priv->curbssparams.ssid,
+               escape_ssid(priv->curbssparams.ssid,
                priv->curbssparams.ssid_len),
                priv->curbssparams.ssid_len);
        lbs_deb_join("requested ssid '%s', ssid length %u\n",
-               escape_essid(bss->ssid, bss->ssid_len),
+               escape_ssid(bss->ssid, bss->ssid_len),
                bss->ssid_len);
 
        /* check if the requested SSID is already joined */
@@ -325,7 +327,7 @@ static int lbs_adhoc_start(struct lbs_private *priv,
        memcpy(cmd.ssid, assoc_req->ssid, assoc_req->ssid_len);
 
        lbs_deb_join("ADHOC_START: SSID '%s', ssid length %u\n",
-               escape_essid(assoc_req->ssid, assoc_req->ssid_len),
+               escape_ssid(assoc_req->ssid, assoc_req->ssid_len),
                assoc_req->ssid_len);
 
        cmd.bsstype = CMD_BSS_TYPE_IBSS;
@@ -704,7 +706,7 @@ static int assoc_helper_essid(struct lbs_private *priv,
                channel = assoc_req->channel;
 
        lbs_deb_assoc("SSID '%s' requested\n",
-                     escape_essid(assoc_req->ssid, assoc_req->ssid_len));
+                     escape_ssid(assoc_req->ssid, assoc_req->ssid_len));
        if (assoc_req->mode == IW_MODE_INFRA) {
                lbs_send_specific_ssid_scan(priv, assoc_req->ssid,
                        assoc_req->ssid_len);
@@ -1228,7 +1230,7 @@ void lbs_association_worker(struct work_struct *work)
                "    secinfo:  %s%s%s\n"
                "    auth_mode: %d\n",
                assoc_req->flags,
-               escape_essid(assoc_req->ssid, assoc_req->ssid_len),
+               escape_ssid(assoc_req->ssid, assoc_req->ssid_len),
                assoc_req->channel, assoc_req->band, assoc_req->mode,
                assoc_req->bssid,
                assoc_req->secinfo.WPAenabled ? " WPA" : "",
@@ -1814,7 +1816,7 @@ static int lbs_adhoc_post(struct lbs_private *priv, struct cmd_header *resp)
        wireless_send_event(priv->dev, SIOCGIWAP, &wrqu, NULL);
 
        lbs_deb_join("ADHOC_RESP: Joined/started '%s', BSSID %pM, channel %d\n",
-                    escape_essid(bss->ssid, bss->ssid_len),
+                    escape_ssid(bss->ssid, bss->ssid_len),
                     priv->curbssparams.bssid,
                     priv->curbssparams.channel);
 
index d45b07c..52feab6 100644 (file)
@@ -4,6 +4,7 @@
   */
 
 #include <net/iw_handler.h>
+#include <net/lib80211.h>
 #include <net/ieee80211.h>
 #include <linux/kfifo.h>
 #include "host.h"
@@ -1092,7 +1093,7 @@ int lbs_mesh_config(struct lbs_private *priv, uint16_t action, uint16_t chan)
        }
        lbs_deb_cmd("mesh config action %d type %x channel %d SSID %s\n",
                    action, priv->mesh_tlv, chan,
-                   escape_essid(priv->mesh_ssid, priv->mesh_ssid_len));
+                   escape_ssid(priv->mesh_ssid, priv->mesh_ssid_len));
 
        return __lbs_mesh_config_send(priv, &cmd, action, priv->mesh_tlv);
 }
index 5f6bee4..8493320 100644 (file)
@@ -5,6 +5,7 @@
 #include <linux/mm.h>
 #include <linux/string.h>
 #include <net/iw_handler.h>
+#include <net/lib80211.h>
 
 #include "dev.h"
 #include "decl.h"
@@ -85,7 +86,7 @@ static ssize_t lbs_getscantable(struct file *file, char __user *userbuf,
                                spectrum_mgmt ? 'S' : ' ');
                pos += snprintf(buf+pos, len-pos, " %04d |", SCAN_RSSI(iter_bss->rssi));
                pos += snprintf(buf+pos, len-pos, " %s\n",
-                               escape_essid(iter_bss->ssid, iter_bss->ssid_len));
+                               escape_ssid(iter_bss->ssid, iter_bss->ssid_len));
 
                numscansdone++;
        }
index 1a8888c..0b84bdc 100644 (file)
@@ -74,8 +74,4 @@ void lbs_host_to_card_done(struct lbs_private *priv);
 
 int lbs_update_channel(struct lbs_private *priv);
 
-#ifndef CONFIG_IEEE80211
-const char *escape_essid(const char *essid, u8 essid_len);
-#endif
-
 #endif
index 34a47f6..e9d23f6 100644 (file)
@@ -1646,33 +1646,6 @@ out:
        return ret;
 }
 
-#ifndef CONFIG_IEEE80211
-const char *escape_essid(const char *essid, u8 essid_len)
-{
-       static char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
-       const char *s = essid;
-       char *d = escaped;
-
-       if (ieee80211_is_empty_essid(essid, essid_len)) {
-               memcpy(escaped, "<hidden>", sizeof("<hidden>"));
-               return escaped;
-       }
-
-       essid_len = min(essid_len, (u8) IW_ESSID_MAX_SIZE);
-       while (essid_len--) {
-               if (*s == '\0') {
-                       *d++ = '\\';
-                       *d++ = '0';
-                       s++;
-               } else {
-                       *d++ = *s++;
-               }
-       }
-       *d = '\0';
-       return escaped;
-}
-#endif
-
 module_init(lbs_init_module);
 module_exit(lbs_exit_module);
 
index 351b3f6..7881890 100644 (file)
@@ -4,9 +4,12 @@
   * IOCTL handlers as well as command preperation and response routines
   *  for sending scan commands to the firmware.
   */
+#include <linux/types.h>
 #include <linux/etherdevice.h>
 #include <asm/unaligned.h>
 
+#include <net/lib80211.h>
+
 #include "host.h"
 #include "decl.h"
 #include "dev.h"
@@ -452,7 +455,7 @@ int lbs_scan_networks(struct lbs_private *priv, int full_scan)
        list_for_each_entry(iter, &priv->network_list, list)
                lbs_deb_scan("%02d: BSSID %pM, RSSI %d, SSID '%s'\n",
                             i++, iter->bssid, iter->rssi,
-                            escape_essid(iter->ssid, iter->ssid_len));
+                            escape_ssid(iter->ssid, iter->ssid_len));
        mutex_unlock(&priv->lock);
 #endif
 
@@ -599,7 +602,7 @@ static int lbs_process_bss(struct bss_descriptor *bss,
                        bss->ssid_len = min_t(int, 32, elem->len);
                        memcpy(bss->ssid, elem->data, bss->ssid_len);
                        lbs_deb_scan("got SSID IE: '%s', len %u\n",
-                                    escape_essid(bss->ssid, bss->ssid_len),
+                                    escape_ssid(bss->ssid, bss->ssid_len),
                                     bss->ssid_len);
                        break;
 
@@ -742,7 +745,7 @@ int lbs_send_specific_ssid_scan(struct lbs_private *priv, uint8_t *ssid,
        int ret = 0;
 
        lbs_deb_enter_args(LBS_DEB_SCAN, "SSID '%s'\n",
-                          escape_essid(ssid, ssid_len));
+                          escape_ssid(ssid, ssid_len));
 
        if (!ssid_len)
                goto out;
@@ -966,7 +969,7 @@ int lbs_set_scan(struct net_device *dev, struct iw_request_info *info,
                priv->scan_ssid_len = req->essid_len;
                memcpy(priv->scan_ssid, req->essid, priv->scan_ssid_len);
                lbs_deb_wext("set_scan, essid '%s'\n",
-                       escape_essid(priv->scan_ssid, priv->scan_ssid_len));
+                       escape_ssid(priv->scan_ssid, priv->scan_ssid_len));
        } else {
                priv->scan_ssid_len = 0;
        }
index 04f0bf2..2475799 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/wireless.h>
 #include <linux/bitops.h>
 
+#include <net/lib80211.h>
 #include <net/ieee80211.h>
 #include <net/iw_handler.h>
 
@@ -2005,7 +2006,7 @@ static int lbs_set_essid(struct net_device *dev, struct iw_request_info *info,
                lbs_deb_wext("requested any SSID\n");
        } else {
                lbs_deb_wext("requested SSID '%s'\n",
-                            escape_essid(ssid, ssid_len));
+                            escape_ssid(ssid, ssid_len));
        }
 
 out:
index 93a56de..dec10c4 100644 (file)
@@ -127,10 +127,6 @@ static inline bool ieee80211_ratelimit_debug(u32 level)
 }
 #endif                         /* CONFIG_IEEE80211_DEBUG */
 
-/* escape_essid() is intended to be used in debug (and possibly error)
- * messages. It should never be used for passing essid to user space. */
-const char *escape_essid(const char *essid, u8 essid_len);
-
 /*
  * To use the debug system:
  *
@@ -1135,22 +1131,6 @@ static inline void *ieee80211_priv(struct net_device *dev)
        return ((struct ieee80211_device *)netdev_priv(dev))->priv;
 }
 
-static inline int ieee80211_is_empty_essid(const char *essid, int essid_len)
-{
-       /* Single white space is for Linksys APs */
-       if (essid_len == 1 && essid[0] == ' ')
-               return 1;
-
-       /* Otherwise, if the entire essid is 0, we assume it is hidden */
-       while (essid_len) {
-               essid_len--;
-               if (essid[essid_len] != '\0')
-                       return 0;
-       }
-
-       return 1;
-}
-
 static inline int ieee80211_is_valid_mode(struct ieee80211_device *ieee,
                                          int mode)
 {
diff --git a/include/net/lib80211.h b/include/net/lib80211.h
new file mode 100644 (file)
index 0000000..91a64f3
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * lib80211.h -- common bits for IEEE802.11 wireless drivers
+ *
+ * Copyright (c) 2008, John W. Linville <linville@tuxdriver.com>
+ *
+ */
+
+#ifndef LIB80211_H
+#define LIB80211_H
+
+/* escape_ssid() is intended to be used in debug (and possibly error)
+ * messages. It should never be used for passing ssid to user space. */
+const char *escape_ssid(const char *ssid, u8 ssid_len);
+
+static inline int is_empty_ssid(const char *ssid, int ssid_len)
+{
+       /* Single white space is for Linksys APs */
+       if (ssid_len == 1 && ssid[0] == ' ')
+               return 1;
+
+       /* Otherwise, if the entire ssid is 0, we assume it is hidden */
+       while (ssid_len) {
+               ssid_len--;
+               if (ssid[ssid_len] != '\0')
+                       return 0;
+       }
+
+       return 1;
+}
+
+#endif /* LIB80211_H */
index df9624c..d2282bb 100644 (file)
@@ -11,6 +11,7 @@ config IEEE80211
        select IEEE80211_CRYPT_WEP
        select IEEE80211_CRYPT_TKIP
        select IEEE80211_CRYPT_CCMP
+       select LIB80211
        ---help---
        This option enables the hardware independent IEEE 802.11
        networking stack.  This component is deprecated in favor of the
index 949772a..d34d4e7 100644 (file)
@@ -308,31 +308,5 @@ MODULE_PARM_DESC(debug, "debug output mask");
 module_exit(ieee80211_exit);
 module_init(ieee80211_init);
 
-const char *escape_essid(const char *essid, u8 essid_len)
-{
-       static char escaped[IW_ESSID_MAX_SIZE * 2 + 1];
-       const char *s = essid;
-       char *d = escaped;
-
-       if (ieee80211_is_empty_essid(essid, essid_len)) {
-               memcpy(escaped, "<hidden>", sizeof("<hidden>"));
-               return escaped;
-       }
-
-       essid_len = min(essid_len, (u8) IW_ESSID_MAX_SIZE);
-       while (essid_len--) {
-               if (*s == '\0') {
-                       *d++ = '\\';
-                       *d++ = '0';
-                       s++;
-               } else {
-                       *d++ = *s++;
-               }
-       }
-       *d = '\0';
-       return escaped;
-}
-
 EXPORT_SYMBOL(alloc_ieee80211);
 EXPORT_SYMBOL(free_ieee80211);
-EXPORT_SYMBOL(escape_essid);
index 281223e..876a004 100644 (file)
@@ -32,6 +32,7 @@
 #include <asm/uaccess.h>
 #include <linux/ctype.h>
 
+#include <net/lib80211.h>
 #include <net/ieee80211.h>
 
 static void ieee80211_monitor_rx(struct ieee80211_device *ieee,
@@ -1145,8 +1146,8 @@ static int ieee80211_parse_info_param(struct ieee80211_info_element
 
                switch (info_element->id) {
                case MFIE_TYPE_SSID:
-                       if (ieee80211_is_empty_essid(info_element->data,
-                                                    info_element->len)) {
+                       if (is_empty_ssid(info_element->data,
+                                         info_element->len)) {
                                network->flags |= NETWORK_EMPTY_ESSID;
                                break;
                        }
@@ -1390,7 +1391,7 @@ static int ieee80211_handle_assoc_resp(struct ieee80211_device *ieee, struct iee
                        network->mode |= IEEE_B;
        }
 
-       if (ieee80211_is_empty_essid(network->ssid, network->ssid_len))
+       if (is_empty_ssid(network->ssid, network->ssid_len))
                network->flags |= NETWORK_EMPTY_ESSID;
 
        memcpy(&network->stats, stats, sizeof(network->stats));
@@ -1456,13 +1457,13 @@ static int ieee80211_network_init(struct ieee80211_device *ieee, struct ieee8021
        if (network->mode == 0) {
                IEEE80211_DEBUG_SCAN("Filtered out '%s (%pM)' "
                                     "network.\n",
-                                    escape_essid(network->ssid,
-                                                 network->ssid_len),
+                                    escape_ssid(network->ssid,
+                                                network->ssid_len),
                                     network->bssid);
                return 1;
        }
 
-       if (ieee80211_is_empty_essid(network->ssid, network->ssid_len))
+       if (is_empty_ssid(network->ssid, network->ssid_len))
                network->flags |= NETWORK_EMPTY_ESSID;
 
        memcpy(&network->stats, stats, sizeof(network->stats));
@@ -1576,7 +1577,7 @@ static void ieee80211_process_probe_response(struct ieee80211_device
 
        IEEE80211_DEBUG_SCAN("'%s' (%pM"
                     "): %c%c%c%c %c%c%c%c-%c%c%c%c %c%c%c%c\n",
-                    escape_essid(info_element->data, info_element->len),
+                    escape_ssid(info_element->data, info_element->len),
                     beacon->header.addr3,
                     (beacon->capability & cpu_to_le16(1 << 0xf)) ? '1' : '0',
                     (beacon->capability & cpu_to_le16(1 << 0xe)) ? '1' : '0',
@@ -1597,8 +1598,8 @@ static void ieee80211_process_probe_response(struct ieee80211_device
 
        if (ieee80211_network_init(ieee, beacon, &network, stats)) {
                IEEE80211_DEBUG_SCAN("Dropped '%s' (%pM) via %s.\n",
-                                    escape_essid(info_element->data,
-                                                 info_element->len),
+                                    escape_ssid(info_element->data,
+                                                info_element->len),
                                     beacon->header.addr3,
                                     is_beacon(beacon->header.frame_ctl) ?
                                     "BEACON" : "PROBE RESPONSE");
@@ -1635,8 +1636,8 @@ static void ieee80211_process_probe_response(struct ieee80211_device
                        target = oldest;
                        IEEE80211_DEBUG_SCAN("Expired '%s' (%pM) from "
                                             "network list.\n",
-                                            escape_essid(target->ssid,
-                                                         target->ssid_len),
+                                            escape_ssid(target->ssid,
+                                                        target->ssid_len),
                                             target->bssid);
                        ieee80211_network_reset(target);
                } else {
@@ -1648,8 +1649,8 @@ static void ieee80211_process_probe_response(struct ieee80211_device
 
 #ifdef CONFIG_IEEE80211_DEBUG
                IEEE80211_DEBUG_SCAN("Adding '%s' (%pM) via %s.\n",
-                                    escape_essid(network.ssid,
-                                                 network.ssid_len),
+                                    escape_ssid(network.ssid,
+                                                network.ssid_len),
                                     network.bssid,
                                     is_beacon(beacon->header.frame_ctl) ?
                                     "BEACON" : "PROBE RESPONSE");
@@ -1659,8 +1660,8 @@ static void ieee80211_process_probe_response(struct ieee80211_device
                list_add_tail(&target->list, &ieee->network_list);
        } else {
                IEEE80211_DEBUG_SCAN("Updating '%s' (%pM) via %s.\n",
-                                    escape_essid(target->ssid,
-                                                 target->ssid_len),
+                                    escape_ssid(target->ssid,
+                                                target->ssid_len),
                                     target->bssid,
                                     is_beacon(beacon->header.frame_ctl) ?
                                     "BEACON" : "PROBE RESPONSE");
index 89a8106..3b031c2 100644 (file)
@@ -283,8 +283,8 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
                else
                        IEEE80211_DEBUG_SCAN("Not showing network '%s ("
                                             "%pM)' due to age (%dms).\n",
-                                            escape_essid(network->ssid,
-                                                         network->ssid_len),
+                                            escape_ssid(network->ssid,
+                                                        network->ssid_len),
                                             network->bssid,
                                             jiffies_to_msecs(jiffies -
                                                              network->
@@ -408,7 +408,7 @@ int ieee80211_wx_set_encode(struct ieee80211_device *ieee,
                        memset(sec.keys[key] + erq->length, 0,
                               len - erq->length);
                IEEE80211_DEBUG_WX("Setting key %d to '%s' (%d:%d bytes)\n",
-                                  key, escape_essid(sec.keys[key], len),
+                                  key, escape_ssid(sec.keys[key], len),
                                   erq->length, len);
                sec.key_sizes[key] = len;
                if (*crypt)
index 646c712..ae7f226 100644 (file)
@@ -72,3 +72,13 @@ config WIRELESS_EXT_SYSFS
 
          Say Y if you have programs using it, like old versions of
          hal.
+
+config LIB80211
+       tristate "Common routines for IEEE802.11 drivers"
+       default n
+       help
+         This options enables a library of common routines used
+         by IEEE802.11 wireless LAN drivers.
+
+         Drivers should select this themselves if needed.  Say Y if
+         you want this built into your kernel.
index b9f943c..d2d848d 100644 (file)
@@ -1,5 +1,6 @@
 obj-$(CONFIG_WIRELESS_EXT) += wext.o
 obj-$(CONFIG_CFG80211) += cfg80211.o
+obj-$(CONFIG_LIB80211) += lib80211.o
 
 cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o
 cfg80211-$(CONFIG_NL80211) += nl80211.o
diff --git a/net/wireless/lib80211.c b/net/wireless/lib80211.c
new file mode 100644 (file)
index 0000000..b22d271
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * lib80211 -- common bits for IEEE802.11 drivers
+ *
+ * Copyright(c) 2008 John W. Linville <linville@tuxdriver.com>
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/ieee80211.h>
+
+#include <net/lib80211.h>
+
+#define DRV_NAME        "lib80211"
+
+#define DRV_DESCRIPTION        "common routines for IEEE802.11 drivers"
+
+MODULE_DESCRIPTION(DRV_DESCRIPTION);
+MODULE_AUTHOR("John W. Linville <linville@tuxdriver.com>");
+MODULE_LICENSE("GPL");
+
+const char *escape_ssid(const char *ssid, u8 ssid_len)
+{
+       static char escaped[IEEE80211_MAX_SSID_LEN * 2 + 1];
+       const char *s = ssid;
+       char *d = escaped;
+
+       if (is_empty_ssid(ssid, ssid_len)) {
+               memcpy(escaped, "<hidden>", sizeof("<hidden>"));
+               return escaped;
+       }
+
+       ssid_len = min_t(u8, ssid_len, IEEE80211_MAX_SSID_LEN);
+       while (ssid_len--) {
+               if (*s == '\0') {
+                       *d++ = '\\';
+                       *d++ = '0';
+                       s++;
+               } else {
+                       *d++ = *s++;
+               }
+       }
+       *d = '\0';
+       return escaped;
+}
+EXPORT_SYMBOL(escape_ssid);
+
+static int __init ieee80211_init(void)
+{
+       printk(KERN_INFO DRV_NAME ": " DRV_DESCRIPTION "\n");
+       return 0;
+}
+
+static void __exit ieee80211_exit(void)
+{
+}
+
+module_init(ieee80211_init);
+module_exit(ieee80211_exit);