175df20e0385198e80439bfc33c001fcecf094622Lars Lindley/* 275df20e0385198e80439bfc33c001fcecf094622Lars Lindley * ================================================================== 375df20e0385198e80439bfc33c001fcecf094622Lars Lindley * MTO.H 475df20e0385198e80439bfc33c001fcecf094622Lars Lindley * 575df20e0385198e80439bfc33c001fcecf094622Lars Lindley * Copyright (c) 2003 Winbond Electronics Corp. All rights reserved. 675df20e0385198e80439bfc33c001fcecf094622Lars Lindley * ================================================================== 775df20e0385198e80439bfc33c001fcecf094622Lars Lindley */ 866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#ifndef __MTO_H__ 966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define __MTO_H__ 1066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 1180aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg#include <linux/types.h> 1280aba53616a5f2f97adf386a2a3ccd5fb0dbfdd6Pekka Enberg 1364328c8711d72794446bbafe23890468786424ccPekka Enbergstruct wbsoft_priv; 1464328c8711d72794446bbafe23890468786424ccPekka Enberg 1566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTO_PREAMBLE_LONG WLAN_PREAMBLE_TYPE_LONG 1666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTO_PREAMBLE_SHORT WLAN_PREAMBLE_TYPE_SHORT 1766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 1875df20e0385198e80439bfc33c001fcecf094622Lars Lindley/* Defines the parameters used in the MAC Throughput Optimization algorithm */ 19a95c69cfe44d96489777f9eda8c2005963730befPekka Enbergstruct wb35_mto_params { 2075df20e0385198e80439bfc33c001fcecf094622Lars Lindley u32 TxFlowCount; /* to judge what kind the tx flow(sparse or busy) is */ 2166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2275df20e0385198e80439bfc33c001fcecf094622Lars Lindley /* --------- DTO threshold parameters ------------- */ 2375df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_PeriodicCheckCycle; 2475df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_RssiThForAntDiv; 2566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2675df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxCountThForCalcNewRate; 2775df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxRateIncTh; 2866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 2975df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxRateDecTh; 3075df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxRateEqTh; 3166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3275df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxRateBackOff; 3375df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxRetryRateReduce; 3466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3575df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 DTO_TxPowerIndex; /* 0 ~ 31 */ 3675df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 reserved_1; 3775df20e0385198e80439bfc33c001fcecf094622Lars Lindley /* ------------------------------------------------ */ 3866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 3975df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 PowerChangeEnable; 4075df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 AntDiversityEnable; 4175df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 CCA_Mode; 4275df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 CCA_Mode_Setup; 4375df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 Preamble_Type; 4475df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 PreambleChangeEnable; 4566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 4675df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 DataRateLevel; 4775df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 DataRateChangeEnable; 4875df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 FragThresholdLevel; 4975df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 FragThresholdChangeEnable; 5066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5175df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 RTSThreshold; 5275df20e0385198e80439bfc33c001fcecf094622Lars Lindley u16 RTSThreshold_Setup; 5366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5475df20e0385198e80439bfc33c001fcecf094622Lars Lindley u32 AvgIdleSlot; 5575df20e0385198e80439bfc33c001fcecf094622Lars Lindley u32 Pr_Interf; 5675df20e0385198e80439bfc33c001fcecf094622Lars Lindley u32 AvgGapBtwnInterf; 5766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 5875df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 RTSChangeEnable; 5975df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 Ant_sel; 6075df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 aging_timeout; 6175df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 reserved_2; 6266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 6375df20e0385198e80439bfc33c001fcecf094622Lars Lindley u32 Cnt_Ant[2]; 6475df20e0385198e80439bfc33c001fcecf094622Lars Lindley u32 SQ_Ant[2]; 6566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 6675df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 FallbackRateLevel; 6775df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 OfdmRateLevel; 6866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 6975df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 RatePolicy; 7075df20e0385198e80439bfc33c001fcecf094622Lars Lindley u8 reserved_3[3]; 7166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7275df20e0385198e80439bfc33c001fcecf094622Lars Lindley /* For RSSI turning */ 7375df20e0385198e80439bfc33c001fcecf094622Lars Lindley s32 RSSI_high; 7475df20e0385198e80439bfc33c001fcecf094622Lars Lindley s32 RSSI_low; 75a95c69cfe44d96489777f9eda8c2005963730befPekka Enberg}; 7666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 7875df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_DATA() (adapter->sMtoPara) 7975df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_HAL() (&adapter->sHwData) 8075df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_SET_PREAMBLE_TYPE(x) /* Turbo mark LM_PREAMBLE_TYPE(&pcore_data->lm_data) = (x) */ 8175df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_ENABLE (adapter->sLocalPara.TxRateMode == RATE_AUTO) 8275df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_TXPOWER_FROM_EEPROM (adapter->sHwData.PowerIndexFromEEPROM) 8375df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define LOCAL_ANTENNA_NO() (adapter->sLocalPara.bAntennaNo) 8475df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define LOCAL_IS_CONNECTED() (adapter->sLocalPara.wConnectedSTAindex != 0) 8575df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_INITTXRATE_MODE (adapter->sHwData.SoftwareSet&0x2) /* bit 1 */ 8666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 8775df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_POWER_CHANGE_ENABLE() MTO_DATA().PowerChangeEnable 8875df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_CCA_MODE() MTO_DATA().CCA_Mode 8975df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_CCA_MODE_SETUP() MTO_DATA().CCA_Mode_Setup 9075df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_PREAMBLE_TYPE() MTO_DATA().Preamble_Type 9175df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_PREAMBLE_CHANGE_ENABLE() MTO_DATA().PreambleChangeEnable 9266101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 9375df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_RATE_LEVEL() MTO_DATA().DataRateLevel 9466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTO_OFDM_RATE_LEVEL() MTO_DATA().OfdmRateLevel 9575df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_RATE_CHANGE_ENABLE() MTO_DATA().DataRateChangeEnable 9675df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_FRAG_TH_LEVEL() MTO_DATA().FragThresholdLevel 9775df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_FRAG_CHANGE_ENABLE() MTO_DATA().FragThresholdChangeEnable 9875df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_RTS_THRESHOLD() MTO_DATA().RTSThreshold 9975df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_RTS_CHANGE_ENABLE() MTO_DATA().RTSChangeEnable 10075df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_RTS_THRESHOLD_SETUP() MTO_DATA().RTSThreshold_Setup 10166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 10275df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_AVG_IDLE_SLOT() MTO_DATA().AvgIdleSlot 10375df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_PR_INTERF() MTO_DATA().Pr_Interf 10475df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_AVG_GAP_BTWN_INTERF() MTO_DATA().AvgGapBtwnInterf 10566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 10675df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_CNT_ANT(x) MTO_DATA().Cnt_Ant[(x)] 10775df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_SQ_ANT(x) MTO_DATA().SQ_Ant[(x)] 10875df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_AGING_TIMEOUT() MTO_DATA().aging_timeout 10966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 11075df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_TXFLOWCOUNT() MTO_DATA().TxFlowCount 11166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 11275df20e0385198e80439bfc33c001fcecf094622Lars Lindley/* --------- DTO threshold parameters ------------- */ 11366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_PERIODIC_CHECK_CYCLE() MTO_DATA().DTO_PeriodicCheckCycle 11466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_RSSI_TH_FOR_ANTDIV() MTO_DATA().DTO_RssiThForAntDiv 11566101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXCOUNT_TH_FOR_CALC_RATE() MTO_DATA().DTO_TxCountThForCalcNewRate 11666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXRATE_INC_TH() MTO_DATA().DTO_TxRateIncTh 11766101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXRATE_DEC_TH() MTO_DATA().DTO_TxRateDecTh 11866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXRATE_EQ_TH() MTO_DATA().DTO_TxRateEqTh 11966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXRATE_BACKOFF() MTO_DATA().DTO_TxRateBackOff 12066101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXRETRYRATE_REDUCE() MTO_DATA().DTO_TxRetryRateReduce 12166101de10957e07a6fd0365d5af9adf650246d14Pavel Machek#define MTOPARA_TXPOWER_INDEX() MTO_DATA().DTO_TxPowerIndex 12275df20e0385198e80439bfc33c001fcecf094622Lars Lindley/* ------------------------------------------------ */ 12366101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 12466101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 12575df20e0385198e80439bfc33c001fcecf094622Lars Lindleyextern u16 MTO_Frag_Th_Tbl[]; 12666101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 12775df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_DATA_RATE() MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()] 12875df20e0385198e80439bfc33c001fcecf094622Lars Lindley#define MTO_FRAG_TH() MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()] 12966101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 13064328c8711d72794446bbafe23890468786424ccPekka Enbergextern void MTO_Init(struct wbsoft_priv *); 13164328c8711d72794446bbafe23890468786424ccPekka Enbergextern void MTO_PeriodicTimerExpired(struct wbsoft_priv *); 13264328c8711d72794446bbafe23890468786424ccPekka Enbergextern void MTO_SetDTORateRange(struct wbsoft_priv *, u8 *, u8); 13357a944435fd0c56ffde42288d8515020b2859e30Pekka Enbergextern u8 MTO_GetTxRate(struct wbsoft_priv *adapter, u32 fpdu_len); 13457a944435fd0c56ffde42288d8515020b2859e30Pekka Enbergextern u8 MTO_GetTxFallbackRate(struct wbsoft_priv *adapter); 13557a944435fd0c56ffde42288d8515020b2859e30Pekka Enbergextern void MTO_SetTxCount(struct wbsoft_priv *adapter, u8 t0, u8 index); 13664328c8711d72794446bbafe23890468786424ccPekka Enberg 13775df20e0385198e80439bfc33c001fcecf094622Lars Lindley#endif /* __MTO_H__ */ 13866101de10957e07a6fd0365d5af9adf650246d14Pavel Machek 139