staging: vt6656: Fix stuck in scanning with variable uScanChannel.
When pMgmt->uScanChannel > pDevice->byMaxChannel scanning ends but no SIOCGIWSCAN(scan done) message is sent. This section of code is duplicate of that in WLAN_CMD_SCAN_END which sends scan done. So remove it and jump eCommandState to WLAN_CMD_SCAN_END. Increment uScanChannel on !ChannelValid. At WLAN_CMD_SCAN_END reset uScanChannel to 0 when done. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c5cf4606b6
commit
257f658015
|
@ -340,29 +340,7 @@ void vRunCommand(struct vnt_private *pDevice)
|
|||
pMgmt->uScanChannel = pDevice->byMinChannel;
|
||||
}
|
||||
if (pMgmt->uScanChannel > pDevice->byMaxChannel) {
|
||||
pMgmt->eScanState = WMAC_NO_SCANNING;
|
||||
|
||||
if (pDevice->byBBType != pDevice->byScanBBType) {
|
||||
pDevice->byBBType = pDevice->byScanBBType;
|
||||
CARDvSetBSSMode(pDevice);
|
||||
}
|
||||
|
||||
if (pDevice->bUpdateBBVGA) {
|
||||
BBvSetShortSlotTime(pDevice);
|
||||
BBvSetVGAGainOffset(pDevice, pDevice->byBBVGACurrent);
|
||||
BBvUpdatePreEDThreshold(pDevice, false);
|
||||
}
|
||||
// Set channel back
|
||||
vAdHocBeaconRestart(pDevice);
|
||||
// Set channel back
|
||||
CARDbSetMediaChannel(pDevice, pMgmt->uCurrChannel);
|
||||
// Set Filter
|
||||
if (pMgmt->bCurrBSSIDFilterOn) {
|
||||
MACvRegBitsOn(pDevice, MAC_REG_RCR, RCR_BSSID);
|
||||
pDevice->byRxMode |= RCR_BSSID;
|
||||
}
|
||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Scanning, set back to channel: [%d]\n", pMgmt->uCurrChannel);
|
||||
pDevice->bStopDataPkt = false;
|
||||
pDevice->eCommandState = WLAN_CMD_SCAN_END;
|
||||
s_bCommandComplete(pDevice);
|
||||
spin_unlock_irq(&pDevice->lock);
|
||||
return;
|
||||
|
@ -370,6 +348,7 @@ void vRunCommand(struct vnt_private *pDevice)
|
|||
} else {
|
||||
if (!ChannelValid(pDevice->byZoneType, pMgmt->uScanChannel)) {
|
||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Invalid channel pMgmt->uScanChannel = %d \n",pMgmt->uScanChannel);
|
||||
pMgmt->uScanChannel++;
|
||||
s_bCommandComplete(pDevice);
|
||||
spin_unlock_irq(&pDevice->lock);
|
||||
return;
|
||||
|
@ -466,6 +445,7 @@ void vRunCommand(struct vnt_private *pDevice)
|
|||
pDevice->byRxMode |= RCR_BSSID;
|
||||
}
|
||||
DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Scanning, set back to channel: [%d]\n", pMgmt->uCurrChannel);
|
||||
pMgmt->uScanChannel = 0;
|
||||
pMgmt->eScanState = WMAC_NO_SCANNING;
|
||||
pDevice->bStopDataPkt = false;
|
||||
|
||||
|
|
Loading…
Reference in New Issue