o move tdma+superg protocol defs out of public view

o add #ifdef _KERNEL to superg+tdma include files so they can be used
  by user code to get the protocol defs
This commit is contained in:
Sam Leffler 2009-03-26 21:29:03 +00:00
parent ea66717737
commit 9d90db9307
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=190455
5 changed files with 106 additions and 93 deletions

View File

@ -733,28 +733,6 @@ struct ieee80211_csa_ie {
uint8_t csa_count; /* Channel Switch Count */
} __packed;
/*
* Atheros advanced capability information element.
*/
struct ieee80211_ath_ie {
uint8_t ath_id; /* IEEE80211_ELEMID_VENDOR */
uint8_t ath_len; /* length in bytes */
uint8_t ath_oui[3]; /* 0x00, 0x03, 0x7f */
uint8_t ath_oui_type; /* OUI type */
uint8_t ath_oui_subtype; /* OUI subtype */
uint8_t ath_version; /* spec revision */
uint8_t ath_capability; /* capability info */
#define ATHEROS_CAP_TURBO_PRIME 0x01 /* dynamic turbo--aka Turbo' */
#define ATHEROS_CAP_COMPRESSION 0x02 /* data compression */
#define ATHEROS_CAP_FAST_FRAME 0x04 /* fast (jumbo) frames */
#define ATHEROS_CAP_XR 0x08 /* Xtended Range support */
#define ATHEROS_CAP_AR 0x10 /* Advanded Radar support */
#define ATHEROS_CAP_BURST 0x20 /* Bursting - not negotiated */
#define ATHEROS_CAP_WME 0x40 /* CWMin tuning */
#define ATHEROS_CAP_BOOST 0x80 /* use turbo/!turbo mode */
uint8_t ath_defkeyix[2];
} __packed;
/* rate set entries are in .5 Mb/s units, and potentially marked as basic */
#define IEEE80211_RATE_BASIC 0x80
#define IEEE80211_RATE_VAL 0x7f
@ -768,9 +746,11 @@ struct ieee80211_ath_ie {
"\20\1NON_ERP_PRESENT\2USE_PROTECTION\3LONG_PREAMBLE"
#define ATH_OUI 0x7f0300 /* Atheros OUI */
#define ATH_OUI_TYPE 0x01
#define ATH_OUI_SUBTYPE 0x01
#define ATH_OUI_VERSION 0x00
#define ATH_OUI_TYPE 0x01 /* Atheros protocol ie */
/* NB: Atheros allocated the OUI for this purpose ~2005 but beware ... */
#define TDMA_OUI ATH_OUI
#define TDMA_OUI_TYPE 0x02 /* TDMA protocol ie */
#define BCM_OUI 0x4c9000 /* Broadcom OUI */
#define BCM_OUI_HTCAP 51 /* pre-draft HTCAP ie */
@ -1048,71 +1028,4 @@ struct ieee80211_duration {
IEEE80211_DUR_DS_SLOW_PLCPHDR + \
IEEE80211_DUR_DIFS)
/*
* Atheros fast-frame encapsulation format.
* FF max payload:
* 802.2 + FFHDR + HPAD + 802.3 + 802.2 + 1500 + SPAD + 802.3 + 802.2 + 1500:
* 8 + 4 + 4 + 14 + 8 + 1500 + 6 + 14 + 8 + 1500
* = 3066
*/
/* fast frame header is 32-bits */
#define ATH_FF_PROTO 0x0000003f /* protocol */
#define ATH_FF_PROTO_S 0
#define ATH_FF_FTYPE 0x000000c0 /* frame type */
#define ATH_FF_FTYPE_S 6
#define ATH_FF_HLEN32 0x00000300 /* optional hdr length */
#define ATH_FF_HLEN32_S 8
#define ATH_FF_SEQNUM 0x001ffc00 /* sequence number */
#define ATH_FF_SEQNUM_S 10
#define ATH_FF_OFFSET 0xffe00000 /* offset to 2nd payload */
#define ATH_FF_OFFSET_S 21
#define ATH_FF_MAX_HDR_PAD 4
#define ATH_FF_MAX_SEP_PAD 6
#define ATH_FF_MAX_HDR 30
#define ATH_FF_PROTO_L2TUNNEL 0 /* L2 tunnel protocol */
#define ATH_FF_ETH_TYPE 0x88bd /* Ether type for encapsulated frames */
#define ATH_FF_SNAP_ORGCODE_0 0x00
#define ATH_FF_SNAP_ORGCODE_1 0x03
#define ATH_FF_SNAP_ORGCODE_2 0x7f
/* NB: Atheros allocated the OUI for this purpose ~2005 but beware ... */
#define TDMA_OUI ATH_OUI
#define TDMA_OUI_TYPE 0x02
#define TDMA_VERSION_V2 2
#define TDMA_VERSION TDMA_VERSION_V2
/* NB: we only support 2 right now but protocol handles up to 8 */
#define TDMA_MAXSLOTS 2 /* max slots/sta's */
#define TDMA_PARAM_LEN_V2 sizeof(struct ieee80211_tdma_param)
struct ieee80211_tdma_param {
u_int8_t tdma_id; /* IEEE80211_ELEMID_VENDOR */
u_int8_t tdma_len;
u_int8_t tdma_oui[3]; /* 0x00, 0x03, 0x7f */
u_int8_t tdma_type; /* OUI type */
u_int8_t tdma_subtype; /* OUI subtype */
#define TDMA_SUBTYPE_PARAM 0x01
u_int8_t tdma_version; /* spec revision */
u_int8_t tdma_slot; /* station slot # [0..7] */
u_int8_t tdma_slotcnt; /* bss slot count [1..8] */
u_int16_t tdma_slotlen; /* bss slot len (100us) */
u_int8_t tdma_bintval; /* beacon interval (superframes) */
u_int8_t tdma_inuse[1]; /* slot occupancy map */
u_int8_t tdma_pad[2];
u_int8_t tdma_tstamp[8]; /* timestamp from last beacon */
} __packed;
#define TDMA_VERSION_VALID(_version) \
(TDMA_VERSION_V2 <= (_version) && (_version) <= TDMA_VERSION)
#define TDMA_SLOTCNT_VALID(_slotcnt) \
(2 <= (_slotcnt) && (_slotcnt) <= TDMA_MAXSLOTS)
/* XXX magic constants */
#define TDMA_SLOTLEN_VALID(_slotlen) \
(2*100 <= (_slotlen) && (unsigned)(_slotlen) <= 0xfffff)
/* XXX probably should set a max */
#define TDMA_BINTVAL_VALID(_bintval) (1 <= (_bintval))
#endif /* _NET80211_IEEE80211_H_ */

View File

@ -47,6 +47,35 @@ __FBSDID("$FreeBSD$");
#include <net80211/ieee80211_phy.h>
#include <net80211/ieee80211_superg.h>
/*
* Atheros fast-frame encapsulation format.
* FF max payload:
* 802.2 + FFHDR + HPAD + 802.3 + 802.2 + 1500 + SPAD + 802.3 + 802.2 + 1500:
* 8 + 4 + 4 + 14 + 8 + 1500 + 6 + 14 + 8 + 1500
* = 3066
*/
/* fast frame header is 32-bits */
#define ATH_FF_PROTO 0x0000003f /* protocol */
#define ATH_FF_PROTO_S 0
#define ATH_FF_FTYPE 0x000000c0 /* frame type */
#define ATH_FF_FTYPE_S 6
#define ATH_FF_HLEN32 0x00000300 /* optional hdr length */
#define ATH_FF_HLEN32_S 8
#define ATH_FF_SEQNUM 0x001ffc00 /* sequence number */
#define ATH_FF_SEQNUM_S 10
#define ATH_FF_OFFSET 0xffe00000 /* offset to 2nd payload */
#define ATH_FF_OFFSET_S 21
#define ATH_FF_MAX_HDR_PAD 4
#define ATH_FF_MAX_SEP_PAD 6
#define ATH_FF_MAX_HDR 30
#define ATH_FF_PROTO_L2TUNNEL 0 /* L2 tunnel protocol */
#define ATH_FF_ETH_TYPE 0x88bd /* Ether type for encapsulated frames */
#define ATH_FF_SNAP_ORGCODE_0 0x00
#define ATH_FF_SNAP_ORGCODE_1 0x03
#define ATH_FF_SNAP_ORGCODE_2 0x7f
#define ETHER_HEADER_COPY(dst, src) \
memcpy(dst, src, sizeof(struct ether_header))

View File

@ -31,6 +31,32 @@
* Atheros' 802.11 SuperG protocol support.
*/
/*
* Atheros advanced capability information element.
*/
struct ieee80211_ath_ie {
uint8_t ath_id; /* IEEE80211_ELEMID_VENDOR */
uint8_t ath_len; /* length in bytes */
uint8_t ath_oui[3]; /* ATH_OUI */
uint8_t ath_oui_type; /* ATH_OUI_TYPE */
uint8_t ath_oui_subtype; /* ATH_OUI_SUBTYPE */
uint8_t ath_version; /* spec revision */
uint8_t ath_capability; /* capability info */
#define ATHEROS_CAP_TURBO_PRIME 0x01 /* dynamic turbo--aka Turbo' */
#define ATHEROS_CAP_COMPRESSION 0x02 /* data compression */
#define ATHEROS_CAP_FAST_FRAME 0x04 /* fast (jumbo) frames */
#define ATHEROS_CAP_XR 0x08 /* Xtended Range support */
#define ATHEROS_CAP_AR 0x10 /* Advanded Radar support */
#define ATHEROS_CAP_BURST 0x20 /* Bursting - not negotiated */
#define ATHEROS_CAP_WME 0x40 /* CWMin tuning */
#define ATHEROS_CAP_BOOST 0x80 /* use turbo/!turbo mode */
uint8_t ath_defkeyix[2];
} __packed;
#define ATH_OUI_VERSION 0x00
#define ATH_OUI_SUBTYPE 0x01
#ifdef _KERNEL
void ieee80211_superg_attach(struct ieee80211com *);
void ieee80211_superg_detach(struct ieee80211com *);
void ieee80211_superg_vattach(struct ieee80211vap *);
@ -54,4 +80,5 @@ ieee80211_decap_fastframe(struct ieee80211vap *vap, struct ieee80211_node *ni,
return IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF) ?
ieee80211_ff_decap(ni, m) : m;
}
#endif /* _KERNEL */
#endif /* _NET80211_IEEE80211_SUPERG_H_ */

View File

@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
* IEEE 802.11 TDMA mode support.
*/
#include "opt_inet.h"
#include "opt_tdma.h"
#include "opt_wlan.h"
#include <sys/param.h>
@ -59,7 +60,6 @@ __FBSDID("$FreeBSD$");
#include <net80211/ieee80211_tdma.h>
#include <net80211/ieee80211_input.h>
#include "opt_tdma.h"
#ifndef TDMA_SLOTLEN_DEFAULT
#define TDMA_SLOTLEN_DEFAULT 10*1000 /* 10ms */
#endif
@ -94,6 +94,16 @@ __FBSDID("$FreeBSD$");
#define TDMA_TXRATE_11NG_DEFAULT (4 | IEEE80211_RATE_MCS)
#endif
#define TDMA_VERSION_VALID(_version) \
(TDMA_VERSION_V2 <= (_version) && (_version) <= TDMA_VERSION)
#define TDMA_SLOTCNT_VALID(_slotcnt) \
(2 <= (_slotcnt) && (_slotcnt) <= TDMA_MAXSLOTS)
/* XXX magic constants */
#define TDMA_SLOTLEN_VALID(_slotlen) \
(2*100 <= (_slotlen) && (unsigned)(_slotlen) <= 0xfffff)
/* XXX probably should set a max */
#define TDMA_BINTVAL_VALID(_bintval) (1 <= (_bintval))
static void tdma_vdetach(struct ieee80211vap *vap);
static int tdma_newstate(struct ieee80211vap *, enum ieee80211_state, int);
static void tdma_beacon_miss(struct ieee80211vap *vap);

View File

@ -31,6 +31,39 @@
/*
* TDMA-mode implementation definitions.
*/
#define TDMA_SUBTYPE_PARAM 0x01
#define TDMA_VERSION_V2 2
#define TDMA_VERSION TDMA_VERSION_V2
/* NB: we only support 2 right now but protocol handles up to 8 */
#define TDMA_MAXSLOTS 2 /* max slots/sta's */
#define TDMA_PARAM_LEN_V2 sizeof(struct ieee80211_tdma_param)
/*
* TDMA information element.
*/
struct ieee80211_tdma_param {
u_int8_t tdma_id; /* IEEE80211_ELEMID_VENDOR */
u_int8_t tdma_len;
u_int8_t tdma_oui[3]; /* TDMA_OUI */
u_int8_t tdma_type; /* TDMA_OUI_TYPE */
u_int8_t tdma_subtype; /* TDMA_SUBTYPE_PARAM */
u_int8_t tdma_version; /* spec revision */
u_int8_t tdma_slot; /* station slot # [0..7] */
u_int8_t tdma_slotcnt; /* bss slot count [1..8] */
u_int16_t tdma_slotlen; /* bss slot len (100us) */
u_int8_t tdma_bintval; /* beacon interval (superframes) */
u_int8_t tdma_inuse[1]; /* slot occupancy map */
u_int8_t tdma_pad[2];
u_int8_t tdma_tstamp[8]; /* timestamp from last beacon */
} __packed;
#ifdef _KERNEL
/*
* Implementation state.
*/
struct ieee80211_tdma_state {
u_int tdma_slotlen; /* bss slot length (us) */
uint8_t tdma_version; /* protocol version to use */
@ -65,4 +98,5 @@ uint8_t *ieee80211_add_tdma(uint8_t *frm, struct ieee80211vap *vap);
struct ieee80211_beacon_offsets;
void ieee80211_tdma_update_beacon(struct ieee80211vap *vap,
struct ieee80211_beacon_offsets *bo);
#endif /* _KERNEL */
#endif /* !_NET80211_IEEE80211_TDMA_H_ */