lte: (fixes #2523) Scheduler to generate properly the RLC PDU (fix by Marco Miozzo and Zoraze Ali)
Extend all schedulers to generate properly the RLC PDU structure when there is no retransmission on the layer.
This commit is contained in:
@@ -989,9 +989,18 @@ CqaFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sche
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -798,9 +798,18 @@ FdBetFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sc
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -786,9 +786,18 @@ FdMtFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sch
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -894,9 +894,18 @@ FdTbfqFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::S
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -851,9 +851,18 @@ PfFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sched
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -878,9 +878,18 @@ PssFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sche
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -765,9 +765,18 @@ RrFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sched
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -797,9 +797,18 @@ TdBetFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sc
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -786,9 +786,18 @@ TdMtFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sch
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -894,9 +894,18 @@ TdTbfqFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::S
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
@@ -786,9 +786,18 @@ TtaFfMacScheduler::DoSchedDlTriggerReq (const struct FfMacSchedSapProvider::Sche
|
||||
{
|
||||
if (j < dci.m_ndi.size ())
|
||||
{
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size " << dci.m_tbsSize.at (j));
|
||||
rlcPduListPerLc.push_back ((*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k));
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // if no retx needed on layer j, push an RlcPduListElement_s object with m_size=0 to keep the size of rlcPduListPerLc vector = 2 in case of MIMO
|
||||
NS_LOG_INFO (" layer " << (uint16_t)j << " tb size "<<dci.m_tbsSize.at (j));
|
||||
RlcPduListElement_s emptyElement;
|
||||
emptyElement.m_logicalChannelIdentity = (*itRlcPdu).second.at (j).at (dci.m_harqProcess).at (k).m_logicalChannelIdentity;
|
||||
emptyElement.m_size = 0;
|
||||
rlcPduListPerLc.push_back (emptyElement);
|
||||
}
|
||||
}
|
||||
|
||||
if (rlcPduListPerLc.size () > 0)
|
||||
|
||||
Reference in New Issue
Block a user