aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/bcm/cntrl_SignalingInterface.h
blob: 8683c2d4276e153894f8f8c31a63a0900cf641a4 (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 */
	u16 u16UserPriority;
	/* 16bit VLANID Of The Service Flow */
	u16 u16VLANID;
	/* 16bit Packet Classification RuleIndex Of The Service Flow */
	u16 u16PacketClassificationRuleIndex;
	/* 8bit Classifier Rule Priority Of The Service Flow */
	u8 u8ClassifierRulePriority;
	/* Length of IP TypeOfService field */
	u8 u8IPTypeOfServiceLength;
	/* 3bytes IP TypeOfService */
	u8 u8IPTypeOfService[TYPE_OF_SERVICE_LENGTH];
	/* Protocol used in classification of Service Flow */
	u8 u8Protocol;
	/* Length of IP Masked Source Address */
	u8 u8IPMaskedSourceAddressLength;
	/* IP Masked Source Address used in classification for the Service Flow */
	u8 u8IPMaskedSourceAddress[IP_MASKED_SRC_ADDRESS_LENGTH];
	/* Length of IP Destination Address */
	u8 u8IPDestinationAddressLength;
	/* IP Destination Address used in classification for the Service Flow */
	u8 u8IPDestinationAddress[IP_MASKED_DEST_ADDRESS_LENGTH];
	/* Length of Protocol Source Port Range */
	u8 u8ProtocolSourcePortRangeLength;
	/* Protocol Source Port Range used in the Service Flow */
	u8 u8ProtocolSourcePortRange[PROTOCOL_SRC_PORT_RANGE_LENGTH];
	/* Length of Protocol Dest Port Range */
	u8 u8ProtocolDestPortRangeLength;
	/* Protocol Dest Port Range used in the Service Flow */
	u8 u8ProtocolDestPortRange[PROTOCOL_DEST_PORT_RANGE_LENGTH];
	/* Length of Ethernet Destination MAC Address */
	u8 u8EthernetDestMacAddressLength;
	/* Ethernet Destination MAC Address  used in classification of the Service Flow */
	u8 u8EthernetDestMacAddress[ETHERNET_DEST_MAC_ADDR_LENGTH];
	/* Length of Ethernet Source MAC Address */
	u8 u8EthernetSourceMACAddressLength;
	/* Ethernet Source MAC Address  used in classification of the Service Flow */
	u8 u8EthernetSourceMACAddress[ETHERNET_SRC_MAC_ADDR_LENGTH];
	/* Length of Ethertype */
	u8 u8EthertypeLength;
	/* 3bytes Ethertype Of The Service Flow */
	u8 u8Ethertype[NUM_ETHERTYPE_BYTES];
	/* 8bit Associated PHSI Of The Service Flow */
	u8 u8AssociatedPHSI;
	/* Length of Vendor Specific Classifier Param length Of The Service Flow */
	u8 u8VendorSpecificClassifierParamLength;
	/* Vendor Specific Classifier Param Of The Service Flow */
	u8 u8VendorSpecificClassifierParam[VENDOR_CLASSIFIER_PARAM_LENGTH];
	/* Length Of IPv6 Flow Lable of the Service Flow */
	u8 u8IPv6FlowLableLength;
	/* IPv6 Flow Lable Of The Service Flow */
	u8 u8IPv6FlowLable[NUM_IPV6_FLOWLABLE_BYTES];
	/* Action associated with the classifier rule */
	u8 u8ClassifierActionRule;
	u16 u16ValidityBitMap;
};

struct bcm_phs_rules {
	/* 8bit PHS Index Of The Service Flow */
	u8 u8PHSI;
	/* PHSF Length Of The Service Flow */
	u8 u8PHSFLength;
	/* String of bytes containing header information to be suppressed by the sending CS and reconstructed by the receiving CS */
	u8 u8PHSF[MAX_PHS_LENGTHS];
	/* PHSM Length Of The Service Flow */
	u8 u8PHSMLength;
	/* PHS Mask for the SF */
	u8 u8PHSM[MAX_PHS_LENGTHS];
	/* 8bit Total number of bytes to be suppressed for the Service Flow */
	u8 u8PHSS;
	/* 8bit Indicates whether or not Packet Header contents need to be verified prior to suppression */
	u8 u8PHSV;
	/* Vendor Specific PHS param Length Of The Service Flow */
	u8 u8VendorSpecificPHSParamsLength;
	/* Vendor Specific PHS param Of The Service Flow */
	u8 u8VendorSpecificPHSParams[VENDOR_PHS_PARAM_LENGTH];
	u8 u8Padding[2];
};

struct bcm_convergence_types {
	/* 8bit Phs Classfier Action Of The Service Flow */
	u8 u8ClassfierDSCAction;
	/* 8bit Phs DSC Action Of The Service Flow */
	u8 u8PhsDSCAction;
	/* 16bit Padding */
	u8 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 */
	u32 u32SFID;
	/* 32bit Maximum Sustained Traffic Rate of the Service Flow */
	u32 u32MaxSustainedTrafficRate;
	/* 32bit Maximum Traffic Burst allowed for the Service Flow */
	u32 u32MaxTrafficBurst;
	/* 32bit Minimum Reserved Traffic Rate of the Service Flow */
	u32 u32MinReservedTrafficRate;
	/* 32bit Tolerated Jitter of the Service Flow */
	u32 u32ToleratedJitter;
	/* 32bit Maximum Latency of the Service Flow */
	u32 u32MaximumLatency;
	/* 16bitCID Of The Service Flow */
	u16 u16CID;
	/* 16bit SAID on which the service flow being set up shall be mapped */
	u16 u16TargetSAID;
	/* 16bit  ARQ window size negotiated */
	u16 u16ARQWindowSize;
	/* 16bit Total Tx delay incl sending, receiving & processing delays */
	u16 u16ARQRetryTxTimeOut;
	/* 16bit Total Rx delay incl sending, receiving & processing delays */
	u16 u16ARQRetryRxTimeOut;
	/* 16bit ARQ block lifetime */
	u16 u16ARQBlockLifeTime;
	/* 16bit ARQ Sync loss timeout */
	u16 u16ARQSyncLossTimeOut;
	/* 16bit ARQ Purge timeout */
	u16 u16ARQRxPurgeTimeOut;
	/* TODO::Remove this once we move to a new CORR2 driver
	 * brief Size of an ARQ block
	 */
	u16 u16ARQBlockSize;
	/* #endif */
	/* 16bit Nominal interval b/w consecutive SDU arrivals at MAC SAP */
	u16 u16SDUInterArrivalTime;
	/* 16bit Specifies the time base for rate measurement */
	u16 u16TimeBase;
	/* 16bit Interval b/w Successive Grant oppurtunities */
	u16 u16UnsolicitedGrantInterval;
	/* 16bit Interval b/w Successive Polling grant oppurtunities */
	u16 u16UnsolicitedPollingInterval;
	/* internal var to get the overhead */
	u16 u16MacOverhead;
	/* MBS contents Identifier */
	u16 u16MBSContentsID[MBS_CONTENTS_ID_LENGTH];
	/* MBS contents Identifier length */
	u8 u8MBSContentsIDLength;
	/* ServiceClassName Length Of The Service Flow */
	u8 u8ServiceClassNameLength;
	/* 32bytes ServiceClassName Of The Service Flow */
	u8 u8ServiceClassName[32];
	/* 8bit Indicates whether or not MBS service is requested for this Serivce Flow */
	u8 u8MBSService;
	/* 8bit QOS Parameter Set specifies proper application of QoS parameters to Provisioned, Admitted and Active sets */
	u8 u8QosParamSet;
	/* 8bit Traffic Priority Of the Service Flow */
	u8 u8TrafficPriority;
	/* 8bit Uplink Grant Scheduling Type of The Service Flow */
	u8 u8ServiceFlowSchedulingType;
	/* 8bit Request transmission Policy of the Service Flow */
	u8 u8RequesttransmissionPolicy;
	/* 8bit Specifies whether SDUs for this Service flow are of FixedLength or Variable length */
	u8 u8FixedLengthVSVariableLengthSDUIndicator;
	/* 8bit Length of the SDU for a fixed length SDU service flow */
	u8 u8SDUSize;
	/* 8bit Indicates whether or not ARQ is requested for this connection */
	u8 u8ARQEnable;
	/* < 8bit Indicates whether or not data has tobe delivered in order to higher layer */
	u8 u8ARQDeliverInOrder;
	/* 8bit Receiver ARQ ACK processing time */
	u8 u8RxARQAckProcessingTime;
	/* 8bit Convergence Sublayer Specification Of The Service Flow */
	u8 u8CSSpecification;
	/* 8 bit Type of data delivery service */
	u8 u8TypeOfDataDeliveryService;
	/* 8bit Specifies whether a service flow may generate Paging */
	u8 u8PagingPreference;
	/* 8bit Indicates the MBS Zone through which the connection or virtual connection is valid */
	u8 u8MBSZoneIdentifierassignment;
	/* 8bit Specifies whether traffic on SF should generate MOB_TRF_IND to MS in sleep mode */
	u8 u8TrafficIndicationPreference;
	/* 8bit Speciifes the length of predefined Global QoS parameter set encoding for this SF */
	u8 u8GlobalServicesClassNameLength;
	/* 6 byte Speciifes the predefined Global QoS parameter set encoding for this SF */
	u8 u8GlobalServicesClassName[GLOBAL_SF_CLASSNAME_LENGTH];
	/* 8bit Indicates whether or not SN feedback is enabled for the conn */
	u8 u8SNFeedbackEnabled;
	/* Indicates the size of the Fragment Sequence Number for the connection */
	u8 u8FSNSize;
	/* 8bit Number of CIDs in active BS list */
	u8 u8CIDAllocation4activeBSsLength;
	/* CIDs of BS in the active list */
	u8 u8CIDAllocation4activeBSs[MAX_NUM_ACTIVE_BS];
	/* Specifies if PDU extended subheader should be applied on every PDU on this conn */
	u8 u8PDUSNExtendedSubheader4HarqReordering;
	/* 8bit Specifies whether the connection uses HARQ or not */
	u8 u8HARQServiceFlows;
	/* Specifies the length of Authorization token */
	u8 u8AuthTokenLength;
	/* Specifies the Authorization token */
	u8 u8AuthToken[AUTH_TOKEN_LENGTH];
	/* specifes Number of HARQ channels used to carry data length */
	u8 u8HarqChannelMappingLength;
	/* specifes HARQ channels used to carry data */
	u8 u8HARQChannelMapping[NUM_HARQ_CHANNELS];
	/* 8bit Length of Vendor Specific QoS Params */
	u8 u8VendorSpecificQoSParamLength;
	/* 1byte  Vendor Specific QoS Param Of The Service Flow */
	u8 u8VendorSpecificQoSParam[VENDOR_SPECIF_QOS_PARAM];
	/* indicates total classifiers in the SF */
	u8 u8TotalClassifiers;  /* < Total number of valid classifiers */
	u8 bValid;	/* < Validity flag */
	u8 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 {
	u8 u8Type;	/* < Type */
	u8 eConnectionDir; /* < Connection direction */
	/* brief 16 bit TID */
	u16 u16TID; /* < 16bit TID */
	/* brief 16bitCID */
	u16 u16CID; /* < 16bit CID */
	/* brief 16bitVCID */
	u16 u16VCID; /* < 16bit VCID */
	struct bcm_connect_mgr_params *psfParameterSet; /* < connection manager parameters */
};

struct bcm_add_indication {
	u8 u8Type;	/* < Type */
	u8 eConnectionDir;	/* < Connection Direction */
	/* brief 16 bit TID */
	u16 u16TID; /* < TID */
	/* brief 16bitCID */
	u16 u16CID; /* < 16bitCID */
	/* brief 16bitVCID */
	u16 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 */
	u8 u8CC; /* <Confirmation Code */
	u8 u8Padd; /* < 8-bit Padding */
	u16 u16Padd; /* < 16 bit Padding */
};

struct bcm_del_request {
	u8 u8Type; /* < Type */
	u8 u8Padding; /* < Padding byte */
	u16 u16TID; /* < TID */
	/* brief 32bitSFID */
	u32 u32SFID; /* < SFID */
};

struct bcm_del_indication {
	u8 u8Type;	/* < Type */
	u8 u8Padding; /* < Padding */
	u16 u16TID; /* < TID */
	/* brief 16bitCID */
	u16 u16CID; /* < CID */
	/* brief 16bitVCID */
	u16 u16VCID; /* < VCID */
	/* brief 32bitSFID */
	u32 u32SFID; /* < SFID */
	/* brief 8bit Confirmation code */
	u8 u8ConfirmationCode; /* < Confirmation code */
	u8 u8Padding1[3]; /* < 3 byte Padding */
};

struct bcm_stim_sfhostnotify {
	u32 SFID; /* SFID of the service flow */
	u16 newCID; /* the new/changed CID */
	u16 VCID; /* Get new Vcid if the flow has been made active in CID update TLV, but was inactive earlier or the orig vcid */
	u8 RetainSF; /* Indication to Host if the SF is to be retained or deleted; if TRUE-retain else delete */
	u8 QoSParamSet; /* QoS paramset of the retained SF */
	u16 u16reserved; /* For byte alignment */
};

#endif