Dev Guide¶
MAC¶
The MAC is divided into the following sub-components:
MAC Controller
Translates DU configuration requests into configuration commands that can be understood by the remaining MAC sub-components. The MAC controller ensures that the other components are configured with minimal service disruption in terms of traffic latency and avoiding any race conditions. The configuration commands that the DU manager sends include the addition of new DU cells and addition/reconfiguration/removal of UEs. See class: mac_controller
RACH Handler
Manages the allocation of RNTIs for the received PRACH preambles and association of reach RNTI to a DU UE Index. See rach_handler
MAC UL Processor
Decodes the received MAC PDUs and forwards the resulting MAC SDUs to their respective logical channels using the DEMUX component and forwards the UL Buffer Status Reports to the Scheduler. See mac_ul_processor
MAC DL processor
Manages the MAC scheduler. This is implemented in the mac_dl_processor class.
-
class mac_dl_processor : public srsgnb::mac_dl_configurator¶
Public Functions
-
virtual void add_cell(const mac_cell_creation_request &cell_cfg) override¶
Adds new cell configuration to MAC DL.
-
virtual void remove_cell(du_cell_index_t cell_index) override¶
Removes cell configuration from MAC DL.
-
virtual async_task<bool> add_ue(const mac_ue_create_request_message &request) override¶
Creates new UE DL context, updates logical channel MUX, adds UE in scheduler.
-
virtual async_task<void> remove_ue(const mac_ue_delete_request_message &request) override¶
Deletes UE context in MAC DL and scheduler.
-
virtual async_task<bool> reconfigure_ue(const mac_ue_reconfiguration_request_message &request) override¶
Reconfigures UE in MAC DL and in the scheduler.
-
virtual void add_cell(const mac_cell_creation_request &cell_cfg) override¶