Commit d56131de authored by Malcolm Priestley's avatar Malcolm Priestley Committed by Greg Kroah-Hartman

staging: vt6656: change bssdb/rxtx/wpa2 to new structures

Use
struct vnt_private
struct vnt_manager

Move vnt_manager from sMgmtObj to vnt_mgmt.

This patch cleans up function declarations, definitions and local variables
where appropriate replacing types defined in "type.h" with linux/types.h.
Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 532572b9
...@@ -91,9 +91,9 @@ const WORD awHWRetry1[5][5] = { ...@@ -91,9 +91,9 @@ const WORD awHWRetry1[5][5] = {
/*--------------------- Static Functions --------------------------*/ /*--------------------- Static Functions --------------------------*/
void s_vCheckSensitivity(void *hDeviceContext); static void s_vCheckSensitivity(struct vnt_private *pDevice);
void s_vCheckPreEDThreshold(void *hDeviceContext); static void s_vCheckPreEDThreshold(struct vnt_private *pDevice);
void s_uCalculateLinkQual(void *hDeviceContext); static void s_uCalculateLinkQual(struct vnt_private *pDevice);
/*--------------------- Export Variables --------------------------*/ /*--------------------- Export Variables --------------------------*/
...@@ -114,20 +114,19 @@ void s_uCalculateLinkQual(void *hDeviceContext); ...@@ -114,20 +114,19 @@ void s_uCalculateLinkQual(void *hDeviceContext);
* *
-*/ -*/
PKnownBSS BSSpSearchBSSList(void *hDeviceContext, PKnownBSS BSSpSearchBSSList(struct vnt_private *pDevice,
PBYTE pbyDesireBSSID, u8 *pbyDesireBSSID, u8 *pbyDesireSSID,
PBYTE pbyDesireSSID, CARD_PHY_TYPE ePhyType)
CARD_PHY_TYPE ePhyType)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); u8 *pbyBSSID = NULL;
PBYTE pbyBSSID = NULL; PWLAN_IE_SSID pSSID = NULL;
PWLAN_IE_SSID pSSID = NULL; PKnownBSS pCurrBSS = NULL;
PKnownBSS pCurrBSS = NULL; PKnownBSS pSelect = NULL;
PKnownBSS pSelect = NULL; u8 ZeroBSSID[WLAN_BSSID_LEN] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
BYTE ZeroBSSID[WLAN_BSSID_LEN]={0x00,0x00,0x00,0x00,0x00,0x00}; int ii = 0;
unsigned int ii = 0; int jj = 0;
unsigned int jj = 0;
if (pbyDesireBSSID != NULL) { if (pbyDesireBSSID != NULL) {
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO
"BSSpSearchBSSList BSSID[%pM]\n", pbyDesireBSSID); "BSSpSearchBSSList BSSID[%pM]\n", pbyDesireBSSID);
...@@ -262,11 +261,10 @@ pDevice->bSameBSSMaxNum = jj; ...@@ -262,11 +261,10 @@ pDevice->bSameBSSMaxNum = jj;
-*/ -*/
void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID) void BSSvClearBSSList(struct vnt_private *pDevice, int bKeepCurrBSSID)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); int ii;
unsigned int ii;
for (ii = 0; ii < MAX_BSS_NUM; ii++) { for (ii = 0; ii < MAX_BSS_NUM; ii++) {
if (bKeepCurrBSSID) { if (bKeepCurrBSSID) {
...@@ -298,14 +296,12 @@ void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID) ...@@ -298,14 +296,12 @@ void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID)
* TRUE if found. * TRUE if found.
* *
-*/ -*/
PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext, PKnownBSS BSSpAddrIsInBSSList(struct vnt_private *pDevice,
PBYTE abyBSSID, u8 *abyBSSID, PWLAN_IE_SSID pSSID)
PWLAN_IE_SSID pSSID)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); PKnownBSS pBSSList = NULL;
PKnownBSS pBSSList = NULL; int ii;
unsigned int ii;
for (ii = 0; ii < MAX_BSS_NUM; ii++) { for (ii = 0; ii < MAX_BSS_NUM; ii++) {
pBSSList = &(pMgmt->sBSSList[ii]); pBSSList = &(pMgmt->sBSSList[ii]);
...@@ -336,32 +332,30 @@ PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext, ...@@ -336,32 +332,30 @@ PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext,
* *
-*/ -*/
BOOL BSSbInsertToBSSList(void *hDeviceContext, int BSSbInsertToBSSList(struct vnt_private *pDevice,
PBYTE abyBSSIDAddr, u8 *abyBSSIDAddr,
u64 qwTimestamp, u64 qwTimestamp,
WORD wBeaconInterval, u16 wBeaconInterval,
WORD wCapInfo, u16 wCapInfo,
BYTE byCurrChannel, u8 byCurrChannel,
PWLAN_IE_SSID pSSID, PWLAN_IE_SSID pSSID,
PWLAN_IE_SUPP_RATES pSuppRates, PWLAN_IE_SUPP_RATES pSuppRates,
PWLAN_IE_SUPP_RATES pExtSuppRates, PWLAN_IE_SUPP_RATES pExtSuppRates,
PERPObject psERP, PERPObject psERP,
PWLAN_IE_RSN pRSN, PWLAN_IE_RSN pRSN,
PWLAN_IE_RSN_EXT pRSNWPA, PWLAN_IE_RSN_EXT pRSNWPA,
PWLAN_IE_COUNTRY pIE_Country, PWLAN_IE_COUNTRY pIE_Country,
PWLAN_IE_QUIET pIE_Quiet, PWLAN_IE_QUIET pIE_Quiet,
unsigned int uIELength, u32 uIELength,
PBYTE pbyIEs, u8 *pbyIEs,
void *pRxPacketContext) void *pRxPacketContext)
{ {
struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_rx_mgmt *pRxPacket =
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); (struct vnt_rx_mgmt *)pRxPacketContext;
PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext; PKnownBSS pBSSList = NULL;
PKnownBSS pBSSList = NULL; unsigned int ii;
unsigned int ii; BOOL bParsingQuiet = FALSE;
BOOL bParsingQuiet = FALSE;
pBSSList = (PKnownBSS)&(pMgmt->sBSSList[0]); pBSSList = (PKnownBSS)&(pMgmt->sBSSList[0]);
...@@ -516,31 +510,31 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext, ...@@ -516,31 +510,31 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext,
-*/ -*/
// TODO: input structure modify // TODO: input structure modify
BOOL BSSbUpdateToBSSList(void *hDeviceContext, int BSSbUpdateToBSSList(struct vnt_private *pDevice,
u64 qwTimestamp, u64 qwTimestamp,
WORD wBeaconInterval, u16 wBeaconInterval,
WORD wCapInfo, u16 wCapInfo,
BYTE byCurrChannel, u8 byCurrChannel,
BOOL bChannelHit, int bChannelHit,
PWLAN_IE_SSID pSSID, PWLAN_IE_SSID pSSID,
PWLAN_IE_SUPP_RATES pSuppRates, PWLAN_IE_SUPP_RATES pSuppRates,
PWLAN_IE_SUPP_RATES pExtSuppRates, PWLAN_IE_SUPP_RATES pExtSuppRates,
PERPObject psERP, PERPObject psERP,
PWLAN_IE_RSN pRSN, PWLAN_IE_RSN pRSN,
PWLAN_IE_RSN_EXT pRSNWPA, PWLAN_IE_RSN_EXT pRSNWPA,
PWLAN_IE_COUNTRY pIE_Country, PWLAN_IE_COUNTRY pIE_Country,
PWLAN_IE_QUIET pIE_Quiet, PWLAN_IE_QUIET pIE_Quiet,
PKnownBSS pBSSList, PKnownBSS pBSSList,
unsigned int uIELength, u32 uIELength,
PBYTE pbyIEs, u8 *pbyIEs,
void *pRxPacketContext) void *pRxPacketContext)
{ {
int ii, jj; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_rx_mgmt *pRxPacket =
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); (struct vnt_rx_mgmt *)pRxPacketContext;
PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext; int ii, jj;
signed long ldBm, ldBmSum; signed long ldBm, ldBmSum;
BOOL bParsingQuiet = FALSE; BOOL bParsingQuiet = FALSE;
if (pBSSList == NULL) if (pBSSList == NULL)
return FALSE; return FALSE;
...@@ -658,13 +652,11 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, ...@@ -658,13 +652,11 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext,
* *
-*/ -*/
BOOL BSSbIsSTAInNodeDB(void *hDeviceContext, int BSSbIsSTAInNodeDB(struct vnt_private *pDevice,
PBYTE abyDstAddr, u8 *abyDstAddr, u32 *puNodeIndex)
unsigned int *puNodeIndex)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); unsigned int ii;
unsigned int ii;
// Index = 0 reserved for AP Node // Index = 0 reserved for AP Node
for (ii = 1; ii < (MAX_NODE_NUM + 1); ii++) { for (ii = 1; ii < (MAX_NODE_NUM + 1); ii++) {
...@@ -692,15 +684,14 @@ BOOL BSSbIsSTAInNodeDB(void *hDeviceContext, ...@@ -692,15 +684,14 @@ BOOL BSSbIsSTAInNodeDB(void *hDeviceContext,
* None * None
* *
-*/ -*/
void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex) void BSSvCreateOneNode(struct vnt_private *pDevice, u32 *puNodeIndex)
{ {
struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
int ii;
u32 BigestCount = 0;
u32 SelectIndex;
struct sk_buff *skb;
PSDevice pDevice = (PSDevice)hDeviceContext;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
unsigned int ii;
unsigned int BigestCount = 0;
unsigned int SelectIndex;
struct sk_buff *skb;
// Index = 0 reserved for AP Node (In STA mode) // Index = 0 reserved for AP Node (In STA mode)
// Index = 0 reserved for Broadcast/MultiCast (In AP mode) // Index = 0 reserved for Broadcast/MultiCast (In AP mode)
SelectIndex = 1; SelectIndex = 1;
...@@ -753,13 +744,11 @@ void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex) ...@@ -753,13 +744,11 @@ void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex)
* *
-*/ -*/
void BSSvRemoveOneNode(void *hDeviceContext, unsigned int uNodeIndex) void BSSvRemoveOneNode(struct vnt_private *pDevice, u32 uNodeIndex)
{ {
struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSDevice pDevice = (PSDevice)hDeviceContext; u8 byMask[8] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80};
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct sk_buff *skb;
BYTE byMask[8] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80};
struct sk_buff *skb;
while ((skb = skb_dequeue(&pMgmt->sNodeDBTable[uNodeIndex].sTxPSQueue)) != NULL) while ((skb = skb_dequeue(&pMgmt->sNodeDBTable[uNodeIndex].sTxPSQueue)) != NULL)
...@@ -780,14 +769,11 @@ void BSSvRemoveOneNode(void *hDeviceContext, unsigned int uNodeIndex) ...@@ -780,14 +769,11 @@ void BSSvRemoveOneNode(void *hDeviceContext, unsigned int uNodeIndex)
* *
-*/ -*/
void BSSvUpdateAPNode(void *hDeviceContext, void BSSvUpdateAPNode(struct vnt_private *pDevice, u16 *pwCapInfo,
PWORD pwCapInfo, PWLAN_IE_SUPP_RATES pSuppRates, PWLAN_IE_SUPP_RATES pExtSuppRates)
PWLAN_IE_SUPP_RATES pSuppRates,
PWLAN_IE_SUPP_RATES pExtSuppRates)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &(pDevice->sMgmtObj);
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); u32 uRateLen = WLAN_RATES_MAXLEN;
unsigned int uRateLen = WLAN_RATES_MAXLEN;
memset(&pMgmt->sNodeDBTable[0], 0, sizeof(KnownNodeDB)); memset(&pMgmt->sNodeDBTable[0], 0, sizeof(KnownNodeDB));
...@@ -832,10 +818,9 @@ void BSSvUpdateAPNode(void *hDeviceContext, ...@@ -832,10 +818,9 @@ void BSSvUpdateAPNode(void *hDeviceContext,
* *
-*/ -*/
void BSSvAddMulticastNode(void *hDeviceContext) void BSSvAddMulticastNode(struct vnt_private *pDevice)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
if (!pDevice->bEnableHostWEP) if (!pDevice->bEnableHostWEP)
memset(&pMgmt->sNodeDBTable[0], 0, sizeof(KnownNodeDB)); memset(&pMgmt->sNodeDBTable[0], 0, sizeof(KnownNodeDB));
...@@ -871,15 +856,14 @@ void BSSvAddMulticastNode(void *hDeviceContext) ...@@ -871,15 +856,14 @@ void BSSvAddMulticastNode(void *hDeviceContext)
* *
-*/ -*/
void BSSvSecondCallBack(void *hDeviceContext) void BSSvSecondCallBack(struct vnt_private *pDevice)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); int ii;
unsigned int ii; PWLAN_IE_SSID pItemSSID, pCurrSSID;
PWLAN_IE_SSID pItemSSID, pCurrSSID; u32 uSleepySTACnt = 0;
unsigned int uSleepySTACnt = 0; u32 uNonShortSlotSTACnt = 0;
unsigned int uNonShortSlotSTACnt = 0; u32 uLongPreambleSTACnt = 0;
unsigned int uLongPreambleSTACnt = 0;
spin_lock_irq(&pDevice->lock); spin_lock_irq(&pDevice->lock);
...@@ -925,7 +909,7 @@ if(pDevice->byReAssocCount > 0) { ...@@ -925,7 +909,7 @@ if(pDevice->byReAssocCount > 0) {
pMgmt->eLastState = pMgmt->eCurrState ; pMgmt->eLastState = pMgmt->eCurrState ;
s_uCalculateLinkQual((void *)pDevice); s_uCalculateLinkQual(pDevice);
for (ii = 0; ii < (MAX_NODE_NUM + 1); ii++) { for (ii = 0; ii < (MAX_NODE_NUM + 1); ii++) {
...@@ -1065,8 +1049,8 @@ if(pDevice->byReAssocCount > 0) { ...@@ -1065,8 +1049,8 @@ if(pDevice->byReAssocCount > 0) {
if (pMgmt->sNodeDBTable[0].bActive) { // Assoc with BSS if (pMgmt->sNodeDBTable[0].bActive) { // Assoc with BSS
if (pDevice->bUpdateBBVGA) { if (pDevice->bUpdateBBVGA) {
/* s_vCheckSensitivity((void *) pDevice); */ s_vCheckSensitivity(pDevice);
s_vCheckPreEDThreshold((void *) pDevice); s_vCheckPreEDThreshold(pDevice);
} }
if ((pMgmt->sNodeDBTable[0].uInActiveCount >= (LOST_BEACON_COUNT/2)) && if ((pMgmt->sNodeDBTable[0].uInActiveCount >= (LOST_BEACON_COUNT/2)) &&
...@@ -1167,8 +1151,8 @@ else { ...@@ -1167,8 +1151,8 @@ else {
if (pMgmt->eCurrState == WMAC_STATE_JOINTED) { if (pMgmt->eCurrState == WMAC_STATE_JOINTED) {
if (pDevice->bUpdateBBVGA) { if (pDevice->bUpdateBBVGA) {
/* s_vCheckSensitivity((void *) pDevice); */ s_vCheckSensitivity(pDevice);
s_vCheckPreEDThreshold((void *) pDevice); s_vCheckPreEDThreshold(pDevice);
} }
if (pMgmt->sNodeDBTable[0].uInActiveCount >=ADHOC_LOST_BEACON_COUNT) { if (pMgmt->sNodeDBTable[0].uInActiveCount >=ADHOC_LOST_BEACON_COUNT) {
DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Lost other STA beacon [%d] sec, started !\n", pMgmt->sNodeDBTable[0].uInActiveCount); DBG_PRT(MSG_LEVEL_NOTICE, KERN_INFO "Lost other STA beacon [%d] sec, started !\n", pMgmt->sNodeDBTable[0].uInActiveCount);
...@@ -1205,22 +1189,19 @@ else { ...@@ -1205,22 +1189,19 @@ else {
* *
-*/ -*/
void BSSvUpdateNodeTxCounter(void *hDeviceContext, void BSSvUpdateNodeTxCounter(struct vnt_private *pDevice,
PSStatCounter pStatistic, PSStatCounter pStatistic, u8 byTSR, u8 byPktNO)
BYTE byTSR,
BYTE byPktNO)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); u32 uNodeIndex = 0;
unsigned int uNodeIndex = 0; u8 byTxRetry;
BYTE byTxRetry; u16 wRate;
WORD wRate; u16 wFallBackRate = RATE_1M;
WORD wFallBackRate = RATE_1M; u8 byFallBack;
BYTE byFallBack; int ii;
unsigned int ii; u8 *pbyDestAddr;
PBYTE pbyDestAddr; u8 byPktNum;
BYTE byPktNum; u16 wFIFOCtl;
WORD wFIFOCtl;
byPktNum = (byPktNO & 0x0F) >> 4; byPktNum = (byPktNO & 0x0F) >> 4;
byTxRetry = (byTSR & 0xF0) >> 4; byTxRetry = (byTSR & 0xF0) >> 4;
...@@ -1368,13 +1349,11 @@ void BSSvUpdateNodeTxCounter(void *hDeviceContext, ...@@ -1368,13 +1349,11 @@ void BSSvUpdateNodeTxCounter(void *hDeviceContext,
* *
-*/ -*/
void BSSvClearNodeDBTable(void *hDeviceContext, void BSSvClearNodeDBTable(struct vnt_private *pDevice, u32 uStartIndex)
unsigned int uStartIndex)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct sk_buff *skb;
struct sk_buff *skb; int ii;
unsigned int ii;
for (ii = uStartIndex; ii < (MAX_NODE_NUM + 1); ii++) { for (ii = uStartIndex; ii < (MAX_NODE_NUM + 1); ii++) {
if (pMgmt->sNodeDBTable[ii].bActive) { if (pMgmt->sNodeDBTable[ii].bActive) {
...@@ -1390,12 +1369,11 @@ void BSSvClearNodeDBTable(void *hDeviceContext, ...@@ -1390,12 +1369,11 @@ void BSSvClearNodeDBTable(void *hDeviceContext,
} }
}; };
void s_vCheckSensitivity(void *hDeviceContext) static void s_vCheckSensitivity(struct vnt_private *pDevice)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; PKnownBSS pBSSList = NULL;
PKnownBSS pBSSList = NULL; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); int ii;
int ii;
if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) || if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) ||
((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED))) { ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED))) {
...@@ -1422,7 +1400,7 @@ void s_vCheckSensitivity(void *hDeviceContext) ...@@ -1422,7 +1400,7 @@ void s_vCheckSensitivity(void *hDeviceContext)
if (pDevice->byBBVGANew != pDevice->byBBVGACurrent) { if (pDevice->byBBVGANew != pDevice->byBBVGACurrent) {
pDevice->uBBVGADiffCount++; pDevice->uBBVGADiffCount++;
if (pDevice->uBBVGADiffCount >= BB_VGA_CHANGE_THRESHOLD) if (pDevice->uBBVGADiffCount >= BB_VGA_CHANGE_THRESHOLD)
bScheduleCommand((void *) pDevice, bScheduleCommand(pDevice,
WLAN_CMD_CHANGE_BBSENSITIVITY, WLAN_CMD_CHANGE_BBSENSITIVITY,
NULL); NULL);
} else { } else {
...@@ -1433,13 +1411,12 @@ void s_vCheckSensitivity(void *hDeviceContext) ...@@ -1433,13 +1411,12 @@ void s_vCheckSensitivity(void *hDeviceContext)
} }
} }
void s_uCalculateLinkQual(void *hDeviceContext) static void s_uCalculateLinkQual(struct vnt_private *pDevice)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; unsigned long TxOkRatio, TxCnt;
unsigned long TxOkRatio, TxCnt; unsigned long RxOkRatio, RxCnt;
unsigned long RxOkRatio, RxCnt; unsigned long RssiRatio;
unsigned long RssiRatio; long ldBm;
long ldBm;
TxCnt = pDevice->scStatistic.TxNoRetryOkCount + TxCnt = pDevice->scStatistic.TxNoRetryOkCount +
pDevice->scStatistic.TxRetryOkCount + pDevice->scStatistic.TxRetryOkCount +
...@@ -1476,21 +1453,21 @@ else ...@@ -1476,21 +1453,21 @@ else
pDevice->scStatistic.TxRetryOkCount = 0; pDevice->scStatistic.TxRetryOkCount = 0;
} }
void BSSvClearAnyBSSJoinRecord(void *hDeviceContext) void BSSvClearAnyBSSJoinRecord(struct vnt_private *pDevice)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); int ii;
unsigned int ii;
for (ii = 0; ii < MAX_BSS_NUM; ii++) for (ii = 0; ii < MAX_BSS_NUM; ii++)
pMgmt->sBSSList[ii].bSelected = FALSE; pMgmt->sBSSList[ii].bSelected = FALSE;
return;
} }
void s_vCheckPreEDThreshold(void *hDeviceContext) static void s_vCheckPreEDThreshold(struct vnt_private *pDevice)
{ {
PSDevice pDevice = (PSDevice)hDeviceContext; PKnownBSS pBSSList = NULL;
PKnownBSS pBSSList = NULL; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) || if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) ||
((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED))) { ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED))) {
......
...@@ -226,80 +226,70 @@ typedef struct tagKnownNodeDB { ...@@ -226,80 +226,70 @@ typedef struct tagKnownNodeDB {
/*--------------------- Export Functions --------------------------*/ /*--------------------- Export Functions --------------------------*/
PKnownBSS BSSpSearchBSSList(void *hDeviceContext, PKnownBSS BSSpSearchBSSList(struct vnt_private *, u8 *pbyDesireBSSID,
PBYTE pbyDesireBSSID, u8 *pbyDesireSSID, CARD_PHY_TYPE ePhyType);
PBYTE pbyDesireSSID,
CARD_PHY_TYPE ePhyType);
PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext, PKnownBSS BSSpAddrIsInBSSList(struct vnt_private *, u8 *abyBSSID,
PBYTE abyBSSID, PWLAN_IE_SSID pSSID);
PWLAN_IE_SSID pSSID);
void BSSvClearBSSList(void *hDeviceContext, BOOL bKeepCurrBSSID); void BSSvClearBSSList(struct vnt_private *, int bKeepCurrBSSID);
BOOL BSSbInsertToBSSList(void *hDeviceContext, int BSSbInsertToBSSList(struct vnt_private *,
PBYTE abyBSSIDAddr, u8 *abyBSSIDAddr,
u64 qwTimestamp, u64 qwTimestamp,
WORD wBeaconInterval, u16 wBeaconInterval,
WORD wCapInfo, u16 wCapInfo,
BYTE byCurrChannel, u8 byCurrChannel,
PWLAN_IE_SSID pSSID, PWLAN_IE_SSID pSSID,
PWLAN_IE_SUPP_RATES pSuppRates, PWLAN_IE_SUPP_RATES pSuppRates,
PWLAN_IE_SUPP_RATES pExtSuppRates, PWLAN_IE_SUPP_RATES pExtSuppRates,
PERPObject psERP, PERPObject psERP,
PWLAN_IE_RSN pRSN, PWLAN_IE_RSN pRSN,
PWLAN_IE_RSN_EXT pRSNWPA, PWLAN_IE_RSN_EXT pRSNWPA,
PWLAN_IE_COUNTRY pIE_Country, PWLAN_IE_COUNTRY pIE_Country,
PWLAN_IE_QUIET pIE_Quiet, PWLAN_IE_QUIET pIE_Quiet,
unsigned int uIELength, u32 uIELength,
PBYTE pbyIEs, u8 *pbyIEs,
void *pRxPacketContext); void *pRxPacketContext);
BOOL BSSbUpdateToBSSList(void *hDeviceContext, int BSSbUpdateToBSSList(struct vnt_private *,
u64 qwTimestamp, u64 qwTimestamp,
WORD wBeaconInterval, u16 wBeaconInterval,
WORD wCapInfo, u16 wCapInfo,
BYTE byCurrChannel, u8 byCurrChannel,
BOOL bChannelHit, int bChannelHit,
PWLAN_IE_SSID pSSID, PWLAN_IE_SSID pSSID,
PWLAN_IE_SUPP_RATES pSuppRates, PWLAN_IE_SUPP_RATES pSuppRates,
PWLAN_IE_SUPP_RATES pExtSuppRates, PWLAN_IE_SUPP_RATES pExtSuppRates,
PERPObject psERP, PERPObject psERP,
PWLAN_IE_RSN pRSN, PWLAN_IE_RSN pRSN,
PWLAN_IE_RSN_EXT pRSNWPA, PWLAN_IE_RSN_EXT pRSNWPA,
PWLAN_IE_COUNTRY pIE_Country, PWLAN_IE_COUNTRY pIE_Country,
PWLAN_IE_QUIET pIE_Quiet, PWLAN_IE_QUIET pIE_Quiet,
PKnownBSS pBSSList, PKnownBSS pBSSList,
unsigned int uIELength, u32 uIELength,
PBYTE pbyIEs, u8 *pbyIEs,
void *pRxPacketContext); void *pRxPacketContext);
BOOL BSSbIsSTAInNodeDB(void *hDeviceContext, int BSSbIsSTAInNodeDB(struct vnt_private *, PBYTE abyDstAddr,
PBYTE abyDstAddr, u32 *puNodeIndex);
unsigned int *puNodeIndex);
void BSSvCreateOneNode(struct vnt_private *, u32 *puNodeIndex);
void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex);
void BSSvUpdateAPNode(struct vnt_private *, u16 *pwCapInfo,
void BSSvUpdateAPNode(void *hDeviceContext, PWLAN_IE_SUPP_RATES pItemRates, PWLAN_IE_SUPP_RATES pExtSuppRates);
PWORD pwCapInfo,
PWLAN_IE_SUPP_RATES pItemRates, void BSSvSecondCallBack(struct vnt_private *);
PWLAN_IE_SUPP_RATES pExtSuppRates);
void BSSvUpdateNodeTxCounter(struct vnt_private *, PSStatCounter pStatistic,
void BSSvSecondCallBack(void *hDeviceContext); u8 byTSR, u8 byPktNO);
void BSSvUpdateNodeTxCounter(void *hDeviceContext, void BSSvRemoveOneNode(struct vnt_private *, u32 uNodeIndex);
PSStatCounter pStatistic,
BYTE byTSR, void BSSvAddMulticastNode(struct vnt_private *);
BYTE byPktNO);
void BSSvClearNodeDBTable(struct vnt_private *, u32 uStartIndex);
void BSSvRemoveOneNode(void *hDeviceContext,
unsigned int uNodeIndex); void BSSvClearAnyBSSJoinRecord(struct vnt_private *);
void BSSvAddMulticastNode(void *hDeviceContext);
void BSSvClearNodeDBTable(void *hDeviceContext,
unsigned int uStartIndex);
void BSSvClearAnyBSSJoinRecord(void *hDeviceContext);
#endif /* __BSSDB_H__ */ #endif /* __BSSDB_H__ */
...@@ -106,174 +106,64 @@ const WORD wFB_Opt1[2][5] = { ...@@ -106,174 +106,64 @@ const WORD wFB_Opt1[2][5] = {
/*--------------------- Static Functions --------------------------*/ /*--------------------- Static Functions --------------------------*/
static static void s_vSaveTxPktInfo(struct vnt_private *pDevice, u8 byPktNum,
void u8 *pbyDestAddr, u16 wPktLength, u16 wFIFOCtl);
s_vSaveTxPktInfo(
PSDevice pDevice, static void *s_vGetFreeContext(struct vnt_private *pDevice);
BYTE byPktNum,
PBYTE pbyDestAddr, static void s_vGenerateTxParameter(struct vnt_private *pDevice,
WORD wPktLength, u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime,
WORD wFIFOCtl void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx,
); PSEthernetHeader psEthHeader);
static static u32 s_uFillDataHead(struct vnt_private *pDevice,
void * u8 byPktType, u16 wCurrentRate, void *pTxDataHead, u32 cbFrameLength,
s_vGetFreeContext( u32 uDMAIdx, int bNeedAck, u32 uFragIdx, u32 cbLastFragmentSize,
PSDevice pDevice u32 uMACfragNum, u8 byFBOption);
);
static void s_vGenerateMACHeader(struct vnt_private *pDevice,
static u8 *pbyBufferAddr, u16 wDuration, PSEthernetHeader psEthHeader,
void int bNeedEncrypt, u16 wFragType, u32 uDMAIdx, u32 uFragIdx);
s_vGenerateTxParameter(
PSDevice pDevice, static void s_vFillTxKey(struct vnt_private *pDevice, u8 *pbyBuf,
BYTE byPktType, u8 *pbyIVHead, PSKeyItem pTransmitKey, u8 *pbyHdrBuf, u16 wPayloadLen,
WORD wCurrentRate, u8 *pMICHDR);
void *pTxBufHead,
void *pvRrvTime, static void s_vSWencryption(struct vnt_private *pDevice,
void *pvRTS, PSKeyItem pTransmitKey, u8 *pbyPayloadHead, u16 wPayloadSize);
void *pvCTS,
unsigned int cbFrameSize, static unsigned int s_uGetTxRsvTime(struct vnt_private *pDevice, u8 byPktType,
BOOL bNeedACK, u32 cbFrameLength, u16 wRate, int bNeedAck);
unsigned int uDMAIdx,
PSEthernetHeader psEthHeader static u32 s_uGetRTSCTSRsvTime(struct vnt_private *pDevice, u8 byRTSRsvType,
); u8 byPktType, u32 cbFrameLength, u16 wCurrentRate);
static void s_vFillCTSHead(struct vnt_private *pDevice, u32 uDMAIdx,
static unsigned int s_uFillDataHead( u8 byPktType, void *pvCTS, u32 cbFrameLength, int bNeedAck,
PSDevice pDevice, int bDisCRC, u16 wCurrentRate, u8 byFBOption);
BYTE byPktType,
WORD wCurrentRate, static void s_vFillRTSHead(struct vnt_private *pDevice, u8 byPktType,
void *pTxDataHead, void *pvRTS, u32 cbFrameLength, int bNeedAck, int bDisCRC,
unsigned int cbFrameLength, PSEthernetHeader psEthHeader, u16 wCurrentRate, u8 byFBOption);
unsigned int uDMAIdx,
BOOL bNeedAck, static u32 s_uGetDataDuration(struct vnt_private *pDevice, u8 byDurType,
unsigned int uFragIdx, u32 cbFrameLength, u8 byPktType, u16 wRate, int bNeedAck,
unsigned int cbLastFragmentSize, u32 uFragIdx, u32 cbLastFragmentSize, u32 uMACfragNum,
unsigned int uMACfragNum, u8 byFBOption);
BYTE byFBOption
); static unsigned int s_uGetRTSCTSDuration(struct vnt_private *pDevice,
u8 byDurType, u32 cbFrameLength, u8 byPktType, u16 wRate,
int bNeedAck, u8 byFBOption);
static
void
s_vGenerateMACHeader (
PSDevice pDevice,
PBYTE pbyBufferAddr,
WORD wDuration,
PSEthernetHeader psEthHeader,
BOOL bNeedEncrypt,
WORD wFragType,
unsigned int uDMAIdx,
unsigned int uFragIdx
);
static
void
s_vFillTxKey(
PSDevice pDevice,
PBYTE pbyBuf,
PBYTE pbyIVHead,
PSKeyItem pTransmitKey,
PBYTE pbyHdrBuf,
WORD wPayloadLen,
PBYTE pMICHDR
);
static
void
s_vSWencryption (
PSDevice pDevice,
PSKeyItem pTransmitKey,
PBYTE pbyPayloadHead,
WORD wPayloadSize
);
static unsigned int s_uGetTxRsvTime(
PSDevice pDevice,
BYTE byPktType,
unsigned int cbFrameLength,
WORD wRate,
BOOL bNeedAck
);
static unsigned int s_uGetRTSCTSRsvTime(
PSDevice pDevice,
BYTE byRTSRsvType,
BYTE byPktType,
unsigned int cbFrameLength,
WORD wCurrentRate
);
static
void
s_vFillCTSHead (
PSDevice pDevice,
unsigned int uDMAIdx,
BYTE byPktType,
void *pvCTS,
unsigned int cbFrameLength,
BOOL bNeedAck,
BOOL bDisCRC,
WORD wCurrentRate,
BYTE byFBOption
);
static
void
s_vFillRTSHead(
PSDevice pDevice,
BYTE byPktType,
void *pvRTS,
unsigned int cbFrameLength,
BOOL bNeedAck,
BOOL bDisCRC,
PSEthernetHeader psEthHeader,
WORD wCurrentRate,
BYTE byFBOption
);
static unsigned int s_uGetDataDuration(
PSDevice pDevice,
BYTE byDurType,
unsigned int cbFrameLength,
BYTE byPktType,
WORD wRate,
BOOL bNeedAck,
unsigned int uFragIdx,
unsigned int cbLastFragmentSize,
unsigned int uMACfragNum,
BYTE byFBOption
);
static
unsigned int
s_uGetRTSCTSDuration (
PSDevice pDevice,
BYTE byDurType,
unsigned int cbFrameLength,
BYTE byPktType,
WORD wRate,
BOOL bNeedAck,
BYTE byFBOption
);
/*--------------------- Export Variables --------------------------*/ /*--------------------- Export Variables --------------------------*/
static static void *s_vGetFreeContext(struct vnt_private *pDevice)
void *
s_vGetFreeContext(
PSDevice pDevice
)
{ {
PUSB_SEND_CONTEXT pContext = NULL; PUSB_SEND_CONTEXT pContext = NULL;
PUSB_SEND_CONTEXT pReturnContext = NULL; PUSB_SEND_CONTEXT pReturnContext = NULL;
unsigned int ii; int ii;
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"GetFreeContext()\n"); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"GetFreeContext()\n");
...@@ -292,11 +182,10 @@ s_vGetFreeContext( ...@@ -292,11 +182,10 @@ s_vGetFreeContext(
} }
static static void s_vSaveTxPktInfo(struct vnt_private *pDevice, u8 byPktNum,
void u8 *pbyDestAddr, u16 wPktLength, u16 wFIFOCtl)
s_vSaveTxPktInfo(PSDevice pDevice, BYTE byPktNum, PBYTE pbyDestAddr, WORD wPktLength, WORD wFIFOCtl)
{ {
PSStatCounter pStatistic=&(pDevice->scStatistic); PSStatCounter pStatistic = &pDevice->scStatistic;
if (is_broadcast_ether_addr(pbyDestAddr)) if (is_broadcast_ether_addr(pbyDestAddr))
pStatistic->abyTxPktInfo[byPktNum].byBroadMultiUni = TX_PKT_BROAD; pStatistic->abyTxPktInfo[byPktNum].byBroadMultiUni = TX_PKT_BROAD;
...@@ -312,24 +201,15 @@ s_vSaveTxPktInfo(PSDevice pDevice, BYTE byPktNum, PBYTE pbyDestAddr, WORD wPktLe ...@@ -312,24 +201,15 @@ s_vSaveTxPktInfo(PSDevice pDevice, BYTE byPktNum, PBYTE pbyDestAddr, WORD wPktLe
ETH_ALEN); ETH_ALEN);
} }
static static void s_vFillTxKey(struct vnt_private *pDevice, u8 *pbyBuf,
void u8 *pbyIVHead, PSKeyItem pTransmitKey, u8 *pbyHdrBuf,
s_vFillTxKey ( u16 wPayloadLen, u8 *pMICHDR)
PSDevice pDevice,
PBYTE pbyBuf,
PBYTE pbyIVHead,
PSKeyItem pTransmitKey,
PBYTE pbyHdrBuf,
WORD wPayloadLen,
PBYTE pMICHDR
)
{ {
PDWORD pdwIV = (PDWORD) pbyIVHead; u32 *pdwIV = (u32 *)pbyIVHead;
PDWORD pdwExtIV = (PDWORD) ((PBYTE)pbyIVHead+4); u32 *pdwExtIV = (u32 *)((u8 *)pbyIVHead + 4);
WORD wValue; u16 wValue;
PS802_11Header pMACHeader = (PS802_11Header)pbyHdrBuf; PS802_11Header pMACHeader = (PS802_11Header)pbyHdrBuf;
DWORD dwRevIVCounter; u32 dwRevIVCounter;
//Fill TXKEY //Fill TXKEY
...@@ -430,18 +310,12 @@ s_vFillTxKey ( ...@@ -430,18 +310,12 @@ s_vFillTxKey (
} }
static static void s_vSWencryption(struct vnt_private *pDevice,
void PSKeyItem pTransmitKey, u8 *pbyPayloadHead, u16 wPayloadSize)
s_vSWencryption (
PSDevice pDevice,
PSKeyItem pTransmitKey,
PBYTE pbyPayloadHead,
WORD wPayloadSize
)
{ {
unsigned int cbICVlen = 4; u32 cbICVlen = 4;
DWORD dwICV = 0xFFFFFFFFL; u32 dwICV = 0xffffffff;
PDWORD pdwICV; u32 *pdwICV;
if (pTransmitKey == NULL) if (pTransmitKey == NULL)
return; return;
...@@ -479,17 +353,10 @@ s_vSWencryption ( ...@@ -479,17 +353,10 @@ s_vSWencryption (
PK_TYPE_11GB 2 PK_TYPE_11GB 2
PK_TYPE_11GA 3 PK_TYPE_11GA 3
*/ */
static static u32 s_uGetTxRsvTime(struct vnt_private *pDevice, u8 byPktType,
unsigned int u32 cbFrameLength, u16 wRate, int bNeedAck)
s_uGetTxRsvTime (
PSDevice pDevice,
BYTE byPktType,
unsigned int cbFrameLength,
WORD wRate,
BOOL bNeedAck
)
{ {
unsigned int uDataTime, uAckTime; u32 uDataTime, uAckTime;
uDataTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, cbFrameLength, wRate); uDataTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, cbFrameLength, wRate);
if (byPktType == PK_TYPE_11B) {//llb,CCK mode if (byPktType == PK_TYPE_11B) {//llb,CCK mode
...@@ -507,17 +374,10 @@ s_uGetTxRsvTime ( ...@@ -507,17 +374,10 @@ s_uGetTxRsvTime (
} }
//byFreqType: 0=>5GHZ 1=>2.4GHZ //byFreqType: 0=>5GHZ 1=>2.4GHZ
static static u32 s_uGetRTSCTSRsvTime(struct vnt_private *pDevice,
unsigned int u8 byRTSRsvType, u8 byPktType, u32 cbFrameLength, u16 wCurrentRate)
s_uGetRTSCTSRsvTime (
PSDevice pDevice,
BYTE byRTSRsvType,
BYTE byPktType,
unsigned int cbFrameLength,
WORD wCurrentRate
)
{ {
unsigned int uRrvTime , uRTSTime, uCTSTime, uAckTime, uDataTime; u32 uRrvTime, uRTSTime, uCTSTime, uAckTime, uDataTime;
uRrvTime = uRTSTime = uCTSTime = uAckTime = uDataTime = 0; uRrvTime = uRTSTime = uCTSTime = uAckTime = uDataTime = 0;
...@@ -549,23 +409,13 @@ s_uGetRTSCTSRsvTime ( ...@@ -549,23 +409,13 @@ s_uGetRTSCTSRsvTime (
} }
//byFreqType 0: 5GHz, 1:2.4Ghz //byFreqType 0: 5GHz, 1:2.4Ghz
static static u32 s_uGetDataDuration(struct vnt_private *pDevice, u8 byDurType,
unsigned int u32 cbFrameLength, u8 byPktType, u16 wRate, int bNeedAck,
s_uGetDataDuration ( u32 uFragIdx, u32 cbLastFragmentSize, u32 uMACfragNum,
PSDevice pDevice, u8 byFBOption)
BYTE byDurType,
unsigned int cbFrameLength,
BYTE byPktType,
WORD wRate,
BOOL bNeedAck,
unsigned int uFragIdx,
unsigned int cbLastFragmentSize,
unsigned int uMACfragNum,
BYTE byFBOption
)
{ {
BOOL bLastFrag = 0; int bLastFrag = 0;
unsigned int uAckTime = 0, uNextPktTime = 0; u32 uAckTime = 0, uNextPktTime = 0;
if (uFragIdx == (uMACfragNum-1)) { if (uFragIdx == (uMACfragNum-1)) {
bLastFrag = 1; bLastFrag = 1;
...@@ -718,19 +568,11 @@ s_uGetDataDuration ( ...@@ -718,19 +568,11 @@ s_uGetDataDuration (
//byFreqType: 0=>5GHZ 1=>2.4GHZ //byFreqType: 0=>5GHZ 1=>2.4GHZ
static static u32 s_uGetRTSCTSDuration(struct vnt_private *pDevice, u8 byDurType,
unsigned int u32 cbFrameLength, u8 byPktType, u16 wRate, int bNeedAck,
s_uGetRTSCTSDuration ( u8 byFBOption)
PSDevice pDevice,
BYTE byDurType,
unsigned int cbFrameLength,
BYTE byPktType,
WORD wRate,
BOOL bNeedAck,
BYTE byFBOption
)
{ {
unsigned int uCTSTime = 0, uDurTime = 0; u32 uCTSTime = 0, uDurTime = 0;
switch (byDurType) { switch (byDurType) {
...@@ -814,24 +656,10 @@ s_uGetRTSCTSDuration ( ...@@ -814,24 +656,10 @@ s_uGetRTSCTSDuration (
} }
static u32 s_uFillDataHead(struct vnt_private *pDevice,
u8 byPktType, u16 wCurrentRate, void *pTxDataHead, u32 cbFrameLength,
u32 uDMAIdx, int bNeedAck, u32 uFragIdx, u32 cbLastFragmentSize,
static u32 uMACfragNum, u8 byFBOption)
unsigned int
s_uFillDataHead (
PSDevice pDevice,
BYTE byPktType,
WORD wCurrentRate,
void *pTxDataHead,
unsigned int cbFrameLength,
unsigned int uDMAIdx,
BOOL bNeedAck,
unsigned int uFragIdx,
unsigned int cbLastFragmentSize,
unsigned int uMACfragNum,
BYTE byFBOption
)
{ {
if (pTxDataHead == NULL) { if (pTxDataHead == NULL) {
...@@ -959,25 +787,12 @@ s_uFillDataHead ( ...@@ -959,25 +787,12 @@ s_uFillDataHead (
return 0; return 0;
} }
static void s_vFillRTSHead(struct vnt_private *pDevice, u8 byPktType,
void *pvRTS, u32 cbFrameLength, int bNeedAck, int bDisCRC,
PSEthernetHeader psEthHeader, u16 wCurrentRate, u8 byFBOption)
static
void
s_vFillRTSHead (
PSDevice pDevice,
BYTE byPktType,
void *pvRTS,
unsigned int cbFrameLength,
BOOL bNeedAck,
BOOL bDisCRC,
PSEthernetHeader psEthHeader,
WORD wCurrentRate,
BYTE byFBOption
)
{ {
unsigned int uRTSFrameLen = 20; u32 uRTSFrameLen = 20;
WORD wLen = 0x0000; u16 wLen = 0;
if (pvRTS == NULL) if (pvRTS == NULL)
return; return;
...@@ -1190,22 +1005,12 @@ s_vFillRTSHead ( ...@@ -1190,22 +1005,12 @@ s_vFillRTSHead (
} }
} }
static static void s_vFillCTSHead(struct vnt_private *pDevice, u32 uDMAIdx,
void u8 byPktType, void *pvCTS, u32 cbFrameLength, int bNeedAck,
s_vFillCTSHead ( int bDisCRC, u16 wCurrentRate, u8 byFBOption)
PSDevice pDevice,
unsigned int uDMAIdx,
BYTE byPktType,
void *pvCTS,
unsigned int cbFrameLength,
BOOL bNeedAck,
BOOL bDisCRC,
WORD wCurrentRate,
BYTE byFBOption
)
{ {
unsigned int uCTSFrameLen = 14; u32 uCTSFrameLen = 14;
WORD wLen = 0x0000; u16 wLen = 0;
if (pvCTS == NULL) { if (pvCTS == NULL) {
return; return;
...@@ -1290,27 +1095,15 @@ s_vFillCTSHead ( ...@@ -1290,27 +1095,15 @@ s_vFillCTSHead (
* *
-*/ -*/
static static void s_vGenerateTxParameter(struct vnt_private *pDevice,
void u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime,
s_vGenerateTxParameter ( void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx,
PSDevice pDevice, PSEthernetHeader psEthHeader)
BYTE byPktType,
WORD wCurrentRate,
void *pTxBufHead,
void *pvRrvTime,
void *pvRTS,
void *pvCTS,
unsigned int cbFrameSize,
BOOL bNeedACK,
unsigned int uDMAIdx,
PSEthernetHeader psEthHeader
)
{ {
unsigned int cbMACHdLen = WLAN_HDR_ADDR3_LEN; /* 24 */ u32 cbMACHdLen = WLAN_HDR_ADDR3_LEN; /* 24 */
WORD wFifoCtl; u16 wFifoCtl;
BOOL bDisCRC = FALSE; int bDisCRC = FALSE;
BYTE byFBOption = AUTO_FB_NONE; u8 byFBOption = AUTO_FB_NONE;
// WORD wCurrentRate = pDevice->wCurrentRate;
//DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"s_vGenerateTxParameter...\n"); //DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"s_vGenerateTxParameter...\n");
PSTxBufHead pFifoHead = (PSTxBufHead)pTxBufHead; PSTxBufHead pFifoHead = (PSTxBufHead)pTxBufHead;
...@@ -1407,52 +1200,37 @@ s_vGenerateTxParameter ( ...@@ -1407,52 +1200,37 @@ s_vGenerateTxParameter (
unsigned int cbFragmentSize,//Hdr+payoad+FCS unsigned int cbFragmentSize,//Hdr+payoad+FCS
*/ */
static int s_bPacketToWirelessUsb(struct vnt_private *pDevice, u8 byPktType,
BOOL u8 *usbPacketBuf, int bNeedEncryption, u32 uSkbPacketLen, u32 uDMAIdx,
s_bPacketToWirelessUsb( PSEthernetHeader psEthHeader, u8 *pPacket, PSKeyItem pTransmitKey,
PSDevice pDevice, u32 uNodeIndex, u16 wCurrentRate, u32 *pcbHeaderLen, u32 *pcbTotalLen)
BYTE byPktType,
PBYTE usbPacketBuf,
BOOL bNeedEncryption,
unsigned int uSkbPacketLen,
unsigned int uDMAIdx,
PSEthernetHeader psEthHeader,
PBYTE pPacket,
PSKeyItem pTransmitKey,
unsigned int uNodeIndex,
WORD wCurrentRate,
unsigned int *pcbHeaderLen,
unsigned int *pcbTotalLen
)
{ {
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
unsigned int cbFrameSize, cbFrameBodySize; u32 cbFrameSize, cbFrameBodySize;
PTX_BUFFER pTxBufHead; PTX_BUFFER pTxBufHead;
unsigned int cb802_1_H_len; u32 cb802_1_H_len;
unsigned int cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbMACHdLen = 0;
cbMACHdLen = 0, cbFCSlen = 4; u32 cbFCSlen = 4, cbMICHDR = 0;
unsigned int cbMICHDR = 0; int bNeedACK, bRTS;
BOOL bNeedACK,bRTS; u8 *pbyType, *pbyMacHdr, *pbyIVHead, *pbyPayloadHead, *pbyTxBufferAddr;
PBYTE pbyType,pbyMacHdr,pbyIVHead,pbyPayloadHead,pbyTxBufferAddr; u8 abySNAP_RFC1042[ETH_ALEN] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00};
BYTE abySNAP_RFC1042[ETH_ALEN] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0x00}; u8 abySNAP_Bridgetunnel[ETH_ALEN]
BYTE abySNAP_Bridgetunnel[ETH_ALEN] = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8}; = {0xAA, 0xAA, 0x03, 0x00, 0x00, 0xF8};
unsigned int uDuration; u32 uDuration;
unsigned int cbHeaderLength = 0, uPadding = 0; u32 cbHeaderLength = 0, uPadding = 0;
void *pvRrvTime; void *pvRrvTime;
PSMICHDRHead pMICHDR; PSMICHDRHead pMICHDR;
void *pvRTS; void *pvRTS;
void *pvCTS; void *pvCTS;
void *pvTxDataHd; void *pvTxDataHd;
BYTE byFBOption = AUTO_FB_NONE,byFragType; u8 byFBOption = AUTO_FB_NONE, byFragType;
WORD wTxBufSize; u16 wTxBufSize;
DWORD dwMICKey0,dwMICKey1,dwMIC_Priority,dwCRC; u32 dwMICKey0, dwMICKey1, dwMIC_Priority, dwCRC;
PDWORD pdwMIC_L,pdwMIC_R; u32 *pdwMIC_L, *pdwMIC_R;
BOOL bSoftWEP = FALSE; int bSoftWEP = FALSE;
pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL;
pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL;
if (bNeedEncryption && pTransmitKey->pvKeyTable) { if (bNeedEncryption && pTransmitKey->pvKeyTable) {
if (((PSKeyTable)&pTransmitKey->pvKeyTable)->bSoftWEP == TRUE) if (((PSKeyTable)&pTransmitKey->pvKeyTable)->bSoftWEP == TRUE)
bSoftWEP = TRUE; /* WEP 256 */ bSoftWEP = TRUE; /* WEP 256 */
...@@ -1839,19 +1617,11 @@ s_bPacketToWirelessUsb( ...@@ -1839,19 +1617,11 @@ s_bPacketToWirelessUsb(
* *
-*/ -*/
void static void s_vGenerateMACHeader(struct vnt_private *pDevice,
s_vGenerateMACHeader ( u8 *pbyBufferAddr, u16 wDuration, PSEthernetHeader psEthHeader,
PSDevice pDevice, int bNeedEncrypt, u16 wFragType, u32 uDMAIdx, u32 uFragIdx)
PBYTE pbyBufferAddr,
WORD wDuration,
PSEthernetHeader psEthHeader,
BOOL bNeedEncrypt,
WORD wFragType,
unsigned int uDMAIdx,
unsigned int uFragIdx
)
{ {
PS802_11Header pMACHeader = (PS802_11Header)pbyBufferAddr; PS802_11Header pMACHeader = (PS802_11Header)pbyBufferAddr;
memset(pMACHeader, 0, (sizeof(S802_11Header))); //- sizeof(pMACHeader->dwIV))); memset(pMACHeader, 0, (sizeof(S802_11Header))); //- sizeof(pMACHeader->dwIV)));
...@@ -1940,39 +1710,25 @@ s_vGenerateMACHeader ( ...@@ -1940,39 +1710,25 @@ s_vGenerateMACHeader (
* *
-*/ -*/
CMD_STATUS csMgmt_xmit( CMD_STATUS csMgmt_xmit(struct vnt_private *pDevice,
PSDevice pDevice, struct vnt_tx_mgmt *pPacket)
PSTxMgmtPacket pPacket
)
{ {
BYTE byPktType; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
PBYTE pbyTxBufferAddr; PTX_BUFFER pTX_Buffer;
void *pvRTS; PSTxBufHead pTxBufHead;
PSCTS pCTS; PUSB_SEND_CONTEXT pContext;
void *pvTxDataHd; PS802_11Header pMACHeader;
unsigned int uDuration; PSCTS pCTS;
unsigned int cbReqCount; SEthernetHeader sEthHeader;
PS802_11Header pMACHeader; u8 byPktType, *pbyTxBufferAddr;
unsigned int cbHeaderSize; void *pvRTS, *pvTxDataHd, *pvRrvTime, *pMICHDR;
unsigned int cbFrameBodySize; u32 uDuration, cbReqCount, cbHeaderSize, cbFrameBodySize, cbFrameSize;
BOOL bNeedACK; int bNeedACK, bIsPSPOLL = FALSE;
BOOL bIsPSPOLL = FALSE; u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4;
PSTxBufHead pTxBufHead; u32 uPadding = 0;
unsigned int cbFrameSize; u16 wTxBufSize;
unsigned int cbIVlen = 0; u32 cbMacHdLen;
unsigned int cbICVlen = 0; u16 wCurrentRate = RATE_1M;
unsigned int cbMIClen = 0;
unsigned int cbFCSlen = 4;
unsigned int uPadding = 0;
WORD wTxBufSize;
unsigned int cbMacHdLen;
SEthernetHeader sEthHeader;
void *pvRrvTime;
void *pMICHDR;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
WORD wCurrentRate = RATE_1M;
PTX_BUFFER pTX_Buffer;
PUSB_SEND_CONTEXT pContext;
...@@ -2231,26 +1987,22 @@ CMD_STATUS csMgmt_xmit( ...@@ -2231,26 +1987,22 @@ CMD_STATUS csMgmt_xmit(
} }
CMD_STATUS CMD_STATUS csBeacon_xmit(struct vnt_private *pDevice,
csBeacon_xmit( struct vnt_tx_mgmt *pPacket)
PSDevice pDevice,
PSTxMgmtPacket pPacket
)
{ {
u32 cbFrameSize = pPacket->cbMPDULen + WLAN_FCS_LEN;
unsigned int cbFrameSize = pPacket->cbMPDULen + WLAN_FCS_LEN; u32 cbHeaderSize = 0;
unsigned int cbHeaderSize = 0; u16 wTxBufSize = sizeof(STxShortBufHead);
WORD wTxBufSize = sizeof(STxShortBufHead); PSTxShortBufHead pTxBufHead;
PSTxShortBufHead pTxBufHead; PS802_11Header pMACHeader;
PS802_11Header pMACHeader; PSTxDataHead_ab pTxDataHead;
PSTxDataHead_ab pTxDataHead; u16 wCurrentRate;
WORD wCurrentRate; u32 cbFrameBodySize;
unsigned int cbFrameBodySize; u32 cbReqCount;
unsigned int cbReqCount; PBEACON_BUFFER pTX_Buffer;
PBEACON_BUFFER pTX_Buffer; u8 *pbyTxBufferAddr;
PBYTE pbyTxBufferAddr; PUSB_SEND_CONTEXT pContext;
PUSB_SEND_CONTEXT pContext; CMD_STATUS status;
CMD_STATUS status;
pContext = (PUSB_SEND_CONTEXT)s_vGetFreeContext(pDevice); pContext = (PUSB_SEND_CONTEXT)s_vGetFreeContext(pDevice);
...@@ -2321,56 +2073,38 @@ csBeacon_xmit( ...@@ -2321,56 +2073,38 @@ csBeacon_xmit(
} }
void vDMA0_tx_80211(struct vnt_private *pDevice, struct sk_buff *skb)
{
struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
void u8 byPktType;
vDMA0_tx_80211(PSDevice pDevice, struct sk_buff *skb) { u8 *pbyTxBufferAddr;
void *pvRTS, *pvCTS, *pvTxDataHd;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); u32 uDuration, cbReqCount;
BYTE byPktType; PS802_11Header pMACHeader;
PBYTE pbyTxBufferAddr; u32 cbHeaderSize, cbFrameBodySize;
void *pvRTS; int bNeedACK, bIsPSPOLL = FALSE;
void *pvCTS; PSTxBufHead pTxBufHead;
void *pvTxDataHd; u32 cbFrameSize;
unsigned int uDuration; u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4;
unsigned int cbReqCount; u32 uPadding = 0;
PS802_11Header pMACHeader; u32 cbMICHDR = 0, uLength = 0;
unsigned int cbHeaderSize; u32 dwMICKey0, dwMICKey1;
unsigned int cbFrameBodySize; u32 dwMIC_Priority;
BOOL bNeedACK; u32 *pdwMIC_L, *pdwMIC_R;
BOOL bIsPSPOLL = FALSE; u16 wTxBufSize;
PSTxBufHead pTxBufHead; u32 cbMacHdLen;
unsigned int cbFrameSize; SEthernetHeader sEthHeader;
unsigned int cbIVlen = 0; void *pvRrvTime, *pMICHDR;
unsigned int cbICVlen = 0; u32 wCurrentRate = RATE_1M;
unsigned int cbMIClen = 0; PUWLAN_80211HDR p80211Header;
unsigned int cbFCSlen = 4; u32 uNodeIndex = 0;
unsigned int uPadding = 0; int bNodeExist = FALSE;
unsigned int cbMICHDR = 0; SKeyItem STempKey;
unsigned int uLength = 0; PSKeyItem pTransmitKey = NULL;
DWORD dwMICKey0, dwMICKey1; u8 *pbyIVHead, *pbyPayloadHead, *pbyMacHdr;
DWORD dwMIC_Priority; u32 cbExtSuppRate = 0;
PDWORD pdwMIC_L; PTX_BUFFER pTX_Buffer;
PDWORD pdwMIC_R; PUSB_SEND_CONTEXT pContext;
WORD wTxBufSize;
unsigned int cbMacHdLen;
SEthernetHeader sEthHeader;
void *pvRrvTime;
void *pMICHDR;
WORD wCurrentRate = RATE_1M;
PUWLAN_80211HDR p80211Header;
unsigned int uNodeIndex = 0;
BOOL bNodeExist = FALSE;
SKeyItem STempKey;
PSKeyItem pTransmitKey = NULL;
PBYTE pbyIVHead;
PBYTE pbyPayloadHead;
PBYTE pbyMacHdr;
unsigned int cbExtSuppRate = 0;
PTX_BUFFER pTX_Buffer;
PUSB_SEND_CONTEXT pContext;
// PWLAN_IE pItem;
pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL; pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL;
...@@ -2729,29 +2463,30 @@ vDMA0_tx_80211(PSDevice pDevice, struct sk_buff *skb) { ...@@ -2729,29 +2463,30 @@ vDMA0_tx_80211(PSDevice pDevice, struct sk_buff *skb) {
* Return Value: NULL * Return Value: NULL
*/ */
int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) int nsDMA_tx_packet(struct vnt_private *pDevice,
u32 uDMAIdx, struct sk_buff *skb)
{ {
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct net_device_stats *pStats = &pDevice->stats;
unsigned int BytesToWrite = 0, uHeaderLen = 0; struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
unsigned int uNodeIndex = 0; u32 BytesToWrite = 0, uHeaderLen = 0;
BYTE byMask[8] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80}; u32 uNodeIndex = 0;
WORD wAID; u8 byMask[8] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80};
BYTE byPktType; u16 wAID;
BOOL bNeedEncryption = FALSE; u8 byPktType;
PSKeyItem pTransmitKey = NULL; int bNeedEncryption = FALSE;
SKeyItem STempKey; PSKeyItem pTransmitKey = NULL;
unsigned int ii; SKeyItem STempKey;
BOOL bTKIP_UseGTK = FALSE; int ii;
BOOL bNeedDeAuth = FALSE; int bTKIP_UseGTK = FALSE;
PBYTE pbyBSSID; int bNeedDeAuth = FALSE;
BOOL bNodeExist = FALSE; u8 *pbyBSSID;
PUSB_SEND_CONTEXT pContext; int bNodeExist = FALSE;
BOOL fConvertedPacket; PUSB_SEND_CONTEXT pContext;
PTX_BUFFER pTX_Buffer; BOOL fConvertedPacket;
unsigned int status; PTX_BUFFER pTX_Buffer;
WORD wKeepRate = pDevice->wCurrentRate; u32 status;
struct net_device_stats* pStats = &pDevice->stats; u16 wKeepRate = pDevice->wCurrentRate;
BOOL bTxeapol_key = FALSE; int bTxeapol_key = FALSE;
if (pMgmt->eCurrMode == WMAC_MODE_ESS_AP) { if (pMgmt->eCurrMode == WMAC_MODE_ESS_AP) {
...@@ -3125,28 +2860,22 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) ...@@ -3125,28 +2860,22 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb)
* Return Value: Return TRUE if packet is copy to dma1; otherwise FALSE * Return Value: Return TRUE if packet is copy to dma1; otherwise FALSE
*/ */
int bRelayPacketSend(struct vnt_private *pDevice, u8 *pbySkbData, u32 uDataLen,
BOOL u32 uNodeIndex)
bRelayPacketSend (
PSDevice pDevice,
PBYTE pbySkbData,
unsigned int uDataLen,
unsigned int uNodeIndex
)
{ {
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
unsigned int BytesToWrite = 0, uHeaderLen = 0; u32 BytesToWrite = 0, uHeaderLen = 0;
BYTE byPktType = PK_TYPE_11B; u8 byPktType = PK_TYPE_11B;
BOOL bNeedEncryption = FALSE; int bNeedEncryption = FALSE;
SKeyItem STempKey; SKeyItem STempKey;
PSKeyItem pTransmitKey = NULL; PSKeyItem pTransmitKey = NULL;
PBYTE pbyBSSID; u8 *pbyBSSID;
PUSB_SEND_CONTEXT pContext; PUSB_SEND_CONTEXT pContext;
BYTE byPktTyp; u8 byPktTyp;
BOOL fConvertedPacket; int fConvertedPacket;
PTX_BUFFER pTX_Buffer; PTX_BUFFER pTX_Buffer;
unsigned int status; u32 status;
WORD wKeepRate = pDevice->wCurrentRate; u16 wKeepRate = pDevice->wCurrentRate;
......
...@@ -665,30 +665,11 @@ typedef struct tagSBEACON_BUFFER ...@@ -665,30 +665,11 @@ typedef struct tagSBEACON_BUFFER
/*--------------------- Export Functions --------------------------*/ /*--------------------- Export Functions --------------------------*/
BOOL void vDMA0_tx_80211(struct vnt_private *, struct sk_buff *skb);
bPacketToWirelessUsb( int nsDMA_tx_packet(struct vnt_private *, u32 uDMAIdx, struct sk_buff *skb);
PSDevice pDevice, CMD_STATUS csMgmt_xmit(struct vnt_private *, struct vnt_tx_mgmt *);
BYTE byPktType, CMD_STATUS csBeacon_xmit(struct vnt_private *, struct vnt_tx_mgmt *);
PBYTE usbPacketBuf, int bRelayPacketSend(struct vnt_private *, u8 *pbySkbData, u32 uDataLen,
BOOL bNeedEncrypt, u32 uNodeIndex);
unsigned int cbPayloadSize,
unsigned int uDMAIdx,
PSEthernetHeader psEthHeader,
PBYTE pPacket,
PSKeyItem pTransmitKey,
unsigned int uNodeIndex,
WORD wCurrentRate,
unsigned int *pcbHeaderLen,
unsigned int *pcbTotalLen
);
void vDMA0_tx_80211(PSDevice pDevice, struct sk_buff *skb);
int nsDMA_tx_packet(PSDevice pDevice,
unsigned int uDMAIdx,
struct sk_buff *skb);
CMD_STATUS csMgmt_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket);
CMD_STATUS csBeacon_xmit(PSDevice pDevice, PSTxMgmtPacket pPacket);
BOOL bRelayPacketSend(PSDevice pDevice, PBYTE pbySkbData,
unsigned int uDataLen, unsigned int uNodeIndex);
#endif /* __RXTX_H__ */ #endif /* __RXTX_H__ */
...@@ -260,19 +260,16 @@ WPA2vParseRSN ( ...@@ -260,19 +260,16 @@ WPA2vParseRSN (
* Return Value: length of IEs. * Return Value: length of IEs.
* *
-*/ -*/
unsigned int unsigned int WPA2uSetIEs(void *pMgmtHandle, PWLAN_IE_RSN pRSNIEs)
WPA2uSetIEs(void *pMgmtHandle,
PWLAN_IE_RSN pRSNIEs
)
{ {
PSMgmtObject pMgmt = (PSMgmtObject) pMgmtHandle; struct vnt_manager *pMgmt = (struct vnt_manager *)pMgmtHandle;
PBYTE pbyBuffer = NULL; u8 *pbyBuffer = NULL;
unsigned int ii = 0; int ii = 0;
PWORD pwPMKID = NULL; u16 *pwPMKID = NULL;
if (pRSNIEs == NULL)
return 0;
if (pRSNIEs == NULL) {
return(0);
}
if (((pMgmt->eAuthenMode == WMAC_AUTH_WPA2) || if (((pMgmt->eAuthenMode == WMAC_AUTH_WPA2) ||
(pMgmt->eAuthenMode == WMAC_AUTH_WPA2PSK)) && (pMgmt->eAuthenMode == WMAC_AUTH_WPA2PSK)) &&
(pMgmt->pCurrBSS != NULL)) { (pMgmt->pCurrBSS != NULL)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment