These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / rtl8192e / rtllib_wx.c
index 6234aae..80f7a09 100644 (file)
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
   more details.
 
-  You should have received a copy of the GNU General Public License along with
-  this program; if not, write to the Free Software Foundation, Inc., 59
-  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
   The full GNU General Public License is included in this distribution in the
   file called LICENSE.
 
@@ -266,7 +262,7 @@ int rtllib_wx_get_scan(struct rtllib_device *ieee,
        int i = 0;
        int err = 0;
 
-       RTLLIB_DEBUG_WX("Getting scan\n");
+       netdev_dbg(ieee->dev, "Getting scan\n");
        down(&ieee->wx_sem);
        spin_lock_irqsave(&ieee->lock, flags);
 
@@ -281,11 +277,13 @@ int rtllib_wx_get_scan(struct rtllib_device *ieee,
                        ev = rtl819x_translate_scan(ieee, ev, stop, network,
                                                    info);
                else
-                       RTLLIB_DEBUG_SCAN("Not showing network '%s ( %pM)' due to age (%lums).\n",
-                               escape_essid(network->ssid,
-                                            network->ssid_len),
-                               network->bssid,
-                               (jiffies - network->last_scanned) / (HZ / 100));
+                       netdev_dbg(ieee->dev,
+                                  "Network '%s ( %pM)' hidden due to age (%lums).\n",
+                                  escape_essid(network->ssid,
+                                               network->ssid_len),
+                                  network->bssid,
+                                  (jiffies - network->last_scanned) /
+                                  (HZ / 100));
        }
 
        spin_unlock_irqrestore(&ieee->lock, flags);
@@ -293,7 +291,7 @@ int rtllib_wx_get_scan(struct rtllib_device *ieee,
        wrqu->data.length = ev -  extra;
        wrqu->data.flags = 0;
 
-       RTLLIB_DEBUG_WX("exit: %d networks returned.\n", i);
+       netdev_dbg(ieee->dev, "%s(): %d networks returned.\n", __func__, i);
 
        return err;
 }
@@ -311,7 +309,7 @@ int rtllib_wx_set_encode(struct rtllib_device *ieee,
        int i, key, key_provided, len;
        struct lib80211_crypt_data **crypt;
 
-       RTLLIB_DEBUG_WX("SET_ENCODE\n");
+       netdev_dbg(ieee->dev, "%s()\n", __func__);
 
        key = erq->flags & IW_ENCODE_INDEX;
        if (key) {
@@ -324,16 +322,16 @@ int rtllib_wx_set_encode(struct rtllib_device *ieee,
                key = ieee->crypt_info.tx_keyidx;
        }
 
-       RTLLIB_DEBUG_WX("Key: %d [%s]\n", key, key_provided ?
+       netdev_dbg(ieee->dev, "Key: %d [%s]\n", key, key_provided ?
                           "provided" : "default");
        crypt = &ieee->crypt_info.crypt[key];
        if (erq->flags & IW_ENCODE_DISABLED) {
                if (key_provided && *crypt) {
-                       RTLLIB_DEBUG_WX("Disabling encryption on key %d.\n",
-                                          key);
+                       netdev_dbg(ieee->dev,
+                                  "Disabling encryption on key %d.\n", key);
                        lib80211_crypt_delayed_deinit(&ieee->crypt_info, crypt);
                } else
-                       RTLLIB_DEBUG_WX("Disabling encryption.\n");
+                       netdev_dbg(ieee->dev, "Disabling encryption.\n");
 
                /* Check all the keys to see if any are still configured,
                 * and if no key index was provided, de-init them all
@@ -405,9 +403,9 @@ int rtllib_wx_set_encode(struct rtllib_device *ieee,
                if (len > erq->length)
                        memset(sec.keys[key] + erq->length, 0,
                               len - erq->length);
-               RTLLIB_DEBUG_WX("Setting key %d to '%s' (%d:%d bytes)\n",
-                                  key, escape_essid(sec.keys[key], len),
-                                  erq->length, len);
+               netdev_dbg(ieee->dev, "Setting key %d to '%s' (%d:%d bytes)\n",
+                          key, escape_essid(sec.keys[key], len), erq->length,
+                          len);
                sec.key_sizes[key] = len;
                (*crypt)->ops->set_key(sec.keys[key], len, NULL,
                                       (*crypt)->priv);
@@ -436,8 +434,8 @@ int rtllib_wx_set_encode(struct rtllib_device *ieee,
 
                /* No key data - just set the default TX key index */
                if (key_provided) {
-                       RTLLIB_DEBUG_WX("Setting key %d to default Tx key.\n",
-                                       key);
+                       netdev_dbg(ieee->dev,
+                                  "Setting key %d as default Tx key.\n", key);
                        ieee->crypt_info.tx_keyidx = key;
                        sec.active_key = key;
                        sec.flags |= SEC_ACTIVE_KEY;
@@ -449,7 +447,7 @@ int rtllib_wx_set_encode(struct rtllib_device *ieee,
                          WLAN_AUTH_SHARED_KEY;
        sec.auth_mode = ieee->open_wep ? WLAN_AUTH_OPEN : WLAN_AUTH_SHARED_KEY;
        sec.flags |= SEC_AUTH_MODE;
-       RTLLIB_DEBUG_WX("Auth: %s\n", sec.auth_mode == WLAN_AUTH_OPEN ?
+       netdev_dbg(ieee->dev, "Auth: %s\n", sec.auth_mode == WLAN_AUTH_OPEN ?
                           "OPEN" : "SHARED KEY");
 
        /* For now we just support WEP, so only set that security level...
@@ -485,7 +483,7 @@ int rtllib_wx_get_encode(struct rtllib_device *ieee,
        int len, key;
        struct lib80211_crypt_data *crypt;
 
-       RTLLIB_DEBUG_WX("GET_ENCODE\n");
+       netdev_dbg(ieee->dev, "%s()\n", __func__);
 
        if (ieee->iw_mode == IW_MODE_MONITOR)
                return -1;
@@ -508,7 +506,8 @@ int rtllib_wx_get_encode(struct rtllib_device *ieee,
                return 0;
        }
        len = crypt->ops->get_key(keybuf, SCM_KEY_LEN, NULL, crypt->priv);
-       erq->length = (len >= 0 ? len : 0);
+
+       erq->length = max(len, 0);
 
        erq->flags |= IW_ENCODE_ENABLED;
 
@@ -592,8 +591,7 @@ int rtllib_wx_set_encode_ext(struct rtllib_device *ieee,
                module = "rtllib_crypt_ccmp";
                break;
        default:
-               RTLLIB_DEBUG_WX("%s: unknown crypto alg %d\n",
-                                  dev->name, ext->alg);
+               netdev_dbg(ieee->dev, "Unknown crypto alg %d\n", ext->alg);
                ret = -EINVAL;
                goto done;
        }
@@ -673,70 +671,13 @@ done:
         if (ieee->reset_on_keychange &&
            ieee->iw_mode != IW_MODE_INFRA &&
            ieee->reset_port && ieee->reset_port(dev)) {
-               RTLLIB_DEBUG_WX("%s: reset_port failed\n", dev->name);
+               netdev_dbg(ieee->dev, "Port reset failed\n");
                return -EINVAL;
        }
        return ret;
 }
 EXPORT_SYMBOL(rtllib_wx_set_encode_ext);
 
-int rtllib_wx_get_encode_ext(struct rtllib_device *ieee,
-                              struct iw_request_info *info,
-                              union iwreq_data *wrqu, char *extra)
-{
-       struct iw_point *encoding = &wrqu->encoding;
-       struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
-       struct lib80211_crypt_data *crypt;
-       int idx, max_key_len;
-
-       max_key_len = encoding->length - sizeof(*ext);
-       if (max_key_len < 0)
-               return -EINVAL;
-
-       idx = encoding->flags & IW_ENCODE_INDEX;
-       if (idx) {
-               if (idx < 1 || idx > NUM_WEP_KEYS)
-                       return -EINVAL;
-               idx--;
-       } else {
-               idx = ieee->crypt_info.tx_keyidx;
-       }
-       if (!(ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) &&
-           (ext->alg != IW_ENCODE_ALG_WEP))
-               if (idx != 0 || (ieee->iw_mode != IW_MODE_INFRA))
-                       return -EINVAL;
-
-       crypt = ieee->crypt_info.crypt[idx];
-
-       encoding->flags = idx + 1;
-       memset(ext, 0, sizeof(*ext));
-
-       if (crypt == NULL || crypt->ops == NULL) {
-               ext->alg = IW_ENCODE_ALG_NONE;
-               ext->key_len = 0;
-               encoding->flags |= IW_ENCODE_DISABLED;
-       } else {
-               if (strcmp(crypt->ops->name, "R-WEP") == 0)
-                       ext->alg = IW_ENCODE_ALG_WEP;
-               else if (strcmp(crypt->ops->name, "R-TKIP"))
-                       ext->alg = IW_ENCODE_ALG_TKIP;
-               else if (strcmp(crypt->ops->name, "R-CCMP"))
-                       ext->alg = IW_ENCODE_ALG_CCMP;
-               else
-                       return -EINVAL;
-               ext->key_len = crypt->ops->get_key(ext->key, SCM_KEY_LEN,
-                                                  NULL, crypt->priv);
-               encoding->flags |= IW_ENCODE_ENABLED;
-               if (ext->key_len &&
-                   (ext->alg == IW_ENCODE_ALG_TKIP ||
-                    ext->alg == IW_ENCODE_ALG_CCMP))
-                       ext->ext_flags |= IW_ENCODE_EXT_TX_SEQ_VALID;
-
-       }
-
-       return 0;
-}
-
 int rtllib_wx_set_mlme(struct rtllib_device *ieee,
                               struct iw_request_info *info,
                               union iwreq_data *wrqu, char *extra)
@@ -850,8 +791,7 @@ int rtllib_wx_set_gen_ie(struct rtllib_device *ieee, u8 *ie, size_t len)
                if ((eid == MFIE_TYPE_GENERIC) && (!memcmp(&ie[2],
                     wps_oui, 4))) {
 
-                       ieee->wps_ie_len = (len < MAX_WZC_IE_LEN) ? (len) :
-                                          (MAX_WZC_IE_LEN);
+                       ieee->wps_ie_len = min_t(size_t, len, MAX_WZC_IE_LEN);
                        buf = kmemdup(ie, ieee->wps_ie_len, GFP_KERNEL);
                        if (buf == NULL)
                                return -ENOMEM;