mgmt->u.action.category = WLAN_CATEGORY_BACK;
        pattrib->pktlen++;
-       pframe = rtw_set_fixed_ie(pframe, 1, &(action), &pattrib->pktlen);
 
        switch (action) {
        case WLAN_ACTION_ADDBA_REQ:
+               mgmt->u.action.u.addba_req.action_code = WLAN_ACTION_ADDBA_REQ;
+               pattrib->pktlen++;
                do {
                        pmlmeinfo->dialogToken++;
                } while (pmlmeinfo->dialogToken == 0);
                pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&le_tmp, &pattrib->pktlen);
                break;
        case WLAN_ACTION_ADDBA_RESP:
+               mgmt->u.action.u.addba_resp.action_code = WLAN_ACTION_ADDBA_RESP;
+               pattrib->pktlen++;
                pframe = rtw_set_fixed_ie(pframe, 1, &pmlmeinfo->ADDBA_req.dialog_token, &pattrib->pktlen);
                pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&status, &pattrib->pktlen);
                BA_para_set = le16_to_cpu(pmlmeinfo->ADDBA_req.BA_para_set) & 0x3f;
                pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&pmlmeinfo->ADDBA_req.BA_timeout_value, &pattrib->pktlen);
                break;
        case WLAN_ACTION_DELBA:
+               mgmt->u.action.u.delba.action_code = WLAN_ACTION_DELBA;
+               pattrib->pktlen++;
                BA_para_set = (status & 0x1F) << 3;
                le_tmp = cpu_to_le16(BA_para_set);
                pframe = rtw_set_fixed_ie(pframe, 2, (unsigned char *)&le_tmp, &pattrib->pktlen);