]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/bcm/cntrl_SignalingInterface.h
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / staging / bcm / cntrl_SignalingInterface.h
diff --git a/drivers/staging/bcm/cntrl_SignalingInterface.h b/drivers/staging/bcm/cntrl_SignalingInterface.h
new file mode 100644 (file)
index 0000000..4cbe300
--- /dev/null
@@ -0,0 +1,677 @@
+#ifndef CNTRL_SIGNALING_INTERFACE_
+#define CNTRL_SIGNALING_INTERFACE_
+
+
+#ifdef BECEEM_TARGET
+
+#include <mac_common.h>
+#include <msg_Dsa.h>
+#include <msg_Dsc.h>
+#include <msg_Dsd.h>
+#include <sch_definitions.h>
+using namespace Beceem;
+#ifdef ENABLE_CORRIGENDUM2_UPDATE
+extern B_UINT32 g_u32Corr2MacFlags;
+#endif
+
+#else
+
+
+#define DSA_REQ 11
+#define DSA_RSP 12
+#define DSA_ACK 13
+#define DSC_REQ 14
+#define DSC_RSP 15
+#define DSC_ACK 16
+#define DSD_REQ 17
+#define DSD_RSP 18
+#define DSD_ACK 19
+#define MAX_CLASSIFIERS_IN_SF  4
+
+#endif
+
+#define MAX_STRING_LEN 20
+#define MAX_PHS_LENGTHS 255
+#define VENDOR_PHS_PARAM_LENGTH 10
+#define MAX_NUM_ACTIVE_BS 10
+#define AUTH_TOKEN_LENGTH      10
+#define NUM_HARQ_CHANNELS      16      //Changed from 10 to 16 to accomodate all HARQ channels
+#define VENDOR_CLASSIFIER_PARAM_LENGTH 1 //Changed the size to 1 byte since we dnt use it
+#define  VENDOR_SPECIF_QOS_PARAM 1
+#define VENDOR_PHS_PARAM_LENGTH        10
+#define MBS_CONTENTS_ID_LENGTH 10
+#define GLOBAL_SF_CLASSNAME_LENGTH 6
+
+#define TYPE_OF_SERVICE_LENGTH                         3
+#define IP_MASKED_SRC_ADDRESS_LENGTH                   32
+#define IP_MASKED_DEST_ADDRESS_LENGTH          32
+#define PROTOCOL_SRC_PORT_RANGE_LENGTH         4
+#define PROTOCOL_DEST_PORT_RANGE_LENGTH                4
+#define ETHERNET_DEST_MAC_ADDR_LENGTH          12
+#define ETHERNET_SRC_MAC_ADDR_LENGTH           12
+#define NUM_ETHERTYPE_BYTES  3
+#define NUM_IPV6_FLOWLABLE_BYTES 3
+
+
+////////////////////////////////////////////////////////////////////////////////
+////////////////////////structure Definitions///////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
+/// \brief class cCPacketClassificationRule
+#ifdef BECEEM_TARGET
+class CCPacketClassificationRuleSI{
+       public:
+               /// \brief Constructor for the class
+       CCPacketClassificationRuleSI():
+               u8ClassifierRulePriority(mClassifierRulePriority),
+               u8IPTypeOfServiceLength(mIPTypeOfService),
+               u8Protocol(mProtocol),
+               u8IPMaskedSourceAddressLength(0),
+               u8IPDestinationAddressLength(0),
+               u8ProtocolSourcePortRangeLength(0),
+               u8ProtocolDestPortRangeLength(0),
+               u8EthernetDestMacAddressLength(0),
+               u8EthernetSourceMACAddressLength(0),
+               u8EthertypeLength(0),
+               u16UserPriority(mUserPriority),
+               u16VLANID(mVLANID),
+               u8AssociatedPHSI(mAssociatedPHSI),
+               u16PacketClassificationRuleIndex(mPacketClassifierRuleIndex),
+               u8VendorSpecificClassifierParamLength(mVendorSpecificClassifierParamLength),
+               u8IPv6FlowLableLength(mIPv6FlowLableLength),
+               u8ClassifierActionRule(mClassifierActionRule)
+
+               {}
+              void Reset()
+              {
+                    CCPacketClassificationRuleSI();
+              }
+#else
+struct _stCPacketClassificationRuleSI{
+#endif
+
+       /**  16bit UserPriority Of The Service Flow*/
+    B_UINT16                        u16UserPriority;
+       /**  16bit VLANID Of The Service Flow*/
+    B_UINT16                        u16VLANID;
+       /**  16bit Packet Classification RuleIndex Of The Service Flow*/
+    B_UINT16                        u16PacketClassificationRuleIndex;
+       /**  8bit Classifier Rule Priority Of The Service Flow*/
+    B_UINT8                         u8ClassifierRulePriority;
+       /**  Length of IP TypeOfService field*/
+       B_UINT8                         u8IPTypeOfServiceLength;
+       /**  3bytes IP TypeOfService */
+    B_UINT8                         u8IPTypeOfService[TYPE_OF_SERVICE_LENGTH];
+       /** Protocol used in classification of Service Flow*/
+    B_UINT8                         u8Protocol;
+       /**  Length of IP Masked Source Address */
+    B_UINT8                         u8IPMaskedSourceAddressLength;
+       /**  IP Masked Source Address used in classification for the Service Flow*/
+    B_UINT8                         u8IPMaskedSourceAddress[IP_MASKED_SRC_ADDRESS_LENGTH];
+       /**  Length of IP Destination Address */
+    B_UINT8                         u8IPDestinationAddressLength;
+       /**  IP Destination Address used in classification for the Service Flow*/
+    B_UINT8                         u8IPDestinationAddress[IP_MASKED_DEST_ADDRESS_LENGTH];
+       /** Length of Protocol Source Port Range */
+    B_UINT8                         u8ProtocolSourcePortRangeLength;
+       /**  Protocol Source Port Range used in the Service Flow*/
+    B_UINT8                         u8ProtocolSourcePortRange[PROTOCOL_SRC_PORT_RANGE_LENGTH];
+       /** Length of Protocol Dest Port Range */
+    B_UINT8                         u8ProtocolDestPortRangeLength;
+       /**  Protocol Dest Port Range used in the Service Flow*/
+    B_UINT8                         u8ProtocolDestPortRange[PROTOCOL_DEST_PORT_RANGE_LENGTH];
+       /** Length of Ethernet Destination MAC Address  */
+    B_UINT8                         u8EthernetDestMacAddressLength;
+       /**  Ethernet Destination MAC Address  used in classification of the Service Flow*/
+    B_UINT8                         u8EthernetDestMacAddress[ETHERNET_DEST_MAC_ADDR_LENGTH];
+       /** Length of Ethernet Source MAC Address  */
+    B_UINT8                         u8EthernetSourceMACAddressLength;
+       /**  Ethernet Source MAC Address  used in classification of the Service Flow*/
+    B_UINT8                         u8EthernetSourceMACAddress[ETHERNET_SRC_MAC_ADDR_LENGTH];
+       /**  Length of Ethertype */
+       B_UINT8                         u8EthertypeLength;
+       /**  3bytes Ethertype Of The Service Flow*/
+    B_UINT8                         u8Ethertype[NUM_ETHERTYPE_BYTES];
+       /**  8bit Associated PHSI Of The Service Flow*/
+    B_UINT8                         u8AssociatedPHSI;
+       /** Length of Vendor Specific Classifier Param length Of The Service Flow*/
+    B_UINT8                         u8VendorSpecificClassifierParamLength;
+       /**  Vendor Specific Classifier Param Of The Service Flow*/
+    B_UINT8                         u8VendorSpecificClassifierParam[VENDOR_CLASSIFIER_PARAM_LENGTH];
+    /** Length Of IPv6 Flow Lable of the Service Flow*/
+    B_UINT8                         u8IPv6FlowLableLength;
+       /**  IPv6 Flow Lable Of The Service Flow*/
+    B_UINT8                         u8IPv6FlowLable[NUM_IPV6_FLOWLABLE_BYTES];
+       /**  Action associated with the classifier rule*/
+    B_UINT8                                                    u8ClassifierActionRule;
+    B_UINT16                                                   u16ValidityBitMap;
+};
+#ifndef BECEEM_TARGET
+typedef struct _stCPacketClassificationRuleSI CCPacketClassificationRuleSI,stCPacketClassificationRuleSI, *pstCPacketClassificationRuleSI;
+#endif
+
+/// \brief class CPhsRuleSI
+#ifdef BECEEM_TARGET
+class CPhsRuleSI{
+       public:
+               /// \brief Constructor for the class
+               CPhsRuleSI():
+                       u8PHSI(mPHSI),
+                       u8PHSFLength(0),
+                       u8PHSMLength(0),
+                       u8PHSS(mPHSS),
+                       u8PHSV(mPHSV),
+                       u8VendorSpecificPHSParamsLength(mVendorSpecificPHSParamLength){}
+                void Reset()
+                {
+                       CPhsRuleSI();
+                }
+#else
+typedef struct _stPhsRuleSI {
+#endif
+       /**  8bit PHS Index Of The Service Flow*/
+    B_UINT8                         u8PHSI;
+       /**  PHSF Length Of The Service Flow*/
+    B_UINT8                         u8PHSFLength;
+    /** String of bytes containing header information to be supressed by the sending CS and reconstructed by the receiving CS*/
+    B_UINT8                         u8PHSF[MAX_PHS_LENGTHS];
+       /**  PHSM Length Of The Service Flow*/
+    B_UINT8                         u8PHSMLength;
+       /**  PHS Mask for the SF*/
+    B_UINT8                         u8PHSM[MAX_PHS_LENGTHS];
+       /**  8bit Total number of bytes to be supressed for the Service Flow*/
+    B_UINT8                         u8PHSS;
+       /**  8bit Indicates whether or not Packet Header contents need to be verified prior to supression */
+    B_UINT8                         u8PHSV;
+       /**  Vendor Specific PHS param Length Of The Service Flow*/
+    B_UINT8                         u8VendorSpecificPHSParamsLength;
+       /**  Vendor Specific PHS param Of The Service Flow*/
+    B_UINT8                         u8VendorSpecificPHSParams[VENDOR_PHS_PARAM_LENGTH];
+
+       B_UINT8                         u8Padding[2];
+#ifdef BECEEM_TARGET
+};
+#else
+}stPhsRuleSI,*pstPhsRuleSI;
+typedef stPhsRuleSI CPhsRuleSI;
+#endif
+
+/// \brief structure cConvergenceSLTypes
+#ifdef BECEEM_TARGET
+class CConvergenceSLTypes{
+       public:
+               /// \brief Constructor for the class
+               CConvergenceSLTypes():
+               u8ClassfierDSCAction(mClassifierDSCAction),
+               u8PhsDSCAction  (mPhsDSCAction)
+               {}
+              void Reset()
+              {
+                    CConvergenceSLTypes();
+                    cCPacketClassificationRule.Reset();
+                    cPhsRule.Reset();
+              }
+#else
+struct _stConvergenceSLTypes{
+#endif
+       /**  8bit Phs Classfier Action Of The Service Flow*/
+    B_UINT8                         u8ClassfierDSCAction;
+       /**  8bit Phs DSC Action Of The Service Flow*/
+    B_UINT8                         u8PhsDSCAction;
+       /**   16bit Padding */
+    B_UINT8                         u8Padding[2];
+    /// \brief class cCPacketClassificationRule
+#ifdef BECEEM_TARGET
+    CCPacketClassificationRuleSI      cCPacketClassificationRule;
+#else
+    stCPacketClassificationRuleSI     cCPacketClassificationRule;
+#endif
+    /// \brief class CPhsRuleSI
+#ifdef BECEEM_TARGET
+    CPhsRuleSI                         cPhsRule;
+#else
+     struct _stPhsRuleSI               cPhsRule;
+#endif
+};
+#ifndef BECEEM_TARGET
+typedef struct _stConvergenceSLTypes stConvergenceSLTypes,CConvergenceSLTypes, *pstConvergenceSLTypes;
+#endif
+
+
+/// \brief structure CServiceFlowParamSI
+#ifdef BECEEM_TARGET
+class CServiceFlowParamSI{
+       public:
+               /// \brief Constructor for the class
+               CServiceFlowParamSI():
+                       u32SFID(mSFid),
+                       u16CID(mCid),
+                       u8ServiceClassNameLength(mServiceClassNameLength),
+                       u8MBSService(mMBSService),
+                       u8QosParamSet(mQosParamSetType),
+                       u8TrafficPriority(mTrafficPriority),
+                       u32MaxSustainedTrafficRate(mMaximumSustainedTrafficRate),
+                       u32MaxTrafficBurst(mMaximumTrafficBurst),
+                       u32MinReservedTrafficRate(mMinimumReservedTrafficRate),
+                       u8ServiceFlowSchedulingType(mServiceFlowSchedulingType),
+                       u8RequesttransmissionPolicy(mRequestTransmissionPolicy),
+                       u32ToleratedJitter(mToleratedJitter),
+                       u32MaximumLatency(mMaximumLatency),
+                       u8FixedLengthVSVariableLengthSDUIndicator
+                       (mFixedLengthVSVariableLength),
+                       u8SDUSize(mSDUSize),
+                       u16TargetSAID(mTargetSAID),
+                       u8ARQEnable(mARQEnable),
+                       u16ARQWindowSize(mARQWindowSize),
+                       u16ARQBlockLifeTime(mARQBlockLifeTime),
+                       u16ARQSyncLossTimeOut(mARQSyncLossTimeOut),
+                       u8ARQDeliverInOrder(mARQDeliverInOrder),
+                       u16ARQRxPurgeTimeOut(mARQRXPurgeTimeOut),
+                       //Add ARQ BLOCK SIZE, ARQ TX and RX delay initializations here
+                       //after we move to only CORR2
+                       u8RxARQAckProcessingTime(mRxARQAckProcessingTime),
+                       u8CSSpecification(mCSSpecification),
+                       u8TypeOfDataDeliveryService(mTypeOfDataDeliveryService),
+                       u16SDUInterArrivalTime(mSDUInterArrivalTime),
+                       u16TimeBase(mTimeBase),
+                       u8PagingPreference(mPagingPreference),
+                       u8MBSZoneIdentifierassignment(mMBSZoneIdentifierassignmentLength),
+                       u8TrafficIndicationPreference(mTrafficIndicationPreference),
+                       u8GlobalServicesClassNameLength(mGlobalServicesClassNameLength),
+                       u8SNFeedbackEnabled(mSNFeedbackEnabled),
+                       u8FSNSize(mFSNSize),
+                       u8CIDAllocation4activeBSsLength(mCIDAllocation4activeBSsLength),
+                       u16UnsolicitedGrantInterval(mUnsolicitedGrantInterval),
+                       u16UnsolicitedPollingInterval(mUnsolicitedPollingInterval),
+                       u8PDUSNExtendedSubheader4HarqReordering(mPDUSNExtendedSubheader4HarqReordering),
+                       u8MBSContentsIDLength(mMBSContentsIDLength),
+                       u8HARQServiceFlows(mHARQServiceFlows),
+                       u8AuthTokenLength(mAuthTokenLength),
+                       u8HarqChannelMappingLength(mHarqChannelMappingLength),
+                       u8VendorSpecificQoSParamLength(mVendorSpecificQoSParamLength),
+            bValid(FALSE),
+            u8TotalClassifiers()
+{
+//Remove the bolck after we move to Corr2 only code
+#ifdef ENABLE_CORRIGENDUM2_UPDATE
+       if((g_u32Corr2MacFlags & CORR_2_DSX)  ||  (g_u32Corr2MacFlags & CORR_2_ARQ))
+       {
+       /* IEEE Comment #627 / MTG Comment #426 */
+               u16ARQBlockSize = mARQBlockSize;
+               if(g_u32Corr2MacFlags & CORR_2_ARQ) {
+                       u16ARQRetryTxTimeOut = mARQRetryTimeOutTxDelay;
+                       if(g_u32VENDOR_TYPE == VENDOR_ALCATEL) {
+                               u16ARQRetryRxTimeOut = mARQRetryTimeOutRxDelay_ALU;
+                       } else {
+                               u16ARQRetryRxTimeOut = mARQRetryTimeOutRxDelay;
+                       }
+               }
+               else
+               {
+                       u16ARQRetryTxTimeOut = mARQRetryTimeOutTxDelayCorr1;
+                       u16ARQRetryRxTimeOut = mARQRetryTimeOutRxDelayCorr1;
+               }
+       }
+       else
+#endif
+       {
+               u16ARQBlockSize = mARQBlockSizeCorr1;
+               u16ARQRetryTxTimeOut = mARQRetryTimeOutTxDelayCorr1;
+               u16ARQRetryRxTimeOut = mARQRetryTimeOutRxDelayCorr1;
+       }
+}
+
+       void ComputeMacOverhead(B_UINT8 u8SecOvrhead);
+       B_UINT16        GetMacOverhead() { return       u16MacOverhead; }
+#else
+typedef struct _stServiceFlowParamSI{
+#endif //end of ifdef BECEEM_TARGET
+
+     /**  32bitSFID Of The Service Flow*/
+    B_UINT32                        u32SFID;
+
+     /**  32bit Maximum Sustained Traffic Rate of the Service Flow*/
+    B_UINT32                        u32MaxSustainedTrafficRate;
+
+     /**  32bit Maximum Traffic Burst allowed for the Service Flow*/
+    B_UINT32                        u32MaxTrafficBurst;
+
+    /**  32bit Minimum Reserved Traffic Rate of the Service Flow*/
+    B_UINT32                        u32MinReservedTrafficRate;
+
+       /**  32bit Tolerated Jitter of the Service Flow*/
+       B_UINT32                        u32ToleratedJitter;
+
+   /**  32bit Maximum Latency of the Service Flow*/
+    B_UINT32                        u32MaximumLatency;
+
+       /**  16bitCID Of The Service Flow*/
+    B_UINT16                        u16CID;
+
+     /**  16bit SAID on which the service flow being set up shall be mapped*/
+    B_UINT16                        u16TargetSAID;
+
+       /** 16bit  ARQ window size negotiated*/
+    B_UINT16                        u16ARQWindowSize;
+
+     /**  16bit Total Tx delay incl sending, receiving & processing delays     */
+    B_UINT16                        u16ARQRetryTxTimeOut;
+
+       /**  16bit Total Rx delay incl sending, receiving & processing delays   */
+    B_UINT16                        u16ARQRetryRxTimeOut;
+
+       /**  16bit ARQ block lifetime   */
+    B_UINT16                        u16ARQBlockLifeTime;
+
+       /**  16bit ARQ Sync loss timeout*/
+    B_UINT16                        u16ARQSyncLossTimeOut;
+
+        /**  16bit ARQ Purge timeout */
+    B_UINT16                        u16ARQRxPurgeTimeOut;
+#if 0 //def ENABLE_CORRIGENDUM2_UPDATE
+/* IEEE Comment #627 / MTG Comment #426 */
+    /// \brief Size of an ARQ block, changed from 2 bytes to 1
+    B_UINT8                        u8ARQBlockSize;
+#endif
+//TODO::Remove this once we move to a new CORR2 driver
+    /// \brief Size of an ARQ block
+    B_UINT16                        u16ARQBlockSize;
+
+//#endif
+       /**  16bit Nominal interval b/w consecutive SDU arrivals at MAC SAP*/
+       B_UINT16                        u16SDUInterArrivalTime;
+
+       /**  16bit Specifies the time base for rate measurement         */
+       B_UINT16                        u16TimeBase;
+
+        /** 16bit Interval b/w Successive Grant oppurtunities*/
+       B_UINT16                        u16UnsolicitedGrantInterval;
+
+       /** 16bit Interval b/w Successive Polling grant oppurtunities*/
+       B_UINT16                                                u16UnsolicitedPollingInterval;
+
+        /**   internal var to get the overhead */
+       B_UINT16                                                u16MacOverhead;
+
+        /**  MBS contents Identifier*/
+       B_UINT16                                                u16MBSContentsID[MBS_CONTENTS_ID_LENGTH];
+
+       /**  MBS contents Identifier length*/
+       B_UINT8                                                 u8MBSContentsIDLength;
+
+       /**      ServiceClassName Length Of The Service Flow*/
+    B_UINT8                         u8ServiceClassNameLength;
+
+       /**  32bytes ServiceClassName Of The Service Flow*/
+    B_UINT8                         u8ServiceClassName[32];
+
+       /**  8bit Indicates whether or not MBS service is requested for this Serivce Flow*/
+       B_UINT8                                                 u8MBSService;
+
+    /**  8bit QOS Parameter Set specifies proper application of QoS paramters to Provisioned, Admitted and Active sets*/
+    B_UINT8                         u8QosParamSet;
+
+   /**  8bit Traffic Priority Of the Service Flow */
+    B_UINT8                         u8TrafficPriority;
+
+   /**  8bit Uplink Grant Scheduling Type of The Service Flow */
+    B_UINT8                         u8ServiceFlowSchedulingType;
+
+  /**  8bit Request transmission Policy of the Service Flow*/
+    B_UINT8                                                    u8RequesttransmissionPolicy;
+
+       /**  8bit Specifies whether SDUs for this Service flow are of FixedLength or Variable length */
+    B_UINT8                         u8FixedLengthVSVariableLengthSDUIndicator;
+
+       /**  8bit Length of the SDU for a fixed length SDU service flow*/
+       B_UINT8                         u8SDUSize;
+
+        /** 8bit Indicates whether or not ARQ is requested for this connection*/
+       B_UINT8                         u8ARQEnable;
+
+       /**<  8bit Indicates whether or not data has tobe delivered in order to higher layer*/
+       B_UINT8                         u8ARQDeliverInOrder;
+
+       /**  8bit Receiver ARQ ACK processing time */
+       B_UINT8                         u8RxARQAckProcessingTime;
+
+       /**  8bit Convergence Sublayer Specification Of The Service Flow*/
+       B_UINT8                         u8CSSpecification;
+
+        /**  8 bit Type of data delivery service*/
+       B_UINT8                         u8TypeOfDataDeliveryService;
+
+       /** 8bit Specifies whether a service flow may generate Paging   */
+       B_UINT8                         u8PagingPreference;
+
+       /**  8bit Indicates the MBS Zone through which the connection or virtual connection is valid    */
+       B_UINT8                         u8MBSZoneIdentifierassignment;
+
+       /**  8bit Specifies whether traffic on SF should generate MOB_TRF_IND to MS in sleep mode*/
+       B_UINT8                         u8TrafficIndicationPreference;
+
+       /** 8bit Speciifes the length of predefined Global QoS parameter set encoding for this SF       */
+       B_UINT8                         u8GlobalServicesClassNameLength;
+
+        /**  6 byte Speciifes the predefined Global QoS parameter set encoding for this SF     */
+       B_UINT8                         u8GlobalServicesClassName[GLOBAL_SF_CLASSNAME_LENGTH];
+
+        /**  8bit Indicates whether or not SN feedback is enabled for the conn */
+       B_UINT8                         u8SNFeedbackEnabled;
+
+        /**  Indicates the size of the Fragment Sequence Number for the connection     */
+       B_UINT8                         u8FSNSize;
+
+       /** 8bit Number of CIDs in active BS list       */
+       B_UINT8                                                 u8CIDAllocation4activeBSsLength;
+
+       /**  CIDs of BS in the active list      */
+       B_UINT8                                                 u8CIDAllocation4activeBSs[MAX_NUM_ACTIVE_BS];
+
+        /**  Specifies if PDU extended subheader should be applied on every PDU on this conn*/
+       B_UINT8                         u8PDUSNExtendedSubheader4HarqReordering;
+
+        /**  8bit Specifies whether the connection uses HARQ or not    */
+       B_UINT8                         u8HARQServiceFlows;
+
+       /**  Specifies the length of Authorization token*/
+       B_UINT8                                                 u8AuthTokenLength;
+
+       /**  Specifies the Authorization token*/
+       B_UINT8                                                 u8AuthToken[AUTH_TOKEN_LENGTH];
+
+       /**  specifes Number of HARQ channels used to carry data length*/
+       B_UINT8                                                 u8HarqChannelMappingLength;
+
+        /**  specifes HARQ channels used to carry data*/
+       B_UINT8                                                 u8HARQChannelMapping[NUM_HARQ_CHANNELS];
+
+       /**  8bit Length of Vendor Specific QoS Params */
+    B_UINT8                         u8VendorSpecificQoSParamLength;
+
+       /** 1byte  Vendor Specific QoS Param Of The Service Flow*/
+    B_UINT8                          u8VendorSpecificQoSParam[VENDOR_SPECIF_QOS_PARAM];
+
+       // indicates total classifiers in the SF
+       B_UINT8                         u8TotalClassifiers;  /**< Total number of valid classifiers*/
+       B_UINT8                                                 bValid; /**<  Validity flag */
+       B_UINT8                         u8Padding;       /**<  Padding byte*/
+
+#ifdef BECEEM_TARGET
+/**
+Structure for Convergence SubLayer Types with a maximum of 4 classifiers
+*/
+       CConvergenceSLTypes             cConvergenceSLTypes[MAX_CLASSIFIERS_IN_SF];
+#else
+/**
+Structure for Convergence SubLayer Types with a maximum of 4 classifiers
+*/
+       stConvergenceSLTypes            cConvergenceSLTypes[MAX_CLASSIFIERS_IN_SF];
+#endif
+
+#ifdef BECEEM_TARGET
+};
+#else
+} stServiceFlowParamSI, *pstServiceFlowParamSI;
+typedef stServiceFlowParamSI CServiceFlowParamSI;
+#endif
+
+/**
+structure stLocalSFAddRequest
+*/
+typedef struct _stLocalSFAddRequest{
+#ifdef BECEEM_TARGET
+          _stLocalSFAddRequest( ) :
+               u8Type(0x00),  eConnectionDir(0x00),
+               u16TID(0x0000), u16CID(0x0000),  u16VCID(0x0000)
+                       {}
+#endif
+
+       B_UINT8                         u8Type; /**<  Type*/
+       B_UINT8      eConnectionDir;            /**<  Connection direction*/
+       /// \brief 16 bit TID
+       B_UINT16                        u16TID; /**<  16bit TID*/
+       /// \brief 16bitCID
+       B_UINT16                        u16CID; /**<  16bit CID*/
+       /// \brief 16bitVCID
+       B_UINT16                        u16VCID;        /**<  16bit VCID*/
+    /// \brief structure ParameterSet
+#ifdef BECEEM_SIGNALLING_INTERFACE_API
+       CServiceFlowParamSI sfParameterSet;
+#endif
+
+#ifdef BECEEM_TARGET
+    CServiceFlowParamSI              *psfParameterSet;
+#else
+       stServiceFlowParamSI    *psfParameterSet;       /**<  structure ParameterSet*/
+#endif
+
+#ifdef USING_VXWORKS
+    USE_DATA_MEMORY_MANAGER();
+#endif
+}stLocalSFAddRequest, *pstLocalSFAddRequest;
+
+
+/**
+structure stLocalSFAddIndication
+*/
+typedef struct _stLocalSFAddIndication{
+#ifdef BECEEM_TARGET
+          _stLocalSFAddIndication( ) :
+               u8Type(0x00),  eConnectionDir(0x00),
+               u16TID(0x0000), u16CID(0x0000),  u16VCID(0x0000)
+                       {}
+#endif
+
+       B_UINT8                         u8Type; /**<  Type*/
+       B_UINT8      eConnectionDir;    /**<  Connection Direction*/
+       /// \brief 16 bit TID
+       B_UINT16                         u16TID;        /**<  TID*/
+    /// \brief 16bitCID
+    B_UINT16                        u16CID;            /**<  16bitCID*/
+    /// \brief 16bitVCID
+    B_UINT16                        u16VCID;    /**<  16bitVCID*/
+
+#ifdef         BECEEM_SIGNALLING_INTERFACE_API
+       CServiceFlowParamSI              sfAuthorizedSet;
+    /// \brief structure AdmittedSet
+    CServiceFlowParamSI              sfAdmittedSet;
+    /// \brief structure ActiveSet
+    CServiceFlowParamSI              sfActiveSet;
+#endif
+
+    /// \brief structure AuthorizedSet
+#ifdef BECEEM_TARGET
+    CServiceFlowParamSI              *psfAuthorizedSet;
+    /// \brief structure AdmittedSet
+    CServiceFlowParamSI              *psfAdmittedSet;
+    /// \brief structure ActiveSet
+    CServiceFlowParamSI              *psfActiveSet;
+#else
+    /// \brief structure AuthorizedSet
+    stServiceFlowParamSI              *psfAuthorizedSet;       /**<  AuthorizedSet of type stServiceFlowParamSI*/
+    /// \brief structure AdmittedSet
+    stServiceFlowParamSI              *psfAdmittedSet; /**<  AdmittedSet of type stServiceFlowParamSI*/
+    /// \brief structure ActiveSet
+    stServiceFlowParamSI              *psfActiveSet;   /**<  sfActiveSet of type stServiceFlowParamSI*/
+#endif
+       B_UINT8                            u8CC;        /**<  Confirmation Code*/
+       B_UINT8                            u8Padd;              /**<  8-bit Padding */
+
+    B_UINT16               u16Padd;    /**< 16 bit Padding */
+
+#ifdef USING_VXWORKS
+    USE_DATA_MEMORY_MANAGER();
+#endif
+}stLocalSFAddIndication;
+
+
+typedef struct _stLocalSFAddIndication *pstLocalSFAddIndication;
+/**
+structure stLocalSFChangeRequest is same as structure stLocalSFAddIndication
+*/
+typedef struct _stLocalSFAddIndication stLocalSFChangeRequest, *pstLocalSFChangeRequest;
+/**
+structure stLocalSFChangeIndication is same as structure stLocalSFAddIndication
+*/
+typedef struct _stLocalSFAddIndication stLocalSFChangeIndication, *pstLocalSFChangeIndication;
+
+/**
+structure stLocalSFDeleteRequest
+*/
+typedef struct _stLocalSFDeleteRequest{
+#ifdef BECEEM_TARGET
+          _stLocalSFDeleteRequest( ) :
+               u8Type(0x00),  u8Padding(0x00),
+               u16TID(0x0000), u32SFID (0x00000000)
+                       {}
+#endif
+       B_UINT8                         u8Type;  /**< Type*/
+       B_UINT8                         u8Padding;       /**<  Padding byte*/
+       B_UINT16                        u16TID;          /**<  TID*/
+    /// \brief 32bitSFID
+    B_UINT32                        u32SFID;    /**<  SFID*/
+#ifdef USING_VXWORKS
+    USE_DATA_MEMORY_MANAGER();
+#endif
+}stLocalSFDeleteRequest, *pstLocalSFDeleteRequest;
+
+/**
+structure stLocalSFDeleteIndication
+*/
+typedef struct stLocalSFDeleteIndication{
+#ifdef BECEEM_TARGET
+          stLocalSFDeleteIndication( ) :
+               u8Type(0x00),  u8Padding(0x00),
+               u16TID(0x0000), u16CID(0x0000),
+               u16VCID(0x0000),u32SFID (0x00000000)
+                       {}
+#endif
+       B_UINT8                         u8Type; /**< Type */
+       B_UINT8                         u8Padding;      /**< Padding  */
+       B_UINT16                        u16TID;                 /**< TID */
+       /// \brief 16bitCID
+    B_UINT16                        u16CID;                    /**< CID */
+    /// \brief 16bitVCID
+    B_UINT16                        u16VCID;           /**< VCID */
+    /// \brief 32bitSFID
+    B_UINT32                        u32SFID;           /**< SFID */
+       /// \brief 8bit Confirmation code
+       B_UINT8                         u8ConfirmationCode;     /**< Confirmation code */
+       B_UINT8                         u8Padding1[3];          /**< 3 byte Padding  */
+#ifdef USING_VXWORKS
+    USE_DATA_MEMORY_MANAGER();
+#endif
+}stLocalSFDeleteIndication;
+
+typedef struct _stIM_SFHostNotify
+{
+       B_UINT32        SFID;      //SFID of the service flow
+       B_UINT16        newCID;   //the new/changed CID
+       B_UINT16        VCID;             //Get new Vcid if the flow has been made active in CID update TLV, but was inactive earlier or the orig vcid
+       B_UINT8         RetainSF;        //Indication to Host if the SF is to be retained or deleted; if TRUE-retain else delete
+       B_UINT8         QoSParamSet; //QoS paramset of the retained SF
+       B_UINT16        u16reserved;  //For byte alignment
+
+} stIM_SFHostNotify;
+
+#endif