mirror of https://github.com/PentHertz/srsLTE.git
add del_bearer for RLC/PDCP
This commit is contained in:
parent
ededed9574
commit
91492b87ef
|
@ -274,6 +274,7 @@ public:
|
||||||
virtual void add_bearer(uint32_t lcid) = 0;
|
virtual void add_bearer(uint32_t lcid) = 0;
|
||||||
virtual void add_bearer(uint32_t lcid, srslte::srslte_rlc_config_t cnfg) = 0;
|
virtual void add_bearer(uint32_t lcid, srslte::srslte_rlc_config_t cnfg) = 0;
|
||||||
virtual void add_bearer_mrb(uint32_t lcid) = 0;
|
virtual void add_bearer_mrb(uint32_t lcid) = 0;
|
||||||
|
virtual void del_bearer(uint32_t lcid) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// RLC interface for PDCP
|
// RLC interface for PDCP
|
||||||
|
|
|
@ -60,6 +60,7 @@ public:
|
||||||
void write_sdu_mch(uint32_t lcid, byte_buffer_t *sdu);
|
void write_sdu_mch(uint32_t lcid, byte_buffer_t *sdu);
|
||||||
void add_bearer(uint32_t lcid, srslte_pdcp_config_t cnfg = srslte_pdcp_config_t());
|
void add_bearer(uint32_t lcid, srslte_pdcp_config_t cnfg = srslte_pdcp_config_t());
|
||||||
void add_bearer_mrb(uint32_t lcid, srslte_pdcp_config_t cnfg = srslte_pdcp_config_t());
|
void add_bearer_mrb(uint32_t lcid, srslte_pdcp_config_t cnfg = srslte_pdcp_config_t());
|
||||||
|
void del_bearer(uint32_t lcid);
|
||||||
void config_security(uint32_t lcid,
|
void config_security(uint32_t lcid,
|
||||||
uint8_t *k_enc,
|
uint8_t *k_enc,
|
||||||
uint8_t *k_int,
|
uint8_t *k_int,
|
||||||
|
|
|
@ -86,6 +86,7 @@ public:
|
||||||
void add_bearer(uint32_t lcid);
|
void add_bearer(uint32_t lcid);
|
||||||
void add_bearer(uint32_t lcid, srslte_rlc_config_t cnfg);
|
void add_bearer(uint32_t lcid, srslte_rlc_config_t cnfg);
|
||||||
void add_bearer_mrb(uint32_t lcid);
|
void add_bearer_mrb(uint32_t lcid);
|
||||||
|
void del_bearer(uint32_t lcid);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void reset_metrics();
|
void reset_metrics();
|
||||||
|
|
|
@ -137,6 +137,7 @@ void pdcp::write_sdu_mch(uint32_t lcid, byte_buffer_t *sdu)
|
||||||
}
|
}
|
||||||
pthread_rwlock_unlock(&rwlock);
|
pthread_rwlock_unlock(&rwlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pdcp::add_bearer(uint32_t lcid, srslte_pdcp_config_t cfg)
|
void pdcp::add_bearer(uint32_t lcid, srslte_pdcp_config_t cfg)
|
||||||
{
|
{
|
||||||
pthread_rwlock_wrlock(&rwlock);
|
pthread_rwlock_wrlock(&rwlock);
|
||||||
|
@ -154,7 +155,6 @@ unlock_and_exit:
|
||||||
pthread_rwlock_unlock(&rwlock);
|
pthread_rwlock_unlock(&rwlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void pdcp::add_bearer_mrb(uint32_t lcid, srslte_pdcp_config_t cfg)
|
void pdcp::add_bearer_mrb(uint32_t lcid, srslte_pdcp_config_t cfg)
|
||||||
{
|
{
|
||||||
pthread_rwlock_wrlock(&rwlock);
|
pthread_rwlock_wrlock(&rwlock);
|
||||||
|
@ -172,6 +172,21 @@ unlock_and_exit:
|
||||||
pthread_rwlock_unlock(&rwlock);
|
pthread_rwlock_unlock(&rwlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pdcp::del_bearer(uint32_t lcid)
|
||||||
|
{
|
||||||
|
pthread_rwlock_wrlock(&rwlock);
|
||||||
|
if (valid_lcid(lcid)) {
|
||||||
|
pdcp_map_t::iterator it = pdcp_array.find(lcid);
|
||||||
|
delete(it->second);
|
||||||
|
pdcp_array.erase(it);
|
||||||
|
pdcp_log->warning("Deleted PDCP bearer %s\n", rrc->get_rb_name(lcid).c_str());
|
||||||
|
} else {
|
||||||
|
pdcp_log->warning("Can't delete bearer %s. Bearer doesn't exist.\n", rrc->get_rb_name(lcid).c_str());
|
||||||
|
}
|
||||||
|
pthread_rwlock_unlock(&rwlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void pdcp::config_security(uint32_t lcid,
|
void pdcp::config_security(uint32_t lcid,
|
||||||
uint8_t *k_enc,
|
uint8_t *k_enc,
|
||||||
uint8_t *k_int,
|
uint8_t *k_int,
|
||||||
|
|
|
@ -494,6 +494,24 @@ unlock_and_exit:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void rlc::del_bearer(uint32_t lcid)
|
||||||
|
{
|
||||||
|
pthread_rwlock_wrlock(&rwlock);
|
||||||
|
|
||||||
|
if (valid_lcid_mrb(lcid)) {
|
||||||
|
rlc_map_t::iterator it = rlc_array.find(lcid);
|
||||||
|
it->second->stop();
|
||||||
|
delete(it->second);
|
||||||
|
rlc_array.erase(it);
|
||||||
|
rlc_log->warning("Deleted RLC bearer %s\n", rrc->get_rb_name(lcid).c_str());
|
||||||
|
} else {
|
||||||
|
rlc_log->warning("Can't delete bearer %s. Bearer doesn't exist.\n", rrc->get_rb_name(lcid).c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
pthread_rwlock_unlock(&rwlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
Helpers (Lock must be hold when calling those)
|
Helpers (Lock must be hold when calling those)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
Loading…
Reference in New Issue