staging: rtl8723au: rtw_mlme_ext.c: Declare a number of functions static
[cascardo/linux.git] / drivers / staging / rtl8723au / core / rtw_mlme_ext.c
index 68991dc..edf29ce 100644 (file)
 #include <mlme_osdep.h>
 #include <recv_osdep.h>
 #include <linux/ieee80211.h>
-
-#ifdef CONFIG_8723AU_BT_COEXIST
 #include <rtl8723a_hal.h>
-#endif
 
 static int OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame);
 static int OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame);
@@ -49,6 +46,26 @@ static int OnAction23a_ht(struct rtw_adapter *padapter, struct recv_frame *precv
 static int OnAction23a_wmm(struct rtw_adapter *padapter, struct recv_frame *precv_frame);
 static int OnAction23a_p2p(struct rtw_adapter *padapter, struct recv_frame *precv_frame);
 
+static void issue_assocreq(struct rtw_adapter *padapter);
+static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+                          struct sta_info *pstat, u16 pkt_type);
+static void issue_probereq(struct rtw_adapter *padapter,
+                          struct cfg80211_ssid *pssid, u8 *da);
+static int issue_probereq_ex(struct rtw_adapter *padapter,
+                            struct cfg80211_ssid *pssid,
+                            u8 *da, int try_cnt, int wait_ms);
+static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+                          u8 is_valid_p2p_probereq);
+static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+                      unsigned short status);
+static int issue_deauth_ex(struct rtw_adapter *padapter, u8 *da,
+                          unsigned short reason, int try_cnt, int wait_ms);
+static void start_clnt_assoc(struct rtw_adapter *padapter);
+static void start_clnt_auth(struct rtw_adapter *padapter);
+static void start_clnt_join(struct rtw_adapter *padapter);
+static void start_create_ibss(struct rtw_adapter *padapter);
+
+
 static struct mlme_handler mlme_sta_tbl[]={
        {"OnAssocReq23a",               &OnAssocReq23a},
        {"OnAssocRsp23a",               &OnAssocRsp23a},
@@ -95,9 +112,7 @@ unsigned char        WFD_OUI23A[] = {0x50, 0x6F, 0x9A, 0x0A};
 unsigned char  WMM_INFO_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
 unsigned char  WMM_PARA_OUI23A[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
 
-unsigned char WPA_TKIP_CIPHER23A[4] = {0x00, 0x50, 0xf2, 0x02};
-unsigned char RSN_TKIP_CIPHER23A[4] = {0x00, 0x0f, 0xac, 0x02};
-
+static unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
 
 /********************************************************
 MCS rate definitions
@@ -341,7 +356,7 @@ static void init_mlme_ext_priv23a_value(struct rtw_adapter* padapter)
        pmlmeinfo->key_index = 0;
        pmlmeinfo->iv = 0;
 
-       pmlmeinfo->enc_algo = _NO_PRIVACY_;
+       pmlmeinfo->enc_algo = 0;
        pmlmeinfo->authModeToggle = 0;
 
        memset(pmlmeinfo->chg_txt, 0, 128);
@@ -700,7 +715,7 @@ OnProbeReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
 
        if (check_fwstate(pmlmepriv, _FW_LINKED) &&
            pmlmepriv->cur_network.join_res)
-               issue_probersp23a(padapter, mgmt->sa, false);
+               issue_probersp(padapter, mgmt->sa, false);
 
 out:
        return _SUCCESS;
@@ -789,7 +804,7 @@ OnBeacon23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
                rtw_update_TSF(pmlmeext, mgmt);
 
                /* start auth */
-               start_clnt_auth23a(padapter);
+               start_clnt_auth(padapter);
 
                return _SUCCESS;
        }
@@ -888,8 +903,8 @@ OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
        DBG_8723A("auth alg =%x, seq =%X\n", algorithm, seq);
 
        if (auth_mode == 2 &&
-           psecuritypriv->dot11PrivacyAlgrthm != _WEP40_ &&
-           psecuritypriv->dot11PrivacyAlgrthm != _WEP104_)
+           psecuritypriv->dot11PrivacyAlgrthm != WLAN_CIPHER_SUITE_WEP40 &&
+           psecuritypriv->dot11PrivacyAlgrthm != WLAN_CIPHER_SUITE_WEP104)
                auth_mode = 0;
 
        /*  rx a shared-key auth but shared not enabled, or */
@@ -916,7 +931,7 @@ OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
                /*  allocate a new one */
                DBG_8723A("going to alloc stainfo for sa ="MAC_FMT"\n",
                          MAC_ARG(sa));
-               pstat = rtw_alloc_stainfo23a(pstapriv, sa);
+               pstat = rtw_alloc_stainfo23a(pstapriv, sa, GFP_ATOMIC);
                if (!pstat) {
                        DBG_8723A(" Exceed the upper limit of supported "
                                  "clients...\n");
@@ -1014,10 +1029,10 @@ OnAuth23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
                }
        }
 
-       /*  Now, we are going to issue_auth23a... */
+       /*  Now, we are going to issue_auth... */
        pstat->auth_seq = seq + 1;
 
-       issue_auth23a(padapter, pstat, WLAN_STATUS_SUCCESS);
+       issue_auth(padapter, pstat, WLAN_STATUS_SUCCESS);
 
        if (pstat->state & WIFI_FW_AUTH_SUCCESS)
                pstat->auth_seq = 0;
@@ -1034,7 +1049,7 @@ auth_fail:
        pstat->auth_seq = 2;
        memcpy(pstat->hwaddr, sa, 6);
 
-       issue_auth23a(padapter, pstat, (unsigned short)status);
+       issue_auth(padapter, pstat, (unsigned short)status);
 
 #endif
        return _FAIL;
@@ -1096,7 +1111,7 @@ OnAuth23aClient23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
 
                        memcpy((void *)(pmlmeinfo->chg_txt), p + 2, p[1]);
                        pmlmeinfo->auth_seq = 3;
-                       issue_auth23a(padapter, NULL, 0);
+                       issue_auth(padapter, NULL, 0);
                        set_link_timer(pmlmeext, REAUTH_TO);
 
                        return _SUCCESS;
@@ -1118,7 +1133,7 @@ OnAuth23aClient23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
 
        if (go2asoc) {
                DBG_8723A_LEVEL(_drv_always_, "auth success, start assoc\n");
-               start_clnt_assoc23a(padapter);
+               start_clnt_assoc(padapter);
                return _SUCCESS;
        }
 
@@ -1235,8 +1250,8 @@ static int rtw_validate_frame_ies(const u8 *start, uint len)
                case WLAN_EID_ERP_INFO:
                case WLAN_EID_EXT_SUPP_RATES:
                case WLAN_EID_VENDOR_SPECIFIC:
-               if (rtw_validate_vendor_specific_ies(pos, elen))
-                       unknown++;
+                       if (rtw_validate_vendor_specific_ies(pos, elen))
+                               unknown++;
                        break;
                case WLAN_EID_RSN:
                case WLAN_EID_PWR_CAPABILITY:
@@ -1385,7 +1400,7 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
                supportRateNum = p[1];
 
                p = cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES, pos, left);
-               if (!p) {
+               if (p) {
                        if (supportRateNum <= sizeof(supportRate)) {
                                memcpy(supportRate+supportRateNum, p + 2, p[1]);
                                supportRateNum += p[1];
@@ -1540,7 +1555,7 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
        pstat->uapsd_vi = 0;
        pstat->uapsd_be = 0;
        pstat->uapsd_bk = 0;
-       if (pmlmepriv->qospriv.qos_option) {
+       if (pmlmepriv->qos_option) {
                const u8 *end = pos + left;
                p = pos;
 
@@ -1698,11 +1713,11 @@ OnAssocReq23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
 
                /* issue assoc rsp before notify station join event. */
                if (ieee80211_is_assoc_req(mgmt->frame_control))
-                       issue_asocrsp23a(padapter, status, pstat,
-                                        WIFI_ASSOCRSP);
+                       issue_assocrsp(padapter, status, pstat,
+                                      IEEE80211_STYPE_ASSOC_RESP);
                else
-                       issue_asocrsp23a(padapter, status, pstat,
-                                        WIFI_REASSOCRSP);
+                       issue_assocrsp(padapter, status, pstat,
+                                      IEEE80211_STYPE_REASSOC_RESP);
 
                /* 2 - report to upper layer */
                DBG_8723A("indicate_sta_join_event to upper layer - hostapd\n");
@@ -1727,9 +1742,11 @@ OnAssocReq23aFail:
 #ifdef CONFIG_8723AU_AP_MODE
        pstat->aid = 0;
        if (ieee80211_is_assoc_req(mgmt->frame_control))
-               issue_asocrsp23a(padapter, status, pstat, WIFI_ASSOCRSP);
+               issue_assocrsp(padapter, status, pstat,
+                              IEEE80211_STYPE_ASSOC_RESP);
        else
-               issue_asocrsp23a(padapter, status, pstat, WIFI_REASSOCRSP);
+               issue_assocrsp(padapter, status, pstat,
+                              IEEE80211_STYPE_REASSOC_RESP);
 #endif
 
 #endif /* CONFIG_8723AU_AP_MODE */
@@ -1740,7 +1757,6 @@ OnAssocReq23aFail:
 static int
 OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
 {
-       struct ndis_802_11_var_ies *pIE;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -1748,6 +1764,7 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
        struct ieee80211_mgmt *pmgmt = (struct ieee80211_mgmt *) skb->data;
        int res, i;
        unsigned short status;
+       u8 *p;
        u8 *pframe = skb->data;
        int pkt_len = skb->len;
 
@@ -1788,31 +1805,31 @@ OnAssocRsp23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
        /* for not to handle the synchronous IO in the tasklet */
        for (i = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
             i < pkt_len;) {
-               pIE = (struct ndis_802_11_var_ies *)(pframe + i);
+               p = pframe + i;
 
-               switch (pIE->ElementID)
+               switch (p[0])
                {
                case WLAN_EID_VENDOR_SPECIFIC:
-                       if (!memcmp(pIE->data, WMM_PARA_OUI23A, 6))/* WMM */
-                               WMM_param_handler23a(padapter, pIE);
+                       if (!memcmp(p + 2, WMM_PARA_OUI23A, 6))/* WMM */
+                               WMM_param_handler23a(padapter, p);
                        break;
 
                case WLAN_EID_HT_CAPABILITY:    /* HT caps */
-                       HT_caps_handler23a(padapter, pIE);
+                       HT_caps_handler23a(padapter, p);
                        break;
 
                case WLAN_EID_HT_OPERATION:     /* HT info */
-                       HT_info_handler23a(padapter, pIE);
+                       HT_info_handler23a(padapter, p);
                        break;
 
                case WLAN_EID_ERP_INFO:
-                       ERP_IE_handler23a(padapter, pIE);
+                       ERP_IE_handler23a(padapter, p);
 
                default:
                        break;
                }
 
-               i += (pIE->Length + 2);
+               i += (p[1] + 2);
        }
 
        pmlmeinfo->state &= ~WIFI_FW_ASSOC_STATE;
@@ -2036,11 +2053,10 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter,
                        tid = (capab & IEEE80211_ADDBA_PARAM_TID_MASK) >> 2;
                        if (status == 0) {      /* successful */
                                DBG_8723A("agg_enable for TID =%d\n", tid);
-                               psta->htpriv.agg_enable_bitmap |= 1 << tid;
-                               psta->htpriv.candidate_tid_bitmap &=
-                                       ~CHKBIT(tid);
+                               psta->htpriv.agg_enable_bitmap |= BIT(tid);
+                               psta->htpriv.candidate_tid_bitmap &= ~BIT(tid);
                        } else
-                               psta->htpriv.agg_enable_bitmap &= ~CHKBIT(tid);
+                               psta->htpriv.agg_enable_bitmap &= ~BIT(tid);
                        break;
 
                case WLAN_ACTION_DELBA: /* DELBA */
@@ -2053,14 +2069,11 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter,
                                preorder_ctrl->enable = false;
                                preorder_ctrl->indicate_seq = 0xffff;
                        } else {
-                               psta->htpriv.agg_enable_bitmap &= ~(1 << tid);
-                               psta->htpriv.candidate_tid_bitmap &=
-                                       ~(1 << tid);
+                               psta->htpriv.agg_enable_bitmap &= ~BIT(tid);
+                               psta->htpriv.candidate_tid_bitmap &= ~BIT(tid);
                        }
                        reason_code = get_unaligned_le16(
                                &mgmt->u.action.u.delba.reason_code);
-                       DBG_8723A("%s(): DELBA: %x(%x)\n", __func__,
-                                 pmlmeinfo->agg_enable_bitmap, reason_code);
                        /* todo: how to notify the host while receiving
                           DELETE BA */
                        break;
@@ -2071,7 +2084,7 @@ static int OnAction23a_back23a(struct rtw_adapter *padapter,
        return _SUCCESS;
 }
 
-static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
+static int rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
 {
        struct rtw_adapter *adapter = recv_frame->adapter;
        struct mlme_ext_priv *mlmeext = &adapter->mlmeextpriv;
@@ -2086,17 +2099,17 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
                if (token >= 0) {
                        if ((seq_ctrl == mlmeext->action_public_rxseq) &&
                            (token == mlmeext->action_public_dialog_token)) {
-                               DBG_8723A(FUNC_ADPT_FMT" seq_ctrl = 0x%x, "
-                                         "rxseq = 0x%x, token:%d\n",
-                                         FUNC_ADPT_ARG(adapter), seq_ctrl,
+                               DBG_8723A("%s(%s): seq_ctrl = 0x%x, "
+                                         "rxseq = 0x%x, token:%d\n", __func__,
+                                         adapter->pnetdev->name, seq_ctrl,
                                          mlmeext->action_public_rxseq, token);
                                return _FAIL;
                        }
                } else {
                        if (seq_ctrl == mlmeext->action_public_rxseq) {
-                               DBG_8723A(FUNC_ADPT_FMT" seq_ctrl = 0x%x, "
-                                         "rxseq = 0x%x\n",
-                                         FUNC_ADPT_ARG(adapter), seq_ctrl,
+                               DBG_8723A("%s(%s): seq_ctrl = 0x%x, "
+                                         "rxseq = 0x%x\n", __func__,
+                                         adapter->pnetdev->name, seq_ctrl,
                                          mlmeext->action_public_rxseq);
                                return _FAIL;
                        }
@@ -2111,7 +2124,7 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
        return _SUCCESS;
 }
 
-static unsigned int on_action_public23a_p2p(struct recv_frame *precv_frame)
+static int on_action_public23a_p2p(struct recv_frame *precv_frame)
 {
        struct sk_buff *skb = precv_frame->pkt;
        u8 *pframe = skb->data;
@@ -2129,7 +2142,7 @@ static unsigned int on_action_public23a_p2p(struct recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-static unsigned int on_action_public23a_vendor(struct recv_frame *precv_frame)
+static int on_action_public23a_vendor(struct recv_frame *precv_frame)
 {
        unsigned int ret = _FAIL;
        struct sk_buff *skb = precv_frame->pkt;
@@ -2174,7 +2187,7 @@ exit:
 static int on_action_public23a(struct rtw_adapter *padapter,
                               struct recv_frame *precv_frame)
 {
-       unsigned int ret = _FAIL;
+       int ret = _FAIL;
        struct sk_buff *skb = precv_frame->pkt;
        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
        u8 *pframe = skb->data;
@@ -2243,7 +2256,8 @@ OnAction23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-int DoReserved23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame)
+static int DoReserved23a(struct rtw_adapter *padapter,
+                        struct recv_frame *precv_frame)
 {
        return _SUCCESS;
 }
@@ -2256,15 +2270,15 @@ struct xmit_frame *alloc_mgtxmitframe23a(struct xmit_priv *pxmitpriv)
        pmgntframe = rtw_alloc_xmitframe23a_ext(pxmitpriv);
 
        if (!pmgntframe) {
-               DBG_8723A(FUNC_ADPT_FMT" alloc xmitframe fail\n",
-                         FUNC_ADPT_ARG(pxmitpriv->adapter));
+               DBG_8723A("%s(%s): alloc xmitframe fail\n", __func__,
+                         pxmitpriv->adapter->pnetdev->name);
                goto exit;
        }
 
        pxmitbuf = rtw_alloc_xmitbuf23a_ext(pxmitpriv);
        if (!pxmitbuf) {
-               DBG_8723A(FUNC_ADPT_FMT" alloc xmitbuf fail\n",
-                         FUNC_ADPT_ARG(pxmitpriv->adapter));
+               DBG_8723A("%s(%s): alloc xmitbuf fail\n", __func__,
+                         pxmitpriv->adapter->pnetdev->name);
                rtw_free_xmitframe23a(pxmitpriv, pmgntframe);
                pmgntframe = NULL;
                goto exit;
@@ -2313,7 +2327,7 @@ void update_mgntframe_attrib23a(struct rtw_adapter *padapter,
        else
                pattrib->raid = 5;/* a/g mode */
 
-       pattrib->encrypt = _NO_PRIVACY_;
+       pattrib->encrypt = 0;
        pattrib->bswenc = false;
 
        pattrib->qos_en = false;
@@ -2334,13 +2348,13 @@ void dump_mgntframe23a(struct rtw_adapter *padapter,
            padapter->bDriverStopped == true)
                return;
 
-       rtw_hal_mgnt_xmit23a(padapter, pmgntframe);
+       rtl8723au_mgnt_xmit(padapter, pmgntframe);
 }
 
-s32 dump_mgntframe23a_and_wait(struct rtw_adapter *padapter,
+int dump_mgntframe23a_and_wait(struct rtw_adapter *padapter,
                               struct xmit_frame *pmgntframe, int timeout_ms)
 {
-       s32 ret = _FAIL;
+       int ret = _FAIL;
        unsigned long irqL;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct xmit_buf *pxmitbuf = pmgntframe->pxmitbuf;
@@ -2353,7 +2367,7 @@ s32 dump_mgntframe23a_and_wait(struct rtw_adapter *padapter,
        rtw_sctx_init23a(&sctx, timeout_ms);
        pxmitbuf->sctx = &sctx;
 
-       ret = rtw_hal_mgnt_xmit23a(padapter, pmgntframe);
+       ret = rtl8723au_mgnt_xmit(padapter, pmgntframe);
 
        if (ret == _SUCCESS)
                ret = rtw_sctx_wait23a(&sctx);
@@ -2365,24 +2379,23 @@ s32 dump_mgntframe23a_and_wait(struct rtw_adapter *padapter,
        return ret;
 }
 
-s32 dump_mgntframe23a_and_wait_ack23a(struct rtw_adapter *padapter,
+int dump_mgntframe23a_and_wait_ack23a(struct rtw_adapter *padapter,
                                      struct xmit_frame *pmgntframe)
 {
-       s32 ret = _FAIL;
+       int ret = _FAIL;
        u32 timeout_ms = 500;/*   500ms */
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 
        if (padapter->bSurpriseRemoved == true ||
            padapter->bDriverStopped == true)
-               return -1;
+               return _FAIL;
 
        mutex_lock(&pxmitpriv->ack_tx_mutex);
        pxmitpriv->ack_tx = true;
 
        pmgntframe->ack_report = 1;
-       if (rtw_hal_mgnt_xmit23a(padapter, pmgntframe) == _SUCCESS) {
+       if (rtl8723au_mgnt_xmit(padapter, pmgntframe) == _SUCCESS)
                ret = rtw_ack_tx_wait23a(pxmitpriv, timeout_ms);
-       }
 
        pxmitpriv->ack_tx = false;
        mutex_unlock(&pxmitpriv->ack_tx_mutex);
@@ -2434,7 +2447,6 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        unsigned int rate_len;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -2467,17 +2479,14 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_BEACON);
+       pwlanhdr->seq_ctrl = 0;
 
        ether_addr_copy(pwlanhdr->addr1, bc_addr);
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(cur_network));
 
-       SetSeqNum(pwlanhdr, 0 /*pmlmeext->mgnt_seq*/);
-       /* pmlmeext->mgnt_seq++; */
-       SetFrameSubType(pframe, WIFI_BEACON);
-
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
 
@@ -2545,15 +2554,14 @@ void issue_beacon23a(struct rtw_adapter *padapter, int timeout_ms)
 
        /*  DS parameter set */
        pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1, (unsigned char *)
-                              &cur_network->Configuration.DSConfig,
-                              &pattrib->pktlen);
+                              &cur_network->DSConfig, &pattrib->pktlen);
 
        /* if ((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) */
        {
                u8 erpinfo = 0;
                u32 ATIMWindow;
                /*  IBSS Parameter Set... */
-               /* ATIMWindow = cur->Configuration.ATIMWindow; */
+               /* ATIMWindow = cur->ATIMWindow; */
                ATIMWindow = 0;
                pframe = rtw_set_ie23a(pframe, WLAN_EID_IBSS_PARAMS, 2,
                                       (unsigned char *)&ATIMWindow,
@@ -2595,14 +2603,13 @@ _issue_bcn:
                dump_mgntframe23a(padapter, pmgntframe);
 }
 
-void issue_probersp23a(struct rtw_adapter *padapter, unsigned char *da,
-                      u8 is_valid_p2p_probereq)
+static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da,
+                          u8 is_valid_p2p_probereq)
 {
        struct xmit_frame *pmgntframe;
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        unsigned char *mac, *bssid;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 #ifdef CONFIG_8723AU_AP_MODE
@@ -2640,15 +2647,16 @@ void issue_probersp23a(struct rtw_adapter *padapter, unsigned char *da,
        mac = myid(&padapter->eeprompriv);
        bssid = cur_network->MacAddress;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_PROBE_RESP);
+
        ether_addr_copy(pwlanhdr->addr1, da);
        ether_addr_copy(pwlanhdr->addr2, mac);
        ether_addr_copy(pwlanhdr->addr3, bssid);
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(fctrl, WIFI_PROBERSP);
 
        pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = pattrib->hdrlen;
@@ -2718,9 +2726,9 @@ void issue_probersp23a(struct rtw_adapter *padapter, unsigned char *da,
                        remainder_ie = ssid_ie + 2;
                        remainder_ielen = pframe - remainder_ie;
 
-                       DBG_8723A_LEVEL(_drv_warning_, FUNC_ADPT_FMT
-                                       " remainder_ielen > MAX_IE_SZ\n",
-                                       FUNC_ADPT_ARG(padapter));
+                       DBG_8723A_LEVEL(_drv_warning_, "%s(%s): "
+                                       "remainder_ielen > MAX_IE_SZ\n",
+                                       __func__, padapter->pnetdev->name);
                        if (remainder_ielen > MAX_IE_SZ)
                                remainder_ielen = MAX_IE_SZ;
 
@@ -2775,15 +2783,14 @@ void issue_probersp23a(struct rtw_adapter *padapter, unsigned char *da,
 
                /*  DS parameter set */
                pframe = rtw_set_ie23a(pframe, WLAN_EID_DS_PARAMS, 1,
-                                      (unsigned char *)
-                                      &cur_network->Configuration.DSConfig,
+                                      (unsigned char *)&cur_network->DSConfig,
                                       &pattrib->pktlen);
 
                if ((pmlmeinfo->state & 0x03) == WIFI_FW_ADHOC_STATE) {
                        u8 erpinfo = 0;
                        u32 ATIMWindow;
                        /*  IBSS Parameter Set... */
-                       /* ATIMWindow = cur->Configuration.ATIMWindow; */
+                       /* ATIMWindow = cur->ATIMWindow; */
                        ATIMWindow = 0;
                        pframe = rtw_set_ie23a(pframe, WLAN_EID_IBSS_PARAMS, 2,
                                               (unsigned char *)&ATIMWindow,
@@ -2811,15 +2818,14 @@ void issue_probersp23a(struct rtw_adapter *padapter, unsigned char *da,
        return;
 }
 
-static int _issue_probereq23a(struct rtw_adapter *padapter,
-                             struct cfg80211_ssid *pssid, u8 *da, int wait_ack)
+static int _issue_probereq(struct rtw_adapter *padapter,
+                          struct cfg80211_ssid *pssid, u8 *da, int wait_ack)
 {
        int ret = _FAIL;
        struct xmit_frame               *pmgntframe;
        struct pkt_attrib               *pattrib;
        unsigned char                   *pframe;
        struct ieee80211_hdr    *pwlanhdr;
-       unsigned short          *fctrl;
        unsigned char                   *mac;
        unsigned char                   bssrate[NumRates];
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
@@ -2829,7 +2835,7 @@ static int _issue_probereq23a(struct rtw_adapter *padapter,
        u8      bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
 
        RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_,
-                ("+issue_probereq23a\n"));
+                ("+%s\n", __func__));
 
        if ((pmgntframe = alloc_mgtxmitframe23a(pxmitpriv)) == NULL)
                goto exit;
@@ -2845,8 +2851,8 @@ static int _issue_probereq23a(struct rtw_adapter *padapter,
 
        mac = myid(&padapter->eeprompriv);
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_PROBE_REQ);
 
        if (da) {
                /*      unicast probe request frame */
@@ -2860,9 +2866,10 @@ static int _issue_probereq23a(struct rtw_adapter *padapter,
 
        ether_addr_copy(pwlanhdr->addr2, mac);
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_PROBEREQ);
 
        pframe += sizeof (struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof (struct ieee80211_hdr_3addr);
@@ -2911,23 +2918,23 @@ exit:
        return ret;
 }
 
-inline void issue_probereq23a(struct rtw_adapter *padapter,
-                             struct cfg80211_ssid *pssid, u8 *da)
+static inline void issue_probereq(struct rtw_adapter *padapter,
+                                 struct cfg80211_ssid *pssid, u8 *da)
 {
-       _issue_probereq23a(padapter, pssid, da, false);
+       _issue_probereq(padapter, pssid, da, false);
 }
 
-int issue_probereq23a_ex23a(struct rtw_adapter *padapter,
-                     struct cfg80211_ssid *pssid, u8 *da,
-                     int try_cnt, int wait_ms)
+static int issue_probereq_ex(struct rtw_adapter *padapter,
+                            struct cfg80211_ssid *pssid, u8 *da,
+                            int try_cnt, int wait_ms)
 {
        int ret;
        int i = 0;
        unsigned long start = jiffies;
 
        do {
-               ret = _issue_probereq23a(padapter, pssid, da,
-                                        wait_ms > 0 ? true : false);
+               ret = _issue_probereq(padapter, pssid, da,
+                                     wait_ms > 0 ? true : false);
 
                i++;
 
@@ -2946,14 +2953,15 @@ int issue_probereq23a_ex23a(struct rtw_adapter *padapter,
 
        if (try_cnt && wait_ms) {
                if (da)
-                       DBG_8723A(FUNC_ADPT_FMT" to "MAC_FMT", ch:%u%s, %d/%d "
-                                 "in %u ms\n", FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s): to "MAC_FMT", ch:%u%s, %d/%d "
+                                 "in %u ms\n", __func__,
+                                 padapter->pnetdev->name,
                                  MAC_ARG(da), rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
                else
-                       DBG_8723A(FUNC_ADPT_FMT", ch:%u%s, %d/%d in %u ms\n",
-                                 FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s):, ch:%u%s, %d/%d in %u ms\n",
+                                 __func__, padapter->pnetdev->name,
                                  rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
@@ -2963,14 +2971,13 @@ exit:
 }
 
 /*  if psta == NULL, indiate we are station(client) now... */
-void issue_auth23a(struct rtw_adapter *padapter, struct sta_info *psta,
-                  unsigned short status)
+static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta,
+                      unsigned short status)
 {
        struct xmit_frame *pmgntframe;
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        unsigned int val32;
        unsigned short val16;
        int use_shared_key = 0;
@@ -2990,12 +2997,11 @@ void issue_auth23a(struct rtw_adapter *padapter, struct sta_info *psta,
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
-
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_AUTH);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_AUTH);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -3102,11 +3108,12 @@ void issue_auth23a(struct rtw_adapter *padapter, struct sta_info *psta,
                                               pmlmeinfo->chg_txt,
                                               &pattrib->pktlen);
 
-                       SetPrivacy(fctrl);
+                       pwlanhdr->frame_control |=
+                               cpu_to_le16(IEEE80211_FCTL_PROTECTED);
 
                        pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
 
-                       pattrib->encrypt = _WEP40_;
+                       pattrib->encrypt = WLAN_CIPHER_SUITE_WEP40;
 
                        pattrib->icv_len = 4;
 
@@ -3123,8 +3130,8 @@ void issue_auth23a(struct rtw_adapter *padapter, struct sta_info *psta,
        return;
 }
 
-void issue_asocrsp23a(struct rtw_adapter *padapter, unsigned short status,
-                     struct sta_info *pstat, int pkt_type)
+static void issue_assocrsp(struct rtw_adapter *padapter, unsigned short status,
+                          struct sta_info *pstat, u16 pkt_type)
 {
 #ifdef CONFIG_8723AU_AP_MODE
        struct xmit_frame *pmgntframe;
@@ -3155,18 +3162,16 @@ void issue_asocrsp23a(struct rtw_adapter *padapter, unsigned short status,
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       pwlanhdr->frame_control = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | pkt_type);
 
        ether_addr_copy(pwlanhdr->addr1, pstat->hwaddr);
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
+
        pmlmeext->mgnt_seq++;
-       if (pkt_type == WIFI_ASSOCRSP || pkt_type == WIFI_REASSOCRSP)
-               SetFrameSubType(pwlanhdr, pkt_type);
-       else
-               return;
 
        pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen += pattrib->hdrlen;
@@ -3224,7 +3229,7 @@ void issue_asocrsp23a(struct rtw_adapter *padapter, unsigned short status,
        }
 
        /* FILL WMM IE */
-       if (pstat->flags & WLAN_STA_WME && pmlmepriv->qospriv.qos_option) {
+       if (pstat->flags & WLAN_STA_WME && pmlmepriv->qos_option) {
                unsigned char WMM_PARA_IE[] = {0x00, 0x50, 0xf2, 0x02,
                                               0x01, 0x01};
                int ie_len = 0;
@@ -3252,7 +3257,7 @@ void issue_asocrsp23a(struct rtw_adapter *padapter, unsigned short status,
 
        if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK) {
                pframe = rtw_set_ie23a(pframe, WLAN_EID_VENDOR_SPECIFIC, 6,
-                                      REALTEK_96B_IE23A, &pattrib->pktlen);
+                                      REALTEK_96B_IE, &pattrib->pktlen);
        }
 
        /* add WPS IE ie for wps 2.0 */
@@ -3271,7 +3276,7 @@ void issue_asocrsp23a(struct rtw_adapter *padapter, unsigned short status,
 #endif
 }
 
-void issue_assocreq23a(struct rtw_adapter *padapter)
+static void issue_assocreq(struct rtw_adapter *padapter)
 {
        int ret = _FAIL;
        struct xmit_frame *pmgntframe;
@@ -3279,17 +3284,15 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
        unsigned char *pframe;
        const u8 *p;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        unsigned int i, j, index = 0;
        unsigned char rf_type, bssrate[NumRates], sta_bssrate[NumRates];
-       struct ndis_802_11_var_ies *pIE;
        struct registry_priv *pregpriv = &padapter->registrypriv;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-       int bssrate_len = 0, sta_bssrate_len = 0, pie_len;
-       u8 * pie;
+       int bssrate_len = 0, sta_bssrate_len = 0, pie_len, bcn_fixed_size;
+       u8 *pie;
 
        pmgntframe = alloc_mgtxmitframe23a(pxmitpriv);
        if (!pmgntframe)
@@ -3304,15 +3307,16 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
        pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_ASSOC_REQ);
+
        ether_addr_copy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network));
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_ASSOCREQ);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -3403,9 +3407,11 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
                                       bssrate_len, bssrate, &pattrib->pktlen);
 
        /* RSN */
-       pie = pmlmeinfo->network.IEs + sizeof(struct ndis_802_11_fixed_ies);
-       pie_len = pmlmeinfo->network.IELength -
-               sizeof(struct ndis_802_11_fixed_ies);
+       bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+               offsetof(struct ieee80211_mgmt, u.beacon);
+
+       pie = pmlmeinfo->network.IEs + bcn_fixed_size;
+       pie_len = pmlmeinfo->network.IELength - bcn_fixed_size;
 
        p = cfg80211_find_ie(WLAN_EID_RSN, pie, pie_len);
        if (p)
@@ -3481,28 +3487,26 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
        }
 
        /* vendor specific IE, such as WPA, WMM, WPS */
-       for (i = sizeof(struct ndis_802_11_fixed_ies);
-            i < pmlmeinfo->network.IELength;) {
-               pIE = (struct ndis_802_11_var_ies *)
-                       (pmlmeinfo->network.IEs + i);
+       for (i = bcn_fixed_size;  i < pmlmeinfo->network.IELength;) {
+               p = pmlmeinfo->network.IEs + i;
 
-               switch (pIE->ElementID)
-               {
+               switch (p[0]) {
                case WLAN_EID_VENDOR_SPECIFIC:
-                       if (!memcmp(pIE->data, RTW_WPA_OUI23A_TYPE, 4) ||
-                           !memcmp(pIE->data, WMM_OUI23A, 4) ||
-                           !memcmp(pIE->data, WPS_OUI23A, 4)) {
+                       if (!memcmp(p + 2, RTW_WPA_OUI23A_TYPE, 4) ||
+                           !memcmp(p + 2, WMM_OUI23A, 4) ||
+                           !memcmp(p + 2, WPS_OUI23A, 4)) {
+                               u8 plen = p[1];
                                if (!padapter->registrypriv.wifi_spec) {
                                        /* Commented by Kurt 20110629 */
                                        /* In some older APs, WPS handshake */
                                        /* would be fail if we append vender
                                           extensions informations to AP */
-                                       if (!memcmp(pIE->data, WPS_OUI23A, 4))
-                                               pIE->Length = 14;
+                                       if (!memcmp(p + 2, WPS_OUI23A, 4))
+                                               plen = 14;
                                }
                                pframe = rtw_set_ie23a(pframe,
                                                       WLAN_EID_VENDOR_SPECIFIC,
-                                                      pIE->Length, pIE->data,
+                                                      plen, p + 2,
                                                       &pattrib->pktlen);
                        }
                        break;
@@ -3511,12 +3515,12 @@ void issue_assocreq23a(struct rtw_adapter *padapter)
                        break;
                }
 
-               i += pIE->Length + 2;
+               i += p[1] + 2;
        }
 
        if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK)
                pframe = rtw_set_ie23a(pframe, WLAN_EID_VENDOR_SPECIFIC, 6,
-                                      REALTEK_96B_IE23A, &pattrib->pktlen);
+                                      REALTEK_96B_IE, &pattrib->pktlen);
 
        pattrib->last_txcmdsz = pattrib->pktlen;
        dump_mgntframe23a(padapter, pmgntframe);
@@ -3547,7 +3551,6 @@ static int _issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        struct xmit_priv *pxmitpriv;
        struct mlme_ext_priv *pmlmeext;
        struct mlme_ext_info *pmlmeinfo;
@@ -3574,24 +3577,24 @@ static int _issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA |
+                                             IEEE80211_STYPE_NULLFUNC);
 
        if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
-               SetFrDs(fctrl);
+               pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS);
        else if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)
-               SetToDs(fctrl);
+               pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS);
 
        if (power_mode)
-               SetPwrMgt(fctrl);
+               pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PM);
 
        ether_addr_copy(pwlanhdr->addr1, da);
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_DATA_NULL);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -3645,14 +3648,15 @@ int issue_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
 
        if (try_cnt && wait_ms) {
                if (da)
-                       DBG_8723A(FUNC_ADPT_FMT" to "MAC_FMT", ch:%u%s, %d/%d "
-                                 "in %u ms\n", FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s): to "MAC_FMT", ch:%u%s, %d/%d "
+                                 "in %u ms\n", __func__,
+                                 padapter->pnetdev->name,
                                  MAC_ARG(da), rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
                else
-                       DBG_8723A(FUNC_ADPT_FMT", ch:%u%s, %d/%d in %u ms\n",
-                                 FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s):, ch:%u%s, %d/%d in %u ms\n",
+                                 __func__, padapter->pnetdev->name,
                                  rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
@@ -3669,8 +3673,7 @@ static int _issue_qos_nulldata23a(struct rtw_adapter *padapter,
        struct xmit_frame *pmgntframe;
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
-       struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl, *qc;
+       struct ieee80211_qos_hdr *pwlanhdr;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -3693,34 +3696,32 @@ static int _issue_qos_nulldata23a(struct rtw_adapter *padapter,
        memset(pmgntframe->buf_addr, 0, WLANHDR_OFFSET + TXDESC_OFFSET);
 
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
-       pwlanhdr = (struct ieee80211_hdr *)pframe;
+       pwlanhdr = (struct ieee80211_qos_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_DATA |
+                                             IEEE80211_STYPE_QOS_NULLFUNC);
 
        if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)
-               SetFrDs(fctrl);
+               pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_FROMDS);
        else if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)
-               SetToDs(fctrl);
+               pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_TODS);
 
        if (pattrib->mdata)
-               SetMData(fctrl);
-
-       qc = (unsigned short *)(pframe + pattrib->hdrlen - 2);
-
-       SetPriority(qc, tid);
-
-       SetEOSP(qc, pattrib->eosp);
+               pwlanhdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_MOREDATA);
 
-       SetAckpolicy(qc, pattrib->ack_policy);
+       pwlanhdr->qos_ctrl = cpu_to_le16(tid & IEEE80211_QOS_CTL_TID_MASK);
+       pwlanhdr->qos_ctrl |= cpu_to_le16((pattrib->ack_policy << 5) &
+                                         IEEE80211_QOS_CTL_ACK_POLICY_MASK);
+       if (pattrib->eosp)
+               pwlanhdr->qos_ctrl |= cpu_to_le16(IEEE80211_QOS_CTL_EOSP);
 
        ether_addr_copy(pwlanhdr->addr1, da);
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_QOS_DATA_NULL);
 
        pframe += sizeof(struct ieee80211_qos_hdr);
        pattrib->pktlen = sizeof(struct ieee80211_qos_hdr);
@@ -3773,14 +3774,15 @@ int issue_qos_nulldata23a(struct rtw_adapter *padapter, unsigned char *da,
 
        if (try_cnt && wait_ms) {
                if (da)
-                       DBG_8723A(FUNC_ADPT_FMT" to "MAC_FMT", ch:%u%s, %d/%d "
-                                 "in %u ms\n", FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s): to "MAC_FMT", ch:%u%s, %d/%d "
+                                 "in %u ms\n", __func__,
+                                 padapter->pnetdev->name,
                                  MAC_ARG(da), rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
                else
-                       DBG_8723A(FUNC_ADPT_FMT", ch:%u%s, %d/%d in %u ms\n",
-                                 FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s):, ch:%u%s, %d/%d in %u ms\n",
+                                 __func__, padapter->pnetdev->name,
                                  rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
@@ -3789,14 +3791,13 @@ exit:
        return ret;
 }
 
-static int _issue_deauth23a(struct rtw_adapter *padapter, unsigned char *da,
-                           unsigned short reason, u8 wait_ack)
+static int _issue_deauth(struct rtw_adapter *padapter, unsigned char *da,
+                        unsigned short reason, u8 wait_ack)
 {
        struct xmit_frame *pmgntframe;
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -3817,16 +3818,16 @@ static int _issue_deauth23a(struct rtw_adapter *padapter, unsigned char *da,
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_DEAUTH);
 
        ether_addr_copy(pwlanhdr->addr1, da);
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_DEAUTH);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -3853,19 +3854,19 @@ int issue_deauth23a(struct rtw_adapter *padapter, unsigned char *da,
                    unsigned short reason)
 {
        DBG_8723A("%s to "MAC_FMT"\n", __func__, MAC_ARG(da));
-       return _issue_deauth23a(padapter, da, reason, false);
+       return _issue_deauth(padapter, da, reason, false);
 }
 
-int issue_deauth23a_ex23a(struct rtw_adapter *padapter, u8 *da,
-                         unsigned short reason, int try_cnt, int wait_ms)
+static int issue_deauth_ex(struct rtw_adapter *padapter, u8 *da,
+                          unsigned short reason, int try_cnt, int wait_ms)
 {
        int ret;
        int i = 0;
        unsigned long start = jiffies;
 
        do {
-               ret = _issue_deauth23a(padapter, da, reason,
-                                      wait_ms >0 ? true : false);
+               ret = _issue_deauth(padapter, da, reason,
+                                   wait_ms >0 ? true : false);
 
                i++;
 
@@ -3884,14 +3885,15 @@ int issue_deauth23a_ex23a(struct rtw_adapter *padapter, u8 *da,
 
        if (try_cnt && wait_ms) {
                if (da)
-                       DBG_8723A(FUNC_ADPT_FMT" to "MAC_FMT", ch:%u%s, %d/%d "
-                                 "in %u ms\n", FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s): to "MAC_FMT", ch:%u%s, %d/%d "
+                                 "in %u ms\n", __func__,
+                                 padapter->pnetdev->name,
                                  MAC_ARG(da), rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
                else
-                       DBG_8723A(FUNC_ADPT_FMT", ch:%u%s, %d/%d in %u ms\n",
-                                 FUNC_ADPT_ARG(padapter),
+                       DBG_8723A("%s(%s):, ch:%u%s, %d/%d in %u ms\n",
+                                 __func__, padapter->pnetdev->name,
                                  rtw_get_oper_ch23a(padapter),
                                  ret == _SUCCESS?", acked":"", i, try_cnt,
                                  jiffies_to_msecs(jiffies - start));
@@ -3907,14 +3909,12 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter,
        struct pkt_attrib *pattrib;
        unsigned char *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        u8 category, action;
 
-       DBG_8723A(FUNC_NDEV_FMT" ra ="MAC_FMT", ch:%u, offset:%u\n",
-               FUNC_NDEV_ARG(padapter->pnetdev), MAC_ARG(ra),
-                 new_ch, ch_offset);
+       DBG_8723A("%s(%s): ra ="MAC_FMT", ch:%u, offset:%u\n", __func__,
+                 padapter->pnetdev->name, MAC_ARG(ra), new_ch, ch_offset);
 
        if ((pmgntframe = alloc_mgtxmitframe23a(pxmitpriv)) == NULL)
                return;
@@ -3928,16 +3928,16 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter,
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_ACTION);
 
        ether_addr_copy(pwlanhdr->addr1, ra); /* RA */
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv)); /* TA */
        ether_addr_copy(pwlanhdr->addr3, ra); /* DA = RA */
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_ACTION);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -3959,7 +3959,8 @@ void issue_action_spct_ch_switch23a(struct rtw_adapter *padapter,
        dump_mgntframe23a(padapter, pmgntframe);
 }
 
-void issue_action_BA23a(struct rtw_adapter *padapter, unsigned char *raddr,
+void issue_action_BA23a(struct rtw_adapter *padapter,
+                       const unsigned char *raddr,
                        unsigned char action, unsigned short status)
 {
        u8 category = WLAN_CATEGORY_BACK;
@@ -3973,7 +3974,6 @@ void issue_action_BA23a(struct rtw_adapter *padapter, unsigned char *raddr,
        struct pkt_attrib *pattrib;
        u8 *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       u16 *fctrl;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -3999,17 +3999,17 @@ void issue_action_BA23a(struct rtw_adapter *padapter, unsigned char *raddr,
        pframe = (u8 *)(pmgntframe->buf_addr) + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_ACTION);
 
        /* memcpy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network), ETH_ALEN); */
        ether_addr_copy(pwlanhdr->addr1, raddr);
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_ACTION);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -4085,8 +4085,8 @@ void issue_action_BA23a(struct rtw_adapter *padapter, unsigned char *raddr,
                pframe = rtw_set_fixed_ie23a(pframe, 2,
                                             (unsigned char *)&status,
                                             &pattrib->pktlen);
-               rtw_hal_get_def_var23a(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR,
-                                      &max_rx_ampdu_factor);
+               GetHalDefVar8192CUsb(padapter, HW_VAR_MAX_RX_AMPDU_FACTOR,
+                                    &max_rx_ampdu_factor);
                if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_64K)
                        BA_para_set = ((le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f) | 0x1000); /* 64 buffer size */
                else if (max_rx_ampdu_factor == IEEE80211_HT_MAX_AMPDU_32K)
@@ -4153,7 +4153,6 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
        struct pkt_attrib *pattrib;
        u8 *pframe;
        struct ieee80211_hdr *pwlanhdr;
-       unsigned short *fctrl;
        struct wlan_network *pnetwork;
        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -4189,16 +4188,16 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
        pframe = (u8 *)pmgntframe->buf_addr + TXDESC_OFFSET;
        pwlanhdr = (struct ieee80211_hdr *)pframe;
 
-       fctrl = &pwlanhdr->frame_control;
-       *fctrl = 0;
+       pwlanhdr->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT |
+                                             IEEE80211_STYPE_ACTION);
 
        ether_addr_copy(pwlanhdr->addr1, get_my_bssid23a(&pmlmeinfo->network));
        ether_addr_copy(pwlanhdr->addr2, myid(&padapter->eeprompriv));
        ether_addr_copy(pwlanhdr->addr3, get_my_bssid23a(&pmlmeinfo->network));
 
-       SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
+       pwlanhdr->seq_ctrl =
+               cpu_to_le16(IEEE80211_SN_TO_SEQ(pmlmeext->mgnt_seq));
        pmlmeext->mgnt_seq++;
-       SetFrameSubType(pframe, WIFI_ACTION);
 
        pframe += sizeof(struct ieee80211_hdr_3addr);
        pattrib->pktlen = sizeof(struct ieee80211_hdr_3addr);
@@ -4235,11 +4234,11 @@ static void issue_action_BSSCoexistPacket(struct rtw_adapter *padapter)
                                     pbss_network->IEs + _FIXED_IE_LENGTH_,
                                     pbss_network->IELength -_FIXED_IE_LENGTH_);
                if (!p || !p[1]) { /* non-HT */
-                       if (pbss_network->Configuration.DSConfig <= 0 ||
-                           pbss_network->Configuration.DSConfig > 14)
+                       if (pbss_network->DSConfig <= 0 ||
+                           pbss_network->DSConfig > 14)
                                continue;
 
-                       ICS[0][pbss_network->Configuration.DSConfig] = 1;
+                       ICS[0][pbss_network->DSConfig] = 1;
 
                        if (ICS[0][0] == 0)
                                ICS[0][0] = 1;
@@ -4279,7 +4278,7 @@ out:
        dump_mgntframe23a(padapter, pmgntframe);
 }
 
-unsigned int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
+int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
 {
        struct sta_priv *pstapriv = &padapter->stapriv;
        struct sta_info *psta = NULL;
@@ -4319,7 +4318,7 @@ unsigned int send_delba23a(struct rtw_adapter *padapter, u8 initiator, u8 *addr)
        return _SUCCESS;
 }
 
-unsigned int send_beacon23a(struct rtw_adapter *padapter)
+int send_beacon23a(struct rtw_adapter *padapter)
 {
        bool    bxmitok;
        int     issue = 0;
@@ -4410,17 +4409,17 @@ void site_survey23a(struct rtw_adapter *padapter)
                        for (i = 0;i<RTW_SSID_SCAN_AMOUNT;i++) {
                                if (pmlmeext->sitesurvey_res.ssid[i].ssid_len) {
                                        /* todo: to issue two probe req??? */
-                                       issue_probereq23a(padapter, &pmlmeext->sitesurvey_res.ssid[i], NULL);
+                                       issue_probereq(padapter, &pmlmeext->sitesurvey_res.ssid[i], NULL);
                                        /* msleep(SURVEY_TO>>1); */
-                                       issue_probereq23a(padapter, &pmlmeext->sitesurvey_res.ssid[i], NULL);
+                                       issue_probereq(padapter, &pmlmeext->sitesurvey_res.ssid[i], NULL);
                                }
                        }
 
                        if (pmlmeext->sitesurvey_res.scan_mode == SCAN_ACTIVE) {
                                /* todo: to issue two probe req??? */
-                               issue_probereq23a(padapter, NULL, NULL);
+                               issue_probereq(padapter, NULL, NULL);
                                /* msleep(SURVEY_TO>>1); */
-                               issue_probereq23a(padapter, NULL, NULL);
+                               issue_probereq(padapter, NULL, NULL);
                        }
                }
 
@@ -4465,22 +4464,22 @@ void site_survey23a(struct rtw_adapter *padapter)
 }
 
 /* collect bss info from Beacon and Probe request/response frames. */
-u8 collect_bss_info23a(struct rtw_adapter *padapter,
-                      struct recv_frame *precv_frame,
-                      struct wlan_bssid_ex *bssid)
+int collect_bss_info23a(struct rtw_adapter *padapter,
+                       struct recv_frame *precv_frame,
+                       struct wlan_bssid_ex *bssid)
 {
-       int i, length;
+       int i;
        const u8 *p;
        struct sk_buff *skb = precv_frame->pkt;
        struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *) skb->data;
-       int packet_len = skb->len;
+       unsigned int length;
        u8 ie_offset;
        struct registry_priv *pregistrypriv = &padapter->registrypriv;
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        u16 capab_info;
 
-       length = packet_len - sizeof(struct ieee80211_hdr_3addr);
+       length = skb->len - sizeof(struct ieee80211_hdr_3addr);
 
        if (length > MAX_IE_SZ) {
                /* DBG_8723A("IE too long for survey event\n"); */
@@ -4510,7 +4509,7 @@ u8 collect_bss_info23a(struct rtw_adapter *padapter,
        }
        ie_offset -= offsetof(struct ieee80211_mgmt, u);
 
-       bssid->Length = sizeof(struct wlan_bssid_ex) - MAX_IE_SZ + length;
+       bssid->Length = offsetof(struct wlan_bssid_ex, IEs) + length;
 
        /* below is to copy the information element */
        bssid->IELength = length;
@@ -4568,8 +4567,6 @@ u8 collect_bss_info23a(struct rtw_adapter *padapter,
                memcpy(bssid->SupportedRates + i, p + 2, p[1]);
        }
 
-       bssid->NetworkTypeInUse = Ndis802_11OFDM24;
-
        if (bssid->IELength < 12)
                return _FAIL;
 
@@ -4577,11 +4574,10 @@ u8 collect_bss_info23a(struct rtw_adapter *padapter,
        p = cfg80211_find_ie(WLAN_EID_DS_PARAMS, bssid->IEs + ie_offset,
                             bssid->IELength - ie_offset);
 
-       bssid->Configuration.DSConfig = 0;
-       bssid->Configuration.Length = 0;
+       bssid->DSConfig = 0;
 
        if (p) {
-               bssid->Configuration.DSConfig = p[2];
+               bssid->DSConfig = p[2];
        } else {/*  In 5G, some ap do not have DSSET IE */
                /*  checking HT info for channel */
                p = cfg80211_find_ie(WLAN_EID_HT_OPERATION,
@@ -4590,32 +4586,27 @@ u8 collect_bss_info23a(struct rtw_adapter *padapter,
                if (p) {
                        struct HT_info_element *HT_info =
                                (struct HT_info_element *)(p + 2);
-                       bssid->Configuration.DSConfig =
-                               HT_info->primary_channel;
-               } else { /*  use current channel */
-                       bssid->Configuration.DSConfig =
-                               rtw_get_oper_ch23a(padapter);
-               }
+                       bssid->DSConfig = HT_info->primary_channel;
+               } else /*  use current channel */
+                       bssid->DSConfig = rtw_get_oper_ch23a(padapter);
        }
 
        if (ieee80211_is_probe_req(mgmt->frame_control)) {
                /*  FIXME */
-               bssid->InfrastructureMode = Ndis802_11Infrastructure;
+               bssid->ifmode = NL80211_IFTYPE_STATION;
                ether_addr_copy(bssid->MacAddress, mgmt->sa);
                bssid->Privacy = 1;
                return _SUCCESS;
        }
 
-       memcpy(&bssid->Configuration.BeaconPeriod,
-              rtw_get_beacon_interval23a_from_ie(bssid->IEs), 2);
-       bssid->Configuration.BeaconPeriod =
-               le32_to_cpu(bssid->Configuration.BeaconPeriod);
+       bssid->BeaconPeriod = get_unaligned_le16(
+               rtw_get_beacon_interval23a_from_ie(bssid->IEs));
 
        if (capab_info & BIT(0)) {
-               bssid->InfrastructureMode = Ndis802_11Infrastructure;
+               bssid->ifmode = NL80211_IFTYPE_STATION;
                ether_addr_copy(bssid->MacAddress, mgmt->sa);
        } else {
-               bssid->InfrastructureMode = Ndis802_11IBSS;
+               bssid->ifmode = NL80211_IFTYPE_ADHOC;
                ether_addr_copy(bssid->MacAddress, mgmt->bssid);
        }
 
@@ -4624,7 +4615,7 @@ u8 collect_bss_info23a(struct rtw_adapter *padapter,
        else
                bssid->Privacy = 0;
 
-       bssid->Configuration.ATIMWindow = 0;
+       bssid->ATIMWindow = 0;
 
        /* 20/40 BSS Coexistence check */
        if (pregistrypriv->wifi_spec == 1 &&
@@ -4646,19 +4637,19 @@ u8 collect_bss_info23a(struct rtw_adapter *padapter,
 
 
        /*  mark bss info receving from nearby channel as SignalQuality 101 */
-       if (bssid->Configuration.DSConfig != rtw_get_oper_ch23a(padapter))
+       if (bssid->DSConfig != rtw_get_oper_ch23a(padapter))
                bssid->PhyInfo.SignalQuality = 101;
 
        return _SUCCESS;
 }
 
-void start_create_ibss23a(struct rtw_adapter* padapter)
+static void start_create_ibss(struct rtw_adapter* padapter)
 {
        unsigned short  caps;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
-       pmlmeext->cur_channel = (u8)pnetwork->Configuration.DSConfig;
+       pmlmeext->cur_channel = (u8)pnetwork->DSConfig;
        pmlmeinfo->bcn_interval = get_beacon_interval23a(pnetwork);
 
        /* update wireless mode */
@@ -4667,14 +4658,14 @@ void start_create_ibss23a(struct rtw_adapter* padapter)
        /* udpate capability */
        caps = rtw_get_capability23a(pnetwork);
        update_capinfo23a(padapter, caps);
-       if (caps&cap_IBSS) {    /* adhoc master */
+       if (caps & WLAN_CAPABILITY_IBSS) {      /* adhoc master */
                rtl8723a_set_sec_cfg(padapter, 0xcf);
 
                /* switch channel */
                /* SelectChannel23a(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE); */
                set_channel_bwmode23a(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
 
-               beacon_timing_control23a(padapter);
+               rtl8723a_SetBeaconRelatedRegisters(padapter);
 
                /* set msr to WIFI_FW_ADHOC_STATE */
                pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
@@ -4699,12 +4690,12 @@ void start_create_ibss23a(struct rtw_adapter* padapter)
        }
        else
        {
-               DBG_8723A("start_create_ibss23a, invalid cap:%x\n", caps);
+               DBG_8723A("%s: invalid cap:%x\n", __func__, caps);
                return;
        }
 }
 
-void start_clnt_join23a(struct rtw_adapter* padapter)
+static void start_clnt_join(struct rtw_adapter* padapter)
 {
        unsigned short  caps;
        u8      val8;
@@ -4713,7 +4704,7 @@ void start_clnt_join23a(struct rtw_adapter* padapter)
        struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
        int beacon_timeout;
 
-       pmlmeext->cur_channel = (u8)pnetwork->Configuration.DSConfig;
+       pmlmeext->cur_channel = (u8)pnetwork->DSConfig;
        pmlmeinfo->bcn_interval = get_beacon_interval23a(pnetwork);
 
        /* update wireless mode */
@@ -4722,7 +4713,7 @@ void start_clnt_join23a(struct rtw_adapter* padapter)
        /* udpate capability */
        caps = rtw_get_capability23a(pnetwork);
        update_capinfo23a(padapter, caps);
-       if (caps&cap_ESS) {
+       if (caps & WLAN_CAPABILITY_ESS) {
                /* switch channel */
                set_channel_bwmode23a(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
 
@@ -4743,8 +4734,7 @@ void start_clnt_join23a(struct rtw_adapter* padapter)
                mod_timer(&padapter->mlmepriv.assoc_timer, jiffies +
                          msecs_to_jiffies((REAUTH_TO * REAUTH_LIMIT) + (REASSOC_TO*REASSOC_LIMIT) + beacon_timeout));
                pmlmeinfo->state = WIFI_FW_AUTH_NULL | WIFI_FW_STATION_STATE;
-       }
-       else if (caps&cap_IBSS) {       /* adhoc client */
+       } else if (caps & WLAN_CAPABILITY_IBSS) {       /* adhoc client */
                Set_MSR23a(padapter, WIFI_FW_ADHOC_STATE);
 
                rtl8723a_set_sec_cfg(padapter, 0xcf);
@@ -4752,7 +4742,7 @@ void start_clnt_join23a(struct rtw_adapter* padapter)
                /* switch channel */
                set_channel_bwmode23a(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
 
-               beacon_timing_control23a(padapter);
+               rtl8723a_SetBeaconRelatedRegisters(padapter);
 
                pmlmeinfo->state = WIFI_FW_ADHOC_STATE;
 
@@ -4765,7 +4755,7 @@ void start_clnt_join23a(struct rtw_adapter* padapter)
        }
 }
 
-void start_clnt_auth23a(struct rtw_adapter* padapter)
+static void start_clnt_auth(struct rtw_adapter* padapter)
 {
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -4789,12 +4779,12 @@ void start_clnt_auth23a(struct rtw_adapter* padapter)
        issue_deauth23a(padapter, (&pmlmeinfo->network)->MacAddress, WLAN_REASON_DEAUTH_LEAVING);
 
        DBG_8723A_LEVEL(_drv_always_, "start auth\n");
-       issue_auth23a(padapter, NULL, 0);
+       issue_auth(padapter, NULL, 0);
 
        set_link_timer(pmlmeext, REAUTH_TO);
 }
 
-void start_clnt_assoc23a(struct rtw_adapter* padapter)
+static void start_clnt_assoc(struct rtw_adapter* padapter)
 {
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -4804,12 +4794,13 @@ void start_clnt_assoc23a(struct rtw_adapter* padapter)
        pmlmeinfo->state &= (~(WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE));
        pmlmeinfo->state |= (WIFI_FW_AUTH_SUCCESS | WIFI_FW_ASSOC_STATE);
 
-       issue_assocreq23a(padapter);
+       issue_assocreq(padapter);
 
        set_link_timer(pmlmeext, REASSOC_TO);
 }
 
-unsigned int receive_disconnect23a(struct rtw_adapter *padapter, unsigned char *MacAddr, unsigned short reason)
+int receive_disconnect23a(struct rtw_adapter *padapter,
+                         unsigned char *MacAddr, unsigned short reason)
 {
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -4867,9 +4858,9 @@ static void process_80211d(struct rtw_adapter *padapter,
                if (!ie || ie[1] < IEEE80211_COUNTRY_IE_MIN_LEN)
                        return;
 
-               ie += 2;
-               p = ie;
+               p = ie + 2;
                ie += ie[1];
+               ie += 2;
 
                memcpy(country, p, 3);
                country[3] = '\0';
@@ -5040,7 +5031,7 @@ static void process_80211d(struct rtw_adapter *padapter,
        }
 
        /*  If channel is used by AP, set channel scan type to active */
-       channel = bssid->Configuration.DSConfig;
+       channel = bssid->DSConfig;
        chplan_new = pmlmeext->channel_set;
        i = 0;
        while (i < MAX_CHANNEL_NUM && chplan_new[i].ChannelNum != 0) {
@@ -5097,8 +5088,6 @@ void report_survey_event23a(struct rtw_adapter *padapter, struct recv_frame *pre
                return;
        }
 
-       INIT_LIST_HEAD(&pcmd_obj->list);
-
        pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
        pcmd_obj->cmdsz = cmdsz;
        pcmd_obj->parmbuf = pevtcmd;
@@ -5150,8 +5139,6 @@ void report_surveydone_event23a(struct rtw_adapter *padapter)
                return;
        }
 
-       INIT_LIST_HEAD(&pcmd_obj->list);
-
        pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
        pcmd_obj->cmdsz = cmdsz;
        pcmd_obj->parmbuf = pevtcmd;
@@ -5197,8 +5184,6 @@ void report_join_res23a(struct rtw_adapter *padapter, int res)
                return;
        }
 
-       INIT_LIST_HEAD(&pcmd_obj->list);
-
        pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
        pcmd_obj->cmdsz = cmdsz;
        pcmd_obj->parmbuf = pevtcmd;
@@ -5249,8 +5234,6 @@ void report_del_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAdd
                return;
        }
 
-       INIT_LIST_HEAD(&pcmd_obj->list);
-
        pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
        pcmd_obj->cmdsz = cmdsz;
        pcmd_obj->parmbuf = pevtcmd;
@@ -5305,8 +5288,6 @@ void report_add_sta_event23a(struct rtw_adapter *padapter, unsigned char* MacAdd
                return;
        }
 
-       INIT_LIST_HEAD(&pcmd_obj->list);
-
        pcmd_obj->cmdcode = GEN_CMD_CODE(_Set_MLME_EVT);
        pcmd_obj->cmdsz = cmdsz;
        pcmd_obj->parmbuf = pevtcmd;
@@ -5376,7 +5357,7 @@ void update_sta_info23a(struct rtw_adapter *padapter, struct sta_info *psta)
        psta->htpriv.candidate_tid_bitmap = 0x0;/* reset */
 
        /* QoS */
-       if (pmlmepriv->qospriv.qos_option)
+       if (pmlmepriv->qos_option)
                psta->qos_option = true;
 
        psta->state = _FW_LINKED;
@@ -5541,28 +5522,6 @@ void mlmeext_sta_del_event_callback23a(struct rtw_adapter *padapter)
        }
 }
 
-/****************************************************************************
-
-Following are the functions for the timer handlers
-
-*****************************************************************************/
-void linked23a_rx_sig_stren_disp(struct rtw_adapter *padapter)
-{
-       struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
-       struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-       u8 mac_id;
-       int UndecoratedSmoothedPWDB;
-       if ((pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE)
-               mac_id = 0;
-       else if ((pmlmeinfo->state&0x03) == _HW_STATE_AP_)
-               mac_id = 2;
-
-       rtw_hal_get_def_var23a(padapter, HW_DEF_RA_INFO_DUMP,&mac_id);
-
-       rtw_hal_get_def_var23a(padapter, HAL_DEF_UNDERCORATEDSMOOTHEDPWDB, &UndecoratedSmoothedPWDB);
-       DBG_8723A("UndecoratedSmoothedPWDB:%d\n", UndecoratedSmoothedPWDB);
-}
-
 static u8 chk_ap_is_alive(struct rtw_adapter *padapter, struct sta_info *psta)
 {
        u8 ret = false;
@@ -5587,13 +5546,9 @@ void linked_status_chk23a(struct rtw_adapter *padapter)
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        struct sta_priv         *pstapriv = &padapter->stapriv;
 
-       if (padapter->bRxRSSIDisplay)
-                linked23a_rx_sig_stren_disp(padapter);
-
-       rtw_hal_sreset_linked_status_check23a(padapter);
+       rtl8723a_sreset_linked_status_check(padapter);
 
-       if (is_client_associated_to_ap23a(padapter))
-       {
+       if (is_client_associated_to_ap23a(padapter)) {
                /* linked infrastructure client mode */
 
                int tx_chk = _SUCCESS, rx_chk = _SUCCESS;
@@ -5621,7 +5576,7 @@ void linked_status_chk23a(struct rtw_adapter *padapter)
                                }
 
                                if (rx_chk != _SUCCESS)
-                                       issue_probereq23a_ex23a(padapter, &pmlmeinfo->network.Ssid, psta->hwaddr, 3, 1);
+                                       issue_probereq_ex(padapter, &pmlmeinfo->network.Ssid, psta->hwaddr, 3, 1);
 
                                if ((tx_chk != _SUCCESS && pmlmeinfo->link_count++ == 0xf) || rx_chk != _SUCCESS) {
                                        tx_chk = issue_nulldata23a(padapter, psta->hwaddr, 0, 3, 1);
@@ -5637,9 +5592,9 @@ void linked_status_chk23a(struct rtw_adapter *padapter)
                        } else {
                                if (rx_chk != _SUCCESS) {
                                        if (pmlmeext->retry == 0) {
-                                               issue_probereq23a(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress);
-                                               issue_probereq23a(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress);
-                                               issue_probereq23a(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress);
+                                               issue_probereq(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress);
+                                               issue_probereq(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress);
+                                               issue_probereq(padapter, &pmlmeinfo->network.Ssid, pmlmeinfo->network.MacAddress);
                                        }
                                }
 
@@ -5650,8 +5605,10 @@ void linked_status_chk23a(struct rtw_adapter *padapter)
                        if (rx_chk == _FAIL) {
                                pmlmeext->retry++;
                                if (pmlmeext->retry > rx_chk_limit) {
-                                       DBG_8723A_LEVEL(_drv_always_, FUNC_ADPT_FMT" disconnect or roaming\n",
-                                               FUNC_ADPT_ARG(padapter));
+                                       DBG_8723A_LEVEL(_drv_always_,
+                                                       "%s(%s): disconnect or "
+                                                       "roaming\n", __func__,
+                                                       padapter->pnetdev->name);
                                        receive_disconnect23a(padapter, pmlmeinfo->network.MacAddress,
                                                WLAN_REASON_EXPIRATION_CHK);
                                        return;
@@ -5788,7 +5745,7 @@ static void link_timer_hdl(unsigned long data)
 
                DBG_8723A("link_timer_hdl: auth timeout and try again\n");
                pmlmeinfo->auth_seq = 1;
-               issue_auth23a(padapter, NULL, 0);
+               issue_auth(padapter, NULL, 0);
                set_link_timer(pmlmeext, REAUTH_TO);
        }
        else if (pmlmeinfo->state & WIFI_FW_ASSOC_STATE)
@@ -5802,7 +5759,7 @@ static void link_timer_hdl(unsigned long data)
                }
 
                DBG_8723A("link_timer_hdl: assoc timeout and try again\n");
-               issue_assocreq23a(padapter);
+               issue_assocreq(padapter);
                set_link_timer(pmlmeext, REASSOC_TO);
        }
 
@@ -5844,29 +5801,39 @@ void init_mlme_ext_timer23a(struct rtw_adapter *padapter)
                    (unsigned long)padapter);
 }
 
-u8 NULL_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int NULL_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        return H2C_SUCCESS;
 }
 
-u8 setopmode_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int setopmode_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       u8      type;
-       struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
+       enum nl80211_iftype type;
+       struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-       struct setopmode_parm *psetop = (struct setopmode_parm *)pbuf;
+       const struct setopmode_parm *psetop = (struct setopmode_parm *)pbuf;
 
-       if (psetop->mode == Ndis802_11APMode) {
+       switch (psetop->mode) {
+       case NL80211_IFTYPE_P2P_GO:
+       case NL80211_IFTYPE_AP:
                pmlmeinfo->state = WIFI_FW_AP_STATE;
                type = _HW_STATE_AP_;
-       } else if (psetop->mode == Ndis802_11Infrastructure) {
-               pmlmeinfo->state &= ~(BIT(0)|BIT(1));/*  clear state */
-               pmlmeinfo->state |= WIFI_FW_STATION_STATE;/* set to     STATION_STATE */
+               break;
+       case NL80211_IFTYPE_P2P_CLIENT:
+       case NL80211_IFTYPE_STATION:
+               /*  clear state */
+               pmlmeinfo->state &= ~(BIT(0)|BIT(1));
+               /* set to STATION_STATE */
+               pmlmeinfo->state |= WIFI_FW_STATION_STATE;
                type = _HW_STATE_STATION_;
-       } else if (psetop->mode == Ndis802_11IBSS)
+               break;
+       case NL80211_IFTYPE_ADHOC:
                type = _HW_STATE_ADHOC_;
-       else
+               break;
+       default:
                type = _HW_STATE_NOLINK_;
+               break;
+       }
 
        hw_var_set_opmode(padapter, type);
        /* Set_NETYPE0_MSR(padapter, type); */
@@ -5874,19 +5841,18 @@ u8 setopmode_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        return H2C_SUCCESS;
 }
 
-u8 createbss_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int createbss_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
-       struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
+       const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
        /* u32  initialgain; */
 
-       if (pparm->InfrastructureMode == Ndis802_11APMode) {
+       if (pparm->ifmode == NL80211_IFTYPE_AP ||
+           pparm->ifmode == NL80211_IFTYPE_P2P_GO) {
 #ifdef CONFIG_8723AU_AP_MODE
-
-               if (pmlmeinfo->state == WIFI_FW_AP_STATE)
-               {
+               if (pmlmeinfo->state == WIFI_FW_AP_STATE) {
                        /* todo: */
                        return H2C_SUCCESS;
                }
@@ -5894,7 +5860,7 @@ u8 createbss_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        }
 
        /* below is for ad-hoc master */
-       if (pparm->InfrastructureMode == Ndis802_11IBSS) {
+       if (pparm->ifmode == NL80211_IFTYPE_ADHOC) {
                rtw_joinbss_reset23a(padapter);
 
                pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20;
@@ -5904,8 +5870,6 @@ u8 createbss_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
                pmlmeinfo->HT_enable = 0;
                pmlmeinfo->HT_caps_enable = 0;
                pmlmeinfo->HT_info_enable = 0;
-               pmlmeinfo->agg_enable_bitmap = 0;
-               pmlmeinfo->candidate_tid_bitmap = 0;
 
                /* disable dynamic functions, such as high power, DIG */
                rtl8723a_odm_support_ability_backup(padapter);
@@ -5924,22 +5888,23 @@ u8 createbss_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
 
                memcpy(pnetwork, pparm, sizeof(struct wlan_bssid_ex));
 
-               start_create_ibss23a(padapter);
+               start_create_ibss(padapter);
        }
 
        return H2C_SUCCESS;
 }
 
-u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int join_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       struct ndis_802_11_var_ies *    pIE;
        struct registry_priv    *pregpriv = &padapter->registrypriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
-       struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
+       const struct wlan_bssid_ex *pparm = (struct wlan_bssid_ex *)pbuf;
        struct HT_info_element *pht_info;
        u32 i;
+       int bcn_fixed_size;
+       u8 *p;
         /* u32 initialgain; */
        /* u32  acparm; */
 
@@ -5947,7 +5912,7 @@ u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        if (pmlmeinfo->state & WIFI_FW_ASSOC_SUCCESS)
        {
                if (pmlmeinfo->state & WIFI_FW_STATION_STATE)
-                       issue_deauth23a_ex23a(padapter, pnetwork->MacAddress,
+                       issue_deauth_ex(padapter, pnetwork->MacAddress,
                                        WLAN_REASON_DEAUTH_LEAVING, 5, 100);
 
                pmlmeinfo->state = WIFI_FW_NULL_STATE;
@@ -5973,8 +5938,6 @@ u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        pmlmeinfo->HT_enable = 0;
        pmlmeinfo->HT_caps_enable = 0;
        pmlmeinfo->HT_info_enable = 0;
-       pmlmeinfo->agg_enable_bitmap = 0;
-       pmlmeinfo->candidate_tid_bitmap = 0;
        pmlmeinfo->bwmode_updated = false;
        /* pmlmeinfo->assoc_AP_vendor = HT_IOT_PEER_MAX; */
 
@@ -5987,14 +5950,15 @@ u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        /* pmlmeinfo->assoc_AP_vendor = check_assoc_AP23a(pnetwork->IEs,
           pnetwork->IELength); */
 
-       for (i = sizeof(struct ndis_802_11_fixed_ies); i < pnetwork->IELength;)
-       {
-               pIE = (struct ndis_802_11_var_ies *)(pnetwork->IEs + i);
+       bcn_fixed_size = offsetof(struct ieee80211_mgmt, u.beacon.variable) -
+               offsetof(struct ieee80211_mgmt, u.beacon);
 
-               switch (pIE->ElementID)
-               {
+       for (i = bcn_fixed_size; i < pnetwork->IELength;) {
+               p = pnetwork->IEs + i;
+
+               switch (p[0]) {
                case WLAN_EID_VENDOR_SPECIFIC:/* Get WMM IE. */
-                       if (!memcmp(pIE->data, WMM_OUI23A, 4))
+                       if (!memcmp(p + 2, WMM_OUI23A, 4))
                                pmlmeinfo->WMM_enable = 1;
                        break;
 
@@ -6007,7 +5971,7 @@ u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
 
                        /* spec case only for cisco's ap because cisco's ap
                         * issue assoc rsp using mcs rate @40MHz or @20MHz */
-                       pht_info = (struct HT_info_element *)(pIE->data);
+                       pht_info = (struct HT_info_element *)(p + 2);
 
                        if ((pregpriv->cbw40_enable) &&
                            (pht_info->infos[0] & BIT(2))) {
@@ -6039,7 +6003,7 @@ u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
                        break;
                }
 
-               i += (pIE->Length + 2);
+               i += (p[1] + 2);
        }
 
        hw_var_set_bssid(padapter, pmlmeinfo->network.MacAddress);
@@ -6048,21 +6012,23 @@ u8 join_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        /* cancel link timer */
        del_timer_sync(&pmlmeext->link_timer);
 
-       start_clnt_join23a(padapter);
+       start_clnt_join(padapter);
 
        return H2C_SUCCESS;
 }
 
-u8 disconnect_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int disconnect_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       struct disconnect_parm *param = (struct disconnect_parm *)pbuf;
+       const struct disconnect_parm *param = (struct disconnect_parm *)pbuf;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        struct wlan_bssid_ex *pnetwork = &pmlmeinfo->network;
 
        if (is_client_associated_to_ap23a(padapter))
        {
-               issue_deauth23a_ex23a(padapter, pnetwork->MacAddress, WLAN_REASON_DEAUTH_LEAVING, param->deauth_timeout_ms/100, 100);
+               issue_deauth_ex(padapter, pnetwork->MacAddress,
+                               WLAN_REASON_DEAUTH_LEAVING,
+                               param->deauth_timeout_ms/100, 100);
        }
 
        /* set_opmode_cmd(padapter, infra_client_with_mlme); */
@@ -6099,8 +6065,10 @@ u8 disconnect_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
        return  H2C_SUCCESS;
 }
 
-static int rtw_scan_ch_decision(struct rtw_adapter *padapter, struct rtw_ieee80211_channel *out,
-       u32 out_num, struct rtw_ieee80211_channel *in, u32 in_num)
+static int
+rtw_scan_ch_decision(struct rtw_adapter *padapter,
+                    struct rtw_ieee80211_channel *out, u32 out_num,
+                    const struct rtw_ieee80211_channel *in, u32 in_num)
 {
        int i, j;
        int scan_ch_num = 0;
@@ -6113,8 +6081,6 @@ static int rtw_scan_ch_decision(struct rtw_adapter *padapter, struct rtw_ieee802
        /* acquire channels from in */
        j = 0;
        for (i = 0;i<in_num;i++) {
-               if (0)
-               DBG_8723A(FUNC_ADPT_FMT" "CHAN_FMT"\n", FUNC_ADPT_ARG(padapter), CHAN_ARG(&in[i]));
                if (in[i].hw_value && !(in[i].flags & IEEE80211_CHAN_DISABLED)
                        && (set_idx = rtw_ch_set_search_ch23a(pmlmeext->channel_set, in[i].hw_value)) >= 0
                )
@@ -6164,10 +6130,10 @@ static int rtw_scan_ch_decision(struct rtw_adapter *padapter, struct rtw_ieee802
        return j;
 }
 
-u8 sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-       struct sitesurvey_parm *pparm = (struct sitesurvey_parm *)pbuf;
+       const struct sitesurvey_parm *pparm = (struct sitesurvey_parm *)pbuf;
        u8 bdelayscan = false;
        u32 initialgain;
        u32 i;
@@ -6246,9 +6212,9 @@ u8 sitesurvey_cmd_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        return H2C_SUCCESS;
 }
 
-u8 setauth_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int setauth_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       struct setauth_parm             *pparm = (struct setauth_parm *)pbuf;
+       const struct setauth_parm *pparm = (struct setauth_parm *)pbuf;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
 
@@ -6260,10 +6226,10 @@ u8 setauth_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
        return  H2C_SUCCESS;
 }
 
-u8 setkey_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int setkey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        unsigned short                          ctrl;
-       struct setkey_parm              *pparm = (struct setkey_parm *)pbuf;
+       const struct setkey_parm *pparm = (struct setkey_parm *)pbuf;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
        unsigned char                                   null_sta[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
@@ -6285,13 +6251,13 @@ u8 setkey_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        return H2C_SUCCESS;
 }
 
-u8 set_stakey_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int set_stakey_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        u16 ctrl = 0;
        u8 cam_id;/* cam_entry */
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
-       struct set_stakey_parm  *pparm = (struct set_stakey_parm *)pbuf;
+       const struct set_stakey_parm *pparm = (struct set_stakey_parm *)pbuf;
 
        /* cam_entry: */
        /* 0~3 for default key */
@@ -6316,7 +6282,7 @@ u8 set_stakey_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
                struct sta_info *psta;
                struct sta_priv *pstapriv = &padapter->stapriv;
 
-               if (pparm->algorithm == _NO_PRIVACY_)   /*  clear cam entry */
+               if (pparm->algorithm == 0)      /*  clear cam entry */
                {
                        clear_cam_entry23a(padapter, pparm->id);
                        return H2C_SUCCESS_RSP;
@@ -6357,8 +6323,7 @@ u8 set_stakey_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
 
        /* below for sta mode */
 
-       if (pparm->algorithm == _NO_PRIVACY_)   /*  clear cam entry */
-       {
+       if (pparm->algorithm == 0) {    /*  clear cam entry */
                clear_cam_entry23a(padapter, pparm->id);
                return H2C_SUCCESS;
        }
@@ -6372,9 +6337,9 @@ u8 set_stakey_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        return H2C_SUCCESS;
 }
 
-u8 add_ba_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int add_ba_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       struct addBaReq_parm    *pparm = (struct addBaReq_parm *)pbuf;
+       const struct addBaReq_parm *pparm = (struct addBaReq_parm *)pbuf;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
 
@@ -6391,12 +6356,12 @@ u8 add_ba_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
                mod_timer(&psta->addba_retry_timer,
                          jiffies + msecs_to_jiffies(ADDBA_TO));
        } else {
-               psta->htpriv.candidate_tid_bitmap &= ~CHKBIT(pparm->tid);
+               psta->htpriv.candidate_tid_bitmap &= ~BIT(pparm->tid);
        }
        return  H2C_SUCCESS;
 }
 
-u8 set_tx_beacon_cmd23a(struct rtw_adapter* padapter)
+int set_tx_beacon_cmd23a(struct rtw_adapter* padapter)
 {
        struct cmd_obj  *ph2c;
        struct Tx_Beacon_param  *ptxBeacon_parm;
@@ -6442,18 +6407,17 @@ exit:
        return res;
 }
 
-u8 mlme_evt_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int mlme_evt_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        u8 evt_code, evt_seq;
        u16 evt_sz;
-       uint    *peventbuf;
-       void (*event_callback)(struct rtw_adapter *dev, u8 *pbuf);
-       struct evt_priv *pevt_priv = &padapter->evtpriv;
+       const struct C2HEvent_Header *c2h;
+       void (*event_callback)(struct rtw_adapter *dev, const u8 *pbuf);
 
-       peventbuf = (uint*)pbuf;
-       evt_sz = (u16)(*peventbuf&0xffff);
-       evt_seq = (u8)((*peventbuf>>24)&0x7f);
-       evt_code = (u8)((*peventbuf>>16)&0xff);
+       c2h = (struct C2HEvent_Header *)pbuf;
+       evt_sz = c2h->len;
+       evt_seq = c2h->seq;
+       evt_code = c2h->ID;
 
        /*  checking if event code is valid */
        if (evt_code >= MAX_C2HEVT) {
@@ -6469,23 +6433,15 @@ u8 mlme_evt_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
                goto _abort_event_;
        }
 
-       atomic_inc(&pevt_priv->event_seq);
-
-       peventbuf += 2;
-
-       if (peventbuf) {
-               event_callback = wlanevents[evt_code].event_callback;
-               event_callback(padapter, (u8*)peventbuf);
-
-               pevt_priv->evt_done_cnt++;
-       }
+       event_callback = wlanevents[evt_code].event_callback;
+       event_callback(padapter, pbuf + sizeof(struct C2HEvent_Header));
 
 _abort_event_:
 
        return H2C_SUCCESS;
 }
 
-u8 h2c_msg_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int h2c_msg_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        if (!pbuf)
                return H2C_PARAMETERS_ERROR;
@@ -6493,7 +6449,7 @@ u8 h2c_msg_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
        return H2C_SUCCESS;
 }
 
-u8 tx_beacon_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        if (send_beacon23a(padapter) == _FAIL)
        {
@@ -6539,7 +6495,8 @@ u8 tx_beacon_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
 
                                pxmitframe->attrib.qsel = 0x11;/* HIQ */
 
-                               rtw_hal_xmit23aframe_enqueue(padapter, pxmitframe);
+                               rtl8723au_hal_xmitframe_enqueue(padapter,
+                                                               pxmitframe);
                        }
 
                        /* spin_unlock_bh(&psta_bmc->sleep_q.lock); */
@@ -6552,9 +6509,9 @@ u8 tx_beacon_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
        return H2C_SUCCESS;
 }
 
-u8 set_ch_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
+int set_ch_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       struct set_ch_parm *set_ch_parm;
+       const struct set_ch_parm *set_ch_parm;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
 
        if (!pbuf)
@@ -6562,9 +6519,9 @@ u8 set_ch_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
 
        set_ch_parm = (struct set_ch_parm *)pbuf;
 
-       DBG_8723A(FUNC_NDEV_FMT" ch:%u, bw:%u, ch_offset:%u\n",
-               FUNC_NDEV_ARG(padapter->pnetdev),
-               set_ch_parm->ch, set_ch_parm->bw, set_ch_parm->ch_offset);
+       DBG_8723A("%s(%s): ch:%u, bw:%u, ch_offset:%u\n", __func__,
+                 padapter->pnetdev->name, set_ch_parm->ch,
+                 set_ch_parm->bw, set_ch_parm->ch_offset);
 
        pmlmeext->cur_channel = set_ch_parm->ch;
        pmlmeext->cur_ch_offset = set_ch_parm->ch_offset;
@@ -6575,9 +6532,9 @@ u8 set_ch_hdl23a(struct rtw_adapter *padapter, u8 *pbuf)
        return  H2C_SUCCESS;
 }
 
-u8 set_chplan_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int set_chplan_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
-       struct SetChannelPlan_param *setChannelPlan_param;
+       const struct SetChannelPlan_param *setChannelPlan_param;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
 
        if (!pbuf)
@@ -6591,7 +6548,7 @@ u8 set_chplan_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
        return  H2C_SUCCESS;
 }
 
-u8 led_blink_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int led_blink_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        struct LedBlink_param *ledBlink_param;
 
@@ -6603,7 +6560,7 @@ u8 led_blink_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
        return  H2C_SUCCESS;
 }
 
-u8 set_csa_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int set_csa_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        return  H2C_REJECTED;
 }
@@ -6621,7 +6578,7 @@ u8 set_csa_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
 /*  TDLS_CKALV_PH1     : check alive timer phase1 */
 /*  TDLS_CKALV_PH2     : check alive timer phase2 */
 /*  TDLS_FREE_STA      : free tdls sta */
-u8 tdls_hdl23a(struct rtw_adapter *padapter, unsigned char *pbuf)
+int tdls_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 {
        return H2C_REJECTED;
 }