[PATCH] zd1211rw: Remove addressing abstraction
[deliverable/linux.git] / drivers / net / wireless / zd1211rw / zd_ieee80211.h
CommitLineData
e85d0918
DD
1#ifndef _ZD_IEEE80211_H
2#define _ZD_IEEE80211_H
3
4#include <net/ieee80211.h>
e85d0918
DD
5
6/* Additional definitions from the standards.
7 */
8
9#define ZD_REGDOMAIN_FCC 0x10
10#define ZD_REGDOMAIN_IC 0x20
11#define ZD_REGDOMAIN_ETSI 0x30
12#define ZD_REGDOMAIN_SPAIN 0x31
13#define ZD_REGDOMAIN_FRANCE 0x32
14#define ZD_REGDOMAIN_JAPAN_ADD 0x40
15#define ZD_REGDOMAIN_JAPAN 0x41
16
17enum {
18 MIN_CHANNEL24 = 1,
19 MAX_CHANNEL24 = 14,
20};
21
22struct channel_range {
23 u8 start;
24 u8 end; /* exclusive (channel must be less than end) */
25};
26
27struct iw_freq;
28
29int zd_geo_init(struct ieee80211_device *ieee, u8 regdomain);
30
31const struct channel_range *zd_channel_range(u8 regdomain);
32int zd_regdomain_supports_channel(u8 regdomain, u8 channel);
33int zd_regdomain_supported(u8 regdomain);
34
35/* for 2.4 GHz band */
36int zd_channel_to_freq(struct iw_freq *freq, u8 channel);
37int zd_find_channel(u8 *channel, const struct iw_freq *freq);
38
39#define ZD_PLCP_SERVICE_LENGTH_EXTENSION 0x80
40
41struct ofdm_plcp_header {
42 u8 prefix[3];
43 __le16 service;
44} __attribute__((packed));
45
46static inline u8 zd_ofdm_plcp_header_rate(
47 const struct ofdm_plcp_header *header)
48{
49 return header->prefix[0] & 0xf;
50}
51
b1cd8416 52/* These are referred to as zd_rates */
e85d0918
DD
53#define ZD_OFDM_RATE_6M 0xb
54#define ZD_OFDM_RATE_9M 0xf
55#define ZD_OFDM_RATE_12M 0xa
56#define ZD_OFDM_RATE_18M 0xe
57#define ZD_OFDM_RATE_24M 0x9
58#define ZD_OFDM_RATE_36M 0xd
59#define ZD_OFDM_RATE_48M 0x8
60#define ZD_OFDM_RATE_54M 0xc
61
62struct cck_plcp_header {
63 u8 signal;
64 u8 service;
65 __le16 length;
66 __le16 crc16;
a88556a4 67} __attribute__((packed));
e85d0918
DD
68
69static inline u8 zd_cck_plcp_header_rate(const struct cck_plcp_header *header)
70{
71 return header->signal;
72}
73
74#define ZD_CCK_SIGNAL_1M 0x0a
75#define ZD_CCK_SIGNAL_2M 0x14
76#define ZD_CCK_SIGNAL_5M5 0x37
77#define ZD_CCK_SIGNAL_11M 0x6e
78
79enum ieee80211_std {
80 IEEE80211B = 0x01,
81 IEEE80211A = 0x02,
82 IEEE80211G = 0x04,
83};
84
85#endif /* _ZD_IEEE80211_H */
This page took 0.336537 seconds and 5 git commands to generate.