rtl8188eu: Fix some sparse warnings

The driver did not work on PowerPC, which is big endian. This patch
fixes all the sparse warnings concerning improper use of __le16 and __le32
variables.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
Larry Finger 2015-01-27 23:14:58 -06:00
parent 77e8b5de91
commit 7c7f632ac7
25 changed files with 502 additions and 684 deletions

View file

@ -96,7 +96,7 @@ static void update_BCNTIM(struct adapter *padapter)
if(true) if(true)
{ {
u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL; 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; uint offset, tmp_len, tim_ielen, tim_ie_offset, remainder_ielen;
tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap); 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 // 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) if(pmlmeinfo->SM_PS == WLAN_HT_CAP_SM_PS_STATIC)
{ {
/*u8 i; /*u8 i;
@ -2008,7 +2008,7 @@ static int rtw_ht_operation_update(struct adapter *padapter)
if (pmlmepriv->num_sta_no_ht || if (pmlmepriv->num_sta_no_ht ||
(pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT)) (pmlmepriv->ht_op_mode & HT_INFO_OPERATION_MODE_NON_GF_DEVS_PRESENT))
new_op_mode = OP_MODE_MIXED; 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) && pmlmepriv->num_sta_ht_20mhz)
new_op_mode = OP_MODE_20MHZ_HT_STA_ASSOCED; new_op_mode = OP_MODE_20MHZ_HT_STA_ASSOCED;
else if (pmlmepriv->olbc_ht) else if (pmlmepriv->olbc_ht)

View file

@ -785,6 +785,7 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
{ {
unsigned short protocol; unsigned short protocol;
unsigned char networkAddr[MAX_NETWORK_ADDR_LEN]; unsigned char networkAddr[MAX_NETWORK_ADDR_LEN];
u32 tmp;
if(skb == NULL) if(skb == NULL)
return -1; 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)) if((method <= NAT25_MIN) || (method >= NAT25_MAX))
return -1; return -1;
protocol = *((unsigned short *)(skb->data + 2 * ETH_ALEN)); protocol = be16_to_cpu(*((__be16 *)(skb->data + 2 * ETH_ALEN)));
/*---------------------------------------------------*/ /*---------------------------------------------------*/
/* Handle IP frame */ /* Handle IP frame */
@ -807,19 +808,19 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
return -1; return -1;
} }
switch(method) switch(method) {
{
case NAT25_CHECK: case NAT25_CHECK:
return -1; return -1;
case NAT25_INSERT: case NAT25_INSERT:
{ {
tmp = be32_to_cpu(iph->saddr);
//some muticast with source IP is all zero, maybe other case is illegal //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 //in class A, B, C, host address is all zero or all one is illegal
if (iph->saddr == 0) if (iph->saddr == 0)
return 0; return 0;
DEBUG_INFO("NAT25: Insert IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); DEBUG_INFO("NAT25: Insert IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr);
__nat25_generate_ipv4_network_addr(networkAddr, &iph->saddr); __nat25_generate_ipv4_network_addr(networkAddr, &tmp);
//record source IP address and , source mac address into db //record source IP address and , source mac address into db
__nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr); __nat25_db_network_insert(priv, skb->data+ETH_ALEN, networkAddr);
@ -832,21 +833,21 @@ int nat25_db_handle(struct adapter *priv, struct sk_buff *skb, int method)
DEBUG_INFO("NAT25: Lookup IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr); DEBUG_INFO("NAT25: Lookup IP, SA=%08x, DA=%08x\n", iph->saddr, iph->daddr);
#ifdef SUPPORT_TX_MCAST2UNI #ifdef SUPPORT_TX_MCAST2UNI
if (priv->pshare->rf_ft_var.mc2u_disable || if (priv->pshare->rf_ft_var.mc2u_disable ||
((((OPMODE & (WIFI_STATION_STATE|WIFI_ASOC_STATE)) ((((OPMODE & (WIFI_STATION_STATE|WIFI_ASOC_STATE)) ==
== (WIFI_STATION_STATE|WIFI_ASOC_STATE)) && (WIFI_STATION_STATE|WIFI_ASOC_STATE)) &&
!checkIPMcAndReplace(priv, skb, &iph->daddr)) || !checkIPMcAndReplace(priv, skb, &iph->daddr)) ||
(OPMODE & WIFI_ADHOC_STATE))) (OPMODE & WIFI_ADHOC_STATE)))
#endif #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 (!__nat25_db_network_lookup_and_replace(priv, skb, networkAddr)) {
if (*((unsigned char *)&iph->daddr + 3) == 0xff) { if (*((unsigned char *)&iph->daddr + 3) == 0xff) {
// L2 is unicast but L3 is broadcast, make L2 bacome broadcast // L2 is unicast but L3 is broadcast, make L2 bacome broadcast
DEBUG_INFO("NAT25: Set DA as boardcast\n"); DEBUG_INFO("NAT25: Set DA as boardcast\n");
memset(skb->data, 0xff, ETH_ALEN); memset(skb->data, 0xff, ETH_ALEN);
} } else {
else {
// forward unknow IP packet to upper TCP/IP // forward unknow IP packet to upper TCP/IP
DEBUG_INFO("NAT25: Replace DA with BR's MAC\n"); DEBUG_INFO("NAT25: Replace DA with BR's MAC\n");
if ( (*(u32 *)priv->br_mac) == 0 && (*(u16 *)(priv->br_mac+4)) == 0 ) { if ( (*(u32 *)priv->br_mac) == 0 && (*(u16 *)(priv->br_mac+4)) == 0 ) {
@ -1598,7 +1599,7 @@ void dhcp_flag_bcast(struct adapter *priv, struct sk_buff *skb)
if(!priv->ethBrExtInfo.dhcp_bcst_disable) 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 if(protocol == __constant_htons(ETH_P_IP)) // IP
{ {

View file

@ -417,20 +417,20 @@ int rtw_generate_ie(struct registry_priv *pregistrypriv)
ie += sz; ie += sz;
//beacon interval : 2bytes //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; sz += 2;
ie += 2; ie += 2;
//capability info //capability info
*(u16*)ie = 0; *(u16*)ie = 0;
*(u16*)ie |= cpu_to_le16(cap_IBSS); *(__le16*)ie |= cpu_to_le16(cap_IBSS);
if(pregistrypriv->preamble == PREAMBLE_SHORT) if(pregistrypriv->preamble == PREAMBLE_SHORT)
*(u16*)ie |= cpu_to_le16(cap_ShortPremble); *(__le16*)ie |= cpu_to_le16(cap_ShortPremble);
if (pdev_network->Privacy) if (pdev_network->Privacy)
*(u16*)ie |= cpu_to_le16(cap_Privacy); *(__le16*)ie |= cpu_to_le16(cap_Privacy);
sz += 2; sz += 2;
ie += 2; ie += 2;
@ -501,6 +501,7 @@ unsigned char *rtw_get_wpa_ie(unsigned char *pie, int *wpa_ie_len, int limit)
{ {
int len; int len;
u16 val16; u16 val16;
__le16 le_tmp;
unsigned char wpa_oui_type[] = {0x00, 0x50, 0xf2, 0x01}; unsigned char wpa_oui_type[] = {0x00, 0x50, 0xf2, 0x01};
u8 *pbuf = pie; u8 *pbuf = pie;
int limit_new = limit; 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... //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) if (val16 != 0x0001)
goto check_next_ie; 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; struct rtw_ieee80211_ht_cap *pht_cap = NULL;
unsigned int len; unsigned int len;
unsigned char *p; unsigned char *p;
__le16 le_tmp;
_rtw_memcpy((u8 *)&cap, rtw_get_capability_from_ie(pnetwork->network.IEs), 2); memcpy((u8 *)&le_tmp, rtw_get_capability_from_ie(pnetwork->network.IEs), 2);
cap = le16_to_cpu(cap); cap = le16_to_cpu(le_tmp);
if (cap & WLAN_CAPABILITY_PRIVACY) { if (cap & WLAN_CAPABILITY_PRIVACY) {
bencrypt = 1; bencrypt = 1;
pnetwork->network.Privacy = 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_); p = rtw_get_ie(pnetwork->network.IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, pnetwork->network.IELength - _FIXED_IE_LENGTH_);
if(p && len>0) { if(p && len>0) {
pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2); 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 { } else {
pnetwork->BcnInfo.ht_cap_info = 0; pnetwork->BcnInfo.ht_cap_info = 0;
} }

View file

@ -68,7 +68,7 @@ u16 _rtw_read16(struct adapter *adapter, u32 addr)
_read16 = pintfhdl->io_ops._read16; _read16 = pintfhdl->io_ops._read16;
r_val = _read16(pintfhdl, addr); r_val = _read16(pintfhdl, addr);
return le16_to_cpu(r_val); return r_val;
} }
u32 _rtw_read32(struct adapter *adapter, u32 addr) 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; _read32 = pintfhdl->io_ops._read32;
r_val = _read32(pintfhdl, addr); r_val = _read32(pintfhdl, addr);
return le32_to_cpu(r_val); return r_val;
} }
int _rtw_write8(struct adapter *adapter, u32 addr, u8 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; _write16 = pintfhdl->io_ops._write16;
val = cpu_to_le16(val);
ret = _write16(pintfhdl, addr, val); ret = _write16(pintfhdl, addr, val);
return RTW_STATUS_CODE(ret); return RTW_STATUS_CODE(ret);
@ -120,7 +119,6 @@ int _rtw_write32(struct adapter *adapter, u32 addr, u32 val)
int ret; int ret;
_write32 = pintfhdl->io_ops._write32; _write32 = pintfhdl->io_ops._write32;
val = cpu_to_le32(val);
ret = _write32(pintfhdl, addr, val); ret = _write32(pintfhdl, addr, val);
return RTW_STATUS_CODE(ret); return RTW_STATUS_CODE(ret);
@ -161,7 +159,6 @@ int _rtw_write16_async(struct adapter *adapter, u32 addr, u16 val)
int ret; int ret;
_write16_async = pintfhdl->io_ops._write16_async; _write16_async = pintfhdl->io_ops._write16_async;
val = cpu_to_le16(val);
ret = _write16_async(pintfhdl, addr, val); ret = _write16_async(pintfhdl, addr, val);
return RTW_STATUS_CODE(ret); return RTW_STATUS_CODE(ret);
@ -175,7 +172,6 @@ int _rtw_write32_async(struct adapter *adapter, u32 addr, u32 val)
int ret; int ret;
_write32_async = pintfhdl->io_ops._write32_async; _write32_async = pintfhdl->io_ops._write32_async;
val = cpu_to_le32(val);
ret = _write32_async(pintfhdl, addr, val); ret = _write32_async(pintfhdl, addr, val);
return RTW_STATUS_CODE(ret); return RTW_STATUS_CODE(ret);

View file

@ -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; 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 = (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_20 = (le16_to_cpu(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_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)); rtw_hal_get_hwreg(adapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
max_rate = rtw_mcs_rate( max_rate = rtw_mcs_rate(

View file

@ -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_LE16((u8*)&cmd.address, addr);
//RTW_PUT_LE32((u8*)&cmd.value, (u32)value); //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); cmd.data = cpu_to_le32(value);
if(mask!=0x000FFFFF) 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) 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); return rtw_IOL_append_cmds(xmit_frame, (u8*)&cmd, 4);
} }

View file

@ -25,7 +25,7 @@
#ifdef CONFIG_P2P #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; 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 ); 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; 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; struct pkt_attrib *pattrib;
unsigned char *pframe; unsigned char *pframe;
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
unsigned short *fctrl; __le16 *fctrl;
struct adapter *padapter = pwdinfo->padapter; struct adapter *padapter = pwdinfo->padapter;
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
unsigned char category = RTW_WLAN_CATEGORY_P2P;//P2P action frame 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 oui_subtype = P2P_GO_DISC_REQUEST;
u8 dialogToken=0; u8 dialogToken=0;
@ -211,13 +211,13 @@ static void issue_p2p_devdisc_resp(struct wifidirect_info *pwdinfo, u8 *da, u8 s
struct pkt_attrib *pattrib; struct pkt_attrib *pattrib;
unsigned char *pframe; unsigned char *pframe;
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
unsigned short *fctrl; __le16 *fctrl;
struct adapter *padapter = pwdinfo->padapter; struct adapter *padapter = pwdinfo->padapter;
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
unsigned char category = RTW_WLAN_CATEGORY_PUBLIC; unsigned char category = RTW_WLAN_CATEGORY_PUBLIC;
u8 action = P2P_PUB_ACTION_ACTION; u8 action = P2P_PUB_ACTION_ACTION;
u32 p2poui = cpu_to_be32(P2POUI); __be32 p2poui = cpu_to_be32(P2POUI);
u8 oui_subtype = P2P_DEVDISC_RESP; u8 oui_subtype = P2P_DEVDISC_RESP;
u8 p2pie[8] = { 0x00 }; u8 p2pie[8] = { 0x00 };
u32 p2pielen = 0; 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; unsigned char category = RTW_WLAN_CATEGORY_PUBLIC;
u8 action = P2P_PUB_ACTION_ACTION; u8 action = P2P_PUB_ACTION_ACTION;
u8 dialogToken = frame_body[7]; // The Dialog Token of provisioning discovery request frame. 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 oui_subtype = P2P_PROVISION_DISC_RESP;
u8 wpsie[ 100 ] = { 0x00 }; u8 wpsie[ 100 ] = { 0x00 };
u8 wpsielen = 0; u8 wpsielen = 0;
@ -297,7 +297,7 @@ static void issue_p2p_provision_resp(struct wifidirect_info *pwdinfo, u8* raddr,
struct pkt_attrib *pattrib; struct pkt_attrib *pattrib;
unsigned char *pframe; unsigned char *pframe;
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
unsigned short *fctrl; __le16 *fctrl;
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); 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; struct pkt_attrib *pattrib;
unsigned char *pframe; unsigned char *pframe;
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
unsigned short *fctrl; __le16 *fctrl;
struct adapter *padapter = pwdinfo->padapter; struct adapter *padapter = pwdinfo->padapter;
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
unsigned char category = RTW_WLAN_CATEGORY_P2P;//P2P action frame 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 oui_subtype = P2P_PRESENCE_RESPONSE;
u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 }; u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 };
u8 noa_attr_content[32] = { 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 }; u8 p2pie[ MAX_P2P_IE_LEN] = { 0x00 };
u16 capability=0; u16 capability=0;
u32 len=0, p2pielen = 0; u32 len=0, p2pielen = 0;
__le16 le_tmp;
// P2P OUI // P2P OUI
p2pielen = 0; 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)) if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_PROVISIONING_ING))
capability |= (P2P_GRPCAP_GROUP_FORMATION<<8); capability |= (P2P_GRPCAP_GROUP_FORMATION<<8);
capability = cpu_to_le16(capability); le_tmp = cpu_to_le16(capability);
p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_CAPABILITY, 2, (u8*)&capability);
p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_CAPABILITY, 2, (u8*)&le_tmp);
// P2P Device ID ATTR // P2P Device ID ATTR
p2pielen += rtw_set_p2p_attr_content(&p2pie[p2pielen], P2P_ATTR_DEVICE_ID, ETH_ALEN, pwdinfo->device_addr); 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); pbuf = rtw_set_ie(pbuf, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2pie, &len);
return len; return len;
} }
#ifdef CONFIG_WFD #ifdef CONFIG_WFD
@ -2369,6 +2355,8 @@ u32 process_assoc_req_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pframe, uint l
u32 ies_len; u32 ies_len;
u8 * p2p_ie; u8 * p2p_ie;
u32 p2p_ielen = 0; u32 p2p_ielen = 0;
__le16 le_tmp;
__be16 be_tmp;
if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO)) if(!rtw_p2p_chk_role(pwdinfo, P2P_ROLE_GO))
return P2P_STATUS_FAIL_REQUEST_UNABLE; 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 ) while ( p2p_ie )
{ {
//Check P2P Capability ATTR //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__ ); 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; 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__ ); DBG_8192C( "[%s] Got P2P DEVICE INFO Attr!!\n", __FUNCTION__ );
pattr_content = pbuf = rtw_zmalloc(attr_contentlen); pattr_content = pbuf = rtw_zmalloc(attr_contentlen);
if(pattr_content) if(pattr_content) {
{
u8 num_of_secdev_type; u8 num_of_secdev_type;
u16 dev_name_len; u16 dev_name_len;
rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO , pattr_content, (uint*)&attr_contentlen); 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 _rtw_memcpy(psta->dev_addr, pattr_content, ETH_ALEN);//P2P Device Address
pattr_content += ETH_ALEN; pattr_content += ETH_ALEN;
_rtw_memcpy(&psta->config_methods, pattr_content, 2);//Config Methods memcpy(&be_tmp, pattr_content, 2);//Config Methods
psta->config_methods = be16_to_cpu(psta->config_methods); psta->config_methods = be16_to_cpu(be_tmp);
pattr_content += 2; 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); //dev_name_len = attr_contentlen - ETH_ALEN - 2 - 8 - 1 - (num_of_secdev_type*8);
psta->dev_name_len=0; 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_len) ? sizeof(psta->dev_name):dev_name_len; psta->dev_name_len = (sizeof(psta->dev_name)<dev_name_len) ? sizeof(psta->dev_name):dev_name_len;
@ -2584,15 +2570,15 @@ u8 process_p2p_provdisc_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint l
u8 *wpsie; u8 *wpsie;
uint wps_ielen = 0, attr_contentlen = 0; uint wps_ielen = 0, attr_contentlen = 0;
u16 uconfig_method = 0; u16 uconfig_method = 0;
__be16 be_tmp;
frame_body = (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)); 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 ( (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 ) switch( uconfig_method )
{ {
case WPS_CM_DISPLYA: case WPS_CM_DISPLYA:
@ -2630,7 +2616,7 @@ u8 process_p2p_provdisc_resp(struct wifidirect_info *pwdinfo, u8 *pframe)
return true; 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 i = 0, j = 0;
u8 temp = 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; 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; u8 i = 0;
@ -2670,7 +2656,7 @@ u8 rtw_p2p_check_peer_oper_ch(struct mlme_ext_priv *pmlmeext, u8 ch)
return _FAIL; 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; int i = 0, j = 0, temp = 0;
u8 ch_no = 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_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
#endif #endif
__be16 be_tmp;
if ( (wpsie=rtw_get_wps_ie( pframe + _PUBLIC_ACTION_IE_OFFSET_, len - _PUBLIC_ACTION_IE_OFFSET_, NULL, &wps_ielen)) ) 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. // 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) ) 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); 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( wps_devicepassword_id ); wps_devicepassword_id = be16_to_cpu(be_tmp);
if ( wps_devicepassword_id == WPS_DPID_USER_SPEC ) 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_list_inclusioned[100] = { 0x00 };
u8 ch_num_inclusioned = 0; u8 ch_num_inclusioned = 0;
u16 cap_attr; u16 cap_attr;
__le16 le_tmp;
rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING); rtw_p2p_set_state(pwdinfo, P2P_STATE_GONEGO_ING);
//Check P2P Capability ATTR //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 defined(CONFIG_WFD) && defined(CONFIG_TDLS)
if(!(cap_attr & P2P_GRPCAP_INTRABSS) ) if(!(cap_attr & P2P_GRPCAP_INTRABSS) )
@ -2968,7 +2956,6 @@ u8 process_p2p_group_negotation_resp( struct wifidirect_info *pwdinfo, u8 *pfram
} }
else else
{ {
u8 attr_content = 0x00; u8 attr_content = 0x00;
u32 attr_contentlen = 0; u32 attr_contentlen = 0;
u8 operatingch_info[5] = { 0x00 }; 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 peer_ch_num = 0;
u8 ch_list_inclusioned[100] = { 0x00 }; u8 ch_list_inclusioned[100] = { 0x00 };
u8 ch_num_inclusioned = 0; u8 ch_num_inclusioned = 0;
__le16 le_tmp;
while ( p2p_ie ) // Found the P2P IE. while ( p2p_ie ) // Found the P2P IE.
{ {
//Check P2P Capability ATTR //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 #ifdef CONFIG_TDLS
if(!(cap_attr & P2P_GRPCAP_INTRABSS) ) if(!(cap_attr & P2P_GRPCAP_INTRABSS) )
ptdlsinfo->ap_prohibited = true; ptdlsinfo->ap_prohibited = true;
@ -3303,7 +3291,7 @@ u8 process_p2p_presence_req(struct wifidirect_info *pwdinfo, u8 *pframe, uint le
return true; return true;
} }
void find_phase_handler( struct adapter* padapter ) static void find_phase_handler( struct adapter* padapter )
{ {
struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct wifidirect_info *pwdinfo = &padapter->wdinfo;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@ -3311,7 +3299,6 @@ void find_phase_handler( struct adapter* padapter )
_irqL irqL; _irqL irqL;
u8 _status = 0; u8 _status = 0;
;
_rtw_memset((unsigned char*)&ssid, 0, sizeof(NDIS_802_11_SSID)); _rtw_memset((unsigned char*)&ssid, 0, sizeof(NDIS_802_11_SSID));
_rtw_memcpy(ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN ); _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); _exit_critical_bh(&pmlmepriv->lock, &irqL);
;
} }
void p2p_concurrent_handler( struct adapter* padapter ); 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 wifidirect_info *pwdinfo = &padapter->wdinfo;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; 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)) 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); set_channel_bwmode( padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
#endif #endif
} }
;
} }
void pre_tx_invitereq_handler( struct adapter* padapter ) static void pre_tx_invitereq_handler( struct adapter* padapter )
{ {
struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct wifidirect_info *pwdinfo = &padapter->wdinfo;
u8 val8 = 1; u8 val8 = 1;
;
set_channel_bwmode(padapter, pwdinfo->invitereq_info.peer_ch, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20); 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)); padapter->HalFunc.SetHwRegHandler(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8));
issue_probereq_p2p(padapter, NULL); issue_probereq_p2p(padapter, NULL);
_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); _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; struct wifidirect_info *pwdinfo = &padapter->wdinfo;
u8 val8 = 1; 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); 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)); rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8));
issue_probereq_p2p(padapter, NULL); issue_probereq_p2p(padapter, NULL);
_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); _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; struct wifidirect_info *pwdinfo = &padapter->wdinfo;
u8 val8 = 1; 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); 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)); rtw_hal_set_hwreg(padapter, HW_VAR_MLME_SITESURVEY, (u8 *)(&val8));
issue_probereq_p2p(padapter, NULL); issue_probereq_p2p(padapter, NULL);
_set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT ); _set_timer( &pwdinfo->pre_tx_scan_timer, P2P_TX_PRESCAN_TIMEOUT );
;
} }
#ifdef CONFIG_CONCURRENT_MODE #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_priv *pbuddy_mlmepriv = &pbuddy_adapter->mlmepriv;
//struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv; //struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
u8 val8; u8 val8;
;
if ( check_buddy_fwstate(padapter, _FW_LINKED ) ) 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); set_channel_bwmode( padapter, pwdinfo->listen_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HT_CHANNEL_WIDTH_20);
} }
;
} }
#endif #endif
@ -3541,7 +3514,6 @@ static void ro_ch_handler(struct adapter *padapter)
struct wifidirect_info *pwdinfo = &padapter->wdinfo; struct wifidirect_info *pwdinfo = &padapter->wdinfo;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
u8 ch, bw, offset; u8 ch, bw, offset;
;
if (rtw_get_ch_setting_union(padapter, &ch, &bw, &offset) != 0) { if (rtw_get_ch_setting_union(padapter, &ch, &bw, &offset) != 0) {
if (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_channel,
pcfg80211_wdinfo->remain_on_ch_type, GFP_KERNEL); pcfg80211_wdinfo->remain_on_ch_type, GFP_KERNEL);
;
} }
static void ro_ch_timer_process (void *FunctionContext) 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 #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; uint attr_contentlen = 0;
u8 *pattr = NULL; 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 * 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) if (req>>1 == resp >>1)
return req&0x01 ? true : false; 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); struct wifidirect_info *pwdinfo= &(padapter->wdinfo);
;
switch(intCmdType) switch(intCmdType)
{ {
@ -4454,7 +4424,6 @@ void p2p_protocol_wk_hdl(struct adapter *padapter, int intCmdType)
} }
;
} }
#ifdef CONFIG_P2P_PS #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 find_p2p = false, find_p2p_ps = false;
u8 noa_offset, noa_num, noa_index; u8 noa_offset, noa_num, noa_index;
;
if(rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) 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) 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 pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter);
struct wifidirect_info *pwdinfo= &(padapter->wdinfo); struct wifidirect_info *pwdinfo= &(padapter->wdinfo);
;
// Pre action for p2p state // Pre action for p2p state
switch(p2p_ps_state) switch(p2p_ps_state)
@ -4626,7 +4592,6 @@ void p2p_ps_wk_hdl(struct adapter *padapter, u8 p2p_ps_state)
break; break;
} }
;
} }
u8 p2p_ps_wk_cmd(struct adapter*padapter, u8 p2p_ps_state, u8 enqueue) 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; struct cmd_priv *pcmdpriv = &padapter->cmdpriv;
u8 res = _SUCCESS; u8 res = _SUCCESS;
;
if ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) if ( rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)
#ifdef CONFIG_CONCURRENT_MODE #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)); init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra));
res = rtw_enqueue_cmd(pcmdpriv, ph2c); res = rtw_enqueue_cmd(pcmdpriv, ph2c);
} } else {
else
{
p2p_ps_wk_hdl(padapter, p2p_ps_state); p2p_ps_wk_hdl(padapter, p2p_ps_state);
} }
exit: exit:
;
return res; return res;

View file

@ -693,7 +693,6 @@ union recv_frame * decryptor(struct adapter *padapter,union recv_frame *precv_fr
} }
//###set the security information in the recv_frame //###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) union recv_frame * portctrl(struct adapter *adapter,union recv_frame * precv_frame)
{ {
u8 *psta_addr, *ptr; 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 ether_type=0;
u16 eapol_type = 0x888e;//for Funia BD's WPA issue u16 eapol_type = 0x888e;//for Funia BD's WPA issue
struct rx_pkt_attrib *pattrib; struct rx_pkt_attrib *pattrib;
__be16 be_tmp;
; ;
pstapriv = &adapter->stapriv; pstapriv = &adapter->stapriv;
@ -735,8 +734,8 @@ union recv_frame * portctrl(struct adapter *adapter,union recv_frame * precv_fra
//get ether_type //get ether_type
ptr=ptr+pfhdr->attrib.hdrlen+pfhdr->attrib.iv_len+LLC_HEADER_SIZE; ptr=ptr+pfhdr->attrib.hdrlen+pfhdr->attrib.iv_len+LLC_HEADER_SIZE;
_rtw_memcpy(&ether_type,ptr, 2); memcpy(&be_tmp, ptr, 2);
ether_type= ntohs((unsigned short )ether_type); ether_type= ntohs(be_tmp);
if (ether_type == eapol_type) { if (ether_type == eapol_type) {
prtnframe=precv_frame; prtnframe=precv_frame;
@ -2261,7 +2260,7 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
u8 bsnaphdr; u8 bsnaphdr;
u8 *psnap_type; u8 *psnap_type;
struct ieee80211_snap_hdr *psnap; struct ieee80211_snap_hdr *psnap;
__be16 be_tmp;
sint ret=_SUCCESS; sint ret=_SUCCESS;
struct adapter *adapter =precvframe->u.hdr.adapter; struct adapter *adapter =precvframe->u.hdr.adapter;
struct mlme_priv *pmlmepriv = &adapter->mlmepriv; 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)); 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(&eth_type, ptr+rmv_len, 2); memcpy(&be_tmp, ptr+rmv_len, 2);
eth_type= ntohs((unsigned short )eth_type); //pattrib->ether_type eth_type= ntohs(be_tmp); //pattrib->ether_type
pattrib->eth_type = eth_type; pattrib->eth_type = eth_type;
if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == true)) if ((check_fwstate(pmlmepriv, WIFI_MP_STATE) == true))
@ -2310,7 +2309,7 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
eth_type = 0x8712; eth_type = 0x8712;
// append rx status for mp test packets // append rx status for mp test packets
ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr)+2)-24); 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; ptr+=24;
} }
else { else {
@ -2321,8 +2320,8 @@ sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
_rtw_memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN); _rtw_memcpy(ptr+ETH_ALEN, pattrib->src, ETH_ALEN);
if(!bsnaphdr) { if(!bsnaphdr) {
len = htons(len); be_tmp = htons(len);
_rtw_memcpy(ptr+12, &len, 2); _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->src, ETH_ALEN);
_rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN); _rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN);
} else { } else {
u16 len; __be16 len;
/* Leave Ethernet header part of hdr and full payload */ /* Leave Ethernet header part of hdr and full payload */
len = htons(sub_skb->len); len = htons(sub_skb->len);
_rtw_memcpy(skb_push(sub_skb, 2), &len, 2); memcpy(skb_push(sub_skb, 2), &len, 2);
_rtw_memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN); 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->dst, ETH_ALEN);
} }
/* Indicat the packets to upper layer */ /* Indicat the packets to upper layer */

View file

@ -139,7 +139,7 @@ exit:
; ;
} }
static u32 getcrc32(u8 *buf, sint len) static __le32 getcrc32(u8 *buf, sint len)
{ {
u8 *p; u8 *p;
u32 crc; u32 crc;
@ -153,7 +153,7 @@ static u32 getcrc32(u8 *buf, sint len)
crc = crc32_table[ (crc ^ *p) & 0xff] ^ (crc >> 8); 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; 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_init(&mycontext, wepkey,3+keylength);
arcfour_encrypt(&mycontext, payload, payload, length); arcfour_encrypt(&mycontext, payload, payload, length);
@ -222,7 +222,7 @@ void rtw_wep_encrypt(struct adapter *padapter, u8 *pxmitframe)
else else
{ {
length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; 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_init(&mycontext, wepkey,3+keylength);
arcfour_encrypt(&mycontext, payload, payload, length); arcfour_encrypt(&mycontext, payload, payload, length);
arcfour_encrypt(&mycontext, payload+length, crc, 4); 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); arcfour_encrypt(&mycontext, payload, payload, length);
//calculate icv and compare the icv //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]) 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 if((curfragnum+1)==pattrib->nr_frags){ //4 the last fragment
length=pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len- pattrib->icv_len; 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)); 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_init(&mycontext, rc4key,16);
arcfour_encrypt(&mycontext, payload, payload, length); arcfour_encrypt(&mycontext, payload, payload, length);
@ -743,7 +743,7 @@ u32 rtw_tkip_encrypt(struct adapter *padapter, u8 *pxmitframe)
} }
else{ else{
length=pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len ; 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_init(&mycontext,rc4key,16);
arcfour_encrypt(&mycontext, payload, payload, length); arcfour_encrypt(&mycontext, payload, payload, length);
arcfour_encrypt(&mycontext, payload+length, crc, 4); 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_init(&mycontext, rc4key,16);
arcfour_encrypt(&mycontext, payload, payload, length); 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]) 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 * OMAC1 was standardized with the name CMAC by NIST in a Special Publication
* (SP) 800-38B. * (SP) 800-38B.
*/ //modify for CONFIG_IEEE80211W */ //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); return omac1_aes_128_vector(key, 1, &data, &data_len, mac);
} }

View file

@ -1150,8 +1150,8 @@ void HT_caps_handler(struct adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE)
// Commented by Albert 2010/07/12 // Commented by Albert 2010/07/12
// Have to handle the endian issue after copying. // Have to handle the endian issue after copying.
// HT_ext_caps didn't be used yet. // 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_caps_info = 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_ext_caps = pmlmeinfo->HT_caps.u.HT_cap_element.HT_ext_caps;
rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type)); 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_); p = rtw_get_ie(bssid->IEs + _FIXED_IE_LENGTH_, _HT_CAPABILITY_IE_, &len, bssid->IELength - _FIXED_IE_LENGTH_);
if(p && len>0) { if(p && len>0) {
pht_cap = (struct rtw_ieee80211_ht_cap *)(p + 2); 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 { } else {
ht_cap_info = 0; ht_cap_info = 0;
} }
@ -1845,15 +1845,11 @@ int support_short_GI(struct adapter *padapter, struct HT_caps_element *pHT_caps)
bit_offset = (pmlmeext->cur_bwmode & HT_CHANNEL_WIDTH_40)? 6: 5; 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; return _SUCCESS;
}
else else
{
return _FAIL; return _FAIL;
} }
}
unsigned char get_highest_rate_idx(u32 mask) 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); 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) void update_bmc_sta_support_rate(struct adapter *padapter, u32 mac_id)
{ {
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); 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) void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len)
{ {
u8* pIE; u8* pIE;
u32 *pbuf; __le32 *pbuf;
pIE = pframe + sizeof(struct rtw_ieee80211_hdr_3addr); pIE = pframe + sizeof(struct rtw_ieee80211_hdr_3addr);
pbuf = (u32*)pIE; pbuf = (__le32 *)pIE;
pmlmeext->TSFValue = le32_to_cpu(*(pbuf+1)); 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) 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) void beacon_timing_control(struct adapter *padapter)

View file

@ -28,6 +28,7 @@
#include <circ_buf.h> #include <circ_buf.h>
#include <ip.h> #include <ip.h>
#include <usb_ops.h> #include <usb_ops.h>
#include "rtw_br_ext.h"
static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 }; static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 };
static u8 RFC1042_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0x00 }; 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 #endif //CONFIG_TDLS
sint res = _SUCCESS; sint res = _SUCCESS;
u16 *fctrl = &pwlanhdr->frame_ctl; __le16 *fctrl = &pwlanhdr->frame_ctl;
struct sta_info *psta; struct sta_info *psta;
@ -2167,10 +2168,7 @@ s32 rtw_put_snap(u8 *data, u16 h_proto)
snap->oui[1] = oui[1]; snap->oui[1] = oui[1];
snap->oui[2] = oui[2]; snap->oui[2] = oui[2];
*(u16 *)(data + SNAP_SIZE) = htons(h_proto); *(__be16 *)(data + SNAP_SIZE) = htons(h_proto);
;
return SNAP_SIZE + sizeof(u16); return SNAP_SIZE + sizeof(u16);
} }
@ -2430,7 +2428,7 @@ s32 rtw_free_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf)
return _SUCCESS; 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 if (pxframe != NULL)//default value setting
{ {
@ -2980,7 +2978,7 @@ void rtw_init_hwxmits(struct hw_xmit *phwxmit, sint entry)
} }
#ifdef CONFIG_BR_EXT #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 sk_buff *skb = *pskb;
struct xmit_priv *pxmitpriv = &padapter->xmitpriv; 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) && if ( !(skb->data[0] & 1) &&
br_port && br_port &&
memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) && memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) &&
*((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)) == __constant_htons(ETH_P_IP) && *((__be16 *)(skb->data+MACADDRLEN*2)) == __constant_htons(ETH_P_IP) &&
!memcmp(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN) && padapter->scdb_entry) { !memcmp(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN) && padapter->scdb_entry) {
memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN); memcpy(skb->data+MACADDRLEN, GET_MY_HWADDR(padapter), MACADDRLEN);
padapter->scdb_entry->ageing_timer = jiffies; 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 && // if (priv->dev->br_port &&
// !memcmp(skb->data+MACADDRLEN, priv->br_mac, MACADDRLEN)) { // !memcmp(skb->data+MACADDRLEN, priv->br_mac, MACADDRLEN)) {
#if 1 #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; is_vlan_tag = 1;
vlan_hdr = *((unsigned short *)(skb->data+MACADDRLEN*2+2)); vlan_hdr = *((unsigned short *)(skb->data+MACADDRLEN*2+2));
for (i=0; i<6; i++) 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 SA == br_mac && skb== IP => copy SIP to br_ip ?? why
if (!memcmp(skb->data+MACADDRLEN, padapter->br_mac, MACADDRLEN) && 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); 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)) { 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, if ((padapter->scdb_entry = (struct nat25_network_db_entry *)scdb_findEntry(padapter,
skb->data+MACADDRLEN, skb->data+WLAN_ETHHDR_LEN+12)) != NULL) { skb->data+MACADDRLEN, skb->data+WLAN_ETHHDR_LEN+12)) != NULL) {
memcpy(padapter->scdb_mac, skb->data+MACADDRLEN, MACADDRLEN); 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); skb_push(skb, 4);
for (i=0; i<6; i++) for (i=0; i<6; i++)
*((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); *((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; *((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); skb_push(skb, 4);
for (i=0; i<6; i++) for (i=0; i<6; i++)
*((unsigned short *)(skb->data+i*2)) = *((unsigned short *)(skb->data+4+i*2)); *((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; *((unsigned short *)(skb->data+MACADDRLEN*2+2)) = vlan_hdr;
} }
} }
@ -4090,7 +4086,7 @@ int rtw_sctx_wait(struct submit_ctx *sctx)
return ret; return ret;
} }
bool rtw_sctx_chk_waring_status(int status) static bool rtw_sctx_chk_waring_status(int status)
{ {
switch(status) { switch(status) {
case RTW_SCTX_DONE_UNKNOWN: case RTW_SCTX_DONE_UNKNOWN:

View file

@ -72,9 +72,12 @@ typedef void * RT_TIMER_CALL_BACK;
#define FALSE false #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_A_88E(__pTxDesc, __Value) \
#define SET_TX_DESC_ANTSEL_B_88E(__pTxDesc, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 25, 1, __Value) SET_BITS_TO_LE_4BYTE(__pTxDesc+8, 24, 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_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 useless flag to avoid compile warning
#define USE_WORKITEM 0 #define USE_WORKITEM 0

View file

@ -30,6 +30,7 @@
#include <rtw_ioctl_set.h> #include <rtw_ioctl_set.h>
#include <rtl8188e_hal.h> #include <rtl8188e_hal.h>
#include <rtl8188e_cmd.h>
#define CONFIG_H2C_EF #define CONFIG_H2C_EF
@ -170,38 +171,6 @@ exit:
return ret; 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*)(&param));
return res;
}
#endif //CONFIG_AUTOSUSPEND && SUPPORT_HW_RFOFF_DETECTED
*/
u8 rtl8188e_set_rssi_cmd(struct adapter*padapter, u8 *param) u8 rtl8188e_set_rssi_cmd(struct adapter*padapter, u8 *param)
{ {
u8 res=_SUCCESS; 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__); DBG_8192C("==>%s fw dont support RA \n",__FUNCTION__);
res=_FAIL; res=_FAIL;
} }
;
return res; return res;
} }
@ -226,20 +192,18 @@ u8 rtl8188e_set_raid_cmd(struct adapter*padapter, u32 mask)
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
; ;
if(pHalData->fw_ractrl == true){ if(pHalData->fw_ractrl == true){
__le32 lmask;
_rtw_memset(buf, 0, 3); _rtw_memset(buf, 0, 3);
mask = cpu_to_le32( mask ); lmask = cpu_to_le32( mask );
_rtw_memcpy(buf, &mask, 3); _rtw_memcpy(buf, &lmask, 3);
FillH2CCmd_88E(padapter, H2C_DM_MACID_CFG, 3, buf); FillH2CCmd_88E(padapter, H2C_DM_MACID_CFG, 3, buf);
}else{ }else{
DBG_8192C("==>%s fw dont support RA \n",__FUNCTION__); DBG_8192C("==>%s fw dont support RA \n",__FUNCTION__);
res=_FAIL; res=_FAIL;
} }
;
return res; return res;
} }
//bitmap[0:27] = tx_rate_bitmap //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; 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; u32 reg_macid_no_link = REG_MACID_NO_LINK_0;
opmode = (u8) mst_rpt; opmode = (u8) mst_rpt;
macid = (u8)(mst_rpt >> 8) ; macid = (u8)(mst_rpt >> 8) ;
@ -383,10 +347,10 @@ 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; struct rtw_ieee80211_hdr *pwlanhdr;
u16 *fctrl; __le16 *fctrl;
u32 rate_len, pktlen; u32 rate_len, pktlen;
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
@ -485,10 +449,10 @@ _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; struct rtw_ieee80211_hdr *pwlanhdr;
u16 *fctrl; __le16 *fctrl;
u32 pktlen; u32 pktlen;
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
@ -515,7 +479,7 @@ void ConstructPSPoll(struct adapter *padapter, u8 *pframe, u32 *pLength)
*pLength = 16; *pLength = 16;
} }
void ConstructNullFunctionData( static void ConstructNullFunctionData(
struct adapter *padapter, struct adapter *padapter,
u8 *pframe, u8 *pframe,
u32 *pLength, u32 *pLength,
@ -526,7 +490,7 @@ void ConstructNullFunctionData(
u8 bForcePowerSave) u8 bForcePowerSave)
{ {
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
u16 *fctrl; __le16 *fctrl;
u32 pktlen; u32 pktlen;
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct wlan_network *cur_network = &pmlmepriv->cur_network; struct wlan_network *cur_network = &pmlmepriv->cur_network;
@ -588,46 +552,6 @@ void ConstructNullFunctionData(
*pLength = pktlen; *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 #ifdef CONFIG_WOWLAN
// //
// Description: // Description:
@ -786,7 +710,7 @@ static void ConstructARPResponse(
} }
#endif #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 u1H2CRsvdPageParm[H2C_8188E_RSVDPAGE_LOC_LEN]={0};
u8 u1H2CAoacRsvdPageParm[H2C_8188E_AOAC_RSVDPAGE_LOC_LEN]={0}; u8 u1H2CAoacRsvdPageParm[H2C_8188E_AOAC_RSVDPAGE_LOC_LEN]={0};

View file

@ -2987,14 +2987,11 @@ Hal_EfuseParseIDCode88E(
// Checl 0x8129 again for making sure autoload status!! // Checl 0x8129 again for making sure autoload status!!
EEPROMId = le16_to_cpu(*((u16*)hwinfo)); EEPROMId = le16_to_cpu(*((__le16*)hwinfo));
if (EEPROMId != RTL_EEPROM_ID) if (EEPROMId != RTL_EEPROM_ID) {
{
DBG_8192C("EEPROM ID(%#x) is invalid!!\n", EEPROMId); DBG_8192C("EEPROM ID(%#x) is invalid!!\n", EEPROMId);
pEEPROM->bautoload_fail_flag = true; pEEPROM->bautoload_fail_flag = true;
} } else {
else
{
pEEPROM->bautoload_fail_flag = false; pEEPROM->bautoload_fail_flag = false;
} }

View file

@ -190,70 +190,66 @@ void update_recvframe_attrib_88e(
//phdr = &precvframe->u.hdr; //phdr = &precvframe->u.hdr;
report.rxdw0 = le32_to_cpu(prxstat->rxdw0); report.rxdw0 = prxstat->rxdw0;
report.rxdw1 = le32_to_cpu(prxstat->rxdw1); report.rxdw1 = prxstat->rxdw1;
report.rxdw2 = le32_to_cpu(prxstat->rxdw2); report.rxdw2 = prxstat->rxdw2;
report.rxdw3 = le32_to_cpu(prxstat->rxdw3); report.rxdw3 = prxstat->rxdw3;
report.rxdw4 = le32_to_cpu(prxstat->rxdw4); report.rxdw4 = prxstat->rxdw4;
report.rxdw5 = le32_to_cpu(prxstat->rxdw5); report.rxdw5 = prxstat->rxdw5;
prxreport = (PRXREPORT)&report; prxreport = (PRXREPORT)&report;
pattrib = &precvframe->u.hdr.attrib; pattrib = &precvframe->u.hdr.attrib;
_rtw_memset(pattrib, 0, sizeof(struct rx_pkt_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 // 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 if(pattrib->pkt_rpt_type == NORMAL_RX)//Normal rx packet
{ {
pattrib->pkt_len = (u16)(report.rxdw0 &0x00003fff);//(u16)prxreport->pktlen; pattrib->pkt_len = (u16)(le32_to_cpu(report.rxdw0) &0x00003fff);//(u16)prxreport->pktlen;
pattrib->drvinfo_sz = (u8)((report.rxdw0 >> 16) & 0xf) * 8;//(u8)(prxreport->drvinfosize << 3); 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->bdecrypted = (le32_to_cpu(report.rxdw0) & BIT(27))? 0:1;//(u8)(prxreport->swdec ? 0 : 1);
pattrib->encrypt = (u8)((report.rxdw0 >> 20) & 0x7);//(u8)prxreport->security; pattrib->encrypt = (u8)((le32_to_cpu(report.rxdw0) >> 20) & 0x7);//(u8)prxreport->security;
pattrib->qos = (u8)((report.rxdw0 >> 23) & 0x1);//(u8)prxreport->qos; pattrib->qos = (u8)((le32_to_cpu(report.rxdw0) >> 23) & 0x1);//(u8)prxreport->qos;
pattrib->priority = (u8)((report.rxdw1 >> 8) & 0xf);//(u8)prxreport->tid; 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->seq_num = (u16)(le32_to_cpu(report.rxdw2) & 0x00000fff);//(u16)prxreport->seq;
pattrib->frag_num = (u8)((report.rxdw2 >> 12) & 0xf);//(u8)prxreport->frag; pattrib->frag_num = (u8)((le32_to_cpu(report.rxdw2) >> 12) & 0xf);//(u8)prxreport->frag;
pattrib->mfrag = (u8)((report.rxdw1 >> 27) & 0x1);//(u8)prxreport->mf; pattrib->mfrag = (u8)((le32_to_cpu(report.rxdw1) >> 27) & 0x1);//(u8)prxreport->mf;
pattrib->mdata = (u8)((report.rxdw1 >> 26) & 0x1);//(u8)prxreport->md; pattrib->mdata = (u8)((le32_to_cpu(report.rxdw1) >> 26) & 0x1);//(u8)prxreport->md;
pattrib->mcs_rate = (u8)(report.rxdw3 & 0x3f);//(u8)prxreport->rxmcs; pattrib->mcs_rate = (u8)(le32_to_cpu(report.rxdw3) & 0x3f);//(u8)prxreport->rxmcs;
pattrib->rxht = (u8)((report.rxdw3 >> 6) & 0x1);//(u8)prxreport->rxht; 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->icv_err = (u8)((le32_to_cpu(report.rxdw0) >> 15) & 0x1);//(u8)prxreport->icverr;
pattrib->shift_sz = (u8)((report.rxdw0 >> 24) & 0x3); 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->pkt_len = TX_RPT1_PKT_LEN;
pattrib->drvinfo_sz = 0; pattrib->drvinfo_sz = 0;
} } else if(pattrib->pkt_rpt_type == TX_REPORT2) { // TX RPT
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->pkt_len =(u16)(report.rxdw0 & 0x3FF);//Rx length[9:0]
pattrib->drvinfo_sz = 0; pattrib->drvinfo_sz = 0;
// //
// Get TX report MAC ID valid. // Get TX report MAC ID valid.
// //
pattrib->MacIDValidEntry[0] = report.rxdw4; pattrib->MacIDValidEntry[0] = le32_to_cpu(report.rxdw4);
pattrib->MacIDValidEntry[1] = report.rxdw5; pattrib->MacIDValidEntry[1] = le32_to_cpu(report.rxdw5);
} }
else if(pattrib->pkt_rpt_type == HIS_REPORT)// USB HISR RPT 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;
} }
} }

View file

@ -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; u8 blnSetTxDescOffset;
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
@ -56,7 +56,7 @@ u8 urb_zero_packet_chk(struct adapter *padapter, int sz)
return blnSetTxDescOffset; 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; u16 *usPtr = (u16*)ptxdesc;
u32 count = 16; // (32 bytes / 2 bytes per XOR) => 16 times 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); ptxdesc->txdw7 &= cpu_to_le32(0xffff0000);
for(index = 0 ; index < count ; index++){ 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); ptxdesc->txdw7 |= cpu_to_le32(0x0000ffff&checksum);
@ -126,12 +126,10 @@ void rtl8188e_fill_fake_txdesc(
rtl8188eu_cal_txdesc_chksum(ptxdesc); 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)
{ {
if ((pattrib->encrypt > 0) && !pattrib->bswenc) {
switch (pattrib->encrypt) {
//SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES //SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES
case _WEP40_: case _WEP40_:
case _WEP104_: case _WEP104_:
@ -156,14 +154,11 @@ void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc)
case _NO_PRIVACY_: case _NO_PRIVACY_:
default: default:
break; break;
}
}
} }
} static void fill_txdesc_vcs(struct pkt_attrib *pattrib, __le32 *pdw)
}
void fill_txdesc_vcs(struct pkt_attrib *pattrib, u32 *pdw)
{ {
//DBG_8192C("cvs_mode=%d\n", pattrib->vcs_mode); //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); //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){ if(pattrib->ampdu_en==true){
ptxdesc->txdw2 |= cpu_to_le32(AGG_EN);//AGG EN ptxdesc->txdw2 |= cpu_to_le32(AGG_EN);//AGG EN
ptxdesc->txdw6 = cpu_to_le32(0x6666f800);
//SET_TX_DESC_MAX_AGG_NUM_88E(pDesc, 0x1F); } else{
//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->txdw2 |= cpu_to_le32(AGG_BK);//AGG BK ptxdesc->txdw2 |= cpu_to_le32(AGG_BK);//AGG BK
} }

View file

@ -2064,23 +2064,19 @@ Hal_EfuseParsePIDVID_8188EU(
if( !AutoLoadFail ) if( !AutoLoadFail )
{ {
// VID, PID // VID, PID
pHalData->EEPROMVID = EF2Byte( *(u16 *)&hwinfo[EEPROM_VID_88EU] ); pHalData->EEPROMVID = EF2BYTE(*(__le16 *)&hwinfo[EEPROM_VID_88EU]);
pHalData->EEPROMPID = EF2Byte( *(u16 *)&hwinfo[EEPROM_PID_88EU] ); pHalData->EEPROMPID = EF2BYTE(*(__le16 *)&hwinfo[EEPROM_PID_88EU]);
// Customer ID, 0x00 and 0xff are reserved for Realtek. // Customer ID, 0x00 and 0xff are reserved for Realtek.
pHalData->EEPROMCustomerID = *(u8 *)&hwinfo[EEPROM_CUSTOMERID_88E]; pHalData->EEPROMCustomerID = *(u8 *)&hwinfo[EEPROM_CUSTOMERID_88E];
pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID;
} else {
}
else
{
pHalData->EEPROMVID = EEPROM_Default_VID; pHalData->EEPROMVID = EEPROM_Default_VID;
pHalData->EEPROMPID = EEPROM_Default_PID; pHalData->EEPROMPID = EEPROM_Default_PID;
// Customer ID, 0x00 and 0xff are reserved for Realtek. // Customer ID, 0x00 and 0xff are reserved for Realtek.
pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID; pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID;
pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID;
} }
DBG_871X("VID = 0x%04X, PID = 0x%04X\n", pHalData->EEPROMVID, pHalData->EEPROMPID); DBG_871X("VID = 0x%04X, PID = 0x%04X\n", pHalData->EEPROMVID, pHalData->EEPROMPID);
@ -3827,7 +3823,7 @@ void SetHwReg8188EU(struct adapter *Adapter, u8 variable, u8* val)
#endif #endif
case HW_VAR_H2C_MEDIA_STATUS_RPT: case HW_VAR_H2C_MEDIA_STATUS_RPT:
{ {
rtl8188e_set_FwMediaStatus_cmd(Adapter , (*(u16 *)val)); rtl8188e_set_FwMediaStatus_cmd(Adapter, (*(__le16 *)val));
} }
break; break;
case HW_VAR_BCN_VALID: case HW_VAR_BCN_VALID:

View file

@ -59,168 +59,139 @@
* 3. After read integer from IO. * 3. After read integer from IO.
*/ */
// /* Convert little data endian to host ordering */
// Byte Swapping routine. #define EF1BYTE(_val) \
// ((u8)(_val))
#define EF1Byte #define EF2BYTE(_val) \
#define EF2Byte le16_to_cpu (le16_to_cpu(_val))
#define EF4Byte le32_to_cpu #define EF4BYTE(_val) \
(le32_to_cpu(_val))
// /* Read data from memory */
// Read LE format data from memory #define READEF1BYTE(_ptr) \
// EF1BYTE(*((u8 *)(_ptr)))
#define ReadEF1Byte(_ptr) EF1Byte(*((u8 *)(_ptr))) /* Read le16 data from memory and convert to host ordering */
#define ReadEF2Byte(_ptr) EF2Byte(*((u16 *)(_ptr))) #define READEF2BYTE(_ptr) \
#define ReadEF4Byte(_ptr) EF4Byte(*((u32 *)(_ptr))) EF2BYTE(*(_ptr))
#define READEF4BYTE(_ptr) \
EF4BYTE(*(_ptr))
// /* Write data to memory */
// Write LE data to memory #define WRITEEF1BYTE(_ptr, _val) \
// do { \
#define WriteEF1Byte(_ptr, _val) (*((u8 *)(_ptr)))=EF1Byte(_val) (*((u8 *)(_ptr))) = EF1BYTE(_val) \
#define WriteEF2Byte(_ptr, _val) (*((u16 *)(_ptr)))=EF2Byte(_val) } while (0)
#define WriteEF4Byte(_ptr, _val) (*((u32 *)(_ptr)))=EF4Byte(_val) /* Write le data to memory in host ordering */
#define WRITEEF2BYTE(_ptr, _val) \
do { \
(*((u16 *)(_ptr))) = EF2BYTE(_val) \
} while (0)
// #define WRITEEF4BYTE(_ptr, _val) \
// Example: do { \
// BIT_LEN_MASK_32(0) => 0x00000000 (*((u32 *)(_ptr))) = EF2BYTE(_val) \
// BIT_LEN_MASK_32(1) => 0x00000001 } while (0)
// 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))
// /* Create a bit mask
// Description: * Examples:
// Return 4-byte value in host byte ordering from * BIT_LEN_MASK_32(0) => 0x00000000
// 4-byte pointer in litten-endian system. * BIT_LEN_MASK_32(1) => 0x00000001
// * BIT_LEN_MASK_32(2) => 0x00000003
#define LE_P4BYTE_TO_HOST_4BYTE(__pStart) \ * BIT_LEN_MASK_32(32) => 0xFFFFFFFF
(EF4Byte(*((u32 *)(__pStart)))) */
#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)))
// /* Create an offset bit mask
// Description: * Examples:
// Translate subfield (continuous bits in little-endian) of 4-byte value in litten byte to * BIT_OFFSET_LEN_MASK_32(0, 2) => 0x00000003
// 4-byte value in host byte ordering. * BIT_OFFSET_LEN_MASK_32(16, 2) => 0x00030000
// */
#define LE_BITS_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ #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) ) \ (LE_P4BYTE_TO_HOST_4BYTE(__pstart) >> (__bitoffset)) & \
& \ BIT_LEN_MASK_32(__bitlen) \
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:
// Description: * Mask subfield (continuous bits in little-endian) of 4-byte value
// 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.
// and return the result in 4-byte value in host byte ordering. */
// #define LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) \
#define LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \
( \ ( \
LE_P4BYTE_TO_HOST_4BYTE(__pStart) \ LE_P4BYTE_TO_HOST_4BYTE(__pstart) & \
& \ (~BIT_OFFSET_LEN_MASK_32(__bitoffset, __bitlen)) \
( ~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:
// Description: * Set subfield of little-endian 4-byte value to specified value.
// Set subfield of little-endian 4-byte value to specified value. */
// #define SET_BITS_TO_LE_4BYTE(__pstart, __bitoffset, __bitlen, __val) \
#define SET_BITS_TO_LE_4BYTE(__pStart, __BitOffset, __BitLen, __Value) \ *((u32 *)(__pstart)) = \
*((u32 *)(__pStart)) = \ ( \
EF4Byte( \ LE_BITS_CLEARED_TO_4BYTE(__pstart, __bitoffset, __bitlen) | \
LE_BITS_CLEARED_TO_4BYTE(__pStart, __BitOffset, __BitLen) \ ((((u32)__val) & BIT_LEN_MASK_32(__bitlen)) << (__bitoffset)) \
| \ )
( (((u32)__Value) & 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 SET_BITS_TO_LE_1BYTE(__pstart, __bitoffset, __bitlen, __val) \
#define BIT_LEN_MASK_16(__BitLen) \ *((u8 *)(__pstart)) = EF1BYTE \
(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) ) \ LE_BITS_CLEARED_TO_1BYTE(__pstart, __bitoffset, __bitlen) | \
& \ ((((u8)__val) & BIT_LEN_MASK_8(__bitlen)) << (__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) \
); \
}
// Get the N-bytes aligment offset from the current length // Get the N-bytes aligment offset from the current length
#define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment)) #define N_BYTE_ALIGMENT(__Value, __Aligment) ((__Aligment == 1) ? (__Value) : (((__Value + __Aligment - 1) / __Aligment) * __Aligment))

View file

@ -145,7 +145,7 @@ void rtl8188e_set_p2p_ps_offload_cmd(struct adapter *padapter, u8 p2p_ps_state);
#endif //CONFIG_P2P #endif //CONFIG_P2P
void CheckFwRsvdPageContent(struct adapter *padapter); 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 #ifdef CONFIG_TSF_RESET_OFFLOAD
//u8 rtl8188e_reset_tsf(struct adapter *padapter, u8 reset_port); //u8 rtl8188e_reset_tsf(struct adapter *padapter, u8 reset_port);

View file

@ -113,10 +113,10 @@ typedef struct _RT_8188E_FIRMWARE_HDR
// 8-byte alinment required // 8-byte alinment required
//--- LONG WORD 0 ---- //--- 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 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 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 u8 Subversion; // FW Subversion, default 0x00
u16 Rsvd1; u16 Rsvd1;
@ -126,12 +126,12 @@ typedef struct _RT_8188E_FIRMWARE_HDR
u8 Date; // Release time Date field u8 Date; // Release time Date field
u8 Hour; // Release time Hour field u8 Hour; // Release time Hour field
u8 Minute; // Release time Minute field u8 Minute; // Release time Minute field
u16 RamCodeSize; // The size of RAM code __le16 RamCodeSize; // The size of RAM code
u8 Foundry; u8 Foundry;
u8 Rsvd2; u8 Rsvd2;
//--- LONG WORD 2 ---- //--- LONG WORD 2 ----
u32 SvnIdx; // The SVN entry index __le32 SvnIdx; // The SVN entry index
u32 Rsvd3; u32 Rsvd3;
//--- LONG WORD 3 ---- //--- LONG WORD 3 ----

View file

@ -72,5 +72,7 @@ struct br_ext_info {
void nat25_db_cleanup(struct adapter *priv); void nat25_db_cleanup(struct adapter *priv);
void netdev_br_init(struct net_device *netdev); 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_ #endif // _RTW_BR_EXT_H_

View file

@ -39,9 +39,9 @@ int rtw_IOL_append_END_cmd(struct xmit_frame *xmit_frame);
struct ioreg_cfg{ struct ioreg_cfg{
u8 length; u8 length;
u8 cmd_id; u8 cmd_id;
u16 address; __le16 address;
u32 data; __le32 data;
u32 mask; __le32 mask;
}; };
enum ioreg_cmd{ enum ioreg_cmd{
IOREG_CMD_LLT = 0x01, IOREG_CMD_LLT = 0x01,

View file

@ -189,12 +189,12 @@ struct rx_pkt_attrib {
#define RXDESC_OFFSET RXDESC_SIZE #define RXDESC_OFFSET RXDESC_SIZE
struct recv_stat { struct recv_stat {
unsigned int rxdw0; __le32 rxdw0;
unsigned int rxdw1; __le32 rxdw1;
unsigned int rxdw2; __le32 rxdw2;
unsigned int rxdw3; __le32 rxdw3;
unsigned int rxdw4; __le32 rxdw4;
unsigned int rxdw5; __le32 rxdw5;
}; };
#define EOR BIT(30) #define EOR BIT(30)

View file

@ -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, _rtw_memcpy((void*)channels, (void*)rtw_2ghz_channels,
sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM 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, _rtw_memcpy((void*)channels, (void*)rtw_5ghz_a_channels,
sizeof(struct ieee80211_channel)*RTW_5G_CHANNELS_NUM 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, _rtw_memcpy(rates, rtw_g_rates,
sizeof(struct ieee80211_rate)*RTW_G_RATES_NUM 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, _rtw_memcpy(rates, rtw_a_rates,
sizeof(struct ieee80211_rate)*RTW_A_RATES_NUM 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 enum ieee80211_band band
) )
{ {
@ -243,7 +243,7 @@ exit:
return spt_band; 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; u32 size;
@ -357,7 +357,7 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(struct adapter *padapter, struct wl
u8 buf[MAX_BSSINFO_LEN], *pbuf; u8 buf[MAX_BSSINFO_LEN], *pbuf;
size_t len,bssinf_len=0; size_t len,bssinf_len=0;
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
unsigned short *fctrl; __le16 *fctrl;
u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; u8 bc_addr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
struct wireless_dev *wdev = padapter->rtw_wdev; 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_timestamp = jiffies_to_msecs(jiffies)*1000; /* uSec */
notify_interval = le16_to_cpu(*(u16*)rtw_get_beacon_interval_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(*(u16*)rtw_get_capability_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_; 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 adapter *padapter = (struct adapter *)rtw_netdev_priv(ndev);
struct security_priv *psecuritypriv = &padapter->securitypriv; 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) #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 #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 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 /* Check if this ia a Wireless Distribution System (WDS) frame
* which has 4 MAC addresses * which has 4 MAC addresses
*/ */
if (dot11_hdr->frame_control & 0x0080) if (frame_ctl & 0x0080)
qos_len = 2; qos_len = 2;
if ((dot11_hdr->frame_control & 0x0300) == 0x0300) if ((frame_ctl & 0x0300) == 0x0300)
dot11_hdr_len += 6; dot11_hdr_len += 6;
memcpy(dst_mac_addr, dot11_hdr->addr1, sizeof(dst_mac_addr)); 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; struct pkt_attrib *pattrib;
unsigned char *pframe; unsigned char *pframe;
struct rtw_ieee80211_hdr *pwlanhdr; struct rtw_ieee80211_hdr *pwlanhdr;
unsigned short *fctrl; __le16 *fctrl;
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); 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); struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
u8 *frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); u8 *frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr));
size_t frame_body_len = len - 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__ ); DBG_871X( "[%s] In\n", __FUNCTION__ );
@ -4255,11 +4253,10 @@ 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; 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_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); rtw_get_wps_attr_content( wpsie, wpsielen, WPS_ATTR_DEVICE_PWID, (u8*) &be_tmp, &wps_devicepassword_id_len);
wps_devicepassword_id = be16_to_cpu( wps_devicepassword_id ); wps_devicepassword_id = be16_to_cpu(be_tmp);
switch(wps_devicepassword_id) switch(wps_devicepassword_id) {
{
case WPS_DPID_PIN: case WPS_DPID_PIN:
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL; pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL;
break; break;
@ -4289,17 +4286,13 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8
} }
//start to build provision_request frame //start to build provision_request frame
_rtw_memset(wpsie, 0, sizeof(wpsie)); _rtw_memset(wpsie, 0, sizeof(wpsie));
_rtw_memset(p2p_ie, 0, sizeof(p2p_ie)); _rtw_memset(p2p_ie, 0, sizeof(p2p_ie));
p2p_ielen = 0; p2p_ielen = 0;
if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL) if ((pmgntframe = alloc_mgtxmitframe(pxmitpriv)) == NULL)
{
return; return;
}
//update attribute //update attribute
pattrib = &pmgntframe->attrib; pattrib = &pmgntframe->attrib;
@ -4384,16 +4377,16 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8
wpsielen = 0; wpsielen = 0;
// WPS OUI // WPS OUI
*(u32*) ( wpsie ) = cpu_to_be32( WPSOUI ); *(__be32 *) ( wpsie ) = cpu_to_be32( WPSOUI );
wpsielen += 4; wpsielen += 4;
// WPS version // WPS version
// Type: // Type:
*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 ); *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_VER1 );
wpsielen += 2; wpsielen += 2;
// Length: // Length:
*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 ); *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( 0x0001 );
wpsielen += 2; wpsielen += 2;
// Value: // Value:
@ -4401,15 +4394,15 @@ void rtw_cfg80211_issue_p2p_provision_request(struct adapter *padapter, const u8
// Config Method // Config Method
// Type: // Type:
*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD ); *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( WPS_ATTR_CONF_METHOD );
wpsielen += 2; wpsielen += 2;
// Length: // Length:
*(u16*) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 ); *(__be16 *) ( wpsie + wpsielen ) = cpu_to_be16( 0x0002 );
wpsielen += 2; wpsielen += 2;
// Value: // 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; wpsielen += 2;
pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen ); 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))) if((wps_ie = rtw_get_wps_ie(buf, len, NULL, &wps_ielen)))
{ {
uint attr_contentlen = 0; uint attr_contentlen = 0;
u16 uconfig_method, *puconfig_method = NULL; __be16 uconfig_method, *puconfig_method = NULL;
#ifdef CONFIG_DEBUG_CFG80211 #ifdef CONFIG_DEBUG_CFG80211
DBG_8192C("probe_resp_wps_ielen=%d\n", wps_ielen); 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)); //printk("config_method in wpsie of probe_resp = 0x%x\n", be16_to_cpu(*puconfig_method));
#endif #endif
uconfig_method = WPS_CM_PUSH_BUTTON; uconfig_method = cpu_to_be16(WPS_CM_PUSH_BUTTON);
uconfig_method = cpu_to_be16( uconfig_method );
*puconfig_method |= uconfig_method; *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; u8 is_GO = false;
u32 attr_contentlen = 0; u32 attr_contentlen = 0;
u16 cap_attr=0; u16 cap_attr=0;
__le16 le_tmp;
#ifdef CONFIG_DEBUG_CFG80211 #ifdef CONFIG_DEBUG_CFG80211
DBG_8192C("probe_resp_p2p_ielen=%d\n", p2p_ielen); DBG_8192C("probe_resp_p2p_ielen=%d\n", p2p_ielen);
#endif #endif
//Check P2P Capability ATTR //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; u8 grp_cap=0;
//DBG_8192C( "[%s] Got P2P Capability Attr!!\n", __FUNCTION__ ); //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); grp_cap = (u8)((cap_attr >> 8)&0xff);
is_GO = (grp_cap&BIT(0)) ? true:false; 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[1] = 0x00;
ht_cap->mcs.rx_mask[4] = 0x01; 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)) 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[1] = 0xFF;
ht_cap->mcs.rx_mask[4] = 0x01; 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 else
{ {