#ifdef LTE_L2_MEAS
#define EVENT_RLC_L2_TMR 6
#endif /* LTE_L2_MEAS */
-#define EVENT_RLC_THROUGHPUT_TMR 7
+#define EVENT_RLC_UE_THROUGHPUT_TMR 7
#define EVENT_RLC_UE_DELETE_TMR 8
+#define EVENT_RLC_SNSSAI_THROUGHPUT_TMR 9
/* Wait time for RLC Timers */
#define RLC_UE_DELETE_WAIT_TIME 5 /*in milliseconds */
#endif /* LTE_L2_MEAS */
}RlcUlCb;
+typedef enum
+{
+ SEARCH,
+ CREATE,
+ DELETE
+}RlcSnssaiActionType;
+
typedef struct rlcThptPerUe
{
uint16_t ueId;
uint64_t dataVol;
}RlcThptPerUe;
+typedef struct rlcTptPerSnssai
+{
+ Snssai *snssai;
+ uint64_t dataVol;
+}RlcTptPerSnssai;
+
+
+typedef struct rlcSnssaiTputInfo
+{
+ CmTimer snssaiThptTmr; /* Throughput Timer */
+ CmLListCp *tputPerSnssaiList;
+}RlcSnssaiTputInfo;
+
+typedef struct rlcUeTputInfo
+{
+ CmTimer ueThptTmr; /* Throughput Timer */
+ uint8_t numActvUe; /* Number of Active UEs */
+ RlcThptPerUe thptPerUe[MAX_NUM_UE]; /* Throughput calculated per UE */
+}RlcUeTputInfo;
/**
* @brief Structure to hold information about throughput at RLC
*
*/
typedef struct rlcThpt
{
- Inst inst; /* RLC instance */
- CmTimer thptTmr; /* Throughput Timer */
- uint8_t numActvUe; /* Number of Active UEs */
- RlcThptPerUe thptPerUe[MAX_NUM_UE]; /* Throughput calculated per UE */
+ Inst inst; /* RLC instance */
+ RlcUeTputInfo ueTputInfo;
+ RlcSnssaiTputInfo snssaiTputInfo;
}RlcThpt;
/**
bool rlcChkTmr ARGS((RlcCb *gCb,PTR cb, S16 tmrEvnt));
-void rlcThptTmrExpiry(PTR cb);
+void rlcUeThptTmrExpiry(PTR cb);
uint8_t rlcUeDeleteTmrExpiry(PTR cb);
+void rlcSnssaiThptTmrExpiry(PTR cb);
+RlcTptPerSnssai* rlcHandleSnssaiTputlist(RlcCb *gCb, Snssai *snssai,\
+ RlcSnssaiActionType action);
+void rlcCalculateTputPerSnssai(CmLListCp *snssaiList);
+void rlcDelTputSnssaiList(RlcCb *gCb);
+
#ifdef LTE_L2_MEAS
Void rlcLmmSendAlarm ARGS (( RlcCb *gCb,
uint16_t category,