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;
BYTE ZeroBSSID[WLAN_BSSID_LEN]={0x00,0x00,0x00,0x00,0x00,0x00}; u8 ZeroBSSID[WLAN_BSSID_LEN] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
unsigned int ii = 0; int ii = 0;
unsigned int jj = 0; 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;
unsigned int ii; 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,12 +332,12 @@ PKnownBSS BSSpAddrIsInBSSList(void *hDeviceContext, ...@@ -336,12 +332,12 @@ 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,
...@@ -350,20 +346,18 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext, ...@@ -350,20 +346,18 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext,
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]);
for (ii = 0; ii < MAX_BSS_NUM; ii++) { for (ii = 0; ii < MAX_BSS_NUM; ii++) {
...@@ -516,12 +510,12 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext, ...@@ -516,12 +510,12 @@ 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,
...@@ -531,14 +525,14 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, ...@@ -531,14 +525,14 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext,
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)
{ {
struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
struct vnt_rx_mgmt *pRxPacket =
(struct vnt_rx_mgmt *)pRxPacketContext;
int ii, jj; int ii, jj;
PSDevice pDevice = (PSDevice)hDeviceContext;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj);
PSRxMgmtPacket pRxPacket = (PSRxMgmtPacket)pRxPacketContext;
signed long ldBm, ldBmSum; signed long ldBm, ldBmSum;
BOOL bParsingQuiet = FALSE; BOOL bParsingQuiet = FALSE;
...@@ -658,12 +652,10 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, ...@@ -658,12 +652,10 @@ 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
...@@ -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;
PSDevice pDevice = (PSDevice)hDeviceContext; int ii;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); u32 BigestCount = 0;
unsigned int ii; u32 SelectIndex;
unsigned int BigestCount = 0;
unsigned int SelectIndex;
struct sk_buff *skb; 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,12 +744,10 @@ void BSSvCreateOneNode(void *hDeviceContext, unsigned int *puNodeIndex) ...@@ -753,12 +744,10 @@ 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);
BYTE byMask[8] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80};
struct sk_buff *skb; struct sk_buff *skb;
...@@ -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;
unsigned int uSleepySTACnt = 0; u32 uSleepySTACnt = 0;
unsigned int uNonShortSlotSTACnt = 0; u32 uNonShortSlotSTACnt = 0;
unsigned int uLongPreambleSTACnt = 0; u32 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;
unsigned int ii; 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,11 +1369,10 @@ void BSSvClearNodeDBTable(void *hDeviceContext, ...@@ -1390,11 +1369,10 @@ 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;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
int ii; int ii;
if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) || if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) ||
...@@ -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,9 +1411,8 @@ void s_vCheckSensitivity(void *hDeviceContext) ...@@ -1433,9 +1411,8 @@ 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;
...@@ -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;
PSMgmtObject pMgmt = &(pDevice->sMgmtObj); struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
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,23 +226,20 @@ typedef struct tagKnownNodeDB { ...@@ -226,23 +226,20 @@ 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,
...@@ -251,16 +248,16 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext, ...@@ -251,16 +248,16 @@ BOOL BSSbInsertToBSSList(void *hDeviceContext,
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,
...@@ -270,36 +267,29 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext, ...@@ -270,36 +267,29 @@ BOOL BSSbUpdateToBSSList(void *hDeviceContext,
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(void *hDeviceContext, unsigned int *puNodeIndex); void BSSvCreateOneNode(struct vnt_private *, u32 *puNodeIndex);
void BSSvUpdateAPNode(void *hDeviceContext, void BSSvUpdateAPNode(struct vnt_private *, u16 *pwCapInfo,
PWORD pwCapInfo, PWLAN_IE_SUPP_RATES pItemRates, PWLAN_IE_SUPP_RATES pExtSuppRates);
PWLAN_IE_SUPP_RATES pItemRates,
PWLAN_IE_SUPP_RATES pExtSuppRates);
void BSSvSecondCallBack(void *hDeviceContext); void BSSvSecondCallBack(struct vnt_private *);
void BSSvUpdateNodeTxCounter(void *hDeviceContext, void BSSvUpdateNodeTxCounter(struct vnt_private *, PSStatCounter pStatistic,
PSStatCounter pStatistic, u8 byTSR, u8 byPktNO);
BYTE byTSR,
BYTE byPktNO);
void BSSvRemoveOneNode(void *hDeviceContext, void BSSvRemoveOneNode(struct vnt_private *, u32 uNodeIndex);
unsigned int uNodeIndex);
void BSSvAddMulticastNode(void *hDeviceContext); void BSSvAddMulticastNode(struct vnt_private *);
void BSSvClearNodeDBTable(void *hDeviceContext, void BSSvClearNodeDBTable(struct vnt_private *, u32 uStartIndex);
unsigned int uStartIndex);
void BSSvClearAnyBSSJoinRecord(void *hDeviceContext); void BSSvClearAnyBSSJoinRecord(struct vnt_private *);
#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,
BYTE byPktNum,
PBYTE pbyDestAddr,
WORD wPktLength,
WORD wFIFOCtl
);
static
void *
s_vGetFreeContext(
PSDevice pDevice
);
static
void
s_vGenerateTxParameter(
PSDevice pDevice,
BYTE byPktType,
WORD wCurrentRate,
void *pTxBufHead,
void *pvRrvTime,
void *pvRTS,
void *pvCTS,
unsigned int cbFrameSize,
BOOL bNeedACK,
unsigned int uDMAIdx,
PSEthernetHeader psEthHeader
);
static 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
);
static void *s_vGetFreeContext(struct vnt_private *pDevice);
static void s_vGenerateTxParameter(struct vnt_private *pDevice,
u8 byPktType, u16 wCurrentRate, void *pTxBufHead, void *pvRrvTime,
void *pvRTS, void *pvCTS, u32 cbFrameSize, int bNeedACK, u32 uDMAIdx,
PSEthernetHeader psEthHeader);
static u32 s_uFillDataHead(struct vnt_private *pDevice,
u8 byPktType, u16 wCurrentRate, void *pTxDataHead, u32 cbFrameLength,
u32 uDMAIdx, int bNeedAck, u32 uFragIdx, u32 cbLastFragmentSize,
u32 uMACfragNum, 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 static void s_vGenerateMACHeader(struct vnt_private *pDevice,
void u8 *pbyBufferAddr, u16 wDuration, PSEthernetHeader psEthHeader,
s_vFillTxKey( int bNeedEncrypt, u16 wFragType, u32 uDMAIdx, u32 uFragIdx);
PSDevice pDevice,
PBYTE pbyBuf,
PBYTE pbyIVHead,
PSKeyItem pTransmitKey,
PBYTE pbyHdrBuf,
WORD wPayloadLen,
PBYTE pMICHDR
);
static static void s_vFillTxKey(struct vnt_private *pDevice, u8 *pbyBuf,
void u8 *pbyIVHead, PSKeyItem pTransmitKey, u8 *pbyHdrBuf, u16 wPayloadLen,
s_vSWencryption ( u8 *pMICHDR);
PSDevice pDevice,
PSKeyItem pTransmitKey,
PBYTE pbyPayloadHead,
WORD wPayloadSize
);
static unsigned int s_uGetTxRsvTime( static void s_vSWencryption(struct vnt_private *pDevice,
PSDevice pDevice, PSKeyItem pTransmitKey, u8 *pbyPayloadHead, u16 wPayloadSize);
BYTE byPktType,
unsigned int cbFrameLength,
WORD wRate,
BOOL bNeedAck
);
static unsigned int s_uGetTxRsvTime(struct vnt_private *pDevice, u8 byPktType,
u32 cbFrameLength, u16 wRate, int bNeedAck);
static unsigned int s_uGetRTSCTSRsvTime( static u32 s_uGetRTSCTSRsvTime(struct vnt_private *pDevice, u8 byRTSRsvType,
PSDevice pDevice, u8 byPktType, u32 cbFrameLength, u16 wCurrentRate);
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 static void s_vFillCTSHead(struct vnt_private *pDevice, u32 uDMAIdx,
void u8 byPktType, void *pvCTS, u32 cbFrameLength, int bNeedAck,
s_vFillRTSHead( int bDisCRC, u16 wCurrentRate, u8 byFBOption);
PSDevice pDevice,
BYTE byPktType,
void *pvRTS,
unsigned int cbFrameLength,
BOOL bNeedAck,
BOOL bDisCRC,
PSEthernetHeader psEthHeader,
WORD wCurrentRate,
BYTE byFBOption
);
static unsigned int s_uGetDataDuration( static void s_vFillRTSHead(struct vnt_private *pDevice, u8 byPktType,
PSDevice pDevice, void *pvRTS, u32 cbFrameLength, int bNeedAck, int bDisCRC,
BYTE byDurType, PSEthernetHeader psEthHeader, u16 wCurrentRate, u8 byFBOption);
unsigned int cbFrameLength,
BYTE byPktType,
WORD wRate,
BOOL bNeedAck,
unsigned int uFragIdx,
unsigned int cbLastFragmentSize,
unsigned int uMACfragNum,
BYTE byFBOption
);
static u32 s_uGetDataDuration(struct vnt_private *pDevice, u8 byDurType,
u32 cbFrameLength, u8 byPktType, u16 wRate, int bNeedAck,
u32 uFragIdx, u32 cbLastFragmentSize, u32 uMACfragNum,
u8 byFBOption);
static static unsigned int s_uGetRTSCTSDuration(struct vnt_private *pDevice,
unsigned int u8 byDurType, u32 cbFrameLength, u8 byPktType, u16 wRate,
s_uGetRTSCTSDuration ( int bNeedAck, u8 byFBOption);
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,17 +1617,9 @@ s_bPacketToWirelessUsb( ...@@ -1839,17 +1617,9 @@ 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;
...@@ -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;
void *pvRTS;
PSCTS pCTS;
void *pvTxDataHd;
unsigned int uDuration;
unsigned int cbReqCount;
PS802_11Header pMACHeader;
unsigned int cbHeaderSize;
unsigned int cbFrameBodySize;
BOOL bNeedACK;
BOOL bIsPSPOLL = FALSE;
PSTxBufHead pTxBufHead;
unsigned int cbFrameSize;
unsigned int cbIVlen = 0;
unsigned int cbICVlen = 0;
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; PTX_BUFFER pTX_Buffer;
PSTxBufHead pTxBufHead;
PUSB_SEND_CONTEXT pContext; PUSB_SEND_CONTEXT pContext;
PS802_11Header pMACHeader;
PSCTS pCTS;
SEthernetHeader sEthHeader;
u8 byPktType, *pbyTxBufferAddr;
void *pvRTS, *pvTxDataHd, *pvRrvTime, *pMICHDR;
u32 uDuration, cbReqCount, cbHeaderSize, cbFrameBodySize, cbFrameSize;
int bNeedACK, bIsPSPOLL = FALSE;
u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4;
u32 uPadding = 0;
u16 wTxBufSize;
u32 cbMacHdLen;
u16 wCurrentRate = RATE_1M;
...@@ -2231,24 +1987,20 @@ CMD_STATUS csMgmt_xmit( ...@@ -2231,24 +1987,20 @@ 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;
WORD wCurrentRate; u16 wCurrentRate;
unsigned int cbFrameBodySize; u32 cbFrameBodySize;
unsigned int cbReqCount; u32 cbReqCount;
PBEACON_BUFFER pTX_Buffer; PBEACON_BUFFER pTX_Buffer;
PBYTE pbyTxBufferAddr; u8 *pbyTxBufferAddr;
PUSB_SEND_CONTEXT pContext; PUSB_SEND_CONTEXT pContext;
CMD_STATUS status; CMD_STATUS status;
...@@ -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;
PBYTE pbyTxBufferAddr;
void *pvRTS;
void *pvCTS;
void *pvTxDataHd;
unsigned int uDuration;
unsigned int cbReqCount;
PS802_11Header pMACHeader; PS802_11Header pMACHeader;
unsigned int cbHeaderSize; u32 cbHeaderSize, cbFrameBodySize;
unsigned int cbFrameBodySize; int bNeedACK, bIsPSPOLL = FALSE;
BOOL bNeedACK;
BOOL bIsPSPOLL = FALSE;
PSTxBufHead pTxBufHead; PSTxBufHead pTxBufHead;
unsigned int cbFrameSize; u32 cbFrameSize;
unsigned int cbIVlen = 0; u32 cbIVlen = 0, cbICVlen = 0, cbMIClen = 0, cbFCSlen = 4;
unsigned int cbICVlen = 0; u32 uPadding = 0;
unsigned int cbMIClen = 0; u32 cbMICHDR = 0, uLength = 0;
unsigned int cbFCSlen = 4; u32 dwMICKey0, dwMICKey1;
unsigned int uPadding = 0; u32 dwMIC_Priority;
unsigned int cbMICHDR = 0; u32 *pdwMIC_L, *pdwMIC_R;
unsigned int uLength = 0; u16 wTxBufSize;
DWORD dwMICKey0, dwMICKey1; u32 cbMacHdLen;
DWORD dwMIC_Priority;
PDWORD pdwMIC_L;
PDWORD pdwMIC_R;
WORD wTxBufSize;
unsigned int cbMacHdLen;
SEthernetHeader sEthHeader; SEthernetHeader sEthHeader;
void *pvRrvTime; void *pvRrvTime, *pMICHDR;
void *pMICHDR; u32 wCurrentRate = RATE_1M;
WORD wCurrentRate = RATE_1M;
PUWLAN_80211HDR p80211Header; PUWLAN_80211HDR p80211Header;
unsigned int uNodeIndex = 0; u32 uNodeIndex = 0;
BOOL bNodeExist = FALSE; int bNodeExist = FALSE;
SKeyItem STempKey; SKeyItem STempKey;
PSKeyItem pTransmitKey = NULL; PSKeyItem pTransmitKey = NULL;
PBYTE pbyIVHead; u8 *pbyIVHead, *pbyPayloadHead, *pbyMacHdr;
PBYTE pbyPayloadHead; u32 cbExtSuppRate = 0;
PBYTE pbyMacHdr;
unsigned int cbExtSuppRate = 0;
PTX_BUFFER pTX_Buffer; PTX_BUFFER pTX_Buffer;
PUSB_SEND_CONTEXT pContext; 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;
int bNeedEncryption = FALSE;
PSKeyItem pTransmitKey = NULL; PSKeyItem pTransmitKey = NULL;
SKeyItem STempKey; SKeyItem STempKey;
unsigned int ii; int ii;
BOOL bTKIP_UseGTK = FALSE; int bTKIP_UseGTK = FALSE;
BOOL bNeedDeAuth = FALSE; int bNeedDeAuth = FALSE;
PBYTE pbyBSSID; u8 *pbyBSSID;
BOOL bNodeExist = FALSE; int bNodeExist = FALSE;
PUSB_SEND_CONTEXT pContext; PUSB_SEND_CONTEXT pContext;
BOOL fConvertedPacket; BOOL fConvertedPacket;
PTX_BUFFER pTX_Buffer; PTX_BUFFER pTX_Buffer;
unsigned int status; u32 status;
WORD wKeepRate = pDevice->wCurrentRate; u16 wKeepRate = pDevice->wCurrentRate;
struct net_device_stats* pStats = &pDevice->stats; int bTxeapol_key = FALSE;
BOOL 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