if (p && ie_len > 0) {
                u8 rf_type = 0;
                u8 max_rx_ampdu_factor = 0;
-               struct rtw_ieee80211_ht_cap *pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2);
+               struct ieee80211_ht_cap *pht_cap = (struct ieee80211_ht_cap *)(p + 2);
 
                pHT_caps_ie = p;
 
 
                rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
                if (rf_type == RF_1T1R) {
-                       pht_cap->supp_mcs_set[0] = 0xff;
-                       pht_cap->supp_mcs_set[1] = 0x0;
+                       pht_cap->mcs.rx_mask[0] = 0xff;
+                       pht_cap->mcs.rx_mask[1] = 0x0;
                }
 
                memcpy(&pmlmepriv->htpriv.ht_cap, p + 2, ie_len);
 
                        rf_type,
                        ((psta->bw_mode == CHANNEL_WIDTH_40)?1:0),
                        short_GI,
-                       psta->htpriv.ht_cap.supp_mcs_set
+                       psta->htpriv.ht_cap.mcs.rx_mask
                );
        } else {
                while ((pcur_bss->SupportedRates[i] != 0) && (pcur_bss->SupportedRates[i] != 0xFF)) {
 
        u32 ielen, out_len;
        enum HT_CAP_AMPDU_FACTOR max_rx_ampdu_factor;
        unsigned char *p, *pframe;
-       struct rtw_ieee80211_ht_cap ht_capie;
+       struct ieee80211_ht_cap ht_capie;
        u8 cbw40_enable = 0, stbc_rx_enable = 0, rf_type = 0, operation_bw = 0;
        struct registry_priv *pregistrypriv = &padapter->registrypriv;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
 
        out_len = *pout_len;
 
-       memset(&ht_capie, 0, sizeof(struct rtw_ieee80211_ht_cap));
+       memset(&ht_capie, 0, sizeof(struct ieee80211_ht_cap));
 
        ht_capie.cap_info = cpu_to_le16(IEEE80211_HT_CAP_DSSSCCK40);
 
        }
 
        /* fill default supported_mcs_set */
-       memcpy(ht_capie.supp_mcs_set, pmlmeext->default_supported_mcs_set, 16);
+       memcpy(ht_capie.mcs.rx_mask, pmlmeext->default_supported_mcs_set, 16);
 
        /* update default supported_mcs_set */
        rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
                if (stbc_rx_enable)
                        ht_capie.cap_info |= cpu_to_le16(IEEE80211_HT_CAP_RX_STBC_1R);/* RX STBC One spatial stream */
 
-               set_mcs_rate_by_mask(ht_capie.supp_mcs_set, MCS_RATE_1R);
+               set_mcs_rate_by_mask(ht_capie.mcs.rx_mask, MCS_RATE_1R);
                break;
 
        case RF_2T2R:
 
                #ifdef CONFIG_DISABLE_MCS13TO15
                if (((cbw40_enable == 1) && (operation_bw == CHANNEL_WIDTH_40)) && (pregistrypriv->wifi_spec != 1))
-                               set_mcs_rate_by_mask(ht_capie.supp_mcs_set, MCS_RATE_2R_13TO15_OFF);
+                               set_mcs_rate_by_mask(ht_capie.mcs.rx_mask, MCS_RATE_2R_13TO15_OFF);
                else
-                               set_mcs_rate_by_mask(ht_capie.supp_mcs_set, MCS_RATE_2R);
+                               set_mcs_rate_by_mask(ht_capie.mcs.rx_mask, MCS_RATE_2R);
                #else /* CONFIG_DISABLE_MCS13TO15 */
-                       set_mcs_rate_by_mask(ht_capie.supp_mcs_set, MCS_RATE_2R);
+                       set_mcs_rate_by_mask(ht_capie.mcs.rx_mask, MCS_RATE_2R);
                #endif /* CONFIG_DISABLE_MCS13TO15 */
                break;
        }
                ht_capie.ampdu_params_info |= (IEEE80211_HT_CAP_AMPDU_DENSITY&0x00);
 
        pframe = rtw_set_ie(out_ie+out_len, _HT_CAPABILITY_IE_,
-                                               sizeof(struct rtw_ieee80211_ht_cap), (unsigned char *)&ht_capie, pout_len);
+                                               sizeof(struct ieee80211_ht_cap), (unsigned char *)&ht_capie, pout_len);
 
        phtpriv->ht_option = true;
 
        u8 *p, max_ampdu_sz;
        int len;
        /* struct sta_info *bmc_sta, *psta; */
-       struct rtw_ieee80211_ht_cap *pht_capie;
+       struct ieee80211_ht_cap *pht_capie;
        struct ieee80211_ht_addt_info *pht_addtinfo;
        /* struct recv_reorder_ctrl *preorder_ctrl; */
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        len = 0;
        p = rtw_get_ie(pie+sizeof(struct ndis_802_11_fix_ie), _HT_CAPABILITY_IE_, &len, ie_len-sizeof(struct ndis_802_11_fix_ie));
        if (p && len > 0) {
-               pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2);
+               pht_capie = (struct ieee80211_ht_cap *)(p+2);
                max_ampdu_sz = (pht_capie->ampdu_params_info & IEEE80211_HT_CAP_AMPDU_FACTOR);
                max_ampdu_sz = 1 << (max_ampdu_sz+3); /*  max_ampdu_sz (kbytes); */
 
 
        }
 
        /* save HT capabilities in the sta object */
