summaryrefslogtreecommitdiff
path: root/cleopatre/devkit/mt7601udrv/include/rt_txbf.h
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/devkit/mt7601udrv/include/rt_txbf.h')
-rw-r--r--cleopatre/devkit/mt7601udrv/include/rt_txbf.h215
1 files changed, 215 insertions, 0 deletions
diff --git a/cleopatre/devkit/mt7601udrv/include/rt_txbf.h b/cleopatre/devkit/mt7601udrv/include/rt_txbf.h
new file mode 100644
index 0000000000..33d5b3a115
--- /dev/null
+++ b/cleopatre/devkit/mt7601udrv/include/rt_txbf.h
@@ -0,0 +1,215 @@
+/*
+ ***************************************************************************
+ * Ralink Tech Inc.
+ * 4F, No. 2 Technology 5th Rd.
+ * Science-based Industrial Park
+ * Hsin-chu, Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2009, Ralink Technology, Inc.
+ *
+ * All rights reserved. Ralink's source code is an unpublished work and the
+ * use of a copyright notice does not imply otherwise. This source code
+ * contains confidential trade secret material of Ralink Tech. Any attemp
+ * or participation in deciphering, decoding, reverse engineering or in any
+ * way altering the source code is stricitly prohibited, unless the prior
+ * written consent of Ralink Technology, Inc. is obtained.
+ ***************************************************************************
+
+ Module Name:
+ cmm_txbf.c
+
+ Abstract:
+ Tx Beamforming related constants and data structures
+
+ Revision History:
+ Who When What
+ -------- ---------- ----------------------------------------------
+ Shiang 2010/06/29
+*/
+
+
+#ifndef _RT_TXBF_H_
+#define _RT_TXBF_H_
+
+#ifdef TXBF_SUPPORT
+
+//#define MRQ_FORCE_TX //Force MRQ regardless the capability of the station
+
+
+// TxSndgPkt Sounding type definitions
+#define SNDG_TYPE_DISABLE 0
+#define SNDG_TYPE_SOUNDING 1
+#define SNDG_TYPE_NDP 2
+
+// Explicit TxBF feedback mechanism
+#define ETXBF_FB_DISABLE 0
+#define ETXBF_FB_CSI 1
+#define ETXBF_FB_NONCOMP 2
+#define ETXBF_FB_COMP 4
+
+
+//#define MRQ_FORCE_TX //Force MRQ regardless the capability of the station
+
+/*
+ eTxBfEnCond values:
+ 0:no etxbf,
+ 1:etxbf update periodically,
+ 2:etxbf updated if mcs changes in RateSwitchingAdapt() or APQuickResponeForRateUpExecAdapt().
+ 3:auto-selection: if mfb changes or timer expires, then send sounding packets <------not finished yet!!!
+ note:
+ when = 1 or 3, NO_SNDG_CNT_THRD controls the frequency to update the
+ matrix(ETXBF_EN_COND=1) or activate the whole bf evaluation process(not defined)
+*/
+
+// Defines to include optional code.
+// NOTE: Do not define these options. ETxBfEnCond==3 and
+// MCS Feedback are not fully implemented
+//#define ETXBF_EN_COND3_SUPPORT // Include ETxBfEnCond==3 code
+//#define MFB_SUPPORT // Include MCS Feedback code
+
+// MCS FB definitions
+#define MSI_TOGGLE_BF 6
+#define TOGGLE_BF_PKTS 5// the number of packets with inverted BF status
+
+// TXBF State definitions
+#define READY_FOR_SNDG0 0//jump to WAIT_SNDG_FB0 when channel change or periodically
+#define WAIT_SNDG_FB0 1//jump to WAIT_SNDG_FB1 when bf report0 is received
+#define WAIT_SNDG_FB1 2
+#define WAIT_MFB 3
+#define WAIT_USELESS_RSP 4
+#define WAIT_BEST_SNDG 5
+
+#define NO_SNDG_CNT_THRD 0//send sndg packet if there is no sounding for (NO_SNDG_CNT_THRD+1)*500msec. If this =0, bf matrix is updated at each call of APMlmeDynamicTxRateSwitchingAdapt()
+
+
+// ------------ BEAMFORMING PROFILE HANDLING ------------
+
+#define IMP_MAX_BYTES 14 // Implicit: 14 bytes per subcarrier
+#define IMP_MAX_BYTES_ONE_COL 7 // Implicit: 7 bytes per subcarrier, when reading first column
+#define EXP_MAX_BYTES 18 // Explicit: 18 bytes per subcarrier
+#define IMP_COEFF_SIZE 9 // 9 bits/coeff
+#define IMP_COEFF_MASK 0x1FF
+
+#define PROFILE_MAX_CARRIERS_20 56 // Number of subcarriers in 20 MHz mode
+#define PROFILE_MAX_CARRIERS_40 114 // Number of subcarriers in 40 MHz mode
+
+// Indices of valid rows in Implicit and Explicit profiles for 20 and 40 MHz
+typedef struct {
+ int lwb1, upb1;
+ int lwb2, upb2;
+} SC_TABLE_ENTRY;
+
+
+typedef struct {
+ BOOLEAN impProfile;
+ BOOLEAN fortyMHz;
+ int rows, columns;
+ int grouping;
+ UCHAR tag[EXP_MAX_BYTES];
+ UCHAR data[PROFILE_MAX_CARRIERS_40][EXP_MAX_BYTES];
+} PROFILE_DATA;
+
+extern PROFILE_DATA profData;
+
+
+typedef
+struct {
+ UCHAR gBeg[2];
+ UCHAR gEnd[2];
+ UCHAR aLowBeg[2];
+ UCHAR aLowEnd[2];
+ UCHAR aMidBeg[2];
+ UCHAR aMidEnd[2];
+ UCHAR aHighBeg[2];
+ UCHAR aHighEnd[2];
+} ITXBF_PHASE_PARAMS; // ITxBF BBP reg phase calibration parameters
+
+typedef
+struct {
+ UCHAR gBeg[2];
+ UCHAR gEnd[2];
+ UCHAR aLowBeg[2];
+ UCHAR aLowEnd[2];
+ UCHAR aMidBeg[2];
+ UCHAR aMidEnd[2];
+ UCHAR aHighBeg[2];
+ UCHAR aHighEnd[2];
+} ITXBF_LNA_PARAMS; // ITxBF BBP reg LNA calibration parameters
+
+typedef
+struct {
+ UCHAR gBeg[2];
+ UCHAR gEnd[2];
+ UCHAR aLow[2];
+ UCHAR aMid[2];
+ UCHAR aHigh[2];
+} ITXBF_DIV_PARAMS; // ITxBF Divider Calibration parameters
+
+void ITxBFGetEEPROM(
+ IN RTMP_ADAPTER *pAd,
+ IN ITXBF_PHASE_PARAMS *phaseParams,
+ IN ITXBF_LNA_PARAMS *lnaParams,
+ IN ITXBF_DIV_PARAMS *divParams);
+
+INT ITxBFDividerCalibration(
+ IN RTMP_ADAPTER *pAd,
+ IN int calFunction,
+ IN int calMethod,
+ OUT UCHAR *divPhase);
+
+VOID ITxBFLoadLNAComp(
+ IN RTMP_ADAPTER *pAd);
+
+int ITxBFLNACalibration(
+ IN RTMP_ADAPTER *pAd,
+ IN int calFunction,
+ IN int calMethod,
+ IN BOOLEAN gBand);
+
+void Read_TxBfProfile(
+ IN RTMP_ADAPTER *pAd,
+ IN PROFILE_DATA *prof,
+ IN int profileNum,
+ IN BOOLEAN implicitProfile);
+
+void Write_TxBfProfile(
+ IN RTMP_ADAPTER *pAd,
+ IN PROFILE_DATA *prof,
+ IN int profileNum);
+
+void Read_TagField(
+ IN PRTMP_ADAPTER pAd,
+ IN UCHAR *row,
+ IN int profileNum);
+
+// Write_TagField - write a profile tagfield
+void Write_TagField(
+ IN RTMP_ADAPTER *pAd,
+ IN UCHAR *row,
+ IN int profileNum);
+
+// displayTagfield - display one tagfield
+void displayTagfield(
+ IN RTMP_ADAPTER *pAd,
+ IN int profileNum,
+ IN BOOLEAN implicitProfile);
+
+// Unpack an ITxBF matrix element from a row of bytes
+int Unpack_IBFValue(
+ IN UCHAR *row,
+ IN int elemNum);
+
+int iCalcCalibration(
+ IN RTMP_ADAPTER *pAd,
+ IN int calParams[2],
+ IN int profileNum);
+
+void ITxBFSetEEPROM(
+ IN RTMP_ADAPTER *pAd,
+ IN ITXBF_PHASE_PARAMS *phaseParams,
+ IN ITXBF_LNA_PARAMS *lnaParams,
+ IN ITXBF_DIV_PARAMS *divParams);
+
+#endif // TXBF_SUPPORT //
+
+#endif // _RT_TXBF_H_