aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/bcm/cntrl_SignalingInterface.h
blob: 990e809e968022ddfb29657ce09809517ce439a0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
#ifndef CNTRL_SIGNALING_INTERFACE_
#define CNTRL_SIGNALING_INTERFACE_

#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

#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 accommodate 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

struct bcm_packet_class_rules {
	/* 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;
};

struct bcm_phs_rules {
	/* 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 suppressed 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 suppressed for the Service Flow */
	B_UINT8 u8PHSS;
	/* 8bit Indicates whether or not Packet Header contents need to be verified prior to suppression */
	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];
};

struct bcm_convergence_types {
	/* 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];
	/* Packet classification rules structure */
	struct bcm_packet_class_rules cCPacketClassificationRule;
	/* Payload header suppression rules structure */
	struct bcm_phs_rules cPhsRule;
};

struct bcm_connect_mgr_params {
	/* 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;
	/* 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 parameters 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 */
	/*
	 * Structure for Convergence SubLayer Types with a maximum of 4 classifiers
	 */
	struct bcm_convergence_types cConvergenceSLTypes[MAX_CLASSIFIERS_IN_SF];
};

struct bcm_add_request {
	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 */
	struct bcm_connect_mgr_params *psfParameterSet; /* < connection manager parameters */
};

struct bcm_add_indication {
	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 */
	struct bcm_connect_mgr_params *psfAuthorizedSet; /* Authorized set of connection manager parameters */
	struct bcm_connect_mgr_params *psfAdmittedSet; /* Admitted set of connection manager parameters */
	struct bcm_connect_mgr_params *psfActiveSet; /* Activeset of connection manager parameters */
	B_UINT8 u8CC; /* <Confirmation Code */
	B_UINT8 u8Padd; /* < 8-bit Padding */
	B_UINT16 u16Padd; /* < 16 bit Padding */
};

struct bcm_del_request {
	B_UINT8 u8Type; /* < Type */
	B_UINT8 u8Padding; /* < Padding byte */
	B_UINT16 u16TID; /* < TID */
	/* brief 32bitSFID */
	B_UINT32 u32SFID; /* < SFID */
};

struct bcm_del_indication {
	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 */
};

struct bcm_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 */
};

#endif