Date: Sun, 4 Feb 2007 07:03:49 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 113984 for review Message-ID: <200702040703.l1473ncH012522@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=113984 Change 113984 by sam@sam_ebb on 2007/02/04 07:03:16 some small bits of 11n Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211.h#15 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211.h#15 (text+ko) ==== @@ -129,7 +129,9 @@ #define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0 #define IEEE80211_FC0_SUBTYPE_AUTH 0xb0 #define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0 +#define IEEE80211_FC0_SUBTYPE_ACTION 0xd0 /* for TYPE_CTL */ +#define IEEE80211_FC0_SUBTYPE_BAR 0x80 #define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0 #define IEEE80211_FC0_SUBTYPE_RTS 0xb0 #define IEEE80211_FC0_SUBTYPE_CTS 0xc0 @@ -233,6 +235,7 @@ } __packed; #define WME_NUM_AC 4 /* 4 AC categories */ +#define WME_NUM_TID 16 /* 16 tids */ #define WME_PARAM_ACI 0x60 /* Mask for ACI field */ #define WME_PARAM_ACI_S 5 /* Shift for ACI field */ @@ -286,6 +289,103 @@ #define MNF_SETUP_RESP 1 #define MNF_TEARDOWN 2 +/* + * 802.11n Management Action Frames + */ +/* generic frame format */ +struct ieee80211_action { + u_int8_t ia_category; + u_int8_t ia_action; +} __packed; + +#define IEEE80211_ACTION_CAT_QOS 0 /* QoS */ +#define IEEE80211_ACTION_CAT_BA 3 /* BA */ +#define IEEE80211_ACTION_CAT_HT 5 /* HT */ + +#define IEEE80211_ACTION_HT_TXCHWIDTH 0 /* recommended xmit chan width*/ +#define IEEE80211_ACTION_HT_MIMOPWRSAVE 1 /* MIMO power save */ + +/* HT - recommended transmission channel width */ +struct ieee80211_action_ht_txchwidth { + struct ieee80211_action at_header; + u_int8_t at_chwidth; +} __packed; + +#define IEEE80211_A_HT_TXCHWIDTH_20 0 +#define IEEE80211_A_HT_TXCHWIDTH_2040 1 + +/* HT - MIMO Power Save */ +struct ieee80211_action_ht_mimopowersave { + struct ieee80211_action am_header; + u_int8_t am_enable; + u_int8_t am_mode; +} __packed; + +/* Block Ack actions */ +#define IEEE80211_ACTION_BA_ADDBA_REQUEST 0 /* ADDBA request */ +#define IEEE80211_ACTION_BA_ADDBA_RESPONSE 1 /* ADDBA response */ +#define IEEE80211_ACTION_BA_DELBA 2 /* DELBA */ + +/* Block Ack Parameter Set */ +#define IEEE80211_BAPS_BUFSIZ 0xffc0 /* buffer size */ +#define IEEE80211_BAPS_BUFSIZ_S 6 +#define IEEE80211_BAPS_TID 0x003c /* TID */ +#define IEEE80211_BAPS_TID_S 2 +#define IEEE80211_BAPS_POLICY 0x0002 /* block ack policy */ +#define IEEE80211_BAPS_POLICY_S 1 + +#define IEEE80211_BAPS_POLICY_DELAYED (0<<IEEE80211_BAPS_POLICY_S) +#define IEEE80211_BAPS_POLICY_IMMEDIATE (1<<IEEE80211_BAPS_POLICY_S) + +/* Block Ack Sequence Control */ +#define IEEE80211_BASEQ_START 0xfff0 /* starting seqnum */ +#define IEEE80211_BASEQ_START_S 4 +#define IEEE80211_BASEQ_FRAG 0x000f /* fragment number */ +#define IEEE80211_BASEQ_FRAG_S 0 + +/* Delayed Block Ack Parameter Set */ +#define IEEE80211_DELBAPS_TID 0xf000 /* TID */ +#define IEEE80211_DELBAPS_TID_S 12 +#define IEEE80211_DELBAPS_INIT 0x0800 /* initiator */ +#define IEEE80211_DELBAPS_INIT_S 11 + +/* BA - ADDBA request */ +struct ieee80211_action_ba_addbarequest { + struct ieee80211_action rq_header; + u_int8_t rq_dialogtoken; + u_int16_t rq_baparamset; + u_int16_t rq_batimeout; /* in TUs */ + u_int16_t rq_baseqctl; +} __packed; + +/* BA - ADDBA response */ +struct ieee80211_action_ba_addbaresponse { + struct ieee80211_action rs_header; + u_int8_t rs_dialogtoken; + u_int16_t rs_statuscode; + u_int16_t rs_baparamset; + u_int16_t rs_batimeout; /* in TUs */ +} __packed; + +/* BA - DELBA */ +struct ieee80211_action_ba_delba { + struct ieee80211_action dl_header; + u_int16_t dl_delbaparamset; + u_int16_t dl_reasoncode; +} __packed; + +/* BAR Control */ +#define IEEE80211_BAR_TID 0xf000 /* TID */ +#define IEEE80211_BAR_TID_S 12 +#define IEEE80211_BAR_COMP 0x0004 /* compressed */ +#define IEEE80211_BAR_MTID 0x0002 +#define IEEE80211_BAR_NOACK 0x0001 /* no-ack policy */ + +struct ieee80211_ba_request { + u_int16_t rq_barctl; + u_int16_t rq_barseqctl; +} __packed; + /* * Control frames. */ @@ -335,6 +435,16 @@ /* FCS */ } __packed; +struct ieee80211_frame_bar { + u_int8_t i_fc[2]; + u_int8_t i_dur[2]; + u_int8_t i_ra[IEEE80211_ADDR_LEN]; + u_int8_t i_ta[IEEE80211_ADDR_LEN]; + u_int16_t i_ctl; + u_int16_t i_seq; + /* FCS */ +} __packed; + /* * BEACON management packets *
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200702040703.l1473ncH012522>