//==================================================================
// MTO.H
//
// Revision history
//=================================
//          20030110    UN20 Pete Chao
//                      Initial Release
//
// Copyright (c) 2003 Winbond Electronics Corp. All rights reserved.
//==================================================================
#ifndef __MTO_H__
#define __MTO_H__

#include <linux/types.h>

struct wbsoft_priv;

#define MTO_DEFAULT_TH_CNT              5
#define MTO_DEFAULT_TH_SQ3              112  //OLD IS 13 reference JohnXu
#define MTO_DEFAULT_TH_IDLE_SLOT        15
#define MTO_DEFAULT_TH_PR_INTERF        30
#define MTO_DEFAULT_TMR_AGING           25  // unit: slot time  10 reference JohnXu
#define MTO_DEFAULT_TMR_PERIODIC        5   // unit: slot time

#define MTO_ANTENNA_DIVERSITY_OFF       0
#define MTO_ANTENNA_DIVERSITY_ON        1

// LA20040210_DTO kevin
//#define MTO_PREAMBLE_LONG               0
//#define MTO_PREAMBLE_SHORT              1
#define MTO_PREAMBLE_LONG               WLAN_PREAMBLE_TYPE_LONG
#define MTO_PREAMBLE_SHORT              WLAN_PREAMBLE_TYPE_SHORT

typedef enum {
    TOGGLE_STATE_IDLE             = 0,
    TOGGLE_STATE_WAIT0            = 1,
    TOGGLE_STATE_WAIT1            = 2,
    TOGGLE_STATE_MAKEDESISION     = 3,
	TOGGLE_STATE_BKOFF            = 4
} TOGGLE_STATE;

typedef enum {
    RATE_CHGSTATE_IDLE         = 0,
    RATE_CHGSTATE_CALCULATE    = 1,
    RATE_CHGSTATE_BACKOFF	   = 2
} TX_RATE_REDUCTION_STATE;

//============================================================================
// struct _MTOParameters --
//
//   Defines the parameters used in the MAC Throughput Optimization algorithm
//============================================================================
typedef struct _MTO_PARAMETERS
{
	u8      Th_Fixant;
	u8      Th_Cnt;
	u8      Th_SQ3;
	u8      Th_IdleSlot;

	u16     Tmr_Aging;
	u8      Th_PrInterf;
	u8      Tmr_Periodic;

	//---------        wkchen added      -------------
	u32		TxFlowCount;	//to judge what kind the tx flow(sparse or busy) is
	//------------------------------------------------

	//--------- DTO threshold parameters -------------
	u16		DTO_PeriodicCheckCycle;
	u16		DTO_RssiThForAntDiv;

	u16		DTO_TxCountThForCalcNewRate;
	u16		DTO_TxRateIncTh;

	u16		DTO_TxRateDecTh;
	u16		DTO_TxRateEqTh;

	u16		DTO_TxRateBackOff;
	u16		DTO_TxRetryRateReduce;

	u16		DTO_TxPowerIndex;	//0 ~ 31
	u16		reserved_1;
	//------------------------------------------------

	u8      PowerChangeEnable;
	u8      AntDiversityEnable;
	u8      Ant_mac;
	u8      Ant_div;

	u8      CCA_Mode;
	u8      CCA_Mode_Setup;
	u8      Preamble_Type;
	u8      PreambleChangeEnable;

	u8      DataRateLevel;
	u8      DataRateChangeEnable;
	u8      FragThresholdLevel;
	u8      FragThresholdChangeEnable;

	u16     RTSThreshold;
	u16     RTSThreshold_Setup;

	u32     AvgIdleSlot;
	u32     Pr_Interf;
	u32     AvgGapBtwnInterf;

	u8	   RTSChangeEnable;
	u8      Ant_sel;
	u8      aging_timeout;
	u8	   reserved_2;

	u32     Cnt_Ant[2];
	u32     SQ_Ant[2];

// 20040510 remove from globe vairable
	u32                     TmrCnt;
	u32                     BackoffTmr;
	TOGGLE_STATE            ToggleState;
	TX_RATE_REDUCTION_STATE TxRateReductionState;

	u8                      Last_Rate;
	u8                      Co_efficent;
	u8		FallbackRateLevel;
	u8		OfdmRateLevel;

	u8		RatePolicy;
	u8		reserved_3[3];

	// For RSSI turning
	s32		RSSI_high;
	s32		RSSI_low;

} MTO_PARAMETERS, *PMTO_PARAMETERS;


#define MTO_DATA()                  (adapter->sMtoPara)
#define MTO_HAL()                   (&adapter->sHwData)
#define MTO_SET_PREAMBLE_TYPE(x)    // 20040511 Turbo mark LM_PREAMBLE_TYPE(&pcore_data->lm_data) = (x)
#define MTO_ENABLE					(adapter->sLocalPara.TxRateMode == RATE_AUTO)
#define MTO_TXPOWER_FROM_EEPROM		(adapter->sHwData.PowerIndexFromEEPROM)
#define LOCAL_ANTENNA_NO()			(adapter->sLocalPara.bAntennaNo)
#define LOCAL_IS_CONNECTED()		(adapter->sLocalPara.wConnectedSTAindex != 0)
#define MTO_INITTXRATE_MODE			(adapter->sHwData.SoftwareSet&0x2)	//bit 1
// 20040510 Turbo add
#define MTO_TMR_CNT()               MTO_DATA().TmrCnt
#define MTO_TOGGLE_STATE()          MTO_DATA().ToggleState
#define MTO_TX_RATE_REDUCTION_STATE() MTO_DATA().TxRateReductionState
#define MTO_BACKOFF_TMR()           MTO_DATA().BackoffTmr
#define MTO_LAST_RATE()             MTO_DATA().Last_Rate
#define MTO_CO_EFFICENT()           MTO_DATA().Co_efficent

#define MTO_TH_CNT()                MTO_DATA().Th_Cnt
#define MTO_TH_SQ3()                MTO_DATA().Th_SQ3
#define MTO_TH_IDLE_SLOT()          MTO_DATA().Th_IdleSlot
#define MTO_TH_PR_INTERF()          MTO_DATA().Th_PrInterf

#define MTO_TMR_AGING()             MTO_DATA().Tmr_Aging
#define MTO_TMR_PERIODIC()          MTO_DATA().Tmr_Periodic

#define MTO_POWER_CHANGE_ENABLE()   MTO_DATA().PowerChangeEnable
#define MTO_ANT_DIVERSITY_ENABLE()  adapter->sLocalPara.boAntennaDiversity
#define MTO_ANT_MAC()               MTO_DATA().Ant_mac
#define MTO_ANT_DIVERSITY()         MTO_DATA().Ant_div
#define MTO_CCA_MODE()              MTO_DATA().CCA_Mode
#define MTO_CCA_MODE_SETUP()        MTO_DATA().CCA_Mode_Setup
#define MTO_PREAMBLE_TYPE()         MTO_DATA().Preamble_Type
#define MTO_PREAMBLE_CHANGE_ENABLE()         MTO_DATA().PreambleChangeEnable

#define MTO_RATE_LEVEL()            MTO_DATA().DataRateLevel
#define MTO_OFDM_RATE_LEVEL()		MTO_DATA().OfdmRateLevel
#define MTO_RATE_CHANGE_ENABLE()    MTO_DATA().DataRateChangeEnable
#define MTO_FRAG_TH_LEVEL()         MTO_DATA().FragThresholdLevel
#define MTO_FRAG_CHANGE_ENABLE()    MTO_DATA().FragThresholdChangeEnable
#define MTO_RTS_THRESHOLD()         MTO_DATA().RTSThreshold
#define MTO_RTS_CHANGE_ENABLE()     MTO_DATA().RTSChangeEnable
#define MTO_RTS_THRESHOLD_SETUP()   MTO_DATA().RTSThreshold_Setup

#define MTO_AVG_IDLE_SLOT()         MTO_DATA().AvgIdleSlot
#define MTO_PR_INTERF()             MTO_DATA().Pr_Interf
#define MTO_AVG_GAP_BTWN_INTERF()   MTO_DATA().AvgGapBtwnInterf

#define MTO_ANT_SEL()               MTO_DATA().Ant_sel
#define MTO_CNT_ANT(x)              MTO_DATA().Cnt_Ant[(x)]
#define MTO_SQ_ANT(x)               MTO_DATA().SQ_Ant[(x)]
#define MTO_AGING_TIMEOUT()         MTO_DATA().aging_timeout


#define MTO_TXFLOWCOUNT()			MTO_DATA().TxFlowCount
//--------- DTO threshold parameters -------------
#define	MTOPARA_PERIODIC_CHECK_CYCLE()		MTO_DATA().DTO_PeriodicCheckCycle
#define	MTOPARA_RSSI_TH_FOR_ANTDIV()		MTO_DATA().DTO_RssiThForAntDiv
#define	MTOPARA_TXCOUNT_TH_FOR_CALC_RATE()	MTO_DATA().DTO_TxCountThForCalcNewRate
#define	MTOPARA_TXRATE_INC_TH()			MTO_DATA().DTO_TxRateIncTh
#define	MTOPARA_TXRATE_DEC_TH()			MTO_DATA().DTO_TxRateDecTh
#define MTOPARA_TXRATE_EQ_TH()			MTO_DATA().DTO_TxRateEqTh
#define	MTOPARA_TXRATE_BACKOFF()		MTO_DATA().DTO_TxRateBackOff
#define	MTOPARA_TXRETRYRATE_REDUCE()		MTO_DATA().DTO_TxRetryRateReduce
#define MTOPARA_TXPOWER_INDEX()			MTO_DATA().DTO_TxPowerIndex
//------------------------------------------------


extern u16  MTO_Frag_Th_Tbl[];

#define MTO_DATA_RATE()          MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()]
#define MTO_FRAG_TH()            MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()]

typedef struct {
	u8 tx_rate;
	u8 tx_retry_rate;
} TXRETRY_REC;

typedef struct _STATISTICS_INFO {
	u32   Rate54M;
	u32   Rate48M;
	u32   Rate36M;
	u32   Rate24M;
	u32   Rate18M;
	u32   Rate12M;
	u32   Rate9M;
	u32   Rate6M;
	u32   Rate11MS;
	u32   Rate11ML;
	u32   Rate55MS;
	u32   Rate55ML;
	u32   Rate2MS;
	u32   Rate2ML;
	u32   Rate1M;
	u32   Rate54MOK;
	u32   Rate48MOK;
	u32   Rate36MOK;
	u32   Rate24MOK;
	u32   Rate18MOK;
	u32   Rate12MOK;
	u32   Rate9MOK;
	u32   Rate6MOK;
	u32   Rate11MSOK;
	u32   Rate11MLOK;
	u32   Rate55MSOK;
	u32   Rate55MLOK;
	u32   Rate2MSOK;
	u32   Rate2MLOK;
	u32   Rate1MOK;
	u32   SQ3;
	s32   RSSIAVG;
	s32   RSSIMAX;
	s32   TXRATE;
	s32   TxRetryRate;
	s32   BSS_PK_CNT;
	s32   NIDLESLOT;
	s32   SLOT_CNT;
	s32   INTERF_CNT;
	s32   GAP_CNT;
	s32   DS_EVM;
	s32   RcvBeaconNum;
	s32   RXRATE;
	s32   RxBytes;
	s32   TxBytes;
	s32   Antenna;
} STATISTICS_INFO, *PSTATISTICS_INFO;

extern void MTO_Init(struct wbsoft_priv *);
extern void MTO_PeriodicTimerExpired(struct wbsoft_priv *);
extern void MTO_SetDTORateRange(struct wbsoft_priv *, u8 *, u8);
extern u8 MTO_GetTxRate(struct wbsoft_priv *adapter, u32 fpdu_len);
extern u8 MTO_GetTxFallbackRate(struct wbsoft_priv *adapter);
extern void MTO_SetTxCount(struct wbsoft_priv *adapter, u8 t0, u8 index);

#endif //__MTO_H__


