mirror of https://github.com/PentHertz/srsLTE.git
Added mutex to ul/dl harq reset
This commit is contained in:
parent
73602a8558
commit
8591049e92
|
@ -76,10 +76,14 @@ void pdu_queue::deallocate(uint8_t* pdu)
|
|||
*/
|
||||
void pdu_queue::push(uint8_t *ptr, uint32_t len, uint32_t tstamp)
|
||||
{
|
||||
pdu_t *pdu = (pdu_t*) ptr;
|
||||
pdu->len = len;
|
||||
pdu->tstamp = tstamp;
|
||||
pdu_q.push(pdu);
|
||||
if (ptr) {
|
||||
pdu_t *pdu = (pdu_t*) ptr;
|
||||
pdu->len = len;
|
||||
pdu->tstamp = tstamp;
|
||||
pdu_q.push(pdu);
|
||||
} else {
|
||||
log_h->warning("Error pushing pdu: ptr is empty\n");
|
||||
}
|
||||
}
|
||||
|
||||
bool pdu_queue::process_pdus()
|
||||
|
|
|
@ -196,6 +196,8 @@ private:
|
|||
is_initiated = false;
|
||||
ack = false;
|
||||
bzero(&cur_grant, sizeof(Tgrant));
|
||||
|
||||
pthread_mutex_init(&mutex, NULL);
|
||||
}
|
||||
|
||||
~dl_tb_process() {
|
||||
|
@ -220,16 +222,23 @@ private:
|
|||
}
|
||||
|
||||
void reset(void) {
|
||||
pthread_mutex_lock(&mutex);
|
||||
is_first_tb = true;
|
||||
ack = false;
|
||||
payload_buffer_ptr = NULL;
|
||||
if (payload_buffer_ptr) {
|
||||
harq_entity->demux_unit->deallocate(payload_buffer_ptr);
|
||||
}
|
||||
bzero(&cur_grant, sizeof(Tgrant));
|
||||
if (is_initiated) {
|
||||
srslte_softbuffer_rx_reset(&softbuffer);
|
||||
}
|
||||
pthread_mutex_unlock(&mutex);
|
||||
}
|
||||
|
||||
void new_grant_dl(Tgrant grant, Taction *action) {
|
||||
|
||||
pthread_mutex_lock(&mutex);
|
||||
|
||||
// Compute RV for BCCH when not specified in PDCCH format
|
||||
if (pid == HARQ_BCCH_PID && grant.rv[tid] == -1) {
|
||||
uint32_t k;
|
||||
|
@ -271,6 +280,7 @@ private:
|
|||
if (!action->payload_ptr[tid]) {
|
||||
action->decode_enabled[tid] = false;
|
||||
Error("Can't get a buffer for TBS=%d\n", cur_grant.n_bytes[tid]);
|
||||
pthread_mutex_unlock(&mutex);
|
||||
return;
|
||||
}
|
||||
action->decode_enabled[tid]= true;
|
||||
|
@ -299,6 +309,8 @@ private:
|
|||
Debug("Generating ACK\n");
|
||||
}
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&mutex);
|
||||
}
|
||||
|
||||
void tb_decoded(bool ack_) {
|
||||
|
@ -364,6 +376,8 @@ private:
|
|||
return is_new_transmission;
|
||||
}
|
||||
|
||||
pthread_mutex_t mutex;
|
||||
|
||||
bool is_initiated;
|
||||
dl_harq_entity *harq_entity;
|
||||
srslte::log *log_h;
|
||||
|
|
|
@ -159,6 +159,8 @@ private:
|
|||
tti_last_tx = 0;
|
||||
payload_buffer = NULL;
|
||||
bzero(&cur_grant, sizeof(Tgrant));
|
||||
|
||||
pthread_mutex_init(&mutex, NULL);
|
||||
}
|
||||
|
||||
~ul_harq_process()
|
||||
|
@ -193,17 +195,21 @@ private:
|
|||
|
||||
void reset()
|
||||
{
|
||||
pthread_mutex_lock(&mutex);
|
||||
current_tx_nb = 0;
|
||||
current_irv = 0;
|
||||
tti_last_tx = 0;
|
||||
is_grant_configured = false;
|
||||
bzero(&cur_grant, sizeof(Tgrant));
|
||||
pthread_mutex_unlock(&mutex);
|
||||
}
|
||||
|
||||
void reset_ndi() { cur_grant.ndi[0] = false; }
|
||||
|
||||
void run_tti(uint32_t tti_tx, Tgrant *grant, bool *ack, Taction* action)
|
||||
{
|
||||
pthread_mutex_lock(&mutex);
|
||||
|
||||
if (ack) {
|
||||
if (grant) {
|
||||
if (grant->ndi[0] == get_ndi() && grant->phy_grant.ul.mcs.tbs != 0) {
|
||||
|
@ -276,6 +282,8 @@ private:
|
|||
}
|
||||
harq_entity->pcap->write_ul_crnti(pdu_ptr, grant->n_bytes[0], grant->rnti, get_nof_retx(), tti_tx);
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&mutex);
|
||||
}
|
||||
|
||||
uint32_t get_rv()
|
||||
|
@ -304,7 +312,8 @@ private:
|
|||
bool is_msg3;
|
||||
bool is_initiated;
|
||||
uint32_t tti_last_tx;
|
||||
|
||||
|
||||
pthread_mutex_t mutex;
|
||||
|
||||
const static int payload_buffer_len = 128*1024;
|
||||
uint8_t *payload_buffer;
|
||||
|
|
|
@ -768,6 +768,8 @@ void rrc::earfcn_end() {
|
|||
// If searching for PLMN, indicate NAS we scanned all frequencies
|
||||
if (state == RRC_STATE_PLMN_SELECTION) {
|
||||
nas->plmn_search_end();
|
||||
} else if (state == RRC_STATE_CONNECTED) {
|
||||
leave_connected();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue