first version of sr bsr. remove test code
This commit is contained in:
@@ -1319,7 +1319,6 @@ void nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
|
|||||||
}
|
}
|
||||||
else { /* SR + eventually ack are transmitted TS 36.213 9.2.5.1 UE procedure for multiplexing HARQ-ACK or CSI and SR */
|
else { /* SR + eventually ack are transmitted TS 36.213 9.2.5.1 UE procedure for multiplexing HARQ-ACK or CSI and SR */
|
||||||
if (pucch->sr_payload == 1) { /* positive scheduling request */
|
if (pucch->sr_payload == 1) { /* positive scheduling request */
|
||||||
LOG_D(MAC,"%s(): SR transmitted pucch_resource == NULL O_SR %d O_ACK %d O_CSI %d\n",__func__, O_SR, O_ACK, O_CSI);
|
|
||||||
if (O_ACK == 1)
|
if (O_ACK == 1)
|
||||||
pucch_pdu->mcs = sequence_cyclic_shift_1_harq_ack_bit_positive_sr[pucch->ack_payload & 0x1]; /* positive SR and harq of 1 bit */
|
pucch_pdu->mcs = sequence_cyclic_shift_1_harq_ack_bit_positive_sr[pucch->ack_payload & 0x1]; /* positive SR and harq of 1 bit */
|
||||||
else if (O_ACK == 2)
|
else if (O_ACK == 2)
|
||||||
@@ -1437,7 +1436,6 @@ void nr_ue_configure_pucch(NR_UE_MAC_INST_t *mac,
|
|||||||
}
|
}
|
||||||
else { /* SR + eventually ack are transmitted TS 36.213 9.2.5.1 UE procedure for multiplexing HARQ-ACK or CSI and SR */
|
else { /* SR + eventually ack are transmitted TS 36.213 9.2.5.1 UE procedure for multiplexing HARQ-ACK or CSI and SR */
|
||||||
if (pucch->sr_payload == 1) { /* positive scheduling request */
|
if (pucch->sr_payload == 1) { /* positive scheduling request */
|
||||||
LOG_D(MAC,"%s(): SR transmitted PR_format0 O_SR %d O_ACK %d O_CSI %d\n",__func__, O_SR, O_ACK, O_CSI);
|
|
||||||
if (O_ACK == 1)
|
if (O_ACK == 1)
|
||||||
pucch_pdu->mcs = sequence_cyclic_shift_1_harq_ack_bit_positive_sr[pucch->ack_payload & 0x1]; /* positive SR and harq of 1 bit */
|
pucch_pdu->mcs = sequence_cyclic_shift_1_harq_ack_bit_positive_sr[pucch->ack_payload & 0x1]; /* positive SR and harq of 1 bit */
|
||||||
else if (O_ACK == 2)
|
else if (O_ACK == 2)
|
||||||
@@ -2146,7 +2144,7 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
// no UL-SCH resources available for this tti && UE has a valid PUCCH resources for SR configuration for this tti
|
// no UL-SCH resources available for this tti && UE has a valid PUCCH resources for SR configuration for this tti
|
||||||
DevCheck(module_idP < (int) NB_UE_INST, module_idP, NB_NR_UE_MAC_INST, 0);
|
DevCheck(module_idP < (int) NB_UE_INST, module_idP, NB_NR_UE_MAC_INST, 0);
|
||||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_idP);
|
NR_UE_MAC_INST_t *mac = get_mac_inst(module_idP);
|
||||||
#if 0
|
#if 0 // todo
|
||||||
// int MGL=6;// measurement gap length in ms
|
// int MGL=6;// measurement gap length in ms
|
||||||
int MGRP = 0; // measurement gap repetition period in ms
|
int MGRP = 0; // measurement gap repetition period in ms
|
||||||
int gapOffset = -1;
|
int gapOffset = -1;
|
||||||
@@ -2191,8 +2189,8 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
physicalConfigDedicated->schedulingRequestConfig->choice.setup.
|
physicalConfigDedicated->schedulingRequestConfig->choice.setup.
|
||||||
dsr_TransMax)))) {
|
dsr_TransMax)))) {
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
"[UE %d][SR %x] Frame %d slot %d PHY asks for SR (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d\n",
|
"[UE %d] Frame %d slot %d PHY asks for SR (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d\n",
|
||||||
module_idP, rnti, frameP, slot,
|
module_idP, frameP, slot,
|
||||||
mac->scheduling_info.SR_COUNTER,
|
mac->scheduling_info.SR_COUNTER,
|
||||||
(1 <<
|
(1 <<
|
||||||
(2 +
|
(2 +
|
||||||
@@ -2201,11 +2199,10 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
setup.dsr_TransMax)),
|
setup.dsr_TransMax)),
|
||||||
mac->scheduling_info.SR_pending);
|
mac->scheduling_info.SR_pending);
|
||||||
#endif
|
#endif
|
||||||
DSR_TRANSMAX_t dsr_TransMax = sr_n64; //TBD
|
DSR_TRANSMAX_t dsr_TransMax = sr_n64; // todo
|
||||||
uint16_t rnti = 0; //TBD
|
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
"[UE %d][SR %x] Frame %d slot %d send SR indication (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d\n",
|
"[UE %d] Frame %d slot %d send SR indication (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d\n",
|
||||||
module_idP, rnti, frameP, slot,
|
module_idP, frameP, slot,
|
||||||
mac->scheduling_info.SR_COUNTER,
|
mac->scheduling_info.SR_COUNTER,
|
||||||
(1 <<
|
(1 <<
|
||||||
(2 +
|
(2 +
|
||||||
@@ -2213,13 +2210,13 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
// physicalConfigDedicated->schedulingRequestConfig->choice.
|
// physicalConfigDedicated->schedulingRequestConfig->choice.
|
||||||
// setup.dsr_TransMax)),
|
// setup.dsr_TransMax)),
|
||||||
dsr_TransMax)),
|
dsr_TransMax)),
|
||||||
mac->scheduling_info.SR_pending);
|
mac->scheduling_info.SR_pending); // todo
|
||||||
/*
|
/*
|
||||||
if ((mac->scheduling_info.sr_ProhibitTimer_Running == 0)) {
|
if ((mac->scheduling_info.sr_ProhibitTimer_Running == 0)) {
|
||||||
mac->scheduling_info.SR_pending = 1;
|
mac->scheduling_info.SR_pending = 1;
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
"[UE %d][SR %x] Frame %d slot %d send SR indication (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d, sr_ProhibitTimer_Running == 0\n",
|
"[UE %d] Frame %d slot %d send SR indication (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d, sr_ProhibitTimer_Running == 0\n",
|
||||||
module_idP, rnti, frameP, slot,
|
module_idP, frameP, slot,
|
||||||
mac->scheduling_info.SR_COUNTER,
|
mac->scheduling_info.SR_COUNTER,
|
||||||
(1 <<
|
(1 <<
|
||||||
(2 +
|
(2 +
|
||||||
@@ -2227,10 +2224,10 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
// physicalConfigDedicated->schedulingRequestConfig->choice.
|
// physicalConfigDedicated->schedulingRequestConfig->choice.
|
||||||
// setup.dsr_TransMax)),
|
// setup.dsr_TransMax)),
|
||||||
dsr_TransMax)),
|
dsr_TransMax)),
|
||||||
mac->scheduling_info.SR_pending);
|
mac->scheduling_info.SR_pending); // todo
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
*/
|
*/ // todo
|
||||||
if ((mac->scheduling_info.SR_pending == 1) &&
|
if ((mac->scheduling_info.SR_pending == 1) &&
|
||||||
(mac->scheduling_info.SR_COUNTER <
|
(mac->scheduling_info.SR_COUNTER <
|
||||||
(1 <<
|
(1 <<
|
||||||
@@ -2240,8 +2237,8 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
//dsr_TransMax)))) {
|
//dsr_TransMax)))) {
|
||||||
dsr_TransMax)))) {
|
dsr_TransMax)))) {
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
"[UE %d][SR %x] Frame %d slot %d PHY asks for SR (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d, increment SR_COUNTER\n",
|
"[UE %d] Frame %d slot %d PHY asks for SR (SR_COUNTER/dsr_TransMax %d/%d), SR_pending %d, increment SR_COUNTER\n",
|
||||||
module_idP, rnti, frameP, slot,
|
module_idP, frameP, slot,
|
||||||
mac->scheduling_info.SR_COUNTER,
|
mac->scheduling_info.SR_COUNTER,
|
||||||
(1 <<
|
(1 <<
|
||||||
(2 +
|
(2 +
|
||||||
@@ -2249,7 +2246,7 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
//physicalConfigDedicated->schedulingRequestConfig->choice.
|
//physicalConfigDedicated->schedulingRequestConfig->choice.
|
||||||
//setup.dsr_TransMax)),
|
//setup.dsr_TransMax)),
|
||||||
dsr_TransMax)),
|
dsr_TransMax)),
|
||||||
mac->scheduling_info.SR_pending);
|
mac->scheduling_info.SR_pending); // todo
|
||||||
mac->scheduling_info.SR_COUNTER++;
|
mac->scheduling_info.SR_COUNTER++;
|
||||||
|
|
||||||
// start the sr-prohibittimer : rel 9 and above
|
// start the sr-prohibittimer : rel 9 and above
|
||||||
@@ -2269,8 +2266,8 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
// initiate RA
|
// initiate RA
|
||||||
if (mac->scheduling_info.SR_pending) {
|
if (mac->scheduling_info.SR_pending) {
|
||||||
// release all pucch resource
|
// release all pucch resource
|
||||||
//mac->physicalConfigDedicated = NULL;
|
//mac->physicalConfigDedicated = NULL; // todo
|
||||||
//mac->ul_active = 0;
|
//mac->ul_active = 0; // todo
|
||||||
mac->BSR_reporting_active =
|
mac->BSR_reporting_active =
|
||||||
NR_BSR_TRIGGER_NONE;
|
NR_BSR_TRIGGER_NONE;
|
||||||
LOG_I(MAC, "[UE %d] Release all SRs \n", module_idP);
|
LOG_I(MAC, "[UE %d] Release all SRs \n", module_idP);
|
||||||
|
|||||||
@@ -2510,21 +2510,6 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
// Pointer used to build the MAC PDU by placing the RLC SDUs in the ULSCH buffer
|
// Pointer used to build the MAC PDU by placing the RLC SDUs in the ULSCH buffer
|
||||||
uint8_t *pdu = ulsch_buffer;
|
uint8_t *pdu = ulsch_buffer;
|
||||||
|
|
||||||
/*
|
|
||||||
* test code
|
|
||||||
*/
|
|
||||||
#define test_long_bsr
|
|
||||||
#ifdef test_long_bsr
|
|
||||||
mac->scheduling_info.BSR_bytes[0]=28;
|
|
||||||
mac->scheduling_info.BSR_bytes[1]=75;
|
|
||||||
mac->scheduling_info.BSR_bytes[2]=205;
|
|
||||||
mac->scheduling_info.BSR_bytes[3]=560;
|
|
||||||
mac->scheduling_info.BSR_bytes[4]=1532;
|
|
||||||
mac->scheduling_info.BSR_bytes[5]=4189;
|
|
||||||
mac->scheduling_info.BSR_bytes[6]=11458;
|
|
||||||
mac->scheduling_info.BSR_bytes[7]=31342;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Preparing the MAC CEs sub-PDUs and get the total size
|
// Preparing the MAC CEs sub-PDUs and get the total size
|
||||||
bsr_header_len = 0;
|
bsr_header_len = 0;
|
||||||
//phr_header_len = 1; //sizeof(SCH_SUBHEADER_FIXED);
|
//phr_header_len = 1; //sizeof(SCH_SUBHEADER_FIXED);
|
||||||
@@ -2537,21 +2522,6 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
lcg_id++;
|
lcg_id++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num_lcg_id_with_data) {
|
|
||||||
LOG_D(MAC,
|
|
||||||
"[UE %d] MAC Tx data pending at frame%d subframe %d nb LCG =%d Bytes for LCG0=%d LCG1=%d LCG2=%d LCG3=%d LCG4=%d LCG5=%d LCG6=%d LCG7=%d BSR Trigger status =%d TBS=%d\n",
|
|
||||||
module_idP, frameP, subframe, num_lcg_id_with_data,
|
|
||||||
mac->scheduling_info.BSR_bytes[0],
|
|
||||||
mac->scheduling_info.BSR_bytes[1],
|
|
||||||
mac->scheduling_info.BSR_bytes[2],
|
|
||||||
mac->scheduling_info.BSR_bytes[3],
|
|
||||||
mac->scheduling_info.BSR_bytes[4],
|
|
||||||
mac->scheduling_info.BSR_bytes[5],
|
|
||||||
mac->scheduling_info.BSR_bytes[6],
|
|
||||||
mac->scheduling_info.BSR_bytes[7],
|
|
||||||
mac->BSR_reporting_active, buflen);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Restart ReTxBSR Timer at new grant indication (36.321)
|
//Restart ReTxBSR Timer at new grant indication (36.321)
|
||||||
if (mac->scheduling_info.retxBSR_SF !=
|
if (mac->scheduling_info.retxBSR_SF !=
|
||||||
MAC_UE_BSR_TIMER_NOT_RUNNING) {
|
MAC_UE_BSR_TIMER_NOT_RUNNING) {
|
||||||
@@ -2580,7 +2550,7 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
"Inconsistent BSR Trigger=%d !\n",
|
"Inconsistent BSR Trigger=%d !\n",
|
||||||
mac->BSR_reporting_active);
|
mac->BSR_reporting_active);
|
||||||
|
|
||||||
//A Regular or Periodic BSR can only be sent if TBS >= 4 as transmitting only a BSR is not allowed if UE has data to transmit
|
//A Regular or Periodic BSR can only be sent if TBS is sufficient as transmitting only a BSR is not allowed if UE has data to transmit
|
||||||
if (num_lcg_id_with_data <= 1) {
|
if (num_lcg_id_with_data <= 1) {
|
||||||
if (buflen >= (sizeof(NR_BSR_SHORT)+sizeof(NR_MAC_SUBHEADER_FIXED)+1)) {
|
if (buflen >= (sizeof(NR_BSR_SHORT)+sizeof(NR_MAC_SUBHEADER_FIXED)+1)) {
|
||||||
bsr_ce_len = sizeof(NR_BSR_SHORT); //1 byte
|
bsr_ce_len = sizeof(NR_BSR_SHORT); //1 byte
|
||||||
@@ -2756,34 +2726,7 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bsr_ce_len) {
|
#if 0 // todo
|
||||||
//Print updated BSR when sent
|
|
||||||
LOG_D(MAC,
|
|
||||||
"[UE %d] Remaining Buffer after Tx frame%d subframe %d nb LCG =%d Bytes for LCG0=%d LCG1=%d LCG2=%d LCG3=%d LCG4=%d LCG5=%d LCG6=%d LCG7=%d BSR Trigger status =%d TBS=%d\n",
|
|
||||||
module_idP, frameP, subframe, num_lcg_id_with_data,
|
|
||||||
mac->scheduling_info.BSR_bytes[0],
|
|
||||||
mac->scheduling_info.BSR_bytes[1],
|
|
||||||
mac->scheduling_info.BSR_bytes[2],
|
|
||||||
mac->scheduling_info.BSR_bytes[3],
|
|
||||||
mac->scheduling_info.BSR_bytes[4],
|
|
||||||
mac->scheduling_info.BSR_bytes[5],
|
|
||||||
mac->scheduling_info.BSR_bytes[6],
|
|
||||||
mac->scheduling_info.BSR_bytes[7],
|
|
||||||
mac->BSR_reporting_active, buflen);
|
|
||||||
LOG_D(MAC,
|
|
||||||
"[UE %d] Frame %d Subframe %d TX BSR Regular or Periodic size=%d BSR0=%d BSR1=%d BSR2=%d BSR3=%d BSR4=%d BSR5=%d BSR6=%d BSR7=%d\n",
|
|
||||||
module_idP, frameP, subframe, bsr_ce_len,
|
|
||||||
mac->scheduling_info.BSR[0],
|
|
||||||
mac->scheduling_info.BSR[1],
|
|
||||||
mac->scheduling_info.BSR[2],
|
|
||||||
mac->scheduling_info.BSR[3],
|
|
||||||
mac->scheduling_info.BSR[4],
|
|
||||||
mac->scheduling_info.BSR[5],
|
|
||||||
mac->scheduling_info.BSR[6],
|
|
||||||
mac->scheduling_info.BSR[7]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
// build PHR and update the timers
|
// build PHR and update the timers
|
||||||
if (phr_ce_len == sizeof(POWER_HEADROOM_CMD)) {
|
if (phr_ce_len == sizeof(POWER_HEADROOM_CMD)) {
|
||||||
if(NFAPI_MODE==NFAPI_UE_STUB_PNF) {
|
if(NFAPI_MODE==NFAPI_UE_STUB_PNF) {
|
||||||
@@ -2839,7 +2782,7 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
for (lcid = DCCH; lcid < NR_MAX_NUM_LCID; lcid++) {
|
for (lcid = DCCH; lcid < NR_MAX_NUM_LCID; lcid++) {
|
||||||
// if (mac->
|
// if (mac->
|
||||||
// logicalChannelConfig[lcid] != NULL) {
|
// logicalChannelConfig[lcid] != NULL) {
|
||||||
if (1) {
|
if (1) { // todo
|
||||||
lcg_id =
|
lcg_id =
|
||||||
mac->scheduling_info.
|
mac->scheduling_info.
|
||||||
LCGID[lcid];
|
LCGID[lcid];
|
||||||
@@ -2851,7 +2794,7 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
// (mac->logicalChannelConfig
|
// (mac->logicalChannelConfig
|
||||||
// [lcid]->ul_SpecificParameters->priority <=
|
// [lcid]->ul_SpecificParameters->priority <=
|
||||||
// highest_priority)) {
|
// highest_priority)) {
|
||||||
(1)) {
|
(1)) { //todo
|
||||||
// highest_priority =
|
// highest_priority =
|
||||||
// mac->
|
// mac->
|
||||||
// logicalChannelConfig[lcid]->
|
// logicalChannelConfig[lcid]->
|
||||||
@@ -2898,6 +2841,7 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
mac->scheduling_info.BSR[6];
|
mac->scheduling_info.BSR[6];
|
||||||
bsr_l->Buffer_size7 =
|
bsr_l->Buffer_size7 =
|
||||||
mac->scheduling_info.BSR[7];
|
mac->scheduling_info.BSR[7];
|
||||||
|
/*
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
"[UE %d] Frame %d subframe %d BSR Trig=%d report long BSR (level LCGID0 %d,level LCGID1 %d,level LCGID2 %d,level LCGID3 %d level LCGID4 %d,level LCGID5 %d,level LCGID6 %d,level LCGID7 %d)\n",
|
"[UE %d] Frame %d subframe %d BSR Trig=%d report long BSR (level LCGID0 %d,level LCGID1 %d,level LCGID2 %d,level LCGID3 %d level LCGID4 %d,level LCGID5 %d,level LCGID6 %d,level LCGID7 %d)\n",
|
||||||
module_idP, frameP, subframe,
|
module_idP, frameP, subframe,
|
||||||
@@ -2910,6 +2854,7 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
mac->scheduling_info.BSR[5],
|
mac->scheduling_info.BSR[5],
|
||||||
mac->scheduling_info.BSR[6],
|
mac->scheduling_info.BSR[6],
|
||||||
mac->scheduling_info.BSR[7]);
|
mac->scheduling_info.BSR[7]);
|
||||||
|
*/
|
||||||
} else if (bsr_ce_len == sizeof(NR_BSR_SHORT)) {
|
} else if (bsr_ce_len == sizeof(NR_BSR_SHORT)) {
|
||||||
bsr_l = NULL;
|
bsr_l = NULL;
|
||||||
|
|
||||||
@@ -2947,7 +2892,6 @@ uint8_t nr_ue_get_sdu(module_id_t module_idP,
|
|||||||
|
|
||||||
LOG_D(NR_MAC, "In %s copying %d bytes of MAC CEs to the UL PDU \n", __FUNCTION__, tot_mac_ce_len);
|
LOG_D(NR_MAC, "In %s copying %d bytes of MAC CEs to the UL PDU \n", __FUNCTION__, tot_mac_ce_len);
|
||||||
nr_write_ce_ulsch_pdu(pdu, mac, 0, NULL, bsr_t, bsr_s, bsr_l);
|
nr_write_ce_ulsch_pdu(pdu, mac, 0, NULL, bsr_t, bsr_s, bsr_l);
|
||||||
//memcpy((void *) pdu, (void *) mac_header_control_elements, tot_mac_ce_len);
|
|
||||||
pdu += (unsigned char) tot_mac_ce_len;
|
pdu += (unsigned char) tot_mac_ce_len;
|
||||||
|
|
||||||
#ifdef ENABLE_MAC_PAYLOAD_DEBUG
|
#ifdef ENABLE_MAC_PAYLOAD_DEBUG
|
||||||
|
|||||||
Reference in New Issue
Block a user