lte: extend MAC and RLC SAP interfaces to include CA component carrier Id

This commit is contained in:
Biljana Bojovic
2017-01-20 12:22:42 +01:00
parent 7d13789baf
commit 5fee33db28
14 changed files with 98 additions and 93 deletions

View File

@@ -6087,15 +6087,15 @@ def register_Ns3LteMacSapUser_methods(root_module, cls):
'void',
[],
is_pure_virtual=True, is_virtual=True)
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::NotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::NotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('NotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, is_virtual=True)
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::ReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::ReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('ReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, is_virtual=True)
return
@@ -17202,15 +17202,15 @@ def register_Ns3LteRlc_methods(root_module, cls):
'void',
[],
is_pure_virtual=True, visibility='protected', is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, visibility='protected', is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, visibility='protected', is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17234,15 +17234,15 @@ def register_Ns3LteRlcAm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17276,15 +17276,15 @@ def register_Ns3LteRlcSm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17313,15 +17313,15 @@ def register_Ns3LteRlcTm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17350,15 +17350,15 @@ def register_Ns3LteRlcUm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',

View File

@@ -6087,15 +6087,15 @@ def register_Ns3LteMacSapUser_methods(root_module, cls):
'void',
[],
is_pure_virtual=True, is_virtual=True)
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::NotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::NotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('NotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, is_virtual=True)
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::ReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-mac-sap.h (module 'lte'): void ns3::LteMacSapUser::ReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('ReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, is_virtual=True)
return
@@ -17202,15 +17202,15 @@ def register_Ns3LteRlc_methods(root_module, cls):
'void',
[],
is_pure_virtual=True, visibility='protected', is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, visibility='protected', is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_pure_virtual=True, visibility='protected', is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlc::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17234,15 +17234,15 @@ def register_Ns3LteRlcAm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-am.h (module 'lte'): void ns3::LteRlcAm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17276,15 +17276,15 @@ def register_Ns3LteRlcSm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc.h (module 'lte'): void ns3::LteRlcSm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17313,15 +17313,15 @@ def register_Ns3LteRlcTm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-tm.h (module 'lte'): void ns3::LteRlcTm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',
@@ -17350,15 +17350,15 @@ def register_Ns3LteRlcUm_methods(root_module, cls):
'void',
[],
is_virtual=True)
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId) [member function]
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoNotifyTxOpportunity(uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoNotifyTxOpportunity',
'void',
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId')],
[param('uint32_t', 'bytes'), param('uint8_t', 'layer'), param('uint8_t', 'harqId'), param('uint8_t', 'componentCarrierId'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoReceivePdu(ns3::Ptr<ns3::Packet> p) [member function]
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoReceivePdu(ns3::Ptr<ns3::Packet> p, uint16_t rnti, uint8_t lcid) [member function]
cls.add_method('DoReceivePdu',
'void',
[param('ns3::Ptr< ns3::Packet >', 'p')],
[param('ns3::Ptr< ns3::Packet >', 'p'), param('uint16_t', 'rnti'), param('uint8_t', 'lcid')],
is_virtual=True)
## lte-rlc-um.h (module 'lte'): void ns3::LteRlcUm::DoTransmitPdcpPdu(ns3::Ptr<ns3::Packet> p) [member function]
cls.add_method('DoTransmitPdcpPdu',

View File

@@ -731,7 +731,7 @@ LteEnbMac::DoReceivePhyPdu (Ptr<Packet> p)
//Receive PDU only if LCID is found
if (lcidIt != rntiIt->second.end ())
{
(*lcidIt).second->ReceivePdu (p);
(*lcidIt).second->ReceivePdu (p, rnti, lcid);
}
}
@@ -1017,7 +1017,7 @@ LteEnbMac::DoSchedDlConfigInd (FfMacSchedSapUser::SchedDlConfigIndParameters ind
std::map<uint8_t, LteMacSapUser*>::iterator lcidIt = rntiIt->second.find (lcid);
NS_ASSERT_MSG (lcidIt != rntiIt->second.end (), "could not find LCID" << (uint32_t)lcid<<" carrier id:"<<(uint16_t)m_componentCarrierId);
NS_LOG_DEBUG (this << " rnti= " << rnti << " lcid= " << (uint32_t) lcid << " layer= " << k);
(*lcidIt).second->NotifyTxOpportunity (ind.m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_size, k, ind.m_buildDataList.at (i).m_dci.m_harqProcess);
(*lcidIt).second->NotifyTxOpportunity (ind.m_buildDataList.at (i).m_rlcPduList.at (j).at (k).m_size, k, ind.m_buildDataList.at (i).m_dci.m_harqProcess, m_componentCarrierId, rnti, lcid);
}
else
{

View File

@@ -103,7 +103,7 @@ public:
* \param bytes the number of bytes to transmit
* \param layer the layer of transmission (MIMO)
*/
virtual void NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId) = 0;
virtual void NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) = 0;
/**
* Called by the MAC to notify the RLC that an HARQ process related
@@ -119,7 +119,7 @@ public:
*
* \param p
*/
virtual void ReceivePdu (Ptr<Packet> p) = 0;
virtual void ReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid) = 0;
};

View File

@@ -186,7 +186,7 @@ LteRlcAm::DoTransmitPdcpPdu (Ptr<Packet> p)
*/
void
LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << bytes);
@@ -269,7 +269,7 @@ LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
params.lcid = m_lcid;
params.layer = layer;
params.harqProcessId = harqId;
params.componentCarrierId = 0;
params.componentCarrierId = componentCarrierId;
m_macSapProvider->TransmitPdu (params);
@@ -357,7 +357,7 @@ LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
params.lcid = m_lcid;
params.layer = layer;
params.harqProcessId = harqId;
params.componentCarrierId = 0;
params.componentCarrierId = componentCarrierId;
m_macSapProvider->TransmitPdu (params);
@@ -738,7 +738,7 @@ LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
params.lcid = m_lcid;
params.layer = layer;
params.harqProcessId = harqId;
params.componentCarrierId = 0;
params.componentCarrierId = componentCarrierId;
m_macSapProvider->TransmitPdu (params);
}
@@ -751,7 +751,7 @@ LteRlcAm::DoNotifyHarqDeliveryFailure ()
void
LteRlcAm::DoReceivePdu (Ptr<Packet> p)
LteRlcAm::DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << p->GetSize ());

View File

@@ -49,9 +49,9 @@ public:
/**
* MAC SAP
*/
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid);
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
virtual void DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid);
private:
/**

View File

@@ -111,7 +111,7 @@ LteRlcTm::DoTransmitPdcpPdu (Ptr<Packet> p)
*/
void
LteRlcTm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
LteRlcTm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << bytes << (uint32_t) layer << (uint32_t) harqId);
@@ -150,7 +150,7 @@ LteRlcTm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
params.lcid = m_lcid;
params.layer = layer;
params.harqProcessId = harqId;
params.componentCarrierId = 0;
params.componentCarrierId = componentCarrierId;
m_macSapProvider->TransmitPdu (params);
@@ -168,7 +168,7 @@ LteRlcTm::DoNotifyHarqDeliveryFailure ()
}
void
LteRlcTm::DoReceivePdu (Ptr<Packet> p)
LteRlcTm::DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << p->GetSize ());

View File

@@ -48,9 +48,9 @@ public:
/**
* MAC SAP
*/
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid);
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
virtual void DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid);
private:
void ExpireRbsTimer (void);

View File

@@ -124,7 +124,7 @@ LteRlcUm::DoTransmitPdcpPdu (Ptr<Packet> p)
*/
void
LteRlcUm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
LteRlcUm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << bytes);
@@ -389,7 +389,7 @@ LteRlcUm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
params.lcid = m_lcid;
params.layer = layer;
params.harqProcessId = harqId;
params.componentCarrierId = 0;
params.componentCarrierId = componentCarrierId;
m_macSapProvider->TransmitPdu (params);
@@ -407,7 +407,7 @@ LteRlcUm::DoNotifyHarqDeliveryFailure ()
}
void
LteRlcUm::DoReceivePdu (Ptr<Packet> p)
LteRlcUm::DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << m_rnti << (uint32_t) m_lcid << p->GetSize ());

View File

@@ -48,9 +48,9 @@ public:
/**
* MAC SAP
*/
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid);
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
virtual void DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid);
private:
void ExpireReorderingTimer (void);

View File

@@ -41,9 +41,9 @@ public:
LteRlcSpecificLteMacSapUser (LteRlc* rlc);
// Interface implemented from LteMacSapUser
virtual void NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
virtual void NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid);
virtual void NotifyHarqDeliveryFailure ();
virtual void ReceivePdu (Ptr<Packet> p);
virtual void ReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid);
private:
LteRlcSpecificLteMacSapUser ();
@@ -60,9 +60,9 @@ LteRlcSpecificLteMacSapUser::LteRlcSpecificLteMacSapUser ()
}
void
LteRlcSpecificLteMacSapUser::NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
LteRlcSpecificLteMacSapUser::NotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid)
{
m_rlc->DoNotifyTxOpportunity (bytes, layer, harqId);
m_rlc->DoNotifyTxOpportunity (bytes, layer, harqId, componentCarrierId, rnti, lcid);
}
void
@@ -72,9 +72,9 @@ LteRlcSpecificLteMacSapUser::NotifyHarqDeliveryFailure ()
}
void
LteRlcSpecificLteMacSapUser::ReceivePdu (Ptr<Packet> p)
LteRlcSpecificLteMacSapUser::ReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid)
{
m_rlc->DoReceivePdu (p);
m_rlc->DoReceivePdu (p, rnti, lcid);
}
@@ -213,7 +213,7 @@ LteRlcSm::DoTransmitPdcpPdu (Ptr<Packet> p)
}
void
LteRlcSm::DoReceivePdu (Ptr<Packet> p)
LteRlcSm::DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << p);
// RLC Performance evaluation
@@ -230,7 +230,7 @@ LteRlcSm::DoReceivePdu (Ptr<Packet> p)
}
void
LteRlcSm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
LteRlcSm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid)
{
NS_LOG_FUNCTION (this << bytes);
LteMacSapProvider::TransmitPduParameters params;
@@ -239,7 +239,7 @@ LteRlcSm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
params.lcid = m_lcid;
params.layer = layer;
params.harqProcessId = harqId;
params.componentCarrierId = 0;
params.componentCarrierId = componentCarrierId;
// RLC Performance evaluation
RlcTag tag (Simulator::Now());

View File

@@ -134,9 +134,9 @@ protected:
LteRlcSapProvider* m_rlcSapProvider;
// Interface forwarded by LteMacSapUser
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId) = 0;
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid) = 0;
virtual void DoNotifyHarqDeliveryFailure () = 0;
virtual void DoReceivePdu (Ptr<Packet> p) = 0;
virtual void DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid) = 0;
LteMacSapUser* m_macSapUser;
LteMacSapProvider* m_macSapProvider;
@@ -175,9 +175,9 @@ public:
virtual void DoDispose ();
virtual void DoTransmitPdcpPdu (Ptr<Packet> p);
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId);
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId, uint8_t componentCarrierId, uint16_t rnti, uint8_t lcid);
virtual void DoNotifyHarqDeliveryFailure ();
virtual void DoReceivePdu (Ptr<Packet> p);
virtual void DoReceivePdu (Ptr<Packet> p, uint16_t rnti, uint8_t lcid);

View File

@@ -434,7 +434,12 @@ LteUeMac::RecvRaResponse (BuildRarListElement_s raResponse)
{
NS_ASSERT_MSG (raResponse.m_grant.m_tbSize > lc0BsrIt->second.txQueueSize,
"segmentation of Message 3 is not allowed");
lc0InfoIt->second.macSapUser->NotifyTxOpportunity (raResponse.m_grant.m_tbSize, 0, 0);
// this function can be called only from primary carrier
if (m_componentCarrierId > 0)
{
NS_FATAL_ERROR ("Function called on wrong componentCarrier");
}
lc0InfoIt->second.macSapUser->NotifyTxOpportunity (raResponse.m_grant.m_tbSize, 0, 0, m_componentCarrierId, m_rnti, lc0Lcid);
lc0BsrIt->second.txQueueSize = 0;
}
}
@@ -552,7 +557,7 @@ LteUeMac::DoReceivePhyPdu (Ptr<Packet> p)
std::map <uint8_t, LcInfo>::const_iterator it = m_lcInfoMap.find (tag.GetLcid ());
if (it != m_lcInfoMap.end ())
{
it->second.macSapUser->ReceivePdu (p);
it->second.macSapUser->ReceivePdu (p, m_rnti, tag.GetLcid ());
}
else
{
@@ -624,7 +629,7 @@ LteUeMac::DoReceiveLteControlMessage (Ptr<LteControlMessage> msg)
{
if ((statusPduPriority) && ((*itBsr).second.statusPduSize == statusPduMinSize))
{
(*it).second.macSapUser->NotifyTxOpportunity ((*itBsr).second.statusPduSize, 0, 0);
(*it).second.macSapUser->NotifyTxOpportunity ((*itBsr).second.statusPduSize, 0, 0, m_componentCarrierId, m_rnti, (*it).first);
NS_LOG_LOGIC (this << "\t" << bytesPerActiveLc << " send " << (*itBsr).second.statusPduSize << " status bytes to LC " << (uint32_t)(*it).first << " statusQueue " << (*itBsr).second.statusPduSize << " retxQueue" << (*itBsr).second.retxQueueSize << " txQueue" << (*itBsr).second.txQueueSize);
(*itBsr).second.statusPduSize = 0;
break;
@@ -635,7 +640,7 @@ LteUeMac::DoReceiveLteControlMessage (Ptr<LteControlMessage> msg)
NS_LOG_LOGIC (this << "\t" << bytesPerActiveLc << " bytes to LC " << (uint32_t)(*it).first << " statusQueue " << (*itBsr).second.statusPduSize << " retxQueue" << (*itBsr).second.retxQueueSize << " txQueue" << (*itBsr).second.txQueueSize);
if (((*itBsr).second.statusPduSize > 0) && (bytesForThisLc > (*itBsr).second.statusPduSize))
{
(*it).second.macSapUser->NotifyTxOpportunity ((*itBsr).second.statusPduSize, 0, 0);
(*it).second.macSapUser->NotifyTxOpportunity ((*itBsr).second.statusPduSize, 0, 0, m_componentCarrierId, m_rnti, (*it).first);
bytesForThisLc -= (*itBsr).second.statusPduSize;
NS_LOG_DEBUG (this << " serve STATUS " << (*itBsr).second.statusPduSize);
(*itBsr).second.statusPduSize = 0;
@@ -655,7 +660,7 @@ LteUeMac::DoReceiveLteControlMessage (Ptr<LteControlMessage> msg)
if ((*itBsr).second.retxQueueSize > 0)
{
NS_LOG_DEBUG (this << " serve retx DATA, bytes " << bytesForThisLc);
(*it).second.macSapUser->NotifyTxOpportunity (bytesForThisLc, 0, 0);
(*it).second.macSapUser->NotifyTxOpportunity (bytesForThisLc, 0, 0, m_componentCarrierId, m_rnti, (*it).first);
if ((*itBsr).second.retxQueueSize >= bytesForThisLc)
{
(*itBsr).second.retxQueueSize -= bytesForThisLc;
@@ -683,7 +688,7 @@ LteUeMac::DoReceiveLteControlMessage (Ptr<LteControlMessage> msg)
rlcOverhead = 2;
}
NS_LOG_DEBUG (this << " serve tx DATA, bytes " << bytesForThisLc << ", RLC overhead " << rlcOverhead);
(*it).second.macSapUser->NotifyTxOpportunity (bytesForThisLc, 0, 0);
(*it).second.macSapUser->NotifyTxOpportunity (bytesForThisLc, 0, 0, m_componentCarrierId, m_rnti, (*it).first);
if ((*itBsr).second.txQueueSize >= bytesForThisLc - rlcOverhead)
{
(*itBsr).second.txQueueSize -= bytesForThisLc - rlcOverhead;

View File

@@ -486,11 +486,11 @@ LteTestMac::SendTxOpportunity (Time time, uint32_t bytes)
}
if (haveContext)
{
Simulator::ScheduleWithContext (node->GetId (), time, &LteMacSapUser::NotifyTxOpportunity, m_macSapUser, bytes, 0, 0);
Simulator::ScheduleWithContext (node->GetId (), time, &LteMacSapUser::NotifyTxOpportunity, m_macSapUser, bytes, 0, 0, 0, 0, 0);
}
else
{
Simulator::Schedule (time, &LteMacSapUser::NotifyTxOpportunity, m_macSapUser, bytes, 0, 0);
Simulator::Schedule (time, &LteMacSapUser::NotifyTxOpportunity, m_macSapUser, bytes, 0, 0, 0, 0, 0);
}
if (m_txOpportunityMode == RANDOM_MODE)
@@ -565,7 +565,7 @@ LteTestMac::DoTransmitPdu (LteMacSapProvider::TransmitPduParameters params)
else if (m_macLoopback)
{
Simulator::Schedule (Seconds (0.1), &LteMacSapUser::ReceivePdu,
m_macLoopback->m_macSapUser, params.pdu);
m_macLoopback->m_macSapUser, params.pdu, params.rnti, params.lcid);
}
else
{
@@ -626,7 +626,7 @@ LteTestMac::DoReportBufferStatus (LteMacSapProvider::ReportBufferStatusParameter
{
EventId e = Simulator::Schedule (time,
&LteMacSapUser::NotifyTxOpportunity,
m_macSapUser, m_txOppSize, 0, 0);
m_macSapUser, m_txOppSize, 0, 0, 0, params.rnti, params.lcid);
m_nextTxOppList.push_back (e);
size -= m_txOppSize;
time += m_txOppTime;
@@ -644,7 +644,7 @@ LteTestMac::Receive (Ptr<NetDevice> nd, Ptr<const Packet> p, uint16_t protocol,
m_rxBytes += p->GetSize ();
Ptr<Packet> packet = p->Copy ();
m_macSapUser->ReceivePdu (packet);
m_macSapUser->ReceivePdu (packet, 0, 0);
return true;
}