-       memset(&pstat->htpriv.ht_cap, 0, sizeof(struct rtw_ieee80211_ht_cap));
-       if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct rtw_ieee80211_ht_cap)) {
+       memset(&pstat->htpriv.ht_cap, 0, sizeof(struct ieee80211_ht_cap));
+       if (elems.ht_capabilities && elems.ht_capabilities_len >= sizeof(struct ieee80211_ht_cap)) {
                pstat->flags |= WLAN_STA_HT;
 
                pstat->flags |= WLAN_STA_WME;
 
-               memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct rtw_ieee80211_ht_cap));
+               memcpy(&pstat->htpriv.ht_cap, elems.ht_capabilities, sizeof(struct ieee80211_ht_cap));
 
        } else
                pstat->flags &= ~WLAN_STA_HT;
                psta->htpriv.stbc_cap = pmlmepriv->htpriv.stbc_cap;
                psta->htpriv.beamform_cap = pmlmepriv->htpriv.beamform_cap;
 
-               memcpy(&psta->htpriv.ht_cap, &pmlmeinfo->HT_caps, sizeof(struct rtw_ieee80211_ht_cap));
+               memcpy(&psta->htpriv.ht_cap, &pmlmeinfo->HT_caps, sizeof(struct ieee80211_ht_cap));
        } else {
                psta->htpriv.ht_option = false;
 
 
        u32 wpa_ielen = 0;
        u8 *pbssid = GetAddr3Ptr(pframe);
        struct HT_info_element *pht_info = NULL;
-       struct rtw_ieee80211_ht_cap *pht_cap = NULL;
+       struct ieee80211_ht_cap *pht_cap = NULL;
        u32 bcn_channel;
        unsigned short  ht_cap_info;
        unsigned char ht_info_infos_0;
        /* parsing HT_CAP_IE */
        p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
        if (p && len > 0) {
-                       pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2);
+                       pht_cap = (struct ieee80211_ht_cap *)(p + 2);
                        ht_cap_info = le16_to_cpu(pht_cap->cap_info);
        } else {
                        ht_cap_info = 0;
 
                        limit = 8; /*   1R */
 
                for (i = 0; i < limit; i++) {
-                       if (psta->htpriv.ht_cap.supp_mcs_set[i/8] & BIT(i%8))
+                       if (psta->htpriv.ht_cap.mcs.rx_mask[i/8] & BIT(i%8))
                                tx_ra_bitmap |= BIT(i+12);
                }
        }
 
                        u16 capability;
                        int flags;
                        u8 tx_supp_rates[16];
-                       struct rtw_ieee80211_ht_cap ht_cap;
+                       struct ieee80211_ht_cap ht_cap;
                } add_sta;
                struct {
                        u8 reserved[2];/* for set max_num_sta */
        u32 sta_set;
        u8 tx_supp_rates[16];
        u32 tx_supp_rates_len;
-       struct rtw_ieee80211_ht_cap ht_cap;
+       struct ieee80211_ht_cap ht_cap;
        u64     rx_pkts;
        u64     rx_bytes;
        u64     rx_drops;
 
        u8 stbc_cap;
        u8 beamform_cap;
 
-       struct rtw_ieee80211_ht_cap ht_cap;
+       struct ieee80211_ht_cap ht_cap;
 
 };
 
 
        __le16 start_seq_num;
 } __attribute__((packed));
 
- /**
- * struct rtw_ieee80211_ht_cap - HT capabilities
- *
- * This structure refers to "HT capabilities element" as
- * described in 802.11n draft section 7.3.2.52
- */
-
-struct rtw_ieee80211_ht_cap {
-       __le16  cap_info;
-       unsigned char ampdu_params_info;
-       unsigned char supp_mcs_set[16];
-       __le16  extended_ht_cap_info;
-       __le16          tx_BF_cap_info;
-       unsigned char        antenna_selection_info;
-} __attribute__ ((packed));
-
 /**
  * struct rtw_ieee80211_ht_cap - HT additional information
  *
 
                p = rtw_get_ie(&pnetwork->network.IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pnetwork->network.IELength-12);
        }
        if (p && ht_ielen > 0) {
-               struct rtw_ieee80211_ht_cap *pht_capie;
+               struct ieee80211_ht_cap *pht_capie;
                ht_cap = true;
-               pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2);
-               memcpy(&mcs_rate, pht_capie->supp_mcs_set, 2);
+               pht_capie = (struct ieee80211_ht_cap *)(p+2);
+               memcpy(&mcs_rate, pht_capie->mcs.rx_mask, 2);
                bw_40MHz = (le16_to_cpu(pht_capie->cap_info) & IEEE80211_HT_CAP_SUP_WIDTH) ? 1 : 0;
                short_GI = (le16_to_cpu(pht_capie->cap_info) & (IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40)) ? 1 : 0;
        }
                if (WLAN_STA_HT&flags) {
                        psta->htpriv.ht_option = true;
                        psta->qos_option = 1;
-                       memcpy((void *)&psta->htpriv.ht_cap, (void *)¶m->u.add_sta.ht_cap, sizeof(struct rtw_ieee80211_ht_cap));
+                       memcpy((void *)&psta->htpriv.ht_cap, (void *)¶m->u.add_sta.ht_cap, sizeof(struct ieee80211_ht_cap));
                } else {
                        psta->htpriv.ht_option = false;
                }
 
                psta_data->tx_supp_rates_len =  psta->bssratelen;
                memcpy(psta_data->tx_supp_rates, psta->bssrateset, psta->bssratelen);
-               memcpy(&psta_data->ht_cap, &psta->htpriv.ht_cap, sizeof(struct rtw_ieee80211_ht_cap));
+               memcpy(&psta_data->ht_cap, &psta->htpriv.ht_cap, sizeof(struct ieee80211_ht_cap));
                psta_data->rx_pkts = psta->sta_stats.rx_data_pkts;
                psta_data->rx_bytes = psta->sta_stats.rx_bytes;
                psta_data->rx_drops = psta->sta_stats.rx_drops;