These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / rtl8723au / core / rtw_ap.c
index 6456689..1aa9b26 100644 (file)
 #include <rtl8723a_cmd.h>
 #include <rtl8723a_hal.h>
 #include <asm/unaligned.h>
-
-extern unsigned char WMM_OUI23A[];
-extern unsigned char WPS_OUI23A[];
-extern unsigned char P2P_OUI23A[];
+#include <rtw_mlme_ext.h>
 
 void init_mlme_ap_info23a(struct rtw_adapter *padapter)
 {
@@ -132,11 +129,11 @@ static void update_BCNTIM(struct rtw_adapter *padapter)
 
        *dst_ie++ = tim_ielen;
 
-       *dst_ie++ = 0;/* DTIM count */
-       *dst_ie++ = 1;/* DTIM period */
+       *dst_ie++ = 0; /* DTIM count */
+       *dst_ie++ = 1; /* DTIM period */
 
-       if (pstapriv->tim_bitmap & BIT(0))/* for bc/mc frames */
-               *dst_ie++ = BIT(0);/* bitmap ctrl */
+       if (pstapriv->tim_bitmap & BIT(0)) /* for bc/mc frames */
+               *dst_ie++ = BIT(0);        /* bitmap ctrl */
        else
                *dst_ie++ = 0;
 
@@ -239,11 +236,16 @@ void      expire_timeout_chk23a(struct rtw_adapter *padapter)
 
                        if (psta->state & WIFI_SLEEP_STATE) {
                                if (!(psta->state & WIFI_STA_ALIVE_CHK_STATE)) {
-                                       /* to check if alive by another methods if station is at ps mode. */
+                                       /*
+                                        * check if alive by another method
+                                        * if station is at ps mode.
+                                        */
                                        psta->expire_to = pstapriv->expire_to;
                                        psta->state |= WIFI_STA_ALIVE_CHK_STATE;
-
-                                       /* to update bcn with tim_bitmap for this station */
+                                       /*
+                                        * update bcn with tim_bitmap
+                                        * for this station
+                                        */
                                        pstapriv->tim_bitmap |= CHKBIT(psta->aid);
                                        update_beacon23a(padapter, WLAN_EID_TIM, NULL, false);
 
@@ -264,7 +266,10 @@ void       expire_timeout_chk23a(struct rtw_adapter *padapter)
                                  psta->hwaddr, psta->state);
                        updated = ap_free_sta23a(padapter, psta, false, WLAN_REASON_DEAUTH_LEAVING);
                } else {
-                       /* TODO: Aging mechanism to digest frames in sleep_q to avoid running out of xmitframe */
+                       /*
+                        * TODO: Aging mechanism to digest frames in
+                        * sleep_q to avoid running out of xmitframe
+                        */
                        if (psta->sleepq_len > (NR_XMITFRAME/pstapriv->asoc_list_cnt)
                                && padapter->xmitpriv.free_xmitframe_cnt < ((NR_XMITFRAME/pstapriv->asoc_list_cnt)/2)
                        ) {
@@ -285,13 +290,16 @@ void      expire_timeout_chk23a(struct rtw_adapter *padapter)
 
                u8 backup_oper_channel = 0;
                struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
-               /* switch to correct channel of current network  before issue keep-alive frames */
+               /*
+                * switch to correct channel of current
+                * network before issue keep-alive frames
+                */
                if (rtw_get_oper_ch23a(padapter) != pmlmeext->cur_channel) {
                        backup_oper_channel = rtw_get_oper_ch23a(padapter);
                        SelectChannel23a(padapter, pmlmeext->cur_channel);
                }
 
-       /* issue null data to check sta alive*/
+       /* issue null data to check sta alive */
        for (i = 0; i < chk_alive_num; i++) {
 
                int ret = _FAIL;
@@ -332,7 +340,7 @@ void        expire_timeout_chk23a(struct rtw_adapter *padapter)
 
        }
 
-       if (backup_oper_channel > 0) /* back to the original operation channel */
+       if (backup_oper_channel > 0) /* back to original operation channel */
                SelectChannel23a(padapter, backup_oper_channel);
 }
 
@@ -369,9 +377,9 @@ void add_RATid23a(struct rtw_adapter *padapter, struct sta_info *psta, u8 rssi_l
                rf_type = rtl8723a_get_rf_type(padapter);
 
                if (rf_type == RF_2T2R)
-                       limit = 16;/*  2R */
+                       limit = 16; /* 2R */
                else
-                       limit = 8;/*   1R */
+                       limit = 8;  /* 1R */
 
                for (i = 0; i < limit; i++) {
                        if (psta_ht->ht_cap.mcs.rx_mask[i / 8] & BIT(i % 8))
@@ -403,11 +411,11 @@ void add_RATid23a(struct rtw_adapter *padapter, struct sta_info *psta, u8 rssi_l
        init_rate = get_highest_rate_idx23a(tx_ra_bitmap&0x0fffffff)&0x3f;
 
        if (psta->aid < NUM_STA) {
-               u8 arg = 0;
+               u8 arg;
 
                arg = psta->mac_id&0x1f;
 
-               arg |= BIT(7);/* support entry 2~31 */
+               arg |= BIT(7); /* support entry 2~31 */
 
                if (shortGIrate == true)
                        arg |= BIT(5);
@@ -446,7 +454,7 @@ static void update_bmc_sta(struct rtw_adapter *padapter)
        struct sta_info *psta = rtw_get_bcmc_stainfo23a(padapter);
 
        if (psta) {
-               psta->aid = 0;/* default set to 0 */
+               psta->aid = 0; /* default set to 0 */
                psta->mac_id = psta->aid + 1;
 
                psta->qos_option = 0;
@@ -473,7 +481,7 @@ static void update_bmc_sta(struct rtw_adapter *padapter)
                if (pcur_network->DSConfig > 14) {
                        /* force to A mode. 5G doesn't support CCK rates */
                        network_type = WIRELESS_11A;
-                       tx_ra_bitmap = 0x150; /*  6, 12, 24 Mbps */
+                       tx_ra_bitmap = 0x150; /* 6, 12, 24 Mbps */
                } else {
                        /* force to b mode */
                        network_type = WIRELESS_11B;
@@ -487,7 +495,7 @@ static void update_bmc_sta(struct rtw_adapter *padapter)
                rtl8723a_SetHalODMVar(padapter, HAL_ODM_STA_INFO, psta, true);
 
                {
-                       u8 arg = 0;
+                       u8 arg;
 
                        arg = psta->mac_id&0x1f;
 
@@ -516,13 +524,13 @@ static void update_bmc_sta(struct rtw_adapter *padapter)
                DBG_8723A("add_RATid23a_bmc_sta error!\n");
 }
 
-/* notes: */
-/* AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode */
-/* MAC_ID = AID+1 for sta in ap/adhoc mode */
-/* MAC_ID = 1 for bc/mc for sta/ap/adhoc */
-/* MAC_ID = 0 for bssid for sta/ap/adhoc */
-/* CAM_ID = 0~3 for default key, cmd_id = macid + 3, macid = aid+1; */
-
+/*
+ * AID: 1~MAX for sta and 0 for bc/mc in ap/adhoc mode
+ * MAC_ID = AID+1 for sta in ap/adhoc mode
+ * MAC_ID = 1 for bc/mc for sta/ap/adhoc
+ * MAC_ID = 0 for bssid for sta/ap/adhoc
+ * CAM_ID = 0~3 for default key, cmd_id = macid + 3, macid = aid + 1;
+ */
 void update_sta_info23a_apmode23a(struct rtw_adapter *padapter, struct sta_info *psta)
 {
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -556,7 +564,7 @@ void update_sta_info23a_apmode23a(struct rtw_adapter *padapter, struct sta_info
                if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40))
                        phtpriv_sta->sgi = true;
 
-               /*  bwmode */
+               /* bwmode */
                if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH_20_40)) {
                        /* phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_40; */
                        phtpriv_sta->bwmode = pmlmeext->cur_bwmode;
@@ -575,10 +583,10 @@ void update_sta_info23a_apmode23a(struct rtw_adapter *padapter, struct sta_info
        }
 
        /* Rx AMPDU */
-       send_delba23a(padapter, 0, psta->hwaddr);/*  recipient */
+       send_delba23a(padapter, 0, psta->hwaddr); /* recipient */
 
        /* TX AMPDU */
-       send_delba23a(padapter, 1, psta->hwaddr);/*  originator */
+       send_delba23a(padapter, 1, psta->hwaddr); /* originator */
        phtpriv_sta->agg_enable_bitmap = 0x0;/* reset */
        phtpriv_sta->candidate_tid_bitmap = 0x0;/* reset */
 
@@ -599,11 +607,10 @@ static void update_hw_ht_param(struct rtw_adapter *padapter)
        struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
 
        DBG_8723A("%s\n", __func__);
-
-       /* handle A-MPDU parameter field */
        /*
-               AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
-               AMPDU_para [4:2]:Min MPDU Start Spacing
+        * handle A-MPDU parameter field
+        * AMPDU_para [1:0]:Max AMPDU Len => 0:8k, 1:16k, 2:32k, 3:64k
+        * AMPDU_para [4:2]:Min MPDU Start Spacing
        */
        max_AMPDU_len = pmlmeinfo->ht_cap.ampdu_params_info &
                IEEE80211_HT_AMPDU_PARM_FACTOR;
@@ -614,7 +621,7 @@ static void update_hw_ht_param(struct rtw_adapter *padapter)
        rtl8723a_set_ampdu_min_space(padapter, min_MPDU_spacing);
        rtl8723a_set_ampdu_factor(padapter, max_AMPDU_len);
 
-       /*  Config SM Power Save setting */
+       /* Config SM Power Save setting */
        pmlmeinfo->SM_PS = (le16_to_cpu(pmlmeinfo->ht_cap.cap_info) &
                            IEEE80211_HT_CAP_SM_PS) >> 2;
        if (pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC)
@@ -641,13 +648,17 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
        cur_bwmode = HT_CHANNEL_WIDTH_20;
        cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
 
-       /* check if there is wps ie, */
-       /* if there is wpsie in beacon, the hostapd will update beacon twice when stating hostapd, */
-       /* and at first time the security ie (RSN/WPA IE) will not include in beacon. */
-       if (NULL == cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
-                                           WLAN_OUI_TYPE_MICROSOFT_WPS,
-                                           pnetwork->IEs,
-                                           pnetwork->IELength))
+       /*
+        * check if there is wps ie
+        * if there is wpsie in beacon the hostapd will
+        * update beacon twice when stating hostapd
+        * and at first time the security
+        * ie (RSN/WPA IE) will not include in beacon
+        */
+       if (!cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
+                                    WLAN_OUI_TYPE_MICROSOFT_WPS,
+                                    pnetwork->IEs,
+                                    pnetwork->IELength))
                pmlmeext->bstart_bss = true;
 
        /* todo: update wmm, ht cap */
@@ -663,8 +674,11 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
        }
 
        if (pmlmepriv->cur_network.join_res != true) {
-               /* setting only at  first time */
-               /* WEP Key will be set before this function, do not clear CAM. */
+               /*
+                * setting only at first time
+                * WEP Key will be set before this
+                * function, do not clear CAM.
+                */
                if (psecuritypriv->dot11PrivacyAlgrthm !=
                    WLAN_CIPHER_SUITE_WEP40 &&
                    psecuritypriv->dot11PrivacyAlgrthm !=
@@ -679,13 +693,13 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
        hw_var_set_bssid(padapter, pnetwork->MacAddress);
 
        /* Set EDCA param reg */
-       acparm = 0x002F3217; /*  VO */
+       acparm = 0x002F3217; /* VO */
        rtl8723a_set_ac_param_vo(padapter, acparm);
-       acparm = 0x005E4317; /*  VI */
+       acparm = 0x005E4317; /* VI */
        rtl8723a_set_ac_param_vi(padapter, acparm);
        acparm = 0x005ea42b;
        rtl8723a_set_ac_param_be(padapter, acparm);
-       acparm = 0x0000A444; /*  BK */
+       acparm = 0x0000A444; /* BK */
        rtl8723a_set_ac_param_bk(padapter, acparm);
 
        /* Set Security */
@@ -722,8 +736,10 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
                        switch (pht_info->ht_param &
                                IEEE80211_HT_PARAM_CHA_SEC_OFFSET) {
                        case IEEE80211_HT_PARAM_CHA_SEC_ABOVE:
-                               /* pmlmeext->cur_ch_offset =
-                                  HAL_PRIME_CHNL_OFFSET_LOWER; */
+                               /*
+                                * pmlmeext->cur_ch_offset =
+                                * HAL_PRIME_CHNL_OFFSET_LOWER;
+                                */
                                cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
                                break;
                        case IEEE80211_HT_PARAM_CHA_SEC_BELOW:
@@ -735,7 +751,10 @@ static void start_bss_network(struct rtw_adapter *padapter, u8 *pbuf)
                        }
                }
        }
-       /* TODO: need to judge the phy parameters on concurrent mode for single phy */
+       /*
+        * TODO: need to judge the phy parameters
+        * on concurrent mode for single phy
+        */
        set_channel_bwmode23a(padapter, cur_channel, cur_ch_offset, cur_bwmode);
 
        DBG_8723A("CH =%d, BW =%d, offset =%d\n", cur_channel, cur_bwmode,
@@ -886,7 +905,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
                                         &pairwise_cipher, NULL) == _SUCCESS) {
                        psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_8021X;
 
-                       psecuritypriv->dot8021xalg = 1;/* psk,  todo:802.1x */
+                       psecuritypriv->dot8021xalg = 1; /* psk, todo:802.1x */
                        psecuritypriv->wpa_psk |= BIT(1);
 
                        psecuritypriv->wpa2_group_cipher = group_cipher;
@@ -919,8 +938,8 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
                        break;
                }
 
-               if ((p == NULL) || (ie_len == 0))
-                               break;
+               if (!p || !ie_len)
+                       break;
        }
 
        /* wmm */
@@ -934,7 +953,7 @@ int rtw_check_beacon_data23a(struct rtw_adapter *padapter,
                        if ((p) && !memcmp(p+2, WMM_PARA_IE, 6)) {
                                pmlmepriv->qos_option = 1;
 
-                               *(p+8) |= BIT(7);/* QoS Info, support U-APSD */
+                               *(p + 8) |= BIT(7);/* QoS Info:support U-APSD */
 
                                /* disable all ACM bits since the WMM admission
                                 * control is not supported
@@ -1135,11 +1154,6 @@ int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
        return 0;
 }
 
-static void update_bcn_fixed_ie(struct rtw_adapter *padapter)
-{
-       DBG_8723A("%s\n", __func__);
-}
-
 static void update_bcn_erpinfo_ie(struct rtw_adapter *padapter)
 {
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -1173,21 +1187,6 @@ static void update_bcn_erpinfo_ie(struct rtw_adapter *padapter)
        }
 }
 
-static void update_bcn_htcap_ie(struct rtw_adapter *padapter)
-{
-       DBG_8723A("%s\n", __func__);
-}
-
-static void update_bcn_htinfo_ie(struct rtw_adapter *padapter)
-{
-       DBG_8723A("%s\n", __func__);
-}
-
-static void update_bcn_rsn_ie(struct rtw_adapter *padapter)
-{
-       DBG_8723A("%s\n", __func__);
-}
-
 static void update_bcn_wpa_ie(struct rtw_adapter *padapter)
 {
        DBG_8723A("%s\n", __func__);
@@ -1244,11 +1243,6 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx)
        spin_lock_bh(&pmlmepriv->bcn_update_lock);
 
        switch (ie_id) {
-       case 0xFF:
-               /* 8: TimeStamp, 2: Beacon Interval 2:Capability */
-               update_bcn_fixed_ie(padapter);
-               break;
-
        case WLAN_EID_TIM:
                update_BCNTIM(padapter);
                break;
@@ -1257,18 +1251,6 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx)
                update_bcn_erpinfo_ie(padapter);
                break;
 
-       case WLAN_EID_HT_CAPABILITY:
-               update_bcn_htcap_ie(padapter);
-               break;
-
-       case WLAN_EID_RSN:
-               update_bcn_rsn_ie(padapter);
-               break;
-
-       case WLAN_EID_HT_OPERATION:
-               update_bcn_htinfo_ie(padapter);
-               break;
-
        case WLAN_EID_VENDOR_SPECIFIC:
                update_bcn_vendor_spec_ie(padapter, oui);
                break;
@@ -1286,16 +1268,16 @@ void update_beacon23a(struct rtw_adapter *padapter, u8 ie_id, u8 *oui, u8 tx)
 }
 
 /*
-op_mode
-Set to 0 (HT pure) under the following conditions
      - all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or
      - all STAs in the BSS are 20 MHz HT in 20 MHz BSS
-Set to 1 (HT non-member protection) if there may be non-HT STAs
      in both the primary and the secondary channel
-Set to 2 if only HT STAs are associated in BSS,
      however and at least one 20 MHz HT STA is associated
-Set to 3 (HT mixed mode) when one or more non-HT STAs are associated
      (currently non-GF HT station is considered as non-HT STA also)
+ * op_mode
+ * Set to 0 (HT pure) under the following conditions
*     - all STAs in the BSS are 20/40 MHz HT in 20/40 MHz BSS or
*     - all STAs in the BSS are 20 MHz HT in 20 MHz BSS
+ * Set to 1 (HT non-member protection) if there may be non-HT STAs
*     in both the primary and the secondary channel
+ * Set to 2 if only HT STAs are associated in BSS,
*     however and at least one 20 MHz HT STA is associated
+ * Set to 3 (HT mixed mode) when one or more non-HT STAs are associated
*     (currently non-GF HT station is considered as non-HT STA also)
 */
 static int rtw_ht_operation_update(struct rtw_adapter *padapter)
 {
@@ -1338,7 +1320,8 @@ static int rtw_ht_operation_update(struct rtw_adapter *padapter)
                op_mode_changes++;
        }
 
-       /* Note: currently we switch to the MIXED op mode if HT non-greenfield
+       /*
+        * Note: currently we switch to the MIXED op mode if HT non-greenfield
         * station is associated. Probably it's a theoretical case, since
         * it looks like all known HT STAs support greenfield.
         */
@@ -1389,7 +1372,7 @@ void associated_clients_update23a(struct rtw_adapter *padapter, u8 updated)
        }
 }
 
