1#ifndef _ZD_IEEE80211_H 2#define _ZD_IEEE80211_H 3 4#include <net/ieee80211.h> 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(const struct ofdm_plcp_header *header) 47{ 48 return header->prefix[0] & 0xf; 49} 50 51/* The following defines give the encoding of the 4-bit rate field in the 52 * OFDM (802.11a/802.11g) PLCP header. Notify that these values are used to 53 * define the zd-rate values for OFDM. 54 * 55 * See the struct zd_ctrlset definition in zd_mac.h. 56 */ 57#define ZD_OFDM_PLCP_RATE_6M 0xb 58#define ZD_OFDM_PLCP_RATE_9M 0xf 59#define ZD_OFDM_PLCP_RATE_12M 0xa 60#define ZD_OFDM_PLCP_RATE_18M 0xe 61#define ZD_OFDM_PLCP_RATE_24M 0x9 62#define ZD_OFDM_PLCP_RATE_36M 0xd 63#define ZD_OFDM_PLCP_RATE_48M 0x8 64#define ZD_OFDM_PLCP_RATE_54M 0xc 65 66struct cck_plcp_header { 67 u8 signal; 68 u8 service; 69 __le16 length; 70 __le16 crc16; 71} __attribute__((packed)); 72 73static inline u8 zd_cck_plcp_header_signal(const struct cck_plcp_header *header) 74{ 75 return header->signal; 76} 77 78/* These defines give the encodings of the signal field in the 802.11b PLCP 79 * header. The signal field gives the bit rate of the following packet. Even 80 * if technically wrong we use CCK here also for the 1 MBit/s and 2 MBit/s 81 * rate to stay consistent with Zydas and our use of the term. 82 * 83 * Notify that these values are *not* used in the zd-rates. 84 */ 85#define ZD_CCK_PLCP_SIGNAL_1M 0x0a 86#define ZD_CCK_PLCP_SIGNAL_2M 0x14 87#define ZD_CCK_PLCP_SIGNAL_5M5 0x37 88#define ZD_CCK_PLCP_SIGNAL_11M 0x6e 89 90enum ieee80211_std { 91 IEEE80211B = 0x01, 92 IEEE80211A = 0x02, 93 IEEE80211G = 0x04, 94}; 95 96#endif /* _ZD_IEEE80211_H */ 97