mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-08 14:33:05 +00:00
rtl8188eu: Remove code selected when CONFIG_CONCURRENT_MODE is defined
This parameter can only be set for RTL8192DU. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
1305b2dc4b
commit
020675ff42
28 changed files with 78 additions and 3708 deletions
|
@ -1353,14 +1353,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param
|
|||
DBG_871X(" ~~~~set sta key:groupkey\n");
|
||||
|
||||
padapter->securitypriv.dot118021XGrpKeyid = param->u.crypt.idx;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (padapter->adapter_type == PRIMARY_ADAPTER)
|
||||
rtw_set_key(padapter,&padapter->securitypriv,param->u.crypt.idx, 1,true);
|
||||
else
|
||||
DBG_871X_LEVEL(_drv_always_, "second interface do not set cam.\n");
|
||||
#else
|
||||
rtw_set_key(padapter,&padapter->securitypriv,param->u.crypt.idx, 1,true);
|
||||
#endif
|
||||
}
|
||||
#ifdef CONFIG_IEEE80211W
|
||||
else if(strcmp(param->u.crypt.alg, "BIP") == 0)
|
||||
|
@ -1772,9 +1765,6 @@ exit:
|
|||
}
|
||||
|
||||
extern int netdev_open(struct net_device *pnetdev);
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
extern int netdev_if2_open(struct net_device *pnetdev);
|
||||
#endif
|
||||
|
||||
/*
|
||||
enum nl80211_iftype {
|
||||
|
@ -1818,23 +1808,10 @@ static int cfg80211_rtw_change_iface(struct wiphy *wiphy,
|
|||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(padapter->adapter_type == SECONDARY_ADAPTER)
|
||||
{
|
||||
DBG_871X(FUNC_NDEV_FMT" call netdev_if2_open\n", FUNC_NDEV_ARG(ndev));
|
||||
if(netdev_if2_open(ndev) != 0) {
|
||||
ret= -EPERM;
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
else if(padapter->adapter_type == PRIMARY_ADAPTER)
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
{
|
||||
DBG_871X(FUNC_NDEV_FMT" call netdev_open\n", FUNC_NDEV_ARG(ndev));
|
||||
if(netdev_open(ndev) != 0) {
|
||||
ret= -EPERM;
|
||||
goto exit;
|
||||
}
|
||||
DBG_871X(FUNC_NDEV_FMT" call netdev_open\n", FUNC_NDEV_ARG(ndev));
|
||||
if(netdev_open(ndev) != 0) {
|
||||
ret= -EPERM;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if(_FAIL == rtw_pwr_wakeup(padapter)) {
|
||||
|
@ -2142,21 +2119,8 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
|
|||
struct cfg80211_ssid *ssids = request->ssids;
|
||||
int social_channel = 0, j = 0;
|
||||
bool need_indicate_scan_done = false;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
PADAPTER pbuddy_adapter = NULL;
|
||||
struct mlme_priv *pbuddy_mlmepriv = NULL;
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
|
||||
//#ifdef CONFIG_DEBUG_CFG80211
|
||||
DBG_871X(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter));
|
||||
//#endif
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (padapter->pbuddy_adapter) {
|
||||
pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv);
|
||||
}
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
|
||||
_enter_critical_bh(&pwdev_priv->scan_req_lock, &irqL);
|
||||
pwdev_priv->scan_request = request;
|
||||
|
@ -2249,31 +2213,6 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy
|
|||
goto check_need_indicate_scan_done;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(pbuddy_mlmepriv && (pbuddy_mlmepriv->LinkDetectInfo.bBusyTraffic == true))
|
||||
{
|
||||
DBG_8192C("%s, bBusyTraffic == true at buddy_intf\n", __func__);
|
||||
need_indicate_scan_done = true;
|
||||
goto check_need_indicate_scan_done;
|
||||
}
|
||||
|
||||
if (check_buddy_fwstate(padapter,
|
||||
_FW_UNDER_SURVEY|_FW_UNDER_LINKING|WIFI_UNDER_WPS) == true)
|
||||
{
|
||||
if(check_buddy_fwstate(padapter, _FW_UNDER_SURVEY))
|
||||
{
|
||||
DBG_8192C("scanning_via_buddy_intf\n");
|
||||
pmlmepriv->scanning_via_buddy_intf = true;
|
||||
}
|
||||
|
||||
DBG_8192C("buddy_intf's mlme state:0x%x\n", pbuddy_mlmepriv->fw_state);
|
||||
|
||||
need_indicate_scan_done = true;
|
||||
goto check_need_indicate_scan_done;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
if( pwdinfo->driver_interface == DRIVER_CFG80211 )
|
||||
{
|
||||
|
@ -2756,17 +2695,6 @@ static int cfg80211_rtw_join_ibss(struct wiphy *wiphy, struct net_device *ndev,
|
|||
goto exit;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_buddy_fwstate(padapter, _FW_UNDER_LINKING) == true) {
|
||||
DBG_8192C("%s, but buddy_intf is under linking\n", __FUNCTION__);
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY) == true) {
|
||||
rtw_scan_abort(padapter->pbuddy_adapter);
|
||||
}
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
|
||||
if (!params->ssid || !params->ssid_len)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
|
@ -2869,17 +2797,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev,
|
|||
goto exit;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_buddy_fwstate(padapter, _FW_UNDER_LINKING) == true) {
|
||||
DBG_8192C("%s, but buddy_intf is under linking\n", __FUNCTION__);
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY) == true) {
|
||||
rtw_scan_abort(padapter->pbuddy_adapter);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!sme->ssid || !sme->ssid_len)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
|
@ -4459,10 +4376,6 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
|
|||
|
||||
_cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
ATOMIC_SET(&pwdev_priv->ro_ch_to, 1);
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
|
||||
p2p_protocol_wk_hdl(padapter, P2P_RO_CH_WK);
|
||||
}
|
||||
|
||||
|
@ -4480,12 +4393,6 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
|
|||
pcfg80211_wdinfo->remain_on_ch_cookie= *cookie;
|
||||
|
||||
rtw_scan_abort(padapter);
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(rtw_buddy_adapter_up(padapter))
|
||||
rtw_scan_abort(padapter->pbuddy_adapter);
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
|
||||
//if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT) && !rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO))
|
||||
if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE))
|
||||
{
|
||||
rtw_p2p_enable(padapter, P2P_ROLE_DEVICE);
|
||||
|
@ -4508,79 +4415,29 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy,
|
|||
duration = duration*3;//extend from exper.
|
||||
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(check_buddy_fwstate(padapter, _FW_LINKED) &&
|
||||
(duration<pwdinfo->ext_listen_interval))
|
||||
{
|
||||
duration = duration + pwdinfo->ext_listen_interval;
|
||||
}
|
||||
#endif
|
||||
|
||||
pcfg80211_wdinfo->restore_channel = rtw_get_oper_ch(padapter);
|
||||
|
||||
if(rtw_ch_set_search_ch(pmlmeext->channel_set, remain_ch) >= 0) {
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_buddy_fwstate(padapter, _FW_LINKED ) )
|
||||
{
|
||||
PADAPTER pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
|
||||
if(remain_ch != pbuddy_mlmeext->cur_channel)
|
||||
{
|
||||
if(ATOMIC_READ(&pwdev_priv->switch_ch_to)==1 ||
|
||||
(remain_ch != pmlmeext->cur_channel))
|
||||
{
|
||||
DBG_8192C("%s, issue nulldata pwrbit=1\n", __func__);
|
||||
issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500);
|
||||
|
||||
ATOMIC_SET(&pwdev_priv->switch_ch_to, 0);
|
||||
|
||||
DBG_8192C("%s, set switch ch timer, duration=%d\n", __func__, duration-pwdinfo->ext_listen_interval);
|
||||
_set_timer(&pwdinfo->ap_p2p_switch_timer, duration-pwdinfo->ext_listen_interval);
|
||||
}
|
||||
}
|
||||
|
||||
if(remain_ch != rtw_get_oper_ch(padapter) )
|
||||
ready_on_channel = true;
|
||||
//pmlmeext->cur_channel = remain_ch;
|
||||
//set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}else
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
if(remain_ch != rtw_get_oper_ch(padapter) )
|
||||
{
|
||||
ready_on_channel = true;
|
||||
//pmlmeext->cur_channel = remain_ch;
|
||||
//set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}
|
||||
} else {
|
||||
DBG_871X("%s remain_ch:%u not in channel plan!!!!\n", __FUNCTION__, remain_ch);
|
||||
}
|
||||
|
||||
|
||||
//call this after other things have been done
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(ATOMIC_READ(&pwdev_priv->ro_ch_to)==1 ||
|
||||
(remain_ch != rtw_get_oper_ch(padapter)))
|
||||
{
|
||||
u8 co_channel = 0xff;
|
||||
ATOMIC_SET(&pwdev_priv->ro_ch_to, 0);
|
||||
#endif
|
||||
|
||||
if(ready_on_channel == true)
|
||||
if(ready_on_channel == true) {
|
||||
if ( !check_fwstate(&padapter->mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
if ( !check_fwstate(&padapter->mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
pmlmeext->cur_channel = remain_ch;
|
||||
pmlmeext->cur_channel = remain_ch;
|
||||
|
||||
|
||||
set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}
|
||||
set_channel_bwmode(padapter, remain_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}
|
||||
DBG_8192C("%s, set ro ch timer, duration=%d\n", __func__, duration);
|
||||
_set_timer( &pcfg80211_wdinfo->remain_on_ch_timer, duration);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
}
|
||||
#endif
|
||||
DBG_8192C("%s, set ro ch timer, duration=%d\n", __func__, duration);
|
||||
_set_timer( &pcfg80211_wdinfo->remain_on_ch_timer, duration);
|
||||
|
||||
rtw_cfg80211_ready_on_channel(padapter, *cookie, channel, channel_type, duration, GFP_KERNEL);
|
||||
|
||||
|
@ -4610,9 +4467,6 @@ static s32 cfg80211_rtw_cancel_remain_on_channel(struct wiphy *wiphy,
|
|||
if (pcfg80211_wdinfo->is_ro_ch == true) {
|
||||
DBG_8192C("%s, cancel ro ch timer\n", __func__);
|
||||
_cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer);
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
ATOMIC_SET(&pwdev_priv->ro_ch_to, 1);
|
||||
#endif
|
||||
p2p_protocol_wk_hdl(padapter, P2P_RO_CH_WK);
|
||||
}
|
||||
|
||||
|
@ -4652,68 +4506,7 @@ static int _cfg80211_rtw_mgmt_tx(struct adapter *padapter, u8 tx_ch, const u8 *b
|
|||
rtw_set_scan_deny(padapter, 1000);
|
||||
|
||||
rtw_scan_abort(padapter);
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(rtw_buddy_adapter_up(padapter))
|
||||
rtw_scan_abort(padapter->pbuddy_adapter);
|
||||
#endif /* CONFIG_CONCURRENT_MODE */
|
||||
|
||||
if (padapter->cfg80211_wdinfo.is_ro_ch == true) {
|
||||
//DBG_8192C("%s, cancel ro ch timer\n", __func__);
|
||||
//_cancel_timer_ex(&padapter->cfg80211_wdinfo.remain_on_ch_timer);
|
||||
//padapter->cfg80211_wdinfo.is_ro_ch = false;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED ))
|
||||
{
|
||||
DBG_8192C("%s, extend ro ch time\n", __func__);
|
||||
_set_timer( &padapter->cfg80211_wdinfo.remain_on_ch_timer, pwdinfo->ext_listen_period);
|
||||
}
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_buddy_fwstate(padapter, _FW_LINKED )) {
|
||||
u8 co_channel=0xff;
|
||||
PADAPTER pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
|
||||
co_channel = rtw_get_oper_ch(padapter);
|
||||
|
||||
if (tx_ch != pbuddy_mlmeext->cur_channel) {
|
||||
|
||||
u16 ext_listen_period;
|
||||
|
||||
if (ATOMIC_READ(&pwdev_priv->switch_ch_to)==1) {
|
||||
DBG_8192C("%s, issue nulldata pwrbit=1\n", __func__);
|
||||
issue_nulldata(padapter->pbuddy_adapter, NULL, 1, 3, 500);
|
||||
|
||||
ATOMIC_SET(&pwdev_priv->switch_ch_to, 0);
|
||||
|
||||
//DBG_8192C("%s, set switch ch timer, period=%d\n", __func__, pwdinfo->ext_listen_period);
|
||||
//_set_timer(&pwdinfo->ap_p2p_switch_timer, pwdinfo->ext_listen_period);
|
||||
}
|
||||
|
||||
if (check_fwstate(&padapter->mlmepriv, _FW_LINKED ))
|
||||
{
|
||||
ext_listen_period = 500;// 500ms
|
||||
}
|
||||
else
|
||||
{
|
||||
ext_listen_period = pwdinfo->ext_listen_period;
|
||||
}
|
||||
|
||||
DBG_8192C("%s, set switch ch timer, period=%d\n", __func__, ext_listen_period);
|
||||
_set_timer(&pwdinfo->ap_p2p_switch_timer, ext_listen_period);
|
||||
|
||||
}
|
||||
|
||||
if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED ))
|
||||
pmlmeext->cur_channel = tx_ch;
|
||||
|
||||
if (tx_ch != co_channel)
|
||||
set_channel_bwmode(padapter, tx_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}else
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
//if (tx_ch != pmlmeext->cur_channel) {
|
||||
if(tx_ch != rtw_get_oper_ch(padapter)) {
|
||||
if (!check_fwstate(&padapter->mlmepriv, _FW_LINKED ))
|
||||
pmlmeext->cur_channel = tx_ch;
|
||||
|
@ -5591,11 +5384,6 @@ int rtw_wdev_alloc(struct adapter *padapter, struct device *dev)
|
|||
else
|
||||
pwdev_priv->power_mgmt = false;
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
ATOMIC_SET(&pwdev_priv->switch_ch_to, 1);
|
||||
ATOMIC_SET(&pwdev_priv->ro_ch_to, 1);
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
|
||||
rtw_mfree((u8*)wdev, sizeof(struct wireless_dev));
|
||||
|
|
|
@ -1725,28 +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_CONCURRENT_MODE
|
||||
if(padapter->iface_type > PRIMARY_IFACE)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_buddy_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
|
||||
|
||||
#ifdef CONFIG_DUALMAC_CONCURRENT
|
||||
if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== true)
|
||||
{
|
||||
|
@ -1934,12 +1912,7 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
|
|||
// When Busy Traffic, driver do not site survey. So driver return success.
|
||||
// wpa_supplicant will not issue SIOCSIWSCAN cmd again after scan timeout.
|
||||
// modify by thomas 2011-02-22.
|
||||
if (pmlmepriv->LinkDetectInfo.bBusyTraffic == true
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
|| rtw_get_buddy_bBusyTraffic(padapter) == true
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
)
|
||||
{
|
||||
if (pmlmepriv->LinkDetectInfo.bBusyTraffic == true) {
|
||||
indicate_wx_scan_complete_event(padapter);
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1967,22 +1940,6 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_buddy_fwstate(padapter,
|
||||
_FW_UNDER_SURVEY|_FW_UNDER_LINKING|WIFI_UNDER_WPS) == true)
|
||||
{
|
||||
if(check_buddy_fwstate(padapter, _FW_UNDER_SURVEY))
|
||||
{
|
||||
DBG_871X("scanning_via_buddy_intf\n");
|
||||
pmlmepriv->scanning_via_buddy_intf = true;
|
||||
}
|
||||
|
||||
indicate_wx_scan_complete_event(padapter);
|
||||
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DUALMAC_CONCURRENT
|
||||
if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== true)
|
||||
{
|
||||
|
@ -2164,15 +2121,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a,
|
|||
DBG_871X("DBG_IOCTL %s:%d\n",__FUNCTION__, __LINE__);
|
||||
#endif
|
||||
|
||||
/*
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(padapter->iface_type > PRIMARY_IFACE)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
if(adapter_to_pwrctl(padapter)->brfoffbyhw && padapter->bDriverStopped)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
|
@ -2199,21 +2147,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a,
|
|||
}
|
||||
#endif //CONFIG_P2P
|
||||
|
||||
/*
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(pmlmepriv->scanning_via_buddy_intf == true)
|
||||
{
|
||||
pmlmepriv->scanning_via_buddy_intf = false;//reset
|
||||
|
||||
// change pointers to buddy interface
|
||||
padapter = pbuddy_adapter;
|
||||
pmlmepriv = pbuddy_mlmepriv;
|
||||
queue = &(pbuddy_mlmepriv->scanned_queue);
|
||||
|
||||
}
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
*/
|
||||
#if 1 // Wireless Extension use EAGAIN to try
|
||||
wait_status = _FW_UNDER_SURVEY
|
||||
#ifndef CONFIG_ANDROID
|
||||
| _FW_UNDER_LINKING
|
||||
|
@ -2224,31 +2157,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a,
|
|||
{
|
||||
return -EAGAIN;
|
||||
}
|
||||
#else
|
||||
wait_status = _FW_UNDER_SURVEY
|
||||
#ifndef CONFIG_ANDROID
|
||||
|_FW_UNDER_LINKING
|
||||
#endif
|
||||
;
|
||||
|
||||
#ifdef CONFIG_DUALMAC_CONCURRENT
|
||||
while(dc_check_fwstate(padapter, wait_status)== true)
|
||||
{
|
||||
rtw_msleep_os(30);
|
||||
cnt++;
|
||||
if(cnt > wait_for_surveydone )
|
||||
break;
|
||||
}
|
||||
#endif // CONFIG_DUALMAC_CONCURRENT
|
||||
|
||||
while(check_fwstate(pmlmepriv, wait_status) == true)
|
||||
{
|
||||
rtw_msleep_os(30);
|
||||
cnt++;
|
||||
if(cnt > wait_for_surveydone )
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
|
||||
|
@ -2324,27 +2232,6 @@ static int rtw_wx_set_essid(struct net_device *dev,
|
|||
DBG_871X("DBG_IOCTL %s:%d\n",__FUNCTION__, __LINE__);
|
||||
#endif
|
||||
|
||||
/*
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(padapter->iface_type > PRIMARY_IFACE)
|
||||
{
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_buddy_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == true)
|
||||
{
|
||||
DBG_871X("set ssid, but buddy_intf is under scanning or linking\n");
|
||||
|
||||
ret = -EINVAL;
|
||||
|
||||
goto exit;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DUALMAC_CONCURRENT
|
||||
if (dc_check_fwstate(padapter, _FW_UNDER_SURVEY|_FW_UNDER_LINKING)== true)
|
||||
{
|
||||
|
@ -3999,33 +3886,7 @@ static int rtw_wext_p2p_enable(struct net_device *dev,
|
|||
pwdinfo->operating_channel = pwdinfo->listen_channel;
|
||||
ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
||||
bwmode = HT_CHANNEL_WIDTH_20;
|
||||
}
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
else if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_IDLE))
|
||||
{
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
//struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
|
||||
_set_timer( &pwdinfo->ap_p2p_switch_timer, pwdinfo->ext_listen_interval );
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
pwdinfo->operating_channel = pbuddy_mlmeext->cur_channel;
|
||||
// How about the ch_offset and bwmode ??
|
||||
}
|
||||
else
|
||||
{
|
||||
pwdinfo->operating_channel = pwdinfo->listen_channel;
|
||||
}
|
||||
|
||||
channel = pbuddy_mlmeext->cur_channel;
|
||||
ch_offset = pbuddy_mlmeext->cur_ch_offset;
|
||||
bwmode = pbuddy_mlmeext->cur_bwmode;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
} else {
|
||||
pwdinfo->operating_channel = pmlmeext->cur_channel;
|
||||
|
||||
channel = pwdinfo->operating_channel;
|
||||
|
@ -4237,12 +4098,6 @@ static int rtw_p2p_get_status(struct net_device *dev,
|
|||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct iw_point *pdata = &wrqu->data;
|
||||
struct wifidirect_info *pwdinfo = &( padapter->wdinfo );
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct wifidirect_info *pbuddy_wdinfo = &pbuddy_adapter->wdinfo;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
#endif
|
||||
|
||||
if ( padapter->bShowGetP2PState )
|
||||
{
|
||||
|
@ -4913,11 +4768,6 @@ static int rtw_p2p_connect(struct net_device *dev,
|
|||
_queue *queue = &(pmlmepriv->scanned_queue);
|
||||
struct wlan_network *pnetwork = NULL;
|
||||
uint uintPeerChannel = 0;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
// Commented by Albert 20110304
|
||||
// The input data contains two informations.
|
||||
|
@ -4967,15 +4817,7 @@ static int rtw_p2p_connect(struct net_device *dev,
|
|||
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
|
||||
if ( uintPeerChannel )
|
||||
{
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
_cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer );
|
||||
}
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
if ( uintPeerChannel ) {
|
||||
_rtw_memset( &pwdinfo->nego_req_info, 0x00, sizeof( struct tx_nego_req_info ) );
|
||||
_rtw_memset( &pwdinfo->groupid_info, 0x00, sizeof( struct group_id_info ) );
|
||||
|
||||
|
@ -4993,34 +4835,10 @@ static int rtw_p2p_connect(struct net_device *dev,
|
|||
rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo));
|
||||
rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
// Have to enter the power saving with the AP
|
||||
set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode);
|
||||
|
||||
issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500);
|
||||
}
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
DBG_871X( "[%s] Start PreTx Procedure!\n", __FUNCTION__ );
|
||||
_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT );
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_CONCURRENT_GO_NEGO_TIMEOUT );
|
||||
}
|
||||
else
|
||||
{
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_GO_NEGO_TIMEOUT );
|
||||
}
|
||||
#else
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_GO_NEGO_TIMEOUT );
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
DBG_871X( "[%s] Not Found in Scanning Queue~\n", __FUNCTION__ );
|
||||
ret = -1;
|
||||
}
|
||||
|
@ -5049,11 +4867,6 @@ static int rtw_p2p_invite_req(struct net_device *dev,
|
|||
uint p2pielen = 0, attr_contentlen = 0;
|
||||
_irqL irqL;
|
||||
struct tx_invite_req_info* pinvite_req_info = &pwdinfo->invitereq_info;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
#ifdef CONFIG_WFD
|
||||
struct wifi_display_info* pwfd_info = pwdinfo->wfd_info;
|
||||
|
@ -5183,15 +4996,7 @@ static int rtw_p2p_invite_req(struct net_device *dev,
|
|||
}
|
||||
#endif // CONFIG_WFD
|
||||
|
||||
if ( uintPeerChannel )
|
||||
{
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
_cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer );
|
||||
}
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
if ( uintPeerChannel ) {
|
||||
// Store the GO's bssid
|
||||
for( jj = 0, kk = 18; jj < ETH_ALEN; jj++, kk += 3 )
|
||||
{
|
||||
|
@ -5207,41 +5012,12 @@ static int rtw_p2p_invite_req(struct net_device *dev,
|
|||
rtw_p2p_set_pre_state(pwdinfo, rtw_p2p_state(pwdinfo));
|
||||
rtw_p2p_set_state(pwdinfo, P2P_STATE_TX_INVITE_REQ);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
// Have to enter the power saving with the AP
|
||||
set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode);
|
||||
|
||||
issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}
|
||||
#else
|
||||
set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
#endif
|
||||
|
||||
_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT );
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_CONCURRENT_INVITE_TIMEOUT );
|
||||
}
|
||||
else
|
||||
{
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_INVITE_TIMEOUT );
|
||||
}
|
||||
#else
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_INVITE_TIMEOUT );
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
DBG_871X( "[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__ );
|
||||
}
|
||||
exit:
|
||||
|
@ -5271,11 +5047,6 @@ static int rtw_p2p_set_persistent(struct net_device *dev,
|
|||
uint p2pielen = 0, attr_contentlen = 0;
|
||||
_irqL irqL;
|
||||
struct tx_invite_req_info* pinvite_req_info = &pwdinfo->invitereq_info;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
#ifdef CONFIG_WFD
|
||||
struct wifi_display_info* pwfd_info = pwdinfo->wfd_info;
|
||||
|
@ -5411,10 +5182,6 @@ static int rtw_p2p_set_pc(struct net_device *dev,
|
|||
uint p2pielen = 0, attr_contentlen = 0;
|
||||
_irqL irqL;
|
||||
uint uintPeerChannel = 0;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
struct wifi_display_info* pwfd_info = pwdinfo->wfd_info;
|
||||
|
||||
// Commented by Albert 20120512
|
||||
|
@ -5713,11 +5480,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev,
|
|||
uint p2pielen = 0, attr_contentlen = 0;
|
||||
_irqL irqL;
|
||||
u8 ie_offset;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
|
||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
#ifdef CONFIG_WFD
|
||||
struct wifi_display_info* pwfd_info = pwdinfo->wfd_info;
|
||||
|
@ -5900,12 +5662,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev,
|
|||
#endif // CONFIG_WFD
|
||||
|
||||
DBG_871X( "[%s] peer channel: %d!\n", __FUNCTION__, uintPeerChannel );
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
_cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer );
|
||||
}
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
_rtw_memcpy( pwdinfo->tx_prov_disc_info.peerIFAddr, pnetwork->network.MacAddress, ETH_ALEN );
|
||||
_rtw_memcpy( pwdinfo->tx_prov_disc_info.peerDevAddr, peerMAC, ETH_ALEN );
|
||||
pwdinfo->tx_prov_disc_info.peer_channel_num[0] = ( u16 ) uintPeerChannel;
|
||||
|
@ -5923,40 +5679,12 @@ static int rtw_p2p_prov_disc(struct net_device *dev,
|
|||
pwdinfo->tx_prov_disc_info.ssid.SsidLength= P2P_WILDCARD_SSID_LEN;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
// Have to enter the power saving with the AP
|
||||
set_channel_bwmode(padapter, pbuddy_mlmeext->cur_channel, pbuddy_mlmeext->cur_ch_offset, pbuddy_mlmeext->cur_bwmode);
|
||||
|
||||
issue_nulldata(pbuddy_adapter, NULL, 1, 3, 500);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}
|
||||
#else
|
||||
set_channel_bwmode(padapter, uintPeerChannel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
#endif
|
||||
|
||||
_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT );
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if ( check_fwstate( pbuddy_mlmepriv, _FW_LINKED ) )
|
||||
{
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_CONCURRENT_PROVISION_TIMEOUT );
|
||||
}
|
||||
else
|
||||
{
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT );
|
||||
}
|
||||
#else
|
||||
_set_timer( &pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT );
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
DBG_871X( "[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__ );
|
||||
#ifdef CONFIG_INTEL_WIDI
|
||||
rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH);
|
||||
|
@ -6305,18 +6033,12 @@ static int rtw_rereg_nd_name(struct net_device *dev,
|
|||
|
||||
if(rereg_priv->old_ifname[0] == 0) {
|
||||
char *reg_ifname;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (padapter->isprimary)
|
||||
reg_ifname = padapter->registrypriv.ifname;
|
||||
else
|
||||
#endif
|
||||
reg_ifname = padapter->registrypriv.if2name;
|
||||
|
||||
strncpy(rereg_priv->old_ifname, reg_ifname, IFNAMSIZ);
|
||||
rereg_priv->old_ifname[IFNAMSIZ-1] = 0;
|
||||
}
|
||||
|
||||
//DBG_871X("%s wrqu->data.length:%d\n", __FUNCTION__, wrqu->data.length);
|
||||
if(wrqu->data.length > IFNAMSIZ)
|
||||
return -EFAULT;
|
||||
|
||||
|
|
|
@ -715,18 +715,11 @@ u32 rtw_start_drv_threads(struct adapter *padapter)
|
|||
_status = _FAIL;
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(padapter->isprimary == true)
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
{
|
||||
padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD");
|
||||
if(IS_ERR(padapter->cmdThread))
|
||||
_status = _FAIL;
|
||||
else
|
||||
_rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); //wait for cmd_thread to run
|
||||
}
|
||||
|
||||
padapter->cmdThread = kthread_run(rtw_cmd_thread, padapter, "RTW_CMD_THREAD");
|
||||
if(IS_ERR(padapter->cmdThread))
|
||||
_status = _FAIL;
|
||||
else
|
||||
_rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); //wait for cmd_thread to run
|
||||
|
||||
#ifdef CONFIG_EVENT_THREAD_MODE
|
||||
padapter->evtThread = kthread_run(event_thread, padapter, "RTW_EVENT_THREAD");
|
||||
|
@ -774,12 +767,7 @@ void rtw_stop_drv_threads (struct adapter *padapter)
|
|||
{
|
||||
RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_stop_drv_threads\n"));
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(padapter->isprimary == true)
|
||||
#endif //CONFIG_CONCURRENT_MODE
|
||||
{
|
||||
rtw_stop_cmd_thread(padapter);
|
||||
}
|
||||
rtw_stop_cmd_thread(padapter);
|
||||
|
||||
#ifdef CONFIG_EVENT_THREAD_MODE
|
||||
_rtw_up_sema(&padapter->evtpriv.evt_notify);
|
||||
|
@ -1137,9 +1125,6 @@ u8 rtw_free_drv_sw(struct adapter *padapter)
|
|||
_cancel_timer_ex( &pwdinfo->find_phase_timer );
|
||||
_cancel_timer_ex( &pwdinfo->restore_p2p_state_timer );
|
||||
_cancel_timer_ex( &pwdinfo->pre_tx_scan_timer);
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
_cancel_timer_ex( &pwdinfo->ap_p2p_switch_timer );
|
||||
#endif // CONFIG_CONCURRENT_MODE
|
||||
rtw_p2p_set_state(pwdinfo, P2P_STATE_NONE);
|
||||
}
|
||||
}
|
||||
|
@ -1207,321 +1192,6 @@ u8 rtw_free_drv_sw(struct adapter *padapter)
|
|||
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
int _netdev_if2_open(struct net_device *pnetdev)
|
||||
{
|
||||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev);
|
||||
struct adapter *primary_padapter = padapter->pbuddy_adapter;
|
||||
|
||||
DBG_871X("+871x_drv - if2_open, bup=%d\n", padapter->bup);
|
||||
|
||||
if(primary_padapter->bup == false || primary_padapter->hw_init_completed == false)
|
||||
{
|
||||
_netdev_open(primary_padapter->pnetdev);
|
||||
}
|
||||
|
||||
if(padapter->bup == false && primary_padapter->bup == true &&
|
||||
primary_padapter->hw_init_completed == true)
|
||||
{
|
||||
int i;
|
||||
|
||||
padapter->bDriverStopped = false;
|
||||
padapter->bSurpriseRemoved = false;
|
||||
padapter->bCardDisableWOHSM = false;
|
||||
|
||||
padapter->bFWReady = primary_padapter->bFWReady;
|
||||
|
||||
//if (init_mlme_ext_priv(padapter) == _FAIL)
|
||||
// goto netdev_if2_open_error;
|
||||
|
||||
|
||||
if(rtw_start_drv_threads(padapter) == _FAIL)
|
||||
{
|
||||
goto netdev_if2_open_error;
|
||||
}
|
||||
|
||||
|
||||
if(padapter->intf_start)
|
||||
{
|
||||
padapter->intf_start(padapter);
|
||||
}
|
||||
|
||||
rtw_proc_init_one(pnetdev);
|
||||
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
rtw_cfg80211_init_wiphy(padapter);
|
||||
#endif
|
||||
|
||||
padapter->bup = true;
|
||||
|
||||
}
|
||||
|
||||
padapter->net_closed = false;
|
||||
|
||||
_set_timer(&padapter->mlmepriv.dynamic_chk_timer, 2000);
|
||||
|
||||
if(!rtw_netif_queue_stopped(pnetdev))
|
||||
rtw_netif_start_queue(pnetdev);
|
||||
else
|
||||
rtw_netif_wake_queue(pnetdev);
|
||||
|
||||
DBG_871X("-871x_drv - if2_open, bup=%d\n", padapter->bup);
|
||||
return 0;
|
||||
|
||||
netdev_if2_open_error:
|
||||
|
||||
padapter->bup = false;
|
||||
|
||||
netif_carrier_off(pnetdev);
|
||||
rtw_netif_stop_queue(pnetdev);
|
||||
|
||||
return (-1);
|
||||
|
||||
}
|
||||
|
||||
int netdev_if2_open(struct net_device *pnetdev)
|
||||
{
|
||||
int ret;
|
||||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev);
|
||||
|
||||
_enter_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL);
|
||||
ret = _netdev_if2_open(pnetdev);
|
||||
_exit_critical_mutex(&(adapter_to_dvobj(padapter)->hw_init_mutex), NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int netdev_if2_close(struct net_device *pnetdev)
|
||||
{
|
||||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(pnetdev);
|
||||
|
||||
padapter->net_closed = true;
|
||||
|
||||
if(pnetdev)
|
||||
{
|
||||
if (!rtw_netif_queue_stopped(pnetdev))
|
||||
rtw_netif_stop_queue(pnetdev);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
rtw_scan_abort(padapter);
|
||||
wdev_to_priv(padapter->rtw_wdev)->bandroid_scan = false;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29))
|
||||
static const struct net_device_ops rtw_netdev_if2_ops = {
|
||||
.ndo_open = netdev_if2_open,
|
||||
.ndo_stop = netdev_if2_close,
|
||||
.ndo_start_xmit = rtw_xmit_entry,
|
||||
.ndo_set_mac_address = rtw_net_set_mac_address,
|
||||
.ndo_get_stats = rtw_net_get_stats,
|
||||
.ndo_do_ioctl = rtw_ioctl,
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||
.ndo_select_queue = rtw_select_queue,
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
struct adapter *rtw_drv_if2_init(struct adapter *primary_padapter, void (*set_intf_ops)(struct _io_ops *pops))
|
||||
{
|
||||
int res = _FAIL;
|
||||
struct net_device *pnetdev = NULL;
|
||||
struct adapter *padapter = NULL;
|
||||
struct dvobj_priv *pdvobjpriv;
|
||||
u8 mac[ETH_ALEN];
|
||||
|
||||
/****** init netdev ******/
|
||||
pnetdev = rtw_init_netdev(NULL);
|
||||
if (!pnetdev)
|
||||
goto error_rtw_drv_if2_init;
|
||||
|
||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,29))
|
||||
DBG_871X("register rtw_netdev_if2_ops to netdev_ops\n");
|
||||
pnetdev->netdev_ops = &rtw_netdev_if2_ops;
|
||||
#else
|
||||
pnetdev->open = netdev_if2_open;
|
||||
pnetdev->stop = netdev_if2_close;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NO_WIRELESS_HANDLERS
|
||||
pnetdev->wireless_handlers = NULL;
|
||||
#endif
|
||||
|
||||
/****** init adapter ******/
|
||||
padapter = rtw_netdev_priv(pnetdev);
|
||||
_rtw_memcpy(padapter, primary_padapter, sizeof(struct adapter));
|
||||
|
||||
//
|
||||
padapter->bup = false;
|
||||
padapter->net_closed = true;
|
||||
padapter->hw_init_completed = false;
|
||||
padapter->dir_dev = NULL;
|
||||
padapter->dir_odm = NULL;
|
||||
|
||||
//set adapter_type/iface type
|
||||
padapter->isprimary = false;
|
||||
padapter->adapter_type = SECONDARY_ADAPTER;
|
||||
padapter->pbuddy_adapter = primary_padapter;
|
||||
padapter->iface_id = IFACE_ID1;
|
||||
#ifndef CONFIG_HWPORT_SWAP //Port0 -> Pri , Port1 -> Sec
|
||||
padapter->iface_type = IFACE_PORT1;
|
||||
#else
|
||||
padapter->iface_type = IFACE_PORT0;
|
||||
#endif //CONFIG_HWPORT_SWAP
|
||||
//
|
||||
padapter->pnetdev = pnetdev;
|
||||
|
||||
/****** setup dvobj ******/
|
||||
pdvobjpriv = adapter_to_dvobj(padapter);
|
||||
pdvobjpriv->if2 = padapter;
|
||||
pdvobjpriv->padapters[pdvobjpriv->iface_nums++] = padapter;
|
||||
|
||||
SET_NETDEV_DEV(pnetdev, dvobj_to_dev(pdvobjpriv));
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
rtw_wdev_alloc(padapter, dvobj_to_dev(pdvobjpriv));
|
||||
#endif //CONFIG_IOCTL_CFG80211
|
||||
|
||||
//set interface_type/chip_type/HardwareType
|
||||
padapter->interface_type = primary_padapter->interface_type;
|
||||
padapter->chip_type = primary_padapter->chip_type;
|
||||
padapter->HardwareType = primary_padapter->HardwareType;
|
||||
|
||||
//step 2. hook HalFunc, allocate HalData
|
||||
hal_set_hal_ops(padapter);
|
||||
|
||||
padapter->HalFunc.inirp_init = NULL;
|
||||
padapter->HalFunc.inirp_deinit = NULL;
|
||||
|
||||
//
|
||||
padapter->intf_start = primary_padapter->intf_start;
|
||||
padapter->intf_stop = primary_padapter->intf_stop;
|
||||
|
||||
//step init_io_priv
|
||||
if ((rtw_init_io_priv(padapter, set_intf_ops)) == _FAIL) {
|
||||
RT_TRACE(_module_hci_intfs_c_,_drv_err_,(" \n Can't init io_reqs\n"));
|
||||
}
|
||||
|
||||
//step read_chip_version
|
||||
rtw_hal_read_chip_version(padapter);
|
||||
|
||||
//step usb endpoint mapping
|
||||
rtw_hal_chip_configure(padapter);
|
||||
|
||||
|
||||
//init drv data
|
||||
if(rtw_init_drv_sw(padapter)!= _SUCCESS)
|
||||
goto error_rtw_drv_if2_init;
|
||||
|
||||
//get mac address from primary_padapter
|
||||
_rtw_memcpy(mac, primary_padapter->eeprompriv.mac_addr, ETH_ALEN);
|
||||
|
||||
if (((mac[0]==0xff) &&(mac[1]==0xff) && (mac[2]==0xff) &&
|
||||
(mac[3]==0xff) && (mac[4]==0xff) &&(mac[5]==0xff)) ||
|
||||
((mac[0]==0x0) && (mac[1]==0x0) && (mac[2]==0x0) &&
|
||||
(mac[3]==0x0) && (mac[4]==0x0) &&(mac[5]==0x0)))
|
||||
{
|
||||
mac[0] = 0x00;
|
||||
mac[1] = 0xe0;
|
||||
mac[2] = 0x4c;
|
||||
mac[3] = 0x87;
|
||||
mac[4] = 0x11;
|
||||
mac[5] = 0x22;
|
||||
}
|
||||
else
|
||||
{
|
||||
//If the BIT1 is 0, the address is universally administered.
|
||||
//If it is 1, the address is locally administered
|
||||
mac[0] |= BIT(1); // locally administered
|
||||
|
||||
}
|
||||
|
||||
_rtw_memcpy(padapter->eeprompriv.mac_addr, mac, ETH_ALEN);
|
||||
rtw_init_wifidirect_addrs(padapter, padapter->eeprompriv.mac_addr, padapter->eeprompriv.mac_addr);
|
||||
|
||||
primary_padapter->pbuddy_adapter = padapter;
|
||||
|
||||
res = _SUCCESS;
|
||||
|
||||
return padapter;
|
||||
|
||||
|
||||
error_rtw_drv_if2_init:
|
||||
|
||||
if(padapter)
|
||||
rtw_free_drv_sw(padapter);
|
||||
|
||||
if (pnetdev)
|
||||
rtw_free_netdev(pnetdev);
|
||||
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
void rtw_drv_if2_free(struct adapter *if2)
|
||||
{
|
||||
struct adapter *padapter = if2;
|
||||
struct net_device *pnetdev = NULL;
|
||||
|
||||
if (padapter == NULL)
|
||||
return;
|
||||
|
||||
pnetdev = padapter->pnetdev;
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
rtw_wdev_free(padapter->rtw_wdev);
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
|
||||
|
||||
rtw_free_drv_sw(padapter);
|
||||
|
||||
rtw_free_netdev(pnetdev);
|
||||
|
||||
}
|
||||
|
||||
void rtw_drv_if2_stop(struct adapter *if2)
|
||||
{
|
||||
struct adapter *padapter = if2;
|
||||
//struct net_device *pnetdev = NULL;
|
||||
|
||||
if (padapter == NULL)
|
||||
return;
|
||||
/*
|
||||
pnetdev = padapter->pnetdev;
|
||||
|
||||
if (pnetdev) {
|
||||
unregister_netdev(pnetdev); //will call netdev_close()
|
||||
rtw_proc_remove_one(pnetdev);
|
||||
}
|
||||
*/
|
||||
rtw_cancel_all_timer(padapter);
|
||||
|
||||
if (padapter->bup == true) {
|
||||
padapter->bDriverStopped = true;
|
||||
#ifdef CONFIG_XMIT_ACK
|
||||
if (padapter->xmitpriv.ack_tx)
|
||||
rtw_ack_tx_done(&padapter->xmitpriv, RTW_SCTX_DONE_DRV_STOP);
|
||||
#endif
|
||||
|
||||
if(padapter->intf_stop)
|
||||
{
|
||||
padapter->intf_stop(padapter);
|
||||
}
|
||||
|
||||
rtw_stop_drv_threads(padapter);
|
||||
|
||||
padapter->bup = false;
|
||||
}
|
||||
/*
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
rtw_wdev_unregister(padapter->rtw_wdev);
|
||||
#endif
|
||||
*/
|
||||
}
|
||||
#endif //end of CONFIG_CONCURRENT_MODE
|
||||
|
||||
#ifdef CONFIG_BR_EXT
|
||||
void netdev_br_init(struct net_device *netdev)
|
||||
{
|
||||
|
@ -1721,14 +1391,6 @@ int _netdev_open(struct net_device *pnetdev)
|
|||
|
||||
netdev_open_normal_process:
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
{
|
||||
struct adapter *sec_adapter = padapter->pbuddy_adapter;
|
||||
if(sec_adapter && (sec_adapter->bup == false))
|
||||
_netdev_if2_open(sec_adapter->pnetdev);
|
||||
}
|
||||
#endif
|
||||
|
||||
RT_TRACE(_module_os_intfs_c_,_drv_info_,("-871x_drv - dev_open\n"));
|
||||
DBG_871X("-871x_drv - drv_open, bup=%d\n", padapter->bup);
|
||||
|
||||
|
@ -2332,18 +1994,8 @@ int rtw_suspend_common(struct adapter *padapter)
|
|||
|
||||
rtw_suspend_free_assoc_resource(padapter);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(rtw_buddy_adapter_up(padapter)){
|
||||
rtw_suspend_free_assoc_resource(padapter->pbuddy_adapter);
|
||||
}
|
||||
#endif
|
||||
rtw_led_control(padapter, LED_CTL_POWER_OFF);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(rtw_buddy_adapter_up(padapter)){
|
||||
rtw_dev_unload(padapter->pbuddy_adapter);
|
||||
}
|
||||
#endif
|
||||
rtw_dev_unload(padapter);
|
||||
|
||||
exit:
|
||||
|
@ -2359,12 +2011,6 @@ int rtw_resume_common(struct adapter *padapter)
|
|||
struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
|
||||
struct mlme_priv *mlmepriv = &padapter->mlmepriv;
|
||||
|
||||
;
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
rtw_reset_drv_sw(padapter->pbuddy_adapter);
|
||||
#endif
|
||||
|
||||
rtw_reset_drv_sw(padapter);
|
||||
pwrpriv->bkeepfwalive = false;
|
||||
|
||||
|
@ -2378,16 +2024,6 @@ int rtw_resume_common(struct adapter *padapter)
|
|||
netif_device_attach(pnetdev);
|
||||
netif_carrier_on(pnetdev);
|
||||
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(rtw_buddy_adapter_up(padapter)){
|
||||
pnetdev = padapter->pbuddy_adapter->pnetdev;
|
||||
|
||||
netif_device_attach(pnetdev);
|
||||
netif_carrier_on(pnetdev);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (check_fwstate(mlmepriv, WIFI_STATION_STATE)) {
|
||||
DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_STATION_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv));
|
||||
|
||||
|
@ -2403,29 +2039,5 @@ int rtw_resume_common(struct adapter *padapter)
|
|||
} else {
|
||||
DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - ???\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if(rtw_buddy_adapter_up(padapter))
|
||||
{
|
||||
mlmepriv = &padapter->pbuddy_adapter->mlmepriv;
|
||||
if (check_fwstate(mlmepriv, WIFI_STATION_STATE)) {
|
||||
DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_STATION_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv));
|
||||
|
||||
#ifdef CONFIG_LAYER2_ROAMING_RESUME
|
||||
rtw_roaming(padapter->pbuddy_adapter, NULL);
|
||||
#endif //CONFIG_LAYER2_ROAMING_RESUME
|
||||
|
||||
} else if (check_fwstate(mlmepriv, WIFI_AP_STATE)) {
|
||||
DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_AP_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv));
|
||||
rtw_ap_restore_network(padapter->pbuddy_adapter);
|
||||
} else if (check_fwstate(mlmepriv, WIFI_ADHOC_STATE)) {
|
||||
DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - WIFI_ADHOC_STATE\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv));
|
||||
} else {
|
||||
DBG_871X(FUNC_ADPT_FMT" fwstate:0x%08x - ???\n", FUNC_ADPT_ARG(padapter), get_fwstate(mlmepriv));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
;
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -1245,7 +1245,7 @@ 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_CONCURRENT_MODE) || defined(CONFIG_DUALMAC_CONCURRENT)
|
||||
#if defined(CONFIG_DUALMAC_CONCURRENT)
|
||||
//set adapter_type/iface type for primary padapter
|
||||
padapter->isprimary = true;
|
||||
padapter->adapter_type = PRIMARY_ADAPTER;
|
||||
|
@ -1606,12 +1606,6 @@ static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device
|
|||
goto free_dvobj;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if((if2 = rtw_drv_if2_init(if1, usb_set_intf_ops)) == NULL) {
|
||||
goto free_if1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_INTEL_PROXIM
|
||||
rtw_sw_export=if1;
|
||||
#endif
|
||||
|
@ -1646,12 +1640,6 @@ static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device
|
|||
status = _SUCCESS;
|
||||
|
||||
free_if2:
|
||||
if(status != _SUCCESS && if2) {
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
rtw_drv_if2_stop(if2);
|
||||
rtw_drv_if2_free(if2);
|
||||
#endif
|
||||
}
|
||||
free_if1:
|
||||
if (status != _SUCCESS && if1) {
|
||||
rtw_usb_if1_deinit(if1);
|
||||
|
@ -1699,16 +1687,8 @@ static void rtw_dev_remove(struct usb_interface *pusb_intf)
|
|||
|
||||
LeaveAllPowerSaveMode(padapter);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
rtw_drv_if2_stop(dvobj->if2);
|
||||
#endif
|
||||
|
||||
rtw_usb_if1_deinit(padapter);
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
rtw_drv_if2_free(dvobj->if2);
|
||||
#endif
|
||||
|
||||
usb_dvobj_deinit(pusb_intf);
|
||||
|
||||
RT_TRACE(_module_hci_intfs_c_,_drv_err_,("-dev_remove()\n"));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue