mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2024-11-25 14:03:40 +00:00
rtl8188eu: Fix most sparse warnings other than endedness problems
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
925510ff1a
commit
327817d32a
47 changed files with 667 additions and 1771 deletions
447
core/rtw_ap.c
447
core/rtw_ap.c
|
@ -46,8 +46,6 @@ void init_mlme_ap_info(_adapter *padapter)
|
||||||
//for ACL
|
//for ACL
|
||||||
_rtw_init_queue(&pacl_list->acl_node_q);
|
_rtw_init_queue(&pacl_list->acl_node_q);
|
||||||
|
|
||||||
//pmlmeext->bstart_bss = false;
|
|
||||||
|
|
||||||
start_ap_mode(padapter);
|
start_ap_mode(padapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,8 +58,6 @@ void free_mlme_ap_info(_adapter *padapter)
|
||||||
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);
|
||||||
|
|
||||||
//stop_ap_mode(padapter);
|
|
||||||
|
|
||||||
pmlmepriv->update_bcn = false;
|
pmlmepriv->update_bcn = false;
|
||||||
pmlmeext->bstart_bss = false;
|
pmlmeext->bstart_bss = false;
|
||||||
|
|
||||||
|
@ -78,9 +74,7 @@ void free_mlme_ap_info(_adapter *padapter)
|
||||||
rtw_free_stainfo(padapter, psta);
|
rtw_free_stainfo(padapter, psta);
|
||||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||||
|
|
||||||
|
|
||||||
_rtw_spinlock_free(&pmlmepriv->bcn_update_lock);
|
_rtw_spinlock_free(&pmlmepriv->bcn_update_lock);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_BCNTIM(_adapter *padapter)
|
static void update_BCNTIM(_adapter *padapter)
|
||||||
|
@ -91,12 +85,8 @@ static void update_BCNTIM(_adapter *padapter)
|
||||||
WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network);
|
WLAN_BSSID_EX *pnetwork_mlmeext = &(pmlmeinfo->network);
|
||||||
unsigned char *pie = pnetwork_mlmeext->IEs;
|
unsigned char *pie = pnetwork_mlmeext->IEs;
|
||||||
|
|
||||||
//DBG_88E("%s\n", __func__);
|
|
||||||
|
|
||||||
//update TIM IE
|
//update TIM IE
|
||||||
//if (pstapriv->tim_bitmap)
|
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;
|
u16 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;
|
||||||
|
@ -104,21 +94,14 @@ static void update_BCNTIM(_adapter *padapter)
|
||||||
tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap);
|
tim_bitmap_le = cpu_to_le16(pstapriv->tim_bitmap);
|
||||||
|
|
||||||
p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, _TIM_IE_, &tim_ielen, pnetwork_mlmeext->IELength - _FIXED_IE_LENGTH_);
|
p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, _TIM_IE_, &tim_ielen, pnetwork_mlmeext->IELength - _FIXED_IE_LENGTH_);
|
||||||
if (p != NULL && tim_ielen>0)
|
if (p != NULL && tim_ielen>0) {
|
||||||
{
|
|
||||||
tim_ielen += 2;
|
tim_ielen += 2;
|
||||||
|
|
||||||
premainder_ie = p+tim_ielen;
|
premainder_ie = p+tim_ielen;
|
||||||
|
|
||||||
tim_ie_offset = (sint)(p -pie);
|
tim_ie_offset = (sint)(p -pie);
|
||||||
|
|
||||||
remainder_ielen = pnetwork_mlmeext->IELength - tim_ie_offset - tim_ielen;
|
remainder_ielen = pnetwork_mlmeext->IELength - tim_ie_offset - tim_ielen;
|
||||||
|
|
||||||
//append TIM IE from dst_ie offset
|
//append TIM IE from dst_ie offset
|
||||||
dst_ie = p;
|
dst_ie = p;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
tim_ielen = 0;
|
tim_ielen = 0;
|
||||||
|
|
||||||
//calucate head_len
|
//calucate head_len
|
||||||
|
@ -128,9 +111,7 @@ static void update_BCNTIM(_adapter *padapter)
|
||||||
// get supported rates len
|
// get supported rates len
|
||||||
p = rtw_get_ie(pie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &tmp_len, (pnetwork_mlmeext->IELength - _BEACON_IE_OFFSET_));
|
p = rtw_get_ie(pie + _BEACON_IE_OFFSET_, _SUPPORTEDRATES_IE_, &tmp_len, (pnetwork_mlmeext->IELength - _BEACON_IE_OFFSET_));
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
{
|
|
||||||
offset += tmp_len+2;
|
offset += tmp_len+2;
|
||||||
}
|
|
||||||
|
|
||||||
//DS Parameter Set IE, len=3
|
//DS Parameter Set IE, len=3
|
||||||
offset += 3;
|
offset += 3;
|
||||||
|
@ -141,19 +122,13 @@ static void update_BCNTIM(_adapter *padapter)
|
||||||
|
|
||||||
//append TIM IE from offset
|
//append TIM IE from offset
|
||||||
dst_ie = pie + offset;
|
dst_ie = pie + offset;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remainder_ielen > 0) {
|
||||||
if (remainder_ielen>0)
|
|
||||||
{
|
|
||||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||||
if (pbackup_remainder_ie && premainder_ie)
|
if (pbackup_remainder_ie && premainder_ie)
|
||||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*dst_ie++=_TIM_IE_;
|
*dst_ie++=_TIM_IE_;
|
||||||
|
|
||||||
if ((pstapriv->tim_bitmap&0xff00) && (pstapriv->tim_bitmap&0x00fc))
|
if ((pstapriv->tim_bitmap&0xff00) && (pstapriv->tim_bitmap&0x00fc))
|
||||||
|
@ -171,27 +146,21 @@ static void update_BCNTIM(_adapter *padapter)
|
||||||
else
|
else
|
||||||
*dst_ie++ = 0;
|
*dst_ie++ = 0;
|
||||||
|
|
||||||
if (tim_ielen==4)
|
if (tim_ielen == 4) {
|
||||||
{
|
|
||||||
*dst_ie++ = *(u8*)&tim_bitmap_le;
|
*dst_ie++ = *(u8*)&tim_bitmap_le;
|
||||||
}
|
} else if (tim_ielen==5) {
|
||||||
else if (tim_ielen==5)
|
|
||||||
{
|
|
||||||
_rtw_memcpy(dst_ie, &tim_bitmap_le, 2);
|
_rtw_memcpy(dst_ie, &tim_bitmap_le, 2);
|
||||||
dst_ie+=2;
|
dst_ie+=2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//copy remainder IE
|
//copy remainder IE
|
||||||
if (pbackup_remainder_ie)
|
if (pbackup_remainder_ie) {
|
||||||
{
|
|
||||||
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||||
|
|
||||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||||
}
|
}
|
||||||
|
|
||||||
offset = (uint)(dst_ie - pie);
|
offset = (uint)(dst_ie - pie);
|
||||||
pnetwork_mlmeext->IELength = offset + remainder_ielen;
|
pnetwork_mlmeext->IELength = offset + remainder_ielen;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_INTERRUPT_BASED_TXBCN
|
#ifndef CONFIG_INTERRUPT_BASED_TXBCN
|
||||||
|
@ -199,8 +168,6 @@ static void update_BCNTIM(_adapter *padapter)
|
||||||
set_tx_beacon_cmd(padapter);
|
set_tx_beacon_cmd(padapter);
|
||||||
#endif
|
#endif
|
||||||
#endif //!CONFIG_INTERRUPT_BASED_TXBCN
|
#endif //!CONFIG_INTERRUPT_BASED_TXBCN
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *data, u8 len)
|
void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *data, u8 len)
|
||||||
|
@ -211,29 +178,23 @@ void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *d
|
||||||
u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL;
|
u8 *p, *dst_ie, *premainder_ie=NULL, *pbackup_remainder_ie=NULL;
|
||||||
u32 i, offset, ielen, ie_offset, remainder_ielen = 0;
|
u32 i, offset, ielen, ie_offset, remainder_ielen = 0;
|
||||||
|
|
||||||
for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pnetwork->IELength;)
|
for (i = sizeof(NDIS_802_11_FIXED_IEs); i < pnetwork->IELength;) {
|
||||||
{
|
|
||||||
pIE = (PNDIS_802_11_VARIABLE_IEs)(pnetwork->IEs + i);
|
pIE = (PNDIS_802_11_VARIABLE_IEs)(pnetwork->IEs + i);
|
||||||
|
|
||||||
if (pIE->ElementID > index)
|
if (pIE->ElementID > index) {
|
||||||
{
|
|
||||||
break;
|
break;
|
||||||
}
|
} else if (pIE->ElementID == index) { // already exist the same IE
|
||||||
else if (pIE->ElementID == index) // already exist the same IE
|
|
||||||
{
|
|
||||||
p = (u8 *)pIE;
|
p = (u8 *)pIE;
|
||||||
ielen = pIE->Length;
|
ielen = pIE->Length;
|
||||||
bmatch = true;
|
bmatch = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = (u8 *)pIE;
|
p = (u8 *)pIE;
|
||||||
ielen = pIE->Length;
|
ielen = pIE->Length;
|
||||||
i += (pIE->Length + 2);
|
i += (pIE->Length + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p != NULL && ielen>0)
|
if (p != NULL && ielen > 0) {
|
||||||
{
|
|
||||||
ielen += 2;
|
ielen += 2;
|
||||||
|
|
||||||
premainder_ie = p+ielen;
|
premainder_ie = p+ielen;
|
||||||
|
@ -248,8 +209,7 @@ void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *d
|
||||||
dst_ie = (p+ielen);
|
dst_ie = (p+ielen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remainder_ielen>0)
|
if (remainder_ielen > 0) {
|
||||||
{
|
|
||||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||||
if (pbackup_remainder_ie && premainder_ie)
|
if (pbackup_remainder_ie && premainder_ie)
|
||||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||||
|
@ -262,8 +222,7 @@ void rtw_add_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index, u8 *d
|
||||||
dst_ie+=len;
|
dst_ie+=len;
|
||||||
|
|
||||||
//copy remainder IE
|
//copy remainder IE
|
||||||
if (pbackup_remainder_ie)
|
if (pbackup_remainder_ie) {
|
||||||
{
|
|
||||||
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||||
|
|
||||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||||
|
@ -280,8 +239,7 @@ void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index)
|
||||||
u8 *pie = pnetwork->IEs;
|
u8 *pie = pnetwork->IEs;
|
||||||
|
|
||||||
p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, index, &ielen, pnetwork->IELength - _FIXED_IE_LENGTH_);
|
p = rtw_get_ie(pie + _FIXED_IE_LENGTH_, index, &ielen, pnetwork->IELength - _FIXED_IE_LENGTH_);
|
||||||
if (p != NULL && ielen>0)
|
if (p != NULL && ielen > 0) {
|
||||||
{
|
|
||||||
ielen += 2;
|
ielen += 2;
|
||||||
|
|
||||||
premainder_ie = p+ielen;
|
premainder_ie = p+ielen;
|
||||||
|
@ -293,16 +251,14 @@ void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index)
|
||||||
dst_ie = p;
|
dst_ie = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remainder_ielen>0)
|
if (remainder_ielen > 0) {
|
||||||
{
|
|
||||||
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
pbackup_remainder_ie = rtw_malloc(remainder_ielen);
|
||||||
if (pbackup_remainder_ie && premainder_ie)
|
if (pbackup_remainder_ie && premainder_ie)
|
||||||
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
_rtw_memcpy(pbackup_remainder_ie, premainder_ie, remainder_ielen);
|
||||||
}
|
}
|
||||||
|
|
||||||
//copy remainder IE
|
//copy remainder IE
|
||||||
if (pbackup_remainder_ie)
|
if (pbackup_remainder_ie) {
|
||||||
{
|
|
||||||
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
_rtw_memcpy(dst_ie, pbackup_remainder_ie, remainder_ielen);
|
||||||
|
|
||||||
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
rtw_mfree(pbackup_remainder_ie, remainder_ielen);
|
||||||
|
@ -312,31 +268,23 @@ void rtw_remove_bcn_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork, u8 index)
|
||||||
pnetwork->IELength = offset + remainder_ielen;
|
pnetwork->IELength = offset + remainder_ielen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static u8 chk_sta_is_alive(struct sta_info *psta)
|
||||||
u8 chk_sta_is_alive(struct sta_info *psta);
|
|
||||||
u8 chk_sta_is_alive(struct sta_info *psta)
|
|
||||||
{
|
{
|
||||||
u8 ret = false;
|
u8 ret = false;
|
||||||
#ifdef DBG_EXPIRATION_CHK
|
#ifdef DBG_EXPIRATION_CHK
|
||||||
DBG_88E("sta:%pM, rssi:%d, rx:"STA_PKTS_FMT", expire_to:%u, %s%ssq_len:%u\n"
|
DBG_88E("sta:%pM, rssi:%d, rx:"STA_PKTS_FMT", expire_to:%u, %s%ssq_len:%u\n",
|
||||||
, (psta->hwaddr)
|
(psta->hwaddr), psta->rssi_stat.UndecoratedSmoothedPWDB,
|
||||||
, psta->rssi_stat.UndecoratedSmoothedPWDB
|
STA_RX_PKTS_DIFF_ARG(psta), psta->expire_to,
|
||||||
//, STA_RX_PKTS_ARG(psta)
|
psta->state&WIFI_SLEEP_STATE ? "PS, " : "",
|
||||||
, STA_RX_PKTS_DIFF_ARG(psta)
|
psta->state&WIFI_STA_ALIVE_CHK_STATE ? "SAC, " : "",
|
||||||
, psta->expire_to
|
psta->sleepq_len);
|
||||||
, psta->state&WIFI_SLEEP_STATE?"PS, ":""
|
|
||||||
, psta->state&WIFI_STA_ALIVE_CHK_STATE?"SAC, ":""
|
|
||||||
, psta->sleepq_len
|
|
||||||
);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((psta->sta_stats.last_rx_data_pkts + psta->sta_stats.last_rx_ctrl_pkts) == (psta->sta_stats.rx_data_pkts + psta->sta_stats.rx_ctrl_pkts))
|
if ((psta->sta_stats.last_rx_data_pkts + psta->sta_stats.last_rx_ctrl_pkts) ==
|
||||||
{
|
(psta->sta_stats.rx_data_pkts + psta->sta_stats.rx_ctrl_pkts))
|
||||||
}
|
;
|
||||||
else
|
else
|
||||||
{
|
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
|
||||||
|
|
||||||
sta_update_last_rx_pkts(psta);
|
sta_update_last_rx_pkts(psta);
|
||||||
|
|
||||||
|
@ -366,21 +314,18 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
, FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->auth_list_cnt);
|
, FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->auth_list_cnt);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
while ((rtw_end_of_queue_search(phead, plist)) == false)
|
while ((rtw_end_of_queue_search(phead, plist)) == false) {
|
||||||
{
|
|
||||||
psta = LIST_CONTAINOR(plist, struct sta_info, auth_list);
|
psta = LIST_CONTAINOR(plist, struct sta_info, auth_list);
|
||||||
plist = get_next(plist);
|
plist = get_next(plist);
|
||||||
|
|
||||||
if (psta->expire_to>0)
|
if (psta->expire_to > 0) {
|
||||||
{
|
|
||||||
psta->expire_to--;
|
psta->expire_to--;
|
||||||
if (psta->expire_to == 0)
|
if (psta->expire_to == 0) {
|
||||||
{
|
|
||||||
rtw_list_delete(&psta->auth_list);
|
rtw_list_delete(&psta->auth_list);
|
||||||
pstapriv->auth_list_cnt--;
|
pstapriv->auth_list_cnt--;
|
||||||
|
|
||||||
DBG_88E("auth expire %02X%02X%02X%02X%02X%02X\n",
|
DBG_88E("auth expire %6ph\n",
|
||||||
psta->hwaddr[0],psta->hwaddr[1],psta->hwaddr[2],psta->hwaddr[3],psta->hwaddr[4],psta->hwaddr[5]);
|
psta->hwaddr);
|
||||||
|
|
||||||
_exit_critical_bh(&pstapriv->auth_list_lock, &irqL);
|
_exit_critical_bh(&pstapriv->auth_list_lock, &irqL);
|
||||||
|
|
||||||
|
@ -393,7 +338,6 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit_critical_bh(&pstapriv->auth_list_lock, &irqL);
|
_exit_critical_bh(&pstapriv->auth_list_lock, &irqL);
|
||||||
|
|
||||||
psta = NULL;
|
psta = NULL;
|
||||||
|
@ -411,8 +355,7 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
, FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->asoc_list_cnt);
|
, FUNC_NDEV_ARG(padapter->pnetdev), pstapriv->asoc_list_cnt);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
while ((rtw_end_of_queue_search(phead, plist)) == false)
|
while ((rtw_end_of_queue_search(phead, plist)) == false) {
|
||||||
{
|
|
||||||
psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list);
|
psta = LIST_CONTAINOR(plist, struct sta_info, asoc_list);
|
||||||
plist = get_next(plist);
|
plist = get_next(plist);
|
||||||
|
|
||||||
|
@ -432,9 +375,7 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
if ( (psta->flags & WLAN_STA_HT) && (psta->htpriv.agg_enable_bitmap || psta->under_exist_checking) ) {
|
if ( (psta->flags & WLAN_STA_HT) && (psta->htpriv.agg_enable_bitmap || psta->under_exist_checking) ) {
|
||||||
// check sta by delba(addba) for 11n STA
|
// check sta by delba(addba) for 11n STA
|
||||||
// ToDo: use CCX report to check for all STAs
|
// ToDo: use CCX report to check for all STAs
|
||||||
//DBG_88E("asoc check by DELBA/ADDBA! (pstapriv->expire_to=%d s)(psta->expire_to=%d s), [%02x, %d]\n", pstapriv->expire_to*2, psta->expire_to*2, psta->htpriv.agg_enable_bitmap, psta->under_exist_checking);
|
if ( psta->expire_to <= (pstapriv->expire_to - 50 ) ) {
|
||||||
|
|
||||||
if ( psta->expire_to <= (pstapriv->expire_to - 50 ) ) {
|
|
||||||
DBG_88E("asoc expire by DELBA/ADDBA! (%d s)\n", (pstapriv->expire_to-psta->expire_to)*2);
|
DBG_88E("asoc expire by DELBA/ADDBA! (%d s)\n", (pstapriv->expire_to-psta->expire_to)*2);
|
||||||
psta->under_exist_checking = 0;
|
psta->under_exist_checking = 0;
|
||||||
psta->expire_to = 0;
|
psta->expire_to = 0;
|
||||||
|
@ -451,13 +392,11 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
#endif // CONFIG_TX_MCAST2UNI
|
||||||
#endif //CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
#endif //CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
||||||
|
|
||||||
if (psta->expire_to <= 0)
|
if (psta->expire_to <= 0) {
|
||||||
{
|
|
||||||
#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
||||||
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
||||||
|
|
||||||
if (padapter->registrypriv.wifi_spec == 1)
|
if (padapter->registrypriv.wifi_spec == 1) {
|
||||||
{
|
|
||||||
psta->expire_to = pstapriv->expire_to;
|
psta->expire_to = pstapriv->expire_to;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -468,8 +407,6 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
psta->expire_to = pstapriv->expire_to;
|
psta->expire_to = pstapriv->expire_to;
|
||||||
psta->state |= WIFI_STA_ALIVE_CHK_STATE;
|
psta->state |= WIFI_STA_ALIVE_CHK_STATE;
|
||||||
|
|
||||||
//DBG_88E("alive chk, sta:%pM is at ps mode!\n", (psta->hwaddr));
|
|
||||||
|
|
||||||
//to update bcn with tim_bitmap for this station
|
//to update bcn with tim_bitmap for this station
|
||||||
pstapriv->tim_bitmap |= BIT(psta->aid);
|
pstapriv->tim_bitmap |= BIT(psta->aid);
|
||||||
update_beacon(padapter, _TIM_IE_, NULL, false);
|
update_beacon(padapter, _TIM_IE_, NULL, false);
|
||||||
|
@ -478,7 +415,6 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pmlmeext->active_keep_alive_check) {
|
if (pmlmeext->active_keep_alive_check) {
|
||||||
int stainfo_offset;
|
int stainfo_offset;
|
||||||
|
|
||||||
|
@ -486,7 +422,6 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
if (stainfo_offset_valid(stainfo_offset)) {
|
if (stainfo_offset_valid(stainfo_offset)) {
|
||||||
chk_alive_list[chk_alive_num++] = stainfo_offset;
|
chk_alive_list[chk_alive_num++] = stainfo_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
|
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
|
||||||
|
@ -496,16 +431,14 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
|
|
||||||
DBG_88E("asoc expire %pM, state=0x%x\n", (psta->hwaddr), psta->state);
|
DBG_88E("asoc expire %pM, state=0x%x\n", (psta->hwaddr), psta->state);
|
||||||
updated = ap_free_sta(padapter, psta, true, WLAN_REASON_DEAUTH_LEAVING);
|
updated = ap_free_sta(padapter, psta, true, WLAN_REASON_DEAUTH_LEAVING);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
/* TODO: Aging mechanism to digest frames in sleep_q to avoid running out of xmitframe */
|
/* TODO: Aging mechanism to digest frames in sleep_q to avoid running out of xmitframe */
|
||||||
if (psta->sleepq_len > (NR_XMITFRAME/pstapriv->asoc_list_cnt)
|
if (psta->sleepq_len > (NR_XMITFRAME/pstapriv->asoc_list_cnt) &&
|
||||||
&& padapter->xmitpriv.free_xmitframe_cnt < (NR_XMITFRAME/pstapriv->asoc_list_cnt/2)
|
padapter->xmitpriv.free_xmitframe_cnt < (NR_XMITFRAME/pstapriv->asoc_list_cnt/2)) {
|
||||||
){
|
DBG_88E("%s sta:%pM, sleepq_len:%u, free_xmitframe_cnt:%u, asoc_list_cnt:%u, clear sleep_q\n", __func__,
|
||||||
DBG_88E("%s sta:%pM, sleepq_len:%u, free_xmitframe_cnt:%u, asoc_list_cnt:%u, clear sleep_q\n", __func__
|
(psta->hwaddr), psta->sleepq_len,
|
||||||
, (psta->hwaddr)
|
padapter->xmitpriv.free_xmitframe_cnt,
|
||||||
, psta->sleepq_len, padapter->xmitpriv.free_xmitframe_cnt, pstapriv->asoc_list_cnt);
|
pstapriv->asoc_list_cnt);
|
||||||
wakeup_sta_to_xmit(padapter, psta);
|
wakeup_sta_to_xmit(padapter, psta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -514,57 +447,52 @@ void expire_timeout_chk(_adapter *padapter)
|
||||||
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||||
|
|
||||||
#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
#ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
|
||||||
if (chk_alive_num) {
|
if (chk_alive_num) {
|
||||||
|
|
||||||
u8 backup_oper_channel=0;
|
u8 backup_oper_channel=0;
|
||||||
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
||||||
/* switch to correct channel of current network before issue keep-alive frames */
|
/* switch to correct channel of current network before issue keep-alive frames */
|
||||||
if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) {
|
if (rtw_get_oper_ch(padapter) != pmlmeext->cur_channel) {
|
||||||
backup_oper_channel = rtw_get_oper_ch(padapter);
|
backup_oper_channel = rtw_get_oper_ch(padapter);
|
||||||
SelectChannel(padapter, pmlmeext->cur_channel);
|
SelectChannel(padapter, pmlmeext->cur_channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* issue null data to check sta alive*/
|
/* issue null data to check sta alive*/
|
||||||
for (i = 0; i < chk_alive_num; i++) {
|
for (i = 0; i < chk_alive_num; i++) {
|
||||||
|
int ret = _FAIL;
|
||||||
|
|
||||||
int ret = _FAIL;
|
psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
|
||||||
|
|
||||||
psta = rtw_get_stainfo_by_offset(pstapriv, chk_alive_list[i]);
|
if (psta->state & WIFI_SLEEP_STATE)
|
||||||
|
ret = issue_nulldata(padapter, psta->hwaddr, 0, 1, 50);
|
||||||
|
else
|
||||||
|
ret = issue_nulldata(padapter, psta->hwaddr, 0, 3, 50);
|
||||||
|
|
||||||
if (psta->state & WIFI_SLEEP_STATE)
|
psta->keep_alive_trycnt++;
|
||||||
ret = issue_nulldata(padapter, psta->hwaddr, 0, 1, 50);
|
if (ret == _SUCCESS) {
|
||||||
else
|
DBG_88E("asoc check, sta(%pM) is alive\n", (psta->hwaddr));
|
||||||
ret = issue_nulldata(padapter, psta->hwaddr, 0, 3, 50);
|
psta->expire_to = pstapriv->expire_to;
|
||||||
|
psta->keep_alive_trycnt = 0;
|
||||||
|
continue;
|
||||||
|
} else if (psta->keep_alive_trycnt <= 3) {
|
||||||
|
DBG_88E("ack check for asoc expire, keep_alive_trycnt=%d\n", psta->keep_alive_trycnt);
|
||||||
|
psta->expire_to = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
psta->keep_alive_trycnt++;
|
|
||||||
if (ret == _SUCCESS)
|
|
||||||
{
|
|
||||||
DBG_88E("asoc check, sta(%pM) is alive\n", (psta->hwaddr));
|
|
||||||
psta->expire_to = pstapriv->expire_to;
|
|
||||||
psta->keep_alive_trycnt = 0;
|
psta->keep_alive_trycnt = 0;
|
||||||
continue;
|
|
||||||
}
|
DBG_88E("asoc expire %pM, state=0x%x\n", (psta->hwaddr), psta->state);
|
||||||
else if (psta->keep_alive_trycnt <= 3)
|
_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||||
{
|
rtw_list_delete(&psta->asoc_list);
|
||||||
DBG_88E("ack check for asoc expire, keep_alive_trycnt=%d\n", psta->keep_alive_trycnt);
|
pstapriv->asoc_list_cnt--;
|
||||||
psta->expire_to = 1;
|
updated = ap_free_sta(padapter, psta, true, WLAN_REASON_DEAUTH_LEAVING);
|
||||||
continue;
|
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
||||||
}
|
}
|
||||||
|
|
||||||
psta->keep_alive_trycnt = 0;
|
if (backup_oper_channel>0) /* back to the original operation channel */
|
||||||
|
SelectChannel(padapter, backup_oper_channel);
|
||||||
DBG_88E("asoc expire %pM, state=0x%x\n", (psta->hwaddr), psta->state);
|
|
||||||
_enter_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
|
||||||
rtw_list_delete(&psta->asoc_list);
|
|
||||||
pstapriv->asoc_list_cnt--;
|
|
||||||
updated = ap_free_sta(padapter, psta, true, WLAN_REASON_DEAUTH_LEAVING);
|
|
||||||
_exit_critical_bh(&pstapriv->asoc_list_lock, &irqL);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (backup_oper_channel>0) /* back to the original operation channel */
|
|
||||||
SelectChannel(padapter, backup_oper_channel);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
|
#endif /* CONFIG_ACTIVE_KEEP_ALIVE_CHECK */
|
||||||
|
|
||||||
associated_clients_update(padapter, updated);
|
associated_clients_update(padapter, updated);
|
||||||
|
@ -593,22 +521,20 @@ void add_RATid(_adapter *padapter, struct sta_info *psta, u8 rssi_level)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//b/g mode ra_bitmap
|
//b/g mode ra_bitmap
|
||||||
for (i=0; i<sizeof(psta->bssrateset); i++)
|
for (i = 0; i < sizeof(psta->bssrateset); i++) {
|
||||||
{
|
|
||||||
if (psta->bssrateset[i])
|
if (psta->bssrateset[i])
|
||||||
tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f);
|
tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f);
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_80211N_HT
|
#ifdef CONFIG_80211N_HT
|
||||||
//n mode ra_bitmap
|
//n mode ra_bitmap
|
||||||
if (psta_ht->ht_option)
|
if (psta_ht->ht_option) {
|
||||||
{
|
|
||||||
rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
|
rtw_hal_get_hwreg(padapter, HW_VAR_RF_TYPE, (u8 *)(&rf_type));
|
||||||
if (rf_type == RF_2T2R)
|
if (rf_type == RF_2T2R)
|
||||||
limit=16;// 2R
|
limit=16;// 2R
|
||||||
else
|
else
|
||||||
limit=8;// 1R
|
limit=8;// 1R
|
||||||
|
|
||||||
for (i=0; i<limit; i++) {
|
for (i = 0; i < limit; i++) {
|
||||||
if (psta_ht->ht_cap.supp_mcs_set[i/8] & BIT(i%8))
|
if (psta_ht->ht_cap.supp_mcs_set[i/8] & BIT(i%8))
|
||||||
tx_ra_bitmap |= BIT(i+12);
|
tx_ra_bitmap |= BIT(i+12);
|
||||||
}
|
}
|
||||||
|
@ -638,8 +564,7 @@ void add_RATid(_adapter *padapter, struct sta_info *psta, u8 rssi_level)
|
||||||
raid = networktype_to_raid(sta_band);
|
raid = networktype_to_raid(sta_band);
|
||||||
init_rate = get_highest_rate_idx(tx_ra_bitmap&0x0fffffff)&0x3f;
|
init_rate = get_highest_rate_idx(tx_ra_bitmap&0x0fffffff)&0x3f;
|
||||||
|
|
||||||
if (psta->aid < NUM_STA)
|
if (psta->aid < NUM_STA) {
|
||||||
{
|
|
||||||
u8 arg = 0;
|
u8 arg = 0;
|
||||||
|
|
||||||
arg = psta->mac_id&0x1f;
|
arg = psta->mac_id&0x1f;
|
||||||
|
@ -660,7 +585,6 @@ void add_RATid(_adapter *padapter, struct sta_info *psta, u8 rssi_level)
|
||||||
//arg[5] = Short GI
|
//arg[5] = Short GI
|
||||||
rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, rssi_level);
|
rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, rssi_level);
|
||||||
|
|
||||||
|
|
||||||
if (shortGIrate==true)
|
if (shortGIrate==true)
|
||||||
init_rate |= BIT(6);
|
init_rate |= BIT(6);
|
||||||
|
|
||||||
|
@ -668,12 +592,9 @@ void add_RATid(_adapter *padapter, struct sta_info *psta, u8 rssi_level)
|
||||||
psta->raid = raid;
|
psta->raid = raid;
|
||||||
psta->init_rate = init_rate;
|
psta->init_rate = init_rate;
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG_88E("station aid %d exceed the max number\n", psta->aid);
|
DBG_88E("station aid %d exceed the max number\n", psta->aid);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_bmc_sta(_adapter *padapter)
|
static void update_bmc_sta(_adapter *padapter)
|
||||||
|
@ -687,10 +608,8 @@ static void update_bmc_sta(_adapter *padapter)
|
||||||
WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network;
|
WLAN_BSSID_EX *pcur_network = (WLAN_BSSID_EX *)&pmlmepriv->cur_network.network;
|
||||||
struct sta_info *psta = rtw_get_bcmc_stainfo(padapter);
|
struct sta_info *psta = rtw_get_bcmc_stainfo(padapter);
|
||||||
|
|
||||||
if (psta)
|
if (psta) {
|
||||||
{
|
|
||||||
psta->aid = 0;//default set to 0
|
psta->aid = 0;//default set to 0
|
||||||
//psta->mac_id = psta->aid+4;
|
|
||||||
psta->mac_id = psta->aid + 1;
|
psta->mac_id = psta->aid + 1;
|
||||||
|
|
||||||
psta->qos_option = 0;
|
psta->qos_option = 0;
|
||||||
|
@ -702,10 +621,6 @@ static void update_bmc_sta(_adapter *padapter)
|
||||||
|
|
||||||
_rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats));
|
_rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats));
|
||||||
|
|
||||||
//psta->dot118021XPrivacy = _NO_PRIVACY_;//!!! remove it, because it has been set before this.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//prepare for add_RATid
|
//prepare for add_RATid
|
||||||
supportRateNum = rtw_get_rateset_len((u8*)&pcur_network->SupportedRates);
|
supportRateNum = rtw_get_rateset_len((u8*)&pcur_network->SupportedRates);
|
||||||
network_type = rtw_check_network_type((u8*)&pcur_network->SupportedRates, supportRateNum, 1);
|
network_type = rtw_check_network_type((u8*)&pcur_network->SupportedRates, supportRateNum, 1);
|
||||||
|
@ -714,8 +629,7 @@ static void update_bmc_sta(_adapter *padapter)
|
||||||
psta->bssratelen = supportRateNum;
|
psta->bssratelen = supportRateNum;
|
||||||
|
|
||||||
//b/g mode ra_bitmap
|
//b/g mode ra_bitmap
|
||||||
for (i=0; i<supportRateNum; i++)
|
for (i = 0; i < supportRateNum; i++) {
|
||||||
{
|
|
||||||
if (psta->bssrateset[i])
|
if (psta->bssrateset[i])
|
||||||
tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f);
|
tx_ra_bitmap |= rtw_get_bit_value_from_ieee_value(psta->bssrateset[i]&0x7f);
|
||||||
}
|
}
|
||||||
|
@ -730,28 +644,18 @@ static void update_bmc_sta(_adapter *padapter)
|
||||||
tx_ra_bitmap = 0xf;
|
tx_ra_bitmap = 0xf;
|
||||||
}
|
}
|
||||||
|
|
||||||
//tx_ra_bitmap = update_basic_rate(pcur_network->SupportedRates, supportRateNum);
|
|
||||||
|
|
||||||
raid = networktype_to_raid(network_type);
|
raid = networktype_to_raid(network_type);
|
||||||
init_rate = get_highest_rate_idx(tx_ra_bitmap&0x0fffffff)&0x3f;
|
init_rate = get_highest_rate_idx(tx_ra_bitmap&0x0fffffff)&0x3f;
|
||||||
|
|
||||||
//DBG_88E("Add id %d val %08x to ratr for bmc sta\n", psta->aid, tx_ra_bitmap);
|
|
||||||
//ap mode
|
//ap mode
|
||||||
rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
|
rtw_hal_set_odm_var(padapter, HAL_ODM_STA_INFO, psta, true);
|
||||||
|
|
||||||
//if (pHalData->fw_ractrl == true)
|
|
||||||
{
|
{
|
||||||
u8 arg = 0;
|
u8 arg = 0;
|
||||||
|
|
||||||
arg = psta->mac_id&0x1f;
|
arg = psta->mac_id&0x1f;
|
||||||
|
|
||||||
arg |= BIT(7);
|
arg |= BIT(7);
|
||||||
|
|
||||||
//if (shortGIrate==true)
|
|
||||||
// arg |= BIT(5);
|
|
||||||
|
|
||||||
tx_ra_bitmap |= ((raid<<28)&0xf0000000);
|
tx_ra_bitmap |= ((raid<<28)&0xf0000000);
|
||||||
|
|
||||||
DBG_88E("update_bmc_sta, mask=0x%x, arg=0x%x\n", tx_ra_bitmap, arg);
|
DBG_88E("update_bmc_sta, mask=0x%x, arg=0x%x\n", tx_ra_bitmap, arg);
|
||||||
|
|
||||||
//bitmap[0:27] = tx_rate_bitmap
|
//bitmap[0:27] = tx_rate_bitmap
|
||||||
|
@ -759,9 +663,7 @@ static void update_bmc_sta(_adapter *padapter)
|
||||||
//arg[0:4] = macid
|
//arg[0:4] = macid
|
||||||
//arg[5] = Short GI
|
//arg[5] = Short GI
|
||||||
rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, 0);
|
rtw_hal_add_ra_tid(padapter, tx_ra_bitmap, arg, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//set ra_id, init_rate
|
//set ra_id, init_rate
|
||||||
psta->raid = raid;
|
psta->raid = raid;
|
||||||
psta->init_rate = init_rate;
|
psta->init_rate = init_rate;
|
||||||
|
@ -772,12 +674,9 @@ static void update_bmc_sta(_adapter *padapter)
|
||||||
psta->state = _FW_LINKED;
|
psta->state = _FW_LINKED;
|
||||||
_exit_critical_bh(&psta->lock, &irqL);
|
_exit_critical_bh(&psta->lock, &irqL);
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
DBG_88E("add_RATid_bmc_sta error!\n");
|
DBG_88E("add_RATid_bmc_sta error!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//notes:
|
//notes:
|
||||||
|
@ -797,10 +696,6 @@ void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta)
|
||||||
struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
|
struct ht_priv *phtpriv_ap = &pmlmepriv->htpriv;
|
||||||
struct ht_priv *phtpriv_sta = &psta->htpriv;
|
struct ht_priv *phtpriv_sta = &psta->htpriv;
|
||||||
#endif //CONFIG_80211N_HT
|
#endif //CONFIG_80211N_HT
|
||||||
//set intf_tag to if1
|
|
||||||
//psta->intf_tag = 0;
|
|
||||||
|
|
||||||
//psta->mac_id = psta->aid+4;
|
|
||||||
psta->mac_id = psta->aid+1;
|
psta->mac_id = psta->aid+1;
|
||||||
DBG_88E("%s\n",__func__);
|
DBG_88E("%s\n",__func__);
|
||||||
|
|
||||||
|
@ -819,33 +714,22 @@ void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta)
|
||||||
VCS_update(padapter, psta);
|
VCS_update(padapter, psta);
|
||||||
#ifdef CONFIG_80211N_HT
|
#ifdef CONFIG_80211N_HT
|
||||||
//HT related cap
|
//HT related cap
|
||||||
if (phtpriv_sta->ht_option)
|
if (phtpriv_sta->ht_option) {
|
||||||
{
|
|
||||||
//check if sta supports rx ampdu
|
//check if sta supports rx ampdu
|
||||||
phtpriv_sta->ampdu_enable = phtpriv_ap->ampdu_enable;
|
phtpriv_sta->ampdu_enable = phtpriv_ap->ampdu_enable;
|
||||||
|
|
||||||
//check if sta support s Short GI
|
//check if sta support s Short GI
|
||||||
if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40))
|
if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SGI_20|IEEE80211_HT_CAP_SGI_40))
|
||||||
{
|
|
||||||
phtpriv_sta->sgi = true;
|
phtpriv_sta->sgi = true;
|
||||||
}
|
|
||||||
|
|
||||||
// bwmode
|
// bwmode
|
||||||
if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH))
|
if ((phtpriv_sta->ht_cap.cap_info & phtpriv_ap->ht_cap.cap_info) & cpu_to_le16(IEEE80211_HT_CAP_SUP_WIDTH)) {
|
||||||
{
|
|
||||||
//phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_40;
|
|
||||||
phtpriv_sta->bwmode = pmlmeext->cur_bwmode;
|
phtpriv_sta->bwmode = pmlmeext->cur_bwmode;
|
||||||
phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset;
|
phtpriv_sta->ch_offset = pmlmeext->cur_ch_offset;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
psta->qos_option = true;
|
psta->qos_option = true;
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
phtpriv_sta->ampdu_enable = false;
|
phtpriv_sta->ampdu_enable = false;
|
||||||
|
|
||||||
phtpriv_sta->sgi = false;
|
phtpriv_sta->sgi = false;
|
||||||
phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_20;
|
phtpriv_sta->bwmode = HT_CHANNEL_WIDTH_20;
|
||||||
phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
phtpriv_sta->ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
||||||
|
@ -864,16 +748,9 @@ void update_sta_info_apmode(_adapter *padapter, struct sta_info *psta)
|
||||||
|
|
||||||
_rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats));
|
_rtw_memset((void*)&psta->sta_stats, 0, sizeof(struct stainfo_stats));
|
||||||
|
|
||||||
|
|
||||||
//add ratid
|
|
||||||
//add_RATid(padapter, psta);//move to ap_sta_info_defer_update()
|
|
||||||
|
|
||||||
|
|
||||||
_enter_critical_bh(&psta->lock, &irqL);
|
_enter_critical_bh(&psta->lock, &irqL);
|
||||||
psta->state |= _FW_LINKED;
|
psta->state |= _FW_LINKED;
|
||||||
_exit_critical_bh(&psta->lock, &irqL);
|
_exit_critical_bh(&psta->lock, &irqL);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_hw_ht_param(_adapter *padapter)
|
static void update_hw_ht_param(_adapter *padapter)
|
||||||
|
@ -886,7 +763,6 @@ static void update_hw_ht_param(_adapter *padapter)
|
||||||
|
|
||||||
DBG_88E("%s\n", __func__);
|
DBG_88E("%s\n", __func__);
|
||||||
|
|
||||||
|
|
||||||
//handle A-MPDU parameter field
|
//handle A-MPDU parameter field
|
||||||
/*
|
/*
|
||||||
AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
|
AMPDU_para [1:0]:Max AMPDU Len => 0:8k , 1:16k, 2:32k, 3:64k
|
||||||
|
@ -905,21 +781,7 @@ static void update_hw_ht_param(_adapter *padapter)
|
||||||
//
|
//
|
||||||
pmlmeinfo->SM_PS = (pmlmeinfo->HT_caps.u.HT_cap_element.HT_caps_info & 0x0C) >> 2;
|
pmlmeinfo->SM_PS = (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;
|
|
||||||
//update the MCS rates
|
|
||||||
for (i = 0; i < 16; i++)
|
|
||||||
{
|
|
||||||
pmlmeinfo->HT_caps.HT_cap_element.MCS_rate[i] &= MCS_rate_1R[i];
|
|
||||||
}*/
|
|
||||||
DBG_88E("%s(): WLAN_HT_CAP_SM_PS_STATIC\n",__func__);
|
DBG_88E("%s(): WLAN_HT_CAP_SM_PS_STATIC\n",__func__);
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Config current HT Protection mode.
|
|
||||||
//
|
|
||||||
//pmlmeinfo->HT_protection = pmlmeinfo->HT_info.infos[1] & 0x3;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
|
@ -941,8 +803,6 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
|
struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
|
||||||
#endif //CONFIG_P2P
|
#endif //CONFIG_P2P
|
||||||
|
|
||||||
//DBG_88E("%s\n", __func__);
|
|
||||||
|
|
||||||
bcn_interval = (u16)pnetwork->Configuration.BeaconPeriod;
|
bcn_interval = (u16)pnetwork->Configuration.BeaconPeriod;
|
||||||
cur_channel = pnetwork->Configuration.DSConfig;
|
cur_channel = pnetwork->Configuration.DSConfig;
|
||||||
cur_bwmode = HT_CHANNEL_WIDTH_20;;
|
cur_bwmode = HT_CHANNEL_WIDTH_20;;
|
||||||
|
@ -958,27 +818,21 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo: update wmm, ht cap
|
//todo: update wmm, ht cap
|
||||||
//pmlmeinfo->WMM_enable;
|
|
||||||
//pmlmeinfo->HT_enable;
|
|
||||||
if (pmlmepriv->qospriv.qos_option)
|
if (pmlmepriv->qospriv.qos_option)
|
||||||
pmlmeinfo->WMM_enable = true;
|
pmlmeinfo->WMM_enable = true;
|
||||||
#ifdef CONFIG_80211N_HT
|
#ifdef CONFIG_80211N_HT
|
||||||
if (pmlmepriv->htpriv.ht_option)
|
if (pmlmepriv->htpriv.ht_option) {
|
||||||
{
|
|
||||||
pmlmeinfo->WMM_enable = true;
|
pmlmeinfo->WMM_enable = true;
|
||||||
pmlmeinfo->HT_enable = true;
|
pmlmeinfo->HT_enable = true;
|
||||||
//pmlmeinfo->HT_info_enable = true;
|
|
||||||
//pmlmeinfo->HT_caps_enable = true;
|
|
||||||
|
|
||||||
update_hw_ht_param(padapter);
|
update_hw_ht_param(padapter);
|
||||||
}
|
}
|
||||||
#endif //#CONFIG_80211N_HT
|
#endif //#CONFIG_80211N_HT
|
||||||
|
|
||||||
|
if (pmlmepriv->cur_network.join_res != true) { //setting only at first time
|
||||||
if (pmlmepriv->cur_network.join_res != true) //setting only at first time
|
|
||||||
{
|
|
||||||
//WEP Key will be set before this function, do not clear CAM.
|
//WEP Key will be set before this function, do not clear CAM.
|
||||||
if ((psecuritypriv->dot11PrivacyAlgrthm != _WEP40_) && (psecuritypriv->dot11PrivacyAlgrthm != _WEP104_))
|
if ((psecuritypriv->dot11PrivacyAlgrthm != _WEP40_) &&
|
||||||
|
(psecuritypriv->dot11PrivacyAlgrthm != _WEP104_))
|
||||||
flush_all_cam_entry(padapter); //clear CAM
|
flush_all_cam_entry(padapter); //clear CAM
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -997,7 +851,6 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm));
|
rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VO, (u8 *)(&acparm));
|
||||||
acparm = 0x005E4317; // VI
|
acparm = 0x005E4317; // VI
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm));
|
rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_VI, (u8 *)(&acparm));
|
||||||
//acparm = 0x00105320; // BE
|
|
||||||
acparm = 0x005ea42b;
|
acparm = 0x005ea42b;
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm));
|
rtw_hal_set_hwreg(padapter, HW_VAR_AC_PARAM_BE, (u8 *)(&acparm));
|
||||||
acparm = 0x0000A444; // BK
|
acparm = 0x0000A444; // BK
|
||||||
|
@ -1010,90 +863,56 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
//Beacon Control related register
|
//Beacon Control related register
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&bcn_interval));
|
rtw_hal_set_hwreg(padapter, HW_VAR_BEACON_INTERVAL, (u8 *)(&bcn_interval));
|
||||||
|
|
||||||
|
|
||||||
UpdateBrateTbl(padapter, pnetwork->SupportedRates);
|
UpdateBrateTbl(padapter, pnetwork->SupportedRates);
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, pnetwork->SupportedRates);
|
rtw_hal_set_hwreg(padapter, HW_VAR_BASIC_RATE, pnetwork->SupportedRates);
|
||||||
|
|
||||||
if (pmlmepriv->cur_network.join_res != true) //setting only at first time
|
if (pmlmepriv->cur_network.join_res != true) { //setting only at first time
|
||||||
{
|
|
||||||
//u32 initialgain;
|
|
||||||
|
|
||||||
//initialgain = 0x1e;
|
|
||||||
|
|
||||||
|
|
||||||
//disable dynamic functions, such as high power, DIG
|
|
||||||
//Save_DM_Func_Flag(padapter);
|
|
||||||
//Switch_DM_Func(padapter, DYNAMIC_FUNC_DISABLE, false);
|
|
||||||
|
|
||||||
#ifdef CONFIG_CONCURRENT_MODE
|
#ifdef CONFIG_CONCURRENT_MODE
|
||||||
if (padapter->adapter_type > PRIMARY_ADAPTER)
|
if (padapter->adapter_type > PRIMARY_ADAPTER) {
|
||||||
{
|
if (rtw_buddy_adapter_up(padapter)) {
|
||||||
if (rtw_buddy_adapter_up(padapter))
|
|
||||||
{
|
|
||||||
_adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
_adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||||
|
|
||||||
//turn on all dynamic functions on PRIMARY_ADAPTER, dynamic functions only runs at PRIMARY_ADAPTER
|
//turn on all dynamic functions on PRIMARY_ADAPTER, dynamic functions only runs at PRIMARY_ADAPTER
|
||||||
Switch_DM_Func(pbuddy_adapter, DYNAMIC_ALL_FUNC_ENABLE, true);
|
Switch_DM_Func(pbuddy_adapter, DYNAMIC_ALL_FUNC_ENABLE, true);
|
||||||
|
|
||||||
//rtw_hal_set_hwreg(pbuddy_adapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain));
|
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
//turn on all dynamic functions
|
//turn on all dynamic functions
|
||||||
Switch_DM_Func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true);
|
Switch_DM_Func(padapter, DYNAMIC_ALL_FUNC_ENABLE, true);
|
||||||
|
|
||||||
//rtw_hal_set_hwreg(padapter, HW_VAR_INITIAL_GAIN, (u8 *)(&initialgain));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_80211N_HT
|
#ifdef CONFIG_80211N_HT
|
||||||
//set channel, bwmode
|
//set channel, bwmode
|
||||||
p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs)));
|
p = rtw_get_ie((pnetwork->IEs + sizeof(NDIS_802_11_FIXED_IEs)), _HT_ADD_INFO_IE_, &ie_len, (pnetwork->IELength - sizeof(NDIS_802_11_FIXED_IEs)));
|
||||||
if ( p && ie_len)
|
if ( p && ie_len) {
|
||||||
{
|
|
||||||
pht_info = (struct HT_info_element *)(p+2);
|
pht_info = (struct HT_info_element *)(p+2);
|
||||||
|
|
||||||
if ((pregpriv->cbw40_enable) && (pht_info->infos[0] & BIT(2)))
|
if ((pregpriv->cbw40_enable) && (pht_info->infos[0] & BIT(2))) {
|
||||||
{
|
|
||||||
//switch to the 40M Hz mode
|
//switch to the 40M Hz mode
|
||||||
//pmlmeext->cur_bwmode = HT_CHANNEL_WIDTH_40;
|
|
||||||
cur_bwmode = HT_CHANNEL_WIDTH_40;
|
cur_bwmode = HT_CHANNEL_WIDTH_40;
|
||||||
switch (pht_info->infos[0] & 0x3)
|
switch (pht_info->infos[0] & 0x3) {
|
||||||
{
|
case 1:
|
||||||
case 1:
|
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
|
||||||
//pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
|
break;
|
||||||
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
|
case 3:
|
||||||
break;
|
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
|
||||||
|
break;
|
||||||
case 3:
|
default:
|
||||||
//pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
|
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
||||||
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_UPPER;
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
//pmlmeext->cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
|
||||||
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif //CONFIG_80211N_HT
|
#endif //CONFIG_80211N_HT
|
||||||
#ifdef CONFIG_DUALMAC_CONCURRENT
|
#ifdef CONFIG_DUALMAC_CONCURRENT
|
||||||
dc_set_ap_channel_bandwidth(padapter, cur_channel, cur_ch_offset, cur_bwmode);
|
dc_set_ap_channel_bandwidth(padapter, cur_channel, cur_ch_offset, cur_bwmode);
|
||||||
#else
|
#else
|
||||||
//TODO: need to judge the phy parameters on concurrent mode for single phy
|
//TODO: need to judge the phy parameters on concurrent mode for single phy
|
||||||
//set_channel_bwmode(padapter, pmlmeext->cur_channel, pmlmeext->cur_ch_offset, pmlmeext->cur_bwmode);
|
|
||||||
#ifdef CONFIG_CONCURRENT_MODE
|
#ifdef CONFIG_CONCURRENT_MODE
|
||||||
if (!check_buddy_fwstate(padapter, _FW_LINKED|_FW_UNDER_LINKING|_FW_UNDER_SURVEY))
|
if (!check_buddy_fwstate(padapter, _FW_LINKED|_FW_UNDER_LINKING|_FW_UNDER_SURVEY)) {
|
||||||
{
|
set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode);
|
||||||
set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode);
|
} else if (check_buddy_fwstate(padapter, _FW_LINKED)==true) {//only second adapter can enter AP Mode
|
||||||
}
|
|
||||||
else if (check_buddy_fwstate(padapter, _FW_LINKED)==true)//only second adapter can enter AP Mode
|
|
||||||
{
|
|
||||||
_adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
_adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||||
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
struct mlme_ext_priv *pbuddy_mlmeext = &pbuddy_adapter->mlmeextpriv;
|
||||||
|
|
||||||
|
@ -1103,40 +922,32 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
DBG_88E("second adapter, CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset);
|
DBG_88E("second adapter, CH=%d, BW=%d, offset=%d\n", cur_channel, cur_bwmode, cur_ch_offset);
|
||||||
|
|
||||||
cur_channel = pbuddy_mlmeext->cur_channel;
|
cur_channel = pbuddy_mlmeext->cur_channel;
|
||||||
if (cur_bwmode == HT_CHANNEL_WIDTH_40)
|
if (cur_bwmode == HT_CHANNEL_WIDTH_40) {
|
||||||
{
|
|
||||||
if (pht_info)
|
if (pht_info)
|
||||||
pht_info->infos[0] &= ~(BIT(0)|BIT(1));
|
pht_info->infos[0] &= ~(BIT(0)|BIT(1));
|
||||||
|
|
||||||
if (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40)
|
if (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_40) {
|
||||||
{
|
|
||||||
cur_ch_offset = pbuddy_mlmeext->cur_ch_offset;
|
cur_ch_offset = pbuddy_mlmeext->cur_ch_offset;
|
||||||
|
|
||||||
//to update cur_ch_offset value in beacon
|
//to update cur_ch_offset value in beacon
|
||||||
if (pht_info)
|
if (pht_info) {
|
||||||
{
|
switch (cur_ch_offset) {
|
||||||
switch (cur_ch_offset)
|
case HAL_PRIME_CHNL_OFFSET_LOWER:
|
||||||
{
|
pht_info->infos[0] |= 0x1;
|
||||||
case HAL_PRIME_CHNL_OFFSET_LOWER:
|
break;
|
||||||
pht_info->infos[0] |= 0x1;
|
case HAL_PRIME_CHNL_OFFSET_UPPER:
|
||||||
break;
|
pht_info->infos[0] |= 0x3;
|
||||||
case HAL_PRIME_CHNL_OFFSET_UPPER:
|
break;
|
||||||
pht_info->infos[0] |= 0x3;
|
case HAL_PRIME_CHNL_OFFSET_DONT_CARE:
|
||||||
break;
|
default:
|
||||||
case HAL_PRIME_CHNL_OFFSET_DONT_CARE:
|
break;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20) {
|
||||||
}
|
|
||||||
else if (pbuddy_mlmeext->cur_bwmode == HT_CHANNEL_WIDTH_20)
|
|
||||||
{
|
|
||||||
cur_bwmode = HT_CHANNEL_WIDTH_20;
|
cur_bwmode = HT_CHANNEL_WIDTH_20;
|
||||||
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
||||||
|
|
||||||
if (cur_channel>0 && cur_channel<5)
|
if (cur_channel > 0 && cur_channel < 5) {
|
||||||
{
|
|
||||||
if (pht_info)
|
if (pht_info)
|
||||||
pht_info->infos[0] |= 0x1;
|
pht_info->infos[0] |= 0x1;
|
||||||
|
|
||||||
|
@ -1144,8 +955,7 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
|
cur_ch_offset = HAL_PRIME_CHNL_OFFSET_LOWER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cur_channel>7 && cur_channel<(14+1))
|
if (cur_channel > 7 && cur_channel < (14+1)) {
|
||||||
{
|
|
||||||
if (pht_info)
|
if (pht_info)
|
||||||
pht_info->infos[0] |= 0x3;
|
pht_info->infos[0] |= 0x3;
|
||||||
|
|
||||||
|
@ -1155,7 +965,6 @@ static void start_bss_network(_adapter *padapter, u8 *pbuf)
|
||||||
|
|
||||||
set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode);
|
set_channel_bwmode(padapter, cur_channel, cur_ch_offset, cur_bwmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// to update channel value in beacon
|
// to update channel value in beacon
|
||||||
|
|
|
@ -28,22 +28,11 @@
|
||||||
#include <linux/if_pppox.h>
|
#include <linux/if_pppox.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 1 // rtw_wifi_driver
|
|
||||||
#include <drv_conf.h>
|
#include <drv_conf.h>
|
||||||
#include <drv_types.h>
|
#include <drv_types.h>
|
||||||
#include "rtw_br_ext.h"
|
#include "rtw_br_ext.h"
|
||||||
#else // rtw_wifi_driver
|
#include <usb_osintf.h>
|
||||||
#include "./8192cd_cfg.h"
|
#include <recv_osdep.h>
|
||||||
|
|
||||||
#ifndef __KERNEL__
|
|
||||||
#include "./sys-support.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "./8192cd.h"
|
|
||||||
#include "./8192cd_headers.h"
|
|
||||||
#include "./8192cd_br_ext.h"
|
|
||||||
#include "./8192cd_debug.h"
|
|
||||||
#endif // rtw_wifi_driver
|
|
||||||
|
|
||||||
#ifndef csum_ipv6_magic
|
#ifndef csum_ipv6_magic
|
||||||
#include <net/ip6_checksum.h>
|
#include <net/ip6_checksum.h>
|
||||||
|
@ -102,7 +91,7 @@ static __inline__ unsigned char *__nat25_find_pppoe_tag(struct pppoe_hdr *ph, un
|
||||||
return cur_ptr;
|
return cur_ptr;
|
||||||
cur_ptr = cur_ptr + TAG_HDR_LEN + tagLen;
|
cur_ptr = cur_ptr + TAG_HDR_LEN + tagLen;
|
||||||
}
|
}
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -853,7 +842,6 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
|
||||||
// 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 ) {
|
||||||
void netdev_br_init(struct net_device *netdev);
|
|
||||||
printk("Re-init netdev_br_init() due to br_mac==0!\n");
|
printk("Re-init netdev_br_init() due to br_mac==0!\n");
|
||||||
netdev_br_init(priv->pnetdev);
|
netdev_br_init(priv->pnetdev);
|
||||||
}
|
}
|
||||||
|
@ -1299,7 +1287,7 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
|
||||||
unsigned short tagType, tagLen;
|
unsigned short tagType, tagLen;
|
||||||
int offset=0;
|
int offset=0;
|
||||||
|
|
||||||
if ((ptr = __nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID))) == 0) {
|
if ((ptr = __nat25_find_pppoe_tag(ph, ntohs(PTT_RELAY_SID))) == NULL) {
|
||||||
DEBUG_ERR("Fail to find PTT_RELAY_SID in FADO!\n");
|
DEBUG_ERR("Fail to find PTT_RELAY_SID in FADO!\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#ifdef CONFIG_BR_EXT
|
#ifdef CONFIG_BR_EXT
|
||||||
#include <rtw_br_ext.h>
|
#include <rtw_br_ext.h>
|
||||||
#endif //CONFIG_BR_EXT
|
#endif //CONFIG_BR_EXT
|
||||||
|
#include <rtw_mlme_ext.h>
|
||||||
|
|
||||||
#ifdef CONFIG_BT_COEXIST
|
#ifdef CONFIG_BT_COEXIST
|
||||||
#include <rtl8723a_hal.h>
|
#include <rtl8723a_hal.h>
|
||||||
|
@ -1971,7 +1972,7 @@ _func_enter_;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
_rtw_spinlock(&(padapter->tdlsinfo.cmd_lock));
|
spin_lock(&(padapter->tdlsinfo.cmd_lock));
|
||||||
_rtw_memcpy(TDLSoption->addr, addr, 6);
|
_rtw_memcpy(TDLSoption->addr, addr, 6);
|
||||||
TDLSoption->option = option;
|
TDLSoption->option = option;
|
||||||
_rtw_spinunlock(&(padapter->tdlsinfo.cmd_lock));
|
_rtw_spinunlock(&(padapter->tdlsinfo.cmd_lock));
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
#include <drv_conf.h>
|
#include <drv_conf.h>
|
||||||
#include <osdep_service.h>
|
#include <osdep_service.h>
|
||||||
#include <drv_types.h>
|
#include <drv_types.h>
|
||||||
|
|
||||||
#include <rtw_efuse.h>
|
#include <rtw_efuse.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -525,7 +524,7 @@ Efuse_PgPacketWrite( PADAPTER pAdapter,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
static int
|
||||||
Efuse_PgPacketWrite_BT( PADAPTER pAdapter,
|
Efuse_PgPacketWrite_BT( PADAPTER pAdapter,
|
||||||
u8 offset,
|
u8 offset,
|
||||||
u8 word_en,
|
u8 word_en,
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <wifi.h>
|
#include <wifi.h>
|
||||||
#include <osdep_service.h>
|
#include <osdep_service.h>
|
||||||
#include <wlan_bssdef.h>
|
#include <wlan_bssdef.h>
|
||||||
|
#include <usb_osintf.h>
|
||||||
|
|
||||||
u8 RTW_WPA_OUI_TYPE[] = { 0x00, 0x50, 0xf2, 1 };
|
u8 RTW_WPA_OUI_TYPE[] = { 0x00, 0x50, 0xf2, 1 };
|
||||||
u16 RTW_WPA_VERSION = 1;
|
u16 RTW_WPA_VERSION = 1;
|
||||||
|
@ -1261,8 +1262,7 @@ ParseRes rtw_ieee802_11_parse_elems(u8 *start, uint len,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 key_char2num(u8 ch);
|
u8 key_char2num(u8 ch)
|
||||||
static u8 key_char2num(u8 ch)
|
|
||||||
{
|
{
|
||||||
if ((ch>='0')&&(ch<='9'))
|
if ((ch>='0')&&(ch<='9'))
|
||||||
return ch - '0';
|
return ch - '0';
|
||||||
|
@ -1274,24 +1274,16 @@ static u8 key_char2num(u8 ch)
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 str_2char2num(u8 hch, u8 lch);
|
|
||||||
u8 str_2char2num(u8 hch, u8 lch)
|
u8 str_2char2num(u8 hch, u8 lch)
|
||||||
{
|
{
|
||||||
return ((key_char2num(hch) * 10 ) + key_char2num(lch));
|
return ((key_char2num(hch) * 10 ) + key_char2num(lch));
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 key_2char2num(u8 hch, u8 lch);
|
|
||||||
u8 key_2char2num(u8 hch, u8 lch)
|
u8 key_2char2num(u8 hch, u8 lch)
|
||||||
{
|
{
|
||||||
return ((key_char2num(hch) << 4) | key_char2num(lch));
|
return ((key_char2num(hch) << 4) | key_char2num(lch));
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 convert_ip_addr(u8 hch, u8 mch, u8 lch)
|
|
||||||
{
|
|
||||||
return ((key_char2num(hch) * 100) + (key_char2num(mch) * 10 ) + key_char2num(lch));
|
|
||||||
}
|
|
||||||
|
|
||||||
extern char* rtw_initmac;
|
|
||||||
void rtw_macaddr_cfg(u8 *mac_addr)
|
void rtw_macaddr_cfg(u8 *mac_addr)
|
||||||
{
|
{
|
||||||
u8 mac[ETH_ALEN];
|
u8 mac[ETH_ALEN];
|
||||||
|
@ -1768,7 +1760,7 @@ int ieee80211_get_hdrlen(u16 fc)
|
||||||
return hdrlen;
|
return hdrlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtw_get_cipher_info(struct wlan_network *pnetwork)
|
static int rtw_get_cipher_info(struct wlan_network *pnetwork)
|
||||||
{
|
{
|
||||||
u32 wpa_ielen;
|
u32 wpa_ielen;
|
||||||
unsigned char *pbuf;
|
unsigned char *pbuf;
|
||||||
|
|
142
core/rtw_mlme.c
142
core/rtw_mlme.c
|
@ -31,6 +31,7 @@
|
||||||
#include <wifi.h>
|
#include <wifi.h>
|
||||||
#include <wlan_bssdef.h>
|
#include <wlan_bssdef.h>
|
||||||
#include <rtw_ioctl_set.h>
|
#include <rtw_ioctl_set.h>
|
||||||
|
#include <usb_osintf.h>
|
||||||
|
|
||||||
extern void indicate_wx_scan_complete_event(_adapter *padapter);
|
extern void indicate_wx_scan_complete_event(_adapter *padapter);
|
||||||
extern u8 rtw_do_join(_adapter * padapter);
|
extern u8 rtw_do_join(_adapter * padapter);
|
||||||
|
@ -1319,33 +1320,26 @@ _func_enter_;
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("tgt_network->network.MacAddress=%pM ssid=%s\n",
|
RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, ("tgt_network->network.MacAddress=%pM ssid=%s\n",
|
||||||
tgt_network->network.MacAddress, tgt_network->network.Ssid.Ssid));
|
tgt_network->network.MacAddress, tgt_network->network.Ssid.Ssid));
|
||||||
|
|
||||||
if (check_fwstate( pmlmepriv, WIFI_STATION_STATE|WIFI_AP_STATE))
|
if (check_fwstate( pmlmepriv, WIFI_STATION_STATE|WIFI_AP_STATE)) {
|
||||||
{
|
|
||||||
struct sta_info* psta;
|
struct sta_info* psta;
|
||||||
|
|
||||||
psta = rtw_get_stainfo(&adapter->stapriv, tgt_network->network.MacAddress);
|
psta = rtw_get_stainfo(&adapter->stapriv, tgt_network->network.MacAddress);
|
||||||
|
|
||||||
#ifdef CONFIG_TDLS
|
#ifdef CONFIG_TDLS
|
||||||
if (ptdlsinfo->setup_state != TDLS_STATE_NONE)
|
if (ptdlsinfo->setup_state != TDLS_STATE_NONE) {
|
||||||
{
|
|
||||||
rtw_tdls_cmd(adapter, myid(&(adapter->eeprompriv)), TDLS_RS_RCR);
|
rtw_tdls_cmd(adapter, myid(&(adapter->eeprompriv)), TDLS_RS_RCR);
|
||||||
rtw_reset_tdls_info(adapter);
|
rtw_reset_tdls_info(adapter);
|
||||||
rtw_free_all_stainfo(adapter);
|
rtw_free_all_stainfo(adapter);
|
||||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
} else
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif //CONFIG_TDLS
|
#endif //CONFIG_TDLS
|
||||||
{
|
{
|
||||||
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
_enter_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||||
rtw_free_stainfo(adapter, psta);
|
rtw_free_stainfo(adapter, psta);
|
||||||
|
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit_critical_bh(&(pstapriv->sta_hash_lock), &irqL);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (check_fwstate( pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE))
|
if (check_fwstate( pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE|WIFI_AP_STATE)) {
|
||||||
{
|
|
||||||
struct sta_info* psta;
|
struct sta_info* psta;
|
||||||
|
|
||||||
rtw_free_all_stainfo(adapter);
|
rtw_free_all_stainfo(adapter);
|
||||||
|
@ -1363,28 +1357,17 @@ _func_enter_;
|
||||||
|
|
||||||
pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress);
|
pwlan = rtw_find_network(&pmlmepriv->scanned_queue, tgt_network->network.MacAddress);
|
||||||
if (pwlan)
|
if (pwlan)
|
||||||
{
|
|
||||||
pwlan->fixed = false;
|
pwlan->fixed = false;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_free_assoc_resources : pwlan== NULL\n\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_free_assoc_resources : pwlan== NULL\n\n"));
|
||||||
}
|
|
||||||
|
|
||||||
|
if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) && (adapter->stapriv.asoc_sta_count== 1)))
|
||||||
if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) && (adapter->stapriv.asoc_sta_count== 1))
|
|
||||||
/*||check_fwstate(pmlmepriv, WIFI_STATION_STATE)*/)
|
|
||||||
{
|
|
||||||
rtw_free_network_nolock(pmlmepriv, pwlan);
|
rtw_free_network_nolock(pmlmepriv, pwlan);
|
||||||
}
|
|
||||||
|
|
||||||
if (lock_scanned_queue)
|
if (lock_scanned_queue)
|
||||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||||
|
|
||||||
pmlmepriv->key_mask = 0;
|
pmlmepriv->key_mask = 0;
|
||||||
|
|
||||||
_func_exit_;
|
_func_exit_;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1772,44 +1755,34 @@ _func_enter_;
|
||||||
|
|
||||||
|
|
||||||
if (pmlmepriv->assoc_ssid.SsidLength == 0)
|
if (pmlmepriv->assoc_ssid.SsidLength == 0)
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("@@@@@ joinbss event call back for Any SSid\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("@@@@@ joinbss event call back for Any SSid\n"));
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("@@@@@ rtw_joinbss_event_callback for SSid:%s\n", pmlmepriv->assoc_ssid.Ssid));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("@@@@@ rtw_joinbss_event_callback for SSid:%s\n", pmlmepriv->assoc_ssid.Ssid));
|
||||||
}
|
|
||||||
|
|
||||||
the_same_macaddr = _rtw_memcmp(pnetwork->network.MacAddress, cur_network->network.MacAddress, ETH_ALEN);
|
the_same_macaddr = _rtw_memcmp(pnetwork->network.MacAddress, cur_network->network.MacAddress, ETH_ALEN);
|
||||||
|
|
||||||
pnetwork->network.Length = get_WLAN_BSSID_EX_sz(&pnetwork->network);
|
pnetwork->network.Length = get_WLAN_BSSID_EX_sz(&pnetwork->network);
|
||||||
if (pnetwork->network.Length > sizeof(WLAN_BSSID_EX))
|
if (pnetwork->network.Length > sizeof(WLAN_BSSID_EX)) {
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n\n ***joinbss_evt_callback return a wrong bss ***\n\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("\n\n ***joinbss_evt_callback return a wrong bss ***\n\n"));
|
||||||
goto ignore_joinbss_callback;
|
goto ignore_nolock;
|
||||||
}
|
}
|
||||||
|
|
||||||
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
_enter_critical_bh(&pmlmepriv->lock, &irqL);
|
||||||
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("\n rtw_joinbss_event_callback !! _enter_critical\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("\n rtw_joinbss_event_callback !! _enter_critical\n"));
|
||||||
|
|
||||||
if (pnetwork->join_res > 0)
|
if (pnetwork->join_res > 0) {
|
||||||
{
|
|
||||||
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
_enter_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||||
retry = 0;
|
retry = 0;
|
||||||
if (check_fwstate(pmlmepriv,_FW_UNDER_LINKING) )
|
if (check_fwstate(pmlmepriv,_FW_UNDER_LINKING) ) {
|
||||||
{
|
|
||||||
//s1. find ptarget_wlan
|
//s1. find ptarget_wlan
|
||||||
if (check_fwstate(pmlmepriv, _FW_LINKED) )
|
if (check_fwstate(pmlmepriv, _FW_LINKED) ) {
|
||||||
{
|
if (the_same_macaddr == true) {
|
||||||
if (the_same_macaddr == true)
|
|
||||||
{
|
|
||||||
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress);
|
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
pcur_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress);
|
pcur_wlan = rtw_find_network(&pmlmepriv->scanned_queue, cur_network->network.MacAddress);
|
||||||
if (pcur_wlan) pcur_wlan->fixed = false;
|
if (pcur_wlan)
|
||||||
|
pcur_wlan->fixed = false;
|
||||||
|
|
||||||
pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress);
|
pcur_sta = rtw_get_stainfo(pstapriv, cur_network->network.MacAddress);
|
||||||
if (pcur_sta){
|
if (pcur_sta){
|
||||||
|
@ -1819,27 +1792,23 @@ _func_enter_;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress);
|
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress);
|
||||||
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true){
|
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true) {
|
||||||
if (ptarget_wlan) ptarget_wlan->fixed = true;
|
if (ptarget_wlan)
|
||||||
|
ptarget_wlan->fixed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress);
|
ptarget_wlan = rtw_find_network(&pmlmepriv->scanned_queue, pnetwork->network.MacAddress);
|
||||||
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true){
|
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true){
|
||||||
if (ptarget_wlan) ptarget_wlan->fixed = true;
|
if (ptarget_wlan)
|
||||||
|
ptarget_wlan->fixed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//s2. update cur_network
|
//s2. update cur_network
|
||||||
if (ptarget_wlan)
|
if (ptarget_wlan) {
|
||||||
{
|
|
||||||
rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork);
|
rtw_joinbss_update_network(adapter, ptarget_wlan, pnetwork);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't find ptarget_wlan when joinbss_event callback\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't find ptarget_wlan when joinbss_event callback\n"));
|
||||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||||
goto ignore_joinbss_callback;
|
goto ignore_joinbss_callback;
|
||||||
|
@ -1847,11 +1816,9 @@ _func_enter_;
|
||||||
|
|
||||||
|
|
||||||
//s3. find ptarget_sta & update ptarget_sta after update cur_network only for station mode
|
//s3. find ptarget_sta & update ptarget_sta after update cur_network only for station mode
|
||||||
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true)
|
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true) {
|
||||||
{
|
|
||||||
ptarget_sta = rtw_joinbss_update_stainfo(adapter, pnetwork);
|
ptarget_sta = rtw_joinbss_update_stainfo(adapter, pnetwork);
|
||||||
if (ptarget_sta==NULL)
|
if (ptarget_sta==NULL) {
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't update stainfo when joinbss_event callback\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Can't update stainfo when joinbss_event callback\n"));
|
||||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||||
goto ignore_joinbss_callback;
|
goto ignore_joinbss_callback;
|
||||||
|
@ -1859,25 +1826,19 @@ _func_enter_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//s4. indicate connect
|
//s4. indicate connect
|
||||||
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true)
|
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true) {
|
||||||
{
|
|
||||||
rtw_indicate_connect(adapter);
|
rtw_indicate_connect(adapter);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
//adhoc mode will rtw_indicate_connect when rtw_stassoc_event_callback
|
//adhoc mode will rtw_indicate_connect when rtw_stassoc_event_callback
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("adhoc mode, fw_state:%x", get_fwstate(pmlmepriv)));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("adhoc mode, fw_state:%x", get_fwstate(pmlmepriv)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//s5. Cancle assoc_timer
|
//s5. Cancle assoc_timer
|
||||||
_cancel_timer(&pmlmepriv->assoc_timer, &timer_cancelled);
|
_cancel_timer(&pmlmepriv->assoc_timer, &timer_cancelled);
|
||||||
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("Cancle assoc_timer\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_info_,("Cancle assoc_timer\n"));
|
||||||
|
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_joinbss_event_callback err: fw_state:%x", get_fwstate(pmlmepriv)));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_joinbss_event_callback err: fw_state:%x", get_fwstate(pmlmepriv)));
|
||||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||||
goto ignore_joinbss_callback;
|
goto ignore_joinbss_callback;
|
||||||
|
@ -1885,23 +1846,15 @@ _func_enter_;
|
||||||
|
|
||||||
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
_exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL);
|
||||||
|
|
||||||
}
|
} else if (pnetwork->join_res == -4) {
|
||||||
else if (pnetwork->join_res == -4)
|
|
||||||
{
|
|
||||||
rtw_reset_securitypriv(adapter);
|
rtw_reset_securitypriv(adapter);
|
||||||
_set_timer(&pmlmepriv->assoc_timer, 1);
|
_set_timer(&pmlmepriv->assoc_timer, 1);
|
||||||
|
|
||||||
//rtw_free_assoc_resources(adapter, 1);
|
if ((check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) == true) {
|
||||||
|
|
||||||
if ((check_fwstate(pmlmepriv, _FW_UNDER_LINKING)) == true)
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("fail! clear _FW_UNDER_LINKING ^^^fw_state=%x\n", get_fwstate(pmlmepriv)));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("fail! clear _FW_UNDER_LINKING ^^^fw_state=%x\n", get_fwstate(pmlmepriv)));
|
||||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
||||||
}
|
}
|
||||||
|
} else { //if join_res < 0 (join fails), then try again
|
||||||
}
|
|
||||||
else //if join_res < 0 (join fails), then try again
|
|
||||||
{
|
|
||||||
|
|
||||||
#ifdef REJOIN
|
#ifdef REJOIN
|
||||||
res = _FAIL;
|
res = _FAIL;
|
||||||
|
@ -1910,24 +1863,18 @@ _func_enter_;
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_select_and_join_from_scanned_queue again! res:%d\n",res));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("rtw_select_and_join_from_scanned_queue again! res:%d\n",res));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res == _SUCCESS)
|
if (res == _SUCCESS) {
|
||||||
{
|
|
||||||
//extend time of assoc_timer
|
//extend time of assoc_timer
|
||||||
_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT);
|
_set_timer(&pmlmepriv->assoc_timer, MAX_JOIN_TIMEOUT);
|
||||||
retry++;
|
retry++;
|
||||||
}
|
} else if (res == 2) { //there is no need to wait for join
|
||||||
else if (res == 2)//there is no need to wait for join
|
|
||||||
{
|
|
||||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
||||||
rtw_indicate_connect(adapter);
|
rtw_indicate_connect(adapter);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Set Assoc_Timer = 1; can't find match ssid in scanned_q\n"));
|
RT_TRACE(_module_rtl871x_mlme_c_,_drv_err_,("Set Assoc_Timer = 1; can't find match ssid in scanned_q\n"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_set_timer(&pmlmepriv->assoc_timer, 1);
|
_set_timer(&pmlmepriv->assoc_timer, 1);
|
||||||
//rtw_free_assoc_resources(adapter, 1);
|
|
||||||
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
_clr_fwstate_(pmlmepriv, _FW_UNDER_LINKING);
|
||||||
|
|
||||||
#ifdef REJOIN
|
#ifdef REJOIN
|
||||||
|
@ -1937,9 +1884,9 @@ _func_enter_;
|
||||||
}
|
}
|
||||||
|
|
||||||
ignore_joinbss_callback:
|
ignore_joinbss_callback:
|
||||||
|
|
||||||
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
_exit_critical_bh(&pmlmepriv->lock, &irqL);
|
||||||
_func_exit_;
|
ignore_nolock:
|
||||||
|
_func_exit_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtw_joinbss_event_callback(_adapter *adapter, u8 *pbuf)
|
void rtw_joinbss_event_callback(_adapter *adapter, u8 *pbuf)
|
||||||
|
@ -1963,7 +1910,7 @@ _func_enter_;
|
||||||
_func_exit_;
|
_func_exit_;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 search_max_mac_id(_adapter *padapter)
|
static u8 search_max_mac_id(_adapter *padapter)
|
||||||
{
|
{
|
||||||
u8 mac_id, aid;
|
u8 mac_id, aid;
|
||||||
#if (RATE_ADAPTIVE_SUPPORT==1) //for 88E RA
|
#if (RATE_ADAPTIVE_SUPPORT==1) //for 88E RA
|
||||||
|
@ -2531,7 +2478,6 @@ void rtw_dynamic_check_timer_handlder(_adapter *adapter)
|
||||||
&& (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true) )
|
&& (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true) )
|
||||||
{
|
{
|
||||||
// expire NAT2.5 entry
|
// expire NAT2.5 entry
|
||||||
void nat25_db_expire(_adapter *priv);
|
|
||||||
nat25_db_expire(adapter);
|
nat25_db_expire(adapter);
|
||||||
|
|
||||||
if (adapter->pppoe_connection_in_progress > 0) {
|
if (adapter->pppoe_connection_in_progress > 0) {
|
||||||
|
@ -2651,19 +2597,15 @@ static int rtw_check_join_candidate(struct mlme_priv *pmlmepriv
|
||||||
}
|
}
|
||||||
if (updated){
|
if (updated){
|
||||||
DBG_88E("[by_bssid:%u][assoc_ssid:%s]"
|
DBG_88E("[by_bssid:%u][assoc_ssid:%s]"
|
||||||
#ifdef CONFIG_LAYER2_ROAMING
|
|
||||||
"[to_roaming:%u] "
|
|
||||||
#endif
|
|
||||||
"new candidate: %s(%pM rssi:%d\n",
|
"new candidate: %s(%pM rssi:%d\n",
|
||||||
pmlmepriv->assoc_by_bssid,
|
pmlmepriv->assoc_by_bssid,
|
||||||
pmlmepriv->assoc_ssid.Ssid,
|
pmlmepriv->assoc_ssid.Ssid,
|
||||||
#ifdef CONFIG_LAYER2_ROAMING
|
|
||||||
pmlmepriv->to_roaming,
|
|
||||||
#endif
|
|
||||||
(*candidate)->network.Ssid.Ssid,
|
(*candidate)->network.Ssid.Ssid,
|
||||||
(*candidate)->network.MacAddress,
|
(*candidate)->network.MacAddress,
|
||||||
(int)(*candidate)->network.Rssi
|
(int)(*candidate)->network.Rssi);
|
||||||
);
|
#ifdef CONFIG_LAYER2_ROAMING
|
||||||
|
DBG_88E("[to_roaming:%u]\n", pmlmepriv->to_roaming);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|
|
@ -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( _adapter *padapter )
|
static int is_any_client_associated( _adapter *padapter)
|
||||||
{
|
{
|
||||||
_irqL irqL;
|
_irqL irqL;
|
||||||
_list *phead, *plist;
|
_list *phead, *plist;
|
||||||
|
|
|
@ -135,12 +135,7 @@ extern void autosuspend_enter(_adapter* padapter);
|
||||||
extern int autoresume_enter(_adapter* padapter);
|
extern int autoresume_enter(_adapter* padapter);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef SUPPORT_HW_RFOFF_DETECTED
|
static bool rtw_pwr_unassociated_idle(_adapter *adapter)
|
||||||
int rtw_hw_suspend(_adapter *padapter );
|
|
||||||
int rtw_hw_resume(_adapter *padapter);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool rtw_pwr_unassociated_idle(_adapter *adapter)
|
|
||||||
{
|
{
|
||||||
_adapter *buddy = adapter->pbuddy_adapter;
|
_adapter *buddy = adapter->pbuddy_adapter;
|
||||||
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
struct mlme_priv *pmlmepriv = &(adapter->mlmepriv);
|
||||||
|
|
103
core/rtw_recv.c
103
core/rtw_recv.c
|
@ -26,17 +26,7 @@
|
||||||
#include <ip.h>
|
#include <ip.h>
|
||||||
#include <if_ether.h>
|
#include <if_ether.h>
|
||||||
#include <ethernet.h>
|
#include <ethernet.h>
|
||||||
|
|
||||||
#ifdef CONFIG_USB_HCI
|
|
||||||
#include <usb_ops.h>
|
#include <usb_ops.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS)
|
|
||||||
|
|
||||||
#error "Shall be Linux or Windows, but not both!\n"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <wifi.h>
|
#include <wifi.h>
|
||||||
#include <circ_buf.h>
|
#include <circ_buf.h>
|
||||||
|
|
||||||
|
@ -55,9 +45,6 @@ _func_enter_;
|
||||||
|
|
||||||
_rtw_spinlock_init(&psta_recvpriv->lock);
|
_rtw_spinlock_init(&psta_recvpriv->lock);
|
||||||
|
|
||||||
//for (i=0; i<MAX_RX_NUMBLKS; i++)
|
|
||||||
// _rtw_init_queue(&psta_recvpriv->blk_strms[i]);
|
|
||||||
|
|
||||||
_rtw_init_queue(&psta_recvpriv->defrag_q);
|
_rtw_init_queue(&psta_recvpriv->defrag_q);
|
||||||
|
|
||||||
_func_exit_;
|
_func_exit_;
|
||||||
|
@ -372,7 +359,7 @@ void rtw_free_recvframe_queue(_queue *pframequeue, _queue *pfree_recv_queue)
|
||||||
_list *plist, *phead;
|
_list *plist, *phead;
|
||||||
|
|
||||||
_func_enter_;
|
_func_enter_;
|
||||||
_rtw_spinlock(&pframequeue->lock);
|
spin_lock(&pframequeue->lock);
|
||||||
|
|
||||||
phead = get_list_head(pframequeue);
|
phead = get_list_head(pframequeue);
|
||||||
plist = get_next(phead);
|
plist = get_next(phead);
|
||||||
|
@ -388,7 +375,7 @@ _func_enter_;
|
||||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
_rtw_spinunlock(&pframequeue->lock);
|
spin_unlock(&pframequeue->lock);
|
||||||
|
|
||||||
_func_exit_;
|
_func_exit_;
|
||||||
|
|
||||||
|
@ -2594,10 +2581,8 @@ _func_enter_;
|
||||||
|
|
||||||
//Then enqueue the 0~(n-1) fragment into the defrag_q
|
//Then enqueue the 0~(n-1) fragment into the defrag_q
|
||||||
|
|
||||||
//_rtw_spinlock(&pdefrag_q->lock);
|
|
||||||
phead = get_list_head(pdefrag_q);
|
phead = get_list_head(pdefrag_q);
|
||||||
rtw_list_insert_tail(&pfhdr->list, phead);
|
rtw_list_insert_tail(&pfhdr->list, phead);
|
||||||
//_rtw_spinunlock(&pdefrag_q->lock);
|
|
||||||
|
|
||||||
RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Enqueuq: ismfrag = %d, fragnum= %d\n", ismfrag,fragnum));
|
RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Enqueuq: ismfrag = %d, fragnum= %d\n", ismfrag,fragnum));
|
||||||
|
|
||||||
|
@ -2620,10 +2605,8 @@ _func_enter_;
|
||||||
//enqueue the last fragment
|
//enqueue the last fragment
|
||||||
if (pdefrag_q != NULL)
|
if (pdefrag_q != NULL)
|
||||||
{
|
{
|
||||||
//_rtw_spinlock(&pdefrag_q->lock);
|
|
||||||
phead = get_list_head(pdefrag_q);
|
phead = get_list_head(pdefrag_q);
|
||||||
rtw_list_insert_tail(&pfhdr->list,phead);
|
rtw_list_insert_tail(&pfhdr->list,phead);
|
||||||
//_rtw_spinunlock(&pdefrag_q->lock);
|
|
||||||
|
|
||||||
//call recvframe_defrag to defrag
|
//call recvframe_defrag to defrag
|
||||||
RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("defrag: ismfrag = %d, fragnum= %d\n", ismfrag, fragnum));
|
RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("defrag: ismfrag = %d, fragnum= %d\n", ismfrag, fragnum));
|
||||||
|
@ -2659,7 +2642,7 @@ _func_exit_;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe)
|
static int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe)
|
||||||
{
|
{
|
||||||
#if defined (PLATFORM_LINUX) || defined (PLATFORM_FREEBSD) //for amsdu TP improvement,Creator: Thomas
|
#if defined (PLATFORM_LINUX) || defined (PLATFORM_FREEBSD) //for amsdu TP improvement,Creator: Thomas
|
||||||
int a_len, padding_len;
|
int a_len, padding_len;
|
||||||
|
@ -2815,25 +2798,7 @@ int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe)
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
#endif // (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35))
|
||||||
|
|
||||||
|
|
||||||
if ( br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true) )
|
|
||||||
{
|
|
||||||
int nat25_handle_frame(_adapter *priv, struct sk_buff *skb);
|
|
||||||
if (nat25_handle_frame(padapter, sub_skb) == -1) {
|
|
||||||
//priv->ext_stats.rx_data_drops++;
|
|
||||||
//DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n");
|
|
||||||
//return FAIL;
|
|
||||||
|
|
||||||
#if 1
|
|
||||||
// bypass this frame to upper layer!!
|
|
||||||
#else
|
|
||||||
dev_kfree_skb_any(sub_skb);
|
|
||||||
continue;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif // CONFIG_BR_EXT
|
#endif // CONFIG_BR_EXT
|
||||||
|
|
||||||
sub_skb->protocol = eth_type_trans(sub_skb, padapter->pnetdev);
|
sub_skb->protocol = eth_type_trans(sub_skb, padapter->pnetdev);
|
||||||
sub_skb->dev = padapter->pnetdev;
|
sub_skb->dev = padapter->pnetdev;
|
||||||
|
|
||||||
|
@ -3128,7 +3093,7 @@ exit:
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num)
|
static int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_num)
|
||||||
{
|
{
|
||||||
u8 wsize = preorder_ctrl->wsize_b;
|
u8 wsize = preorder_ctrl->wsize_b;
|
||||||
u16 wend = (preorder_ctrl->indicate_seq + wsize -1) & 0xFFF;//% 4096;
|
u16 wend = (preorder_ctrl->indicate_seq + wsize -1) & 0xFFF;//% 4096;
|
||||||
|
@ -3206,87 +3171,45 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec
|
||||||
union recv_frame *pnextrframe;
|
union recv_frame *pnextrframe;
|
||||||
struct rx_pkt_attrib *pnextattrib;
|
struct rx_pkt_attrib *pnextattrib;
|
||||||
|
|
||||||
//DbgPrint("+enqueue_reorder_recvframe()\n");
|
|
||||||
|
|
||||||
//_enter_critical_ex(&ppending_recvframe_queue->lock, &irql);
|
|
||||||
//_rtw_spinlock_ex(&ppending_recvframe_queue->lock);
|
|
||||||
|
|
||||||
|
|
||||||
phead = get_list_head(ppending_recvframe_queue);
|
phead = get_list_head(ppending_recvframe_queue);
|
||||||
plist = get_next(phead);
|
plist = get_next(phead);
|
||||||
|
|
||||||
while (rtw_end_of_queue_search(phead, plist) == false)
|
while (rtw_end_of_queue_search(phead, plist) == false) {
|
||||||
{
|
|
||||||
pnextrframe = LIST_CONTAINOR(plist, union recv_frame, u);
|
pnextrframe = LIST_CONTAINOR(plist, union recv_frame, u);
|
||||||
pnextattrib = &pnextrframe->u.hdr.attrib;
|
pnextattrib = &pnextrframe->u.hdr.attrib;
|
||||||
|
|
||||||
if (SN_LESS(pnextattrib->seq_num, pattrib->seq_num))
|
if (SN_LESS(pnextattrib->seq_num, pattrib->seq_num))
|
||||||
{
|
|
||||||
plist = get_next(plist);
|
plist = get_next(plist);
|
||||||
}
|
|
||||||
else if ( SN_EQUAL(pnextattrib->seq_num, pattrib->seq_num))
|
else if ( SN_EQUAL(pnextattrib->seq_num, pattrib->seq_num))
|
||||||
{
|
|
||||||
//Duplicate entry is found!! Do not insert current entry.
|
|
||||||
//RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("InsertRxReorderList(): Duplicate packet is dropped!! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, SeqNum));
|
|
||||||
|
|
||||||
//_exit_critical_ex(&ppending_recvframe_queue->lock, &irql);
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
//DbgPrint("enqueue_reorder_recvframe():while\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//_enter_critical_ex(&ppending_recvframe_queue->lock, &irql);
|
|
||||||
//_rtw_spinlock_ex(&ppending_recvframe_queue->lock);
|
|
||||||
|
|
||||||
rtw_list_delete(&(prframe->u.hdr.list));
|
rtw_list_delete(&(prframe->u.hdr.list));
|
||||||
|
|
||||||
rtw_list_insert_tail(&(prframe->u.hdr.list), plist);
|
rtw_list_insert_tail(&(prframe->u.hdr.list), plist);
|
||||||
|
|
||||||
//_rtw_spinunlock_ex(&ppending_recvframe_queue->lock);
|
|
||||||
//_exit_critical_ex(&ppending_recvframe_queue->lock, &irql);
|
|
||||||
|
|
||||||
|
|
||||||
//RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("InsertRxReorderList(): Pkt insert into buffer!! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, SeqNum));
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced);
|
static int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced)
|
||||||
int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced)
|
|
||||||
{
|
{
|
||||||
//_irqL irql;
|
|
||||||
//u8 bcancelled;
|
|
||||||
_list *phead, *plist;
|
_list *phead, *plist;
|
||||||
union recv_frame *prframe;
|
union recv_frame *prframe;
|
||||||
struct rx_pkt_attrib *pattrib;
|
struct rx_pkt_attrib *pattrib;
|
||||||
//u8 index = 0;
|
|
||||||
int bPktInBuf = false;
|
int bPktInBuf = false;
|
||||||
struct recv_priv *precvpriv = &padapter->recvpriv;
|
struct recv_priv *precvpriv = &padapter->recvpriv;
|
||||||
_queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
|
_queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
|
||||||
|
|
||||||
//DbgPrint("+recv_indicatepkts_in_order\n");
|
|
||||||
|
|
||||||
//_enter_critical_ex(&ppending_recvframe_queue->lock, &irql);
|
|
||||||
//_rtw_spinlock_ex(&ppending_recvframe_queue->lock);
|
|
||||||
|
|
||||||
phead = get_list_head(ppending_recvframe_queue);
|
phead = get_list_head(ppending_recvframe_queue);
|
||||||
plist = get_next(phead);
|
plist = get_next(phead);
|
||||||
|
|
||||||
// Handling some condition for forced indicate case.
|
// Handling some condition for forced indicate case.
|
||||||
if (bforced==true)
|
if (bforced==true) {
|
||||||
{
|
|
||||||
if (rtw_is_list_empty(phead))
|
if (rtw_is_list_empty(phead))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
prframe = LIST_CONTAINOR(plist, union recv_frame, u);
|
prframe = LIST_CONTAINOR(plist, union recv_frame, u);
|
||||||
pattrib = &prframe->u.hdr.attrib;
|
pattrib = &prframe->u.hdr.attrib;
|
||||||
preorder_ctrl->indicate_seq = pattrib->seq_num;
|
preorder_ctrl->indicate_seq = pattrib->seq_num;
|
||||||
#ifdef DBG_RX_SEQ
|
#ifdef DBG_RX_SEQ
|
||||||
|
@ -3297,14 +3220,12 @@ int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *pre
|
||||||
|
|
||||||
// Prepare indication list and indication.
|
// Prepare indication list and indication.
|
||||||
// Check if there is any packet need indicate.
|
// Check if there is any packet need indicate.
|
||||||
while (!rtw_is_list_empty(phead))
|
while (!rtw_is_list_empty(phead)) {
|
||||||
{
|
|
||||||
|
|
||||||
prframe = LIST_CONTAINOR(plist, union recv_frame, u);
|
prframe = LIST_CONTAINOR(plist, union recv_frame, u);
|
||||||
pattrib = &prframe->u.hdr.attrib;
|
pattrib = &prframe->u.hdr.attrib;
|
||||||
|
|
||||||
if (!SN_LESS(preorder_ctrl->indicate_seq, pattrib->seq_num))
|
if (!SN_LESS(preorder_ctrl->indicate_seq, pattrib->seq_num)) {
|
||||||
{
|
|
||||||
RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_,
|
RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_,
|
||||||
("recv_indicatepkts_in_order: indicate=%d seq=%d amsdu=%d\n",
|
("recv_indicatepkts_in_order: indicate=%d seq=%d amsdu=%d\n",
|
||||||
preorder_ctrl->indicate_seq, pattrib->seq_num, pattrib->amsdu));
|
preorder_ctrl->indicate_seq, pattrib->seq_num, pattrib->amsdu));
|
||||||
|
@ -3657,7 +3578,7 @@ int process_recv_indicatepkts(_adapter *padapter, union recv_frame *prframe)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int recv_func_prehandle(_adapter *padapter, union recv_frame *rframe)
|
static int recv_func_prehandle(_adapter *padapter, union recv_frame *rframe)
|
||||||
{
|
{
|
||||||
int ret = _SUCCESS;
|
int ret = _SUCCESS;
|
||||||
struct rx_pkt_attrib *pattrib = &rframe->u.hdr.attrib;
|
struct rx_pkt_attrib *pattrib = &rframe->u.hdr.attrib;
|
||||||
|
@ -3701,7 +3622,7 @@ exit:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe)
|
static int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe)
|
||||||
{
|
{
|
||||||
int ret = _SUCCESS;
|
int ret = _SUCCESS;
|
||||||
union recv_frame *orig_prframe = prframe;
|
union recv_frame *orig_prframe = prframe;
|
||||||
|
|
|
@ -31,7 +31,7 @@ struct ch_freq {
|
||||||
u32 frequency;
|
u32 frequency;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ch_freq ch_freq_map[] = {
|
static struct ch_freq ch_freq_map[] = {
|
||||||
{1, 2412},{2, 2417},{3, 2422},{4, 2427},{5, 2432},
|
{1, 2412},{2, 2417},{3, 2422},{4, 2427},{5, 2432},
|
||||||
{6, 2437},{7, 2442},{8, 2447},{9, 2452},{10, 2457},
|
{6, 2437},{7, 2442},{8, 2447},{9, 2452},{10, 2457},
|
||||||
{11, 2462},{12, 2467},{13, 2472},{14, 2484},
|
{11, 2462},{12, 2467},{13, 2472},{14, 2484},
|
||||||
|
@ -53,7 +53,7 @@ struct ch_freq ch_freq_map[] = {
|
||||||
{216, 5080},/* Japan, means J16 */
|
{216, 5080},/* Japan, means J16 */
|
||||||
};
|
};
|
||||||
|
|
||||||
int ch_freq_map_num = (sizeof(ch_freq_map) / sizeof(struct ch_freq));
|
static int ch_freq_map_num = (sizeof(ch_freq_map) / sizeof(struct ch_freq));
|
||||||
|
|
||||||
u32 rtw_ch2freq(u32 channel)
|
u32 rtw_ch2freq(u32 channel)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,19 +25,19 @@
|
||||||
#include <wifi.h>
|
#include <wifi.h>
|
||||||
|
|
||||||
|
|
||||||
unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f};
|
static unsigned char ARTHEROS_OUI1[] = {0x00, 0x03, 0x7f};
|
||||||
unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74};
|
static unsigned char ARTHEROS_OUI2[] = {0x00, 0x13, 0x74};
|
||||||
|
|
||||||
unsigned char BROADCOM_OUI1[] = {0x00, 0x10, 0x18};
|
static unsigned char BROADCOM_OUI1[] = {0x00, 0x10, 0x18};
|
||||||
unsigned char BROADCOM_OUI2[] = {0x00, 0x0a, 0xf7};
|
static unsigned char BROADCOM_OUI2[] = {0x00, 0x0a, 0xf7};
|
||||||
unsigned char BROADCOM_OUI3[] = {0x00, 0x05, 0xb5};
|
static unsigned char BROADCOM_OUI3[] = {0x00, 0x05, 0xb5};
|
||||||
|
|
||||||
unsigned char CISCO_OUI[] = {0x00, 0x40, 0x96};
|
static unsigned char CISCO_OUI[] = {0x00, 0x40, 0x96};
|
||||||
unsigned char MARVELL_OUI[] = {0x00, 0x50, 0x43};
|
static unsigned char MARVELL_OUI[] = {0x00, 0x50, 0x43};
|
||||||
unsigned char RALINK_OUI[] = {0x00, 0x0c, 0x43};
|
static unsigned char RALINK_OUI[] = {0x00, 0x0c, 0x43};
|
||||||
unsigned char REALTEK_OUI[] = {0x00, 0xe0, 0x4c};
|
static unsigned char REALTEK_OUI[] = {0x00, 0xe0, 0x4c};
|
||||||
unsigned char AIRGOCAP_OUI[] = {0x00, 0x0a, 0xf5};
|
static unsigned char AIRGOCAP_OUI[] = {0x00, 0x0a, 0xf5};
|
||||||
unsigned char EPIGRAM_OUI[] = {0x00, 0x90, 0x4c};
|
static unsigned char EPIGRAM_OUI[] = {0x00, 0x90, 0x4c};
|
||||||
|
|
||||||
unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
|
unsigned char REALTEK_96B_IE[] = {0x00, 0xe0, 0x4c, 0x02, 0x01, 0x20};
|
||||||
|
|
||||||
|
@ -710,7 +710,7 @@ void CAM_empty_entry(
|
||||||
|
|
||||||
void invalidate_cam_all(_adapter *padapter)
|
void invalidate_cam_all(_adapter *padapter)
|
||||||
{
|
{
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, 0);
|
rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void write_cam(_adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key)
|
void write_cam(_adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key)
|
||||||
|
@ -826,7 +826,7 @@ void flush_all_cam_entry(_adapter *padapter)
|
||||||
}
|
}
|
||||||
#else //CONFIG_CONCURRENT_MODE
|
#else //CONFIG_CONCURRENT_MODE
|
||||||
|
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, 0);
|
rtw_hal_set_hwreg(padapter, HW_VAR_CAM_INVALID_ALL, NULL);
|
||||||
|
|
||||||
#endif //CONFIG_CONCURRENT_MODE
|
#endif //CONFIG_CONCURRENT_MODE
|
||||||
|
|
||||||
|
@ -2235,10 +2235,6 @@ void update_wireless_mode(_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(_adapter *padapter, unsigned int addr, unsigned int value)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_bmc_sta_support_rate(_adapter *padapter, u32 mac_id)
|
void update_bmc_sta_support_rate(_adapter *padapter, u32 mac_id)
|
||||||
{
|
{
|
||||||
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv);
|
||||||
|
@ -2335,7 +2331,7 @@ void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len)
|
||||||
|
|
||||||
void correct_TSF(_adapter *padapter, struct mlme_ext_priv *pmlmeext)
|
void correct_TSF(_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(_adapter *padapter)
|
void beacon_timing_control(_adapter *padapter)
|
||||||
|
|
|
@ -26,18 +26,8 @@
|
||||||
#include <osdep_intf.h>
|
#include <osdep_intf.h>
|
||||||
#include <circ_buf.h>
|
#include <circ_buf.h>
|
||||||
#include <ip.h>
|
#include <ip.h>
|
||||||
|
|
||||||
#if defined (PLATFORM_LINUX) && defined (PLATFORM_WINDOWS)
|
|
||||||
#error "Shall be Linux or Windows, but not both!\n"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PLATFORM_WINDOWS
|
|
||||||
#include <if_ether.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_USB_HCI
|
|
||||||
#include <usb_ops.h>
|
#include <usb_ops.h>
|
||||||
#endif
|
#include <usb_osintf.h>
|
||||||
|
|
||||||
|
|
||||||
static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 };
|
static u8 P802_1H_OUI[P80211_OUI_LEN] = { 0x00, 0x00, 0xf8 };
|
||||||
|
@ -1105,8 +1095,7 @@ _func_enter_;
|
||||||
|
|
||||||
SetFrameSubType(fctrl, pattrib->subtype);
|
SetFrameSubType(fctrl, pattrib->subtype);
|
||||||
|
|
||||||
if (pattrib->subtype & WIFI_DATA_TYPE)
|
if (pattrib->subtype & WIFI_DATA_TYPE) {
|
||||||
{
|
|
||||||
if ((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true)) {
|
if ((check_fwstate(pmlmepriv, WIFI_STATION_STATE) == true)) {
|
||||||
//to_ds = 1, fr_ds = 0;
|
//to_ds = 1, fr_ds = 0;
|
||||||
#ifdef CONFIG_TDLS
|
#ifdef CONFIG_TDLS
|
||||||
|
@ -1840,7 +1829,7 @@ _func_enter_;
|
||||||
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);
|
||||||
|
|
||||||
_func_exit_;
|
_func_exit_;
|
||||||
|
|
||||||
|
@ -2662,14 +2651,13 @@ _func_exit_;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_BR_EXT
|
#ifdef CONFIG_BR_EXT
|
||||||
int rtw_br_client_tx(_adapter *padapter, struct sk_buff **pskb)
|
static int rtw_br_client_tx(_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;
|
||||||
_irqL irqL;
|
_irqL irqL;
|
||||||
//if (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true)
|
//if (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true)
|
||||||
{
|
{
|
||||||
void dhcp_flag_bcast(_adapter *priv, struct sk_buff *skb);
|
|
||||||
int res, is_vlan_tag=0, i, do_nat25=1;
|
int res, is_vlan_tag=0, i, do_nat25=1;
|
||||||
unsigned short vlan_hdr=0;
|
unsigned short vlan_hdr=0;
|
||||||
void *br_port = NULL;
|
void *br_port = NULL;
|
||||||
|
@ -2687,14 +2675,14 @@ int rtw_br_client_tx(_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;
|
||||||
_exit_critical_bh(&padapter->br_ext_lock, &irqL);
|
_exit_critical_bh(&padapter->br_ext_lock, &irqL);
|
||||||
} else {
|
} else {
|
||||||
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++)
|
||||||
|
@ -2702,13 +2690,11 @@ int rtw_br_client_tx(_adapter *padapter, struct sk_buff **pskb)
|
||||||
skb_pull(skb, 4);
|
skb_pull(skb, 4);
|
||||||
}
|
}
|
||||||
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(_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);
|
||||||
|
@ -2728,7 +2714,6 @@ int rtw_br_client_tx(_adapter *padapter, struct sk_buff **pskb)
|
||||||
}
|
}
|
||||||
_exit_critical_bh(&padapter->br_ext_lock, &irqL);
|
_exit_critical_bh(&padapter->br_ext_lock, &irqL);
|
||||||
if (do_nat25) {
|
if (do_nat25) {
|
||||||
int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method);
|
|
||||||
if (nat25_db_handle(padapter, skb, NAT25_CHECK) == 0) {
|
if (nat25_db_handle(padapter, skb, NAT25_CHECK) == 0) {
|
||||||
struct sk_buff *newskb;
|
struct sk_buff *newskb;
|
||||||
|
|
||||||
|
@ -2736,7 +2721,7 @@ int rtw_br_client_tx(_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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2797,7 +2782,7 @@ int rtw_br_client_tx(_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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3738,7 +3723,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:
|
||||||
|
|
|
@ -60,7 +60,7 @@ CheckCondition(
|
||||||
* AGC_TAB_1T.TXT
|
* AGC_TAB_1T.TXT
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
u4Byte Array_AGC_TAB_1T_8188E[] = {
|
static u4Byte Array_AGC_TAB_1T_8188E[] = {
|
||||||
0xC78, 0xFB000001,
|
0xC78, 0xFB000001,
|
||||||
0xC78, 0xFB010001,
|
0xC78, 0xFB010001,
|
||||||
0xC78, 0xFB020001,
|
0xC78, 0xFB020001,
|
||||||
|
@ -327,7 +327,7 @@ ODM_ReadAndConfig_AGC_TAB_1T_8188E(
|
||||||
* PHY_REG_1T.TXT
|
* PHY_REG_1T.TXT
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
u4Byte Array_PHY_REG_1T_8188E[] = {
|
static u4Byte Array_PHY_REG_1T_8188E[] = {
|
||||||
0x800, 0x80040000,
|
0x800, 0x80040000,
|
||||||
0x804, 0x00000003,
|
0x804, 0x00000003,
|
||||||
0x808, 0x0000FC00,
|
0x808, 0x0000FC00,
|
||||||
|
@ -737,7 +737,7 @@ ODM_ReadAndConfig_PHY_REG_1T_8188E(
|
||||||
* PHY_REG_PG.TXT
|
* PHY_REG_PG.TXT
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
u4Byte Array_PHY_REG_PG_8188E[] = {
|
static u4Byte Array_PHY_REG_PG_8188E[] = {
|
||||||
0xE00, 0xFFFFFFFF, 0x06070809,
|
0xE00, 0xFFFFFFFF, 0x06070809,
|
||||||
0xE04, 0xFFFFFFFF, 0x02020405,
|
0xE04, 0xFFFFFFFF, 0x02020405,
|
||||||
0xE08, 0x0000FF00, 0x00000006,
|
0xE08, 0x0000FF00, 0x00000006,
|
||||||
|
|
|
@ -58,7 +58,7 @@ CheckCondition(
|
||||||
* MAC_REG.TXT
|
* MAC_REG.TXT
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
u4Byte Array_MAC_REG_8188E[] = {
|
static u4Byte Array_MAC_REG_8188E[] = {
|
||||||
0x026, 0x00000041,
|
0x026, 0x00000041,
|
||||||
0x027, 0x00000035,
|
0x027, 0x00000035,
|
||||||
0x428, 0x0000000A,
|
0x428, 0x0000000A,
|
||||||
|
|
|
@ -60,7 +60,7 @@ CheckCondition(
|
||||||
* RadioA_1T.TXT
|
* RadioA_1T.TXT
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
u4Byte Array_RadioA_1T_8188E[] = {
|
static u4Byte Array_RadioA_1T_8188E[] = {
|
||||||
0x000, 0x00030000,
|
0x000, 0x00030000,
|
||||||
0x008, 0x00084000,
|
0x008, 0x00084000,
|
||||||
0x018, 0x00000407,
|
0x018, 0x00000407,
|
||||||
|
|
|
@ -130,7 +130,7 @@ ODM_TxPwrTrackAdjust88E(
|
||||||
* 04/23/2012 MHC Create Version 0.
|
* 04/23/2012 MHC Create Version 0.
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void
|
static void
|
||||||
odm_TxPwrTrackSetPwr88E(
|
odm_TxPwrTrackSetPwr88E(
|
||||||
PDM_ODM_T pDM_Odm
|
PDM_ODM_T pDM_Odm
|
||||||
)
|
)
|
||||||
|
@ -627,7 +627,7 @@ odm_TXPowerTrackingCallback_ThermalMeter_8188E(
|
||||||
#define MAX_TOLERANCE 5
|
#define MAX_TOLERANCE 5
|
||||||
#define IQK_DELAY_TIME 1 //ms
|
#define IQK_DELAY_TIME 1 //ms
|
||||||
|
|
||||||
u1Byte //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK
|
static u1Byte //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK
|
||||||
phy_PathA_IQK_8188E(
|
phy_PathA_IQK_8188E(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
|
@ -691,7 +691,7 @@ phy_PathA_IQK_8188E(
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
u1Byte //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK
|
static u1Byte //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK
|
||||||
phy_PathA_RxIQK(
|
phy_PathA_RxIQK(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
|
@ -836,7 +836,7 @@ phy_PathA_RxIQK(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
u1Byte //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK
|
static u1Byte //bit0 = 1 => Tx OK, bit1 = 1 => Rx OK
|
||||||
phy_PathB_IQK_8188E(
|
phy_PathB_IQK_8188E(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm
|
PDM_ODM_T pDM_Odm
|
||||||
|
@ -899,7 +899,7 @@ phy_PathB_IQK_8188E(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
_PHY_PathAFillIQKMatrix(
|
_PHY_PathAFillIQKMatrix(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
|
@ -974,7 +974,7 @@ _PHY_PathAFillIQKMatrix(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
_PHY_PathBFillIQKMatrix(
|
_PHY_PathBFillIQKMatrix(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
|
@ -1046,7 +1046,7 @@ _PHY_PathBFillIQKMatrix(
|
||||||
//
|
//
|
||||||
// MP Already declare in odm.c
|
// MP Already declare in odm.c
|
||||||
#if !(DM_ODM_SUPPORT_TYPE & ODM_MP)
|
#if !(DM_ODM_SUPPORT_TYPE & ODM_MP)
|
||||||
bool
|
static bool
|
||||||
ODM_CheckPowerStatus(
|
ODM_CheckPowerStatus(
|
||||||
PADAPTER Adapter)
|
PADAPTER Adapter)
|
||||||
{
|
{
|
||||||
|
@ -1111,8 +1111,7 @@ _PHY_SaveADDARegisters(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
static void _PHY_SaveMACRegisters(
|
||||||
_PHY_SaveMACRegisters(
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
@ -1141,7 +1140,7 @@ _PHY_SaveMACRegisters(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
static void
|
||||||
_PHY_ReloadADDARegisters(
|
_PHY_ReloadADDARegisters(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
|
@ -1171,7 +1170,7 @@ _PHY_ReloadADDARegisters(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
_PHY_ReloadMACRegisters(
|
_PHY_ReloadMACRegisters(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
|
@ -1297,8 +1296,7 @@ _PHY_PathAStandBy(
|
||||||
ODM_SetBBReg(pDM_Odm, rFPGA0_IQK, bMaskDWord, 0x80800000);
|
ODM_SetBBReg(pDM_Odm, rFPGA0_IQK, bMaskDWord, 0x80800000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void _PHY_PIModeSwitch(
|
||||||
_PHY_PIModeSwitch(
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
@ -1324,8 +1322,7 @@ _PHY_PIModeSwitch(
|
||||||
ODM_SetBBReg(pDM_Odm, rFPGA0_XB_HSSIParameter1, bMaskDWord, mode);
|
ODM_SetBBReg(pDM_Odm, rFPGA0_XB_HSSIParameter1, bMaskDWord, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
static bool phy_SimularityCompare_8188E(
|
||||||
phy_SimularityCompare_8188E(
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
@ -1457,10 +1454,7 @@ phy_SimularityCompare_8188E(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void phy_IQCalibrate_8188E(
|
||||||
|
|
||||||
void
|
|
||||||
phy_IQCalibrate_8188E(
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
@ -1519,8 +1513,6 @@ else
|
||||||
// Note: IQ calibration must be performed after loading
|
// Note: IQ calibration must be performed after loading
|
||||||
// PHY_REG.txt , and radio_a, radio_b.txt
|
// PHY_REG.txt , and radio_a, radio_b.txt
|
||||||
|
|
||||||
//u4Byte bbvalue;
|
|
||||||
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
|
#if (DM_ODM_SUPPORT_TYPE & (ODM_AP|ODM_ADSL))
|
||||||
#ifdef MP_TEST
|
#ifdef MP_TEST
|
||||||
if (pDM_Odm->priv->pshare->rf_ft_var.mp_specific)
|
if (pDM_Odm->priv->pshare->rf_ft_var.mp_specific)
|
||||||
|
@ -1529,12 +1521,8 @@ else
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (t==0)
|
if (t==0) {
|
||||||
{
|
ODM_RT_TRACE(pDM_Odm,ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("IQ Calibration for %s for %d times\n", (is2T ? "2T2R" : "1T1R"), t));
|
||||||
// bbvalue = ODM_GetBBReg(pDM_Odm, rFPGA0_RFMOD, bMaskDWord);
|
|
||||||
// RTPRINT(FINIT, INIT_IQK, ("phy_IQCalibrate_8188E()==>0x%08x\n",bbvalue));
|
|
||||||
|
|
||||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("IQ Calibration for %s for %d times\n", (is2T ? "2T2R" : "1T1R"), t));
|
|
||||||
|
|
||||||
// Save ADDA parameters, turn Path A ADDA on
|
// Save ADDA parameters, turn Path A ADDA on
|
||||||
#if !(DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if !(DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
|
@ -1550,17 +1538,12 @@ else
|
||||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("IQ Calibration for %s for %d times\n", (is2T ? "2T2R" : "1T1R"), t));
|
ODM_RT_TRACE(pDM_Odm,ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("IQ Calibration for %s for %d times\n", (is2T ? "2T2R" : "1T1R"), t));
|
||||||
|
|
||||||
#if !(DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if !(DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
|
|
||||||
_PHY_PathADDAOn(pAdapter, ADDA_REG, true, is2T);
|
_PHY_PathADDAOn(pAdapter, ADDA_REG, true, is2T);
|
||||||
#else
|
#else
|
||||||
_PHY_PathADDAOn(pDM_Odm, ADDA_REG, true, is2T);
|
_PHY_PathADDAOn(pDM_Odm, ADDA_REG, true, is2T);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (t==0)
|
if (t==0)
|
||||||
{
|
|
||||||
pDM_Odm->RFCalibrateInfo.bRfPiEnable = (u1Byte)ODM_GetBBReg(pDM_Odm, rFPGA0_XA_HSSIParameter1, BIT(8));
|
pDM_Odm->RFCalibrateInfo.bRfPiEnable = (u1Byte)ODM_GetBBReg(pDM_Odm, rFPGA0_XA_HSSIParameter1, BIT(8));
|
||||||
}
|
|
||||||
|
|
||||||
if (!pDM_Odm->RFCalibrateInfo.bRfPiEnable){
|
if (!pDM_Odm->RFCalibrateInfo.bRfPiEnable){
|
||||||
// Switch BB to PI mode to do IQ Calibration.
|
// Switch BB to PI mode to do IQ Calibration.
|
||||||
|
@ -1739,8 +1722,7 @@ else
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
static void phy_LCCalibrate_8188E(
|
||||||
phy_LCCalibrate_8188E(
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
@ -1830,8 +1812,7 @@ phy_LCCalibrate_8188E(
|
||||||
#define APK_CURVE_REG_NUM 4
|
#define APK_CURVE_REG_NUM 4
|
||||||
#define PATH_NUM 2
|
#define PATH_NUM 2
|
||||||
|
|
||||||
void
|
static void phy_APCalibrate_8188E(
|
||||||
phy_APCalibrate_8188E(
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
@ -2729,7 +2710,8 @@ PHY_APCalibrate_8188E(
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void phy_SetRFPathSwitch_8188E(
|
|
||||||
|
static void phy_SetRFPathSwitch_8188E(
|
||||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
#else
|
#else
|
||||||
|
|
247
hal/odm.c
247
hal/odm.c
|
@ -24,17 +24,16 @@
|
||||||
|
|
||||||
#include "odm_precomp.h"
|
#include "odm_precomp.h"
|
||||||
|
|
||||||
|
static const u2Byte dB_Invert_Table[8][12] = {
|
||||||
|
{1,1,1, 2, 2, 2, 2, 3, 3, 3, 4, 4},
|
||||||
const u2Byte dB_Invert_Table[8][12] = {
|
{4, 5, 6, 6, 7, 8, 9, 10, 11, 13, 14, 16},
|
||||||
{ 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4},
|
{18, 20, 22, 25, 28, 32, 35, 40, 45, 50, 56, 63},
|
||||||
{ 4, 5, 6, 6, 7, 8, 9, 10, 11, 13, 14, 16},
|
{71, 79, 89, 100, 112, 126, 141, 158, 178, 200, 224, 251},
|
||||||
{ 18, 20, 22, 25, 28, 32, 35, 40, 45, 50, 56, 63},
|
{282, 316, 355, 398, 447, 501, 562, 631, 708, 794, 891, 1000},
|
||||||
{ 71, 79, 89, 100, 112, 126, 141, 158, 178, 200, 224, 251},
|
{1122, 1259, 1413, 1585, 1778, 1995, 2239, 2512, 2818, 3162, 3548, 3981},
|
||||||
{ 282, 316, 355, 398, 447, 501, 562, 631, 708, 794, 891, 1000},
|
{4467, 5012, 5623, 6310, 7079, 7943, 8913, 10000, 11220, 12589, 14125, 15849},
|
||||||
{ 1122, 1259, 1413, 1585, 1778, 1995, 2239, 2512, 2818, 3162, 3548, 3981},
|
{17783, 19953, 22387, 25119, 28184, 31623, 35481, 39811, 44668, 50119, 56234, 65535}
|
||||||
{ 4467, 5012, 5623, 6310, 7079, 7943, 8913, 10000, 11220, 12589, 14125, 15849},
|
};
|
||||||
{ 17783, 19953, 22387, 25119, 28184, 31623, 35481, 39811, 44668, 50119, 56234, 65535}};
|
|
||||||
|
|
||||||
// 20100515 Joseph: Add global variable to keep temporary scan list for antenna switching test.
|
// 20100515 Joseph: Add global variable to keep temporary scan list for antenna switching test.
|
||||||
//u1Byte tmpNumBssDesc;
|
//u1Byte tmpNumBssDesc;
|
||||||
|
@ -43,16 +42,16 @@ const u2Byte dB_Invert_Table[8][12] = {
|
||||||
#if (DM_ODM_SUPPORT_TYPE==ODM_MP)
|
#if (DM_ODM_SUPPORT_TYPE==ODM_MP)
|
||||||
static u4Byte edca_setting_UL[HT_IOT_PEER_MAX] =
|
static u4Byte edca_setting_UL[HT_IOT_PEER_MAX] =
|
||||||
// UNKNOWN REALTEK_90 REALTEK_92SE BROADCOM RALINK ATHEROS CISCO MARVELL 92U_AP SELF_AP(DownLink/Tx)
|
// UNKNOWN REALTEK_90 REALTEK_92SE BROADCOM RALINK ATHEROS CISCO MARVELL 92U_AP SELF_AP(DownLink/Tx)
|
||||||
{ 0x5e4322, 0xa44f, 0x5e4322, 0x5ea32b, 0x5ea422, 0x5ea322, 0x3ea430, 0x5ea44f, 0x5e4322, 0x5e4322};
|
{ 0x5e4322, 0xa44f, 0x5e4322, 0x5ea32b, 0x5ea422, 0x5ea322, 0x3ea430, 0x5ea44f, 0x5e4322, 0x5e4322};
|
||||||
|
|
||||||
|
|
||||||
static u4Byte edca_setting_DL[HT_IOT_PEER_MAX] =
|
static u4Byte edca_setting_DL[HT_IOT_PEER_MAX] =
|
||||||
// UNKNOWN REALTEK_90 REALTEK_92SE BROADCOM RALINK ATHEROS CISCO MARVELL 92U_AP SELF_AP(UpLink/Rx)
|
// UNKNOWN REALTEK_90 REALTEK_92SE BROADCOM RALINK ATHEROS CISCO MARVELL 92U_AP SELF_AP(UpLink/Rx)
|
||||||
{ 0xa44f, 0x5ea44f, 0x5e4322, 0x5ea42b, 0xa44f, 0xa630, 0x5ea630, 0xa44f, 0xa42b, 0xa42b};
|
{ 0xa44f, 0x5ea44f, 0x5e4322, 0x5ea42b, 0xa44f, 0xa630, 0x5ea630, 0xa44f, 0xa42b, 0xa42b};
|
||||||
|
|
||||||
static u4Byte edca_setting_DL_GMode[HT_IOT_PEER_MAX] =
|
static u4Byte edca_setting_DL_GMode[HT_IOT_PEER_MAX] =
|
||||||
// UNKNOWN REALTEK_90 REALTEK_92SE BROADCOM RALINK ATHEROS CISCO MARVELL 92U_AP SELF_AP
|
// UNKNOWN REALTEK_90 REALTEK_92SE BROADCOM RALINK ATHEROS CISCO MARVELL 92U_AP SELF_AP
|
||||||
{ 0x4322, 0xa44f, 0x5e4322, 0xa42b, 0x5e4322, 0x4322, 0xa42b, 0xa44f, 0x5e4322, 0x5ea42b};
|
{ 0x4322, 0xa44f, 0x5e4322, 0xa42b, 0x5e4322, 0x4322, 0xa42b, 0xa44f, 0x5e4322, 0x5ea42b};
|
||||||
|
|
||||||
|
|
||||||
//============================================================
|
//============================================================
|
||||||
|
@ -60,7 +59,7 @@ static u4Byte edca_setting_DL_GMode[HT_IOT_PEER_MAX] =
|
||||||
|
|
||||||
|
|
||||||
//avoid to warn in FreeBSD ==> To DO modify
|
//avoid to warn in FreeBSD ==> To DO modify
|
||||||
u4Byte EDCAParam[HT_IOT_PEER_MAX][3] =
|
static u4Byte EDCAParam[HT_IOT_PEER_MAX][3] =
|
||||||
{ // UL DL
|
{ // UL DL
|
||||||
{0x5ea42b, 0x5ea42b, 0x5ea42b}, //0:unknown AP
|
{0x5ea42b, 0x5ea42b, 0x5ea42b}, //0:unknown AP
|
||||||
{0xa44f, 0x5ea44f, 0x5e431c}, // 1:realtek AP
|
{0xa44f, 0x5ea44f, 0x5e431c}, // 1:realtek AP
|
||||||
|
@ -68,15 +67,12 @@ u4Byte EDCAParam[HT_IOT_PEER_MAX][3] =
|
||||||
{0x5ea32b, 0x5ea42b, 0x5e4322}, // 3:broadcom AP
|
{0x5ea32b, 0x5ea42b, 0x5e4322}, // 3:broadcom AP
|
||||||
{0x5ea422, 0x00a44f, 0x00a44f}, // 4:ralink AP
|
{0x5ea422, 0x00a44f, 0x00a44f}, // 4:ralink AP
|
||||||
{0x5ea322, 0x00a630, 0x00a44f}, // 5:atheros AP
|
{0x5ea322, 0x00a630, 0x00a44f}, // 5:atheros AP
|
||||||
//{0x5ea42b, 0x5ea42b, 0x5ea42b},// 6:cisco AP
|
|
||||||
{0x5e4322, 0x5e4322, 0x5e4322},// 6:cisco AP
|
{0x5e4322, 0x5e4322, 0x5e4322},// 6:cisco AP
|
||||||
//{0x3ea430, 0x00a630, 0x3ea44f}, // 7:cisco AP
|
|
||||||
{0x5ea44f, 0x00a44f, 0x5ea42b}, // 8:marvell AP
|
{0x5ea44f, 0x00a44f, 0x5ea42b}, // 8:marvell AP
|
||||||
//{0x5ea44f, 0x5ea44f, 0x5ea44f}, // 9realtek AP
|
|
||||||
{0x5ea42b, 0x5ea42b, 0x5ea42b}, // 10:unknown AP=> 92U AP
|
{0x5ea42b, 0x5ea42b, 0x5ea42b}, // 10:unknown AP=> 92U AP
|
||||||
{0x5ea42b, 0xa630, 0x5e431c}, // 11:airgocap AP
|
{0x5ea42b, 0xa630, 0x5e431c}, // 11:airgocap AP
|
||||||
// {0x5e4322, 0x00a44f, 0x5ea44f}, // 12:unknown AP
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//============================================================
|
//============================================================
|
||||||
// EDCA Paramter for AP/ADSL by Mingzhi 2011-11-22
|
// EDCA Paramter for AP/ADSL by Mingzhi 2011-11-22
|
||||||
//============================================================
|
//============================================================
|
||||||
|
@ -157,75 +153,75 @@ u4Byte OFDMSwingTable[OFDM_TABLE_SIZE_92D] = {
|
||||||
|
|
||||||
|
|
||||||
u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8] = {
|
u1Byte CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8] = {
|
||||||
{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, // 0, +0dB
|
{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, // 0, +0dB
|
||||||
{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, // 1, -0.5dB
|
{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, // 1, -0.5dB
|
||||||
{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, // 2, -1.0dB
|
{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, // 2, -1.0dB
|
||||||
{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, // 3, -1.5dB
|
{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, // 3, -1.5dB
|
||||||
{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, // 4, -2.0dB
|
{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, // 4, -2.0dB
|
||||||
{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, // 5, -2.5dB
|
{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, // 5, -2.5dB
|
||||||
{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, // 6, -3.0dB
|
{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, // 6, -3.0dB
|
||||||
{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, // 7, -3.5dB
|
{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, // 7, -3.5dB
|
||||||
{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, // 8, -4.0dB
|
{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, // 8, -4.0dB
|
||||||
{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, // 9, -4.5dB
|
{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, // 9, -4.5dB
|
||||||
{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, // 10, -5.0dB
|
{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, // 10, -5.0dB
|
||||||
{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, // 11, -5.5dB
|
{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, // 11, -5.5dB
|
||||||
{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, // 12, -6.0dB
|
{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, // 12, -6.0dB
|
||||||
{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, // 13, -6.5dB
|
{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, // 13, -6.5dB
|
||||||
{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, // 14, -7.0dB
|
{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, // 14, -7.0dB
|
||||||
{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, // 15, -7.5dB
|
{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, // 15, -7.5dB
|
||||||
{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, // 16, -8.0dB
|
{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, // 16, -8.0dB
|
||||||
{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, // 17, -8.5dB
|
{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, // 17, -8.5dB
|
||||||
{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, // 18, -9.0dB
|
{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, // 18, -9.0dB
|
||||||
{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 19, -9.5dB
|
{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 19, -9.5dB
|
||||||
{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 20, -10.0dB
|
{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, // 20, -10.0dB
|
||||||
{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 21, -10.5dB
|
{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 21, -10.5dB
|
||||||
{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 22, -11.0dB
|
{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, // 22, -11.0dB
|
||||||
{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, // 23, -11.5dB
|
{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, // 23, -11.5dB
|
||||||
{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, // 24, -12.0dB
|
{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, // 24, -12.0dB
|
||||||
{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, // 25, -12.5dB
|
{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, // 25, -12.5dB
|
||||||
{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, // 26, -13.0dB
|
{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, // 26, -13.0dB
|
||||||
{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, // 27, -13.5dB
|
{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, // 27, -13.5dB
|
||||||
{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, // 28, -14.0dB
|
{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, // 28, -14.0dB
|
||||||
{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, // 29, -14.5dB
|
{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, // 29, -14.5dB
|
||||||
{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, // 30, -15.0dB
|
{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, // 30, -15.0dB
|
||||||
{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, // 31, -15.5dB
|
{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, // 31, -15.5dB
|
||||||
{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} // 32, -16.0dB
|
{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} // 32, -16.0dB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8]= {
|
u1Byte CCKSwingTable_Ch14 [CCK_TABLE_SIZE][8]= {
|
||||||
{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, // 0, +0dB
|
{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, // 0, +0dB
|
||||||
{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, // 1, -0.5dB
|
{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, // 1, -0.5dB
|
||||||
{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, // 2, -1.0dB
|
{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, // 2, -1.0dB
|
||||||
{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, // 3, -1.5dB
|
{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, // 3, -1.5dB
|
||||||
{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, // 4, -2.0dB
|
{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, // 4, -2.0dB
|
||||||
{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, // 5, -2.5dB
|
{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, // 5, -2.5dB
|
||||||
{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, // 6, -3.0dB
|
{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, // 6, -3.0dB
|
||||||
{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, // 7, -3.5dB
|
{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, // 7, -3.5dB
|
||||||
{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, // 8, -4.0dB
|
{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, // 8, -4.0dB
|
||||||
{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, // 9, -4.5dB
|
{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, // 9, -4.5dB
|
||||||
{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, // 10, -5.0dB
|
{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, // 10, -5.0dB
|
||||||
{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 11, -5.5dB
|
{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 11, -5.5dB
|
||||||
{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 12, -6.0dB
|
{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, // 12, -6.0dB
|
||||||
{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, // 13, -6.5dB
|
{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, // 13, -6.5dB
|
||||||
{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, // 14, -7.0dB
|
{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, // 14, -7.0dB
|
||||||
{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 15, -7.5dB
|
{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 15, -7.5dB
|
||||||
{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 16, -8.0dB
|
{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, // 16, -8.0dB
|
||||||
{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 17, -8.5dB
|
{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 17, -8.5dB
|
||||||
{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 18, -9.0dB
|
{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, // 18, -9.0dB
|
||||||
{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 19, -9.5dB
|
{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 19, -9.5dB
|
||||||
{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 20, -10.0dB
|
{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, // 20, -10.0dB
|
||||||
{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, // 21, -10.5dB
|
{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, // 21, -10.5dB
|
||||||
{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, // 22, -11.0dB
|
{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, // 22, -11.0dB
|
||||||
{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 23, -11.5dB
|
{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 23, -11.5dB
|
||||||
{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 24, -12.0dB
|
{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, // 24, -12.0dB
|
||||||
{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, // 25, -12.5dB
|
{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, // 25, -12.5dB
|
||||||
{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 26, -13.0dB
|
{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 26, -13.0dB
|
||||||
{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 27, -13.5dB
|
{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, // 27, -13.5dB
|
||||||
{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 28, -14.0dB
|
{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 28, -14.0dB
|
||||||
{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 29, -14.5dB
|
{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, // 29, -14.5dB
|
||||||
{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 30, -15.0dB
|
{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 30, -15.0dB
|
||||||
{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 31, -15.5dB
|
{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, // 31, -15.5dB
|
||||||
{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} // 32, -16.0dB
|
{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} // 32, -16.0dB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -385,7 +381,7 @@ odm_PathDivChkAntSwitchWorkitemCallback(
|
||||||
void * pContext
|
void * pContext
|
||||||
);
|
);
|
||||||
|
|
||||||
void odm_SetRespPath_92C( PADAPTER Adapter, u1Byte DefaultRespPath);
|
void odm_SetRespPath_92C( PADAPTER Adapter, u1Byte DefaultRespPath);
|
||||||
void odm_OFDMTXPathDiversity_92C( PADAPTER Adapter);
|
void odm_OFDMTXPathDiversity_92C( PADAPTER Adapter);
|
||||||
void odm_CCKTXPathDiversity_92C( PADAPTER Adapter);
|
void odm_CCKTXPathDiversity_92C( PADAPTER Adapter);
|
||||||
void odm_ResetPathDiversity_92C( PADAPTER Adapter);
|
void odm_ResetPathDiversity_92C( PADAPTER Adapter);
|
||||||
|
@ -1473,8 +1469,7 @@ odm_IsLinked(
|
||||||
* When Who Remark
|
* When Who Remark
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void
|
static void ODM_ChangeDynamicInitGainThresh(
|
||||||
ODM_ChangeDynamicInitGainThresh(
|
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
u4Byte DM_Type,
|
u4Byte DM_Type,
|
||||||
u4Byte DM_Value
|
u4Byte DM_Value
|
||||||
|
@ -1518,7 +1513,7 @@ ODM_ChangeDynamicInitGainThresh(
|
||||||
}
|
}
|
||||||
} /* DM_ChangeDynamicInitGainThresh */
|
} /* DM_ChangeDynamicInitGainThresh */
|
||||||
|
|
||||||
int getIGIForDiff(int value_IGI)
|
static int getIGIForDiff(int value_IGI)
|
||||||
{
|
{
|
||||||
#define ONERCCA_LOW_TH 0x30
|
#define ONERCCA_LOW_TH 0x30
|
||||||
#define ONERCCA_LOW_DIFF 8
|
#define ONERCCA_LOW_DIFF 8
|
||||||
|
@ -2112,7 +2107,7 @@ odm_DIG(
|
||||||
if (FirstConnect)
|
if (FirstConnect)
|
||||||
{
|
{
|
||||||
CurrentIGI = pDM_Odm->RSSI_Min;
|
CurrentIGI = pDM_Odm->RSSI_Min;
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("DIG: First Connect\n"));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_DIG, ODM_DBG_LOUD, ("DIG: First Connect\n"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2423,9 +2418,9 @@ odm_FalseAlarmCounterStatistics(
|
||||||
ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT15, 0);
|
ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT15, 0);
|
||||||
ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT15, 1);
|
ODM_SetBBReg(pDM_Odm, ODM_REG_CCK_FA_RST_11AC, BIT15, 1);
|
||||||
}
|
}
|
||||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Cck_fail=%d\n", FalseAlmCnt->Cnt_Cck_fail));
|
ODM_RT_TRACE(pDM_Odm,ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Cck_fail=%d\n", FalseAlmCnt->Cnt_Cck_fail));
|
||||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Ofdm_fail=%d\n", FalseAlmCnt->Cnt_Ofdm_fail));
|
ODM_RT_TRACE(pDM_Odm,ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Cnt_Ofdm_fail=%d\n", FalseAlmCnt->Cnt_Ofdm_fail));
|
||||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Total False Alarm=%d\n", FalseAlmCnt->Cnt_all));
|
ODM_RT_TRACE(pDM_Odm,ODM_COMP_FA_CNT, ODM_DBG_LOUD, ("Total False Alarm=%d\n", FalseAlmCnt->Cnt_all));
|
||||||
}
|
}
|
||||||
|
|
||||||
//3============================================================
|
//3============================================================
|
||||||
|
@ -2611,7 +2606,7 @@ odm_1R_CCA(
|
||||||
}
|
}
|
||||||
pDM_PSTable->PreCCAState = pDM_PSTable->CurCCAState;
|
pDM_PSTable->PreCCAState = pDM_PSTable->CurCCAState;
|
||||||
}
|
}
|
||||||
//ODM_RT_TRACE(pDM_Odm, COMP_BB_POWERSAVING, DBG_LOUD, ("CCAStage = %s\n",(pDM_PSTable->CurCCAState==0)?"1RCCA":"2RCCA"));
|
//ODM_RT_TRACE(pDM_Odm, COMP_BB_POWERSAVING, DBG_LOUD, ("CCAStage = %s\n",(pDM_PSTable->CurCCAState==0)?"1RCCA":"2RCCA"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -2684,7 +2679,7 @@ ODM_RF_Saving(
|
||||||
ODM_SetBBReg(pDM_Odm, 0xa74, 0xF000, 0x3); //RegA75[7:4]=0x3
|
ODM_SetBBReg(pDM_Odm, 0xa74, 0xF000, 0x3); //RegA75[7:4]=0x3
|
||||||
ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x0); //Reg818[28]=1'b0
|
ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x0); //Reg818[28]=1'b0
|
||||||
ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x1); //Reg818[28]=1'b1
|
ODM_SetBBReg(pDM_Odm, 0x818, BIT28, 0x1); //Reg818[28]=1'b1
|
||||||
//ODM_RT_TRACE(pDM_Odm, COMP_BB_POWERSAVING, DBG_LOUD, (" RF_Save"));
|
//ODM_RT_TRACE(pDM_Odm, COMP_BB_POWERSAVING, DBG_LOUD, (" RF_Save"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2698,7 +2693,7 @@ ODM_RF_Saving(
|
||||||
{
|
{
|
||||||
ODM_SetBBReg(pDM_Odm,0x874 , BIT5, 0x0); //Reg874[5]=1b'0
|
ODM_SetBBReg(pDM_Odm,0x874 , BIT5, 0x0); //Reg874[5]=1b'0
|
||||||
}
|
}
|
||||||
//ODM_RT_TRACE(pDM_Odm, COMP_BB_POWERSAVING, DBG_LOUD, (" RF_Normal"));
|
//ODM_RT_TRACE(pDM_Odm, COMP_BB_POWERSAVING, DBG_LOUD, (" RF_Normal"));
|
||||||
}
|
}
|
||||||
pDM_PSTable->PreRFState =pDM_PSTable->CurRFState;
|
pDM_PSTable->PreRFState =pDM_PSTable->CurRFState;
|
||||||
}
|
}
|
||||||
|
@ -4749,7 +4744,7 @@ odm_SwAntDivInit_NIC(
|
||||||
// 20100514 Joseph:
|
// 20100514 Joseph:
|
||||||
// Add new function to reset the state of antenna diversity before link.
|
// Add new function to reset the state of antenna diversity before link.
|
||||||
//
|
//
|
||||||
void
|
static void
|
||||||
ODM_SwAntDivResetBeforeLink(
|
ODM_SwAntDivResetBeforeLink(
|
||||||
PDM_ODM_T pDM_Odm
|
PDM_ODM_T pDM_Odm
|
||||||
)
|
)
|
||||||
|
@ -5473,7 +5468,10 @@ void odm_SwAntDivChkAntSwitch(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
u1Byte Step
|
u1Byte Step
|
||||||
) {}
|
) {}
|
||||||
void ODM_SwAntDivResetBeforeLink( PDM_ODM_T pDM_Odm ){}
|
static void ODM_SwAntDivResetBeforeLink(PDM_ODM_T pDM_Odm)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void ODM_SwAntDivRestAfterLink( PDM_ODM_T pDM_Odm ){}
|
void ODM_SwAntDivRestAfterLink( PDM_ODM_T pDM_Odm ){}
|
||||||
#if (DM_ODM_SUPPORT_TYPE == ODM_MP)
|
#if (DM_ODM_SUPPORT_TYPE == ODM_MP)
|
||||||
u1Byte odm_SwAntDivSelectChkChnl( PADAPTER Adapter ){ return 0;}
|
u1Byte odm_SwAntDivSelectChkChnl( PADAPTER Adapter ){ return 0;}
|
||||||
|
@ -5720,8 +5718,7 @@ ODM_SwAntDivCheckBeforeLink8192C(
|
||||||
//3============================================================
|
//3============================================================
|
||||||
|
|
||||||
#if (defined(CONFIG_HW_ANTENNA_DIVERSITY))
|
#if (defined(CONFIG_HW_ANTENNA_DIVERSITY))
|
||||||
void
|
static void odm_InitHybridAntDiv_88C_92D(
|
||||||
odm_InitHybridAntDiv_88C_92D(
|
|
||||||
PDM_ODM_T pDM_Odm
|
PDM_ODM_T pDM_Odm
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -5964,8 +5961,7 @@ ODM_AntselStatistics_88C(
|
||||||
|
|
||||||
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE==ODM_MP)
|
#if (DM_ODM_SUPPORT_TYPE==ODM_MP)
|
||||||
void
|
static void ODM_SetTxAntByTxInfo_88C_92D(
|
||||||
ODM_SetTxAntByTxInfo_88C_92D(
|
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
pu1Byte pDesc,
|
pu1Byte pDesc,
|
||||||
u1Byte macId
|
u1Byte macId
|
||||||
|
@ -5987,7 +5983,7 @@ ODM_SetTxAntByTxInfo_88C_92D(
|
||||||
//ODM_RT_TRACE(pDM_Odm, ODM_COMP_ANT_DIV,ODM_DBG_LOUD,("SET_TX_DESC_ANTSEL_A_92C=%d\n", pDM_SWAT_Table->TxAnt[macId]));
|
//ODM_RT_TRACE(pDM_Odm, ODM_COMP_ANT_DIV,ODM_DBG_LOUD,("SET_TX_DESC_ANTSEL_A_92C=%d\n", pDM_SWAT_Table->TxAnt[macId]));
|
||||||
}
|
}
|
||||||
#elif (DM_ODM_SUPPORT_TYPE==ODM_CE)
|
#elif (DM_ODM_SUPPORT_TYPE==ODM_CE)
|
||||||
void
|
static void
|
||||||
ODM_SetTxAntByTxInfo_88C_92D(
|
ODM_SetTxAntByTxInfo_88C_92D(
|
||||||
PDM_ODM_T pDM_Odm
|
PDM_ODM_T pDM_Odm
|
||||||
)
|
)
|
||||||
|
@ -6004,10 +6000,7 @@ ODM_SetTxAntByTxInfo_88C_92D(
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
static void odm_HwAntDiv_92C_92D(PDM_ODM_T pDM_Odm)
|
||||||
odm_HwAntDiv_92C_92D(
|
|
||||||
PDM_ODM_T pDM_Odm
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
SWAT_T *pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table;
|
SWAT_T *pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table;
|
||||||
u4Byte RSSI_Min=0xFF, RSSI, RSSI_Ant1, RSSI_Ant2;
|
u4Byte RSSI_Min=0xFF, RSSI, RSSI_Ant1, RSSI_Ant2;
|
||||||
|
@ -8251,7 +8244,7 @@ odm_PSD_Monitor(
|
||||||
//2???
|
//2???
|
||||||
Is40MHz = pMgntInfo->pHTInfo->bCurBW40MHz;
|
Is40MHz = pMgntInfo->pHTInfo->bCurBW40MHz;
|
||||||
|
|
||||||
ODM_RT_TRACE(pDM_Odm, COMP_PSD, DBG_LOUD,("PSD Scan Start\n"));
|
ODM_RT_TRACE(pDM_Odm, COMP_PSD, DBG_LOUD,("PSD Scan Start\n"));
|
||||||
//1 Turn off CCK
|
//1 Turn off CCK
|
||||||
ODM_SetBBReg(pDM_Odm, rFPGA0_RFMOD, BIT24, 0);
|
ODM_SetBBReg(pDM_Odm, rFPGA0_RFMOD, BIT24, 0);
|
||||||
//1 Turn off TX
|
//1 Turn off TX
|
||||||
|
@ -8862,7 +8855,7 @@ void odm_RXHP(
|
||||||
else
|
else
|
||||||
pRX_HP_Table->TP_Mode = High_TP_Mode;
|
pRX_HP_Table->TP_Mode = High_TP_Mode;
|
||||||
|
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP TP Mode = %d\n", pRX_HP_Table->TP_Mode));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP TP Mode = %d\n", pRX_HP_Table->TP_Mode));
|
||||||
// Since TP result would be sampled every 2 sec, it needs to delay 4sec to wait PSD processing.
|
// Since TP result would be sampled every 2 sec, it needs to delay 4sec to wait PSD processing.
|
||||||
// When LatchCnt = 0, we would Get PSD result.
|
// When LatchCnt = 0, we would Get PSD result.
|
||||||
if (TP_Degrade_flag == 1)
|
if (TP_Degrade_flag == 1)
|
||||||
|
@ -8894,11 +8887,11 @@ void odm_RXHP(
|
||||||
Is40MHz = *(pDM_Odm->pBandWidth);
|
Is40MHz = *(pDM_Odm->pBandWidth);
|
||||||
curRssi = pDM_Odm->RSSI_Min;
|
curRssi = pDM_Odm->RSSI_Min;
|
||||||
cur_channel = ODM_GetRFReg(pDM_Odm, RF_PATH_A, RF_CHNLBW, 0x0fff) & 0x0f;
|
cur_channel = ODM_GetRFReg(pDM_Odm, RF_PATH_A, RF_CHNLBW, 0x0fff) & 0x0f;
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP RX HP flag = %d\n", pRX_HP_Table->RXHP_flag));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP RX HP flag = %d\n", pRX_HP_Table->RXHP_flag));
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP FA = %d\n", FalseAlmCnt->Cnt_all));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP FA = %d\n", FalseAlmCnt->Cnt_all));
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP cur RSSI = %d, pre RSSI=%d\n", curRssi, preRssi));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP cur RSSI = %d, pre RSSI=%d\n", curRssi, preRssi));
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP current CH = %d\n", cur_channel));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP current CH = %d\n", cur_channel));
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP Is 40MHz = %d\n", Is40MHz));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RXHP Is 40MHz = %d\n", Is40MHz));
|
||||||
//2 PSD function would be triggered
|
//2 PSD function would be triggered
|
||||||
//3 1. Every 4 sec for PCIE
|
//3 1. Every 4 sec for PCIE
|
||||||
//3 2. Before TP Mode (Idle TP<4kbps) for USB
|
//3 2. Before TP Mode (Idle TP<4kbps) for USB
|
||||||
|
@ -9026,7 +9019,7 @@ void odm_RXHP(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP psd_intf_flag = %d\n", psd_intf_flag));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP psd_intf_flag = %d\n", psd_intf_flag));
|
||||||
//2 Distance between target channel and interference
|
//2 Distance between target channel and interference
|
||||||
for (i = 0; i < 16; i++)
|
for (i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
|
@ -9037,7 +9030,7 @@ void odm_RXHP(
|
||||||
MIN_Intf_diff_idx = Intf_diff_idx; // the min difference index between interference and target
|
MIN_Intf_diff_idx = Intf_diff_idx; // the min difference index between interference and target
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP MIN_Intf_diff_idx = %d\n", MIN_Intf_diff_idx));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP MIN_Intf_diff_idx = %d\n", MIN_Intf_diff_idx));
|
||||||
//2 Choose False Alarm Threshold
|
//2 Choose False Alarm Threshold
|
||||||
switch (MIN_Intf_diff_idx){
|
switch (MIN_Intf_diff_idx){
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -9067,7 +9060,7 @@ void odm_RXHP(
|
||||||
FA_TH = FA_RXHP_TH5;
|
FA_TH = FA_RXHP_TH5;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP FA_TH = %d\n", FA_TH));
|
ODM_RT_TRACE(pDM_Odm, ODM_COMP_RXHP, ODM_DBG_LOUD, ("RX HP FA_TH = %d\n", FA_TH));
|
||||||
pRX_HP_Table->PSD_func_trigger = 0;
|
pRX_HP_Table->PSD_func_trigger = 0;
|
||||||
}
|
}
|
||||||
//1 Monitor RSSI variation to choose the suitable IGI or Exit AGC RX High Power Mode
|
//1 Monitor RSSI variation to choose the suitable IGI or Exit AGC RX High Power Mode
|
||||||
|
@ -9244,7 +9237,7 @@ odm_PSD_RXHP(
|
||||||
RXIQI = ODM_GetBBReg(pDM_Odm, 0xC14, bMaskDWord);
|
RXIQI = ODM_GetBBReg(pDM_Odm, 0xC14, bMaskDWord);
|
||||||
RxIdleLowPwr = (ODM_GetBBReg(pDM_Odm, 0x818, bMaskDWord)&BIT28)>>28;
|
RxIdleLowPwr = (ODM_GetBBReg(pDM_Odm, 0x818, bMaskDWord)&BIT28)>>28;
|
||||||
Is40MHz = *(pDM_Odm->pBandWidth);
|
Is40MHz = *(pDM_Odm->pBandWidth);
|
||||||
ODM_RT_TRACE(pDM_Odm, COMP_PSD, DBG_LOUD,("PSD Scan Start\n"));
|
ODM_RT_TRACE(pDM_Odm, COMP_PSD, DBG_LOUD,("PSD Scan Start\n"));
|
||||||
//1 Turn off CCK
|
//1 Turn off CCK
|
||||||
ODM_SetBBReg(pDM_Odm, rFPGA0_RFMOD, BIT24, 0);
|
ODM_SetBBReg(pDM_Odm, rFPGA0_RFMOD, BIT24, 0);
|
||||||
//1 Turn off TX
|
//1 Turn off TX
|
||||||
|
@ -10944,10 +10937,7 @@ ODM_SingleDualAntennaDefaultSetting(
|
||||||
|
|
||||||
//2 8723A ANT DETECT
|
//2 8723A ANT DETECT
|
||||||
|
|
||||||
|
static void odm_PHY_SaveAFERegisters(PDM_ODM_T pDM_Odm,
|
||||||
void
|
|
||||||
odm_PHY_SaveAFERegisters(
|
|
||||||
PDM_ODM_T pDM_Odm,
|
|
||||||
pu4Byte AFEReg,
|
pu4Byte AFEReg,
|
||||||
pu4Byte AFEBackup,
|
pu4Byte AFEBackup,
|
||||||
u4Byte RegisterNum
|
u4Byte RegisterNum
|
||||||
|
@ -10961,8 +10951,7 @@ odm_PHY_SaveAFERegisters(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void odm_PHY_ReloadAFERegisters(
|
||||||
odm_PHY_ReloadAFERegisters(
|
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
pu4Byte AFEReg,
|
pu4Byte AFEReg,
|
||||||
pu4Byte AFEBackup,
|
pu4Byte AFEBackup,
|
||||||
|
@ -11006,13 +10995,13 @@ ODM_SingleDualAntennaDetection(
|
||||||
bool bResult = true;
|
bool bResult = true;
|
||||||
u4Byte AFE_Backup[16];
|
u4Byte AFE_Backup[16];
|
||||||
u4Byte AFE_REG_8723A[16] = {
|
u4Byte AFE_REG_8723A[16] = {
|
||||||
rRx_Wait_CCA, rTx_CCK_RFON,
|
rRx_Wait_CCA, rTx_CCK_RFON,
|
||||||
rTx_CCK_BBON, rTx_OFDM_RFON,
|
rTx_CCK_BBON, rTx_OFDM_RFON,
|
||||||
rTx_OFDM_BBON, rTx_To_Rx,
|
rTx_OFDM_BBON, rTx_To_Rx,
|
||||||
rTx_To_Tx, rRx_CCK,
|
rTx_To_Tx, rRx_CCK,
|
||||||
rRx_OFDM, rRx_Wait_RIFS,
|
rRx_OFDM, rRx_Wait_RIFS,
|
||||||
rRx_TO_Rx, rStandby,
|
rRx_TO_Rx, rStandby,
|
||||||
rSleep, rPMPD_ANAEN,
|
rSleep, rPMPD_ANAEN,
|
||||||
rFPGA0_XCD_SwitchControl, rBlue_Tooth};
|
rFPGA0_XCD_SwitchControl, rBlue_Tooth};
|
||||||
|
|
||||||
if (!(pDM_Odm->SupportICType & (ODM_RTL8723A|ODM_RTL8192C)))
|
if (!(pDM_Odm->SupportICType & (ODM_RTL8723A|ODM_RTL8192C)))
|
||||||
|
|
|
@ -40,24 +40,14 @@
|
||||||
#define READ_AND_CONFIG_MP(ic, txt) (ODM_ReadAndConfig##txt##ic(pDM_Odm))
|
#define READ_AND_CONFIG_MP(ic, txt) (ODM_ReadAndConfig##txt##ic(pDM_Odm))
|
||||||
#define READ_AND_CONFIG_TC(ic, txt) (ODM_ReadAndConfig_TC##txt##ic(pDM_Odm))
|
#define READ_AND_CONFIG_TC(ic, txt) (ODM_ReadAndConfig_TC##txt##ic(pDM_Odm))
|
||||||
|
|
||||||
u1Byte
|
static u1Byte odm_QueryRxPwrPercentage(s1Byte AntPower)
|
||||||
odm_QueryRxPwrPercentage(
|
|
||||||
s1Byte AntPower
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
if ((AntPower <= -100) || (AntPower >= 20))
|
if ((AntPower <= -100) || (AntPower >= 20))
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
else if (AntPower >= 0)
|
else if (AntPower >= 0)
|
||||||
{
|
|
||||||
return 100;
|
return 100;
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
return (100+AntPower);
|
return (100+AntPower);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (DM_ODM_SUPPORT_TYPE != ODM_MP)
|
#if (DM_ODM_SUPPORT_TYPE != ODM_MP)
|
||||||
|
@ -65,8 +55,7 @@ odm_QueryRxPwrPercentage(
|
||||||
// 2012/01/12 MH MOve some signal strength smooth method to MP HAL layer.
|
// 2012/01/12 MH MOve some signal strength smooth method to MP HAL layer.
|
||||||
// IF other SW team do not support the feature, remove this section.??
|
// IF other SW team do not support the feature, remove this section.??
|
||||||
//
|
//
|
||||||
s4Byte
|
static s4Byte odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo(
|
||||||
odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo(
|
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
s4Byte CurrSig
|
s4Byte CurrSig
|
||||||
)
|
)
|
||||||
|
@ -81,48 +70,29 @@ odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo(
|
||||||
// This modification makes the RSSI indication similar to Intel solution.
|
// This modification makes the RSSI indication similar to Intel solution.
|
||||||
// 20100414 Joseph: Tunning RSSI for Lenovo according to RTL8191SE.
|
// 20100414 Joseph: Tunning RSSI for Lenovo according to RTL8191SE.
|
||||||
if (CurrSig >= 54 && CurrSig <= 100)
|
if (CurrSig >= 54 && CurrSig <= 100)
|
||||||
{
|
|
||||||
RetSig = 100;
|
RetSig = 100;
|
||||||
}
|
|
||||||
else if (CurrSig>=42 && CurrSig <= 53)
|
else if (CurrSig>=42 && CurrSig <= 53)
|
||||||
{
|
|
||||||
RetSig = 95;
|
RetSig = 95;
|
||||||
}
|
|
||||||
else if (CurrSig>=36 && CurrSig <= 41)
|
else if (CurrSig>=36 && CurrSig <= 41)
|
||||||
{
|
|
||||||
RetSig = 74 + ((CurrSig - 36) *20)/6;
|
RetSig = 74 + ((CurrSig - 36) *20)/6;
|
||||||
}
|
|
||||||
else if (CurrSig>=33 && CurrSig <= 35)
|
else if (CurrSig>=33 && CurrSig <= 35)
|
||||||
{
|
|
||||||
RetSig = 65 + ((CurrSig - 33) *8)/2;
|
RetSig = 65 + ((CurrSig - 33) *8)/2;
|
||||||
}
|
|
||||||
else if (CurrSig>=18 && CurrSig <= 32)
|
else if (CurrSig>=18 && CurrSig <= 32)
|
||||||
{
|
|
||||||
RetSig = 62 + ((CurrSig - 18) *2)/15;
|
RetSig = 62 + ((CurrSig - 18) *2)/15;
|
||||||
}
|
|
||||||
else if (CurrSig>=15 && CurrSig <= 17)
|
else if (CurrSig>=15 && CurrSig <= 17)
|
||||||
{
|
|
||||||
RetSig = 33 + ((CurrSig - 15) *28)/2;
|
RetSig = 33 + ((CurrSig - 15) *28)/2;
|
||||||
}
|
|
||||||
else if (CurrSig>=10 && CurrSig <= 14)
|
else if (CurrSig>=10 && CurrSig <= 14)
|
||||||
{
|
|
||||||
RetSig = 39;
|
RetSig = 39;
|
||||||
}
|
|
||||||
else if (CurrSig>=8 && CurrSig <= 9)
|
else if (CurrSig>=8 && CurrSig <= 9)
|
||||||
{
|
|
||||||
RetSig = 33;
|
RetSig = 33;
|
||||||
}
|
|
||||||
else if (CurrSig <= 8)
|
else if (CurrSig <= 8)
|
||||||
{
|
|
||||||
RetSig = 19;
|
RetSig = 19;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif //ENDIF (DM_ODM_SUPPORT_TYPE == ODM_MP)
|
#endif //ENDIF (DM_ODM_SUPPORT_TYPE == ODM_MP)
|
||||||
return RetSig;
|
return RetSig;
|
||||||
}
|
}
|
||||||
|
|
||||||
s4Byte
|
static s4Byte odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore(
|
||||||
odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore(
|
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
s4Byte CurrSig
|
s4Byte CurrSig
|
||||||
)
|
)
|
||||||
|
@ -182,7 +152,7 @@ odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
s4Byte
|
static s4Byte
|
||||||
odm_SignalScaleMapping_92CSeries(
|
odm_SignalScaleMapping_92CSeries(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
s4Byte CurrSig
|
s4Byte CurrSig
|
||||||
|
@ -275,7 +245,7 @@ odm_SignalScaleMapping_92CSeries(
|
||||||
#endif
|
#endif
|
||||||
return RetSig;
|
return RetSig;
|
||||||
}
|
}
|
||||||
s4Byte
|
static s4Byte
|
||||||
odm_SignalScaleMapping(
|
odm_SignalScaleMapping(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
s4Byte CurrSig
|
s4Byte CurrSig
|
||||||
|
@ -377,7 +347,7 @@ odm_EVMdbToPercentage(
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
static void
|
||||||
odm_RxPhyStatus92CSeries_Parsing(
|
odm_RxPhyStatus92CSeries_Parsing(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
PODM_PHY_INFO_T pPhyInfo,
|
PODM_PHY_INFO_T pPhyInfo,
|
||||||
|
@ -746,7 +716,7 @@ odm_Init_RSSIForDM(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
odm_Process_RSSIForDM(
|
odm_Process_RSSIForDM(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
PODM_PHY_INFO_T pPhyInfo,
|
PODM_PHY_INFO_T pPhyInfo,
|
||||||
|
@ -968,7 +938,7 @@ odm_Process_RSSIForDM(
|
||||||
//
|
//
|
||||||
// Endianness before calling this API
|
// Endianness before calling this API
|
||||||
//
|
//
|
||||||
void
|
static void
|
||||||
ODM_PhyStatusQuery_92CSeries(
|
ODM_PhyStatusQuery_92CSeries(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
PODM_PHY_INFO_T pPhyInfo,
|
PODM_PHY_INFO_T pPhyInfo,
|
||||||
|
@ -998,7 +968,7 @@ ODM_PhyStatusQuery_92CSeries(
|
||||||
//
|
//
|
||||||
// Endianness before calling this API
|
// Endianness before calling this API
|
||||||
//
|
//
|
||||||
void
|
static void
|
||||||
ODM_PhyStatusQuery_JaguarSeries(
|
ODM_PhyStatusQuery_JaguarSeries(
|
||||||
PDM_ODM_T pDM_Odm,
|
PDM_ODM_T pDM_Odm,
|
||||||
PODM_PHY_INFO_T pPhyInfo,
|
PODM_PHY_INFO_T pPhyInfo,
|
||||||
|
|
|
@ -229,7 +229,7 @@ ODM_SetRFReg(
|
||||||
PHY_SetRFReg(pDM_Odm->priv, eRFPath, RegAddr, BitMask, Data);
|
PHY_SetRFReg(pDM_Odm->priv, eRFPath, RegAddr, BitMask, Data);
|
||||||
#elif (DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_MP))
|
#elif (DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_MP))
|
||||||
PADAPTER Adapter = pDM_Odm->Adapter;
|
PADAPTER Adapter = pDM_Odm->Adapter;
|
||||||
PHY_SetRFReg(Adapter, eRFPath, RegAddr, BitMask, Data);
|
PHY_SetRFReg(Adapter, (enum _RF_RADIO_PATH)eRFPath, RegAddr, BitMask, Data);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ ODM_GetRFReg(
|
||||||
return PHY_QueryRFReg(pDM_Odm->priv, eRFPath, RegAddr, BitMask, 1);
|
return PHY_QueryRFReg(pDM_Odm->priv, eRFPath, RegAddr, BitMask, 1);
|
||||||
#elif (DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_MP))
|
#elif (DM_ODM_SUPPORT_TYPE & (ODM_CE|ODM_MP))
|
||||||
PADAPTER Adapter = pDM_Odm->Adapter;
|
PADAPTER Adapter = pDM_Odm->Adapter;
|
||||||
return PHY_QueryRFReg(Adapter, eRFPath, RegAddr, BitMask);
|
return PHY_QueryRFReg(Adapter, (enum _RF_RADIO_PATH)eRFPath, RegAddr, BitMask);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -179,38 +179,6 @@ _func_exit_;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 rtl8192c_h2c_msg_hdl(_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(_adapter *padapter ,u8 bfwpoll, u16 period)
|
|
||||||
{
|
|
||||||
u8 res=_SUCCESS;
|
|
||||||
struct H2C_SS_RFOFF_PARAM param;
|
|
||||||
DBG_88E("==>%s bfwpoll(%x)\n",__func__,bfwpoll);
|
|
||||||
param.gpio_period = period;//Polling GPIO_11 period time
|
|
||||||
param.ROFOn = (true == bfwpoll)?1:0;
|
|
||||||
FillH2CCmd_88E(padapter, SELECTIVE_SUSPEND_ROF_CMD, sizeof(param), (u8*)(¶m));
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
#endif //CONFIG_AUTOSUSPEND && SUPPORT_HW_RFOFF_DETECTED
|
|
||||||
*/
|
|
||||||
u8 rtl8188e_set_rssi_cmd(_adapter*padapter, u8 *param)
|
u8 rtl8188e_set_rssi_cmd(_adapter*padapter, u8 *param)
|
||||||
{
|
{
|
||||||
u8 res=_SUCCESS;
|
u8 res=_SUCCESS;
|
||||||
|
@ -234,11 +202,14 @@ u8 rtl8188e_set_raid_cmd(_adapter*padapter, u32 mask)
|
||||||
u8 buf[3];
|
u8 buf[3];
|
||||||
u8 res=_SUCCESS;
|
u8 res=_SUCCESS;
|
||||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||||
|
|
||||||
_func_enter_;
|
_func_enter_;
|
||||||
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{
|
||||||
|
@ -380,7 +351,7 @@ void rtl8188e_set_FwMediaStatus_cmd(PADAPTER padapter, u16 mstatus_rpt )
|
||||||
FillH2CCmd_88E(padapter, H2C_COM_MEDIA_STATUS_RPT, sizeof(mst_rpt), (u8 *)&mst_rpt);
|
FillH2CCmd_88E(padapter, H2C_COM_MEDIA_STATUS_RPT, sizeof(mst_rpt), (u8 *)&mst_rpt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength)
|
static void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength)
|
||||||
{
|
{
|
||||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||||
u16 *fctrl;
|
u16 *fctrl;
|
||||||
|
@ -482,7 +453,7 @@ _ConstructBeacon:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConstructPSPoll(_adapter *padapter, u8 *pframe, u32 *pLength)
|
static void ConstructPSPoll(_adapter *padapter, u8 *pframe, u32 *pLength)
|
||||||
{
|
{
|
||||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||||
u16 *fctrl;
|
u16 *fctrl;
|
||||||
|
@ -512,7 +483,7 @@ void ConstructPSPoll(_adapter *padapter, u8 *pframe, u32 *pLength)
|
||||||
*pLength = 16;
|
*pLength = 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConstructNullFunctionData(
|
static void ConstructNullFunctionData(
|
||||||
PADAPTER padapter,
|
PADAPTER padapter,
|
||||||
u8 *pframe,
|
u8 *pframe,
|
||||||
u32 *pLength,
|
u32 *pLength,
|
||||||
|
@ -585,7 +556,7 @@ void ConstructNullFunctionData(
|
||||||
*pLength = pktlen;
|
*pLength = pktlen;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, bool bHideSSID)
|
static void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr, bool bHideSSID)
|
||||||
{
|
{
|
||||||
struct rtw_ieee80211_hdr *pwlanhdr;
|
struct rtw_ieee80211_hdr *pwlanhdr;
|
||||||
u16 *fctrl;
|
u16 *fctrl;
|
||||||
|
|
|
@ -217,7 +217,7 @@ exit:
|
||||||
rtw_mfree2d((void *)eFuseWord, EFUSE_MAX_SECTION_88E, EFUSE_MAX_WORD_UNIT, sizeof(u16));
|
rtw_mfree2d((void *)eFuseWord, EFUSE_MAX_SECTION_88E, EFUSE_MAX_WORD_UNIT, sizeof(u16));
|
||||||
}
|
}
|
||||||
|
|
||||||
void efuse_read_phymap_from_txpktbuf(
|
static void efuse_read_phymap_from_txpktbuf(
|
||||||
ADAPTER *adapter,
|
ADAPTER *adapter,
|
||||||
int bcnhead, //beacon head, where FW store len(2-byte) and efuse physical map.
|
int bcnhead, //beacon head, where FW store len(2-byte) and efuse physical map.
|
||||||
u8 *content, //buffer to store efuse physical map
|
u8 *content, //buffer to store efuse physical map
|
||||||
|
@ -352,7 +352,7 @@ static s32 iol_ioconfig(
|
||||||
return rst;
|
return rst;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtl8188e_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms,u32 bndy_cnt)
|
static int rtl8188e_IOL_exec_cmds_sync(ADAPTER *adapter, struct xmit_frame *xmit_frame, u32 max_wating_ms,u32 bndy_cnt)
|
||||||
{
|
{
|
||||||
|
|
||||||
u32 start_time = rtw_get_current_time();
|
u32 start_time = rtw_get_current_time();
|
||||||
|
@ -1358,7 +1358,7 @@ rtl8188e_ReadEFuse(
|
||||||
}
|
}
|
||||||
|
|
||||||
//Do not support BT
|
//Do not support BT
|
||||||
void
|
static void
|
||||||
Hal_EFUSEGetEfuseDefinition88E(
|
Hal_EFUSEGetEfuseDefinition88E(
|
||||||
PADAPTER pAdapter,
|
PADAPTER pAdapter,
|
||||||
u1Byte efuseType,
|
u1Byte efuseType,
|
||||||
|
@ -1426,8 +1426,8 @@ Hal_EFUSEGetEfuseDefinition88E(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void
|
|
||||||
Hal_EFUSEGetEfuseDefinition_Pseudo88E(
|
static void Hal_EFUSEGetEfuseDefinition_Pseudo88E(
|
||||||
PADAPTER pAdapter,
|
PADAPTER pAdapter,
|
||||||
u8 efuseType,
|
u8 efuseType,
|
||||||
u8 type,
|
u8 type,
|
||||||
|
@ -2515,7 +2515,7 @@ static void rtl8188e_read_chip_version(PADAPTER padapter)
|
||||||
ReadChipVersion8188E(padapter);
|
ReadChipVersion8188E(padapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtl8188e_GetHalODMVar(
|
static void rtl8188e_GetHalODMVar(
|
||||||
PADAPTER Adapter,
|
PADAPTER Adapter,
|
||||||
HAL_ODM_VARIABLE eVariable,
|
HAL_ODM_VARIABLE eVariable,
|
||||||
void * pValue1,
|
void * pValue1,
|
||||||
|
@ -2530,7 +2530,7 @@ void rtl8188e_GetHalODMVar(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void rtl8188e_SetHalODMVar(
|
static void rtl8188e_SetHalODMVar(
|
||||||
PADAPTER Adapter,
|
PADAPTER Adapter,
|
||||||
HAL_ODM_VARIABLE eVariable,
|
HAL_ODM_VARIABLE eVariable,
|
||||||
void * pValue1,
|
void * pValue1,
|
||||||
|
@ -2639,7 +2639,8 @@ void rtl8188e_stop_thread(_adapter *padapter)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
void hal_notch_filter_8188e(_adapter *adapter, bool enable)
|
|
||||||
|
static void hal_notch_filter_8188e(_adapter *adapter, bool enable)
|
||||||
{
|
{
|
||||||
if (enable) {
|
if (enable) {
|
||||||
DBG_88E("Enable notch filter\n");
|
DBG_88E("Enable notch filter\n");
|
||||||
|
@ -2734,7 +2735,7 @@ u8 GetEEPROMSize8188E(PADAPTER padapter)
|
||||||
// LLT R/W/Init function
|
// LLT R/W/Init function
|
||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
s32 _LLTWrite(PADAPTER padapter, u32 address, u32 data)
|
static s32 _LLTWrite(PADAPTER padapter, u32 address, u32 data)
|
||||||
{
|
{
|
||||||
s32 status = _SUCCESS;
|
s32 status = _SUCCESS;
|
||||||
s32 count = 0;
|
s32 count = 0;
|
||||||
|
@ -2761,31 +2762,6 @@ s32 _LLTWrite(PADAPTER padapter, u32 address, u32 data)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 _LLTRead(PADAPTER padapter, u32 address)
|
|
||||||
{
|
|
||||||
s32 count = 0;
|
|
||||||
u32 value = _LLT_INIT_ADDR(address) | _LLT_OP(_LLT_READ_ACCESS);
|
|
||||||
u16 LLTReg = REG_LLT_INIT;
|
|
||||||
|
|
||||||
|
|
||||||
rtw_write32(padapter, LLTReg, value);
|
|
||||||
|
|
||||||
//polling and get value
|
|
||||||
do {
|
|
||||||
value = rtw_read32(padapter, LLTReg);
|
|
||||||
if (_LLT_NO_ACTIVE == _LLT_OP_VALUE(value)) {
|
|
||||||
return (u8)value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count > POLLING_LLT_THRESHOLD) {
|
|
||||||
RT_TRACE(_module_hal_init_c_, _drv_err_, ("Failed to polling read LLT done at address %d!\n", address));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} while (count++);
|
|
||||||
|
|
||||||
return 0xFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
s32 InitLLTTable(PADAPTER padapter, u8 txpktbuf_bndy)
|
s32 InitLLTTable(PADAPTER padapter, u8 txpktbuf_bndy)
|
||||||
{
|
{
|
||||||
s32 status = _FAIL;
|
s32 status = _FAIL;
|
||||||
|
|
|
@ -488,19 +488,6 @@ void Hal_SetTxPower(PADAPTER pAdapter)
|
||||||
// SetOFDMTxPower(pAdapter, TxPower);
|
// SetOFDMTxPower(pAdapter, TxPower);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hal_SetTxAGCOffset(PADAPTER pAdapter, u32 ulTxAGCOffset)
|
|
||||||
{
|
|
||||||
u32 TxAGCOffset_B, TxAGCOffset_C, TxAGCOffset_D,tmpAGC;
|
|
||||||
|
|
||||||
TxAGCOffset_B = (ulTxAGCOffset&0x000000ff);
|
|
||||||
TxAGCOffset_C = ((ulTxAGCOffset&0x0000ff00)>>8);
|
|
||||||
TxAGCOffset_D = ((ulTxAGCOffset&0x00ff0000)>>16);
|
|
||||||
|
|
||||||
tmpAGC = (TxAGCOffset_D<<8 | TxAGCOffset_C<<4 | TxAGCOffset_B);
|
|
||||||
write_bbreg(pAdapter, rFPGA0_TxGainStage,
|
|
||||||
(bXBTxAGC|bXCTxAGC|bXDTxAGC), tmpAGC);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hal_SetDataRate(PADAPTER pAdapter)
|
void Hal_SetDataRate(PADAPTER pAdapter)
|
||||||
{
|
{
|
||||||
Hal_mpt_SwitchRfSetting(pAdapter);
|
Hal_mpt_SwitchRfSetting(pAdapter);
|
||||||
|
|
|
@ -1074,12 +1074,8 @@ phy_ConfigBBWithParaFile(
|
||||||
//****************************************
|
//****************************************
|
||||||
// The following is for High Power PA
|
// The following is for High Power PA
|
||||||
//****************************************
|
//****************************************
|
||||||
void
|
static void phy_ConfigBBExternalPA(PADAPTER Adapter)
|
||||||
phy_ConfigBBExternalPA(
|
|
||||||
PADAPTER Adapter
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_USB_HCI
|
|
||||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
||||||
u16 i=0;
|
u16 i=0;
|
||||||
u32 temp=0;
|
u32 temp=0;
|
||||||
|
@ -1089,7 +1085,6 @@ phy_ConfigBBExternalPA(
|
||||||
|
|
||||||
// 2010/10/19 MH According to Jenyu/EEChou 's opinion, we need not to execute the
|
// 2010/10/19 MH According to Jenyu/EEChou 's opinion, we need not to execute the
|
||||||
// same code as SU. It is already updated in PHY_REG_1T_HP.txt.
|
// same code as SU. It is already updated in PHY_REG_1T_HP.txt.
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------
|
/*-----------------------------------------------------------------------------
|
||||||
|
@ -1677,30 +1672,7 @@ rtl8188e_PHY_ConfigRFWithParaFile(
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//****************************************
|
static int PHY_ConfigRFExternalPA(PADAPTER Adapter, RF_RADIO_PATH_E eRFPath)
|
||||||
// The following is for High Power PA
|
|
||||||
//****************************************
|
|
||||||
#define HighPowerRadioAArrayLen 22
|
|
||||||
//This is for High power PA
|
|
||||||
u32 Rtl8192S_HighPower_RadioA_Array[HighPowerRadioAArrayLen] = {
|
|
||||||
0x013,0x00029ea4,
|
|
||||||
0x013,0x00025e74,
|
|
||||||
0x013,0x00020ea4,
|
|
||||||
0x013,0x0001ced0,
|
|
||||||
0x013,0x00019f40,
|
|
||||||
0x013,0x00014e70,
|
|
||||||
0x013,0x000106a0,
|
|
||||||
0x013,0x0000c670,
|
|
||||||
0x013,0x000082a0,
|
|
||||||
0x013,0x00004270,
|
|
||||||
0x013,0x00000240,
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
|
||||||
PHY_ConfigRFExternalPA(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
int rtStatus = _SUCCESS;
|
int rtStatus = _SUCCESS;
|
||||||
#ifdef CONFIG_USB_HCI
|
#ifdef CONFIG_USB_HCI
|
||||||
|
@ -1901,97 +1873,6 @@ exit:
|
||||||
}
|
}
|
||||||
#endif//#ifndef CONFIG_PHY_SETTING_WITH_ODM
|
#endif//#ifndef CONFIG_PHY_SETTING_WITH_ODM
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------
|
|
||||||
* Function: PHY_CheckBBAndRFOK()
|
|
||||||
*
|
|
||||||
* Overview: This function is write register and then readback to make sure whether
|
|
||||||
* BB[PHY0, PHY1], RF[Patha, path b, path c, path d] is Ok
|
|
||||||
*
|
|
||||||
* Input: PADAPTER Adapter
|
|
||||||
* HW90_BLOCK_E CheckBlock
|
|
||||||
* RF_RADIO_PATH_E eRFPath // it is used only when CheckBlock is HW90_BLOCK_RF
|
|
||||||
*
|
|
||||||
* Output: NONE
|
|
||||||
*
|
|
||||||
* Return: RT_STATUS_SUCCESS: PHY is OK
|
|
||||||
*
|
|
||||||
* Note: This function may be removed in the ASIC
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
int
|
|
||||||
PHY_CheckBBAndRFOK(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
HW90_BLOCK_E CheckBlock,
|
|
||||||
RF_RADIO_PATH_E eRFPath
|
|
||||||
)
|
|
||||||
{
|
|
||||||
int rtStatus = _SUCCESS;
|
|
||||||
|
|
||||||
u32 i, CheckTimes = 4,ulRegRead = 0;
|
|
||||||
|
|
||||||
u32 WriteAddr[4];
|
|
||||||
u32 WriteData[] = {0xfffff027, 0xaa55a02f, 0x00000027, 0x55aa502f};
|
|
||||||
|
|
||||||
// Initialize register address offset to be checked
|
|
||||||
WriteAddr[HW90_BLOCK_MAC] = 0x100;
|
|
||||||
WriteAddr[HW90_BLOCK_PHY0] = 0x900;
|
|
||||||
WriteAddr[HW90_BLOCK_PHY1] = 0x800;
|
|
||||||
WriteAddr[HW90_BLOCK_RF] = 0x3;
|
|
||||||
|
|
||||||
for (i=0 ; i < CheckTimes ; i++)
|
|
||||||
{
|
|
||||||
|
|
||||||
//
|
|
||||||
// Write Data to register and readback
|
|
||||||
//
|
|
||||||
switch (CheckBlock)
|
|
||||||
{
|
|
||||||
case HW90_BLOCK_MAC:
|
|
||||||
//RT_ASSERT(false, ("PHY_CheckBBRFOK(): Never Write 0x100 here!"));
|
|
||||||
//RT_TRACE(COMP_INIT, DBG_LOUD, ("PHY_CheckBBRFOK(): Never Write 0x100 here!\n"));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HW90_BLOCK_PHY0:
|
|
||||||
case HW90_BLOCK_PHY1:
|
|
||||||
rtw_write32(Adapter, WriteAddr[CheckBlock], WriteData[i]);
|
|
||||||
ulRegRead = rtw_read32(Adapter, WriteAddr[CheckBlock]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case HW90_BLOCK_RF:
|
|
||||||
// When initialization, we want the delay function(delay_ms(), delay_us()
|
|
||||||
// ==> actually we call PlatformStallExecution()) to do NdisStallExecution()
|
|
||||||
// [busy wait] instead of NdisMSleep(). So we acquire RT_INITIAL_SPINLOCK
|
|
||||||
// to run at Dispatch level to achive it.
|
|
||||||
//cosa PlatformAcquireSpinLock(Adapter, RT_INITIAL_SPINLOCK);
|
|
||||||
WriteData[i] &= 0xfff;
|
|
||||||
PHY_SetRFReg(Adapter, eRFPath, WriteAddr[HW90_BLOCK_RF], bRFRegOffsetMask, WriteData[i]);
|
|
||||||
// TODO: we should not delay for such a long time. Ask SD3
|
|
||||||
rtw_mdelay_os(10);
|
|
||||||
ulRegRead = PHY_QueryRFReg(Adapter, eRFPath, WriteAddr[HW90_BLOCK_RF], bMaskDWord);
|
|
||||||
rtw_mdelay_os(10);
|
|
||||||
//cosa PlatformReleaseSpinLock(Adapter, RT_INITIAL_SPINLOCK);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
rtStatus = _FAIL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check whether readback data is correct
|
|
||||||
//
|
|
||||||
if (ulRegRead != WriteData[i])
|
|
||||||
{
|
|
||||||
//RT_TRACE(COMP_FPGA, DBG_LOUD, ("ulRegRead: %lx, WriteData: %lx\n", ulRegRead, WriteData[i]));
|
|
||||||
rtStatus = _FAIL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rtStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
rtl8192c_PHY_GetHWRegOriginalValue(
|
rtl8192c_PHY_GetHWRegOriginalValue(
|
||||||
PADAPTER Adapter
|
PADAPTER Adapter
|
||||||
|
@ -2004,19 +1885,12 @@ rtl8192c_PHY_GetHWRegOriginalValue(
|
||||||
pHalData->DefaultInitialGain[1] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XBAGCCore1, bMaskByte0);
|
pHalData->DefaultInitialGain[1] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XBAGCCore1, bMaskByte0);
|
||||||
pHalData->DefaultInitialGain[2] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XCAGCCore1, bMaskByte0);
|
pHalData->DefaultInitialGain[2] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XCAGCCore1, bMaskByte0);
|
||||||
pHalData->DefaultInitialGain[3] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XDAGCCore1, bMaskByte0);
|
pHalData->DefaultInitialGain[3] = (u8)PHY_QueryBBReg(Adapter, rOFDM0_XDAGCCore1, bMaskByte0);
|
||||||
//RT_TRACE(COMP_INIT, DBG_LOUD,
|
|
||||||
//("Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x)\n",
|
|
||||||
//pHalData->DefaultInitialGain[0], pHalData->DefaultInitialGain[1],
|
|
||||||
//pHalData->DefaultInitialGain[2], pHalData->DefaultInitialGain[3]));
|
|
||||||
|
|
||||||
// read framesync
|
// read framesync
|
||||||
pHalData->framesync = (u8)PHY_QueryBBReg(Adapter, rOFDM0_RxDetector3, bMaskByte0);
|
pHalData->framesync = (u8)PHY_QueryBBReg(Adapter, rOFDM0_RxDetector3, bMaskByte0);
|
||||||
pHalData->framesyncC34 = PHY_QueryBBReg(Adapter, rOFDM0_RxDetector2, bMaskDWord);
|
pHalData->framesyncC34 = PHY_QueryBBReg(Adapter, rOFDM0_RxDetector2, bMaskDWord);
|
||||||
//RT_TRACE(COMP_INIT, DBG_LOUD, ("Default framesync (0x%x) = 0x%x\n",
|
|
||||||
// rOFDM0_RxDetector3, pHalData->framesync));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Description:
|
// Description:
|
||||||
// Map dBm into Tx power index according to
|
// Map dBm into Tx power index according to
|
||||||
|
@ -2080,12 +1954,7 @@ phy_DbmToTxPwrIdx(
|
||||||
// current wireless mode.
|
// current wireless mode.
|
||||||
// By Bruce, 2008-01-29.
|
// By Bruce, 2008-01-29.
|
||||||
//
|
//
|
||||||
int
|
static int phy_TxPwrIdxToDbm(PADAPTER Adapter, WIRELESS_MODE WirelessMode, u8 TxPwrIdx)
|
||||||
phy_TxPwrIdxToDbm(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
WIRELESS_MODE WirelessMode,
|
|
||||||
u8 TxPwrIdx
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
int Offset = 0;
|
int Offset = 0;
|
||||||
int PwrOutDbm = 0;
|
int PwrOutDbm = 0;
|
||||||
|
@ -2165,30 +2034,21 @@ PHY_GetTxPowerLevel8188E(
|
||||||
*powerlevel = TxPwrDbm;
|
*powerlevel = TxPwrDbm;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getTxPowerIndex88E(
|
static void getTxPowerIndex88E(PADAPTER Adapter, u8 channel, u8 *cckPowerLevel,
|
||||||
PADAPTER Adapter,
|
u8 *ofdmPowerLevel, u8 *BW20PowerLevel,
|
||||||
u8 channel,
|
u8 *BW40PowerLevel)
|
||||||
u8* cckPowerLevel,
|
|
||||||
u8* ofdmPowerLevel,
|
|
||||||
u8* BW20PowerLevel,
|
|
||||||
u8* BW40PowerLevel
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
||||||
u8 index = (channel -1);
|
u8 index = (channel -1);
|
||||||
u8 TxCount=0,path_nums;
|
u8 TxCount=0,path_nums;
|
||||||
|
|
||||||
|
if ((RF_1T2R == pHalData->rf_type) || (RF_1T1R ==pHalData->rf_type))
|
||||||
if ((RF_1T2R == pHalData->rf_type) ||(RF_1T1R ==pHalData->rf_type ))
|
|
||||||
path_nums = 1;
|
path_nums = 1;
|
||||||
else
|
else
|
||||||
path_nums = 2;
|
path_nums = 2;
|
||||||
|
|
||||||
for (TxCount=0;TxCount< path_nums ;TxCount++)
|
for (TxCount=0; TxCount < path_nums; TxCount++) {
|
||||||
{
|
if (TxCount==RF_PATH_A) {
|
||||||
if (TxCount==RF_PATH_A)
|
|
||||||
{
|
|
||||||
// 1. CCK
|
// 1. CCK
|
||||||
cckPowerLevel[TxCount] = pHalData->Index24G_CCK_Base[TxCount][index];
|
cckPowerLevel[TxCount] = pHalData->Index24G_CCK_Base[TxCount][index];
|
||||||
//2. OFDM
|
//2. OFDM
|
||||||
|
@ -2212,10 +2072,8 @@ void getTxPowerIndex88E(
|
||||||
pHalData->BW20_24G_Diff[TxCount][index];
|
pHalData->BW20_24G_Diff[TxCount][index];
|
||||||
//2. BW40
|
//2. BW40
|
||||||
BW40PowerLevel[TxCount] = pHalData->Index24G_BW40_Base[TxCount][index];
|
BW40PowerLevel[TxCount] = pHalData->Index24G_BW40_Base[TxCount][index];
|
||||||
}
|
} else if (TxCount==RF_PATH_C) {
|
||||||
else if (TxCount==RF_PATH_C)
|
// 1. CCK
|
||||||
{
|
|
||||||
// 1. CCK
|
|
||||||
cckPowerLevel[TxCount] = pHalData->Index24G_CCK_Base[TxCount][index];
|
cckPowerLevel[TxCount] = pHalData->Index24G_CCK_Base[TxCount][index];
|
||||||
//2. OFDM
|
//2. OFDM
|
||||||
ofdmPowerLevel[TxCount] = pHalData->Index24G_BW40_Base[RF_PATH_A][index]+
|
ofdmPowerLevel[TxCount] = pHalData->Index24G_BW40_Base[RF_PATH_A][index]+
|
||||||
|
@ -2229,9 +2087,7 @@ void getTxPowerIndex88E(
|
||||||
pHalData->BW20_24G_Diff[TxCount][index];
|
pHalData->BW20_24G_Diff[TxCount][index];
|
||||||
//2. BW40
|
//2. BW40
|
||||||
BW40PowerLevel[TxCount] = pHalData->Index24G_BW40_Base[TxCount][index];
|
BW40PowerLevel[TxCount] = pHalData->Index24G_BW40_Base[TxCount][index];
|
||||||
}
|
} else if (TxCount==RF_PATH_D) {
|
||||||
else if (TxCount==RF_PATH_D)
|
|
||||||
{
|
|
||||||
// 1. CCK
|
// 1. CCK
|
||||||
cckPowerLevel[TxCount] = pHalData->Index24G_CCK_Base[TxCount][index];
|
cckPowerLevel[TxCount] = pHalData->Index24G_CCK_Base[TxCount][index];
|
||||||
//2. OFDM
|
//2. OFDM
|
||||||
|
@ -2251,22 +2107,12 @@ void getTxPowerIndex88E(
|
||||||
//2. BW40
|
//2. BW40
|
||||||
BW40PowerLevel[TxCount] = pHalData->Index24G_BW40_Base[TxCount][index];
|
BW40PowerLevel[TxCount] = pHalData->Index24G_BW40_Base[TxCount][index];
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void phy_PowerIndexCheck88E(
|
static void phy_PowerIndexCheck88E(PADAPTER Adapter, u8 channel, u8 *cckPowerLevel,
|
||||||
PADAPTER Adapter,
|
u8 *ofdmPowerLevel, u8 *BW20PowerLevel, u8 *BW40PowerLevel)
|
||||||
u8 channel,
|
|
||||||
u8 * cckPowerLevel,
|
|
||||||
u8 * ofdmPowerLevel,
|
|
||||||
u8 * BW20PowerLevel,
|
|
||||||
u8 * BW40PowerLevel
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
|
||||||
|
|
||||||
pHalData->CurrentCckTxPwrIdx = cckPowerLevel[0];
|
pHalData->CurrentCckTxPwrIdx = cckPowerLevel[0];
|
||||||
|
@ -2370,26 +2216,6 @@ PHY_UpdateTxPowerDbm8188E(
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Description:
|
|
||||||
When beacon interval is changed, the values of the
|
|
||||||
hw registers should be modified.
|
|
||||||
By tynli, 2008.10.24.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
rtl8192c_PHY_SetBeaconHwReg(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
u16 BeaconInterval
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
PHY_ScanOperationBackup8188E(
|
PHY_ScanOperationBackup8188E(
|
||||||
PADAPTER Adapter,
|
PADAPTER Adapter,
|
||||||
|
@ -2835,78 +2661,48 @@ PHY_SetMonitorMode8192C(
|
||||||
* 11/15/2007 MHC Create Version 0.
|
* 11/15/2007 MHC Create Version 0.
|
||||||
*
|
*
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
bool
|
bool PHY_CheckIsLegalRfPath8192C(PADAPTER pAdapter, u32 eRFPath)
|
||||||
PHY_CheckIsLegalRfPath8192C(
|
|
||||||
PADAPTER pAdapter,
|
|
||||||
u32 eRFPath)
|
|
||||||
{
|
{
|
||||||
// HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter);
|
return true;
|
||||||
bool rtValue = true;
|
|
||||||
|
|
||||||
// NOt check RF Path now.!
|
|
||||||
return rtValue;
|
|
||||||
|
|
||||||
} /* PHY_CheckIsLegalRfPath8192C */
|
} /* PHY_CheckIsLegalRfPath8192C */
|
||||||
|
|
||||||
static void _PHY_SetRFPathSwitch(
|
static void _PHY_SetRFPathSwitch(PADAPTER pAdapter, bool bMain, bool is2T)
|
||||||
PADAPTER pAdapter,
|
|
||||||
bool bMain,
|
|
||||||
bool is2T
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
u8 u1bTmp;
|
u8 u1bTmp;
|
||||||
|
|
||||||
if (!pAdapter->hw_init_completed)
|
if (!pAdapter->hw_init_completed) {
|
||||||
{
|
|
||||||
u1bTmp = rtw_read8(pAdapter, REG_LEDCFG2) | BIT7;
|
u1bTmp = rtw_read8(pAdapter, REG_LEDCFG2) | BIT7;
|
||||||
rtw_write8(pAdapter, REG_LEDCFG2, u1bTmp);
|
rtw_write8(pAdapter, REG_LEDCFG2, u1bTmp);
|
||||||
//PHY_SetBBReg(pAdapter, REG_LEDCFG0, BIT23, 0x01);
|
|
||||||
PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT13, 0x01);
|
PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT13, 0x01);
|
||||||
}
|
}
|
||||||
|
if (is2T) {
|
||||||
if (is2T)
|
|
||||||
{
|
|
||||||
if (bMain)
|
if (bMain)
|
||||||
PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6, 0x1); //92C_Path_A
|
PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6, 0x1); //92C_Path_A
|
||||||
else
|
else
|
||||||
PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6, 0x2); //BT
|
PHY_SetBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6, 0x2); //BT
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
|
|
||||||
if (bMain)
|
if (bMain)
|
||||||
PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300, 0x2); //Main
|
PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300, 0x2); //Main
|
||||||
else
|
else
|
||||||
PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300, 0x1); //Aux
|
PHY_SetBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300, 0x1); //Aux
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//return value true => Main; false => Aux
|
//return value true => Main; false => Aux
|
||||||
|
|
||||||
static bool _PHY_QueryRFPathSwitch(
|
static bool _PHY_QueryRFPathSwitch(PADAPTER pAdapter, bool is2T)
|
||||||
PADAPTER pAdapter,
|
|
||||||
bool is2T
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
// if (is2T)
|
if (!pAdapter->hw_init_completed) {
|
||||||
// return true;
|
|
||||||
|
|
||||||
if (!pAdapter->hw_init_completed)
|
|
||||||
{
|
|
||||||
PHY_SetBBReg(pAdapter, REG_LEDCFG0, BIT23, 0x01);
|
PHY_SetBBReg(pAdapter, REG_LEDCFG0, BIT23, 0x01);
|
||||||
PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT13, 0x01);
|
PHY_SetBBReg(pAdapter, rFPGA0_XAB_RFParameter, BIT13, 0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is2T)
|
if (is2T) {
|
||||||
{
|
|
||||||
if (PHY_QueryBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6) == 0x01)
|
if (PHY_QueryBBReg(pAdapter, rFPGA0_XB_RFInterfaceOE, BIT5|BIT6) == 0x01)
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
if (PHY_QueryBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300) == 0x02)
|
if (PHY_QueryBBReg(pAdapter, rFPGA0_XA_RFInterfaceOE, 0x300) == 0x02)
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
|
@ -2914,67 +2710,10 @@ static bool _PHY_QueryRFPathSwitch(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _PHY_DumpRFReg(PADAPTER pAdapter)
|
||||||
static void
|
|
||||||
_PHY_DumpRFReg( PADAPTER pAdapter)
|
|
||||||
{
|
{
|
||||||
u32 rfRegValue,rfRegOffset;
|
u32 rfRegValue,rfRegOffset;
|
||||||
|
|
||||||
//RTPRINT(FINIT, INIT_RF, ("PHY_DumpRFReg()====>\n"));
|
for (rfRegOffset = 0x00;rfRegOffset<=0x30;rfRegOffset++)
|
||||||
|
|
||||||
for (rfRegOffset = 0x00;rfRegOffset<=0x30;rfRegOffset++){
|
|
||||||
rfRegValue = PHY_QueryRFReg(pAdapter,RF_PATH_A, rfRegOffset, bMaskDWord);
|
rfRegValue = PHY_QueryRFReg(pAdapter,RF_PATH_A, rfRegOffset, bMaskDWord);
|
||||||
//RTPRINT(FINIT, INIT_RF, (" 0x%02x = 0x%08x\n",rfRegOffset,rfRegValue));
|
|
||||||
}
|
|
||||||
//RTPRINT(FINIT, INIT_RF, ("<===== PHY_DumpRFReg()\n"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Move from phycfg.c to gen.c to be code independent later
|
|
||||||
//
|
|
||||||
//-------------------------Move to other DIR later----------------------------*/
|
|
||||||
#ifdef CONFIG_USB_HCI
|
|
||||||
|
|
||||||
//
|
|
||||||
// Description:
|
|
||||||
// To dump all Tx FIFO LLT related link-list table.
|
|
||||||
// Added by Roger, 2009.03.10.
|
|
||||||
//
|
|
||||||
void
|
|
||||||
DumpBBDbgPort_92CU(
|
|
||||||
PADAPTER Adapter
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"));
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("BaseBand Debug Ports:\n"));
|
|
||||||
|
|
||||||
PHY_SetBBReg(Adapter, 0x0908, 0xffff, 0x0000);
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xdf4, PHY_QueryBBReg(Adapter, 0x0df4, bMaskDWord)));
|
|
||||||
|
|
||||||
PHY_SetBBReg(Adapter, 0x0908, 0xffff, 0x0803);
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xdf4, PHY_QueryBBReg(Adapter, 0x0df4, bMaskDWord)));
|
|
||||||
|
|
||||||
PHY_SetBBReg(Adapter, 0x0908, 0xffff, 0x0a06);
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xdf4, PHY_QueryBBReg(Adapter, 0x0df4, bMaskDWord)));
|
|
||||||
|
|
||||||
PHY_SetBBReg(Adapter, 0x0908, 0xffff, 0x0007);
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xdf4, PHY_QueryBBReg(Adapter, 0x0df4, bMaskDWord)));
|
|
||||||
|
|
||||||
PHY_SetBBReg(Adapter, 0x0908, 0xffff, 0x0100);
|
|
||||||
PHY_SetBBReg(Adapter, 0x0a28, 0x00ff0000, 0x000f0000);
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xdf4, PHY_QueryBBReg(Adapter, 0x0df4, bMaskDWord)));
|
|
||||||
|
|
||||||
PHY_SetBBReg(Adapter, 0x0908, 0xffff, 0x0100);
|
|
||||||
PHY_SetBBReg(Adapter, 0x0a28, 0x00ff0000, 0x00150000);
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xdf4, PHY_QueryBBReg(Adapter, 0x0df4, bMaskDWord)));
|
|
||||||
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0x800, PHY_QueryBBReg(Adapter, 0x0800, bMaskDWord)));
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0x900, PHY_QueryBBReg(Adapter, 0x0900, bMaskDWord)));
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xa00, PHY_QueryBBReg(Adapter, 0x0a00, bMaskDWord)));
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xa54, PHY_QueryBBReg(Adapter, 0x0a54, bMaskDWord)));
|
|
||||||
//RT_TRACE(COMP_SEND, DBG_WARNING, ("Offset[%x]: %x\n", 0xa58, PHY_QueryBBReg(Adapter, 0x0a58, bMaskDWord)));
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -282,7 +282,7 @@ rtl8188e_PHY_RF6052SetCckTxPower(
|
||||||
// powerbase0 for OFDM rates
|
// powerbase0 for OFDM rates
|
||||||
// powerbase1 for HT MCS rates
|
// powerbase1 for HT MCS rates
|
||||||
//
|
//
|
||||||
void getPowerBase88E(
|
static void getPowerBase88E(
|
||||||
PADAPTER Adapter,
|
PADAPTER Adapter,
|
||||||
u8* pPowerLevelOFDM,
|
u8* pPowerLevelOFDM,
|
||||||
u8* pPowerLevelBW20,
|
u8* pPowerLevelBW20,
|
||||||
|
@ -325,7 +325,7 @@ void getPowerBase88E(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void getTxPowerWriteValByRegulatory88E(
|
static void getTxPowerWriteValByRegulatory88E(
|
||||||
PADAPTER Adapter,
|
PADAPTER Adapter,
|
||||||
u8 Channel,
|
u8 Channel,
|
||||||
u8 index,
|
u8 index,
|
||||||
|
@ -779,232 +779,4 @@ PHY_RF6052_Config8188E(
|
||||||
return rtStatus;
|
return rtStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// ==> RF shadow Operation API Code Section!!!
|
|
||||||
//
|
|
||||||
/*-----------------------------------------------------------------------------
|
|
||||||
* Function: PHY_RFShadowRead
|
|
||||||
* PHY_RFShadowWrite
|
|
||||||
* PHY_RFShadowCompare
|
|
||||||
* PHY_RFShadowRecorver
|
|
||||||
* PHY_RFShadowCompareAll
|
|
||||||
* PHY_RFShadowRecorverAll
|
|
||||||
* PHY_RFShadowCompareFlagSet
|
|
||||||
* PHY_RFShadowRecorverFlagSet
|
|
||||||
*
|
|
||||||
* Overview: When we set RF register, we must write shadow at first.
|
|
||||||
* When we are running, we must compare shadow abd locate error addr.
|
|
||||||
* Decide to recorver or not.
|
|
||||||
*
|
|
||||||
* Input: NONE
|
|
||||||
*
|
|
||||||
* Output: NONE
|
|
||||||
*
|
|
||||||
* Return: NONE
|
|
||||||
*
|
|
||||||
* Revised History:
|
|
||||||
* When Who Remark
|
|
||||||
* 11/20/2008 MHC Create Version 0.
|
|
||||||
*
|
|
||||||
*---------------------------------------------------------------------------*/
|
|
||||||
u32
|
|
||||||
PHY_RFShadowRead(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath,
|
|
||||||
u32 Offset)
|
|
||||||
{
|
|
||||||
return RF_Shadow[eRFPath][Offset].Value;
|
|
||||||
|
|
||||||
} /* PHY_RFShadowRead */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowWrite(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath,
|
|
||||||
u32 Offset,
|
|
||||||
u32 Data)
|
|
||||||
{
|
|
||||||
RF_Shadow[eRFPath][Offset].Value = (Data & bRFRegOffsetMask);
|
|
||||||
RF_Shadow[eRFPath][Offset].Driver_Write = true;
|
|
||||||
|
|
||||||
} /* PHY_RFShadowWrite */
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
|
||||||
PHY_RFShadowCompare(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath,
|
|
||||||
u32 Offset)
|
|
||||||
{
|
|
||||||
u32 reg;
|
|
||||||
// Check if we need to check the register
|
|
||||||
if (RF_Shadow[eRFPath][Offset].Compare == true)
|
|
||||||
{
|
|
||||||
reg = PHY_QueryRFReg(Adapter, eRFPath, Offset, bRFRegOffsetMask);
|
|
||||||
// Compare shadow and real rf register for 20bits!!
|
|
||||||
if (RF_Shadow[eRFPath][Offset].Value != reg)
|
|
||||||
{
|
|
||||||
// Locate error position.
|
|
||||||
RF_Shadow[eRFPath][Offset].ErrorOrNot = true;
|
|
||||||
//RT_TRACE(COMP_INIT, DBG_LOUD,
|
|
||||||
//("PHY_RFShadowCompare RF-%d Addr%02lx Err = %05lx\n",
|
|
||||||
//eRFPath, Offset, reg));
|
|
||||||
}
|
|
||||||
return RF_Shadow[eRFPath][Offset].ErrorOrNot ;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
} /* PHY_RFShadowCompare */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowRecorver(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath,
|
|
||||||
u32 Offset)
|
|
||||||
{
|
|
||||||
// Check if the address is error
|
|
||||||
if (RF_Shadow[eRFPath][Offset].ErrorOrNot == true)
|
|
||||||
{
|
|
||||||
// Check if we need to recorver the register.
|
|
||||||
if (RF_Shadow[eRFPath][Offset].Recorver == true)
|
|
||||||
{
|
|
||||||
PHY_SetRFReg(Adapter, eRFPath, Offset, bRFRegOffsetMask,
|
|
||||||
RF_Shadow[eRFPath][Offset].Value);
|
|
||||||
//RT_TRACE(COMP_INIT, DBG_LOUD,
|
|
||||||
//("PHY_RFShadowRecorver RF-%d Addr%02lx=%05lx",
|
|
||||||
//eRFPath, Offset, RF_Shadow[eRFPath][Offset].Value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* PHY_RFShadowRecorver */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowCompareAll(
|
|
||||||
PADAPTER Adapter)
|
|
||||||
{
|
|
||||||
u32 eRFPath;
|
|
||||||
u32 Offset;
|
|
||||||
|
|
||||||
for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
|
|
||||||
{
|
|
||||||
for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
|
|
||||||
{
|
|
||||||
PHY_RFShadowCompare(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* PHY_RFShadowCompareAll */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowRecorverAll(
|
|
||||||
PADAPTER Adapter)
|
|
||||||
{
|
|
||||||
u32 eRFPath;
|
|
||||||
u32 Offset;
|
|
||||||
|
|
||||||
for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
|
|
||||||
{
|
|
||||||
for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
|
|
||||||
{
|
|
||||||
PHY_RFShadowRecorver(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* PHY_RFShadowRecorverAll */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowCompareFlagSet(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath,
|
|
||||||
u32 Offset,
|
|
||||||
u8 Type)
|
|
||||||
{
|
|
||||||
// Set True or False!!!
|
|
||||||
RF_Shadow[eRFPath][Offset].Compare = Type;
|
|
||||||
|
|
||||||
} /* PHY_RFShadowCompareFlagSet */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowRecorverFlagSet(
|
|
||||||
PADAPTER Adapter,
|
|
||||||
RF_RADIO_PATH_E eRFPath,
|
|
||||||
u32 Offset,
|
|
||||||
u8 Type)
|
|
||||||
{
|
|
||||||
// Set True or False!!!
|
|
||||||
RF_Shadow[eRFPath][Offset].Recorver= Type;
|
|
||||||
|
|
||||||
} /* PHY_RFShadowRecorverFlagSet */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowCompareFlagSetAll(
|
|
||||||
PADAPTER Adapter)
|
|
||||||
{
|
|
||||||
u32 eRFPath;
|
|
||||||
u32 Offset;
|
|
||||||
|
|
||||||
for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
|
|
||||||
{
|
|
||||||
for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
|
|
||||||
{
|
|
||||||
// 2008/11/20 MH For S3S4 test, we only check reg 26/27 now!!!!
|
|
||||||
if (Offset != 0x26 && Offset != 0x27)
|
|
||||||
PHY_RFShadowCompareFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, false);
|
|
||||||
else
|
|
||||||
PHY_RFShadowCompareFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* PHY_RFShadowCompareFlagSetAll */
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowRecorverFlagSetAll(
|
|
||||||
PADAPTER Adapter)
|
|
||||||
{
|
|
||||||
u32 eRFPath;
|
|
||||||
u32 Offset;
|
|
||||||
|
|
||||||
for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
|
|
||||||
{
|
|
||||||
for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
|
|
||||||
{
|
|
||||||
// 2008/11/20 MH For S3S4 test, we only check reg 26/27 now!!!!
|
|
||||||
if (Offset != 0x26 && Offset != 0x27)
|
|
||||||
PHY_RFShadowRecorverFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, false);
|
|
||||||
else
|
|
||||||
PHY_RFShadowRecorverFlagSet(Adapter, (RF_RADIO_PATH_E)eRFPath, Offset, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* PHY_RFShadowCompareFlagSetAll */
|
|
||||||
|
|
||||||
void
|
|
||||||
PHY_RFShadowRefresh(
|
|
||||||
PADAPTER Adapter)
|
|
||||||
{
|
|
||||||
u32 eRFPath;
|
|
||||||
u32 Offset;
|
|
||||||
|
|
||||||
for (eRFPath = 0; eRFPath < RF6052_MAX_PATH; eRFPath++)
|
|
||||||
{
|
|
||||||
for (Offset = 0; Offset <= RF6052_MAX_REG; Offset++)
|
|
||||||
{
|
|
||||||
RF_Shadow[eRFPath][Offset].Value = 0;
|
|
||||||
RF_Shadow[eRFPath][Offset].Compare = false;
|
|
||||||
RF_Shadow[eRFPath][Offset].Recorver = false;
|
|
||||||
RF_Shadow[eRFPath][Offset].ErrorOrNot = false;
|
|
||||||
RF_Shadow[eRFPath][Offset].Driver_Write = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} /* PHY_RFShadowRead */
|
|
||||||
|
|
||||||
/* End of HalRf6052.c */
|
/* End of HalRf6052.c */
|
||||||
|
|
|
@ -3524,9 +3524,7 @@ _func_enter_;
|
||||||
// Forece leave RF low power mode for 1T1R to prevent conficting setting in Fw power
|
// Forece leave RF low power mode for 1T1R to prevent conficting setting in Fw power
|
||||||
// saving sequence. 2010.06.07. Added by tynli. Suggested by SD3 yschang.
|
// saving sequence. 2010.06.07. Added by tynli. Suggested by SD3 yschang.
|
||||||
if ( (psmode != PS_MODE_ACTIVE) && (!IS_92C_SERIAL(pHalData->VersionID)))
|
if ( (psmode != PS_MODE_ACTIVE) && (!IS_92C_SERIAL(pHalData->VersionID)))
|
||||||
{
|
|
||||||
ODM_RF_Saving(podmpriv, true);
|
ODM_RF_Saving(podmpriv, true);
|
||||||
}
|
|
||||||
rtl8188e_set_FwPwrMode_cmd(Adapter, psmode);
|
rtl8188e_set_FwPwrMode_cmd(Adapter, psmode);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -377,7 +377,7 @@ static int usb_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 length, u8 *pdata
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SUPPORT_USB_INT
|
#ifdef CONFIG_SUPPORT_USB_INT
|
||||||
void interrupt_handler_8188eu(_adapter *padapter,u16 pkt_len,u8 *pbuf)
|
static void interrupt_handler_8188eu(_adapter *padapter,u16 pkt_len,u8 *pbuf)
|
||||||
{
|
{
|
||||||
HAL_DATA_TYPE *pHalData=GET_HAL_DATA(padapter);
|
HAL_DATA_TYPE *pHalData=GET_HAL_DATA(padapter);
|
||||||
struct reportpwrstate_parm pwr_rpt;
|
struct reportpwrstate_parm pwr_rpt;
|
||||||
|
|
|
@ -89,12 +89,12 @@ typedef struct tag_HAL_VERSION
|
||||||
//HAL_VERSION VersionID;
|
//HAL_VERSION VersionID;
|
||||||
|
|
||||||
// Get element
|
// Get element
|
||||||
#define GET_CVID_IC_TYPE(version) ((HAL_IC_TYPE_E)(((HAL_VERSION)version).ICType) )
|
#define GET_CVID_IC_TYPE(version) (((version).ICType))
|
||||||
#define GET_CVID_CHIP_TYPE(version) ((HAL_CHIP_TYPE_E)(((HAL_VERSION)version).ChipType) )
|
#define GET_CVID_CHIP_TYPE(version) (((version).ChipType))
|
||||||
#define GET_CVID_RF_TYPE(version) ((HAL_RF_TYPE_E)(((HAL_VERSION)version).RFType))
|
#define GET_CVID_RF_TYPE(version) (((version).RFType))
|
||||||
#define GET_CVID_MANUFACTUER(version) ((HAL_VENDOR_E)(((HAL_VERSION)version).VendorType))
|
#define GET_CVID_MANUFACTUER(version) (((version).VendorType))
|
||||||
#define GET_CVID_CUT_VERSION(version) ((HAL_CUT_VERSION_E)(((HAL_VERSION)version).CUTVersion))
|
#define GET_CVID_CUT_VERSION(version) (((version).CUTVersion))
|
||||||
#define GET_CVID_ROM_VERSION(version) ((((HAL_VERSION)version).ROMVer) & ROM_VERSION_MASK)
|
#define GET_CVID_ROM_VERSION(version) (((version).ROMVer) & ROM_VERSION_MASK)
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
//Common Macro. --
|
//Common Macro. --
|
||||||
|
@ -124,9 +124,9 @@ typedef struct tag_HAL_VERSION
|
||||||
#define IS_CHIP_VENDOR_UMC(version) ((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_UMC)? true: false)
|
#define IS_CHIP_VENDOR_UMC(version) ((GET_CVID_MANUFACTUER(version) == CHIP_VENDOR_UMC)? true: false)
|
||||||
|
|
||||||
//HAL_RF_TYPE_E
|
//HAL_RF_TYPE_E
|
||||||
#define IS_1T1R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T1R)? true : false )
|
#define IS_1T1R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T1R) ? true : false )
|
||||||
#define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R)? true : false)
|
#define IS_1T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_1T2R) ? true : false)
|
||||||
#define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R)? true : false)
|
#define IS_2T2R(version) ((GET_CVID_RF_TYPE(version) == RF_TYPE_2T2R) ? true : false)
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -146,4 +146,9 @@ void rtw_drv_if2_free(_adapter *if2);
|
||||||
void rtw_drv_if2_stop(_adapter *if2);
|
void rtw_drv_if2_stop(_adapter *if2);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef SUPPORT_HW_RFOFF_DETECTED
|
||||||
|
int rtw_hw_suspend(_adapter *padapter );
|
||||||
|
int rtw_hw_resume(_adapter *padapter);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif //_OSDEP_INTF_H_
|
#endif //_OSDEP_INTF_H_
|
||||||
|
|
|
@ -453,10 +453,6 @@ extern void _rtw_mutex_init(_mutex *pmutex);
|
||||||
extern void _rtw_mutex_free(_mutex *pmutex);
|
extern void _rtw_mutex_free(_mutex *pmutex);
|
||||||
extern void _rtw_spinlock_init(_lock *plock);
|
extern void _rtw_spinlock_init(_lock *plock);
|
||||||
extern void _rtw_spinlock_free(_lock *plock);
|
extern void _rtw_spinlock_free(_lock *plock);
|
||||||
extern void _rtw_spinlock(_lock *plock);
|
|
||||||
extern void _rtw_spinunlock(_lock *plock);
|
|
||||||
extern void _rtw_spinlock_ex(_lock *plock);
|
|
||||||
extern void _rtw_spinunlock_ex(_lock *plock);
|
|
||||||
|
|
||||||
extern void _rtw_init_queue(_queue *pqueue);
|
extern void _rtw_init_queue(_queue *pqueue);
|
||||||
extern u32 _rtw_queue_empty(_queue *pqueue);
|
extern u32 _rtw_queue_empty(_queue *pqueue);
|
||||||
|
|
|
@ -52,6 +52,7 @@ int rtw_os_recvbuf_resource_free(_adapter *padapter, struct recv_buf *precvbuf);
|
||||||
void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf);
|
void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf);
|
||||||
|
|
||||||
void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl);
|
void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl);
|
||||||
|
int nat25_handle_frame(_adapter *priv, struct sk_buff *skb);
|
||||||
|
|
||||||
|
|
||||||
#endif //
|
#endif //
|
||||||
|
|
|
@ -1086,7 +1086,7 @@ enum rtw_h2c_cmd
|
||||||
#define _SetRFReg_CMD_ _Write_RFREG_CMD_
|
#define _SetRFReg_CMD_ _Write_RFREG_CMD_
|
||||||
|
|
||||||
#ifdef _RTW_CMD_C_
|
#ifdef _RTW_CMD_C_
|
||||||
struct _cmd_callback rtw_cmd_callback[] =
|
static struct _cmd_callback rtw_cmd_callback[] =
|
||||||
{
|
{
|
||||||
{GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
|
{GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
|
||||||
{GEN_CMD_CODE(_Write_MACREG), NULL},
|
{GEN_CMD_CODE(_Write_MACREG), NULL},
|
||||||
|
|
|
@ -264,5 +264,8 @@ extern NDIS_STATUS drv_set_info(
|
||||||
u32* BytesRead,
|
u32* BytesRead,
|
||||||
u32* BytesNeeded
|
u32* BytesNeeded
|
||||||
);
|
);
|
||||||
|
#ifdef CONFIG_GLOBAL_UI_PID
|
||||||
|
extern int ui_pid[3];
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // #ifndef __INC_CEINFO_
|
#endif // #ifndef __INC_CEINFO_
|
||||||
|
|
|
@ -31,29 +31,6 @@ typedef struct _BSSIDInfo {
|
||||||
NDIS_802_11_PMKID_VALUE PMKID;
|
NDIS_802_11_PMKID_VALUE PMKID;
|
||||||
} BSSIDInfo, *PBSSIDInfo;
|
} BSSIDInfo, *PBSSIDInfo;
|
||||||
|
|
||||||
|
|
||||||
#ifdef PLATFORM_OS_XP
|
|
||||||
typedef struct _NDIS_802_11_PMKID {
|
|
||||||
u32 Length;
|
|
||||||
u32 BSSIDInfoCount;
|
|
||||||
BSSIDInfo BSSIDInfo[1];
|
|
||||||
} NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef PLATFORM_WINDOWS
|
|
||||||
u8 rtw_set_802_11_reload_defaults(_adapter * padapter, NDIS_802_11_RELOAD_DEFAULTS reloadDefaults);
|
|
||||||
u8 rtw_set_802_11_test(_adapter * padapter, NDIS_802_11_TEST * test);
|
|
||||||
u8 rtw_set_802_11_pmkid(_adapter *pdapter, NDIS_802_11_PMKID *pmkid);
|
|
||||||
|
|
||||||
u8 rtw_pnp_set_power_sleep(_adapter* padapter);
|
|
||||||
u8 rtw_pnp_set_power_wakeup(_adapter* padapter);
|
|
||||||
|
|
||||||
void rtw_pnp_resume_wk(void *context);
|
|
||||||
void rtw_pnp_sleep_wk(void * context);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
u8 rtw_set_802_11_add_key(_adapter * padapter, NDIS_802_11_KEY * key);
|
u8 rtw_set_802_11_add_key(_adapter * padapter, NDIS_802_11_KEY * key);
|
||||||
u8 rtw_set_802_11_authentication_mode(_adapter *pdapter, NDIS_802_11_AUTHENTICATION_MODE authmode);
|
u8 rtw_set_802_11_authentication_mode(_adapter *pdapter, NDIS_802_11_AUTHENTICATION_MODE authmode);
|
||||||
u8 rtw_set_802_11_bssid(_adapter* padapter, u8 *bssid);
|
u8 rtw_set_802_11_bssid(_adapter* padapter, u8 *bssid);
|
||||||
|
@ -72,5 +49,6 @@ u16 rtw_get_cur_max_rate(_adapter *adapter);
|
||||||
int rtw_set_scan_mode(_adapter *adapter, RT_SCAN_TYPE scan_mode);
|
int rtw_set_scan_mode(_adapter *adapter, RT_SCAN_TYPE scan_mode);
|
||||||
int rtw_set_channel_plan(_adapter *adapter, u8 channel_plan);
|
int rtw_set_channel_plan(_adapter *adapter, u8 channel_plan);
|
||||||
int rtw_set_country(_adapter *adapter, const char *country_code);
|
int rtw_set_country(_adapter *adapter, const char *country_code);
|
||||||
|
int rtw_change_ifname(_adapter *padapter, const char *ifname);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -821,7 +821,7 @@ u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf);
|
||||||
|
|
||||||
#ifdef _RTW_CMD_C_
|
#ifdef _RTW_CMD_C_
|
||||||
|
|
||||||
struct cmd_hdl wlancmds[] =
|
static struct cmd_hdl wlancmds[] =
|
||||||
{
|
{
|
||||||
GEN_DRV_CMD_HANDLER(0, NULL) /*0*/
|
GEN_DRV_CMD_HANDLER(0, NULL) /*0*/
|
||||||
GEN_DRV_CMD_HANDLER(0, NULL)
|
GEN_DRV_CMD_HANDLER(0, NULL)
|
||||||
|
|
|
@ -508,14 +508,12 @@ enum RTL871X_MP_IOCTL_SUBCODE {
|
||||||
|
|
||||||
u32 mp_ioctl_xmit_packet_hdl(struct oid_par_priv* poid_par_priv);
|
u32 mp_ioctl_xmit_packet_hdl(struct oid_par_priv* poid_par_priv);
|
||||||
|
|
||||||
#ifdef _RTW_MP_IOCTL_C_
|
|
||||||
|
|
||||||
#define GEN_MP_IOCTL_HANDLER(sz, hdl, oid) {sz, hdl, oid},
|
#define GEN_MP_IOCTL_HANDLER(sz, hdl, oid) {sz, hdl, oid},
|
||||||
|
|
||||||
#define EXT_MP_IOCTL_HANDLER(sz, subcode, oid) {sz, mp_ioctl_ ## subcode ## _hdl, oid},
|
#define EXT_MP_IOCTL_HANDLER(sz, subcode, oid) {sz, mp_ioctl_ ## subcode ## _hdl, oid},
|
||||||
|
|
||||||
|
|
||||||
struct mp_ioctl_handler mp_ioctl_hdl[] = {
|
static struct mp_ioctl_handler mp_ioctl_hdl[] = {
|
||||||
|
|
||||||
/*0*/ GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_start_test_hdl, OID_RT_PRO_START_TEST)
|
/*0*/ GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_start_test_hdl, OID_RT_PRO_START_TEST)
|
||||||
GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_stop_test_hdl, OID_RT_PRO_STOP_TEST)
|
GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_stop_test_hdl, OID_RT_PRO_STOP_TEST)
|
||||||
|
@ -557,13 +555,6 @@ struct mp_ioctl_handler mp_ioctl_hdl[] = {
|
||||||
/*30*/ GEN_MP_IOCTL_HANDLER(sizeof(u8), oid_rt_set_power_down_hdl, OID_RT_SET_POWER_DOWN)
|
/*30*/ GEN_MP_IOCTL_HANDLER(sizeof(u8), oid_rt_set_power_down_hdl, OID_RT_SET_POWER_DOWN)
|
||||||
/*31*/ GEN_MP_IOCTL_HANDLER(0, oid_rt_pro_trigger_gpio_hdl, 0)
|
/*31*/ GEN_MP_IOCTL_HANDLER(0, oid_rt_pro_trigger_gpio_hdl, 0)
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#else /* _RTW_MP_IOCTL_C_ */
|
|
||||||
|
|
||||||
extern struct mp_ioctl_handler mp_ioctl_hdl[];
|
|
||||||
|
|
||||||
#endif /* _RTW_MP_IOCTL_C_ */
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,13 +25,17 @@
|
||||||
#include <drv_types.h>
|
#include <drv_types.h>
|
||||||
#include <usb_vendor_req.h>
|
#include <usb_vendor_req.h>
|
||||||
|
|
||||||
|
extern char* rtw_initmac;
|
||||||
|
extern int rtw_mc2u_disable;
|
||||||
|
|
||||||
#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3)
|
#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3)
|
||||||
|
|
||||||
|
|
||||||
//uint usb_dvobj_init(_adapter * adapter);
|
|
||||||
//void usb_dvobj_deinit(_adapter * adapter);
|
|
||||||
|
|
||||||
u8 usbvendorrequest(struct dvobj_priv *pdvobjpriv, RT_USB_BREQUEST brequest, RT_USB_WVALUE wvalue, u8 windex, void* data, u8 datalen, u8 isdirectionin);
|
u8 usbvendorrequest(struct dvobj_priv *pdvobjpriv, RT_USB_BREQUEST brequest, RT_USB_WVALUE wvalue, u8 windex, void* data, u8 datalen, u8 isdirectionin);
|
||||||
|
int pm_netdev_open(struct net_device *pnetdev,u8 bnormal);
|
||||||
|
void netdev_br_init(struct net_device *netdev);
|
||||||
|
void dhcp_flag_bcast(_adapter *priv, struct sk_buff *skb);
|
||||||
|
void *scdb_findEntry(_adapter *priv, unsigned char *macAddr, unsigned char *ipAddr);
|
||||||
|
void nat25_db_expire(_adapter *priv);
|
||||||
|
int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -250,26 +250,26 @@ enum WIFI_REG_DOMAIN {
|
||||||
|
|
||||||
#define SetToDs(pbuf) \
|
#define SetToDs(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_TO_DS_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_TO_DS_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetToDs(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_TO_DS_)) != 0)
|
#define GetToDs(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_TO_DS_)) != 0)
|
||||||
|
|
||||||
#define ClearToDs(pbuf) \
|
#define ClearToDs(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_TO_DS_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_TO_DS_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetFrDs(pbuf) \
|
#define SetFrDs(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_FROM_DS_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_FROM_DS_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetFrDs(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_FROM_DS_)) != 0)
|
#define GetFrDs(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_FROM_DS_)) != 0)
|
||||||
|
|
||||||
#define ClearFrDs(pbuf) \
|
#define ClearFrDs(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_FROM_DS_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_FROM_DS_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define get_tofr_ds(pframe) ((GetToDs(pframe) << 1) | GetFrDs(pframe))
|
#define get_tofr_ds(pframe) ((GetToDs(pframe) << 1) | GetFrDs(pframe))
|
||||||
|
@ -277,62 +277,62 @@ enum WIFI_REG_DOMAIN {
|
||||||
|
|
||||||
#define SetMFrag(pbuf) \
|
#define SetMFrag(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_MORE_FRAG_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_MORE_FRAG_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetMFrag(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_MORE_FRAG_)) != 0)
|
#define GetMFrag(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_MORE_FRAG_)) != 0)
|
||||||
|
|
||||||
#define ClearMFrag(pbuf) \
|
#define ClearMFrag(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_MORE_FRAG_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_MORE_FRAG_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetRetry(pbuf) \
|
#define SetRetry(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_RETRY_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_RETRY_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetRetry(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_RETRY_)) != 0)
|
#define GetRetry(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_RETRY_)) != 0)
|
||||||
|
|
||||||
#define ClearRetry(pbuf) \
|
#define ClearRetry(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_RETRY_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_RETRY_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetPwrMgt(pbuf) \
|
#define SetPwrMgt(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_PWRMGT_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_PWRMGT_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetPwrMgt(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_PWRMGT_)) != 0)
|
#define GetPwrMgt(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_PWRMGT_)) != 0)
|
||||||
|
|
||||||
#define ClearPwrMgt(pbuf) \
|
#define ClearPwrMgt(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_PWRMGT_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_PWRMGT_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetMData(pbuf) \
|
#define SetMData(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_MORE_DATA_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_MORE_DATA_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetMData(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_MORE_DATA_)) != 0)
|
#define GetMData(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_MORE_DATA_)) != 0)
|
||||||
|
|
||||||
#define ClearMData(pbuf) \
|
#define ClearMData(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_MORE_DATA_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_MORE_DATA_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetPrivacy(pbuf) \
|
#define SetPrivacy(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(_PRIVACY_); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(_PRIVACY_); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetPrivacy(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_PRIVACY_)) != 0)
|
#define GetPrivacy(pbuf) (((*(unsigned short *)(pbuf)) & le16_to_cpu(_PRIVACY_)) != 0)
|
||||||
|
|
||||||
#define ClearPrivacy(pbuf) \
|
#define ClearPrivacy(pbuf) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= (~cpu_to_le16(_PRIVACY_)); \
|
*(__le16 *)(pbuf) &= (~cpu_to_le16(_PRIVACY_)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
|
@ -350,8 +350,8 @@ enum WIFI_REG_DOMAIN {
|
||||||
|
|
||||||
#define SetFrameSubType(pbuf,type) \
|
#define SetFrameSubType(pbuf,type) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) &= cpu_to_le16(~(BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))); \
|
*(__le16 *)(pbuf) &= cpu_to_le16(~(BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2))); \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(type); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(type); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetSequence(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) >> 4)
|
#define GetSequence(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) >> 4)
|
||||||
|
@ -369,32 +369,32 @@ enum WIFI_REG_DOMAIN {
|
||||||
|
|
||||||
#define SetSeqNum(pbuf, num) \
|
#define SetSeqNum(pbuf, num) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)((SIZE_PTR)(pbuf) + 22) = \
|
*(u16 *)((SIZE_PTR)(pbuf) + 22) = \
|
||||||
((*(unsigned short *)((SIZE_PTR)(pbuf) + 22)) & le16_to_cpu((unsigned short)~0xfff0)) | \
|
((*(u16 *)((SIZE_PTR)(pbuf) + 22)) & le16_to_cpu((unsigned short)0x000f)) | \
|
||||||
le16_to_cpu((unsigned short)(0xfff0 & (num << 4))); \
|
le16_to_cpu((unsigned short)(0xfff0 & (num << 4))); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetDuration(pbuf, dur) \
|
#define SetDuration(pbuf, dur) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)((SIZE_PTR)(pbuf) + 2) = cpu_to_le16(0xffff & (dur)); \
|
*(__le16 *)((SIZE_PTR)(pbuf) + 2) = cpu_to_le16(0xffff & (dur)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
#define SetPriority(pbuf, tid) \
|
#define SetPriority(pbuf, tid) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16(tid & 0xf); \
|
*(__le16 *)(pbuf) |= cpu_to_le16(tid & 0xf); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetPriority(pbuf) ((le16_to_cpu(*(unsigned short *)(pbuf))) & 0xf)
|
#define GetPriority(pbuf) ((le16_to_cpu(*(unsigned short *)(pbuf))) & 0xf)
|
||||||
|
|
||||||
#define SetEOSP(pbuf, eosp) \
|
#define SetEOSP(pbuf, eosp) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16( (eosp & 1) << 4); \
|
*(__le16 *)(pbuf) |= cpu_to_le16( (eosp & 1) << 4); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define SetAckpolicy(pbuf, ack) \
|
#define SetAckpolicy(pbuf, ack) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16( (ack & 3) << 5); \
|
*(__le16 *)(pbuf) |= cpu_to_le16( (ack & 3) << 5); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetAckpolicy(pbuf) (((le16_to_cpu(*(unsigned short *)pbuf)) >> 5) & 0x3)
|
#define GetAckpolicy(pbuf) (((le16_to_cpu(*(unsigned short *)pbuf)) >> 5) & 0x3)
|
||||||
|
@ -403,7 +403,7 @@ enum WIFI_REG_DOMAIN {
|
||||||
|
|
||||||
#define SetAMsdu(pbuf, amsdu) \
|
#define SetAMsdu(pbuf, amsdu) \
|
||||||
do { \
|
do { \
|
||||||
*(unsigned short *)(pbuf) |= cpu_to_le16( (amsdu & 1) << 7); \
|
*(__le16 *)(pbuf) |= cpu_to_le16( (amsdu & 1) << 7); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define GetAid(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 2)) & 0x3fff)
|
#define GetAid(pbuf) (cpu_to_le16(*(unsigned short *)((SIZE_PTR)(pbuf) + 2)) & 0x3fff)
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
|
|
||||||
#define MAX_IE_SZ 768
|
#define MAX_IE_SZ 768
|
||||||
|
|
||||||
|
|
||||||
#ifdef PLATFORM_LINUX
|
#ifdef PLATFORM_LINUX
|
||||||
|
|
||||||
#define NDIS_802_11_LENGTH_SSID 32
|
#define NDIS_802_11_LENGTH_SSID 32
|
||||||
|
@ -666,5 +665,8 @@ typedef struct _NDIS_802_11_CAPABILITY
|
||||||
} NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
|
} NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
u8 key_2char2num(u8 hch, u8 lch);
|
||||||
|
u8 key_char2num(u8 ch);
|
||||||
|
u8 str_2char2num(u8 hch, u8 lch);
|
||||||
|
|
||||||
#endif //#ifndef WLAN_BSSDEF_H_
|
#endif //#ifndef WLAN_BSSDEF_H_
|
||||||
|
|
|
@ -33,39 +33,11 @@ struct pkt_file {
|
||||||
SIZE_T buf_len;
|
SIZE_T buf_len;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef PLATFORM_WINDOWS
|
#ifdef CONFIG_80211N_HT
|
||||||
|
extern int rtw_ht_enable;
|
||||||
#ifdef PLATFORM_OS_XP
|
extern int rtw_cbw40_enable;
|
||||||
#ifdef CONFIG_USB_HCI
|
extern int rtw_ampdu_enable;//for enable tx_ampdu
|
||||||
#include <usb.h>
|
|
||||||
#include <usbdlib.h>
|
|
||||||
#include <usbioctl.h>
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_GSPI_HCI
|
|
||||||
#define NR_XMITFRAME 64
|
|
||||||
#else
|
|
||||||
#define NR_XMITFRAME 128
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ETH_ALEN 6
|
|
||||||
|
|
||||||
extern NDIS_STATUS rtw_xmit_entry(
|
|
||||||
_nic_hdl cnxt,
|
|
||||||
NDIS_PACKET *pkt,
|
|
||||||
UINT flags
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef PLATFORM_FREEBSD
|
|
||||||
#define NR_XMITFRAME 256
|
|
||||||
extern int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev);
|
|
||||||
extern void rtw_xmit_entry_wrap (struct ifnet * pifp);
|
|
||||||
#endif //PLATFORM_FREEBSD
|
|
||||||
|
|
||||||
#ifdef PLATFORM_LINUX
|
|
||||||
|
|
||||||
#define NR_XMITFRAME 256
|
#define NR_XMITFRAME 256
|
||||||
|
|
||||||
|
@ -77,8 +49,6 @@ struct xmit_buf;
|
||||||
|
|
||||||
extern int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev);
|
extern int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev);
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void rtw_os_xmit_schedule(_adapter *padapter);
|
void rtw_os_xmit_schedule(_adapter *padapter);
|
||||||
|
|
||||||
int rtw_os_xmit_resource_alloc(_adapter *padapter, struct xmit_buf *pxmitbuf,u32 alloc_sz);
|
int rtw_os_xmit_resource_alloc(_adapter *padapter, struct xmit_buf *pxmitbuf,u32 alloc_sz);
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <rtw_ioctl.h>
|
#include <rtw_ioctl.h>
|
||||||
#include <rtw_ioctl_set.h>
|
#include <rtw_ioctl_set.h>
|
||||||
#include <rtw_ioctl_query.h>
|
#include <rtw_ioctl_query.h>
|
||||||
|
#include <rtw_mp_ioctl.h>
|
||||||
|
|
||||||
//#ifdef CONFIG_MP_INCLUDED
|
//#ifdef CONFIG_MP_INCLUDED
|
||||||
#include <rtw_mp_ioctl.h>
|
#include <rtw_mp_ioctl.h>
|
||||||
|
@ -74,10 +75,6 @@
|
||||||
#define MAX_CUSTOM_LEN 64
|
#define MAX_CUSTOM_LEN 64
|
||||||
#define RATE_COUNT 4
|
#define RATE_COUNT 4
|
||||||
|
|
||||||
#ifdef CONFIG_GLOBAL_UI_PID
|
|
||||||
extern int ui_pid[3];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// combo scan
|
// combo scan
|
||||||
#define WEXT_CSCAN_AMOUNT 9
|
#define WEXT_CSCAN_AMOUNT 9
|
||||||
#define WEXT_CSCAN_BUF_LEN 360
|
#define WEXT_CSCAN_BUF_LEN 360
|
||||||
|
@ -91,10 +88,10 @@ extern int ui_pid[3];
|
||||||
#define WEXT_CSCAN_HOME_DWELL_SECTION 'H'
|
#define WEXT_CSCAN_HOME_DWELL_SECTION 'H'
|
||||||
#define WEXT_CSCAN_TYPE_SECTION 'T'
|
#define WEXT_CSCAN_TYPE_SECTION 'T'
|
||||||
|
|
||||||
|
static u8 convert_ip_addr(u8 hch, u8 mch, u8 lch)
|
||||||
extern u8 key_2char2num(u8 hch, u8 lch);
|
{
|
||||||
extern u8 str_2char2num(u8 hch, u8 lch);
|
return ((key_char2num(hch) * 100) + (key_char2num(mch) * 10 ) + key_char2num(lch));
|
||||||
extern u8 convert_ip_addr(u8 hch, u8 mch, u8 lch);
|
}
|
||||||
|
|
||||||
static u32 rtw_rates[] = {1000000,2000000,5500000,11000000,
|
static u32 rtw_rates[] = {1000000,2000000,5500000,11000000,
|
||||||
6000000,9000000,12000000,18000000,24000000,36000000,48000000,54000000};
|
6000000,9000000,12000000,18000000,24000000,36000000,48000000,54000000};
|
||||||
|
@ -336,7 +333,7 @@ static char *translate_scan(_adapter *padapter,
|
||||||
// If not, the driver should ignore this AP and go to the next AP.
|
// If not, the driver should ignore this AP and go to the next AP.
|
||||||
|
|
||||||
// Verifying the SSID
|
// Verifying the SSID
|
||||||
if (_rtw_memcmp(pnetwork->network.Ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN))
|
if (!memcmp(pnetwork->network.Ssid.Ssid, pwdinfo->p2p_wildcard_ssid, P2P_WILDCARD_SSID_LEN))
|
||||||
{
|
{
|
||||||
u32 p2pielen = 0;
|
u32 p2pielen = 0;
|
||||||
|
|
||||||
|
@ -981,7 +978,7 @@ _func_enter_;
|
||||||
if (param->u.crypt.set_tx == 1)
|
if (param->u.crypt.set_tx == 1)
|
||||||
{
|
{
|
||||||
list_for_each_entry(pWapiSta, &pWapiInfo->wapiSTAUsedList, list) {
|
list_for_each_entry(pWapiSta, &pWapiInfo->wapiSTAUsedList, list) {
|
||||||
if (_rtw_memcmp(pWapiSta->PeerMacAddr,param->sta_addr,6))
|
if (!memcmp(pWapiSta->PeerMacAddr,param->sta_addr,6))
|
||||||
{
|
{
|
||||||
_rtw_memcpy(pWapiSta->lastTxUnicastPN,WapiASUEPNInitialValueSrc,16);
|
_rtw_memcpy(pWapiSta->lastTxUnicastPN,WapiASUEPNInitialValueSrc,16);
|
||||||
|
|
||||||
|
@ -1010,7 +1007,7 @@ _func_enter_;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
list_for_each_entry(pWapiSta, &pWapiInfo->wapiSTAUsedList, list) {
|
list_for_each_entry(pWapiSta, &pWapiInfo->wapiSTAUsedList, list) {
|
||||||
if (_rtw_memcmp(pWapiSta->PeerMacAddr,get_bssid(pmlmepriv),6))
|
if (!memcmp(pWapiSta->PeerMacAddr,get_bssid(pmlmepriv),6))
|
||||||
{
|
{
|
||||||
pWapiSta->wapiMsk.bSet = true;
|
pWapiSta->wapiMsk.bSet = true;
|
||||||
_rtw_memcpy(pWapiSta->wapiMsk.dataKey,param->u.crypt.key,16);
|
_rtw_memcpy(pWapiSta->wapiMsk.dataKey,param->u.crypt.key,16);
|
||||||
|
@ -1160,7 +1157,7 @@ static int rtw_set_wpa_ie(_adapter *padapter, char *pie, unsigned short ielen)
|
||||||
{
|
{
|
||||||
eid = buf[cnt];
|
eid = buf[cnt];
|
||||||
|
|
||||||
if ((eid==_VENDOR_SPECIFIC_IE_)&&(_rtw_memcmp(&buf[cnt+2], wps_oui, 4)==true))
|
if ((eid==_VENDOR_SPECIFIC_IE_)&&(!memcmp(&buf[cnt+2], wps_oui, 4)==true))
|
||||||
{
|
{
|
||||||
DBG_88E("SET WPS_IE\n");
|
DBG_88E("SET WPS_IE\n");
|
||||||
|
|
||||||
|
@ -1446,7 +1443,7 @@ static int rtw_wx_set_pmkid(struct net_device *dev,
|
||||||
if (pPMK->cmd == IW_PMKSA_ADD)
|
if (pPMK->cmd == IW_PMKSA_ADD)
|
||||||
{
|
{
|
||||||
DBG_88E("[rtw_wx_set_pmkid] IW_PMKSA_ADD!\n");
|
DBG_88E("[rtw_wx_set_pmkid] IW_PMKSA_ADD!\n");
|
||||||
if (_rtw_memcmp(strIssueBssid, strZeroMacAddress, ETH_ALEN) == true)
|
if (!memcmp(strIssueBssid, strZeroMacAddress, ETH_ALEN) == true)
|
||||||
{
|
{
|
||||||
return(intReturn);
|
return(intReturn);
|
||||||
}
|
}
|
||||||
|
@ -1459,7 +1456,7 @@ static int rtw_wx_set_pmkid(struct net_device *dev,
|
||||||
//overwrite PMKID
|
//overwrite PMKID
|
||||||
for (j=0 ; j<NUM_PMKID_CACHE; j++)
|
for (j=0 ; j<NUM_PMKID_CACHE; j++)
|
||||||
{
|
{
|
||||||
if (_rtw_memcmp(psecuritypriv->PMKIDList[j].Bssid, strIssueBssid, ETH_ALEN) ==true)
|
if (!memcmp(psecuritypriv->PMKIDList[j].Bssid, strIssueBssid, ETH_ALEN) ==true)
|
||||||
{ // BSSID is matched, the same AP => rewrite with new PMKID.
|
{ // BSSID is matched, the same AP => rewrite with new PMKID.
|
||||||
|
|
||||||
DBG_88E("[rtw_wx_set_pmkid] BSSID exists in the PMKList.\n");
|
DBG_88E("[rtw_wx_set_pmkid] BSSID exists in the PMKList.\n");
|
||||||
|
@ -1495,7 +1492,7 @@ static int rtw_wx_set_pmkid(struct net_device *dev,
|
||||||
intReturn = true;
|
intReturn = true;
|
||||||
for (j=0 ; j<NUM_PMKID_CACHE; j++)
|
for (j=0 ; j<NUM_PMKID_CACHE; j++)
|
||||||
{
|
{
|
||||||
if (_rtw_memcmp(psecuritypriv->PMKIDList[j].Bssid, strIssueBssid, ETH_ALEN) ==true)
|
if (!memcmp(psecuritypriv->PMKIDList[j].Bssid, strIssueBssid, ETH_ALEN) ==true)
|
||||||
{ // BSSID is matched, the same AP => Remove this PMKID information and reset it.
|
{ // BSSID is matched, the same AP => Remove this PMKID information and reset it.
|
||||||
_rtw_memset(psecuritypriv->PMKIDList[ j ].Bssid, 0x00, ETH_ALEN);
|
_rtw_memset(psecuritypriv->PMKIDList[ j ].Bssid, 0x00, ETH_ALEN);
|
||||||
psecuritypriv->PMKIDList[ j ].bUsed = false;
|
psecuritypriv->PMKIDList[ j ].bUsed = false;
|
||||||
|
@ -1753,7 +1750,7 @@ static int rtw_wx_set_wap(struct net_device *dev,
|
||||||
|
|
||||||
src_bssid = temp->sa_data;
|
src_bssid = temp->sa_data;
|
||||||
|
|
||||||
if ((_rtw_memcmp(dst_bssid, src_bssid, ETH_ALEN)) == true)
|
if ((!memcmp(dst_bssid, src_bssid, ETH_ALEN)) == true)
|
||||||
{
|
{
|
||||||
if (!rtw_set_802_11_infrastructure_mode(padapter, pnetwork->network.InfrastructureMode))
|
if (!rtw_set_802_11_infrastructure_mode(padapter, pnetwork->network.InfrastructureMode))
|
||||||
{
|
{
|
||||||
|
@ -2035,7 +2032,7 @@ if (padapter->registrypriv.mp_mode == 1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( wrqu->data.length >= WEXT_CSCAN_HEADER_SIZE
|
if ( wrqu->data.length >= WEXT_CSCAN_HEADER_SIZE
|
||||||
&& _rtw_memcmp(extra, WEXT_CSCAN_HEADER, WEXT_CSCAN_HEADER_SIZE) == true
|
&& !memcmp(extra, WEXT_CSCAN_HEADER, WEXT_CSCAN_HEADER_SIZE) == true
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
int len = wrqu->data.length -WEXT_CSCAN_HEADER_SIZE;
|
int len = wrqu->data.length -WEXT_CSCAN_HEADER_SIZE;
|
||||||
|
@ -2407,7 +2404,7 @@ static int rtw_wx_set_essid(struct net_device *dev,
|
||||||
("rtw_wx_set_essid: dst_ssid=%s\n",
|
("rtw_wx_set_essid: dst_ssid=%s\n",
|
||||||
pnetwork->network.Ssid.Ssid));
|
pnetwork->network.Ssid.Ssid));
|
||||||
|
|
||||||
if ((_rtw_memcmp(dst_ssid, src_ssid, ndis_ssid.SsidLength) == true) &&
|
if ((!memcmp(dst_ssid, src_ssid, ndis_ssid.SsidLength) == true) &&
|
||||||
(pnetwork->network.Ssid.SsidLength==ndis_ssid.SsidLength))
|
(pnetwork->network.Ssid.SsidLength==ndis_ssid.SsidLength))
|
||||||
{
|
{
|
||||||
RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_,
|
RT_TRACE(_module_rtl871x_ioctl_os_c, _drv_info_,
|
||||||
|
@ -3406,7 +3403,6 @@ static int rtw_wx_set_channel_plan(struct net_device *dev,
|
||||||
_adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
|
_adapter *padapter = (_adapter *)rtw_netdev_priv(dev);
|
||||||
struct registry_priv *pregistrypriv = &padapter->registrypriv;
|
struct registry_priv *pregistrypriv = &padapter->registrypriv;
|
||||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||||
extern int rtw_channel_plan;
|
|
||||||
u8 channel_plan_req = (u8) (*((int *)wrqu));
|
u8 channel_plan_req = (u8) (*((int *)wrqu));
|
||||||
|
|
||||||
if (_SUCCESS == rtw_set_chplan_cmd(padapter, channel_plan_req, 1)) {
|
if (_SUCCESS == rtw_set_chplan_cmd(padapter, channel_plan_req, 1)) {
|
||||||
|
@ -3864,7 +3860,7 @@ static int rtw_get_ap_info(struct net_device *dev,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (_rtw_memcmp(bssid, pnetwork->network.MacAddress, ETH_ALEN) == true)//BSSID match, then check if supporting wpa/wpa2
|
if (!memcmp(bssid, pnetwork->network.MacAddress, ETH_ALEN) == true)//BSSID match, then check if supporting wpa/wpa2
|
||||||
{
|
{
|
||||||
DBG_88E("BSSID:%pM\n", (bssid));
|
DBG_88E("BSSID:%pM\n", (bssid));
|
||||||
|
|
||||||
|
@ -4530,7 +4526,7 @@ static int rtw_p2p_get_wps_configmethod(struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
||||||
if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
if (!memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
u8 *wpsie;
|
u8 *wpsie;
|
||||||
uint wpsie_len = 0;
|
uint wpsie_len = 0;
|
||||||
|
@ -4681,7 +4677,7 @@ static int rtw_p2p_get_go_device_address(struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
||||||
if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
if (!memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
// Commented by Albert 2011/05/18
|
// Commented by Albert 2011/05/18
|
||||||
// Match the device address located in the P2P IE
|
// Match the device address located in the P2P IE
|
||||||
|
@ -4787,18 +4783,18 @@ static int rtw_p2p_get_device_type(struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
||||||
if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
if (!memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
u8 *wpsie;
|
u8 *wpsie;
|
||||||
uint wpsie_len = 0;
|
uint wpsie_len = 0;
|
||||||
|
|
||||||
// The mac address is matched.
|
// The mac address is matched.
|
||||||
|
|
||||||
if ((wpsie=rtw_get_wps_ie(&pnetwork->network.IEs[ 12 ], pnetwork->network.IELength - 12, NULL, &wpsie_len)))
|
if ((wpsie=rtw_get_wps_ie(&pnetwork->network.IEs[ 12 ],
|
||||||
{
|
pnetwork->network.IELength - 12,
|
||||||
|
NULL, &wpsie_len))) {
|
||||||
rtw_get_wps_attr_content(wpsie, wpsie_len, WPS_ATTR_PRIMARY_DEV_TYPE, dev_type, &dev_type_len);
|
rtw_get_wps_attr_content(wpsie, wpsie_len, WPS_ATTR_PRIMARY_DEV_TYPE, dev_type, &dev_type_len);
|
||||||
if (dev_type_len)
|
if (dev_type_len) {
|
||||||
{
|
|
||||||
u16 type = 0;
|
u16 type = 0;
|
||||||
|
|
||||||
memcpy(&type, dev_type, 2);
|
memcpy(&type, dev_type, 2);
|
||||||
|
@ -4877,7 +4873,7 @@ static int rtw_p2p_get_device_name(struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
||||||
if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
if (!memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
u8 *wpsie;
|
u8 *wpsie;
|
||||||
uint wpsie_len = 0;
|
uint wpsie_len = 0;
|
||||||
|
@ -4965,7 +4961,7 @@ static int rtw_p2p_get_invitation_procedure(struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
||||||
if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
if (!memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
// Commented by Albert 20121226
|
// Commented by Albert 20121226
|
||||||
// Match the device address located in the P2P IE
|
// Match the device address located in the P2P IE
|
||||||
|
@ -5076,7 +5072,7 @@ static int rtw_p2p_connect(struct net_device *dev,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list);
|
||||||
if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
if (!memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -5241,7 +5237,7 @@ static int rtw_p2p_invite_req(struct net_device *dev,
|
||||||
if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen))
|
if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen))
|
||||||
{
|
{
|
||||||
// Handle the P2P Device ID attribute of Beacon first
|
// Handle the P2P Device ID attribute of Beacon first
|
||||||
if (_rtw_memcmp(attr_content, pinvite_req_info->peer_macaddr, ETH_ALEN))
|
if (!memcmp(attr_content, pinvite_req_info->peer_macaddr, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -5250,7 +5246,7 @@ static int rtw_p2p_invite_req(struct net_device *dev,
|
||||||
else if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen))
|
else if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen))
|
||||||
{
|
{
|
||||||
// Handle the P2P Device Info attribute of probe response
|
// Handle the P2P Device Info attribute of probe response
|
||||||
if (_rtw_memcmp(attr_content, pinvite_req_info->peer_macaddr, ETH_ALEN))
|
if (!memcmp(attr_content, pinvite_req_info->peer_macaddr, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -5507,7 +5503,7 @@ static int rtw_p2p_set_pc(struct net_device *dev,
|
||||||
{
|
{
|
||||||
// Handle the P2P Device ID attribute of Beacon first
|
// Handle the P2P Device ID attribute of Beacon first
|
||||||
printk("[%s] P2P_ATTR_DEVICE_ID\n", __func__);
|
printk("[%s] P2P_ATTR_DEVICE_ID\n", __func__);
|
||||||
if (_rtw_memcmp(attr_content, peerMAC, ETH_ALEN))
|
if (!memcmp(attr_content, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -5517,7 +5513,7 @@ static int rtw_p2p_set_pc(struct net_device *dev,
|
||||||
{
|
{
|
||||||
// Handle the P2P Device Info attribute of probe response
|
// Handle the P2P Device Info attribute of probe response
|
||||||
printk("[%s] P2P_ATTR_DEVICE_INFO\n", __func__);
|
printk("[%s] P2P_ATTR_DEVICE_INFO\n", __func__);
|
||||||
if (_rtw_memcmp(attr_content, peerMAC, ETH_ALEN))
|
if (!memcmp(attr_content, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -5754,19 +5750,19 @@ static int rtw_p2p_prov_disc(struct net_device *dev,
|
||||||
peerMAC[ jj ] = key_2char2num(extra[kk], extra[kk+ 1]);
|
peerMAC[ jj ] = key_2char2num(extra[kk], extra[kk+ 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_rtw_memcmp(&extra[ 18 ], "display", 7))
|
if (!memcmp(&extra[ 18 ], "display", 7))
|
||||||
{
|
{
|
||||||
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_DISPLYA;
|
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_DISPLYA;
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(&extra[ 18 ], "keypad", 7))
|
else if (!memcmp(&extra[ 18 ], "keypad", 7))
|
||||||
{
|
{
|
||||||
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_KEYPAD;
|
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_KEYPAD;
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(&extra[ 18 ], "pbc", 3))
|
else if (!memcmp(&extra[ 18 ], "pbc", 3))
|
||||||
{
|
{
|
||||||
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;
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(&extra[ 18 ], "label", 5))
|
else if (!memcmp(&extra[ 18 ], "label", 5))
|
||||||
{
|
{
|
||||||
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL;
|
pwdinfo->tx_prov_disc_info.wps_config_method_request = WPS_CM_LABEL;
|
||||||
}
|
}
|
||||||
|
@ -5805,7 +5801,7 @@ static int rtw_p2p_prov_disc(struct net_device *dev,
|
||||||
if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen))
|
if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_ID, attr_content, &attr_contentlen))
|
||||||
{
|
{
|
||||||
// Handle the P2P Device ID attribute of Beacon first
|
// Handle the P2P Device ID attribute of Beacon first
|
||||||
if (_rtw_memcmp(attr_content, peerMAC, ETH_ALEN))
|
if (!memcmp(attr_content, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -5814,7 +5810,7 @@ static int rtw_p2p_prov_disc(struct net_device *dev,
|
||||||
else if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen))
|
else if (rtw_get_p2p_attr_content(p2pie, p2pielen, P2P_ATTR_DEVICE_INFO, attr_content, &attr_contentlen))
|
||||||
{
|
{
|
||||||
// Handle the P2P Device Info attribute of probe response
|
// Handle the P2P Device Info attribute of probe response
|
||||||
if (_rtw_memcmp(attr_content, peerMAC, ETH_ALEN))
|
if (!memcmp(attr_content, peerMAC, ETH_ALEN))
|
||||||
{
|
{
|
||||||
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
uintPeerChannel = pnetwork->network.Configuration.DSConfig;
|
||||||
break;
|
break;
|
||||||
|
@ -6004,31 +6000,31 @@ static int rtw_p2p_set(struct net_device *dev,
|
||||||
|
|
||||||
DBG_88E("[%s] extra = %s\n", __func__, extra);
|
DBG_88E("[%s] extra = %s\n", __func__, extra);
|
||||||
|
|
||||||
if (_rtw_memcmp(extra, "enable=", 7))
|
if (!memcmp(extra, "enable=", 7))
|
||||||
{
|
{
|
||||||
rtw_wext_p2p_enable(dev, info, wrqu, &extra[7]);
|
rtw_wext_p2p_enable(dev, info, wrqu, &extra[7]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "setDN=", 6))
|
else if (!memcmp(extra, "setDN=", 6))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 6;
|
wrqu->data.length -= 6;
|
||||||
rtw_p2p_setDN(dev, info, wrqu, &extra[6]);
|
rtw_p2p_setDN(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "profilefound=", 13))
|
else if (!memcmp(extra, "profilefound=", 13))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 13;
|
wrqu->data.length -= 13;
|
||||||
rtw_p2p_profilefound(dev, info, wrqu, &extra[13]);
|
rtw_p2p_profilefound(dev, info, wrqu, &extra[13]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "prov_disc=", 10))
|
else if (!memcmp(extra, "prov_disc=", 10))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 10;
|
wrqu->data.length -= 10;
|
||||||
rtw_p2p_prov_disc(dev, info, wrqu, &extra[10]);
|
rtw_p2p_prov_disc(dev, info, wrqu, &extra[10]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "nego=", 5))
|
else if (!memcmp(extra, "nego=", 5))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 5;
|
wrqu->data.length -= 5;
|
||||||
rtw_p2p_connect(dev, info, wrqu, &extra[5]);
|
rtw_p2p_connect(dev, info, wrqu, &extra[5]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "intent=", 7))
|
else if (!memcmp(extra, "intent=", 7))
|
||||||
{
|
{
|
||||||
// Commented by Albert 2011/03/23
|
// Commented by Albert 2011/03/23
|
||||||
// The wrqu->data.length will include the null character
|
// The wrqu->data.length will include the null character
|
||||||
|
@ -6036,17 +6032,17 @@ static int rtw_p2p_set(struct net_device *dev,
|
||||||
wrqu->data.length -= 8;
|
wrqu->data.length -= 8;
|
||||||
rtw_p2p_set_intent(dev, info, wrqu, &extra[7]);
|
rtw_p2p_set_intent(dev, info, wrqu, &extra[7]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "ssid=", 5))
|
else if (!memcmp(extra, "ssid=", 5))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 5;
|
wrqu->data.length -= 5;
|
||||||
rtw_p2p_set_go_nego_ssid(dev, info, wrqu, &extra[5]);
|
rtw_p2p_set_go_nego_ssid(dev, info, wrqu, &extra[5]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "got_wpsinfo=", 12))
|
else if (!memcmp(extra, "got_wpsinfo=", 12))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 12;
|
wrqu->data.length -= 12;
|
||||||
rtw_p2p_got_wpsinfo(dev, info, wrqu, &extra[12]);
|
rtw_p2p_got_wpsinfo(dev, info, wrqu, &extra[12]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "listen_ch=", 10))
|
else if (!memcmp(extra, "listen_ch=", 10))
|
||||||
{
|
{
|
||||||
// Commented by Albert 2011/05/24
|
// Commented by Albert 2011/05/24
|
||||||
// The wrqu->data.length will include the null character
|
// The wrqu->data.length will include the null character
|
||||||
|
@ -6054,7 +6050,7 @@ static int rtw_p2p_set(struct net_device *dev,
|
||||||
wrqu->data.length -= 11;
|
wrqu->data.length -= 11;
|
||||||
rtw_p2p_set_listen_ch(dev, info, wrqu, &extra[10]);
|
rtw_p2p_set_listen_ch(dev, info, wrqu, &extra[10]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "op_ch=", 6))
|
else if (!memcmp(extra, "op_ch=", 6))
|
||||||
{
|
{
|
||||||
// Commented by Albert 2011/05/24
|
// Commented by Albert 2011/05/24
|
||||||
// The wrqu->data.length will include the null character
|
// The wrqu->data.length will include the null character
|
||||||
|
@ -6062,36 +6058,36 @@ static int rtw_p2p_set(struct net_device *dev,
|
||||||
wrqu->data.length -= 7;
|
wrqu->data.length -= 7;
|
||||||
rtw_p2p_set_op_ch(dev, info, wrqu, &extra[6]);
|
rtw_p2p_set_op_ch(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "invite=", 7))
|
else if (!memcmp(extra, "invite=", 7))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 8;
|
wrqu->data.length -= 8;
|
||||||
rtw_p2p_invite_req(dev, info, wrqu, &extra[7]);
|
rtw_p2p_invite_req(dev, info, wrqu, &extra[7]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "persistent=", 11))
|
else if (!memcmp(extra, "persistent=", 11))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 11;
|
wrqu->data.length -= 11;
|
||||||
rtw_p2p_set_persistent(dev, info, wrqu, &extra[11]);
|
rtw_p2p_set_persistent(dev, info, wrqu, &extra[11]);
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_WFD
|
#ifdef CONFIG_WFD
|
||||||
else if (_rtw_memcmp(extra, "sa=", 3))
|
else if (!memcmp(extra, "sa=", 3))
|
||||||
{
|
{
|
||||||
// sa: WFD Session Available information
|
// sa: WFD Session Available information
|
||||||
wrqu->data.length -= 3;
|
wrqu->data.length -= 3;
|
||||||
rtw_p2p_set_sa(dev, info, wrqu, &extra[3]);
|
rtw_p2p_set_sa(dev, info, wrqu, &extra[3]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "pc=", 3))
|
else if (!memcmp(extra, "pc=", 3))
|
||||||
{
|
{
|
||||||
// pc: WFD Preferred Connection
|
// pc: WFD Preferred Connection
|
||||||
wrqu->data.length -= 3;
|
wrqu->data.length -= 3;
|
||||||
rtw_p2p_set_pc(dev, info, wrqu, &extra[3]);
|
rtw_p2p_set_pc(dev, info, wrqu, &extra[3]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "wfd_type=", 9))
|
else if (!memcmp(extra, "wfd_type=", 9))
|
||||||
{
|
{
|
||||||
// Specify this device is Mircast source or sink
|
// Specify this device is Mircast source or sink
|
||||||
wrqu->data.length -= 9;
|
wrqu->data.length -= 9;
|
||||||
rtw_p2p_set_wfd_device_type(dev, info, wrqu, &extra[9]);
|
rtw_p2p_set_wfd_device_type(dev, info, wrqu, &extra[9]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "scan_type=", 10))
|
else if (!memcmp(extra, "scan_type=", 10))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 10;
|
wrqu->data.length -= 10;
|
||||||
rtw_p2p_set_scan_result_type(dev, info, wrqu, &extra[10]);
|
rtw_p2p_set_scan_result_type(dev, info, wrqu, &extra[10]);
|
||||||
|
@ -6120,55 +6116,33 @@ static int rtw_p2p_get(struct net_device *dev,
|
||||||
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
||||||
|
|
||||||
if (padapter->bShowGetP2PState)
|
if (padapter->bShowGetP2PState)
|
||||||
{
|
|
||||||
DBG_88E("[%s] extra = %s\n", __func__, (char*) wrqu->data.pointer);
|
DBG_88E("[%s] extra = %s\n", __func__, (char*) wrqu->data.pointer);
|
||||||
}
|
|
||||||
|
|
||||||
if (_rtw_memcmp(wrqu->data.pointer, "status", 6))
|
if (!memcmp(wrqu->data.pointer, "status", 6)) {
|
||||||
{
|
|
||||||
rtw_p2p_get_status(dev, info, wrqu, extra);
|
rtw_p2p_get_status(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "role", 4)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "role", 4))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_role(dev, info, wrqu, extra);
|
rtw_p2p_get_role(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "peer_ifa", 8)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "peer_ifa", 8))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_peer_ifaddr(dev, info, wrqu, extra);
|
rtw_p2p_get_peer_ifaddr(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "req_cm", 6)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "req_cm", 6))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_req_cm(dev, info, wrqu, extra);
|
rtw_p2p_get_req_cm(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "peer_deva", 9)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "peer_deva", 9))
|
|
||||||
{
|
|
||||||
// Get the P2P device address when receiving the provision discovery request frame.
|
// Get the P2P device address when receiving the provision discovery request frame.
|
||||||
rtw_p2p_get_peer_devaddr(dev, info, wrqu, extra);
|
rtw_p2p_get_peer_devaddr(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "group_id", 8)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "group_id", 8))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_groupid(dev, info, wrqu, extra);
|
rtw_p2p_get_groupid(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "peer_deva_inv", 9)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "peer_deva_inv", 9))
|
|
||||||
{
|
|
||||||
// Get the P2P device address when receiving the P2P Invitation request frame.
|
// Get the P2P device address when receiving the P2P Invitation request frame.
|
||||||
rtw_p2p_get_peer_devaddr_by_invitation(dev, info, wrqu, extra);
|
rtw_p2p_get_peer_devaddr_by_invitation(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "op_ch", 5)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "op_ch", 5))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_op_ch(dev, info, wrqu, extra);
|
rtw_p2p_get_op_ch(dev, info, wrqu, extra);
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_WFD
|
#ifdef CONFIG_WFD
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "peer_port", 9))
|
else if (!memcmp(wrqu->data.pointer, "peer_port", 9)) {
|
||||||
{
|
|
||||||
rtw_p2p_get_peer_wfd_port(dev, info, wrqu, extra);
|
rtw_p2p_get_peer_wfd_port(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "wfd_sa", 6)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "wfd_sa", 6))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_peer_wfd_session_available(dev, info, wrqu, extra);
|
rtw_p2p_get_peer_wfd_session_available(dev, info, wrqu, extra);
|
||||||
}
|
} else if (!memcmp(wrqu->data.pointer, "wfd_pc", 6)) {
|
||||||
else if (_rtw_memcmp(wrqu->data.pointer, "wfd_pc", 6))
|
|
||||||
{
|
|
||||||
rtw_p2p_get_peer_wfd_preferred_connection(dev, info, wrqu, extra);
|
rtw_p2p_get_peer_wfd_preferred_connection(dev, info, wrqu, extra);
|
||||||
}
|
}
|
||||||
#endif // CONFIG_WFD
|
#endif // CONFIG_WFD
|
||||||
|
@ -6176,7 +6150,6 @@ static int rtw_p2p_get(struct net_device *dev,
|
||||||
#endif //CONFIG_P2P
|
#endif //CONFIG_P2P
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtw_p2p_get2(struct net_device *dev,
|
static int rtw_p2p_get2(struct net_device *dev,
|
||||||
|
@ -6196,27 +6169,27 @@ static int rtw_p2p_get2(struct net_device *dev,
|
||||||
|
|
||||||
DBG_88E("[%s] extra = %s\n", __func__, (char *)wrqu->data.pointer);
|
DBG_88E("[%s] extra = %s\n", __func__, (char *)wrqu->data.pointer);
|
||||||
|
|
||||||
if (_rtw_memcmp(extra, "wpsCM=", 6))
|
if (!memcmp(extra, "wpsCM=", 6))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 6;
|
wrqu->data.length -= 6;
|
||||||
rtw_p2p_get_wps_configmethod(dev, info, wrqu, &extra[6]);
|
rtw_p2p_get_wps_configmethod(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "devN=", 5))
|
else if (!memcmp(extra, "devN=", 5))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 5;
|
wrqu->data.length -= 5;
|
||||||
rtw_p2p_get_device_name(dev, info, wrqu, &extra[5]);
|
rtw_p2p_get_device_name(dev, info, wrqu, &extra[5]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "dev_type=", 9))
|
else if (!memcmp(extra, "dev_type=", 9))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 9;
|
wrqu->data.length -= 9;
|
||||||
rtw_p2p_get_device_type(dev, info, wrqu, &extra[9]);
|
rtw_p2p_get_device_type(dev, info, wrqu, &extra[9]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "go_devadd=", 10))
|
else if (!memcmp(extra, "go_devadd=", 10))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 10;
|
wrqu->data.length -= 10;
|
||||||
rtw_p2p_get_go_device_address(dev, info, wrqu, &extra[10]);
|
rtw_p2p_get_go_device_address(dev, info, wrqu, &extra[10]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "InvProc=", 8))
|
else if (!memcmp(extra, "InvProc=", 8))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 8;
|
wrqu->data.length -= 8;
|
||||||
rtw_p2p_get_invitation_procedure(dev, info, wrqu, &extra[8]);
|
rtw_p2p_get_invitation_procedure(dev, info, wrqu, &extra[8]);
|
||||||
|
@ -6257,8 +6230,6 @@ static int rtw_cta_test_start(struct net_device *dev,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern int rtw_change_ifname(_adapter *padapter, const char *ifname);
|
|
||||||
static int rtw_rereg_nd_name(struct net_device *dev,
|
static int rtw_rereg_nd_name(struct net_device *dev,
|
||||||
struct iw_request_info *info,
|
struct iw_request_info *info,
|
||||||
union iwreq_data *wrqu, char *extra)
|
union iwreq_data *wrqu, char *extra)
|
||||||
|
@ -6298,7 +6269,7 @@ static int rtw_rereg_nd_name(struct net_device *dev,
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_rtw_memcmp(rereg_priv->old_ifname, "disable%d", 9) == true) {
|
if (!memcmp(rereg_priv->old_ifname, "disable%d", 9) == true) {
|
||||||
padapter->ledpriv.bRegUseLed= rereg_priv->old_bRegUseLed;
|
padapter->ledpriv.bRegUseLed= rereg_priv->old_bRegUseLed;
|
||||||
rtw_hal_sw_led_init(padapter);
|
rtw_hal_sw_led_init(padapter);
|
||||||
rtw_ips_mode_req(&padapter->pwrctrlpriv, rereg_priv->old_ips_mode);
|
rtw_ips_mode_req(&padapter->pwrctrlpriv, rereg_priv->old_ips_mode);
|
||||||
|
@ -6307,7 +6278,7 @@ static int rtw_rereg_nd_name(struct net_device *dev,
|
||||||
strncpy(rereg_priv->old_ifname, new_ifname, IFNAMSIZ);
|
strncpy(rereg_priv->old_ifname, new_ifname, IFNAMSIZ);
|
||||||
rereg_priv->old_ifname[IFNAMSIZ-1] = 0;
|
rereg_priv->old_ifname[IFNAMSIZ-1] = 0;
|
||||||
|
|
||||||
if (_rtw_memcmp(new_ifname, "disable%d", 9) == true) {
|
if (!memcmp(new_ifname, "disable%d", 9) == true) {
|
||||||
|
|
||||||
DBG_88E("%s disable\n", __func__);
|
DBG_88E("%s disable\n", __func__);
|
||||||
// free network queue for Android's timming issue
|
// free network queue for Android's timming issue
|
||||||
|
@ -8417,7 +8388,7 @@ static int rtw_wx_set_priv(struct net_device *dev,
|
||||||
u8 wps_oui[4]={0x0,0x50,0xf2,0x04};
|
u8 wps_oui[4]={0x0,0x50,0xf2,0x04};
|
||||||
|
|
||||||
if ((_VENDOR_SPECIFIC_IE_ == probereq_wpsie[0]) &&
|
if ((_VENDOR_SPECIFIC_IE_ == probereq_wpsie[0]) &&
|
||||||
(_rtw_memcmp(&probereq_wpsie[2], wps_oui, 4) ==true))
|
(!memcmp(&probereq_wpsie[2], wps_oui, 4) ==true))
|
||||||
{
|
{
|
||||||
cp_sz = probereq_wpsie_len>MAX_WPS_IE_LEN ? MAX_WPS_IE_LEN:probereq_wpsie_len;
|
cp_sz = probereq_wpsie_len>MAX_WPS_IE_LEN ? MAX_WPS_IE_LEN:probereq_wpsie_len;
|
||||||
|
|
||||||
|
@ -8449,7 +8420,7 @@ static int rtw_wx_set_priv(struct net_device *dev,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( len >= WEXT_CSCAN_HEADER_SIZE
|
if ( len >= WEXT_CSCAN_HEADER_SIZE
|
||||||
&& _rtw_memcmp(ext, WEXT_CSCAN_HEADER, WEXT_CSCAN_HEADER_SIZE) == true
|
&& !memcmp(ext, WEXT_CSCAN_HEADER, WEXT_CSCAN_HEADER_SIZE) == true
|
||||||
){
|
){
|
||||||
ret = rtw_wx_set_scan(dev, info, awrq, ext);
|
ret = rtw_wx_set_scan(dev, info, awrq, ext);
|
||||||
goto FREE_EXT;
|
goto FREE_EXT;
|
||||||
|
@ -8553,12 +8524,12 @@ static int rtw_pm_set(struct net_device *dev,
|
||||||
|
|
||||||
DBG_88E("[%s] extra = %s\n", __func__, extra);
|
DBG_88E("[%s] extra = %s\n", __func__, extra);
|
||||||
|
|
||||||
if (_rtw_memcmp(extra, "lps=", 4))
|
if (!memcmp(extra, "lps=", 4))
|
||||||
{
|
{
|
||||||
sscanf(extra+4, "%u", &mode);
|
sscanf(extra+4, "%u", &mode);
|
||||||
ret = rtw_pm_set_lps(padapter,mode);
|
ret = rtw_pm_set_lps(padapter,mode);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "ips=", 4))
|
else if (!memcmp(extra, "ips=", 4))
|
||||||
{
|
{
|
||||||
sscanf(extra+4, "%u", &mode);
|
sscanf(extra+4, "%u", &mode);
|
||||||
ret = rtw_pm_set_ips(padapter,mode);
|
ret = rtw_pm_set_ips(padapter,mode);
|
||||||
|
@ -11124,7 +11095,7 @@ static int rtw_tdls_enable(struct net_device *dev,
|
||||||
_exit_critical_bh(&pstapriv->sta_hash_lock, &irqL);
|
_exit_critical_bh(&pstapriv->sta_hash_lock, &irqL);
|
||||||
|
|
||||||
for (index=0; index< NUM_STA; index++) {
|
for (index=0; index< NUM_STA; index++) {
|
||||||
if (!_rtw_memcmp(tdls_sta[index], empty_hwaddr, ETH_ALEN)) {
|
if (!!memcmp(tdls_sta[index], empty_hwaddr, ETH_ALEN)) {
|
||||||
pr_info("issue tear down to %pM\n", tdls_sta[index]);
|
pr_info("issue tear down to %pM\n", tdls_sta[index]);
|
||||||
issue_tdls_teardown(padapter, tdls_sta[index]);
|
issue_tdls_teardown(padapter, tdls_sta[index]);
|
||||||
}
|
}
|
||||||
|
@ -11548,19 +11519,19 @@ static int rtw_tdls(struct net_device *dev,
|
||||||
|
|
||||||
DBG_88E("[%s] extra = %s\n", __func__, extra);
|
DBG_88E("[%s] extra = %s\n", __func__, extra);
|
||||||
// WFD Sigma will use the tdls enable command to let the driver know we want to test the tdls now!
|
// WFD Sigma will use the tdls enable command to let the driver know we want to test the tdls now!
|
||||||
if (_rtw_memcmp(extra, "wfdenable=", 10))
|
if (!memcmp(extra, "wfdenable=", 10))
|
||||||
{
|
{
|
||||||
wrqu->data.length -=10;
|
wrqu->data.length -=10;
|
||||||
rtw_wfd_tdls_enable(dev, info, wrqu, &extra[10]);
|
rtw_wfd_tdls_enable(dev, info, wrqu, &extra[10]);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "weaksec=", 8))
|
else if (!memcmp(extra, "weaksec=", 8))
|
||||||
{
|
{
|
||||||
wrqu->data.length -=8;
|
wrqu->data.length -=8;
|
||||||
rtw_tdls_weaksec(dev, info, wrqu, &extra[8]);
|
rtw_tdls_weaksec(dev, info, wrqu, &extra[8]);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "tdlsenable=", 11))
|
else if (!memcmp(extra, "tdlsenable=", 11))
|
||||||
{
|
{
|
||||||
wrqu->data.length -=11;
|
wrqu->data.length -=11;
|
||||||
rtw_tdls_enable(dev, info, wrqu, &extra[11]);
|
rtw_tdls_enable(dev, info, wrqu, &extra[11]);
|
||||||
|
@ -11573,48 +11544,48 @@ static int rtw_tdls(struct net_device *dev,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_rtw_memcmp(extra, "setup=", 6))
|
if (!memcmp(extra, "setup=", 6))
|
||||||
{
|
{
|
||||||
wrqu->data.length -=6;
|
wrqu->data.length -=6;
|
||||||
rtw_tdls_setup(dev, info, wrqu, &extra[6]);
|
rtw_tdls_setup(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "tear=", 5))
|
else if (!memcmp(extra, "tear=", 5))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 5;
|
wrqu->data.length -= 5;
|
||||||
rtw_tdls_teardown(dev, info, wrqu, &extra[5]);
|
rtw_tdls_teardown(dev, info, wrqu, &extra[5]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "dis=", 4))
|
else if (!memcmp(extra, "dis=", 4))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 4;
|
wrqu->data.length -= 4;
|
||||||
rtw_tdls_discovery(dev, info, wrqu, &extra[4]);
|
rtw_tdls_discovery(dev, info, wrqu, &extra[4]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "sw=", 3))
|
else if (!memcmp(extra, "sw=", 3))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 3;
|
wrqu->data.length -= 3;
|
||||||
rtw_tdls_ch_switch (dev, info, wrqu, &extra[3]);
|
rtw_tdls_ch_switch (dev, info, wrqu, &extra[3]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "swoff=", 6))
|
else if (!memcmp(extra, "swoff=", 6))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 6;
|
wrqu->data.length -= 6;
|
||||||
rtw_tdls_ch_switch_off(dev, info, wrqu, &extra[6]);
|
rtw_tdls_ch_switch_off(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "pson=", 5))
|
else if (!memcmp(extra, "pson=", 5))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 5;
|
wrqu->data.length -= 5;
|
||||||
rtw_tdls_pson(dev, info, wrqu, &extra[5]);
|
rtw_tdls_pson(dev, info, wrqu, &extra[5]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "psoff=", 6))
|
else if (!memcmp(extra, "psoff=", 6))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 6;
|
wrqu->data.length -= 6;
|
||||||
rtw_tdls_psoff(dev, info, wrqu, &extra[6]);
|
rtw_tdls_psoff(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
#ifdef CONFIG_WFD
|
#ifdef CONFIG_WFD
|
||||||
else if (_rtw_memcmp(extra, "setip=", 6))
|
else if (!memcmp(extra, "setip=", 6))
|
||||||
{
|
{
|
||||||
wrqu->data.length -= 6;
|
wrqu->data.length -= 6;
|
||||||
rtw_tdls_setip(dev, info, wrqu, &extra[6]);
|
rtw_tdls_setip(dev, info, wrqu, &extra[6]);
|
||||||
}
|
}
|
||||||
else if (_rtw_memcmp(extra, "tprobe=", 6))
|
else if (!memcmp(extra, "tprobe=", 6))
|
||||||
{
|
{
|
||||||
issue_tunneled_probe_req((_adapter *)rtw_netdev_priv(dev));
|
issue_tunneled_probe_req((_adapter *)rtw_netdev_priv(dev));
|
||||||
}
|
}
|
||||||
|
@ -11636,20 +11607,20 @@ static int rtw_tdls_get(struct net_device *dev,
|
||||||
|
|
||||||
DBG_88E("[%s] extra = %s\n", __func__, (char*) wrqu->data.pointer);
|
DBG_88E("[%s] extra = %s\n", __func__, (char*) wrqu->data.pointer);
|
||||||
|
|
||||||
if (_rtw_memcmp(wrqu->data.pointer, "ip", 2))
|
if (!memcmp(wrqu->data.pointer, "ip", 2))
|
||||||
{
|
{
|
||||||
rtw_tdls_getip(dev, info, wrqu, extra);
|
rtw_tdls_getip(dev, info, wrqu, extra);
|
||||||
}
|
}
|
||||||
if (_rtw_memcmp(wrqu->data.pointer, "port", 4))
|
if (!memcmp(wrqu->data.pointer, "port", 4))
|
||||||
{
|
{
|
||||||
rtw_tdls_getport(dev, info, wrqu, extra);
|
rtw_tdls_getport(dev, info, wrqu, extra);
|
||||||
}
|
}
|
||||||
//WFDTDLS, for sigma test
|
//WFDTDLS, for sigma test
|
||||||
if (_rtw_memcmp(wrqu->data.pointer, "dis", 3))
|
if (!memcmp(wrqu->data.pointer, "dis", 3))
|
||||||
{
|
{
|
||||||
rtw_tdls_dis_result(dev, info, wrqu, extra);
|
rtw_tdls_dis_result(dev, info, wrqu, extra);
|
||||||
}
|
}
|
||||||
if (_rtw_memcmp(wrqu->data.pointer, "status", 6))
|
if (!memcmp(wrqu->data.pointer, "status", 6))
|
||||||
{
|
{
|
||||||
rtw_wfd_tdls_status(dev, info, wrqu, extra);
|
rtw_wfd_tdls_status(dev, info, wrqu, extra);
|
||||||
}
|
}
|
||||||
|
@ -12043,8 +12014,8 @@ static u8 pktcmp(PADAPTER padapter, u8 *txbuf, u32 txsz, u8 *rxbuf, u32 rxsz)
|
||||||
__func__, txsz - TXDESC_SIZE, rxpktsize - fcssize);
|
__func__, txsz - TXDESC_SIZE, rxpktsize - fcssize);
|
||||||
ret = false;
|
ret = false;
|
||||||
} else {
|
} else {
|
||||||
ret = _rtw_memcmp(txbuf + TXDESC_SIZE,\
|
ret = !memcmp(txbuf + TXDESC_SIZE,
|
||||||
rxbuf + RXDESC_SIZE + drvinfosize,\
|
rxbuf + RXDESC_SIZE + drvinfosize,
|
||||||
txsz - TXDESC_SIZE);
|
txsz - TXDESC_SIZE);
|
||||||
if (ret == false) {
|
if (ret == false) {
|
||||||
DBG_88E("%s: ERROR! pkt content mismatch!\n", __func__);
|
DBG_88E("%s: ERROR! pkt content mismatch!\n", __func__);
|
||||||
|
|
|
@ -91,7 +91,7 @@ void _rtw_scan_timeout_handler (void *FunctionContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void _dynamic_check_timer_handlder (void *FunctionContext)
|
static void _dynamic_check_timer_handlder (void *FunctionContext)
|
||||||
{
|
{
|
||||||
_adapter *adapter = (_adapter *)FunctionContext;
|
_adapter *adapter = (_adapter *)FunctionContext;
|
||||||
|
|
||||||
|
@ -298,20 +298,20 @@ _func_exit_;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _survey_timer_hdl (void *FunctionContext)
|
static void _survey_timer_hdl (void *FunctionContext)
|
||||||
{
|
{
|
||||||
_adapter *padapter = (_adapter *)FunctionContext;
|
_adapter *padapter = (_adapter *)FunctionContext;
|
||||||
|
|
||||||
survey_timer_hdl(padapter);
|
survey_timer_hdl(padapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _link_timer_hdl (void *FunctionContext)
|
static void _link_timer_hdl (void *FunctionContext)
|
||||||
{
|
{
|
||||||
_adapter *padapter = (_adapter *)FunctionContext;
|
_adapter *padapter = (_adapter *)FunctionContext;
|
||||||
link_timer_hdl(padapter);
|
link_timer_hdl(padapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _addba_timer_hdl(void *FunctionContext)
|
static void _addba_timer_hdl(void *FunctionContext)
|
||||||
{
|
{
|
||||||
struct sta_info *psta = (struct sta_info *)FunctionContext;
|
struct sta_info *psta = (struct sta_info *)FunctionContext;
|
||||||
addba_timer_hdl(psta);
|
addba_timer_hdl(psta);
|
||||||
|
|
|
@ -53,82 +53,82 @@ MODULE_AUTHOR("Realtek Semiconductor Corp.");
|
||||||
MODULE_VERSION(DRIVERVERSION);
|
MODULE_VERSION(DRIVERVERSION);
|
||||||
|
|
||||||
/* module param defaults */
|
/* module param defaults */
|
||||||
int rtw_chip_version = 0x00;
|
static int rtw_chip_version = 0x00;
|
||||||
int rtw_rfintfs = HWPI;
|
static int rtw_rfintfs = HWPI;
|
||||||
int rtw_lbkmode = 0;//RTL8712_AIR_TRX;
|
static int rtw_lbkmode = 0;//RTL8712_AIR_TRX;
|
||||||
|
|
||||||
|
|
||||||
int rtw_network_mode = Ndis802_11IBSS;//Ndis802_11Infrastructure;//infra, ad-hoc, auto
|
static int rtw_network_mode = Ndis802_11IBSS;//Ndis802_11Infrastructure;//infra, ad-hoc, auto
|
||||||
int rtw_channel = 1;//ad-hoc support requirement
|
static int rtw_channel = 1;//ad-hoc support requirement
|
||||||
int rtw_wireless_mode = WIRELESS_11BG_24N;
|
static int rtw_wireless_mode = WIRELESS_11BG_24N;
|
||||||
int rtw_vrtl_carrier_sense = AUTO_VCS;
|
static int rtw_vrtl_carrier_sense = AUTO_VCS;
|
||||||
int rtw_vcs_type = RTS_CTS;//*
|
static int rtw_vcs_type = RTS_CTS;//*
|
||||||
int rtw_rts_thresh = 2347;//*
|
static int rtw_rts_thresh = 2347;//*
|
||||||
int rtw_frag_thresh = 2346;//*
|
static int rtw_frag_thresh = 2346;//*
|
||||||
int rtw_preamble = PREAMBLE_LONG;//long, short, auto
|
static int rtw_preamble = PREAMBLE_LONG;//long, short, auto
|
||||||
int rtw_scan_mode = 1;//active, passive
|
static int rtw_scan_mode = 1;//active, passive
|
||||||
int rtw_adhoc_tx_pwr = 1;
|
static int rtw_adhoc_tx_pwr = 1;
|
||||||
int rtw_soft_ap = 0;
|
static int rtw_soft_ap = 0;
|
||||||
#ifdef CONFIG_POWER_SAVING
|
#ifdef CONFIG_POWER_SAVING
|
||||||
int rtw_power_mgnt = 1;
|
static int rtw_power_mgnt = 1;
|
||||||
#ifdef CONFIG_IPS_LEVEL_2
|
#ifdef CONFIG_IPS_LEVEL_2
|
||||||
int rtw_ips_mode = IPS_LEVEL_2;
|
static int rtw_ips_mode = IPS_LEVEL_2;
|
||||||
#else
|
#else
|
||||||
int rtw_ips_mode = IPS_NORMAL;
|
static int rtw_ips_mode = IPS_NORMAL;
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
int rtw_power_mgnt = PS_MODE_ACTIVE;
|
static int rtw_power_mgnt = PS_MODE_ACTIVE;
|
||||||
int rtw_ips_mode = IPS_NONE;
|
static int rtw_ips_mode = IPS_NONE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int rtw_smart_ps = 2;
|
static int rtw_smart_ps = 2;
|
||||||
|
|
||||||
#ifdef CONFIG_TX_EARLY_MODE
|
#ifdef CONFIG_TX_EARLY_MODE
|
||||||
int rtw_early_mode=1;
|
static int rtw_early_mode=1;
|
||||||
#endif
|
#endif
|
||||||
module_param(rtw_ips_mode, int, 0644);
|
module_param(rtw_ips_mode, int, 0644);
|
||||||
MODULE_PARM_DESC(rtw_ips_mode,"The default IPS mode");
|
MODULE_PARM_DESC(rtw_ips_mode,"The default IPS mode");
|
||||||
|
|
||||||
static int rtw_debug = 1;
|
static int rtw_debug = 1;
|
||||||
int rtw_radio_enable = 1;
|
static int rtw_radio_enable = 1;
|
||||||
int rtw_long_retry_lmt = 7;
|
static int rtw_long_retry_lmt = 7;
|
||||||
int rtw_short_retry_lmt = 7;
|
static int rtw_short_retry_lmt = 7;
|
||||||
int rtw_busy_thresh = 40;
|
static int rtw_busy_thresh = 40;
|
||||||
int rtw_ack_policy = NORMAL_ACK;
|
static int rtw_ack_policy = NORMAL_ACK;
|
||||||
|
|
||||||
int rtw_mp_mode = 0;
|
static int rtw_mp_mode = 0;
|
||||||
|
|
||||||
int rtw_software_encrypt = 0;
|
static int rtw_software_encrypt = 0;
|
||||||
int rtw_software_decrypt = 0;
|
static int rtw_software_decrypt = 0;
|
||||||
|
|
||||||
int rtw_acm_method = 0;// 0:By SW 1:By HW.
|
static int rtw_acm_method = 0;// 0:By SW 1:By HW.
|
||||||
|
|
||||||
int rtw_wmm_enable = 1;// default is set to enable the wmm.
|
static int rtw_wmm_enable = 1;// default is set to enable the wmm.
|
||||||
int rtw_uapsd_enable = 0;
|
static int rtw_uapsd_enable = 0;
|
||||||
int rtw_uapsd_max_sp = NO_LIMIT;
|
static int rtw_uapsd_max_sp = NO_LIMIT;
|
||||||
int rtw_uapsd_acbk_en = 0;
|
static int rtw_uapsd_acbk_en = 0;
|
||||||
int rtw_uapsd_acbe_en = 0;
|
static int rtw_uapsd_acbe_en = 0;
|
||||||
int rtw_uapsd_acvi_en = 0;
|
static int rtw_uapsd_acvi_en = 0;
|
||||||
int rtw_uapsd_acvo_en = 0;
|
static int rtw_uapsd_acvo_en = 0;
|
||||||
|
|
||||||
#ifdef CONFIG_80211N_HT
|
#ifdef CONFIG_80211N_HT
|
||||||
int rtw_ht_enable = 1;
|
int rtw_ht_enable = 1;
|
||||||
int rtw_cbw40_enable = 3; // 0 :diable, bit(0): enable 2.4g, bit(1): enable 5g
|
int rtw_cbw40_enable = 3; // 0 :diable, bit(0): enable 2.4g, bit(1): enable 5g
|
||||||
int rtw_ampdu_enable = 1;//for enable tx_ampdu
|
int rtw_ampdu_enable = 1;//for enable tx_ampdu
|
||||||
int rtw_rx_stbc = 1;// 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ
|
static int rtw_rx_stbc = 1;// 0: disable, bit(0):enable 2.4g, bit(1):enable 5g, default is set to enable 2.4GHZ for IOT issue with bufflao's AP at 5GHZ
|
||||||
int rtw_ampdu_amsdu = 0;// 0: disabled, 1:enabled, 2:auto
|
static int rtw_ampdu_amsdu = 0;// 0: disabled, 1:enabled, 2:auto
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int rtw_lowrate_two_xmit = 1;//Use 2 path Tx to transmit MCS0~7 and legacy mode
|
static int rtw_lowrate_two_xmit = 1;//Use 2 path Tx to transmit MCS0~7 and legacy mode
|
||||||
|
|
||||||
int rtw_rf_config = RF_819X_MAX_TYPE; //auto
|
static int rtw_rf_config = RF_819X_MAX_TYPE; //auto
|
||||||
int rtw_low_power = 0;
|
static int rtw_low_power = 0;
|
||||||
#ifdef CONFIG_WIFI_TEST
|
#ifdef CONFIG_WIFI_TEST
|
||||||
int rtw_wifi_spec = 1;//for wifi test
|
static int rtw_wifi_spec = 1;//for wifi test
|
||||||
#else
|
#else
|
||||||
int rtw_wifi_spec = 0;
|
static int rtw_wifi_spec = 0;
|
||||||
#endif
|
#endif
|
||||||
int rtw_channel_plan = RT_CHANNEL_DOMAIN_MAX;
|
static int rtw_channel_plan = RT_CHANNEL_DOMAIN_MAX;
|
||||||
|
|
||||||
#ifdef CONFIG_BT_COEXIST
|
#ifdef CONFIG_BT_COEXIST
|
||||||
int rtw_btcoex_enable = 1;
|
int rtw_btcoex_enable = 1;
|
||||||
|
@ -137,29 +137,29 @@ int rtw_bt_sco = 3;// 0:Idle, 1:None-SCO, 2:SCO, 3:From Counter, 4.Busy, 5.Other
|
||||||
int rtw_bt_ampdu =1 ;// 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU.
|
int rtw_bt_ampdu =1 ;// 0:Disable BT control A-MPDU, 1:Enable BT control A-MPDU.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int rtw_AcceptAddbaReq = true;// 0:Reject AP's Add BA req, 1:Accept AP's Add BA req.
|
static int rtw_AcceptAddbaReq = true;// 0:Reject AP's Add BA req, 1:Accept AP's Add BA req.
|
||||||
|
|
||||||
int rtw_antdiv_cfg = 2; // 0:OFF , 1:ON, 2:decide by Efuse config
|
static int rtw_antdiv_cfg = 2; // 0:OFF , 1:ON, 2:decide by Efuse config
|
||||||
int rtw_antdiv_type = 0 ; //0:decide by efuse 1: for 88EE, 1Tx and 1RxCG are diversity.(2 Ant with SPDT), 2: for 88EE, 1Tx and 2Rx are diversity.( 2 Ant, Tx and RxCG are both on aux port, RxCS is on main port ), 3: for 88EE, 1Tx and 1RxCG are fixed.(1Ant, Tx and RxCG are both on aux port)
|
static int rtw_antdiv_type = 0 ; //0:decide by efuse 1: for 88EE, 1Tx and 1RxCG are diversity.(2 Ant with SPDT), 2: for 88EE, 1Tx and 2Rx are diversity.( 2 Ant, Tx and RxCG are both on aux port, RxCS is on main port ), 3: for 88EE, 1Tx and 1RxCG are fixed.(1Ant, Tx and RxCG are both on aux port)
|
||||||
|
|
||||||
#ifdef CONFIG_USB_AUTOSUSPEND
|
#ifdef CONFIG_USB_AUTOSUSPEND
|
||||||
int rtw_enusbss = 1;//0:disable,1:enable
|
static int rtw_enusbss = 1;//0:disable,1:enable
|
||||||
#else
|
#else
|
||||||
int rtw_enusbss = 0;//0:disable,1:enable
|
static int rtw_enusbss = 0;//0:disable,1:enable
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int rtw_hwpdn_mode=2;//0:disable,1:enable,2: by EFUSE config
|
static int rtw_hwpdn_mode=2;//0:disable,1:enable,2: by EFUSE config
|
||||||
|
|
||||||
#ifdef CONFIG_HW_PWRP_DETECTION
|
#ifdef CONFIG_HW_PWRP_DETECTION
|
||||||
int rtw_hwpwrp_detect = 1;
|
static int rtw_hwpwrp_detect = 1;
|
||||||
#else
|
#else
|
||||||
int rtw_hwpwrp_detect = 0; //HW power ping detect 0:disable , 1:enable
|
static int rtw_hwpwrp_detect = 0; //HW power ping detect 0:disable , 1:enable
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USB_HCI
|
#ifdef CONFIG_USB_HCI
|
||||||
int rtw_hw_wps_pbc = 1;
|
static int rtw_hw_wps_pbc = 1;
|
||||||
#else
|
#else
|
||||||
int rtw_hw_wps_pbc = 0;
|
static int rtw_hw_wps_pbc = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
#ifdef CONFIG_TX_MCAST2UNI
|
||||||
|
@ -171,7 +171,7 @@ int rtw_dmsp = 0;
|
||||||
#endif // CONFIG_DUALMAC_CONCURRENT
|
#endif // CONFIG_DUALMAC_CONCURRENT
|
||||||
|
|
||||||
#ifdef CONFIG_80211D
|
#ifdef CONFIG_80211D
|
||||||
int rtw_80211d = 0;
|
static int rtw_80211d = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV
|
#ifdef CONFIG_SPECIAL_SETTING_FOR_FUNAI_TV
|
||||||
|
@ -181,15 +181,15 @@ module_param(rtw_force_ant, int, 0644);
|
||||||
module_param(rtw_force_igi, int, 0644);
|
module_param(rtw_force_igi, int, 0644);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char* ifname = "wlan%d";
|
static char* ifname = "wlan%d";
|
||||||
module_param(ifname, charp, 0644);
|
module_param(ifname, charp, 0644);
|
||||||
MODULE_PARM_DESC(ifname, "The default name to allocate for first interface");
|
MODULE_PARM_DESC(ifname, "The default name to allocate for first interface");
|
||||||
|
|
||||||
char* if2name = "wlan%d";
|
static char* if2name = "wlan%d";
|
||||||
module_param(if2name, charp, 0644);
|
module_param(if2name, charp, 0644);
|
||||||
MODULE_PARM_DESC(if2name, "The default name to allocate for second interface");
|
MODULE_PARM_DESC(if2name, "The default name to allocate for second interface");
|
||||||
|
|
||||||
char* rtw_initmac = 0; // temp mac address if users want to use instead of the mac address in Efuse
|
char* rtw_initmac = NULL; // temp mac address if users want to use instead of the mac address in Efuse
|
||||||
|
|
||||||
module_param(rtw_initmac, charp, 0644);
|
module_param(rtw_initmac, charp, 0644);
|
||||||
module_param(rtw_channel_plan, int, 0644);
|
module_param(rtw_channel_plan, int, 0644);
|
||||||
|
@ -233,13 +233,13 @@ MODULE_PARM_DESC(rtw_adaptor_info_caching_file_path, "The path of adapter info c
|
||||||
#endif //CONFIG_ADAPTOR_INFO_CACHING_FILE
|
#endif //CONFIG_ADAPTOR_INFO_CACHING_FILE
|
||||||
|
|
||||||
#ifdef CONFIG_LAYER2_ROAMING
|
#ifdef CONFIG_LAYER2_ROAMING
|
||||||
uint rtw_max_roaming_times=2;
|
static uint rtw_max_roaming_times=2;
|
||||||
module_param(rtw_max_roaming_times, uint, 0644);
|
module_param(rtw_max_roaming_times, uint, 0644);
|
||||||
MODULE_PARM_DESC(rtw_max_roaming_times,"The max roaming times to try");
|
MODULE_PARM_DESC(rtw_max_roaming_times,"The max roaming times to try");
|
||||||
#endif //CONFIG_LAYER2_ROAMING
|
#endif //CONFIG_LAYER2_ROAMING
|
||||||
|
|
||||||
#ifdef CONFIG_IOL
|
#ifdef CONFIG_IOL
|
||||||
int rtw_fw_iol=1;// 0:Disable, 1:enable, 2:by usb speed
|
static int rtw_fw_iol=1;// 0:Disable, 1:enable, 2:by usb speed
|
||||||
module_param(rtw_fw_iol, int, 0644);
|
module_param(rtw_fw_iol, int, 0644);
|
||||||
MODULE_PARM_DESC(rtw_fw_iol,"FW IOL");
|
MODULE_PARM_DESC(rtw_fw_iol,"FW IOL");
|
||||||
#endif //CONFIG_IOL
|
#endif //CONFIG_IOL
|
||||||
|
@ -268,13 +268,12 @@ module_param(rtw_btcoex_enable, int, 0644);
|
||||||
MODULE_PARM_DESC(rtw_btcoex_enable, "Enable BT co-existence mechanism");
|
MODULE_PARM_DESC(rtw_btcoex_enable, "Enable BT co-existence mechanism");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint rtw_notch_filter = RTW_NOTCH_FILTER;
|
static uint rtw_notch_filter = RTW_NOTCH_FILTER;
|
||||||
module_param(rtw_notch_filter, uint, 0644);
|
module_param(rtw_notch_filter, uint, 0644);
|
||||||
MODULE_PARM_DESC(rtw_notch_filter, "0:Disable, 1:Enable, 2:Enable only for P2P");
|
MODULE_PARM_DESC(rtw_notch_filter, "0:Disable, 1:Enable, 2:Enable only for P2P");
|
||||||
module_param_named(debug, rtw_debug, int, 0444);
|
module_param_named(debug, rtw_debug, int, 0444);
|
||||||
MODULE_PARM_DESC(debug, "Set debug level (1-9) (default 1)");
|
MODULE_PARM_DESC(debug, "Set debug level (1-9) (default 1)");
|
||||||
|
|
||||||
static uint loadparam(PADAPTER padapter, _nic_hdl pnetdev);
|
|
||||||
int _netdev_open(struct net_device *pnetdev);
|
int _netdev_open(struct net_device *pnetdev);
|
||||||
int netdev_open (struct net_device *pnetdev);
|
int netdev_open (struct net_device *pnetdev);
|
||||||
static int netdev_close (struct net_device *pnetdev);
|
static int netdev_close (struct net_device *pnetdev);
|
||||||
|
@ -674,7 +673,7 @@ void rtw_proc_remove_one(struct net_device *dev)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint loadparam( _adapter *padapter, _nic_hdl pnetdev)
|
static uint loadparam( _adapter *padapter, _nic_hdl pnetdev)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint status = _SUCCESS;
|
uint status = _SUCCESS;
|
||||||
|
@ -824,7 +823,7 @@ static struct net_device_stats *rtw_net_get_stats(struct net_device *pnetdev)
|
||||||
static const u16 rtw_1d_to_queue[8] = { 2, 3, 3, 2, 1, 1, 0, 0 };
|
static const u16 rtw_1d_to_queue[8] = { 2, 3, 3, 2, 1, 1, 0, 0 };
|
||||||
|
|
||||||
/* Given a data frame determine the 802.1p/1d tag to use. */
|
/* Given a data frame determine the 802.1p/1d tag to use. */
|
||||||
unsigned int rtw_classify8021d(struct sk_buff *skb)
|
static unsigned int rtw_classify8021d(struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
unsigned int dscp;
|
unsigned int dscp;
|
||||||
|
|
||||||
|
@ -864,7 +863,7 @@ u16 rtw_recv_select_queue(struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct iphdr *piphdr;
|
struct iphdr *piphdr;
|
||||||
unsigned int dscp;
|
unsigned int dscp;
|
||||||
u16 eth_type;
|
__be16 eth_type;
|
||||||
u32 priority;
|
u32 priority;
|
||||||
u8 *pdata = skb->data;
|
u8 *pdata = skb->data;
|
||||||
|
|
||||||
|
@ -1072,7 +1071,7 @@ void rtw_stop_drv_threads (_adapter *padapter)
|
||||||
rtw_hal_stop_thread(padapter);
|
rtw_hal_stop_thread(padapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 rtw_init_default_value(_adapter *padapter)
|
static u8 rtw_init_default_value(_adapter *padapter)
|
||||||
{
|
{
|
||||||
u8 ret = _SUCCESS;
|
u8 ret = _SUCCESS;
|
||||||
struct registry_priv* pregistrypriv = &padapter->registrypriv;
|
struct registry_priv* pregistrypriv = &padapter->registrypriv;
|
||||||
|
@ -1903,7 +1902,7 @@ int netdev_open(struct net_device *pnetdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IPS
|
#ifdef CONFIG_IPS
|
||||||
int ips_netdrv_open(_adapter *padapter)
|
static int ips_netdrv_open(_adapter *padapter)
|
||||||
{
|
{
|
||||||
int status = _SUCCESS;
|
int status = _SUCCESS;
|
||||||
padapter->net_closed = false;
|
padapter->net_closed = false;
|
||||||
|
@ -1971,7 +1970,7 @@ void rtw_ips_dev_unload(_adapter *padapter)
|
||||||
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
struct xmit_priv *pxmitpriv = &(padapter->xmitpriv);
|
||||||
DBG_88E("====> %s...\n",__func__);
|
DBG_88E("====> %s...\n",__func__);
|
||||||
|
|
||||||
rtw_hal_set_hwreg(padapter, HW_VAR_FIFO_CLEARN_UP, 0);
|
rtw_hal_set_hwreg(padapter, HW_VAR_FIFO_CLEARN_UP, NULL);
|
||||||
|
|
||||||
if (padapter->intf_stop)
|
if (padapter->intf_stop)
|
||||||
padapter->intf_stop(padapter);
|
padapter->intf_stop(padapter);
|
||||||
|
|
|
@ -26,14 +26,13 @@
|
||||||
#include <drv_types.h>
|
#include <drv_types.h>
|
||||||
#include <recv_osdep.h>
|
#include <recv_osdep.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
#include <rtw_ioctl_set.h>
|
||||||
#ifdef RTK_DMP_PLATFORM
|
#ifdef RTK_DMP_PLATFORM
|
||||||
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12))
|
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,12))
|
||||||
#include <linux/pageremap.h>
|
#include <linux/pageremap.h>
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define RT_TAG '1178'
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Translate the OS dependent @param error_code to OS independent RTW_STATUS_CODE
|
* Translate the OS dependent @param error_code to OS independent RTW_STATUS_CODE
|
||||||
* @return: one of RTW_STATUS_CODE
|
* @return: one of RTW_STATUS_CODE
|
||||||
|
@ -242,26 +241,6 @@ void _rtw_spinlock_free(_lock *plock)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void _rtw_spinlock(_lock *plock)
|
|
||||||
{
|
|
||||||
spin_lock(plock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _rtw_spinunlock(_lock *plock)
|
|
||||||
{
|
|
||||||
spin_unlock(plock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _rtw_spinlock_ex(_lock *plock)
|
|
||||||
{
|
|
||||||
spin_lock(plock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _rtw_spinunlock_ex(_lock *plock)
|
|
||||||
{
|
|
||||||
spin_unlock(plock);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _rtw_init_queue(_queue *pqueue)
|
void _rtw_init_queue(_queue *pqueue)
|
||||||
{
|
{
|
||||||
_rtw_init_listhead(&(pqueue->queue));
|
_rtw_init_listhead(&(pqueue->queue));
|
||||||
|
@ -359,7 +338,7 @@ void rtw_udelay_os(int us)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void rtw_yield_os()
|
void rtw_yield_os(void)
|
||||||
{
|
{
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
|
@ -374,7 +353,7 @@ static android_suspend_lock_t rtw_suspend_lock ={
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline void rtw_suspend_lock_init()
|
inline void rtw_suspend_lock_init(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_WAKELOCK
|
#ifdef CONFIG_WAKELOCK
|
||||||
wake_lock_init(&rtw_suspend_lock, WAKE_LOCK_SUSPEND, RTW_SUSPEND_LOCK_NAME);
|
wake_lock_init(&rtw_suspend_lock, WAKE_LOCK_SUSPEND, RTW_SUSPEND_LOCK_NAME);
|
||||||
|
@ -383,7 +362,7 @@ inline void rtw_suspend_lock_init()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void rtw_suspend_lock_uninit()
|
inline void rtw_suspend_lock_uninit(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_WAKELOCK
|
#ifdef CONFIG_WAKELOCK
|
||||||
wake_lock_destroy(&rtw_suspend_lock);
|
wake_lock_destroy(&rtw_suspend_lock);
|
||||||
|
@ -392,7 +371,7 @@ inline void rtw_suspend_lock_uninit()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void rtw_lock_suspend()
|
inline void rtw_lock_suspend(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_WAKELOCK
|
#ifdef CONFIG_WAKELOCK
|
||||||
wake_lock(&rtw_suspend_lock);
|
wake_lock(&rtw_suspend_lock);
|
||||||
|
@ -405,7 +384,7 @@ inline void rtw_lock_suspend()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void rtw_unlock_suspend()
|
inline void rtw_unlock_suspend(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_WAKELOCK
|
#ifdef CONFIG_WAKELOCK
|
||||||
wake_unlock(&rtw_suspend_lock);
|
wake_unlock(&rtw_suspend_lock);
|
||||||
|
|
|
@ -28,10 +28,7 @@
|
||||||
|
|
||||||
#include <osdep_intf.h>
|
#include <osdep_intf.h>
|
||||||
#include <ethernet.h>
|
#include <ethernet.h>
|
||||||
|
|
||||||
#ifdef CONFIG_USB_HCI
|
|
||||||
#include <usb_ops.h>
|
#include <usb_ops.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
//init os related resource in struct recv_priv
|
//init os related resource in struct recv_priv
|
||||||
int rtw_os_recv_resource_init(struct recv_priv *precvpriv, _adapter *padapter)
|
int rtw_os_recv_resource_init(struct recv_priv *precvpriv, _adapter *padapter)
|
||||||
|
@ -353,7 +350,6 @@ _func_enter_;
|
||||||
|
|
||||||
if ( br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true) )
|
if ( br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE|WIFI_ADHOC_STATE) == true) )
|
||||||
{
|
{
|
||||||
int nat25_handle_frame(_adapter *priv, struct sk_buff *skb);
|
|
||||||
if (nat25_handle_frame(padapter, skb) == -1) {
|
if (nat25_handle_frame(padapter, skb) == -1) {
|
||||||
//priv->ext_stats.rx_data_drops++;
|
//priv->ext_stats.rx_data_drops++;
|
||||||
//DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n");
|
//DEBUG_ERR("RX DROP: nat25_handle_frame fail!\n");
|
||||||
|
|
|
@ -97,13 +97,7 @@ typedef struct cmd_tlv {
|
||||||
#endif /* PNO_SUPPORT */
|
#endif /* PNO_SUPPORT */
|
||||||
|
|
||||||
typedef struct android_wifi_priv_cmd {
|
typedef struct android_wifi_priv_cmd {
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
|
||||||
compat_uptr_t buf;
|
|
||||||
#else
|
|
||||||
char *buf;
|
char *buf;
|
||||||
#endif
|
|
||||||
|
|
||||||
int used_len;
|
int used_len;
|
||||||
int total_len;
|
int total_len;
|
||||||
} android_wifi_priv_cmd;
|
} android_wifi_priv_cmd;
|
||||||
|
@ -359,7 +353,7 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd)
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
if (copy_from_user(command, (void *)priv_cmd.buf, priv_cmd.total_len)) {
|
if (copy_from_user(command, (char __user *)priv_cmd.buf, priv_cmd.total_len)) {
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
@ -563,7 +557,7 @@ response:
|
||||||
bytes_written++;
|
bytes_written++;
|
||||||
}
|
}
|
||||||
priv_cmd.used_len = bytes_written;
|
priv_cmd.used_len = bytes_written;
|
||||||
if (copy_to_user((void *)priv_cmd.buf, command, bytes_written)) {
|
if (copy_to_user((char __user *)priv_cmd.buf, command, bytes_written)) {
|
||||||
DBG_88E("%s: failed to copy data to user buffer\n", __func__);
|
DBG_88E("%s: failed to copy data to user buffer\n", __func__);
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,11 +27,13 @@
|
||||||
#include <hal_intf.h>
|
#include <hal_intf.h>
|
||||||
#include <rtw_version.h>
|
#include <rtw_version.h>
|
||||||
#include <linux/usb.h>
|
#include <linux/usb.h>
|
||||||
|
#include <osdep_intf.h>
|
||||||
|
|
||||||
#include <usb_vendor_req.h>
|
#include <usb_vendor_req.h>
|
||||||
#include <usb_ops.h>
|
#include <usb_ops.h>
|
||||||
#include <usb_osintf.h>
|
#include <usb_osintf.h>
|
||||||
#include <usb_hal.h>
|
#include <usb_hal.h>
|
||||||
|
#include <rtw_ioctl.h>
|
||||||
#ifdef CONFIG_PLATFORM_RTK_DMP
|
#ifdef CONFIG_PLATFORM_RTK_DMP
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -42,18 +44,11 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_80211N_HT
|
|
||||||
extern int rtw_ht_enable;
|
|
||||||
extern int rtw_cbw40_enable;
|
|
||||||
extern int rtw_ampdu_enable;//for enable tx_ampdu
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_GLOBAL_UI_PID
|
#ifdef CONFIG_GLOBAL_UI_PID
|
||||||
int ui_pid[3] = {0, 0, 0};
|
int ui_pid[3] = {0, 0, 0};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
extern int pm_netdev_open(struct net_device *pnetdev,u8 bnormal);
|
|
||||||
static int rtw_suspend(struct usb_interface *intf, pm_message_t message);
|
static int rtw_suspend(struct usb_interface *intf, pm_message_t message);
|
||||||
static int rtw_resume(struct usb_interface *intf);
|
static int rtw_resume(struct usb_interface *intf);
|
||||||
int rtw_resume_process(_adapter *padapter);
|
int rtw_resume_process(_adapter *padapter);
|
||||||
|
@ -277,7 +272,7 @@ static struct usb_device_id rtw_usb_id_tbl[] ={
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(usb, rtw_usb_id_tbl);
|
MODULE_DEVICE_TABLE(usb, rtw_usb_id_tbl);
|
||||||
|
|
||||||
int const rtw_usb_id_len = sizeof(rtw_usb_id_tbl) / sizeof(struct usb_device_id);
|
//int const rtw_usb_id_len = sizeof(rtw_usb_id_tbl) / sizeof(struct usb_device_id);
|
||||||
|
|
||||||
static struct specific_device_id specific_device_id_tbl[] = {
|
static struct specific_device_id specific_device_id_tbl[] = {
|
||||||
{.idVendor=USB_VENDER_ID_REALTEK, .idProduct=0x8177, .flags=SPEC_DEV_ID_DISABLE_HT},//8188cu 1*1 dongole, (b/g mode only)
|
{.idVendor=USB_VENDER_ID_REALTEK, .idProduct=0x8177, .flags=SPEC_DEV_ID_DISABLE_HT},//8188cu 1*1 dongole, (b/g mode only)
|
||||||
|
@ -382,7 +377,7 @@ static struct usb_device_id rtl8188e_usb_id_tbl[] ={
|
||||||
{} /* Terminating entry */
|
{} /* Terminating entry */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rtw_usb_drv rtl8188e_usb_drv = {
|
static struct rtw_usb_drv rtl8188e_usb_drv = {
|
||||||
.usbdrv.name = (char*)"rtl8188eu",
|
.usbdrv.name = (char*)"rtl8188eu",
|
||||||
.usbdrv.probe = rtw_drv_init,
|
.usbdrv.probe = rtw_drv_init,
|
||||||
.usbdrv.disconnect = rtw_dev_remove,
|
.usbdrv.disconnect = rtw_dev_remove,
|
||||||
|
@ -1298,9 +1293,9 @@ static int usb_wifi_host = 2;
|
||||||
* We accept the new device by returning 0.
|
* We accept the new device by returning 0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
_adapter *rtw_sw_export = NULL;
|
static _adapter *rtw_sw_export = NULL;
|
||||||
|
|
||||||
_adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj,
|
static _adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj,
|
||||||
struct usb_interface *pusb_intf, const struct usb_device_id *pdid)
|
struct usb_interface *pusb_intf, const struct usb_device_id *pdid)
|
||||||
{
|
{
|
||||||
_adapter *padapter = NULL;
|
_adapter *padapter = NULL;
|
||||||
|
@ -1468,7 +1463,7 @@ _adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj,
|
||||||
|
|
||||||
free_hal_data:
|
free_hal_data:
|
||||||
if (status != _SUCCESS && padapter->HalData)
|
if (status != _SUCCESS && padapter->HalData)
|
||||||
rtw_mfree(padapter->HalData, sizeof(*(padapter->HalData)));
|
kfree(padapter->HalData);
|
||||||
free_wdev:
|
free_wdev:
|
||||||
if (status != _SUCCESS) {
|
if (status != _SUCCESS) {
|
||||||
#ifdef CONFIG_IOCTL_CFG80211
|
#ifdef CONFIG_IOCTL_CFG80211
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <xmit_osdep.h>
|
#include <xmit_osdep.h>
|
||||||
#include <osdep_intf.h>
|
#include <osdep_intf.h>
|
||||||
#include <circ_buf.h>
|
#include <circ_buf.h>
|
||||||
|
#include <usb_osintf.h>
|
||||||
|
|
||||||
uint rtw_remainder_len(struct pkt_file *pfile)
|
uint rtw_remainder_len(struct pkt_file *pfile)
|
||||||
{
|
{
|
||||||
|
@ -311,7 +312,7 @@ static void rtw_check_xmit_resource(_adapter *padapter, _pkt *pkt)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
#ifdef CONFIG_TX_MCAST2UNI
|
||||||
int rtw_mlcst2unicst(_adapter *padapter, struct sk_buff *skb)
|
static int rtw_mlcst2unicst(_adapter *padapter, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct sta_priv *pstapriv = &padapter->stapriv;
|
struct sta_priv *pstapriv = &padapter->stapriv;
|
||||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||||
|
@ -370,7 +371,6 @@ int rtw_xmit_entry(_pkt *pkt, _nic_hdl pnetdev)
|
||||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||||
#ifdef CONFIG_TX_MCAST2UNI
|
#ifdef CONFIG_TX_MCAST2UNI
|
||||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||||
extern int rtw_mc2u_disable;
|
|
||||||
#endif // CONFIG_TX_MCAST2UNI
|
#endif // CONFIG_TX_MCAST2UNI
|
||||||
s32 res = 0;
|
s32 res = 0;
|
||||||
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(2,6,35))
|
||||||
|
|
Loading…
Reference in a new issue