hostap: convert usage of net/ieee80211.h to linux/ieee80211.h
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / hostap / hostap_hw.c
index fd7f7ceeac462afa9835aa4523f91539a48f1013..3d9e7b7a17b02aa16da32a0b0e65fea6d3d6bfc2 100644 (file)
@@ -46,8 +46,7 @@
 #include <linux/rtnetlink.h>
 #include <linux/wireless.h>
 #include <net/iw_handler.h>
-#include <net/ieee80211.h>
-#include <net/ieee80211_crypt.h>
+#include <net/lib80211.h>
 #include <asm/irq.h>
 
 #include "hostap_80211.h"
@@ -1840,8 +1839,8 @@ static int prism2_tx_80211(struct sk_buff *skb, struct net_device *dev)
        hdr_len = 24;
        skb_copy_from_linear_data(skb, &txdesc.frame_control, hdr_len);
        fc = le16_to_cpu(txdesc.frame_control);
-       if (WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_DATA &&
-           (fc & IEEE80211_FCTL_FROMDS) && (fc & IEEE80211_FCTL_TODS) &&
+       if (ieee80211_is_data(txdesc.frame_control) &&
+           ieee80211_has_a4(txdesc.frame_control) &&
            skb->len >= 30) {
                /* Addr4 */
                skb_copy_from_linear_data_offset(skb, hdr_len, txdesc.addr4,
@@ -2082,7 +2081,7 @@ static void hostap_rx_skb(local_info_t *local, struct sk_buff *skb)
        stats.rate = rxdesc->rate;
 
        /* Convert Prism2 RX structure into IEEE 802.11 header */
-       hdrlen = hostap_80211_get_hdrlen(le16_to_cpu(rxdesc->frame_control));
+       hdrlen = hostap_80211_get_hdrlen(rxdesc->frame_control);
        if (hdrlen > rx_hdrlen)
                hdrlen = rx_hdrlen;
 
@@ -2204,7 +2203,7 @@ static void hostap_tx_callback(local_info_t *local,
                return;
        }
 
-       hdrlen = hostap_80211_get_hdrlen(le16_to_cpu(txdesc->frame_control));
+       hdrlen = hostap_80211_get_hdrlen(txdesc->frame_control);
        len = le16_to_cpu(txdesc->data_len);
        skb = dev_alloc_skb(hdrlen + len);
        if (skb == NULL) {
@@ -2315,8 +2314,7 @@ static void hostap_sta_tx_exc_tasklet(unsigned long data)
                if (skb->len >= sizeof(*txdesc)) {
                        /* Convert Prism2 RX structure into IEEE 802.11 header
                         */
-                       u16 fc = le16_to_cpu(txdesc->frame_control);
-                       int hdrlen = hostap_80211_get_hdrlen(fc);
+                       int hdrlen = hostap_80211_get_hdrlen(txdesc->frame_control);
                        memmove(skb_pull(skb, sizeof(*txdesc) - hdrlen),
                                &txdesc->frame_control, hdrlen);
 
@@ -2394,12 +2392,12 @@ static void prism2_txexc(local_info_t *local)
        PDEBUG(DEBUG_EXTRA, "   retry_count=%d tx_rate=%d fc=0x%04x "
               "(%s%s%s::%d%s%s)\n",
               txdesc.retry_count, txdesc.tx_rate, fc,
-              WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_MGMT ? "Mgmt" : "",
-              WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_CTL ? "Ctrl" : "",
-              WLAN_FC_GET_TYPE(fc) == IEEE80211_FTYPE_DATA ? "Data" : "",
-              WLAN_FC_GET_STYPE(fc) >> 4,
-              fc & IEEE80211_FCTL_TODS ? " ToDS" : "",
-              fc & IEEE80211_FCTL_FROMDS ? " FromDS" : "");
+              ieee80211_is_mgmt(txdesc.frame_control) ? "Mgmt" : "",
+              ieee80211_is_ctl(txdesc.frame_control) ? "Ctrl" : "",
+              ieee80211_is_data(txdesc.frame_control) ? "Data" : "",
+              (fc & IEEE80211_FCTL_STYPE) >> 4,
+              ieee80211_has_tods(txdesc.frame_control) ? " ToDS" : "",
+              ieee80211_has_fromds(txdesc.frame_control) ? " FromDS" : "");
        PDEBUG(DEBUG_EXTRA, "   A1=%pM A2=%pM A3=%pM A4=%pM\n",
               txdesc.addr1, txdesc.addr2,
               txdesc.addr3, txdesc.addr4);
@@ -2788,45 +2786,6 @@ static void prism2_check_sta_fw_version(local_info_t *local)
 }
 
 
-static void prism2_crypt_deinit_entries(local_info_t *local, int force)
-{
-       struct list_head *ptr, *n;
-       struct ieee80211_crypt_data *entry;
-
-       for (ptr = local->crypt_deinit_list.next, n = ptr->next;
-            ptr != &local->crypt_deinit_list; ptr = n, n = ptr->next) {
-               entry = list_entry(ptr, struct ieee80211_crypt_data, list);
-
-               if (atomic_read(&entry->refcnt) != 0 && !force)
-                       continue;
-
-               list_del(ptr);
-
-               if (entry->ops)
-                       entry->ops->deinit(entry->priv);
-               kfree(entry);
-       }
-}
-
-
-static void prism2_crypt_deinit_handler(unsigned long data)
-{
-       local_info_t *local = (local_info_t *) data;
-       unsigned long flags;
-
-       spin_lock_irqsave(&local->lock, flags);
-       prism2_crypt_deinit_entries(local, 0);
-       if (!list_empty(&local->crypt_deinit_list)) {
-               printk(KERN_DEBUG "%s: entries remaining in delayed crypt "
-                      "deletion list\n", local->dev->name);
-               local->crypt_deinit_timer.expires = jiffies + HZ;
-               add_timer(&local->crypt_deinit_timer);
-       }
-       spin_unlock_irqrestore(&local->lock, flags);
-
-}
-
-
 static void hostap_passive_scan(unsigned long data)
 {
        local_info_t *local = (local_info_t *) data;
@@ -3250,10 +3209,8 @@ while (0)
 
        INIT_LIST_HEAD(&local->cmd_queue);
        init_waitqueue_head(&local->hostscan_wq);
-       INIT_LIST_HEAD(&local->crypt_deinit_list);
-       init_timer(&local->crypt_deinit_timer);
-       local->crypt_deinit_timer.data = (unsigned long) local;
-       local->crypt_deinit_timer.function = prism2_crypt_deinit_handler;
+
+       lib80211_crypt_info_init(&local->crypt_info, dev->name, &local->lock);
 
        init_timer(&local->passive_scan_timer);
        local->passive_scan_timer.data = (unsigned long) local;
@@ -3354,9 +3311,7 @@ static void prism2_free_local_data(struct net_device *dev)
 
        flush_scheduled_work();
 
-       if (timer_pending(&local->crypt_deinit_timer))
-               del_timer(&local->crypt_deinit_timer);
-       prism2_crypt_deinit_entries(local, 1);
+       lib80211_crypt_info_free(&local->crypt_info);
 
        if (timer_pending(&local->passive_scan_timer))
                del_timer(&local->passive_scan_timer);
@@ -3373,16 +3328,6 @@ static void prism2_free_local_data(struct net_device *dev)
        if (local->dev_enabled)
                prism2_callback(local, PRISM2_CALLBACK_DISABLE);
 
-       for (i = 0; i < WEP_KEYS; i++) {
-               struct ieee80211_crypt_data *crypt = local->crypt[i];
-               if (crypt) {
-                       if (crypt->ops)
-                               crypt->ops->deinit(crypt->priv);
-                       kfree(crypt);
-                       local->crypt[i] = NULL;
-               }
-       }
-
        if (local->ap != NULL)
                hostap_free_data(local->ap);