Commit 3bd591bf authored by calvin wang's avatar calvin wang

change bsr trigger

parent 6097e051
...@@ -957,6 +957,8 @@ typedef struct { ...@@ -957,6 +957,8 @@ typedef struct {
uint16_t BSR_bytes[MAX_NUM_LCGID]; uint16_t BSR_bytes[MAX_NUM_LCGID];
/// after multiplexing buffer remain for each lcid /// after multiplexing buffer remain for each lcid
uint16_t LCID_buffer_remain[MAX_NUM_LCID]; uint16_t LCID_buffer_remain[MAX_NUM_LCID];
/// sum of all lcid buffer size
uint16_t All_lcid_buffer_size_lastTTI;
/// buffer status for each lcid /// buffer status for each lcid
uint8_t LCID_status[MAX_NUM_LCID]; uint8_t LCID_status[MAX_NUM_LCID];
/// SR pending as defined in 36.321 /// SR pending as defined in 36.321
......
...@@ -316,8 +316,6 @@ uint32_t ue_get_SR(module_id_t module_idP,int CC_id,frame_t frameP,uint8_t eNB_i ...@@ -316,8 +316,6 @@ uint32_t ue_get_SR(module_id_t module_idP,int CC_id,frame_t frameP,uint8_t eNB_i
UE_mac_inst[module_idP].scheduling_info.SR_pending=0; UE_mac_inst[module_idP].scheduling_info.SR_pending=0;
UE_mac_inst[module_idP].scheduling_info.SR_COUNTER=0; UE_mac_inst[module_idP].scheduling_info.SR_COUNTER=0;
// release all pucch resource // release all pucch resource
UE_mac_inst[module_idP].physicalConfigDedicated = NULL;
UE_mac_inst[module_idP].ul_active=0;
UE_mac_inst[module_idP].BSR_reporting_active[REGULAR_BSR]=0; UE_mac_inst[module_idP].BSR_reporting_active[REGULAR_BSR]=0;
UE_mac_inst[module_idP].BSR_reporting_active[PADDING_BSR]=0; UE_mac_inst[module_idP].BSR_reporting_active[PADDING_BSR]=0;
UE_mac_inst[module_idP].BSR_reporting_active[PERIODIC_BSR]=0; UE_mac_inst[module_idP].BSR_reporting_active[PERIODIC_BSR]=0;
...@@ -1313,11 +1311,11 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf ...@@ -1313,11 +1311,11 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
bsr_type = get_bsr_type(module_idP, eNB_index, frameP, buflen-phr_len); bsr_type = get_bsr_type(module_idP, eNB_index, frameP, buflen-phr_len);
if (bsr_type == LONG_BSR) { if (bsr_type == LONG_BSR) {
bsr_len = sizeof(SCH_SUBHEADER_FIXED)+sizeof(BSR_LONG);; bsr_len = sizeof(SCH_SUBHEADER_FIXED)+sizeof(BSR_LONG);
LOG_D(MAC,"[UE %d] header size info: dcch %d, dcch1 %d, dtch %d, bsr (bsr_type%d) buff_len %d\n", LOG_D(MAC,"[UE %d] header size info: dcch %d, dcch1 %d, dtch %d, bsr (bsr_type%d) buff_len %d\n",
module_idP, dcch_header_len,dcch1_header_len,dtch_header_len, bsr_type, buflen); module_idP, dcch_header_len,dcch1_header_len,dtch_header_len, bsr_type, buflen);
} else if ((bsr_type == SHORT_BSR) || (bsr_type == TRUNCATED_BSR)) { } else if ((bsr_type == SHORT_BSR) || (bsr_type == TRUNCATED_BSR)) {
bsr_len = sizeof(SCH_SUBHEADER_FIXED)+sizeof(BSR_SHORT);; bsr_len = sizeof(SCH_SUBHEADER_FIXED)+sizeof(BSR_SHORT);
LOG_D(MAC,"[UE %d] header size info: dcch %d, dcch1 %d, dtch %d, bsr (bsr_type%d) buff_len %d\n", LOG_D(MAC,"[UE %d] header size info: dcch %d, dcch1 %d, dtch %d, bsr (bsr_type%d) buff_len %d\n",
module_idP, dcch_header_len,dcch1_header_len,dtch_header_len, bsr_type, buflen); module_idP, dcch_header_len,dcch1_header_len,dtch_header_len, bsr_type, buflen);
} else { } else {
...@@ -1517,8 +1515,8 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf ...@@ -1517,8 +1515,8 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
bsr_s->LCGID = lcgid; bsr_s->LCGID = lcgid;
bsr_s->Buffer_size = UE_mac_inst[module_idP].scheduling_info.BSR[lcgid]; bsr_s->Buffer_size = UE_mac_inst[module_idP].scheduling_info.BSR[lcgid];
LOG_D(MAC,"[UE %d] Frame %d report SHORT BSR with level %d for LCGID %d\n", LOG_I(MAC,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[UE %d] Frame %d SubFrame %d,report SHORT BSR with level %d for LCGID %d\n",
module_idP, frameP, UE_mac_inst[module_idP].scheduling_info.BSR[lcgid],lcgid); module_idP, frameP, subframe, UE_mac_inst[module_idP].scheduling_info.BSR[lcgid],lcgid);
UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcgid] = 0; UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcgid] = 0;
UE_mac_inst[module_idP].scheduling_info.BSR[lcgid] = 0; UE_mac_inst[module_idP].scheduling_info.BSR[lcgid] = 0;
} else if (bsr_type == TRUNCATED_BSR) { } else if (bsr_type == TRUNCATED_BSR) {
...@@ -2068,6 +2066,7 @@ int get_bsr_lcgid (module_id_t module_idP) ...@@ -2068,6 +2066,7 @@ int get_bsr_lcgid (module_id_t module_idP)
if (UE_mac_inst[module_idP].scheduling_info.BSR[lcgid] > 0 ) { if (UE_mac_inst[module_idP].scheduling_info.BSR[lcgid] > 0 ) {
lcgid_tmp = lcgid; lcgid_tmp = lcgid;
num_active_lcgid+=1; num_active_lcgid+=1;
printf("////////////////////////////////lcgid %d, BSR %d\n",lcgid,UE_mac_inst[module_idP].scheduling_info.BSR[lcgid]);
} }
} }
...@@ -2090,6 +2089,7 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1 ...@@ -2090,6 +2089,7 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1
int short_bsr_size=sizeof(SCH_SUBHEADER_FIXED)+sizeof(BSR_SHORT); int short_bsr_size=sizeof(SCH_SUBHEADER_FIXED)+sizeof(BSR_SHORT);
int bsr_group_id[MAX_NUM_LCGID]; int bsr_group_id[MAX_NUM_LCGID];
int lcg_report_num=0; int lcg_report_num=0;
int new_data_arrived_flag=0;
for (lcgid=0; lcgid < MAX_NUM_LCGID; lcgid++ ) { for (lcgid=0; lcgid < MAX_NUM_LCGID; lcgid++ ) {
bsr_group_id[lcgid] = 0; bsr_group_id[lcgid] = 0;
...@@ -2114,11 +2114,21 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1 ...@@ -2114,11 +2114,21 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1
*/ */
if (rlc_status.bytes_in_buffer > UE_mac_inst[module_idP].scheduling_info.LCID_buffer_remain[lcid]) { if (rlc_status.bytes_in_buffer > UE_mac_inst[module_idP].scheduling_info.LCID_buffer_remain[lcid]) {
bsr_group_id[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]] ++; bsr_group_id[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]] ++;
new_data_arrived_flag = 1;
UE_mac_inst[module_idP].BSR_reporting_active[REGULAR_BSR] = 1; UE_mac_inst[module_idP].BSR_reporting_active[REGULAR_BSR] = 1;
} }
} }
} }
/*
// one lcid buffer increased and all lcid buffer increased
if ((new_data_arrived_flag == 1) && (pdu > UE_mac_inst[module_idP].scheduling_info.All_lcid_buffer_size_lastTTI)) {
UE_mac_inst[module_idP].BSR_reporting_active[REGULAR_BSR] = 1;
}
*/
UE_mac_inst[module_idP].scheduling_info.All_lcid_buffer_size_lastTTI = pdu;
/* or there is no data available for transmission for any of the logical channels which belong to a LCG, /* or there is no data available for transmission for any of the logical channels which belong to a LCG,
in which case the BSR is referred below to as "Regular BSR" in which case the BSR is referred below to as "Regular BSR"
if (pdu == 0) { if (pdu == 0) {
...@@ -2130,6 +2140,7 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1 ...@@ -2130,6 +2140,7 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1
for (lcgid=0; lcgid < MAX_NUM_LCGID; lcgid++ ) { for (lcgid=0; lcgid < MAX_NUM_LCGID; lcgid++ ) {
if (bsr_group_id[lcgid] > 0) { if (bsr_group_id[lcgid] > 0) {
lcg_report_num ++; lcg_report_num ++;
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@lcgid bsr %d > 0\n",lcgid);
} }
} }
/* /*
...@@ -2150,6 +2161,7 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1 ...@@ -2150,6 +2161,7 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1
bsr_type = LONG_BSR; bsr_type = LONG_BSR;
} else { } else {
bsr_type = SHORT_BSR; bsr_type = SHORT_BSR;
printf("-----------------------------------REGULAR_BSR or PERIODIC_BSR bsr trigger short bsr\n");
} }
} }
/* For Padding BSR: /* For Padding BSR:
...@@ -2170,12 +2182,13 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1 ...@@ -2170,12 +2182,13 @@ int get_bsr_type (module_id_t module_idP, uint8_t eNB_index,frame_t frameP,uint1
bsr_type = LONG_BSR; bsr_type = LONG_BSR;
} else { } else {
bsr_type = SHORT_BSR; bsr_type = SHORT_BSR;
printf("+++++++++++++++++++++++++++++++++++padding bsr trigger short bsr\n");
} }
} }
} }
if ( bsr_type > 0 ) { if ( bsr_type > 0 ) {
LOG_D(MAC, "[UE %d] bsr_type %d (Transport Block Size %d, MAC pdu len %d) lcg_report_num %d\n", LOG_I(MAC, "[UE %d] bsr_type %d (Transport Block Size %d, MAC pdu len %d) lcg_report_num %d\n",
module_idP, bsr_type, buflen, pdu, lcg_report_num); module_idP, bsr_type, buflen, pdu, lcg_report_num);
} }
...@@ -2213,8 +2226,8 @@ boolean_t update_bsr(module_id_t module_idP, frame_t frameP, eNB_index_t eNB_in ...@@ -2213,8 +2226,8 @@ boolean_t update_bsr(module_id_t module_idP, frame_t frameP, eNB_index_t eNB_in
UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcg_id] += rlc_status.bytes_in_buffer; UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcg_id] += rlc_status.bytes_in_buffer;
UE_mac_inst[module_idP].scheduling_info.BSR[lcg_id] = locate_BsrIndexByBufferSize(BSR_TABLE, BSR_TABLE_SIZE, UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcg_id]); UE_mac_inst[module_idP].scheduling_info.BSR[lcg_id] = locate_BsrIndexByBufferSize(BSR_TABLE, BSR_TABLE_SIZE, UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcg_id]);
// UE_mac_inst[module_idP].scheduling_info.BSR_short_lcid = lcid; // only applicable to short bsr // UE_mac_inst[module_idP].scheduling_info.BSR_short_lcid = lcid; // only applicable to short bsr
LOG_D(MAC,"[UE %d] BSR level %d (LCGID %d, rlc buffer %d byte)\n", LOG_D(MAC,"[UE %d] BSR level %d (LCGID %d,lcid %d rlc buffer %d byte)\n",
module_idP, UE_mac_inst[module_idP].scheduling_info.BSR[lcg_id],lcg_id, UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcg_id]); module_idP, UE_mac_inst[module_idP].scheduling_info.BSR[lcg_id],lcg_id, lcid,UE_mac_inst[module_idP].scheduling_info.BSR_bytes[lcg_id]);
} else { } else {
UE_mac_inst[module_idP].scheduling_info.LCID_status[lcid]=LCID_EMPTY; UE_mac_inst[module_idP].scheduling_info.LCID_status[lcid]=LCID_EMPTY;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment