#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