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

staging: vt6656: Remove 10 second timer and move to BSSvSecondCallBack

Remove sTimerTxData 10 second timer which triggers PSbSendNullPacket
every 40 seconds when bLinkPass == true.

Move the 40 second timer to the existing BSSvSecondCallBack
one second delayed workqueue and trigger every 40 seconds when
bLinkPass == true.
Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 17f3ced0
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
#include "control.h" #include "control.h"
#include "rndis.h" #include "rndis.h"
#include "iowpa.h" #include "iowpa.h"
#include "power.h"
static int msglevel =MSG_LEVEL_INFO; static int msglevel =MSG_LEVEL_INFO;
//static int msglevel =MSG_LEVEL_DEBUG; //static int msglevel =MSG_LEVEL_DEBUG;
...@@ -1125,6 +1126,18 @@ else { ...@@ -1125,6 +1126,18 @@ else {
} }
if (pDevice->bLinkPass == true) { if (pDevice->bLinkPass == true) {
if (pMgmt->eAuthenMode < WMAC_AUTH_WPA ||
pDevice->fWPA_Authened == true) {
if (++pDevice->tx_data_time_out > 40) {
pDevice->tx_trigger = true;
PSbSendNullPacket(pDevice);
pDevice->tx_trigger = false;
pDevice->tx_data_time_out = 0;
}
}
if (netif_queue_stopped(pDevice->dev)) if (netif_queue_stopped(pDevice->dev))
netif_wake_queue(pDevice->dev); netif_wake_queue(pDevice->dev);
} }
......
...@@ -711,11 +711,8 @@ struct vnt_private { ...@@ -711,11 +711,8 @@ struct vnt_private {
/* One second callback */ /* One second callback */
struct delayed_work second_callback_work; struct delayed_work second_callback_work;
struct timer_list sTimerTxData; u8 tx_data_time_out;
unsigned long nTxDataTimeCout; bool tx_trigger;
int fTxDataInSleep;
int IsTxDataTrigger;
int fWPA_Authened; /*is WPA/WPA-PSK or WPA2/WPA2-PSK authen?? */ int fWPA_Authened; /*is WPA/WPA-PSK or WPA2/WPA2-PSK authen?? */
u8 byReAssocCount; u8 byReAssocCount;
u8 byLinkWaitCount; u8 byLinkWaitCount;
......
...@@ -1081,8 +1081,6 @@ static int device_close(struct net_device *dev) ...@@ -1081,8 +1081,6 @@ static int device_close(struct net_device *dev)
cancel_delayed_work_sync(&pDevice->run_command_work); cancel_delayed_work_sync(&pDevice->run_command_work);
cancel_delayed_work_sync(&pDevice->second_callback_work); cancel_delayed_work_sync(&pDevice->second_callback_work);
del_timer(&pDevice->sTimerTxData);
if (pDevice->bDiversityRegCtlON) { if (pDevice->bDiversityRegCtlON) {
del_timer(&pDevice->TimerSQ3Tmax1); del_timer(&pDevice->TimerSQ3Tmax1);
del_timer(&pDevice->TimerSQ3Tmax2); del_timer(&pDevice->TimerSQ3Tmax2);
......
...@@ -257,10 +257,8 @@ int PSbSendNullPacket(struct vnt_private *pDevice) ...@@ -257,10 +257,8 @@ int PSbSendNullPacket(struct vnt_private *pDevice)
if (pDevice->bLinkPass == false) if (pDevice->bLinkPass == false)
return false; return false;
if ((pDevice->bEnablePSMode == false) && if (pDevice->bEnablePSMode == false && pDevice->tx_trigger == false)
(pDevice->fTxDataInSleep == false)) {
return false; return false;
}
memset(pMgmt->pbyPSPacketPool, 0, sizeof(struct vnt_tx_mgmt) memset(pMgmt->pbyPSPacketPool, 0, sizeof(struct vnt_tx_mgmt)
+ WLAN_NULLDATA_FR_MAXLEN); + WLAN_NULLDATA_FR_MAXLEN);
......
...@@ -656,8 +656,6 @@ static void s_nsBulkOutIoCompleteWrite(struct urb *urb) ...@@ -656,8 +656,6 @@ static void s_nsBulkOutIoCompleteWrite(struct urb *urb)
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Write %d bytes\n",(int)ulBufLen); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Write %d bytes\n",(int)ulBufLen);
pDevice->ulBulkOutBytesWrite += ulBufLen; pDevice->ulBulkOutBytesWrite += ulBufLen;
pDevice->ulBulkOutContCRCError = 0; pDevice->ulBulkOutContCRCError = 0;
pDevice->nTxDataTimeCout = 0;
} else { } else {
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"BULK Out failed %d\n", status); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"BULK Out failed %d\n", status);
pDevice->ulBulkOutError++; pDevice->ulBulkOutError++;
......
...@@ -657,22 +657,6 @@ void vRunCommand(struct work_struct *work) ...@@ -657,22 +657,6 @@ void vRunCommand(struct work_struct *work)
netif_wake_queue(pDevice->dev); netif_wake_queue(pDevice->dev);
} }
if(pDevice->IsTxDataTrigger != false) { //TxDataTimer is not triggered at the first time
// printk("Re-initial TxDataTimer****\n");
del_timer(&pDevice->sTimerTxData);
init_timer(&pDevice->sTimerTxData);
pDevice->sTimerTxData.data = (unsigned long) pDevice;
pDevice->sTimerTxData.function = (TimerFunction)BSSvSecondTxData;
pDevice->sTimerTxData.expires = RUN_AT(10*HZ); //10s callback
pDevice->fTxDataInSleep = false;
pDevice->nTxDataTimeCout = 0;
}
else {
// printk("mike:-->First time trigger TimerTxData InSleep\n");
}
pDevice->IsTxDataTrigger = true;
add_timer(&pDevice->sTimerTxData);
} }
else if(pMgmt->eCurrState < WMAC_STATE_ASSOCPENDING) { else if(pMgmt->eCurrState < WMAC_STATE_ASSOCPENDING) {
printk("WLAN_ASSOCIATE_WAIT:Association Fail???\n"); printk("WLAN_ASSOCIATE_WAIT:Association Fail???\n");
...@@ -684,7 +668,6 @@ void vRunCommand(struct work_struct *work) ...@@ -684,7 +668,6 @@ void vRunCommand(struct work_struct *work)
vCommandTimerWait((void *) pDevice, ASSOCIATE_TIMEOUT/2); vCommandTimerWait((void *) pDevice, ASSOCIATE_TIMEOUT/2);
return; return;
} }
pDevice->byLinkWaitCount = 0;
s_bCommandComplete(pDevice); s_bCommandComplete(pDevice);
break; break;
...@@ -1162,33 +1145,3 @@ void vResetCommandTimer(struct vnt_private *pDevice) ...@@ -1162,33 +1145,3 @@ void vResetCommandTimer(struct vnt_private *pDevice)
pDevice->bCmdRunning = false; pDevice->bCmdRunning = false;
pDevice->bCmdClear = false; pDevice->bCmdClear = false;
} }
void BSSvSecondTxData(struct vnt_private *pDevice)
{
struct vnt_manager *pMgmt = &pDevice->vnt_mgmt;
pDevice->nTxDataTimeCout++;
if (pDevice->nTxDataTimeCout < 4) { //don't tx data if timer less than 40s
// printk("mike:%s-->no data Tx not exceed the desired Time as %d\n",__FUNCTION__,
// (int)pDevice->nTxDataTimeCout);
pDevice->sTimerTxData.expires = RUN_AT(10 * HZ); //10s callback
add_timer(&pDevice->sTimerTxData);
return;
}
spin_lock_irq(&pDevice->lock);
//is wap_supplicant running successful OR only open && sharekey mode!
if (((pDevice->bLinkPass == true) &&
(pMgmt->eAuthenMode < WMAC_AUTH_WPA)) || //open && sharekey linking
(pDevice->fWPA_Authened == true)) { //wpa linking
// printk("mike:%s-->InSleep Tx Data Procedure\n",__FUNCTION__);
pDevice->fTxDataInSleep = true;
PSbSendNullPacket(pDevice); //send null packet
pDevice->fTxDataInSleep = false;
}
spin_unlock_irq(&pDevice->lock);
pDevice->sTimerTxData.expires = RUN_AT(10 * HZ); //10s callback
add_timer(&pDevice->sTimerTxData);
}
...@@ -107,6 +107,4 @@ int bScheduleCommand(struct vnt_private *, CMD_CODE eCommand, u8 *pbyItem0); ...@@ -107,6 +107,4 @@ int bScheduleCommand(struct vnt_private *, CMD_CODE eCommand, u8 *pbyItem0);
void vRunCommand(struct work_struct *work); void vRunCommand(struct work_struct *work);
void BSSvSecondTxData(struct vnt_private *);
#endif /* __WCMD_H__ */ #endif /* __WCMD_H__ */
...@@ -213,14 +213,6 @@ void vMgrObjectInit(struct vnt_private *pDevice) ...@@ -213,14 +213,6 @@ void vMgrObjectInit(struct vnt_private *pDevice)
pMgmt->wIBSSBeaconPeriod = DEFAULT_IBSS_BI; pMgmt->wIBSSBeaconPeriod = DEFAULT_IBSS_BI;
BSSvClearBSSList((void *) pDevice, false); BSSvClearBSSList((void *) pDevice, false);
init_timer(&pDevice->sTimerTxData);
pDevice->sTimerTxData.data = (unsigned long)pDevice;
pDevice->sTimerTxData.function = (TimerFunction)BSSvSecondTxData;
pDevice->sTimerTxData.expires = RUN_AT(10*HZ); //10s callback
pDevice->fTxDataInSleep = false;
pDevice->IsTxDataTrigger = false;
pDevice->nTxDataTimeCout = 0;
pDevice->cbFreeCmdQueue = CMD_Q_SIZE; pDevice->cbFreeCmdQueue = CMD_Q_SIZE;
pDevice->uCmdDequeueIdx = 0; pDevice->uCmdDequeueIdx = 0;
pDevice->uCmdEnqueueIdx = 0; pDevice->uCmdEnqueueIdx = 0;
......
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