mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-08 14:33:05 +00:00
rtl8188eu: Remove all trailing spaces from code
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
8db176767f
commit
bb33327257
190 changed files with 53569 additions and 53764 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,97 +1,96 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "Hal8188EPwrSeq.h"
|
||||
#include <rtl8188e_hal.h>
|
||||
|
||||
/*
|
||||
drivers should parse below arrays and do the corresponding actions
|
||||
*/
|
||||
//3 Power on Array
|
||||
WLAN_PWR_CFG rtl8188E_power_on_flow[RTL8188E_TRANS_CARDEMU_TO_ACT_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_CARDEMU_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3Radio off Array
|
||||
WLAN_PWR_CFG rtl8188E_radio_off_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3Card Disable Array
|
||||
WLAN_PWR_CFG rtl8188E_card_disable_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_CARDDIS
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Card Enable Array
|
||||
WLAN_PWR_CFG rtl8188E_card_enable_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_CARDDIS_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3Suspend Array
|
||||
WLAN_PWR_CFG rtl8188E_suspend_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_SUS
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Resume Array
|
||||
WLAN_PWR_CFG rtl8188E_resume_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_SUS_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
|
||||
//3HWPDN Array
|
||||
WLAN_PWR_CFG rtl8188E_hwpdn_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_PDN
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Enter LPS
|
||||
WLAN_PWR_CFG rtl8188E_enter_lps_flow[RTL8188E_TRANS_ACT_TO_LPS_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
//FW behavior
|
||||
RTL8188E_TRANS_ACT_TO_LPS
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Leave LPS
|
||||
WLAN_PWR_CFG rtl8188E_leave_lps_flow[RTL8188E_TRANS_LPS_TO_ACT_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
//FW behavior
|
||||
RTL8188E_TRANS_LPS_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#include "Hal8188EPwrSeq.h"
|
||||
#include <rtl8188e_hal.h>
|
||||
|
||||
/*
|
||||
drivers should parse below arrays and do the corresponding actions
|
||||
*/
|
||||
//3 Power on Array
|
||||
WLAN_PWR_CFG rtl8188E_power_on_flow[RTL8188E_TRANS_CARDEMU_TO_ACT_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_CARDEMU_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3Radio off Array
|
||||
WLAN_PWR_CFG rtl8188E_radio_off_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3Card Disable Array
|
||||
WLAN_PWR_CFG rtl8188E_card_disable_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_CARDDIS
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Card Enable Array
|
||||
WLAN_PWR_CFG rtl8188E_card_enable_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_CARDDIS_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3Suspend Array
|
||||
WLAN_PWR_CFG rtl8188E_suspend_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_SUS
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Resume Array
|
||||
WLAN_PWR_CFG rtl8188E_resume_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_SUS_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_SUS_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
|
||||
//3HWPDN Array
|
||||
WLAN_PWR_CFG rtl8188E_hwpdn_flow[RTL8188E_TRANS_ACT_TO_CARDEMU_STEPS+RTL8188E_TRANS_CARDEMU_TO_PDN_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
RTL8188E_TRANS_ACT_TO_CARDEMU
|
||||
RTL8188E_TRANS_CARDEMU_TO_PDN
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Enter LPS
|
||||
WLAN_PWR_CFG rtl8188E_enter_lps_flow[RTL8188E_TRANS_ACT_TO_LPS_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
//FW behavior
|
||||
RTL8188E_TRANS_ACT_TO_LPS
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
||||
//3 Leave LPS
|
||||
WLAN_PWR_CFG rtl8188E_leave_lps_flow[RTL8188E_TRANS_LPS_TO_ACT_STEPS+RTL8188E_TRANS_END_STEPS]=
|
||||
{
|
||||
//FW behavior
|
||||
RTL8188E_TRANS_LPS_TO_ACT
|
||||
RTL8188E_TRANS_END
|
||||
};
|
||||
|
|
|
@ -3,19 +3,19 @@ Copyright (c) Realtek Semiconductor Corp. All rights reserved.
|
|||
|
||||
Module Name:
|
||||
RateAdaptive.c
|
||||
|
||||
|
||||
Abstract:
|
||||
Implement Rate Adaptive functions for common operations.
|
||||
|
||||
|
||||
Major Change History:
|
||||
When Who What
|
||||
---------- --------------- -------------------------------
|
||||
2011-08-12 Page Create.
|
||||
---------- --------------- -------------------------------
|
||||
2011-08-12 Page Create.
|
||||
|
||||
--*/
|
||||
#include "odm_precomp.h"
|
||||
|
||||
//#if( DM_ODM_SUPPORT_TYPE == ODM_MP)
|
||||
//#if( DM_ODM_SUPPORT_TYPE == ODM_MP)
|
||||
//#include "Mp_Precomp.h"
|
||||
//#endif
|
||||
|
||||
|
@ -64,26 +64,26 @@ static u1Byte PT_PENALTY[RETRYSIZE+1]={34,31,30,24,0,32};
|
|||
#if 0
|
||||
static u1Byte RETRY_PENALTY_IDX[2][RATESIZE] = {{4,4,4,5,4,4,5,7,7,7,8,0x0a, // SS>TH
|
||||
4,4,4,4,6,0x0a,0x0b,0x0d,
|
||||
5,5,7,7,8,0x0b,0x0d,0x0f}, // 0329 R01
|
||||
5,5,7,7,8,0x0b,0x0d,0x0f}, // 0329 R01
|
||||
{4,4,4,5,7,7,9,9,0x0c,0x0e,0x10,0x12, // SS<TH
|
||||
4,4,5,5,6,0x0a,0x11,0x13,
|
||||
9,9,9,9,0x0c,0x0e,0x11,0x13}};
|
||||
9,9,9,9,0x0c,0x0e,0x11,0x13}};
|
||||
#endif
|
||||
|
||||
|
||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
static u1Byte RETRY_PENALTY_IDX[2][RATESIZE] = {{4,4,4,5,4,4,5,7,7,7,8,0x0a, // SS>TH
|
||||
#if (DM_ODM_SUPPORT_TYPE & ODM_AP)
|
||||
static u1Byte RETRY_PENALTY_IDX[2][RATESIZE] = {{4,4,4,5,4,4,5,7,7,7,8,0x0a, // SS>TH
|
||||
4,4,4,4,6,0x0a,0x0b,0x0d,
|
||||
5,5,7,7,8,0x0b,0x0d,0x0f}, // 0329 R01
|
||||
5,5,7,7,8,0x0b,0x0d,0x0f}, // 0329 R01
|
||||
{0x0a,0x0a,0x0a,0x0a,0x0c,0x0c,0x0e,0x10,0x11,0x12,0x12,0x13, // SS<TH
|
||||
0x0e,0x0f,0x10,0x10,0x11,0x14,0x14,0x15,
|
||||
9,9,9,9,0x0c,0x0e,0x11,0x13}};
|
||||
9,9,9,9,0x0c,0x0e,0x11,0x13}};
|
||||
|
||||
static u1Byte RETRY_PENALTY_UP_IDX[RATESIZE] = {0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14, // SS>TH
|
||||
static u1Byte RETRY_PENALTY_UP_IDX[RATESIZE] = {0x10,0x10,0x10,0x10,0x11,0x11,0x12,0x12,0x12,0x13,0x13,0x14, // SS>TH
|
||||
0x13,0x13,0x14,0x14,0x15,0x15,0x15,0x15,
|
||||
0x11,0x11,0x12,0x13,0x13,0x13,0x14,0x15};
|
||||
0x11,0x11,0x12,0x13,0x13,0x13,0x14,0x15};
|
||||
|
||||
static u1Byte RSSI_THRESHOLD[RATESIZE] = {0,0,0,0,
|
||||
static u1Byte RSSI_THRESHOLD[RATESIZE] = {0,0,0,0,
|
||||
0,0,0,0,0,0x24,0x26,0x2a,
|
||||
0x13,0x15,0x17,0x18,0x1a,0x1c,0x1d,0x1f,
|
||||
0,0,0,0x1f,0x23,0x28,0x2a,0x2c};
|
||||
|
@ -92,21 +92,21 @@ static u1Byte RSSI_THRESHOLD[RATESIZE] = {0,0,0,0,
|
|||
// wilson modify
|
||||
static u1Byte RETRY_PENALTY_IDX[2][RATESIZE] = {{4,4,4,5,4,4,5,7,7,7,8,0x0a, // SS>TH
|
||||
4,4,4,4,6,0x0a,0x0b,0x0d,
|
||||
5,5,7,7,8,0x0b,0x0d,0x0f}, // 0329 R01
|
||||
5,5,7,7,8,0x0b,0x0d,0x0f}, // 0329 R01
|
||||
{0x0a,0x0a,0x0b,0x0c,0x0a,0x0a,0x0b,0x0c,0x0d,0x10,0x13,0x14, // SS<TH
|
||||
0x0b,0x0c,0x0d,0x0e,0x0f,0x11,0x13,0x15,
|
||||
9,9,9,9,0x0c,0x0e,0x11,0x13}};
|
||||
9,9,9,9,0x0c,0x0e,0x11,0x13}};
|
||||
|
||||
static u1Byte RETRY_PENALTY_UP_IDX[RATESIZE] = {0x0c,0x0d,0x0d,0x0f,0x0d,0x0e,0x0f,0x0f,0x10,0x12,0x13,0x14, // SS>TH
|
||||
0x0f,0x10,0x10,0x12,0x12,0x13,0x14,0x15,
|
||||
0x11,0x11,0x12,0x13,0x13,0x13,0x14,0x15};
|
||||
0x11,0x11,0x12,0x13,0x13,0x13,0x14,0x15};
|
||||
|
||||
static u1Byte RSSI_THRESHOLD[RATESIZE] = {0,0,0,0,
|
||||
0,0,0,0,0,0x24,0x26,0x2a,
|
||||
0x18,0x1a,0x1d,0x1f,0x21,0x27,0x29,0x2a,
|
||||
0,0,0,0x1f,0x23,0x28,0x2a,0x2c};
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*static u1Byte RSSI_THRESHOLD[RATESIZE] = {0,0,0,0,
|
||||
0,0,0,0,0,0x24,0x26,0x2a,
|
||||
|
@ -116,7 +116,7 @@ static u2Byte N_THRESHOLD_HIGH[RATESIZE] = {4,4,8,16,
|
|||
24,36,48,72,96,144,192,216,
|
||||
60,80,100,160,240,400,560,640,
|
||||
300,320,480,720,1000,1200,1600,2000};
|
||||
static u2Byte N_THRESHOLD_LOW[RATESIZE] = {2,2,4,8,
|
||||
static u2Byte N_THRESHOLD_LOW[RATESIZE] = {2,2,4,8,
|
||||
12,18,24,36,48,72,96,108,
|
||||
30,40,50,80,120,200,280,320,
|
||||
150,160,240,360,500,600,800,1000};
|
||||
|
@ -128,7 +128,7 @@ static u1Byte TRYING_NECESSARY[RATESIZE] = {2,2,2,2,
|
|||
static u1Byte POOL_RETRY_TH[RATESIZE] = {30,30,30,30,
|
||||
30,30,25,25,20,15,15,10,
|
||||
30,25,25,20,15,10,10,10,
|
||||
30,25,25,20,15,10,10,10};
|
||||
30,25,25,20,15,10,10,10};
|
||||
#endif
|
||||
|
||||
static u1Byte DROPING_NECESSARY[RATESIZE] = {1,1,1,1,
|
||||
|
@ -153,18 +153,18 @@ static u4Byte INIT_RATE_FALLBACK_TABLE[16]={0x0f8ff015, // 0: 40M BGN mode
|
|||
0, // 13:
|
||||
0, // 14:
|
||||
0, // 15:
|
||||
|
||||
|
||||
};
|
||||
static u1Byte PendingForRateUpFail[5]={2,10,24,40,60};
|
||||
static u2Byte DynamicTxRPTTiming[6]={0x186a, 0x30d4, 0x493e, 0x61a8, 0x7a12 ,0x927c}; // 200ms-1200ms
|
||||
|
||||
// End Rate adaptive parameters
|
||||
|
||||
static void
|
||||
static void
|
||||
odm_SetTxRPTTiming_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN PODM_RA_INFO_T pRaInfo,
|
||||
IN u1Byte extend
|
||||
IN PODM_RA_INFO_T pRaInfo,
|
||||
IN u1Byte extend
|
||||
)
|
||||
{
|
||||
u1Byte idx = 0;
|
||||
|
@ -185,14 +185,14 @@ odm_SetTxRPTTiming_8188E(
|
|||
idx-=1;
|
||||
}
|
||||
pRaInfo->RptTime=DynamicTxRPTTiming[idx];
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD, ("pRaInfo->RptTime=0x%x\n", pRaInfo->RptTime));
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
odm_RateDown_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
)
|
||||
{
|
||||
u1Byte RateID, LowestRate, HighestRate;
|
||||
|
@ -208,8 +208,8 @@ odm_RateDown_8188E(
|
|||
LowestRate = pRaInfo->LowestRate;
|
||||
HighestRate = pRaInfo->HighestRate;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" RateID=%d LowestRate=%d HighestRate=%d RateSGI=%d\n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" RateID=%d LowestRate=%d HighestRate=%d RateSGI=%d\n",
|
||||
RateID, LowestRate, HighestRate, pRaInfo->RateSGI));
|
||||
if (RateID > HighestRate)
|
||||
{
|
||||
|
@ -229,7 +229,7 @@ odm_RateDown_8188E(
|
|||
{
|
||||
RateID=i;
|
||||
goto RateDownFinish;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ RateDownFinish:
|
|||
|
||||
if(pRaInfo->RAPendingCounter>=4)
|
||||
pRaInfo->RAPendingCounter=4;
|
||||
|
||||
|
||||
pRaInfo->DecisionRate=RateID;
|
||||
odm_SetTxRPTTiming_8188E(pDM_Odm,pRaInfo, 2);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD, ("Rate down, RPT Timing default\n"));
|
||||
|
@ -262,10 +262,10 @@ RateDownFinish:
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
odm_RateUp_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
)
|
||||
{
|
||||
u1Byte RateID, HighestRate;
|
||||
|
@ -279,20 +279,20 @@ odm_RateUp_8188E(
|
|||
}
|
||||
RateID = pRaInfo->PreRate;
|
||||
HighestRate = pRaInfo->HighestRate;
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" RateID=%d HighestRate=%d\n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" RateID=%d HighestRate=%d\n",
|
||||
RateID, HighestRate));
|
||||
if (pRaInfo->RAWaitingCounter==1){
|
||||
pRaInfo->RAWaitingCounter=0;
|
||||
pRaInfo->RAPendingCounter=0;
|
||||
}
|
||||
}
|
||||
else if (pRaInfo->RAWaitingCounter>1){
|
||||
pRaInfo->PreRssiStaRA=pRaInfo->RssiStaRA;
|
||||
goto RateUpfinish;
|
||||
}
|
||||
odm_SetTxRPTTiming_8188E(pDM_Odm,pRaInfo, 0);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD, ("odm_RateUp_8188E():Decrease RPT Timing\n"));
|
||||
|
||||
|
||||
if (RateID < HighestRate)
|
||||
{
|
||||
for (i=RateID+1; i<=HighestRate; i++)
|
||||
|
@ -314,7 +314,7 @@ odm_RateUp_8188E(
|
|||
else //if((sta_info_ra->Decision_rate) > (sta_info_ra->Highest_rate))
|
||||
{
|
||||
RateID = HighestRate;
|
||||
|
||||
|
||||
}
|
||||
RateUpfinish:
|
||||
//if(pRaInfo->RAWaitingCounter==10)
|
||||
|
@ -337,18 +337,18 @@ static void odm_ResetRaCounter_8188E( IN PODM_RA_INFO_T pRaInfo){
|
|||
pRaInfo->NscDown=(N_THRESHOLD_HIGH[RateID]+N_THRESHOLD_LOW[RateID])>>1;
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
odm_RateDecision_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
)
|
||||
{
|
||||
u1Byte RateID = 0, RtyPtID = 0, PenaltyID1 = 0, PenaltyID2 = 0;
|
||||
//u4Byte pool_retry;
|
||||
static u1Byte DynamicTxRPTTimingCounter=0;
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE, ("=====>odm_RateDecision_8188E() \n"));
|
||||
|
||||
|
||||
if (pRaInfo->Active && (pRaInfo->TOTAL > 0)) // STA used and data packet exits
|
||||
{
|
||||
if ( (pRaInfo->RssiStaRA<(pRaInfo->PreRssiStaRA-3))|| (pRaInfo->RssiStaRA>(pRaInfo->PreRssiStaRA+3))){
|
||||
|
@ -358,15 +358,15 @@ odm_RateDecision_8188E(
|
|||
// Start RA decision
|
||||
if (pRaInfo->PreRate > pRaInfo->HighestRate)
|
||||
RateID = pRaInfo->HighestRate;
|
||||
else
|
||||
else
|
||||
RateID = pRaInfo->PreRate;
|
||||
if (pRaInfo->RssiStaRA > RSSI_THRESHOLD[RateID])
|
||||
RtyPtID=0;
|
||||
else
|
||||
RtyPtID=1;
|
||||
PenaltyID1 = RETRY_PENALTY_IDX[RtyPtID][RateID]; //TODO by page
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" NscDown init is %d\n", pRaInfo->NscDown));
|
||||
//pool_retry=pRaInfo->RTY[2]+pRaInfo->RTY[3]+pRaInfo->RTY[4]+pRaInfo->DROP;
|
||||
pRaInfo->NscDown += pRaInfo->RTY[0] * RETRY_PENALTY[PenaltyID1][0];
|
||||
|
@ -374,33 +374,33 @@ odm_RateDecision_8188E(
|
|||
pRaInfo->NscDown += pRaInfo->RTY[2] * RETRY_PENALTY[PenaltyID1][2];
|
||||
pRaInfo->NscDown += pRaInfo->RTY[3] * RETRY_PENALTY[PenaltyID1][3];
|
||||
pRaInfo->NscDown += pRaInfo->RTY[4] * RETRY_PENALTY[PenaltyID1][4];
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" NscDown is %d, total*penalty[5] is %d\n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" NscDown is %d, total*penalty[5] is %d\n",
|
||||
pRaInfo->NscDown, (pRaInfo->TOTAL * RETRY_PENALTY[PenaltyID1][5])));
|
||||
if (pRaInfo->NscDown > (pRaInfo->TOTAL * RETRY_PENALTY[PenaltyID1][5]))
|
||||
pRaInfo->NscDown -= pRaInfo->TOTAL * RETRY_PENALTY[PenaltyID1][5];
|
||||
else
|
||||
pRaInfo->NscDown=0;
|
||||
|
||||
|
||||
// rate up
|
||||
PenaltyID2 = RETRY_PENALTY_UP_IDX[RateID];
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" NscUp init is %d\n", pRaInfo->NscUp));
|
||||
pRaInfo->NscUp += pRaInfo->RTY[0] * RETRY_PENALTY[PenaltyID2][0];
|
||||
pRaInfo->NscUp += pRaInfo->RTY[1] * RETRY_PENALTY[PenaltyID2][1];
|
||||
pRaInfo->NscUp += pRaInfo->RTY[2] * RETRY_PENALTY[PenaltyID2][2];
|
||||
pRaInfo->NscUp += pRaInfo->RTY[3] * RETRY_PENALTY[PenaltyID2][3];
|
||||
pRaInfo->NscUp += pRaInfo->RTY[4] * RETRY_PENALTY[PenaltyID2][4];
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
("NscUp is %d, total*up[5] is %d\n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
("NscUp is %d, total*up[5] is %d\n",
|
||||
pRaInfo->NscUp, (pRaInfo->TOTAL * RETRY_PENALTY[PenaltyID2][5])));
|
||||
if (pRaInfo->NscUp > (pRaInfo->TOTAL * RETRY_PENALTY[PenaltyID2][5]))
|
||||
pRaInfo->NscUp -= pRaInfo->TOTAL * RETRY_PENALTY[PenaltyID2][5];
|
||||
else
|
||||
pRaInfo->NscUp = 0;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE|ODM_COMP_INIT, ODM_DBG_LOUD,
|
||||
(" RssiStaRa= %d RtyPtID=%d PenaltyID1=0x%x PenaltyID2=0x%x RateID=%d NscDown=%d NscUp=%d SGI=%d\n",
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE|ODM_COMP_INIT, ODM_DBG_LOUD,
|
||||
(" RssiStaRa= %d RtyPtID=%d PenaltyID1=0x%x PenaltyID2=0x%x RateID=%d NscDown=%d NscUp=%d SGI=%d\n",
|
||||
pRaInfo->RssiStaRA,RtyPtID, PenaltyID1,PenaltyID2, RateID, pRaInfo->NscDown, pRaInfo->NscUp, pRaInfo->RateSGI));
|
||||
if ((pRaInfo->NscDown < N_THRESHOLD_LOW[RateID]) ||(pRaInfo->DROP>DROPING_NECESSARY[RateID]))
|
||||
odm_RateDown_8188E(pDM_Odm,pRaInfo);
|
||||
|
@ -410,8 +410,8 @@ odm_RateDecision_8188E(
|
|||
|
||||
if(pRaInfo->DecisionRate > pRaInfo->HighestRate)
|
||||
pRaInfo->DecisionRate = pRaInfo->HighestRate;
|
||||
|
||||
if ((pRaInfo->DecisionRate)==(pRaInfo->PreRate))
|
||||
|
||||
if ((pRaInfo->DecisionRate)==(pRaInfo->PreRate))
|
||||
DynamicTxRPTTimingCounter+=1;
|
||||
else
|
||||
DynamicTxRPTTimingCounter=0;
|
||||
|
@ -429,10 +429,10 @@ odm_RateDecision_8188E(
|
|||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE, ("<=====odm_RateDecision_8188E() \n"));
|
||||
}
|
||||
|
||||
static int
|
||||
static int
|
||||
odm_ARFBRefresh_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
)
|
||||
{ // Wilson 2011/10/26
|
||||
u4Byte MaskFromReg;
|
||||
|
@ -460,7 +460,7 @@ odm_ARFBRefresh_8188E(
|
|||
case RATR_INX_WIRELESS_B:
|
||||
pRaInfo->RAUseRate=(pRaInfo->RateMask)&0x0000000d;
|
||||
break;
|
||||
case 12:
|
||||
case 12:
|
||||
MaskFromReg=ODM_Read4Byte(pDM_Odm, REG_ARFR0);
|
||||
pRaInfo->RAUseRate=(pRaInfo->RateMask)&MaskFromReg;
|
||||
break;
|
||||
|
@ -476,7 +476,7 @@ odm_ARFBRefresh_8188E(
|
|||
MaskFromReg=ODM_Read4Byte(pDM_Odm, REG_ARFR3);
|
||||
pRaInfo->RAUseRate=(pRaInfo->RateMask)&MaskFromReg;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
pRaInfo->RAUseRate=(pRaInfo->RateMask);
|
||||
break;
|
||||
|
@ -508,7 +508,7 @@ odm_ARFBRefresh_8188E(
|
|||
else{
|
||||
pRaInfo->LowestRate=0;
|
||||
}
|
||||
|
||||
|
||||
#if POWER_TRAINING_ACTIVE == 1
|
||||
if (pRaInfo->HighestRate >0x13)
|
||||
pRaInfo->PTModeSS=3;
|
||||
|
@ -518,41 +518,41 @@ odm_ARFBRefresh_8188E(
|
|||
pRaInfo->PTModeSS=1;
|
||||
else
|
||||
pRaInfo->PTModeSS=0;
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("ODM_ARFBRefresh_8188E(): PTModeSS=%d\n", pRaInfo->PTModeSS));
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
if(pRaInfo->DecisionRate > pRaInfo->HighestRate)
|
||||
pRaInfo->DecisionRate = pRaInfo->HighestRate;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("ODM_ARFBRefresh_8188E(): RateID=%d RateMask=%8.8x RAUseRate=%8.8x HighestRate=%d,DecisionRate=%d \n",
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("ODM_ARFBRefresh_8188E(): RateID=%d RateMask=%8.8x RAUseRate=%8.8x HighestRate=%d,DecisionRate=%d \n",
|
||||
pRaInfo->RateID, pRaInfo->RateMask, pRaInfo->RAUseRate, pRaInfo->HighestRate,pRaInfo->DecisionRate));
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if POWER_TRAINING_ACTIVE == 1
|
||||
static void
|
||||
static void
|
||||
odm_PTTryState_8188E(
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
)
|
||||
{
|
||||
pRaInfo->PTTryState=0;
|
||||
switch (pRaInfo->PTModeSS)
|
||||
{
|
||||
case 3:
|
||||
if (pRaInfo->DecisionRate>=0x19)
|
||||
case 3:
|
||||
if (pRaInfo->DecisionRate>=0x19)
|
||||
pRaInfo->PTTryState=1;
|
||||
break;
|
||||
case 2:
|
||||
if (pRaInfo->DecisionRate>=0x11)
|
||||
pRaInfo->PTTryState=1;
|
||||
break;
|
||||
break;
|
||||
case 1:
|
||||
if (pRaInfo->DecisionRate>=0x0a)
|
||||
pRaInfo->PTTryState=1;
|
||||
break;
|
||||
break;
|
||||
case 0:
|
||||
if (pRaInfo->DecisionRate>=0x03)
|
||||
pRaInfo->PTTryState=1;
|
||||
|
@ -579,7 +579,7 @@ odm_PTTryState_8188E(
|
|||
|
||||
pRaInfo->PTPreRssi=pRaInfo->RssiStaRA;
|
||||
pRaInfo->PTStopCount=0;
|
||||
|
||||
|
||||
}
|
||||
else{
|
||||
pRaInfo->RAstage=0;
|
||||
|
@ -593,9 +593,9 @@ odm_PTTryState_8188E(
|
|||
pRaInfo->PTPreRate=pRaInfo->DecisionRate;
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
odm_PTDecision_8188E(
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
IN PODM_RA_INFO_T pRaInfo
|
||||
)
|
||||
{
|
||||
u1Byte stage_BUF;
|
||||
|
@ -604,7 +604,7 @@ odm_PTDecision_8188E(
|
|||
u4Byte numsc;
|
||||
u4Byte num_total;
|
||||
u1Byte stage_id;
|
||||
|
||||
|
||||
stage_BUF=pRaInfo->PTStage;
|
||||
numsc = 0;
|
||||
num_total= pRaInfo->TOTAL* PT_PENALTY[5];
|
||||
|
@ -621,7 +621,7 @@ odm_PTDecision_8188E(
|
|||
stage_id=temp_stage-j;
|
||||
else
|
||||
stage_id=0;
|
||||
|
||||
|
||||
pRaInfo->PTSmoothFactor=(pRaInfo->PTSmoothFactor>>1) + (pRaInfo->PTSmoothFactor>>2) + stage_id*16+2;
|
||||
if (pRaInfo->PTSmoothFactor>192)
|
||||
pRaInfo->PTSmoothFactor=192;
|
||||
|
@ -639,31 +639,31 @@ odm_PTDecision_8188E(
|
|||
static VOID
|
||||
odm_RATxRPTTimerSetting(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u2Byte minRptTime
|
||||
IN u2Byte minRptTime
|
||||
)
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,(" =====>odm_RATxRPTTimerSetting()\n"));
|
||||
|
||||
|
||||
|
||||
|
||||
if(pDM_Odm->CurrminRptTime != minRptTime){
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
(" CurrminRptTime =0x%04x minRptTime=0x%04x\n", pDM_Odm->CurrminRptTime, minRptTime));
|
||||
#if(DM_ODM_SUPPORT_TYPE & (ODM_MP|ODM_AP))
|
||||
ODM_RA_Set_TxRPT_Time(pDM_Odm,minRptTime);
|
||||
ODM_RA_Set_TxRPT_Time(pDM_Odm,minRptTime);
|
||||
#else
|
||||
rtw_rpt_timer_cfg_cmd(pDM_Odm->Adapter,minRptTime);
|
||||
#endif
|
||||
#endif
|
||||
pDM_Odm->CurrminRptTime = minRptTime;
|
||||
}
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,(" <=====odm_RATxRPTTimerSetting()\n"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
VOID
|
||||
ODM_RASupport_Init(
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
)
|
||||
{
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD, ("=====>ODM_RASupport_Init()\n"));
|
||||
|
||||
// 2012/02/14 MH Be noticed, the init must be after IC type is recognized!!!!!
|
||||
|
@ -674,10 +674,10 @@ ODM_RASupport_Init(
|
|||
|
||||
|
||||
|
||||
int
|
||||
int
|
||||
ODM_RAInfo_Init(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
PODM_RA_INFO_T pRaInfo = &pDM_Odm->RAInfo[MacID];
|
||||
|
@ -685,7 +685,7 @@ ODM_RAInfo_Init(
|
|||
u1Byte WirelessMode=0xFF; //invalid value
|
||||
u1Byte max_rate_idx = 0x13; //MCS7
|
||||
if(pDM_Odm->pWirelessMode!=NULL){
|
||||
WirelessMode=*(pDM_Odm->pWirelessMode);
|
||||
WirelessMode=*(pDM_Odm->pWirelessMode);
|
||||
}
|
||||
|
||||
if(WirelessMode != 0xFF ){
|
||||
|
@ -696,19 +696,19 @@ ODM_RAInfo_Init(
|
|||
else if(WirelessMode & ODM_WM_B)
|
||||
max_rate_idx = 0x03;
|
||||
}
|
||||
|
||||
|
||||
//printk("%s ==>WirelessMode:0x%08x ,max_raid_idx:0x%02x\n ",__FUNCTION__,WirelessMode,max_rate_idx);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("ODM_RAInfo_Init(): WirelessMode:0x%08x ,max_raid_idx:0x%02x \n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("ODM_RAInfo_Init(): WirelessMode:0x%08x ,max_raid_idx:0x%02x \n",
|
||||
WirelessMode,max_rate_idx));
|
||||
|
||||
|
||||
pRaInfo->DecisionRate = max_rate_idx;
|
||||
pRaInfo->PreRate = max_rate_idx;
|
||||
pRaInfo->HighestRate=max_rate_idx;
|
||||
#else
|
||||
pRaInfo->DecisionRate = 0x13;
|
||||
pRaInfo->PreRate = 0x13;
|
||||
pRaInfo->HighestRate= 0x13;
|
||||
#else
|
||||
pRaInfo->DecisionRate = 0x13;
|
||||
pRaInfo->PreRate = 0x13;
|
||||
pRaInfo->HighestRate= 0x13;
|
||||
#endif
|
||||
pRaInfo->LowestRate=0;
|
||||
pRaInfo->RateID=0;
|
||||
|
@ -746,7 +746,7 @@ ODM_RAInfo_Init(
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
int
|
||||
ODM_RAInfo_Init_all(
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
)
|
||||
|
@ -765,21 +765,21 @@ ODM_RAInfo_Init_all(
|
|||
|
||||
u1Byte
|
||||
ODM_RA_GetShortGI_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
if((NULL == pDM_Odm) || (MacID >= ASSOCIATE_ENTRY_NUM))
|
||||
return 0;
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
("MacID=%d SGI=%d\n", MacID, pDM_Odm->RAInfo[MacID].RateSGI));
|
||||
return pDM_Odm->RAInfo[MacID].RateSGI;
|
||||
}
|
||||
|
||||
u1Byte
|
||||
u1Byte
|
||||
ODM_RA_GetDecisionRate_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
u1Byte DecisionRate = 0;
|
||||
|
@ -787,43 +787,43 @@ ODM_RA_GetDecisionRate_8188E(
|
|||
if((NULL == pDM_Odm) || (MacID >= ASSOCIATE_ENTRY_NUM))
|
||||
return 0;
|
||||
DecisionRate = (pDM_Odm->RAInfo[MacID].DecisionRate);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" MacID=%d DecisionRate=0x%x\n", MacID, DecisionRate));
|
||||
return DecisionRate;
|
||||
}
|
||||
|
||||
u1Byte
|
||||
ODM_RA_GetHwPwrStatus_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
u1Byte PTStage = 5;
|
||||
if((NULL == pDM_Odm) || (MacID >= ASSOCIATE_ENTRY_NUM))
|
||||
return 0;
|
||||
PTStage = (pDM_Odm->RAInfo[MacID].PTStage);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
("MacID=%d PTStage=0x%x\n", MacID, PTStage));
|
||||
return PTStage;
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
ODM_RA_UpdateRateInfo_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID,
|
||||
IN u1Byte RateID,
|
||||
IN u1Byte RateID,
|
||||
IN u4Byte RateMask,
|
||||
IN u1Byte SGIEnable
|
||||
)
|
||||
{
|
||||
PODM_RA_INFO_T pRaInfo = NULL;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("MacID=%d RateID=0x%x RateMask=0x%x SGIEnable=%d\n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("MacID=%d RateID=0x%x RateMask=0x%x SGIEnable=%d\n",
|
||||
MacID, RateID, RateMask, SGIEnable));
|
||||
if((NULL == pDM_Odm) || (MacID >= ASSOCIATE_ENTRY_NUM))
|
||||
return;
|
||||
|
||||
|
||||
pRaInfo = &(pDM_Odm->RAInfo[MacID]);
|
||||
pRaInfo->RateID = RateID;
|
||||
pRaInfo->RateMask = RateMask;
|
||||
|
@ -831,16 +831,16 @@ ODM_RA_UpdateRateInfo_8188E(
|
|||
odm_ARFBRefresh_8188E(pDM_Odm, pRaInfo);
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
ODM_RA_SetRSSI_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID,
|
||||
IN u1Byte Rssi
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID,
|
||||
IN u1Byte Rssi
|
||||
)
|
||||
{
|
||||
PODM_RA_INFO_T pRaInfo = NULL;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_TRACE,
|
||||
(" MacID=%d Rssi=%d\n", MacID, Rssi));
|
||||
if((NULL == pDM_Odm) || (MacID >= ASSOCIATE_ENTRY_NUM))
|
||||
return;
|
||||
|
@ -849,10 +849,10 @@ ODM_RA_SetRSSI_8188E(
|
|||
pRaInfo->RssiStaRA = Rssi;
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
ODM_RA_Set_TxRPT_Time(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u2Byte minRptTime
|
||||
IN u2Byte minRptTime
|
||||
)
|
||||
{
|
||||
#if(DM_ODM_SUPPORT_TYPE & (ODM_AP))
|
||||
|
@ -863,7 +863,7 @@ ODM_RA_Set_TxRPT_Time(
|
|||
|
||||
|
||||
VOID
|
||||
ODM_RA_TxRPT2Handle_8188E(
|
||||
ODM_RA_TxRPT2Handle_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN pu1Byte TxRPT_Buf,
|
||||
IN u2Byte TxRPT_Len,
|
||||
|
@ -875,11 +875,11 @@ ODM_RA_TxRPT2Handle_8188E(
|
|||
u1Byte MacId = 0;
|
||||
pu1Byte pBuffer = NULL;
|
||||
u4Byte valid = 0, ItemNum = 0;
|
||||
u2Byte minRptTime = 0x927c;
|
||||
u2Byte minRptTime = 0x927c;
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD, ("=====>ODM_RA_TxRPT2Handle_8188E(): valid0=%d valid1=%d BufferLength=%d\n",
|
||||
MacIDValidEntry0, MacIDValidEntry1, TxRPT_Len));
|
||||
|
||||
|
||||
ItemNum = TxRPT_Len >> 3;
|
||||
pBuffer = TxRPT_Buf;
|
||||
|
||||
|
@ -921,8 +921,8 @@ ODM_RA_TxRPT2Handle_8188E(
|
|||
pRAInfo->DROP;
|
||||
if(pRAInfo->TOTAL != 0)
|
||||
{
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("macid=%d Total=%d R0=%d R1=%d R2=%d R3=%d R4=%d D0=%d valid0=%x valid1=%x\n",
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD,
|
||||
("macid=%d Total=%d R0=%d R1=%d R2=%d R3=%d R4=%d D0=%d valid0=%x valid1=%x\n",
|
||||
MacId,
|
||||
pRAInfo->TOTAL,
|
||||
pRAInfo->RTY[0],
|
||||
|
@ -964,11 +964,11 @@ ODM_RA_TxRPT2Handle_8188E(
|
|||
#ifdef DETECT_STA_EXISTANCE
|
||||
void RTL8188E_DetectSTAExistance(PDM_ODM_T pDM_Odm, PODM_RA_INFO_T pRAInfo, int MacID);
|
||||
RTL8188E_DetectSTAExistance(pDM_Odm, pRAInfo, MacId);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
|
||||
("macid=%d R0=%d R1=%d R2=%d R3=%d R4=%d drop=%d valid0=%x RateID=%d SGI=%d\n",
|
||||
ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD,
|
||||
("macid=%d R0=%d R1=%d R2=%d R3=%d R4=%d drop=%d valid0=%x RateID=%d SGI=%d\n",
|
||||
MacId,
|
||||
pRAInfo->RTY[0],
|
||||
pRAInfo->RTY[1],
|
||||
|
@ -985,14 +985,14 @@ ODM_RA_TxRPT2Handle_8188E(
|
|||
}
|
||||
|
||||
if(minRptTime > pRAInfo->RptTime)
|
||||
minRptTime = pRAInfo->RptTime;
|
||||
minRptTime = pRAInfo->RptTime;
|
||||
|
||||
pBuffer += TX_RPT2_ITEM_SIZE;
|
||||
MacId++;
|
||||
}while(MacId < ItemNum);
|
||||
|
||||
|
||||
odm_RATxRPTTimerSetting(pDM_Odm,minRptTime);
|
||||
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_RATE_ADAPTIVE, ODM_DBG_LOUD, ("<===== ODM_RA_TxRPT2Handle_8188E()\n"));
|
||||
}
|
||||
|
@ -1002,7 +1002,7 @@ ODM_RA_TxRPT2Handle_8188E(
|
|||
static VOID
|
||||
odm_RATxRPTTimerSetting(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u2Byte minRptTime
|
||||
IN u2Byte minRptTime
|
||||
)
|
||||
{
|
||||
return;
|
||||
|
@ -1011,22 +1011,22 @@ odm_RATxRPTTimerSetting(
|
|||
|
||||
VOID
|
||||
ODM_RASupport_Init(
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int
|
||||
int
|
||||
ODM_RAInfo_Init(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
int
|
||||
ODM_RAInfo_Init_all(
|
||||
IN PDM_ODM_T pDM_Odm
|
||||
)
|
||||
|
@ -1034,37 +1034,37 @@ ODM_RAInfo_Init_all(
|
|||
return 0;
|
||||
}
|
||||
|
||||
u1Byte
|
||||
u1Byte
|
||||
ODM_RA_GetShortGI_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
u1Byte
|
||||
u1Byte
|
||||
ODM_RA_GetDecisionRate_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
u1Byte
|
||||
ODM_RA_GetHwPwrStatus_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID
|
||||
)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
ODM_RA_UpdateRateInfo_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID,
|
||||
IN u1Byte RateID,
|
||||
IN u1Byte RateID,
|
||||
IN u4Byte RateMask,
|
||||
IN u1Byte SGIEnable
|
||||
)
|
||||
|
@ -1072,27 +1072,27 @@ ODM_RA_UpdateRateInfo_8188E(
|
|||
return;
|
||||
}
|
||||
|
||||
VOID
|
||||
VOID
|
||||
ODM_RA_SetRSSI_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u1Byte MacID,
|
||||
IN u1Byte Rssi
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VOID
|
||||
ODM_RA_Set_TxRPT_Time(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u2Byte minRptTime
|
||||
IN u1Byte MacID,
|
||||
IN u1Byte Rssi
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VOID
|
||||
ODM_RA_TxRPT2Handle_8188E(
|
||||
ODM_RA_Set_TxRPT_Time(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u2Byte minRptTime
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
VOID
|
||||
ODM_RA_TxRPT2Handle_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN pu1Byte TxRPT_Buf,
|
||||
IN u2Byte TxRPT_Len,
|
||||
|
@ -1102,7 +1102,6 @@ ODM_RA_TxRPT2Handle_8188E(
|
|||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
615
hal/HalPhyRf.c
615
hal/HalPhyRf.c
File diff suppressed because it is too large
Load diff
6090
hal/HalPhyRf_8188e.c
6090
hal/HalPhyRf_8188e.c
File diff suppressed because it is too large
Load diff
|
@ -1,187 +1,185 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
/*++
|
||||
Copyright (c) Realtek Semiconductor Corp. All rights reserved.
|
||||
|
||||
Module Name:
|
||||
HalPwrSeqCmd.c
|
||||
|
||||
Abstract:
|
||||
Implement HW Power sequence configuration CMD handling routine for Realtek devices.
|
||||
|
||||
Major Change History:
|
||||
When Who What
|
||||
---------- --------------- -------------------------------
|
||||
2011-10-26 Lucas Modify to be compatible with SD4-CE driver.
|
||||
2011-07-07 Roger Create.
|
||||
|
||||
--*/
|
||||
#include <HalPwrSeqCmd.h>
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
#include <sdio_ops.h>
|
||||
#elif defined(CONFIG_GSPI_HCI)
|
||||
#include <gspi_ops.h>
|
||||
#endif
|
||||
|
||||
//
|
||||
// Description:
|
||||
// This routine deal with the Power Configuration CMDs parsing for RTL8723/RTL8188E Series IC.
|
||||
//
|
||||
// Assumption:
|
||||
// We should follow specific format which was released from HW SD.
|
||||
//
|
||||
// 2011.07.07, added by Roger.
|
||||
//
|
||||
u8 HalPwrSeqCmdParsing(
|
||||
struct adapter * padapter,
|
||||
u8 CutVersion,
|
||||
u8 FabVersion,
|
||||
u8 InterfaceType,
|
||||
WLAN_PWR_CFG PwrSeqCmd[])
|
||||
{
|
||||
WLAN_PWR_CFG PwrCfgCmd = {0};
|
||||
u8 bPollingBit = _FALSE;
|
||||
u32 AryIdx = 0;
|
||||
u8 value = 0;
|
||||
u32 offset = 0;
|
||||
u32 pollingCount = 0; // polling autoload done.
|
||||
u32 maxPollingCnt = 5000;
|
||||
|
||||
do {
|
||||
PwrCfgCmd = PwrSeqCmd[AryIdx];
|
||||
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_,
|
||||
("HalPwrSeqCmdParsing: offset(%#x) cut_msk(%#x) fab_msk(%#x) interface_msk(%#x) base(%#x) cmd(%#x) msk(%#x) value(%#x)\n",
|
||||
GET_PWR_CFG_OFFSET(PwrCfgCmd),
|
||||
GET_PWR_CFG_CUT_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_FAB_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_INTF_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_BASE(PwrCfgCmd),
|
||||
GET_PWR_CFG_CMD(PwrCfgCmd),
|
||||
GET_PWR_CFG_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_VALUE(PwrCfgCmd)));
|
||||
|
||||
//2 Only Handle the command whose FAB, CUT, and Interface are matched
|
||||
if ((GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) &&
|
||||
(GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) &&
|
||||
(GET_PWR_CFG_INTF_MASK(PwrCfgCmd) & InterfaceType))
|
||||
{
|
||||
switch (GET_PWR_CFG_CMD(PwrCfgCmd))
|
||||
{
|
||||
case PWR_CMD_READ:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_READ\n"));
|
||||
break;
|
||||
|
||||
case PWR_CMD_WRITE:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_WRITE\n"));
|
||||
offset = GET_PWR_CFG_OFFSET(PwrCfgCmd);
|
||||
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
//
|
||||
// <Roger_Notes> We should deal with interface specific address mapping for some interfaces, e.g., SDIO interface
|
||||
// 2011.07.07.
|
||||
//
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
{
|
||||
// Read Back SDIO Local value
|
||||
value = SdioLocalCmd52Read1Byte(padapter, offset);
|
||||
|
||||
value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
|
||||
// Write Back SDIO Local value
|
||||
SdioLocalCmd52Write1Byte(padapter, offset, value);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#ifdef CONFIG_GSPI_HCI
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
offset = SPI_LOCAL_OFFSET | offset;
|
||||
#endif
|
||||
// Read the value from system register
|
||||
value = rtw_read8(padapter, offset);
|
||||
|
||||
value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
|
||||
// Write the value back to sytem register
|
||||
rtw_write8(padapter, offset, value);
|
||||
}
|
||||
break;
|
||||
|
||||
case PWR_CMD_POLLING:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_POLLING\n"));
|
||||
|
||||
bPollingBit = _FALSE;
|
||||
offset = GET_PWR_CFG_OFFSET(PwrCfgCmd);
|
||||
#ifdef CONFIG_GSPI_HCI
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
offset = SPI_LOCAL_OFFSET | offset;
|
||||
#endif
|
||||
do {
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
value = SdioLocalCmd52Read1Byte(padapter, offset);
|
||||
else
|
||||
#endif
|
||||
value = rtw_read8(padapter, offset);
|
||||
|
||||
value &= GET_PWR_CFG_MASK(PwrCfgCmd);
|
||||
if (value == (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd)))
|
||||
bPollingBit = _TRUE;
|
||||
else
|
||||
rtw_udelay_os(10);
|
||||
|
||||
if (pollingCount++ > maxPollingCnt) {
|
||||
DBG_871X("Fail to polling Offset[%#x]\n", offset);
|
||||
return _FALSE;
|
||||
}
|
||||
} while (!bPollingBit);
|
||||
|
||||
break;
|
||||
|
||||
case PWR_CMD_DELAY:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_DELAY\n"));
|
||||
if (GET_PWR_CFG_VALUE(PwrCfgCmd) == PWRSEQ_DELAY_US)
|
||||
rtw_udelay_os(GET_PWR_CFG_OFFSET(PwrCfgCmd));
|
||||
else
|
||||
rtw_udelay_os(GET_PWR_CFG_OFFSET(PwrCfgCmd)*1000);
|
||||
break;
|
||||
|
||||
case PWR_CMD_END:
|
||||
// When this command is parsed, end the process
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_END\n"));
|
||||
return _TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_err_, ("HalPwrSeqCmdParsing: Unknown CMD!!\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
AryIdx++;//Add Array Index
|
||||
}while(1);
|
||||
|
||||
return _TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
/*++
|
||||
Copyright (c) Realtek Semiconductor Corp. All rights reserved.
|
||||
|
||||
Module Name:
|
||||
HalPwrSeqCmd.c
|
||||
|
||||
Abstract:
|
||||
Implement HW Power sequence configuration CMD handling routine for Realtek devices.
|
||||
|
||||
Major Change History:
|
||||
When Who What
|
||||
---------- --------------- -------------------------------
|
||||
2011-10-26 Lucas Modify to be compatible with SD4-CE driver.
|
||||
2011-07-07 Roger Create.
|
||||
|
||||
--*/
|
||||
#include <HalPwrSeqCmd.h>
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
#include <sdio_ops.h>
|
||||
#elif defined(CONFIG_GSPI_HCI)
|
||||
#include <gspi_ops.h>
|
||||
#endif
|
||||
|
||||
//
|
||||
// Description:
|
||||
// This routine deal with the Power Configuration CMDs parsing for RTL8723/RTL8188E Series IC.
|
||||
//
|
||||
// Assumption:
|
||||
// We should follow specific format which was released from HW SD.
|
||||
//
|
||||
// 2011.07.07, added by Roger.
|
||||
//
|
||||
u8 HalPwrSeqCmdParsing(
|
||||
struct adapter * padapter,
|
||||
u8 CutVersion,
|
||||
u8 FabVersion,
|
||||
u8 InterfaceType,
|
||||
WLAN_PWR_CFG PwrSeqCmd[])
|
||||
{
|
||||
WLAN_PWR_CFG PwrCfgCmd = {0};
|
||||
u8 bPollingBit = _FALSE;
|
||||
u32 AryIdx = 0;
|
||||
u8 value = 0;
|
||||
u32 offset = 0;
|
||||
u32 pollingCount = 0; // polling autoload done.
|
||||
u32 maxPollingCnt = 5000;
|
||||
|
||||
do {
|
||||
PwrCfgCmd = PwrSeqCmd[AryIdx];
|
||||
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_,
|
||||
("HalPwrSeqCmdParsing: offset(%#x) cut_msk(%#x) fab_msk(%#x) interface_msk(%#x) base(%#x) cmd(%#x) msk(%#x) value(%#x)\n",
|
||||
GET_PWR_CFG_OFFSET(PwrCfgCmd),
|
||||
GET_PWR_CFG_CUT_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_FAB_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_INTF_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_BASE(PwrCfgCmd),
|
||||
GET_PWR_CFG_CMD(PwrCfgCmd),
|
||||
GET_PWR_CFG_MASK(PwrCfgCmd),
|
||||
GET_PWR_CFG_VALUE(PwrCfgCmd)));
|
||||
|
||||
//2 Only Handle the command whose FAB, CUT, and Interface are matched
|
||||
if ((GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) &&
|
||||
(GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) &&
|
||||
(GET_PWR_CFG_INTF_MASK(PwrCfgCmd) & InterfaceType))
|
||||
{
|
||||
switch (GET_PWR_CFG_CMD(PwrCfgCmd))
|
||||
{
|
||||
case PWR_CMD_READ:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_READ\n"));
|
||||
break;
|
||||
|
||||
case PWR_CMD_WRITE:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_WRITE\n"));
|
||||
offset = GET_PWR_CFG_OFFSET(PwrCfgCmd);
|
||||
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
//
|
||||
// <Roger_Notes> We should deal with interface specific address mapping for some interfaces, e.g., SDIO interface
|
||||
// 2011.07.07.
|
||||
//
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
{
|
||||
// Read Back SDIO Local value
|
||||
value = SdioLocalCmd52Read1Byte(padapter, offset);
|
||||
|
||||
value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
|
||||
// Write Back SDIO Local value
|
||||
SdioLocalCmd52Write1Byte(padapter, offset, value);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#ifdef CONFIG_GSPI_HCI
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
offset = SPI_LOCAL_OFFSET | offset;
|
||||
#endif
|
||||
// Read the value from system register
|
||||
value = rtw_read8(padapter, offset);
|
||||
|
||||
value &= ~(GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
value |= (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd));
|
||||
|
||||
// Write the value back to sytem register
|
||||
rtw_write8(padapter, offset, value);
|
||||
}
|
||||
break;
|
||||
|
||||
case PWR_CMD_POLLING:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_POLLING\n"));
|
||||
|
||||
bPollingBit = _FALSE;
|
||||
offset = GET_PWR_CFG_OFFSET(PwrCfgCmd);
|
||||
#ifdef CONFIG_GSPI_HCI
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
offset = SPI_LOCAL_OFFSET | offset;
|
||||
#endif
|
||||
do {
|
||||
#ifdef CONFIG_SDIO_HCI
|
||||
if (GET_PWR_CFG_BASE(PwrCfgCmd) == PWR_BASEADDR_SDIO)
|
||||
value = SdioLocalCmd52Read1Byte(padapter, offset);
|
||||
else
|
||||
#endif
|
||||
value = rtw_read8(padapter, offset);
|
||||
|
||||
value &= GET_PWR_CFG_MASK(PwrCfgCmd);
|
||||
if (value == (GET_PWR_CFG_VALUE(PwrCfgCmd) & GET_PWR_CFG_MASK(PwrCfgCmd)))
|
||||
bPollingBit = _TRUE;
|
||||
else
|
||||
rtw_udelay_os(10);
|
||||
|
||||
if (pollingCount++ > maxPollingCnt) {
|
||||
DBG_871X("Fail to polling Offset[%#x]\n", offset);
|
||||
return _FALSE;
|
||||
}
|
||||
} while (!bPollingBit);
|
||||
|
||||
break;
|
||||
|
||||
case PWR_CMD_DELAY:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_DELAY\n"));
|
||||
if (GET_PWR_CFG_VALUE(PwrCfgCmd) == PWRSEQ_DELAY_US)
|
||||
rtw_udelay_os(GET_PWR_CFG_OFFSET(PwrCfgCmd));
|
||||
else
|
||||
rtw_udelay_os(GET_PWR_CFG_OFFSET(PwrCfgCmd)*1000);
|
||||
break;
|
||||
|
||||
case PWR_CMD_END:
|
||||
// When this command is parsed, end the process
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_info_, ("HalPwrSeqCmdParsing: PWR_CMD_END\n"));
|
||||
return _TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
RT_TRACE(_module_hal_init_c_ , _drv_err_, ("HalPwrSeqCmdParsing: Unknown CMD!!\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
AryIdx++;//Add Array Index
|
||||
}while(1);
|
||||
|
||||
return _TRUE;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -107,7 +107,7 @@ hal_com_get_channel_plan(
|
|||
u8 MRateToHwRate(u8 rate)
|
||||
{
|
||||
u8 ret = DESC_RATE1M;
|
||||
|
||||
|
||||
switch(rate)
|
||||
{
|
||||
// CCK and OFDM non-HT rates
|
||||
|
@ -151,9 +151,9 @@ void HalSetBrateCfg(
|
|||
{
|
||||
is_brate = mBratesOS[i] & IEEE80211_BASIC_RATE_MASK;
|
||||
brate = mBratesOS[i] & 0x7f;
|
||||
|
||||
|
||||
if( is_brate )
|
||||
{
|
||||
{
|
||||
switch(brate)
|
||||
{
|
||||
case IEEE80211_CCK_RATE_1MB: *pBrateCfg |= RATE_1M; break;
|
||||
|
@ -184,7 +184,7 @@ _OneOutPipeMapping(
|
|||
pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[0];//VI
|
||||
pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[0];//BE
|
||||
pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[0];//BK
|
||||
|
||||
|
||||
pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];//BCN
|
||||
pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];//MGT
|
||||
pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];//HIGH
|
||||
|
@ -194,89 +194,89 @@ _OneOutPipeMapping(
|
|||
static VOID
|
||||
_TwoOutPipeMapping(
|
||||
IN struct adapter *pAdapter,
|
||||
IN BOOLEAN bWIFICfg
|
||||
IN BOOLEAN bWIFICfg
|
||||
)
|
||||
{
|
||||
struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(pAdapter);
|
||||
|
||||
if(bWIFICfg){ //WMM
|
||||
|
||||
// BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 0, 1, 0, 1, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:L
|
||||
|
||||
|
||||
// BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 0, 1, 0, 1, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:L
|
||||
|
||||
pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[1];//VO
|
||||
pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[0];//VI
|
||||
pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[1];//BE
|
||||
pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[0];//BK
|
||||
|
||||
|
||||
pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];//BCN
|
||||
pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];//MGT
|
||||
pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];//HIGH
|
||||
pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];//TXCMD
|
||||
|
||||
|
||||
}
|
||||
else{//typical setting
|
||||
|
||||
|
||||
//BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 1, 1, 0, 0, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:L
|
||||
|
||||
|
||||
//BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 1, 1, 0, 0, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:L
|
||||
|
||||
pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];//VO
|
||||
pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[0];//VI
|
||||
pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[1];//BE
|
||||
pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[1];//BK
|
||||
|
||||
|
||||
pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];//BCN
|
||||
pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];//MGT
|
||||
pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];//HIGH
|
||||
pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];//TXCMD
|
||||
|
||||
pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];//TXCMD
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static VOID _ThreeOutPipeMapping(
|
||||
IN struct adapter *pAdapter,
|
||||
IN BOOLEAN bWIFICfg
|
||||
IN BOOLEAN bWIFICfg
|
||||
)
|
||||
{
|
||||
struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(pAdapter);
|
||||
|
||||
if(bWIFICfg){//for WMM
|
||||
|
||||
// BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 1, 2, 1, 0, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:N, 2:L
|
||||
|
||||
|
||||
// BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 1, 2, 1, 0, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:N, 2:L
|
||||
|
||||
pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];//VO
|
||||
pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[1];//VI
|
||||
pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[2];//BE
|
||||
pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[1];//BK
|
||||
|
||||
|
||||
pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];//BCN
|
||||
pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];//MGT
|
||||
pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];//HIGH
|
||||
pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];//TXCMD
|
||||
|
||||
|
||||
}
|
||||
else{//typical setting
|
||||
|
||||
|
||||
// BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 2, 2, 1, 0, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:N, 2:L
|
||||
|
||||
|
||||
// BK, BE, VI, VO, BCN, CMD,MGT,HIGH,HCCA
|
||||
//{ 2, 2, 1, 0, 0, 0, 0, 0, 0 };
|
||||
//0:H, 1:N, 2:L
|
||||
|
||||
pdvobjpriv->Queue2Pipe[0] = pdvobjpriv->RtOutPipe[0];//VO
|
||||
pdvobjpriv->Queue2Pipe[1] = pdvobjpriv->RtOutPipe[1];//VI
|
||||
pdvobjpriv->Queue2Pipe[2] = pdvobjpriv->RtOutPipe[2];//BE
|
||||
pdvobjpriv->Queue2Pipe[3] = pdvobjpriv->RtOutPipe[2];//BK
|
||||
|
||||
|
||||
pdvobjpriv->Queue2Pipe[4] = pdvobjpriv->RtOutPipe[0];//BCN
|
||||
pdvobjpriv->Queue2Pipe[5] = pdvobjpriv->RtOutPipe[0];//MGT
|
||||
pdvobjpriv->Queue2Pipe[6] = pdvobjpriv->RtOutPipe[0];//HIGH
|
||||
pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];//TXCMD
|
||||
pdvobjpriv->Queue2Pipe[7] = pdvobjpriv->RtOutPipe[0];//TXCMD
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -290,7 +290,7 @@ Hal_MappingOutPipe(
|
|||
struct registry_priv *pregistrypriv = &pAdapter->registrypriv;
|
||||
|
||||
BOOLEAN bWIFICfg = (pregistrypriv->wifi_spec) ?_TRUE:_FALSE;
|
||||
|
||||
|
||||
BOOLEAN result = _TRUE;
|
||||
|
||||
switch(NumOutPipe)
|
||||
|
@ -310,7 +310,7 @@ Hal_MappingOutPipe(
|
|||
}
|
||||
|
||||
return result;
|
||||
|
||||
|
||||
}
|
||||
|
||||
void hal_init_macaddr(struct adapter *adapter)
|
||||
|
@ -322,10 +322,10 @@ void hal_init_macaddr(struct adapter *adapter)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
/*
|
||||
* C2H event format:
|
||||
* Field TRIGGER CONTENT CMD_SEQ CMD_LEN CMD_ID
|
||||
* BITS [127:120] [119:16] [15:8] [7:4] [3:0]
|
||||
* Field TRIGGER CONTENT CMD_SEQ CMD_LEN CMD_ID
|
||||
* BITS [127:120] [119:16] [15:8] [7:4] [3:0]
|
||||
*/
|
||||
|
||||
void c2h_evt_clear(struct adapter *adapter)
|
||||
|
@ -356,7 +356,7 @@ s32 c2h_evt_read(struct adapter *adapter, u8 *buf)
|
|||
_rtw_memset(c2h_evt, 0, 16);
|
||||
|
||||
*buf = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL);
|
||||
*(buf+1) = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1);
|
||||
*(buf+1) = rtw_read8(adapter, REG_C2HEVT_MSG_NORMAL + 1);
|
||||
|
||||
RT_PRINT_DATA(_module_hal_init_c_, _drv_info_, "c2h_evt_read(): ",
|
||||
&c2h_evt , sizeof(c2h_evt));
|
||||
|
@ -376,7 +376,7 @@ s32 c2h_evt_read(struct adapter *adapter, u8 *buf)
|
|||
ret = _SUCCESS;
|
||||
|
||||
clear_evt:
|
||||
/*
|
||||
/*
|
||||
* Clear event to notify FW we have read the command.
|
||||
* If this field isn't clear, the FW won't update the next command message.
|
||||
*/
|
||||
|
@ -439,4 +439,3 @@ GetHalDefVar(struct adapter *adapter, HAL_DEF_VARIABLE variable, void *value)
|
|||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -98,11 +98,11 @@ u32 rtw_hal_power_on(struct adapter *padapter)
|
|||
void rtw_hal_power_off(struct adapter *padapter)
|
||||
{
|
||||
if(padapter->HalFunc.hal_power_off)
|
||||
padapter->HalFunc.hal_power_off(padapter);
|
||||
padapter->HalFunc.hal_power_off(padapter);
|
||||
}
|
||||
|
||||
|
||||
uint rtw_hal_init(struct adapter *padapter)
|
||||
uint rtw_hal_init(struct adapter *padapter)
|
||||
{
|
||||
uint status = _SUCCESS;
|
||||
struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
|
||||
|
@ -125,12 +125,12 @@ uint rtw_hal_init(struct adapter *padapter)
|
|||
}
|
||||
else
|
||||
{
|
||||
status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter);
|
||||
status = padapter->HalFunc.hal_init(padapter->pbuddy_adapter);
|
||||
if(status == _SUCCESS){
|
||||
padapter->pbuddy_adapter->hw_init_completed = _TRUE;
|
||||
}
|
||||
else{
|
||||
padapter->pbuddy_adapter->hw_init_completed = _FALSE;
|
||||
padapter->pbuddy_adapter->hw_init_completed = _FALSE;
|
||||
RT_TRACE(_module_hal_init_c_,_drv_err_,("rtw_hal_init: hal__init fail(pbuddy_adapter)\n"));
|
||||
DBG_871X("rtw_hal_init: hal__init fail(pbuddy_adapter)\n");
|
||||
return status;
|
||||
|
@ -146,7 +146,7 @@ uint rtw_hal_init(struct adapter *padapter)
|
|||
padapter = dvobj->padapters[i];
|
||||
padapter->hw_init_completed = _TRUE;
|
||||
}
|
||||
|
||||
|
||||
if (padapter->registrypriv.notch_filter == 1)
|
||||
rtw_hal_notch_filter(padapter, 1);
|
||||
|
||||
|
@ -167,7 +167,7 @@ uint rtw_hal_init(struct adapter *padapter)
|
|||
|
||||
return status;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
uint rtw_hal_deinit(struct adapter *padapter)
|
||||
{
|
||||
|
@ -193,9 +193,9 @@ _func_enter_;
|
|||
{
|
||||
DBG_871X("\n rtw_hal_deinit: hal_init fail\n");
|
||||
}
|
||||
|
||||
|
||||
_func_exit_;
|
||||
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -212,17 +212,17 @@ void rtw_hal_get_hwreg(struct adapter *padapter, u8 variable, u8 *val)
|
|||
}
|
||||
|
||||
u8 rtw_hal_set_def_var(struct adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue)
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.SetHalDefVarHandler)
|
||||
return padapter->HalFunc.SetHalDefVarHandler(padapter,eVariable,pValue);
|
||||
return _FAIL;
|
||||
}
|
||||
u8 rtw_hal_get_def_var(struct adapter *padapter, HAL_DEF_VARIABLE eVariable, PVOID pValue)
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.GetHalDefVarHandler)
|
||||
return padapter->HalFunc.GetHalDefVarHandler(padapter,eVariable,pValue);
|
||||
return _FAIL;
|
||||
}
|
||||
return _FAIL;
|
||||
}
|
||||
|
||||
void rtw_hal_set_odm_var(struct adapter *padapter, HAL_ODM_VARIABLE eVariable, PVOID pValue1,BOOLEAN bSet)
|
||||
{
|
||||
|
@ -241,12 +241,12 @@ void rtw_hal_enable_interrupt(struct adapter *padapter)
|
|||
DBG_871X(" rtw_hal_enable_interrupt: Secondary adapter return l\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (padapter->HalFunc.enable_interrupt)
|
||||
padapter->HalFunc.enable_interrupt(padapter);
|
||||
else
|
||||
else
|
||||
DBG_871X("%s: HalFunc.enable_interrupt is NULL!\n", __FUNCTION__);
|
||||
|
||||
|
||||
}
|
||||
void rtw_hal_disable_interrupt(struct adapter *padapter)
|
||||
{
|
||||
|
@ -254,38 +254,38 @@ void rtw_hal_disable_interrupt(struct adapter *padapter)
|
|||
DBG_871X(" rtw_hal_disable_interrupt: Secondary adapter return l\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (padapter->HalFunc.disable_interrupt)
|
||||
padapter->HalFunc.disable_interrupt(padapter);
|
||||
else
|
||||
else
|
||||
DBG_871X("%s: HalFunc.disable_interrupt is NULL!\n", __FUNCTION__);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
u32 rtw_hal_inirp_init(struct adapter *padapter)
|
||||
{
|
||||
u32 rst = _FAIL;
|
||||
if(padapter->HalFunc.inirp_init)
|
||||
rst = padapter->HalFunc.inirp_init(padapter);
|
||||
else
|
||||
DBG_871X(" %s HalFunc.inirp_init is NULL!!!\n",__FUNCTION__);
|
||||
if(padapter->HalFunc.inirp_init)
|
||||
rst = padapter->HalFunc.inirp_init(padapter);
|
||||
else
|
||||
DBG_871X(" %s HalFunc.inirp_init is NULL!!!\n",__FUNCTION__);
|
||||
return rst;
|
||||
}
|
||||
|
||||
|
||||
u32 rtw_hal_inirp_deinit(struct adapter *padapter)
|
||||
{
|
||||
|
||||
|
||||
if(padapter->HalFunc.inirp_deinit)
|
||||
return padapter->HalFunc.inirp_deinit(padapter);
|
||||
|
||||
return _FAIL;
|
||||
|
||||
|
||||
}
|
||||
|
||||
u8 rtw_hal_intf_ps_func(struct adapter *padapter,HAL_INTF_PS_FUNC efunc_id, u8* val)
|
||||
{
|
||||
if(padapter->HalFunc.interface_ps_func)
|
||||
{
|
||||
if(padapter->HalFunc.interface_ps_func)
|
||||
return padapter->HalFunc.interface_ps_func(padapter,efunc_id,val);
|
||||
return _FAIL;
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ s32 rtw_hal_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmit
|
|||
if(padapter->HalFunc.hal_xmitframe_enqueue)
|
||||
return padapter->HalFunc.hal_xmitframe_enqueue(padapter, pxmitframe);
|
||||
|
||||
return _FALSE;
|
||||
return _FALSE;
|
||||
}
|
||||
|
||||
s32 rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe)
|
||||
|
@ -303,7 +303,7 @@ s32 rtw_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe)
|
|||
if(padapter->HalFunc.hal_xmit)
|
||||
return padapter->HalFunc.hal_xmit(padapter, pxmitframe);
|
||||
|
||||
return _FALSE;
|
||||
return _FALSE;
|
||||
}
|
||||
|
||||
s32 rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
|
||||
|
@ -323,7 +323,7 @@ s32 rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
|
|||
{
|
||||
pmgntframe->attrib.encrypt = _BIP_;
|
||||
//pmgntframe->attrib.bswenc = _TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pmgntframe->attrib.encrypt = _AES_;
|
||||
|
@ -332,14 +332,14 @@ s32 rtw_hal_mgnt_xmit(struct adapter *padapter, struct xmit_frame *pmgntframe)
|
|||
rtw_mgmt_xmitframe_coalesce(padapter, pmgntframe->pkt, pmgntframe);
|
||||
}
|
||||
#endif //CONFIG_IEEE80211W
|
||||
|
||||
|
||||
if(padapter->HalFunc.mgnt_xmit)
|
||||
ret = padapter->HalFunc.mgnt_xmit(padapter, pmgntframe);
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 rtw_hal_init_xmit_priv(struct adapter *padapter)
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.init_xmit_priv != NULL)
|
||||
return padapter->HalFunc.init_xmit_priv(padapter);
|
||||
return _FAIL;
|
||||
|
@ -351,14 +351,14 @@ void rtw_hal_free_xmit_priv(struct adapter *padapter)
|
|||
}
|
||||
|
||||
s32 rtw_hal_init_recv_priv(struct adapter *padapter)
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.init_recv_priv)
|
||||
return padapter->HalFunc.init_recv_priv(padapter);
|
||||
|
||||
return _FAIL;
|
||||
}
|
||||
void rtw_hal_free_recv_priv(struct adapter *padapter)
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.free_recv_priv)
|
||||
padapter->HalFunc.free_recv_priv(padapter);
|
||||
}
|
||||
|
@ -380,10 +380,10 @@ void rtw_hal_update_ra_mask(struct sta_info *psta, u8 rssi_level)
|
|||
add_RATid(padapter, psta, rssi_level);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.UpdateRAMaskHandler)
|
||||
padapter->HalFunc.UpdateRAMaskHandler(padapter, psta->mac_id, rssi_level);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void rtw_hal_add_ra_tid(struct adapter *padapter, u32 bitmap, u8 arg, u8 rssi_level)
|
||||
|
@ -428,7 +428,7 @@ u32 rtw_hal_read_rfreg(struct adapter *padapter, u32 eRFPath, u32 RegAddr, u32 B
|
|||
void rtw_hal_write_rfreg(struct adapter *padapter, u32 eRFPath, u32 RegAddr, u32 BitMask, u32 Data)
|
||||
{
|
||||
if(padapter->HalFunc.write_rfreg)
|
||||
padapter->HalFunc.write_rfreg(padapter, eRFPath, RegAddr, BitMask, Data);
|
||||
padapter->HalFunc.write_rfreg(padapter, eRFPath, RegAddr, BitMask, Data);
|
||||
}
|
||||
|
||||
s32 rtw_hal_interrupt_handler(struct adapter *padapter)
|
||||
|
@ -455,7 +455,7 @@ void rtw_hal_dm_watchdog(struct adapter *padapter)
|
|||
#if defined(CONFIG_CONCURRENT_MODE)
|
||||
if (padapter->adapter_type != PRIMARY_ADAPTER)
|
||||
return;
|
||||
#endif
|
||||
#endif
|
||||
if(padapter->HalFunc.hal_dm_watchdog)
|
||||
padapter->HalFunc.hal_dm_watchdog(padapter);
|
||||
}
|
||||
|
@ -463,16 +463,16 @@ void rtw_hal_dm_watchdog(struct adapter *padapter)
|
|||
void rtw_hal_bcn_related_reg_setting(struct adapter *padapter)
|
||||
{
|
||||
if(padapter->HalFunc.SetBeaconRelatedRegistersHandler)
|
||||
padapter->HalFunc.SetBeaconRelatedRegistersHandler(padapter);
|
||||
padapter->HalFunc.SetBeaconRelatedRegistersHandler(padapter);
|
||||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_ANTENNA_DIVERSITY
|
||||
u8 rtw_hal_antdiv_before_linked(struct adapter *padapter)
|
||||
{
|
||||
{
|
||||
if(padapter->HalFunc.AntDivBeforeLinkHandler)
|
||||
return padapter->HalFunc.AntDivBeforeLinkHandler(padapter);
|
||||
return _FALSE;
|
||||
return _FALSE;
|
||||
}
|
||||
void rtw_hal_antdiv_rssi_compared(struct adapter *padapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src)
|
||||
{
|
||||
|
@ -494,7 +494,7 @@ s32 rtw_hal_hostap_mgnt_xmit_entry(struct adapter *padapter, _pkt *pkt)
|
|||
void rtw_hal_sreset_init(struct adapter *padapter)
|
||||
{
|
||||
if(padapter->HalFunc.sreset_init_value)
|
||||
padapter->HalFunc.sreset_init_value(padapter);
|
||||
padapter->HalFunc.sreset_init_value(padapter);
|
||||
}
|
||||
void rtw_hal_sreset_reset(struct adapter *padapter)
|
||||
{
|
||||
|
@ -516,7 +516,7 @@ void rtw_hal_sreset_xmit_status_check(struct adapter *padapter)
|
|||
return;
|
||||
|
||||
if(padapter->HalFunc.sreset_xmit_status_check)
|
||||
padapter->HalFunc.sreset_xmit_status_check(padapter);
|
||||
padapter->HalFunc.sreset_xmit_status_check(padapter);
|
||||
}
|
||||
void rtw_hal_sreset_linked_status_check(struct adapter *padapter)
|
||||
{
|
||||
|
@ -524,13 +524,13 @@ void rtw_hal_sreset_linked_status_check(struct adapter *padapter)
|
|||
return;
|
||||
|
||||
if(padapter->HalFunc.sreset_linked_status_check)
|
||||
padapter->HalFunc.sreset_linked_status_check(padapter);
|
||||
padapter->HalFunc.sreset_linked_status_check(padapter);
|
||||
}
|
||||
u8 rtw_hal_sreset_get_wifi_status(struct adapter *padapter)
|
||||
{
|
||||
u8 status = 0;
|
||||
if(padapter->HalFunc.sreset_get_wifi_status)
|
||||
status = padapter->HalFunc.sreset_get_wifi_status(padapter);
|
||||
if(padapter->HalFunc.sreset_get_wifi_status)
|
||||
status = padapter->HalFunc.sreset_get_wifi_status(padapter);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -567,7 +567,7 @@ s32 rtw_hal_xmit_thread_handler(struct adapter *padapter)
|
|||
void rtw_hal_notch_filter(struct adapter *adapter, bool enable)
|
||||
{
|
||||
if(adapter->HalFunc.hal_notch_filter)
|
||||
adapter->HalFunc.hal_notch_filter(adapter,enable);
|
||||
adapter->HalFunc.hal_notch_filter(adapter,enable);
|
||||
}
|
||||
|
||||
void rtw_hal_reset_security_engine(struct adapter * adapter)
|
||||
|
@ -588,4 +588,3 @@ c2h_id_filter rtw_hal_c2h_id_filter_ccx(struct adapter *adapter)
|
|||
{
|
||||
return adapter->HalFunc.c2h_id_filter_ccx;
|
||||
}
|
||||
|
||||
|
|
2395
hal/odm_HWConfig.c
2395
hal/odm_HWConfig.c
File diff suppressed because it is too large
Load diff
2579
hal/odm_RTL8188E.c
2579
hal/odm_RTL8188E.c
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -20,22 +20,22 @@
|
|||
|
||||
#include "odm_precomp.h"
|
||||
|
||||
#if (RTL8188E_SUPPORT == 1)
|
||||
#if (RTL8188E_SUPPORT == 1)
|
||||
|
||||
void
|
||||
odm_ConfigRFReg_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Data,
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Data,
|
||||
IN ODM_RF_RADIO_PATH_E RF_PATH,
|
||||
IN u4Byte RegAddr
|
||||
)
|
||||
{
|
||||
if(Addr == 0xffe)
|
||||
{
|
||||
{
|
||||
#ifdef CONFIG_LONG_DELAY_ISSUE
|
||||
ODM_sleep_ms(50);
|
||||
#else
|
||||
#else
|
||||
ODM_delay_ms(50);
|
||||
#endif
|
||||
}
|
||||
|
@ -64,15 +64,15 @@ odm_ConfigRFReg_8188E(
|
|||
ODM_SetRFReg(pDM_Odm, RF_PATH, RegAddr, bRFRegOffsetMask, Data);
|
||||
// Add 1us delay between BB/RF register setting.
|
||||
ODM_delay_us(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
void
|
||||
odm_ConfigRF_RadioA_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Data
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Data
|
||||
)
|
||||
{
|
||||
u4Byte content = 0x1000; // RF_Content: radioa_txt
|
||||
|
@ -83,60 +83,60 @@ odm_ConfigRF_RadioA_8188E(
|
|||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigRFWithHeaderFile: [RadioA] %08X %08X\n", Addr, Data));
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
odm_ConfigRF_RadioB_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Data
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Data
|
||||
)
|
||||
{
|
||||
u4Byte content = 0x1001; // RF_Content: radiob_txt
|
||||
u4Byte maskforPhySet= (u4Byte)(content&0xE000);
|
||||
|
||||
odm_ConfigRFReg_8188E(pDM_Odm, Addr, Data, ODM_RF_PATH_B, Addr|maskforPhySet);
|
||||
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigRFWithHeaderFile: [RadioB] %08X %08X\n", Addr, Data));
|
||||
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
odm_ConfigMAC_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u1Byte Data
|
||||
)
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u1Byte Data
|
||||
)
|
||||
{
|
||||
ODM_Write1Byte(pDM_Odm, Addr, Data);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigMACWithHeaderFile: [MAC_REG] %08X %08X\n", Addr, Data));
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
odm_ConfigBB_AGC_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Bitmask,
|
||||
IN u4Byte Data
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Bitmask,
|
||||
IN u4Byte Data
|
||||
)
|
||||
{
|
||||
ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
|
||||
ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
|
||||
// Add 1us delay between BB/RF register setting.
|
||||
ODM_delay_us(1);
|
||||
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigBBWithHeaderFile: [AGC_TAB] %08X %08X\n", Addr, Data));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
odm_ConfigBB_PHY_REG_PG_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Bitmask,
|
||||
IN u4Byte Data
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Bitmask,
|
||||
IN u4Byte Data
|
||||
)
|
||||
{
|
||||
{
|
||||
if (Addr == 0xfe){
|
||||
#ifdef CONFIG_LONG_DELAY_ISSUE
|
||||
ODM_sleep_ms(50);
|
||||
#else
|
||||
#else
|
||||
ODM_delay_ms(50);
|
||||
#endif
|
||||
}
|
||||
|
@ -165,18 +165,18 @@ odm_ConfigBB_PHY_REG_PG_8188E(
|
|||
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
odm_ConfigBB_PHY_8188E(
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Bitmask,
|
||||
IN u4Byte Data
|
||||
IN PDM_ODM_T pDM_Odm,
|
||||
IN u4Byte Addr,
|
||||
IN u4Byte Bitmask,
|
||||
IN u4Byte Data
|
||||
)
|
||||
{
|
||||
{
|
||||
if (Addr == 0xfe){
|
||||
#ifdef CONFIG_LONG_DELAY_ISSUE
|
||||
ODM_sleep_ms(50);
|
||||
#else
|
||||
#else
|
||||
ODM_delay_ms(50);
|
||||
#endif
|
||||
}
|
||||
|
@ -197,13 +197,12 @@ odm_ConfigBB_PHY_8188E(
|
|||
}
|
||||
else{
|
||||
if (Addr == 0xa24)
|
||||
pDM_Odm->RFCalibrateInfo.RegA24 = Data;
|
||||
ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
|
||||
|
||||
pDM_Odm->RFCalibrateInfo.RegA24 = Data;
|
||||
ODM_SetBBReg(pDM_Odm, Addr, Bitmask, Data);
|
||||
|
||||
// Add 1us delay between BB/RF register setting.
|
||||
ODM_delay_us(1);
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigBBWithHeaderFile: [PHY_REG] %08X %08X\n", Addr, Data));
|
||||
ODM_RT_TRACE(pDM_Odm,ODM_COMP_INIT, ODM_DBG_TRACE, ("===> ODM_ConfigBBWithHeaderFile: [PHY_REG] %08X %08X\n", Addr, Data));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
1253
hal/odm_debug.c
1253
hal/odm_debug.c
File diff suppressed because it is too large
Load diff
1327
hal/odm_interface.c
1327
hal/odm_interface.c
File diff suppressed because it is too large
Load diff
2986
hal/rtl8188e_cmd.c
2986
hal/rtl8188e_cmd.c
File diff suppressed because it is too large
Load diff
1293
hal/rtl8188e_dm.c
1293
hal/rtl8188e_dm.c
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -48,7 +48,7 @@ static void process_rssi(struct adapter *padapter,union recv_frame *prframe)
|
|||
//DBG_8192C("process_rssi=> pattrib->rssil(%d) signal_strength(%d)\n ",pattrib->RecvSignalPower,pattrib->signal_strength);
|
||||
//if(pRfd->Status.bPacketToSelf || pRfd->Status.bPacketBeacon)
|
||||
{
|
||||
|
||||
|
||||
#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
|
||||
if(signal_stat->update_req) {
|
||||
signal_stat->total_num = 0;
|
||||
|
@ -58,9 +58,9 @@ static void process_rssi(struct adapter *padapter,union recv_frame *prframe)
|
|||
|
||||
signal_stat->total_num++;
|
||||
signal_stat->total_val += pattrib->phy_info.SignalStrength;
|
||||
signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
|
||||
signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
|
||||
#else //CONFIG_NEW_SIGNAL_STAT_PROCESS
|
||||
|
||||
|
||||
//Adapter->RxStats.RssiCalculateCnt++; //For antenna Test
|
||||
if(padapter->recvpriv.signal_strength_data.total_num++ >= PHY_RSSI_SLID_WIN_MAX)
|
||||
{
|
||||
|
@ -76,7 +76,7 @@ static void process_rssi(struct adapter *padapter,union recv_frame *prframe)
|
|||
|
||||
|
||||
tmp_val = padapter->recvpriv.signal_strength_data.total_val/padapter->recvpriv.signal_strength_data.total_num;
|
||||
|
||||
|
||||
if(padapter->recvpriv.is_signal_dbg) {
|
||||
padapter->recvpriv.signal_strength= padapter->recvpriv.signal_strength_dbg;
|
||||
padapter->recvpriv.rssi=(s8)translate2dbm((u8)padapter->recvpriv.signal_strength_dbg);
|
||||
|
@ -96,7 +96,7 @@ static void process_rssi(struct adapter *padapter,union recv_frame *prframe)
|
|||
static void process_link_qual(struct adapter *padapter,union recv_frame *prframe)
|
||||
{
|
||||
u32 last_evm=0, tmpVal;
|
||||
struct rx_pkt_attrib *pattrib;
|
||||
struct rx_pkt_attrib *pattrib;
|
||||
#ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS
|
||||
struct signal_stat * signal_stat;
|
||||
#endif //CONFIG_NEW_SIGNAL_STAT_PROCESS
|
||||
|
@ -122,7 +122,7 @@ static void process_link_qual(struct adapter *padapter,union recv_frame *prframe
|
|||
signal_stat->total_num++;
|
||||
signal_stat->total_val += pattrib->phy_info.SignalQuality;
|
||||
signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
|
||||
|
||||
|
||||
#else //CONFIG_NEW_SIGNAL_STAT_PROCESS
|
||||
if(pattrib->phy_info.SignalQuality != 0)
|
||||
{
|
||||
|
@ -168,7 +168,7 @@ void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe)
|
|||
//
|
||||
// Check PWDB.
|
||||
//
|
||||
//process_PWDB(padapter, precvframe);
|
||||
//process_PWDB(padapter, precvframe);
|
||||
|
||||
//UpdateRxSignalStatistics8192C(Adapter, pRfd);
|
||||
//
|
||||
|
@ -202,17 +202,17 @@ void update_recvframe_attrib_88e(
|
|||
pattrib = &precvframe->u.hdr.attrib;
|
||||
_rtw_memset(pattrib, 0, sizeof(struct rx_pkt_attrib));
|
||||
|
||||
pattrib->crc_err = (u8)((report.rxdw0 >> 14) & 0x1);;//(u8)prxreport->crc32;
|
||||
|
||||
pattrib->crc_err = (u8)((report.rxdw0 >> 14) & 0x1);;//(u8)prxreport->crc32;
|
||||
|
||||
// update rx report to recv_frame attribute
|
||||
pattrib->pkt_rpt_type = (u8)((report.rxdw3 >> 14) & 0x3);//prxreport->rpt_sel;
|
||||
|
||||
if(pattrib->pkt_rpt_type == NORMAL_RX)//Normal rx packet
|
||||
|
||||
if(pattrib->pkt_rpt_type == NORMAL_RX)//Normal rx packet
|
||||
{
|
||||
pattrib->pkt_len = (u16)(report.rxdw0 &0x00003fff);//(u16)prxreport->pktlen;
|
||||
pattrib->drvinfo_sz = (u8)((report.rxdw0 >> 16) & 0xf) * 8;//(u8)(prxreport->drvinfosize << 3);
|
||||
|
||||
pattrib->physt = (u8)((report.rxdw0 >> 26) & 0x1);//(u8)prxreport->physt;
|
||||
|
||||
pattrib->physt = (u8)((report.rxdw0 >> 26) & 0x1);//(u8)prxreport->physt;
|
||||
|
||||
pattrib->bdecrypted = (report.rxdw0 & BIT(27))? 0:1;//(u8)(prxreport->swdec ? 0 : 1);
|
||||
pattrib->encrypt = (u8)((report.rxdw0 >> 20) & 0x7);//(u8)prxreport->security;
|
||||
|
@ -229,10 +229,10 @@ void update_recvframe_attrib_88e(
|
|||
|
||||
pattrib->mcs_rate = (u8)(report.rxdw3 & 0x3f);//(u8)prxreport->rxmcs;
|
||||
pattrib->rxht = (u8)((report.rxdw3 >> 6) & 0x1);//(u8)prxreport->rxht;
|
||||
|
||||
|
||||
pattrib->icv_err = (u8)((report.rxdw0 >> 15) & 0x1);//(u8)prxreport->icverr;
|
||||
pattrib->shift_sz = (u8)((report.rxdw0 >> 24) & 0x3);
|
||||
|
||||
|
||||
}
|
||||
else if(pattrib->pkt_rpt_type == TX_REPORT1)//CCX
|
||||
{
|
||||
|
@ -249,13 +249,13 @@ void update_recvframe_attrib_88e(
|
|||
//
|
||||
pattrib->MacIDValidEntry[0] = report.rxdw4;
|
||||
pattrib->MacIDValidEntry[1] = report.rxdw5;
|
||||
|
||||
|
||||
}
|
||||
else if(pattrib->pkt_rpt_type == HIS_REPORT)// USB HISR RPT
|
||||
{
|
||||
pattrib->pkt_len = (u16)(report.rxdw0 &0x00003fff);//(u16)prxreport->pktlen;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -269,19 +269,19 @@ void update_recvframe_phyinfo_88e(
|
|||
{
|
||||
struct adapter * padapter = precvframe->u.hdr.adapter;
|
||||
struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
PODM_PHY_INFO_T pPHYInfo = (PODM_PHY_INFO_T)(&pattrib->phy_info);
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
PODM_PHY_INFO_T pPHYInfo = (PODM_PHY_INFO_T)(&pattrib->phy_info);
|
||||
u8 *wlanhdr;
|
||||
ODM_PACKET_INFO_T pkt_info;
|
||||
u8 *sa;
|
||||
struct sta_priv *pstapriv;
|
||||
struct sta_info *psta;
|
||||
//_irqL irqL;
|
||||
|
||||
|
||||
pkt_info.bPacketMatchBSSID =_FALSE;
|
||||
pkt_info.bPacketToSelf = _FALSE;
|
||||
pkt_info.bPacketBeacon = _FALSE;
|
||||
|
||||
|
||||
wlanhdr = get_recvframe_data(precvframe);
|
||||
|
||||
pkt_info.bPacketMatchBSSID = ((!IsFrameTypeCtrl(wlanhdr)) &&
|
||||
|
@ -293,12 +293,12 @@ void update_recvframe_phyinfo_88e(
|
|||
pkt_info.bPacketBeacon = pkt_info.bPacketMatchBSSID && (GetFrameSubType(wlanhdr) == WIFI_BEACON);
|
||||
|
||||
if(pkt_info.bPacketBeacon){
|
||||
if(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE) == _TRUE){
|
||||
if(check_fwstate(&padapter->mlmepriv, WIFI_STATION_STATE) == _TRUE){
|
||||
sa = padapter->mlmepriv.cur_network.network.MacAddress;
|
||||
#if 0
|
||||
{
|
||||
{
|
||||
DBG_8192C("==> rx beacon from AP[%02x:%02x:%02x:%02x:%02x:%02x]\n",
|
||||
sa[0],sa[1],sa[2],sa[3],sa[4],sa[5]);
|
||||
sa[0],sa[1],sa[2],sa[3],sa[4],sa[5]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -307,44 +307,43 @@ void update_recvframe_phyinfo_88e(
|
|||
}
|
||||
else{
|
||||
sa = get_sa(wlanhdr);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pstapriv = &padapter->stapriv;
|
||||
pkt_info.StationID = 0xFF;
|
||||
psta = rtw_get_stainfo(pstapriv, sa);
|
||||
if (psta)
|
||||
{
|
||||
pkt_info.StationID = psta->mac_id;
|
||||
pkt_info.StationID = psta->mac_id;
|
||||
//DBG_8192C("%s ==> StationID(%d)\n",__FUNCTION__,pkt_info.StationID);
|
||||
}
|
||||
pkt_info.Rate = pattrib->mcs_rate;
|
||||
}
|
||||
pkt_info.Rate = pattrib->mcs_rate;
|
||||
//rtl8188e_query_rx_phy_status(precvframe, pphy_status);
|
||||
|
||||
//_enter_critical_bh(&pHalData->odm_stainfo_lock, &irqL);
|
||||
//_enter_critical_bh(&pHalData->odm_stainfo_lock, &irqL);
|
||||
ODM_PhyStatusQuery(&pHalData->odmpriv,pPHYInfo,(u8 *)pphy_status,&(pkt_info));
|
||||
//_exit_critical_bh(&pHalData->odm_stainfo_lock, &irqL);
|
||||
|
||||
precvframe->u.hdr.psta = NULL;
|
||||
if (pkt_info.bPacketMatchBSSID &&
|
||||
(check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE))
|
||||
{
|
||||
{
|
||||
if (psta)
|
||||
{
|
||||
{
|
||||
precvframe->u.hdr.psta = psta;
|
||||
rtl8188e_process_phy_info(padapter, precvframe);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
else if (pkt_info.bPacketToSelf || pkt_info.bPacketBeacon)
|
||||
{
|
||||
if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE) == _TRUE)
|
||||
{
|
||||
{
|
||||
if (psta)
|
||||
{
|
||||
{
|
||||
precvframe->u.hdr.psta = psta;
|
||||
}
|
||||
}
|
||||
rtl8188e_process_phy_info(padapter, precvframe);
|
||||
rtl8188e_process_phy_info(padapter, precvframe);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,125 +1,124 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#define _RTL8188E_SRESET_C_
|
||||
|
||||
#include <rtl8188e_sreset.h>
|
||||
#include <rtl8188e_hal.h>
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
|
||||
void rtl8188e_sreset_xmit_status_check(struct adapter *padapter)
|
||||
{
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
struct sreset_priv *psrtpriv = &pHalData->srestpriv;
|
||||
|
||||
unsigned long current_time;
|
||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
unsigned int diff_time;
|
||||
u32 txdma_status;
|
||||
|
||||
if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00){
|
||||
DBG_871X("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status);
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
}
|
||||
#ifdef CONFIG_USB_HCI
|
||||
//total xmit irp = 4
|
||||
//DBG_8192C("==>%s free_xmitbuf_cnt(%d),txirp_cnt(%d)\n",__FUNCTION__,pxmitpriv->free_xmitbuf_cnt,pxmitpriv->txirp_cnt);
|
||||
//if(pxmitpriv->txirp_cnt == NR_XMITBUFF+1)
|
||||
current_time = rtw_get_current_time();
|
||||
|
||||
if(0 == pxmitpriv->free_xmitbuf_cnt || 0 == pxmitpriv->free_xmit_extbuf_cnt) {
|
||||
|
||||
diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_time);
|
||||
|
||||
if (diff_time > 2000) {
|
||||
if (psrtpriv->last_tx_complete_time == 0) {
|
||||
psrtpriv->last_tx_complete_time = current_time;
|
||||
}
|
||||
else{
|
||||
diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_complete_time);
|
||||
if (diff_time > 4000) {
|
||||
u32 ability;
|
||||
|
||||
//padapter->Wifi_Error_Status = WIFI_TX_HANG;
|
||||
rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DM_FUNC, &ability);
|
||||
|
||||
DBG_871X("%s tx hang %s\n", __FUNCTION__,
|
||||
(ability & ODM_BB_ADAPTIVITY)? "ODM_BB_ADAPTIVITY" : "");
|
||||
|
||||
if (!(ability & ODM_BB_ADAPTIVITY))
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif //CONFIG_USB_HCI
|
||||
|
||||
if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) {
|
||||
psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void rtl8188e_sreset_linked_status_check(struct adapter *padapter)
|
||||
{
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
struct sreset_priv *psrtpriv = &pHalData->srestpriv;
|
||||
|
||||
u32 rx_dma_status = 0;
|
||||
u8 fw_status=0;
|
||||
rx_dma_status = rtw_read32(padapter,REG_RXDMA_STATUS);
|
||||
if(rx_dma_status!= 0x00){
|
||||
DBG_8192C("%s REG_RXDMA_STATUS:0x%08x \n",__FUNCTION__,rx_dma_status);
|
||||
rtw_write32(padapter,REG_RXDMA_STATUS,rx_dma_status);
|
||||
}
|
||||
fw_status = rtw_read8(padapter,REG_FMETHR);
|
||||
if(fw_status != 0x00)
|
||||
{
|
||||
if(fw_status == 1)
|
||||
DBG_8192C("%s REG_FW_STATUS (0x%02x), Read_Efuse_Fail !! \n",__FUNCTION__,fw_status);
|
||||
else if(fw_status == 2)
|
||||
DBG_8192C("%s REG_FW_STATUS (0x%02x), Condition_No_Match !! \n",__FUNCTION__,fw_status);
|
||||
}
|
||||
#if 0
|
||||
u32 regc50,regc58,reg824,reg800;
|
||||
regc50 = rtw_read32(padapter,0xc50);
|
||||
regc58 = rtw_read32(padapter,0xc58);
|
||||
reg824 = rtw_read32(padapter,0x824);
|
||||
reg800 = rtw_read32(padapter,0x800);
|
||||
if( ((regc50&0xFFFFFF00)!= 0x69543400)||
|
||||
((regc58&0xFFFFFF00)!= 0x69543400)||
|
||||
(((reg824&0xFFFFFF00)!= 0x00390000)&&(((reg824&0xFFFFFF00)!= 0x80390000)))||
|
||||
( ((reg800&0xFFFFFF00)!= 0x03040000)&&((reg800&0xFFFFFF00)!= 0x83040000)))
|
||||
{
|
||||
DBG_8192C("%s regc50:0x%08x, regc58:0x%08x, reg824:0x%08x, reg800:0x%08x,\n", __FUNCTION__,
|
||||
regc50, regc58, reg824, reg800);
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) {
|
||||
psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
#define _RTL8188E_SRESET_C_
|
||||
|
||||
#include <rtl8188e_sreset.h>
|
||||
#include <rtl8188e_hal.h>
|
||||
|
||||
#ifdef DBG_CONFIG_ERROR_DETECT
|
||||
|
||||
void rtl8188e_sreset_xmit_status_check(struct adapter *padapter)
|
||||
{
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
struct sreset_priv *psrtpriv = &pHalData->srestpriv;
|
||||
|
||||
unsigned long current_time;
|
||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
unsigned int diff_time;
|
||||
u32 txdma_status;
|
||||
|
||||
if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00){
|
||||
DBG_871X("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status);
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
}
|
||||
#ifdef CONFIG_USB_HCI
|
||||
//total xmit irp = 4
|
||||
//DBG_8192C("==>%s free_xmitbuf_cnt(%d),txirp_cnt(%d)\n",__FUNCTION__,pxmitpriv->free_xmitbuf_cnt,pxmitpriv->txirp_cnt);
|
||||
//if(pxmitpriv->txirp_cnt == NR_XMITBUFF+1)
|
||||
current_time = rtw_get_current_time();
|
||||
|
||||
if(0 == pxmitpriv->free_xmitbuf_cnt || 0 == pxmitpriv->free_xmit_extbuf_cnt) {
|
||||
|
||||
diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_time);
|
||||
|
||||
if (diff_time > 2000) {
|
||||
if (psrtpriv->last_tx_complete_time == 0) {
|
||||
psrtpriv->last_tx_complete_time = current_time;
|
||||
}
|
||||
else{
|
||||
diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_complete_time);
|
||||
if (diff_time > 4000) {
|
||||
u32 ability;
|
||||
|
||||
//padapter->Wifi_Error_Status = WIFI_TX_HANG;
|
||||
rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DM_FUNC, &ability);
|
||||
|
||||
DBG_871X("%s tx hang %s\n", __FUNCTION__,
|
||||
(ability & ODM_BB_ADAPTIVITY)? "ODM_BB_ADAPTIVITY" : "");
|
||||
|
||||
if (!(ability & ODM_BB_ADAPTIVITY))
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif //CONFIG_USB_HCI
|
||||
|
||||
if (psrtpriv->dbg_trigger_point == SRESET_TGP_XMIT_STATUS) {
|
||||
psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void rtl8188e_sreset_linked_status_check(struct adapter *padapter)
|
||||
{
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
struct sreset_priv *psrtpriv = &pHalData->srestpriv;
|
||||
|
||||
u32 rx_dma_status = 0;
|
||||
u8 fw_status=0;
|
||||
rx_dma_status = rtw_read32(padapter,REG_RXDMA_STATUS);
|
||||
if(rx_dma_status!= 0x00){
|
||||
DBG_8192C("%s REG_RXDMA_STATUS:0x%08x \n",__FUNCTION__,rx_dma_status);
|
||||
rtw_write32(padapter,REG_RXDMA_STATUS,rx_dma_status);
|
||||
}
|
||||
fw_status = rtw_read8(padapter,REG_FMETHR);
|
||||
if(fw_status != 0x00)
|
||||
{
|
||||
if(fw_status == 1)
|
||||
DBG_8192C("%s REG_FW_STATUS (0x%02x), Read_Efuse_Fail !! \n",__FUNCTION__,fw_status);
|
||||
else if(fw_status == 2)
|
||||
DBG_8192C("%s REG_FW_STATUS (0x%02x), Condition_No_Match !! \n",__FUNCTION__,fw_status);
|
||||
}
|
||||
#if 0
|
||||
u32 regc50,regc58,reg824,reg800;
|
||||
regc50 = rtw_read32(padapter,0xc50);
|
||||
regc58 = rtw_read32(padapter,0xc58);
|
||||
reg824 = rtw_read32(padapter,0x824);
|
||||
reg800 = rtw_read32(padapter,0x800);
|
||||
if( ((regc50&0xFFFFFF00)!= 0x69543400)||
|
||||
((regc58&0xFFFFFF00)!= 0x69543400)||
|
||||
(((reg824&0xFFFFFF00)!= 0x00390000)&&(((reg824&0xFFFFFF00)!= 0x80390000)))||
|
||||
( ((reg800&0xFFFFFF00)!= 0x03040000)&&((reg800&0xFFFFFF00)!= 0x83040000)))
|
||||
{
|
||||
DBG_8192C("%s regc50:0x%08x, regc58:0x%08x, reg824:0x%08x, reg800:0x%08x,\n", __FUNCTION__,
|
||||
regc50, regc58, reg824, reg800);
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (psrtpriv->dbg_trigger_point == SRESET_TGP_LINK_STATUS) {
|
||||
psrtpriv->dbg_trigger_point = SRESET_TGP_NULL;
|
||||
rtw_hal_sreset_reset(padapter);
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -39,7 +39,7 @@ void dump_txrpt_ccx_88e(void *buf)
|
|||
, __func__
|
||||
, txrpt_ccx->tag1, txrpt_ccx->pkt_num, txrpt_ccx->txdma_underflow, txrpt_ccx->int_bt, txrpt_ccx->int_tri, txrpt_ccx->int_ccx
|
||||
, txrpt_ccx->mac_id, txrpt_ccx->pkt_ok, txrpt_ccx->bmc
|
||||
, txrpt_ccx->retry_cnt, txrpt_ccx->lifetime_over, txrpt_ccx->retry_over
|
||||
, txrpt_ccx->retry_cnt, txrpt_ccx->lifetime_over, txrpt_ccx->retry_over
|
||||
, txrpt_ccx_qtime_88e(txrpt_ccx)
|
||||
, txrpt_ccx->final_data_rate
|
||||
, txrpt_ccx->qsel, txrpt_ccx_sw_88e(txrpt_ccx)
|
||||
|
@ -71,16 +71,16 @@ void _dbg_dump_tx_info(struct adapter *padapter,int frame_tag,struct tx_desc *pt
|
|||
|
||||
if(bDumpTxPkt ==1){//dump txdesc for data frame
|
||||
DBG_871X("dump tx_desc for data frame\n");
|
||||
if((frame_tag&0x0f) == DATA_FRAMETAG){
|
||||
bDumpTxDesc = _TRUE;
|
||||
if((frame_tag&0x0f) == DATA_FRAMETAG){
|
||||
bDumpTxDesc = _TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(bDumpTxPkt ==2){//dump txdesc for mgnt frame
|
||||
DBG_871X("dump tx_desc for mgnt frame\n");
|
||||
if((frame_tag&0x0f) == MGNT_FRAMETAG){
|
||||
bDumpTxDesc = _TRUE;
|
||||
if((frame_tag&0x0f) == MGNT_FRAMETAG){
|
||||
bDumpTxDesc = _TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(bDumpTxPkt ==3){//dump early info
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ void _dbg_dump_tx_info(struct adapter *padapter,int frame_tag,struct tx_desc *pt
|
|||
|
||||
//#define DBG_EMINFO
|
||||
|
||||
#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1
|
||||
#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1
|
||||
#define EARLY_MODE_MAX_PKT_NUM 10
|
||||
#else
|
||||
#define EARLY_MODE_MAX_PKT_NUM 5
|
||||
|
@ -122,7 +122,7 @@ void _dbg_dump_tx_info(struct adapter *padapter,int frame_tag,struct tx_desc *pt
|
|||
|
||||
|
||||
struct EMInfo{
|
||||
u8 EMPktNum;
|
||||
u8 EMPktNum;
|
||||
u16 EMPktLen[EARLY_MODE_MAX_PKT_NUM];
|
||||
};
|
||||
|
||||
|
@ -152,7 +152,7 @@ InsertEMContent_8188E(
|
|||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1
|
||||
SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum);
|
||||
|
||||
|
@ -197,7 +197,7 @@ InsertEMContent_8188E(
|
|||
dwtmp += pEMInfo->EMPktLen[9];
|
||||
}
|
||||
SET_EARLYMODE_LEN4(VirtualAddress, dwtmp);
|
||||
#else
|
||||
#else
|
||||
SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum);
|
||||
SET_EARLYMODE_LEN0(VirtualAddress, pEMInfo->EMPktLen[0]);
|
||||
SET_EARLYMODE_LEN1(VirtualAddress, pEMInfo->EMPktLen[1]);
|
||||
|
@ -205,7 +205,7 @@ InsertEMContent_8188E(
|
|||
SET_EARLYMODE_LEN2_2(VirtualAddress, pEMInfo->EMPktLen[2]>>4);
|
||||
SET_EARLYMODE_LEN3(VirtualAddress, pEMInfo->EMPktLen[3]);
|
||||
SET_EARLYMODE_LEN4(VirtualAddress, pEMInfo->EMPktLen[4]);
|
||||
#endif
|
||||
#endif
|
||||
//RT_PRINT_DATA(COMP_SEND, DBG_LOUD, "EMHdr:", VirtualAddress, 8);
|
||||
|
||||
}
|
||||
|
@ -218,34 +218,34 @@ void UpdateEarlyModeInfo8188E(struct xmit_priv *pxmitpriv,struct xmit_buf *pxmit
|
|||
int index,j;
|
||||
u16 offset,pktlen;
|
||||
PTXDESC ptxdesc;
|
||||
|
||||
|
||||
u8 *pmem,*pEMInfo_mem;
|
||||
s8 node_num_0=0,node_num_1=0;
|
||||
struct EMInfo eminfo;
|
||||
struct agg_pkt_info *paggpkt;
|
||||
struct xmit_frame *pframe = (struct xmit_frame*)pxmitbuf->priv_data;
|
||||
pmem= pframe->buf_addr;
|
||||
|
||||
#ifdef DBG_EMINFO
|
||||
struct xmit_frame *pframe = (struct xmit_frame*)pxmitbuf->priv_data;
|
||||
pmem= pframe->buf_addr;
|
||||
|
||||
#ifdef DBG_EMINFO
|
||||
DBG_8192C("\n%s ==> agg_num:%d\n",__FUNCTION__, pframe->agg_num);
|
||||
for(index=0;index<pframe->agg_num;index++){
|
||||
offset = pxmitpriv->agg_pkt[index].offset;
|
||||
offset = pxmitpriv->agg_pkt[index].offset;
|
||||
pktlen = pxmitpriv->agg_pkt[index].pkt_len;
|
||||
DBG_8192C("%s ==> agg_pkt[%d].offset=%d\n",__FUNCTION__,index,offset);
|
||||
DBG_8192C("%s ==> agg_pkt[%d].pkt_len=%d\n",__FUNCTION__,index,pktlen);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM)
|
||||
{
|
||||
{
|
||||
node_num_0 = pframe->agg_num;
|
||||
node_num_1= EARLY_MODE_MAX_PKT_NUM-1;
|
||||
}
|
||||
|
||||
|
||||
for(index=0;index<pframe->agg_num;index++){
|
||||
|
||||
offset = pxmitpriv->agg_pkt[index].offset;
|
||||
pktlen = pxmitpriv->agg_pkt[index].pkt_len;
|
||||
pktlen = pxmitpriv->agg_pkt[index].pkt_len;
|
||||
|
||||
_rtw_memset(&eminfo,0,sizeof(struct EMInfo));
|
||||
if( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM){
|
||||
|
@ -255,38 +255,36 @@ void UpdateEarlyModeInfo8188E(struct xmit_priv *pxmitpriv,struct xmit_buf *pxmit
|
|||
}
|
||||
else{
|
||||
eminfo.EMPktNum = node_num_1;
|
||||
node_num_1--;
|
||||
}
|
||||
node_num_1--;
|
||||
}
|
||||
}
|
||||
else{
|
||||
eminfo.EMPktNum = pframe->agg_num-(index+1);
|
||||
}
|
||||
eminfo.EMPktNum = pframe->agg_num-(index+1);
|
||||
}
|
||||
for(j=0;j< eminfo.EMPktNum ;j++){
|
||||
eminfo.EMPktLen[j] = pxmitpriv->agg_pkt[index+1+j].pkt_len+4;// 4 bytes CRC
|
||||
}
|
||||
|
||||
|
||||
if(pmem){
|
||||
if(index==0){
|
||||
ptxdesc = (PTXDESC)(pmem);
|
||||
pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE;
|
||||
pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE;
|
||||
}
|
||||
else{
|
||||
pmem = pmem + pxmitpriv->agg_pkt[index-1].offset;
|
||||
ptxdesc = (PTXDESC)(pmem);
|
||||
pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE;
|
||||
pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE;
|
||||
}
|
||||
|
||||
|
||||
#ifdef DBG_EMINFO
|
||||
DBG_8192C("%s ==> desc.pkt_len=%d\n",__FUNCTION__,ptxdesc->pktlen);
|
||||
#endif
|
||||
InsertEMContent_8188E(&eminfo,pEMInfo_mem);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
_rtw_memset(pxmitpriv->agg_pkt,0,sizeof(struct agg_pkt_info)*MAX_AGG_PKT_NUM);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
|
||||
//================================================================================
|
||||
// LED_819xUsb routines.
|
||||
// LED_819xUsb routines.
|
||||
//================================================================================
|
||||
|
||||
//
|
||||
|
@ -43,7 +43,7 @@
|
|||
//
|
||||
void
|
||||
SwLedOn(
|
||||
struct adapter *padapter,
|
||||
struct adapter *padapter,
|
||||
PLED_871x pLed
|
||||
)
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ SwLedOn(
|
|||
|
||||
LedCfg = rtw_read8(padapter, REG_LEDCFG2);
|
||||
switch(pLed->LedPin)
|
||||
{
|
||||
{
|
||||
case LED_PIN_LED0:
|
||||
rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0xf0)|BIT5|BIT6); // SW control led0 on.
|
||||
break;
|
||||
|
@ -69,7 +69,7 @@ SwLedOn(
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
pLed->bLedOn = _TRUE;
|
||||
}
|
||||
|
||||
|
@ -80,14 +80,14 @@ SwLedOn(
|
|||
//
|
||||
void
|
||||
SwLedOff(
|
||||
struct adapter *padapter,
|
||||
struct adapter *padapter,
|
||||
PLED_871x pLed
|
||||
)
|
||||
{
|
||||
u8 LedCfg;
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
|
||||
if((padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE))
|
||||
if((padapter->bSurpriseRemoved == _TRUE) || ( padapter->bDriverStopped == _TRUE))
|
||||
{
|
||||
goto exit;
|
||||
}
|
||||
|
@ -100,11 +100,11 @@ SwLedOff(
|
|||
case LED_PIN_LED0:
|
||||
if(pHalData->bLedOpenDrain == _TRUE) // Open-drain arrangement for controlling the LED)
|
||||
{
|
||||
LedCfg &= 0x90; // Set to software control.
|
||||
rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3));
|
||||
LedCfg &= 0x90; // Set to software control.
|
||||
rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3));
|
||||
LedCfg = rtw_read8(padapter, REG_MAC_PINMUX_CFG);
|
||||
LedCfg &= 0xFE;
|
||||
rtw_write8(padapter, REG_MAC_PINMUX_CFG, LedCfg);
|
||||
rtw_write8(padapter, REG_MAC_PINMUX_CFG, LedCfg);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -122,7 +122,7 @@ SwLedOff(
|
|||
}
|
||||
exit:
|
||||
pLed->bLedOn = _FALSE;
|
||||
|
||||
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
|
@ -167,4 +167,3 @@ rtl8188eu_DeInitSwLeds(
|
|||
DeInitLed871x( &(ledpriv->SwLed0) );
|
||||
DeInitLed871x( &(ledpriv->SwLed1) );
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -58,7 +58,7 @@ int rtl8188eu_init_recv_priv(struct adapter *padapter)
|
|||
int i, res = _SUCCESS;
|
||||
struct recv_buf *precvbuf;
|
||||
|
||||
#ifdef CONFIG_RECV_THREAD_MODE
|
||||
#ifdef CONFIG_RECV_THREAD_MODE
|
||||
_rtw_init_sema(&precvpriv->recv_sema, 0);//will be removed
|
||||
_rtw_init_sema(&precvpriv->terminate_recvthread_sema, 0);//will be removed
|
||||
#endif
|
||||
|
@ -208,5 +208,3 @@ void rtl8188eu_free_recv_priv (struct adapter *padapter)
|
|||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/******************************************************************************
|
||||
*
|
||||
* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
|
@ -52,7 +52,7 @@ u8 urb_zero_packet_chk(struct adapter *padapter, int sz)
|
|||
u8 blnSetTxDescOffset;
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
blnSetTxDescOffset = (((sz + TXDESC_SIZE) % pHalData->UsbBulkOutSize) ==0)?1:0;
|
||||
|
||||
|
||||
return blnSetTxDescOffset;
|
||||
}
|
||||
|
||||
|
@ -65,12 +65,12 @@ void rtl8188eu_cal_txdesc_chksum(struct tx_desc *ptxdesc)
|
|||
|
||||
//Clear first
|
||||
ptxdesc->txdw7 &= cpu_to_le32(0xffff0000);
|
||||
|
||||
|
||||
for(index = 0 ; index < count ; index++){
|
||||
checksum = checksum ^ le16_to_cpu(*(usPtr + index));
|
||||
}
|
||||
|
||||
ptxdesc->txdw7 |= cpu_to_le32(0x0000ffff&checksum);
|
||||
ptxdesc->txdw7 |= cpu_to_le32(0x0000ffff&checksum);
|
||||
|
||||
}
|
||||
//
|
||||
|
@ -133,15 +133,15 @@ void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc)
|
|||
if ((pattrib->encrypt > 0) && !pattrib->bswenc)
|
||||
{
|
||||
switch (pattrib->encrypt)
|
||||
{
|
||||
{
|
||||
//SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES
|
||||
case _WEP40_:
|
||||
case _WEP104_:
|
||||
ptxdesc->txdw1 |= cpu_to_le32((0x01<<SEC_TYPE_SHT)&0x00c00000);
|
||||
ptxdesc->txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT);
|
||||
break;
|
||||
break;
|
||||
case _TKIP_:
|
||||
case _TKIP_WTMIC_:
|
||||
case _TKIP_WTMIC_:
|
||||
ptxdesc->txdw1 |= cpu_to_le32((0x01<<SEC_TYPE_SHT)&0x00c00000);
|
||||
ptxdesc->txdw2 |= cpu_to_le32(0x7 << AMPDU_DENSITY_SHT);
|
||||
break;
|
||||
|
@ -158,16 +158,16 @@ void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc)
|
|||
case _NO_PRIVACY_:
|
||||
default:
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void fill_txdesc_vcs(struct pkt_attrib *pattrib, u32 *pdw)
|
||||
{
|
||||
//DBG_8192C("cvs_mode=%d\n", pattrib->vcs_mode);
|
||||
//DBG_8192C("cvs_mode=%d\n", pattrib->vcs_mode);
|
||||
|
||||
switch(pattrib->vcs_mode)
|
||||
{
|
||||
|
@ -179,7 +179,7 @@ void fill_txdesc_vcs(struct pkt_attrib *pattrib, u32 *pdw)
|
|||
break;
|
||||
case NONE_VCS:
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
if(pattrib->vcs_mode) {
|
||||
|
@ -211,7 +211,7 @@ void fill_txdesc_phy(struct pkt_attrib *pattrib, u32 *pdw)
|
|||
*pdw |= (pattrib->bwmode&HT_CHANNEL_WIDTH_40)? cpu_to_le32(BIT(25)):0;
|
||||
|
||||
if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER)
|
||||
*pdw |= cpu_to_le32((0x01<<DATA_SC_SHT)&0x003f0000);
|
||||
*pdw |= cpu_to_le32((0x01<<DATA_SC_SHT)&0x003f0000);
|
||||
else if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER)
|
||||
*pdw |= cpu_to_le32((0x02<<DATA_SC_SHT)&0x003f0000);
|
||||
else if(pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_DONT_CARE)
|
||||
|
@ -223,12 +223,12 @@ void fill_txdesc_phy(struct pkt_attrib *pattrib, u32 *pdw)
|
|||
|
||||
|
||||
static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bagg_pkt)
|
||||
{
|
||||
{
|
||||
int pull=0;
|
||||
uint qsel;
|
||||
u8 data_rate,pwr_status,offset;
|
||||
struct adapter *padapter = pxmitframe->padapter;
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
struct pkt_attrib *pattrib = &pxmitframe->attrib;
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
//struct dm_priv *pdmpriv = &pHalData->dmpriv;
|
||||
|
@ -236,16 +236,16 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag
|
|||
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
|
||||
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
|
||||
sint bmcst = IS_MCAST(pattrib->ra);
|
||||
|
||||
|
||||
#ifdef CONFIG_P2P
|
||||
struct wifidirect_info* pwdinfo = &padapter->wdinfo;
|
||||
#endif //CONFIG_P2P
|
||||
|
||||
#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX
|
||||
#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX
|
||||
if (padapter->registrypriv.mp_mode == 0)
|
||||
{
|
||||
if((!bagg_pkt) &&(urb_zero_packet_chk(padapter, sz)==0))//(sz %512) != 0
|
||||
//if((!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE))
|
||||
//if((!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE))
|
||||
{
|
||||
ptxdesc = (struct tx_desc *)(pmem+PACKET_OFFSET_SZ);
|
||||
//DBG_8192C("==> non-agg-pkt,shift pointer...\n");
|
||||
|
@ -255,17 +255,17 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX
|
||||
|
||||
_rtw_memset(ptxdesc, 0, sizeof(struct tx_desc));
|
||||
|
||||
|
||||
//4 offset 0
|
||||
ptxdesc->txdw0 |= cpu_to_le32(OWN | FSG | LSG);
|
||||
//DBG_8192C("%s==> pkt_len=%d,bagg_pkt=%02x\n",__FUNCTION__,sz,bagg_pkt);
|
||||
ptxdesc->txdw0 |= cpu_to_le32(sz & 0x0000ffff);//update TXPKTSIZE
|
||||
|
||||
offset = TXDESC_SIZE + OFFSET_SZ;
|
||||
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
if(bagg_pkt){
|
||||
offset += EARLY_MODE_INFO_SIZE ;//0x28
|
||||
offset = TXDESC_SIZE + OFFSET_SZ;
|
||||
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
if(bagg_pkt){
|
||||
offset += EARLY_MODE_INFO_SIZE ;//0x28
|
||||
}
|
||||
#endif
|
||||
//DBG_8192C("%s==>offset(0x%02x) \n",__FUNCTION__,offset);
|
||||
|
@ -277,11 +277,11 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
if (padapter->registrypriv.mp_mode == 0)
|
||||
{
|
||||
if(!bagg_pkt){
|
||||
if((pull) && (pxmitframe->pkt_offset>0)) {
|
||||
pxmitframe->pkt_offset = pxmitframe->pkt_offset -1;
|
||||
if((pull) && (pxmitframe->pkt_offset>0)) {
|
||||
pxmitframe->pkt_offset = pxmitframe->pkt_offset -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
//DBG_8192C("%s, pkt_offset=0x%02x\n",__FUNCTION__,pxmitframe->pkt_offset);
|
||||
|
||||
|
@ -294,7 +294,7 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
|
||||
if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG)
|
||||
{
|
||||
//DBG_8192C("pxmitframe->frame_tag == DATA_FRAMETAG\n");
|
||||
//DBG_8192C("pxmitframe->frame_tag == DATA_FRAMETAG\n");
|
||||
|
||||
//offset 4
|
||||
ptxdesc->txdw1 |= cpu_to_le32(pattrib->mac_id&0x3F);
|
||||
|
@ -309,20 +309,20 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
|
||||
if(pattrib->ampdu_en==_TRUE){
|
||||
ptxdesc->txdw2 |= cpu_to_le32(AGG_EN);//AGG EN
|
||||
|
||||
|
||||
//SET_TX_DESC_MAX_AGG_NUM_88E(pDesc, 0x1F);
|
||||
//SET_TX_DESC_MCSG1_MAX_LEN_88E(pDesc, 0x6);
|
||||
//SET_TX_DESC_MCSG2_MAX_LEN_88E(pDesc, 0x6);
|
||||
//SET_TX_DESC_MCSG3_MAX_LEN_88E(pDesc, 0x6);
|
||||
//SET_TX_DESC_MCS7_SGI_MAX_LEN_88E(pDesc, 0x6);
|
||||
ptxdesc->txdw6 = 0x6666f800;
|
||||
ptxdesc->txdw6 = 0x6666f800;
|
||||
}
|
||||
else{
|
||||
ptxdesc->txdw2 |= cpu_to_le32(AGG_BK);//AGG BK
|
||||
}
|
||||
|
||||
|
||||
//offset 8
|
||||
|
||||
|
||||
|
||||
//offset 12
|
||||
ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<< SEQ_SHT)&0x0FFF0000);
|
||||
|
@ -346,49 +346,49 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
(pattrib->dhcp_pkt != 1))
|
||||
{
|
||||
//Non EAP & ARP & DHCP type data packet
|
||||
|
||||
|
||||
fill_txdesc_vcs(pattrib, &ptxdesc->txdw4);
|
||||
fill_txdesc_phy(pattrib, &ptxdesc->txdw4);
|
||||
|
||||
ptxdesc->txdw4 |= cpu_to_le32(0x00000008);//RTS Rate=24M
|
||||
ptxdesc->txdw5 |= cpu_to_le32(0x0001ff00);//DATA/RTS Rate FB LMT
|
||||
ptxdesc->txdw5 |= cpu_to_le32(0x0001ff00);//DATA/RTS Rate FB LMT
|
||||
|
||||
#if (RATE_ADAPTIVE_SUPPORT == 1)
|
||||
#if (RATE_ADAPTIVE_SUPPORT == 1)
|
||||
if(pattrib->ht_en){
|
||||
if( ODM_RA_GetShortGI_8188E(&pHalData->odmpriv,pattrib->mac_id))
|
||||
ptxdesc->txdw5 |= cpu_to_le32(SGI);//SGI
|
||||
}
|
||||
|
||||
data_rate =ODM_RA_GetDecisionRate_8188E(&pHalData->odmpriv,pattrib->mac_id);
|
||||
|
||||
data_rate =ODM_RA_GetDecisionRate_8188E(&pHalData->odmpriv,pattrib->mac_id);
|
||||
//for debug
|
||||
#if 1
|
||||
#if 1
|
||||
if(padapter->fix_rate!= 0xFF){
|
||||
|
||||
|
||||
data_rate = padapter->fix_rate;
|
||||
ptxdesc->txdw4 |= cpu_to_le32(DISDATAFB);
|
||||
//printk("==> fix data_rate:0x%02x\n",data_rate);
|
||||
}
|
||||
#endif
|
||||
|
||||
ptxdesc->txdw5 |= cpu_to_le32(data_rate & 0x3F);
|
||||
|
||||
ptxdesc->txdw5 |= cpu_to_le32(data_rate & 0x3F);
|
||||
|
||||
#if (POWER_TRAINING_ACTIVE==1)
|
||||
pwr_status = ODM_RA_GetHwPwrStatus_8188E(&pHalData->odmpriv,pattrib->mac_id);
|
||||
ptxdesc->txdw4 |=cpu_to_le32( (pwr_status & 0x7)<< PWR_STATUS_SHT);
|
||||
#endif //(POWER_TRAINING_ACTIVE==1)
|
||||
#else//if (RATE_ADAPTIVE_SUPPORT == 1)
|
||||
|
||||
#else//if (RATE_ADAPTIVE_SUPPORT == 1)
|
||||
|
||||
if(pattrib->ht_en)
|
||||
ptxdesc->txdw5 |= cpu_to_le32(SGI);//SGI
|
||||
|
||||
data_rate = 0x13; //default rate: MCS7
|
||||
data_rate = 0x13; //default rate: MCS7
|
||||
if(padapter->fix_rate!= 0xFF){//rate control by iwpriv
|
||||
data_rate = padapter->fix_rate;
|
||||
data_rate = padapter->fix_rate;
|
||||
ptxdesc->txdw4 | cpu_to_le32(DISDATAFB);
|
||||
}
|
||||
ptxdesc->txdw5 |= cpu_to_le32(data_rate & 0x3F);
|
||||
ptxdesc->txdw5 |= cpu_to_le32(data_rate & 0x3F);
|
||||
|
||||
#endif//if (RATE_ADAPTIVE_SUPPORT == 1)
|
||||
#endif//if (RATE_ADAPTIVE_SUPPORT == 1)
|
||||
|
||||
}
|
||||
else
|
||||
|
@ -397,7 +397,7 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
// Use the 1M data rate to send the EAP/ARP packet.
|
||||
// This will maybe make the handshake smooth.
|
||||
|
||||
ptxdesc->txdw2 |= cpu_to_le32(AGG_BK);//AGG BK
|
||||
ptxdesc->txdw2 |= cpu_to_le32(AGG_BK);//AGG BK
|
||||
|
||||
if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT)
|
||||
ptxdesc->txdw4 |= cpu_to_le32(BIT(24));// DATA_SHORT
|
||||
|
@ -417,19 +417,19 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
}
|
||||
else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG)
|
||||
{
|
||||
//DBG_8192C("pxmitframe->frame_tag == MGNT_FRAMETAG\n");
|
||||
|
||||
//offset 4
|
||||
//DBG_8192C("pxmitframe->frame_tag == MGNT_FRAMETAG\n");
|
||||
|
||||
//offset 4
|
||||
ptxdesc->txdw1 |= cpu_to_le32(pattrib->mac_id&0x3f);
|
||||
|
||||
|
||||
qsel = (uint)(pattrib->qsel&0x0000001f);
|
||||
ptxdesc->txdw1 |= cpu_to_le32((qsel<<QSEL_SHT)&0x00001f00);
|
||||
|
||||
ptxdesc->txdw1 |= cpu_to_le32((pattrib->raid<< RATE_ID_SHT) & 0x000f0000);
|
||||
|
||||
|
||||
//fill_txdesc_sectype(pattrib, ptxdesc);
|
||||
|
||||
//offset 8
|
||||
|
||||
//offset 8
|
||||
#ifdef CONFIG_XMIT_ACK
|
||||
//CCX-TXRPT ack for xmit mgmt frames.
|
||||
if (pxmitframe->ack_report) {
|
||||
|
@ -445,7 +445,7 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
|
||||
//offset 12
|
||||
ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<<SEQ_SHT)&0x0FFF0000);
|
||||
|
||||
|
||||
//offset 20
|
||||
ptxdesc->txdw5 |= cpu_to_le32(RTY_LMT_EN);//retry limit enable
|
||||
if(pattrib->retry_ctrl == _TRUE)
|
||||
|
@ -472,12 +472,12 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
{
|
||||
DBG_8192C("pxmitframe->frame_tag = %d\n", pxmitframe->frame_tag);
|
||||
|
||||
//offset 4
|
||||
//offset 4
|
||||
ptxdesc->txdw1 |= cpu_to_le32((4)&0x3f);//CAM_ID(MAC_ID)
|
||||
|
||||
ptxdesc->txdw1 |= cpu_to_le32((6<< RATE_ID_SHT) & 0x000f0000);//raid
|
||||
|
||||
//offset 8
|
||||
//offset 8
|
||||
|
||||
//offset 12
|
||||
ptxdesc->txdw3 |= cpu_to_le32((pattrib->seqnum<<SEQ_SHT)&0x0fff0000);
|
||||
|
@ -495,23 +495,23 @@ if (padapter->registrypriv.mp_mode == 0)
|
|||
// (3) Use HW Qos SEQ to control the seq num of Ext port non-Qos packets.
|
||||
// 2010.06.23. Added by tynli.
|
||||
if(!pattrib->qos_en)
|
||||
{
|
||||
{
|
||||
//ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number
|
||||
//ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29.
|
||||
|
||||
ptxdesc->txdw3 |= cpu_to_le32(EN_HWSEQ); // Hw set sequence number
|
||||
ptxdesc->txdw4 |= cpu_to_le32(HW_SSN); // Hw set sequence number
|
||||
|
||||
ptxdesc->txdw4 |= cpu_to_le32(HW_SSN); // Hw set sequence number
|
||||
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HW_ANTENNA_DIVERSITY //CONFIG_ANTENNA_DIVERSITY
|
||||
#ifdef CONFIG_HW_ANTENNA_DIVERSITY //CONFIG_ANTENNA_DIVERSITY
|
||||
ODM_SetTxAntByTxInfo_88E(&pHalData->odmpriv, pmem, pattrib->mac_id);
|
||||
#endif
|
||||
|
||||
rtl8188eu_cal_txdesc_chksum(ptxdesc);
|
||||
_dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc);
|
||||
_dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc);
|
||||
return pull;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -606,18 +606,18 @@ static s32 rtw_dump_xframe(struct adapter *padapter, struct xmit_frame *pxmitfra
|
|||
mem_addr = pxmitframe->buf_addr;
|
||||
|
||||
RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_dump_xframe()\n"));
|
||||
|
||||
|
||||
for (t = 0; t < pattrib->nr_frags; t++)
|
||||
{
|
||||
if (inner_ret != _SUCCESS && ret == _SUCCESS)
|
||||
ret = _FAIL;
|
||||
|
||||
|
||||
if (t != (pattrib->nr_frags - 1))
|
||||
{
|
||||
RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("pattrib->nr_frags=%d\n", pattrib->nr_frags));
|
||||
|
||||
sz = pxmitpriv->frag_len;
|
||||
sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len);
|
||||
sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len);
|
||||
}
|
||||
else //no frag
|
||||
{
|
||||
|
@ -625,12 +625,12 @@ static s32 rtw_dump_xframe(struct adapter *padapter, struct xmit_frame *pxmitfra
|
|||
}
|
||||
|
||||
pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE);
|
||||
|
||||
|
||||
if(pull)
|
||||
{
|
||||
mem_addr += PACKET_OFFSET_SZ; //pull txdesc head
|
||||
|
||||
//pxmitbuf ->pbuf = mem_addr;
|
||||
|
||||
//pxmitbuf ->pbuf = mem_addr;
|
||||
pxmitframe->buf_addr = mem_addr;
|
||||
|
||||
w_sz = sz + TXDESC_SIZE;
|
||||
|
@ -638,10 +638,10 @@ static s32 rtw_dump_xframe(struct adapter *padapter, struct xmit_frame *pxmitfra
|
|||
else
|
||||
{
|
||||
w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ;
|
||||
}
|
||||
#ifdef CONFIG_IOL_IOREG_CFG_DBG
|
||||
}
|
||||
#ifdef CONFIG_IOL_IOREG_CFG_DBG
|
||||
rtw_IOL_cmd_buf_dump(padapter,w_sz,pxmitframe->buf_addr);
|
||||
#endif
|
||||
#endif
|
||||
ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe);
|
||||
|
||||
#ifdef CONFIG_XMIT_THREAD_MODE
|
||||
|
@ -655,19 +655,19 @@ static s32 rtw_dump_xframe(struct adapter *padapter, struct xmit_frame *pxmitfra
|
|||
rtw_count_tx_stats(padapter, pxmitframe, sz);
|
||||
|
||||
RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("rtw_write_port, w_sz=%d\n", w_sz));
|
||||
//DBG_8192C("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority);
|
||||
//DBG_8192C("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority);
|
||||
|
||||
mem_addr += w_sz;
|
||||
|
||||
mem_addr = (u8 *)RND4(((SIZE_PTR)(mem_addr)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
|
||||
|
||||
if (ret != _SUCCESS)
|
||||
rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_UNKNOWN);
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -736,7 +736,7 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
//3 1. pick up first frame
|
||||
do {
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
|
||||
|
||||
pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry);
|
||||
if (pxmitframe == NULL) {
|
||||
// no more xmit frame, release xmit buffer
|
||||
|
@ -807,15 +807,15 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
//psta = pfirstframe->attrib.psta;
|
||||
psta = rtw_get_stainfo(&padapter->stapriv, pfirstframe->attrib.ra);
|
||||
if(pfirstframe->attrib.psta != psta){
|
||||
DBG_871X("%s, pattrib->psta(%p) != psta(%p)\n", __func__, pfirstframe->attrib.psta, psta);
|
||||
DBG_871X("%s, pattrib->psta(%p) != psta(%p)\n", __func__, pfirstframe->attrib.psta, psta);
|
||||
}
|
||||
if (psta == NULL) {
|
||||
DBG_8192C("rtw_xmit_classifier: psta == NULL\n");
|
||||
if (psta == NULL) {
|
||||
DBG_8192C("rtw_xmit_classifier: psta == NULL\n");
|
||||
}
|
||||
if(!(psta->state &_FW_LINKED)){
|
||||
DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state);
|
||||
DBG_871X("%s, psta->state(0x%x) != _FW_LINKED\n", __func__, psta->state);
|
||||
}
|
||||
|
||||
|
||||
switch (pfirstframe->attrib.priority) {
|
||||
case 1:
|
||||
case 2:
|
||||
|
@ -849,7 +849,7 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
|
||||
xmitframe_phead = get_list_head(&ptxservq->sta_pending);
|
||||
xmitframe_plist = get_next(xmitframe_phead);
|
||||
|
||||
|
||||
while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE)
|
||||
{
|
||||
pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list);
|
||||
|
@ -860,17 +860,17 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
pxmitframe->pkt_offset = 1;// not first frame of aggregation,reserve offset for EM Info
|
||||
#else
|
||||
pxmitframe->pkt_offset = 0; // not first frame of aggregation, no need to reserve offset
|
||||
#endif
|
||||
#endif
|
||||
|
||||
len = xmitframe_need_length(pxmitframe) + TXDESC_SIZE +(pxmitframe->pkt_offset*PACKET_OFFSET_SZ);
|
||||
|
||||
|
||||
if (_RND8(pbuf + len) > MAX_XMITBUF_SZ)
|
||||
//if (_RND8(pbuf + len) > (MAX_XMITBUF_SZ/2))//to do : for TX TP finial tune , Georgia 2012-0323
|
||||
{
|
||||
//DBG_8192C("%s....len> MAX_XMITBUF_SZ\n",__FUNCTION__);
|
||||
pxmitframe->agg_num = 1;
|
||||
pxmitframe->pkt_offset = 1;
|
||||
break;
|
||||
pxmitframe->pkt_offset = 1;
|
||||
break;
|
||||
}
|
||||
rtw_list_delete(&pxmitframe->list);
|
||||
ptxservq->qcnt--;
|
||||
|
@ -899,7 +899,7 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
|
||||
// pxmitframe->pxmitbuf = pxmitbuf;
|
||||
pxmitframe->buf_addr = pxmitbuf->pbuf + pbuf;
|
||||
|
||||
|
||||
if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) {
|
||||
DBG_871X("%s coalesce failed \n",__FUNCTION__);
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
|
@ -912,7 +912,7 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
|
||||
// (len - TXDESC_SIZE) == pxmitframe->attrib.last_txcmdsz
|
||||
update_txdesc(pxmitframe, pxmitframe->buf_addr, pxmitframe->attrib.last_txcmdsz,_TRUE);
|
||||
|
||||
|
||||
// don't need xmitframe any more
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
|
||||
|
@ -922,9 +922,9 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
|
||||
|
||||
pfirstframe->agg_num++;
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len);
|
||||
pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz;
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len);
|
||||
pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz;
|
||||
#endif
|
||||
if (MAX_TX_AGG_PACKET_NUMBER == pfirstframe->agg_num)
|
||||
break;
|
||||
|
@ -965,15 +965,15 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
#endif // CONFIG_USE_USB_BUFFER_ALLOC_TX
|
||||
|
||||
update_txdesc(pfirstframe, pfirstframe->buf_addr, pfirstframe->attrib.last_txcmdsz,_TRUE);
|
||||
|
||||
|
||||
#ifdef CONFIG_TX_EARLY_MODE
|
||||
//prepare EM info for first frame, agg_num value start from 1
|
||||
pxmitpriv->agg_pkt[0].offset = _RND8(pfirstframe->attrib.last_txcmdsz +TXDESC_SIZE +(pfirstframe->pkt_offset*PACKET_OFFSET_SZ));
|
||||
pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce
|
||||
pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce
|
||||
|
||||
UpdateEarlyModeInfo8188E(pxmitpriv,pxmitbuf );
|
||||
#endif
|
||||
|
||||
|
||||
//3 4. write xmit buffer to USB FIFO
|
||||
ff_hwaddr = rtw_get_ff_hwaddr(pfirstframe);
|
||||
//DBG_8192C("%s ===================================== write port,buf_size(%d) \n",__FUNCTION__,pbuf_tail);
|
||||
|
@ -984,8 +984,8 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
//3 5. update statisitc
|
||||
pbuf_tail -= (pfirstframe->agg_num * TXDESC_SIZE);
|
||||
pbuf_tail -= (pfirstframe->pkt_offset * PACKET_OFFSET_SZ);
|
||||
|
||||
|
||||
|
||||
|
||||
rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail);
|
||||
|
||||
rtw_free_xmitframe(pxmitpriv, pfirstframe);
|
||||
|
@ -996,11 +996,11 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
#else
|
||||
|
||||
s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf)
|
||||
{
|
||||
{
|
||||
|
||||
struct hw_xmit *phwxmits;
|
||||
sint hwentry;
|
||||
struct xmit_frame *pxmitframe=NULL;
|
||||
struct xmit_frame *pxmitframe=NULL;
|
||||
int res=_SUCCESS, xcnt = 0;
|
||||
|
||||
phwxmits = pxmitpriv->hwxmits;
|
||||
|
@ -1010,65 +1010,65 @@ s32 rtl8188eu_xmitframe_complete(struct adapter *padapter, struct xmit_priv *pxm
|
|||
|
||||
if(pxmitbuf==NULL)
|
||||
{
|
||||
pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv);
|
||||
pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv);
|
||||
if(!pxmitbuf)
|
||||
{
|
||||
return _FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
do
|
||||
{
|
||||
{
|
||||
pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry);
|
||||
|
||||
|
||||
if(pxmitframe)
|
||||
{
|
||||
pxmitframe->pxmitbuf = pxmitbuf;
|
||||
pxmitframe->pxmitbuf = pxmitbuf;
|
||||
|
||||
pxmitframe->buf_addr = pxmitbuf->pbuf;
|
||||
|
||||
pxmitbuf->priv_data = pxmitframe;
|
||||
pxmitbuf->priv_data = pxmitframe;
|
||||
|
||||
if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG)
|
||||
{
|
||||
{
|
||||
if(pxmitframe->attrib.priority<=15)//TID0~15
|
||||
{
|
||||
res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe);
|
||||
}
|
||||
}
|
||||
//DBG_8192C("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority);
|
||||
rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce
|
||||
rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce
|
||||
}
|
||||
|
||||
|
||||
|
||||
RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete(): rtw_dump_xframe\n"));
|
||||
|
||||
|
||||
|
||||
if(res == _SUCCESS)
|
||||
{
|
||||
rtw_dump_xframe(padapter, pxmitframe);
|
||||
rtw_dump_xframe(padapter, pxmitframe);
|
||||
}
|
||||
else
|
||||
{
|
||||
rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
}
|
||||
|
||||
|
||||
xcnt++;
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
rtw_free_xmitbuf(pxmitpriv, pxmitbuf);
|
||||
return _FALSE;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
}while(0/*xcnt < (NR_XMITFRAME >> 3)*/);
|
||||
|
||||
return _TRUE;
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1103,11 +1103,11 @@ static s32 pre_xmitframe(struct adapter *padapter, struct xmit_frame *pxmitframe
|
|||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
struct pkt_attrib *pattrib = &pxmitframe->attrib;
|
||||
struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
struct adapter *pbuddy_adapter = padapter->pbuddy_adapter;
|
||||
struct mlme_priv *pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv);
|
||||
struct mlme_priv *pbuddy_mlmepriv = &(pbuddy_adapter->mlmepriv);
|
||||
#endif
|
||||
|
||||
|
||||
_enter_critical_bh(&pxmitpriv->lock, &irqL);
|
||||
|
||||
//DBG_8192C("==> %s \n",__FUNCTION__);
|
||||
|
@ -1122,7 +1122,7 @@ static s32 pre_xmitframe(struct adapter *padapter, struct xmit_frame *pxmitframe
|
|||
if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE)
|
||||
goto enqueue;
|
||||
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
#ifdef CONFIG_CONCURRENT_MODE
|
||||
if (check_fwstate(pbuddy_mlmepriv, _FW_UNDER_SURVEY|_FW_UNDER_LINKING) == _TRUE)
|
||||
goto enqueue;
|
||||
#endif
|
||||
|
@ -1178,31 +1178,31 @@ s32 rtl8188eu_hal_xmit(struct adapter *padapter, struct xmit_frame *pxmitframe)
|
|||
|
||||
s32 rtl8188eu_hal_xmitframe_enqueue(struct adapter *padapter, struct xmit_frame *pxmitframe)
|
||||
{
|
||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
|
||||
s32 err;
|
||||
|
||||
if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS)
|
||||
|
||||
if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS)
|
||||
{
|
||||
rtw_free_xmitframe(pxmitpriv, pxmitframe);
|
||||
|
||||
// Trick, make the statistics correct
|
||||
pxmitpriv->tx_pkts--;
|
||||
pxmitpriv->tx_drop++;
|
||||
pxmitpriv->tx_drop++;
|
||||
}
|
||||
else
|
||||
{
|
||||
tasklet_hi_schedule(&pxmitpriv->xmit_tasklet);
|
||||
}
|
||||
|
||||
|
||||
return err;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
#ifdef CONFIG_HOSTAPD_MLME
|
||||
|
||||
static void rtl8188eu_hostap_mgnt_xmit_cb(struct urb *urb)
|
||||
{
|
||||
{
|
||||
struct sk_buff *skb = (struct sk_buff *)urb->context;
|
||||
|
||||
//DBG_8192C("%s\n", __FUNCTION__);
|
||||
|
@ -1213,23 +1213,23 @@ static void rtl8188eu_hostap_mgnt_xmit_cb(struct urb *urb)
|
|||
s32 rtl8188eu_hostap_mgnt_xmit_entry(struct adapter *padapter, _pkt *pkt)
|
||||
{
|
||||
u16 fc;
|
||||
int rc, len, pipe;
|
||||
int rc, len, pipe;
|
||||
unsigned int bmcst, tid, qsel;
|
||||
struct sk_buff *skb, *pxmit_skb;
|
||||
struct urb *urb;
|
||||
unsigned char *pxmitbuf;
|
||||
struct tx_desc *ptxdesc;
|
||||
struct rtw_ieee80211_hdr *tx_hdr;
|
||||
struct hostapd_priv *phostapdpriv = padapter->phostapdpriv;
|
||||
struct hostapd_priv *phostapdpriv = padapter->phostapdpriv;
|
||||
struct net_device *pnetdev = padapter->pnetdev;
|
||||
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
|
||||
struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter);
|
||||
struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter);
|
||||
|
||||
|
||||
|
||||
//DBG_8192C("%s\n", __FUNCTION__);
|
||||
|
||||
skb = pkt;
|
||||
|
||||
|
||||
len = skb->len;
|
||||
tx_hdr = (struct rtw_ieee80211_hdr *)(skb->data);
|
||||
fc = le16_to_cpu(tx_hdr->frame_ctl);
|
||||
|
@ -1250,42 +1250,42 @@ s32 rtl8188eu_hostap_mgnt_xmit_entry(struct adapter *padapter, _pkt *pkt)
|
|||
goto _exit;
|
||||
}
|
||||
|
||||
// ----- fill tx desc -----
|
||||
ptxdesc = (struct tx_desc *)pxmitbuf;
|
||||
// ----- fill tx desc -----
|
||||
ptxdesc = (struct tx_desc *)pxmitbuf;
|
||||
_rtw_memset(ptxdesc, 0, sizeof(*ptxdesc));
|
||||
|
||||
//offset 0
|
||||
ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff);
|
||||
|
||||
//offset 0
|
||||
ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff);
|
||||
ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<<OFFSET_SHT)&0x00ff0000);//default = 32 bytes for TX Desc
|
||||
ptxdesc->txdw0 |= cpu_to_le32(OWN | FSG | LSG);
|
||||
|
||||
if(bmcst)
|
||||
if(bmcst)
|
||||
{
|
||||
ptxdesc->txdw0 |= cpu_to_le32(BIT(24));
|
||||
}
|
||||
}
|
||||
|
||||
//offset 4
|
||||
//offset 4
|
||||
ptxdesc->txdw1 |= cpu_to_le32(0x00);//MAC_ID
|
||||
|
||||
ptxdesc->txdw1 |= cpu_to_le32((0x12<<QSEL_SHT)&0x00001f00);
|
||||
|
||||
ptxdesc->txdw1 |= cpu_to_le32((0x06<< 16) & 0x000f0000);//b mode
|
||||
|
||||
//offset 8
|
||||
//offset 8
|
||||
|
||||
//offset 12
|
||||
//offset 12
|
||||
ptxdesc->txdw3 |= cpu_to_le32((le16_to_cpu(tx_hdr->seq_ctl)<<16)&0xffff0000);
|
||||
|
||||
//offset 16
|
||||
//offset 16
|
||||
ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate
|
||||
|
||||
|
||||
//offset 20
|
||||
|
||||
|
||||
//HW append seq
|
||||
ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number
|
||||
ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29.
|
||||
|
||||
|
||||
|
||||
rtl8188eu_cal_txdesc_chksum(ptxdesc);
|
||||
// ----- end of fill tx desc -----
|
||||
|
@ -1299,14 +1299,14 @@ s32 rtl8188eu_hostap_mgnt_xmit_entry(struct adapter *padapter, _pkt *pkt)
|
|||
|
||||
|
||||
// ----- prepare urb for submit -----
|
||||
|
||||
|
||||
//translate DMA FIFO addr to pipehandle
|
||||
//pipe = ffaddr2pipehdl(pdvobj, MGT_QUEUE_INX);
|
||||
pipe = usb_sndbulkpipe(pdvobj->pusbdev, pHalData->Queue2EPNum[(u8)MGT_QUEUE_INX]&0x0f);
|
||||
|
||||
|
||||
usb_fill_bulk_urb(urb, pdvobj->pusbdev, pipe,
|
||||
pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb);
|
||||
|
||||
|
||||
urb->transfer_flags |= URB_ZERO_PACKET;
|
||||
usb_anchor_urb(urb, &phostapdpriv->anchored);
|
||||
rc = usb_submit_urb(urb, GFP_ATOMIC);
|
||||
|
@ -1316,12 +1316,11 @@ s32 rtl8188eu_hostap_mgnt_xmit_entry(struct adapter *padapter, _pkt *pkt)
|
|||
}
|
||||
usb_free_urb(urb);
|
||||
|
||||
|
||||
_exit:
|
||||
|
||||
|
||||
_exit:
|
||||
|
||||
rtw_skb_free(skb);
|
||||
return 0;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
1023
hal/usb_halinit.c
1023
hal/usb_halinit.c
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue