mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-08 14:33:05 +00:00
rtl8188eu: Remove CONFIG_IOCTL_CFG80211 and others
The other parameters are CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER, CONFIG_SET_SCAN_DENY_TIMER, CONFIG_DRV_ISSUE_PROV_REQ, and RTW_USE_CFG80211_STA_EVENT. None of these are defined. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
7333ca4047
commit
f2c2552bb1
20 changed files with 807 additions and 6584 deletions
|
@ -1970,20 +1970,7 @@ u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reaso
|
|||
psta->state &= ~_FW_LINKED;
|
||||
_exit_critical_bh(&psta->lock, &irqL);
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
if (1) {
|
||||
#ifdef COMPAT_KERNEL_RELEASE
|
||||
rtw_cfg80211_indicate_sta_disassoc(padapter, psta->hwaddr, reason);
|
||||
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER)
|
||||
rtw_cfg80211_indicate_sta_disassoc(padapter, psta->hwaddr, reason);
|
||||
#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) */
|
||||
/* will call rtw_cfg80211_indicate_sta_disassoc() in cmd_thread for old API context */
|
||||
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) && !defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) */
|
||||
} else
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
{
|
||||
rtw_indicate_sta_disassoc_event(padapter, psta);
|
||||
}
|
||||
rtw_indicate_sta_disassoc_event(padapter, psta);
|
||||
|
||||
report_del_sta_event(padapter, psta->hwaddr, reason);
|
||||
|
||||
|
@ -1993,9 +1980,7 @@ u8 ap_free_sta(_adapter *padapter, struct sta_info *psta, bool active, u16 reaso
|
|||
rtw_free_stainfo(padapter, psta);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
|
||||
|
||||
return beacon_updated;
|
||||
|
||||
}
|
||||
|
||||
int rtw_ap_inform_ch_switch (_adapter *padapter, u8 new_ch, u8 ch_offset)
|
||||
|
|
|
@ -136,15 +136,6 @@ void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
|
|||
rtw_free_mlme_ie_data(&pmlmepriv->p2p_go_probe_resp_ie, &pmlmepriv->p2p_go_probe_resp_ie_len);
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->p2p_assoc_req_ie, &pmlmepriv->p2p_assoc_req_ie_len);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_WFD) && defined(CONFIG_IOCTL_CFG80211)
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->wfd_beacon_ie, &pmlmepriv->wfd_beacon_ie_len);
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_req_ie, &pmlmepriv->wfd_probe_req_ie_len);
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->wfd_probe_resp_ie, &pmlmepriv->wfd_probe_resp_ie_len);
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->wfd_go_probe_resp_ie, &pmlmepriv->wfd_go_probe_resp_ie_len);
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->wfd_assoc_req_ie, &pmlmepriv->wfd_assoc_req_ie_len);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void _rtw_free_mlme_priv (struct mlme_priv *pmlmepriv)
|
||||
|
@ -1106,10 +1097,6 @@ _func_enter_;
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
rtw_cfg80211_surveydone_event_callback(adapter);
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
|
||||
_func_exit_;
|
||||
|
||||
}
|
||||
|
@ -1747,38 +1734,6 @@ _func_enter_;
|
|||
psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr);
|
||||
if (psta)
|
||||
{
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
#ifdef COMPAT_KERNEL_RELEASE
|
||||
|
||||
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER)
|
||||
u8 *passoc_req = NULL;
|
||||
u32 assoc_req_len;
|
||||
|
||||
_enter_critical_bh(&psta->lock, &irqL);
|
||||
if (psta->passoc_req && psta->assoc_req_len>0)
|
||||
{
|
||||
passoc_req = rtw_zmalloc(psta->assoc_req_len);
|
||||
if (passoc_req)
|
||||
{
|
||||
assoc_req_len = psta->assoc_req_len;
|
||||
_rtw_memcpy(passoc_req, psta->passoc_req, assoc_req_len);
|
||||
|
||||
_rtw_mfree(psta->passoc_req , psta->assoc_req_len);
|
||||
psta->passoc_req = NULL;
|
||||
psta->assoc_req_len = 0;
|
||||
}
|
||||
}
|
||||
_exit_critical_bh(&psta->lock, &irqL);
|
||||
|
||||
if (passoc_req && assoc_req_len>0)
|
||||
{
|
||||
rtw_cfg80211_indicate_sta_assoc(adapter, passoc_req, assoc_req_len);
|
||||
|
||||
_rtw_mfree(passoc_req, assoc_req_len);
|
||||
}
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) */
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
|
||||
/* bss_cap_update_on_sta_join(adapter, psta); */
|
||||
/* sta_info_update(adapter, psta); */
|
||||
ap_sta_info_defer_update(adapter, psta);
|
||||
|
@ -1881,18 +1836,7 @@ _func_enter_;
|
|||
}
|
||||
|
||||
if (check_fwstate(pmlmepriv, WIFI_AP_STATE))
|
||||
{
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
#ifdef COMPAT_KERNEL_RELEASE
|
||||
|
||||
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER)
|
||||
rtw_cfg80211_indicate_sta_disassoc(adapter, pstadel->macaddr, *(u16*)pstadel->rsvd);
|
||||
#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)) || defined(CONFIG_CFG80211_FORCE_COMPATIBLE_2_6_37_UNDER) */
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
mlmeext_sta_del_event_callback(adapter);
|
||||
|
||||
|
@ -2152,34 +2096,6 @@ void rtw_dynamic_check_timer_handlder(_adapter *adapter)
|
|||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SET_SCAN_DENY_TIMER
|
||||
inline bool rtw_is_scan_deny(_adapter *adapter)
|
||||
{
|
||||
struct mlme_priv *mlmepriv = &adapter->mlmepriv;
|
||||
return (ATOMIC_READ(&mlmepriv->set_scan_deny) != 0) ? true : false;
|
||||
}
|
||||
|
||||
inline void rtw_clear_scan_deny(_adapter *adapter)
|
||||
{
|
||||
struct mlme_priv *mlmepriv = &adapter->mlmepriv;
|
||||
ATOMIC_SET(&mlmepriv->set_scan_deny, 0);
|
||||
if (0)
|
||||
DBG_88E(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(adapter));
|
||||
}
|
||||
|
||||
void rtw_set_scan_deny_timer_hdl(_adapter *adapter)
|
||||
{
|
||||
rtw_clear_scan_deny(adapter);
|
||||
}
|
||||
|
||||
void rtw_set_scan_deny(_adapter *adapter, u32 ms)
|
||||
{
|
||||
struct mlme_priv *mlmepriv = &adapter->mlmepriv;
|
||||
ATOMIC_SET(&mlmepriv->set_scan_deny, 1);
|
||||
_set_timer(&mlmepriv->set_scan_deny_timer, ms);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(IEEE80211_SCAN_RESULT_EXPIRE)
|
||||
#define RTW_SCAN_RESULT_EXPIRE IEEE80211_SCAN_RESULT_EXPIRE/HZ*1000 -1000 /* 3000 -1000 */
|
||||
#else
|
||||
|
|
1859
core/rtw_mlme_ext.c
1859
core/rtw_mlme_ext.c
File diff suppressed because it is too large
Load diff
408
core/rtw_p2p.c
408
core/rtw_p2p.c
|
@ -3183,404 +3183,28 @@ _func_enter_;
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
static void ro_ch_handler( _adapter* padapter )
|
||||
{
|
||||
struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo;
|
||||
struct wifidirect_info *pwdinfo = &padapter->wdinfo;
|
||||
struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
|
||||
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
||||
_func_enter_;
|
||||
|
||||
{
|
||||
if ( pcfg80211_wdinfo->restore_channel != pmlmeext->cur_channel )
|
||||
{
|
||||
if ( !check_fwstate(&padapter->mlmepriv, _FW_LINKED ) )
|
||||
pmlmeext->cur_channel = pcfg80211_wdinfo->restore_channel;
|
||||
|
||||
set_channel_bwmode(padapter, pmlmeext->cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
|
||||
}
|
||||
|
||||
rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo));
|
||||
#ifdef CONFIG_DEBUG_CFG80211
|
||||
DBG_88E("%s, role=%d, p2p_state=%d\n", __func__, rtw_p2p_role(pwdinfo), rtw_p2p_state(pwdinfo));
|
||||
#endif
|
||||
}
|
||||
|
||||
pcfg80211_wdinfo->is_ro_ch = false;
|
||||
|
||||
DBG_88E("cfg80211_remain_on_channel_expired\n");
|
||||
|
||||
cfg80211_remain_on_channel_expired(pcfg80211_wdinfo->remain_on_ch_dev,
|
||||
pcfg80211_wdinfo->remain_on_ch_cookie,
|
||||
&pcfg80211_wdinfo->remain_on_ch_channel,
|
||||
pcfg80211_wdinfo->remain_on_ch_type, GFP_KERNEL);
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
static void ro_ch_timer_process (void *FunctionContext)
|
||||
{
|
||||
_adapter *adapter = (_adapter *)FunctionContext;
|
||||
struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(adapter->rtw_wdev);
|
||||
|
||||
p2p_protocol_wk_cmd( adapter, P2P_RO_CH_WK);
|
||||
}
|
||||
|
||||
static void rtw_cfg80211_adjust_p2pie_channel(_adapter *padapter, const u8 *frame_body, u32 len)
|
||||
{
|
||||
}
|
||||
|
||||
#ifdef CONFIG_WFD
|
||||
void rtw_append_wfd_ie(_adapter *padapter, u8 *buf, u32* len)
|
||||
{
|
||||
unsigned char *frame_body;
|
||||
u8 category, action, OUI_Subtype, dialogToken=0;
|
||||
u32 wfdielen = 0;
|
||||
struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev);
|
||||
|
||||
frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr));
|
||||
category = frame_body[0];
|
||||
|
||||
if (category == RTW_WLAN_CATEGORY_PUBLIC)
|
||||
{
|
||||
action = frame_body[1];
|
||||
if (action == ACT_PUBLIC_VENDOR
|
||||
&& _rtw_memcmp(frame_body+2, P2P_OUI, 4) == true
|
||||
)
|
||||
{
|
||||
OUI_Subtype = frame_body[6];
|
||||
dialogToken = frame_body[7];
|
||||
switch ( OUI_Subtype )/* OUI Subtype */
|
||||
{
|
||||
case P2P_GO_NEGO_REQ:
|
||||
{
|
||||
wfdielen = build_nego_req_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
case P2P_GO_NEGO_RESP:
|
||||
{
|
||||
wfdielen = build_nego_resp_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
case P2P_GO_NEGO_CONF:
|
||||
{
|
||||
wfdielen = build_nego_confirm_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
case P2P_INVIT_REQ:
|
||||
{
|
||||
wfdielen = build_invitation_req_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
case P2P_INVIT_RESP:
|
||||
{
|
||||
wfdielen = build_invitation_resp_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
case P2P_DEVDISC_REQ:
|
||||
break;
|
||||
case P2P_DEVDISC_RESP:
|
||||
|
||||
break;
|
||||
case P2P_PROVISION_DISC_REQ:
|
||||
{
|
||||
wfdielen = build_provdisc_req_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
case P2P_PROVISION_DISC_RESP:
|
||||
{
|
||||
wfdielen = build_provdisc_resp_wfd_ie( &padapter->wdinfo, buf + ( *len ) );
|
||||
(*len) += wfdielen;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else if (category == RTW_WLAN_CATEGORY_P2P)
|
||||
{
|
||||
OUI_Subtype = frame_body[5];
|
||||
dialogToken = frame_body[6];
|
||||
|
||||
#ifdef CONFIG_DEBUG_CFG80211
|
||||
DBG_88E("ACTION_CATEGORY_P2P: OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n",
|
||||
cpu_to_be32( *( ( u32* ) ( frame_body + 1 ) ) ), OUI_Subtype, dialogToken);
|
||||
#endif
|
||||
|
||||
switch (OUI_Subtype)
|
||||
{
|
||||
case P2P_NOTICE_OF_ABSENCE:
|
||||
|
||||
break;
|
||||
case P2P_PRESENCE_REQUEST:
|
||||
|
||||
break;
|
||||
case P2P_PRESENCE_RESPONSE:
|
||||
|
||||
break;
|
||||
case P2P_GO_DISC_REQUEST:
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
DBG_88E("%s, action frame category=%d\n", __func__, category);
|
||||
/* is_p2p_frame = (-1); */
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
int rtw_p2p_check_frames(_adapter *padapter, const u8 *buf, u32 len, u8 tx)
|
||||
{
|
||||
int is_p2p_frame = (-1);
|
||||
unsigned char *frame_body;
|
||||
u8 category, action, OUI_Subtype, dialogToken=0;
|
||||
u8 *p2p_ie = NULL;
|
||||
uint p2p_ielen = 0;
|
||||
struct rtw_wdev_priv *pwdev_priv = wdev_to_priv(padapter->rtw_wdev);
|
||||
|
||||
frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr));
|
||||
category = frame_body[0];
|
||||
/* just for check */
|
||||
if (category == RTW_WLAN_CATEGORY_PUBLIC)
|
||||
{
|
||||
action = frame_body[1];
|
||||
if (action == ACT_PUBLIC_VENDOR
|
||||
&& _rtw_memcmp(frame_body+2, P2P_OUI, 4) == true
|
||||
)
|
||||
{
|
||||
OUI_Subtype = frame_body[6];
|
||||
dialogToken = frame_body[7];
|
||||
is_p2p_frame = OUI_Subtype;
|
||||
#ifdef CONFIG_DEBUG_CFG80211
|
||||
DBG_88E("ACTION_CATEGORY_PUBLIC: ACT_PUBLIC_VENDOR, OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n",
|
||||
cpu_to_be32( *( ( u32* ) ( frame_body + 2 ) ) ), OUI_Subtype, dialogToken);
|
||||
#endif
|
||||
|
||||
p2p_ie = rtw_get_p2p_ie(
|
||||
(u8 *)buf+sizeof(struct rtw_ieee80211_hdr_3addr)+_PUBLIC_ACTION_IE_OFFSET_,
|
||||
len-sizeof(struct rtw_ieee80211_hdr_3addr)-_PUBLIC_ACTION_IE_OFFSET_,
|
||||
NULL, &p2p_ielen);
|
||||
|
||||
switch ( OUI_Subtype )/* OUI Subtype */
|
||||
{
|
||||
u8 *cont;
|
||||
uint cont_len;
|
||||
case P2P_GO_NEGO_REQ:
|
||||
DBG_88E("RTW_%s:P2P_GO_NEGO_REQ, dialogToken=%d\n", (tx==true)?"Tx":"Rx", dialogToken);
|
||||
|
||||
if (tx)
|
||||
{
|
||||
#ifdef CONFIG_DRV_ISSUE_PROV_REQ /* IOT FOR S2 */
|
||||
if (pwdev_priv->provdisc_req_issued == false)
|
||||
rtw_cfg80211_issue_p2p_provision_request(padapter, buf, len);
|
||||
#endif /* CONFIG_DRV_ISSUE_PROV_REQ */
|
||||
}
|
||||
|
||||
break;
|
||||
case P2P_GO_NEGO_RESP:
|
||||
cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len);
|
||||
DBG_88E("RTW_%s:P2P_GO_NEGO_RESP, dialogToken=%d, status:%d\n", (tx==true)?"Tx":"Rx", dialogToken, cont?*cont:-1);
|
||||
|
||||
if (!tx)
|
||||
pwdev_priv->provdisc_req_issued = false;
|
||||
break;
|
||||
case P2P_GO_NEGO_CONF:
|
||||
cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len);
|
||||
DBG_88E("RTW_%s:P2P_GO_NEGO_CONF, dialogToken=%d, status:%d\n", (tx==true)?"Tx":"Rx", dialogToken, cont?*cont:-1);
|
||||
break;
|
||||
case P2P_INVIT_REQ:
|
||||
{
|
||||
struct rtw_wdev_invit_info* invit_info = &pwdev_priv->invit_info;
|
||||
int flags = -1;
|
||||
int op_ch = 0;
|
||||
|
||||
if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_INVITATION_FLAGS, NULL, &cont_len)))
|
||||
flags = *cont;
|
||||
if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len)))
|
||||
op_ch = *(cont+4);
|
||||
|
||||
if (invit_info->token != dialogToken)
|
||||
rtw_wdev_invit_info_init(invit_info);
|
||||
|
||||
invit_info->token = dialogToken;
|
||||
invit_info->flags = (flags==-1) ? 0x0 : flags;
|
||||
invit_info->req_op_ch= op_ch;
|
||||
|
||||
DBG_88E("RTW_%s:P2P_INVIT_REQ, dialogToken=%d, flags:0x%02x, op_ch:%d\n", (tx==true)?"Tx":"Rx", dialogToken, flags, op_ch);
|
||||
break;
|
||||
}
|
||||
case P2P_INVIT_RESP:
|
||||
{
|
||||
struct rtw_wdev_invit_info* invit_info = &pwdev_priv->invit_info;
|
||||
int status = -1;
|
||||
int op_ch = 0;
|
||||
|
||||
if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len)))
|
||||
status = *cont;
|
||||
if ((cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_OPERATING_CH, NULL, &cont_len)))
|
||||
op_ch = *(cont+4);
|
||||
|
||||
if (invit_info->token != dialogToken) {
|
||||
rtw_wdev_invit_info_init(invit_info);
|
||||
} else {
|
||||
invit_info->token = 0;
|
||||
invit_info->status = (status==-1) ? 0xff : status;
|
||||
invit_info->rsp_op_ch= op_ch;
|
||||
}
|
||||
|
||||
DBG_88E("RTW_%s:P2P_INVIT_RESP, dialogToken=%d, status:%d, op_ch:%d\n", (tx==true)?"Tx":"Rx", dialogToken, status, op_ch);
|
||||
break;
|
||||
}
|
||||
case P2P_DEVDISC_REQ:
|
||||
DBG_88E("RTW_%s:P2P_DEVDISC_REQ, dialogToken=%d\n", (tx==true)?"Tx":"Rx", dialogToken);
|
||||
break;
|
||||
case P2P_DEVDISC_RESP:
|
||||
cont = rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_STATUS, NULL, &cont_len);
|
||||
DBG_88E("RTW_%s:P2P_DEVDISC_RESP, dialogToken=%d, status:%d\n", (tx==true)?"Tx":"Rx", dialogToken, cont?*cont:-1);
|
||||
break;
|
||||
case P2P_PROVISION_DISC_REQ:
|
||||
{
|
||||
size_t frame_body_len = len - sizeof(struct rtw_ieee80211_hdr_3addr);
|
||||
u8 *p2p_ie;
|
||||
uint p2p_ielen = 0;
|
||||
uint contentlen = 0;
|
||||
|
||||
DBG_88E("RTW_%s:P2P_PROVISION_DISC_REQ, dialogToken=%d\n", (tx==true)?"Tx":"Rx", dialogToken);
|
||||
|
||||
/* if (tx) */
|
||||
{
|
||||
pwdev_priv->provdisc_req_issued = false;
|
||||
|
||||
if ( (p2p_ie=rtw_get_p2p_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &p2p_ielen)))
|
||||
{
|
||||
|
||||
if (rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, NULL, &contentlen))
|
||||
{
|
||||
pwdev_priv->provdisc_req_issued = false;/* case: p2p_client join p2p GO */
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef CONFIG_DEBUG_CFG80211
|
||||
DBG_88E("provdisc_req_issued is true\n");
|
||||
#endif /* CONFIG_DEBUG_CFG80211 */
|
||||
pwdev_priv->provdisc_req_issued = true;/* case: p2p_devices connection before Nego req. */
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case P2P_PROVISION_DISC_RESP:
|
||||
DBG_88E("RTW_%s:P2P_PROVISION_DISC_RESP, dialogToken=%d\n", (tx==true)?"Tx":"Rx", dialogToken);
|
||||
break;
|
||||
default:
|
||||
DBG_88E("RTW_%s:OUI_Subtype=%d, dialogToken=%d\n", (tx==true)?"Tx":"Rx", OUI_Subtype, dialogToken);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else if (category == RTW_WLAN_CATEGORY_P2P)
|
||||
{
|
||||
OUI_Subtype = frame_body[5];
|
||||
dialogToken = frame_body[6];
|
||||
|
||||
#ifdef CONFIG_DEBUG_CFG80211
|
||||
DBG_88E("ACTION_CATEGORY_P2P: OUI=0x%x, OUI_Subtype=%d, dialogToken=%d\n",
|
||||
cpu_to_be32( *( ( u32* ) ( frame_body + 1 ) ) ), OUI_Subtype, dialogToken);
|
||||
#endif
|
||||
|
||||
is_p2p_frame = OUI_Subtype;
|
||||
|
||||
switch (OUI_Subtype)
|
||||
{
|
||||
case P2P_NOTICE_OF_ABSENCE:
|
||||
DBG_88E("RTW_%s:P2P_NOTICE_OF_ABSENCE, dialogToken=%d\n", (tx==true)?"TX":"RX", dialogToken);
|
||||
break;
|
||||
case P2P_PRESENCE_REQUEST:
|
||||
DBG_88E("RTW_%s:P2P_PRESENCE_REQUEST, dialogToken=%d\n", (tx==true)?"TX":"RX", dialogToken);
|
||||
break;
|
||||
case P2P_PRESENCE_RESPONSE:
|
||||
DBG_88E("RTW_%s:P2P_PRESENCE_RESPONSE, dialogToken=%d\n", (tx==true)?"TX":"RX", dialogToken);
|
||||
break;
|
||||
case P2P_GO_DISC_REQUEST:
|
||||
DBG_88E("RTW_%s:P2P_GO_DISC_REQUEST, dialogToken=%d\n", (tx==true)?"TX":"RX", dialogToken);
|
||||
break;
|
||||
default:
|
||||
DBG_88E("RTW_%s:OUI_Subtype=%d, dialogToken=%d\n", (tx==true)?"TX":"RX", OUI_Subtype, dialogToken);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
DBG_88E("RTW_%s:action frame category=%d\n", (tx==true)?"TX":"RX", category);
|
||||
/* is_p2p_frame = (-1); */
|
||||
}
|
||||
|
||||
return is_p2p_frame;
|
||||
}
|
||||
|
||||
void rtw_init_cfg80211_wifidirect_info( _adapter* padapter)
|
||||
{
|
||||
struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &padapter->cfg80211_wdinfo;
|
||||
|
||||
_rtw_memset(pcfg80211_wdinfo, 0x00, sizeof(struct cfg80211_wifidirect_info) );
|
||||
|
||||
_init_timer( &pcfg80211_wdinfo->remain_on_ch_timer, padapter->pnetdev, ro_ch_timer_process, padapter );
|
||||
}
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
|
||||
void p2p_protocol_wk_hdl(_adapter *padapter, int intCmdType)
|
||||
{
|
||||
struct wifidirect_info *pwdinfo= &(padapter->wdinfo);
|
||||
|
||||
_func_enter_;
|
||||
|
||||
switch (intCmdType)
|
||||
{
|
||||
case P2P_FIND_PHASE_WK:
|
||||
find_phase_handler( padapter );
|
||||
break;
|
||||
case P2P_RESTORE_STATE_WK:
|
||||
restore_p2p_state_handler( padapter );
|
||||
break;
|
||||
case P2P_PRE_TX_PROVDISC_PROCESS_WK:
|
||||
pre_tx_provdisc_handler( padapter );
|
||||
break;
|
||||
case P2P_PRE_TX_INVITEREQ_PROCESS_WK:
|
||||
pre_tx_invitereq_handler( padapter );
|
||||
break;
|
||||
case P2P_PRE_TX_NEGOREQ_PROCESS_WK:
|
||||
pre_tx_negoreq_handler( padapter );
|
||||
break;
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
case P2P_RO_CH_WK:
|
||||
{
|
||||
ro_ch_handler( padapter );
|
||||
break;
|
||||
}
|
||||
#endif /* CONFIG_IOCTL_CFG80211 */
|
||||
|
||||
switch (intCmdType) {
|
||||
case P2P_FIND_PHASE_WK:
|
||||
find_phase_handler( padapter );
|
||||
break;
|
||||
case P2P_RESTORE_STATE_WK:
|
||||
restore_p2p_state_handler( padapter );
|
||||
break;
|
||||
case P2P_PRE_TX_PROVDISC_PROCESS_WK:
|
||||
pre_tx_provdisc_handler( padapter );
|
||||
break;
|
||||
case P2P_PRE_TX_INVITEREQ_PROCESS_WK:
|
||||
pre_tx_invitereq_handler( padapter );
|
||||
break;
|
||||
case P2P_PRE_TX_NEGOREQ_PROCESS_WK:
|
||||
pre_tx_negoreq_handler( padapter );
|
||||
break;
|
||||
}
|
||||
|
||||
_func_exit_;
|
||||
|
|
|
@ -137,9 +137,6 @@ static bool rtw_pwr_unassociated_idle(_adapter *adapter)
|
|||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||
#ifdef CONFIG_P2P
|
||||
struct wifidirect_info *pwdinfo = &(adapter->wdinfo);
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
struct cfg80211_wifidirect_info *pcfg80211_wdinfo = &adapter->cfg80211_wdinfo;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
bool ret = false;
|
||||
|
@ -153,9 +150,7 @@ static bool rtw_pwr_unassociated_idle(_adapter *adapter)
|
|||
|| check_fwstate(pmlmepriv, WIFI_UNDER_LINKING|WIFI_UNDER_WPS)
|
||||
|| check_fwstate(pmlmepriv, WIFI_AP_STATE)
|
||||
|| check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE)
|
||||
#if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_P2P_IPS)
|
||||
|| pcfg80211_wdinfo->is_ro_ch
|
||||
#elif defined(CONFIG_P2P)
|
||||
#if defined(CONFIG_P2P)
|
||||
|| !rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)
|
||||
#endif
|
||||
) {
|
||||
|
@ -167,18 +162,13 @@ static bool rtw_pwr_unassociated_idle(_adapter *adapter)
|
|||
struct mlme_priv *b_pmlmepriv = &(buddy->mlmepriv);
|
||||
#ifdef CONFIG_P2P
|
||||
struct wifidirect_info *b_pwdinfo = &(buddy->wdinfo);
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
struct cfg80211_wifidirect_info *b_pcfg80211_wdinfo = &buddy->cfg80211_wdinfo;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
if (check_fwstate(b_pmlmepriv, WIFI_ASOC_STATE|WIFI_SITE_MONITOR)
|
||||
|| check_fwstate(b_pmlmepriv, WIFI_UNDER_LINKING|WIFI_UNDER_WPS)
|
||||
|| check_fwstate(b_pmlmepriv, WIFI_AP_STATE)
|
||||
|| check_fwstate(b_pmlmepriv, WIFI_ADHOC_MASTER_STATE|WIFI_ADHOC_STATE)
|
||||
#if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) && defined(CONFIG_P2P_IPS)
|
||||
|| b_pcfg80211_wdinfo->is_ro_ch
|
||||
#elif defined(CONFIG_P2P)
|
||||
#if defined(CONFIG_P2P)
|
||||
|| !rtw_p2p_chk_state(b_pwdinfo, P2P_STATE_NONE)
|
||||
#endif
|
||||
) {
|
||||
|
@ -426,11 +416,6 @@ u8 PS_RDY_CHECK(_adapter * padapter)
|
|||
DBG_88E("Group handshake still in progress !!!\n");
|
||||
return false;
|
||||
}
|
||||
#ifdef CONFIG_IOCTL_CFG80211
|
||||
if (!rtw_cfg80211_pwr_mgmt(padapter))
|
||||
return false;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue