struct zd_ctrlset {
u8 modulation;
__le16 tx_length;
u8 control; /* stores only the difference to tx_length on ZD1211B */
__le16 packet_length;
__le16 current_length;
u8 service;
__le16 next_frame_length;
} __packed;
#define ZD_CS_RESERVED_SIZE 25
/* The field modulation of struct zd_ctrlset controls the bit rate, the use * of short or long preambles in 802.11b (CCK mode) or the use of 802.11a or * 802.11g in OFDM mode. * * The term zd-rate is used for the combination of the modulation type flag * and the "pure" rate value.
*/ #define ZD_PURE_RATE_MASK 0x0f #define ZD_MODULATION_TYPE_MASK 0x10 #define ZD_RATE_MASK (ZD_PURE_RATE_MASK|ZD_MODULATION_TYPE_MASK) #define ZD_PURE_RATE(modulation) ((modulation) & ZD_PURE_RATE_MASK) #define ZD_MODULATION_TYPE(modulation) ((modulation) & ZD_MODULATION_TYPE_MASK) #define ZD_RATE(modulation) ((modulation) & ZD_RATE_MASK)
/* The two possible modulation types. Notify that 802.11b doesn't use the CCK * codeing for the 1 and 2 MBit/s rate. We stay with the term here to remain * consistent with uses the term at other places.
*/ #define ZD_CCK 0x00 #define ZD_OFDM 0x10
/* The ZD1211 firmware uses proprietary encodings of the 802.11b (CCK) rates. * For OFDM the PLCP rate encodings are used. We combine these "pure" rates * with the modulation type flag and call the resulting values zd-rates.
*/ #define ZD_CCK_RATE_1M (ZD_CCK|0x00) #define ZD_CCK_RATE_2M (ZD_CCK|0x01) #define ZD_CCK_RATE_5_5M (ZD_CCK|0x02) #define ZD_CCK_RATE_11M (ZD_CCK|0x03) #define ZD_OFDM_RATE_6M (ZD_OFDM|ZD_OFDM_PLCP_RATE_6M) #define ZD_OFDM_RATE_9M (ZD_OFDM|ZD_OFDM_PLCP_RATE_9M) #define ZD_OFDM_RATE_12M (ZD_OFDM|ZD_OFDM_PLCP_RATE_12M) #define ZD_OFDM_RATE_18M (ZD_OFDM|ZD_OFDM_PLCP_RATE_18M) #define ZD_OFDM_RATE_24M (ZD_OFDM|ZD_OFDM_PLCP_RATE_24M) #define ZD_OFDM_RATE_36M (ZD_OFDM|ZD_OFDM_PLCP_RATE_36M) #define ZD_OFDM_RATE_48M (ZD_OFDM|ZD_OFDM_PLCP_RATE_48M) #define ZD_OFDM_RATE_54M (ZD_OFDM|ZD_OFDM_PLCP_RATE_54M)
/* The bit 5 of the zd_ctrlset modulation field controls the preamble in CCK * mode or the 802.11a/802.11g selection in OFDM mode.
*/ #define ZD_CCK_PREA_LONG 0x00 #define ZD_CCK_PREA_SHORT 0x20 #define ZD_OFDM_MODE_11G 0x00 #define ZD_OFDM_MODE_11A 0x20
/* zd_ctrlset control field */ #define ZD_CS_NEED_RANDOM_BACKOFF 0x01 #define ZD_CS_NO_ACK 0x02
struct tx_retry_rate { int count; /* number of valid element in rate[] array */ int rate[10]; /* retry rates, described by an index in zd_rates[] */
};
struct tx_status {
u8 type; /* must always be 0x01 : USB_INT_TYPE */
u8 id; /* must always be 0xa0 : USB_INT_ID_RETRY_FAILED */
u8 rate;
u8 pad;
u8 mac[ETH_ALEN];
u8 retry;
u8 failure;
} __packed;
/* The following defines give the encoding of the 4-bit rate field in the * OFDM (802.11a/802.11g) PLCP header. Notify that these values are used to * define the zd-rate values for OFDM. * * See the struct zd_ctrlset definition in zd_mac.h.
*/ #define ZD_OFDM_PLCP_RATE_6M 0xb #define ZD_OFDM_PLCP_RATE_9M 0xf #define ZD_OFDM_PLCP_RATE_12M 0xa #define ZD_OFDM_PLCP_RATE_18M 0xe #define ZD_OFDM_PLCP_RATE_24M 0x9 #define ZD_OFDM_PLCP_RATE_36M 0xd #define ZD_OFDM_PLCP_RATE_48M 0x8 #define ZD_OFDM_PLCP_RATE_54M 0xc
/* These defines give the encodings of the signal field in the 802.11b PLCP * header. The signal field gives the bit rate of the following packet. Even * if technically wrong we use CCK here also for the 1 MBit/s and 2 MBit/s * rate to stay consistent with Zydas and our use of the term. * * Notify that these values are *not* used in the zd-rates.
*/ #define ZD_CCK_PLCP_SIGNAL_1M 0x0a #define ZD_CCK_PLCP_SIGNAL_2M 0x14 #define ZD_CCK_PLCP_SIGNAL_5M5 0x37 #define ZD_CCK_PLCP_SIGNAL_11M 0x6e
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.