Author: colin Date: 2010-01-31 23:13:51 +0100 (Sun, 31 Jan 2010) New Revision: 35369 Changeset: http://dev.haiku-os.org/changeset/35369/haiku Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.cpp haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.h haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/Jamfile Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/interfaces/Service.h haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/AuthenticateService.cpp 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/mpdu_coordination/Jamfile 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.h Log: Integrating the fragmentation service, which will split large MAC Service Data Units (MSDUs) or MAC Managment Protocol Data Units (MMPDUs) into smaller pieces (MAC Protocol Data Units (MPDUs)) as defined by the 802.11 standard. Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/interfaces/Service.h =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/interfaces/Service.h 2010-01-31 21:27:14 UTC (rev 35368) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/interfaces/Service.h 2010-01-31 22:13:51 UTC (rev 35369) @@ -10,7 +10,6 @@ namespace Ieee80211 { -namespace MacManagement { template<class ServiceRequest> class Service { @@ -21,7 +20,6 @@ virtual status_t _Run() = 0; }; -} -} +} /* namespace Ieee80211 */ #endif /* IEEE80211_SERVICE_H_ */ Modified: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/AuthenticateService.cpp =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/AuthenticateService.cpp 2010-01-31 21:27:14 UTC (rev 35368) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/AuthenticateService.cpp 2010-01-31 22:13:51 UTC (rev 35369) @@ -11,6 +11,7 @@ Note: The 802.11 example implementation of this service processes deauthentication requests, too. Our services handle one request type only, which means that we use a dedicated deauthenticate service, instead. + \sa IEEE Standard 802.11-2007, Annex C.3 "State machines for MAC STAs", page 885 ff. */ @@ -33,7 +34,8 @@ \param request to be processed. \return B_OK Service is going to process the request. - \return Else Service can't process the request. + \return Else Service can't process the request, due to an unrecoverable + error. */ status_t AuthenticateService::Process(AuthenticateRequest* request) @@ -48,7 +50,7 @@ /*! Puts the service in its run state. \return B_OK The service terminated gracefully. - \return Else Error during service execution. + \return Else Unrecoverable error during service execution. */ status_t AuthenticateService::_Run() 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:27:14 UTC (rev 35368) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mac_management/services/DistributeService.cpp 2010-01-31 22:13:51 UTC (rev 35369) @@ -7,7 +7,7 @@ */ -/*! Implementation of the distribute Mac Managment Protocol Data Unit (MMPDU) +/*! Implementation of the distribute MAC Management Protocol Data Unit (MMPDU) service. \sa IEEE Standard 802.11-2007, Annex C.3 "State machines for MAC STAs", page 883 ff. @@ -24,12 +24,12 @@ /*! Process a frame. - Successful return of this method does only mean, that the service3 is going + Successful return of this method does only mean, that the service is going to process the request, not that it was processed already. \param frame to be processed. \return B_OK Service is going to process the frame. - \return Else Service can't process the frame. + \return Else Service can't process the frame, due to an unrecoverable error. */ status_t DistributeService::Process(Frame* frame) 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:27:14 UTC (rev 35368) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Jamfile 2010-01-31 22:13:51 UTC (rev 35369) @@ -5,4 +5,8 @@ KernelMergeObject mpdu_coordination.o : Roster.cpp + : : + mpdu_coordination_services.o ; + +HaikuSubInclude services ; \ No newline at end of file Modified: 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 2010-01-31 21:27:14 UTC (rev 35368) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp 2010-01-31 22:13:51 UTC (rev 35369) @@ -38,5 +38,5 @@ status_t Roster::AddManagementFrame(MacManagement::Frame* frame) { - return B_OK; + return fFragmentateService.Process(frame); } 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:27:14 UTC (rev 35368) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.h 2010-01-31 22:13:51 UTC (rev 35369) @@ -9,6 +9,7 @@ #include <SupportDefs.h> #include <mac_management/frames/Frame.h> +#include <mpdu_coordination/services/FragmentateService.h> namespace Ieee80211 { @@ -19,7 +20,10 @@ class MpduCoordination::Roster { public: - status_t AddManagementFrame(MacManagement::Frame*); + status_t AddManagementFrame(MacManagement::Frame*); + +private: + FragmentateService fFragmentateService; }; } /* namespace Ieee80211 */ Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.cpp =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.cpp (rev 0) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.cpp 2010-01-31 22:13:51 UTC (rev 35369) @@ -0,0 +1,54 @@ +/* + * Copyright 2010 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Colin Günther, coling@xxxxxx + */ + + +/*! Implementation of the frame fragmentation service. + This service fragments MAC Service Data Units (MSDUs) and MAC Management + Protocol Data Units (MMPDUs) into smaller units called MAC Protocol Data + Units (MPDU). + + \sa IEEE Standard 802.11-2007, section 9.4 "Fragmentation". + \sa IEEE Standard 802.11-2007 Annex C.3 "State machines for MAC STAs", + page 845. + */ + +#include <mpdu_coordination/services/FragmentateService.h> + + +using namespace Ieee80211; +using namespace MpduCoordination; + + +/* #pragma mark - service interface implementation */ + + +/*! Process a frame. + Successful return of this method does only mean, that the service is going + to process the request, not that it was processed already. + + \param frame to be processed. + \return B_OK Service is going to process the frame. + \return Else Service can't process the frame, due to an unrecoverable error. + */ +status_t +FragmentateService::Process(Frame* frame) +{ + return fProcessQueue.Enqueue(frame); +} + + +/*! Puts the service in its run state. + + \return B_OK The service terminated gracefully. + \return Else Unrecoverable error during service execution. + */ +status_t +FragmentateService::_Run() +{ + return B_OK; +} Property changes on: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.h =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.h (rev 0) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.h 2010-01-31 22:13:51 UTC (rev 35369) @@ -0,0 +1,34 @@ +/* + * Copyright 2010 Haiku Inc. All rights reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef IEEE80211_FRAGMENTATE_SERVICE_H_ +#define IEEE80211_FRAGMENTATE_SERVICE_H_ + + +#include <SupportDefs.h> + +#include <interfaces/Frame.h> +#include <interfaces/Service.h> +#include <utilities/Queue.h> + + +namespace Ieee80211 { +namespace MpduCoordination { +class FragmentateService; +} /* namespace MpduCoordination */ + + +class MpduCoordination::FragmentateService : public Service<Frame> { +public: + virtual status_t Process(Frame*); + +private: + virtual status_t _Run(); + + Queue<Frame> fProcessQueue; +}; + +} /* namespace Ieee80211 */ + +#endif /* IEEE80211_FRAGMENTATE_SERVICE_H_ */ Property changes on: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentateService.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/Jamfile =================================================================== --- haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/Jamfile (rev 0) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/Jamfile 2010-01-31 22:13:51 UTC (rev 35369) @@ -0,0 +1,8 @@ +SubDir HAIKU_TOP src add-ons kernel network devices ieee80211 stack + mpdu_coordination services ; + +UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ; + +KernelMergeObject mpdu_coordination_services.o : + FragmentateService.cpp + ;