Linux-libre 3.2.72-gnu1
[librecmc/linux-libre.git] / drivers / staging / bcm / cntrl_SignalingInterface.h
1 #ifndef CNTRL_SIGNALING_INTERFACE_
2 #define CNTRL_SIGNALING_INTERFACE_
3
4
5
6
7 #define DSA_REQ 11
8 #define DSA_RSP 12
9 #define DSA_ACK 13
10 #define DSC_REQ 14
11 #define DSC_RSP 15
12 #define DSC_ACK 16
13 #define DSD_REQ 17
14 #define DSD_RSP 18
15 #define DSD_ACK 19
16 #define MAX_CLASSIFIERS_IN_SF  4
17
18
19 #define MAX_STRING_LEN 20
20 #define MAX_PHS_LENGTHS 255
21 #define VENDOR_PHS_PARAM_LENGTH 10
22 #define MAX_NUM_ACTIVE_BS 10
23 #define AUTH_TOKEN_LENGTH       10
24 #define NUM_HARQ_CHANNELS       16      //Changed from 10 to 16 to accommodate all HARQ channels
25 #define VENDOR_CLASSIFIER_PARAM_LENGTH 1 //Changed the size to 1 byte since we dnt use it
26 #define  VENDOR_SPECIF_QOS_PARAM 1
27 #define VENDOR_PHS_PARAM_LENGTH 10
28 #define MBS_CONTENTS_ID_LENGTH  10
29 #define GLOBAL_SF_CLASSNAME_LENGTH 6
30
31 #define TYPE_OF_SERVICE_LENGTH                          3
32 #define IP_MASKED_SRC_ADDRESS_LENGTH                    32
33 #define IP_MASKED_DEST_ADDRESS_LENGTH           32
34 #define PROTOCOL_SRC_PORT_RANGE_LENGTH          4
35 #define PROTOCOL_DEST_PORT_RANGE_LENGTH         4
36 #define ETHERNET_DEST_MAC_ADDR_LENGTH           12
37 #define ETHERNET_SRC_MAC_ADDR_LENGTH            12
38 #define NUM_ETHERTYPE_BYTES  3
39 #define NUM_IPV6_FLOWLABLE_BYTES 3
40
41
42 ////////////////////////////////////////////////////////////////////////////////
43 ////////////////////////structure Definitions///////////////////////////////////
44 ////////////////////////////////////////////////////////////////////////////////
45 /// \brief class cCPacketClassificationRule
46 struct _stCPacketClassificationRuleSI{
47
48         /**  16bit UserPriority Of The Service Flow*/
49     B_UINT16                        u16UserPriority;
50         /**  16bit VLANID Of The Service Flow*/
51     B_UINT16                        u16VLANID;
52         /**  16bit Packet Classification RuleIndex Of The Service Flow*/
53     B_UINT16                        u16PacketClassificationRuleIndex;
54         /**  8bit Classifier Rule Priority Of The Service Flow*/
55     B_UINT8                         u8ClassifierRulePriority;
56         /**  Length of IP TypeOfService field*/
57         B_UINT8                         u8IPTypeOfServiceLength;
58         /**  3bytes IP TypeOfService */
59     B_UINT8                         u8IPTypeOfService[TYPE_OF_SERVICE_LENGTH];
60         /** Protocol used in classification of Service Flow*/
61     B_UINT8                         u8Protocol;
62         /**  Length of IP Masked Source Address */
63     B_UINT8                         u8IPMaskedSourceAddressLength;
64         /**  IP Masked Source Address used in classification for the Service Flow*/
65     B_UINT8                         u8IPMaskedSourceAddress[IP_MASKED_SRC_ADDRESS_LENGTH];
66         /**  Length of IP Destination Address */
67     B_UINT8                         u8IPDestinationAddressLength;
68         /**  IP Destination Address used in classification for the Service Flow*/
69     B_UINT8                         u8IPDestinationAddress[IP_MASKED_DEST_ADDRESS_LENGTH];
70         /** Length of Protocol Source Port Range */
71     B_UINT8                         u8ProtocolSourcePortRangeLength;
72         /**  Protocol Source Port Range used in the Service Flow*/
73     B_UINT8                         u8ProtocolSourcePortRange[PROTOCOL_SRC_PORT_RANGE_LENGTH];
74         /** Length of Protocol Dest Port Range */
75     B_UINT8                         u8ProtocolDestPortRangeLength;
76         /**  Protocol Dest Port Range used in the Service Flow*/
77     B_UINT8                         u8ProtocolDestPortRange[PROTOCOL_DEST_PORT_RANGE_LENGTH];
78         /** Length of Ethernet Destination MAC Address  */
79     B_UINT8                         u8EthernetDestMacAddressLength;
80         /**  Ethernet Destination MAC Address  used in classification of the Service Flow*/
81     B_UINT8                         u8EthernetDestMacAddress[ETHERNET_DEST_MAC_ADDR_LENGTH];
82         /** Length of Ethernet Source MAC Address  */
83     B_UINT8                         u8EthernetSourceMACAddressLength;
84         /**  Ethernet Source MAC Address  used in classification of the Service Flow*/
85     B_UINT8                         u8EthernetSourceMACAddress[ETHERNET_SRC_MAC_ADDR_LENGTH];
86         /**  Length of Ethertype */
87         B_UINT8                         u8EthertypeLength;
88         /**  3bytes Ethertype Of The Service Flow*/
89     B_UINT8                         u8Ethertype[NUM_ETHERTYPE_BYTES];
90         /**  8bit Associated PHSI Of The Service Flow*/
91     B_UINT8                         u8AssociatedPHSI;
92         /** Length of Vendor Specific Classifier Param length Of The Service Flow*/
93     B_UINT8                         u8VendorSpecificClassifierParamLength;
94         /**  Vendor Specific Classifier Param Of The Service Flow*/
95     B_UINT8                         u8VendorSpecificClassifierParam[VENDOR_CLASSIFIER_PARAM_LENGTH];
96     /** Length Of IPv6 Flow Lable of the Service Flow*/
97     B_UINT8                         u8IPv6FlowLableLength;
98         /**  IPv6 Flow Lable Of The Service Flow*/
99     B_UINT8                         u8IPv6FlowLable[NUM_IPV6_FLOWLABLE_BYTES];
100         /**  Action associated with the classifier rule*/
101     B_UINT8                                                     u8ClassifierActionRule;
102     B_UINT16                                                    u16ValidityBitMap;
103 };
104 typedef struct _stCPacketClassificationRuleSI CCPacketClassificationRuleSI,stCPacketClassificationRuleSI, *pstCPacketClassificationRuleSI;
105
106 /// \brief class CPhsRuleSI
107 typedef struct _stPhsRuleSI {
108         /**  8bit PHS Index Of The Service Flow*/
109     B_UINT8                         u8PHSI;
110         /**  PHSF Length Of The Service Flow*/
111     B_UINT8                         u8PHSFLength;
112     /** String of bytes containing header information to be suppressed by the sending CS and reconstructed by the receiving CS*/
113     B_UINT8                         u8PHSF[MAX_PHS_LENGTHS];
114         /**  PHSM Length Of The Service Flow*/
115     B_UINT8                         u8PHSMLength;
116         /**  PHS Mask for the SF*/
117     B_UINT8                         u8PHSM[MAX_PHS_LENGTHS];
118         /**  8bit Total number of bytes to be suppressed for the Service Flow*/
119     B_UINT8                         u8PHSS;
120         /**  8bit Indicates whether or not Packet Header contents need to be verified prior to supression */
121     B_UINT8                         u8PHSV;
122         /**  Vendor Specific PHS param Length Of The Service Flow*/
123     B_UINT8                         u8VendorSpecificPHSParamsLength;
124         /**  Vendor Specific PHS param Of The Service Flow*/
125     B_UINT8                         u8VendorSpecificPHSParams[VENDOR_PHS_PARAM_LENGTH];
126
127         B_UINT8                         u8Padding[2];
128 }stPhsRuleSI,*pstPhsRuleSI;
129 typedef stPhsRuleSI CPhsRuleSI;
130
131 /// \brief structure cConvergenceSLTypes
132 struct _stConvergenceSLTypes{
133         /**  8bit Phs Classfier Action Of The Service Flow*/
134     B_UINT8                         u8ClassfierDSCAction;
135         /**  8bit Phs DSC Action Of The Service Flow*/
136     B_UINT8                         u8PhsDSCAction;
137         /**   16bit Padding */
138     B_UINT8                         u8Padding[2];
139     /// \brief class cCPacketClassificationRule
140     stCPacketClassificationRuleSI     cCPacketClassificationRule;
141     /// \brief class CPhsRuleSI
142      struct _stPhsRuleSI                cPhsRule;
143 };
144 typedef struct _stConvergenceSLTypes stConvergenceSLTypes,CConvergenceSLTypes, *pstConvergenceSLTypes;
145
146
147 /// \brief structure CServiceFlowParamSI
148 typedef struct _stServiceFlowParamSI{
149
150      /**  32bitSFID Of The Service Flow*/
151     B_UINT32                        u32SFID;
152
153      /**  32bit Maximum Sustained Traffic Rate of the Service Flow*/
154     B_UINT32                        u32MaxSustainedTrafficRate;
155
156      /**  32bit Maximum Traffic Burst allowed for the Service Flow*/
157     B_UINT32                        u32MaxTrafficBurst;
158
159     /**  32bit Minimum Reserved Traffic Rate of the Service Flow*/
160     B_UINT32                        u32MinReservedTrafficRate;
161
162         /**  32bit Tolerated Jitter of the Service Flow*/
163         B_UINT32                        u32ToleratedJitter;
164
165    /**  32bit Maximum Latency of the Service Flow*/
166     B_UINT32                        u32MaximumLatency;
167
168         /**  16bitCID Of The Service Flow*/
169     B_UINT16                        u16CID;
170
171      /**  16bit SAID on which the service flow being set up shall be mapped*/
172     B_UINT16                        u16TargetSAID;
173
174         /** 16bit  ARQ window size negotiated*/
175     B_UINT16                        u16ARQWindowSize;
176
177      /**  16bit Total Tx delay incl sending, receiving & processing delays      */
178     B_UINT16                        u16ARQRetryTxTimeOut;
179
180         /**  16bit Total Rx delay incl sending, receiving & processing delays   */
181     B_UINT16                        u16ARQRetryRxTimeOut;
182
183         /**  16bit ARQ block lifetime   */
184     B_UINT16                        u16ARQBlockLifeTime;
185
186         /**  16bit ARQ Sync loss timeout*/
187     B_UINT16                        u16ARQSyncLossTimeOut;
188
189          /**  16bit ARQ Purge timeout */
190     B_UINT16                        u16ARQRxPurgeTimeOut;
191 //TODO::Remove this once we move to a new CORR2 driver
192     /// \brief Size of an ARQ block
193     B_UINT16                        u16ARQBlockSize;
194
195 //#endif
196         /**  16bit Nominal interval b/w consecutive SDU arrivals at MAC SAP*/
197         B_UINT16                        u16SDUInterArrivalTime;
198
199         /**  16bit Specifies the time base for rate measurement         */
200         B_UINT16                        u16TimeBase;
201
202          /** 16bit Interval b/w Successive Grant oppurtunities*/
203         B_UINT16                        u16UnsolicitedGrantInterval;
204
205         /** 16bit Interval b/w Successive Polling grant oppurtunities*/
206         B_UINT16                                                u16UnsolicitedPollingInterval;
207
208          /**   internal var to get the overhead */
209         B_UINT16                                                u16MacOverhead;
210
211          /**  MBS contents Identifier*/
212         B_UINT16                                                u16MBSContentsID[MBS_CONTENTS_ID_LENGTH];
213
214         /**  MBS contents Identifier length*/
215         B_UINT8                                                 u8MBSContentsIDLength;
216
217         /**      ServiceClassName Length Of The Service Flow*/
218     B_UINT8                         u8ServiceClassNameLength;
219
220         /**  32bytes ServiceClassName Of The Service Flow*/
221     B_UINT8                         u8ServiceClassName[32];
222
223         /**  8bit Indicates whether or not MBS service is requested for this Serivce Flow*/
224         B_UINT8                                                 u8MBSService;
225
226     /**  8bit QOS Parameter Set specifies proper application of QoS paramters to Provisioned, Admitted and Active sets*/
227     B_UINT8                         u8QosParamSet;
228
229    /**  8bit Traffic Priority Of the Service Flow */
230     B_UINT8                         u8TrafficPriority;
231
232    /**  8bit Uplink Grant Scheduling Type of The Service Flow */
233     B_UINT8                         u8ServiceFlowSchedulingType;
234
235   /**  8bit Request transmission Policy of the Service Flow*/
236     B_UINT8                                                     u8RequesttransmissionPolicy;
237
238         /**  8bit Specifies whether SDUs for this Service flow are of FixedLength or Variable length */
239     B_UINT8                         u8FixedLengthVSVariableLengthSDUIndicator;
240
241         /**  8bit Length of the SDU for a fixed length SDU service flow*/
242         B_UINT8                         u8SDUSize;
243
244          /** 8bit Indicates whether or not ARQ is requested for this connection*/
245        B_UINT8                         u8ARQEnable;
246
247         /**<  8bit Indicates whether or not data has tobe delivered in order to higher layer*/
248        B_UINT8                         u8ARQDeliverInOrder;
249
250         /**  8bit Receiver ARQ ACK processing time */
251         B_UINT8                         u8RxARQAckProcessingTime;
252
253         /**  8bit Convergence Sublayer Specification Of The Service Flow*/
254        B_UINT8                         u8CSSpecification;
255
256          /**  8 bit Type of data delivery service*/
257         B_UINT8                         u8TypeOfDataDeliveryService;
258
259         /** 8bit Specifies whether a service flow may generate Paging   */
260         B_UINT8                         u8PagingPreference;
261
262         /**  8bit Indicates the MBS Zone through which the connection or virtual connection is valid    */
263        B_UINT8                         u8MBSZoneIdentifierassignment;
264
265        /**  8bit Specifies whether traffic on SF should generate MOB_TRF_IND to MS in sleep mode*/
266         B_UINT8                         u8TrafficIndicationPreference;
267
268         /** 8bit Speciifes the length of predefined Global QoS parameter set encoding for this SF       */
269         B_UINT8                         u8GlobalServicesClassNameLength;
270
271          /**  6 byte Speciifes the predefined Global QoS parameter set encoding for this SF     */
272         B_UINT8                         u8GlobalServicesClassName[GLOBAL_SF_CLASSNAME_LENGTH];
273
274          /**  8bit Indicates whether or not SN feedback is enabled for the conn */
275         B_UINT8                         u8SNFeedbackEnabled;
276
277          /**  Indicates the size of the Fragment Sequence Number for the connection     */
278         B_UINT8                         u8FSNSize;
279
280         /** 8bit Number of CIDs in active BS list       */
281         B_UINT8                                                 u8CIDAllocation4activeBSsLength;
282
283         /**  CIDs of BS in the active list      */
284         B_UINT8                                                 u8CIDAllocation4activeBSs[MAX_NUM_ACTIVE_BS];
285
286          /**  Specifies if PDU extended subheader should be applied on every PDU on this conn*/
287         B_UINT8                         u8PDUSNExtendedSubheader4HarqReordering;
288
289          /**  8bit Specifies whether the connection uses HARQ or not    */
290         B_UINT8                         u8HARQServiceFlows;
291
292         /**  Specifies the length of Authorization token*/
293         B_UINT8                                                 u8AuthTokenLength;
294
295         /**  Specifies the Authorization token*/
296         B_UINT8                                                 u8AuthToken[AUTH_TOKEN_LENGTH];
297
298         /**  specifes Number of HARQ channels used to carry data length*/
299         B_UINT8                                                 u8HarqChannelMappingLength;
300
301          /**  specifes HARQ channels used to carry data*/
302         B_UINT8                                                 u8HARQChannelMapping[NUM_HARQ_CHANNELS];
303
304         /**  8bit Length of Vendor Specific QoS Params */
305     B_UINT8                         u8VendorSpecificQoSParamLength;
306
307         /** 1byte  Vendor Specific QoS Param Of The Service Flow*/
308     B_UINT8                          u8VendorSpecificQoSParam[VENDOR_SPECIF_QOS_PARAM];
309
310         // indicates total classifiers in the SF
311         B_UINT8                         u8TotalClassifiers;  /**< Total number of valid classifiers*/
312         B_UINT8                                                 bValid; /**<  Validity flag */
313         B_UINT8                         u8Padding;       /**<  Padding byte*/
314
315 /**
316 Structure for Convergence SubLayer Types with a maximum of 4 classifiers
317 */
318         stConvergenceSLTypes            cConvergenceSLTypes[MAX_CLASSIFIERS_IN_SF];
319
320 } stServiceFlowParamSI, *pstServiceFlowParamSI;
321 typedef stServiceFlowParamSI CServiceFlowParamSI;
322
323 /**
324 structure stLocalSFAddRequest
325 */
326 typedef struct _stLocalSFAddRequest{
327
328         B_UINT8                         u8Type; /**<  Type*/
329         B_UINT8      eConnectionDir;            /**<  Connection direction*/
330         /// \brief 16 bit TID
331         B_UINT16                        u16TID; /**<  16bit TID*/
332         /// \brief 16bitCID
333         B_UINT16                        u16CID; /**<  16bit CID*/
334         /// \brief 16bitVCID
335         B_UINT16                        u16VCID;        /**<  16bit VCID*/
336     /// \brief structure ParameterSet
337
338         stServiceFlowParamSI    *psfParameterSet;       /**<  structure ParameterSet*/
339
340 }stLocalSFAddRequest, *pstLocalSFAddRequest;
341
342
343 /**
344 structure stLocalSFAddIndication
345 */
346 typedef struct _stLocalSFAddIndication{
347
348         B_UINT8                         u8Type; /**<  Type*/
349         B_UINT8      eConnectionDir;    /**<  Connection Direction*/
350         /// \brief 16 bit TID
351         B_UINT16                         u16TID;        /**<  TID*/
352     /// \brief 16bitCID
353     B_UINT16                        u16CID;             /**<  16bitCID*/
354     /// \brief 16bitVCID
355     B_UINT16                        u16VCID;     /**<  16bitVCID*/
356
357
358     /// \brief structure AuthorizedSet
359     /// \brief structure AuthorizedSet
360     stServiceFlowParamSI              *psfAuthorizedSet;        /**<  AuthorizedSet of type stServiceFlowParamSI*/
361     /// \brief structure AdmittedSet
362     stServiceFlowParamSI              *psfAdmittedSet;  /**<  AdmittedSet of type stServiceFlowParamSI*/
363     /// \brief structure ActiveSet
364     stServiceFlowParamSI              *psfActiveSet;    /**<  sfActiveSet of type stServiceFlowParamSI*/
365         B_UINT8                            u8CC;        /**<  Confirmation Code*/
366         B_UINT8                            u8Padd;              /**<  8-bit Padding */
367
368     B_UINT16               u16Padd;     /**< 16 bit Padding */
369
370 }stLocalSFAddIndication;
371
372
373 typedef struct _stLocalSFAddIndication *pstLocalSFAddIndication;
374 /**
375 structure stLocalSFChangeRequest is same as structure stLocalSFAddIndication
376 */
377 typedef struct _stLocalSFAddIndication stLocalSFChangeRequest, *pstLocalSFChangeRequest;
378 /**
379 structure stLocalSFChangeIndication is same as structure stLocalSFAddIndication
380 */
381 typedef struct _stLocalSFAddIndication stLocalSFChangeIndication, *pstLocalSFChangeIndication;
382
383 /**
384 structure stLocalSFDeleteRequest
385 */
386 typedef struct _stLocalSFDeleteRequest{
387         B_UINT8                         u8Type;  /**< Type*/
388         B_UINT8                         u8Padding;       /**<  Padding byte*/
389         B_UINT16                        u16TID;          /**<  TID*/
390     /// \brief 32bitSFID
391     B_UINT32                        u32SFID;     /**<  SFID*/
392 }stLocalSFDeleteRequest, *pstLocalSFDeleteRequest;
393
394 /**
395 structure stLocalSFDeleteIndication
396 */
397 typedef struct stLocalSFDeleteIndication{
398         B_UINT8                         u8Type; /**< Type */
399         B_UINT8                         u8Padding;      /**< Padding  */
400         B_UINT16                        u16TID;                 /**< TID */
401        /// \brief 16bitCID
402     B_UINT16                        u16CID;                     /**< CID */
403     /// \brief 16bitVCID
404     B_UINT16                        u16VCID;            /**< VCID */
405     /// \brief 32bitSFID
406     B_UINT32                        u32SFID;            /**< SFID */
407         /// \brief 8bit Confirmation code
408         B_UINT8                         u8ConfirmationCode;     /**< Confirmation code */
409         B_UINT8                         u8Padding1[3];          /**< 3 byte Padding  */
410 }stLocalSFDeleteIndication;
411
412 typedef struct _stIM_SFHostNotify
413 {
414         B_UINT32        SFID;      //SFID of the service flow
415         B_UINT16        newCID;   //the new/changed CID
416         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
417         B_UINT8         RetainSF;        //Indication to Host if the SF is to be retained or deleted; if TRUE-retain else delete
418         B_UINT8         QoSParamSet; //QoS paramset of the retained SF
419         B_UINT16        u16reserved;  //For byte alignment
420
421 } stIM_SFHostNotify;
422
423 #endif