OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [net/] [wireless/] [iwlwifi/] [iwl-3945-rs.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/******************************************************************************
2
 *
3
 * Copyright(c) 2005 - 2007 Intel Corporation. All rights reserved.
4
 *
5
 * This program is free software; you can redistribute it and/or modify it
6
 * under the terms of version 2 of the GNU General Public License as
7
 * published by the Free Software Foundation.
8
 *
9
 * This program is distributed in the hope that it will be useful, but WITHOUT
10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12
 * more details.
13
 *
14
 * You should have received a copy of the GNU General Public License along with
15
 * this program; if not, write to the Free Software Foundation, Inc.,
16
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17
 *
18
 * The full GNU General Public License is included in this distribution in the
19
 * file called LICENSE.
20
 *
21
 * Contact Information:
22
 * James P. Ketrenos <ipw2100-admin@linux.intel.com>
23
 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
24
 *
25
 *****************************************************************************/
26
 
27
#ifndef __iwl_3945_rs_h__
28
#define __iwl_3945_rs_h__
29
 
30
struct iwl_rate_info {
31
        u8 plcp;
32
        u8 ieee;
33
        u8 prev_ieee;           /* previous rate in IEEE speeds */
34
        u8 next_ieee;           /* next rate in IEEE speeds */
35
        u8 prev_rs;             /* previous rate used in rs algo */
36
        u8 next_rs;             /* next rate used in rs algo */
37
        u8 prev_rs_tgg;         /* previous rate used in TGG rs algo */
38
        u8 next_rs_tgg;         /* next rate used in TGG rs algo */
39
        u8 table_rs_index;      /* index in rate scale table cmd */
40
        u8 prev_table_rs;       /* prev in rate table cmd */
41
 
42
};
43
 
44
enum {
45
        IWL_RATE_1M_INDEX = 0,
46
        IWL_RATE_2M_INDEX,
47
        IWL_RATE_5M_INDEX,
48
        IWL_RATE_11M_INDEX,
49
        IWL_RATE_6M_INDEX,
50
        IWL_RATE_9M_INDEX,
51
        IWL_RATE_12M_INDEX,
52
        IWL_RATE_18M_INDEX,
53
        IWL_RATE_24M_INDEX,
54
        IWL_RATE_36M_INDEX,
55
        IWL_RATE_48M_INDEX,
56
        IWL_RATE_54M_INDEX,
57
        IWL_RATE_COUNT,
58
        IWL_RATE_INVM_INDEX,
59
        IWL_RATE_INVALID = IWL_RATE_INVM_INDEX
60
};
61
 
62
enum {
63
        IWL_RATE_6M_INDEX_TABLE = 0,
64
        IWL_RATE_9M_INDEX_TABLE,
65
        IWL_RATE_12M_INDEX_TABLE,
66
        IWL_RATE_18M_INDEX_TABLE,
67
        IWL_RATE_24M_INDEX_TABLE,
68
        IWL_RATE_36M_INDEX_TABLE,
69
        IWL_RATE_48M_INDEX_TABLE,
70
        IWL_RATE_54M_INDEX_TABLE,
71
        IWL_RATE_1M_INDEX_TABLE,
72
        IWL_RATE_2M_INDEX_TABLE,
73
        IWL_RATE_5M_INDEX_TABLE,
74
        IWL_RATE_11M_INDEX_TABLE,
75
        IWL_RATE_INVM_INDEX_TABLE = IWL_RATE_INVM_INDEX,
76
};
77
 
78
enum {
79
        IWL_FIRST_OFDM_RATE = IWL_RATE_6M_INDEX,
80
        IWL_LAST_OFDM_RATE = IWL_RATE_54M_INDEX,
81
        IWL_FIRST_CCK_RATE = IWL_RATE_1M_INDEX,
82
        IWL_LAST_CCK_RATE = IWL_RATE_11M_INDEX,
83
};
84
 
85
/* #define vs. enum to keep from defaulting to 'large integer' */
86
#define IWL_RATE_6M_MASK   (1<<IWL_RATE_6M_INDEX)
87
#define IWL_RATE_9M_MASK   (1<<IWL_RATE_9M_INDEX)
88
#define IWL_RATE_12M_MASK  (1<<IWL_RATE_12M_INDEX)
89
#define IWL_RATE_18M_MASK  (1<<IWL_RATE_18M_INDEX)
90
#define IWL_RATE_24M_MASK  (1<<IWL_RATE_24M_INDEX)
91
#define IWL_RATE_36M_MASK  (1<<IWL_RATE_36M_INDEX)
92
#define IWL_RATE_48M_MASK  (1<<IWL_RATE_48M_INDEX)
93
#define IWL_RATE_54M_MASK  (1<<IWL_RATE_54M_INDEX)
94
#define IWL_RATE_1M_MASK   (1<<IWL_RATE_1M_INDEX)
95
#define IWL_RATE_2M_MASK   (1<<IWL_RATE_2M_INDEX)
96
#define IWL_RATE_5M_MASK   (1<<IWL_RATE_5M_INDEX)
97
#define IWL_RATE_11M_MASK  (1<<IWL_RATE_11M_INDEX)
98
 
99
enum {
100
        IWL_RATE_6M_PLCP = 13,
101
        IWL_RATE_9M_PLCP = 15,
102
        IWL_RATE_12M_PLCP = 5,
103
        IWL_RATE_18M_PLCP = 7,
104
        IWL_RATE_24M_PLCP = 9,
105
        IWL_RATE_36M_PLCP = 11,
106
        IWL_RATE_48M_PLCP = 1,
107
        IWL_RATE_54M_PLCP = 3,
108
        IWL_RATE_1M_PLCP = 10,
109
        IWL_RATE_2M_PLCP = 20,
110
        IWL_RATE_5M_PLCP = 55,
111
        IWL_RATE_11M_PLCP = 110,
112
};
113
 
114
enum {
115
        IWL_RATE_6M_IEEE = 12,
116
        IWL_RATE_9M_IEEE = 18,
117
        IWL_RATE_12M_IEEE = 24,
118
        IWL_RATE_18M_IEEE = 36,
119
        IWL_RATE_24M_IEEE = 48,
120
        IWL_RATE_36M_IEEE = 72,
121
        IWL_RATE_48M_IEEE = 96,
122
        IWL_RATE_54M_IEEE = 108,
123
        IWL_RATE_1M_IEEE = 2,
124
        IWL_RATE_2M_IEEE = 4,
125
        IWL_RATE_5M_IEEE = 11,
126
        IWL_RATE_11M_IEEE = 22,
127
};
128
 
129
#define IWL_CCK_BASIC_RATES_MASK    \
130
       (IWL_RATE_1M_MASK          | \
131
        IWL_RATE_2M_MASK)
132
 
133
#define IWL_CCK_RATES_MASK          \
134
       (IWL_BASIC_RATES_MASK      | \
135
        IWL_RATE_5M_MASK          | \
136
        IWL_RATE_11M_MASK)
137
 
138
#define IWL_OFDM_BASIC_RATES_MASK   \
139
        (IWL_RATE_6M_MASK         | \
140
        IWL_RATE_12M_MASK         | \
141
        IWL_RATE_24M_MASK)
142
 
143
#define IWL_OFDM_RATES_MASK         \
144
       (IWL_OFDM_BASIC_RATES_MASK | \
145
        IWL_RATE_9M_MASK          | \
146
        IWL_RATE_18M_MASK         | \
147
        IWL_RATE_36M_MASK         | \
148
        IWL_RATE_48M_MASK         | \
149
        IWL_RATE_54M_MASK)
150
 
151
#define IWL_BASIC_RATES_MASK         \
152
        (IWL_OFDM_BASIC_RATES_MASK | \
153
         IWL_CCK_BASIC_RATES_MASK)
154
 
155
#define IWL_RATES_MASK ((1<<IWL_RATE_COUNT)-1)
156
 
157
#define IWL_INVALID_VALUE    -1
158
 
159
#define IWL_MIN_RSSI_VAL                 -100
160
#define IWL_MAX_RSSI_VAL                    0
161
 
162
extern const struct iwl_rate_info iwl_rates[IWL_RATE_COUNT];
163
 
164
static inline u8 iwl_get_prev_ieee_rate(u8 rate_index)
165
{
166
        u8 rate = iwl_rates[rate_index].prev_ieee;
167
 
168
        if (rate == IWL_RATE_INVALID)
169
                rate = rate_index;
170
        return rate;
171
}
172
 
173
/**
174
 * iwl_fill_rs_info - Fill an output text buffer with the rate representation
175
 *
176
 * NOTE:  This is provided as a quick mechanism for a user to visualize
177
 * the performance of the rate control alogirthm and is not meant to be
178
 * parsed software.
179
 */
180
extern int iwl_fill_rs_info(struct ieee80211_hw *, char *buf, u8 sta_id);
181
 
182
/**
183
 * iwl_rate_scale_init - Initialize the rate scale table based on assoc info
184
 *
185
 * The specific througput table used is based on the type of network
186
 * the associated with, including A, B, G, and G w/ TGG protection
187
 */
188
extern void iwl_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id);
189
 
190
/**
191
 * iwl_rate_control_register - Register the rate control algorithm callbacks
192
 *
193
 * Since the rate control algorithm is hardware specific, there is no need
194
 * or reason to place it as a stand alone module.  The driver can call
195
 * iwl_rate_control_register in order to register the rate control callbacks
196
 * with the mac80211 subsystem.  This should be performed prior to calling
197
 * ieee80211_register_hw
198
 *
199
 */
200
extern void iwl_rate_control_register(struct ieee80211_hw *hw);
201
 
202
/**
203
 * iwl_rate_control_unregister - Unregister the rate control callbacks
204
 *
205
 * This should be called after calling ieee80211_unregister_hw, but before
206
 * the driver is unloaded.
207
 */
208
extern void iwl_rate_control_unregister(struct ieee80211_hw *hw);
209
 
210
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.