diff --git a/core/rtw_ap.c b/core/rtw_ap.c index 52b8071..130a606 100755 --- a/core/rtw_ap.c +++ b/core/rtw_ap.c @@ -96,7 +96,7 @@ static void update_BCNTIM(struct adapter *padapter) if(true) { u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL; - u16 tim_bitmap_le; + __le16 tim_bitmap_le; uint offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen; tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap); @@ -932,7 +932,7 @@ static void update_hw_ht_param(struct adapter *padapter) // // Config SM Power Save setting // - pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2; + pmlmeinfo->SM_PS = (le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info) & 0x0C) >> 2; if(pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC) { /*u8 i; @@ -2008,7 +2008,7 @@ static int rtw_ht_operation_update(struct adapter *padapter) if (pmlmepriv->num_sta_no_ht || (pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT)) new_op_mode = OP_MODE_MIXED; - else if ((phtpriv_ap->ht_cap.cap_info & IEEE80211_HT_CAP_SUP_WIDTH) + else if ((le16_to_cpu(phtpriv_ap->ht_cap.cap_info) & IEEE80211_HT_CAP_SUP_WIDTH) && pmlmepriv->num_sta_ht_20mhz) new_op_mode = OP_MODE_20MHZ_HT_STA_ASSOCED; else if (pmlmepriv->olbc_ht) diff --git a/core/rtw_br_ext.c b/core/rtw_br_ext.c index 244bf2e..29d1d4e 100755 --- a/core/rtw_br_ext.c +++ b/core/rtw_br_ext.c @@ -785,6 +785,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method) { unsigned short protocol; unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; + u32 tmp; if(skb == NULL) return -1; @@ -792,7 +793,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method) if((method <= NAT25_MIN) || (method >= NAT25_MAX)) return -1; - protocol = *((unsigned short *)(skb->data + 2 * ETH_ALEN)); + protocol = be16_to_cpu(*((__be16 *)(skb->data + 2 * ETH_ALEN))); /*---------------------------------------------------*/ /* Handle IP frame */ @@ -807,61 +808,61 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method) return -1; } - switch(method) - { - case NAT25_CHECK: - return -1; + switch(method) { + case NAT25_CHECK: + return -1; - case NAT25_INSERT: - { - //some muticast with source IP is all zero, maybe other case is illegal - //in class A, B, C, host address is all zero or all one is illegal - if (iph->saddr == 0) - return 0; - DEBUG_INFO("NAT25: Insert IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); - __nat25_generate_ipv4_network_addr(networkAddr, &iph->saddr); - //record source IP address and , source mac address into db - __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); + case NAT25_INSERT: + { + tmp = be32_to_cpu(iph->saddr); + //some muticast with source IP is all zero, maybe other case is illegal + //in class A, B, C, host address is all zero or all one is illegal + if (iph->saddr == 0) + return 0; + DEBUG_INFO("NAT25: Insert IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); + __nat25_generate_ipv4_network_addr(networkAddr, &tmp); + //record source IP address and , source mac address into db + __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); - __nat25_db_print(priv); - } - return 0; + __nat25_db_print(priv); + } + return 0; - case NAT25_LOOKUP: - { - DEBUG_INFO("NAT25: Lookup IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); + case NAT25_LOOKUP: + { + DEBUG_INFO("NAT25: Lookup IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); #ifdef SUPPORT_TX_MCAST2UNI - if (priv->pshare->rf_ft_var.mc2u_disable || - ((((OPMODE & (WIFI_STATION_STATE|WIFI_ASOC_STATE)) - == (WIFI_STATION_STATE|WIFI_ASOC_STATE)) && - !checkIPMcAndReplace(priv, skb, &iph->daddr)) || - (OPMODE & WIFI_ADHOC_STATE))) + if (priv->pshare->rf_ft_var.mc2u_disable || + ((((OPMODE & (WIFI_STATION_STATE|WIFI_ASOC_STATE)) == + (WIFI_STATION_STATE|WIFI_ASOC_STATE)) && + !checkIPMcAndReplace(priv, skb, &iph->daddr)) || + (OPMODE & WIFI_ADHOC_STATE))) #endif - { - __nat25_generate_ipv4_network_addr(networkAddr, &iph->daddr); + { + tmp = be32_to_cpu(iph->daddr); + __nat25_generate_ipv4_network_addr(networkAddr, &tmp); - if (!__nat25_db_network_lookup_and_replace(priv, skb, networkAddr)) { - if (*((unsigned char *)&iph->daddr + 3) == 0xff) { - // L2 is unicast but L3 is broadcast, make L2 bacome broadcast - DEBUG_INFO("NAT25: Set DA as boardcast\n"); - memset(skb->data, 0xff, ETH_ALEN); - } - else { - // forward unknow IP packet to upper TCP/IP - DEBUG_INFO("NAT25: Replace DA with BR's MAC\n"); - if ( (*(u32 *)priv->br_mac) == 0 && (*(u16 *)(priv->br_mac+4)) == 0 ) { - printk("Re-init netdev_br_init() due to br_mac==0!\n"); - netdev_br_init(priv->pnetdev); - } - memcpy(skb->data, priv->br_mac, ETH_ALEN); + if (!__nat25_db_network_lookup_and_replace(priv, skb, networkAddr)) { + if (*((unsigned char *)&iph->daddr + 3) == 0xff) { + // L2 is unicast but L3 is broadcast, make L2 bacome broadcast + DEBUG_INFO("NAT25: Set DA as boardcast\n"); + memset(skb->data, 0xff, ETH_ALEN); + } else { + // forward unknow IP packet to upper TCP/IP + DEBUG_INFO("NAT25: Replace DA with BR's MAC\n"); + if ( (*(u32 *)priv->br_mac) == 0 && (*(u16 *)(priv->br_mac+4)) == 0 ) { + printk("Re-init netdev_br_init() due to br_mac==0!\n"); + netdev_br_init(priv->pnetdev); } + memcpy(skb->data, priv->br_mac, ETH_ALEN); } } } - return 0; + } + return 0; - default: - return -1; + default: + return -1; } } @@ -1598,7 +1599,7 @@ void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb) if(!priv->ethBrExtInfo.dhcp_bcst_disable) { - unsigned short protocol = *((unsigned short *)(skb->data + 2 * ETH_ALEN)); + __be16 protocol = *((__be16 *)(skb->data + 2 * ETH_ALEN)); if(protocol == __constant_htons(ETH_P_IP)) // IP { diff --git a/core/rtw_ieee80211.c b/core/rtw_ieee80211.c index d1023bd..952a095 100755 --- a/core/rtw_ieee80211.c +++ b/core/rtw_ieee80211.c @@ -417,20 +417,20 @@ int rtw_generate_ie(struct registry_priv *pregistrypriv) ie += sz; //beacon interval : 2bytes - *(u16*)ie = cpu_to_le16((u16)pdev_network->Configuration.BeaconPeriod);//BCN_INTERVAL; + *(__le16*)ie = cpu_to_le16((u16)pdev_network->Configuration.BeaconPeriod);//BCN_INTERVAL; sz += 2; ie += 2; //capability info *(u16*)ie = 0; - *(u16*)ie |= cpu_to_le16(cap_IBSS); + *(__le16*)ie |= cpu_to_le16(cap_IBSS); if(pregistrypriv->preamble == PREAMBLE_SHORT) - *(u16*)ie |= cpu_to_le16(cap_ShortPremble); + *(__le16*)ie |= cpu_to_le16(cap_ShortPremble); if (pdev_network->Privacy) - *(u16*)ie |= cpu_to_le16(cap_Privacy); + *(__le16*)ie |= cpu_to_le16(cap_Privacy); sz += 2; ie += 2; @@ -501,6 +501,7 @@ unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit) { int len; u16 val16; + __le16 le_tmp; unsigned char wpa_oui_type[] = {0x00, 0x50, 0xf2, 0x01}; u8 *pbuf = pie; int limit_new = limit; @@ -518,9 +519,9 @@ unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit) } //check version... - _rtw_memcpy((u8 *)&val16, (pbuf + 6), sizeof(val16)); + memcpy((u8 *)&le_tmp, (pbuf + 6), sizeof(val16)); - val16 = le16_to_cpu(val16); + val16 = le16_to_cpu(le_tmp); if (val16 != 0x0001) goto check_next_ie; @@ -1983,9 +1984,10 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork) struct rtw_ieee80211_ht_cap *pht_cap = NULL; unsigned int len; unsigned char *p; + __le16 le_tmp; - _rtw_memcpy((u8 *)&cap, rtw_get_capability_from_ie(pnetwork->network.IEs), 2); - cap = le16_to_cpu(cap); + memcpy((u8 *)&le_tmp, rtw_get_capability_from_ie(pnetwork->network.IEs), 2); + cap = le16_to_cpu(le_tmp); if (cap & WLAN_CAPABILITY_PRIVACY) { bencrypt = 1; pnetwork->network.Privacy = 1; @@ -2017,7 +2019,7 @@ void rtw_get_bcn_info(struct wlan_network *pnetwork) p = rtw_get_ie(pnetwork->network.IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, pnetwork->network.IELength - _FIXED_IE_LENGTH_); if(p && len>0) { pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2); - pnetwork->BcnInfo.ht_cap_info = pht_cap->cap_info; + pnetwork->BcnInfo.ht_cap_info = le16_to_cpu(pht_cap->cap_info); } else { pnetwork->BcnInfo.ht_cap_info = 0; } diff --git a/core/rtw_io.c b/core/rtw_io.c index 1390f3a..7a70307 100755 --- a/core/rtw_io.c +++ b/core/rtw_io.c @@ -68,7 +68,7 @@ u16 _rtw_read16(struct adapter *adapter, u32 addr) _read16 = pintfhdl->io_ops._read16; r_val = _read16(pintfhdl, addr); - return le16_to_cpu(r_val); + return r_val; } u32 _rtw_read32(struct adapter *adapter, u32 addr) @@ -80,7 +80,7 @@ u32 _rtw_read32(struct adapter *adapter, u32 addr) _read32 = pintfhdl->io_ops._read32; r_val = _read32(pintfhdl, addr); - return le32_to_cpu(r_val); + return r_val; } int _rtw_write8(struct adapter *adapter, u32 addr, u8 val) @@ -106,7 +106,6 @@ int _rtw_write16(struct adapter *adapter, u32 addr, u16 val) _write16 = pintfhdl->io_ops._write16; - val = cpu_to_le16(val); ret = _write16(pintfhdl, addr, val); return RTW_STATUS_CODE(ret); @@ -120,7 +119,6 @@ int _rtw_write32(struct adapter *adapter, u32 addr, u32 val) int ret; _write32 = pintfhdl->io_ops._write32; - val = cpu_to_le32(val); ret = _write32(pintfhdl, addr, val); return RTW_STATUS_CODE(ret); @@ -161,7 +159,6 @@ int _rtw_write16_async(struct adapter *adapter, u32 addr, u16 val) int ret; _write16_async = pintfhdl->io_ops._write16_async; - val = cpu_to_le16(val); ret = _write16_async(pintfhdl, addr, val); return RTW_STATUS_CODE(ret); @@ -175,7 +172,6 @@ int _rtw_write32_async(struct adapter *adapter, u32 addr, u32 val) int ret; _write32_async = pintfhdl->io_ops._write32_async; - val = cpu_to_le32(val); ret = _write32_async(pintfhdl, addr, val); return RTW_STATUS_CODE(ret); diff --git a/core/rtw_ioctl_set.c b/core/rtw_ioctl_set.c index e358434..e44590c 100755 --- a/core/rtw_ioctl_set.c +++ b/core/rtw_ioctl_set.c @@ -1259,8 +1259,8 @@ u16 rtw_get_cur_max_rate(struct adapter *adapter) bw_40MHz = (pmlmeext->cur_bwmode && (HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH & pmlmeinfo->HT_info.infos[0])) ? 1:0; //short_GI = (pht_capie->cap_info&(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40)) ? 1:0; - short_GI_20 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_20) ? 1:0; - short_GI_40 = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info&IEEE80211_HT_CAP_SGI_40) ? 1:0; + short_GI_20 = (le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info) & IEEE80211_HT_CAP_SGI_20) ? 1 : 0; + short_GI_40 = (le16_to_cpu(pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info) & IEEE80211_HT_CAP_SGI_40) ? 1 : 0; rtw_hal_get_hwreg(adapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); max_rate = rtw_mcs_rate( diff --git a/core/rtw_iol.c b/core/rtw_iol.c index 20f8cad..fb8beca 100755 --- a/core/rtw_iol.c +++ b/core/rtw_iol.c @@ -186,7 +186,7 @@ int _rtw_IOL_append_WRF_cmd(struct xmit_frame *xmit_frame, u8 rf_path, u16 addr, //RTW_PUT_LE16((u8*)&cmd.address, addr); //RTW_PUT_LE32((u8*)&cmd.value, (u32)value); - cmd.address = (rf_path<<8) |((addr) &0xFF); + cmd.address = cpu_to_le16((rf_path<<8) |((addr) &0xFF)); cmd.data = cpu_to_le32(value); if(mask!=0x000FFFFF) @@ -226,7 +226,8 @@ int rtw_IOL_append_DELAY_MS_cmd(struct xmit_frame *xmit_frame, u16 ms) } int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame) { - struct ioreg_cfg cmd = {4,IOREG_CMD_END,0xFFFF, 0xFF,0x0}; + struct ioreg_cfg cmd = {4,IOREG_CMD_END, cpu_to_le16(0xFFFF), + cpu_to_le32(0xFF), 0x0}; return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 4); } diff --git a/core/rtw_p2p.c b/core/rtw_p2p.c index 8233568..ce41c64 100755 --- a/core/rtw_p2p.c +++ b/core/rtw_p2p.c @@ -25,7 +25,7 @@ #ifdef CONFIG_P2P -int rtw_p2p_is_channel_list_ok( u8 desired_ch, u8* ch_list, u8 ch_cnt ) +static int rtw_p2p_is_channel_list_ok( u8 desired_ch, u8* ch_list, u8 ch_cnt ) { int found = 0, i = 0; @@ -40,7 +40,7 @@ int rtw_p2p_is_channel_list_ok( u8 desired_ch, u8* ch_list, u8 ch_cnt ) return( found ); } -int is_any_client_associated(struct adapter *padapter) +static int is_any_client_associated(struct adapter *padapter) { return padapter->stapriv.asoc_list_cnt ? true : false; } @@ -152,12 +152,12 @@ 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); unsigned char category = RTW_WLAN_CATEGORY_P2P;//P2P action frame - u32 p2poui = cpu_to_be32(P2POUI); + __be32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_GO_DISC_REQUEST; u8 dialogToken=0; @@ -211,14 +211,14 @@ 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); unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; - u8 action = P2P_PUB_ACTION_ACTION; - u32 p2poui = cpu_to_be32(P2POUI); - u8 oui_subtype = P2P_DEVDISC_RESP; + u8 action = P2P_PUB_ACTION_ACTION; + __be32 p2poui = cpu_to_be32(P2POUI); + u8 oui_subtype = P2P_DEVDISC_RESP; u8 p2pie[8] = { 0x00 }; u32 p2pielen = 0; @@ -285,7 +285,7 @@ static void issue_p2p_provision_resp(struct wifidirect_info *pwdinfo, u8* raddr, unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; u8 action = P2P_PUB_ACTION_ACTION; u8 dialogToken = frame_body[7]; // The Dialog Token of provisioning discovery request frame. - u32 p2poui = cpu_to_be32(P2POUI); + __be32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_PROVISION_DISC_RESP; u8 wpsie[ 100 ] = { 0x00 }; u8 wpsielen = 0; @@ -297,7 +297,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); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); @@ -381,12 +381,12 @@ 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); unsigned char category = RTW_WLAN_CATEGORY_P2P;//P2P action frame - u32 p2poui = cpu_to_be32(P2POUI); + __be32 p2poui = cpu_to_be32(P2POUI); u8 oui_subtype = P2P_PRESENCE_RESPONSE; u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; u8 noa_attr_content[32] = { 0x00 }; @@ -464,7 +464,7 @@ u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; u16 capability=0; u32 len=0, p2pielen = 0; - + __le16 le_tmp; // P2P OUI p2pielen = 0; @@ -492,28 +492,14 @@ u32 build_beacon_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_PROVISIONING_ING)) capability |= (P2P_GRPCAP_GROUP_FORMATION<<8); - capability = cpu_to_le16(capability); - - p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_CAPABILITY, 2, (u8*)&capability); + le_tmp = cpu_to_le16(capability); + p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_CAPABILITY, 2, (u8*)&le_tmp); // P2P Device ID ATTR p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_DEVICE_ID, ETH_ALEN, pwdinfo->device_addr); - - - // Notice of Absence ATTR - // Type: - // Length: - // Value: - - //go_add_noa_attr(pwdinfo); - - pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len); - - return len; - } #ifdef CONFIG_WFD @@ -2369,6 +2355,8 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l u32 ies_len; u8 * p2p_ie; u32 p2p_ielen = 0; + __le16 le_tmp; + __be16 be_tmp; if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) return P2P_STATUS_FAIL_REQUEST_UNABLE; @@ -2401,10 +2389,10 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l while ( p2p_ie ) { //Check P2P Capability ATTR - if( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*) &attr_contentlen) ) + if( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&le_tmp, (uint*) &attr_contentlen) ) { DBG_8192C( "[%s] Got P2P Capability Attr!!\n", __FUNCTION__ ); - cap_attr = le16_to_cpu(cap_attr); + cap_attr = le16_to_cpu(le_tmp); psta->dev_cap = cap_attr&0xff; } @@ -2416,20 +2404,18 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l { DBG_8192C( "[%s] Got P2P DEVICE INFO Attr!!\n", __FUNCTION__ ); pattr_content = pbuf = rtw_zmalloc(attr_contentlen); - if(pattr_content) - { + if(pattr_content) { u8 num_of_secdev_type; u16 dev_name_len; - 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 pattr_content += ETH_ALEN; - _rtw_memcpy(&psta->config_methods, pattr_content, 2);//Config Methods - psta->config_methods = be16_to_cpu(psta->config_methods); + memcpy(&be_tmp, pattr_content, 2);//Config Methods + psta->config_methods = be16_to_cpu(be_tmp); pattr_content += 2; @@ -2460,9 +2446,9 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l //dev_name_len = attr_contentlen - ETH_ALEN - 2 - 8 - 1 - (num_of_secdev_type*8); psta->dev_name_len=0; - if(WPS_ATTR_DEVICE_NAME == be16_to_cpu(*(u16*)pattr_content)) + if(WPS_ATTR_DEVICE_NAME == be16_to_cpu(*(__be16*)pattr_content)) { - dev_name_len = be16_to_cpu(*(u16*)(pattr_content+2)); + dev_name_len = be16_to_cpu(*(__be16*)(pattr_content+2)); psta->dev_name_len = (sizeof(psta->dev_name)dev_name):dev_name_len; @@ -2584,15 +2570,15 @@ u8 process_p2p_provdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint l u8 *wpsie; uint wps_ielen = 0, attr_contentlen = 0; u16 uconfig_method = 0; - + __be16 be_tmp; frame_body = (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); if ( (wpsie=rtw_get_wps_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &wps_ielen)) ) { - if ( rtw_get_wps_attr_content( wpsie, wps_ielen, WPS_ATTR_CONF_METHOD , ( u8* ) &uconfig_method, &attr_contentlen) ) + if ( rtw_get_wps_attr_content( wpsie, wps_ielen, WPS_ATTR_CONF_METHOD , ( u8 *)&be_tmp, &attr_contentlen) ) { - uconfig_method = be16_to_cpu( uconfig_method ); + uconfig_method = be16_to_cpu(be_tmp); switch( uconfig_method ) { case WPS_CM_DISPLYA: @@ -2630,7 +2616,7 @@ u8 process_p2p_provdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe) return true; } -u8 rtw_p2p_get_peer_ch_list(struct wifidirect_info *pwdinfo, u8 *ch_content, u8 ch_cnt, u8 *peer_ch_list) +static u8 rtw_p2p_get_peer_ch_list(struct wifidirect_info *pwdinfo, u8 *ch_content, u8 ch_cnt, u8 *peer_ch_list) { u8 i = 0, j = 0; u8 temp = 0; @@ -2655,7 +2641,7 @@ u8 rtw_p2p_get_peer_ch_list(struct wifidirect_info *pwdinfo, u8 *ch_content, u8 return ch_no; } -u8 rtw_p2p_check_peer_oper_ch(struct mlme_ext_priv *pmlmeext, u8 ch) +static u8 rtw_p2p_check_peer_oper_ch(struct mlme_ext_priv *pmlmeext, u8 ch) { u8 i = 0; @@ -2670,7 +2656,7 @@ u8 rtw_p2p_check_peer_oper_ch(struct mlme_ext_priv *pmlmeext, u8 ch) return _FAIL; } -u8 rtw_p2p_ch_inclusion(struct mlme_ext_priv *pmlmeext, u8 *peer_ch_list, u8 peer_ch_num, u8 *ch_list_inclusioned) +static u8 rtw_p2p_ch_inclusion(struct mlme_ext_priv *pmlmeext, u8 *peer_ch_list, u8 peer_ch_num, u8 *ch_list_inclusioned) { int i = 0, j = 0, temp = 0; u8 ch_no = 0; @@ -2715,6 +2701,7 @@ u8 process_p2p_group_negotation_req( struct wifidirect_info *pwdinfo, u8 *pframe struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; #endif + __be16 be_tmp; if ( (wpsie=rtw_get_wps_ie( pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &wps_ielen)) ) { @@ -2723,8 +2710,8 @@ u8 process_p2p_group_negotation_req( struct wifidirect_info *pwdinfo, u8 *pframe // We have to get peer_req_cm from here. if(_rtw_memcmp( pwdinfo->rx_prov_disc_info.strconfig_method_desc_of_prov_disc_req, "000", 3) ) { - rtw_get_wps_attr_content( wpsie, wps_ielen, WPS_ATTR_DEVICE_PWID, (u8*) &wps_devicepassword_id, &wps_devicepassword_id_len); - wps_devicepassword_id = be16_to_cpu( wps_devicepassword_id ); + rtw_get_wps_attr_content( wpsie, wps_ielen, WPS_ATTR_DEVICE_PWID, (u8*) &be_tmp, &wps_devicepassword_id_len); + wps_devicepassword_id = be16_to_cpu(be_tmp); if ( wps_devicepassword_id == WPS_DPID_USER_SPEC ) { @@ -2778,13 +2765,14 @@ u8 process_p2p_group_negotation_req( struct wifidirect_info *pwdinfo, u8 *pframe u8 ch_list_inclusioned[100] = { 0x00 }; u8 ch_num_inclusioned = 0; u16 cap_attr; + __le16 le_tmp; rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING); //Check P2P Capability ATTR - if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*)&attr_contentlen) ) + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&le_tmp, (uint*)&attr_contentlen) ) { - cap_attr = le16_to_cpu(cap_attr); + cap_attr = le16_to_cpu(le_tmp); #if defined(CONFIG_WFD) && defined(CONFIG_TDLS) if(!(cap_attr & P2P_GRPCAP_INTRABSS) ) @@ -2968,7 +2956,6 @@ u8 process_p2p_group_negotation_resp( struct wifidirect_info *pwdinfo, u8 *pfram } else { - u8 attr_content = 0x00; u32 attr_contentlen = 0; u8 operatingch_info[5] = { 0x00 }; @@ -2980,14 +2967,15 @@ u8 process_p2p_group_negotation_resp( struct wifidirect_info *pwdinfo, u8 *pfram u8 peer_ch_num = 0; u8 ch_list_inclusioned[100] = { 0x00 }; u8 ch_num_inclusioned = 0; + __le16 le_tmp; while ( p2p_ie ) // Found the P2P IE. { //Check P2P Capability ATTR - if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*)&attr_contentlen) ) + if(rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&le_tmp, (uint*)&attr_contentlen) ) { - cap_attr = le16_to_cpu(cap_attr); + cap_attr = le16_to_cpu(le_tmp); #ifdef CONFIG_TDLS if(!(cap_attr & P2P_GRPCAP_INTRABSS) ) ptdlsinfo->ap_prohibited = true; @@ -3303,7 +3291,7 @@ u8 process_p2p_presence_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint le return true; } -void find_phase_handler( struct adapter* padapter ) +static void find_phase_handler( struct adapter* padapter ) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -3311,7 +3299,6 @@ void find_phase_handler( struct adapter* padapter ) _irqL irqL; u8 _status = 0; -; _rtw_memset((unsigned char*)&ssid, 0, sizeof(NDIS_802_11_SSID)); _rtw_memcpy(ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN ); @@ -3324,17 +3311,15 @@ void find_phase_handler( struct adapter* padapter ) _exit_critical_bh(&pmlmepriv->lock, &irqL); -; } void p2p_concurrent_handler( struct adapter* padapter ); -void restore_p2p_state_handler( struct adapter* padapter ) +static void restore_p2p_state_handler( struct adapter* padapter ) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; -; if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_ING) || rtw_p2p_chk_state(pwdinfo, P2P_STATE_GONEGO_FAIL)) { @@ -3369,49 +3354,39 @@ void restore_p2p_state_handler( struct adapter* padapter ) set_channel_bwmode( padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); #endif } -; } -void pre_tx_invitereq_handler( struct adapter* padapter ) +static void pre_tx_invitereq_handler( struct adapter* padapter ) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; u8 val8 = 1; -; set_channel_bwmode(padapter, pwdinfo->invitereq_info.peer_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); padapter->HalFunc.SetHwRegHandler(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); issue_probereq_p2p(padapter, NULL); _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); - -; } -void pre_tx_provdisc_handler( struct adapter* padapter ) +static void pre_tx_provdisc_handler( struct adapter* padapter ) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; u8 val8 = 1; -; set_channel_bwmode(padapter, pwdinfo->tx_prov_disc_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); issue_probereq_p2p(padapter, NULL); _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); - -; } -void pre_tx_negoreq_handler( struct adapter* padapter ) +static void pre_tx_negoreq_handler( struct adapter* padapter ) { struct wifidirect_info *pwdinfo = &padapter->wdinfo; u8 val8 = 1; -; set_channel_bwmode(padapter, pwdinfo->nego_req_info.peer_channel_num[0], HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8)); issue_probereq_p2p(padapter, NULL); _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); - -; } #ifdef CONFIG_CONCURRENT_MODE @@ -3423,7 +3398,6 @@ void p2p_concurrent_handler( struct adapter* padapter ) //struct mlme_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv; //struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; u8 val8; -; if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) { @@ -3530,7 +3504,6 @@ void p2p_concurrent_handler( struct adapter* padapter ) set_channel_bwmode( padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); } -; } #endif @@ -3541,7 +3514,6 @@ static void ro_ch_handler(struct adapter *padapter) struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; u8 ch, bw, offset; -; if (rtw_get_ch_setting_union(padapter, &ch, &bw, &offset) != 0) { if (0) @@ -3581,7 +3553,6 @@ static void ro_ch_handler(struct adapter *padapter) &pcfg80211_wdinfo->remain_on_ch_channel, pcfg80211_wdinfo->remain_on_ch_type, GFP_KERNEL); -; } static void ro_ch_timer_process (void *FunctionContext) @@ -3926,7 +3897,7 @@ void rtw_append_wfd_ie(struct adapter *padapter, u8 *buf, u32* len) } #endif -u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len) +static u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len) { uint attr_contentlen = 0; u8 *pattr = NULL; @@ -3979,7 +3950,7 @@ u8 *dump_p2p_attr_ch_list(u8 *p2p_ie, uint p2p_ielen, u8 *buf, u32 buf_len) /* * return true if requester is GO, false if responder is GO */ -bool rtw_p2p_nego_intent_compare(u8 req, u8 resp) +static bool rtw_p2p_nego_intent_compare(u8 req, u8 resp) { if (req>>1 == resp >>1) return req&0x01 ? true : false; @@ -4373,7 +4344,6 @@ void p2p_protocol_wk_hdl(struct adapter *padapter, int intCmdType) { struct wifidirect_info *pwdinfo= &(padapter->wdinfo); -; switch(intCmdType) { @@ -4454,7 +4424,6 @@ void p2p_protocol_wk_hdl(struct adapter *padapter, int intCmdType) } -; } #ifdef CONFIG_P2P_PS @@ -4471,7 +4440,6 @@ void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength) u8 find_p2p = false, find_p2p_ps = false; u8 noa_offset, noa_num, noa_index; -; if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) { @@ -4566,7 +4534,6 @@ void process_p2p_ps_ie(struct adapter *padapter, u8 *IEs, u32 IELength) } } -; } void p2p_ps_wk_hdl(struct adapter *padapter, u8 p2p_ps_state) @@ -4574,7 +4541,6 @@ void p2p_ps_wk_hdl(struct adapter *padapter, u8 p2p_ps_state) struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); struct wifidirect_info *pwdinfo= &(padapter->wdinfo); -; // Pre action for p2p state switch(p2p_ps_state) @@ -4626,7 +4592,6 @@ void p2p_ps_wk_hdl(struct adapter *padapter, u8 p2p_ps_state) break; } -; } u8 p2p_ps_wk_cmd(struct adapter*padapter, u8 p2p_ps_state, u8 enqueue) @@ -4637,7 +4602,6 @@ u8 p2p_ps_wk_cmd(struct adapter*padapter, u8 p2p_ps_state, u8 enqueue) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; -; if ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) #ifdef CONFIG_CONCURRENT_MODE @@ -4670,15 +4634,12 @@ u8 p2p_ps_wk_cmd(struct adapter*padapter, u8 p2p_ps_state, u8 enqueue) init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); res = rtw_enqueue_cmd(pcmdpriv, ph2c); - } - else - { + } else { p2p_ps_wk_hdl(padapter, p2p_ps_state); } exit: -; return res; diff --git a/core/rtw_recv.c b/core/rtw_recv.c index cf59ef4..73abdeb 100755 --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -693,7 +693,6 @@ union recv_frame * decryptor(struct adapter *padapter,union recv_frame *precv_fr } //###set the security information in the recv_frame -union recv_frame * portctrl(struct adapter *adapter,union recv_frame * precv_frame); union recv_frame * portctrl(struct adapter *adapter,union recv_frame * precv_frame) { u8 *psta_addr, *ptr; @@ -705,7 +704,7 @@ union recv_frame * portctrl(struct adapter *adapter,union recv_frame * precv_fra u16 ether_type=0; u16 eapol_type = 0x888e;//for Funia BD's WPA issue struct rx_pkt_attrib *pattrib; - + __be16 be_tmp; ; pstapriv = &adapter->stapriv; @@ -735,8 +734,8 @@ union recv_frame * portctrl(struct adapter *adapter,union recv_frame * precv_fra //get ether_type ptr=ptr+pfhdr->attrib.hdrlen+pfhdr->attrib.iv_len+LLC_HEADER_SIZE; - _rtw_memcpy(ðer_type,ptr, 2); - ether_type= ntohs((unsigned short )ether_type); + memcpy(&be_tmp, ptr, 2); + ether_type= ntohs(be_tmp); if (ether_type == eapol_type) { prtnframe=precv_frame; @@ -2261,7 +2260,7 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe) u8 bsnaphdr; u8 *psnap_type; struct ieee80211_snap_hdr *psnap; - + __be16 be_tmp; sint ret=_SUCCESS; struct adapter *adapter =precvframe->u.hdr.adapter; struct mlme_priv *pmlmepriv = &adapter->mlmepriv; @@ -2297,8 +2296,8 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe) 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(ð_type, ptr+rmv_len, 2); - eth_type= ntohs((unsigned short )eth_type); //pattrib->ether_type + memcpy(&be_tmp, ptr+rmv_len, 2); + eth_type= ntohs(be_tmp); //pattrib->ether_type pattrib->eth_type = eth_type; if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == true)) @@ -2310,7 +2309,7 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe) 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 { @@ -2321,8 +2320,8 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe) _rtw_memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN); if(!bsnaphdr) { - len = htons(len); - _rtw_memcpy(ptr+12, &len, 2); + be_tmp = htons(len); + _rtw_memcpy(ptr+12, &be_tmp, 2); } ; @@ -2799,12 +2798,12 @@ int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe) _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN); _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN); } else { - u16 len; + __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 */ diff --git a/core/rtw_security.c b/core/rtw_security.c index ff42cad..122ef60 100755 --- a/core/rtw_security.c +++ b/core/rtw_security.c @@ -139,7 +139,7 @@ exit: ; } -static u32 getcrc32(u8 *buf, sint len) +static __le32 getcrc32(u8 *buf, sint len) { u8 *p; u32 crc; @@ -153,7 +153,7 @@ static u32 getcrc32(u8 *buf, sint len) crc = crc32_table[ (crc ^ *p) & 0xff] ^ (crc >> 8); } ; - return ~crc; /* transmit complement, per CRC-32 spec */ + return cpu_to_le32(~crc); /* transmit complement, per CRC-32 spec */ } @@ -212,7 +212,7 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe) length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len- pattrib->icv_len; - *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length)); + *((__le32 *)crc)=getcrc32(payload,length); arcfour_init(&mycontext, wepkey,3+keylength); arcfour_encrypt(&mycontext, payload, payload, length); @@ -222,7 +222,7 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe) else { length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; - *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length)); + *((__le32 *)crc)=getcrc32(payload,length); arcfour_init(&mycontext, wepkey,3+keylength); arcfour_encrypt(&mycontext, payload, payload, length); arcfour_encrypt(&mycontext, payload+length, crc, 4); @@ -275,7 +275,7 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe) arcfour_encrypt(&mycontext, payload, payload, length); //calculate icv and compare the icv - *((u32 *)crc)=le32_to_cpu(getcrc32(payload,length-4)); + *((__le32 *)crc)=getcrc32(payload,length-4); if(crc[3]!=payload[length-1] || crc[2]!=payload[length-2] || crc[1]!=payload[length-3] || crc[0]!=payload[length-4]) { @@ -734,7 +734,7 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe) if((curfragnum+1)==pattrib->nr_frags){ //4 the last fragment length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len- pattrib->icv_len; RT_TRACE(_module_rtl871x_security_c_,_drv_info_,("pattrib->iv_len =%x, pattrib->icv_len =%x\n", pattrib->iv_len,pattrib->icv_len)); - *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length));/* modified by Amy*/ + *((__le32 *)crc)=getcrc32(payload,length);/* modified by Amy*/ arcfour_init(&mycontext, rc4key,16); arcfour_encrypt(&mycontext, payload, payload, length); @@ -743,7 +743,7 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe) } else{ length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; - *((u32 *)crc)=cpu_to_le32(getcrc32(payload,length));/* modified by Amy*/ + *((__le32 *)crc)=getcrc32(payload,length);/* modified by Amy*/ arcfour_init(&mycontext,rc4key,16); arcfour_encrypt(&mycontext, payload, payload, length); arcfour_encrypt(&mycontext, payload+length, crc, 4); @@ -866,7 +866,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe) arcfour_init(&mycontext, rc4key,16); arcfour_encrypt(&mycontext, payload, payload, length); - *((u32 *)crc)=le32_to_cpu(getcrc32(payload,length-4)); + *((__le32 *)crc)=getcrc32(payload,length-4); if(crc[3]!=payload[length-1] || crc[2]!=payload[length-2] || crc[1]!=payload[length-3] || crc[0]!=payload[length-4]) { @@ -2896,7 +2896,7 @@ static int omac1_aes_128_vector(u8 *key, size_t num_elem, * OMAC1 was standardized with the name CMAC by NIST in a Special Publication * (SP) 800-38B. */ //modify for CONFIG_IEEE80211W -int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac) +static int omac1_aes_128(u8 *key, u8 *data, size_t data_len, u8 *mac) { return omac1_aes_128_vector(key, 1, &data, &data_len, mac); } diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index d92ad48..9b8a8b6 100755 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -1150,8 +1150,8 @@ void HT_caps_handler(struct adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE) // Commented by Albert 2010/07/12 // Have to handle the endian issue after copying. // HT_ext_caps didn't be used yet. - pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = le16_to_cpu( pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info ); - pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps = le16_to_cpu( pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps ); + pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info = pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info; + pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps = pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps; rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); @@ -1378,7 +1378,7 @@ int rtw_check_bcn_info(struct adapter *Adapter, u8 *pframe, u32 packet_len) p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_); if(p && len>0) { pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2); - ht_cap_info = pht_cap->cap_info; + ht_cap_info = le16_to_cpu(pht_cap->cap_info); } else { ht_cap_info = 0; } @@ -1845,14 +1845,10 @@ int support_short_GI(struct adapter *padapter, struct HT_caps_element *pHT_caps) bit_offset = (pmlmeext->cur_bwmode & HT_CHANNEL_WIDTH_40)? 6: 5; - if (pHT_caps->u.HT_cap_element.HT_caps_info & (0x1 << bit_offset)) - { + if (le16_to_cpu(pHT_caps->u.HT_cap_element.HT_caps_info) & (0x1 << bit_offset)) return _SUCCESS; - } else - { return _FAIL; - } } unsigned char get_highest_rate_idx(u32 mask) @@ -2202,10 +2198,6 @@ void update_wireless_mode(struct adapter *padapter) update_mgnt_tx_rate(padapter, IEEE80211_OFDM_RATE_6MB); } -void fire_write_MAC_cmd(struct adapter *padapter, unsigned int addr, unsigned int value) -{ -} - void update_bmc_sta_support_rate(struct adapter *padapter, u32 mac_id) { struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); @@ -2288,10 +2280,10 @@ void process_addba_req(struct adapter *padapter, u8 *paddba_req, u8 *addr) void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len) { u8* pIE; - u32 *pbuf; + __le32 *pbuf; pIE = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); - pbuf = (u32*)pIE; + pbuf = (__le32 *)pIE; pmlmeext->TSFValue = le32_to_cpu(*(pbuf+1)); @@ -2302,7 +2294,7 @@ void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len) void correct_TSF(struct adapter *padapter, struct mlme_ext_priv *pmlmeext) { - rtw_hal_set_hwreg(padapter, HW_VAR_CORRECT_TSF, 0); + rtw_hal_set_hwreg(padapter, HW_VAR_CORRECT_TSF, NULL); } void beacon_timing_control(struct adapter *padapter) diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index 541ed32..ff595ab 100755 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -28,6 +28,7 @@ #include #include #include +#include "rtw_br_ext.h" static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 }; static u8 RFC1042_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0x00 }; @@ -1126,7 +1127,7 @@ s32 rtw_make_wlanhdr (struct adapter *padapter , u8 *hdr, struct pkt_attrib *pat #endif //CONFIG_TDLS sint res = _SUCCESS; - u16 *fctrl = &pwlanhdr->frame_ctl; + __le16 *fctrl = &pwlanhdr->frame_ctl; struct sta_info *psta; @@ -2167,10 +2168,7 @@ s32 rtw_put_snap(u8 *data, u16 h_proto) snap->oui[1] = oui[1]; snap->oui[2] = oui[2]; - *(u16 *)(data + SNAP_SIZE) = htons(h_proto); - -; - + *(__be16 *)(data + SNAP_SIZE) = htons(h_proto); return SNAP_SIZE + sizeof(u16); } @@ -2430,7 +2428,7 @@ s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) return _SUCCESS; } -void rtw_init_xmitframe(struct xmit_frame *pxframe) +static void rtw_init_xmitframe(struct xmit_frame *pxframe) { if (pxframe != NULL)//default value setting { @@ -2980,7 +2978,7 @@ void rtw_init_hwxmits(struct hw_xmit *phwxmit, sint entry) } #ifdef CONFIG_BR_EXT -int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) +static int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) { struct sk_buff *skb = *pskb; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; @@ -3005,8 +3003,8 @@ int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) if ( !(skb->data[0] & 1) && br_port && memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) && - *((unsigned short *)(skb->data+MACADDRLEN*2)) != __constant_htons(ETH_P_8021Q) && - *((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP) && + *((__be16 *)(skb->data+MACADDRLEN*2)) != __constant_htons(ETH_P_8021Q) && + *((__be16 *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP) && !memcmp(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN) && padapter->scdb_entry) { memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN); padapter->scdb_entry->ageing_timer = jiffies; @@ -3018,7 +3016,7 @@ int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) // if (priv->dev->br_port && // !memcmp(skb->data+MACADDRLEN, priv->br_mac, MACADDRLEN)) { #if 1 - if (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_8021Q)) { + if (*((__be16 *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_8021Q)) { is_vlan_tag = 1; vlan_hdr = *((unsigned short *)(skb->data+MACADDRLEN*2+2)); for (i=0; i<6; i++) @@ -3027,13 +3025,11 @@ int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) } //if SA == br_mac && skb== IP => copy SIP to br_ip ?? why if (!memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) && - (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP))) + (*((__be16 *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP))) memcpy(padapter->br_ip, skb->data+WLAN_ETHHDR_LEN+12, 4); - if (*((unsigned short *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP)) { + if (*((__be16 *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP)) { if (memcmp(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN)) { - void *scdb_findEntry(struct adapter *priv, unsigned char *macAddr, unsigned char *ipAddr); - if ((padapter->scdb_entry = (struct nat25_network_db_entry *)scdb_findEntry(padapter, skb->data+MACADDRLEN, skb->data+WLAN_ETHHDR_LEN+12)) != NULL) { memcpy(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN); @@ -3065,7 +3061,7 @@ int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) skb_push(skb, 4); for (i=0; i<6; i++) *((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); - *((unsigned short *)(skb->data+MACADDRLEN*2)) = __constant_htons(ETH_P_8021Q); + *((__be16 *)(skb->data+MACADDRLEN*2)) = __constant_htons(ETH_P_8021Q); *((unsigned short *)(skb->data+MACADDRLEN*2+2)) = vlan_hdr; } @@ -3126,7 +3122,7 @@ int rtw_br_client_tx(struct adapter *padapter, struct sk_buff **pskb) skb_push(skb, 4); for (i=0; i<6; i++) *((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); - *((unsigned short *)(skb->data+MACADDRLEN*2)) = __constant_htons(ETH_P_8021Q); + *((__be16 *)(skb->data+MACADDRLEN*2)) = __constant_htons(ETH_P_8021Q); *((unsigned short *)(skb->data+MACADDRLEN*2+2)) = vlan_hdr; } } @@ -4090,7 +4086,7 @@ int rtw_sctx_wait(struct submit_ctx *sctx) return ret; } -bool rtw_sctx_chk_waring_status(int status) +static bool rtw_sctx_chk_waring_status(int status) { switch(status) { case RTW_SCTX_DONE_UNKNOWN: diff --git a/hal/odm_types.h b/hal/odm_types.h index 4b0001b..3873584 100755 --- a/hal/odm_types.h +++ b/hal/odm_types.h @@ -72,9 +72,12 @@ typedef void * RT_TIMER_CALL_BACK; #define FALSE false -#define SET_TX_DESC_ANTSEL_A_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 24, 1, __Value) -#define SET_TX_DESC_ANTSEL_B_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 25, 1, __Value) -#define SET_TX_DESC_ANTSEL_C_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 29, 1, __Value) +#define SET_TX_DESC_ANTSEL_A_88E(__pTxDesc, __Value) \ + SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 24, 1, __Value) +#define SET_TX_DESC_ANTSEL_B_88E(__pTxDesc, __Value) \ + SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 25, 1, __Value) +#define SET_TX_DESC_ANTSEL_C_88E(__pTxDesc, __Value) \ + SET_BITS_TO_LE_4BYTE(__pTxDesc+28, 29, 1, __Value) //define useless flag to avoid compile warning #define USE_WORKITEM 0 diff --git a/hal/rtl8188e_cmd.c b/hal/rtl8188e_cmd.c index f348022..d22ab2c 100755 --- a/hal/rtl8188e_cmd.c +++ b/hal/rtl8188e_cmd.c @@ -30,6 +30,7 @@ #include #include +#include #define CONFIG_H2C_EF @@ -170,38 +171,6 @@ exit: return ret; } -u8 rtl8192c_h2c_msg_hdl(struct adapter *padapter, unsigned char *pbuf) -{ - u8 ElementID, CmdLen; - u8 *pCmdBuffer; - struct cmd_msg_parm *pcmdmsg; - - if(!pbuf) - return H2C_PARAMETERS_ERROR; - - pcmdmsg = (struct cmd_msg_parm*)pbuf; - ElementID = pcmdmsg->eid; - CmdLen = pcmdmsg->sz; - pCmdBuffer = pcmdmsg->buf; - - FillH2CCmd_88E(padapter, ElementID, CmdLen, pCmdBuffer); - - return H2C_SUCCESS; -} -/* -#if defined(CONFIG_AUTOSUSPEND) && defined(SUPPORT_HW_RFOFF_DETECTED) -u8 rtl8192c_set_FwSelectSuspend_cmd(struct adapter *padapter ,u8 bfwpoll, u16 period) -{ - u8 res=_SUCCESS; - struct H2C_SS_RFOFF_PARAM param; - DBG_8192C("==>%s bfwpoll(%x)\n",__FUNCTION__,bfwpoll); - param.gpio_period = period;//Polling GPIO_11 period time - param.ROFOn = (true == bfwpoll)?1:0; - FillH2CCmd_88E(padapter, SELECTIVE_SUSPEND_ROF_CMD, sizeof(param), (u8*)(¶m)); - return res; -} -#endif //CONFIG_AUTOSUSPEND && SUPPORT_HW_RFOFF_DETECTED -*/ u8 rtl8188e_set_rssi_cmd(struct adapter*padapter, u8 *param) { u8 res=_SUCCESS; @@ -213,9 +182,6 @@ u8 rtl8188e_set_rssi_cmd(struct adapter*padapter, u8 *param) DBG_8192C("==>%s fw dont support RA \n",__FUNCTION__); res=_FAIL; } - -; - return res; } @@ -226,20 +192,18 @@ u8 rtl8188e_set_raid_cmd(struct adapter*padapter, u32 mask) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); ; if(pHalData->fw_ractrl == true){ + __le32 lmask; + _rtw_memset(buf, 0, 3); - mask = cpu_to_le32( mask ); - _rtw_memcpy(buf, &mask, 3); + lmask = cpu_to_le32( mask ); + _rtw_memcpy(buf, &lmask, 3); FillH2CCmd_88E(padapter, H2C_DM_MACID_CFG, 3, buf); }else{ DBG_8192C("==>%s fw dont support RA \n",__FUNCTION__); res=_FAIL; } - -; - return res; - } //bitmap[0:27] = tx_rate_bitmap @@ -354,10 +318,10 @@ void rtl8188e_set_FwPwrMode_cmd(struct adapter *padapter, u8 Mode) ; } -void rtl8188e_set_FwMediaStatus_cmd(struct adapter *padapter, u16 mstatus_rpt ) +void rtl8188e_set_FwMediaStatus_cmd(struct adapter *padapter, __le16 mstatus_rpt ) { u8 opmode,macid; - u16 mst_rpt = cpu_to_le16 (mstatus_rpt); + u16 mst_rpt = le16_to_cpu(mstatus_rpt); u32 reg_macid_no_link = REG_MACID_NO_LINK_0; opmode = (u8) mst_rpt; macid = (u8)(mst_rpt >> 8) ; @@ -383,11 +347,11 @@ void rtl8188e_set_FwMediaStatus_cmd(struct adapter *padapter, u16 mstatus_rpt ) } -void ConstructBeacon(struct adapter *padapter, u8 *pframe, u32 *pLength) +static void ConstructBeacon(struct adapter *padapter, u8 *pframe, u32 *pLength) { struct rtw_ieee80211_hdr *pwlanhdr; - u16 *fctrl; - u32 rate_len, pktlen; + __le16 *fctrl; + u32 rate_len, pktlen; struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); @@ -485,11 +449,11 @@ _ConstructBeacon: } -void ConstructPSPoll(struct adapter *padapter, u8 *pframe, u32 *pLength) +static void ConstructPSPoll(struct adapter *padapter, u8 *pframe, u32 *pLength) { struct rtw_ieee80211_hdr *pwlanhdr; - u16 *fctrl; - u32 pktlen; + __le16 *fctrl; + u32 pktlen; struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); @@ -515,7 +479,7 @@ void ConstructPSPoll(struct adapter *padapter, u8 *pframe, u32 *pLength) *pLength = 16; } -void ConstructNullFunctionData( +static void ConstructNullFunctionData( struct adapter *padapter, u8 *pframe, u32 *pLength, @@ -526,8 +490,8 @@ void ConstructNullFunctionData( u8 bForcePowerSave) { struct rtw_ieee80211_hdr *pwlanhdr; - u16 *fctrl; - u32 pktlen; + __le16 *fctrl; + u32 pktlen; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct wlan_network *cur_network = &pmlmepriv->cur_network; struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); @@ -588,46 +552,6 @@ void ConstructNullFunctionData( *pLength = pktlen; } -void ConstructProbeRsp(struct adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, BOOLEAN bHideSSID) -{ - struct rtw_ieee80211_hdr *pwlanhdr; - u16 *fctrl; - u8 *mac, *bssid; - u32 pktlen; - struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); - struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); - - - //DBG_871X("%s\n", __FUNCTION__); - - pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; - - mac = myid(&(padapter->eeprompriv)); - bssid = cur_network->MacAddress; - - fctrl = &(pwlanhdr->frame_ctl); - *(fctrl) = 0; - _rtw_memcpy(pwlanhdr->addr1, StaAddr, ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr2, mac, ETH_ALEN); - _rtw_memcpy(pwlanhdr->addr3, bssid, ETH_ALEN); - - SetSeqNum(pwlanhdr, 0); - SetFrameSubType(fctrl, WIFI_PROBERSP); - - pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); - pframe += pktlen; - - if(cur_network->IELength>MAX_IE_SZ) - return; - - _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); - pframe += cur_network->IELength; - pktlen += cur_network->IELength; - - *pLength = pktlen; -} - #ifdef CONFIG_WOWLAN // // Description: @@ -786,7 +710,7 @@ static void ConstructARPResponse( } #endif -void rtl8188e_set_FwRsvdPage_cmd(struct adapter *padapter, PRSVDPAGE_LOC rsvdpageloc) +static void rtl8188e_set_FwRsvdPage_cmd(struct adapter *padapter, PRSVDPAGE_LOC rsvdpageloc) { u8 u1H2CRsvdPageParm[H2C_8188E_RSVDPAGE_LOC_LEN]={0}; u8 u1H2CAoacRsvdPageParm[H2C_8188E_AOAC_RSVDPAGE_LOC_LEN]={0}; diff --git a/hal/rtl8188e_dm.c b/hal/rtl8188e_dm.c index 2ac2177..6f97bf5 100755 --- a/hal/rtl8188e_dm.c +++ b/hal/rtl8188e_dm.c @@ -166,7 +166,7 @@ static void Init_ODM_ComInfo_88E(struct adapter *Adapter) ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_FAB_VER,fab_ver); ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_CUT_VER,cut_ver); - ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_MP_TEST_CHIP,IS_NORMAL_CHIP(pHalData->VersionID)); + ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_MP_TEST_CHIP,IS_NORMAL_CHIP(pHalData->VersionID)); ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_PATCH_ID,pHalData->CustomerID); // ODM_CMNINFO_BINHCT_TEST only for MP Team diff --git a/hal/rtl8188e_hal_init.c b/hal/rtl8188e_hal_init.c index 8617c30..c30c464 100755 --- a/hal/rtl8188e_hal_init.c +++ b/hal/rtl8188e_hal_init.c @@ -2987,14 +2987,11 @@ Hal_EfuseParseIDCode88E( // Checl 0x8129 again for making sure autoload status!! - EEPROMId = le16_to_cpu(*((u16*)hwinfo)); - if (EEPROMId != RTL_EEPROM_ID) - { + EEPROMId = le16_to_cpu(*((__le16*)hwinfo)); + if (EEPROMId != RTL_EEPROM_ID) { DBG_8192C("EEPROM ID(%#x) is invalid!!\n", EEPROMId); pEEPROM->bautoload_fail_flag = true; - } - else - { + } else { pEEPROM->bautoload_fail_flag = false; } diff --git a/hal/rtl8188e_rxdesc.c b/hal/rtl8188e_rxdesc.c index ca1d1bc..e0f2dd5 100755 --- a/hal/rtl8188e_rxdesc.c +++ b/hal/rtl8188e_rxdesc.c @@ -190,70 +190,66 @@ void update_recvframe_attrib_88e( //phdr = &precvframe->u.hdr; - report.rxdw0 = le32_to_cpu(prxstat->rxdw0); - report.rxdw1 = le32_to_cpu(prxstat->rxdw1); - report.rxdw2 = le32_to_cpu(prxstat->rxdw2); - report.rxdw3 = le32_to_cpu(prxstat->rxdw3); - report.rxdw4 = le32_to_cpu(prxstat->rxdw4); - report.rxdw5 = le32_to_cpu(prxstat->rxdw5); + report.rxdw0 = prxstat->rxdw0; + report.rxdw1 = prxstat->rxdw1; + report.rxdw2 = prxstat->rxdw2; + report.rxdw3 = prxstat->rxdw3; + report.rxdw4 = prxstat->rxdw4; + report.rxdw5 = prxstat->rxdw5; prxreport = (PRXREPORT)&report; pattrib = &precvframe->u.hdr.attrib; _rtw_memset(pattrib, 0, sizeof(struct rx_pkt_attrib)); - pattrib->crc_err = (u8)((report.rxdw0 >> 14) & 0x1);;//(u8)prxreport->crc32; + pattrib->crc_err = (u8)((le32_to_cpu(report.rxdw0) >> 14) & 0x1);;//(u8)prxreport->crc32; // update rx report to recv_frame attribute - pattrib->pkt_rpt_type = (u8)((report.rxdw3 >> 14) & 0x3);//prxreport->rpt_sel; + pattrib->pkt_rpt_type = (u8)((le32_to_cpu(report.rxdw3) >> 14) & 0x3);//prxreport->rpt_sel; if(pattrib->pkt_rpt_type == NORMAL_RX)//Normal rx packet { - pattrib->pkt_len = (u16)(report.rxdw0 &0x00003fff);//(u16)prxreport->pktlen; - pattrib->drvinfo_sz = (u8)((report.rxdw0 >> 16) & 0xf) * 8;//(u8)(prxreport->drvinfosize << 3); + pattrib->pkt_len = (u16)(le32_to_cpu(report.rxdw0) &0x00003fff);//(u16)prxreport->pktlen; + pattrib->drvinfo_sz = (u8)((le32_to_cpu(report.rxdw0) >> 16) & 0xf) * 8;//(u8)(prxreport->drvinfosize << 3); - pattrib->physt = (u8)((report.rxdw0 >> 26) & 0x1);//(u8)prxreport->physt; + pattrib->physt = (u8)((le32_to_cpu(report.rxdw0) >> 26) & 0x1);//(u8)prxreport->physt; - pattrib->bdecrypted = (report.rxdw0 & BIT(27))? 0:1;//(u8)(prxreport->swdec ? 0 : 1); - pattrib->encrypt = (u8)((report.rxdw0 >> 20) & 0x7);//(u8)prxreport->security; + pattrib->bdecrypted = (le32_to_cpu(report.rxdw0) & BIT(27))? 0:1;//(u8)(prxreport->swdec ? 0 : 1); + pattrib->encrypt = (u8)((le32_to_cpu(report.rxdw0) >> 20) & 0x7);//(u8)prxreport->security; - pattrib->qos = (u8)((report.rxdw0 >> 23) & 0x1);//(u8)prxreport->qos; - pattrib->priority = (u8)((report.rxdw1 >> 8) & 0xf);//(u8)prxreport->tid; + pattrib->qos = (u8)((le32_to_cpu(report.rxdw0) >> 23) & 0x1);//(u8)prxreport->qos; + pattrib->priority = (u8)((le32_to_cpu(report.rxdw1) >> 8) & 0xf);//(u8)prxreport->tid; - pattrib->amsdu = (u8)((report.rxdw1 >> 13) & 0x1);//(u8)prxreport->amsdu; + pattrib->amsdu = (u8)((le32_to_cpu(report.rxdw1) >> 13) & 0x1);//(u8)prxreport->amsdu; - pattrib->seq_num = (u16)(report.rxdw2 & 0x00000fff);//(u16)prxreport->seq; - pattrib->frag_num = (u8)((report.rxdw2 >> 12) & 0xf);//(u8)prxreport->frag; - pattrib->mfrag = (u8)((report.rxdw1 >> 27) & 0x1);//(u8)prxreport->mf; - pattrib->mdata = (u8)((report.rxdw1 >> 26) & 0x1);//(u8)prxreport->md; + pattrib->seq_num = (u16)(le32_to_cpu(report.rxdw2) & 0x00000fff);//(u16)prxreport->seq; + pattrib->frag_num = (u8)((le32_to_cpu(report.rxdw2) >> 12) & 0xf);//(u8)prxreport->frag; + pattrib->mfrag = (u8)((le32_to_cpu(report.rxdw1) >> 27) & 0x1);//(u8)prxreport->mf; + pattrib->mdata = (u8)((le32_to_cpu(report.rxdw1) >> 26) & 0x1);//(u8)prxreport->md; - pattrib->mcs_rate = (u8)(report.rxdw3 & 0x3f);//(u8)prxreport->rxmcs; - pattrib->rxht = (u8)((report.rxdw3 >> 6) & 0x1);//(u8)prxreport->rxht; + pattrib->mcs_rate = (u8)(le32_to_cpu(report.rxdw3) & 0x3f);//(u8)prxreport->rxmcs; + pattrib->rxht = (u8)((le32_to_cpu(report.rxdw3) >> 6) & 0x1);//(u8)prxreport->rxht; - pattrib->icv_err = (u8)((report.rxdw0 >> 15) & 0x1);//(u8)prxreport->icverr; - pattrib->shift_sz = (u8)((report.rxdw0 >> 24) & 0x3); + pattrib->icv_err = (u8)((le32_to_cpu(report.rxdw0) >> 15) & 0x1);//(u8)prxreport->icverr; + pattrib->shift_sz = (u8)((le32_to_cpu(report.rxdw0) >> 24) & 0x3); - } - else if(pattrib->pkt_rpt_type == TX_REPORT1)//CCX - { + } else if(pattrib->pkt_rpt_type == TX_REPORT1) {//CCX pattrib->pkt_len = TX_RPT1_PKT_LEN; pattrib->drvinfo_sz = 0; - } - else if(pattrib->pkt_rpt_type == TX_REPORT2)// TX RPT - { - pattrib->pkt_len =(u16)(report.rxdw0 & 0x3FF);//Rx length[9:0] + } else if(pattrib->pkt_rpt_type == TX_REPORT2) { // TX RPT + pattrib->pkt_len =(u16)(le32_to_cpu(report.rxdw0) & 0x3FF);//Rx length[9:0] pattrib->drvinfo_sz = 0; // // Get TX report MAC ID valid. // - pattrib->MacIDValidEntry[0] = report.rxdw4; - pattrib->MacIDValidEntry[1] = report.rxdw5; + pattrib->MacIDValidEntry[0] = le32_to_cpu(report.rxdw4); + pattrib->MacIDValidEntry[1] = le32_to_cpu(report.rxdw5); } else if(pattrib->pkt_rpt_type == HIS_REPORT)// USB HISR RPT { - pattrib->pkt_len = (u16)(report.rxdw0 &0x00003fff);//(u16)prxreport->pktlen; + pattrib->pkt_len = (u16)(le32_to_cpu(report.rxdw0) &0x00003fff);//(u16)prxreport->pktlen; } } diff --git a/hal/rtl8188eu_xmit.c b/hal/rtl8188eu_xmit.c index 823a26e..2f26b6b 100755 --- a/hal/rtl8188eu_xmit.c +++ b/hal/rtl8188eu_xmit.c @@ -47,7 +47,7 @@ void rtl8188eu_free_xmit_priv(struct adapter *padapter) { } -u8 urb_zero_packet_chk(struct adapter *padapter, int sz) +static u8 urb_zero_packet_chk(struct adapter *padapter, int sz) { u8 blnSetTxDescOffset; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); @@ -56,7 +56,7 @@ u8 urb_zero_packet_chk(struct adapter *padapter, int sz) return blnSetTxDescOffset; } -void rtl8188eu_cal_txdesc_chksum(struct tx_desc *ptxdesc) +static void rtl8188eu_cal_txdesc_chksum(struct tx_desc *ptxdesc) { u16 *usPtr = (u16*)ptxdesc; u32 count = 16; // (32 bytes / 2 bytes per XOR) => 16 times @@ -67,7 +67,7 @@ void rtl8188eu_cal_txdesc_chksum(struct tx_desc *ptxdesc) ptxdesc->txdw7 &= cpu_to_le32(0xffff0000); for(index = 0 ; index < count ; index++){ - checksum = checksum ^ le16_to_cpu(*(usPtr + index)); + checksum = checksum ^ le16_to_cpu(*(__le16 *)(usPtr + index)); } ptxdesc->txdw7 |= cpu_to_le32(0x0000ffff&checksum); @@ -126,44 +126,39 @@ void rtl8188e_fill_fake_txdesc( rtl8188eu_cal_txdesc_chksum(ptxdesc); } -void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc) +static void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc) { - if ((pattrib->encrypt > 0) && !pattrib->bswenc) - { - switch (pattrib->encrypt) - { - //SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES - case _WEP40_: - case _WEP104_: - ptxdesc->txdw1 |= cpu_to_le32((0x01<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); - break; - case _TKIP_: - case _TKIP_WTMIC_: - ptxdesc->txdw1 |= cpu_to_le32((0x01<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); - break; + if ((pattrib->encrypt > 0) && !pattrib->bswenc) { + switch (pattrib->encrypt) { + //SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES + case _WEP40_: + case _WEP104_: + ptxdesc->txdw1 |= cpu_to_le32((0x01<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); + break; + case _TKIP_: + case _TKIP_WTMIC_: + ptxdesc->txdw1 |= cpu_to_le32((0x01<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); + break; #ifdef CONFIG_WAPI_SUPPORT - case _SMS4_: - ptxdesc->txdw1 |= cpu_to_le32((0x02<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); - break; + case _SMS4_: + ptxdesc->txdw1 |= cpu_to_le32((0x02<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); + break; #endif - case _AES_: - ptxdesc->txdw1 |= cpu_to_le32((0x03<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); - break; - case _NO_PRIVACY_: - default: - break; - + case _AES_: + ptxdesc->txdw1 |= cpu_to_le32((0x03<txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT); + break; + case _NO_PRIVACY_: + default: + break; } - } - } -void fill_txdesc_vcs(struct pkt_attrib *pattrib, u32 *pdw) +static void fill_txdesc_vcs(struct pkt_attrib *pattrib, __le32 *pdw) { //DBG_8192C("cvs_mode=%d\n", pattrib->vcs_mode); @@ -200,7 +195,7 @@ void fill_txdesc_vcs(struct pkt_attrib *pattrib, u32 *pdw) } } -void fill_txdesc_phy(struct pkt_attrib *pattrib, u32 *pdw) +static void fill_txdesc_phy(struct pkt_attrib *pattrib, __le32 *pdw) { //DBG_8192C("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset); @@ -307,15 +302,8 @@ if (padapter->registrypriv.mp_mode == 0) if(pattrib->ampdu_en==true){ ptxdesc->txdw2 |= cpu_to_le32(AGG_EN);//AGG EN - - //SET_TX_DESC_MAX_AGG_NUM_88E(pDesc, 0x1F); - //SET_TX_DESC_MCSG1_MAX_LEN_88E(pDesc, 0x6); - //SET_TX_DESC_MCSG2_MAX_LEN_88E(pDesc, 0x6); - //SET_TX_DESC_MCSG3_MAX_LEN_88E(pDesc, 0x6); - //SET_TX_DESC_MCS7_SGI_MAX_LEN_88E(pDesc, 0x6); - ptxdesc->txdw6 = 0x6666f800; - } - else{ + ptxdesc->txdw6 = cpu_to_le32(0x6666f800); + } else{ ptxdesc->txdw2 |= cpu_to_le32(AGG_BK);//AGG BK } diff --git a/hal/usb_halinit.c b/hal/usb_halinit.c index f999ab6..d5ac82b 100755 --- a/hal/usb_halinit.c +++ b/hal/usb_halinit.c @@ -2064,23 +2064,19 @@ Hal_EfuseParsePIDVID_8188EU( if( !AutoLoadFail ) { // VID, PID - pHalData->EEPROMVID = EF2Byte( *(u16 *)&hwinfo[EEPROM_VID_88EU] ); - pHalData->EEPROMPID = EF2Byte( *(u16 *)&hwinfo[EEPROM_PID_88EU] ); + pHalData->EEPROMVID = EF2BYTE(*(__le16 *)&hwinfo[EEPROM_VID_88EU]); + pHalData->EEPROMPID = EF2BYTE(*(__le16 *)&hwinfo[EEPROM_PID_88EU]); // Customer ID, 0x00 and 0xff are reserved for Realtek. pHalData->EEPROMCustomerID = *(u8 *)&hwinfo[EEPROM_CUSTOMERID_88E]; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; - - } - else - { + } else { pHalData->EEPROMVID = EEPROM_Default_VID; pHalData->EEPROMPID = EEPROM_Default_PID; // Customer ID, 0x00 and 0xff are reserved for Realtek. pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; - } DBG_871X("VID = 0x%04X, PID = 0x%04X\n", pHalData->EEPROMVID, pHalData->EEPROMPID); @@ -3736,80 +3732,80 @@ void SetHwReg8188EU(struct adapter *Adapter, u8 variable, u8* val) poidparam = (struct wowlan_ioctl_param *)val; switch (poidparam->subcode){ - case WOWLAN_ENABLE: - DBG_871X_LEVEL(_drv_always_, "WOWLAN_ENABLE\n"); + case WOWLAN_ENABLE: + DBG_871X_LEVEL(_drv_always_, "WOWLAN_ENABLE\n"); - SetFwRelatedForWoWLAN8188ES(Adapter, true); + SetFwRelatedForWoWLAN8188ES(Adapter, true); - //Set Pattern - //if(adapter_to_pwrctl(Adapter)->wowlan_pattern==true) - // rtw_wowlan_reload_pattern(Adapter); + //Set Pattern + //if(adapter_to_pwrctl(Adapter)->wowlan_pattern==true) + // rtw_wowlan_reload_pattern(Adapter); - //RX DMA stop - DBG_871X_LEVEL(_drv_always_, "Pause DMA\n"); - rtw_write32(Adapter,REG_RXPKT_NUM,(rtw_read32(Adapter,REG_RXPKT_NUM)|RW_RELEASE_EN)); - do{ - if((rtw_read32(Adapter, REG_RXPKT_NUM)&RXDMA_IDLE)) { - DBG_871X_LEVEL(_drv_always_, "RX_DMA_IDLE is true\n"); - break; - } else { - // If RX_DMA is not idle, receive one pkt from DMA - DBG_871X_LEVEL(_drv_always_, "RX_DMA_IDLE is not true\n"); - } - }while(trycnt--); - if(trycnt ==0) - DBG_871X_LEVEL(_drv_always_, "Stop RX DMA failed...... \n"); - - //Set WOWLAN H2C command. - DBG_871X_LEVEL(_drv_always_, "Set WOWLan cmd\n"); - rtl8188es_set_wowlan_cmd(Adapter, 1); - - mstatus = rtw_read8(Adapter, REG_WOW_CTRL); - trycnt = 10; - - while(!(mstatus&BIT1) && trycnt>1) { - mstatus = rtw_read8(Adapter, REG_WOW_CTRL); - DBG_871X_LEVEL(_drv_always_, "Loop index: %d :0x%02x\n", trycnt, mstatus); - trycnt --; - rtw_msleep_os(2); + //RX DMA stop + DBG_871X_LEVEL(_drv_always_, "Pause DMA\n"); + rtw_write32(Adapter,REG_RXPKT_NUM,(rtw_read32(Adapter,REG_RXPKT_NUM)|RW_RELEASE_EN)); + do{ + if((rtw_read32(Adapter, REG_RXPKT_NUM)&RXDMA_IDLE)) { + DBG_871X_LEVEL(_drv_always_, "RX_DMA_IDLE is true\n"); + break; + } else { + // If RX_DMA is not idle, receive one pkt from DMA + DBG_871X_LEVEL(_drv_always_, "RX_DMA_IDLE is not true\n"); } + }while(trycnt--); + if(trycnt ==0) + DBG_871X_LEVEL(_drv_always_, "Stop RX DMA failed...... \n"); - adapter_to_pwrctl(Adapter)->wowlan_wake_reason = rtw_read8(Adapter, REG_WOWLAN_WAKE_REASON); - DBG_871X_LEVEL(_drv_always_, "wowlan_wake_reason: 0x%02x\n", - adapter_to_pwrctl(Adapter)->wowlan_wake_reason); + //Set WOWLAN H2C command. + DBG_871X_LEVEL(_drv_always_, "Set WOWLan cmd\n"); + rtl8188es_set_wowlan_cmd(Adapter, 1); - /* Invoid SE0 reset signal during suspending*/ - rtw_write8(Adapter, REG_RSV_CTRL, 0x20); - rtw_write8(Adapter, REG_RSV_CTRL, 0x60); + mstatus = rtw_read8(Adapter, REG_WOW_CTRL); + trycnt = 10; - //rtw_msleep_os(10); - break; - case WOWLAN_DISABLE: - DBG_871X_LEVEL(_drv_always_, "WOWLAN_DISABLE\n"); - trycnt = 10; - rtl8188es_set_wowlan_cmd(Adapter, 0); + while(!(mstatus&BIT1) && trycnt>1) { mstatus = rtw_read8(Adapter, REG_WOW_CTRL); - DBG_871X_LEVEL(_drv_info_, "%s mstatus:0x%02x\n", __func__, mstatus); - - while(mstatus&BIT1 && trycnt>1) { - mstatus = rtw_read8(Adapter, REG_WOW_CTRL); - DBG_871X_LEVEL(_drv_always_, "Loop index: %d :0x%02x\n", trycnt, mstatus); - trycnt --; - rtw_msleep_os(2); - } - - if (mstatus & BIT1) - printk("System did not release RX_DMA\n"); - else - SetFwRelatedForWoWLAN8188ES(Adapter, false); - + DBG_871X_LEVEL(_drv_always_, "Loop index: %d :0x%02x\n", trycnt, mstatus); + trycnt --; rtw_msleep_os(2); - if(!(adapter_to_pwrctl(Adapter)->wowlan_wake_reason & FWDecisionDisconnect)) - rtl8188e_set_FwJoinBssReport_cmd(Adapter, 1); - //rtw_msleep_os(10); - break; - default: - break; + } + + adapter_to_pwrctl(Adapter)->wowlan_wake_reason = rtw_read8(Adapter, REG_WOWLAN_WAKE_REASON); + DBG_871X_LEVEL(_drv_always_, "wowlan_wake_reason: 0x%02x\n", + adapter_to_pwrctl(Adapter)->wowlan_wake_reason); + + /* Invoid SE0 reset signal during suspending*/ + rtw_write8(Adapter, REG_RSV_CTRL, 0x20); + rtw_write8(Adapter, REG_RSV_CTRL, 0x60); + + //rtw_msleep_os(10); + break; + case WOWLAN_DISABLE: + DBG_871X_LEVEL(_drv_always_, "WOWLAN_DISABLE\n"); + trycnt = 10; + rtl8188es_set_wowlan_cmd(Adapter, 0); + mstatus = rtw_read8(Adapter, REG_WOW_CTRL); + DBG_871X_LEVEL(_drv_info_, "%s mstatus:0x%02x\n", __func__, mstatus); + + while(mstatus&BIT1 && trycnt>1) { + mstatus = rtw_read8(Adapter, REG_WOW_CTRL); + DBG_871X_LEVEL(_drv_always_, "Loop index: %d :0x%02x\n", trycnt, mstatus); + trycnt --; + rtw_msleep_os(2); + } + + if (mstatus & BIT1) + printk("System did not release RX_DMA\n"); + else + SetFwRelatedForWoWLAN8188ES(Adapter, false); + + rtw_msleep_os(2); + if(!(adapter_to_pwrctl(Adapter)->wowlan_wake_reason & FWDecisionDisconnect)) + rtl8188e_set_FwJoinBssReport_cmd(Adapter, 1); + //rtw_msleep_os(10); + break; + default: + break; } } break; @@ -3827,7 +3823,7 @@ void SetHwReg8188EU(struct adapter *Adapter, u8 variable, u8* val) #endif case HW_VAR_H2C_MEDIA_STATUS_RPT: { - rtl8188e_set_FwMediaStatus_cmd(Adapter , (*(u16 *)val)); + rtl8188e_set_FwMediaStatus_cmd(Adapter, (*(__le16 *)val)); } break; case HW_VAR_BCN_VALID: diff --git a/include/basic_types.h b/include/basic_types.h index d91d207..fcfa1d9 100755 --- a/include/basic_types.h +++ b/include/basic_types.h @@ -59,167 +59,138 @@ * 3. After read integer from IO. */ -// -// Byte Swapping routine. -// -#define EF1Byte -#define EF2Byte le16_to_cpu -#define EF4Byte le32_to_cpu +/* Convert little data endian to host ordering */ +#define EF1BYTE(_val) \ + ((u8)(_val)) +#define EF2BYTE(_val) \ + (le16_to_cpu(_val)) +#define EF4BYTE(_val) \ + (le32_to_cpu(_val)) -// -// Read LE format data from memory -// -#define ReadEF1Byte(_ptr) EF1Byte(*((u8 *)(_ptr))) -#define ReadEF2Byte(_ptr) EF2Byte(*((u16 *)(_ptr))) -#define ReadEF4Byte(_ptr) EF4Byte(*((u32 *)(_ptr))) +/* Read data from memory */ +#define READEF1BYTE(_ptr) \ + EF1BYTE(*((u8 *)(_ptr))) +/* Read le16 data from memory and convert to host ordering */ +#define READEF2BYTE(_ptr) \ + EF2BYTE(*(_ptr)) +#define READEF4BYTE(_ptr) \ + EF4BYTE(*(_ptr)) -// -// Write LE data to memory -// -#define WriteEF1Byte(_ptr, _val) (*((u8 *)(_ptr)))=EF1Byte(_val) -#define WriteEF2Byte(_ptr, _val) (*((u16 *)(_ptr)))=EF2Byte(_val) -#define WriteEF4Byte(_ptr, _val) (*((u32 *)(_ptr)))=EF4Byte(_val) +/* Write data to memory */ +#define WRITEEF1BYTE(_ptr, _val) \ + do { \ + (*((u8 *)(_ptr))) = EF1BYTE(_val) \ + } while (0) +/* Write le data to memory in host ordering */ +#define WRITEEF2BYTE(_ptr, _val) \ + do { \ + (*((u16 *)(_ptr))) = EF2BYTE(_val) \ + } while (0) -// -// Example: -// BIT_LEN_MASK_32(0) => 0x00000000 -// BIT_LEN_MASK_32(1) => 0x00000001 -// BIT_LEN_MASK_32(2) => 0x00000003 -// BIT_LEN_MASK_32(32) => 0xFFFFFFFF -// -#define BIT_LEN_MASK_32(__BitLen) \ - (0xFFFFFFFF >> (32 - (__BitLen))) -// -// Example: -// BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003 -// BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000 -// -#define BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) \ - (BIT_LEN_MASK_32(__BitLen) << (__BitOffset)) +#define WRITEEF4BYTE(_ptr, _val) \ + do { \ + (*((u32 *)(_ptr))) = EF2BYTE(_val) \ + } while (0) -// -// Description: -// Return 4-byte value in host byte ordering from -// 4-byte pointer in litten-endian system. -// -#define LE_P4BYTE_TO_HOST_4BYTE(__pStart) \ - (EF4Byte(*((u32 *)(__pStart)))) +/* Create a bit mask + * Examples: + * BIT_LEN_MASK_32(0) => 0x00000000 + * BIT_LEN_MASK_32(1) => 0x00000001 + * BIT_LEN_MASK_32(2) => 0x00000003 + * BIT_LEN_MASK_32(32) => 0xFFFFFFFF + */ +#define BIT_LEN_MASK_32(__bitlen) \ + (0xFFFFFFFF >> (32 - (__bitlen))) +#define BIT_LEN_MASK_16(__bitlen) \ + (0xFFFF >> (16 - (__bitlen))) +#define BIT_LEN_MASK_8(__bitlen) \ + (0xFF >> (8 - (__bitlen))) -// -// Description: -// Translate subfield (continuous bits in little-endian) of 4-byte value in litten byte to -// 4-byte value in host byte ordering. -// -#define LE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ +/* Create an offset bit mask + * Examples: + * BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003 + * BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000 + */ +#define BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen) \ + (BIT_LEN_MASK_32(__bitlen) << (__bitoffset)) +#define BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen) \ + (BIT_LEN_MASK_16(__bitlen) << (__bitoffset)) +#define BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen) \ + (BIT_LEN_MASK_8(__bitlen) << (__bitoffset)) + +/*Description: + * Return 4-byte value in host byte ordering from + * 4-byte pointer in little-endian system. + */ +#define LE_P4BYTE_TO_HOST_4BYTE(__pstart) \ + (EF4BYTE(*((__le32 *)(__pstart)))) +#define LE_P2BYTE_TO_HOST_2BYTE(__pstart) \ + (EF2BYTE(*((__le16 *)(__pstart)))) +#define LE_P1BYTE_TO_HOST_1BYTE(__pstart) \ + (EF1BYTE(*((u8 *)(__pstart)))) + +/*Description: +Translate subfield (continuous bits in little-endian) of 4-byte +value to host byte ordering.*/ +#define LE_BITS_TO_4BYTE(__pstart, __bitoffset, __bitlen) \ ( \ - ( LE_P4BYTE_TO_HOST_4BYTE(__pStart) >> (__BitOffset) ) \ - & \ - BIT_LEN_MASK_32(__BitLen) \ + (LE_P4BYTE_TO_HOST_4BYTE(__pstart) >> (__bitoffset)) & \ + BIT_LEN_MASK_32(__bitlen) \ + ) +#define LE_BITS_TO_2BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + (LE_P2BYTE_TO_HOST_2BYTE(__pstart) >> (__bitoffset)) & \ + BIT_LEN_MASK_16(__bitlen) \ + ) +#define LE_BITS_TO_1BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + (LE_P1BYTE_TO_HOST_1BYTE(__pstart) >> (__bitoffset)) & \ + BIT_LEN_MASK_8(__bitlen) \ ) -// -// Description: -// Mask subfield (continuous bits in little-endian) of 4-byte value in litten byte oredering -// and return the result in 4-byte value in host byte ordering. -// -#define LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ +/* Description: + * Mask subfield (continuous bits in little-endian) of 4-byte value + * and return the result in 4-byte value in host byte ordering. + */ +#define LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) \ ( \ - LE_P4BYTE_TO_HOST_4BYTE(__pStart) \ - & \ - ( ~BIT_OFFSET_LEN_MASK_32(__BitOffset, __BitLen) ) \ + LE_P4BYTE_TO_HOST_4BYTE(__pstart) & \ + (~BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen)) \ + ) +#define LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + LE_P2BYTE_TO_HOST_2BYTE(__pstart) & \ + (~BIT_OFFSET_LEN_MASK_16(__bitoffset, __bitlen)) \ + ) +#define LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) \ + ( \ + LE_P1BYTE_TO_HOST_1BYTE(__pstart) & \ + (~BIT_OFFSET_LEN_MASK_8(__bitoffset, __bitlen)) \ ) -// -// Description: -// Set subfield of little-endian 4-byte value to specified value. -// -#define SET_BITS_TO_LE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \ - *((u32 *)(__pStart)) = \ - EF4Byte( \ - LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ - | \ - ( (((u32)__Value) & BIT_LEN_MASK_32(__BitLen)) << (__BitOffset) ) \ +/* Description: + * Set subfield of little-endian 4-byte value to specified value. + */ +#define SET_BITS_TO_LE_4BYTE(__pstart, __bitoffset, __bitlen, __val) \ + *((u32 *)(__pstart)) = \ + ( \ + LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) | \ + ((((u32)__val) & BIT_LEN_MASK_32(__bitlen)) << (__bitoffset)) \ + ) + +#define SET_BITS_TO_LE_2BYTE(__pstart, __bitoffset, __bitlen, __val) \ + *((u16 *)(__pstart)) = \ + ( \ + LE_BITS_CLEARED_TO_2BYTE(__pstart, __bitoffset, __bitlen) | \ + ((((u16)__val) & BIT_LEN_MASK_16(__bitlen)) << (__bitoffset)) \ ); - -#define BIT_LEN_MASK_16(__BitLen) \ - (0xFFFF >> (16 - (__BitLen))) - -#define BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) \ - (BIT_LEN_MASK_16(__BitLen) << (__BitOffset)) - -#define LE_P2BYTE_TO_HOST_2BYTE(__pStart) \ - (EF2Byte(*((u16 *)(__pStart)))) - -#define LE_BITS_TO_2BYTE(__pStart, __BitOffset, __BitLen) \ - ( \ - ( LE_P2BYTE_TO_HOST_2BYTE(__pStart) >> (__BitOffset) ) \ - & \ - BIT_LEN_MASK_16(__BitLen) \ - ) - -#define LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \ - ( \ - LE_P2BYTE_TO_HOST_2BYTE(__pStart) \ - & \ - ( ~BIT_OFFSET_LEN_MASK_16(__BitOffset, __BitLen) ) \ - ) - -#define SET_BITS_TO_LE_2BYTE(__pStart, __BitOffset, __BitLen, __Value) \ - *((u16 *)(__pStart)) = \ - EF2Byte( \ - LE_BITS_CLEARED_TO_2BYTE(__pStart, __BitOffset, __BitLen) \ - | \ - ( (((u16)__Value) & BIT_LEN_MASK_16(__BitLen)) << (__BitOffset) ) \ - ); - -#define BIT_LEN_MASK_8(__BitLen) \ - (0xFF >> (8 - (__BitLen))) - -#define BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) \ - (BIT_LEN_MASK_8(__BitLen) << (__BitOffset)) - -#define LE_P1BYTE_TO_HOST_1BYTE(__pStart) \ - (EF1Byte(*((u8 *)(__pStart)))) - -#define LE_BITS_TO_1BYTE(__pStart, __BitOffset, __BitLen) \ - ( \ - ( LE_P1BYTE_TO_HOST_1BYTE(__pStart) >> (__BitOffset) ) \ - & \ - BIT_LEN_MASK_8(__BitLen) \ - ) - -#define LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \ - ( \ - LE_P1BYTE_TO_HOST_1BYTE(__pStart) \ - & \ - ( ~BIT_OFFSET_LEN_MASK_8(__BitOffset, __BitLen) ) \ - ) - -#define SET_BITS_TO_LE_1BYTE(__pStart, __BitOffset, __BitLen, __Value) \ - *((u8 *)(__pStart)) = \ - EF1Byte( \ - LE_BITS_CLEARED_TO_1BYTE(__pStart, __BitOffset, __BitLen) \ - | \ - ( (((u8)__Value) & BIT_LEN_MASK_8(__BitLen)) << (__BitOffset) ) \ - ); - -//pclint -#define LE_BITS_CLEARED_TO_1BYTE_8BIT(__pStart, __BitOffset, __BitLen) \ - ( \ - LE_P1BYTE_TO_HOST_1BYTE(__pStart) \ - ) - -//pclint -#define SET_BITS_TO_LE_1BYTE_8BIT(__pStart, __BitOffset, __BitLen, __Value) \ -{ \ - *((u8 *)(__pStart)) = \ - EF1Byte( \ - LE_BITS_CLEARED_TO_1BYTE_8BIT(__pStart, __BitOffset, __BitLen) \ - | \ - ((u8)__Value) \ - ); \ -} +#define SET_BITS_TO_LE_1BYTE(__pstart, __bitoffset, __bitlen, __val) \ + *((u8 *)(__pstart)) = EF1BYTE \ + ( \ + LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) | \ + ((((u8)__val) & BIT_LEN_MASK_8(__bitlen)) << (__bitoffset)) \ + ) // Get the N-bytes aligment offset from the current length #define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment)) diff --git a/include/rtl8188e_cmd.h b/include/rtl8188e_cmd.h index 5b98093..fcf7d6f 100755 --- a/include/rtl8188e_cmd.h +++ b/include/rtl8188e_cmd.h @@ -145,7 +145,7 @@ void rtl8188e_set_p2p_ps_offload_cmd(struct adapter *padapter, u8 p2p_ps_state); #endif //CONFIG_P2P void CheckFwRsvdPageContent(struct adapter *padapter); -void rtl8188e_set_FwMediaStatus_cmd(struct adapter *padapter, u16 mstatus_rpt ); +void rtl8188e_set_FwMediaStatus_cmd(struct adapter *padapter, __le16 mstatus_rpt ); #ifdef CONFIG_TSF_RESET_OFFLOAD //u8 rtl8188e_reset_tsf(struct adapter *padapter, u8 reset_port); diff --git a/include/rtl8188e_hal.h b/include/rtl8188e_hal.h index f8f7827..7909ed4 100755 --- a/include/rtl8188e_hal.h +++ b/include/rtl8188e_hal.h @@ -113,10 +113,10 @@ typedef struct _RT_8188E_FIRMWARE_HDR // 8-byte alinment required //--- LONG WORD 0 ---- - u16 Signature; // 92C0: test chip; 92C, 88C0: test chip; 88C1: MP A-cut; 92C1: MP A-cut + __le16 Signature; // 92C0: test chip; 92C, 88C0: test chip; 88C1: MP A-cut; 92C1: MP A-cut u8 Category; // AP/NIC and USB/PCI u8 Function; // Reserved for different FW function indcation, for further use when driver needs to download different FW in different conditions - u16 Version; // FW Version + __le16 Version; // FW Version u8 Subversion; // FW Subversion, default 0x00 u16 Rsvd1; @@ -126,12 +126,12 @@ typedef struct _RT_8188E_FIRMWARE_HDR u8 Date; // Release time Date field u8 Hour; // Release time Hour field u8 Minute; // Release time Minute field - u16 RamCodeSize; // The size of RAM code + __le16 RamCodeSize; // The size of RAM code u8 Foundry; u8 Rsvd2; //--- LONG WORD 2 ---- - u32 SvnIdx; // The SVN entry index + __le32 SvnIdx; // The SVN entry index u32 Rsvd3; //--- LONG WORD 3 ---- diff --git a/include/rtw_br_ext.h b/include/rtw_br_ext.h index 384bf75..0c7699a 100755 --- a/include/rtw_br_ext.h +++ b/include/rtw_br_ext.h @@ -72,5 +72,7 @@ struct br_ext_info { void nat25_db_cleanup(struct adapter *priv); void netdev_br_init(struct net_device *netdev); +void *scdb_findEntry(struct adapter *priv, unsigned char *macAddr, + unsigned char *ipAddr); #endif // _RTW_BR_EXT_H_ diff --git a/include/rtw_iol.h b/include/rtw_iol.h index b5a469c..028e928 100755 --- a/include/rtw_iol.h +++ b/include/rtw_iol.h @@ -39,9 +39,9 @@ int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame); struct ioreg_cfg{ u8 length; u8 cmd_id; - u16 address; - u32 data; - u32 mask; + __le16 address; + __le32 data; + __le32 mask; }; enum ioreg_cmd{ IOREG_CMD_LLT = 0x01, diff --git a/include/rtw_recv.h b/include/rtw_recv.h index 04efe99..cf27e9f 100755 --- a/include/rtw_recv.h +++ b/include/rtw_recv.h @@ -189,12 +189,12 @@ struct rx_pkt_attrib { #define RXDESC_OFFSET RXDESC_SIZE struct recv_stat { - unsigned int rxdw0; - unsigned int rxdw1; - unsigned int rxdw2; - unsigned int rxdw3; - unsigned int rxdw4; - unsigned int rxdw5; + __le32 rxdw0; + __le32 rxdw1; + __le32 rxdw2; + __le32 rxdw3; + __le32 rxdw4; + __le32 rxdw5; }; #define EOR BIT(30) diff --git a/os_dep/ioctl_cfg80211.c b/os_dep/ioctl_cfg80211.c index d60484c..7fe83eb 100755 --- a/os_dep/ioctl_cfg80211.c +++ b/os_dep/ioctl_cfg80211.c @@ -161,35 +161,35 @@ static struct ieee80211_channel rtw_5ghz_a_channels[] = { }; -void rtw_2g_channels_init(struct ieee80211_channel *channels) +static void rtw_2g_channels_init(struct ieee80211_channel *channels) { _rtw_memcpy((void*)channels, (void*)rtw_2ghz_channels, sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM ); } -void rtw_5g_channels_init(struct ieee80211_channel *channels) +static void rtw_5g_channels_init(struct ieee80211_channel *channels) { _rtw_memcpy((void*)channels, (void*)rtw_5ghz_a_channels, sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM ); } -void rtw_2g_rates_init(struct ieee80211_rate *rates) +static void rtw_2g_rates_init(struct ieee80211_rate *rates) { _rtw_memcpy(rates, rtw_g_rates, sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM ); } -void rtw_5g_rates_init(struct ieee80211_rate *rates) +static void rtw_5g_rates_init(struct ieee80211_rate *rates) { _rtw_memcpy(rates, rtw_a_rates, sizeof(struct ieee80211_rate)*RTW_A_RATES_NUM ); } -struct ieee80211_supported_band *rtw_spt_band_alloc( +static struct ieee80211_supported_band *rtw_spt_band_alloc( enum ieee80211_band band ) { @@ -243,7 +243,7 @@ exit: return spt_band; } -void rtw_spt_band_free(struct ieee80211_supported_band *spt_band) +static void rtw_spt_band_free(struct ieee80211_supported_band *spt_band) { u32 size; @@ -357,7 +357,7 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wl u8 buf[MAX_BSSINFO_LEN], *pbuf; size_t len,bssinf_len=0; struct rtw_ieee80211_hdr *pwlanhdr; - unsigned short *fctrl; + __le16 *fctrl; u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; struct wireless_dev *wdev = padapter->rtw_wdev; @@ -422,8 +422,8 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wl notify_timestamp = jiffies_to_msecs(jiffies)*1000; /* uSec */ - notify_interval = le16_to_cpu(*(u16*)rtw_get_beacon_interval_from_ie(pnetwork->network.IEs)); - notify_capability = le16_to_cpu(*(u16*)rtw_get_capability_from_ie(pnetwork->network.IEs)); + notify_interval = le16_to_cpu(*(__le16 *)rtw_get_beacon_interval_from_ie(pnetwork->network.IEs)); + notify_capability = le16_to_cpu(*(__le16 *)rtw_get_capability_from_ie(pnetwork->network.IEs)); notify_ie = pnetwork->network.IEs+_FIXED_IE_LENGTH_; @@ -1667,15 +1667,13 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, struct adapter *padapter = (struct adapter *)rtw_netdev_priv(ndev); struct security_priv *psecuritypriv = &padapter->securitypriv; - DBG_871X(FUNC_NDEV_FMT" key_index=%d" #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) - ", unicast=%d, multicast=%d" + DBG_871X(FUNC_NDEV_FMT" key_index=%d, unicast=%d, multicast=%d\n", + FUNC_NDEV_ARG(ndev), key_index , unicast, multicast); + #else + DBG_871X(FUNC_NDEV_FMT" key_index=%d\n", FUNC_NDEV_ARG(ndev), + key_index); #endif - ".\n", FUNC_NDEV_ARG(ndev), key_index - #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)) || defined(COMPAT_KERNEL_RELEASE) - , unicast, multicast - #endif - ); if ((key_index < WEP_KEYS) && ((psecuritypriv->dot11PrivacyAlgrthm == _WEP40_) || (psecuritypriv->dot11PrivacyAlgrthm == _WEP104_))) //set wep default key { @@ -3417,9 +3415,9 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de /* Check if this ia a Wireless Distribution System (WDS) frame * which has 4 MAC addresses */ - if (dot11_hdr->frame_control & 0x0080) + if (frame_ctl & 0x0080) qos_len = 2; - if ((dot11_hdr->frame_control & 0x0300) == 0x0300) + if ((frame_ctl & 0x0300) == 0x0300) dot11_hdr_len += 6; memcpy(dst_mac_addr, dot11_hdr->addr1, sizeof(dst_mac_addr)); @@ -4236,7 +4234,7 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8 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); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); @@ -4244,7 +4242,7 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8 struct wifidirect_info *pwdinfo = &(padapter->wdinfo); u8 *frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); size_t frame_body_len = len - sizeof(struct rtw_ieee80211_hdr_3addr); - + __be16 be_tmp; DBG_871X( "[%s] In\n", __FUNCTION__ ); @@ -4255,29 +4253,28 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8 pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_PUSH_BUTTON; rtw_get_wps_ie( frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, wpsie, &wpsielen); - rtw_get_wps_attr_content( wpsie, wpsielen, WPS_ATTR_DEVICE_PWID, (u8*) &wps_devicepassword_id, &wps_devicepassword_id_len); - wps_devicepassword_id = be16_to_cpu( wps_devicepassword_id ); + rtw_get_wps_attr_content( wpsie, wpsielen, WPS_ATTR_DEVICE_PWID, (u8*) &be_tmp, &wps_devicepassword_id_len); + wps_devicepassword_id = be16_to_cpu(be_tmp); - switch(wps_devicepassword_id) - { - case WPS_DPID_PIN: - pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL; - break; - case WPS_DPID_USER_SPEC: - pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_DISPLYA; - break; - case WPS_DPID_MACHINE_SPEC: - break; - case WPS_DPID_REKEY: - break; - case WPS_DPID_PBC: - pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_PUSH_BUTTON; - break; - case WPS_DPID_REGISTRAR_SPEC: - pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_KEYPAD; - break; - default: - break; + switch(wps_devicepassword_id) { + case WPS_DPID_PIN: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL; + break; + case WPS_DPID_USER_SPEC: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_DISPLYA; + break; + case WPS_DPID_MACHINE_SPEC: + break; + case WPS_DPID_REKEY: + break; + case WPS_DPID_PBC: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_PUSH_BUTTON; + break; + case WPS_DPID_REGISTRAR_SPEC: + pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_KEYPAD; + break; + default: + break; } @@ -4289,17 +4286,13 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8 } - //start to build provision_request frame _rtw_memset(wpsie, 0, sizeof(wpsie)); _rtw_memset(p2p_ie, 0, sizeof(p2p_ie)); p2p_ielen = 0; if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) - { return; - } - //update attribute pattrib = &pmgntframe->attrib; @@ -4384,16 +4377,16 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8 wpsielen = 0; // WPS OUI - *(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); + *(__be32 *) ( wpsie ) = cpu_to_be32( WPSOUI ); wpsielen += 4; // WPS version // Type: - *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); + *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); wpsielen += 2; // Length: - *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); + *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); wpsielen += 2; // Value: @@ -4401,15 +4394,15 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8 // Config Method // Type: - *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); + *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); wpsielen += 2; // Length: - *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); + *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); wpsielen += 2; // Value: - *(u16*) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->tx_prov_disc_info.wps_config_method_request ); + *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( pwdinfo->tx_prov_disc_info.wps_config_method_request ); wpsielen += 2; pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); @@ -5078,7 +5071,7 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu if((wps_ie = rtw_get_wps_ie(buf, len, NULL, &wps_ielen))) { uint attr_contentlen = 0; - u16 uconfig_method, *puconfig_method = NULL; + __be16 uconfig_method, *puconfig_method = NULL; #ifdef CONFIG_DEBUG_CFG80211 DBG_8192C("probe_resp_wps_ielen=%d\n", wps_ielen); @@ -5122,8 +5115,7 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu //printk("config_method in wpsie of probe_resp = 0x%x\n", be16_to_cpu(*puconfig_method)); #endif - uconfig_method = WPS_CM_PUSH_BUTTON; - uconfig_method = cpu_to_be16( uconfig_method ); + uconfig_method = cpu_to_be16(WPS_CM_PUSH_BUTTON); *puconfig_method |= uconfig_method; } @@ -5142,17 +5134,18 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu u8 is_GO = false; u32 attr_contentlen = 0; u16 cap_attr=0; + __le16 le_tmp; #ifdef CONFIG_DEBUG_CFG80211 DBG_8192C("probe_resp_p2p_ielen=%d\n", p2p_ielen); #endif //Check P2P Capability ATTR - if( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&cap_attr, (uint*) &attr_contentlen) ) + if( rtw_get_p2p_attr_content( p2p_ie, p2p_ielen, P2P_ATTR_CAPABILITY, (u8*)&le_tmp, (uint*) &attr_contentlen) ) { u8 grp_cap=0; //DBG_8192C( "[%s] Got P2P Capability Attr!!\n", __FUNCTION__ ); - cap_attr = le16_to_cpu(cap_attr); + cap_attr = le16_to_cpu(le_tmp); grp_cap = (u8)((cap_attr >> 8)&0xff); is_GO = (grp_cap&BIT(0)) ? true:false; @@ -5406,7 +5399,7 @@ static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ht_cap->mcs.rx_mask[1] = 0x00; ht_cap->mcs.rx_mask[4] = 0x01; - ht_cap->mcs.rx_highest = MAX_BIT_RATE_40MHZ_MCS7; + ht_cap->mcs.rx_highest = cpu_to_le16(MAX_BIT_RATE_40MHZ_MCS7); } else if((rf_type == RF_1T2R) || (rf_type==RF_2T2R)) { @@ -5414,7 +5407,7 @@ static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ht_cap->mcs.rx_mask[1] = 0xFF; ht_cap->mcs.rx_mask[4] = 0x01; - ht_cap->mcs.rx_highest = MAX_BIT_RATE_40MHZ_MCS15; + ht_cap->mcs.rx_highest = cpu_to_le16(MAX_BIT_RATE_40MHZ_MCS15); } else {