#include <linux/atomic.h>
 #include <linux/crc32poly.h>
 #include <linux/semaphore.h>
+#include <linux/ieee80211.h>
 
 #include "osdep_service.h"
 #include "drv_types.h"
-#include "wifi.h"
 #include "osdep_intf.h"
 
 /* =====WEP related===== */
        else
                a4_exists = 1;
 
-       if ((frtype == WIFI_DATA_CFACK) ||
-            (frtype == WIFI_DATA_CFPOLL) ||
-            (frtype == WIFI_DATA_CFACKPOLL)) {
+       if ((frtype == IEEE80211_STYPE_DATA_CFACK) ||
+           (frtype == IEEE80211_STYPE_DATA_CFPOLL) ||
+           (frtype == IEEE80211_STYPE_DATA_CFACKPOLL)) {
                qc_exists = 1;
                if (hdrlen !=  WLAN_HDR_A3_QOS_LEN)
                        hdrlen += 2;
                a4_exists = 0;
        else
                a4_exists = 1;
-       if ((frtype == WIFI_DATA_CFACK) ||
-           (frtype == WIFI_DATA_CFPOLL) ||
-           (frtype == WIFI_DATA_CFACKPOLL)) {
+       if ((frtype == IEEE80211_STYPE_DATA_CFACK) ||
+           (frtype == IEEE80211_STYPE_DATA_CFPOLL) ||
+           (frtype == IEEE80211_STYPE_DATA_CFACKPOLL)) {
                qc_exists = 1;
                if (hdrlen != WLAN_HDR_A3_QOS_LEN)
                        hdrlen += 2;
 
        WIFI_QOS_DATA_TYPE      = (BIT(7) | BIT(3)),    /*!< QoS Data */
 };
 
-enum WIFI_FRAME_SUBTYPE {
-       /* below is for mgt frame */
-       WIFI_ASSOCREQ       = (0 | WIFI_MGT_TYPE),
-       WIFI_ASSOCRSP       = (BIT(4) | WIFI_MGT_TYPE),
-       WIFI_REASSOCREQ     = (BIT(5) | WIFI_MGT_TYPE),
-       WIFI_REASSOCRSP     = (BIT(5) | BIT(4) | WIFI_MGT_TYPE),
-       WIFI_PROBEREQ       = (BIT(6) | WIFI_MGT_TYPE),
-       WIFI_PROBERSP       = (BIT(6) | BIT(4) | WIFI_MGT_TYPE),
-       WIFI_BEACON         = (BIT(7) | WIFI_MGT_TYPE),
-       WIFI_ATIM           = (BIT(7) | BIT(4) | WIFI_MGT_TYPE),
-       WIFI_DISASSOC       = (BIT(7) | BIT(5) | WIFI_MGT_TYPE),
-       WIFI_AUTH           = (BIT(7) | BIT(5) | BIT(4) | WIFI_MGT_TYPE),
-       WIFI_DEAUTH         = (BIT(7) | BIT(6) | WIFI_MGT_TYPE),
-       WIFI_ACTION         = (BIT(7) | BIT(6) | BIT(4) | WIFI_MGT_TYPE),
-       /* below is for control frame */
-       WIFI_PSPOLL         = (BIT(7) | BIT(5) | WIFI_CTRL_TYPE),
-       WIFI_RTS            = (BIT(7) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE),
-       WIFI_CTS            = (BIT(7) | BIT(6) | WIFI_CTRL_TYPE),
-       WIFI_ACK            = (BIT(7) | BIT(6) | BIT(4) | WIFI_CTRL_TYPE),
-       WIFI_CFEND          = (BIT(7) | BIT(6) | BIT(5) | WIFI_CTRL_TYPE),
-       WIFI_CFEND_CFACK = (BIT(7) | BIT(6) | BIT(5) | BIT(4) | WIFI_CTRL_TYPE),
-       /* below is for data frame */
-       WIFI_DATA           = (0 | WIFI_DATA_TYPE),
-       WIFI_DATA_CFACK     = (BIT(4) | WIFI_DATA_TYPE),
-       WIFI_DATA_CFPOLL    = (BIT(5) | WIFI_DATA_TYPE),
-       WIFI_DATA_CFACKPOLL = (BIT(5) | BIT(4) | WIFI_DATA_TYPE),
-       WIFI_DATA_NULL      = (BIT(6) | WIFI_DATA_TYPE),
-       WIFI_CF_ACK         = (BIT(6) | BIT(4) | WIFI_DATA_TYPE),
-       WIFI_CF_POLL        = (BIT(6) | BIT(5) | WIFI_DATA_TYPE),
-       WIFI_CF_ACKPOLL     = (BIT(6) | BIT(5) | BIT(4) | WIFI_DATA_TYPE),
-};
-
 enum WIFI_REG_DOMAIN {
        DOMAIN_FCC      = 1,
        DOMAIN_IC       = 2,