]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - drivers/staging/winbond/mto.h
Staging: ipack: implement ipack device table.
[mirror_ubuntu-bionic-kernel.git] / drivers / staging / winbond / mto.h
CommitLineData
75df20e0
LL
1/*
2 * ==================================================================
3 * MTO.H
4 *
5 * Copyright (c) 2003 Winbond Electronics Corp. All rights reserved.
6 * ==================================================================
7 */
66101de1
PM
8#ifndef __MTO_H__
9#define __MTO_H__
10
80aba536
PE
11#include <linux/types.h>
12
64328c87
PE
13struct wbsoft_priv;
14
66101de1
PM
15#define MTO_PREAMBLE_LONG WLAN_PREAMBLE_TYPE_LONG
16#define MTO_PREAMBLE_SHORT WLAN_PREAMBLE_TYPE_SHORT
17
75df20e0 18/* Defines the parameters used in the MAC Throughput Optimization algorithm */
a95c69cf 19struct wb35_mto_params {
75df20e0 20 u32 TxFlowCount; /* to judge what kind the tx flow(sparse or busy) is */
66101de1 21
75df20e0
LL
22 /* --------- DTO threshold parameters ------------- */
23 u16 DTO_PeriodicCheckCycle;
24 u16 DTO_RssiThForAntDiv;
66101de1 25
75df20e0
LL
26 u16 DTO_TxCountThForCalcNewRate;
27 u16 DTO_TxRateIncTh;
66101de1 28
75df20e0
LL
29 u16 DTO_TxRateDecTh;
30 u16 DTO_TxRateEqTh;
66101de1 31
75df20e0
LL
32 u16 DTO_TxRateBackOff;
33 u16 DTO_TxRetryRateReduce;
66101de1 34
75df20e0
LL
35 u16 DTO_TxPowerIndex; /* 0 ~ 31 */
36 u16 reserved_1;
37 /* ------------------------------------------------ */
66101de1 38
75df20e0
LL
39 u8 PowerChangeEnable;
40 u8 AntDiversityEnable;
41 u8 CCA_Mode;
42 u8 CCA_Mode_Setup;
43 u8 Preamble_Type;
44 u8 PreambleChangeEnable;
66101de1 45
75df20e0
LL
46 u8 DataRateLevel;
47 u8 DataRateChangeEnable;
48 u8 FragThresholdLevel;
49 u8 FragThresholdChangeEnable;
66101de1 50
75df20e0
LL
51 u16 RTSThreshold;
52 u16 RTSThreshold_Setup;
66101de1 53
75df20e0
LL
54 u32 AvgIdleSlot;
55 u32 Pr_Interf;
56 u32 AvgGapBtwnInterf;
66101de1 57
75df20e0
LL
58 u8 RTSChangeEnable;
59 u8 Ant_sel;
60 u8 aging_timeout;
61 u8 reserved_2;
66101de1 62
75df20e0
LL
63 u32 Cnt_Ant[2];
64 u32 SQ_Ant[2];
66101de1 65
75df20e0
LL
66 u8 FallbackRateLevel;
67 u8 OfdmRateLevel;
66101de1 68
75df20e0
LL
69 u8 RatePolicy;
70 u8 reserved_3[3];
66101de1 71
75df20e0
LL
72 /* For RSSI turning */
73 s32 RSSI_high;
74 s32 RSSI_low;
a95c69cf 75};
66101de1
PM
76
77
75df20e0
LL
78#define MTO_DATA() (adapter->sMtoPara)
79#define MTO_HAL() (&adapter->sHwData)
80#define MTO_SET_PREAMBLE_TYPE(x) /* Turbo mark LM_PREAMBLE_TYPE(&pcore_data->lm_data) = (x) */
81#define MTO_ENABLE (adapter->sLocalPara.TxRateMode == RATE_AUTO)
82#define MTO_TXPOWER_FROM_EEPROM (adapter->sHwData.PowerIndexFromEEPROM)
83#define LOCAL_ANTENNA_NO() (adapter->sLocalPara.bAntennaNo)
84#define LOCAL_IS_CONNECTED() (adapter->sLocalPara.wConnectedSTAindex != 0)
85#define MTO_INITTXRATE_MODE (adapter->sHwData.SoftwareSet&0x2) /* bit 1 */
66101de1 86
75df20e0
LL
87#define MTO_POWER_CHANGE_ENABLE() MTO_DATA().PowerChangeEnable
88#define MTO_CCA_MODE() MTO_DATA().CCA_Mode
89#define MTO_CCA_MODE_SETUP() MTO_DATA().CCA_Mode_Setup
90#define MTO_PREAMBLE_TYPE() MTO_DATA().Preamble_Type
91#define MTO_PREAMBLE_CHANGE_ENABLE() MTO_DATA().PreambleChangeEnable
66101de1 92
75df20e0 93#define MTO_RATE_LEVEL() MTO_DATA().DataRateLevel
66101de1 94#define MTO_OFDM_RATE_LEVEL() MTO_DATA().OfdmRateLevel
75df20e0
LL
95#define MTO_RATE_CHANGE_ENABLE() MTO_DATA().DataRateChangeEnable
96#define MTO_FRAG_TH_LEVEL() MTO_DATA().FragThresholdLevel
97#define MTO_FRAG_CHANGE_ENABLE() MTO_DATA().FragThresholdChangeEnable
98#define MTO_RTS_THRESHOLD() MTO_DATA().RTSThreshold
99#define MTO_RTS_CHANGE_ENABLE() MTO_DATA().RTSChangeEnable
100#define MTO_RTS_THRESHOLD_SETUP() MTO_DATA().RTSThreshold_Setup
66101de1 101
75df20e0
LL
102#define MTO_AVG_IDLE_SLOT() MTO_DATA().AvgIdleSlot
103#define MTO_PR_INTERF() MTO_DATA().Pr_Interf
104#define MTO_AVG_GAP_BTWN_INTERF() MTO_DATA().AvgGapBtwnInterf
66101de1 105
75df20e0
LL
106#define MTO_CNT_ANT(x) MTO_DATA().Cnt_Ant[(x)]
107#define MTO_SQ_ANT(x) MTO_DATA().SQ_Ant[(x)]
108#define MTO_AGING_TIMEOUT() MTO_DATA().aging_timeout
66101de1 109
75df20e0 110#define MTO_TXFLOWCOUNT() MTO_DATA().TxFlowCount
66101de1 111
75df20e0 112/* --------- DTO threshold parameters ------------- */
66101de1
PM
113#define MTOPARA_PERIODIC_CHECK_CYCLE() MTO_DATA().DTO_PeriodicCheckCycle
114#define MTOPARA_RSSI_TH_FOR_ANTDIV() MTO_DATA().DTO_RssiThForAntDiv
115#define MTOPARA_TXCOUNT_TH_FOR_CALC_RATE() MTO_DATA().DTO_TxCountThForCalcNewRate
116#define MTOPARA_TXRATE_INC_TH() MTO_DATA().DTO_TxRateIncTh
117#define MTOPARA_TXRATE_DEC_TH() MTO_DATA().DTO_TxRateDecTh
118#define MTOPARA_TXRATE_EQ_TH() MTO_DATA().DTO_TxRateEqTh
119#define MTOPARA_TXRATE_BACKOFF() MTO_DATA().DTO_TxRateBackOff
120#define MTOPARA_TXRETRYRATE_REDUCE() MTO_DATA().DTO_TxRetryRateReduce
121#define MTOPARA_TXPOWER_INDEX() MTO_DATA().DTO_TxPowerIndex
75df20e0 122/* ------------------------------------------------ */
66101de1
PM
123
124
75df20e0 125extern u16 MTO_Frag_Th_Tbl[];
66101de1 126
75df20e0
LL
127#define MTO_DATA_RATE() MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()]
128#define MTO_FRAG_TH() MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()]
66101de1 129
64328c87
PE
130extern void MTO_Init(struct wbsoft_priv *);
131extern void MTO_PeriodicTimerExpired(struct wbsoft_priv *);
132extern void MTO_SetDTORateRange(struct wbsoft_priv *, u8 *, u8);
57a94443
PE
133extern u8 MTO_GetTxRate(struct wbsoft_priv *adapter, u32 fpdu_len);
134extern u8 MTO_GetTxFallbackRate(struct wbsoft_priv *adapter);
135extern void MTO_SetTxCount(struct wbsoft_priv *adapter, u8 t0, u8 index);
64328c87 136
75df20e0 137#endif /* __MTO_H__ */
66101de1 138