Author: colin Date: 2010-01-31 22:12:30 +0100 (Sun, 31 Jan 2010) New Revision: 35365 Changeset: http://dev.haiku-os.org/changeset/35365/haiku Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.cpp haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.h haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Jamfile haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.h Log: Integrate the MAC Protocol Data Unit coordination system. Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile 2010-01-31 21:00:29 UTC (rev 35364) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile 2010-01-31 21:12:30 UTC (rev 35365) @@ -11,6 +11,7 @@ Stack.cpp : : mac_management.o + mpdu_coordination.o station_management.o utilities.o ; Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.cpp =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.cpp 2010-01-31 21:00:29 UTC (rev 35364) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.cpp 2010-01-31 21:12:30 UTC (rev 35365) @@ -17,8 +17,7 @@ #include <mac_management/services/DistributeService.h> -using namespace Ieee80211; -using namespace MacManagement; +using namespace Ieee80211::MacManagement; // #pragma mark - service interface implementation @@ -35,7 +34,7 @@ status_t DistributeService::Process(Frame* frame) { - return B_OK; + return fProcessQueue.Enqueue(frame); } @@ -47,7 +46,18 @@ status_t DistributeService::_Run() { - return B_OK; + Frame* frame = NULL; + status_t status = B_OK; + + do { + status = fProcessQueue.Dequeue(&frame); + if (status != B_OK) + break; + + status = fMpduRoster.AddManagementFrame(frame); + } while (status == B_OK); + + return status; } Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.h =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.h 2010-01-31 21:00:29 UTC (rev 35364) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.h 2010-01-31 21:12:30 UTC (rev 35365) @@ -10,23 +10,28 @@ #include <interfaces/Service.h> #include <mac_management/frames/Frame.h> +#include <mpdu_coordination/Roster.h> #include <utilities/Observable.h> #include <utilities/Observer.h> +#include <utilities/Queue.h> namespace Ieee80211 { namespace MacManagement { class DistributeService : public Service<Frame>, public Observable { public: - virtual status_t Process(Frame*); + virtual status_t Process(Frame*); - virtual status_t AddObserverForEvent(Observer*, Event*); + virtual status_t AddObserverForEvent(Observer*, Event*); private: - virtual status_t _Run(); + virtual status_t _Run(); - virtual bool _IsEventSupported(Event*); - virtual bool _IsObserverSupported(Observer*); + virtual bool _IsEventSupported(Event*); + virtual bool _IsObserverSupported(Observer*); + + Queue<Frame> fProcessQueue; + MpduCoordination::Roster fMpduRoster; }; } /* namespace MacManagement */ } /* namespace Ieee80211 */ Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Jamfile =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Jamfile 2010-01-31 21:00:29 UTC (rev 35364) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Jamfile 2010-01-31 21:12:30 UTC (rev 35365) @@ -2,3 +2,7 @@ mpdu_coordination ; UseHeaders [ FDirName $(SUBDIR) .. ] : true ; + +KernelMergeObject mpdu_coordination.o : + Roster.cpp + ; Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp (rev 0) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp 2010-01-31 21:12:30 UTC (rev 35365) @@ -0,0 +1,42 @@ +/* + * Copyright 2010 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Colin Günther, coling@xxxxxx + */ + + +/*! Implementation of the MAC Protocol Data Unit (MPDU) Generation + state machine. + The IEEE 802.11 formal description of MPDU Generation puts fragmentation and + encryption services here, only. But the below implementation provides their + counterparts defragmentation and decryption, too. Thus it is more + appropriate of calling this entity MPDU Coordination. + + \sa IEEE Standard 802.11-2007, Annex C.3 "State machines for MAC STAs", + page 837 + */ + + +#include <mpdu_coordination/Roster.h> + + +using namespace Ieee80211; +using namespace Ieee80211::MpduCoordination; + + +/*! Handling over a new management frame to the MAC Protocol Data Unit (MPDU) + Coordination. + Successful completion of this method does only mean that the MPDU + coordinator will try to send the frame, not that it was sent already. + + \param frame to be sent by the MPDU Coordinator. + \return B_OK MPDU coordinator will try to send the frame. + \return Else MPDU coordinator will not try to send the frame. + */ +status_t +Roster::AddManagementFrame(MacManagement::Frame* frame) +{ + return B_OK; +} Property changes on: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.h =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.h 2010-01-31 21:00:29 UTC (rev 35364) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.h 2010-01-31 21:12:30 UTC (rev 35365) @@ -6,6 +6,8 @@ #define IEEE80211_ROSTER_H_ +#include <SupportDefs.h> + #include <mac_management/frames/Frame.h>