diff --git a/core/rtw_ap.c b/core/rtw_ap.c index 828a0c9..529f561 100755 --- a/core/rtw_ap.c +++ b/core/rtw_ap.c @@ -1078,9 +1078,6 @@ static void start_bss_network(struct adapter *padapter, u8 *pbuf) } #endif //CONFIG_80211N_HT -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_set_ap_channel_bandwidth(padapter, cur_channel, cur_ch_offset, cur_bwmode); -#else //TODO: need to judge the phy parameters on concurrent mode for single phy //set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); @@ -1091,7 +1088,6 @@ static void start_bss_network(struct adapter *padapter, u8 *pbuf) pmlmeext->cur_channel = cur_channel; pmlmeext->cur_bwmode = cur_bwmode; pmlmeext->cur_ch_offset = cur_ch_offset; -#endif //CONFIG_DUALMAC_CONCURRENT pmlmeext->cur_wireless_mode = pmlmepriv->cur_network.network_type; //let pnetwork_mlmeext == pnetwork_mlme. diff --git a/core/rtw_mlme.c b/core/rtw_mlme.c index a73be3a..0dc8ccf 100755 --- a/core/rtw_mlme.c +++ b/core/rtw_mlme.c @@ -1214,9 +1214,6 @@ void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf) #endif // CONFIG_P2P_PS rtw_os_xmit_schedule(adapter); -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_resume_xmit(adapter); -#endif #ifdef CONFIG_DRVEXT_MODULE_WSC drvext_surveydone_callback(&adapter->drvextpriv); @@ -1876,10 +1873,6 @@ void rtw_joinbss_event_callback(struct adapter *adapter, u8 *pbuf) mlmeext_joinbss_event_callback(adapter, pnetwork->join_res); rtw_os_xmit_schedule(adapter); - -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_resume_xmit(adapter); -#endif } static u8 search_max_mac_id(struct adapter *padapter) diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c index 1801951..6b5cdc8 100755 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -1018,9 +1018,6 @@ unsigned int OnProbeRsp(struct adapter *padapter, union recv_frame *precv_frame) if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) { report_survey_event(padapter, precv_frame); -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_report_survey_event(padapter, precv_frame); -#endif //CONFIG_DUALMAC_CONCURRENT return _SUCCESS; } @@ -1058,10 +1055,6 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame) if (pmlmeext->sitesurvey_res.state == SCAN_PROCESS) { report_survey_event(padapter, precv_frame); -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_report_survey_event(padapter, precv_frame); -#endif - return _SUCCESS; } @@ -8647,9 +8640,6 @@ void site_survey(struct adapter *padapter) //SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); { -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_set_channel_bwmode_survey_done(padapter); -#else if( pwdinfo->driver_interface == DRIVER_WEXT ) { if( rtw_p2p_chk_state(pwdinfo, P2P_STATE_LISTEN) ) @@ -8663,7 +8653,6 @@ void site_survey(struct adapter *padapter) { set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); } -#endif //CONFIG_DUALMAC_CONCURRENT } //flush 4-AC Queue after site_survey @@ -9085,14 +9074,6 @@ void start_clnt_join(struct adapter* padapter) } else if (caps&cap_IBSS) //adhoc client { -#ifdef CONFIG_DUALMAC_CONCURRENT - if(dc_handle_join_request(padapter) == _FAIL) - { - DBG_871X("dc_handle_join_request for Ad-hoc fail !!!\n"); - return; - } -#endif - Set_MSR(padapter, WIFI_FW_ADHOC_STATE); val8 = 0xcf; @@ -9884,9 +9865,6 @@ void mlmeext_joinbss_event_callback(struct adapter *padapter, int join_res) exit_mlmeext_joinbss_event_callback: -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_handle_join_done(padapter, join_res); -#endif DBG_871X("=>%s\n", __FUNCTION__); } @@ -9955,9 +9933,6 @@ void mlmeext_sta_del_event_callback(struct adapter *padapter) //restore to initial setting. update_tx_basic_rate(padapter, padapter->registrypriv.wireless_mode); -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_set_channel_bwmode_disconnect(padapter); -#else //switch to the 20M Hz mode after disconnect pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; @@ -9965,8 +9940,6 @@ void mlmeext_sta_del_event_callback(struct adapter *padapter) //SelectChannel(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset); set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); -#endif //CONFIG_DUALMAC_CONCURRENT - flush_all_cam_entry(padapter); pmlmeinfo->state = WIFI_FW_NULL_STATE; @@ -10613,17 +10586,10 @@ u8 join_cmd_hdl(struct adapter *padapter, u8 *pbuf) } /* check channel, bandwidth, offset and switch */ -#ifdef CONFIG_DUALMAC_CONCURRENT - if(dc_handle_join_request(padapter, &ch, &bw, &offset) == _FAIL) { - DBG_871X("dc_handle_join_request fail !!!\n"); - return H2C_SUCCESS; - } -#else //NON CONFIG_DUALMAC_CONCURRENT if(rtw_chk_start_clnt_join(padapter, &ch, &bw, &offset) == _FAIL) { report_join_res(padapter, (-4)); return H2C_SUCCESS; } -#endif //disable dynamic functions, such as high power, DIG //Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, false); @@ -10684,15 +10650,11 @@ u8 disconnect_hdl(struct adapter *padapter, unsigned char *pbuf) pmlmeinfo->state = WIFI_FW_NULL_STATE; -#ifdef CONFIG_DUALMAC_CONCURRENT - dc_set_channel_bwmode_disconnect(padapter); -#else //switch to the 20M Hz mode after disconnect pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); -#endif //CONFIG_DUALMAC_CONCURRENT flush_all_cam_entry(padapter); @@ -10802,10 +10764,6 @@ u8 sitesurvey_cmd_hdl(struct adapter *padapter, u8 *pbuf) pmlmeext->sitesurvey_res.scan_mode = pparm->scan_mode; -#ifdef CONFIG_DUALMAC_CONCURRENT - bdelayscan = dc_handle_site_survey(padapter); -#endif - //issue null data if associating to the AP if (is_client_associated_to_ap(padapter) == true) { @@ -11231,624 +11189,6 @@ u8 tx_beacon_hdl(struct adapter *padapter, unsigned char *pbuf) } -#ifdef CONFIG_DUALMAC_CONCURRENT -void dc_SelectChannel(struct adapter *padapter, unsigned char channel) -{ - struct adapter *ptarget_adapter; - - if( (padapter->pbuddy_adapter != NULL) && - (padapter->DualMacConcurrent == true) && - (padapter->adapter_type == SECONDARY_ADAPTER)) - { - // only mac0 could control BB&RF - ptarget_adapter = padapter->pbuddy_adapter; - } - else - { - ptarget_adapter = padapter; - } - - _enter_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setch_mutex), NULL); - - rtw_hal_set_chan(ptarget_adapter, channel); - - _exit_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setch_mutex), NULL); -} - -void dc_SetBWMode(struct adapter *padapter, unsigned short bwmode, unsigned char channel_offset) -{ - struct adapter *ptarget_adapter; - - if( (padapter->pbuddy_adapter != NULL) && - (padapter->DualMacConcurrent == true) && - (padapter->adapter_type == SECONDARY_ADAPTER)) - { - // only mac0 could control BB&RF - ptarget_adapter = padapter->pbuddy_adapter; - } - else - { - ptarget_adapter = padapter; - } - - _enter_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setbw_mutex), NULL); - - rtw_hal_set_bwmode(ptarget_adapter, (HT_CHANNEL_WIDTH)bwmode, channel_offset); - - _exit_critical_mutex(&(adapter_to_dvobj(ptarget_adapter)->setbw_mutex), NULL); -} - -static void dc_change_band(struct adapter *padapter, WLAN_BSSID_EX *pnetwork) -{ - u8 network_type,rate_len, total_rate_len,remainder_rate_len; - struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - u8 erpinfo=0x4; - - //DBG_871X("%s\n", __FUNCTION__); - - if(pmlmeext->cur_channel >= 36) - { - network_type = WIRELESS_11A; - total_rate_len = IEEE80211_NUM_OFDM_RATESLEN; - DBG_871X("%s(): change to 5G Band\n",__FUNCTION__); - rtw_remove_bcn_ie(padapter, pnetwork, _ERPINFO_IE_); - } - else - { - network_type = WIRELESS_11BG; - total_rate_len = IEEE80211_CCK_RATE_LEN+IEEE80211_NUM_OFDM_RATESLEN; - DBG_871X("%s(): change to 2.4G Band\n",__FUNCTION__); - rtw_add_bcn_ie(padapter, pnetwork, _ERPINFO_IE_, &erpinfo, 1); - } - - rtw_set_supported_rate(pnetwork->SupportedRates, network_type); - - UpdateBrateTbl(padapter, pnetwork->SupportedRates); - rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, pnetwork->SupportedRates); - - if(total_rate_len > 8) - { - rate_len = 8; - remainder_rate_len = total_rate_len - 8; - } - else - { - rate_len = total_rate_len; - remainder_rate_len = 0; - } - - rtw_add_bcn_ie(padapter, pnetwork, _SUPPORTEDRATES_IE_, pnetwork->SupportedRates, rate_len); - - if(remainder_rate_len) - { - rtw_add_bcn_ie(padapter, pnetwork, _EXT_SUPPORTEDRATES_IE_, (pnetwork->SupportedRates+8), remainder_rate_len); - } - else - { - rtw_remove_bcn_ie(padapter, pnetwork, _EXT_SUPPORTEDRATES_IE_); - } -} - -void dc_set_channel_bwmode_disconnect(struct adapter *padapter) -{ - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_priv *pbuddy_mlmepriv = NULL; - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - if((check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) != true) - { - //switch to the 20M Hz mode after disconnect - pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; - pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - - set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); - } - } - else - { - //switch to the 20M Hz mode after disconnect - pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; - pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - - set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); - } -} - -u8 dc_handle_join_request(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset) -{ - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX*)(&(pmlmeinfo->network)); - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_ext_priv *pbuddy_mlmeext = NULL; - struct mlme_priv *pbuddy_mlmepriv = NULL; - u8 ret = _SUCCESS; - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - - if(pmlmeext->cur_channel != pbuddy_mlmeext->cur_channel || - pmlmeext->cur_bwmode != pbuddy_mlmeext->cur_bwmode || - pmlmeext->cur_ch_offset != pbuddy_mlmeext->cur_ch_offset) - { - if((check_fwstate(pbuddy_mlmepriv, WIFI_AP_STATE)) == true) - { - //issue deauth to all stas if if2 is at ap mode - rtw_sta_flush(pbuddy_adapter); - - //rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); - rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_CHECK_TXBUF, 0); - } - else if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED) == true) - { - if(pmlmeext->cur_channel == pbuddy_mlmeext->cur_channel) - { - // HT_CHANNEL_WIDTH_40 or HT_CHANNEL_WIDTH_20 but channel offset is different - if((pmlmeext->cur_bwmode == pbuddy_mlmeext->cur_bwmode) && - (pmlmeext->cur_ch_offset != pbuddy_mlmeext->cur_ch_offset) ) - { - report_join_res(padapter, -4); - ret = _FAIL; - } - } - else - { - report_join_res(padapter, -4); - ret = _FAIL; - } - } - } - else if (is_client_associated_to_ap(pbuddy_adapter) == true) - { - issue_nulldata(pbuddy_adapter, NULL, 1, 0, 0); - } - } - - if (!ch || !bw || !offset) { - rtw_warn_on(1); - ret = _FAIL; - } - - if (ret == _SUCCESS) { - *ch = pmlmeext->cur_channel; - *bw = pmlmeext->cur_bwmode; - *offset = pmlmeext->cur_ch_offset; - } - -exit: - return ret; -} - -void dc_handle_join_done(struct adapter *padapter, u8 join_res) -{ - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_priv *pbuddy_mlmepriv = NULL; - struct mlme_ext_priv *pbuddy_mlmeext = NULL; - struct mlme_ext_info *pbuddy_mlmeinfo = NULL; - WLAN_BSSID_EX *pbuddy_network_mlmeext = NULL; - u8 change_band = false; - - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; - pbuddy_mlmeinfo = &(pbuddy_mlmeext->mlmext_info); - pbuddy_network_mlmeext = &(pbuddy_mlmeinfo->network); - - if(((pbuddy_mlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && - check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) - { - //restart and update beacon - DBG_871X("after join, current adapter, CH=%d, BW=%d, offset=%d\n", pmlmeext->cur_channel, pmlmeext->cur_bwmode, pmlmeext->cur_ch_offset); - - if(join_res >= 0) - { - u8 *p; - int ie_len; - struct HT_info_element *pht_info=NULL; - - if((pbuddy_mlmeext->cur_channel <= 14 && pmlmeext->cur_channel >= 36) || - (pbuddy_mlmeext->cur_channel >= 36 && pmlmeext->cur_channel <= 14)) - { - change_band = true; - } - - //sync channel/bwmode/ch_offset with another adapter - pbuddy_mlmeext->cur_channel = pmlmeext->cur_channel; - - if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) - { - p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); - if( p && ie_len) - { - pht_info = (struct HT_info_element *)(p+2); - pht_info->infos[0] &= ~(BIT(0)|BIT(1)); //no secondary channel is present - } - - if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) - { - pbuddy_mlmeext->cur_ch_offset = pmlmeext->cur_ch_offset; - - //to update cur_ch_offset value in beacon - if( pht_info ) - { - switch(pmlmeext->cur_ch_offset) - { - case HAL_PRIME_CHNL_OFFSET_LOWER: - pht_info->infos[0] |= 0x1; - break; - case HAL_PRIME_CHNL_OFFSET_UPPER: - pht_info->infos[0] |= 0x3; - break; - case HAL_PRIME_CHNL_OFFSET_DONT_CARE: - default: - break; - } - } - } - else if(pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) - { - pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_20; - pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - - if(pmlmeext->cur_channel>0 && pmlmeext->cur_channel<5) - { - if(pht_info) - pht_info->infos[0] |= 0x1; - - pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; - pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; - } - - if(pmlmeext->cur_channel>7 && pmlmeext->cur_channel<(14+1)) - { - if(pht_info) - pht_info->infos[0] |= 0x3; - - pbuddy_mlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40; - pbuddy_mlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; - } - - set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); - } - } - - // to update channel value in beacon - pbuddy_network_mlmeext->Configuration.DSConfig = pmlmeext->cur_channel; - p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _DSSET_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); - if(p && ie_len>0) - *(p + 2) = pmlmeext->cur_channel; - - p = rtw_get_ie((pbuddy_network_mlmeext->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pbuddy_network_mlmeext->IELength - sizeof(NDIS_802_11_FIXED_IEs))); - if( p && ie_len) - { - pht_info = (struct HT_info_element *)(p+2); - pht_info->primary_channel = pmlmeext->cur_channel; - } - - // update mlmepriv's cur_network - _rtw_memcpy(&pbuddy_mlmepriv->cur_network.network, pbuddy_network_mlmeext, pbuddy_network_mlmeext->Length); - } - else - { - // switch back to original channel/bwmode/ch_offset; - set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); - } - - DBG_871X("after join, another adapter, CH=%d, BW=%d, offset=%d\n", pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); - - if(change_band == true) - dc_change_band(pbuddy_adapter, pbuddy_network_mlmeext); - - DBG_871X("update pbuddy_adapter's beacon\n"); - - update_beacon(pbuddy_adapter, 0, NULL, true); - } - else if (is_client_associated_to_ap(pbuddy_adapter) == true) - { - if((pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) && - (pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20)) - { - set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode); - } - - issue_nulldata(pbuddy_adapter, NULL, 0, 0, 0); - } - } -} - -sint dc_check_fwstate(_adapter *padapter, sint fw_state) -{ - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_priv *pbuddy_mlmepriv = NULL; - - if(padapter->pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - - { - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - - return check_fwstate(pbuddy_mlmepriv, fw_state); - } - - return false; -} - -u8 dc_handle_site_survey(struct adapter *padapter) -{ - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - - // only mac0 can do scan request, help issue nulldata(1) for mac1 - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - if (is_client_associated_to_ap(pbuddy_adapter) == true) - { - pmlmeext->sitesurvey_res.state = SCAN_TXNULL; - - issue_nulldata(pbuddy_adapter, NULL, 1, 2, 0); - - return true; - } - } - - return false; -} - -void dc_report_survey_event(struct adapter *padapter, union recv_frame *precv_frame) -{ - if(padapter->pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - report_survey_event(padapter->pbuddy_adapter, precv_frame); - } -} - -void dc_set_channel_bwmode_survey_done(struct adapter *padapter) -{ - struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_priv *pbuddy_mlmepriv = NULL; - struct mlme_ext_priv *pbuddy_mlmeext = NULL; - struct mlme_ext_info *pbuddy_mlmeinfo = NULL; - u8 cur_channel; - u8 cur_bwmode; - u8 cur_ch_offset; - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; - pbuddy_mlmeinfo = &(pbuddy_mlmeext->mlmext_info); - - if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) - { - if(check_fwstate(pmlmepriv, _FW_LINKED) && - (pmlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40)) - { - cur_channel = pmlmeext->cur_channel; - cur_bwmode = pmlmeext->cur_bwmode; - cur_ch_offset = pmlmeext->cur_ch_offset; - } - else - { - cur_channel = pbuddy_mlmeext->cur_channel; - cur_bwmode = pbuddy_mlmeext->cur_bwmode; - cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; - } - } - else - { - cur_channel = pmlmeext->cur_channel; - cur_bwmode = pmlmeext->cur_bwmode; - cur_ch_offset = pmlmeext->cur_ch_offset; - } - - set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); - - if (is_client_associated_to_ap(pbuddy_adapter) == true) - { - //issue null data - issue_nulldata(pbuddy_adapter, NULL, 0, 0, 0); - } - - if(((pbuddy_mlmeinfo->state&0x03) == WIFI_FW_AP_STATE) && - check_fwstate(pbuddy_mlmepriv, _FW_LINKED)) - { - - DBG_871X("survey done, current CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); - - DBG_871X("restart pbuddy_adapter's beacon\n"); - - update_beacon(pbuddy_adapter, 0, NULL, true); - } - } - else - { - set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode); - } -} - -void dc_set_ap_channel_bandwidth(struct adapter *padapter, u8 channel, u8 channel_offset, u8 bwmode) -{ - u8 *p; - u8 val8, cur_channel, cur_bwmode, cur_ch_offset, change_band; - int ie_len; - struct registry_priv *pregpriv = &padapter->registrypriv; - struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - WLAN_BSSID_EX *pnetwork = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network; - struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - struct HT_info_element *pht_info=NULL; - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_priv *pbuddy_mlmepriv = NULL; - struct mlme_ext_priv *pbuddy_mlmeext = NULL; - - DBG_871X("dualmac_concurrent_ap_set_channel_bwmode ==>\n"); - - cur_channel = channel; - cur_bwmode = bwmode; - cur_ch_offset = channel_offset; - change_band = false; - - p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs))); - if( p && ie_len) - { - pht_info = (struct HT_info_element *)(p+2); - } - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; - - if(!check_fwstate(pbuddy_mlmepriv, _FW_LINKED|_FW_UNDER_LINKING|_FW_UNDER_SURVEY)) - { - set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); - } - else if(check_fwstate(pbuddy_mlmepriv, _FW_LINKED)==true) - { - //To sync cur_channel/cur_bwmode/cur_ch_offset with another adapter - DBG_871X("Another iface is at linked state, sync cur_channel/cur_bwmode/cur_ch_offset\n"); - DBG_871X("Another adapter, CH=%d, BW=%d, offset=%d\n", pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_bwmode, pbuddy_mlmeext->cur_ch_offset); - DBG_871X("Current adapter, CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); - - cur_channel = pbuddy_mlmeext->cur_channel; - if(cur_bwmode == HT_CHANNEL_WIDTH_40) - { - if(pht_info) - pht_info->infos[0] &= ~(BIT(0)|BIT(1)); - - if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) - { - cur_ch_offset = pbuddy_mlmeext->cur_ch_offset; - - //to update cur_ch_offset value in beacon - if(pht_info) - { - switch(cur_ch_offset) - { - case HAL_PRIME_CHNL_OFFSET_LOWER: - pht_info->infos[0] |= 0x1; - break; - case HAL_PRIME_CHNL_OFFSET_UPPER: - pht_info->infos[0] |= 0x3; - break; - case HAL_PRIME_CHNL_OFFSET_DONT_CARE: - default: - break; - } - } - } - else if(pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) - { - cur_bwmode = HT_CHANNEL_WIDTH_20; - cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - - if(cur_channel>0 && cur_channel<5) - { - if(pht_info) - pht_info->infos[0] |= 0x1; - - cur_bwmode = HT_CHANNEL_WIDTH_40; - cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER; - } - - if(cur_channel>7 && cur_channel<(14+1)) - { - if(pht_info) - pht_info->infos[0] |= 0x3; - - cur_bwmode = HT_CHANNEL_WIDTH_40; - cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER; - } - - set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); - } - } - - // to update channel value in beacon - pnetwork->Configuration.DSConfig = cur_channel; - p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _DSSET_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs))); - if(p && ie_len>0) - *(p + 2) = cur_channel; - - if(pht_info) - pht_info->primary_channel = cur_channel; - } - } - else - { - set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode); - } - - DBG_871X("CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset); - - if((channel <= 14 && cur_channel >= 36) || - (channel >= 36 && cur_channel <= 14)) - { - change_band = true; - } - - pmlmeext->cur_channel = cur_channel; - pmlmeext->cur_bwmode = cur_bwmode; - pmlmeext->cur_ch_offset = cur_ch_offset; - - if(change_band == true) - dc_change_band(padapter, pnetwork); - - DBG_871X("dualmac_concurrent_ap_set_channel_bwmode <==\n"); -} - -void dc_resume_xmit(_adapter *padapter) -{ - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - DBG_871X("dc_resume_xmit, resume pbuddy_adapter Tx\n"); - rtw_os_xmit_schedule(pbuddy_adapter); - } -} - -u8 dc_check_xmit(struct adapter *padapter) -{ - struct adapter *pbuddy_adapter = padapter->pbuddy_adapter; - struct mlme_priv *pbuddy_mlmepriv = NULL; - - if(pbuddy_adapter != NULL && - padapter->DualMacConcurrent == true) - { - pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv); - if (check_fwstate(pbuddy_mlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == true) - { - DBG_871X("dc_check_xmit pbuddy_adapter is under survey or under linking\n"); - return false; - } - } - - return true; -} -#endif - int rtw_chk_start_clnt_join(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset) { struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index cd768e5..6791f63 100755 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -438,12 +438,6 @@ void SelectChannel(struct adapter *padapter, unsigned char channel) { struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; -#ifdef CONFIG_DUALMAC_CONCURRENT - //saved channel info - rtw_set_oper_ch(padapter, channel); - dc_SelectChannel(padapter, channel); -#else //CONFIG_DUALMAC_CONCURRENT - _enter_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); //saved channel info @@ -452,21 +446,12 @@ void SelectChannel(struct adapter *padapter, unsigned char channel) rtw_hal_set_chan(padapter, channel); _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); - -#endif // CONFIG_DUALMAC_CONCURRENT } void SetBWMode(struct adapter *padapter, unsigned short bwmode, unsigned char channel_offset) { struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; -#ifdef CONFIG_DUALMAC_CONCURRENT - //saved bw info - rtw_set_oper_bw(padapter, bwmode); - rtw_set_oper_choffset(padapter, channel_offset); - dc_SetBWMode(padapter, bwmode, channel_offset); -#else //CONFIG_DUALMAC_CONCURRENT - _enter_critical_mutex(&(adapter_to_dvobj(padapter)->setbw_mutex), NULL); //saved bw info @@ -476,8 +461,6 @@ void SetBWMode(struct adapter *padapter, unsigned short bwmode, unsigned char ch rtw_hal_set_bwmode(padapter, (HT_CHANNEL_WIDTH)bwmode, channel_offset); _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setbw_mutex), NULL); - -#endif // CONFIG_DUALMAC_CONCURRENT } void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode) @@ -511,14 +494,6 @@ void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigne } //set Channel -#ifdef CONFIG_DUALMAC_CONCURRENT - //saved channel/bw info - rtw_set_oper_ch(padapter, channel); - rtw_set_oper_bw(padapter, bwmode); - rtw_set_oper_choffset(padapter, channel_offset); - dc_SelectChannel(padapter, center_ch);// set center channel -#else //CONFIG_DUALMAC_CONCURRENT - _enter_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); //saved channel/bw info @@ -530,11 +505,7 @@ void set_channel_bwmode(struct adapter *padapter, unsigned char channel, unsigne _exit_critical_mutex(&(adapter_to_dvobj(padapter)->setch_mutex), NULL); -#endif // CONFIG_DUALMAC_CONCURRENT - - SetBWMode(padapter, bwmode, channel_offset); - } int get_bsstype(unsigned short capability) @@ -2252,21 +2223,6 @@ int rtw_handle_dualmac(struct adapter *adapter, bool init) pbuddy_padapter = NULL; DBG_871X("%s(): pbuddy_padapter exist, Exchange Information\n",__FUNCTION__); } -#ifdef CONFIG_DUALMAC_CONCURRENT - if (dvobj->InterfaceNumber == 0) { - //set adapter_type/iface type - adapter->isprimary = true; - adapter->adapter_type = PRIMARY_struct adapter; - adapter->iface_type = IFACE_PORT0; - DBG_871X("%s(): PRIMARY_struct adapter\n",__FUNCTION__); - } else { - //set adapter_type/iface type - adapter->isprimary = false; - adapter->adapter_type = SECONDARY_struct adapter; - adapter->iface_type = IFACE_PORT1; - DBG_871X("%s(): SECONDARY_struct adapter\n",__FUNCTION__); - } -#endif }else { pbuddy_padapter = NULL; } diff --git a/hal/hal_intf.c b/hal/hal_intf.c index a1267db..cf73a68 100755 --- a/hal/hal_intf.c +++ b/hal/hal_intf.c @@ -99,37 +99,6 @@ uint rtw_hal_init(struct adapter *padapter) struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); int i; -#ifdef CONFIG_DUALMAC_CONCURRENT - if(padapter->hw_init_completed == true) - { - DBG_871X("rtw_hal_init: hw_init_completed == true\n"); - return status; - } - - // before init mac0, driver must init mac1 first to avoid usb rx error. - if((padapter->pbuddy_adapter != NULL) && (padapter->DualMacConcurrent == true) - && (padapter->adapter_type == PRIMARY_ADAPTER)) - { - if(padapter->pbuddy_adapter->hw_init_completed == true) - { - DBG_871X("rtw_hal_init: pbuddy_adapter hw_init_completed == true\n"); - } - else - { - status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter); - if(status == _SUCCESS){ - padapter->pbuddy_adapter->hw_init_completed = true; - } - else{ - padapter->pbuddy_adapter->hw_init_completed = false; - RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail(pbuddy_adapter)\n")); - DBG_871X("rtw_hal_init: hal__init fail(pbuddy_adapter)\n"); - return status; - } - } - } -#endif - status = padapter->HalFunc.hal_init(padapter); if(status == _SUCCESS){ diff --git a/include/drv_types.h b/include/drv_types.h index 151c966..9e270c3 100755 --- a/include/drv_types.h +++ b/include/drv_types.h @@ -190,10 +190,6 @@ struct registry_priv u8 fw_iol; //enable iol without other concern #endif -#ifdef CONFIG_DUALMAC_CONCURRENT - u8 dmsp;//0:disable,1:enable -#endif - #ifdef CONFIG_80211D u8 enable80211d; #endif @@ -482,25 +478,11 @@ struct adapter { struct adapter *pbuddy_adapter; -#if defined(CONFIG_DUALMAC_CONCURRENT) - u8 isprimary; //is primary adapter or not - //notes: - // if isprimary is true, the adapter_type value is 0, iface_id is IFACE_ID0 for PRIMARY_ADAPTER - // if isprimary is false, the adapter_type value is 1, iface_id is IFACE_ID1 for SECONDARY_ADAPTER - // refer to iface_id if iface_nums>2 and isprimary is false and the adapter_type value is 0xff. - u8 adapter_type;//used only in two inteface case(PRIMARY_ADAPTER and SECONDARY_ADAPTER) . - u8 iface_type; //interface port type, it depends on HW port -#endif - //extend to support multi interface //IFACE_ID0 is equals to PRIMARY_ADAPTER //IFACE_ID1 is equals to SECONDARY_ADAPTER u8 iface_id; -#ifdef CONFIG_DUALMAC_CONCURRENT - u8 DualMacConcurrent; // 1: DMSP 0:DMDP -#endif - #ifdef CONFIG_BR_EXT _lock br_ext_lock; //unsigned int macclone_completed; diff --git a/include/rtw_mlme_ext.h b/include/rtw_mlme_ext.h index b567151..5331780 100755 --- a/include/rtw_mlme_ext.h +++ b/include/rtw_mlme_ext.h @@ -765,22 +765,6 @@ extern void process_addba_req(struct adapter *padapter, u8 *paddba_req, u8 *addr extern void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len); extern void correct_TSF(struct adapter *padapter, struct mlme_ext_priv *pmlmeext); - -#ifdef CONFIG_DUALMAC_CONCURRENT -void dc_SelectChannel(struct adapter *padapter, unsigned char channel); -void dc_SetBWMode(struct adapter *padapter, unsigned short bwmode, unsigned char channel_offset); -void dc_set_channel_bwmode_disconnect(struct adapter *padapter); -u8 dc_handle_join_request(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset); -void dc_handle_join_done(struct adapter *padapter, u8 join_res); -sint dc_check_fwstate(struct adapter *padapter, sint fw_state); -u8 dc_handle_site_survey(struct adapter *padapter); -void dc_report_survey_event(struct adapter *padapter, union recv_frame *precv_frame); -void dc_set_channel_bwmode_survey_done(struct adapter *padapter); -void dc_set_ap_channel_bandwidth(struct adapter *padapter, u8 channel, u8 channel_offset, u8 bwmode); -void dc_resume_xmit(struct adapter *padapter); -u8 dc_check_xmit(struct adapter *padapter); -#endif - int rtw_chk_start_clnt_join(struct adapter *padapter, u8 *ch, u8 *bw, u8 *offset); int rtw_get_ch_setting_union(struct adapter *adapter, u8 *ch, u8 *bw, u8 *offset); diff --git a/os_dep/ioctl_linux.c b/os_dep/ioctl_linux.c index 1dd6f2f..602d02d 100755 --- a/os_dep/ioctl_linux.c +++ b/os_dep/ioctl_linux.c @@ -1725,15 +1725,6 @@ static int rtw_wx_set_wap(struct net_device *dev, struct wlan_network *pnetwork = NULL; NDIS_802_11_AUTHENTICATION_MODE authmode; -#ifdef CONFIG_DUALMAC_CONCURRENT - if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== true) - { - DBG_871X("set bssid, but buddy_intf is under scanning or linking\n"); - ret = -EINVAL; - goto exit; - } -#endif - if(_FAIL == rtw_pwr_wakeup(padapter)) { ret= -1; @@ -1940,14 +1931,6 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, } #endif -#ifdef CONFIG_DUALMAC_CONCURRENT - if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== true) - { - indicate_wx_scan_complete_event(padapter); - goto exit; - } -#endif - // Mareded by Albert 20101103 // For the DMP WiFi Display project, the driver won't to scan because // the pmlmepriv->scan_interval is always equal to 3. @@ -2232,15 +2215,6 @@ static int rtw_wx_set_essid(struct net_device *dev, DBG_871X("DBG_IOCTL %s:%d\n",__FUNCTION__, __LINE__); #endif -#ifdef CONFIG_DUALMAC_CONCURRENT - if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== true) - { - DBG_871X("set bssid, but buddy_intf is under scanning or linking\n"); - ret = -EINVAL; - goto exit; - } -#endif - RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_, ("+rtw_wx_set_essid: fw_state=0x%08x\n", get_fwstate(pmlmepriv))); if(_FAIL == rtw_pwr_wakeup(padapter)) diff --git a/os_dep/os_intfs.c b/os_dep/os_intfs.c index f83e29f..9c6156b 100755 --- a/os_dep/os_intfs.c +++ b/os_dep/os_intfs.c @@ -163,10 +163,6 @@ static int rtw_hw_wps_pbc = 1; int rtw_mc2u_disable = 0; #endif // CONFIG_TX_MCAST2UNI -#ifdef CONFIG_DUALMAC_CONCURRENT -static int rtw_dmsp = 0; -#endif // CONFIG_DUALMAC_CONCURRENT - #ifdef CONFIG_80211D static int rtw_80211d = 0; #endif @@ -271,10 +267,6 @@ MODULE_PARM_DESC(rtw_fw_file_path, "The path of fw image"); module_param(rtw_mc2u_disable, int, 0644); #endif // CONFIG_TX_MCAST2UNI -#ifdef CONFIG_DUALMAC_CONCURRENT -module_param(rtw_dmsp, int, 0644); -#endif // CONFIG_DUALMAC_CONCURRENT - #ifdef CONFIG_80211D module_param(rtw_80211d, int, 0644); MODULE_PARM_DESC(rtw_80211d, "Enable 802.11d mechanism"); @@ -425,10 +417,6 @@ static uint loadparam( struct adapter *padapter, _nic_hdl pnetdev) registry_par->fw_iol = rtw_fw_iol; #endif -#ifdef CONFIG_DUALMAC_CONCURRENT - registry_par->dmsp= (u8)rtw_dmsp; -#endif - #ifdef CONFIG_80211D registry_par->enable80211d = (u8)rtw_80211d; #endif diff --git a/os_dep/usb_intf.c b/os_dep/usb_intf.c index 78db79b..92ba7d5 100755 --- a/os_dep/usb_intf.c +++ b/os_dep/usb_intf.c @@ -1245,17 +1245,6 @@ static struct adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, dvobj->padapters[dvobj->iface_nums++] = padapter; padapter->iface_id = IFACE_ID0; -#if defined(CONFIG_DUALMAC_CONCURRENT) - //set adapter_type/iface type for primary padapter - padapter->isprimary = true; - padapter->adapter_type = PRIMARY_ADAPTER; - #ifndef CONFIG_HWPORT_SWAP - padapter->iface_type = IFACE_PORT0; - #else - padapter->iface_type = IFACE_PORT1; - #endif -#endif - #ifndef RTW_DVOBJ_CHIP_HW_TYPE //step 1-1., decide the chip_type via vid/pid padapter->interface_type = RTW_USB;