⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spectrum.c

📁 ralink最新rt3070 usb wifi 无线网卡驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
		pTab->Size--;		RTMP_SEM_UNLOCK(&pAd->CommonCfg.TpcReqTabLock);	}	return;}/*	==========================================================================	Description:		Get Current TimeS tamp.			Parametrs:		Return	: Current Time Stamp.	========================================================================== */static UINT64 GetCurrentTimeStamp(	IN PRTMP_ADAPTER pAd){	// get current time stamp.	return 0;}/*	==========================================================================	Description:		Get Current Transmit Power.			Parametrs:		Return	: Current Time Stamp.	========================================================================== */static UINT8 GetCurTxPwr(	IN PRTMP_ADAPTER pAd,	IN UINT8 Wcid){	return 16; /* 16 dBm */}/*	==========================================================================	Description:		Insert Dialog Token into frame.			Parametrs:		1. frame buffer pointer.		2. frame length.		3. Dialog token.		Return	: None.	========================================================================== */static VOID InsertDialogToken(	IN PRTMP_ADAPTER pAd,	OUT PUCHAR pFrameBuf,	OUT PULONG pFrameLen,	IN UINT8 DialogToken){	ULONG TempLen;	MakeOutgoingFrame(pFrameBuf,	&TempLen,					1,				&DialogToken,					END_OF_ARGS);	*pFrameLen = *pFrameLen + TempLen;	return;}/*	==========================================================================	Description:		Insert TPC Request IE into frame.			Parametrs:		1. frame buffer pointer.		2. frame length.		Return	: None.	========================================================================== */ static VOID InsertTpcReqIE(	IN PRTMP_ADAPTER pAd,	OUT PUCHAR pFrameBuf,	OUT PULONG pFrameLen){	ULONG TempLen;	ULONG Len = 0;	UINT8 ElementID = IE_TPC_REQUEST;	MakeOutgoingFrame(pFrameBuf,					&TempLen,						1,							&ElementID,						1,							&Len,						END_OF_ARGS);	*pFrameLen = *pFrameLen + TempLen;	return;}/*	==========================================================================	Description:		Insert TPC Report IE into frame.			Parametrs:		1. frame buffer pointer.		2. frame length.		3. Transmit Power.		4. Link Margin.		Return	: None.	========================================================================== */ static VOID InsertTpcReportIE(	IN PRTMP_ADAPTER pAd,	OUT PUCHAR pFrameBuf,	OUT PULONG pFrameLen,	IN UINT8 TxPwr,	IN UINT8 LinkMargin){	ULONG TempLen;	ULONG Len = sizeof(TPC_REPORT_INFO);	UINT8 ElementID = IE_TPC_REPORT;	TPC_REPORT_INFO TpcReportIE;	TpcReportIE.TxPwr = TxPwr;	TpcReportIE.LinkMargin = LinkMargin;	MakeOutgoingFrame(pFrameBuf,					&TempLen,						1,							&ElementID,						1,							&Len,						Len,						&TpcReportIE,						END_OF_ARGS);	*pFrameLen = *pFrameLen + TempLen;	return;}/*	==========================================================================	Description:		Insert Channel Switch Announcement IE into frame.			Parametrs:		1. frame buffer pointer.		2. frame length.		3. channel switch announcement mode.		4. new selected channel.		5. channel switch announcement count.		Return	: None.	========================================================================== */static VOID InsertChSwAnnIE(	IN PRTMP_ADAPTER pAd,	OUT PUCHAR pFrameBuf,	OUT PULONG pFrameLen,	IN UINT8 ChSwMode,	IN UINT8 NewChannel,	IN UINT8 ChSwCnt){	ULONG TempLen;	ULONG Len = sizeof(CH_SW_ANN_INFO);	UINT8 ElementID = IE_CHANNEL_SWITCH_ANNOUNCEMENT;	CH_SW_ANN_INFO ChSwAnnIE;	ChSwAnnIE.ChSwMode = ChSwMode;	ChSwAnnIE.Channel = NewChannel;	ChSwAnnIE.ChSwCnt = ChSwCnt;	MakeOutgoingFrame(pFrameBuf,				&TempLen,						1,						&ElementID,						1,						&Len,						Len,					&ChSwAnnIE,						END_OF_ARGS);	*pFrameLen = *pFrameLen + TempLen;	return;}/*	==========================================================================	Description:		Insert Measure Request IE into frame.			Parametrs:		1. frame buffer pointer.		2. frame length.		3. Measure Token.		4. Measure Request Mode.		5. Measure Request Type.		6. Measure Channel.		7. Measure Start time.		8. Measure Duration.		Return	: None.	========================================================================== */static VOID InsertMeasureReqIE(	IN PRTMP_ADAPTER pAd,	OUT PUCHAR pFrameBuf,	OUT PULONG pFrameLen,	IN PMEASURE_REQ_INFO pMeasureReqIE){	ULONG TempLen;	UINT8 Len = sizeof(MEASURE_REQ_INFO);	UINT8 ElementID = IE_MEASUREMENT_REQUEST;	MakeOutgoingFrame(pFrameBuf,					&TempLen,						1,							&ElementID,						1,							&Len,						Len,						pMeasureReqIE,						END_OF_ARGS);	*pFrameLen = *pFrameLen + TempLen;	return;}/*	==========================================================================	Description:		Insert Measure Report IE into frame.			Parametrs:		1. frame buffer pointer.		2. frame length.		3. Measure Token.		4. Measure Request Mode.		5. Measure Request Type.		6. Length of Report Infomation 		7. Pointer of Report Infomation Buffer.		Return	: None.	========================================================================== */static VOID InsertMeasureReportIE(	IN PRTMP_ADAPTER pAd,	OUT PUCHAR pFrameBuf,	OUT PULONG pFrameLen,	IN PMEASURE_REPORT_INFO pMeasureReportIE,	IN UINT8 ReportLnfoLen,	IN PUINT8 pReportInfo){	ULONG TempLen;	ULONG Len;	UINT8 ElementID = IE_MEASUREMENT_REPORT;	Len = sizeof(MEASURE_REPORT_INFO) + ReportLnfoLen;			MakeOutgoingFrame(pFrameBuf,					&TempLen,						1,							&ElementID,						1,							&Len,						Len,						pMeasureReportIE,						END_OF_ARGS);	*pFrameLen = *pFrameLen + TempLen;	if ((ReportLnfoLen > 0) && (pReportInfo != NULL))	{		MakeOutgoingFrame(pFrameBuf + *pFrameLen,		&TempLen,							ReportLnfoLen,				pReportInfo,							END_OF_ARGS);		*pFrameLen = *pFrameLen + TempLen;	}	return;}/*	==========================================================================	Description:		Prepare Measurement request action frame and enqueue it into		management queue waiting for transmition.			Parametrs:		1. the destination mac address of the frame.		Return	: None.	========================================================================== */VOID EnqueueMeasurementReq(	IN PRTMP_ADAPTER pAd,	IN PUCHAR pDA,	IN UINT8 MeasureToken, 	IN UINT8 MeasureReqMode,	IN UINT8 MeasureReqType,	IN UINT8 MeasureCh,	IN UINT16 MeasureDuration){	PUCHAR pOutBuffer = NULL;	NDIS_STATUS NStatus;	ULONG FrameLen;	HEADER_802_11 ActHdr;	MEASURE_REQ_INFO MeasureReqIE;	UINT8 RmReqDailogToken = RandomByte(pAd);	UINT64 MeasureStartTime = GetCurrentTimeStamp(pAd);	// build action frame header.	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,						pAd->CurrentAddress);	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory	if(NStatus != NDIS_STATUS_SUCCESS)	{		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));		return;	}	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));	FrameLen = sizeof(HEADER_802_11);	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_MRQ);	// fill Dialog Token	InsertDialogToken(pAd, (pOutBuffer + FrameLen), &FrameLen, MeasureToken);	// prepare Measurement IE.	NdisZeroMemory(&MeasureReqIE, sizeof(MEASURE_REQ_INFO));	MeasureReqIE.Token = RmReqDailogToken;	MeasureReqIE.ReqMode.word = MeasureReqMode;	MeasureReqIE.ReqType = MeasureReqType;	MeasureReqIE.MeasureReq.ChNum = MeasureCh;	MeasureReqIE.MeasureReq.MeasureStartTime = cpu2le64(MeasureStartTime);	MeasureReqIE.MeasureReq.MeasureDuration = cpu2le16(MeasureDuration);	InsertMeasureReqIE(pAd, (pOutBuffer + FrameLen), &FrameLen, &MeasureReqIE);	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);	MlmeFreeMemory(pAd, pOutBuffer);	return;}/*	==========================================================================	Description:		Prepare Measurement report action frame and enqueue it into		management queue waiting for transmition.			Parametrs:		1. the destination mac address of the frame.		Return	: None.	========================================================================== */VOID EnqueueMeasurementRep(	IN PRTMP_ADAPTER pAd,	IN PUCHAR pDA,	IN UINT8 DialogToken,	IN UINT8 MeasureToken, 	IN UINT8 MeasureReqMode,	IN UINT8 MeasureReqType,	IN UINT8 ReportInfoLen,	IN PUINT8 pReportInfo){	PUCHAR pOutBuffer = NULL;	NDIS_STATUS NStatus;	ULONG FrameLen;	HEADER_802_11 ActHdr;	MEASURE_REPORT_INFO MeasureRepIE;	// build action frame header.	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,						pAd->CurrentAddress);	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory	if(NStatus != NDIS_STATUS_SUCCESS)	{		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));		return;	}	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));	FrameLen = sizeof(HEADER_802_11);	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_MRP);	// fill Dialog Token	InsertDialogToken(pAd, (pOutBuffer + FrameLen), &FrameLen, DialogToken);	// prepare Measurement IE.	NdisZeroMemory(&MeasureRepIE, sizeof(MEASURE_REPORT_INFO));	MeasureRepIE.Token = MeasureToken;	MeasureRepIE.ReportMode.word = MeasureReqMode;	MeasureRepIE.ReportType = MeasureReqType;	InsertMeasureReportIE(pAd, (pOutBuffer + FrameLen), &FrameLen, &MeasureRepIE, ReportInfoLen, pReportInfo);	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);	MlmeFreeMemory(pAd, pOutBuffer);	return;	}/*	==========================================================================	Description:		Prepare TPC Request action frame and enqueue it into		management queue waiting for transmition.			Parametrs:		1. the destination mac address of the frame.		Return	: None.	========================================================================== */VOID EnqueueTPCReq(	IN PRTMP_ADAPTER pAd,	IN PUCHAR pDA,	IN UCHAR DialogToken){	PUCHAR pOutBuffer = NULL;	NDIS_STATUS NStatus;	ULONG FrameLen;	HEADER_802_11 ActHdr;	// build action frame header.	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,						pAd->CurrentAddress);	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory	if(NStatus != NDIS_STATUS_SUCCESS)	{		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));		return;	}	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));	FrameLen = sizeof(HEADER_802_11);	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_TPCRQ);	// fill Dialog Token	InsertDialogToken(pAd, (pOutBuffer + FrameLen), &FrameLen, DialogToken);	// Insert TPC Request IE.	InsertTpcReqIE(pAd, (pOutBuffer + FrameLen), &FrameLen);	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);	MlmeFreeMemory(pAd, pOutBuffer);	return;}/*	==========================================================================	Description:		Prepare TPC Report action frame and enqueue it into		management queue waiting for transmition.			Parametrs:		1. the destination mac address of the frame.		Return	: None.	========================================================================== */VOID EnqueueTPCRep(	IN PRTMP_ADAPTER pAd,	IN PUCHAR pDA,	IN UINT8 DialogToken,	IN UINT8 TxPwr,	IN UINT8 LinkMargin){	PUCHAR pOutBuffer = NULL;	NDIS_STATUS NStatus;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -