本文整理汇总了C++中OPSTATUS_TEST_FLAG函数的典型用法代码示例。如果您正苦于以下问题:C++ OPSTATUS_TEST_FLAG函数的具体用法?C++ OPSTATUS_TEST_FLAG怎么用?C++ OPSTATUS_TEST_FLAG使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OPSTATUS_TEST_FLAG函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: RT28xxUsbStaAsicForceWakeup
VOID RT28xxUsbStaAsicForceWakeup(
IN PRTMP_ADAPTER pAd,
IN BOOLEAN bFromTx)
{
BOOLEAN Canceled;
if (pAd->Mlme.AutoWakeupTimerRunning)
{
if ( !OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) )
{
return;
}
RTMPCancelTimer(&pAd->Mlme.AutoWakeupTimer, &Canceled);
pAd->Mlme.AutoWakeupTimerRunning = FALSE;
}
#ifdef MT7601
if ( IS_MT7601(pAd) )
{
ASIC_RADIO_ON(pAd, DOT11_RADIO_ON);
}
else
#endif /* MT7601 */
{
AsicSendCommandToMcu(pAd, 0x31, 0xff, 0x00, 0x02, FALSE);
}
OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
}
开发者ID:adriano65,项目名称:n300-pda,代码行数:29,代码来源:cmm_data_usb.c
示例2: RTMPHandleTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
Adapter Pointer to our adapter. Dequeue all power safe delayed braodcast frames after beacon.
IRQL = DISPATCH_LEVEL
========================================================================
*/
VOID RTMPHandleTBTTInterrupt(
IN PRTMP_ADAPTER pAd)
{
#ifdef CONFIG_AP_SUPPORT
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
if (pAd->OpMode == OPMODE_AP)
{
ReSyncBeaconTime(pAd);
#ifdef WORKQUEUE_BH
RTMP_OS_TASKLET_SCHE(&pObj->tbtt_work);
#else
RTMP_OS_TASKLET_SCHE(&pObj->tbtt_task);
#endif /* WORKQUEUE_BH */
if ((pAd->CommonCfg.Channel > 14)
&& (pAd->CommonCfg.bIEEE80211H == 1)
&& (pAd->Dot11_H.RDMode == RD_SWITCHING_MODE))
{
ChannelSwitchingCountDownProc(pAd);
}
}
else
#endif /* CONFIG_AP_SUPPORT */
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
{
}
}
}
开发者ID:houzhenggang,项目名称:mt7688_mips_ecos,代码行数:42,代码来源:cmm_data_pci.c
示例3: RTMPHandleTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
Adapter Pointer to our adapter. Dequeue all power safe delayed braodcast frames after beacon.
IRQL = DISPATCH_LEVEL
========================================================================
*/
void RTMPHandleTBTTInterrupt(struct rt_rtmp_adapter *pAd)
{
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE)) {
}
}
}
开发者ID:AbheekG,项目名称:XIA-for-Linux,代码行数:18,代码来源:cmm_data_pci.c
示例4: BAOriSessionSetupTimeout
/*
==========================================================================
Description:
Retry sending ADDBA Reqest.
IRQL = DISPATCH_LEVEL
Parametrs:
p8023Header: if this is already 802.3 format, p8023Header is NULL
Return : TRUE if put into rx reordering buffer, shouldn't indicaterxhere.
FALSE , then continue indicaterx at this moment.
==========================================================================
*/
VOID BAOriSessionSetupTimeout(
IN PVOID SystemSpecific1,
IN PVOID FunctionContext,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3)
{
BA_ORI_ENTRY *pBAEntry = (BA_ORI_ENTRY *)FunctionContext;
MAC_TABLE_ENTRY *pEntry;
PRTMP_ADAPTER pAd;
if (pBAEntry == NULL)
return;
pAd = pBAEntry->pAdapter;
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
/* Do nothing if monitor mode is on*/
if (MONITOR_ON(pAd))
return;
}
#endif /* CONFIG_STA_SUPPORT */
pEntry = &pAd->MacTab.Content[pBAEntry->Wcid];
if ((pBAEntry->ORI_BA_Status == Originator_WaitRes) && (pBAEntry->Token < ORI_SESSION_MAX_RETRY))
{
MLME_ADDBA_REQ_STRUCT AddbaReq;
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
if (INFRA_ON(pAd) &&
RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS) &&
(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)))
{
/* In scan progress and have no chance to send out, just re-schedule to another time period */
RTMPSetTimer(&pBAEntry->ORIBATimer, ORI_BA_SESSION_TIMEOUT);
return;
}
}
#endif /* CONFIG_STA_SUPPORT */
NdisZeroMemory(&AddbaReq, sizeof(AddbaReq));
COPY_MAC_ADDR(AddbaReq.pAddr, pEntry->Addr);
AddbaReq.Wcid = (UCHAR)(pEntry->Aid);
AddbaReq.TID = pBAEntry->TID;
AddbaReq.BaBufSize = pAd->CommonCfg.BACapability.field.RxBAWinLimit;
AddbaReq.TimeOutValue = 0;
AddbaReq.Token = pBAEntry->Token;
MlmeEnqueue(pAd, ACTION_STATE_MACHINE, MT2_MLME_ADD_BA_CATE, sizeof(MLME_ADDBA_REQ_STRUCT), (PVOID)&AddbaReq, 0);
RTMP_MLME_HANDLER(pAd);
DBGPRINT(RT_DEBUG_TRACE,("BA Ori Session Timeout(%d) : Send ADD BA again\n", pBAEntry->Token));
pBAEntry->Token++;
RTMPSetTimer(&pBAEntry->ORIBATimer, ORI_BA_SESSION_TIMEOUT);
}
开发者ID:1950packard,项目名称:rt3573sta,代码行数:73,代码来源:ba_action.c
示例5: RTMPHandleTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
Adapter Pointer to our adapter. Dequeue all power safe delayed braodcast frames after beacon.
IRQL = DISPATCH_LEVEL
========================================================================
*/
VOID RTMPHandleTBTTInterrupt(
IN PRTMP_ADAPTER pAd)
{
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
{
}
}
}
开发者ID:jaskcon,项目名称:rt3090,代码行数:20,代码来源:cmm_data_pci.c
示例6: RTMPHandlePreTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
pAd Pointer to our adapter. Rewrite beacon content before next send-out.
IRQL = DISPATCH_LEVEL
========================================================================
*/
void RTMPHandlePreTBTTInterrupt(struct rt_rtmp_adapter *pAd)
{
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE)) {
DBGPRINT(RT_DEBUG_TRACE,
("RTMPHandlePreTBTTInterrupt...\n"));
}
}
}
开发者ID:AbheekG,项目名称:XIA-for-Linux,代码行数:21,代码来源:cmm_data_pci.c
示例7: rt73_ethtool_get_link
static uint32 rt73_ethtool_get_link(struct net_device *dev)
{
RTMP_ADAPTER *pAd;
ASSERT((dev));
pAd = (PRTMP_ADAPTER) RTMP_OS_NETDEV_GET_PRIV(dev);
//We return true if we already associated to some AP.
return(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED));
}
开发者ID:fgoncalves,项目名称:Ralink-Driver-Hack,代码行数:10,代码来源:rtmp_main.c
示例8: RTMPHandlePreTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
pAd Pointer to our adapter. Rewrite beacon content before next send-out.
IRQL = DISPATCH_LEVEL
========================================================================
*/
VOID RTMPHandlePreTBTTInterrupt(
IN PRTMP_ADAPTER pAd)
{
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
{
DBGPRINT(RT_DEBUG_TRACE, ("RTMPHandlePreTBTTInterrupt...\n"));
}
}
}
开发者ID:jaskcon,项目名称:rt3090,代码行数:23,代码来源:cmm_data_pci.c
示例9: RTUSBDataBulkOut
static void RTUSBDataBulkOut(PRTMP_ADAPTER pAd, ULONG bulkFlag, INT epIdx)
{
if (RTUSB_TEST_BULK_FLAG(pAd, bulkFlag))
{
if (((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) ||
(!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
#ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE
/* CFG_TODO */
|| RTMP_CFG80211_VIF_P2P_GO_ON(pAd) || RTMP_CFG80211_VIF_P2P_CLI_ON(pAd)
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE */
))
{
RTUSBBulkOutDataPacket(pAd, epIdx, pAd->NextBulkOutIndex[epIdx]);
}
}
}
开发者ID:mickeyreg,项目名称:driver,代码行数:16,代码来源:rtusb_bulk.c
示例10: CFG80211_PacketSend
static INT CFG80211_PacketSend(PNDIS_PACKET pPktSrc, PNET_DEV pDev, RTMP_NET_PACKET_TRANSMIT Func)
{
PRTMP_ADAPTER pAd;
pAd = RTMP_OS_NETDEV_GET_PRIV(pDev);
ASSERT(pAd);
/* To Indicate from Which VIF */
switch (pDev->ieee80211_ptr->iftype)
{
case RT_CMD_80211_IFTYPE_AP:
//minIdx = MIN_NET_DEVICE_FOR_CFG80211_VIF_AP;
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_P2P_GO:;
//minIdx = MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO;
if(!OPSTATUS_TEST_FLAG(pAd, fOP_AP_STATUS_MEDIA_STATE_CONNECTED))
{
DBGPRINT(RT_DEBUG_TRACE, ("Drop the Packet due P2P GO not in ready state\n"));
RELEASE_NDIS_PACKET(pAd, pPktSrc, NDIS_STATUS_FAILURE);
return 0;
}
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_P2P_CLIENT:
//minIdx = MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_CLI;
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_STATION:
default:
DBGPRINT(RT_DEBUG_TRACE, ("Unknown CFG80211 I/F Type(%d)\n", pDev->ieee80211_ptr->iftype));
RELEASE_NDIS_PACKET(pAd, pPktSrc, NDIS_STATUS_FAILURE);
return 0;
}
DBGPRINT(RT_DEBUG_INFO, ("CFG80211 Packet Type [%s](%d)\n",
pDev->name, pDev->ieee80211_ptr->iftype));
RTMP_SET_PACKET_NET_DEVICE_MBSSID(pPktSrc, MAIN_MBSSID);
return Func(RTPKT_TO_OSPKT(pPktSrc));
}
开发者ID:pierce1234,项目名称:rt-n56u,代码行数:44,代码来源:cfg80211_inf.c
示例11: CFG80211_PacketSend
static INT CFG80211_PacketSend(struct sk_buff *pPktSrc, struct net_device *pDev, RTMP_NET_PACKET_TRANSMIT Func)
{
struct rtmp_adapter *pAd;
pAd = RTMP_OS_NETDEV_GET_PRIV(pDev);
ASSERT(pAd);
/* To Indicate from Which VIF */
switch (pDev->ieee80211_ptr->iftype)
{
case RT_CMD_80211_IFTYPE_AP:
//minIdx = MIN_NET_DEVICE_FOR_CFG80211_VIF_AP;
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_P2P_GO:;
//minIdx = MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO;
if(!OPSTATUS_TEST_FLAG(pAd, fOP_AP_STATUS_MEDIA_STATE_CONNECTED))
{
DBGPRINT(RT_DEBUG_TRACE, ("Drop the Packet due P2P GO not in ready state\n"));
dev_kfree_skb_any(pPktSrc);
return 0;
}
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_P2P_CLIENT:
//minIdx = MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_CLI;
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_STATION:
default:
DBGPRINT(RT_DEBUG_TRACE, ("Unknown CFG80211 I/F Type(%d)\n", pDev->ieee80211_ptr->iftype));
dev_kfree_skb_any(pPktSrc);
return 0;
}
DBGPRINT(RT_DEBUG_INFO, ("CFG80211 Packet Type [%s](%d)\n",
pDev->name, pDev->ieee80211_ptr->iftype));
RTMP_SET_PACKET_NET_DEVICE_MBSSID(pPktSrc, MAIN_MBSSID);
return Func(pPktSrc);
}
开发者ID:ulli-kroll,项目名称:mt7612u,代码行数:44,代码来源:cfg80211_inf.c
示例12: RTMPHandleTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
Adapter Pointer to our adapter. Dequeue all power safe delayed braodcast frames after beacon.
IRQL = DISPATCH_LEVEL
========================================================================
*/
VOID RTMPHandleTBTTInterrupt(
IN PRTMP_ADAPTER pAd)
{
#ifdef CONFIG_AP_SUPPORT
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
if (pAd->OpMode == OPMODE_AP)
{
ReSyncBeaconTime(pAd);
#ifdef WORKQUEUE_BH
schedule_work(&pObj->tbtt_work);
#else
tasklet_hi_schedule(&pObj->tbtt_task);
#endif // WORKQUEUE_BH //
if ((pAd->CommonCfg.Channel > 14)
&& (pAd->CommonCfg.bIEEE80211H == 1)
&& (pAd->CommonCfg.RadarDetect.RDMode == RD_SWITCHING_MODE))
{
DBGPRINT(RT_DEBUG_TRACE, ("RTMPHandlePreTBTTInterrupt::Channel Switching...(%d/%d)\n", pAd->CommonCfg.RadarDetect.CSCount, pAd->CommonCfg.RadarDetect.CSPeriod));
pAd->CommonCfg.RadarDetect.CSCount++;
if (pAd->CommonCfg.RadarDetect.CSCount >= pAd->CommonCfg.RadarDetect.CSPeriod)
{
#ifdef DFS_HARDWARE_SUPPORT
pAd->CommonCfg.DFSAPRestart=1;
schedule_dfs_task(pAd);
#else
APStop(pAd);
APStartUp(pAd);
#endif // DFS_HARDWARE_SUPPORT //
}
}
}
else
#endif // CONFIG_AP_SUPPORT //
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
{
}
}
}
开发者ID:schidler,项目名称:flyzjhz-rt-n56u,代码行数:54,代码来源:cmm_data_pci.c
示例13: RTMPHandlePreTBTTInterrupt
/*
========================================================================
Routine Description:
Arguments:
pAd Pointer to our adapter. Rewrite beacon content before next send-out.
IRQL = DISPATCH_LEVEL
========================================================================
*/
VOID RTMPHandlePreTBTTInterrupt(
IN PRTMP_ADAPTER pAd)
{
#ifdef CONFIG_AP_SUPPORT
if (pAd->OpMode == OPMODE_AP)
{
APUpdateAllBeaconFrame(pAd);
}
else
#endif // CONFIG_AP_SUPPORT //
{
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
{
DBGPRINT(RT_DEBUG_TRACE, ("RTMPHandlePreTBTTInterrupt...\n"));
}
}
}
开发者ID:qwerty1023,项目名称:wive-rtnl-firmware,代码行数:30,代码来源:cmm_data_pci.c
示例14: CFG80211_PacketSend
static INT CFG80211_PacketSend(PNDIS_PACKET pPktSrc, PNET_DEV pDev, RTMP_NET_PACKET_TRANSMIT Func)
{
PRTMP_ADAPTER pAd;
pAd = RTMP_OS_NETDEV_GET_PRIV(pDev);
ASSERT(pAd);
/* To Indicate from Which VIF */
switch (pDev->ieee80211_ptr->iftype)
{
case RT_CMD_80211_IFTYPE_AP:
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_P2P_GO:;
if(!OPSTATUS_TEST_FLAG(pAd, fOP_AP_STATUS_MEDIA_STATE_CONNECTED))
{
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("Drop the Packet due P2P GO not in ready state\n"));
RELEASE_NDIS_PACKET(pAd, pPktSrc, NDIS_STATUS_FAILURE);
return 0;
}
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
case RT_CMD_80211_IFTYPE_P2P_CLIENT:
case RT_CMD_80211_IFTYPE_STATION:
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
//printk("%s: tx ==> %d\n", __FUNCTION__, RTMP_GET_PACKET_OPMODE(pPktSrc));
break;
default:
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_TRACE, ("Unknown CFG80211 I/F Type(%d)\n", pDev->ieee80211_ptr->iftype));
RELEASE_NDIS_PACKET(pAd, pPktSrc, NDIS_STATUS_FAILURE);
return 0;
}
MTWF_LOG(DBG_CAT_ALL, DBG_SUBCAT_ALL, DBG_LVL_INFO, ("CFG80211 Packet Type [%s](%d)\n",
pDev->name, pDev->ieee80211_ptr->iftype));
return Func(RTPKT_TO_OSPKT(pPktSrc));
}
开发者ID:andy-padavan,项目名称:rt-n56u,代码行数:40,代码来源:cfg80211_inf.c
示例15: ApCliCtrlScanDoneAction
static VOID ApCliCtrlScanDoneAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem)
{
#ifdef DOT11N_DRAFT3
USHORT ifIndex = (USHORT)(Elem->Priv);
UCHAR i;
/* AP sent a 2040Coexistence mgmt frame, then station perform a scan, and then send back the respone. */
if ((pAd->CommonCfg.BSSCoexist2040.field.InfoReq == 1)
&& OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SCAN_2040)) {
DBGPRINT(RT_DEBUG_TRACE, ("Update2040CoexistFrameAndNotify @%s \n", __FUNCTION__));
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
if (IS_ENTRY_APCLI(&pAd->MacTab.Content[i]) && (pAd->MacTab.Content[i].apidx == ifIndex))
{
Update2040CoexistFrameAndNotify(pAd, i, TRUE);
}
}
}
#endif /* DOT11N_DRAFT3 */
}
开发者ID:rizi-456,项目名称:mtabox,代码行数:22,代码来源:apcli_ctrl.c
示例16: RtmpUsbStaAsicForceWakeupTimeout
VOID RtmpUsbStaAsicForceWakeupTimeout(
IN PVOID SystemSpecific1,
IN PVOID FunctionContext,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3)
{
RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
if (pAd && pAd->Mlme.AutoWakeupTimerRunning)
{
#ifdef MT7601
if ( IS_MT7601(pAd) )
{
if ( !OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) )
{
RTMPSetTimer(&pAd->Mlme.AutoWakeupTimer, AUTO_WAKEUP_TIMEOUT);
return;
}
ASIC_RADIO_ON(pAd, MLME_RADIO_ON);
}
else
#endif /* MT7601 */
{
RTUSBBulkReceive(pAd);
AsicSendCommandToMcu(pAd, 0x31, 0xff, 0x00, 0x02, FALSE);
}
OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
pAd->Mlme.AutoWakeupTimerRunning = FALSE;
}
}
开发者ID:adriano65,项目名称:n300-pda,代码行数:37,代码来源:cmm_data_usb.c
示例17: scan_ch_restore
static INT scan_ch_restore(RTMP_ADAPTER *pAd, UCHAR OpMode)
{
#ifdef CONFIG_STA_SUPPORT
USHORT Status;
#endif /* CONFIG_STA_SUPPORT */
INT bw, ch;
if (pAd->CommonCfg.BBPCurrentBW != pAd->hw_cfg.bbp_bw)
{
rtmp_bbp_set_bw(pAd, pAd->hw_cfg.bbp_bw);
AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
ch = pAd->CommonCfg.CentralChannel;
}
else
{
AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
AsicLockChannel(pAd, pAd->CommonCfg.Channel);
ch = pAd->CommonCfg.Channel;
}
switch(pAd->CommonCfg.BBPCurrentBW)
{
case BW_80:
bw = 80;
break;
case BW_40:
bw = 40;
break;
case BW_10:
bw = 10;
break;
case BW_20:
default:
bw =20;
break;
}
DBGPRINT(RT_DEBUG_TRACE, ("SYNC - End of SCAN, restore to %dMHz channel %d, Total BSS[%02d]\n",
bw, ch, pAd->ScanTab.BssNr));
#ifdef CONFIG_STA_SUPPORT
if (OpMode == OPMODE_STA)
{
/*
If all peer Ad-hoc clients leave, driver would do LinkDown and LinkUp.
In LinkUp, CommonCfg.Ssid would copy SSID from MlmeAux.
To prevent SSID is zero or wrong in Beacon, need to recover MlmeAux.SSID here.
*/
if (ADHOC_ON(pAd))
{
NdisZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
pAd->MlmeAux.SsidLen = pAd->CommonCfg.SsidLen;
NdisMoveMemory(pAd->MlmeAux.Ssid, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen);
}
/*
To prevent data lost.
Send an NULL data with turned PSM bit on to current associated AP before SCAN progress.
Now, we need to send an NULL data with turned PSM bit off to AP, when scan progress done
*/
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && (INFRA_ON(pAd)))
{
RTMPSendNullFrame(pAd,
pAd->CommonCfg.TxRate,
(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED) ? TRUE:FALSE),
pAd->CommonCfg.bAPSDForcePowerSave ? PWR_SAVE : pAd->StaCfg.Psm);
DBGPRINT(RT_DEBUG_TRACE, ("%s -- Send null frame\n", __FUNCTION__));
}
#ifdef RT_CFG80211_SUPPORT
if (pAd->ApCfg.ApCliTab[MAIN_MBSSID].Valid && RTMP_CFG80211_VIF_P2P_CLI_ON(pAd))
{
DBGPRINT(RT_DEBUG_TRACE, ("CFG80211_NULL: PWR_ACTIVE SCAN_END\n"));
RT_CFG80211_P2P_CLI_SEND_NULL_FRAME(pAd, PWR_ACTIVE);
}
#endif /* RT_CFG80211_SUPPORT */
/* keep the latest scan channel, could be 0 for scan complete, or other channel*/
pAd->StaCfg.LastScanChannel = pAd->MlmeAux.Channel;
pAd->StaCfg.ScanChannelCnt = 0;
/* Suspend scanning and Resume TxData for Fast Scanning*/
if ((pAd->MlmeAux.Channel != 0) &&
(pAd->StaCfg.bImprovedScan)) /* it is scan pending*/
{
pAd->Mlme.SyncMachine.CurrState = SCAN_PENDING;
Status = MLME_SUCCESS;
DBGPRINT(RT_DEBUG_WARN, ("bFastRoamingScan ~~~ Get back to send data ~~~\n"));
RTMPResumeMsduTransmission(pAd);
}
else
{
//.........这里部分代码省略.........
开发者ID:avila-devlogic,项目名称:D33_KK_Kernel,代码行数:101,代码来源:scan.c
示例18: RTUSBBulkOutDataPacket
/*
========================================================================
Routine Description:
Arguments:
Return Value:
Note:
========================================================================
*/
VOID RTUSBBulkOutDataPacket(
IN PRTMP_ADAPTER pAd,
IN UCHAR BulkOutPipeId,
IN UCHAR Index)
{
PTX_CONTEXT pTxContext;
PURB pUrb;
int ret = 0;
unsigned long IrqFlags;
NdisAcquireSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
if (pAd->BulkOutPending[BulkOutPipeId] == TRUE)
{
NdisReleaseSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
pAd->BulkOutPending[BulkOutPipeId] = TRUE;
NdisReleaseSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
pTxContext = &(pAd->TxContext[BulkOutPipeId][Index]);
// Increase Total transmit byte counter
pAd->RalinkCounters.TransmittedByteCount += pTxContext->BulkOutSize;
// Clear Data flag
RTUSB_CLEAR_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_FRAG << BulkOutPipeId));
RTUSB_CLEAR_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_NORMAL << BulkOutPipeId));
if (pTxContext->bWaitingBulkOut != TRUE)
{
DBGPRINT(RT_DEBUG_ERROR, "RTUSBBulkOutDataPacket failed, pTxContext->bWaitingBulkOut != TRUE, Index %d, NextBulkOutIndex %d\n",
Index, pAd->NextBulkOutIndex[BulkOutPipeId]);
NdisAcquireSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
pAd->BulkOutPending[BulkOutPipeId] = FALSE;
NdisReleaseSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
else if (pTxContext->BulkOutSize == 0)
{
//
// This may happen on CCX Leap Ckip or Cmic
// When the Key was been set not on time.
// We will break it when the Key was Zero on RTUSBHardTransmit
// And this will cause deadlock that the TxContext always InUse.
//
NdisAcquireSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
pTxContext->InUse = FALSE;
pTxContext->LastOne = FALSE;
pTxContext->IRPPending = FALSE;
pTxContext->bWaitingBulkOut = FALSE;
pTxContext->BulkOutSize= 0;
pAd->NextBulkOutIndex[BulkOutPipeId] = (pAd->NextBulkOutIndex[BulkOutPipeId] + 1) % TX_RING_SIZE;
pAd->BulkOutPending[BulkOutPipeId] = FALSE;
NdisReleaseSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
else if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
{
//
// Since there is no connection, so we need to empty the Tx Bulk out Ring.
//
while (atomic_read(&pAd->TxCount) > 0)
{
DBGPRINT(RT_DEBUG_ERROR, "RTUSBBulkOutDataPacket failed, snice NdisMediaStateDisconnected discard NextBulkOutIndex %d, NextIndex = %d\n",
pAd->NextBulkOutIndex[BulkOutPipeId], pAd->NextTxIndex[BulkOutPipeId]);
FREE_TX_RING(pAd, BulkOutPipeId, pTxContext);
pAd->TxRingTotalNumber[BulkOutPipeId]--; // sync. to TxCount
pTxContext = &(pAd->TxContext[BulkOutPipeId][pAd->NextBulkOutIndex[BulkOutPipeId]]);
}
NdisAcquireSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
pAd->BulkOutPending[BulkOutPipeId] = FALSE;
NdisReleaseSpinLock(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
// Init Tx context descriptor
RTUSBInitTxDesc(pAd, pTxContext, BulkOutPipeId, RTUSBBulkOutDataPacketComplete);
pTxContext->IRPPending = TRUE;
//.........这里部分代码省略.........
开发者ID:AxelLin,项目名称:Drv,代码行数:101,代码来源:rtusb_bulk.c
示例19: RTUSBBulkOutDataPacket
VOID RTUSBBulkOutDataPacket(
IN PRTMP_ADAPTER pAd,
IN UCHAR BulkOutPipeId,
IN UCHAR Index)
{
PHT_TX_CONTEXT pHTTXContext;
PURB pUrb;
int ret = 0;
PTXINFO_STRUC pTxInfo, pLastTxInfo = NULL;
PTXWI_STRUC pTxWI;
ULONG TmpBulkEndPos, ThisBulkSize;
unsigned long IrqFlags = 0, IrqFlags2 = 0;
PUCHAR pWirelessPkt, pAppendant;
#ifdef USB_BULK_BUF_ALIGMENT
BOOLEAN bLasAlignmentsectiontRound = FALSE;
#else
BOOLEAN bTxQLastRound = FALSE;
UCHAR allzero[4]= {0x0,0x0,0x0,0x0};
#endif /* USB_BULK_BUF_ALIGMENT */
BULK_OUT_LOCK(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
if ((pAd->BulkOutPending[BulkOutPipeId] == TRUE) || RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NEED_STOP_TX))
{
BULK_OUT_UNLOCK(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
pAd->BulkOutPending[BulkOutPipeId] = TRUE;
if (((!OPSTATUS_TEST_FLAG(pAd, fOP_AP_STATUS_MEDIA_STATE_CONNECTED)) &&
( !OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)))
)
{
pAd->BulkOutPending[BulkOutPipeId] = FALSE;
BULK_OUT_UNLOCK(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
BULK_OUT_UNLOCK(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
pHTTXContext = &(pAd->TxContext[BulkOutPipeId]);
BULK_OUT_LOCK(&pAd->TxContextQueueLock[BulkOutPipeId], IrqFlags2);
#ifdef USB_BULK_BUF_ALIGMENT
if ( (pHTTXContext->NextBulkIdx != pHTTXContext->CurtBulkIdx)
|| ((pHTTXContext->CurWriteRealPos > pHTTXContext->CurWritePosition) &&(pHTTXContext->NextBulkIdx == pHTTXContext->CurWriteIdx))
|| ((pHTTXContext->CurWriteRealPos == 0) && (pHTTXContext->NextBulkIdx == pHTTXContext->CurWriteIdx))
)
#else
if ((pHTTXContext->ENextBulkOutPosition == pHTTXContext->CurWritePosition)
|| ((pHTTXContext->ENextBulkOutPosition-8) == pHTTXContext->CurWritePosition))
#endif /* USB_BULK_BUF_ALIGMENT */
/* druing writing. */
{
BULK_OUT_UNLOCK(&pAd->TxContextQueueLock[BulkOutPipeId], IrqFlags2);
BULK_OUT_LOCK(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
pAd->BulkOutPending[BulkOutPipeId] = FALSE;
/* Clear Data flag*/
RTUSB_CLEAR_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_FRAG << BulkOutPipeId));
RTUSB_CLEAR_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_NORMAL << BulkOutPipeId));
BULK_OUT_UNLOCK(&pAd->BulkOutLock[BulkOutPipeId], IrqFlags);
return;
}
/* Clear Data flag*/
RTUSB_CLEAR_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_FRAG << BulkOutPipeId));
RTUSB_CLEAR_BULK_FLAG(pAd, (fRTUSB_BULK_OUT_DATA_NORMAL << BulkOutPipeId));
/*DBGPRINT(RT_DEBUG_TRACE,("BulkOut-B:I=0x%lx, CWPos=%ld, CWRPos=%ld, NBPos=%ld, ENBPos=%ld, bCopy=%d!\n", in_interrupt(), */
/* pHTTXContext->CurWritePosition, pHTTXContext->CurWriteRealPos, pHTTXContext->NextBulkOutPosition, */
/* pHTTXContext->ENextBulkOutPosition, pHTTXContext->bCopySavePad));*/
pHTTXContext->NextBulkOutPosition = pHTTXContext->ENextBulkOutPosition;
ThisBulkSize = 0;
TmpBulkEndPos = pHTTXContext->NextBulkOutPosition;
#ifdef USB_BULK_BUF_ALIGMENT
INT idx;
idx = pHTTXContext->NextBulkIdx;
pWirelessPkt = &pHTTXContext->TransferBuffer[idx]->field.WirelessPacket[0];
#else
pWirelessPkt = &pHTTXContext->TransferBuffer->field.WirelessPacket[0];
#endif /* USB_BULK_BUF_ALIGMENT */
#ifndef USB_BULK_BUF_ALIGMENT
if ((pHTTXContext->bCopySavePad == TRUE))
{
if (RTMPEqualMemory(pHTTXContext->SavedPad, allzero,4))
{
DBGPRINT_RAW(RT_DEBUG_ERROR,("e1, allzero : %x %x %x %x %x %x %x %x \n",
pHTTXContext->SavedPad[0], pHTTXContext->SavedPad[1], pHTTXContext->SavedPad[2],pHTTXContext->SavedPad[3]
,pHTTXContext->SavedPad[4], pHTTXContext->SavedPad[5], pHTTXContext->SavedPad[6],pHTTXContext->SavedPad[7]));
}
NdisMoveMemory(&pWirelessPkt[TmpBulkEndPos], pHTTXContext->SavedPad, 8);
pHTTXContext->bCopySavePad = FALSE;
if (pAd->bForcePrintTX == TRUE)
//.........这里部分代码省略.........
开发者ID:83GTIGuy,项目名称:openwrtSDN,代码行数:101,代码来源:rtusb_bulk.c
示例20: RTUSBKickBulkOut
/*
========================================================================
Routine Description:
Arguments:
Return Value:
Note:
========================================================================
*/
VOID RTUSBKickBulkOut(
IN PRTMP_ADAPTER pAd)
{
/* BulkIn Reset will reset whole USB PHY. So we need to make sure fRTMP_ADAPTER_BULKIN_RESET not flaged.*/
if (!RTMP_TEST_FLAG(pAd ,fRTMP_ADAPTER_NEED_STOP_TX)
)
{
/* 2. PS-Poll frame is next*/
if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_PSPOLL))
{
RTUSBBulkOutPsPoll(pAd);
}
/* 5. Mlme frame is next*/
else if ((RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_MLME)) ||
(pAd->MgmtRing.TxSwFreeIdx < MGMT_RING_SIZE))
{
RTUSBBulkOutMLMEPacket(pAd, pAd->MgmtRing.TxDmaIdx);
}
/* 6. Data frame normal is next*/
if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_DATA_NORMAL))
{
if (((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) ||
(!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
))
{
RTUSBBulkOutDataPacket(pAd, EDCA_AC0_PIPE, pAd->NextBulkOutIndex[EDCA_AC0_PIPE]);
}
}
if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_DATA_NORMAL_2))
{
if (((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) ||
(!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
))
{
RTUSBBulkOutDataPacket(pAd, EDCA_AC1_PIPE, pAd->NextBulkOutIndex[EDCA_AC1_PIPE]);
}
}
if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_DATA_NORMAL_3))
{
if (((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) ||
(!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
))
{
RTUSBBulkOutDataPacket(pAd, EDCA_AC2_PIPE, pAd->NextBulkOutIndex[EDCA_AC2_PIPE]);
}
}
if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_DATA_NORMAL_4))
{
if (((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) ||
(!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
))
{
RTUSBBulkOutDataPacket(pAd, EDCA_AC3_PIPE, pAd->NextBulkOutIndex[EDCA_AC3_PIPE]);
}
}
/* 7. Null frame is the last*/
else if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_DATA_NULL))
{
#if defined(CONFIG_MULTI_CHANNEL) || defined(DOT11Z_TDLS_SUPPORT)
if (INFRA_ON(pAd) && (pAd->CommonCfg.CentralChannel == pAd->LatchRfRegs.Channel))
#endif /* defined(CONFIG_MULTI_CHANNEL) || defined(DOT11Z_TDLS_SUPPORT) */
{
RTUSBBulkOutNullFrame(pAd, EDCA_AC0_PIPE);
}
}
else if (RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_DATA_NULL_HCCA))
{
if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
{
#ifdef CONFIG_MULTI_CHANNEL
if (P2P_CLI_ON(pAd) && (pAd->ApCliMlmeAux.Channel == pAd->LatchRfRegs.Channel))
#endif /**/
RTUSBBulkOutNullFrame(pAd, HCCA_PIPE);
}
}
/* 8. No data avaliable*/
else
{
}
}
//.........这里部分代码省略.........
开发者ID:83GTIGuy,项目名称:openwrtSDN,代码行数:101,代码来源:rtusb_bulk.c
注:本文中的OPSTATUS_TEST_FLAG函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论