-/* called > TSR LEVEL for USB or SDIO Interface*/
+/* called > TSR LEVEL for USB or SDIO Interface */
 void bss_cap_update_on_sta_join23a(struct rtw_adapter *padapter, struct sta_info *psta)
 {
        u8 beacon_updated = false;
@@ -1607,16 +1590,16 @@ u8 ap_free_sta23a(struct rtw_adapter *padapter, struct sta_info *psta, bool acti
 
        if (active) {
                /* tear down Rx AMPDU */
-               send_delba23a(padapter, 0, psta->hwaddr);/*  recipient */
+               send_delba23a(padapter, 0, psta->hwaddr); /* recipient */
 
                /* tear down TX AMPDU */
-               send_delba23a(padapter, 1, psta->hwaddr);/* originator */
+               send_delba23a(padapter, 1, psta->hwaddr); /* originator */
 
                issue_deauth23a(padapter, psta->hwaddr, reason);
        }
 
-       psta->htpriv.agg_enable_bitmap = 0x0;/* reset */
-       psta->htpriv.candidate_tid_bitmap = 0x0;/* reset */
+       psta->htpriv.agg_enable_bitmap = 0x0;    /* reset */
+       psta->htpriv.candidate_tid_bitmap = 0x0; /* reset */
 
        /* report_del_sta_event23a(padapter, psta->hwaddr, reason); */
 
@@ -1642,7 +1625,7 @@ u8 ap_free_sta23a(struct rtw_adapter *padapter, struct sta_info *psta, bool acti
        return beacon_updated;
 }
 
-int rtw_ap_inform_ch_switch23a (struct rtw_adapter *padapter, u8 new_ch, u8 ch_offset)
+int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_offset)
 {
        struct list_head *phead, *plist;
        struct sta_info *psta = NULL;
@@ -1663,12 +1646,12 @@ int rtw_ap_inform_ch_switch23a (struct rtw_adapter *padapter, u8 new_ch, u8 ch_o
        list_for_each(plist, phead) {
                psta = container_of(plist, struct sta_info, asoc_list);
 
-               issue_action_spct_ch_switch23a (padapter, psta->hwaddr, new_ch, ch_offset);
+               issue_action_spct_ch_switch23a(padapter, psta->hwaddr, new_ch, ch_offset);
                psta->expire_to = ((pstapriv->expire_to * 2) > 5) ? 5 : (pstapriv->expire_to * 2);
        }
        spin_unlock_bh(&pstapriv->asoc_list_lock);
 
-       issue_action_spct_ch_switch23a (padapter, bc_addr, new_ch, ch_offset);
+       issue_action_spct_ch_switch23a(padapter, bc_addr, new_ch, ch_offset);
 
        return 0;
 }
@@ -1717,7 +1700,7 @@ int rtw_sta_flush23a(struct rtw_adapter *padapter)
        return 0;
 }
 
-/* called > TSR LEVEL for USB or SDIO Interface*/
+/* called > TSR LEVEL for USB or SDIO Interface */
 void sta_info_update23a(struct rtw_adapter *padapter, struct sta_info *psta)
 {
        int flags = psta->flags;
@@ -1746,7 +1729,7 @@ void sta_info_update23a(struct rtw_adapter *padapter, struct sta_info *psta)
        update_sta_info23a_apmode23a(padapter, psta);
 }
 
-/* called >= TSR LEVEL for USB or SDIO Interface*/
+/* called >= TSR LEVEL for USB or SDIO Interface */
 void ap_sta_info_defer_update23a(struct rtw_adapter *padapter, struct sta_info *psta)
 {
        if (psta->state & _FW_LINKED) {
@@ -1870,8 +1853,11 @@ void stop_ap_mode23a(struct rtw_adapter *padapter)
        pmlmepriv->update_bcn = false;
        pmlmeext->bstart_bss = false;
 
-       /* reset and init security priv , this can refine with rtw_reset_securitypriv23a */
-       memset((unsigned char *)&padapter->securitypriv, 0, sizeof (struct security_priv));
+       /*
+        * reset and init security priv , this can
+        * refine with rtw_reset_securitypriv23a
+        */
+       memset((unsigned char *)&padapter->securitypriv, 0, sizeof(struct security_priv));
        padapter->securitypriv.ndisauthtype = Ndis802_11AuthModeOpen;
        padapter->securitypriv.ndisencryptstatus = Ndis802_11WEPDisabled;