mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-06 21:43:06 +00:00
rtl8188eu: Backport kernel version
This driver was added to the kernel with version 3.12. The changes in that version are now brought back to the GitHub repo. Essentually all of the code is updated. Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
868a407435
commit
19db43ecbd
89 changed files with 2026 additions and 5957 deletions
|
@ -24,7 +24,7 @@
|
|||
#include <wifi.h>
|
||||
#include <ieee80211.h>
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
|
||||
void init_mlme_ap_info(struct adapter *padapter)
|
||||
{
|
||||
|
@ -120,7 +120,7 @@ static void update_BCNTIM(struct adapter *padapter)
|
|||
if (remainder_ielen > 0) {
|
||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||
if (pbackup_remainder_ie && premainder_ie)
|
||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
}
|
||||
*dst_ie++ = _TIM_IE_;
|
||||
|
||||
|
@ -142,15 +142,15 @@ static void update_BCNTIM(struct adapter *padapter)
|
|||
if (tim_ielen == 4) {
|
||||
*dst_ie++ = *(u8 *)&tim_bitmap_le;
|
||||
} else if (tim_ielen == 5) {
|
||||
_rtw_memcpy(dst_ie, &tim_bitmap_le, 2);
|
||||
memcpy(dst_ie, &tim_bitmap_le, 2);
|
||||
dst_ie += 2;
|
||||
}
|
||||
|
||||
/* copy remainder IE */
|
||||
if (pbackup_remainder_ie) {
|
||||
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
|
||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||
kfree(pbackup_remainder_ie);
|
||||
}
|
||||
offset = (uint)(dst_ie - pie);
|
||||
pnetwork_mlmeext->IELength = offset + remainder_ielen;
|
||||
|
@ -162,10 +162,11 @@ static void update_BCNTIM(struct adapter *padapter)
|
|||
void rtw_add_bcn_ie(struct adapter *padapter, struct wlan_bssid_ex *pnetwork, u8 index, u8 *data, u8 len)
|
||||
{
|
||||
struct ndis_802_11_var_ie *pIE;
|
||||
u8 bmatch = false;
|
||||
u8 *pie = pnetwork->IEs;
|
||||
u8 *p, *dst_ie, *premainder_ie = NULL, *pbackup_remainder_ie = NULL;
|
||||
u32 i, offset, ielen, ie_offset, remainder_ielen = 0;
|
||||
u8 bmatch = false;
|
||||
u8 *pie = pnetwork->IEs;
|
||||
u8 *p = NULL, *dst_ie = NULL, *premainder_ie = NULL;
|
||||
u8 *pbackup_remainder_ie = NULL;
|
||||
u32 i, offset, ielen = 0, ie_offset, remainder_ielen = 0;
|
||||
|
||||
for (i = sizeof(struct ndis_802_11_fixed_ie); i < pnetwork->IELength;) {
|
||||
pIE = (struct ndis_802_11_var_ie *)(pnetwork->IEs + i);
|
||||
|
@ -201,20 +202,20 @@ void rtw_add_bcn_ie(struct adapter *padapter, struct wlan_bssid_ex *pnetwork, u8
|
|||
if (remainder_ielen > 0) {
|
||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||
if (pbackup_remainder_ie && premainder_ie)
|
||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
}
|
||||
|
||||
*dst_ie++ = index;
|
||||
*dst_ie++ = len;
|
||||
|
||||
_rtw_memcpy(dst_ie, data, len);
|
||||
memcpy(dst_ie, data, len);
|
||||
dst_ie += len;
|
||||
|
||||
/* copy remainder IE */
|
||||
if (pbackup_remainder_ie) {
|
||||
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
|
||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||
kfree(pbackup_remainder_ie);
|
||||
}
|
||||
|
||||
offset = (uint)(dst_ie - pie);
|
||||
|
@ -223,11 +224,13 @@ void rtw_add_bcn_ie(struct adapter *padapter, struct wlan_bssid_ex *pnetwork, u8
|
|||
|
||||
void rtw_remove_bcn_ie(struct adapter *padapter, struct wlan_bssid_ex *pnetwork, u8 index)
|
||||
{
|
||||
u8 *p, *dst_ie, *premainder_ie = NULL, *pbackup_remainder_ie = NULL;
|
||||
u8 *p, *dst_ie = NULL, *premainder_ie = NULL;
|
||||
u8 *pbackup_remainder_ie = NULL;
|
||||
uint offset, ielen, ie_offset, remainder_ielen = 0;
|
||||
u8 *pie = pnetwork->IEs;
|
||||
|
||||
p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, index, &ielen, pnetwork->IELength - _FIXED_IE_LENGTH_);
|
||||
p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, index, &ielen,
|
||||
pnetwork->IELength - _FIXED_IE_LENGTH_);
|
||||
if (p != NULL && ielen > 0) {
|
||||
ielen += 2;
|
||||
|
||||
|
@ -243,14 +246,14 @@ void rtw_remove_bcn_ie(struct adapter *padapter, struct wlan_bssid_ex *pnetwork,
|
|||
if (remainder_ielen > 0) {
|
||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||
if (pbackup_remainder_ie && premainder_ie)
|
||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
}
|
||||
|
||||
/* copy remainder IE */
|
||||
if (pbackup_remainder_ie) {
|
||||
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
|
||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||
kfree(pbackup_remainder_ie);
|
||||
}
|
||||
|
||||
offset = (uint)(dst_ie - pie);
|
||||
|
@ -276,7 +279,7 @@ void expire_timeout_chk(struct adapter *padapter)
|
|||
{
|
||||
unsigned long irqL;
|
||||
struct list_head *phead, *plist;
|
||||
u8 updated;
|
||||
u8 updated = 0;
|
||||
struct sta_info *psta = NULL;
|
||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||
u8 chk_alive_num = 0;
|
||||
|
@ -317,7 +320,6 @@ void expire_timeout_chk(struct adapter *padapter)
|
|||
|
||||
psta = NULL;
|
||||
|
||||
|
||||
_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||
|
||||
phead = &pstapriv->asoc_list;
|
||||
|
@ -557,7 +559,7 @@ static void update_bmc_sta(struct adapter *padapter)
|
|||
supportRateNum = rtw_get_rateset_len((u8 *)&pcur_network->SupportedRates);
|
||||
network_type = rtw_check_network_type((u8 *)&pcur_network->SupportedRates, supportRateNum, 1);
|
||||
|
||||
_rtw_memcpy(psta->bssrateset, &pcur_network->SupportedRates, supportRateNum);
|
||||
memcpy(psta->bssrateset, &pcur_network->SupportedRates, supportRateNum);
|
||||
psta->bssratelen = supportRateNum;
|
||||
|
||||
/* b/g mode ra_bitmap */
|
||||
|
@ -727,9 +729,9 @@ static void start_bss_network(struct adapter *padapter, u8 *pbuf)
|
|||
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
|
||||
struct wlan_bssid_ex *pnetwork_mlmeext = &(pmlmeinfo->network);
|
||||
struct HT_info_element *pht_info = NULL;
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
||||
bcn_interval = (u16)pnetwork->Configuration.BeaconPeriod;
|
||||
cur_channel = pnetwork->Configuration.DSConfig;
|
||||
|
@ -829,12 +831,12 @@ static void start_bss_network(struct adapter *padapter, u8 *pbuf)
|
|||
update_capinfo(padapter, rtw_get_capability((struct wlan_bssid_ex *)pnetwork));
|
||||
|
||||
/* let pnetwork_mlmeext == pnetwork_mlme. */
|
||||
_rtw_memcpy(pnetwork_mlmeext, pnetwork, pnetwork->Length);
|
||||
memcpy(pnetwork_mlmeext, pnetwork, pnetwork->Length);
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
_rtw_memcpy(pwdinfo->p2p_group_ssid, pnetwork->Ssid.Ssid, pnetwork->Ssid.SsidLength);
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
memcpy(pwdinfo->p2p_group_ssid, pnetwork->Ssid.Ssid, pnetwork->Ssid.SsidLength);
|
||||
pwdinfo->p2p_group_ssid_len = pnetwork->Ssid.SsidLength;
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
||||
if (pmlmeext->bstart_bss) {
|
||||
update_beacon(padapter, _TIM_IE_, NULL, false);
|
||||
|
@ -868,7 +870,6 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
struct wlan_bssid_ex *pbss_network = (struct wlan_bssid_ex *)&pmlmepriv->cur_network.network;
|
||||
u8 *ie = pbss_network->IEs;
|
||||
|
||||
|
||||
/* SSID */
|
||||
/* Supported rates */
|
||||
/* DS Params */
|
||||
|
@ -893,7 +894,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
|
||||
_rtw_memset(ie, 0, MAX_IE_SZ);
|
||||
|
||||
_rtw_memcpy(ie, pbuf, pbss_network->IELength);
|
||||
memcpy(ie, pbuf, pbss_network->IELength);
|
||||
|
||||
|
||||
if (pbss_network->InfrastructureMode != Ndis802_11APMode)
|
||||
|
@ -901,7 +902,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
|
||||
pbss_network->Rssi = 0;
|
||||
|
||||
_rtw_memcpy(pbss_network->MacAddress, myid(&(padapter->eeprompriv)), ETH_ALEN);
|
||||
memcpy(pbss_network->MacAddress, myid(&(padapter->eeprompriv)), ETH_ALEN);
|
||||
|
||||
/* beacon interval */
|
||||
p = rtw_get_beacon_interval_from_ie(ie);/* 8: TimeStamp, 2: Beacon Interval 2:Capability */
|
||||
|
@ -914,7 +915,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SSID_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
|
||||
if (p && ie_len > 0) {
|
||||
_rtw_memset(&pbss_network->Ssid, 0, sizeof(struct ndis_802_11_ssid));
|
||||
_rtw_memcpy(pbss_network->Ssid.Ssid, (p + 2), ie_len);
|
||||
memcpy(pbss_network->Ssid.Ssid, (p + 2), ie_len);
|
||||
pbss_network->Ssid.SsidLength = ie_len;
|
||||
}
|
||||
|
||||
|
@ -931,14 +932,14 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
/* get supported rates */
|
||||
p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &ie_len, (pbss_network->IELength - _BEACON_IE_OFFSET_));
|
||||
if (p != NULL) {
|
||||
_rtw_memcpy(supportRate, p+2, ie_len);
|
||||
memcpy(supportRate, p+2, ie_len);
|
||||
supportRateNum = ie_len;
|
||||
}
|
||||
|
||||
/* get ext_supported rates */
|
||||
p = rtw_get_ie(ie + _BEACON_IE_OFFSET_, _EXT_SUPPORTEDRATES_IE_, &ie_len, pbss_network->IELength - _BEACON_IE_OFFSET_);
|
||||
if (p != NULL) {
|
||||
_rtw_memcpy(supportRate+supportRateNum, p+2, ie_len);
|
||||
memcpy(supportRate+supportRateNum, p+2, ie_len);
|
||||
supportRateNum += ie_len;
|
||||
}
|
||||
|
||||
|
@ -1053,7 +1054,7 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
pht_cap->supp_mcs_set[0] = 0xff;
|
||||
pht_cap->supp_mcs_set[1] = 0x0;
|
||||
}
|
||||
_rtw_memcpy(&pmlmepriv->htpriv.ht_cap, p+2, ie_len);
|
||||
memcpy(&pmlmepriv->htpriv.ht_cap, p+2, ie_len);
|
||||
}
|
||||
|
||||
/* parsing HT_INFO_IE */
|
||||
|
@ -1114,9 +1115,6 @@ int rtw_check_beacon_data(struct adapter *padapter, u8 *pbuf, int len)
|
|||
return _FAIL;
|
||||
}
|
||||
|
||||
/* fix bug of flush_cam_entry at STOP AP mode */
|
||||
psta->state |= WIFI_AP_STATE;
|
||||
rtw_indicate_connect(padapter);
|
||||
pmlmepriv->cur_network.join_res = true;/* for check if already set beacon */
|
||||
return ret;
|
||||
}
|
||||
|
@ -1178,7 +1176,7 @@ int rtw_acl_add_sta(struct adapter *padapter, u8 *addr)
|
|||
if (!paclnode->valid) {
|
||||
_rtw_init_listhead(&paclnode->list);
|
||||
|
||||
_rtw_memcpy(paclnode->addr, addr, ETH_ALEN);
|
||||
memcpy(paclnode->addr, addr, ETH_ALEN);
|
||||
|
||||
paclnode->valid = true;
|
||||
|
||||
|
@ -1327,7 +1325,7 @@ static void update_bcn_wps_ie(struct adapter *padapter)
|
|||
if (remainder_ielen > 0) {
|
||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||
if (pbackup_remainder_ie)
|
||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||
}
|
||||
|
||||
pwps_ie_src = pmlmepriv->wps_beacon_ie;
|
||||
|
@ -1336,18 +1334,18 @@ static void update_bcn_wps_ie(struct adapter *padapter)
|
|||
|
||||
wps_ielen = (uint)pwps_ie_src[1];/* to get ie data len */
|
||||
if ((wps_offset+wps_ielen+2+remainder_ielen) <= MAX_IE_SZ) {
|
||||
_rtw_memcpy(pwps_ie, pwps_ie_src, wps_ielen+2);
|
||||
memcpy(pwps_ie, pwps_ie_src, wps_ielen+2);
|
||||
pwps_ie += (wps_ielen+2);
|
||||
|
||||
if (pbackup_remainder_ie)
|
||||
_rtw_memcpy(pwps_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
memcpy(pwps_ie, pbackup_remainder_ie, remainder_ielen);
|
||||
|
||||
/* update IELength */
|
||||
pnetwork->IELength = wps_offset + (wps_ielen+2) + remainder_ielen;
|
||||
}
|
||||
|
||||
if (pbackup_remainder_ie)
|
||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||
kfree(pbackup_remainder_ie);
|
||||
}
|
||||
|
||||
static void update_bcn_p2p_ie(struct adapter *padapter)
|
||||
|
@ -1987,4 +1985,4 @@ void stop_ap_mode(struct adapter *padapter)
|
|||
rtw_free_mlme_priv_ie_data(pmlmepriv);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_AP_MODE */
|
||||
#endif /* CONFIG_88EU_AP_MODE */
|
||||
|
|
|
@ -89,7 +89,7 @@ static inline int __nat25_add_pppoe_tag(struct sk_buff *skb, struct pppoe_tag *t
|
|||
struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN);
|
||||
int data_len;
|
||||
|
||||
data_len = tag->tag_len + TAG_HDR_LEN;
|
||||
data_len = be16_to_cpu(tag->tag_len) + TAG_HDR_LEN;
|
||||
if (skb_tailroom(skb) < data_len) {
|
||||
_DEBUG_ERR("skb_tailroom() failed in add SID tag!\n");
|
||||
return -1;
|
||||
|
@ -155,44 +155,53 @@ static inline void __nat25_generate_ipv4_network_addr(unsigned char *networkAddr
|
|||
|
||||
|
||||
static inline void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr,
|
||||
unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr)
|
||||
__be32 *ipxNetAddr, unsigned char *ipxNodeAddr)
|
||||
{
|
||||
u32 cpu_netaddr = be32_to_cpu(*ipxNetAddr);
|
||||
|
||||
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||
|
||||
networkAddr[0] = NAT25_IPX;
|
||||
memcpy(networkAddr+1, (unsigned char *)ipxNetAddr, 4);
|
||||
memcpy(networkAddr+1, &cpu_netaddr, 4);
|
||||
memcpy(networkAddr+5, ipxNodeAddr, 6);
|
||||
}
|
||||
|
||||
|
||||
static inline void __nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr,
|
||||
unsigned int *ipxNetAddr, unsigned short *ipxSocketAddr)
|
||||
__be32 *ipxNetAddr, __be16 *ipxSocketAddr)
|
||||
{
|
||||
u32 cpu_netaddr = be32_to_cpu(*ipxNetAddr);
|
||||
u16 cpu_sockaddr = be16_to_cpu(*ipxSocketAddr);
|
||||
|
||||
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||
|
||||
networkAddr[0] = NAT25_IPX;
|
||||
memcpy(networkAddr+1, (unsigned char *)ipxNetAddr, 4);
|
||||
memcpy(networkAddr+5, (unsigned char *)ipxSocketAddr, 2);
|
||||
memcpy(networkAddr+1, &cpu_netaddr, 4);
|
||||
memcpy(networkAddr+5, &cpu_sockaddr, 2);
|
||||
}
|
||||
|
||||
|
||||
static inline void __nat25_generate_apple_network_addr(unsigned char *networkAddr,
|
||||
unsigned short *network, unsigned char *node)
|
||||
__be16 *network, unsigned char *node)
|
||||
{
|
||||
u16 cpu_net = be16_to_cpu(*network);
|
||||
|
||||
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||
|
||||
networkAddr[0] = NAT25_APPLE;
|
||||
memcpy(networkAddr+1, (unsigned char *)network, 2);
|
||||
memcpy(networkAddr+1, &cpu_net, 2);
|
||||
networkAddr[3] = *node;
|
||||
}
|
||||
|
||||
static inline void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr,
|
||||
unsigned char *ac_mac, unsigned short *sid)
|
||||
unsigned char *ac_mac, __be16 *sid)
|
||||
{
|
||||
u16 cpu_sid = be16_to_cpu(*sid);
|
||||
|
||||
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||
|
||||
networkAddr[0] = NAT25_PPPOE;
|
||||
memcpy(networkAddr+1, (unsigned char *)sid, 2);
|
||||
memcpy(networkAddr+1, &cpu_sid, 2);
|
||||
memcpy(networkAddr+3, (unsigned char *)ac_mac, 6);
|
||||
}
|
||||
|
||||
|
@ -281,17 +290,6 @@ static int update_nd_link_layer_addr(unsigned char *data, int len, unsigned char
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void convert_ipv6_mac_to_mc(struct sk_buff *skb)
|
||||
{
|
||||
struct ipv6hdr *iph = (struct ipv6hdr *)(skb->data + ETH_HLEN);
|
||||
unsigned char *dst_mac = skb->data;
|
||||
|
||||
/*modified by qinjunjie, ipv6 multicast address ix 0x33-33-xx-xx-xx-xx*/
|
||||
dst_mac[0] = 0x33;
|
||||
dst_mac[1] = 0x33;
|
||||
memcpy(&dst_mac[2], &iph->daddr.s6_addr32[3], 4);
|
||||
}
|
||||
|
||||
static inline int __nat25_network_hash(unsigned char *networkAddr)
|
||||
{
|
||||
if (networkAddr[0] == NAT25_IPV4) {
|
||||
|
@ -471,7 +469,7 @@ void nat25_db_cleanup(struct adapter *priv)
|
|||
priv->scdb_entry = NULL;
|
||||
}
|
||||
__network_hash_unlink(f);
|
||||
rtw_mfree((u8 *) f, sizeof(struct nat25_network_db_entry));
|
||||
kfree(f);
|
||||
f = g;
|
||||
}
|
||||
}
|
||||
|
@ -500,7 +498,7 @@ void nat25_db_expire(struct adapter *priv)
|
|||
priv->scdb_entry = NULL;
|
||||
}
|
||||
__network_hash_unlink(f);
|
||||
rtw_mfree((u8 *) f, sizeof(struct nat25_network_db_entry));
|
||||
kfree(f);
|
||||
}
|
||||
}
|
||||
f = g;
|
||||
|
@ -690,6 +688,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
|
|||
if (!memcmp(skb->data+ETH_ALEN, ipx->ipx_source.node, ETH_ALEN))
|
||||
DEBUG_INFO("NAT25: Check IPX skb_copy\n");
|
||||
return 0;
|
||||
return -1;
|
||||
case NAT25_INSERT:
|
||||
DEBUG_INFO("NAT25: Insert IPX, Dest =%08x,%02x%02x%02x%02x%02x%02x,%04x Source =%08x,%02x%02x%02x%02x%02x%02x,%04x\n",
|
||||
ipx->ipx_dest.net,
|
||||
|
@ -822,7 +821,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
|
|||
/* Handle PPPoE frame */
|
||||
/*---------------------------------------------------*/
|
||||
struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN);
|
||||
unsigned short *pMagic;
|
||||
__be16 *pMagic;
|
||||
|
||||
switch (method) {
|
||||
case NAT25_CHECK:
|
||||
|
@ -860,7 +859,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
|
|||
tag->tag_len = htons(MAGIC_CODE_LEN+RTL_RELAY_TAG_LEN+old_tag_len);
|
||||
|
||||
/* insert the magic_code+client mac in relay tag */
|
||||
pMagic = (unsigned short *)tag->tag_data;
|
||||
pMagic = (__be16 *)tag->tag_data;
|
||||
*pMagic = htons(MAGIC_CODE);
|
||||
memcpy(tag->tag_data+MAGIC_CODE_LEN, skb->data+ETH_ALEN, ETH_ALEN);
|
||||
|
||||
|
@ -923,8 +922,8 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
|
|||
return -1;
|
||||
}
|
||||
|
||||
pMagic = (unsigned short *)tag->tag_data;
|
||||
if (ntohs(*pMagic) != MAGIC_CODE) {
|
||||
pMagic = (__be16 *)tag->tag_data;
|
||||
if (be16_to_cpu(*pMagic) != MAGIC_CODE) {
|
||||
DEBUG_ERR("Can't find MAGIC_CODE in %s packet!\n",
|
||||
(ph->code == PADO_CODE ? "PADO" : "PADS"));
|
||||
return -1;
|
||||
|
@ -1029,11 +1028,12 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
|
|||
if (update_nd_link_layer_addr(skb->data + ETH_HLEN + sizeof(*iph),
|
||||
skb->len - ETH_HLEN - sizeof(*iph), GET_MY_HWADDR(priv))) {
|
||||
struct icmp6hdr *hdr = (struct icmp6hdr *)(skb->data + ETH_HLEN + sizeof(*iph));
|
||||
u32 len = __be16_to_cpu(iph->payload_len);
|
||||
hdr->icmp6_cksum = 0;
|
||||
hdr->icmp6_cksum = csum_ipv6_magic(&iph->saddr, &iph->daddr,
|
||||
iph->payload_len,
|
||||
len,
|
||||
IPPROTO_ICMPV6,
|
||||
csum_partial((__u8 *)hdr, iph->payload_len, 0));
|
||||
csum_partial((__u8 *)hdr, len, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1128,7 +1128,7 @@ struct dhcpMessage {
|
|||
u_int8_t hops;
|
||||
u_int32_t xid;
|
||||
u_int16_t secs;
|
||||
u_int16_t flags;
|
||||
__be16 flags;
|
||||
u_int32_t ciaddr;
|
||||
u_int32_t yiaddr;
|
||||
u_int32_t siaddr;
|
||||
|
@ -1136,7 +1136,7 @@ struct dhcpMessage {
|
|||
u_int8_t chaddr[16];
|
||||
u_int8_t sname[64];
|
||||
u_int8_t file[128];
|
||||
u_int32_t cookie;
|
||||
__be32 cookie;
|
||||
u_int8_t options[308]; /* 312 - cookie */
|
||||
};
|
||||
|
||||
|
@ -1163,17 +1163,17 @@ void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb)
|
|||
if (cookie == DHCP_MAGIC) { /* match magic word */
|
||||
if (!(dhcph->flags & htons(BROADCAST_FLAG))) {
|
||||
/* if not broadcast */
|
||||
register int sum = 0;
|
||||
register int sum;
|
||||
|
||||
DEBUG_INFO("DHCP: change flag of DHCP request to broadcast.\n");
|
||||
/* or BROADCAST flag */
|
||||
dhcph->flags |= htons(BROADCAST_FLAG);
|
||||
/* recalculate checksum */
|
||||
sum = ~(udph->check) & 0xffff;
|
||||
sum = (__force int)(~(udph->check)) & 0xffff;
|
||||
sum += be16_to_cpu(dhcph->flags);
|
||||
while (sum >> 16)
|
||||
sum = (sum & 0xffff) + (sum >> 16);
|
||||
udph->check = ~sum;
|
||||
udph->check = (__force __sum16)~sum;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
261
core/rtw_cmd.c
261
core/rtw_cmd.c
|
@ -27,10 +27,6 @@
|
|||
#include <rtw_br_ext.h>
|
||||
#include <rtw_mlme_ext.h>
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
#include <rtl8723a_hal.h>
|
||||
#endif /* CONFIG_BT_COEXIST */
|
||||
|
||||
/*
|
||||
Caller and the rtw_cmd_thread can protect cmd_q by spin_lock.
|
||||
No irqsave is necessary.
|
||||
|
@ -100,11 +96,11 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
void _rtw_free_evt_priv(struct evt_priv *pevtpriv)
|
||||
void rtw_free_evt_priv(struct evt_priv *pevtpriv)
|
||||
{
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("+_rtw_free_evt_priv\n"));
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("+rtw_free_evt_priv\n"));
|
||||
|
||||
_cancel_workitem_sync(&pevtpriv->c2h_wk);
|
||||
while (pevtpriv->c2h_wk_alive)
|
||||
|
@ -113,9 +109,9 @@ _func_enter_;
|
|||
while (!rtw_cbuf_empty(pevtpriv->c2h_queue)) {
|
||||
void *c2h = rtw_cbuf_pop(pevtpriv->c2h_queue);
|
||||
if (c2h != NULL && c2h != (void *)pevtpriv)
|
||||
rtw_mfree(c2h, 16);
|
||||
kfree(c2h);
|
||||
}
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("-_rtw_free_evt_priv\n"));
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("-rtw_free_evt_priv\n"));
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -127,14 +123,13 @@ _func_enter_;
|
|||
if (pcmdpriv) {
|
||||
_rtw_spinlock_free(&(pcmdpriv->cmd_queue.lock));
|
||||
_rtw_free_sema(&(pcmdpriv->cmd_queue_sema));
|
||||
/* _rtw_free_sema(&(pcmdpriv->cmd_done_sema)); */
|
||||
_rtw_free_sema(&(pcmdpriv->terminate_cmdthread_sema));
|
||||
|
||||
if (pcmdpriv->cmd_allocated_buf)
|
||||
rtw_mfree(pcmdpriv->cmd_allocated_buf, MAX_CMDSZ + CMDBUFF_ALIGN_SZ);
|
||||
kfree(pcmdpriv->cmd_allocated_buf);
|
||||
|
||||
if (pcmdpriv->rsp_allocated_buf)
|
||||
rtw_mfree(pcmdpriv->rsp_allocated_buf, MAX_RSPSZ + 4);
|
||||
kfree(pcmdpriv->rsp_allocated_buf);
|
||||
}
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -215,15 +210,7 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
void rtw_free_evt_priv (struct evt_priv *pevtpriv)
|
||||
{
|
||||
_func_enter_;
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("rtw_free_evt_priv\n"));
|
||||
_rtw_free_evt_priv(pevtpriv);
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
void rtw_free_cmd_priv (struct cmd_priv *pcmdpriv)
|
||||
void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv)
|
||||
{
|
||||
_func_enter_;
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("rtw_free_cmd_priv\n"));
|
||||
|
@ -231,8 +218,7 @@ _func_enter_;
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj);
|
||||
int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
|
||||
static int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
|
||||
{
|
||||
u8 bAllow = false; /* set to true to allow enqueuing cmd when hw_init_completed is false */
|
||||
|
||||
|
@ -311,18 +297,18 @@ _func_enter_;
|
|||
|
||||
if ((pcmd->cmdcode != _JoinBss_CMD_) && (pcmd->cmdcode != _CreateBss_CMD_)) {
|
||||
/* free parmbuf in cmd_obj */
|
||||
rtw_mfree((unsigned char *)pcmd->parmbuf, pcmd->cmdsz);
|
||||
kfree(pcmd->parmbuf);
|
||||
}
|
||||
|
||||
if (pcmd->rsp != NULL) {
|
||||
if (pcmd->rspsz != 0) {
|
||||
/* free rsp in cmd_obj */
|
||||
rtw_mfree((unsigned char *)pcmd->rsp, pcmd->rspsz);
|
||||
kfree(pcmd->rsp);
|
||||
}
|
||||
}
|
||||
|
||||
/* free cmd_obj */
|
||||
rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
|
||||
kfree(pcmd);
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -379,9 +365,9 @@ _next:
|
|||
|
||||
pcmd->cmdsz = _RND4((pcmd->cmdsz));/* _RND4 */
|
||||
|
||||
_rtw_memcpy(pcmdbuf, pcmd->parmbuf, pcmd->cmdsz);
|
||||
memcpy(pcmdbuf, pcmd->parmbuf, pcmd->cmdsz);
|
||||
|
||||
if (pcmd->cmdcode < (sizeof(wlancmds) / sizeof(struct cmd_hdl))) {
|
||||
if (pcmd->cmdcode < ARRAY_SIZE(wlancmds)) {
|
||||
cmd_hdl = wlancmds[pcmd->cmdcode].h2cfuns;
|
||||
|
||||
if (cmd_hdl) {
|
||||
|
@ -399,7 +385,7 @@ _next:
|
|||
post_process:
|
||||
|
||||
/* call callback function for post-processed */
|
||||
if (pcmd->cmdcode < (sizeof(rtw_cmd_callback) / sizeof(struct _cmd_callback))) {
|
||||
if (pcmd->cmdcode < ARRAY_SIZE(rtw_cmd_callback)) {
|
||||
pcmd_callback = rtw_cmd_callback[pcmd->cmdcode].callback;
|
||||
if (pcmd_callback == NULL) {
|
||||
RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("mlme_cmd_hdl(): pcmd_callback = 0x%p, cmdcode = 0x%x\n", pcmd_callback, pcmd->cmdcode));
|
||||
|
@ -455,7 +441,7 @@ _func_enter_;
|
|||
|
||||
psetusbsuspend = (struct usb_suspend_parm *)rtw_zmalloc(sizeof(struct usb_suspend_parm));
|
||||
if (psetusbsuspend == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
ret = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -488,7 +474,6 @@ u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid,
|
|||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
if (check_fwstate(pmlmepriv, _FW_LINKED) == true) {
|
||||
rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SCAN, 1);
|
||||
}
|
||||
|
@ -503,7 +488,7 @@ _func_enter_;
|
|||
|
||||
psurveyPara = (struct sitesurvey_parm *)rtw_zmalloc(sizeof(struct sitesurvey_parm));
|
||||
if (psurveyPara == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
|
@ -521,7 +506,7 @@ _func_enter_;
|
|||
int i;
|
||||
for (i = 0; i < ssid_num && i < RTW_SSID_SCAN_AMOUNT; i++) {
|
||||
if (ssid[i].SsidLength) {
|
||||
_rtw_memcpy(&psurveyPara->ssid[i], &ssid[i], sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&psurveyPara->ssid[i], &ssid[i], sizeof(struct ndis_802_11_ssid));
|
||||
psurveyPara->ssid_num++;
|
||||
if (0)
|
||||
DBG_88E(FUNC_ADPT_FMT" ssid:(%s, %d)\n", FUNC_ADPT_ARG(padapter),
|
||||
|
@ -535,7 +520,7 @@ _func_enter_;
|
|||
int i;
|
||||
for (i = 0; i < ch_num && i < RTW_CHANNEL_SCAN_AMOUNT; i++) {
|
||||
if (ch[i].hw_value && !(ch[i].flags & RTW_IEEE80211_CHAN_DISABLED)) {
|
||||
_rtw_memcpy(&psurveyPara->ch[i], &ch[i], sizeof(struct rtw_ieee80211_channel));
|
||||
memcpy(&psurveyPara->ch[i], &ch[i], sizeof(struct rtw_ieee80211_channel));
|
||||
psurveyPara->ch_num++;
|
||||
if (0)
|
||||
DBG_88E(FUNC_ADPT_FMT" ch:%u\n", FUNC_ADPT_ARG(padapter),
|
||||
|
@ -582,14 +567,14 @@ _func_enter_;
|
|||
|
||||
pbsetdataratepara = (struct setdatarate_parm *)rtw_zmalloc(sizeof(struct setdatarate_parm));
|
||||
if (pbsetdataratepara == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
init_h2fwcmd_w_parm_no_rsp(ph2c, pbsetdataratepara, GEN_CMD_CODE(_SetDataRate));
|
||||
pbsetdataratepara->mac_id = 5;
|
||||
_rtw_memcpy(pbsetdataratepara->datarates, rateset, NumRates);
|
||||
memcpy(pbsetdataratepara->datarates, rateset, NumRates);
|
||||
res = rtw_enqueue_cmd(pcmdpriv, ph2c);
|
||||
exit:
|
||||
|
||||
|
@ -615,14 +600,14 @@ _func_enter_;
|
|||
pssetbasicratepara = (struct setbasicrate_parm *)rtw_zmalloc(sizeof(struct setbasicrate_parm));
|
||||
|
||||
if (pssetbasicratepara == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
init_h2fwcmd_w_parm_no_rsp(ph2c, pssetbasicratepara, _SetBasicRate_CMD_);
|
||||
|
||||
_rtw_memcpy(pssetbasicratepara->basicrates, rateset, NumRates);
|
||||
memcpy(pssetbasicratepara->basicrates, rateset, NumRates);
|
||||
|
||||
res = rtw_enqueue_cmd(pcmdpriv, ph2c);
|
||||
exit:
|
||||
|
@ -657,7 +642,7 @@ _func_enter_;
|
|||
psetphypara = (struct setphy_parm *)rtw_zmalloc(sizeof(struct setphy_parm));
|
||||
|
||||
if (psetphypara == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -691,7 +676,7 @@ _func_enter_;
|
|||
pwritebbparm = (struct writeBB_parm *)rtw_zmalloc(sizeof(struct writeBB_parm));
|
||||
|
||||
if (pwritebbparm == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -723,7 +708,7 @@ _func_enter_;
|
|||
prdbbparm = (struct readBB_parm *)rtw_zmalloc(sizeof(struct readBB_parm));
|
||||
|
||||
if (prdbbparm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
|
@ -757,7 +742,7 @@ _func_enter_;
|
|||
pwriterfparm = (struct writeRF_parm *)rtw_zmalloc(sizeof(struct writeRF_parm));
|
||||
|
||||
if (pwriterfparm == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -790,7 +775,7 @@ _func_enter_;
|
|||
|
||||
prdrfparm = (struct readRF_parm *)rtw_zmalloc(sizeof(struct readRF_parm));
|
||||
if (prdrfparm == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -817,8 +802,8 @@ void rtw_getbbrfreg_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *p
|
|||
{
|
||||
_func_enter_;
|
||||
|
||||
rtw_mfree((unsigned char *)pcmd->parmbuf, pcmd->cmdsz);
|
||||
rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
|
||||
kfree(pcmd->parmbuf);
|
||||
kfree(pcmd);
|
||||
|
||||
if (padapter->registrypriv.mp_mode == 1)
|
||||
padapter->mppriv.workparam.bcompleted = true;
|
||||
|
@ -829,8 +814,8 @@ void rtw_readtssi_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcm
|
|||
{
|
||||
_func_enter_;
|
||||
|
||||
rtw_mfree((unsigned char *)pcmd->parmbuf, pcmd->cmdsz);
|
||||
rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
|
||||
kfree(pcmd->parmbuf);
|
||||
kfree(pcmd);
|
||||
|
||||
if (padapter->registrypriv.mp_mode == 1)
|
||||
padapter->mppriv.workparam.bcompleted = true;
|
||||
|
@ -960,7 +945,7 @@ _func_enter_;
|
|||
psecnetwork = (struct wlan_bssid_ex *)&psecuritypriv->sec_bss;
|
||||
if (psecnetwork == NULL) {
|
||||
if (pcmd != NULL)
|
||||
rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
|
||||
kfree(pcmd);
|
||||
|
||||
res = _FAIL;
|
||||
|
||||
|
@ -971,14 +956,14 @@ _func_enter_;
|
|||
|
||||
_rtw_memset(psecnetwork, 0, t_len);
|
||||
|
||||
_rtw_memcpy(psecnetwork, &pnetwork->network, get_wlan_bssid_ex_sz(&pnetwork->network));
|
||||
memcpy(psecnetwork, &pnetwork->network, get_wlan_bssid_ex_sz(&pnetwork->network));
|
||||
|
||||
psecuritypriv->authenticator_ie[0] = (unsigned char)psecnetwork->IELength;
|
||||
|
||||
if ((psecnetwork->IELength-12) < (256-1)) {
|
||||
_rtw_memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], psecnetwork->IELength-12);
|
||||
memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], psecnetwork->IELength-12);
|
||||
} else {
|
||||
_rtw_memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], (256-1));
|
||||
memcpy(&psecuritypriv->authenticator_ie[1], &psecnetwork->IEs[12], (256-1));
|
||||
}
|
||||
|
||||
psecnetwork->IELength = 0;
|
||||
|
@ -988,7 +973,7 @@ _func_enter_;
|
|||
/* the driver just has the bssid information for PMKIDList searching. */
|
||||
|
||||
if (!pmlmepriv->assoc_by_bssid)
|
||||
_rtw_memcpy(&pmlmepriv->assoc_bssid[0], &pnetwork->network.MacAddress[0], ETH_ALEN);
|
||||
memcpy(&pmlmepriv->assoc_bssid[0], &pnetwork->network.MacAddress[0], ETH_ALEN);
|
||||
|
||||
psecnetwork->IELength = rtw_restruct_sec_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], pnetwork->network.IELength);
|
||||
|
||||
|
@ -1072,7 +1057,7 @@ _func_enter_;
|
|||
cmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(*cmdobj));
|
||||
if (cmdobj == NULL) {
|
||||
res = _FAIL;
|
||||
rtw_mfree((u8 *)param, sizeof(*param));
|
||||
kfree(param);
|
||||
goto exit;
|
||||
}
|
||||
init_h2fwcmd_w_parm_no_rsp(cmdobj, param, _DisConnect_CMD_);
|
||||
|
@ -1081,7 +1066,7 @@ _func_enter_;
|
|||
/* no need to enqueue, do the cmd hdl directly and free cmd parameter */
|
||||
if (H2C_SUCCESS != disconnect_hdl(padapter, (u8 *)param))
|
||||
res = _FAIL;
|
||||
rtw_mfree((u8 *)param, sizeof(*param));
|
||||
kfree(param);
|
||||
}
|
||||
|
||||
exit:
|
||||
|
@ -1109,7 +1094,7 @@ _func_enter_;
|
|||
psetop = (struct setopmode_parm *)rtw_zmalloc(sizeof(struct setopmode_parm));
|
||||
|
||||
if (psetop == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = false;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1148,15 +1133,15 @@ _func_enter_;
|
|||
|
||||
psetstakey_para = (struct set_stakey_parm *)rtw_zmalloc(sizeof(struct set_stakey_parm));
|
||||
if (psetstakey_para == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
psetstakey_rsp = (struct set_stakey_rsp *)rtw_zmalloc(sizeof(struct set_stakey_rsp));
|
||||
if (psetstakey_rsp == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
rtw_mfree((u8 *)psetstakey_para, sizeof(struct set_stakey_parm));
|
||||
kfree(ph2c);
|
||||
kfree(psetstakey_para);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1165,7 +1150,7 @@ _func_enter_;
|
|||
ph2c->rsp = (u8 *)psetstakey_rsp;
|
||||
ph2c->rspsz = sizeof(struct set_stakey_rsp);
|
||||
|
||||
_rtw_memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN);
|
||||
memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN);
|
||||
|
||||
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
|
||||
psetstakey_para->algorithm = (unsigned char) psecuritypriv->dot11PrivacyAlgrthm;
|
||||
|
@ -1173,9 +1158,9 @@ _func_enter_;
|
|||
GET_ENCRY_ALGO(psecuritypriv, sta, psetstakey_para->algorithm, false);
|
||||
|
||||
if (unicast_key)
|
||||
_rtw_memcpy(&psetstakey_para->key, &sta->dot118021x_UncstKey, 16);
|
||||
memcpy(&psetstakey_para->key, &sta->dot118021x_UncstKey, 16);
|
||||
else
|
||||
_rtw_memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey, 16);
|
||||
memcpy(&psetstakey_para->key, &psecuritypriv->dot118021XGrpKey[psecuritypriv->dot118021XGrpKeyid].skey, 16);
|
||||
|
||||
/* jeff: set this becasue at least sw key is ready */
|
||||
padapter->securitypriv.busetkipkey = true;
|
||||
|
@ -1211,15 +1196,15 @@ _func_enter_;
|
|||
|
||||
psetstakey_para = (struct set_stakey_parm *)rtw_zmalloc(sizeof(struct set_stakey_parm));
|
||||
if (psetstakey_para == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
psetstakey_rsp = (struct set_stakey_rsp *)rtw_zmalloc(sizeof(struct set_stakey_rsp));
|
||||
if (psetstakey_rsp == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
rtw_mfree((u8 *)psetstakey_para, sizeof(struct set_stakey_parm));
|
||||
kfree(ph2c);
|
||||
kfree(psetstakey_para);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1228,7 +1213,7 @@ _func_enter_;
|
|||
ph2c->rsp = (u8 *)psetstakey_rsp;
|
||||
ph2c->rspsz = sizeof(struct set_stakey_rsp);
|
||||
|
||||
_rtw_memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN);
|
||||
memcpy(psetstakey_para->addr, sta->hwaddr, ETH_ALEN);
|
||||
|
||||
psetstakey_para->algorithm = _NO_PRIVACY_;
|
||||
|
||||
|
@ -1259,14 +1244,14 @@ _func_enter_;
|
|||
psetrttblparm = (struct setratable_parm *)rtw_zmalloc(sizeof(struct setratable_parm));
|
||||
|
||||
if (psetrttblparm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
init_h2fwcmd_w_parm_no_rsp(ph2c, psetrttblparm, GEN_CMD_CODE(_SetRaTable));
|
||||
|
||||
_rtw_memcpy(psetrttblparm, prate_table, sizeof(struct setratable_parm));
|
||||
memcpy(psetrttblparm, prate_table, sizeof(struct setratable_parm));
|
||||
|
||||
res = rtw_enqueue_cmd(pcmdpriv, ph2c);
|
||||
exit:
|
||||
|
@ -1290,7 +1275,7 @@ _func_enter_;
|
|||
pgetrttblparm = (struct getratable_parm *)rtw_zmalloc(sizeof(struct getratable_parm));
|
||||
|
||||
if (pgetrttblparm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1331,15 +1316,15 @@ _func_enter_;
|
|||
|
||||
psetassocsta_para = (struct set_assocsta_parm *)rtw_zmalloc(sizeof(struct set_assocsta_parm));
|
||||
if (psetassocsta_para == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
psetassocsta_rsp = (struct set_stakey_rsp *)rtw_zmalloc(sizeof(struct set_assocsta_rsp));
|
||||
if (psetassocsta_rsp == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
rtw_mfree((u8 *)psetassocsta_para, sizeof(struct set_assocsta_parm));
|
||||
kfree(ph2c);
|
||||
kfree(psetassocsta_para);
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
|
@ -1347,7 +1332,7 @@ _func_enter_;
|
|||
ph2c->rsp = (u8 *)psetassocsta_rsp;
|
||||
ph2c->rspsz = sizeof(struct set_assocsta_rsp);
|
||||
|
||||
_rtw_memcpy(psetassocsta_para->addr, mac_addr, ETH_ALEN);
|
||||
memcpy(psetassocsta_para->addr, mac_addr, ETH_ALEN);
|
||||
|
||||
res = rtw_enqueue_cmd(pcmdpriv, ph2c);
|
||||
|
||||
|
@ -1375,13 +1360,13 @@ _func_enter_;
|
|||
|
||||
paddbareq_parm = (struct addBaReq_parm *)rtw_zmalloc(sizeof(struct addBaReq_parm));
|
||||
if (paddbareq_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
paddbareq_parm->tid = tid;
|
||||
_rtw_memcpy(paddbareq_parm->addr, addr, ETH_ALEN);
|
||||
memcpy(paddbareq_parm->addr, addr, ETH_ALEN);
|
||||
|
||||
init_h2fwcmd_w_parm_no_rsp(ph2c, paddbareq_parm, GEN_CMD_CODE(_AddBAReq));
|
||||
|
||||
|
@ -1414,7 +1399,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1462,7 +1447,7 @@ _func_enter_;
|
|||
/* need enqueue, prepare cmd_obj and enqueue */
|
||||
pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj));
|
||||
if (pcmdobj == NULL) {
|
||||
rtw_mfree((u8 *)set_ch_parm, sizeof(*set_ch_parm));
|
||||
kfree(set_ch_parm);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1474,7 +1459,7 @@ _func_enter_;
|
|||
if (H2C_SUCCESS != set_ch_hdl(padapter, (u8 *)set_ch_parm))
|
||||
res = _FAIL;
|
||||
|
||||
rtw_mfree((u8 *)set_ch_parm, sizeof(*set_ch_parm));
|
||||
kfree(set_ch_parm);
|
||||
}
|
||||
|
||||
/* do something based on res... */
|
||||
|
@ -1518,7 +1503,7 @@ _func_enter_;
|
|||
/* need enqueue, prepare cmd_obj and enqueue */
|
||||
pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj));
|
||||
if (pcmdobj == NULL) {
|
||||
rtw_mfree((u8 *)setChannelPlan_param, sizeof(struct SetChannelPlan_param));
|
||||
kfree(setChannelPlan_param);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1530,7 +1515,7 @@ _func_enter_;
|
|||
if (H2C_SUCCESS != set_chplan_hdl(padapter, (unsigned char *)setChannelPlan_param))
|
||||
res = _FAIL;
|
||||
|
||||
rtw_mfree((u8 *)setChannelPlan_param, sizeof(struct SetChannelPlan_param));
|
||||
kfree(setChannelPlan_param);
|
||||
}
|
||||
|
||||
/* do something based on res... */
|
||||
|
@ -1564,7 +1549,7 @@ _func_enter_;
|
|||
|
||||
ledBlink_param = (struct LedBlink_param *)rtw_zmalloc(sizeof(struct LedBlink_param));
|
||||
if (ledBlink_param == NULL) {
|
||||
rtw_mfree((u8 *)pcmdobj, sizeof(struct cmd_obj));
|
||||
kfree(pcmdobj);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1601,7 +1586,7 @@ _func_enter_;
|
|||
|
||||
setChannelSwitch_param = (struct SetChannelSwitch_param *)rtw_zmalloc(sizeof(struct SetChannelSwitch_param));
|
||||
if (setChannelSwitch_param == NULL) {
|
||||
rtw_mfree((u8 *)pcmdobj, sizeof(struct cmd_obj));
|
||||
kfree(pcmdobj);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1634,14 +1619,8 @@ static void traffic_status_watchdog(struct adapter *padapter)
|
|||
/* Determine if our traffic is busy now */
|
||||
/* */
|
||||
if (check_fwstate(pmlmepriv, _FW_LINKED)) {
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
if (pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 50 ||
|
||||
pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > 50)
|
||||
#else /* !CONFIG_BT_COEXIST */
|
||||
if (pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > 100 ||
|
||||
pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > 100)
|
||||
#endif /* !CONFIG_BT_COEXIST */
|
||||
{
|
||||
pmlmepriv->LinkDetectInfo.NumTxOkInPeriod > 100) {
|
||||
bBusyTraffic = true;
|
||||
|
||||
if (pmlmepriv->LinkDetectInfo.NumRxOkInPeriod > pmlmepriv->LinkDetectInfo.NumTxOkInPeriod)
|
||||
|
@ -1661,10 +1640,6 @@ static void traffic_status_watchdog(struct adapter *padapter)
|
|||
bHigherBusyTxTraffic = true;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
if (BT_1Ant(padapter) == false)
|
||||
#endif
|
||||
{
|
||||
/* check traffic for powersaving. */
|
||||
if (((pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod + pmlmepriv->LinkDetectInfo.NumTxOkInPeriod) > 8) ||
|
||||
(pmlmepriv->LinkDetectInfo.NumRxUnicastOkInPeriod > 2))
|
||||
|
@ -1677,7 +1652,6 @@ static void traffic_status_watchdog(struct adapter *padapter)
|
|||
LPS_Enter(padapter);
|
||||
else
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
} else {
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
|
@ -1693,15 +1667,14 @@ static void traffic_status_watchdog(struct adapter *padapter)
|
|||
pmlmepriv->LinkDetectInfo.bHigherBusyTxTraffic = bHigherBusyTxTraffic;
|
||||
}
|
||||
|
||||
void dynamic_chk_wk_hdl(struct adapter *padapter, u8 *pbuf, int sz);
|
||||
void dynamic_chk_wk_hdl(struct adapter *padapter, u8 *pbuf, int sz)
|
||||
static void dynamic_chk_wk_hdl(struct adapter *padapter, u8 *pbuf, int sz)
|
||||
{
|
||||
struct mlme_priv *pmlmepriv;
|
||||
|
||||
padapter = (struct adapter *)pbuf;
|
||||
pmlmepriv = &(padapter->mlmepriv);
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == true)
|
||||
expire_timeout_chk(padapter);
|
||||
#endif
|
||||
|
@ -1712,14 +1685,9 @@ void dynamic_chk_wk_hdl(struct adapter *padapter, u8 *pbuf, int sz)
|
|||
traffic_status_watchdog(padapter);
|
||||
|
||||
rtw_hal_dm_watchdog(padapter);
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
/* BT-Coexist */
|
||||
BT_CoexistMechanism(padapter);
|
||||
#endif
|
||||
}
|
||||
|
||||
void lps_ctrl_wk_hdl(struct adapter *padapter, u8 lps_ctrl_type)
|
||||
static void lps_ctrl_wk_hdl(struct adapter *padapter, u8 lps_ctrl_type)
|
||||
{
|
||||
struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
|
||||
struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
|
||||
|
@ -1733,15 +1701,9 @@ _func_enter_;
|
|||
|
||||
switch (lps_ctrl_type) {
|
||||
case LPS_CTRL_SCAN:
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
BT_WifiScanNotify(padapter, true);
|
||||
if (BT_1Ant(padapter) == false)
|
||||
#endif
|
||||
{
|
||||
if (check_fwstate(pmlmepriv, _FW_LINKED) == true) {
|
||||
/* connect */
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
if (check_fwstate(pmlmepriv, _FW_LINKED) == true) {
|
||||
/* connect */
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
break;
|
||||
case LPS_CTRL_JOINBSS:
|
||||
|
@ -1752,40 +1714,19 @@ _func_enter_;
|
|||
/* Reset LPS Setting */
|
||||
padapter->pwrctrlpriv.LpsIdleCount = 0;
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_JOINBSSRPT, (u8 *)(&mstatus));
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
BT_WifiMediaStatusNotify(padapter, mstatus);
|
||||
#endif
|
||||
break;
|
||||
case LPS_CTRL_DISCONNECT:
|
||||
mstatus = 0;/* disconnect */
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
BT_WifiMediaStatusNotify(padapter, mstatus);
|
||||
if (BT_1Ant(padapter) == false)
|
||||
#endif
|
||||
{
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
LPS_Leave(padapter);
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_JOINBSSRPT, (u8 *)(&mstatus));
|
||||
break;
|
||||
case LPS_CTRL_SPECIAL_PACKET:
|
||||
/* DBG_88E("LPS_CTRL_SPECIAL_PACKET\n"); */
|
||||
pwrpriv->DelayLPSLastTimeStamp = rtw_get_current_time();
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
BT_SpecialPacketNotify(padapter);
|
||||
if (BT_1Ant(padapter) == false)
|
||||
#endif
|
||||
{
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
LPS_Leave(padapter);
|
||||
break;
|
||||
case LPS_CTRL_LEAVE:
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
BT_LpsLeave(padapter);
|
||||
if (BT_1Ant(padapter) == false)
|
||||
#endif
|
||||
{
|
||||
LPS_Leave(padapter);
|
||||
}
|
||||
LPS_Leave(padapter);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1816,7 +1757,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1861,7 +1802,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1905,7 +1846,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1926,12 +1867,12 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
void power_saving_wk_hdl(struct adapter *padapter, u8 *pbuf, int sz)
|
||||
static void power_saving_wk_hdl(struct adapter *padapter, u8 *pbuf, int sz)
|
||||
{
|
||||
rtw_ps_processor(padapter);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
u8 p2p_protocol_wk_cmd(struct adapter *padapter, int intCmdType)
|
||||
{
|
||||
struct cmd_obj *ph2c;
|
||||
|
@ -1953,7 +1894,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1972,7 +1913,7 @@ _func_exit_;
|
|||
|
||||
return res;
|
||||
}
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
||||
u8 rtw_ps_cmd(struct adapter *padapter)
|
||||
{
|
||||
|
@ -1991,7 +1932,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ppscmd, sizeof(struct cmd_obj));
|
||||
kfree(ppscmd);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -2009,7 +1950,7 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
|
||||
static void rtw_chk_hi_queue_hdl(struct adapter *padapter)
|
||||
{
|
||||
|
@ -2066,7 +2007,7 @@ u8 rtw_chk_hi_queue_cmd(struct adapter *padapter)
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -2098,7 +2039,7 @@ u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt)
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((u8 *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -2165,17 +2106,19 @@ static void c2h_wk_callback(struct work_struct *work)
|
|||
continue;
|
||||
|
||||
if (!c2h_evt_exist(c2h_evt)) {
|
||||
rtw_mfree((u8 *)c2h_evt, 16);
|
||||
kfree(c2h_evt);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ccx_id_filter(c2h_evt->id) == true) {
|
||||
/* Handle CCX report here */
|
||||
rtw_hal_c2h_handler(adapter, c2h_evt);
|
||||
rtw_mfree((u8 *)c2h_evt, 16);
|
||||
kfree(c2h_evt);
|
||||
} else {
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
/* Enqueue into cmd_thread for others */
|
||||
rtw_c2h_wk_cmd(adapter, (u8 *)c2h_evt);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2207,6 +2150,7 @@ u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf)
|
|||
case ANT_SELECT_WK_CID:
|
||||
antenna_select_wk_hdl(padapter, pdrvextra_cmd->type_size);
|
||||
break;
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
case P2P_PS_WK_CID:
|
||||
p2p_ps_wk_hdl(padapter, pdrvextra_cmd->type_size);
|
||||
break;
|
||||
|
@ -2215,11 +2159,12 @@ u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf)
|
|||
/* I used the type_size as the type command */
|
||||
p2p_protocol_wk_hdl(padapter, pdrvextra_cmd->type_size);
|
||||
break;
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#endif
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
case CHECK_HIQ_WK_CID:
|
||||
rtw_chk_hi_queue_hdl(padapter);
|
||||
break;
|
||||
#endif /* CONFIG_AP_MODE */
|
||||
#endif /* CONFIG_88EU_AP_MODE */
|
||||
case C2H_WK_CID:
|
||||
c2h_evt_hdl(padapter, (struct c2h_evt_hdr *)pdrvextra_cmd->pbuf, NULL);
|
||||
break;
|
||||
|
@ -2228,7 +2173,7 @@ u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf)
|
|||
}
|
||||
|
||||
if (pdrvextra_cmd->pbuf && pdrvextra_cmd->type_size > 0)
|
||||
rtw_mfree(pdrvextra_cmd->pbuf, pdrvextra_cmd->type_size);
|
||||
kfree(pdrvextra_cmd->pbuf);
|
||||
|
||||
return H2C_SUCCESS;
|
||||
}
|
||||
|
@ -2279,7 +2224,6 @@ exit:
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
|
||||
void rtw_joinbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd)
|
||||
{
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
|
@ -2350,9 +2294,9 @@ _func_enter_;
|
|||
}
|
||||
|
||||
pnetwork->Length = get_wlan_bssid_ex_sz(pnetwork);
|
||||
_rtw_memcpy(&(pwlan->network), pnetwork, pnetwork->Length);
|
||||
memcpy(&(pwlan->network), pnetwork, pnetwork->Length);
|
||||
|
||||
_rtw_memcpy(&tgt_network->network, pnetwork, (get_wlan_bssid_ex_sz(pnetwork)));
|
||||
memcpy(&tgt_network->network, pnetwork, (get_wlan_bssid_ex_sz(pnetwork)));
|
||||
|
||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
||||
|
||||
|
@ -2418,14 +2362,3 @@ exit:
|
|||
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
void rtw_getrttbl_cmd_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd)
|
||||
{
|
||||
_func_enter_;
|
||||
|
||||
rtw_free_cmd_obj(pcmd);
|
||||
if (padapter->registrypriv.mp_mode == 1)
|
||||
padapter->mppriv.workparam.bcompleted = true;
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
|
|
@ -555,10 +555,9 @@ int proc_get_rx_signal(char *page, char **start,
|
|||
{
|
||||
struct net_device *dev = data;
|
||||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
|
||||
int len = 0;
|
||||
|
||||
len += snprintf(page + len, count - len,
|
||||
len = snprintf(page + len, count,
|
||||
"rssi:%d\n"
|
||||
"rxpwdb:%d\n"
|
||||
"signal_strength:%u\n"
|
||||
|
@ -632,13 +631,13 @@ int proc_set_ht_enable(struct file *file, const char __user *buffer,
|
|||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
char tmp[32];
|
||||
s32 mode;
|
||||
s32 mode = 0;
|
||||
|
||||
if (count < 1)
|
||||
return -EFAULT;
|
||||
|
||||
if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
|
||||
if (pregpriv && mode >= 0 && mode < 2) {
|
||||
if (pregpriv) {
|
||||
pregpriv->ht_enable = mode;
|
||||
pr_info("ht_enable=%d\n", pregpriv->ht_enable);
|
||||
}
|
||||
|
@ -674,13 +673,13 @@ int proc_set_cbw40_enable(struct file *file, const char __user *buffer,
|
|||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
char tmp[32];
|
||||
s32 mode;
|
||||
s32 mode = 0;
|
||||
|
||||
if (count < 1)
|
||||
return -EFAULT;
|
||||
|
||||
if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
|
||||
if (pregpriv && mode >= 0 && mode < 2) {
|
||||
if (pregpriv) {
|
||||
pregpriv->cbw40_enable = mode;
|
||||
pr_info("cbw40_enable=%d\n", mode);
|
||||
}
|
||||
|
@ -715,13 +714,13 @@ int proc_set_ampdu_enable(struct file *file, const char __user *buffer,
|
|||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
char tmp[32];
|
||||
s32 mode;
|
||||
s32 mode = 0;
|
||||
|
||||
if (count < 1)
|
||||
return -EFAULT;
|
||||
|
||||
if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
|
||||
if (pregpriv && mode >= 0 && mode < 3) {
|
||||
if (pregpriv) {
|
||||
pregpriv->ampdu_enable = mode;
|
||||
pr_info("ampdu_enable=%d\n", mode);
|
||||
}
|
||||
|
@ -776,13 +775,13 @@ int proc_set_rx_stbc(struct file *file, const char __user *buffer,
|
|||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
char tmp[32];
|
||||
u32 mode;
|
||||
u32 mode = 0;
|
||||
|
||||
if (count < 1)
|
||||
return -EFAULT;
|
||||
|
||||
if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
|
||||
if (pregpriv && (mode == 0 || mode == 1 || mode == 2 || mode == 3)) {
|
||||
if (pregpriv) {
|
||||
pregpriv->rx_stbc = mode;
|
||||
printk("rx_stbc=%d\n", mode);
|
||||
}
|
||||
|
@ -830,7 +829,7 @@ int proc_set_rssi_disp(struct file *file, const char __user *buffer,
|
|||
return count;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
|
||||
int proc_get_all_sta_info(char *page, char **start,
|
||||
off_t offset, int count,
|
||||
|
@ -947,52 +946,3 @@ int proc_get_best_channel(char *page, char **start,
|
|||
*eof = 1;
|
||||
return len;
|
||||
}
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
#define _bt_dbg_off_ 0
|
||||
#define _bt_dbg_on_ 1
|
||||
|
||||
extern u32 BTCoexDbgLevel;
|
||||
int proc_get_btcoex_dbg(char *page, char **start,
|
||||
off_t offset, int count,
|
||||
int *eof, void *data)
|
||||
{
|
||||
struct net_device *dev = data;
|
||||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
|
||||
int len = 0;
|
||||
|
||||
if (pregpriv)
|
||||
len += snprintf(page + len, count - len,
|
||||
"%d\n",
|
||||
BTCoexDbgLevel
|
||||
);
|
||||
|
||||
*eof = 1;
|
||||
return len;
|
||||
}
|
||||
|
||||
int proc_set_btcoex_dbg(struct file *file, const char __user *buffer,
|
||||
unsigned long count, void *data)
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)data;
|
||||
struct adapter *padapter = (struct adapter *)rtw_netdev_priv(dev);
|
||||
struct registry_priv *pregpriv = &padapter->registrypriv;
|
||||
char tmp[32];
|
||||
u32 mode;
|
||||
|
||||
if (count < 1)
|
||||
return -EFAULT;
|
||||
|
||||
if (buffer && !copy_from_user(tmp, buffer, sizeof(tmp))) {
|
||||
int num = sscanf(tmp, "%d ", &mode);
|
||||
|
||||
if (pregpriv && (mode == 0 || mode == 1 || mode == 2 || mode == 3)) {
|
||||
BTCoexDbgLevel = mode;
|
||||
pr_info("btcoex_dbg=%d\n", BTCoexDbgLevel);
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_BT_COEXIST */
|
||||
|
|
206
core/rtw_efuse.c
206
core/rtw_efuse.c
|
@ -68,7 +68,7 @@ Efuse_Read1ByteFromFakeContent(
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
static bool
|
||||
Efuse_Write1ByteToFakeContent(
|
||||
struct adapter *pAdapter,
|
||||
u16 Offset,
|
||||
|
@ -228,7 +228,7 @@ ReadEFuseByte(
|
|||
/* write addr must be after sec5. */
|
||||
/* */
|
||||
|
||||
void efuse_ReadEFuse(struct adapter *Adapter, u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf, bool pseudo)
|
||||
static void efuse_ReadEFuse(struct adapter *Adapter, u8 efuseType, u16 _offset, u16 _size_byte, u8 *pbuf, bool pseudo)
|
||||
{
|
||||
Adapter->HalFunc.ReadEFuse(Adapter, efuseType, _offset, _size_byte, pbuf, pseudo);
|
||||
}
|
||||
|
@ -297,63 +297,6 @@ u8 EFUSE_Read1Byte(struct adapter *Adapter, u16 Address)
|
|||
|
||||
} /* EFUSE_Read1Byte */
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: EFUSE_Write1Byte
|
||||
*
|
||||
* Overview: Copy from WMAC fot EFUSE write 1 byte.
|
||||
*
|
||||
* Input: NONE
|
||||
*
|
||||
* Output: NONE
|
||||
*
|
||||
* Return: NONE
|
||||
*
|
||||
* Revised History:
|
||||
* When Who Remark
|
||||
* 09/23/2008 MHC Copy from WMAC.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
void EFUSE_Write1Byte(struct adapter *Adapter, u16 Address, u8 Value)
|
||||
{
|
||||
u8 Bytetemp = {0x00};
|
||||
u8 temp = {0x00};
|
||||
u32 k = 0;
|
||||
u16 contentLen = 0;
|
||||
|
||||
/* RT_TRACE(COMP_EFUSE, DBG_LOUD, ("Addr =%x Data =%x\n", Address, Value)); */
|
||||
EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI , TYPE_EFUSE_REAL_CONTENT_LEN, (void *)&contentLen, false);
|
||||
|
||||
if (Address < contentLen) { /* E-fuse 512Byte */
|
||||
rtw_write8(Adapter, EFUSE_CTRL, Value);
|
||||
|
||||
/* Write E-fuse Register address bit0~7 */
|
||||
temp = Address & 0xFF;
|
||||
rtw_write8(Adapter, EFUSE_CTRL+1, temp);
|
||||
Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+2);
|
||||
|
||||
/* Write E-fuse Register address bit8~9 */
|
||||
temp = ((Address >> 8) & 0x03) | (Bytetemp & 0xFC);
|
||||
rtw_write8(Adapter, EFUSE_CTRL+2, temp);
|
||||
|
||||
/* Write 0x30[31]= 1 */
|
||||
Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
|
||||
temp = Bytetemp | 0x80;
|
||||
rtw_write8(Adapter, EFUSE_CTRL+3, temp);
|
||||
|
||||
/* Wait Write-ready (0x30[31]= 0) */
|
||||
Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
|
||||
while (Bytetemp & 0x80) {
|
||||
Bytetemp = rtw_read8(Adapter, EFUSE_CTRL+3);
|
||||
k++;
|
||||
if (k == 100) {
|
||||
k = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} /* EFUSE_Write1Byte */
|
||||
|
||||
/* 11/16/2008 MH Read one byte from real Efuse. */
|
||||
u8 efuse_OneByteRead(struct adapter *pAdapter, u16 addr, u8 *data, bool pseudo)
|
||||
{
|
||||
|
@ -599,7 +542,7 @@ u8 rtw_efuse_map_write(struct adapter *padapter, u16 addr, u16 cnts, u8 *data)
|
|||
{
|
||||
u8 offset, word_en;
|
||||
u8 *map;
|
||||
u8 newdata[PGPKT_DATA_SIZE + 1];
|
||||
u8 newdata[PGPKT_DATA_SIZE];
|
||||
s32 i, idx;
|
||||
u8 ret = _SUCCESS;
|
||||
u16 mapLen = 0;
|
||||
|
@ -682,7 +625,7 @@ u8 rtw_efuse_map_write(struct adapter *padapter, u16 addr, u16 cnts, u8 *data)
|
|||
|
||||
Efuse_PowerSwitch(padapter, true, false);
|
||||
exit:
|
||||
rtw_mfree(map, mapLen);
|
||||
kfree(map);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -691,7 +634,7 @@ u8 rtw_BT_efuse_map_write(struct adapter *padapter, u16 addr, u16 cnts, u8 *data
|
|||
{
|
||||
u8 offset, word_en;
|
||||
u8 *map;
|
||||
u8 newdata[PGPKT_DATA_SIZE + 1];
|
||||
u8 newdata[PGPKT_DATA_SIZE];
|
||||
s32 i, idx;
|
||||
u8 ret = _SUCCESS;
|
||||
u16 mapLen = 0;
|
||||
|
@ -778,40 +721,11 @@ u8 rtw_BT_efuse_map_write(struct adapter *padapter, u16 addr, u16 cnts, u8 *data
|
|||
|
||||
exit:
|
||||
|
||||
rtw_mfree(map, mapLen);
|
||||
kfree(map);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: Efuse_ReadAllMap
|
||||
*
|
||||
* Overview: Read All Efuse content
|
||||
*
|
||||
* Input: NONE
|
||||
*
|
||||
* Output: NONE
|
||||
*
|
||||
* Return: NONE
|
||||
*
|
||||
* Revised History:
|
||||
* When Who Remark
|
||||
* 11/11/2008 MHC Create Version 0.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
void Efuse_ReadAllMap(struct adapter *pAdapter, u8 efuseType, u8 *Efuse, bool pseudo)
|
||||
{
|
||||
u16 mapLen = 0;
|
||||
|
||||
Efuse_PowerSwitch(pAdapter, false, true);
|
||||
|
||||
EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (void *)&mapLen, pseudo);
|
||||
|
||||
efuse_ReadEFuse(pAdapter, efuseType, 0, mapLen, Efuse, pseudo);
|
||||
|
||||
Efuse_PowerSwitch(pAdapter, false, false);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: efuse_ShadowRead1Byte
|
||||
* efuse_ShadowRead2Byte
|
||||
|
@ -872,13 +786,10 @@ efuse_ShadowRead4Byte(
|
|||
|
||||
} /* efuse_ShadowRead4Byte */
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: efuse_ShadowWrite1Byte
|
||||
* efuse_ShadowWrite2Byte
|
||||
* efuse_ShadowWrite4Byte
|
||||
* Function: Efuse_ReadAllMap
|
||||
*
|
||||
* Overview: Write efuse modify map by one/two/four byte.
|
||||
* Overview: Read All Efuse content
|
||||
*
|
||||
* Input: NONE
|
||||
*
|
||||
|
@ -888,50 +799,21 @@ efuse_ShadowRead4Byte(
|
|||
*
|
||||
* Revised History:
|
||||
* When Who Remark
|
||||
* 11/12/2008 MHC Create Version 0.
|
||||
* 11/11/2008 MHC Create Version 0.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void
|
||||
efuse_ShadowWrite1Byte(
|
||||
struct adapter *pAdapter,
|
||||
u16 Offset,
|
||||
u8 Value)
|
||||
static void Efuse_ReadAllMap(struct adapter *pAdapter, u8 efuseType, u8 *Efuse, bool pseudo)
|
||||
{
|
||||
struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter);
|
||||
u16 mapLen = 0;
|
||||
|
||||
pEEPROM->efuse_eeprom_data[Offset] = Value;
|
||||
Efuse_PowerSwitch(pAdapter, false, true);
|
||||
|
||||
} /* efuse_ShadowWrite1Byte */
|
||||
EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_MAP_LEN, (void *)&mapLen, pseudo);
|
||||
|
||||
/* Write Two Bytes */
|
||||
static void
|
||||
efuse_ShadowWrite2Byte(
|
||||
struct adapter *pAdapter,
|
||||
u16 Offset,
|
||||
u16 Value)
|
||||
{
|
||||
struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter);
|
||||
efuse_ReadEFuse(pAdapter, efuseType, 0, mapLen, Efuse, pseudo);
|
||||
|
||||
pEEPROM->efuse_eeprom_data[Offset] = Value&0x00FF;
|
||||
pEEPROM->efuse_eeprom_data[Offset+1] = Value>>8;
|
||||
|
||||
} /* efuse_ShadowWrite1Byte */
|
||||
|
||||
/* Write Four Bytes */
|
||||
static void
|
||||
efuse_ShadowWrite4Byte(
|
||||
struct adapter *pAdapter,
|
||||
u16 Offset,
|
||||
u32 Value)
|
||||
{
|
||||
struct eeprom_priv *pEEPROM = GET_EEPROM_EFUSE_PRIV(pAdapter);
|
||||
|
||||
pEEPROM->efuse_eeprom_data[Offset] = (u8)(Value&0x000000FF);
|
||||
pEEPROM->efuse_eeprom_data[Offset+1] = (u8)((Value>>8)&0x0000FF);
|
||||
pEEPROM->efuse_eeprom_data[Offset+2] = (u8)((Value>>16)&0x00FF);
|
||||
pEEPROM->efuse_eeprom_data[Offset+3] = (u8)((Value>>24)&0xFF);
|
||||
|
||||
} /* efuse_ShadowWrite1Byte */
|
||||
Efuse_PowerSwitch(pAdapter, false, false);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: EFUSE_ShadowMapUpdate
|
||||
|
@ -981,12 +863,7 @@ void EFUSE_ShadowMapUpdate(
|
|||
* 11/12/2008 MHC Create Version 0.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
void
|
||||
EFUSE_ShadowRead(
|
||||
struct adapter *pAdapter,
|
||||
u8 Type,
|
||||
u16 Offset,
|
||||
u32 *Value)
|
||||
void EFUSE_ShadowRead(struct adapter *pAdapter, u8 Type, u16 Offset, u32 *Value)
|
||||
{
|
||||
if (Type == 1)
|
||||
efuse_ShadowRead1Byte(pAdapter, Offset, (u8 *)Value);
|
||||
|
@ -996,52 +873,3 @@ EFUSE_ShadowRead(
|
|||
efuse_ShadowRead4Byte(pAdapter, Offset, (u32 *)Value);
|
||||
|
||||
} /* EFUSE_ShadowRead */
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: EFUSE_ShadowWrite
|
||||
*
|
||||
* Overview: Write efuse modify map for later update operation to use!!!!!
|
||||
*
|
||||
* Input: NONE
|
||||
*
|
||||
* Output: NONE
|
||||
*
|
||||
* Return: NONE
|
||||
*
|
||||
* Revised History:
|
||||
* When Who Remark
|
||||
* 11/12/2008 MHC Create Version 0.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
void EFUSE_ShadowWrite(struct adapter *pAdapter, u8 Type, u16 Offset, u32 Value)
|
||||
{
|
||||
if (pAdapter->registrypriv.mp_mode == 0)
|
||||
return;
|
||||
|
||||
if (Type == 1)
|
||||
efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value);
|
||||
else if (Type == 2)
|
||||
efuse_ShadowWrite2Byte(pAdapter, Offset, (u16)Value);
|
||||
else if (Type == 4)
|
||||
efuse_ShadowWrite4Byte(pAdapter, Offset, (u32)Value);
|
||||
|
||||
} /* EFUSE_ShadowWrite */
|
||||
|
||||
void Efuse_InitSomeVar(struct adapter *pAdapter)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
_rtw_memset((void *)&fakeEfuseContent[0], 0xff, EFUSE_MAX_HW_SIZE);
|
||||
_rtw_memset((void *)&fakeEfuseInitMap[0], 0xff, EFUSE_MAX_MAP_LEN);
|
||||
_rtw_memset((void *)&fakeEfuseModifiedMap[0], 0xff, EFUSE_MAX_MAP_LEN);
|
||||
|
||||
for (i = 0; i < EFUSE_MAX_BT_BANK; i++)
|
||||
_rtw_memset((void *)&BTEfuseContent[i][0], EFUSE_MAX_HW_SIZE, 0xff);
|
||||
_rtw_memset((void *)&BTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
|
||||
_rtw_memset((void *)&BTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
|
||||
|
||||
for (i = 0; i < EFUSE_MAX_BT_BANK; i++)
|
||||
_rtw_memset((void *)&fakeBTEfuseContent[i][0], 0xff, EFUSE_MAX_HW_SIZE);
|
||||
_rtw_memset((void *)&fakeBTEfuseInitMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
|
||||
_rtw_memset((void *)&fakeBTEfuseModifiedMap[0], 0xff, EFUSE_BT_MAX_MAP_LEN);
|
||||
}
|
||||
|
|
|
@ -132,7 +132,7 @@ int rtw_check_network_type(unsigned char *rate, int ratelen, int channel)
|
|||
u8 *rtw_set_fixed_ie(unsigned char *pbuf, unsigned int len, unsigned char *source,
|
||||
unsigned int *frlen)
|
||||
{
|
||||
_rtw_memcpy((void *)pbuf, (void *)source, len);
|
||||
memcpy((void *)pbuf, (void *)source, len);
|
||||
*frlen = *frlen + len;
|
||||
return pbuf + len;
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ _func_enter_;
|
|||
*(pbuf + 1) = (u8)len;
|
||||
|
||||
if (len > 0)
|
||||
_rtw_memcpy((void *)(pbuf + 2), (void *)source, len);
|
||||
memcpy((void *)(pbuf + 2), (void *)source, len);
|
||||
|
||||
*frlen = *frlen + (len + 2);
|
||||
|
||||
|
@ -277,7 +277,7 @@ u8 *rtw_get_ie_ex(u8 *in_ie, uint in_len, u8 eid, u8 *oui, u8 oui_len, u8 *ie, u
|
|||
target_ie = &in_ie[cnt];
|
||||
|
||||
if (ie)
|
||||
_rtw_memcpy(ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
memcpy(ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
|
||||
if (ielen)
|
||||
*ielen = in_ie[cnt+1]+2;
|
||||
|
@ -322,8 +322,8 @@ int rtw_ies_remove_ie(u8 *ies, uint *ies_len, uint offset, u8 eid, u8 *oui, u8 o
|
|||
u8 *remain_ies = target_ie + target_ielen;
|
||||
uint remain_len = search_len - (remain_ies - start);
|
||||
|
||||
_rtw_memcpy(buf, remain_ies, remain_len);
|
||||
_rtw_memcpy(target_ie, buf, remain_len);
|
||||
memcpy(buf, remain_ies, remain_len);
|
||||
memcpy(target_ie, buf, remain_len);
|
||||
*ies_len = *ies_len - target_ielen;
|
||||
ret = _SUCCESS;
|
||||
|
||||
|
@ -345,20 +345,20 @@ _func_enter_;
|
|||
|
||||
switch (mode) {
|
||||
case WIRELESS_11B:
|
||||
_rtw_memcpy(SupportedRates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
|
||||
memcpy(SupportedRates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
|
||||
break;
|
||||
case WIRELESS_11G:
|
||||
case WIRELESS_11A:
|
||||
case WIRELESS_11_5N:
|
||||
case WIRELESS_11A_5N:/* Todo: no basic rate for ofdm ? */
|
||||
_rtw_memcpy(SupportedRates, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
|
||||
memcpy(SupportedRates, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
|
||||
break;
|
||||
case WIRELESS_11BG:
|
||||
case WIRELESS_11G_24N:
|
||||
case WIRELESS_11_24N:
|
||||
case WIRELESS_11BG_24N:
|
||||
_rtw_memcpy(SupportedRates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
|
||||
_rtw_memcpy(SupportedRates + IEEE80211_CCK_RATE_LEN, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
|
||||
memcpy(SupportedRates, WIFI_CCKRATES, IEEE80211_CCK_RATE_LEN);
|
||||
memcpy(SupportedRates + IEEE80211_CCK_RATE_LEN, WIFI_OFDMRATES, IEEE80211_NUM_OFDM_RATESLEN);
|
||||
break;
|
||||
}
|
||||
_func_exit_;
|
||||
|
@ -467,7 +467,7 @@ unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit)
|
|||
goto check_next_ie;
|
||||
|
||||
/* check version... */
|
||||
_rtw_memcpy((u8 *)&le_tmp, (pbuf + 6), sizeof(val16));
|
||||
memcpy((u8 *)&le_tmp, (pbuf + 6), sizeof(val16));
|
||||
|
||||
val16 = le16_to_cpu(le_tmp);
|
||||
if (val16 != 0x0001)
|
||||
|
@ -689,7 +689,7 @@ _func_enter_;
|
|||
sec_idx, in_ie[cnt+1]+2));
|
||||
|
||||
if (wpa_ie) {
|
||||
_rtw_memcpy(wpa_ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
memcpy(wpa_ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
|
||||
for (i = 0; i < (in_ie[cnt+1]+2); i += 8) {
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
|
||||
|
@ -708,7 +708,7 @@ _func_enter_;
|
|||
sec_idx, in_ie[cnt+1]+2));
|
||||
|
||||
if (rsn_ie) {
|
||||
_rtw_memcpy(rsn_ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
memcpy(rsn_ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
|
||||
for (i = 0; i < (in_ie[cnt+1]+2); i += 8) {
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
|
||||
|
@ -778,7 +778,7 @@ u8 *rtw_get_wps_ie(u8 *in_ie, uint in_len, u8 *wps_ie, uint *wps_ielen)
|
|||
wpsie_ptr = &in_ie[cnt];
|
||||
|
||||
if (wps_ie)
|
||||
_rtw_memcpy(wps_ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
memcpy(wps_ie, &in_ie[cnt], in_ie[cnt+1]+2);
|
||||
|
||||
if (wps_ielen)
|
||||
*wps_ielen = in_ie[cnt+1]+2;
|
||||
|
@ -828,7 +828,7 @@ u8 *rtw_get_wps_attr(u8 *wps_ie, uint wps_ielen, u16 target_attr_id , u8 *buf_at
|
|||
if (attr_id == target_attr_id) {
|
||||
target_attr_ptr = attr_ptr;
|
||||
if (buf_attr)
|
||||
_rtw_memcpy(buf_attr, attr_ptr, attr_len);
|
||||
memcpy(buf_attr, attr_ptr, attr_len);
|
||||
if (len_attr)
|
||||
*len_attr = attr_len;
|
||||
break;
|
||||
|
@ -861,7 +861,7 @@ u8 *rtw_get_wps_attr_content(u8 *wps_ie, uint wps_ielen, u16 target_attr_id , u8
|
|||
|
||||
if (attr_ptr && attr_len) {
|
||||
if (buf_content)
|
||||
_rtw_memcpy(buf_content, attr_ptr+4, attr_len-4);
|
||||
memcpy(buf_content, attr_ptr+4, attr_len-4);
|
||||
|
||||
if (len_content)
|
||||
*len_content = attr_len-4;
|
||||
|
@ -1114,9 +1114,9 @@ void rtw_macaddr_cfg(u8 *mac_addr)
|
|||
|
||||
for (jj = 0, kk = 0; jj < ETH_ALEN; jj++, kk += 3)
|
||||
mac[jj] = key_2char2num(rtw_initmac[kk], rtw_initmac[kk + 1]);
|
||||
_rtw_memcpy(mac_addr, mac, ETH_ALEN);
|
||||
memcpy(mac_addr, mac, ETH_ALEN);
|
||||
} else { /* Use the mac address stored in the Efuse */
|
||||
_rtw_memcpy(mac, mac_addr, ETH_ALEN);
|
||||
memcpy(mac, mac_addr, ETH_ALEN);
|
||||
}
|
||||
|
||||
if (((mac[0] == 0xff) && (mac[1] == 0xff) && (mac[2] == 0xff) &&
|
||||
|
@ -1130,7 +1130,7 @@ void rtw_macaddr_cfg(u8 *mac_addr)
|
|||
mac[4] = 0x00;
|
||||
mac[5] = 0x00;
|
||||
/* use default mac addresss */
|
||||
_rtw_memcpy(mac_addr, mac, ETH_ALEN);
|
||||
memcpy(mac_addr, mac, ETH_ALEN);
|
||||
DBG_88E("MAC Address from efuse error, assign default one !!!\n");
|
||||
}
|
||||
|
||||
|
@ -1147,7 +1147,7 @@ void dump_ies(u8 *buf, u32 buf_len)
|
|||
len = *(pos+1);
|
||||
|
||||
DBG_88E("%s ID:%u, LEN:%u\n", __func__, id, len);
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
dump_p2p_ie(pos, len);
|
||||
#endif
|
||||
dump_wps_ie(pos, len);
|
||||
|
@ -1177,7 +1177,7 @@ void dump_wps_ie(u8 *ie, u32 ie_len)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
void dump_p2p_ie(u8 *ie, u32 ie_len)
|
||||
{
|
||||
u8 *pos = (u8 *)ie;
|
||||
|
@ -1227,7 +1227,7 @@ u8 *rtw_get_p2p_ie(u8 *in_ie, int in_len, u8 *p2p_ie, uint *p2p_ielen)
|
|||
p2p_ie_ptr = in_ie + cnt;
|
||||
|
||||
if (p2p_ie != NULL)
|
||||
_rtw_memcpy(p2p_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
|
||||
memcpy(p2p_ie, &in_ie[cnt], in_ie[cnt + 1] + 2);
|
||||
if (p2p_ielen != NULL)
|
||||
*p2p_ielen = in_ie[cnt + 1] + 2;
|
||||
return p2p_ie_ptr;
|
||||
|
@ -1274,7 +1274,7 @@ u8 *rtw_get_p2p_attr(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id , u8 *buf_att
|
|||
target_attr_ptr = attr_ptr;
|
||||
|
||||
if (buf_attr)
|
||||
_rtw_memcpy(buf_attr, attr_ptr, attr_len);
|
||||
memcpy(buf_attr, attr_ptr, attr_len);
|
||||
if (len_attr)
|
||||
*len_attr = attr_len;
|
||||
break;
|
||||
|
@ -1307,7 +1307,7 @@ u8 *rtw_get_p2p_attr_content(u8 *p2p_ie, uint p2p_ielen, u8 target_attr_id , u8
|
|||
|
||||
if (attr_ptr && attr_len) {
|
||||
if (buf_content)
|
||||
_rtw_memcpy(buf_content, attr_ptr+3, attr_len-3);
|
||||
memcpy(buf_content, attr_ptr+3, attr_len-3);
|
||||
|
||||
if (len_content)
|
||||
*len_content = attr_len-3;
|
||||
|
@ -1328,7 +1328,7 @@ u32 rtw_set_p2p_attr_content(u8 *pbuf, u8 attr_id, u16 attr_len, u8 *pdata_attr)
|
|||
RTW_PUT_LE16(pbuf + 1, attr_len);
|
||||
|
||||
if (pdata_attr)
|
||||
_rtw_memcpy(pbuf + 3, pdata_attr, attr_len);
|
||||
memcpy(pbuf + 3, pdata_attr, attr_len);
|
||||
|
||||
a_len = attr_len + 3;
|
||||
|
||||
|
@ -1348,7 +1348,7 @@ static uint rtw_p2p_attr_remove(u8 *ie, uint ielen_ori, u8 attr_id)
|
|||
uint remain_len = ielen-(next_attr-ie);
|
||||
|
||||
_rtw_memset(target_attr, 0, target_attr_len);
|
||||
_rtw_memcpy(target_attr, next_attr, remain_len);
|
||||
memcpy(target_attr, next_attr, remain_len);
|
||||
_rtw_memset(target_attr+remain_len, 0, target_attr_len);
|
||||
*(ie+1) -= target_attr_len;
|
||||
ielen -= target_attr_len;
|
||||
|
@ -1372,14 +1372,14 @@ void rtw_wlan_bssid_ex_remove_p2p_attr(struct wlan_bssid_ex *bss_ex, u8 attr_id)
|
|||
u8 *next_ie = p2p_ie+p2p_ielen;
|
||||
uint remain_len = bss_ex->IELength-(next_ie_ori-bss_ex->IEs);
|
||||
|
||||
_rtw_memcpy(next_ie, next_ie_ori, remain_len);
|
||||
memcpy(next_ie, next_ie_ori, remain_len);
|
||||
_rtw_memset(next_ie+remain_len, 0, p2p_ielen_ori-p2p_ielen);
|
||||
bss_ex->IELength -= p2p_ielen_ori-p2p_ielen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
||||
/* Baron adds to avoid FreeBSD warning */
|
||||
int ieee80211_is_empty_essid(const char *essid, int essid_len)
|
||||
|
@ -1475,7 +1475,7 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork)
|
|||
unsigned int len;
|
||||
unsigned char *p;
|
||||
|
||||
_rtw_memcpy((u8 *)&le_tmp, rtw_get_capability_from_ie(pnetwork->network.IEs), 2);
|
||||
memcpy(&le_tmp, rtw_get_capability_from_ie(pnetwork->network.IEs), 2);
|
||||
cap = le16_to_cpu(le_tmp);
|
||||
if (cap & WLAN_CAPABILITY_PRIVACY) {
|
||||
bencrypt = 1;
|
||||
|
@ -1588,7 +1588,7 @@ int rtw_action_frame_parse(const u8 *frame, u32 frame_len, u8 *category, u8 *act
|
|||
{
|
||||
const u8 *frame_body = frame + sizeof(struct rtw_ieee80211_hdr_3addr);
|
||||
u16 fc;
|
||||
u8 c, a;
|
||||
u8 c, a = 0;
|
||||
|
||||
fc = le16_to_cpu(((struct rtw_ieee80211_hdr_3addr *)frame)->frame_ctl);
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ _func_enter_;
|
|||
pibss = padapter->registrypriv.dev_network.MacAddress;
|
||||
|
||||
_rtw_memset(&pdev_network->Ssid, 0, sizeof(struct ndis_802_11_ssid));
|
||||
_rtw_memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
|
||||
|
||||
rtw_update_registrypriv_dev_network(padapter);
|
||||
|
||||
|
@ -244,7 +244,7 @@ handle_tkip_countermeasure:
|
|||
}
|
||||
}
|
||||
|
||||
_rtw_memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN);
|
||||
memcpy(&pmlmepriv->assoc_bssid, bssid, ETH_ALEN);
|
||||
pmlmepriv->assoc_by_bssid = true;
|
||||
|
||||
if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY))
|
||||
|
@ -357,7 +357,7 @@ handle_tkip_countermeasure:
|
|||
}
|
||||
}
|
||||
|
||||
_rtw_memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&pmlmepriv->assoc_ssid, ssid, sizeof(struct ndis_802_11_ssid));
|
||||
pmlmepriv->assoc_by_bssid = false;
|
||||
|
||||
if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == true) {
|
||||
|
@ -400,7 +400,7 @@ _func_enter_;
|
|||
/* change to other mode from Ndis802_11APMode */
|
||||
cur_network->join_res = -1;
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
stop_ap_mode(padapter);
|
||||
#endif
|
||||
}
|
||||
|
@ -431,7 +431,7 @@ _func_enter_;
|
|||
break;
|
||||
case Ndis802_11APMode:
|
||||
set_fwstate(pmlmepriv, WIFI_AP_STATE);
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
start_ap_mode(padapter);
|
||||
#endif
|
||||
break;
|
||||
|
@ -590,7 +590,7 @@ _func_enter_;
|
|||
("rtw_set_802_11_add_wep:befor memcpy, wep->KeyLength = 0x%x wep->KeyIndex = 0x%x keyid =%x\n",
|
||||
wep->KeyLength, wep->KeyIndex, keyid));
|
||||
|
||||
_rtw_memcpy(&(psecuritypriv->dot11DefKey[keyid].skey[0]), &(wep->KeyMaterial), wep->KeyLength);
|
||||
memcpy(&(psecuritypriv->dot11DefKey[keyid].skey[0]), &(wep->KeyMaterial), wep->KeyLength);
|
||||
|
||||
psecuritypriv->dot11DefKeylen[keyid] = wep->KeyLength;
|
||||
|
||||
|
@ -867,8 +867,8 @@ _func_enter_;
|
|||
|
||||
RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("OID_802_11_ADD_KEY:Before memcpy\n"));
|
||||
|
||||
_rtw_memcpy(wep->KeyMaterial, key->KeyMaterial, key->KeyLength);
|
||||
_rtw_memcpy(&(padapter->securitypriv.dot11DefKey[keyindex].skey[0]), key->KeyMaterial, key->KeyLength);
|
||||
memcpy(wep->KeyMaterial, key->KeyMaterial, key->KeyLength);
|
||||
memcpy(&(padapter->securitypriv.dot11DefKey[keyindex].skey[0]), key->KeyMaterial, key->KeyLength);
|
||||
|
||||
padapter->securitypriv.dot11DefKeylen[keyindex] = key->KeyLength;
|
||||
padapter->securitypriv.dot11PrivacyKeyIndex = keyindex;
|
||||
|
@ -881,10 +881,10 @@ _func_enter_;
|
|||
RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("OID_802_11_ADD_KEY: +++++ SetRSC+++++\n"));
|
||||
if (bgroup) {
|
||||
unsigned long long keysrc = key->KeyRSC & 0x00FFFFFFFFFFFFULL;
|
||||
_rtw_memcpy(&padapter->securitypriv.dot11Grprxpn, &keysrc, 8);
|
||||
memcpy(&padapter->securitypriv.dot11Grprxpn, &keysrc, 8);
|
||||
} else {
|
||||
unsigned long long keysrc = key->KeyRSC & 0x00FFFFFFFFFFFFULL;
|
||||
_rtw_memcpy(&padapter->securitypriv.dot11Grptxpn, &keysrc, 8);
|
||||
memcpy(&padapter->securitypriv.dot11Grptxpn, &keysrc, 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -904,8 +904,8 @@ _func_enter_;
|
|||
_rtw_memset(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], 0, 16);
|
||||
|
||||
if ((key->KeyIndex & 0x10000000)) {
|
||||
_rtw_memcpy(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 16, 8);
|
||||
_rtw_memcpy(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 24, 8);
|
||||
memcpy(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 16, 8);
|
||||
memcpy(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 24, 8);
|
||||
|
||||
RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
|
||||
("\n rtw_set_802_11_add_key:rx mic :0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n",
|
||||
|
@ -919,8 +919,8 @@ _func_enter_;
|
|||
padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex-1) & 0x03)].skey[7]));
|
||||
RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("\n rtw_set_802_11_add_key:set Group mic key!!!!!!!!\n"));
|
||||
} else {
|
||||
_rtw_memcpy(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 24, 8);
|
||||
_rtw_memcpy(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 16, 8);
|
||||
memcpy(&padapter->securitypriv.dot118021XGrptxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 24, 8);
|
||||
memcpy(&padapter->securitypriv.dot118021XGrprxmickey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial + 16, 8);
|
||||
|
||||
RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_,
|
||||
("\n rtw_set_802_11_add_key:rx mic :0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n",
|
||||
|
@ -937,7 +937,7 @@ _func_enter_;
|
|||
}
|
||||
|
||||
/* set group key by index */
|
||||
_rtw_memcpy(&padapter->securitypriv.dot118021XGrpKey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial, key->KeyLength);
|
||||
memcpy(&padapter->securitypriv.dot118021XGrpKey[(u8)((key->KeyIndex) & 0x03)], key->KeyMaterial, key->KeyLength);
|
||||
|
||||
key->KeyIndex = key->KeyIndex & 0x03;
|
||||
|
||||
|
@ -963,7 +963,7 @@ _func_enter_;
|
|||
if (stainfo != NULL) {
|
||||
_rtw_memset(&stainfo->dot118021x_UncstKey, 0, 16);/* clear keybuffer */
|
||||
|
||||
_rtw_memcpy(&stainfo->dot118021x_UncstKey, key->KeyMaterial, 16);
|
||||
memcpy(&stainfo->dot118021x_UncstKey, key->KeyMaterial, 16);
|
||||
|
||||
if (encryptionalgo == _TKIP_) {
|
||||
padapter->securitypriv.busetkipkey = false;
|
||||
|
@ -974,12 +974,12 @@ _func_enter_;
|
|||
|
||||
/* if TKIP, save the Receive/Transmit MIC key in KeyMaterial[128-255] */
|
||||
if ((key->KeyIndex & 0x10000000)) {
|
||||
_rtw_memcpy(&stainfo->dot11tkiptxmickey, key->KeyMaterial + 16, 8);
|
||||
_rtw_memcpy(&stainfo->dot11tkiprxmickey, key->KeyMaterial + 24, 8);
|
||||
memcpy(&stainfo->dot11tkiptxmickey, key->KeyMaterial + 16, 8);
|
||||
memcpy(&stainfo->dot11tkiprxmickey, key->KeyMaterial + 24, 8);
|
||||
|
||||
} else {
|
||||
_rtw_memcpy(&stainfo->dot11tkiptxmickey, key->KeyMaterial + 24, 8);
|
||||
_rtw_memcpy(&stainfo->dot11tkiprxmickey, key->KeyMaterial + 16, 8);
|
||||
memcpy(&stainfo->dot11tkiptxmickey, key->KeyMaterial + 24, 8);
|
||||
memcpy(&stainfo->dot11tkiprxmickey, key->KeyMaterial + 16, 8);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1078,7 +1078,7 @@ u16 rtw_get_cur_max_rate(struct adapter *adapter)
|
|||
if (p && ht_ielen > 0) {
|
||||
pht_capie = (struct rtw_ieee80211_ht_cap *)(p+2);
|
||||
|
||||
_rtw_memcpy(&mcs_rate, pht_capie->supp_mcs_set, 2);
|
||||
memcpy(&mcs_rate, pht_capie->supp_mcs_set, 2);
|
||||
|
||||
/* cur_bwmod is updated by beacon, pmlmeinfo is updated by association response */
|
||||
bw_40MHz = (pmlmeext->cur_bwmode && (HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH & pmlmeinfo->HT_info.infos[0])) ? 1 : 0;
|
||||
|
|
|
@ -72,7 +72,7 @@ int rtw_IOL_append_cmds(struct xmit_frame *xmit_frame, u8 *IOL_cmds, u32 cmd_len
|
|||
return _FAIL;
|
||||
}
|
||||
|
||||
_rtw_memcpy(xmit_frame->buf_addr + buf_offset + pattrib->pktlen, IOL_cmds, cmd_len);
|
||||
memcpy(xmit_frame->buf_addr + buf_offset + pattrib->pktlen, IOL_cmds, cmd_len);
|
||||
pattrib->pktlen += cmd_len;
|
||||
pattrib->last_txcmdsz += cmd_len;
|
||||
|
||||
|
|
|
@ -762,91 +762,6 @@ static void SwLedBlink6(struct LED_871x *pLed)
|
|||
RT_TRACE(_module_rtl8712_led_c_, _drv_info_, ("<==== blink6\n"));
|
||||
}
|
||||
|
||||
static void SwLedControlMode0(struct adapter *padapter, enum LED_CTL_MODE LedAction)
|
||||
{
|
||||
struct led_priv *ledpriv = &(padapter->ledpriv);
|
||||
struct LED_871x *pLed = &(ledpriv->SwLed1);
|
||||
|
||||
/* Decide led state */
|
||||
switch (LedAction) {
|
||||
case LED_CTL_TX:
|
||||
case LED_CTL_RX:
|
||||
if (!pLed->bLedBlinkInProgress) {
|
||||
pLed->bLedBlinkInProgress = true;
|
||||
|
||||
pLed->CurrLedState = LED_BLINK_NORMAL;
|
||||
pLed->BlinkTimes = 2;
|
||||
|
||||
if (pLed->bLedOn)
|
||||
pLed->BlinkingLedState = RTW_LED_OFF;
|
||||
else
|
||||
pLed->BlinkingLedState = RTW_LED_ON;
|
||||
_set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);
|
||||
}
|
||||
break;
|
||||
case LED_CTL_START_TO_LINK:
|
||||
if (!pLed->bLedBlinkInProgress) {
|
||||
pLed->bLedBlinkInProgress = true;
|
||||
|
||||
pLed->CurrLedState = LED_BLINK_StartToBlink;
|
||||
pLed->BlinkTimes = 24;
|
||||
|
||||
if (pLed->bLedOn)
|
||||
pLed->BlinkingLedState = RTW_LED_OFF;
|
||||
else
|
||||
pLed->BlinkingLedState = RTW_LED_ON;
|
||||
_set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);
|
||||
} else {
|
||||
pLed->CurrLedState = LED_BLINK_StartToBlink;
|
||||
}
|
||||
break;
|
||||
case LED_CTL_LINK:
|
||||
pLed->CurrLedState = RTW_LED_ON;
|
||||
if (!pLed->bLedBlinkInProgress)
|
||||
SwLedOn(padapter, pLed);
|
||||
break;
|
||||
case LED_CTL_NO_LINK:
|
||||
pLed->CurrLedState = RTW_LED_OFF;
|
||||
if (!pLed->bLedBlinkInProgress)
|
||||
SwLedOff(padapter, pLed);
|
||||
break;
|
||||
case LED_CTL_POWER_OFF:
|
||||
pLed->CurrLedState = RTW_LED_OFF;
|
||||
if (pLed->bLedBlinkInProgress) {
|
||||
_cancel_timer_ex(&(pLed->BlinkTimer));
|
||||
pLed->bLedBlinkInProgress = false;
|
||||
}
|
||||
SwLedOff(padapter, pLed);
|
||||
break;
|
||||
case LED_CTL_START_WPS:
|
||||
if (!pLed->bLedBlinkInProgress || pLed->CurrLedState == RTW_LED_ON) {
|
||||
pLed->bLedBlinkInProgress = true;
|
||||
|
||||
pLed->CurrLedState = LED_BLINK_WPS;
|
||||
pLed->BlinkTimes = 20;
|
||||
|
||||
if (pLed->bLedOn) {
|
||||
pLed->BlinkingLedState = RTW_LED_OFF;
|
||||
_set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
|
||||
} else {
|
||||
pLed->BlinkingLedState = RTW_LED_ON;
|
||||
_set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LED_CTL_STOP_WPS:
|
||||
if (pLed->bLedBlinkInProgress) {
|
||||
pLed->CurrLedState = RTW_LED_OFF;
|
||||
_cancel_timer_ex(&(pLed->BlinkTimer));
|
||||
pLed->bLedBlinkInProgress = false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
RT_TRACE(_module_rtl8712_led_c_, _drv_info_, ("Led %d\n", pLed->CurrLedState));
|
||||
}
|
||||
|
||||
/* ALPHA, added by chiyoko, 20090106 */
|
||||
static void SwLedControlMode1(struct adapter *padapter, enum LED_CTL_MODE LedAction)
|
||||
{
|
||||
|
@ -1726,7 +1641,7 @@ void BlinkHandler(struct LED_871x *pLed)
|
|||
}
|
||||
}
|
||||
|
||||
void LedControl871x(struct adapter *padapter, enum LED_CTL_MODE LedAction)
|
||||
void LedControl8188eu(struct adapter *padapter, enum LED_CTL_MODE LedAction)
|
||||
{
|
||||
struct led_priv *ledpriv = &(padapter->ledpriv);
|
||||
|
||||
|
|
311
core/rtw_mlme.c
311
core/rtw_mlme.c
|
@ -32,9 +32,6 @@
|
|||
#include <rtw_ioctl_set.h>
|
||||
#include <usb_osintf.h>
|
||||
|
||||
extern void indicate_wx_scan_complete_event(struct adapter *padapter);
|
||||
extern u8 rtw_do_join(struct adapter *padapter);
|
||||
|
||||
extern unsigned char MCS_rate_2R[16];
|
||||
extern unsigned char MCS_rate_1R[16];
|
||||
|
||||
|
@ -96,25 +93,23 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
void rtw_mfree_mlme_priv_lock (struct mlme_priv *pmlmepriv)
|
||||
static void rtw_mfree_mlme_priv_lock (struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
_rtw_spinlock_free(&pmlmepriv->lock);
|
||||
_rtw_spinlock_free(&(pmlmepriv->free_bss_pool.lock));
|
||||
_rtw_spinlock_free(&(pmlmepriv->scanned_queue.lock));
|
||||
}
|
||||
|
||||
#if defined (CONFIG_88EU_AP_MODE)
|
||||
static void rtw_free_mlme_ie_data(u8 **ppie, u32 *plen)
|
||||
{
|
||||
if (*ppie) {
|
||||
_rtw_mfree(*ppie, *plen);
|
||||
*plen = 0;
|
||||
*ppie = NULL;
|
||||
}
|
||||
kfree(*ppie);
|
||||
*plen = 0;
|
||||
*ppie = NULL;
|
||||
}
|
||||
|
||||
void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
#if defined (CONFIG_AP_MODE)
|
||||
rtw_buf_free(&pmlmepriv->assoc_req, &pmlmepriv->assoc_req_len);
|
||||
rtw_buf_free(&pmlmepriv->assoc_rsp, &pmlmepriv->assoc_rsp_len);
|
||||
rtw_free_mlme_ie_data(&pmlmepriv->wps_beacon_ie, &pmlmepriv->wps_beacon_ie_len);
|
||||
|
@ -127,8 +122,12 @@ void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
|
|||
rtw_free_mlme_ie_data(&pmlmepriv->p2p_probe_resp_ie, &pmlmepriv->p2p_probe_resp_ie_len);
|
||||
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
|
||||
}
|
||||
#else
|
||||
void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void _rtw_free_mlme_priv (struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
|
@ -148,18 +147,18 @@ _func_exit_;
|
|||
|
||||
int _rtw_enqueue_network(struct __queue *queue, struct wlan_network *pnetwork)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
if (pnetwork == NULL)
|
||||
goto exit;
|
||||
|
||||
_enter_critical_bh(&queue->lock, &irqL);
|
||||
_enter_critical_bh(&queue->lock, &irql);
|
||||
|
||||
rtw_list_insert_tail(&pnetwork->list, &queue->queue);
|
||||
|
||||
_exit_critical_bh(&queue->lock, &irqL);
|
||||
_exit_critical_bh(&queue->lock, &irql);
|
||||
|
||||
exit:
|
||||
|
||||
|
@ -170,13 +169,13 @@ _func_exit_;
|
|||
|
||||
struct wlan_network *_rtw_dequeue_network(struct __queue *queue)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
|
||||
struct wlan_network *pnetwork;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
_enter_critical_bh(&queue->lock, &irqL);
|
||||
_enter_critical_bh(&queue->lock, &irql);
|
||||
|
||||
if (_rtw_queue_empty(queue)) {
|
||||
pnetwork = NULL;
|
||||
|
@ -186,7 +185,7 @@ _func_enter_;
|
|||
rtw_list_delete(&(pnetwork->list));
|
||||
}
|
||||
|
||||
_exit_critical_bh(&queue->lock, &irqL);
|
||||
_exit_critical_bh(&queue->lock, &irql);
|
||||
|
||||
_func_exit_;
|
||||
|
||||
|
@ -195,14 +194,14 @@ _func_exit_;
|
|||
|
||||
struct wlan_network *_rtw_alloc_network(struct mlme_priv *pmlmepriv)/* _queue *free_queue) */
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct wlan_network *pnetwork;
|
||||
struct __queue *free_queue = &pmlmepriv->free_bss_pool;
|
||||
struct list_head *plist = NULL;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
_enter_critical_bh(&free_queue->lock, &irqL);
|
||||
_enter_critical_bh(&free_queue->lock, &irql);
|
||||
|
||||
if (_rtw_queue_empty(free_queue) == true) {
|
||||
pnetwork = NULL;
|
||||
|
@ -224,7 +223,7 @@ _func_enter_;
|
|||
pmlmepriv->num_of_scanned++;
|
||||
|
||||
exit:
|
||||
_exit_critical_bh(&free_queue->lock, &irqL);
|
||||
_exit_critical_bh(&free_queue->lock, &irql);
|
||||
|
||||
_func_exit_;
|
||||
|
||||
|
@ -235,7 +234,7 @@ void _rtw_free_network(struct mlme_priv *pmlmepriv , struct wlan_network *pnetwo
|
|||
{
|
||||
u32 curr_time, delta_time;
|
||||
u32 lifetime = SCANQUEUE_LIFETIME;
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct __queue *free_queue = &(pmlmepriv->free_bss_pool);
|
||||
|
||||
_func_enter_;
|
||||
|
@ -254,11 +253,11 @@ _func_enter_;
|
|||
if (delta_time < lifetime)/* unit:sec */
|
||||
goto exit;
|
||||
}
|
||||
_enter_critical_bh(&free_queue->lock, &irqL);
|
||||
_enter_critical_bh(&free_queue->lock, &irql);
|
||||
rtw_list_delete(&(pnetwork->list));
|
||||
rtw_list_insert_tail(&(pnetwork->list), &(free_queue->queue));
|
||||
pmlmepriv->num_of_scanned--;
|
||||
_exit_critical_bh(&free_queue->lock, &irqL);
|
||||
_exit_critical_bh(&free_queue->lock, &irql);
|
||||
|
||||
exit:
|
||||
_func_exit_;
|
||||
|
@ -316,7 +315,7 @@ _func_exit_;
|
|||
|
||||
void _rtw_free_network_queue(struct adapter *padapter, u8 isfreeall)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct list_head *phead, *plist;
|
||||
struct wlan_network *pnetwork;
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
|
@ -325,7 +324,7 @@ void _rtw_free_network_queue(struct adapter *padapter, u8 isfreeall)
|
|||
_func_enter_;
|
||||
|
||||
|
||||
_enter_critical_bh(&scanned_queue->lock, &irqL);
|
||||
_enter_critical_bh(&scanned_queue->lock, &irql);
|
||||
|
||||
phead = get_list_head(scanned_queue);
|
||||
plist = get_next(phead);
|
||||
|
@ -337,7 +336,7 @@ _func_enter_;
|
|||
|
||||
_rtw_free_network(pmlmepriv, pnetwork, isfreeall);
|
||||
}
|
||||
_exit_critical_bh(&scanned_queue->lock, &irqL);
|
||||
_exit_critical_bh(&scanned_queue->lock, &irql);
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
|
@ -360,7 +359,6 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
|
||||
void rtw_generate_random_ibss(u8 *pibss)
|
||||
{
|
||||
u32 curtime = rtw_get_current_time();
|
||||
|
@ -387,7 +385,7 @@ u16 rtw_get_capability(struct wlan_bssid_ex *bss)
|
|||
__le16 val;
|
||||
_func_enter_;
|
||||
|
||||
_rtw_memcpy((u8 *)&val, rtw_get_capability_from_ie(bss->IEs), 2);
|
||||
memcpy((u8 *)&val, rtw_get_capability_from_ie(bss->IEs), 2);
|
||||
|
||||
_func_exit_;
|
||||
return le16_to_cpu(val);
|
||||
|
@ -420,28 +418,7 @@ _func_enter_;
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
int rtw_enqueue_network(struct __queue *queue, struct wlan_network *pnetwork);
|
||||
int rtw_enqueue_network(struct __queue *queue, struct wlan_network *pnetwork)
|
||||
{
|
||||
int res;
|
||||
_func_enter_;
|
||||
res = _rtw_enqueue_network(queue, pnetwork);
|
||||
_func_exit_;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
static struct wlan_network *rtw_dequeue_network(struct __queue *queue)
|
||||
{
|
||||
struct wlan_network *pnetwork;
|
||||
_func_enter_;
|
||||
pnetwork = _rtw_dequeue_network(queue);
|
||||
_func_exit_;
|
||||
return pnetwork;
|
||||
}
|
||||
|
||||
struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv);
|
||||
struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv)/* _queue *free_queue) */
|
||||
static struct wlan_network *rtw_alloc_network(struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
struct wlan_network *pnetwork;
|
||||
_func_enter_;
|
||||
|
@ -450,15 +427,8 @@ _func_exit_;
|
|||
return pnetwork;
|
||||
}
|
||||
|
||||
void rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 is_freeall)
|
||||
{
|
||||
_func_enter_;
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("rtw_free_network==>ssid=%s\n\n" , pnetwork->network.Ssid.Ssid));
|
||||
_rtw_free_network(pmlmepriv, pnetwork, is_freeall);
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
void rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork)
|
||||
static void rtw_free_network_nolock(struct mlme_priv *pmlmepriv,
|
||||
struct wlan_network *pnetwork)
|
||||
{
|
||||
_func_enter_;
|
||||
_rtw_free_network_nolock(pmlmepriv, pnetwork);
|
||||
|
@ -501,7 +471,7 @@ int rtw_is_same_ibss(struct adapter *adapter, struct wlan_network *pnetwork)
|
|||
return ret;
|
||||
}
|
||||
|
||||
inline int is_same_ess(struct wlan_bssid_ex *a, struct wlan_bssid_ex *b)
|
||||
static int is_same_ess(struct wlan_bssid_ex *a, struct wlan_bssid_ex *b)
|
||||
{
|
||||
return (a->Ssid.SsidLength == b->Ssid.SsidLength) &&
|
||||
_rtw_memcmp(a->Ssid.Ssid, b->Ssid.Ssid, a->Ssid.SsidLength);
|
||||
|
@ -513,8 +483,8 @@ int is_same_network(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst)
|
|||
__le16 le_scap, le_dcap;
|
||||
|
||||
_func_enter_;
|
||||
_rtw_memcpy((u8 *)&le_scap, rtw_get_capability_from_ie(src->IEs), 2);
|
||||
_rtw_memcpy((u8 *)&le_dcap, rtw_get_capability_from_ie(dst->IEs), 2);
|
||||
memcpy((u8 *)&le_scap, rtw_get_capability_from_ie(src->IEs), 2);
|
||||
memcpy((u8 *)&le_dcap, rtw_get_capability_from_ie(dst->IEs), 2);
|
||||
|
||||
|
||||
s_cap = le16_to_cpu(le_scap);
|
||||
|
@ -563,15 +533,12 @@ void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
|
|||
struct adapter *padapter, bool update_ie)
|
||||
{
|
||||
long rssi_ori = dst->Rssi;
|
||||
|
||||
u8 sq_smp = src->PhyInfo.SignalQuality;
|
||||
|
||||
u8 ss_final;
|
||||
u8 sq_final;
|
||||
long rssi_final;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
rtw_hal_antdiv_rssi_compared(padapter, dst, src); /* this will update src.Rssi, need consider again */
|
||||
|
||||
/* The rule below is 1/5 for sample value, 4/5 for history value */
|
||||
|
@ -597,7 +564,7 @@ _func_enter_;
|
|||
}
|
||||
}
|
||||
if (update_ie)
|
||||
_rtw_memcpy((u8 *)dst, (u8 *)src, get_wlan_bssid_ex_sz(src));
|
||||
memcpy((u8 *)dst, (u8 *)src, get_wlan_bssid_ex_sz(src));
|
||||
dst->PhyInfo.SignalStrength = ss_final;
|
||||
dst->PhyInfo.SignalQuality = sq_final;
|
||||
dst->Rssi = rssi_final;
|
||||
|
@ -625,7 +592,7 @@ Caller must hold pmlmepriv->lock first.
|
|||
*/
|
||||
void rtw_update_scanned_network(struct adapter *adapter, struct wlan_bssid_ex *target)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct list_head *plist, *phead;
|
||||
u32 bssid_ex_sz;
|
||||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||
|
@ -635,7 +602,7 @@ void rtw_update_scanned_network(struct adapter *adapter, struct wlan_bssid_ex *t
|
|||
|
||||
_func_enter_;
|
||||
|
||||
_enter_critical_bh(&queue->lock, &irqL);
|
||||
_enter_critical_bh(&queue->lock, &irql);
|
||||
phead = get_list_head(queue);
|
||||
plist = get_next(phead);
|
||||
|
||||
|
@ -660,7 +627,7 @@ _func_enter_;
|
|||
pnetwork = oldest;
|
||||
|
||||
rtw_hal_get_def_var(adapter, HAL_DEF_CURRENT_ANTENNA, &(target->PhyInfo.Optimum_antenna));
|
||||
_rtw_memcpy(&(pnetwork->network), target, get_wlan_bssid_ex_sz(target));
|
||||
memcpy(&(pnetwork->network), target, get_wlan_bssid_ex_sz(target));
|
||||
/* variable initialize */
|
||||
pnetwork->fixed = false;
|
||||
pnetwork->last_scanned = rtw_get_current_time();
|
||||
|
@ -685,7 +652,7 @@ _func_enter_;
|
|||
bssid_ex_sz = get_wlan_bssid_ex_sz(target);
|
||||
target->Length = bssid_ex_sz;
|
||||
rtw_hal_get_def_var(adapter, HAL_DEF_CURRENT_ANTENNA, &(target->PhyInfo.Optimum_antenna));
|
||||
_rtw_memcpy(&(pnetwork->network), target, bssid_ex_sz);
|
||||
memcpy(&(pnetwork->network), target, bssid_ex_sz);
|
||||
|
||||
pnetwork->last_scanned = rtw_get_current_time();
|
||||
|
||||
|
@ -711,24 +678,20 @@ _func_enter_;
|
|||
}
|
||||
|
||||
exit:
|
||||
_exit_critical_bh(&queue->lock, &irqL);
|
||||
_exit_critical_bh(&queue->lock, &irql);
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
void rtw_add_network(struct adapter *adapter, struct wlan_bssid_ex *pnetwork)
|
||||
static void rtw_add_network(struct adapter *adapter,
|
||||
struct wlan_bssid_ex *pnetwork)
|
||||
{
|
||||
_func_enter_;
|
||||
|
||||
#if defined(CONFIG_P2P)
|
||||
#if defined(CONFIG_88EU_P2P)
|
||||
rtw_wlan_bssid_ex_remove_p2p_attr(pnetwork, P2P_ATTR_GROUP_INFO);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
update_current_network(adapter, pnetwork);
|
||||
|
||||
rtw_update_scanned_network(adapter, pnetwork);
|
||||
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
|
@ -791,7 +754,7 @@ _func_exit_;
|
|||
|
||||
void rtw_survey_event_callback(struct adapter *adapter, u8 *pbuf)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
u32 len;
|
||||
struct wlan_bssid_ex *pnetwork;
|
||||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||
|
@ -807,23 +770,23 @@ _func_enter_;
|
|||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("\n****rtw_survey_event_callback: return a wrong bss ***\n"));
|
||||
return;
|
||||
}
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
|
||||
/* update IBSS_network 's timestamp */
|
||||
if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) == true) {
|
||||
if (_rtw_memcmp(&(pmlmepriv->cur_network.network.MacAddress), pnetwork->MacAddress, ETH_ALEN)) {
|
||||
struct wlan_network *ibss_wlan = NULL;
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
|
||||
_rtw_memcpy(pmlmepriv->cur_network.network.IEs, pnetwork->IEs, 8);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
memcpy(pmlmepriv->cur_network.network.IEs, pnetwork->IEs, 8);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
ibss_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->MacAddress);
|
||||
if (ibss_wlan) {
|
||||
_rtw_memcpy(ibss_wlan->network.IEs , pnetwork->IEs, 8);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
memcpy(ibss_wlan->network.IEs , pnetwork->IEs, 8);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
goto exit;
|
||||
}
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -836,7 +799,7 @@ _func_enter_;
|
|||
|
||||
exit:
|
||||
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
|
||||
_func_exit_;
|
||||
|
||||
|
@ -847,17 +810,16 @@ _func_exit_;
|
|||
|
||||
void rtw_surveydone_event_callback(struct adapter *adapter, u8 *pbuf)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||
struct mlme_ext_priv *pmlmeext;
|
||||
|
||||
_func_enter_;
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
|
||||
if (pmlmepriv->wps_probe_req_ie) {
|
||||
u32 free_len = pmlmepriv->wps_probe_req_ie_len;
|
||||
pmlmepriv->wps_probe_req_ie_len = 0;
|
||||
rtw_mfree(pmlmepriv->wps_probe_req_ie, free_len);
|
||||
kfree(pmlmepriv->wps_probe_req_ie);
|
||||
pmlmepriv->wps_probe_req_ie = NULL;
|
||||
}
|
||||
|
||||
|
@ -891,7 +853,7 @@ _func_enter_;
|
|||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("switching to adhoc master\n"));
|
||||
|
||||
_rtw_memset(&pdev_network->Ssid, 0, sizeof(struct ndis_802_11_ssid));
|
||||
_rtw_memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
|
||||
|
||||
rtw_update_registrypriv_dev_network(adapter);
|
||||
rtw_generate_random_ibss(pibss);
|
||||
|
@ -932,7 +894,7 @@ _func_enter_;
|
|||
|
||||
indicate_wx_scan_complete_event(adapter);
|
||||
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
|
||||
if (check_fwstate(pmlmepriv, _FW_LINKED) == true)
|
||||
p2p_ps_wk_cmd(adapter, P2P_PS_SCAN_DONE, 0);
|
||||
|
@ -955,7 +917,7 @@ void rtw_fwdbg_event_callback(struct adapter *adapter , u8 *pbuf)
|
|||
|
||||
static void free_scanqueue(struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
unsigned long irqL, irqL0;
|
||||
unsigned long irql, irql0;
|
||||
struct __queue *free_queue = &pmlmepriv->free_bss_pool;
|
||||
struct __queue *scan_queue = &pmlmepriv->scanned_queue;
|
||||
struct list_head *plist, *phead, *ptemp;
|
||||
|
@ -963,8 +925,8 @@ static void free_scanqueue(struct mlme_priv *pmlmepriv)
|
|||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, ("+free_scanqueue\n"));
|
||||
_enter_critical_bh(&scan_queue->lock, &irqL0);
|
||||
_enter_critical_bh(&free_queue->lock, &irqL);
|
||||
_enter_critical_bh(&scan_queue->lock, &irql0);
|
||||
_enter_critical_bh(&free_queue->lock, &irql);
|
||||
|
||||
phead = get_list_head(scan_queue);
|
||||
plist = get_next(phead);
|
||||
|
@ -977,8 +939,8 @@ _func_enter_;
|
|||
pmlmepriv->num_of_scanned--;
|
||||
}
|
||||
|
||||
_exit_critical_bh(&free_queue->lock, &irqL);
|
||||
_exit_critical_bh(&scan_queue->lock, &irqL0);
|
||||
_exit_critical_bh(&free_queue->lock, &irql);
|
||||
_exit_critical_bh(&scan_queue->lock, &irql0);
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -988,7 +950,7 @@ _func_exit_;
|
|||
*/
|
||||
void rtw_free_assoc_resources(struct adapter *adapter, int lock_scanned_queue)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct wlan_network *pwlan = NULL;
|
||||
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
|
||||
struct sta_priv *pstapriv = &adapter->stapriv;
|
||||
|
@ -1006,9 +968,9 @@ _func_enter_;
|
|||
|
||||
psta = rtw_get_stainfo(&adapter->stapriv, tgt_network->network.MacAddress);
|
||||
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irql);
|
||||
rtw_free_stainfo(adapter, psta);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irql);
|
||||
}
|
||||
|
||||
if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE | WIFI_ADHOC_MASTER_STATE | WIFI_AP_STATE)) {
|
||||
|
@ -1017,15 +979,15 @@ _func_enter_;
|
|||
rtw_free_all_stainfo(adapter);
|
||||
|
||||
psta = rtw_get_bcmc_stainfo(adapter);
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irql);
|
||||
rtw_free_stainfo(adapter, psta);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irql);
|
||||
|
||||
rtw_init_bcmc_stainfo(adapter);
|
||||
}
|
||||
|
||||
if (lock_scanned_queue)
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
|
||||
pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress);
|
||||
if (pwlan)
|
||||
|
@ -1037,7 +999,7 @@ _func_enter_;
|
|||
rtw_free_network_nolock(pmlmepriv, pwlan);
|
||||
|
||||
if (lock_scanned_queue)
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
pmlmepriv->key_mask = 0;
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -1079,7 +1041,6 @@ void rtw_indicate_disconnect(struct adapter *padapter)
|
|||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("+rtw_indicate_disconnect\n"));
|
||||
|
||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING | WIFI_UNDER_WPS);
|
||||
|
@ -1098,9 +1059,6 @@ _func_enter_;
|
|||
}
|
||||
p2p_ps_wk_cmd(padapter, P2P_PS_DISABLE, 1);
|
||||
|
||||
#ifdef CONFIG_WOWLAN
|
||||
if (!padapter->pwrctrlpriv.wowlan_mode)
|
||||
#endif /* CONFIG_WOWLAN */
|
||||
rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_DISCONNECT, 1);
|
||||
|
||||
_func_exit_;
|
||||
|
@ -1214,10 +1172,10 @@ static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_net
|
|||
|
||||
|
||||
/* why not use ptarget_wlan?? */
|
||||
_rtw_memcpy(&cur_network->network, &pnetwork->network, pnetwork->network.Length);
|
||||
memcpy(&cur_network->network, &pnetwork->network, pnetwork->network.Length);
|
||||
/* some IEs in pnetwork is wrong, so we should use ptarget_wlan IEs */
|
||||
cur_network->network.IELength = ptarget_wlan->network.IELength;
|
||||
_rtw_memcpy(&cur_network->network.IEs[0], &ptarget_wlan->network.IEs[0], MAX_IE_SZ);
|
||||
memcpy(&cur_network->network.IEs[0], &ptarget_wlan->network.IEs[0], MAX_IE_SZ);
|
||||
|
||||
cur_network->aid = pnetwork->join_res;
|
||||
|
||||
|
@ -1261,7 +1219,7 @@ static void rtw_joinbss_update_network(struct adapter *padapter, struct wlan_net
|
|||
|
||||
void rtw_joinbss_event_prehandle(struct adapter *adapter, u8 *pbuf)
|
||||
{
|
||||
unsigned long irqL, irqL2;
|
||||
unsigned long irql, irql2;
|
||||
u8 timer_cancelled;
|
||||
struct sta_info *ptarget_sta = NULL, *pcur_sta = NULL;
|
||||
struct sta_priv *pstapriv = &adapter->stapriv;
|
||||
|
@ -1291,12 +1249,12 @@ _func_enter_;
|
|||
goto ignore_nolock;
|
||||
}
|
||||
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("\nrtw_joinbss_event_callback!! _enter_critical\n"));
|
||||
|
||||
if (pnetwork->join_res > 0) {
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
if (check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) {
|
||||
/* s1. find ptarget_wlan */
|
||||
if (check_fwstate(pmlmepriv, _FW_LINKED)) {
|
||||
|
@ -1309,9 +1267,9 @@ _func_enter_;
|
|||
|
||||
pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress);
|
||||
if (pcur_sta) {
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL2);
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irql2);
|
||||
rtw_free_stainfo(adapter, pcur_sta);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL2);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irql2);
|
||||
}
|
||||
|
||||
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress);
|
||||
|
@ -1333,7 +1291,7 @@ _func_enter_;
|
|||
rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork);
|
||||
} else {
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("Can't find ptarget_wlan when joinbss_event callback\n"));
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
goto ignore_joinbss_callback;
|
||||
}
|
||||
|
||||
|
@ -1343,7 +1301,7 @@ _func_enter_;
|
|||
ptarget_sta = rtw_joinbss_update_stainfo(adapter, pnetwork);
|
||||
if (ptarget_sta == NULL) {
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("Can't update stainfo when joinbss_event callback\n"));
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
goto ignore_joinbss_callback;
|
||||
}
|
||||
}
|
||||
|
@ -1363,11 +1321,11 @@ _func_enter_;
|
|||
|
||||
} else {
|
||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, ("rtw_joinbss_event_callback err: fw_state:%x", get_fwstate(pmlmepriv)));
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
goto ignore_joinbss_callback;
|
||||
}
|
||||
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
|
||||
} else if (pnetwork->join_res == -4) {
|
||||
rtw_reset_securitypriv(adapter);
|
||||
|
@ -1383,7 +1341,7 @@ _func_enter_;
|
|||
}
|
||||
|
||||
ignore_joinbss_callback:
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
ignore_nolock:
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -1403,13 +1361,16 @@ _func_exit_;
|
|||
|
||||
static u8 search_max_mac_id(struct adapter *padapter)
|
||||
{
|
||||
u8 mac_id, aid;
|
||||
u8 mac_id;
|
||||
#if defined (CONFIG_88EU_AP_MODE)
|
||||
u8 aid;
|
||||
struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
|
||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||
#endif
|
||||
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
||||
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
|
||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||
|
||||
#if defined (CONFIG_AP_MODE)
|
||||
#if defined (CONFIG_88EU_AP_MODE)
|
||||
if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
|
||||
for (aid = (pstapriv->max_num_sta); aid > 0; aid--) {
|
||||
if (pstapriv->sta_aid[aid-1] != NULL)
|
||||
|
@ -1444,7 +1405,7 @@ void rtw_stassoc_hw_rpt(struct adapter *adapter, struct sta_info *psta)
|
|||
|
||||
void rtw_stassoc_event_callback(struct adapter *adapter, u8 *pbuf)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct sta_info *psta;
|
||||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||
struct stassoc_event *pstassoc = (struct stassoc_event *)pbuf;
|
||||
|
@ -1456,7 +1417,7 @@ _func_enter_;
|
|||
if (rtw_access_ctrl(adapter, pstassoc->macaddr) == false)
|
||||
return;
|
||||
|
||||
#if defined (CONFIG_AP_MODE)
|
||||
#if defined (CONFIG_88EU_AP_MODE)
|
||||
if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
|
||||
psta = rtw_get_stainfo(&adapter->stapriv, pstassoc->macaddr);
|
||||
if (psta) {
|
||||
|
@ -1488,20 +1449,20 @@ _func_enter_;
|
|||
if (adapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X)
|
||||
psta->dot118021XPrivacy = adapter->securitypriv.dot11PrivacyAlgrthm;
|
||||
psta->ieee8021x_blocked = false;
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) ||
|
||||
(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE))) {
|
||||
if (adapter->stapriv.asoc_sta_count == 2) {
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress);
|
||||
if (ptarget_wlan)
|
||||
ptarget_wlan->fixed = true;
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
/* a sta + bc/mc_stainfo (not Ibss_stainfo) */
|
||||
rtw_indicate_connect(adapter);
|
||||
}
|
||||
}
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
mlmeext_sta_add_event_callback(adapter, psta);
|
||||
exit:
|
||||
_func_exit_;
|
||||
|
@ -1509,7 +1470,7 @@ _func_exit_;
|
|||
|
||||
void rtw_stadel_event_callback(struct adapter *adapter, u8 *pbuf)
|
||||
{
|
||||
unsigned long irqL, irqL2;
|
||||
unsigned long irql, irql2;
|
||||
int mac_id = -1;
|
||||
struct sta_info *psta;
|
||||
struct wlan_network *pwlan = NULL;
|
||||
|
@ -1542,7 +1503,7 @@ _func_enter_;
|
|||
|
||||
mlmeext_sta_del_event_callback(adapter);
|
||||
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL2);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql2);
|
||||
|
||||
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
|
||||
if (pmlmepriv->to_roaming > 0)
|
||||
|
@ -1557,39 +1518,39 @@ _func_enter_;
|
|||
|
||||
rtw_free_assoc_resources(adapter, 1);
|
||||
rtw_indicate_disconnect(adapter);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
/* remove the network entry in scanned_queue */
|
||||
pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress);
|
||||
if (pwlan) {
|
||||
pwlan->fixed = false;
|
||||
rtw_free_network_nolock(pmlmepriv, pwlan);
|
||||
}
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
_rtw_roaming(adapter, tgt_network);
|
||||
}
|
||||
if (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) ||
|
||||
check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)) {
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irql);
|
||||
rtw_free_stainfo(adapter, psta);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irql);
|
||||
|
||||
if (adapter->stapriv.asoc_sta_count == 1) { /* a sta + bc/mc_stainfo (not Ibss_stainfo) */
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
/* free old ibss network */
|
||||
pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress);
|
||||
if (pwlan) {
|
||||
pwlan->fixed = false;
|
||||
rtw_free_network_nolock(pmlmepriv, pwlan);
|
||||
}
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
/* re-create ibss */
|
||||
pdev_network = &(adapter->registrypriv.dev_network);
|
||||
pibss = adapter->registrypriv.dev_network.MacAddress;
|
||||
|
||||
_rtw_memcpy(pdev_network, &tgt_network->network, get_wlan_bssid_ex_sz(&tgt_network->network));
|
||||
memcpy(pdev_network, &tgt_network->network, get_wlan_bssid_ex_sz(&tgt_network->network));
|
||||
|
||||
_rtw_memset(&pdev_network->Ssid, 0, sizeof(struct ndis_802_11_ssid));
|
||||
_rtw_memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&pdev_network->Ssid, &pmlmepriv->assoc_ssid, sizeof(struct ndis_802_11_ssid));
|
||||
|
||||
rtw_update_registrypriv_dev_network(adapter);
|
||||
|
||||
|
@ -1604,7 +1565,7 @@ _func_enter_;
|
|||
RT_TRACE(_module_rtl871x_ioctl_set_c_, _drv_err_, ("***Error=>stadel_event_callback: rtw_createbss_cmd status FAIL***\n "));
|
||||
}
|
||||
}
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL2);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql2);
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
|
@ -1621,7 +1582,7 @@ _func_exit_;
|
|||
*/
|
||||
void _rtw_join_timeout_handler (struct adapter *adapter)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
|
||||
int do_join_r;
|
||||
|
||||
|
@ -1633,7 +1594,7 @@ _func_enter_;
|
|||
return;
|
||||
|
||||
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
|
||||
if (pmlmepriv->to_roaming > 0) { /* join timeout caused by roaming */
|
||||
while (1) {
|
||||
|
@ -1656,7 +1617,7 @@ _func_enter_;
|
|||
rtw_indicate_disconnect(adapter);
|
||||
free_scanqueue(pmlmepriv);/* */
|
||||
}
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
|
@ -1666,13 +1627,13 @@ _func_exit_;
|
|||
*/
|
||||
void rtw_scan_timeout_handler (struct adapter *adapter)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
|
||||
|
||||
DBG_88E(FUNC_ADPT_FMT" fw_state=%x\n", FUNC_ADPT_ARG(adapter), get_fwstate(pmlmepriv));
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
rtw_indicate_scan_done(adapter, true);
|
||||
}
|
||||
|
||||
|
@ -1693,9 +1654,7 @@ static void rtw_auto_scan_handler(struct adapter *padapter)
|
|||
|
||||
void rtw_dynamic_check_timer_handlder(struct adapter *adapter)
|
||||
{
|
||||
#ifdef CONFIG_AP_MODE
|
||||
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
|
||||
#endif /* CONFIG_AP_MODE */
|
||||
struct registry_priv *pregistrypriv = &adapter->registrypriv;
|
||||
|
||||
if (!adapter)
|
||||
|
@ -1709,7 +1668,7 @@ void rtw_dynamic_check_timer_handlder(struct adapter *adapter)
|
|||
rtw_dynamic_chk_wk_cmd(adapter);
|
||||
|
||||
if (pregistrypriv->wifi_spec == 1) {
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &adapter->wdinfo;
|
||||
if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE))
|
||||
#endif
|
||||
|
@ -1719,17 +1678,10 @@ void rtw_dynamic_check_timer_handlder(struct adapter *adapter)
|
|||
}
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35))
|
||||
rcu_read_lock();
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) */
|
||||
|
||||
#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
||||
if (adapter->pnetdev->br_port &&
|
||||
(check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true)) {
|
||||
#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */
|
||||
if (rcu_dereference(adapter->pnetdev->rx_handler_data) &&
|
||||
(check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true)) {
|
||||
#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */
|
||||
/* expire NAT2.5 entry */
|
||||
nat25_db_expire(adapter);
|
||||
|
||||
|
@ -1743,9 +1695,7 @@ void rtw_dynamic_check_timer_handlder(struct adapter *adapter)
|
|||
}
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35))
|
||||
rcu_read_unlock();
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) */
|
||||
}
|
||||
|
||||
#define RTW_SCAN_RESULT_EXPIRE 2000
|
||||
|
@ -1811,7 +1761,7 @@ pmlmepriv->lock
|
|||
|
||||
int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
int ret;
|
||||
struct list_head *phead;
|
||||
struct adapter *adapter;
|
||||
|
@ -1822,7 +1772,7 @@ int rtw_select_and_join_from_scanned_queue(struct mlme_priv *pmlmepriv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
phead = get_list_head(queue);
|
||||
adapter = (struct adapter *)pmlmepriv->nic_hdl;
|
||||
pmlmepriv->pscanned = get_next(phead);
|
||||
|
@ -1838,9 +1788,6 @@ _func_enter_;
|
|||
}
|
||||
if (candidate == NULL) {
|
||||
DBG_88E("%s: return _FAIL(candidate==NULL)\n", __func__);
|
||||
#ifdef CONFIG_WOWLAN
|
||||
_clr_fwstate_(pmlmepriv, _FW_LINKED|_FW_UNDER_LINKING);
|
||||
#endif
|
||||
ret = _FAIL;
|
||||
goto exit;
|
||||
} else {
|
||||
|
@ -1872,7 +1819,7 @@ _func_enter_;
|
|||
ret = rtw_joinbss_cmd(adapter, candidate);
|
||||
|
||||
exit:
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irql);
|
||||
|
||||
_func_exit_;
|
||||
|
||||
|
@ -1896,7 +1843,7 @@ _func_enter_;
|
|||
|
||||
psetauthparm = (struct setauth_parm *)rtw_zmalloc(sizeof(struct setauth_parm));
|
||||
if (psetauthparm == NULL) {
|
||||
rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
|
||||
kfree(pcmd);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1934,7 +1881,7 @@ _func_enter_;
|
|||
}
|
||||
psetkeyparm = (struct setkey_parm *)rtw_zmalloc(sizeof(struct setkey_parm));
|
||||
if (psetkeyparm == NULL) {
|
||||
rtw_mfree((unsigned char *)pcmd, sizeof(struct cmd_obj));
|
||||
kfree(pcmd);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1964,20 +1911,20 @@ _func_enter_;
|
|||
switch (psetkeyparm->algorithm) {
|
||||
case _WEP40_:
|
||||
keylen = 5;
|
||||
_rtw_memcpy(&(psetkeyparm->key[0]), &(psecuritypriv->dot11DefKey[keyid].skey[0]), keylen);
|
||||
memcpy(&(psetkeyparm->key[0]), &(psecuritypriv->dot11DefKey[keyid].skey[0]), keylen);
|
||||
break;
|
||||
case _WEP104_:
|
||||
keylen = 13;
|
||||
_rtw_memcpy(&(psetkeyparm->key[0]), &(psecuritypriv->dot11DefKey[keyid].skey[0]), keylen);
|
||||
memcpy(&(psetkeyparm->key[0]), &(psecuritypriv->dot11DefKey[keyid].skey[0]), keylen);
|
||||
break;
|
||||
case _TKIP_:
|
||||
keylen = 16;
|
||||
_rtw_memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen);
|
||||
memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen);
|
||||
psetkeyparm->grpkey = 1;
|
||||
break;
|
||||
case _AES_:
|
||||
keylen = 16;
|
||||
_rtw_memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen);
|
||||
memcpy(&psetkeyparm->key, &psecuritypriv->dot118021XGrpKey[keyid], keylen);
|
||||
psetkeyparm->grpkey = 1;
|
||||
break;
|
||||
default:
|
||||
|
@ -2080,7 +2027,7 @@ static int rtw_append_pmkid(struct adapter *Adapter, int iEntry, u8 *ie, uint ie
|
|||
ie_len++;
|
||||
ie[ie_len] = 0; /* PMKID count = 0x0100 */
|
||||
ie_len++;
|
||||
_rtw_memcpy(&ie[ie_len], &psecuritypriv->PMKIDList[iEntry].PMKID, 16);
|
||||
memcpy(&ie[ie_len], &psecuritypriv->PMKIDList[iEntry].PMKID, 16);
|
||||
|
||||
ie_len += 16;
|
||||
ie[13] += 18;/* PMKID length = 2+16 */
|
||||
|
@ -2106,7 +2053,7 @@ _func_enter_;
|
|||
ndisauthmode, ndissecuritytype));
|
||||
|
||||
/* copy fixed ie only */
|
||||
_rtw_memcpy(out_ie, in_ie, 12);
|
||||
memcpy(out_ie, in_ie, 12);
|
||||
ielength = 12;
|
||||
if ((ndisauthmode == Ndis802_11AuthModeWPA) ||
|
||||
(ndisauthmode == Ndis802_11AuthModeWPAPSK))
|
||||
|
@ -2116,12 +2063,12 @@ _func_enter_;
|
|||
authmode = _WPA2_IE_ID_;
|
||||
|
||||
if (check_fwstate(pmlmepriv, WIFI_UNDER_WPS)) {
|
||||
_rtw_memcpy(out_ie+ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len);
|
||||
memcpy(out_ie+ielength, psecuritypriv->wps_ie, psecuritypriv->wps_ie_len);
|
||||
|
||||
ielength += psecuritypriv->wps_ie_len;
|
||||
} else if ((authmode == _WPA_IE_ID_) || (authmode == _WPA2_IE_ID_)) {
|
||||
/* copy RSN or SSN */
|
||||
_rtw_memcpy(&out_ie[ielength], &psecuritypriv->supplicant_ie[0], psecuritypriv->supplicant_ie[1]+2);
|
||||
memcpy(&out_ie[ielength], &psecuritypriv->supplicant_ie[0], psecuritypriv->supplicant_ie[1]+2);
|
||||
ielength += psecuritypriv->supplicant_ie[1]+2;
|
||||
rtw_report_sec_ie(adapter, authmode, psecuritypriv->supplicant_ie);
|
||||
}
|
||||
|
@ -2148,9 +2095,9 @@ void rtw_init_registrypriv_dev_network(struct adapter *adapter)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
_rtw_memcpy(pdev_network->MacAddress, myhwaddr, ETH_ALEN);
|
||||
memcpy(pdev_network->MacAddress, myhwaddr, ETH_ALEN);
|
||||
|
||||
_rtw_memcpy(&pdev_network->Ssid, &pregistrypriv->ssid, sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&pdev_network->Ssid, &pregistrypriv->ssid, sizeof(struct ndis_802_11_ssid));
|
||||
|
||||
pdev_network->Configuration.Length = sizeof(struct ndis_802_11_config);
|
||||
pdev_network->Configuration.BeaconPeriod = 100;
|
||||
|
@ -2447,12 +2394,12 @@ void rtw_issue_addbareq_cmd(struct adapter *padapter, struct xmit_frame *pxmitfr
|
|||
|
||||
void rtw_roaming(struct adapter *padapter, struct wlan_network *tgt_network)
|
||||
{
|
||||
unsigned long irqL;
|
||||
unsigned long irql;
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_enter_critical_bh(&pmlmepriv->lock, &irql);
|
||||
_rtw_roaming(padapter, tgt_network);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
_exit_critical_bh(&pmlmepriv->lock, &irql);
|
||||
}
|
||||
void _rtw_roaming(struct adapter *padapter, struct wlan_network *tgt_network)
|
||||
{
|
||||
|
@ -2470,7 +2417,7 @@ void _rtw_roaming(struct adapter *padapter, struct wlan_network *tgt_network)
|
|||
DBG_88E("roaming from %s(%pM length:%d\n",
|
||||
pnetwork->network.Ssid.Ssid, pnetwork->network.MacAddress,
|
||||
pnetwork->network.Ssid.SsidLength);
|
||||
_rtw_memcpy(&pmlmepriv->assoc_ssid, &pnetwork->network.Ssid, sizeof(struct ndis_802_11_ssid));
|
||||
memcpy(&pmlmepriv->assoc_ssid, &pnetwork->network.Ssid, sizeof(struct ndis_802_11_ssid));
|
||||
|
||||
pmlmepriv->assoc_by_bssid = false;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
165
core/rtw_mp.c
165
core/rtw_mp.c
|
@ -125,51 +125,10 @@ static void _init_mp_priv_(struct mp_priv *pmp_priv)
|
|||
pmp_priv->network_macaddr[5] = 0x55;
|
||||
|
||||
pnetwork = &pmp_priv->mp_network.network;
|
||||
_rtw_memcpy(pnetwork->MacAddress, pmp_priv->network_macaddr, ETH_ALEN);
|
||||
memcpy(pnetwork->MacAddress, pmp_priv->network_macaddr, ETH_ALEN);
|
||||
|
||||
pnetwork->Ssid.SsidLength = 8;
|
||||
_rtw_memcpy(pnetwork->Ssid.Ssid, "mp_871x", pnetwork->Ssid.SsidLength);
|
||||
}
|
||||
|
||||
static int init_mp_priv_by_os(struct mp_priv *pmp_priv)
|
||||
{
|
||||
int i, res;
|
||||
struct mp_xmit_frame *pmp_xmitframe;
|
||||
|
||||
if (pmp_priv == NULL)
|
||||
return _FAIL;
|
||||
|
||||
_rtw_init_queue(&pmp_priv->free_mp_xmitqueue);
|
||||
|
||||
pmp_priv->pallocated_mp_xmitframe_buf = NULL;
|
||||
pmp_priv->pallocated_mp_xmitframe_buf = rtw_zmalloc(NR_MP_XMITFRAME * sizeof(struct mp_xmit_frame) + 4);
|
||||
if (pmp_priv->pallocated_mp_xmitframe_buf == NULL) {
|
||||
res = _FAIL;
|
||||
goto _exit_init_mp_priv;
|
||||
}
|
||||
|
||||
pmp_priv->pmp_xmtframe_buf = pmp_priv->pallocated_mp_xmitframe_buf + 4 - ((size_t)(pmp_priv->pallocated_mp_xmitframe_buf) & 3);
|
||||
|
||||
pmp_xmitframe = (struct mp_xmit_frame *)pmp_priv->pmp_xmtframe_buf;
|
||||
|
||||
for (i = 0; i < NR_MP_XMITFRAME; i++) {
|
||||
_rtw_init_listhead(&pmp_xmitframe->list);
|
||||
rtw_list_insert_tail(&pmp_xmitframe->list, &pmp_priv->free_mp_xmitqueue.queue);
|
||||
|
||||
pmp_xmitframe->pkt = NULL;
|
||||
pmp_xmitframe->frame_tag = MP_FRAMETAG;
|
||||
pmp_xmitframe->padapter = pmp_priv->papdater;
|
||||
|
||||
pmp_xmitframe++;
|
||||
}
|
||||
|
||||
pmp_priv->free_mp_xmitframe_cnt = NR_MP_XMITFRAME;
|
||||
|
||||
res = _SUCCESS;
|
||||
|
||||
_exit_init_mp_priv:
|
||||
|
||||
return res;
|
||||
memcpy(pnetwork->Ssid.Ssid, "mp_871x", pnetwork->Ssid.SsidLength);
|
||||
}
|
||||
|
||||
static void mp_init_xmit_attrib(struct mp_tx *pmptx, struct adapter *padapter)
|
||||
|
@ -232,10 +191,8 @@ s32 init_mp_priv(struct adapter *padapter)
|
|||
|
||||
void free_mp_priv(struct mp_priv *pmp_priv)
|
||||
{
|
||||
if (pmp_priv->pallocated_mp_xmitframe_buf) {
|
||||
rtw_mfree(pmp_priv->pallocated_mp_xmitframe_buf, 0);
|
||||
pmp_priv->pallocated_mp_xmitframe_buf = NULL;
|
||||
}
|
||||
kfree(pmp_priv->pallocated_mp_xmitframe_buf);
|
||||
pmp_priv->pallocated_mp_xmitframe_buf = NULL;
|
||||
pmp_priv->pmp_xmtframe_buf = NULL;
|
||||
}
|
||||
|
||||
|
@ -343,7 +300,6 @@ static void disable_dm(struct adapter *padapter)
|
|||
{
|
||||
u8 v8;
|
||||
|
||||
|
||||
/* 3 1. disable firmware dynamic mechanism */
|
||||
/* disable Power Training, Rate Adaptive */
|
||||
v8 = rtw_read8(padapter, REG_BCN_CTRL);
|
||||
|
@ -410,9 +366,9 @@ s32 mp_start_test(struct adapter *padapter)
|
|||
|
||||
/* 3 1. initialize a new struct wlan_bssid_ex */
|
||||
/* _rtw_memset(&bssid, 0, sizeof(struct wlan_bssid_ex)); */
|
||||
_rtw_memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN);
|
||||
memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN);
|
||||
bssid.Ssid.SsidLength = strlen("mp_pseudo_adhoc");
|
||||
_rtw_memcpy(bssid.Ssid.Ssid, (u8 *)"mp_pseudo_adhoc", bssid.Ssid.SsidLength);
|
||||
memcpy(bssid.Ssid.Ssid, (u8 *)"mp_pseudo_adhoc", bssid.Ssid.SsidLength);
|
||||
bssid.InfrastructureMode = Ndis802_11IBSS;
|
||||
bssid.NetworkTypeInUse = Ndis802_11DS;
|
||||
bssid.IELength = 0;
|
||||
|
@ -457,7 +413,7 @@ s32 mp_start_test(struct adapter *padapter)
|
|||
tgt_network->join_res = 1;
|
||||
tgt_network->aid = 1;
|
||||
psta->aid = 1;
|
||||
_rtw_memcpy(&tgt_network->network, &bssid, length);
|
||||
memcpy(&tgt_network->network, &bssid, length);
|
||||
|
||||
rtw_indicate_connect(padapter);
|
||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
||||
|
@ -512,43 +468,8 @@ end_of_mp_stop_test:
|
|||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||
}
|
||||
}
|
||||
/*---------------------------hal\rtl8192c\MPT_Phy.c---------------------------*/
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Function: mpt_SwitchRfSetting
|
||||
*
|
||||
* Overview: Change RF Setting when we siwthc channel/rate/BW for MP.
|
||||
*
|
||||
* Input: struct adapter * pAdapter
|
||||
*
|
||||
* Output: NONE
|
||||
*
|
||||
* Return: NONE
|
||||
*
|
||||
* Revised History:
|
||||
* When Who Remark
|
||||
* 01/08/2009 MHC Suggestion from SD3 Willis for 92S series.
|
||||
* 01/09/2009 MHC Add CCK modification for 40MHZ. Suggestion from SD3.
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
static void mpt_SwitchRfSetting(struct adapter *pAdapter)
|
||||
{
|
||||
Hal_mpt_SwitchRfSetting(pAdapter);
|
||||
}
|
||||
|
||||
/*---------------------------hal\rtl8192c\MPT_Phy.c---------------------------*/
|
||||
/*---------------------------hal\rtl8192c\MPT_HelperFunc.c---------------------------*/
|
||||
static void MPT_CCKTxPowerAdjust(struct adapter *Adapter, bool bInCH14)
|
||||
{
|
||||
Hal_MPT_CCKTxPowerAdjust(Adapter, bInCH14);
|
||||
}
|
||||
|
||||
static void MPT_CCKTxPowerAdjustbyIndex(struct adapter *pAdapter, bool beven)
|
||||
{
|
||||
Hal_MPT_CCKTxPowerAdjustbyIndex(pAdapter, beven);
|
||||
}
|
||||
|
||||
/*---------------------------hal\rtl8192c\MPT_HelperFunc.c---------------------------*/
|
||||
|
||||
/*
|
||||
* SetChannel
|
||||
* Description
|
||||
|
@ -569,17 +490,6 @@ void SetBandwidth(struct adapter *pAdapter)
|
|||
Hal_SetBandwidth(pAdapter);
|
||||
}
|
||||
|
||||
static void SetCCKTxPower(struct adapter *pAdapter, u8 *TxPower)
|
||||
{
|
||||
Hal_SetCCKTxPower(pAdapter, TxPower);
|
||||
}
|
||||
|
||||
static void SetOFDMTxPower(struct adapter *pAdapter, u8 *TxPower)
|
||||
{
|
||||
Hal_SetOFDMTxPower(pAdapter, TxPower);
|
||||
}
|
||||
|
||||
|
||||
void SetAntenna(struct adapter *pAdapter)
|
||||
{
|
||||
Hal_SetAntenna(pAdapter);
|
||||
|
@ -595,19 +505,6 @@ void SetTxPower(struct adapter *pAdapter)
|
|||
Hal_SetTxPower(pAdapter);
|
||||
}
|
||||
|
||||
static void SetTxAGCOffset(struct adapter *pAdapter, u32 ulTxAGCOffset)
|
||||
{
|
||||
u32 TxAGCOffset_B, TxAGCOffset_C, TxAGCOffset_D, tmpAGC;
|
||||
|
||||
TxAGCOffset_B = (ulTxAGCOffset&0x000000ff);
|
||||
TxAGCOffset_C = ((ulTxAGCOffset&0x0000ff00)>>8);
|
||||
TxAGCOffset_D = ((ulTxAGCOffset&0x00ff0000)>>16);
|
||||
|
||||
tmpAGC = (TxAGCOffset_D<<8 | TxAGCOffset_C<<4 | TxAGCOffset_B);
|
||||
write_bbreg(pAdapter, rFPGA0_TxGainStage,
|
||||
(bXBTxAGC|bXCTxAGC|bXDTxAGC), tmpAGC);
|
||||
}
|
||||
|
||||
void SetDataRate(struct adapter *pAdapter)
|
||||
{
|
||||
Hal_SetDataRate(pAdapter);
|
||||
|
@ -623,16 +520,6 @@ s32 SetThermalMeter(struct adapter *pAdapter, u8 target_ther)
|
|||
return Hal_SetThermalMeter(pAdapter, target_ther);
|
||||
}
|
||||
|
||||
static void TriggerRFThermalMeter(struct adapter *pAdapter)
|
||||
{
|
||||
Hal_TriggerRFThermalMeter(pAdapter);
|
||||
}
|
||||
|
||||
static u8 ReadRFThermalMeter(struct adapter *pAdapter)
|
||||
{
|
||||
return Hal_ReadRFThermalMeter(pAdapter);
|
||||
}
|
||||
|
||||
void GetThermalMeter(struct adapter *pAdapter, u8 *value)
|
||||
{
|
||||
Hal_GetThermalMeter(pAdapter, value);
|
||||
|
@ -656,18 +543,6 @@ void SetCarrierSuppressionTx(struct adapter *pAdapter, u8 bStart)
|
|||
Hal_SetCarrierSuppressionTx(pAdapter, bStart);
|
||||
}
|
||||
|
||||
static void SetCCKContinuousTx(struct adapter *pAdapter, u8 bStart)
|
||||
{
|
||||
PhySetTxPowerLevel(pAdapter);
|
||||
Hal_SetCCKContinuousTx(pAdapter, bStart);
|
||||
}
|
||||
|
||||
static void SetOFDMContinuousTx(struct adapter *pAdapter, u8 bStart)
|
||||
{
|
||||
PhySetTxPowerLevel(pAdapter);
|
||||
Hal_SetOFDMContinuousTx(pAdapter, bStart);
|
||||
} /* mpt_StartOfdmContTx */
|
||||
|
||||
void SetContinuousTx(struct adapter *pAdapter, u8 bStart)
|
||||
{
|
||||
PhySetTxPowerLevel(pAdapter);
|
||||
|
@ -744,8 +619,8 @@ static int mp_xmit_packet_thread(void *context)
|
|||
}
|
||||
}
|
||||
|
||||
_rtw_memcpy((u8 *)(pxmitframe->buf_addr+TXDESC_OFFSET), pmptx->buf, pmptx->write_size);
|
||||
_rtw_memcpy(&(pxmitframe->attrib), &(pmptx->attrib), sizeof(struct pkt_attrib));
|
||||
memcpy((u8 *)(pxmitframe->buf_addr+TXDESC_OFFSET), pmptx->buf, pmptx->write_size);
|
||||
memcpy(&(pxmitframe->attrib), &(pmptx->attrib), sizeof(struct pkt_attrib));
|
||||
|
||||
dump_mpframe(padapter, pxmitframe);
|
||||
|
||||
|
@ -764,8 +639,7 @@ static int mp_xmit_packet_thread(void *context)
|
|||
}
|
||||
|
||||
exit:
|
||||
/* DBG_88E("%s:pkTx Exit\n", __func__); */
|
||||
rtw_mfree(pmptx->pallocated_buf, pmptx->buf_size);
|
||||
kfree(pmptx->pallocated_buf);
|
||||
pmptx->pallocated_buf = NULL;
|
||||
pmptx->stop = 1;
|
||||
|
||||
|
@ -775,7 +649,7 @@ exit:
|
|||
void fill_txdesc_for_mp(struct adapter *padapter, struct tx_desc *ptxdesc)
|
||||
{
|
||||
struct mp_priv *pmp_priv = &padapter->mppriv;
|
||||
_rtw_memcpy(ptxdesc, &(pmp_priv->tx.desc), TXDESC_SIZE);
|
||||
memcpy(ptxdesc, &(pmp_priv->tx.desc), TXDESC_SIZE);
|
||||
}
|
||||
|
||||
void SetPacketTx(struct adapter *padapter)
|
||||
|
@ -799,9 +673,9 @@ void SetPacketTx(struct adapter *padapter)
|
|||
|
||||
/* 3 1. update_attrib() */
|
||||
pattrib = &pmp_priv->tx.attrib;
|
||||
_rtw_memcpy(pattrib->src, padapter->eeprompriv.mac_addr, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pattrib->src, padapter->eeprompriv.mac_addr, ETH_ALEN);
|
||||
memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
bmcast = IS_MCAST(pattrib->ra);
|
||||
if (bmcast) {
|
||||
pattrib->mac_id = 1;
|
||||
|
@ -816,8 +690,7 @@ void SetPacketTx(struct adapter *padapter)
|
|||
/* 3 2. allocate xmit buffer */
|
||||
pkt_size = pattrib->last_txcmdsz;
|
||||
|
||||
if (pmp_priv->tx.pallocated_buf)
|
||||
rtw_mfree(pmp_priv->tx.pallocated_buf, pmp_priv->tx.buf_size);
|
||||
kfree(pmp_priv->tx.pallocated_buf);
|
||||
pmp_priv->tx.write_size = pkt_size;
|
||||
pmp_priv->tx.buf_size = pkt_size + XMITBUF_ALIGN_SZ;
|
||||
pmp_priv->tx.pallocated_buf = rtw_zmalloc(pmp_priv->tx.buf_size);
|
||||
|
@ -877,9 +750,9 @@ void SetPacketTx(struct adapter *padapter)
|
|||
/* 3 4. make wlan header, make_wlanhdr() */
|
||||
hdr = (struct rtw_ieee80211_hdr *)pkt_start;
|
||||
SetFrameSubType(&hdr->frame_ctl, pattrib->subtype);
|
||||
_rtw_memcpy(hdr->addr1, pattrib->dst, ETH_ALEN); /* DA */
|
||||
_rtw_memcpy(hdr->addr2, pattrib->src, ETH_ALEN); /* SA */
|
||||
_rtw_memcpy(hdr->addr3, get_bssid(&padapter->mlmepriv), ETH_ALEN); /* RA, BSSID */
|
||||
memcpy(hdr->addr1, pattrib->dst, ETH_ALEN); /* DA */
|
||||
memcpy(hdr->addr2, pattrib->src, ETH_ALEN); /* SA */
|
||||
memcpy(hdr->addr3, get_bssid(&padapter->mlmepriv), ETH_ALEN); /* RA, BSSID */
|
||||
|
||||
/* 3 5. make payload */
|
||||
ptr = pkt_start + pattrib->hdrlen;
|
||||
|
@ -1034,7 +907,7 @@ u32 mp_query_psd(struct adapter *pAdapter, u8 *data)
|
|||
sscanf(data, "pts =%d, start =%d, stop =%d", &psd_pts, &psd_start, &psd_stop);
|
||||
}
|
||||
|
||||
_rtw_memset(data, '\0', sizeof(data));
|
||||
_rtw_memset(data, '\0', sizeof(*data));
|
||||
|
||||
i = psd_start;
|
||||
while (i < psd_stop) {
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
#include <rtw_mp_ioctl.h>
|
||||
|
||||
|
||||
/* oid_rtl_seg_81_85 section start **************** */
|
||||
int oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv)
|
||||
/* rtl8188eu_oid_rtl_seg_81_85 section start **************** */
|
||||
int rtl8188eu_oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -52,8 +52,8 @@ _func_exit_;
|
|||
|
||||
return status;
|
||||
}
|
||||
/* oid_rtl_seg_81_87_80 section start **************** */
|
||||
int oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
/* rtl8188eu_oid_rtl_seg_81_87_80 section start **************** */
|
||||
int rtl8188eu_oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct bb_reg_param *pbbreg;
|
||||
u16 offset;
|
||||
|
@ -63,7 +63,7 @@ int oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_write_bb_reg_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_write_bb_reg_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -80,7 +80,7 @@ _func_enter_;
|
|||
value = pbbreg->value;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_write_bb_reg_hdl: offset=0x%03X value=0x%08X\n",
|
||||
("rtl8188eu_oid_rt_pro_write_bb_reg_hdl: offset=0x%03X value=0x%08X\n",
|
||||
offset, value));
|
||||
|
||||
_irqlevel_changed_(&oldirql, LOWER);
|
||||
|
@ -92,7 +92,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct bb_reg_param *pbbreg;
|
||||
u16 offset;
|
||||
|
@ -102,7 +102,7 @@ int oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_read_bb_reg_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_read_bb_reg_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != QUERY_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -124,14 +124,14 @@ _func_enter_;
|
|||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("-oid_rt_pro_read_bb_reg_hdl: offset=0x%03X value:0x%08X\n",
|
||||
("-rtl8188eu_oid_rt_pro_read_bb_reg_hdl: offset=0x%03X value:0x%08X\n",
|
||||
offset, value));
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct rf_reg_param *pbbreg;
|
||||
u8 path;
|
||||
|
@ -142,7 +142,7 @@ int oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_write_rf_reg_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_write_rf_reg_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -164,7 +164,7 @@ _func_enter_;
|
|||
value = pbbreg->value;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_write_rf_reg_hdl: path=%d offset=0x%02X value=0x%05X\n",
|
||||
("rtl8188eu_oid_rt_pro_write_rf_reg_hdl: path=%d offset=0x%02X value=0x%05X\n",
|
||||
path, offset, value));
|
||||
|
||||
_irqlevel_changed_(&oldirql, LOWER);
|
||||
|
@ -176,7 +176,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct rf_reg_param *pbbreg;
|
||||
u8 path;
|
||||
|
@ -187,7 +187,7 @@ int oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_read_rf_reg_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_read_rf_reg_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != QUERY_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -214,19 +214,19 @@ _func_enter_;
|
|||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("-oid_rt_pro_read_rf_reg_hdl: path=%d offset=0x%02X value=0x%05X\n",
|
||||
("-rtl8188eu_oid_rt_pro_read_rf_reg_hdl: path=%d offset=0x%02X value=0x%05X\n",
|
||||
path, offset, value));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* oid_rtl_seg_81_87_00 section end**************** */
|
||||
/* rtl8188eu_oid_rtl_seg_81_87_00 section end**************** */
|
||||
/* */
|
||||
|
||||
/* oid_rtl_seg_81_80_00 section start **************** */
|
||||
/* rtl8188eu_oid_rtl_seg_81_80_00 section start **************** */
|
||||
/* */
|
||||
int oid_rt_pro_set_data_rate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_data_rate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 ratevalue;/* 4 */
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -235,7 +235,7 @@ int oid_rt_pro_set_data_rate_hdl(struct oid_par_priv *poid_par_priv)
|
|||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("+oid_rt_pro_set_data_rate_hdl\n"));
|
||||
("+rtl8188eu_oid_rt_pro_set_data_rate_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -245,7 +245,7 @@ _func_enter_;
|
|||
|
||||
ratevalue = *((u32 *)poid_par_priv->information_buf);/* 4 */
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_set_data_rate_hdl: data rate idx=%d\n", ratevalue));
|
||||
("rtl8188eu_oid_rt_pro_set_data_rate_hdl: data rate idx=%d\n", ratevalue));
|
||||
if (ratevalue >= MPT_RATE_LAST)
|
||||
return NDIS_STATUS_INVALID_DATA;
|
||||
|
||||
|
@ -260,7 +260,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 mode;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -268,7 +268,7 @@ int oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_start_test_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_start_test_hdl\n"));
|
||||
|
||||
if (Adapter->registrypriv.mp_mode == 0)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -291,14 +291,14 @@ _func_enter_;
|
|||
exit:
|
||||
_irqlevel_changed_(&oldirql, RAISE);
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("-oid_rt_pro_start_test_hdl: mp_mode=%d\n", Adapter->mppriv.mode));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("-rtl8188eu_oid_rt_pro_start_test_hdl: mp_mode=%d\n", Adapter->mppriv.mode));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -321,7 +321,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 Channel;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -329,7 +329,7 @@ int oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_channel_direct_call_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_set_channel_direct_call_hdl\n"));
|
||||
|
||||
if (poid_par_priv->information_buf_len != sizeof(u32))
|
||||
return NDIS_STATUS_INVALID_LENGTH;
|
||||
|
@ -343,7 +343,7 @@ _func_enter_;
|
|||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
||||
Channel = *((u32 *)poid_par_priv->information_buf);
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("oid_rt_pro_set_channel_direct_call_hdl: Channel=%d\n", Channel));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("rtl8188eu_oid_rt_pro_set_channel_direct_call_hdl: Channel=%d\n", Channel));
|
||||
if (Channel > 14)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
Adapter->mppriv.channel = Channel;
|
||||
|
@ -357,7 +357,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u16 bandwidth;
|
||||
u16 channel_offset;
|
||||
|
@ -367,7 +367,7 @@ int oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv)
|
|||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("+oid_rt_set_bandwidth_hdl\n"));
|
||||
("+rtl8188eu_oid_rt_set_bandwidth_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -388,7 +388,7 @@ _func_enter_;
|
|||
_irqlevel_changed_(&oldirql, RAISE);
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("-oid_rt_set_bandwidth_hdl: bandwidth=%d channel_offset=%d\n",
|
||||
("-rtl8188eu_oid_rt_set_bandwidth_hdl: bandwidth=%d channel_offset=%d\n",
|
||||
bandwidth, channel_offset));
|
||||
|
||||
_func_exit_;
|
||||
|
@ -396,7 +396,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 antenna;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -404,7 +404,7 @@ int oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_antenna_bb_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_set_antenna_bb_hdl\n"));
|
||||
|
||||
if (poid_par_priv->information_buf_len != sizeof(u32))
|
||||
return NDIS_STATUS_INVALID_LENGTH;
|
||||
|
@ -415,7 +415,7 @@ _func_enter_;
|
|||
Adapter->mppriv.antenna_tx = (u16)((antenna & 0xFFFF0000) >> 16);
|
||||
Adapter->mppriv.antenna_rx = (u16)(antenna & 0x0000FFFF);
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_set_antenna_bb_hdl: tx_ant=0x%04x rx_ant=0x%04x\n",
|
||||
("rtl8188eu_oid_rt_pro_set_antenna_bb_hdl: tx_ant=0x%04x rx_ant=0x%04x\n",
|
||||
Adapter->mppriv.antenna_tx, Adapter->mppriv.antenna_rx));
|
||||
|
||||
_irqlevel_changed_(&oldirql, LOWER);
|
||||
|
@ -431,7 +431,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 tx_pwr_idx;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -439,7 +439,7 @@ int oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_pro_set_tx_power_control_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+rtl8188eu_oid_rt_pro_set_tx_power_control_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -454,7 +454,7 @@ _func_enter_;
|
|||
Adapter->mppriv.txpoweridx = (u8)tx_pwr_idx;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_set_tx_power_control_hdl: idx=0x%2x\n",
|
||||
("rtl8188eu_oid_rt_pro_set_tx_power_control_hdl: idx=0x%2x\n",
|
||||
Adapter->mppriv.txpoweridx));
|
||||
|
||||
_irqlevel_changed_(&oldirql, LOWER);
|
||||
|
@ -467,9 +467,9 @@ _func_exit_;
|
|||
}
|
||||
|
||||
/* */
|
||||
/* oid_rtl_seg_81_80_20 section start **************** */
|
||||
/* rtl8188eu_oid_rtl_seg_81_80_20 section start **************** */
|
||||
/* */
|
||||
int oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -493,7 +493,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -504,7 +504,7 @@ _func_enter_;
|
|||
status = NDIS_STATUS_NOT_ACCEPTED;
|
||||
return status;
|
||||
}
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("===> oid_rt_pro_query_rx_packet_received_hdl.\n"));
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("===> rtl8188eu_oid_rt_pro_query_rx_packet_received_hdl.\n"));
|
||||
if (poid_par_priv->information_buf_len == sizeof(u32)) {
|
||||
*(u32 *)poid_par_priv->information_buf = Adapter->mppriv.rx_pktcount;
|
||||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
@ -518,7 +518,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -529,7 +529,7 @@ _func_enter_;
|
|||
status = NDIS_STATUS_NOT_ACCEPTED;
|
||||
return status;
|
||||
}
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("===> oid_rt_pro_query_rx_packet_crc32_error_hdl.\n"));
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("===> rtl8188eu_oid_rt_pro_query_rx_packet_crc32_error_hdl.\n"));
|
||||
if (poid_par_priv->information_buf_len == sizeof(u32)) {
|
||||
*(u32 *)poid_par_priv->information_buf = Adapter->mppriv.rx_crcerrpktcount;
|
||||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
@ -544,7 +544,7 @@ _func_exit_;
|
|||
}
|
||||
/* */
|
||||
|
||||
int oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -556,7 +556,7 @@ _func_enter_;
|
|||
return status;
|
||||
}
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("===> oid_rt_pro_reset_tx_packet_sent_hdl.\n"));
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("===> rtl8188eu_oid_rt_pro_reset_tx_packet_sent_hdl.\n"));
|
||||
Adapter->mppriv.tx_pktcount = 0;
|
||||
|
||||
_func_exit_;
|
||||
|
@ -564,7 +564,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -588,7 +588,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -609,14 +609,14 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_get_phy_rx_packet_received_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+rtl8188eu_oid_rt_get_phy_rx_packet_received_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != QUERY_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -630,21 +630,21 @@ _func_enter_;
|
|||
|
||||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("-oid_rt_get_phy_rx_packet_received_hdl: recv_ok=%d\n", *(u32 *)poid_par_priv->information_buf));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("-rtl8188eu_oid_rt_get_phy_rx_packet_received_hdl: recv_ok=%d\n", *(u32 *)poid_par_priv->information_buf));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_get_phy_rx_packet_crc32_error_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+rtl8188eu_oid_rt_get_phy_rx_packet_crc32_error_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != QUERY_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -660,15 +660,15 @@ _func_enter_;
|
|||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("-oid_rt_get_phy_rx_packet_crc32_error_hdl: recv_err =%d\n",
|
||||
("-rtl8188eu_oid_rt_get_phy_rx_packet_crc32_error_hdl: recv_err =%d\n",
|
||||
*(u32 *)poid_par_priv->information_buf));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* oid_rtl_seg_81_80_20 section end **************** */
|
||||
int oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
/* rtl8188eu_oid_rtl_seg_81_80_20 section end **************** */
|
||||
int rtl8188eu_oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 bStartTest;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -676,7 +676,7 @@ int oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_continuous_tx_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_set_continuous_tx_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -703,7 +703,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 bStartTest;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -711,7 +711,7 @@ int oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("+oid_rt_pro_set_single_carrier_tx_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("+rtl8188eu_oid_rt_pro_set_single_carrier_tx_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -738,7 +738,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 bStartTest;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -746,7 +746,7 @@ int oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv *poid_par_priv
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_set_carrier_suppression_tx_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_set_carrier_suppression_tx_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -773,7 +773,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u32 bStartTest;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -781,7 +781,7 @@ int oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("+oid_rt_pro_set_single_tone_tx_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_alert_, ("+rtl8188eu_oid_rt_pro_set_single_tone_tx_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -797,12 +797,12 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int oid_rt_pro_trigger_gpio_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_trigger_gpio_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -819,14 +819,14 @@ _func_exit_;
|
|||
|
||||
return status;
|
||||
}
|
||||
/* oid_rtl_seg_81_80_00 section end **************** */
|
||||
/* rtl8188eu_oid_rtl_seg_81_80_00 section end **************** */
|
||||
/* */
|
||||
int oid_rt_pro8711_join_bss_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro8711_join_bss_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct mp_rw_reg *RegRWStruct;
|
||||
u32 offset, width;
|
||||
|
@ -836,7 +836,7 @@ int oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv)
|
|||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("+oid_rt_pro_read_register_hdl\n"));
|
||||
("+rtl8188eu_oid_rt_pro_read_register_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != QUERY_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -863,7 +863,7 @@ _func_enter_;
|
|||
break;
|
||||
}
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_read_register_hdl: offset:0x%04X value:0x%X\n",
|
||||
("rtl8188eu_oid_rt_pro_read_register_hdl: offset:0x%04X value:0x%X\n",
|
||||
offset, RegRWStruct->value));
|
||||
|
||||
_irqlevel_changed_(&oldirql, RAISE);
|
||||
|
@ -875,7 +875,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct mp_rw_reg *RegRWStruct;
|
||||
u32 offset, width, value;
|
||||
|
@ -885,7 +885,7 @@ int oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv)
|
|||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("+oid_rt_pro_write_register_hdl\n"));
|
||||
("+rtl8188eu_oid_rt_pro_write_register_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -926,7 +926,7 @@ _func_enter_;
|
|||
_irqlevel_changed_(&oldirql, RAISE);
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("-oid_rt_pro_write_register_hdl: offset=0x%08X width=%d value=0x%X\n",
|
||||
("-rtl8188eu_oid_rt_pro_write_register_hdl: offset=0x%08X width=%d value=0x%X\n",
|
||||
offset, width, value));
|
||||
|
||||
_func_exit_;
|
||||
|
@ -934,69 +934,69 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_burst_read_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_burst_read_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_burst_write_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_burst_write_register_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_write_txcmd_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_write_txcmd_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* */
|
||||
int oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* */
|
||||
int oid_rt_pro_write16_eeprom_hdl (struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_write16_eeprom_hdl (struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_rd_attrib_mem_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_rd_attrib_mem_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_wr_attrib_mem_hdl (struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_wr_attrib_mem_hdl (struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_poll_rx_status_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_poll_rx_status_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_cfg_debug_message_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_cfg_debug_message_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_data_rate_ex_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_data_rate_ex_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
||||
|
@ -1021,7 +1021,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_get_thermal_meter_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_get_thermal_meter_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
u8 thermal = 0;
|
||||
|
@ -1029,7 +1029,7 @@ int oid_rt_get_thermal_meter_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_get_thermal_meter_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_get_thermal_meter_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != QUERY_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -1049,12 +1049,12 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_read_tssi_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_read_tssi_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_power_tracking_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_power_tracking_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -1071,7 +1071,7 @@ _func_enter_;
|
|||
|
||||
enable = *(u8 *)poid_par_priv->information_buf;
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("+oid_rt_pro_set_power_tracking_hdl: enable =%d\n", enable));
|
||||
("+rtl8188eu_oid_rt_pro_set_power_tracking_hdl: enable =%d\n", enable));
|
||||
|
||||
SetPowerTracking(Adapter, enable);
|
||||
} else {
|
||||
|
@ -1084,54 +1084,58 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_basic_rate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_basic_rate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_qry_pwrstate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_qry_pwrstate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_set_pwrstate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_pwrstate_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_h2c_set_rate_table_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_h2c_set_rate_table_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_h2c_get_rate_table_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_h2c_get_rate_table_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* oid_rtl_seg_87_12_00 section start **************** */
|
||||
int oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv *poid_par_priv)
|
||||
/* rtl8188eu_oid_rtl_seg_87_12_00 section start **************** */
|
||||
int rtl8188eu_oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_add_sta_info_hdl(struct oid_par_priv *poid_par_priv)
|
||||
|
||||
int rtl8188eu_oid_rt_pro_add_sta_info_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv *poid_par_priv)
|
||||
|
||||
int rtl8188eu_oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
/* */
|
||||
/* */
|
||||
int oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv)
|
||||
|
||||
int rtl8188eu_oid_rt_pro_query_dr_variable_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rtl8188eu_oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct efuse_access_struct *pefuse;
|
||||
u8 *data;
|
||||
|
@ -1153,19 +1157,19 @@ _func_enter_;
|
|||
data = pefuse->data;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("+oid_rt_pro_read_efuse_hd: buf_len=%d addr=%d cnts=%d\n",
|
||||
("+rtl8188eu_oid_rt_pro_read_efuse_hd: buf_len=%d addr=%d cnts=%d\n",
|
||||
poid_par_priv->information_buf_len, addr, cnts));
|
||||
|
||||
EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (void *)&max_available_size, false);
|
||||
|
||||
if ((addr + cnts) > max_available_size) {
|
||||
RT_TRACE(_module_mp_, _drv_err_, ("!oid_rt_pro_read_efuse_hdl: parameter error!\n"));
|
||||
RT_TRACE(_module_mp_, _drv_err_, ("!rtl8188eu_oid_rt_pro_read_efuse_hdl: parameter error!\n"));
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
}
|
||||
|
||||
_irqlevel_changed_(&oldirql, LOWER);
|
||||
if (rtw_efuse_access(Adapter, false, addr, cnts, data) == _FAIL) {
|
||||
RT_TRACE(_module_mp_, _drv_err_, ("!oid_rt_pro_read_efuse_hdl: rtw_efuse_access FAIL!\n"));
|
||||
RT_TRACE(_module_mp_, _drv_err_, ("!rtl8188eu_oid_rt_pro_read_efuse_hdl: rtw_efuse_access FAIL!\n"));
|
||||
status = NDIS_STATUS_FAILURE;
|
||||
} else {
|
||||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
@ -1177,7 +1181,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct efuse_access_struct *pefuse;
|
||||
u8 *data;
|
||||
|
@ -1197,13 +1201,13 @@ _func_enter_;
|
|||
data = pefuse->data;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("+oid_rt_pro_write_efuse_hdl: buf_len=%d addr=0x%04x cnts=%d\n",
|
||||
("+rtl8188eu_oid_rt_pro_write_efuse_hdl: buf_len=%d addr=0x%04x cnts=%d\n",
|
||||
poid_par_priv->information_buf_len, addr, cnts));
|
||||
|
||||
EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (void *)&max_available_size, false);
|
||||
|
||||
if ((addr + cnts) > max_available_size) {
|
||||
RT_TRACE(_module_mp_, _drv_err_, ("!oid_rt_pro_write_efuse_hdl: parameter error"));
|
||||
RT_TRACE(_module_mp_, _drv_err_, ("!rtl8188eu_oid_rt_pro_write_efuse_hdl: parameter error"));
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
}
|
||||
|
||||
|
@ -1217,7 +1221,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct pgpkt *ppgpkt;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -1236,7 +1240,7 @@ _func_enter_;
|
|||
|
||||
if (poid_par_priv->type_of_oid == QUERY_OID) {
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_rw_efuse_pgpkt_hdl: Read offset=0x%x\n",\
|
||||
("rtl8188eu_oid_rt_pro_rw_efuse_pgpkt_hdl: Read offset=0x%x\n",\
|
||||
ppgpkt->offset));
|
||||
|
||||
Efuse_PowerSwitch(Adapter, false, true);
|
||||
|
@ -1247,7 +1251,7 @@ _func_enter_;
|
|||
Efuse_PowerSwitch(Adapter, false, false);
|
||||
} else {
|
||||
RT_TRACE(_module_mp_, _drv_notice_,
|
||||
("oid_rt_pro_rw_efuse_pgpkt_hdl: Write offset=0x%x word_en=0x%x\n",\
|
||||
("rtl8188eu_oid_rt_pro_rw_efuse_pgpkt_hdl: Write offset=0x%x word_en=0x%x\n",\
|
||||
ppgpkt->offset, ppgpkt->word_en));
|
||||
|
||||
Efuse_PowerSwitch(Adapter, true, true);
|
||||
|
@ -1261,14 +1265,14 @@ _func_enter_;
|
|||
_irqlevel_changed_(&oldirql, RAISE);
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("-oid_rt_pro_rw_efuse_pgpkt_hdl: status=0x%08X\n", status));
|
||||
("-rtl8188eu_oid_rt_pro_rw_efuse_pgpkt_hdl: status=0x%08X\n", status));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u16 size;
|
||||
u8 ret;
|
||||
|
@ -1297,7 +1301,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
struct adapter *Adapter = (struct adapter *)(poid_par_priv->adapter_context);
|
||||
|
@ -1314,7 +1318,7 @@ _func_enter_;
|
|||
*poid_par_priv->bytes_rw = poid_par_priv->information_buf_len;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("-oid_rt_get_efuse_max_size_hdl: size=%d status=0x%08X\n",
|
||||
("-rtl8188eu_oid_rt_get_efuse_max_size_hdl: size=%d status=0x%08X\n",
|
||||
*(int *)poid_par_priv->information_buf, status));
|
||||
|
||||
_func_exit_;
|
||||
|
@ -1322,27 +1326,27 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+oid_rt_pro_efuse_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("+rtl8188eu_oid_rt_pro_efuse_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid == QUERY_OID)
|
||||
status = oid_rt_pro_read_efuse_hdl(poid_par_priv);
|
||||
status = rtl8188eu_oid_rt_pro_read_efuse_hdl(poid_par_priv);
|
||||
else
|
||||
status = oid_rt_pro_write_efuse_hdl(poid_par_priv);
|
||||
status = rtl8188eu_oid_rt_pro_write_efuse_hdl(poid_par_priv);
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("-oid_rt_pro_efuse_hdl: status=0x%08X\n", status));
|
||||
RT_TRACE(_module_mp_, _drv_info_, ("-rtl8188eu_oid_rt_pro_efuse_hdl: status=0x%08X\n", status));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u8 *data;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
@ -1351,7 +1355,7 @@ int oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv)
|
|||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_pro_efuse_map_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_pro_efuse_map_hdl\n"));
|
||||
|
||||
EFUSE_GetEfuseDefinition(Adapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (void *)&maplen, false);
|
||||
|
||||
|
@ -1366,25 +1370,25 @@ _func_enter_;
|
|||
|
||||
if (poid_par_priv->type_of_oid == QUERY_OID) {
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("oid_rt_pro_efuse_map_hdl: READ\n"));
|
||||
("rtl8188eu_oid_rt_pro_efuse_map_hdl: READ\n"));
|
||||
|
||||
if (rtw_efuse_map_read(Adapter, 0, maplen, data) == _SUCCESS) {
|
||||
*poid_par_priv->bytes_rw = maplen;
|
||||
} else {
|
||||
RT_TRACE(_module_mp_, _drv_err_,
|
||||
("oid_rt_pro_efuse_map_hdl: READ fail\n"));
|
||||
("rtl8188eu_oid_rt_pro_efuse_map_hdl: READ fail\n"));
|
||||
status = NDIS_STATUS_FAILURE;
|
||||
}
|
||||
} else {
|
||||
/* SET_OID */
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("oid_rt_pro_efuse_map_hdl: WRITE\n"));
|
||||
("rtl8188eu_oid_rt_pro_efuse_map_hdl: WRITE\n"));
|
||||
|
||||
if (rtw_efuse_map_write(Adapter, 0, maplen, data) == _SUCCESS) {
|
||||
*poid_par_priv->bytes_rw = maplen;
|
||||
} else {
|
||||
RT_TRACE(_module_mp_, _drv_err_,
|
||||
("oid_rt_pro_efuse_map_hdl: WRITE fail\n"));
|
||||
("rtl8188eu_oid_rt_pro_efuse_map_hdl: WRITE fail\n"));
|
||||
status = NDIS_STATUS_FAILURE;
|
||||
}
|
||||
}
|
||||
|
@ -1392,27 +1396,27 @@ _func_enter_;
|
|||
_irqlevel_changed_(&oldirql, RAISE);
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("-oid_rt_pro_efuse_map_hdl: status=0x%08X\n", status));
|
||||
("-rtl8188eu_oid_rt_pro_efuse_map_hdl: status=0x%08X\n", status));
|
||||
|
||||
_func_exit_;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_set_crystal_cap_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_set_crystal_cap_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
u8 rx_pkt_type;
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+oid_rt_set_rx_packet_type_hdl\n"));
|
||||
RT_TRACE(_module_mp_, _drv_notice_, ("+rtl8188eu_oid_rt_set_rx_packet_type_hdl\n"));
|
||||
|
||||
if (poid_par_priv->type_of_oid != SET_OID)
|
||||
return NDIS_STATUS_NOT_ACCEPTED;
|
||||
|
@ -1428,17 +1432,17 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_tx_agc_offset_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_tx_agc_offset_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int oid_rt_pro_set_pkt_test_mode_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_pro_set_pkt_test_mode_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
struct mp_xmit_parm *pparm;
|
||||
struct adapter *padapter;
|
||||
|
@ -1463,7 +1467,7 @@ int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
|
|||
pmp_priv->tx.payload = pparm->payload_type;
|
||||
pattrib = &pmp_priv->tx.attrib;
|
||||
pattrib->pktlen = pparm->length;
|
||||
_rtw_memcpy(pattrib->dst, pparm->da, ETH_ALEN);
|
||||
memcpy(pattrib->dst, pparm->da, ETH_ALEN);
|
||||
SetPacketTx(padapter);
|
||||
} else {
|
||||
return NDIS_STATUS_FAILURE;
|
||||
|
@ -1474,7 +1478,7 @@ int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv)
|
|||
}
|
||||
|
||||
/* */
|
||||
int oid_rt_set_power_down_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_set_power_down_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
int status = NDIS_STATUS_SUCCESS;
|
||||
|
||||
|
@ -1486,7 +1490,7 @@ _func_enter_;
|
|||
}
|
||||
|
||||
RT_TRACE(_module_mp_, _drv_info_,
|
||||
("\n ===> Setoid_rt_set_power_down_hdl.\n"));
|
||||
("\n ===> Setrtl8188eu_oid_rt_set_power_down_hdl.\n"));
|
||||
|
||||
_irqlevel_changed_(&oldirql, LOWER);
|
||||
|
||||
|
@ -1498,7 +1502,7 @@ _func_exit_;
|
|||
return status;
|
||||
}
|
||||
/* */
|
||||
int oid_rt_get_power_mode_hdl(struct oid_par_priv *poid_par_priv)
|
||||
int rtl8188eu_oid_rt_get_power_mode_hdl(struct oid_par_priv *poid_par_priv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
164
core/rtw_p2p.c
164
core/rtw_p2p.c
|
@ -23,7 +23,7 @@
|
|||
#include <rtw_p2p.h>
|
||||
#include <wifi.h>
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
|
||||
static int rtw_p2p_is_channel_list_ok(u8 desired_ch, u8 *ch_list, u8 ch_cnt)
|
||||
{
|
||||
|
@ -38,34 +38,6 @@ static int rtw_p2p_is_channel_list_ok(u8 desired_ch, u8 *ch_list, u8 ch_cnt)
|
|||
return found;
|
||||
}
|
||||
|
||||
static int is_any_client_associated(struct adapter *padapter)
|
||||
{
|
||||
unsigned long irqL;
|
||||
struct list_head *phead, *plist;
|
||||
int intFound = false;
|
||||
|
||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||
|
||||
_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||
phead = &pstapriv->asoc_list;
|
||||
plist = get_next(phead);
|
||||
|
||||
if (rtw_end_of_queue_search(phead, plist))
|
||||
intFound = false;
|
||||
else
|
||||
intFound = true;
|
||||
|
||||
if ((!intFound && pstapriv->asoc_list_cnt) ||
|
||||
(intFound && !pstapriv->asoc_list_cnt)) {
|
||||
DBG_88E("%s intFound:%d, asoc_list_cnt:%u mismatch\n", __func__ ,
|
||||
intFound, pstapriv->asoc_list_cnt);
|
||||
}
|
||||
|
||||
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||
|
||||
return intFound;
|
||||
}
|
||||
|
||||
static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
||||
{
|
||||
unsigned long irqL;
|
||||
|
@ -101,11 +73,11 @@ static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
|||
pcur++;
|
||||
|
||||
/* P2P device address */
|
||||
_rtw_memcpy(pcur, psta->dev_addr, ETH_ALEN);
|
||||
memcpy(pcur, psta->dev_addr, ETH_ALEN);
|
||||
pcur += ETH_ALEN;
|
||||
|
||||
/* P2P interface address */
|
||||
_rtw_memcpy(pcur, psta->hwaddr, ETH_ALEN);
|
||||
memcpy(pcur, psta->hwaddr, ETH_ALEN);
|
||||
pcur += ETH_ALEN;
|
||||
|
||||
*pcur = psta->dev_cap;
|
||||
|
@ -115,13 +87,13 @@ static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
|||
RTW_PUT_BE16(pcur, psta->config_methods);
|
||||
pcur += 2;
|
||||
|
||||
_rtw_memcpy(pcur, psta->primary_dev_type, 8);
|
||||
memcpy(pcur, psta->primary_dev_type, 8);
|
||||
pcur += 8;
|
||||
|
||||
*pcur = psta->num_of_secdev_type;
|
||||
pcur++;
|
||||
|
||||
_rtw_memcpy(pcur, psta->secdev_types_list, psta->num_of_secdev_type*8);
|
||||
memcpy(pcur, psta->secdev_types_list, psta->num_of_secdev_type*8);
|
||||
pcur += psta->num_of_secdev_type*8;
|
||||
|
||||
if (psta->dev_name_len > 0) {
|
||||
|
@ -133,7 +105,7 @@ static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
|||
RTW_PUT_BE16(pcur, psta->dev_name_len);
|
||||
pcur += 2;
|
||||
|
||||
_rtw_memcpy(pcur, psta->dev_name, psta->dev_name_len);
|
||||
memcpy(pcur, psta->dev_name, psta->dev_name_len);
|
||||
pcur += psta->dev_name_len;
|
||||
}
|
||||
|
||||
|
@ -153,8 +125,7 @@ static u32 go_add_group_info_attr(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
|||
if (attr_len > 0)
|
||||
len = rtw_set_p2p_attr_content(pbuf, P2P_ATTR_GROUP_INFO, attr_len, pdata_attr);
|
||||
|
||||
rtw_mfree(pdata_attr, MAX_P2P_IE_LEN);
|
||||
|
||||
kfree(pdata_attr);
|
||||
return len;
|
||||
}
|
||||
|
||||
|
@ -164,7 +135,7 @@ static void issue_group_disc_req(struct wifidirect_info *pwdinfo, u8 *da)
|
|||
struct pkt_attrib *pattrib;
|
||||
unsigned char *pframe;
|
||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||
unsigned short *fctrl;
|
||||
__le16 *fctrl;
|
||||
struct adapter *padapter = pwdinfo->padapter;
|
||||
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
||||
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
||||
|
@ -191,9 +162,9 @@ static void issue_group_disc_req(struct wifidirect_info *pwdinfo, u8 *da)
|
|||
fctrl = &(pwlanhdr->frame_ctl);
|
||||
*(fctrl) = 0;
|
||||
|
||||
_rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, pwdinfo->interface_addr, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, pwdinfo->interface_addr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, da, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, pwdinfo->interface_addr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, pwdinfo->interface_addr, ETH_ALEN);
|
||||
|
||||
SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
|
||||
pmlmeext->mgnt_seq++;
|
||||
|
@ -221,7 +192,7 @@ static void issue_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 s
|
|||
struct pkt_attrib *pattrib;
|
||||
unsigned char *pframe;
|
||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||
unsigned short *fctrl;
|
||||
__le16 *fctrl;
|
||||
struct adapter *padapter = pwdinfo->padapter;
|
||||
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
||||
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
||||
|
@ -250,9 +221,9 @@ static void issue_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 s
|
|||
fctrl = &(pwlanhdr->frame_ctl);
|
||||
*(fctrl) = 0;
|
||||
|
||||
_rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, pwdinfo->device_addr, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, pwdinfo->device_addr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, da, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, pwdinfo->device_addr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, pwdinfo->device_addr, ETH_ALEN);
|
||||
|
||||
SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
|
||||
pmlmeext->mgnt_seq++;
|
||||
|
@ -301,7 +272,7 @@ static void issue_p2p_provision_resp(struct wifidirect_info *pwdinfo, u8 *raddr,
|
|||
struct pkt_attrib *pattrib;
|
||||
unsigned char *pframe;
|
||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||
unsigned short *fctrl;
|
||||
__le16 *fctrl;
|
||||
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
||||
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
||||
|
||||
|
@ -321,9 +292,9 @@ static void issue_p2p_provision_resp(struct wifidirect_info *pwdinfo, u8 *raddr,
|
|||
fctrl = &(pwlanhdr->frame_ctl);
|
||||
*(fctrl) = 0;
|
||||
|
||||
_rtw_memcpy(pwlanhdr->addr1, raddr, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, raddr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, myid(&(padapter->eeprompriv)), ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, myid(&(padapter->eeprompriv)), ETH_ALEN);
|
||||
|
||||
SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
|
||||
pmlmeext->mgnt_seq++;
|
||||
|
@ -371,7 +342,7 @@ static void issue_p2p_presence_resp(struct wifidirect_info *pwdinfo, u8 *da, u8
|
|||
struct pkt_attrib *pattrib;
|
||||
unsigned char *pframe;
|
||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||
unsigned short *fctrl;
|
||||
__le16 *fctrl;
|
||||
struct adapter *padapter = pwdinfo->padapter;
|
||||
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
||||
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
||||
|
@ -400,9 +371,9 @@ static void issue_p2p_presence_resp(struct wifidirect_info *pwdinfo, u8 *da, u8
|
|||
fctrl = &(pwlanhdr->frame_ctl);
|
||||
*(fctrl) = 0;
|
||||
|
||||
_rtw_memcpy(pwlanhdr->addr1, da, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, pwdinfo->interface_addr, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, pwdinfo->interface_addr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, da, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, pwdinfo->interface_addr, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, pwdinfo->interface_addr, ETH_ALEN);
|
||||
|
||||
SetSeqNum(pwlanhdr, pmlmeext->mgnt_seq);
|
||||
pmlmeext->mgnt_seq++;
|
||||
|
@ -583,7 +554,7 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
|||
|
||||
/* Value: */
|
||||
/* P2P Device Address */
|
||||
_rtw_memcpy(p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN);
|
||||
memcpy(p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN);
|
||||
p2pielen += ETH_ALEN;
|
||||
|
||||
/* Config Method */
|
||||
|
@ -623,7 +594,7 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf)
|
|||
p2pielen += 2;
|
||||
|
||||
/* Value: */
|
||||
_rtw_memcpy(p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len);
|
||||
memcpy(p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len);
|
||||
p2pielen += pwdinfo->device_name_len;
|
||||
|
||||
/* Group Info ATTR */
|
||||
|
@ -691,7 +662,7 @@ u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8
|
|||
|
||||
/* Value: */
|
||||
/* P2P Device Address */
|
||||
_rtw_memcpy(p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN);
|
||||
memcpy(p2pie + p2pielen, pwdinfo->device_addr, ETH_ALEN);
|
||||
p2pielen += ETH_ALEN;
|
||||
|
||||
/* Config Method */
|
||||
|
@ -737,7 +708,7 @@ u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8
|
|||
p2pielen += 2;
|
||||
|
||||
/* Value: */
|
||||
_rtw_memcpy(p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len);
|
||||
memcpy(p2pie + p2pielen, pwdinfo->device_name, pwdinfo->device_name_len);
|
||||
p2pielen += pwdinfo->device_name_len;
|
||||
|
||||
if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_CLIENT)) {
|
||||
|
@ -754,10 +725,10 @@ u32 build_prov_disc_request_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf, u8
|
|||
p2pielen += 2;
|
||||
|
||||
/* Value: */
|
||||
_rtw_memcpy(p2pie + p2pielen, pdev_raddr, ETH_ALEN);
|
||||
memcpy(p2pie + p2pielen, pdev_raddr, ETH_ALEN);
|
||||
p2pielen += ETH_ALEN;
|
||||
|
||||
_rtw_memcpy(p2pie + p2pielen, pssid, ussidlen);
|
||||
memcpy(p2pie + p2pielen, pssid, ussidlen);
|
||||
p2pielen += ussidlen;
|
||||
}
|
||||
|
||||
|
@ -929,16 +900,16 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l
|
|||
|
||||
rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO , pattr_content, (uint *)&attr_contentlen);
|
||||
|
||||
_rtw_memcpy(psta->dev_addr, pattr_content, ETH_ALEN);/* P2P Device Address */
|
||||
memcpy(psta->dev_addr, pattr_content, ETH_ALEN);/* P2P Device Address */
|
||||
|
||||
pattr_content += ETH_ALEN;
|
||||
|
||||
_rtw_memcpy(&be_tmp, pattr_content, 2);/* Config Methods */
|
||||
memcpy(&be_tmp, pattr_content, 2);/* Config Methods */
|
||||
psta->config_methods = be16_to_cpu(be_tmp);
|
||||
|
||||
pattr_content += 2;
|
||||
|
||||
_rtw_memcpy(psta->primary_dev_type, pattr_content, 8);
|
||||
memcpy(psta->primary_dev_type, pattr_content, 8);
|
||||
|
||||
pattr_content += 8;
|
||||
|
||||
|
@ -955,7 +926,7 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l
|
|||
len = (sizeof(psta->secdev_types_list) < (num_of_secdev_type*8)) ?
|
||||
(sizeof(psta->secdev_types_list)) : (num_of_secdev_type*8);
|
||||
|
||||
_rtw_memcpy(psta->secdev_types_list, pattr_content, len);
|
||||
memcpy(psta->secdev_types_list, pattr_content, len);
|
||||
|
||||
pattr_content += (num_of_secdev_type*8);
|
||||
}
|
||||
|
@ -967,10 +938,9 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l
|
|||
|
||||
psta->dev_name_len = (sizeof(psta->dev_name) < dev_name_len) ? sizeof(psta->dev_name) : dev_name_len;
|
||||
|
||||
_rtw_memcpy(psta->dev_name, pattr_content+4, psta->dev_name_len);
|
||||
memcpy(psta->dev_name, pattr_content+4, psta->dev_name_len);
|
||||
}
|
||||
|
||||
rtw_mfree(pbuf, attr_contentlen);
|
||||
kfree(pbuf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1068,16 +1038,16 @@ u8 process_p2p_provdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint l
|
|||
uconfig_method = be16_to_cpu(be_tmp);
|
||||
switch (uconfig_method) {
|
||||
case WPS_CM_DISPLYA:
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3);
|
||||
break;
|
||||
case WPS_CM_LABEL:
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "lab", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "lab", 3);
|
||||
break;
|
||||
case WPS_CM_PUSH_BUTTON:
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3);
|
||||
break;
|
||||
case WPS_CM_KEYPAD:
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3);
|
||||
break;
|
||||
}
|
||||
issue_p2p_provision_resp(pwdinfo, GetAddr2Ptr(pframe), frame_body, uconfig_method);
|
||||
|
@ -1155,11 +1125,11 @@ u8 process_p2p_group_negotation_req(struct wifidirect_info *pwdinfo, u8 *pframe,
|
|||
wps_devicepassword_id = be16_to_cpu(be_tmp);
|
||||
|
||||
if (wps_devicepassword_id == WPS_DPID_USER_SPEC)
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "dis", 3);
|
||||
else if (wps_devicepassword_id == WPS_DPID_REGISTRAR_SPEC)
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pad", 3);
|
||||
else
|
||||
_rtw_memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3);
|
||||
memcpy(pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "pbc", 3);
|
||||
}
|
||||
} else {
|
||||
DBG_88E("[%s] WPS IE not Found!!\n", __func__);
|
||||
|
@ -1220,8 +1190,8 @@ u8 process_p2p_group_negotation_req(struct wifidirect_info *pwdinfo, u8 *pframe,
|
|||
|
||||
if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) {
|
||||
/* Store the group id information. */
|
||||
_rtw_memcpy(pwdinfo->groupid_info.go_device_addr, pwdinfo->device_addr, ETH_ALEN);
|
||||
_rtw_memcpy(pwdinfo->groupid_info.ssid, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen);
|
||||
memcpy(pwdinfo->groupid_info.go_device_addr, pwdinfo->device_addr, ETH_ALEN);
|
||||
memcpy(pwdinfo->groupid_info.ssid, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1368,8 +1338,8 @@ u8 process_p2p_group_negotation_resp(struct wifidirect_info *pwdinfo, u8 *pframe
|
|||
|
||||
if (rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) {
|
||||
/* Store the group id information. */
|
||||
_rtw_memcpy(pwdinfo->groupid_info.go_device_addr, pwdinfo->device_addr, ETH_ALEN);
|
||||
_rtw_memcpy(pwdinfo->groupid_info.ssid, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen);
|
||||
memcpy(pwdinfo->groupid_info.go_device_addr, pwdinfo->device_addr, ETH_ALEN);
|
||||
memcpy(pwdinfo->groupid_info.ssid, pwdinfo->nego_ssid, pwdinfo->nego_ssidlen);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1426,8 +1396,8 @@ u8 process_p2p_group_negotation_resp(struct wifidirect_info *pwdinfo, u8 *pframe
|
|||
attr_contentlen = 0;
|
||||
_rtw_memset(groupid, 0x00, 38);
|
||||
if (rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, groupid, &attr_contentlen)) {
|
||||
_rtw_memcpy(pwdinfo->groupid_info.go_device_addr, &groupid[0], ETH_ALEN);
|
||||
_rtw_memcpy(pwdinfo->groupid_info.ssid, &groupid[6], attr_contentlen - ETH_ALEN);
|
||||
memcpy(pwdinfo->groupid_info.go_device_addr, &groupid[0], ETH_ALEN);
|
||||
memcpy(pwdinfo->groupid_info.ssid, &groupid[6], attr_contentlen - ETH_ALEN);
|
||||
}
|
||||
|
||||
/* Get the next P2P IE */
|
||||
|
@ -1491,8 +1461,8 @@ u8 process_p2p_group_negotation_confirm(struct wifidirect_info *pwdinfo, u8 *pfr
|
|||
_rtw_memset(groupid, 0x00, 38);
|
||||
if (rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_GROUP_ID, groupid, &attr_contentlen)) {
|
||||
DBG_88E("[%s] Ssid = %s, ssidlen = %zu\n", __func__, &groupid[ETH_ALEN], strlen(&groupid[ETH_ALEN]));
|
||||
_rtw_memcpy(pwdinfo->groupid_info.go_device_addr, &groupid[0], ETH_ALEN);
|
||||
_rtw_memcpy(pwdinfo->groupid_info.ssid, &groupid[6], attr_contentlen - ETH_ALEN);
|
||||
memcpy(pwdinfo->groupid_info.go_device_addr, &groupid[0], ETH_ALEN);
|
||||
memcpy(pwdinfo->groupid_info.ssid, &groupid[6], attr_contentlen - ETH_ALEN);
|
||||
}
|
||||
|
||||
attr_contentlen = 0;
|
||||
|
@ -1534,7 +1504,7 @@ static void find_phase_handler(struct adapter *padapter)
|
|||
_func_enter_;
|
||||
|
||||
_rtw_memset((unsigned char *)&ssid, 0, sizeof(struct ndis_802_11_ssid));
|
||||
_rtw_memcpy(ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN);
|
||||
memcpy(ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN);
|
||||
ssid.SsidLength = P2P_WILDCARD_SSID_LEN;
|
||||
|
||||
rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH);
|
||||
|
@ -1553,7 +1523,6 @@ static void restore_p2p_state_handler(struct adapter *padapter)
|
|||
struct wifidirect_info *pwdinfo = &padapter->wdinfo;
|
||||
|
||||
_func_enter_;
|
||||
|
||||
if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_FAIL))
|
||||
rtw_p2p_set_role(pwdinfo, P2P_ROLE_DEVICE);
|
||||
rtw_p2p_set_state(pwdinfo, rtw_p2p_pre_state(pwdinfo));
|
||||
|
@ -1611,7 +1580,6 @@ _func_exit_;
|
|||
void p2p_protocol_wk_hdl(struct adapter *padapter, int intCmdType)
|
||||
{
|
||||
_func_enter_;
|
||||
|
||||
switch (intCmdType) {
|
||||
case P2P_FIND_PHASE_WK:
|
||||
find_phase_handler(padapter);
|
||||
|
@ -1676,17 +1644,17 @@ _func_enter_;
|
|||
/* NoA length should be n*(13) + 2 */
|
||||
if (attr_contentlen > 2) {
|
||||
while (noa_offset < attr_contentlen) {
|
||||
/* _rtw_memcpy(&wifidirect_info->noa_count[noa_num], &noa_attr[noa_offset], 1); */
|
||||
/* memcpy(&wifidirect_info->noa_count[noa_num], &noa_attr[noa_offset], 1); */
|
||||
pwdinfo->noa_count[noa_num] = noa_attr[noa_offset];
|
||||
noa_offset += 1;
|
||||
|
||||
_rtw_memcpy(&pwdinfo->noa_duration[noa_num], &noa_attr[noa_offset], 4);
|
||||
memcpy(&pwdinfo->noa_duration[noa_num], &noa_attr[noa_offset], 4);
|
||||
noa_offset += 4;
|
||||
|
||||
_rtw_memcpy(&pwdinfo->noa_interval[noa_num], &noa_attr[noa_offset], 4);
|
||||
memcpy(&pwdinfo->noa_interval[noa_num], &noa_attr[noa_offset], 4);
|
||||
noa_offset += 4;
|
||||
|
||||
_rtw_memcpy(&pwdinfo->noa_start_time[noa_num], &noa_attr[noa_offset], 4);
|
||||
memcpy(&pwdinfo->noa_start_time[noa_num], &noa_attr[noa_offset], 4);
|
||||
noa_offset += 4;
|
||||
|
||||
noa_num++;
|
||||
|
@ -1799,7 +1767,7 @@ _func_enter_;
|
|||
|
||||
pdrvextra_cmd_parm = (struct drvextra_cmd_parm *)rtw_zmalloc(sizeof(struct drvextra_cmd_parm));
|
||||
if (pdrvextra_cmd_parm == NULL) {
|
||||
rtw_mfree((unsigned char *)ph2c, sizeof(struct cmd_obj));
|
||||
kfree(ph2c);
|
||||
res = _FAIL;
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1929,14 +1897,14 @@ void rtw_init_wifidirect_timers(struct adapter *padapter)
|
|||
|
||||
void rtw_init_wifidirect_addrs(struct adapter *padapter, u8 *dev_addr, u8 *iface_addr)
|
||||
{
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &padapter->wdinfo;
|
||||
|
||||
/*init device&interface address */
|
||||
if (dev_addr)
|
||||
_rtw_memcpy(pwdinfo->device_addr, dev_addr, ETH_ALEN);
|
||||
memcpy(pwdinfo->device_addr, dev_addr, ETH_ALEN);
|
||||
if (iface_addr)
|
||||
_rtw_memcpy(pwdinfo->interface_addr, iface_addr, ETH_ALEN);
|
||||
memcpy(pwdinfo->interface_addr, iface_addr, ETH_ALEN);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1983,7 +1951,7 @@ void init_wifidirect_info(struct adapter *padapter, enum P2P_ROLE role)
|
|||
pwdinfo->support_rate[6] = 0x60; /* 48 */
|
||||
pwdinfo->support_rate[7] = 0x6c; /* 54 */
|
||||
|
||||
_rtw_memcpy((void *)pwdinfo->p2p_wildcard_ssid, "DIRECT-", 7);
|
||||
memcpy(pwdinfo->p2p_wildcard_ssid, "DIRECT-", 7);
|
||||
|
||||
_rtw_memset(pwdinfo->device_name, 0x00, WPS_MAX_DEVICE_NAME_LEN);
|
||||
pwdinfo->device_name_len = 0;
|
||||
|
@ -2083,4 +2051,14 @@ exit:
|
|||
return ret;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_P2P */
|
||||
#else
|
||||
u8 p2p_ps_wk_cmd(struct adapter *padapter, u8 p2p_ps_state, u8 enqueue)
|
||||
{
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
|
|
@ -24,10 +24,6 @@
|
|||
#include <osdep_intf.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
#include <rtl8723a_hal.h>
|
||||
#endif
|
||||
|
||||
void ips_enter(struct adapter *padapter)
|
||||
{
|
||||
struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
|
||||
|
@ -53,9 +49,6 @@ void ips_enter(struct adapter *padapter)
|
|||
|
||||
pwrpriv->ips_enter_cnts++;
|
||||
DBG_88E("==>ips_enter cnts:%d\n", pwrpriv->ips_enter_cnts);
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
BTDM_TurnOffBtCoexistBeforeEnterIPS(padapter);
|
||||
#endif
|
||||
if (rf_off == pwrpriv->change_rfpwrstate) {
|
||||
pwrpriv->bpower_saving = true;
|
||||
DBG_88E_LEVEL(_drv_info_, "nolinked power save enter\n");
|
||||
|
@ -123,7 +116,7 @@ static bool rtw_pwr_unassociated_idle(struct adapter *adapter)
|
|||
{
|
||||
struct adapter *buddy = adapter->pbuddy_adapter;
|
||||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &(adapter->wdinfo);
|
||||
#endif
|
||||
|
||||
|
@ -136,7 +129,7 @@ static bool rtw_pwr_unassociated_idle(struct 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)
|
||||
#if defined(CONFIG_88EU_P2P)
|
||||
!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE))
|
||||
#else
|
||||
0)
|
||||
|
@ -146,7 +139,7 @@ static bool rtw_pwr_unassociated_idle(struct adapter *adapter)
|
|||
/* consider buddy, if exist */
|
||||
if (buddy) {
|
||||
struct mlme_priv *b_pmlmepriv = &(buddy->mlmepriv);
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *b_pwdinfo = &(buddy->wdinfo);
|
||||
#endif
|
||||
|
||||
|
@ -154,7 +147,7 @@ static bool rtw_pwr_unassociated_idle(struct adapter *adapter)
|
|||
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)
|
||||
#if defined(CONFIG_88EU_P2P)
|
||||
!rtw_p2p_chk_state(b_pwdinfo, P2P_STATE_NONE))
|
||||
#else
|
||||
0)
|
||||
|
@ -215,7 +208,7 @@ exit:
|
|||
return;
|
||||
}
|
||||
|
||||
void pwr_state_check_handler(void *FunctionContext)
|
||||
static void pwr_state_check_handler(void *FunctionContext)
|
||||
{
|
||||
struct adapter *padapter = (struct adapter *)FunctionContext;
|
||||
rtw_ps_cmd(padapter);
|
||||
|
@ -285,7 +278,7 @@ _func_enter_;
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
u8 PS_RDY_CHECK(struct adapter *padapter)
|
||||
static u8 PS_RDY_CHECK(struct adapter *padapter)
|
||||
{
|
||||
u32 curr_time, delta_time;
|
||||
struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
|
||||
|
@ -304,15 +297,8 @@ u8 PS_RDY_CHECK(struct adapter *padapter)
|
|||
(check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) ||
|
||||
(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE)))
|
||||
return false;
|
||||
#ifdef CONFIG_WOWLAN
|
||||
if (pwrpriv->bInSuspend && pwrpriv->wowlan_mode)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
#else
|
||||
if (pwrpriv->bInSuspend)
|
||||
return false;
|
||||
#endif
|
||||
if ((padapter->securitypriv.dot11AuthAlgrthm == dot11AuthAlgrthm_8021X) && (padapter->securitypriv.binstallGrpkey == false)) {
|
||||
DBG_88E("Group handshake still in progress !!!\n");
|
||||
return false;
|
||||
|
@ -323,9 +309,9 @@ u8 PS_RDY_CHECK(struct adapter *padapter)
|
|||
void rtw_set_ps_mode(struct adapter *padapter, u8 ps_mode, u8 smart_ps, u8 bcn_ant_mode)
|
||||
{
|
||||
struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
||||
_func_enter_;
|
||||
|
||||
|
@ -349,6 +335,7 @@ _func_enter_;
|
|||
|
||||
/* if (pwrpriv->pwr_mode == PS_MODE_ACTIVE) */
|
||||
if (ps_mode == PS_MODE_ACTIVE) {
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
if (pwdinfo->opp_ps == 0) {
|
||||
DBG_88E("rtw_set_ps_mode: Leave 802.11 power save\n");
|
||||
pwrpriv->pwr_mode = ps_mode;
|
||||
|
@ -357,11 +344,8 @@ _func_enter_;
|
|||
pwrpriv->bFwCurrentInPSMode = false;
|
||||
}
|
||||
} else {
|
||||
#ifdef CONFIG_BT_COEXIST
|
||||
if (PS_RDY_CHECK(padapter) || (BT_1Ant(padapter))) {
|
||||
#else
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
if (PS_RDY_CHECK(padapter)) {
|
||||
#endif
|
||||
DBG_88E("%s: Enter 802.11 power save\n", __func__);
|
||||
pwrpriv->bFwCurrentInPSMode = true;
|
||||
pwrpriv->pwr_mode = ps_mode;
|
||||
|
@ -369,9 +353,11 @@ _func_enter_;
|
|||
pwrpriv->bcn_ant_mode = bcn_ant_mode;
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_H2C_FW_PWRMODE, (u8 *)(&ps_mode));
|
||||
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
/* Set CTWindow after LPS */
|
||||
if (pwdinfo->opp_ps == 1)
|
||||
p2p_ps_wk_cmd(padapter, P2P_PS_ENABLE, 0);
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
|
||||
rtw_set_rpwm(padapter, PS_STATE_S2);
|
||||
}
|
||||
|
@ -446,14 +432,12 @@ _func_enter_;
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Description: */
|
||||
/* Leave the leisure power save mode. */
|
||||
/* */
|
||||
void LPS_Leave(struct adapter *padapter)
|
||||
{
|
||||
#define LPS_LEAVE_TIMEOUT_MS 100
|
||||
|
||||
/* Description: */
|
||||
/* Leave the leisure power save mode. */
|
||||
void LPS_Leave(struct adapter *padapter)
|
||||
{
|
||||
struct pwrctrl_priv *pwrpriv = &padapter->pwrctrlpriv;
|
||||
|
||||
_func_enter_;
|
||||
|
|
173
core/rtw_recv.c
173
core/rtw_recv.c
|
@ -30,15 +30,15 @@
|
|||
#include <wifi.h>
|
||||
|
||||
static u8 SNAP_ETH_TYPE_IPX[2] = {0x81, 0x37};
|
||||
|
||||
static u8 SNAP_ETH_TYPE_APPLETALK_AARP[2] = {0x80, 0xf3};
|
||||
|
||||
static u8 rtw_rfc1042_header[] = {
|
||||
0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00
|
||||
};
|
||||
/* Bridge-Tunnel header (for EtherTypes ETH_P_AARP and ETH_P_IPX) */
|
||||
static u8 rtw_bridge_tunnel_header[] = {
|
||||
0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8
|
||||
0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8
|
||||
};
|
||||
|
||||
static u8 rtw_rfc1042_header[] = {
|
||||
0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS);
|
||||
|
@ -118,7 +118,7 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
|
||||
static void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
|
||||
{
|
||||
_rtw_spinlock_free(&precvpriv->lock);
|
||||
_rtw_spinlock_free(&precvpriv->free_recv_queue.lock);
|
||||
|
@ -362,7 +362,7 @@ struct recv_buf *rtw_dequeue_recvbuf (struct __queue *queue)
|
|||
return precvbuf;
|
||||
}
|
||||
|
||||
int recvframe_chkmic(struct adapter *adapter, union recv_frame *precvframe)
|
||||
static int recvframe_chkmic(struct adapter *adapter, union recv_frame *precvframe)
|
||||
{
|
||||
int i, res = _SUCCESS;
|
||||
u32 datalen;
|
||||
|
@ -490,7 +490,7 @@ _func_exit_;
|
|||
}
|
||||
|
||||
/* decrypt and set the ivlen, icvlen of the recv_frame */
|
||||
union recv_frame *decryptor(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
static union recv_frame *decryptor(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
{
|
||||
struct rx_pkt_attrib *prxattrib = &precv_frame->u.hdr.attrib;
|
||||
struct security_priv *psecuritypriv = &padapter->securitypriv;
|
||||
|
@ -553,9 +553,9 @@ _func_exit_;
|
|||
}
|
||||
|
||||
/* set the security information in the recv_frame */
|
||||
union recv_frame *portctrl(struct adapter *adapter, union recv_frame *precv_frame)
|
||||
static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *precv_frame)
|
||||
{
|
||||
u8 *psta_addr, *ptr;
|
||||
u8 *psta_addr = NULL, *ptr;
|
||||
uint auth_alg;
|
||||
struct recv_frame_hdr *pfhdr;
|
||||
struct sta_info *psta;
|
||||
|
@ -592,7 +592,7 @@ _func_enter_;
|
|||
|
||||
/* get ether_type */
|
||||
ptr = ptr+pfhdr->attrib.hdrlen+pfhdr->attrib.iv_len+LLC_HEADER_SIZE;
|
||||
_rtw_memcpy(&be_tmp, ptr, 2);
|
||||
memcpy(&be_tmp, ptr, 2);
|
||||
ether_type = ntohs(be_tmp);
|
||||
|
||||
if (ether_type == eapol_type) {
|
||||
|
@ -631,7 +631,7 @@ _func_exit_;
|
|||
return prtnframe;
|
||||
}
|
||||
|
||||
int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
|
||||
static int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
|
||||
{
|
||||
int tid = precv_frame->u.hdr.attrib.priority;
|
||||
|
||||
|
@ -664,7 +664,7 @@ _func_exit_;
|
|||
void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame);
|
||||
void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
{
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
unsigned char pwrbit;
|
||||
u8 *ptr = precv_frame->u.hdr.rx_data;
|
||||
struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
|
||||
|
@ -688,9 +688,9 @@ void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame
|
|||
#endif
|
||||
}
|
||||
|
||||
void process_wmmps_data(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
static void process_wmmps_data(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
{
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
|
||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||
struct sta_info *psta = NULL;
|
||||
|
@ -743,7 +743,7 @@ void process_wmmps_data(struct adapter *padapter, union recv_frame *precv_frame)
|
|||
#endif
|
||||
}
|
||||
|
||||
void count_rx_stats(struct adapter *padapter, union recv_frame *prframe, struct sta_info *sta)
|
||||
static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe, struct sta_info *sta)
|
||||
{
|
||||
int sz;
|
||||
struct sta_info *psta = NULL;
|
||||
|
@ -839,11 +839,11 @@ _func_enter_;
|
|||
sta_addr = pattrib->src;
|
||||
}
|
||||
} else if (check_fwstate(pmlmepriv, WIFI_MP_STATE)) {
|
||||
_rtw_memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
|
||||
sta_addr = mybssid;
|
||||
} else {
|
||||
|
@ -870,7 +870,7 @@ _func_exit_;
|
|||
return ret;
|
||||
}
|
||||
|
||||
int ap2sta_data_frame(
|
||||
static int ap2sta_data_frame (
|
||||
struct adapter *adapter,
|
||||
union recv_frame *precv_frame,
|
||||
struct sta_info **psta)
|
||||
|
@ -943,14 +943,14 @@ _func_enter_;
|
|||
}
|
||||
} else if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == true) &&
|
||||
(check_fwstate(pmlmepriv, _FW_LINKED) == true)) {
|
||||
_rtw_memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
memcpy(pattrib->dst, GetAddr1Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->src, GetAddr2Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->bssid, GetAddr3Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
|
||||
/* */
|
||||
_rtw_memcpy(pattrib->bssid, mybssid, ETH_ALEN);
|
||||
memcpy(pattrib->bssid, mybssid, ETH_ALEN);
|
||||
|
||||
*psta = rtw_get_stainfo(pstapriv, pattrib->bssid); /* get sta_info */
|
||||
if (*psta == NULL) {
|
||||
|
@ -982,12 +982,14 @@ _func_exit_;
|
|||
return ret;
|
||||
}
|
||||
|
||||
int sta2ap_data_frame(struct adapter *adapter, union recv_frame *precv_frame, struct sta_info **psta)
|
||||
static int sta2ap_data_frame(struct adapter *adapter,
|
||||
union recv_frame *precv_frame,
|
||||
struct sta_info **psta)
|
||||
{
|
||||
u8 *ptr = precv_frame->u.hdr.rx_data;
|
||||
struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
|
||||
struct sta_priv *pstapriv = &adapter->stapriv;
|
||||
struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
|
||||
u8 *ptr = precv_frame->u.hdr.rx_data;
|
||||
unsigned char *mybssid = get_bssid(pmlmepriv);
|
||||
int ret = _SUCCESS;
|
||||
|
||||
|
@ -1042,9 +1044,10 @@ _func_exit_;
|
|||
return ret;
|
||||
}
|
||||
|
||||
int validate_recv_ctrl_frame(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
static int validate_recv_ctrl_frame(struct adapter *padapter,
|
||||
union recv_frame *precv_frame)
|
||||
{
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
|
||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||
u8 *pframe = precv_frame->u.hdr.rx_data;
|
||||
|
@ -1170,8 +1173,11 @@ int validate_recv_ctrl_frame(struct adapter *padapter, union recv_frame *precv_f
|
|||
|
||||
union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_frame *precv_frame);
|
||||
|
||||
int validate_recv_mgnt_frame(struct adapter *padapter, union recv_frame *precv_frame)
|
||||
static int validate_recv_mgnt_frame(struct adapter *padapter,
|
||||
union recv_frame *precv_frame)
|
||||
{
|
||||
struct sta_info *psta;
|
||||
|
||||
RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("+validate_recv_mgnt_frame\n"));
|
||||
|
||||
precv_frame = recvframe_chk_defrag(padapter, precv_frame);
|
||||
|
@ -1180,24 +1186,22 @@ int validate_recv_mgnt_frame(struct adapter *padapter, union recv_frame *precv_f
|
|||
return _SUCCESS;
|
||||
}
|
||||
|
||||
{
|
||||
/* for rx pkt statistics */
|
||||
struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data));
|
||||
if (psta) {
|
||||
psta->sta_stats.rx_mgnt_pkts++;
|
||||
if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_BEACON) {
|
||||
psta->sta_stats.rx_beacon_pkts++;
|
||||
} else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBEREQ) {
|
||||
psta->sta_stats.rx_probereq_pkts++;
|
||||
} else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBERSP) {
|
||||
if (_rtw_memcmp(padapter->eeprompriv.mac_addr, GetAddr1Ptr(precv_frame->u.hdr.rx_data), ETH_ALEN) == true)
|
||||
psta->sta_stats.rx_probersp_pkts++;
|
||||
else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)) ||
|
||||
is_multicast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)))
|
||||
psta->sta_stats.rx_probersp_bm_pkts++;
|
||||
else
|
||||
psta->sta_stats.rx_probersp_uo_pkts++;
|
||||
}
|
||||
/* for rx pkt statistics */
|
||||
psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data));
|
||||
if (psta) {
|
||||
psta->sta_stats.rx_mgnt_pkts++;
|
||||
if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_BEACON) {
|
||||
psta->sta_stats.rx_beacon_pkts++;
|
||||
} else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBEREQ) {
|
||||
psta->sta_stats.rx_probereq_pkts++;
|
||||
} else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBERSP) {
|
||||
if (_rtw_memcmp(padapter->eeprompriv.mac_addr, GetAddr1Ptr(precv_frame->u.hdr.rx_data), ETH_ALEN) == true)
|
||||
psta->sta_stats.rx_probersp_pkts++;
|
||||
else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)) ||
|
||||
is_multicast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)))
|
||||
psta->sta_stats.rx_probersp_bm_pkts++;
|
||||
else
|
||||
psta->sta_stats.rx_probersp_uo_pkts++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1206,7 +1210,8 @@ int validate_recv_mgnt_frame(struct adapter *padapter, union recv_frame *precv_f
|
|||
return _SUCCESS;
|
||||
}
|
||||
|
||||
int validate_recv_data_frame(struct adapter *adapter, union recv_frame *precv_frame)
|
||||
static int validate_recv_data_frame(struct adapter *adapter,
|
||||
union recv_frame *precv_frame)
|
||||
{
|
||||
u8 bretry;
|
||||
u8 *psa, *pda, *pbssid;
|
||||
|
@ -1228,30 +1233,30 @@ _func_enter_;
|
|||
goto exit;
|
||||
}
|
||||
|
||||
_rtw_memcpy(pattrib->dst, pda, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->src, psa, ETH_ALEN);
|
||||
memcpy(pattrib->dst, pda, ETH_ALEN);
|
||||
memcpy(pattrib->src, psa, ETH_ALEN);
|
||||
|
||||
_rtw_memcpy(pattrib->bssid, pbssid, ETH_ALEN);
|
||||
memcpy(pattrib->bssid, pbssid, ETH_ALEN);
|
||||
|
||||
switch (pattrib->to_fr_ds) {
|
||||
case 0:
|
||||
_rtw_memcpy(pattrib->ra, pda, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, psa, ETH_ALEN);
|
||||
memcpy(pattrib->ra, pda, ETH_ALEN);
|
||||
memcpy(pattrib->ta, psa, ETH_ALEN);
|
||||
ret = sta2sta_data_frame(adapter, precv_frame, &psta);
|
||||
break;
|
||||
case 1:
|
||||
_rtw_memcpy(pattrib->ra, pda, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, pbssid, ETH_ALEN);
|
||||
memcpy(pattrib->ra, pda, ETH_ALEN);
|
||||
memcpy(pattrib->ta, pbssid, ETH_ALEN);
|
||||
ret = ap2sta_data_frame(adapter, precv_frame, &psta);
|
||||
break;
|
||||
case 2:
|
||||
_rtw_memcpy(pattrib->ra, pbssid, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, psa, ETH_ALEN);
|
||||
memcpy(pattrib->ra, pbssid, ETH_ALEN);
|
||||
memcpy(pattrib->ta, psa, ETH_ALEN);
|
||||
ret = sta2ap_data_frame(adapter, precv_frame, &psta);
|
||||
break;
|
||||
case 3:
|
||||
_rtw_memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->ra, GetAddr1Ptr(ptr), ETH_ALEN);
|
||||
memcpy(pattrib->ta, GetAddr2Ptr(ptr), ETH_ALEN);
|
||||
ret = _FAIL;
|
||||
RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, (" case 3\n"));
|
||||
break;
|
||||
|
@ -1326,7 +1331,7 @@ _func_exit_;
|
|||
return ret;
|
||||
}
|
||||
|
||||
int validate_recv_frame(struct adapter *adapter, union recv_frame *precv_frame)
|
||||
static int validate_recv_frame(struct adapter *adapter, union recv_frame *precv_frame)
|
||||
{
|
||||
/* shall check frame subtype, to / from ds, da, bssid */
|
||||
|
||||
|
@ -1438,7 +1443,7 @@ _func_exit_;
|
|||
|
||||
/* remove the wlanhdr and add the eth_hdr */
|
||||
|
||||
int wlanhdr_to_ethhdr (union recv_frame *precvframe)
|
||||
static int wlanhdr_to_ethhdr (union recv_frame *precvframe)
|
||||
{
|
||||
int rmv_len;
|
||||
u16 eth_type, len;
|
||||
|
@ -1479,7 +1484,7 @@ _func_enter_;
|
|||
RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
|
||||
("\n===pattrib->hdrlen: %x, pattrib->iv_len:%x===\n\n", pattrib->hdrlen, pattrib->iv_len));
|
||||
|
||||
_rtw_memcpy(&be_tmp, ptr+rmv_len, 2);
|
||||
memcpy(&be_tmp, ptr+rmv_len, 2);
|
||||
eth_type = ntohs(be_tmp); /* pattrib->ether_type */
|
||||
pattrib->eth_type = eth_type;
|
||||
|
||||
|
@ -1491,18 +1496,18 @@ _func_enter_;
|
|||
eth_type = 0x8712;
|
||||
/* append rx status for mp test packets */
|
||||
ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr)+2)-24);
|
||||
_rtw_memcpy(ptr, get_rxmem(precvframe), 24);
|
||||
memcpy(ptr, get_rxmem(precvframe), 24);
|
||||
ptr += 24;
|
||||
} else {
|
||||
ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr) + (bsnaphdr ? 2 : 0)));
|
||||
}
|
||||
|
||||
_rtw_memcpy(ptr, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN);
|
||||
memcpy(ptr, pattrib->dst, ETH_ALEN);
|
||||
memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN);
|
||||
|
||||
if (!bsnaphdr) {
|
||||
be_tmp = htons(len);
|
||||
_rtw_memcpy(ptr+12, &be_tmp, 2);
|
||||
memcpy(ptr+12, &be_tmp, 2);
|
||||
}
|
||||
|
||||
_func_exit_;
|
||||
|
@ -1510,7 +1515,7 @@ _func_exit_;
|
|||
}
|
||||
|
||||
/* perform defrag */
|
||||
union recv_frame *recvframe_defrag(struct adapter *adapter, struct __queue *defrag_q)
|
||||
static union recv_frame *recvframe_defrag(struct adapter *adapter, struct __queue *defrag_q)
|
||||
{
|
||||
struct list_head *plist, *phead;
|
||||
u8 wlanhdr_offset;
|
||||
|
@ -1572,7 +1577,7 @@ _func_enter_;
|
|||
recvframe_pull_tail(prframe, pfhdr->attrib.icv_len);
|
||||
|
||||
/* memcpy */
|
||||
_rtw_memcpy(pfhdr->rx_tail, pnfhdr->rx_data, pnfhdr->len);
|
||||
memcpy(pfhdr->rx_tail, pnfhdr->rx_data, pnfhdr->len);
|
||||
|
||||
recvframe_put(prframe, pnfhdr->len);
|
||||
|
||||
|
@ -1736,7 +1741,7 @@ static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
|
|||
if (sub_skb) {
|
||||
skb_reserve(sub_skb, 12);
|
||||
data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length);
|
||||
_rtw_memcpy(data_ptr, pdata, nSubframe_Length);
|
||||
memcpy(data_ptr, pdata, nSubframe_Length);
|
||||
} else {
|
||||
sub_skb = skb_clone(prframe->u.hdr.pkt, GFP_ATOMIC);
|
||||
if (sub_skb) {
|
||||
|
@ -1782,26 +1787,20 @@ static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
|
|||
_rtw_memcmp(sub_skb->data, rtw_bridge_tunnel_header, SNAP_SIZE))) {
|
||||
/* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */
|
||||
skb_pull(sub_skb, SNAP_SIZE);
|
||||
_rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
|
||||
_rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
|
||||
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
|
||||
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
|
||||
} else {
|
||||
__be16 len;
|
||||
/* Leave Ethernet header part of hdr and full payload */
|
||||
len = htons(sub_skb->len);
|
||||
_rtw_memcpy(skb_push(sub_skb, 2), &len, 2);
|
||||
_rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
|
||||
_rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
|
||||
memcpy(skb_push(sub_skb, 2), &len, 2);
|
||||
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
|
||||
memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
|
||||
}
|
||||
|
||||
/* Indicat the packets to upper layer */
|
||||
if (sub_skb) {
|
||||
/* Insert NAT2.5 RX here! */
|
||||
|
||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35))
|
||||
rcu_read_lock();
|
||||
rcu_read_unlock();
|
||||
#endif /* (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 35)) */
|
||||
|
||||
sub_skb->protocol = eth_type_trans(sub_skb, padapter->pnetdev);
|
||||
sub_skb->dev = padapter->pnetdev;
|
||||
|
||||
|
@ -2051,7 +2050,7 @@ void rtw_reordering_ctrl_timeout_handler(void *pcontext)
|
|||
_exit_critical_bh(&ppending_recvframe_queue->lock, &irql);
|
||||
}
|
||||
|
||||
int process_recv_indicatepkts(struct adapter *padapter, union recv_frame *prframe)
|
||||
static int process_recv_indicatepkts(struct adapter *padapter, union recv_frame *prframe)
|
||||
{
|
||||
int retval = _SUCCESS;
|
||||
/* struct recv_priv *precvpriv = &padapter->recvpriv; */
|
||||
|
@ -2167,8 +2166,6 @@ static int recv_func_posthandle(struct adapter *padapter, union recv_frame *prfr
|
|||
rtw_free_recvframe(orig_prframe, pfree_recv_queue);/* free this recv_frame */
|
||||
goto _recv_data_drop;
|
||||
}
|
||||
|
||||
_exit_recv_func:
|
||||
return ret;
|
||||
|
||||
_recv_data_drop:
|
||||
|
@ -2176,7 +2173,7 @@ _recv_data_drop:
|
|||
return ret;
|
||||
}
|
||||
|
||||
int recv_func(struct adapter *padapter, union recv_frame *rframe)
|
||||
static int recv_func(struct adapter *padapter, union recv_frame *rframe)
|
||||
{
|
||||
int ret;
|
||||
struct rx_pkt_attrib *prxattrib = &rframe->u.hdr.attrib;
|
||||
|
|
|
@ -181,8 +181,8 @@ _func_enter_;
|
|||
|
||||
for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) {
|
||||
iv = pframe+pattrib->hdrlen;
|
||||
_rtw_memcpy(&wepkey[0], iv, 3);
|
||||
_rtw_memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0], keylength);
|
||||
memcpy(&wepkey[0], iv, 3);
|
||||
memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[psecuritypriv->dot11PrivacyKeyIndex].skey[0], keylength);
|
||||
payload = pframe+pattrib->iv_len+pattrib->hdrlen;
|
||||
|
||||
if ((curfragnum+1) == pattrib->nr_frags) { /* the last fragment */
|
||||
|
@ -230,8 +230,8 @@ _func_enter_;
|
|||
iv = pframe+prxattrib->hdrlen;
|
||||
keyindex = prxattrib->key_index;
|
||||
keylength = psecuritypriv->dot11DefKeylen[keyindex];
|
||||
_rtw_memcpy(&wepkey[0], iv, 3);
|
||||
_rtw_memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength);
|
||||
memcpy(&wepkey[0], iv, 3);
|
||||
memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength);
|
||||
length = ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len;
|
||||
|
||||
payload = pframe+prxattrib->iv_len+prxattrib->hdrlen;
|
||||
|
@ -811,7 +811,6 @@ static void next_key(u8 *key, int round);
|
|||
static void byte_sub(u8 *in, u8 *out);
|
||||
static void shift_row(u8 *in, u8 *out);
|
||||
static void mix_column(u8 *in, u8 *out);
|
||||
static void add_round_key(u8 *shiftrow_in, u8 *mcol_in, u8 *block_in, int round, u8 *out);
|
||||
static void aes128k128d(u8 *key, u8 *data, u8 *ciphertext);
|
||||
|
||||
/****************************************/
|
||||
|
@ -1418,7 +1417,7 @@ _func_enter_;
|
|||
|
||||
/* start to calculate the mic */
|
||||
if ((hdrlen+plen+8) <= MAX_MSG_SIZE)
|
||||
_rtw_memcpy((void *)message, pframe, (hdrlen + plen+8)); /* 8 is for ext iv len */
|
||||
memcpy(message, pframe, (hdrlen + plen+8)); /* 8 is for ext iv len */
|
||||
|
||||
pn_vector[0] = pframe[hdrlen];
|
||||
pn_vector[1] = pframe[hdrlen+1];
|
||||
|
@ -1565,319 +1564,6 @@ exit:
|
|||
return res;
|
||||
}
|
||||
|
||||
/* compress 512-bits */
|
||||
static int sha256_compress(struct sha256_state *md, unsigned char *buf)
|
||||
{
|
||||
u32 S[8], W[64], t0, t1;
|
||||
u32 t;
|
||||
int i;
|
||||
|
||||
/* copy state into S */
|
||||
for (i = 0; i < 8; i++)
|
||||
S[i] = md->state[i];
|
||||
|
||||
/* copy the state into 512-bits into W[0..15] */
|
||||
for (i = 0; i < 16; i++)
|
||||
W[i] = WPA_GET_BE32(buf + (4 * i));
|
||||
|
||||
/* fill W[16..63] */
|
||||
for (i = 16; i < 64; i++) {
|
||||
W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) +
|
||||
W[i - 16];
|
||||
}
|
||||
|
||||
/* Compress */
|
||||
#define RND(a, b, c, d, e, f, g, h, i) \
|
||||
do { \
|
||||
t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \
|
||||
t1 = Sigma0(a) + Maj(a, b, c); \
|
||||
d += t0; \
|
||||
h = t0 + t1; \
|
||||
} while (0)
|
||||
|
||||
for (i = 0; i < 64; ++i) {
|
||||
RND(S[0], S[1], S[2], S[3], S[4], S[5], S[6], S[7], i);
|
||||
t = S[7]; S[7] = S[6]; S[6] = S[5]; S[5] = S[4];
|
||||
S[4] = S[3]; S[3] = S[2]; S[2] = S[1]; S[1] = S[0]; S[0] = t;
|
||||
}
|
||||
|
||||
/* feedback */
|
||||
for (i = 0; i < 8; i++)
|
||||
md->state[i] = md->state[i] + S[i];
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Initialize the hash state */
|
||||
static void sha256_init(struct sha256_state *md)
|
||||
{
|
||||
md->curlen = 0;
|
||||
md->length = 0;
|
||||
md->state[0] = 0x6A09E667UL;
|
||||
md->state[1] = 0xBB67AE85UL;
|
||||
md->state[2] = 0x3C6EF372UL;
|
||||
md->state[3] = 0xA54FF53AUL;
|
||||
md->state[4] = 0x510E527FUL;
|
||||
md->state[5] = 0x9B05688CUL;
|
||||
md->state[6] = 0x1F83D9ABUL;
|
||||
md->state[7] = 0x5BE0CD19UL;
|
||||
}
|
||||
|
||||
/**
|
||||
Process a block of memory though the hash
|
||||
@param md The hash state
|
||||
@param in The data to hash
|
||||
@param inlen The length of the data (octets)
|
||||
@return CRYPT_OK if successful
|
||||
*/
|
||||
static int sha256_process(struct sha256_state *md, unsigned char *in,
|
||||
unsigned long inlen)
|
||||
{
|
||||
unsigned long n;
|
||||
#define block_size 64
|
||||
|
||||
if (md->curlen > sizeof(md->buf))
|
||||
return -1;
|
||||
|
||||
while (inlen > 0) {
|
||||
if (md->curlen == 0 && inlen >= block_size) {
|
||||
if (sha256_compress(md, (unsigned char *)in) < 0)
|
||||
return -1;
|
||||
md->length += block_size * 8;
|
||||
in += block_size;
|
||||
inlen -= block_size;
|
||||
} else {
|
||||
n = MIN(inlen, (block_size - md->curlen));
|
||||
_rtw_memcpy(md->buf + md->curlen, in, n);
|
||||
md->curlen += n;
|
||||
in += n;
|
||||
inlen -= n;
|
||||
if (md->curlen == block_size) {
|
||||
if (sha256_compress(md, md->buf) < 0)
|
||||
return -1;
|
||||
md->length += 8 * block_size;
|
||||
md->curlen = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Terminate the hash to get the digest
|
||||
@param md The hash state
|
||||
@param out [out] The destination of the hash (32 bytes)
|
||||
@return CRYPT_OK if successful
|
||||
*/
|
||||
static int sha256_done(struct sha256_state *md, unsigned char *out)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (md->curlen >= sizeof(md->buf))
|
||||
return -1;
|
||||
|
||||
/* increase the length of the message */
|
||||
md->length += md->curlen * 8;
|
||||
|
||||
/* append the '1' bit */
|
||||
md->buf[md->curlen++] = (unsigned char) 0x80;
|
||||
|
||||
/* if the length is currently above 56 bytes we append zeros
|
||||
* then compress. Then we can fall back to padding zeros and length
|
||||
* encoding like normal.
|
||||
*/
|
||||
if (md->curlen > 56) {
|
||||
while (md->curlen < 64)
|
||||
md->buf[md->curlen++] = (unsigned char) 0;
|
||||
sha256_compress(md, md->buf);
|
||||
md->curlen = 0;
|
||||
}
|
||||
|
||||
/* pad upto 56 bytes of zeroes */
|
||||
while (md->curlen < 56)
|
||||
md->buf[md->curlen++] = (unsigned char) 0;
|
||||
|
||||
/* store length */
|
||||
WPA_PUT_BE64(md->buf + 56, md->length);
|
||||
sha256_compress(md, md->buf);
|
||||
|
||||
/* copy output */
|
||||
for (i = 0; i < 8; i++)
|
||||
WPA_PUT_BE32(out + (4 * i), md->state[i]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* sha256_vector - SHA256 hash for data vector
|
||||
* @num_elem: Number of elements in the data vector
|
||||
* @addr: Pointers to the data areas
|
||||
* @len: Lengths of the data blocks
|
||||
* @mac: Buffer for the hash
|
||||
* Returns: 0 on success, -1 of failure
|
||||
*/
|
||||
static int sha256_vector(size_t num_elem, u8 *addr[], size_t *len,
|
||||
u8 *mac)
|
||||
{
|
||||
struct sha256_state ctx;
|
||||
size_t i;
|
||||
|
||||
sha256_init(&ctx);
|
||||
for (i = 0; i < num_elem; i++)
|
||||
if (sha256_process(&ctx, addr[i], len[i]))
|
||||
return -1;
|
||||
if (sha256_done(&ctx, mac))
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u8 os_strlen(const char *s)
|
||||
{
|
||||
const char *p = s;
|
||||
while (*p)
|
||||
p++;
|
||||
return p - s;
|
||||
}
|
||||
|
||||
static int os_memcmp(void *s1, void *s2, u8 n)
|
||||
{
|
||||
unsigned char *p1 = s1, *p2 = s2;
|
||||
|
||||
if (n == 0)
|
||||
return 0;
|
||||
|
||||
while (*p1 == *p2) {
|
||||
p1++;
|
||||
p2++;
|
||||
n--;
|
||||
if (n == 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return *p1 - *p2;
|
||||
}
|
||||
|
||||
/**
|
||||
* hmac_sha256_vector - HMAC-SHA256 over data vector (RFC 2104)
|
||||
* @key: Key for HMAC operations
|
||||
* @key_len: Length of the key in bytes
|
||||
* @num_elem: Number of elements in the data vector
|
||||
* @addr: Pointers to the data areas
|
||||
* @len: Lengths of the data blocks
|
||||
* @mac: Buffer for the hash (32 bytes)
|
||||
*/
|
||||
static void hmac_sha256_vector(u8 *key, size_t key_len, size_t num_elem,
|
||||
u8 *addr[], size_t *len, u8 *mac)
|
||||
{
|
||||
unsigned char k_pad[64]; /* padding - key XORd with ipad/opad */
|
||||
unsigned char tk[32];
|
||||
u8 *_addr[6];
|
||||
size_t _len[6], i;
|
||||
|
||||
if (num_elem > 5) {
|
||||
/*
|
||||
* Fixed limit on the number of fragments to avoid having to
|
||||
* allocate memory (which could fail).
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
/* if key is longer than 64 bytes reset it to key = SHA256(key) */
|
||||
if (key_len > 64) {
|
||||
sha256_vector(1, &key, &key_len, tk);
|
||||
key = tk;
|
||||
key_len = 32;
|
||||
}
|
||||
|
||||
/* the HMAC_SHA256 transform looks like:
|
||||
*
|
||||
* SHA256(K XOR opad, SHA256(K XOR ipad, text))
|
||||
*
|
||||
* where K is an n byte key
|
||||
* ipad is the byte 0x36 repeated 64 times
|
||||
* opad is the byte 0x5c repeated 64 times
|
||||
* and text is the data being protected */
|
||||
|
||||
/* start out by storing key in ipad */
|
||||
_rtw_memset(k_pad, 0, sizeof(k_pad));
|
||||
_rtw_memcpy(k_pad, key, key_len);
|
||||
/* XOR key with ipad values */
|
||||
for (i = 0; i < 64; i++)
|
||||
k_pad[i] ^= 0x36;
|
||||
|
||||
/* perform inner SHA256 */
|
||||
_addr[0] = k_pad;
|
||||
_len[0] = 64;
|
||||
for (i = 0; i < num_elem; i++) {
|
||||
_addr[i + 1] = addr[i];
|
||||
_len[i + 1] = len[i];
|
||||
}
|
||||
sha256_vector(1 + num_elem, _addr, _len, mac);
|
||||
|
||||
_rtw_memset(k_pad, 0, sizeof(k_pad));
|
||||
_rtw_memcpy(k_pad, key, key_len);
|
||||
/* XOR key with opad values */
|
||||
for (i = 0; i < 64; i++)
|
||||
k_pad[i] ^= 0x5c;
|
||||
|
||||
/* perform outer SHA256 */
|
||||
_addr[0] = k_pad;
|
||||
_len[0] = 64;
|
||||
_addr[1] = mac;
|
||||
_len[1] = 32;
|
||||
sha256_vector(2, _addr, _len, mac);
|
||||
}
|
||||
/**
|
||||
* sha256_prf - SHA256-based Pseudo-Random Function (IEEE 802.11r, 8.5.1.5.2)
|
||||
* @key: Key for PRF
|
||||
* @key_len: Length of the key in bytes
|
||||
* @label: A unique label for each purpose of the PRF
|
||||
* @data: Extra data to bind into the key
|
||||
* @data_len: Length of the data
|
||||
* @buf: Buffer for the generated pseudo-random key
|
||||
* @buf_len: Number of bytes of key to generate
|
||||
*
|
||||
* This function is used to derive new, cryptographically separate keys from a
|
||||
* given key.
|
||||
*/
|
||||
|
||||
static void sha256_prf(u8 *key, size_t key_len, char *label,
|
||||
u8 *data, size_t data_len, u8 *buf, size_t buf_len)
|
||||
{
|
||||
u16 counter = 1;
|
||||
size_t pos, plen;
|
||||
u8 hash[SHA256_MAC_LEN];
|
||||
u8 *addr[4];
|
||||
size_t len[4];
|
||||
u8 counter_le[2], length_le[2];
|
||||
|
||||
addr[0] = counter_le;
|
||||
len[0] = 2;
|
||||
addr[1] = (u8 *)label;
|
||||
len[1] = os_strlen(label);
|
||||
addr[2] = data;
|
||||
len[2] = data_len;
|
||||
addr[3] = length_le;
|
||||
len[3] = sizeof(length_le);
|
||||
|
||||
WPA_PUT_LE16(length_le, buf_len * 8);
|
||||
pos = 0;
|
||||
while (pos < buf_len) {
|
||||
plen = buf_len - pos;
|
||||
WPA_PUT_LE16(counter_le, counter);
|
||||
if (plen >= SHA256_MAC_LEN) {
|
||||
hmac_sha256_vector(key, key_len, 4, addr, len,
|
||||
&buf[pos]);
|
||||
pos += SHA256_MAC_LEN;
|
||||
} else {
|
||||
hmac_sha256_vector(key, key_len, 4, addr, len, hash);
|
||||
_rtw_memcpy(&buf[pos], hash, plen);
|
||||
break;
|
||||
}
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
/* AES tables*/
|
||||
const u32 Te0[256] = {
|
||||
0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
|
||||
|
@ -2052,6 +1738,31 @@ const u8 rcons[] = {
|
|||
/* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
|
||||
};
|
||||
|
||||
/**
|
||||
* Expand the cipher key into the encryption key schedule.
|
||||
*
|
||||
* @return the number of rounds for the given cipher key size.
|
||||
*/
|
||||
#define ROUND(i, d, s) \
|
||||
do { \
|
||||
d##0 = TE0(s##0) ^ TE1(s##1) ^ TE2(s##2) ^ TE3(s##3) ^ rk[4 * i]; \
|
||||
d##1 = TE0(s##1) ^ TE1(s##2) ^ TE2(s##3) ^ TE3(s##0) ^ rk[4 * i + 1]; \
|
||||
d##2 = TE0(s##2) ^ TE1(s##3) ^ TE2(s##0) ^ TE3(s##1) ^ rk[4 * i + 2]; \
|
||||
d##3 = TE0(s##3) ^ TE1(s##0) ^ TE2(s##1) ^ TE3(s##2) ^ rk[4 * i + 3]; \
|
||||
} while (0);
|
||||
|
||||
/**
|
||||
* omac1_aes_128 - One-Key CBC MAC (OMAC1) hash with AES-128 (aka AES-CMAC)
|
||||
* @key: 128-bit key for the hash operation
|
||||
* @data: Data buffer for which a MAC is determined
|
||||
* @data_len: Length of data buffer in bytes
|
||||
* @mac: Buffer for MAC (128 bits, i.e., 16 bytes)
|
||||
* Returns: 0 on success, -1 on failure
|
||||
*
|
||||
* This is a mode for using block cipher (AES in this case) for authentication.
|
||||
* OMAC1 was standardized with the name CMAC by NIST in a Special Publication
|
||||
* (SP) 800-38B.
|
||||
*/
|
||||
void rtw_use_tkipkey_handler(void *FunctionContext)
|
||||
{
|
||||
struct adapter *padapter = (struct adapter *)FunctionContext;
|
||||
|
|
|
@ -49,6 +49,7 @@ u8 sreset_get_wifi_status(struct adapter *padapter)
|
|||
|
||||
u8 status = WIFI_STATUS_SUCCESS;
|
||||
u32 val32 = 0;
|
||||
|
||||
if (psrtpriv->silent_reset_inprogress)
|
||||
return status;
|
||||
val32 = rtw_read32(padapter, REG_TXDMA_STATUS);
|
||||
|
|
|
@ -26,10 +26,9 @@
|
|||
#include <mlme_osdep.h>
|
||||
#include <sta_info.h>
|
||||
|
||||
void _rtw_init_stainfo(struct sta_info *psta)
|
||||
static void _rtw_init_stainfo(struct sta_info *psta)
|
||||
{
|
||||
_func_enter_;
|
||||
|
||||
_rtw_memset((u8 *)psta, 0, sizeof (struct sta_info));
|
||||
|
||||
_rtw_spinlock_init(&psta->lock);
|
||||
|
@ -41,7 +40,7 @@ _func_enter_;
|
|||
_rtw_init_sta_xmit_priv(&psta->sta_xmitpriv);
|
||||
_rtw_init_sta_recv_priv(&psta->sta_recvpriv);
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
|
||||
_rtw_init_listhead(&psta->asoc_list);
|
||||
|
||||
|
@ -55,7 +54,7 @@ _func_enter_;
|
|||
|
||||
psta->bpairwise_key_installed = false;
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
psta->nonerp_set = 0;
|
||||
psta->no_short_slot_time_set = 0;
|
||||
psta->no_short_preamble_set = 0;
|
||||
|
@ -68,7 +67,7 @@ _func_enter_;
|
|||
|
||||
psta->keep_alive_trycnt = 0;
|
||||
|
||||
#endif /* CONFIG_AP_MODE */
|
||||
#endif /* CONFIG_88EU_AP_MODE */
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
@ -108,7 +107,7 @@ _func_enter_;
|
|||
psta++;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
|
||||
pstapriv->sta_dz_bitmap = 0;
|
||||
pstapriv->tim_bitmap = 0;
|
||||
|
@ -215,9 +214,9 @@ _func_enter_;
|
|||
_func_exit_;
|
||||
}
|
||||
|
||||
void rtw_mfree_sta_priv_lock(struct sta_priv *pstapriv)
|
||||
static void rtw_mfree_sta_priv_lock(struct sta_priv *pstapriv)
|
||||
{
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
|
||||
#endif
|
||||
|
||||
|
@ -229,7 +228,7 @@ void rtw_mfree_sta_priv_lock(struct sta_priv *pstapriv)
|
|||
_rtw_spinlock_free(&pstapriv->wakeup_q.lock);
|
||||
_rtw_spinlock_free(&pstapriv->sleep_q.lock);
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
_rtw_spinlock_free(&pstapriv->asoc_list_lock);
|
||||
_rtw_spinlock_free(&pstapriv->auth_list_lock);
|
||||
_rtw_spinlock_free(&pacl_list->acl_node_q.lock);
|
||||
|
@ -302,7 +301,7 @@ _func_enter_;
|
|||
rtw_list_delete(&(psta->list));
|
||||
_exit_critical_bh(&(pfree_sta_queue->lock), &irql);
|
||||
_rtw_init_stainfo(psta);
|
||||
_rtw_memcpy(psta->hwaddr, hwaddr, ETH_ALEN);
|
||||
memcpy(psta->hwaddr, hwaddr, ETH_ALEN);
|
||||
index = wifi_mac_hash(hwaddr);
|
||||
RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_info_, ("rtw_alloc_stainfo: index=%x", index));
|
||||
if (index >= NUM_STA) {
|
||||
|
@ -326,7 +325,7 @@ _func_enter_;
|
|||
/* So, we initialize the tid_rxseq variable as the 0xffff. */
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
_rtw_memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i], &wRxSeqInitialValue, 2);
|
||||
memcpy(&psta->sta_recvpriv.rxcache.tid_rxseq[i], &wRxSeqInitialValue, 2);
|
||||
|
||||
RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_info_,
|
||||
("alloc number_%d stainfo with hwaddr = %pM\n",
|
||||
|
@ -454,7 +453,7 @@ _func_enter_;
|
|||
if (!(psta->state & WIFI_AP_STATE))
|
||||
rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, false);
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
|
||||
_enter_critical_bh(&pstapriv->auth_list_lock, &irql0);
|
||||
if (!rtw_is_list_empty(&psta->auth_list)) {
|
||||
|
@ -485,7 +484,7 @@ _func_enter_;
|
|||
|
||||
psta->under_exist_checking = 0;
|
||||
|
||||
#endif /* CONFIG_AP_MODE */
|
||||
#endif /* CONFIG_88EU_AP_MODE */
|
||||
|
||||
_enter_critical_bh(&(pfree_sta_queue->lock), &irql0);
|
||||
rtw_list_insert_tail(&psta->list, get_list_head(pfree_sta_queue));
|
||||
|
@ -618,7 +617,7 @@ _func_exit_;
|
|||
u8 rtw_access_ctrl(struct adapter *padapter, u8 *mac_addr)
|
||||
{
|
||||
u8 res = true;
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
unsigned long irql;
|
||||
struct list_head *plist, *phead;
|
||||
struct rtw_wlan_acl_node *paclnode;
|
||||
|
|
|
@ -28,7 +28,6 @@ static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74};
|
|||
|
||||
static unsigned char BROADCOM_OUI1[] = {0x00, 0x10, 0x18};
|
||||
static unsigned char BROADCOM_OUI2[] = {0x00, 0x0a, 0xf7};
|
||||
static unsigned char BROADCOM_OUI3[] = {0x00, 0x05, 0xb5};
|
||||
|
||||
static unsigned char CISCO_OUI[] = {0x00, 0x40, 0x96};
|
||||
static unsigned char MARVELL_OUI[] = {0x00, 0x50, 0x43};
|
||||
|
@ -145,7 +144,7 @@ u8 judge_network_type(struct adapter *padapter, unsigned char *rate, int ratelen
|
|||
return network_type;
|
||||
}
|
||||
|
||||
unsigned char ratetbl_val_2wifirate(unsigned char rate)
|
||||
static unsigned char ratetbl_val_2wifirate(unsigned char rate)
|
||||
{
|
||||
unsigned char val = 0;
|
||||
|
||||
|
@ -190,7 +189,7 @@ unsigned char ratetbl_val_2wifirate(unsigned char rate)
|
|||
return val;
|
||||
}
|
||||
|
||||
int is_basicrate(struct adapter *padapter, unsigned char rate)
|
||||
static int is_basicrate(struct adapter *padapter, unsigned char rate)
|
||||
{
|
||||
int i;
|
||||
unsigned char val;
|
||||
|
@ -207,7 +206,7 @@ int is_basicrate(struct adapter *padapter, unsigned char rate)
|
|||
return false;
|
||||
}
|
||||
|
||||
unsigned int ratetbl2rateset(struct adapter *padapter, unsigned char *rateset)
|
||||
static unsigned int ratetbl2rateset(struct adapter *padapter, unsigned char *rateset)
|
||||
{
|
||||
int i;
|
||||
unsigned char rate;
|
||||
|
@ -242,7 +241,7 @@ void get_rate_set(struct adapter *padapter, unsigned char *pbssrate, int *bssrat
|
|||
|
||||
_rtw_memset(supportedrates, 0, NumRates);
|
||||
*bssrate_len = ratetbl2rateset(padapter, supportedrates);
|
||||
_rtw_memcpy(pbssrate, supportedrates, *bssrate_len);
|
||||
memcpy(pbssrate, supportedrates, *bssrate_len);
|
||||
}
|
||||
|
||||
void UpdateBrateTbl(struct adapter *Adapter, u8 *mbrate)
|
||||
|
@ -307,11 +306,6 @@ void Switch_DM_Func(struct adapter *padapter, u32 mode, u8 enable)
|
|||
rtw_hal_set_hwreg(padapter, HW_VAR_DM_FUNC_CLR, (u8 *)(&mode));
|
||||
}
|
||||
|
||||
static void Set_NETYPE1_MSR(struct adapter *padapter, u8 type)
|
||||
{
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS1, (u8 *)(&type));
|
||||
}
|
||||
|
||||
static void Set_NETYPE0_MSR(struct adapter *padapter, u8 type)
|
||||
{
|
||||
rtw_hal_set_hwreg(padapter, HW_VAR_MEDIA_STATUS, (u8 *)(&type));
|
||||
|
@ -356,11 +350,11 @@ void SelectChannel(struct adapter *padapter, unsigned char channel)
|
|||
{
|
||||
/* saved channel info */
|
||||
rtw_set_oper_ch(padapter, channel);
|
||||
|
||||
rtw_hal_set_chan(padapter, channel);
|
||||
}
|
||||
|
||||
void SetBWMode(struct adapter *padapter, unsigned short bwmode, unsigned char channel_offset)
|
||||
void SetBWMode(struct adapter *padapter, unsigned short bwmode,
|
||||
unsigned char channel_offset)
|
||||
{
|
||||
/* saved bw info */
|
||||
rtw_set_oper_bw(padapter, bwmode);
|
||||
|
@ -419,7 +413,7 @@ __inline u8 *get_my_bssid(struct wlan_bssid_ex *pnetwork)
|
|||
u16 get_beacon_interval(struct wlan_bssid_ex *bss)
|
||||
{
|
||||
__le16 val;
|
||||
_rtw_memcpy((unsigned char *)&val, rtw_get_beacon_interval_from_ie(bss->IEs), 2);
|
||||
memcpy((unsigned char *)&val, rtw_get_beacon_interval_from_ie(bss->IEs), 2);
|
||||
|
||||
return le16_to_cpu(val);
|
||||
}
|
||||
|
@ -563,7 +557,7 @@ int WMM_param_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE)
|
|||
}
|
||||
|
||||
pmlmeinfo->WMM_enable = 1;
|
||||
_rtw_memcpy(&(pmlmeinfo->WMM_param), (pIE->data + 6), sizeof(struct WMM_para_element));
|
||||
memcpy(&(pmlmeinfo->WMM_param), (pIE->data + 6), sizeof(struct WMM_para_element));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -637,7 +631,7 @@ void WMMOnAssocRsp(struct adapter *padapter)
|
|||
inx[0] = 0; inx[1] = 1; inx[2] = 2; inx[3] = 3;
|
||||
|
||||
if (pregpriv->wifi_spec == 1) {
|
||||
u32 j, tmp, change_inx;
|
||||
u32 j, tmp, change_inx = false;
|
||||
|
||||
/* entry indx: 0->vo, 1->vi, 2->be, 3->bk. */
|
||||
for (i = 0; i < 4; i++) {
|
||||
|
@ -819,7 +813,7 @@ void HT_info_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE)
|
|||
return;
|
||||
|
||||
pmlmeinfo->HT_info_enable = 1;
|
||||
_rtw_memcpy(&(pmlmeinfo->HT_info), pIE->data, pIE->Length);
|
||||
memcpy(&(pmlmeinfo->HT_info), pIE->data, pIE->Length);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -863,7 +857,7 @@ void ERP_IE_handler(struct adapter *padapter, struct ndis_802_11_var_ie *pIE)
|
|||
return;
|
||||
|
||||
pmlmeinfo->ERP_enable = 1;
|
||||
_rtw_memcpy(&(pmlmeinfo->ERP_IE), pIE->data, pIE->Length);
|
||||
memcpy(&(pmlmeinfo->ERP_IE), pIE->data, pIE->Length);
|
||||
}
|
||||
|
||||
void VCS_update(struct adapter *padapter, struct sta_info *psta)
|
||||
|
@ -952,7 +946,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
|
|||
|
||||
/* below is to copy the information element */
|
||||
bssid->IELength = len;
|
||||
_rtw_memcpy(bssid->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), bssid->IELength);
|
||||
memcpy(bssid->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), bssid->IELength);
|
||||
|
||||
/* check bw and channel offset */
|
||||
/* parsing HT_CAP_IE */
|
||||
|
@ -1014,7 +1008,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
|
|||
}
|
||||
|
||||
if ((NULL != p) && (false == hidden_ssid && (*(p + 1)))) {
|
||||
_rtw_memcpy(bssid->Ssid.Ssid, (p + 2), *(p + 1));
|
||||
memcpy(bssid->Ssid.Ssid, (p + 2), *(p + 1));
|
||||
bssid->Ssid.SsidLength = *(p + 1);
|
||||
} else {
|
||||
bssid->Ssid.SsidLength = 0;
|
||||
|
@ -1101,14 +1095,14 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len)
|
|||
}
|
||||
}
|
||||
|
||||
rtw_mfree((u8 *)bssid, sizeof(struct wlan_bssid_ex));
|
||||
_func_exit_;
|
||||
kfree(bssid);
|
||||
return _SUCCESS;
|
||||
|
||||
_mismatch:
|
||||
rtw_mfree((u8 *)bssid, sizeof(struct wlan_bssid_ex));
|
||||
_func_exit_;
|
||||
kfree(bssid);
|
||||
return _FAIL;
|
||||
|
||||
_func_exit_;
|
||||
}
|
||||
|
||||
void update_beacon_info(struct adapter *padapter, u8 *pframe, uint pkt_len, struct sta_info *psta)
|
||||
|
@ -1351,24 +1345,12 @@ unsigned char get_highest_rate_idx(u32 mask)
|
|||
return rate_idx;
|
||||
}
|
||||
|
||||
unsigned char get_highest_mcs_rate(struct HT_caps_element *pHT_caps)
|
||||
{
|
||||
int i, mcs_rate;
|
||||
|
||||
mcs_rate = (pHT_caps->u.HT_cap_element.MCS_rate[0] | (pHT_caps->u.HT_cap_element.MCS_rate[1] << 8));
|
||||
|
||||
for (i = 15; i >= 0; i--)
|
||||
if (mcs_rate & (0x1 << i))
|
||||
break;
|
||||
return i;
|
||||
}
|
||||
|
||||
void Update_RA_Entry(struct adapter *padapter, u32 mac_id)
|
||||
{
|
||||
rtw_hal_update_ra_mask(padapter, mac_id, 0);
|
||||
}
|
||||
|
||||
void enable_rate_adaptive(struct adapter *padapter, u32 mac_id)
|
||||
static void enable_rate_adaptive(struct adapter *padapter, u32 mac_id)
|
||||
{
|
||||
Update_RA_Entry(padapter, mac_id);
|
||||
}
|
||||
|
@ -1383,7 +1365,7 @@ void set_sta_rate(struct adapter *padapter, struct sta_info *psta)
|
|||
void update_tx_basic_rate(struct adapter *padapter, u8 wirelessmode)
|
||||
{
|
||||
unsigned char supported_rates[NDIS_802_11_LENGTH_RATES_EX];
|
||||
#ifdef CONFIG_P2P
|
||||
#ifdef CONFIG_88EU_P2P
|
||||
struct wifidirect_info *pwdinfo = &padapter->wdinfo;
|
||||
|
||||
/* Added by Albert 2011/03/22 */
|
||||
|
@ -1391,15 +1373,15 @@ void update_tx_basic_rate(struct adapter *padapter, u8 wirelessmode)
|
|||
/* So, the Tx packet shouldn't use the CCK rate */
|
||||
if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE))
|
||||
return;
|
||||
#endif /* CONFIG_P2P */
|
||||
#endif /* CONFIG_88EU_P2P */
|
||||
_rtw_memset(supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX);
|
||||
|
||||
if ((wirelessmode & WIRELESS_11B) && (wirelessmode == WIRELESS_11B)) {
|
||||
_rtw_memcpy(supported_rates, rtw_basic_rate_cck, 4);
|
||||
memcpy(supported_rates, rtw_basic_rate_cck, 4);
|
||||
} else if (wirelessmode & WIRELESS_11B) {
|
||||
_rtw_memcpy(supported_rates, rtw_basic_rate_mix, 7);
|
||||
memcpy(supported_rates, rtw_basic_rate_mix, 7);
|
||||
} else {
|
||||
_rtw_memcpy(supported_rates, rtw_basic_rate_ofdm, 3);
|
||||
memcpy(supported_rates, rtw_basic_rate_ofdm, 3);
|
||||
}
|
||||
|
||||
if (wirelessmode & WIRELESS_11B)
|
||||
|
@ -1430,7 +1412,7 @@ unsigned char check_assoc_AP(u8 *pframe, uint len)
|
|||
return HT_IOT_PEER_ATHEROS;
|
||||
} else if ((_rtw_memcmp(pIE->data, BROADCOM_OUI1, 3)) ||
|
||||
(_rtw_memcmp(pIE->data, BROADCOM_OUI2, 3)) ||
|
||||
(_rtw_memcmp(pIE->data, BROADCOM_OUI3, 3))) {
|
||||
(_rtw_memcmp(pIE->data, BROADCOM_OUI2, 3))) {
|
||||
DBG_88E("link to Broadcom AP\n");
|
||||
return HT_IOT_PEER_BROADCOM;
|
||||
} else if (_rtw_memcmp(pIE->data, MARVELL_OUI, 3)) {
|
||||
|
@ -1608,9 +1590,9 @@ void update_bmc_sta_support_rate(struct adapter *padapter, u32 mac_id)
|
|||
|
||||
if (pmlmeext->cur_wireless_mode & WIRELESS_11B) {
|
||||
/* Only B, B/G, and B/G/N AP could use CCK rate */
|
||||
_rtw_memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_cck, 4);
|
||||
memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_cck, 4);
|
||||
} else {
|
||||
_rtw_memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_ofdm, 4);
|
||||
memcpy((pmlmeinfo->FW_sta_info[mac_id].SupportedRates), rtw_basic_rate_ofdm, 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1626,12 +1608,12 @@ int update_sta_support_rate(struct adapter *padapter, u8 *pvar_ie, uint var_ie_l
|
|||
if (pIE == NULL)
|
||||
return _FAIL;
|
||||
|
||||
_rtw_memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len);
|
||||
memcpy(pmlmeinfo->FW_sta_info[cam_idx].SupportedRates, pIE->data, ie_len);
|
||||
supportRateNum = ie_len;
|
||||
|
||||
pIE = (struct ndis_802_11_var_ie *)rtw_get_ie(pvar_ie, _EXT_SUPPORTEDRATES_IE_, &ie_len, var_ie_len);
|
||||
if (pIE)
|
||||
_rtw_memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum), pIE->data, ie_len);
|
||||
memcpy((pmlmeinfo->FW_sta_info[cam_idx].SupportedRates + supportRateNum), pIE->data, ie_len);
|
||||
|
||||
return _SUCCESS;
|
||||
}
|
||||
|
@ -1703,6 +1685,5 @@ int rtw_handle_dualmac(struct adapter *adapter, bool init)
|
|||
} else {
|
||||
pbuddy_padapter = NULL;
|
||||
}
|
||||
exit:
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -66,7 +66,6 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)
|
|||
_func_enter_;
|
||||
|
||||
/* We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). */
|
||||
/* _rtw_memset((unsigned char *)pxmitpriv, 0, sizeof(struct xmit_priv)); */
|
||||
|
||||
_rtw_spinlock_init(&pxmitpriv->lock);
|
||||
_rtw_init_sema(&pxmitpriv->xmit_sema, 0);
|
||||
|
@ -232,7 +231,7 @@ _func_exit_;
|
|||
return res;
|
||||
}
|
||||
|
||||
void rtw_mfree_xmit_priv_lock (struct xmit_priv *pxmitpriv)
|
||||
static void rtw_mfree_xmit_priv_lock (struct xmit_priv *pxmitpriv)
|
||||
{
|
||||
_rtw_spinlock_free(&pxmitpriv->lock);
|
||||
_rtw_free_sema(&pxmitpriv->xmit_sema);
|
||||
|
@ -484,21 +483,21 @@ static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, struct p
|
|||
|
||||
pattrib->ether_type = ntohs(etherhdr.h_proto);
|
||||
|
||||
_rtw_memcpy(pattrib->dst, ðerhdr.h_dest, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->src, ðerhdr.h_source, ETH_ALEN);
|
||||
memcpy(pattrib->dst, ðerhdr.h_dest, ETH_ALEN);
|
||||
memcpy(pattrib->src, ðerhdr.h_source, ETH_ALEN);
|
||||
|
||||
pattrib->pctrl = 0;
|
||||
|
||||
if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
|
||||
check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
|
||||
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
} else if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) {
|
||||
_rtw_memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
memcpy(pattrib->ta, pattrib->src, ETH_ALEN);
|
||||
} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
|
||||
_rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
memcpy(pattrib->ra, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
}
|
||||
|
||||
pattrib->pktlen = pktfile.pkt_len;
|
||||
|
@ -765,7 +764,7 @@ _func_enter_;
|
|||
mic[0], mic[1], mic[2], mic[3], mic[4], mic[5], mic[6], mic[7]));
|
||||
/* add mic code and add the mic code length in last_txcmdsz */
|
||||
|
||||
_rtw_memcpy(payload, &(mic[0]), 8);
|
||||
memcpy(payload, &(mic[0]), 8);
|
||||
pattrib->last_txcmdsz += 8;
|
||||
|
||||
RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, ("\n ======== last pkt ========\n"));
|
||||
|
@ -828,7 +827,7 @@ s32 rtw_make_wlanhdr (struct adapter *padapter , u8 *hdr, struct pkt_attrib *pat
|
|||
u8 qos_option = false;
|
||||
|
||||
int res = _SUCCESS;
|
||||
u16 *fctrl = &pwlanhdr->frame_ctl;
|
||||
__le16 *fctrl = &pwlanhdr->frame_ctl;
|
||||
|
||||
struct sta_info *psta;
|
||||
|
||||
|
@ -855,26 +854,26 @@ _func_enter_;
|
|||
/* to_ds = 1, fr_ds = 0; */
|
||||
/* Data transfer to AP */
|
||||
SetToDs(fctrl);
|
||||
_rtw_memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, pattrib->dst, ETH_ALEN);
|
||||
|
||||
if (pqospriv->qos_option)
|
||||
qos_option = true;
|
||||
} else if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
|
||||
/* to_ds = 0, fr_ds = 1; */
|
||||
SetFrDs(fctrl);
|
||||
_rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, pattrib->src, ETH_ALEN);
|
||||
|
||||
if (psta->qos_option)
|
||||
qos_option = true;
|
||||
} else if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) ||
|
||||
check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) {
|
||||
_rtw_memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
|
||||
_rtw_memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr1, pattrib->dst, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr2, pattrib->src, ETH_ALEN);
|
||||
memcpy(pwlanhdr->addr3, get_bssid(pmlmepriv), ETH_ALEN);
|
||||
|
||||
if (psta->qos_option)
|
||||
qos_option = true;
|
||||
|
@ -1078,7 +1077,7 @@ _func_enter_;
|
|||
switch (pattrib->encrypt) {
|
||||
case _WEP40_:
|
||||
case _WEP104_:
|
||||
WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
|
||||
WEP_IV(pattrib->iv, psta->dot11txpn, pattrib->key_idx);
|
||||
break;
|
||||
case _TKIP_:
|
||||
if (bmcst)
|
||||
|
@ -1095,7 +1094,7 @@ _func_enter_;
|
|||
}
|
||||
}
|
||||
|
||||
_rtw_memcpy(pframe, pattrib->iv, pattrib->iv_len);
|
||||
memcpy(pframe, pattrib->iv, pattrib->iv_len);
|
||||
|
||||
RT_TRACE(_module_rtl871x_xmit_c_, _drv_notice_,
|
||||
("rtw_xmitframe_coalesce: keyid=%d pattrib->iv[3]=%.2x pframe=%.2x %.2x %.2x %.2x\n",
|
||||
|
@ -1126,7 +1125,7 @@ _func_enter_;
|
|||
pframe += mem_sz;
|
||||
|
||||
if ((pattrib->icv_len > 0) && (pattrib->bswenc)) {
|
||||
_rtw_memcpy(pframe, pattrib->icv, pattrib->icv_len);
|
||||
memcpy(pframe, pattrib->icv, pattrib->icv_len);
|
||||
pframe += pattrib->icv_len;
|
||||
}
|
||||
|
||||
|
@ -1148,7 +1147,7 @@ _func_enter_;
|
|||
addr = (size_t)(pframe);
|
||||
|
||||
mem_start = (unsigned char *)RND4(addr) + hw_hdr_offset;
|
||||
_rtw_memcpy(mem_start, pbuf_start + hw_hdr_offset, pattrib->hdrlen);
|
||||
memcpy(mem_start, pbuf_start + hw_hdr_offset, pattrib->hdrlen);
|
||||
}
|
||||
|
||||
if (xmitframe_addmic(padapter, pxmitframe) == _FAIL) {
|
||||
|
@ -1557,12 +1556,20 @@ static struct xmit_frame *dequeue_one_xmitframe(struct xmit_priv *pxmitpriv, str
|
|||
xmitframe_phead = get_list_head(pframe_queue);
|
||||
xmitframe_plist = get_next(xmitframe_phead);
|
||||
|
||||
if (!rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) {
|
||||
while (!rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist)) {
|
||||
pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list);
|
||||
|
||||
xmitframe_plist = get_next(xmitframe_plist);
|
||||
|
||||
rtw_list_delete(&pxmitframe->list);
|
||||
|
||||
ptxservq->qcnt--;
|
||||
|
||||
break;
|
||||
|
||||
pxmitframe = NULL;
|
||||
}
|
||||
|
||||
return pxmitframe;
|
||||
}
|
||||
|
||||
|
@ -1737,8 +1744,7 @@ void rtw_free_hwxmits(struct adapter *padapter)
|
|||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
|
||||
hwxmits = pxmitpriv->hwxmits;
|
||||
if (hwxmits)
|
||||
rtw_mfree((u8 *)hwxmits, (sizeof(struct hw_xmit) * pxmitpriv->hwxmit_entry));
|
||||
kfree(hwxmits);
|
||||
}
|
||||
|
||||
void rtw_init_hwxmits(struct hw_xmit *phwxmit, int entry)
|
||||
|
@ -1758,13 +1764,9 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb)
|
|||
unsigned short vlan_hdr = 0;
|
||||
void *br_port = NULL;
|
||||
|
||||
#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
||||
br_port = padapter->pnetdev->br_port;
|
||||
#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */
|
||||
rcu_read_lock();
|
||||
br_port = rcu_dereference(padapter->pnetdev->rx_handler_data);
|
||||
rcu_read_unlock();
|
||||
#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */
|
||||
_enter_critical_bh(&padapter->br_ext_lock, &irql);
|
||||
if (!(skb->data[0] & 1) && br_port &&
|
||||
memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) &&
|
||||
|
@ -1838,11 +1840,7 @@ static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb)
|
|||
if (skb_is_nonlinear(skb))
|
||||
DEBUG_ERR("%s(): skb_is_nonlinear!!\n", __func__);
|
||||
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18))
|
||||
res = skb_linearize(skb, GFP_ATOMIC);
|
||||
#else /* (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) */
|
||||
res = skb_linearize(skb);
|
||||
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 18)) */
|
||||
if (res < 0) {
|
||||
DEBUG_ERR("TX DROP: skb_linearize fail!\n");
|
||||
return -1;
|
||||
|
@ -1937,7 +1935,7 @@ static void do_queue_select(struct adapter *padapter, struct pkt_attrib *pattrib
|
|||
*/
|
||||
s32 rtw_xmit(struct adapter *padapter, struct sk_buff **ppkt)
|
||||
{
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
unsigned long irql0;
|
||||
#endif
|
||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
|
@ -1953,13 +1951,9 @@ s32 rtw_xmit(struct adapter *padapter, struct sk_buff **ppkt)
|
|||
return -1;
|
||||
}
|
||||
|
||||
#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
||||
br_port = padapter->pnetdev->br_port;
|
||||
#else /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */
|
||||
rcu_read_lock();
|
||||
br_port = rcu_dereference(padapter->pnetdev->rx_handler_data);
|
||||
rcu_read_unlock();
|
||||
#endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */
|
||||
|
||||
if (br_port && check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE)) {
|
||||
res = rtw_br_client_tx(padapter, ppkt);
|
||||
|
@ -1982,7 +1976,7 @@ s32 rtw_xmit(struct adapter *padapter, struct sk_buff **ppkt)
|
|||
|
||||
do_queue_select(padapter, &pxmitframe->attrib);
|
||||
|
||||
#ifdef CONFIG_AP_MODE
|
||||
#ifdef CONFIG_88EU_AP_MODE
|
||||
_enter_critical_bh(&pxmitpriv->lock, &irql0);
|
||||
if (xmitframe_enqueue_for_sleeping_sta(padapter, pxmitframe)) {
|
||||
_exit_critical_bh(&pxmitpriv->lock, &irql0);
|
||||
|
@ -1997,7 +1991,7 @@ s32 rtw_xmit(struct adapter *padapter, struct sk_buff **ppkt)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_AP_MODE)
|
||||
#if defined(CONFIG_88EU_AP_MODE)
|
||||
|
||||
int xmitframe_enqueue_for_sleeping_sta(struct adapter *padapter, struct xmit_frame *pxmitframe)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue