Author: colin Date: 2010-02-22 22:30:37 +0100 (Mon, 22 Feb 2010) New Revision: 35579 Changeset: http://dev.haiku-os.org/changeset/35579/haiku Added: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.cpp haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.h Removed: 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 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.h haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/Jamfile Log: Renamed FragmentateService to FragmentService after finishing research on the meaning of "fragmentate": to break into pieces esp. explosively. Source: Webster's third new international dictionary of the english language unabridged with seven language dictionary. Volume I. A to G. Encyclopedia britannica inc. Chicago, Auckland, Geneva et al. 1961. So fragmentation of Frames definitely isn't explosive. Usage example: "they were sure the master rods on the engines were all fragmentating" David Beaty 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-02-22 21:19:42 UTC (rev 35578) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.cpp 2010-02-22 21:30:37 UTC (rev 35579) @@ -36,5 +36,5 @@ status_t Roster::AddManagementFrame(MacManagement::Frame* frame) { - return fFragmentateService.Process(frame); + return fFragmentService.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-02-22 21:19:42 UTC (rev 35578) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/Roster.h 2010-02-22 21:30:37 UTC (rev 35579) @@ -9,7 +9,7 @@ #include <SupportDefs.h> #include <mac_management/frames/Frame.h> -#include <mpdu_coordination/services/FragmentateService.h> +#include <mpdu_coordination/services/FragmentService.h> namespace Ieee80211 { @@ -20,10 +20,10 @@ class MpduCoordination::Roster { public: - status_t AddManagementFrame(MacManagement::Frame*); + status_t AddManagementFrame(MacManagement::Frame*); private: - FragmentateService fFragmentateService; + FragmentService fFragmentService; }; } /* namespace Ieee80211 */ Copied: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.cpp (from rev 35416, 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/FragmentService.cpp (rev 0) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.cpp 2010-02-22 21:30:37 UTC (rev 35579) @@ -0,0 +1,130 @@ +/* + * 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 Std 802.11-2007, Section 9.4 "Fragmentation". + \sa IEEE Std 802.11-2007, Annex C.3 "State machines for MAC STAs", page 845. + */ + + +#include <mpdu_coordination/services/FragmentService.h> + + +using namespace Ieee80211::MpduCoordination; + + +/* #pragma mark - service interface implementation */ + + +/*! Process a mac data frame. + Successful return of this method does only mean, that the service is going + to process the frame, 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 +FragmentService::Process(MacData::Frame* frame) +{ + return fProcessDataFrameQueue.Enqueue(frame); +} + + +/*! Process a mac management frame. + Successful return of this method does only mean, that the service is going + to process the frame, 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 +FragmentService::Process(MacManagement::Frame* frame) +{ + return fProcessManagementFrameQueue.Enqueue(frame); +} + + +/*! Puts the service for processing mac data frames in its run state. + + \param dummy never used. This is only required to allow different _Run() + methods per service in a common way. + \return B_OK The service terminated gracefully. + \return Else Unrecoverable error during service execution. + */ +status_t +FragmentService::_Run(MacData::Frame* dummy) +{ + MacData::Frame* frame = NULL; + status_t status = B_OK; + + do { + status = fProcessDataFrameQueue.Dequeue(&frame); + if (status != B_OK) + break; + + status = _FragmentAndEncryptFragments(frame); + } while (status == B_OK); + + return status; +} + + +/*! Puts the service for processing mac management frames in its run state. + + \param dummy never used. This is only required to allow different _Run() + methods per service in a common way. + \return B_OK The service terminated gracefully. + \return Else Unrecoverable error during service execution. + */ +status_t +FragmentService::_Run(MacManagement::Frame* dummy) +{ + return B_OK; +} + + +/* #pragma mark - private */ + + +/*! If frame length is greater than dot11FragmentationThreshold divide the frame + in multiple frames of length dot11FragmentationThreshold. + Hand the fragments over to the distribution coordinate service afterwards. + + \param frame to be fragmented eventually and distributed afterwards. + \return B_OK The frame was successfully handed over to the distribution + coordination stage. + \return Else The frame wasn't processed, due to an unrecoverable error. + */ +status_t +FragmentService::_FragmentAndDistributeFragments(Frame* frame) +{ + return B_OK; +} + + +/*! If frame length is greater than dot11FragmentationThreshold divide the frame + in multiple frames of length dot11FragmentationThreshold. + Encrypt the frame/frames afterwards. + + \param frame to be fragmented eventually and encrypted afterwards. + \return B_OK The frame was successfully handed over to the encryption + stage. + \return Else The frame wasn't processed, due to an unrecoverable error. + */ +status_t +FragmentService::_FragmentAndEncryptFragments(Frame* frame) +{ + return fEncryptService.Process(frame); +} Property changes on: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.cpp ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.h (from rev 35416, 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/FragmentService.h (rev 0) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/FragmentService.h 2010-02-22 21:30:37 UTC (rev 35579) @@ -0,0 +1,45 @@ +/* + * 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 <mac_data/frames/Frame.h> +#include <mac_management/frames/Frame.h> +#include <mpdu_coordination/services/EncryptService.h> +#include <utilities/Queue.h> + + +namespace Ieee80211 { +namespace MpduCoordination { +class FragmentService; +} /* namespace MpduCoordination */ + + +class MpduCoordination::FragmentService + : public Service<MacData::Frame>, public Service<MacManagement::Frame> { +public: + virtual status_t Process(MacData::Frame*); + virtual status_t Process(MacManagement::Frame*); + +private: + virtual status_t _Run(MacData::Frame*); + virtual status_t _Run(MacManagement::Frame*); + + status_t _FragmentAndDistributeFragments(Frame*); + status_t _FragmentAndEncryptFragments(Frame*); + + EncryptService fEncryptService; + Queue<MacData::Frame> fProcessDataFrameQueue; + Queue<MacManagement::Frame> fProcessManagementFrameQueue; +}; + +} /* 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/FragmentService.h ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: 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 2010-02-22 21:19:42 UTC (rev 35578) +++ haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/mpdu_coordination/services/Jamfile 2010-02-22 21:30:37 UTC (rev 35579) @@ -5,5 +5,5 @@ KernelMergeObject mpdu_coordination_services.o : EncryptService.cpp - FragmentateService.cpp + FragmentService.cpp ;