[Gd-chatter] r11622 - trunk/libraries/protocols
lobo at gwydiondylan.org
lobo at gwydiondylan.org
Mon Jan 14 21:46:13 CET 2008
Author: lobo
Date: Mon Jan 14 21:46:13 2008
New Revision: 11622
Modified:
trunk/libraries/protocols/ieee80211.dylan
Log:
Bug: 7299
added 802.11e qos-control field support to data frames
Modified: trunk/libraries/protocols/ieee80211.dylan
==============================================================================
--- trunk/libraries/protocols/ieee80211.dylan (original)
+++ trunk/libraries/protocols/ieee80211.dylan Mon Jan 14 21:46:13 2008
@@ -30,6 +30,13 @@
define constant $cf-ack-no-data = #b0101;
define constant $cf-poll-no-data = #b0110;
define constant $cf-ack-cf-poll-no-data = #b0111;
+define constant $qos-data = #b1000;
+define constant $qos-data-cf-ack = #b1001;
+define constant $qos-data-cf-poll = #b1010;
+define constant $qos-data-cf-ack-cf-poll = #b1011;
+define constant $qos-null-function = #b1100;
+define constant $qos-cf-poll-no-data = #b1110;
+define constant $qos-cf-ack-cf-poll-no-data = #b1111;
// control frame subtypes
define constant $power-save-poll = #b1010;
@@ -339,6 +346,9 @@
=> <link-control>;
$data-null-function, $cf-poll-no-data, $cf-ack-no-data, $cf-ack-cf-poll-no-data
=> <ieee80211-null-function>;
+ $qos-data, $qos-data-cf-ack, $qos-data-cf-poll, $qos-data-cf-ack-cf-poll,
+ $qos-null-function, $qos-cf-poll-no-data, $qos-cf-ack-cf-poll-no-data
+ => <ieee80211-qos-control>;
otherwise signal(make(<malformed-packet-error>));
end select;
end;
@@ -348,6 +358,24 @@
field no-data :: <raw-frame> = $empty-raw-frame; // there should be no data
end;
+define protocol ieee80211-qos-control (header-frame)
+ summary "QOS-CONTROL";
+ field traffic-identifier :: <4bit-unsigned-integer>;
+ field end-of-service-period :: <1bit-unsigned-integer>;
+ field ack-policy :: <2bit-unsigned-integer>;
+ field reserved :: <1bit-unsigned-integer>;
+ field transmit-opportunity :: <unsigned-byte>;
+ variably-typed-field payload,
+ type-function:
+ select (frame.parent.frame-control.subtype)
+ $qos-null-function, $qos-cf-poll-no-data, $qos-cf-ack-cf-poll-no-data
+ => <ieee80211-null-function>;
+ $qos-data, $qos-data-cf-ack, $qos-data-cf-poll, $qos-data-cf-ack-cf-poll
+ => <link-control>;
+ otherwise signal(make(<malformed-packet-error>));
+ end select;
+end;
+
/*
define protocol ieee80211-data (header-frame)
summary "%s", compose(summary, payload);
More information about the chatter
mailing list