aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/p54/p54common.h
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@web.de>2008-09-03 16:25:25 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-09-08 14:00:18 -0400
commit19c19d54b6bfa57746f3ec805d1d7951eefa353b (patch)
tree1a48522cd59e6ef492d99ebe212beb819c2526a8 /drivers/net/wireless/p54/p54common.h
parente0a58eacf540c65763288c81caa74013f62d7234 (diff)
p54: better firmware support
This patch hopefully contains all necessary changes to support firmwares for all devices up to atleast 2.13.3.0. (or: LowerMAC Protocol Rev: 5.5 ) And this is a big win, since: * newer firmwares are more stable and reliable than the old ones. * no problems anymore with packages > 1399 octets (without lowering the MTU). * monitor mode finally works on USB for more than just a few seconds. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/p54/p54common.h')
-rw-r--r--drivers/net/wireless/p54/p54common.h51
1 files changed, 40 insertions, 11 deletions
diff --git a/drivers/net/wireless/p54/p54common.h b/drivers/net/wireless/p54/p54common.h
index 7b4ba37abe92..73a9a2c923dd 100644
--- a/drivers/net/wireless/p54/p54common.h
+++ b/drivers/net/wireless/p54/p54common.h
@@ -186,7 +186,7 @@ struct p54_rx_hdr {
186 u8 quality; 186 u8 quality;
187 u16 unknown2; 187 u16 unknown2;
188 __le64 timestamp; 188 __le64 timestamp;
189 u8 data[0]; 189 u8 align[0];
190} __attribute__ ((packed)); 190} __attribute__ ((packed));
191 191
192struct p54_frame_sent_hdr { 192struct p54_frame_sent_hdr {
@@ -218,15 +218,30 @@ struct p54_tx_control_filter {
218 u8 bssid[ETH_ALEN]; 218 u8 bssid[ETH_ALEN];
219 u8 rx_antenna; 219 u8 rx_antenna;
220 u8 rx_align; 220 u8 rx_align;
221 __le32 basic_rate_mask; 221 union {
222 u8 rts_rates[8]; 222 struct {
223 __le32 rx_addr; 223 __le32 basic_rate_mask;
224 __le16 max_rx; 224 u8 rts_rates[8];
225 __le16 rxhw; 225 __le32 rx_addr;
226 __le16 wakeup_timer; 226 __le16 max_rx;
227 __le16 unalloc; 227 __le16 rxhw;
228 __le16 wakeup_timer;
229 __le16 unalloc0;
230 } v1 __attribute__ ((packed));
231 struct {
232 __le32 rx_addr;
233 __le16 max_rx;
234 __le16 rxhw;
235 __le16 timer;
236 __le16 unalloc0;
237 __le32 unalloc1;
238 } v2 __attribute__ ((packed));
239 } __attribute__ ((packed));
228} __attribute__ ((packed)); 240} __attribute__ ((packed));
229 241
242#define P54_TX_CONTROL_FILTER_V1_LEN (sizeof(struct p54_tx_control_filter))
243#define P54_TX_CONTROL_FILTER_V2_LEN (sizeof(struct p54_tx_control_filter)-8)
244
230struct p54_tx_control_channel { 245struct p54_tx_control_channel {
231 __le16 flags; 246 __le16 flags;
232 __le16 dwell; 247 __le16 dwell;
@@ -238,15 +253,29 @@ struct p54_tx_control_channel {
238 u8 val_qpsk; 253 u8 val_qpsk;
239 u8 val_16qam; 254 u8 val_16qam;
240 u8 val_64qam; 255 u8 val_64qam;
241 struct pda_pa_curve_data_sample_rev1 curve_data[8]; 256 struct p54_pa_curve_data_sample curve_data[8];
242 u8 dup_bpsk; 257 u8 dup_bpsk;
243 u8 dup_qpsk; 258 u8 dup_qpsk;
244 u8 dup_16qam; 259 u8 dup_16qam;
245 u8 dup_64qam; 260 u8 dup_64qam;
246 __le16 rssical_mul; 261 union {
247 __le16 rssical_add; 262 struct {
263 __le16 rssical_mul;
264 __le16 rssical_add;
265 } v1 __attribute__ ((packed));
266
267 struct {
268 __le32 basic_rate_mask;
269 u8 rts_rates[8];
270 __le16 rssical_mul;
271 __le16 rssical_add;
272 } v2 __attribute__ ((packed));
273 } __attribute__ ((packed));
248} __attribute__ ((packed)); 274} __attribute__ ((packed));
249 275
276#define P54_TX_CONTROL_CHANNEL_V1_LEN (sizeof(struct p54_tx_control_channel)-12)
277#define P54_TX_CONTROL_CHANNEL_V2_LEN (sizeof(struct p54_tx_control_channel))
278
250struct p54_tx_control_led { 279struct p54_tx_control_led {
251 __le16 mode; 280 __le16 mode;
252 __le16 led_temporary; 281 __le16 led_temporary;