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

staging: vt6655: mac80211 conversion: changes to device_intr

Remove net device code.

Remove current measure code and function s_vCompleteCurrentMeasure
and switch code which are now handled by mac80211

Change beaconing to mac80211.
Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bc5d431c
...@@ -400,45 +400,6 @@ device_set_options(struct vnt_private *pDevice) ...@@ -400,45 +400,6 @@ device_set_options(struct vnt_private *pDevice)
(int)pDevice->bDiversityRegCtlON); (int)pDevice->bDiversityRegCtlON);
} }
static void s_vCompleteCurrentMeasure(struct vnt_private *pDevice,
unsigned char byResult)
{
unsigned int ii;
unsigned long dwDuration = 0;
unsigned char byRPI0 = 0;
for (ii = 1; ii < 8; ii++) {
pDevice->dwRPIs[ii] *= 255;
dwDuration |= *((unsigned short *)(pDevice->pCurrMeasureEID->sReq.abyDuration));
dwDuration <<= 10;
pDevice->dwRPIs[ii] /= dwDuration;
pDevice->abyRPIs[ii] = (unsigned char)pDevice->dwRPIs[ii];
byRPI0 += pDevice->abyRPIs[ii];
}
pDevice->abyRPIs[0] = (0xFF - byRPI0);
if (pDevice->uNumOfMeasureEIDs == 0) {
VNTWIFIbMeasureReport(pDevice->pMgmt,
true,
pDevice->pCurrMeasureEID,
byResult,
pDevice->byBasicMap,
pDevice->byCCAFraction,
pDevice->abyRPIs
);
} else {
VNTWIFIbMeasureReport(pDevice->pMgmt,
false,
pDevice->pCurrMeasureEID,
byResult,
pDevice->byBasicMap,
pDevice->byCCAFraction,
pDevice->abyRPIs
);
CARDbStartMeasure(pDevice, pDevice->pCurrMeasureEID++, pDevice->uNumOfMeasureEIDs);
}
}
// //
// Initialisation of MAC & BBP registers // Initialisation of MAC & BBP registers
// //
...@@ -2056,14 +2017,11 @@ static int device_xmit(struct sk_buff *skb, struct net_device *dev) { ...@@ -2056,14 +2017,11 @@ static int device_xmit(struct sk_buff *skb, struct net_device *dev) {
static irqreturn_t device_intr(int irq, void *dev_instance) static irqreturn_t device_intr(int irq, void *dev_instance)
{ {
struct net_device *dev = dev_instance; struct vnt_private *pDevice = dev_instance;
struct vnt_private *pDevice = netdev_priv(dev);
int max_count = 0; int max_count = 0;
unsigned long dwMIBCounter = 0; unsigned long dwMIBCounter = 0;
PSMgmtObject pMgmt = pDevice->pMgmt;
unsigned char byOrgPageSel = 0; unsigned char byOrgPageSel = 0;
int handled = 0; int handled = 0;
unsigned char byData = 0;
int ii = 0; int ii = 0;
unsigned long flags; unsigned long flags;
...@@ -2106,94 +2064,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance) ...@@ -2106,94 +2064,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance)
device_error(pDevice, pDevice->dwIsr); device_error(pDevice, pDevice->dwIsr);
} }
if (pDevice->byLocalID > REV_ID_VT3253_B1) {
if (pDevice->dwIsr & ISR_MEASURESTART) {
// 802.11h measure start
pDevice->byOrgChannel = pDevice->byCurrentCh;
VNSvInPortB(pDevice->PortOffset + MAC_REG_RCR, &(pDevice->byOrgRCR));
VNSvOutPortB(pDevice->PortOffset + MAC_REG_RCR, (RCR_RXALLTYPE | RCR_UNICAST | RCR_BROADCAST | RCR_MULTICAST | RCR_WPAERR));
MACvSelectPage1(pDevice->PortOffset);
VNSvInPortD(pDevice->PortOffset + MAC_REG_MAR0, &(pDevice->dwOrgMAR0));
VNSvInPortD(pDevice->PortOffset + MAC_REG_MAR4, &(pDevice->dwOrgMAR4));
MACvSelectPage0(pDevice->PortOffset);
//xxxx
if (set_channel(pDevice, pDevice->pCurrMeasureEID->sReq.byChannel)) {
pDevice->bMeasureInProgress = true;
MACvSelectPage1(pDevice->PortOffset);
MACvRegBitsOn(pDevice->PortOffset, MAC_REG_MSRCTL, MSRCTL_READY);
MACvSelectPage0(pDevice->PortOffset);
pDevice->byBasicMap = 0;
pDevice->byCCAFraction = 0;
for (ii = 0; ii < 8; ii++)
pDevice->dwRPIs[ii] = 0;
} else {
// can not measure because set channel fail
// clear measure control
MACvRegBitsOff(pDevice->PortOffset, MAC_REG_MSRCTL, MSRCTL_EN);
s_vCompleteCurrentMeasure(pDevice, MEASURE_MODE_INCAPABLE);
MACvSelectPage1(pDevice->PortOffset);
MACvRegBitsOn(pDevice->PortOffset, MAC_REG_MSRCTL+1, MSRCTL1_TXPAUSE);
MACvSelectPage0(pDevice->PortOffset);
}
}
if (pDevice->dwIsr & ISR_MEASUREEND) {
// 802.11h measure end
pDevice->bMeasureInProgress = false;
VNSvOutPortB(pDevice->PortOffset + MAC_REG_RCR, pDevice->byOrgRCR);
MACvSelectPage1(pDevice->PortOffset);
VNSvOutPortD(pDevice->PortOffset + MAC_REG_MAR0, pDevice->dwOrgMAR0);
VNSvOutPortD(pDevice->PortOffset + MAC_REG_MAR4, pDevice->dwOrgMAR4);
VNSvInPortB(pDevice->PortOffset + MAC_REG_MSRBBSTS, &byData);
pDevice->byBasicMap |= (byData >> 4);
VNSvInPortB(pDevice->PortOffset + MAC_REG_CCAFRACTION, &pDevice->byCCAFraction);
VNSvInPortB(pDevice->PortOffset + MAC_REG_MSRCTL, &byData);
// clear measure control
MACvRegBitsOff(pDevice->PortOffset, MAC_REG_MSRCTL, MSRCTL_EN);
MACvSelectPage0(pDevice->PortOffset);
set_channel(pDevice, pDevice->byOrgChannel);
MACvSelectPage1(pDevice->PortOffset);
MACvRegBitsOn(pDevice->PortOffset, MAC_REG_MSRCTL+1, MSRCTL1_TXPAUSE);
MACvSelectPage0(pDevice->PortOffset);
if (byData & MSRCTL_FINISH) {
// measure success
s_vCompleteCurrentMeasure(pDevice, 0);
} else {
// can not measure because not ready before end of measure time
s_vCompleteCurrentMeasure(pDevice, MEASURE_MODE_LATE);
}
}
if (pDevice->dwIsr & ISR_QUIETSTART) {
do {
;
} while (!CARDbStartQuiet(pDevice));
}
}
if (pDevice->dwIsr & ISR_TBTT) { if (pDevice->dwIsr & ISR_TBTT) {
if (pDevice->bEnableFirstQuiet) {
pDevice->byQuietStartCount--;
if (pDevice->byQuietStartCount == 0) {
pDevice->bEnableFirstQuiet = false;
MACvSelectPage1(pDevice->PortOffset);
MACvRegBitsOn(pDevice->PortOffset, MAC_REG_MSRCTL, (MSRCTL_QUIETTXCHK | MSRCTL_QUIETEN));
MACvSelectPage0(pDevice->PortOffset);
}
}
if (pDevice->bChannelSwitch &&
(pDevice->op_mode == NL80211_IFTYPE_STATION)) {
pDevice->byChannelSwitchCount--;
if (pDevice->byChannelSwitchCount == 0) {
pDevice->bChannelSwitch = false;
set_channel(pDevice, pDevice->byNewChannel);
VNTWIFIbChannelSwitch(pDevice->pMgmt, pDevice->byNewChannel);
MACvSelectPage1(pDevice->PortOffset);
MACvRegBitsOn(pDevice->PortOffset, MAC_REG_MSRCTL+1, MSRCTL1_TXPAUSE);
MACvSelectPage0(pDevice->PortOffset);
CARDbStartTxPacket(pDevice, PKT_TYPE_802_11_ALL);
}
}
if (pDevice->op_mode != NL80211_IFTYPE_ADHOC) { if (pDevice->op_mode != NL80211_IFTYPE_ADHOC) {
if ((pDevice->bUpdateBBVGA) && pDevice->bLinkPass && (pDevice->uCurrRSSI != 0)) { if ((pDevice->bUpdateBBVGA) && pDevice->bLinkPass && (pDevice->uCurrRSSI != 0)) {
long ldBm; long ldBm;
...@@ -2234,10 +2105,11 @@ static irqreturn_t device_intr(int irq, void *dev_instance) ...@@ -2234,10 +2105,11 @@ static irqreturn_t device_intr(int irq, void *dev_instance)
if (pDevice->bEnablePSMode) if (pDevice->bEnablePSMode)
PSbIsNextTBTTWakeUp((void *)pDevice); PSbIsNextTBTTWakeUp((void *)pDevice);
if ((pDevice->op_mode == NL80211_IFTYPE_AP) || if ((pDevice->op_mode == NL80211_IFTYPE_AP ||
(pDevice->op_mode == NL80211_IFTYPE_ADHOC)) { pDevice->op_mode == NL80211_IFTYPE_ADHOC) &&
pDevice->vif->bss_conf.enable_beacon) {
MACvOneShotTimer1MicroSec(pDevice->PortOffset, MACvOneShotTimer1MicroSec(pDevice->PortOffset,
(pMgmt->wIBSSBeaconPeriod - MAKE_BEACON_RESERVED) << 10); (pDevice->vif->bss_conf.beacon_int - MAKE_BEACON_RESERVED) << 10);
} }
/* TODO: adhoc PS mode */ /* TODO: adhoc PS mode */
...@@ -2250,34 +2122,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance) ...@@ -2250,34 +2122,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance)
pDevice->cbBeaconBufReadySetCnt = 0; pDevice->cbBeaconBufReadySetCnt = 0;
} }
if (pDevice->op_mode == NL80211_IFTYPE_AP) {
if (pMgmt->byDTIMCount > 0) {
pMgmt->byDTIMCount--;
pMgmt->sNodeDBTable[0].bRxPSPoll = false;
} else {
if (pMgmt->byDTIMCount == 0) {
// check if mutltcast tx bufferring
pMgmt->byDTIMCount = pMgmt->byDTIMPeriod - 1;
pMgmt->sNodeDBTable[0].bRxPSPoll = true;
bScheduleCommand((void *)pDevice, WLAN_CMD_RX_PSPOLL, NULL);
}
}
}
pDevice->bBeaconSent = true; pDevice->bBeaconSent = true;
if (pDevice->bChannelSwitch) {
pDevice->byChannelSwitchCount--;
if (pDevice->byChannelSwitchCount == 0) {
pDevice->bChannelSwitch = false;
set_channel(pDevice, pDevice->byNewChannel);
VNTWIFIbChannelSwitch(pDevice->pMgmt, pDevice->byNewChannel);
MACvSelectPage1(pDevice->PortOffset);
MACvRegBitsOn(pDevice->PortOffset, MAC_REG_MSRCTL+1, MSRCTL1_TXPAUSE);
MACvSelectPage0(pDevice->PortOffset);
CARDbStartTxPacket(pDevice, PKT_TYPE_802_11_ALL);
}
}
} }
if (pDevice->dwIsr & ISR_RXDMA0) if (pDevice->dwIsr & ISR_RXDMA0)
...@@ -2293,14 +2138,10 @@ static irqreturn_t device_intr(int irq, void *dev_instance) ...@@ -2293,14 +2138,10 @@ static irqreturn_t device_intr(int irq, void *dev_instance)
max_count += device_tx_srv(pDevice, TYPE_AC0DMA); max_count += device_tx_srv(pDevice, TYPE_AC0DMA);
if (pDevice->dwIsr & ISR_SOFTTIMER1) { if (pDevice->dwIsr & ISR_SOFTTIMER1) {
if (pDevice->op_mode == NL80211_IFTYPE_AP) { if (pDevice->vif) {
if (pDevice->bShortSlotTime) if (pDevice->vif->bss_conf.enable_beacon)
pMgmt->wCurrCapInfo |= WLAN_SET_CAP_INFO_SHORTSLOTTIME(1); vnt_beacon_make(pDevice, pDevice->vif);
else
pMgmt->wCurrCapInfo &= ~(WLAN_SET_CAP_INFO_SHORTSLOTTIME(1));
} }
bMgrPrepareBeaconToSend(pDevice, pMgmt);
pDevice->byCntMeasure = 0;
} }
MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr);
......
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