Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/upstream-linus
[linux-btrfs-devel.git] / drivers / staging / bcm / cntrl_SignalingInterface.h
blobab131806e2c9ce0431cff2e0a4cda0dde95691cd
1 #ifndef CNTRL_SIGNALING_INTERFACE_
2 #define CNTRL_SIGNALING_INTERFACE_
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
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
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
42 ////////////////////////////////////////////////////////////////////////////////
43 ////////////////////////structure Definitions///////////////////////////////////
44 ////////////////////////////////////////////////////////////////////////////////
45 /// \brief class cCPacketClassificationRule
46 struct _stCPacketClassificationRuleSI{
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;
104 typedef struct _stCPacketClassificationRuleSI CCPacketClassificationRuleSI,stCPacketClassificationRuleSI, *pstCPacketClassificationRuleSI;
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];
127 B_UINT8 u8Padding[2];
128 }stPhsRuleSI,*pstPhsRuleSI;
129 typedef stPhsRuleSI CPhsRuleSI;
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;
144 typedef struct _stConvergenceSLTypes stConvergenceSLTypes,CConvergenceSLTypes, *pstConvergenceSLTypes;
147 /// \brief structure CServiceFlowParamSI
148 typedef struct _stServiceFlowParamSI{
150 /** 32bitSFID Of The Service Flow*/
151 B_UINT32 u32SFID;
153 /** 32bit Maximum Sustained Traffic Rate of the Service Flow*/
154 B_UINT32 u32MaxSustainedTrafficRate;
156 /** 32bit Maximum Traffic Burst allowed for the Service Flow*/
157 B_UINT32 u32MaxTrafficBurst;
159 /** 32bit Minimum Reserved Traffic Rate of the Service Flow*/
160 B_UINT32 u32MinReservedTrafficRate;
162 /** 32bit Tolerated Jitter of the Service Flow*/
163 B_UINT32 u32ToleratedJitter;
165 /** 32bit Maximum Latency of the Service Flow*/
166 B_UINT32 u32MaximumLatency;
168 /** 16bitCID Of The Service Flow*/
169 B_UINT16 u16CID;
171 /** 16bit SAID on which the service flow being set up shall be mapped*/
172 B_UINT16 u16TargetSAID;
174 /** 16bit ARQ window size negotiated*/
175 B_UINT16 u16ARQWindowSize;
177 /** 16bit Total Tx delay incl sending, receiving & processing delays */
178 B_UINT16 u16ARQRetryTxTimeOut;
180 /** 16bit Total Rx delay incl sending, receiving & processing delays */
181 B_UINT16 u16ARQRetryRxTimeOut;
183 /** 16bit ARQ block lifetime */
184 B_UINT16 u16ARQBlockLifeTime;
186 /** 16bit ARQ Sync loss timeout*/
187 B_UINT16 u16ARQSyncLossTimeOut;
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;
195 //#endif
196 /** 16bit Nominal interval b/w consecutive SDU arrivals at MAC SAP*/
197 B_UINT16 u16SDUInterArrivalTime;
199 /** 16bit Specifies the time base for rate measurement */
200 B_UINT16 u16TimeBase;
202 /** 16bit Interval b/w Successive Grant oppurtunities*/
203 B_UINT16 u16UnsolicitedGrantInterval;
205 /** 16bit Interval b/w Successive Polling grant oppurtunities*/
206 B_UINT16 u16UnsolicitedPollingInterval;
208 /** internal var to get the overhead */
209 B_UINT16 u16MacOverhead;
211 /** MBS contents Identifier*/
212 B_UINT16 u16MBSContentsID[MBS_CONTENTS_ID_LENGTH];
214 /** MBS contents Identifier length*/
215 B_UINT8 u8MBSContentsIDLength;
217 /** ServiceClassName Length Of The Service Flow*/
218 B_UINT8 u8ServiceClassNameLength;
220 /** 32bytes ServiceClassName Of The Service Flow*/
221 B_UINT8 u8ServiceClassName[32];
223 /** 8bit Indicates whether or not MBS service is requested for this Serivce Flow*/
224 B_UINT8 u8MBSService;
226 /** 8bit QOS Parameter Set specifies proper application of QoS paramters to Provisioned, Admitted and Active sets*/
227 B_UINT8 u8QosParamSet;
229 /** 8bit Traffic Priority Of the Service Flow */
230 B_UINT8 u8TrafficPriority;
232 /** 8bit Uplink Grant Scheduling Type of The Service Flow */
233 B_UINT8 u8ServiceFlowSchedulingType;
235 /** 8bit Request transmission Policy of the Service Flow*/
236 B_UINT8 u8RequesttransmissionPolicy;
238 /** 8bit Specifies whether SDUs for this Service flow are of FixedLength or Variable length */
239 B_UINT8 u8FixedLengthVSVariableLengthSDUIndicator;
241 /** 8bit Length of the SDU for a fixed length SDU service flow*/
242 B_UINT8 u8SDUSize;
244 /** 8bit Indicates whether or not ARQ is requested for this connection*/
245 B_UINT8 u8ARQEnable;
247 /**< 8bit Indicates whether or not data has tobe delivered in order to higher layer*/
248 B_UINT8 u8ARQDeliverInOrder;
250 /** 8bit Receiver ARQ ACK processing time */
251 B_UINT8 u8RxARQAckProcessingTime;
253 /** 8bit Convergence Sublayer Specification Of The Service Flow*/
254 B_UINT8 u8CSSpecification;
256 /** 8 bit Type of data delivery service*/
257 B_UINT8 u8TypeOfDataDeliveryService;
259 /** 8bit Specifies whether a service flow may generate Paging */
260 B_UINT8 u8PagingPreference;
262 /** 8bit Indicates the MBS Zone through which the connection or virtual connection is valid */
263 B_UINT8 u8MBSZoneIdentifierassignment;
265 /** 8bit Specifies whether traffic on SF should generate MOB_TRF_IND to MS in sleep mode*/
266 B_UINT8 u8TrafficIndicationPreference;
268 /** 8bit Speciifes the length of predefined Global QoS parameter set encoding for this SF */
269 B_UINT8 u8GlobalServicesClassNameLength;
271 /** 6 byte Speciifes the predefined Global QoS parameter set encoding for this SF */
272 B_UINT8 u8GlobalServicesClassName[GLOBAL_SF_CLASSNAME_LENGTH];
274 /** 8bit Indicates whether or not SN feedback is enabled for the conn */
275 B_UINT8 u8SNFeedbackEnabled;
277 /** Indicates the size of the Fragment Sequence Number for the connection */
278 B_UINT8 u8FSNSize;
280 /** 8bit Number of CIDs in active BS list */
281 B_UINT8 u8CIDAllocation4activeBSsLength;
283 /** CIDs of BS in the active list */
284 B_UINT8 u8CIDAllocation4activeBSs[MAX_NUM_ACTIVE_BS];
286 /** Specifies if PDU extended subheader should be applied on every PDU on this conn*/
287 B_UINT8 u8PDUSNExtendedSubheader4HarqReordering;
289 /** 8bit Specifies whether the connection uses HARQ or not */
290 B_UINT8 u8HARQServiceFlows;
292 /** Specifies the length of Authorization token*/
293 B_UINT8 u8AuthTokenLength;
295 /** Specifies the Authorization token*/
296 B_UINT8 u8AuthToken[AUTH_TOKEN_LENGTH];
298 /** specifes Number of HARQ channels used to carry data length*/
299 B_UINT8 u8HarqChannelMappingLength;
301 /** specifes HARQ channels used to carry data*/
302 B_UINT8 u8HARQChannelMapping[NUM_HARQ_CHANNELS];
304 /** 8bit Length of Vendor Specific QoS Params */
305 B_UINT8 u8VendorSpecificQoSParamLength;
307 /** 1byte Vendor Specific QoS Param Of The Service Flow*/
308 B_UINT8 u8VendorSpecificQoSParam[VENDOR_SPECIF_QOS_PARAM];
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*/
316 Structure for Convergence SubLayer Types with a maximum of 4 classifiers
318 stConvergenceSLTypes cConvergenceSLTypes[MAX_CLASSIFIERS_IN_SF];
320 } stServiceFlowParamSI, *pstServiceFlowParamSI;
321 typedef stServiceFlowParamSI CServiceFlowParamSI;
324 structure stLocalSFAddRequest
326 typedef struct _stLocalSFAddRequest{
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
338 stServiceFlowParamSI *psfParameterSet; /**< structure ParameterSet*/
340 }stLocalSFAddRequest, *pstLocalSFAddRequest;
344 structure stLocalSFAddIndication
346 typedef struct _stLocalSFAddIndication{
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*/
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 */
368 B_UINT16 u16Padd; /**< 16 bit Padding */
370 }stLocalSFAddIndication;
373 typedef struct _stLocalSFAddIndication *pstLocalSFAddIndication;
375 structure stLocalSFChangeRequest is same as structure stLocalSFAddIndication
377 typedef struct _stLocalSFAddIndication stLocalSFChangeRequest, *pstLocalSFChangeRequest;
379 structure stLocalSFChangeIndication is same as structure stLocalSFAddIndication
381 typedef struct _stLocalSFAddIndication stLocalSFChangeIndication, *pstLocalSFChangeIndication;
384 structure stLocalSFDeleteRequest
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;
395 structure stLocalSFDeleteIndication
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;
412 typedef struct _stIM_SFHostNotify
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
421 } stIM_SFHostNotify;
423 #endif