mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-09 14:53: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
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_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue