/* * ================================================================== * MTO.H * * Copyright (c) 2003 Winbond Electronics Corp. All rights reserved. * ================================================================== */ #ifndef __MTO_H__ #define __MTO_H__ #include struct wbsoft_priv; #define MTO_PREAMBLE_LONG WLAN_PREAMBLE_TYPE_LONG #define MTO_PREAMBLE_SHORT WLAN_PREAMBLE_TYPE_SHORT /* Defines the parameters used in the MAC Throughput Optimization algorithm */ struct wb35_mto_params { 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 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]; u8 FallbackRateLevel; u8 OfdmRateLevel; u8 RatePolicy; u8 reserved_3[3]; /* For RSSI turning */ s32 RSSI_high; s32 RSSI_low; }; #define MTO_DATA() (adapter->sMtoPara) #define MTO_HAL() (&adapter->sHwData) #define MTO_SET_PREAMBLE_TYPE(x) /* 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 */ #define MTO_POWER_CHANGE_ENABLE() MTO_DATA().PowerChangeEnable #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_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()] 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__ */